Breadcrumb
nivalis-ui/breadcrumbFreeComponent
A breadcrumb component.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/nivalis-studio/nivalis-ui/main/public/r/breadcrumb.jsonSource
1import { Slot } from '@radix-ui/react-slot';2import { ChevronRightIcon, MoreHorizontalIcon } from 'lucide-react';3import { cn } from '@/lib/classnames';4import type { ComponentProps } from 'react';56function BreadcrumbRoot({ ...props }: ComponentProps<'nav'>) {7 return <nav aria-label='breadcrumb' data-slot='breadcrumb' {...props} />;8}910function BreadcrumbList({ className, ...props }: ComponentProps<'ol'>) {11 return (12 <ol13 className={cn(14 'wrap-break-word flex flex-wrap items-center gap-1.5 text-muted-foreground text-sm sm:gap-2.5',15 className,16 )}17 data-slot='breadcrumb-list'18 {...props}19 />20 );21}2223function BreadcrumbItem({ className, ...props }: ComponentProps<'li'>) {24 return (25 <li26 className={cn('inline-flex items-center gap-1.5', className)}27 data-slot='breadcrumb-item'28 {...props}29 />30 );31}3233function BreadcrumbLink({34 asChild,35 className,36 ...props37}: ComponentProps<'a'> & {38 asChild?: boolean;39}) {40 const Comp = asChild ? Slot : 'a';4142 return (43 <Comp44 className={cn('transition-colors hover:text-foreground', className)}45 data-slot='breadcrumb-link'46 {...props}47 />48 );49}5051function BreadcrumbPage({ className, ...props }: ComponentProps<'span'>) {52 return (53 // biome-ignore lint/a11y/useFocusableInteractive: FIXME54 // biome-ignore lint/a11y/useSemanticElements: FIXME55 <span56 aria-current='page'57 aria-disabled='true'58 className={cn('font-normal text-foreground', className)}59 data-slot='breadcrumb-page'60 role='link'61 {...props}62 />63 );64}6566function BreadcrumbSeparator({67 children,68 className,69 ...props70}: ComponentProps<'li'>) {71 return (72 <li73 aria-hidden='true'74 className={cn('[&>svg]:size-3.5', className)}75 data-slot='breadcrumb-separator'76 role='presentation'77 {...props}78 >79 {children ?? <ChevronRightIcon />}80 </li>81 );82}8384function BreadcrumbEllipsis({ className, ...props }: ComponentProps<'span'>) {85 return (86 <span87 aria-hidden='true'88 className={cn('flex size-9 items-center justify-center', className)}89 data-slot='breadcrumb-ellipsis'90 role='presentation'91 {...props}92 >93 <MoreHorizontalIcon className='size-4' />94 <span className='sr-only'>More</span>95 </span>96 );97}9899const Breadcrumb = Object.assign(BreadcrumbRoot, {100 List: BreadcrumbList,101 Item: BreadcrumbItem,102 Link: BreadcrumbLink,103 Page: BreadcrumbPage,104// … truncated
What it pulls in
npm packages
Files it writes
More from @nivalis/ui
All 23 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | @nivalis/ui | Components | Free | 1 dep | |
| Avataravatar | @nivalis/ui | Components | Free | 1 dep | |
| Badgebadge | @nivalis/ui | Components | Free | no deps | |
| Buttonbutton | @nivalis/ui | Components | Free | 1 dep | |
| Cardcard | @nivalis/ui | Components | Free | no deps | |
| Checkboxcheckbox | @nivalis/ui | Components | Free | 1 dep | |
| Commandcommand | @nivalis/ui | Components | Free | 2 deps · 2 files | |
| ContextMenucontext-menu | @nivalis/ui | Components | Free | 1 dep |
