{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "masai-breadcrumb", "title": "Masai Breadcrumb", "description": "Accessible breadcrumb navigation (nav + ordered list): optional href per segment, chevron separators, Masai typography tokens.", "dependencies": [ "lucide-react" ], "files": [ { "path": "registry/components/masai-breadcrumb.tsx", "content": "\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronRight } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport type MasaiBreadcrumbItem = {\n label: React.ReactNode;\n /** Required for every segment except the last. The last crumb is always the current page (not a link). */\n href?: string;\n};\n\nexport type MasaiBreadcrumbRenderLinkProps = {\n href: string;\n className?: string;\n children: React.ReactNode;\n};\n\nexport type MasaiBreadcrumbProps = {\n items: MasaiBreadcrumbItem[];\n className?: string;\n navClassName?: string;\n listClassName?: string;\n separatorClassName?: string;\n linkClassName?: string;\n currentClassName?: string;\n separator?: React.ReactNode;\n /**\n * Renders clickable ancestors (everything before the last crumb). Swap in your framework `Link`\n * (`next/link`, `@tanstack/react-router`, etc.) to keep navigation client-side instead of `` full reloads.\n */\n renderLink?: (props: MasaiBreadcrumbRenderLinkProps) => React.ReactNode;\n};\n\nconst defaultSeparator = (\n \n);\n\nexport function MasaiBreadcrumb({\n items,\n className,\n navClassName,\n listClassName,\n separatorClassName,\n linkClassName,\n currentClassName,\n separator = defaultSeparator,\n renderLink,\n}: MasaiBreadcrumbProps) {\n if (!items?.length) {\n return null;\n }\n\n const linkStyles = cn(\n \"type-t1 text-gray-600 transition-colors hover:text-gray-900\",\n linkClassName,\n );\n\n const staticStyles = cn(\"type-t1 text-gray-900\", currentClassName);\n\n return (\n \n );\n}\n", "type": "registry:ui" } ], "type": "registry:ui" }