Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | import * as React from "react"; import { Slot } from "@radix-ui/react-slot"; import { ChevronRight, MoreHorizontal } from "lucide-react"; import { ui } from "@/config/theme"; import { cn } from "@/lib/utils"; const Breadcrumb = React.forwardRef< HTMLElement, React.ComponentPropsWithoutRef<"nav"> & { separator?: React.ReactNode; } >(({ ...props }, ref) => <nav ref={ref} aria-label="breadcrumb" {...props} />); Breadcrumb.displayName = "Breadcrumb"; const BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<"ol">>( ({ className, ...props }, ref) => ( <ol ref={ref} className={cn(ui("breadcrumbList"), className)} {...props} /> ), ); BreadcrumbList.displayName = "BreadcrumbList"; const BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<"li">>( ({ className, ...props }, ref) => ( <li ref={ref} className={cn("inline-flex items-center gap-1.5", className)} {...props} /> ), ); BreadcrumbItem.displayName = "BreadcrumbItem"; const BreadcrumbLink = React.forwardRef< HTMLAnchorElement, React.ComponentPropsWithoutRef<"a"> & { asChild?: boolean; } >(({ asChild, className, ...props }, ref) => { const Comp = asChild ? Slot : "a"; return <Comp ref={ref} className={cn(ui("breadcrumbLink"), className)} {...props} />; }); BreadcrumbLink.displayName = "BreadcrumbLink"; const BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<"span">>( ({ className, ...props }, ref) => ( <span ref={ref} role="link" aria-disabled="true" aria-current="page" className={cn(ui("breadcrumbPage"), className)} {...props} /> ), ); BreadcrumbPage.displayName = "BreadcrumbPage"; function BreadcrumbSeparator({ children, className, ...props }: React.ComponentProps<"li">) { return ( <li role="presentation" aria-hidden="true" className={cn("[&>svg]:size-3.5", className)} {...props}> {children ?? <ChevronRight />} </li> ); } BreadcrumbSeparator.displayName = "BreadcrumbSeparator"; function BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<"span">) { return ( <span role="presentation" aria-hidden="true" className={cn("flex h-9 w-9 items-center justify-center", className)} {...props} > <MoreHorizontal className="h-4 w-4" /> <span className="sr-only">More</span> </span> ); } BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis"; export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, }; |