breadcrumbs registry

breadcrumbs.jsonJSON

breadcrumbs.json

{
  "name": "next-breadcrumb",
  "type": "registry:block",
  "dependencies": [],
  "devDependencies": [],
  "registryDependencies": [],
  "files": [
    {
      "path": "./components/breadcrumbs.tsx",
      "content": "import { cn } from \"@/lib/utils\";\nimport { Home } from \"lucide-react\";\nimport Link from \"next/link\";\n\nexport type BreadcrumbItem = {\n  name: string;\n  href?: string;\n  current?: boolean;\n};\n\ntype BreadcrumbsProps = {\n  pages: BreadcrumbItem[];\n  homeIcon?: React.ReactNode;\n  separator?: React.ReactNode;\n  className?: string;\n  maxItems?: number;\n  showHomeIcon?: boolean;\n};\n\nexport default function Breadcrumbs({\n  pages,\n  homeIcon = <Home className=\"h-5 w-5 flex-shrink-0\" />,\n  separator = (\n    <svg\n      className=\"h-5 w-5 flex-shrink-0 text-gray-300\"\n      fill=\"currentColor\"\n      viewBox=\"0 0 20 20\"\n      aria-hidden=\"true\"\n    >\n      <path d=\"M5.555 17.776l8-16 .894.448-8 16-.894-.448z\" />\n    </svg>\n  ),\n  className = \"\",\n  maxItems = Infinity,\n  showHomeIcon = true,\n}: BreadcrumbsProps) {\n  const visiblePages = pages.slice(-Math.min(maxItems, pages.length));\n  const showEllipsis = pages.length > maxItems;\n\n  return (\n    <nav aria-label=\"Breadcrumb\" className={cn(\"flex\", className)}>\n      <ol role=\"list\" className=\"flex items-center space-x-4\">\n        {showHomeIcon && (\n          <li>\n            <Link href=\"/\" className=\"text-gray-400 hover:text-gray-500 dark:text-gray-500 dark:hover:text-gray-400\">\n              {homeIcon}\n              <span className=\"sr-only\">Home</span>\n            </Link>\n          </li>\n        )}\n        {showEllipsis && (\n          <li className=\"text-sm\">\n            <span className=\"text-gray-500 dark:text-gray-400\">...</span>\n          </li>\n        )}\n        {visiblePages.map((page, index) => (\n          <li key={page.name}>\n            <div className=\"flex items-center\">\n              {(index > 0 || showHomeIcon) && separator}\n              <Link\n                href={page.href ?? \"#\"}\n                aria-current={page.current ? \"page\" : undefined}\n                className={cn(\n                  \"ml-4 text-sm font-medium hover:text-gray-700 dark:hover:text-gray-300\",\n                  page.current ? \"text-gray-900 dark:text-gray-100\" : \"text-gray-500 dark:text-gray-400\"\n                )}\n              >\n                {page.name}\n              </Link>\n            </div>\n          </li>\n        ))}\n      </ol>\n    </nav>\n  );\n}\n",
      "type": "registry:example",
      "target": "./components/breadcrumbs.tsx"
    }
  ],
  "tailwind": {},
  "cssVars": {},
  "meta": {
    "description": "A flexible Breadcrumbs component for Next.js applications",
    "author": "Milind Mishra"
  }
}
Updated: 9/26/2024