mirror of
https://github.com/hanzoai/bootnode.git
synced 2026-10-25 02:31:30 +00:00
74 files imported `lucide-react` directly, pinned ^1.26.0, while @luxfi/ui — which this console renders alongside — resolves 1.27. Two Lucide copies from two resolutions in one bundle is how a set stops being one set. Two more glyphs were not from any icon library at all: the node list drew its network in/out arrows as the literal characters "↓" and "↑", and the chain onboarding selector drew its tick as "✓". Those are font glyphs — they take the text metrics, not the icon box, so they sit on a different baseline and scale with the font, not `size-*`. One source now: `@luxfi/ui/icons`, Lucide as @hanzo/gui standardises on it and @luxfi/ui themes it. `lucide-react` is out of package.json, so per-surface drift is no longer expressible; @luxfi/ui comes in at 7.4.3, which is where `./icons` lives. The three text glyphs are ArrowDown / ArrowUp / Check. All 121 distinct icon names this console uses were checked against the 6014 symbols @luxfi/ui/icons exports before the rewrite — zero missing, with a negative control. `next build` is clean: 78 routes, Next 16.2.11 + Turbopack. The d3 chart roots (node-globe, node-map, globe-view, donut-chart, fleet-map) keep their <svg>: those are plots, not glyphs. The command menu's "↑↓" stays — it is a keyboard legend inside <kbd>, and it means the keys. Co-authored-by: Hanzo Dev <[email protected]>
62 lines
2.0 KiB
TypeScript
62 lines
2.0 KiB
TypeScript
import Link from "next/link"
|
|
import { Navbar } from "@/components/navbar"
|
|
import { Footer } from "@/components/footer"
|
|
import {
|
|
Book,
|
|
Zap,
|
|
Code,
|
|
Wallet,
|
|
Webhook,
|
|
Shield,
|
|
Radio,
|
|
Blocks,
|
|
Package,
|
|
FileCode,
|
|
Clock,
|
|
} from "@luxfi/ui/icons"
|
|
|
|
const sidebarNav = [
|
|
{ title: "Documentation", href: "/docs", icon: Book },
|
|
{ title: "Quickstart", href: "/docs/quickstart", icon: Zap },
|
|
{ title: "API Reference", href: "/docs/api", icon: Code },
|
|
{ title: "Authentication", href: "/docs/auth/quickstart", icon: Shield },
|
|
{ title: "Smart Wallets", href: "/docs/wallets/quickstart", icon: Wallet },
|
|
{ title: "Webhooks", href: "/docs/webhooks/quickstart", icon: Webhook },
|
|
{ title: "WebSockets", href: "/docs/websockets/quickstart", icon: Radio },
|
|
{ title: "Account Abstraction", href: "/docs/aa/quickstart", icon: Blocks },
|
|
{ title: "SDKs", href: "/docs/sdks", icon: Package },
|
|
{ title: "Examples", href: "/docs/examples", icon: FileCode },
|
|
{ title: "Changelog", href: "/docs/changelog", icon: Clock },
|
|
]
|
|
|
|
export function DocsLayout({ children }: { children: React.ReactNode }) {
|
|
return (
|
|
<div className="min-h-screen bg-background">
|
|
<Navbar />
|
|
<div className="container py-8 lg:py-12">
|
|
<div className="flex flex-col lg:flex-row gap-8 lg:gap-12">
|
|
{/* Sidebar */}
|
|
<aside className="lg:w-56 shrink-0">
|
|
<nav className="sticky top-24 space-y-1">
|
|
{sidebarNav.map((item) => (
|
|
<Link
|
|
key={item.href}
|
|
href={item.href}
|
|
className="flex items-center gap-2 rounded-md px-3 py-2 text-sm text-muted-foreground hover:text-foreground hover:bg-muted transition-colors"
|
|
>
|
|
<item.icon className="h-4 w-4" />
|
|
{item.title}
|
|
</Link>
|
|
))}
|
|
</nav>
|
|
</aside>
|
|
|
|
{/* Content */}
|
|
<main className="flex-1 min-w-0">{children}</main>
|
|
</div>
|
|
</div>
|
|
<Footer />
|
|
</div>
|
|
)
|
|
}
|