{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "breadcrumbs",
  "title": "Breadcrumbs",
  "description": "A breadcrumbs component.",
  "dependencies": [
    "@hugeicons/react",
    "@hugeicons/core-free-icons"
  ],
  "files": [
    {
      "path": "registry/default/breadcrumbs/breadcrumbs.tsx",
      "content": "\"use client\";\n\nimport * as React from \"react\";\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { HugeiconsIcon } from \"@hugeicons/react\";\nimport ArrowRight01Icon from \"@hugeicons/core-free-icons/ArrowRight01Icon\";\nimport MoreHorizontalIcon from \"@hugeicons/core-free-icons/MoreHorizontalIcon\";\n\nimport { cn } from \"@/lib/utils\";\n\ntype BreadcrumbVariant = \"default\" | \"surface\";\ntype BreadcrumbSize = \"sm\" | \"md\" | \"lg\";\n\ninterface BreadcrumbProps extends React.ComponentProps<\"nav\"> {\n  variant?: BreadcrumbVariant;\n  size?: BreadcrumbSize;\n  \"aria-label\"?: string;\n}\n\nfunction Breadcrumb({\n  variant = \"default\",\n  size = \"md\",\n  \"aria-label\": ariaLabel = \"breadcrumb\",\n  className,\n  ...props\n}: BreadcrumbProps) {\n  return (\n    <nav\n      aria-label={ariaLabel}\n      data-slot=\"breadcrumb\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(\"group\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n  return (\n    <ol\n      data-slot=\"breadcrumb-list\"\n      className={cn(\n        \"text-muted-foreground inline-flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5\",\n        \"group-data-[size=sm]:gap-1 group-data-[size=sm]:text-xs group-data-[size=sm]:sm:gap-2\",\n        \"group-data-[size=lg]:gap-2 group-data-[size=lg]:text-base group-data-[size=lg]:sm:gap-3\",\n        // surface variant — framed gray track lifted off the page.\n        \"group-data-[variant=surface]:bg-muted group-data-[variant=surface]:rounded-lg group-data-[variant=surface]:p-1 group-data-[variant=surface]:shadow-[var(--surface-shadow-1),var(--surface-rim-1)]\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\ninterface BreadcrumbItemProps extends React.ComponentProps<\"li\"> {\n  \"aria-label\"?: string;\n}\n\nfunction BreadcrumbItem({\n  className,\n  \"aria-label\": ariaLabel,\n  ...props\n}: BreadcrumbItemProps) {\n  return (\n    <li\n      data-slot=\"breadcrumb-item\"\n      className={cn(\"inline-flex items-center gap-1.5\", className)}\n      aria-label={ariaLabel}\n      {...props}\n    />\n  );\n}\n\ntype BreadcrumbLinkProps = useRender.ComponentProps<\"a\">;\n\nfunction BreadcrumbLink({ className, render, ...props }: BreadcrumbLinkProps) {\n  const defaultProps = {\n    \"data-slot\": \"breadcrumb-link\",\n    className: cn(\n      \"rounded-sm transition-colors duration-200 hover:text-foreground\",\n      \"outline-solid outline-2 outline-offset-2 outline-transparent focus-visible:outline-ring/50\",\n      // surface variant — padded hit area so links sit inside the track.\n      \"group-data-[variant=surface]:px-1.5 group-data-[variant=surface]:py-0.5\",\n      className,\n    ),\n  };\n\n  return useRender({\n    defaultTagName: \"a\",\n    render,\n    props: mergeProps<\"a\">(defaultProps, props),\n  });\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"breadcrumb-page\"\n      aria-current=\"page\"\n      className={cn(\n        \"text-foreground font-normal\",\n        // surface variant — current-page pill lifted out of the muted track.\n        \"group-data-[variant=surface]:bg-surface-4 group-data-[variant=surface]:rounded-sm group-data-[variant=surface]:px-2 group-data-[variant=surface]:py-1 group-data-[variant=surface]:shadow-[var(--surface-shadow-3),var(--surface-rim-3)]\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\ninterface BreadcrumbSeparatorProps extends React.ComponentProps<\"li\"> {\n  separator?: React.ReactNode;\n}\n\nfunction BreadcrumbSeparator({\n  children,\n  className,\n  separator,\n  ...props\n}: BreadcrumbSeparatorProps) {\n  return (\n    <li\n      data-slot=\"breadcrumb-separator\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\n        \"flex items-center justify-center [&>svg]:size-3.5\",\n        \"group-data-[size=sm]:[&>svg]:size-3\",\n        \"group-data-[size=lg]:[&>svg]:size-4\",\n        className,\n      )}\n      {...props}\n    >\n      {children ?? separator ?? (\n        <HugeiconsIcon icon={ArrowRight01Icon} strokeWidth={2} />\n      )}\n    </li>\n  );\n}\n\ninterface BreadcrumbEllipsisProps extends React.ComponentProps<\"span\"> {\n  \"aria-label\"?: string;\n}\n\nfunction BreadcrumbEllipsis({\n  className,\n  \"aria-label\": ariaLabel = \"More pages\",\n  ...props\n}: BreadcrumbEllipsisProps) {\n  return (\n    <span\n      data-slot=\"breadcrumb-ellipsis\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      className={cn(\n        \"flex size-9 items-center justify-center\",\n        \"group-data-[size=sm]:size-7\",\n        \"group-data-[size=lg]:size-11\",\n        className,\n      )}\n      {...props}\n    >\n      <HugeiconsIcon\n        icon={MoreHorizontalIcon}\n        className=\"size-4 group-data-[size=lg]:size-5 group-data-[size=sm]:size-3\"\n        strokeWidth={2}\n      />\n      <span className=\"sr-only\">{ariaLabel}</span>\n    </span>\n  );\n}\n\nexport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  BreadcrumbEllipsis,\n};\n",
      "type": "registry:ui",
      "target": "components/ui/cubby-ui/breadcrumbs.tsx"
    }
  ],
  "type": "registry:ui"
}