diff --git a/docs/app/components/Icon.tsx b/docs/app/components/Icon.tsx index 44c0ffd..0ec38ee 100644 --- a/docs/app/components/Icon.tsx +++ b/docs/app/components/Icon.tsx @@ -66,6 +66,41 @@ const sfIcons = { /** Custom SVG icons not available in SF Symbols. */ const customIcons = { + /** Three horizontal lines — hamburger menu icon. */ + line3Horizontal: (size: number) => ( + + + + + + ), + /** X mark — close icon. */ + xmark: (size: number) => ( + + + + + ), /** Two overlapping rectangles — standard copy-to-clipboard metaphor. */ copy: (size: number) => ( -
-
+
+ {/* Logo + brand */} +
TUIkit Logo {activePage === "home" ? ( - TUIkit + TUIkit ) : ( - + TUIkit )}
-
+ + {/* Desktop nav links */} +
{NAV_LINKS.map((link) => { const isActive = link.page === activePage; @@ -63,7 +70,7 @@ export default function SiteNav({ activePage }: SiteNavProps) { return ( {link.icon && } @@ -77,7 +84,7 @@ export default function SiteNav({ activePage }: SiteNavProps) { key={link.href} href={link.href} {...(link.external ? { target: "_blank", rel: "noopener noreferrer" } : {})} - className="flex items-center gap-1.5 text-lg text-muted transition-colors hover:text-foreground" + className="flex items-center gap-1.5 text-base text-muted transition-colors hover:text-foreground sm:text-lg" > {link.icon && } {link.label} @@ -88,7 +95,58 @@ export default function SiteNav({ activePage }: SiteNavProps) {
+ + {/* Mobile: theme switcher + hamburger */} +
+ + +
+ + {/* Mobile menu dropdown */} + {menuOpen && ( +
+
+ {NAV_LINKS.map((link) => { + const isActive = link.page === activePage; + + if (isActive) { + return ( + + {link.icon && } + {link.label} + + ); + } + + return ( + setMenuOpen(false)} + className="flex items-center gap-2 rounded-lg px-3 py-2 text-base text-muted transition-colors hover:bg-accent/5 hover:text-foreground" + > + {link.icon && } + {link.label} + + ); + })} +
+
+ )} ); } diff --git a/docs/app/components/StatCard.tsx b/docs/app/components/StatCard.tsx index 6965cfc..c2fafa8 100644 --- a/docs/app/components/StatCard.tsx +++ b/docs/app/components/StatCard.tsx @@ -21,7 +21,10 @@ interface StatCardProps { } /** - * A single metric card with icon + label on top and the number on the right. + * A single metric card with icon + label on top and the number below. + * + * On mobile: stacked vertically (icon+label top, number bottom center). + * On larger screens: horizontal layout (icon+label left, number right). * * When `onClick` is provided, renders as a `