Okruszki nawigacyjne i CTA naglowka jako <Link>

- 16 przyciskow w breadcrumbach zamienionych na <Link> (semantyka linku,
  otwieranie w nowej karcie, podglad celu na hover)
- naglowek: "Moje konto" i "Dodaj ogloszenie za darmo" jako <Link>
- CSS breadcrumbow rozszerzony o warianty <a>, wyglad bez zmian
  (zweryfikowane zrzutami ekranu)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-23 23:52:37 +02:00
parent 5f5bec7232
commit f966b4539a
2 changed files with 45 additions and 32 deletions
+20 -20
View File
@@ -5141,9 +5141,9 @@ function DistrictRankingPage() {
<section className="district-ranking-page" aria-label="Ranking dzielnic"> <section className="district-ranking-page" aria-label="Ranking dzielnic">
<div className="district-ranking-shell"> <div className="district-ranking-shell">
<div className="district-breadcrumb"> <div className="district-breadcrumb">
<button type="button" onClick={() => navigate(ROUTES.account)}>Panel główny</button> <Link to={ROUTES.account}>Panel główny</Link>
<Icon name="chevron" /> <Icon name="chevron" />
<button type="button" className="active" onClick={() => navigate(ROUTES.districtRanking)}>Ranking dzielnic</button> <Link className="active" to={ROUTES.districtRanking}>Ranking dzielnic</Link>
</div> </div>
<div className="district-ranking-title"> <div className="district-ranking-title">
@@ -5272,9 +5272,9 @@ function NegotiationPage({
<section className="negotiation-page" aria-label="Ile możesz utargować"> <section className="negotiation-page" aria-label="Ile możesz utargować">
<div className="negotiation-shell"> <div className="negotiation-shell">
<div className="negotiation-breadcrumb"> <div className="negotiation-breadcrumb">
<button type="button" onClick={() => navigate(ROUTES.account)}>Panel główny</button> <Link to={ROUTES.account}>Panel główny</Link>
<Icon name="chevron" /> <Icon name="chevron" />
<button type="button" className="active" onClick={() => navigate(ROUTES.negotiation)}>Ile możesz utargować?</button> <Link className="active" to={ROUTES.negotiation}>Ile możesz utargować?</Link>
</div> </div>
<div className="negotiation-title"> <div className="negotiation-title">
@@ -5309,9 +5309,9 @@ function NegotiationPage({
<section className="negotiation-page" aria-label="Ile możesz utargować"> <section className="negotiation-page" aria-label="Ile możesz utargować">
<div className="negotiation-shell"> <div className="negotiation-shell">
<div className="negotiation-breadcrumb"> <div className="negotiation-breadcrumb">
<button type="button" onClick={() => navigate(ROUTES.account)}>Panel główny</button> <Link to={ROUTES.account}>Panel główny</Link>
<Icon name="chevron" /> <Icon name="chevron" />
<button type="button" className="active" onClick={() => navigate(ROUTES.negotiation)}>Ile możesz utargować?</button> <Link className="active" to={ROUTES.negotiation}>Ile możesz utargować?</Link>
</div> </div>
<div className="negotiation-title"> <div className="negotiation-title">
@@ -7287,9 +7287,9 @@ function AccountComparisonPage({ onOpenListing }: { onOpenListing: (id: number)
<div className="comparison-main"> <div className="comparison-main">
<div className="comparison-breadcrumb"> <div className="comparison-breadcrumb">
<button type="button" onClick={() => navigate(ROUTES.home)}>Strona główna</button> <Link to={ROUTES.home}>Strona główna</Link>
<Icon name="chevron" /> <Icon name="chevron" />
<button type="button" className="active" onClick={() => navigate(ROUTES.comparison)}>Porównywarka mieszkań</button> <Link className="active" to={ROUTES.comparison}>Porównywarka mieszkań</Link>
</div> </div>
<div className="comparison-head"> <div className="comparison-head">
@@ -14890,9 +14890,9 @@ function CreditCalculatorPage({ onSearchWithBudget }: { onSearchWithBudget: (max
<section className="credit-page" aria-label="Kalkulator zdolności kredytowej"> <section className="credit-page" aria-label="Kalkulator zdolności kredytowej">
<div className="credit-shell"> <div className="credit-shell">
<div className="breadcrumb credit-breadcrumb"> <div className="breadcrumb credit-breadcrumb">
<button type="button" onClick={() => navigate(ROUTES.guideBuying)}>Poradnik kupna</button> <Link to={ROUTES.guideBuying}>Poradnik kupna</Link>
<Icon name="chevron" /> <Icon name="chevron" />
<button type="button" className="active" onClick={() => navigate(ROUTES.creditCalculator)}>Kalkulator zdolności kredytowej</button> <Link className="active" to={ROUTES.creditCalculator}>Kalkulator zdolności kredytowej</Link>
</div> </div>
{pageBody} {pageBody}
</div> </div>
@@ -15058,9 +15058,9 @@ function ValuationPage() {
<section className="valuation-page" aria-label="Wycena nieruchomości"> <section className="valuation-page" aria-label="Wycena nieruchomości">
<div className="valuation-shell"> <div className="valuation-shell">
<div className="breadcrumb valuation-breadcrumb"> <div className="breadcrumb valuation-breadcrumb">
<button type="button" onClick={() => navigate(ROUTES.account)}>Panel główny</button> <Link to={ROUTES.account}>Panel główny</Link>
<Icon name="chevron" /> <Icon name="chevron" />
<button type="button" className="active" onClick={() => navigate(ROUTES.valuation)}>Wycena nieruchomości</button> <Link className="active" to={ROUTES.valuation}>Wycena nieruchomości</Link>
</div> </div>
<div className={`valuation-title ${isValuationResultStep ? 'result' : ''}`}> <div className={`valuation-title ${isValuationResultStep ? 'result' : ''}`}>
@@ -16922,9 +16922,9 @@ function PriceHistoryPage({ user }: { user: AuthUser | null }) {
<section className="history-page" aria-label="Historia cen"> <section className="history-page" aria-label="Historia cen">
<div className="history-shell"> <div className="history-shell">
<div className="breadcrumb history-breadcrumb"> <div className="breadcrumb history-breadcrumb">
<button type="button" onClick={() => navigate(ROUTES.account)}>Panel główny</button> <Link to={ROUTES.account}>Panel główny</Link>
<Icon name="chevron" /> <Icon name="chevron" />
<button type="button" className="active" onClick={() => navigate(ROUTES.priceHistory)}>Historia cen</button> <Link className="active" to={ROUTES.priceHistory}>Historia cen</Link>
</div> </div>
<div className="history-title"> <div className="history-title">
@@ -18676,10 +18676,10 @@ function Header({
</NavLink> </NavLink>
)} )}
{!isLoggedIn && ( {!isLoggedIn && (
<button className="icon-text" onClick={() => navigate(ROUTES.login)}> <Link className="icon-text" to={ROUTES.login}>
<Icon name="user" /> <Icon name="user" />
<span>Moje konto</span> <span>Moje konto</span>
</button> </Link>
)} )}
{isLoggedIn && ( {isLoggedIn && (
<div className="account-menu-wrap" ref={accountMenuRef}> <div className="account-menu-wrap" ref={accountMenuRef}>
@@ -18721,10 +18721,10 @@ function Header({
)} )}
</div> </div>
)} )}
<button className="post-button" onClick={() => navigate(ROUTES.add)}> <Link className="post-button" to={ROUTES.add}>
<span>Dodaj ogłoszenie za darmo</span> <span>Dodaj ogłoszenie za darmo</span>
<small>0 Bez prowizji</small> <small>0 Bez prowizji</small>
</button> </Link>
</div> </div>
</header> </header>
); );
@@ -19644,9 +19644,9 @@ function MessagesPage({
<div className="messages-shell"> <div className="messages-shell">
<div className="messages-header"> <div className="messages-header">
<div className="messages-breadcrumb" aria-label="Nawigacja wiadomości"> <div className="messages-breadcrumb" aria-label="Nawigacja wiadomości">
<button type="button" onClick={() => navigate(ROUTES.account)}>Panel główny</button> <Link to={ROUTES.account}>Panel główny</Link>
<Icon name="chevron" /> <Icon name="chevron" />
<button type="button" className="active" onClick={() => navigate(ROUTES.messages)}>Wiadomości</button> <Link className="active" to={ROUTES.messages}>Wiadomości</Link>
</div> </div>
<h1>Wiadomości</h1> <h1>Wiadomości</h1>
</div> </div>
+25 -12
View File
@@ -6000,7 +6000,7 @@ svg {
margin-bottom: 22px; margin-bottom: 22px;
} }
.valuation-breadcrumb button { .valuation-breadcrumb button, .valuation-breadcrumb a {
background: transparent; background: transparent;
border: 0; border: 0;
color: #768398; color: #768398;
@@ -6009,7 +6009,7 @@ svg {
padding: 0; padding: 0;
} }
.valuation-breadcrumb button.active { .valuation-breadcrumb button.active, .valuation-breadcrumb a.active {
color: #14223a; color: #14223a;
} }
@@ -6876,7 +6876,7 @@ svg {
padding: 0; padding: 0;
} }
.history-breadcrumb button { .history-breadcrumb button, .history-breadcrumb a {
background: transparent; background: transparent;
border: 0; border: 0;
color: #7a8798; color: #7a8798;
@@ -6885,7 +6885,7 @@ svg {
padding: 0; padding: 0;
} }
.history-breadcrumb button.active { .history-breadcrumb button.active, .history-breadcrumb a.active {
color: #14223a; color: #14223a;
} }
@@ -9553,7 +9553,7 @@ svg {
margin-bottom: 24px; margin-bottom: 24px;
} }
.district-breadcrumb button { .district-breadcrumb button, .district-breadcrumb a {
background: transparent; background: transparent;
border: 0; border: 0;
color: #768398; color: #768398;
@@ -9562,7 +9562,7 @@ svg {
padding: 0; padding: 0;
} }
.district-breadcrumb button.active { .district-breadcrumb button.active, .district-breadcrumb a.active {
color: #14223a; color: #14223a;
} }
@@ -10090,7 +10090,7 @@ svg {
margin-bottom: 18px; margin-bottom: 18px;
} }
.negotiation-breadcrumb button { .negotiation-breadcrumb button, .negotiation-breadcrumb a {
background: transparent; background: transparent;
border: 0; border: 0;
color: #768398; color: #768398;
@@ -10099,7 +10099,7 @@ svg {
padding: 0; padding: 0;
} }
.negotiation-breadcrumb button.active { .negotiation-breadcrumb button.active, .negotiation-breadcrumb a.active {
color: #14223a; color: #14223a;
} }
@@ -15192,7 +15192,7 @@ svg {
margin: 2px 0 8px; margin: 2px 0 8px;
} }
.messages-page .messages-breadcrumb button { .messages-page .messages-breadcrumb button, .messages-page .messages-breadcrumb a {
background: transparent; background: transparent;
border: 0; border: 0;
color: #718094; color: #718094;
@@ -15201,7 +15201,7 @@ svg {
padding: 0; padding: 0;
} }
.messages-page .messages-breadcrumb button.active { .messages-page .messages-breadcrumb button.active, .messages-page .messages-breadcrumb a.active {
color: #14223a; color: #14223a;
} }
@@ -24390,7 +24390,7 @@ svg {
gap: 6px; gap: 6px;
} }
.comparison-breadcrumb button { .comparison-breadcrumb button, .comparison-breadcrumb a {
background: transparent; background: transparent;
border: 0; border: 0;
color: inherit; color: inherit;
@@ -24398,7 +24398,7 @@ svg {
padding: 0; padding: 0;
} }
.comparison-breadcrumb button.active { .comparison-breadcrumb button.active, .comparison-breadcrumb a.active {
color: #152640; color: #152640;
} }
@@ -26776,3 +26776,16 @@ svg {
/* Routing: pozycje menu admina to teraz <a> (NavLink) */ /* Routing: pozycje menu admina to teraz <a> (NavLink) */
.admin-nav a { color: inherit; cursor: pointer; text-decoration: none; } .admin-nav a { color: inherit; cursor: pointer; text-decoration: none; }
/* Routing: okruszki nawigacyjne to teraz <Link> */
.breadcrumb a,
.district-breadcrumb a,
.negotiation-breadcrumb a,
.comparison-breadcrumb a,
.messages-breadcrumb a,
.valuation-breadcrumb a,
.history-breadcrumb a,
.credit-breadcrumb a { color: inherit; cursor: pointer; text-decoration: none; }
/* Routing: naglowkowe CTA jako <Link> - zachowanie wygladu przyciskow */
.post-button { align-content: center; text-decoration: none; }