Spaces:
Running
Running
| import * as React from "react"; | |
| import { Slot } from "@radix-ui/react-slot@1.1.2"; | |
| import { ChevronRight, MoreHorizontal } from "lucide-react@0.487.0"; | |
| import { cn } from "./utils"; | |
| function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { | |
| return <nav aria-label="breadcrumb" data-slot="breadcrumb" {...props} />; | |
| } | |
| function BreadcrumbList({ className, ...props }: React.ComponentProps<"ol">) { | |
| return ( | |
| <ol | |
| data-slot="breadcrumb-list" | |
| className={cn( | |
| "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5", | |
| className, | |
| )} | |
| {...props} | |
| /> | |
| ); | |
| } | |
| function BreadcrumbItem({ className, ...props }: React.ComponentProps<"li">) { | |
| return ( | |
| <li | |
| data-slot="breadcrumb-item" | |
| className={cn("inline-flex items-center gap-1.5", className)} | |
| {...props} | |
| /> | |
| ); | |
| } | |
| function BreadcrumbLink({ | |
| asChild, | |
| className, | |
| ...props | |
| }: React.ComponentProps<"a"> & { | |
| asChild?: boolean; | |
| }) { | |
| const Comp = asChild ? Slot : "a"; | |
| return ( | |
| <Comp | |
| data-slot="breadcrumb-link" | |
| className={cn("hover:text-foreground transition-colors", className)} | |
| {...props} | |
| /> | |
| ); | |
| } | |
| function BreadcrumbPage({ className, ...props }: React.ComponentProps<"span">) { | |
| return ( | |
| <span | |
| data-slot="breadcrumb-page" | |
| role="link" | |
| aria-disabled="true" | |
| aria-current="page" | |
| className={cn("text-foreground font-normal", className)} | |
| {...props} | |
| /> | |
| ); | |
| } | |
| function BreadcrumbSeparator({ | |
| children, | |
| className, | |
| ...props | |
| }: React.ComponentProps<"li">) { | |
| return ( | |
| <li | |
| data-slot="breadcrumb-separator" | |
| role="presentation" | |
| aria-hidden="true" | |
| className={cn("[&>svg]:size-3.5", className)} | |
| {...props} | |
| > | |
| {children ?? <ChevronRight />} | |
| </li> | |
| ); | |
| } | |
| function BreadcrumbEllipsis({ | |
| className, | |
| ...props | |
| }: React.ComponentProps<"span">) { | |
| return ( | |
| <span | |
| data-slot="breadcrumb-ellipsis" | |
| role="presentation" | |
| aria-hidden="true" | |
| className={cn("flex size-9 items-center justify-center", className)} | |
| {...props} | |
| > | |
| <MoreHorizontal className="size-4" /> | |
| <span className="sr-only">More</span> | |
| </span> | |
| ); | |
| } | |
| export { | |
| Breadcrumb, | |
| BreadcrumbList, | |
| BreadcrumbItem, | |
| BreadcrumbLink, | |
| BreadcrumbPage, | |
| BreadcrumbSeparator, | |
| BreadcrumbEllipsis, | |
| }; | |