Breadcrumb
optics/breadcrumbFreeComponent
Displays the path to the current resource using a hierarchy of links.
See it running
Open the demo on optics
optics.agusmayol.com.ar/components/breadcrumbInstall it
npx shadcn@latest add https://optics.agusmayol.com.ar/r/breadcrumb.jsonSource
1import * as React from "react";2import { mergeProps } from "@base-ui/react/merge-props";3import { useRender } from "@base-ui/react/use-render";45import { cn } from "@/lib/utils";6import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";78function Breadcrumb({ className = "", ...props }) {9 return (10 <nav11 aria-label="breadcrumb"12 data-slot="breadcrumb"13 className={cn(className)}14 {...props}15 />16 );17}1819function BreadcrumbList({ className = "", ...props }) {20 return (21 <ol22 data-slot="breadcrumb-list"23 className={cn(24 "text-muted-foreground gap-1.5 text-xs/relaxed flex flex-wrap items-center break-words",25 className,26 )}27 {...props}28 />29 );30}3132function BreadcrumbItem({ className = "", ...props }) {33 return (34 <li35 data-slot="breadcrumb-item"36 className={cn("gap-1 inline-flex items-center", className)}37 {...props}38 />39 );40}4142function BreadcrumbLink({ className = "", render = undefined, ...props }) {43 return useRender({44 defaultTagName: "a",45 props: mergeProps(46 {47 className: cn("hover:text-foreground transition-colors", className),48 },49 props,50 ),51 render,52 state: {53 slot: "breadcrumb-link",54 },55 });56}5758function BreadcrumbPage({ className = "", ...props }) {59 return (60 <span61 data-slot="breadcrumb-page"62 role="link"63 aria-disabled="true"64 aria-current="page"65 className={cn("text-foreground font-normal", className)}66 {...props}67 />68 );69}7071function BreadcrumbSeparator({ children = null, className = "", ...props }) {72 return (73 <li74 data-slot="breadcrumb-separator"75 role="presentation"76 aria-hidden="true"77 className={cn("[&>svg]:size-3.5", className)}78 {...props}79 >80 {children ?? <ChevronRightIcon />}81 </li>82 );83}8485function BreadcrumbEllipsis({ className = "", ...props }) {86 return (87 <span88 data-slot="breadcrumb-ellipsis"89 role="presentation"90 aria-hidden="true"91 className={cn(92 "size-4 [&>svg]:size-3.5 flex items-center justify-center",93 className,94 )}95 {...props}96 >97 <MoreHorizontalIcon />98 <span className="sr-only">More</span>99 </span>100 );101}102103Breadcrumb.displayName = "Breadcrumb";104BreadcrumbList.displayName = "BreadcrumbList";105BreadcrumbItem.displayName = "BreadcrumbItem";106BreadcrumbLink.displayName = "BreadcrumbLink";107BreadcrumbPage.displayName = "BreadcrumbPage";108BreadcrumbSeparator.displayName = "BreadcrumbSeparator";109BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";110111export {112 Breadcrumb,113 BreadcrumbList,114 BreadcrumbItem,115// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from optics
All 79 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | optics | Components | Free | 5 deps | |
| Alertalert | optics | Components | Free | 4 deps | |
| Alert Dialogalert-dialog | optics | Components | Free | 4 deps | |
| Aspect Ratioaspect-ratio | optics | Components | Free | 2 deps | |
| Auto Heightauto-height | optics | Components | Free | 3 deps | |
| Avataravatar | optics | Components | Free | 3 deps | |
| Badgebadge | optics | Components | Free | 4 deps | |
| Buttonbutton | optics | Components | Free | 4 deps |
