Navigation
Navigation patterns built from real `@blastx/ui` primitives instead of hand-drawn product mockups.
1. App Header
A production-style top bar composed from `Button` and `Avatar` primitives.
BlastX Thought Leadership
Internal publishing workspace
<header className="sticky top-0 border-b border-border bg-card/80 backdrop-blur-xl">
<div className="flex items-center justify-between px-4 py-3">
<div className="flex items-center gap-3">
<BrandMark size="sm" />
<span className="text-lg font-semibold">BlastX Thought Leadership</span>
</div>
<div className="hidden items-center gap-1 md:flex">
{navLinks.map((link) => (
<Button key={link} variant={activeNav === link ? 'secondary' : 'ghost'}>
{link}
</Button>
))}
</div>
<div className="flex items-center gap-3">
<Button size="sm">
<Plus className="size-4" />
New Article
</Button>
<Avatar>
<AvatarFallback>BW</AvatarFallback>
</Avatar>
</div>
</div>
</header>2. Brand Mark
Use the same gradient logo treatment at multiple sizes for headers, auth screens, and setup flows.
<BrandMark size="sm" /> <BrandMark size="md" /> <BrandMark size="lg" />
3. User Avatar
Prefer the shared `Avatar` primitive for identity cues, status rings, and alternate profile treatments.
<Avatar> <AvatarFallback>BW</AvatarFallback> </Avatar> <Avatar className="ring-2 ring-primary/30 ring-offset-2"> <AvatarFallback>BW</AvatarFallback> </Avatar> <Avatar className="bg-gradient-to-br from-primary to-secondary"> <AvatarFallback className="bg-transparent text-white">JP</AvatarFallback> </Avatar>
6. Workflow Stepper
A structured progress rail for long task flows. This remains a custom pattern, but it now sits in a real `Card` shell.
Setup
Author and topic
Research
Background research
SEO Strategy
Keyword targeting
Outline
CurrentArticle structure
Title
Choose a title
Writing
Section drafting
Quality Check
Content review
Featured Image
Generate image
Export
Download .docx
<Card>
<CardHeader>
<CardTitle>Article Workflow</CardTitle>
</CardHeader>
<CardContent>
{workflowSteps.map((step, index) => (
<div key={step.label} className="flex gap-3">
{/* status dot + connector */}
{/* icon + copy */}
</div>
))}
</CardContent>
</Card>