From d018d87e257f31390c2bb4b1f9118c597732c007 Mon Sep 17 00:00:00 2001 From: Marco Date: Fri, 31 Jul 2026 22:13:08 +0000 Subject: [PATCH] Fix account-nav feedback, blog filter position, and small icon polish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove Merkliste from AccountNav — the Navbar's own wishlist icon already covers it, a second nav entry was redundant. - Fix duplicate "Mein Profil" heading (ProfileForm already renders its own; KontoShell no longer adds a second one). - "Eingeloggt als ..." now renders once in KontoShell, consistently on every /konto/* page, instead of only on the orders page. - Blog category filter chips moved into the hero's own text column (was a separate bar below the entire hero including the photo) — visible immediately on every width instead of requiring a scroll past the hero image first. - ArrowRightIcon's arrowhead wings shortened (looked like a generic oversized chevron at full length). - Search overlay's "Esc" text button replaced with an X icon; the actual Escape keyboard shortcut is unchanged. Co-Authored-By: Claude Sonnet 5 --- app/blog/page.tsx | 92 +++++++++++++---------------- app/components/ArrowRightIcon.tsx | 6 +- app/components/SearchOverlay.tsx | 10 +++- app/konto/bestellungen/page.tsx | 5 +- app/konto/components/AccountNav.tsx | 18 +++--- app/konto/components/KontoShell.tsx | 25 ++++++-- app/konto/merkliste/page.tsx | 2 +- app/konto/profil/page.tsx | 5 +- 8 files changed, 85 insertions(+), 78 deletions(-) diff --git a/app/blog/page.tsx b/app/blog/page.tsx index 20e6279..1475650 100644 --- a/app/blog/page.tsx +++ b/app/blog/page.tsx @@ -66,6 +66,46 @@ export default async function BlogOverviewPage({

Gedanken, Methoden und Impulse für einen leichteren und klareren Alltag.

+ {/* Moved into the hero's own text column (was a separate full- + width bar below the entire hero, including the photo) — on + mobile especially (text stacks above the photo here), that + pushed the filters below a full extra screen's worth of + hero image before they were even visible. Living right + under the description keeps them in view immediately, on + every width, no scrolling past the photo needed. */} + {allCategories.length > 1 && ( +
+ {allCategories.map((category) => { + const active = activeCategories.includes(category); + return ( + + {category} + + ); + })} + {activeCategories.length > 0 && ( + + Zurücksetzen + + )} +
+ )}
@@ -74,58 +114,6 @@ export default async function BlogOverviewPage({
- {/* Plain div, not — this bar sits right at/just past the - hero's bottom edge, exactly the "already near the initial - viewport top" position Reveal.tsx's own comment documents as a - whileInView(margin:"-80px") trap: the shrunk viewport can - permanently miss triggering "entered view" for an element - that's already visible without any further scroll, since - `once: true` never gets a second chance. The Hero brand dot - hit the identical bug and switched to a plain animate — this - filter bar doesn't need a scroll-reveal animation at all, so - it's simplest to just not wrap it in Reveal in the first place. */} - {/* relative z-20 — the featured-post card right below pulls itself - up by -mt-8 with its own z-10 to overlap the *hero's* bottom - edge (its original, intended design). Inserting this filter - bar between the hero and that card meant the same -mt-8 pull - now overlapped THIS bar instead, and the card's higher/equal - stacking rendered on top of it, visually hiding the chips - behind the card. z-20 keeps this bar above that overlap - regardless. */} - {allCategories.length > 1 && ( -
- {allCategories.map((category) => { - const active = activeCategories.includes(category); - return ( - - {category} - - ); - })} - {activeCategories.length > 0 && ( - - Zurücksetzen - - )} -
- )} - {posts.length === 0 && (

Keine Beiträge in dieser Kategorie gefunden. diff --git a/app/components/ArrowRightIcon.tsx b/app/components/ArrowRightIcon.tsx index c506f3f..f827af5 100644 --- a/app/components/ArrowRightIcon.tsx +++ b/app/components/ArrowRightIcon.tsx @@ -8,10 +8,14 @@ // devices. An SVG has no font-fallback path — it renders identically // everywhere. `currentColor` stroke follows the parent Link's own // text/hover color, same as every other icon in this codebase. +// Arrowhead wings are deliberately short relative to the shaft (4.2 units +// vs. a 14-unit shaft) — the first version used full-length 45° wings +// (7 units), which read as a generic, oversized chevron next to the small +// bold label text it sits beside. export function ArrowRightIcon() { return ( - + ); } diff --git a/app/components/SearchOverlay.tsx b/app/components/SearchOverlay.tsx index 4543a2c..070f013 100644 --- a/app/components/SearchOverlay.tsx +++ b/app/components/SearchOverlay.tsx @@ -90,8 +90,14 @@ function SearchOverlay({ onClose }: { onClose: () => void }) { placeholder="Produkte, Blogbeiträge…" className="flex-1 min-w-0 bg-transparent outline-none text-h4 text-text-primary placeholder:text-text-muted" /> - diff --git a/app/konto/bestellungen/page.tsx b/app/konto/bestellungen/page.tsx index 98efeda..45f1ce1 100644 --- a/app/konto/bestellungen/page.tsx +++ b/app/konto/bestellungen/page.tsx @@ -59,14 +59,11 @@ export default async function KontoBestellungenPage({ ]); return ( - +

Meine Bestellungen

-

- Eingeloggt als {session.customer.email} (Kundennummer {session.customer.customerNumber}) -

{orderFilterEnabled && availableYears.length > 0 && ( diff --git a/app/konto/components/AccountNav.tsx b/app/konto/components/AccountNav.tsx index 2b5bd8a..3f8cde2 100644 --- a/app/konto/components/AccountNav.tsx +++ b/app/konto/components/AccountNav.tsx @@ -12,16 +12,18 @@ import { dispatchAuthChanged } from "../../lib/auth"; // unreachable without scrolling past an arbitrarily long order list. Being // part of the shell now (not page content), reachability no longer depends // on how much is above it. +// +// No Merkliste entry — the Navbar's own wishlist heart icon already covers +// that (visible at every width, on every page, not just inside /konto/*), +// so a second entry here would just be a redundant path to the same page. const NAV_ITEMS = [ - { href: "/konto/bestellungen", label: "Bestellungen", wishlistOnly: false }, - { href: "/konto/merkliste", label: "Merkliste", wishlistOnly: true }, - { href: "/konto/profil", label: "Profil", wishlistOnly: false }, + { href: "/konto/bestellungen", label: "Bestellungen" }, + { href: "/konto/profil", label: "Profil" }, ] as const; -export function AccountNav({ wishlistEnabled }: { wishlistEnabled: boolean }) { +export function AccountNav() { const pathname = usePathname(); const router = useRouter(); - const items = NAV_ITEMS.filter((item) => !item.wishlistOnly || wishlistEnabled); // Same sequence as the old LogoutButton (now folded in here, its one // call site): clear the local cart (already mirrored server-side by @@ -43,7 +45,7 @@ export function AccountNav({ wishlistEnabled }: { wishlistEnabled: boolean }) { page content inside KontoShell's flex row. */}