diff --git a/frontend/src/app/dev/docs/design-system/[...slug]/page.tsx b/frontend/src/app/dev/docs/design-system/[...slug]/page.tsx index 8358c56..1df4dba 100644 --- a/frontend/src/app/dev/docs/design-system/[...slug]/page.tsx +++ b/frontend/src/app/dev/docs/design-system/[...slug]/page.tsx @@ -9,6 +9,7 @@ import { promises as fs } from 'fs'; import path from 'path'; import matter from 'gray-matter'; import { MarkdownContent } from '@/components/docs/MarkdownContent'; +import { DevBreadcrumbs } from '@/components/dev/DevBreadcrumbs'; interface DocPageProps { params: Promise<{ slug: string[] }>; @@ -56,10 +57,23 @@ export default async function DocPage({ params }: DocPageProps) { notFound(); } + // Extract title from first heading or use filename + const title = doc.content.match(/^#\s+(.+)$/m)?.[1] || slug[slug.length - 1]; + return ( -
-
- +
+ {/* Breadcrumbs */} + + +
+
+ +
); diff --git a/frontend/src/app/dev/docs/page.tsx b/frontend/src/app/dev/docs/page.tsx index 8777d8a..9e278e5 100644 --- a/frontend/src/app/dev/docs/page.tsx +++ b/frontend/src/app/dev/docs/page.tsx @@ -9,6 +9,7 @@ import { BookOpen, Sparkles, Layout, Palette, Code2, FileCode, Accessibility, Li import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; +import { DevBreadcrumbs } from '@/components/dev/DevBreadcrumbs'; interface DocItem { title: string; @@ -98,8 +99,11 @@ const referencesDocs: DocItem[] = [ export default function DocsHub() { return (
+ {/* Breadcrumbs */} + + {/* Hero Section */} -
+

diff --git a/frontend/src/app/dev/forms/page.tsx b/frontend/src/app/dev/forms/page.tsx index bf58478..84c4d3d 100644 --- a/frontend/src/app/dev/forms/page.tsx +++ b/frontend/src/app/dev/forms/page.tsx @@ -11,8 +11,9 @@ import Link from 'next/link'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { z } from 'zod'; -import { ArrowLeft, CheckCircle2, Loader2 } from 'lucide-react'; +import { CheckCircle2, Loader2 } from 'lucide-react'; import { Button } from '@/components/ui/button'; +import { DevBreadcrumbs } from '@/components/dev/DevBreadcrumbs'; import { Card, CardContent, @@ -94,26 +95,12 @@ export default function FormsPage() { }; return ( -
- {/* Header */} -
-
- - - -
-

Form Patterns

-

- react-hook-form + Zod validation examples -

-
-
-
+
+ {/* Breadcrumbs */} + {/* Content */} -
+
{/* Introduction */}
diff --git a/frontend/src/app/dev/layouts/page.tsx b/frontend/src/app/dev/layouts/page.tsx index 0a7a1ea..7325727 100644 --- a/frontend/src/app/dev/layouts/page.tsx +++ b/frontend/src/app/dev/layouts/page.tsx @@ -6,7 +6,8 @@ import type { Metadata } from 'next'; import Link from 'next/link'; -import { ArrowLeft, Grid3x3 } from 'lucide-react'; +import { Grid3x3 } from 'lucide-react'; +import { DevBreadcrumbs } from '@/components/dev/DevBreadcrumbs'; import { Button } from '@/components/ui/button'; import { Card, @@ -26,26 +27,12 @@ export const metadata: Metadata = { export default function LayoutsPage() { return ( -
- {/* Header */} -
-
- - - -
-

Layout Patterns

-

- Essential patterns for pages, dashboards, and forms -

-
-
-
+
+ {/* Breadcrumbs */} + {/* Content */} -
+
{/* Introduction */}
diff --git a/frontend/src/app/dev/spacing/page.tsx b/frontend/src/app/dev/spacing/page.tsx index 710b232..a57d793 100644 --- a/frontend/src/app/dev/spacing/page.tsx +++ b/frontend/src/app/dev/spacing/page.tsx @@ -7,7 +7,8 @@ import type { Metadata } from 'next'; import dynamic from 'next/dynamic'; import Link from 'next/link'; -import { ArrowLeft, Ruler } from 'lucide-react'; +import { Ruler } from 'lucide-react'; +import { DevBreadcrumbs } from '@/components/dev/DevBreadcrumbs'; import { Button } from '@/components/ui/button'; import { Card, @@ -41,26 +42,12 @@ export const metadata: Metadata = { export default function SpacingPage() { return ( -
- {/* Header */} -
-
- - - -
-

Spacing Patterns

-

- Parent-controlled spacing philosophy -

-
-
-
+
+ {/* Breadcrumbs */} + {/* Content */} -
+
{/* Introduction */}
diff --git a/frontend/src/components/dev/ComponentShowcase.tsx b/frontend/src/components/dev/ComponentShowcase.tsx index 95e0ad7..8e0acc8 100644 --- a/frontend/src/components/dev/ComponentShowcase.tsx +++ b/frontend/src/components/dev/ComponentShowcase.tsx @@ -67,6 +67,7 @@ import { TableRow, } from '@/components/ui/table'; import { Example, ExampleGrid, ExampleSection } from './Example'; +import { DevBreadcrumbs } from './DevBreadcrumbs'; /** * Component showcase @@ -76,8 +77,11 @@ export function ComponentShowcase() { return (
+ {/* Breadcrumbs */} + + {/* Content */} -
+
{/* Colors */} +
+
    + {/* Home link */} +
  1. + + + Hub + +
  2. + + {/* Breadcrumb items */} + {items.map((item, index) => ( +
  3. + + {item.href ? ( + + {item.label} + + ) : ( + {item.label} + )} +
  4. + ))} +
+
+ + ); +}