# Breadcrumb Variants (cva config) ## Purpose `breadcrumbVariants`, `breadcrumbListVariants`, `breadcrumbItemVariants`, `breadcrumbLinkVariants`, `breadcrumbPageVariants`, `breadcrumbSeparatorVariants`, and `breadcrumbEllipsisVariants` are the cva (class-variance-authority) configurations powering every `` slot. They are split from `breadcrumb.tsx` into their own module so an ejected source copy under `npx shadcn@latest add @suaveplan/breadcrumb` keeps the cva configurations in a dedicated file. Theme overrides flow through `useThemedVariants("Breadcrumb")`. The wrapper cva is intentionally empty — breadcrumbs sit in many layout contexts (page header, sticky bar, embedded card) and adding margin / padding here would conflict with the host layout. The list, item, link, page, separator, and ellipsis cvas carry only the classes intrinsic to the breadcrumb itself. ## Features - List: flex row with `gap-1.5 sm:gap-2.5`, wraps on narrow viewports, muted foreground. - Item: inline-flex row with `gap-1.5` between an interactive crumb and a separator. - Link: hover lift to foreground colour, focus-visible ring, smooth-easing colour transition with `motion-reduce:transition-none`. - Page: foreground colour, normal weight (so it does not visually outweigh the page heading). - Separator: sized to `[&>svg]:size-3.5` so the chevron matches the surrounding text. - Ellipsis: `flex h-9 w-9` square so the dots have a clear hit-area. ## Usage: Basic Example ```ts import { breadcrumbLinkVariants, breadcrumbPageVariants, } from "@suaveplan/react-ui"; const linkClassName = breadcrumbLinkVariants(); const pageClassName = breadcrumbPageVariants(); ``` ## Usage: Advanced Example ```ts import { breadcrumbListVariants, cn } from "@suaveplan/react-ui"; export function BoldBreadcrumbList({ children, className, }: { children: React.ReactNode; className?: string; }) { return (
    {children}
); } ``` ## API Reference ### `breadcrumbVariants(): string` Returns the wrapper class string (currently empty by design; reserved for theme overrides). ### `breadcrumbListVariants(): string` Returns the `
    ` class string. No arguments. ### `breadcrumbItemVariants(): string` Returns the `
  1. ` class string. No arguments. ### `breadcrumbLinkVariants(): string` Returns the `` class string. No arguments. ### `breadcrumbPageVariants(): string` Returns the current-page `` class string. No arguments. ### `breadcrumbSeparatorVariants(): string` Returns the separator `
  2. ` class string. No arguments. ### `breadcrumbEllipsisVariants(): string` Returns the ellipsis `` class string. No arguments. ## Implementation Notes - All variants take no axes. Breadcrumb is intentionally simple — variants would multiply test surface area for marginal customisation gain. - The list cva uses `flex-wrap` so long breadcrumb trails wrap gracefully on narrow viewports rather than overflowing. - The link cva uses `focus-visible` (not `focus`) so the ring only appears for keyboard users, not on every mouse click. - `motion-reduce:transition-none` collapses the colour transition for users with `prefers-reduced-motion: reduce`.