@wow-two-beta/ui 0.0.19 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/display/heading/Heading.variants.ts","../src/display/heading/Heading.tsx","../src/display/text/Text.variants.ts","../src/display/text/Text.tsx","../src/display/code/Code.variants.ts","../src/display/code/Code.tsx","../src/display/kbd/Kbd.tsx","../src/display/image/Image.tsx","../src/display/avatar/Avatar.variants.ts","../src/display/avatar/Avatar.tsx","../src/display/badge/Badge.variants.ts","../src/display/badge/Badge.tsx","../src/display/separator/Separator.tsx","../src/display/mark/Mark.tsx","../src/display/quote/Quote.tsx","../src/display/card/Card.tsx","../src/display/avatarGroup/AvatarGroup.tsx","../src/display/tooltip/Tooltip.tsx","../src/display/emptyState/EmptyState.tsx","../src/display/stat/Stat.tsx","../src/display/snippet/Snippet.tsx","../src/display/notificationDot/NotificationDot.tsx","../src/display/countBadge/CountBadge.tsx","../src/display/status/Status.tsx","../src/display/keyboardShortcut/KeyboardShortcut.tsx","../src/display/descriptionList/DescriptionList.tsx","../src/display/infoRow/InfoRow.tsx","../src/display/badgeOverlay/BadgeOverlay.tsx","../src/display/sectionHeader/SectionHeader.tsx","../src/display/highlight/Highlight.tsx","../src/display/collapsible/Collapsible.tsx","../src/display/accordion/Accordion.tsx","../src/display/tabs/Tabs.tsx","../src/display/list/List.variants.ts","../src/display/list/List.tsx","../src/display/timeline/Timeline.tsx","../src/display/tree/Tree.tsx","../src/display/table/Table.tsx","../src/display/dataTable/DataTable.tsx","../src/display/carousel/Carousel.tsx","../src/display/swipeActions/SwipeActions.tsx","../src/display/diffViewer/DiffViewer.tsx"],"names":["forwardRef","jsx","useState","isValidElement","jsxs","Fragment","SIZE","TONE","POS","Collapsible","CollapsibleTrigger","CollapsibleContent","createContext","useContext","Accordion","useMemo","AccordionItem","useId","AccordionTrigger","AccordionContent","Tabs","TabsList","TabsTab","TabsPanel","List","ListItem","Check","Timeline","Children","TimelineItem","Tree","useCallback","TreeGroup","TreeItem","Table","TableHead","TableBody","TableFooter","TableRow","TableHeaderCell","TableCell","TableCaption","Carousel","next","CarouselViewport","CarouselSlides","CarouselSlide","CarouselPrev","CarouselNext","ChevronRight","CarouselDots","CarouselDot","SwipeActions","useRef","DiffViewer","i","j"],"mappings":"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","file":"chunk-ZP4CBWO2.js","sourcesContent":["import { tv, type VariantProps } from '../../utils';\n\nexport const headingVariants = tv({\n base: 'font-semibold tracking-tight text-foreground',\n variants: {\n size: {\n xs: 'text-sm',\n sm: 'text-base',\n md: 'text-lg',\n lg: 'text-xl',\n xl: 'text-2xl',\n '2xl': 'text-3xl',\n '3xl': 'text-4xl',\n '4xl': 'text-5xl',\n },\n weight: {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n },\n align: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n },\n },\n defaultVariants: {\n size: 'lg',\n weight: 'semibold',\n },\n});\n\nexport type HeadingVariants = VariantProps<typeof headingVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { headingVariants, type HeadingVariants } from './Heading.variants';\n\ntype HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface HeadingProps\n extends Omit<ComponentPropsWithoutRef<'h2'>, 'size'>,\n HeadingVariants {\n /** Semantic heading level (1–6). Default 2. Visual size is independent — set via `size`. */\n level?: HeadingLevel;\n}\n\n/**\n * Semantic heading. `level` controls the rendered tag (`h1`–`h6`); `size`\n * controls the visual scale independently — so a visually-large heading\n * can still be the right outline level.\n */\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n ({ level = 2, className, size, weight, align, ...props }, ref) => {\n const Tag = `h${level}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n return (\n <Tag\n ref={ref}\n className={cn(headingVariants({ size, weight, align }), className)}\n {...props}\n />\n );\n },\n);\nHeading.displayName = 'Heading';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const textVariants = tv({\n base: '',\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n },\n weight: {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n },\n color: {\n default: 'text-foreground',\n muted: 'text-muted-foreground',\n subtle: 'text-subtle-foreground',\n brand: 'text-primary',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-destructive',\n },\n align: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n },\n truncate: {\n true: 'truncate',\n },\n },\n defaultVariants: {\n size: 'md',\n weight: 'normal',\n color: 'default',\n },\n});\n\nexport type TextVariants = VariantProps<typeof textVariants>;\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n type Ref,\n} from 'react';\nimport { cn } from '../../utils';\nimport { textVariants, type TextVariants } from './Text.variants';\n\nexport interface TextProps\n extends Omit<ComponentPropsWithoutRef<'p'>, 'as' | 'color'>,\n TextVariants {\n as?: ElementType;\n}\n\n/**\n * Body text. Renders as `<p>` by default; pass `as=\"span\"` (or any element)\n * to keep semantics consistent with the surrounding markup.\n */\nexport const Text = forwardRef<HTMLElement, TextProps>(\n ({ as: Component = 'p', className, size, weight, color, align, truncate, ...props }, ref) => (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn(textVariants({ size, weight, color, align, truncate }), className)}\n {...props}\n />\n ),\n);\nText.displayName = 'Text';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const codeVariants = tv({\n base: 'font-mono text-sm',\n variants: {\n variant: {\n inline: 'rounded-sm bg-muted px-1 py-0.5 text-foreground',\n block: 'block w-full overflow-x-auto rounded-md bg-muted p-4 text-foreground',\n },\n },\n defaultVariants: {\n variant: 'inline',\n },\n});\n\nexport type CodeVariants = VariantProps<typeof codeVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { codeVariants, type CodeVariants } from './Code.variants';\n\nexport interface CodeProps extends ComponentPropsWithoutRef<'code'>, CodeVariants {}\n\n/**\n * Inline or block code. For block, wrap children in a `<pre>` if you need\n * pre-wrap whitespace; this atom only styles. Syntax highlighting is L5.\n */\nexport const Code = forwardRef<HTMLElement, CodeProps>(\n ({ className, variant, ...props }, ref) => (\n <code ref={ref} className={cn(codeVariants({ variant }), className)} {...props} />\n ),\n);\nCode.displayName = 'Code';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport type KbdProps = ComponentPropsWithoutRef<'kbd'>;\n\n/**\n * Keyboard key affordance — `<kbd>` styled with subtle border and inset\n * shadow. Single key per `<Kbd>`; chain via `<Kbd>⌘</Kbd> + <Kbd>K</Kbd>`.\n */\nexport const Kbd = forwardRef<HTMLElement, KbdProps>(({ className, ...props }, ref) => (\n <kbd\n ref={ref}\n className={cn(\n 'inline-flex h-5 min-w-5 items-center justify-center rounded-sm border border-border',\n 'bg-muted px-1.5 font-mono text-xs text-muted-foreground shadow-[inset_0_-1px_0_0_rgb(0_0_0/0.05)]',\n className,\n )}\n {...props}\n />\n));\nKbd.displayName = 'Kbd';\n","import { forwardRef, useState, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface ImageProps extends ComponentPropsWithoutRef<'img'> {\n /** Element rendered when the image fails to load. */\n fallback?: ReactNode;\n}\n\n/**\n * Image with built-in error fallback. The fallback element replaces the\n * `<img>` on error (broken `src`, network failure). For aspect-locked\n * images, wrap in `AspectRatio`.\n */\nexport const Image = forwardRef<HTMLImageElement, ImageProps>(\n ({ fallback, onError, alt = '', className, ...props }, ref) => {\n const [errored, setErrored] = useState(false);\n if (errored && fallback !== undefined) return <>{fallback}</>;\n return (\n <img\n ref={ref}\n alt={alt}\n className={cn('block max-w-full', className)}\n onError={(e) => {\n setErrored(true);\n onError?.(e);\n }}\n {...props}\n />\n );\n },\n);\nImage.displayName = 'Image';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const avatarVariants = tv({\n base: 'inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground font-medium',\n variants: {\n size: {\n xs: 'h-6 w-6 text-xs',\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-base',\n lg: 'h-12 w-12 text-lg',\n xl: 'h-16 w-16 text-xl',\n '2xl': 'h-20 w-20 text-2xl',\n },\n shape: {\n circle: 'rounded-full',\n square: 'rounded-md',\n },\n },\n defaultVariants: {\n size: 'md',\n shape: 'circle',\n },\n});\n\nexport type AvatarVariants = VariantProps<typeof avatarVariants>;\n","import {\n forwardRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { avatarVariants, type AvatarVariants } from './Avatar.variants';\n\nexport interface AvatarProps\n extends Omit<ComponentPropsWithoutRef<'span'>, 'children'>,\n AvatarVariants {\n /** Image source. Falls back to `name` initials or `fallback` on error. */\n src?: string;\n /** Person/entity name — used to derive initials when no image. */\n name?: string;\n /** Custom fallback (overrides initials). */\n fallback?: ReactNode;\n /** Alt text for the underlying `<img>`. Defaults to `name`. */\n alt?: string;\n}\n\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/);\n if (parts.length === 0) return '';\n const first = parts[0]?.[0] ?? '';\n const last = parts.length > 1 ? parts[parts.length - 1]?.[0] ?? '' : '';\n return (first + last).toUpperCase();\n}\n\n/**\n * Image avatar with initials fallback. Strict atom — fallback is rendered\n * inline (raw text), not via the `Text` atom, to keep this self-contained.\n */\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(\n ({ src, name = '', fallback, alt, className, size, shape, ...props }, ref) => {\n const [errored, setErrored] = useState(false);\n const showImage = src && !errored;\n return (\n <span\n ref={ref}\n className={cn(avatarVariants({ size, shape }), className)}\n {...props}\n >\n {showImage ? (\n <img\n src={src}\n alt={alt ?? name}\n className=\"h-full w-full object-cover\"\n onError={() => setErrored(true)}\n />\n ) : (\n fallback ?? getInitials(name)\n )}\n </span>\n );\n },\n);\nAvatar.displayName = 'Avatar';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const badgeVariants = tv({\n base: 'inline-flex items-center rounded-full font-medium',\n variants: {\n variant: {\n neutral: 'bg-muted text-foreground',\n brand: 'bg-primary-soft text-primary-soft-foreground',\n success: 'bg-success-soft text-success-soft-foreground',\n warning: 'bg-warning-soft text-warning-soft-foreground',\n danger: 'bg-destructive-soft text-destructive-soft-foreground',\n info: 'bg-info-soft text-info-soft-foreground',\n outline: 'border border-border text-foreground',\n },\n size: {\n sm: 'h-5 px-2 text-xs',\n md: 'h-6 px-2.5 text-xs',\n lg: 'h-7 px-3 text-sm',\n },\n },\n defaultVariants: {\n variant: 'neutral',\n size: 'md',\n },\n});\n\nexport type BadgeVariants = VariantProps<typeof badgeVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { badgeVariants, type BadgeVariants } from './Badge.variants';\n\nexport interface BadgeProps extends ComponentPropsWithoutRef<'span'>, BadgeVariants {}\n\n/**\n * Pill-shaped status / category indicator. Non-interactive — for clickable\n * use `Tag`. For severity-tinted callouts at message scale, use `Alert*`.\n */\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, size, ...props }, ref) => (\n <span ref={ref} className={cn(badgeVariants({ variant, size }), className)} {...props} />\n ),\n);\nBadge.displayName = 'Badge';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface SeparatorProps extends ComponentPropsWithoutRef<'div'> {\n orientation?: 'horizontal' | 'vertical';\n /** When `true`, the separator is purely decorative — `role=\"none\"` and\n * unannounced. Default `true`. Set `false` when meaningful in context. */\n decorative?: boolean;\n}\n\n/**\n * Visual divider. Defaults to a horizontal hairline; pass `orientation=\"vertical\"`\n * for column dividers (use inside a flex/grid with explicit height).\n */\nexport const Separator = forwardRef<HTMLDivElement, SeparatorProps>(\n ({ orientation = 'horizontal', decorative = true, className, ...props }, ref) => (\n <div\n ref={ref}\n role={decorative ? 'none' : 'separator'}\n aria-orientation={decorative ? undefined : orientation}\n className={cn(\n 'bg-border',\n orientation === 'horizontal' ? 'h-px w-full' : 'w-px self-stretch',\n className,\n )}\n {...props}\n />\n ),\n);\nSeparator.displayName = 'Separator';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport type MarkProps = ComponentPropsWithoutRef<'mark'>;\n\n/**\n * Highlighted text — semantic `<mark>` with a yellow tint. Use for search\n * matches and \"you mentioned this\" affordances.\n */\nexport const Mark = forwardRef<HTMLElement, MarkProps>(({ className, ...props }, ref) => (\n <mark\n ref={ref}\n className={cn('rounded-sm bg-warning-soft px-0.5 text-warning-soft-foreground', className)}\n {...props}\n />\n));\nMark.displayName = 'Mark';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport type QuoteProps = ComponentPropsWithoutRef<'blockquote'>;\n\n/**\n * Block quote with subtle left border and italic body text.\n */\nexport const Quote = forwardRef<HTMLQuoteElement, QuoteProps>(\n ({ className, ...props }, ref) => (\n <blockquote\n ref={ref}\n className={cn(\n 'border-l-4 border-border pl-4 italic text-muted-foreground',\n className,\n )}\n {...props}\n />\n ),\n);\nQuote.displayName = 'Quote';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\ntype DivProps = ComponentPropsWithoutRef<'div'>;\n\nexport interface CardProps extends DivProps {\n padding?: 'none' | 'sm' | 'md' | 'lg';\n}\n\nconst PADDING: Record<NonNullable<CardProps['padding']>, string> = {\n none: '',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n};\n\nconst CardRoot = forwardRef<HTMLDivElement, CardProps>(\n ({ className, padding = 'none', ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'rounded-lg border border-border bg-card text-card-foreground shadow-xs',\n PADDING[padding],\n className,\n )}\n {...props}\n />\n ),\n);\nCardRoot.displayName = 'Card';\n\nconst CardHeader = forwardRef<HTMLDivElement, DivProps>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col gap-1 p-4 pb-2', className)} {...props} />\n));\nCardHeader.displayName = 'Card.Header';\n\nconst CardTitle = forwardRef<HTMLHeadingElement, ComponentPropsWithoutRef<'h3'>>(\n ({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn('text-lg font-semibold tracking-tight', className)} {...props} />\n ),\n);\nCardTitle.displayName = 'Card.Title';\n\nconst CardDescription = forwardRef<HTMLParagraphElement, ComponentPropsWithoutRef<'p'>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />\n ),\n);\nCardDescription.displayName = 'Card.Description';\n\nconst CardBody = forwardRef<HTMLDivElement, DivProps>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-4 pt-2', className)} {...props} />\n));\nCardBody.displayName = 'Card.Body';\n\nconst CardFooter = forwardRef<HTMLDivElement, DivProps>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center gap-2 border-t border-border p-4', className)} {...props} />\n));\nCardFooter.displayName = 'Card.Footer';\n\n/**\n * Compound `Card` — raised surface for grouped content. Use sub-components\n * for structure: `<Card.Header>` (with optional `<Card.Title>` /\n * `<Card.Description>`), `<Card.Body>`, `<Card.Footer>`. Or pass\n * `padding=\"md\"` and free-form children for the simplest case.\n */\nexport const Card = Object.assign(CardRoot, {\n Header: CardHeader,\n Title: CardTitle,\n Description: CardDescription,\n Body: CardBody,\n Footer: CardFooter,\n});\n","import { Children, forwardRef, isValidElement, type ComponentPropsWithoutRef, type ReactElement } from 'react';\nimport { cn } from '../../utils';\nimport { Avatar, type AvatarProps } from '../avatar/Avatar';\n\nexport interface AvatarGroupProps extends ComponentPropsWithoutRef<'div'> {\n /** Maximum avatars to render. Excess is shown as a \"+N\" tile. */\n max?: number;\n /** Avatar size applied to all children. Default `md`. */\n size?: AvatarProps['size'];\n /** Negative-margin overlap class applied between avatars. Default `-ml-2`. */\n overlap?: string;\n}\n\n/**\n * Stacked group of `Avatar` children with overlap and an optional \"+N more\"\n * indicator when children exceed `max`.\n */\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ max, size = 'md', overlap = '-ml-2', className, children, ...props }, ref) => {\n const all = Children.toArray(children).filter(isValidElement) as ReactElement<AvatarProps>[];\n const visible = max ? all.slice(0, max) : all;\n const overflow = max ? Math.max(0, all.length - max) : 0;\n\n return (\n <div\n ref={ref}\n className={cn('inline-flex items-center', className)}\n {...props}\n >\n {visible.map((child, i) => (\n <div\n key={i}\n className={cn('ring-2 ring-background rounded-full', i > 0 && overlap)}\n >\n {/* Force consistent size */}\n <Avatar {...child.props} size={size} />\n </div>\n ))}\n {overflow > 0 && (\n <Avatar\n size={size}\n name={`+${overflow}`}\n className={cn(overlap, 'ring-2 ring-background')}\n />\n )}\n </div>\n );\n },\n);\nAvatarGroup.displayName = 'AvatarGroup';\n","import {\n cloneElement,\n isValidElement,\n useRef,\n useState,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport {\n AnchoredPositioner,\n Portal,\n type AnchoredPositionerProps,\n} from '../../primitives';\n\nexport interface TooltipProps {\n /** Tooltip body. */\n content: ReactNode;\n /** Single child element — the trigger. Receives event handlers + ref. */\n children: ReactElement;\n /** Floating UI placement. Default `top`. */\n placement?: AnchoredPositionerProps['placement'];\n /** Delay before opening on hover, in ms. Default 700. */\n openDelay?: number;\n /** Delay before closing on leave, in ms. Default 0. */\n closeDelay?: number;\n /** Controlled open state. */\n open?: boolean;\n /** Disable rendering even on hover (e.g. when content is empty). */\n disabled?: boolean;\n}\n\n/**\n * Hover-/focus-triggered tooltip. Wraps a single child as the trigger; the\n * tooltip body renders into a Portal positioned by Floating UI. Default\n * delays mirror the OS pattern (700ms in, 0 out).\n */\nexport function Tooltip({\n content,\n children,\n placement = 'top',\n openDelay = 700,\n closeDelay = 0,\n open: controlledOpen,\n disabled,\n}: TooltipProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = controlledOpen ?? uncontrolledOpen;\n const [anchor, setAnchor] = useState<HTMLElement | null>(null);\n const openTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = () => {\n if (openTimer.current) clearTimeout(openTimer.current);\n if (closeTimer.current) clearTimeout(closeTimer.current);\n openTimer.current = null;\n closeTimer.current = null;\n };\n const show = () => {\n clear();\n openTimer.current = setTimeout(() => setUncontrolledOpen(true), openDelay);\n };\n const hide = () => {\n clear();\n closeTimer.current = setTimeout(() => setUncontrolledOpen(false), closeDelay);\n };\n\n if (!isValidElement(children)) return children;\n const trigger = children as ReactElement<{\n ref?: Ref<HTMLElement>;\n onPointerEnter?: (e: React.PointerEvent) => void;\n onPointerLeave?: (e: React.PointerEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n }> & { ref?: Ref<HTMLElement> };\n\n const cloned = cloneElement(trigger, {\n ref: composeRefs(setAnchor, trigger.ref),\n onPointerEnter: (e: React.PointerEvent) => {\n trigger.props.onPointerEnter?.(e);\n show();\n },\n onPointerLeave: (e: React.PointerEvent) => {\n trigger.props.onPointerLeave?.(e);\n hide();\n },\n onFocus: (e: React.FocusEvent) => {\n trigger.props.onFocus?.(e);\n show();\n },\n onBlur: (e: React.FocusEvent) => {\n trigger.props.onBlur?.(e);\n hide();\n },\n });\n\n return (\n <>\n {cloned}\n {!disabled && open && content && (\n <Portal>\n <AnchoredPositioner anchor={anchor} placement={placement} offset={6}>\n <div\n role=\"tooltip\"\n className={cn(\n 'z-tooltip rounded-md bg-inverse px-2.5 py-1.5 text-xs text-inverse-foreground shadow-md',\n 'animate-in fade-in-0 zoom-in-95',\n )}\n >\n {content}\n </div>\n </AnchoredPositioner>\n </Portal>\n )}\n </>\n );\n}\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { Heading } from '../heading/Heading';\nimport { Text } from '../text/Text';\n\nexport interface EmptyStateProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n /** Optional icon (lucide or custom). */\n icon?: ReactNode;\n /** Heading copy. */\n title: ReactNode;\n /** Body copy below the title. */\n description?: ReactNode;\n /** Action(s) — usually one or two `<Button>` elements. */\n actions?: ReactNode;\n /** Visual size. Default `md`. */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst SIZE: Record<NonNullable<EmptyStateProps['size']>, { wrap: string; iconBox: string }> = {\n sm: { wrap: 'gap-2 py-6', iconBox: 'h-10 w-10' },\n md: { wrap: 'gap-3 py-10', iconBox: 'h-14 w-14' },\n lg: { wrap: 'gap-4 py-16', iconBox: 'h-20 w-20' },\n};\n\n/**\n * Empty-list / no-results affordance: icon + title + description + actions.\n * Pass any subset; the component centers everything vertically.\n */\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(\n ({ icon, title, description, actions, size = 'md', className, ...props }, ref) => {\n const sz = SIZE[size];\n return (\n <div\n ref={ref}\n className={cn('flex flex-col items-center text-center', sz.wrap, className)}\n {...props}\n >\n {icon && (\n <div\n className={cn(\n 'flex items-center justify-center rounded-full bg-muted text-muted-foreground',\n sz.iconBox,\n )}\n >\n {icon}\n </div>\n )}\n <Heading level={3} size={size === 'sm' ? 'md' : size === 'lg' ? 'xl' : 'lg'}>\n {title}\n </Heading>\n {description && <Text color=\"muted\" size={size === 'lg' ? 'md' : 'sm'}>{description}</Text>}\n {actions && <div className=\"mt-2 flex items-center gap-2\">{actions}</div>}\n </div>\n );\n },\n);\nEmptyState.displayName = 'EmptyState';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { TrendingDown, TrendingUp } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { Heading } from '../heading/Heading';\nimport { Text } from '../text/Text';\n\nexport interface StatProps extends ComponentPropsWithoutRef<'div'> {\n /** Label above the value. */\n label: ReactNode;\n /** Primary value (large). */\n value: ReactNode;\n /** Optional trend — positive = up/green, negative = down/red. */\n trend?: { value: number; label?: ReactNode };\n /** Optional helper / supporting text below. */\n helper?: ReactNode;\n /** Visual size. Default `md`. */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst VALUE_SIZE: Record<NonNullable<StatProps['size']>, '2xl' | '3xl' | '4xl'> = {\n sm: '2xl',\n md: '3xl',\n lg: '4xl',\n};\n\n/**\n * Single metric tile — label + big value + optional trend + helper. Use\n * inside dashboards / KPI grids.\n */\nexport const Stat = forwardRef<HTMLDivElement, StatProps>(\n ({ label, value, trend, helper, size = 'md', className, ...props }, ref) => {\n const trendUp = trend ? trend.value >= 0 : false;\n return (\n <div ref={ref} className={cn('flex flex-col gap-1', className)} {...props}>\n <Text size=\"sm\" color=\"muted\">{label}</Text>\n <Heading level={3} size={VALUE_SIZE[size]} weight=\"bold\">{value}</Heading>\n {(trend || helper) && (\n <div className=\"mt-1 flex items-center gap-2\">\n {trend && (\n <span\n className={cn(\n 'inline-flex items-center gap-0.5 text-xs font-medium',\n trendUp ? 'text-success' : 'text-destructive',\n )}\n >\n <Icon icon={trendUp ? TrendingUp : TrendingDown} size={12} />\n {trend.value > 0 ? '+' : ''}{trend.value}%\n {trend.label && <span className=\"text-muted-foreground\"> {trend.label}</span>}\n </span>\n )}\n {helper && !trend && <Text size=\"xs\" color=\"muted\">{helper}</Text>}\n </div>\n )}\n </div>\n );\n },\n);\nStat.displayName = 'Stat';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { Check, Copy } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { useClipboard } from '../../hooks';\nimport { Code } from '../code/Code';\n\nexport interface SnippetProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** Code text to display + copy. */\n text: string;\n /** Visual variant — `inline` (single line) or `block` (multi-line). Default `inline`. */\n variant?: 'inline' | 'block';\n}\n\n/**\n * Code text with a built-in copy button. Inline variant for one-liners,\n * block variant for multi-line snippets. Copy logic uses the L1\n * `useClipboard` hook directly (Snippet stays in display, can't import the\n * actions/CopyButton component).\n */\nexport const Snippet = forwardRef<HTMLDivElement, SnippetProps>(\n ({ text, variant = 'inline', className, ...props }, ref) => {\n const { copied, copy } = useClipboard();\n return (\n <div\n ref={ref}\n className={cn(\n 'group relative inline-flex w-full items-start',\n variant === 'inline' ? 'gap-2' : 'flex-col gap-0',\n className,\n )}\n {...props}\n >\n <Code variant={variant} className=\"flex-1 pr-10\">{text}</Code>\n <button\n type=\"button\"\n aria-label={copied ? 'Copied' : 'Copy'}\n onClick={() => void copy(text)}\n className={cn(\n 'absolute right-2 grid h-7 w-7 place-items-center rounded text-muted-foreground transition-colors hover:bg-background hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n variant === 'inline' ? 'top-1/2 -translate-y-1/2' : 'top-2',\n )}\n >\n <Icon icon={copied ? Check : Copy} size={14} />\n </button>\n </div>\n );\n },\n);\nSnippet.displayName = 'Snippet';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface NotificationDotProps extends ComponentPropsWithoutRef<'span'> {\n tone?: 'destructive' | 'success' | 'warning' | 'info' | 'primary' | 'neutral';\n size?: 'xs' | 'sm' | 'md';\n /** Adds a pulsing ring around the dot. */\n pulse?: boolean;\n /** When set, the dot is positioned absolutely relative to its parent. */\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';\n}\n\nconst TONE: Record<NonNullable<NotificationDotProps['tone']>, string> = {\n destructive: 'bg-destructive',\n success: 'bg-success',\n warning: 'bg-warning',\n info: 'bg-info',\n primary: 'bg-primary',\n neutral: 'bg-muted-foreground',\n};\n\nconst SIZE: Record<NonNullable<NotificationDotProps['size']>, string> = {\n xs: 'h-1.5 w-1.5',\n sm: 'h-2 w-2',\n md: 'h-2.5 w-2.5',\n};\n\nconst POS: Record<NonNullable<NotificationDotProps['position']>, string> = {\n 'top-right': 'absolute -top-0.5 -right-0.5',\n 'top-left': 'absolute -top-0.5 -left-0.5',\n 'bottom-right': 'absolute -bottom-0.5 -right-0.5',\n 'bottom-left': 'absolute -bottom-0.5 -left-0.5',\n};\n\n/**\n * Tiny colored dot — unread/notification indicator. Pass `position` to\n * absolutely-place over a parent (e.g. on an Avatar or IconButton).\n */\nexport const NotificationDot = forwardRef<HTMLSpanElement, NotificationDotProps>(\n ({ tone = 'destructive', size = 'sm', pulse, position, className, ...props }, ref) => (\n <span\n ref={ref}\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex rounded-full ring-2 ring-background',\n TONE[tone],\n SIZE[size],\n position && POS[position],\n pulse && 'after:absolute after:inset-0 after:animate-ping after:rounded-full after:opacity-75 after:content-[\"\"] ' + TONE[tone],\n className,\n )}\n {...props}\n />\n ),\n);\nNotificationDot.displayName = 'NotificationDot';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { Badge, type BadgeProps } from '../badge/Badge';\n\nexport interface CountBadgeProps extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {\n /** The numeric count. */\n value: number;\n /** Cap value — shows \"max+\" when exceeded. Default 99. */\n max?: number;\n /** Hide entirely when count is 0. Default true. */\n hideZero?: boolean;\n variant?: BadgeProps['variant'];\n}\n\n/**\n * Numeric badge for notification / inbox counts. Displays \"{value}\" or\n * \"{max}+\" once the cap is exceeded. Hides when `value === 0` unless\n * `hideZero={false}`.\n */\nexport const CountBadge = forwardRef<HTMLSpanElement, CountBadgeProps>(\n ({ value, max = 99, hideZero = true, variant = 'danger', className, ...props }, ref) => {\n if (value === 0 && hideZero) return null;\n const display = value > max ? `${max}+` : `${value}`;\n return (\n <Badge\n ref={ref}\n variant={variant}\n size=\"sm\"\n className={cn('min-w-5 justify-center px-1.5', className)}\n {...props}\n >\n {display}\n </Badge>\n );\n },\n);\nCountBadge.displayName = 'CountBadge';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface StatusProps extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {\n tone?: 'success' | 'warning' | 'destructive' | 'info' | 'neutral';\n /** Optional pulsing ring around the dot. */\n pulse?: boolean;\n children?: ReactNode;\n}\n\nconst TONE: Record<NonNullable<StatusProps['tone']>, string> = {\n success: 'bg-success',\n warning: 'bg-warning',\n destructive: 'bg-destructive',\n info: 'bg-info',\n neutral: 'bg-muted-foreground',\n};\n\n/**\n * Colored dot + text label — server status, online presence, build state.\n * Use `Status` (with text) for labelled indicators; `NotificationDot` for\n * the bare positioned dot.\n */\nexport const Status = forwardRef<HTMLSpanElement, StatusProps>(\n ({ tone = 'success', pulse, className, children, ...props }, ref) => (\n <span\n ref={ref}\n className={cn('inline-flex items-center gap-2 text-sm text-foreground', className)}\n {...props}\n >\n <span className=\"relative inline-flex\">\n <span className={cn('inline-block h-2 w-2 rounded-full', TONE[tone])} />\n {pulse && (\n <span\n className={cn(\n 'absolute inset-0 inline-block rounded-full opacity-75 animate-ping',\n TONE[tone],\n )}\n />\n )}\n </span>\n {children}\n </span>\n ),\n);\nStatus.displayName = 'Status';\n","import { forwardRef, Fragment, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { Kbd } from '../kbd/Kbd';\n\nexport interface KeyboardShortcutProps extends ComponentPropsWithoutRef<'span'> {\n /** Keys in order — e.g. `['⌘', 'K']` or `['Ctrl', 'Shift', 'P']`. */\n keys: string[];\n /** Connector between keys. Default `'+'`; pass `' '` for spaced keys. */\n separator?: string;\n}\n\n/**\n * Render a sequence of `Kbd` keys with connectors between them — e.g.\n * `<KeyboardShortcut keys={['⌘', 'K']} />` → ⌘ + K.\n */\nexport const KeyboardShortcut = forwardRef<HTMLSpanElement, KeyboardShortcutProps>(\n ({ keys, separator = '+', className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn('inline-flex items-center gap-1 text-muted-foreground', className)}\n {...props}\n >\n {keys.map((key, i) => (\n <Fragment key={i}>\n {i > 0 && <span aria-hidden=\"true\">{separator}</span>}\n <Kbd>{key}</Kbd>\n </Fragment>\n ))}\n </span>\n ),\n);\nKeyboardShortcut.displayName = 'KeyboardShortcut';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface DescriptionListItem {\n label: ReactNode;\n value: ReactNode;\n}\n\nexport interface DescriptionListProps extends Omit<ComponentPropsWithoutRef<'dl'>, 'children'> {\n items: DescriptionListItem[];\n /** Layout direction. `inline` renders label/value on the same line; `stacked` puts label above. */\n layout?: 'inline' | 'stacked';\n /** Density between rows. Default `md`. */\n density?: 'sm' | 'md' | 'lg';\n}\n\nconst ROW_GAP: Record<NonNullable<DescriptionListProps['density']>, string> = {\n sm: 'gap-y-1',\n md: 'gap-y-2',\n lg: 'gap-y-3',\n};\n\n/**\n * Semantic `<dl>` for label-value pairs (settings panels, property lists).\n * Inline layout uses a 2-column grid; stacked puts each value below its label.\n */\nexport const DescriptionList = forwardRef<HTMLDListElement, DescriptionListProps>(\n ({ items, layout = 'inline', density = 'md', className, ...props }, ref) => (\n <dl\n ref={ref}\n className={cn(\n 'text-sm',\n layout === 'inline' ? 'grid grid-cols-[max-content_1fr] gap-x-4' : 'flex flex-col gap-1',\n ROW_GAP[density],\n className,\n )}\n {...props}\n >\n {items.map((item, i) => (\n <div key={i} className={cn('contents', layout === 'stacked' && 'flex flex-col gap-0.5')}>\n <dt className=\"text-muted-foreground\">{item.label}</dt>\n <dd className=\"text-foreground\">{item.value}</dd>\n </div>\n ))}\n </dl>\n ),\n);\nDescriptionList.displayName = 'DescriptionList';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface InfoRowProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n label: ReactNode;\n value: ReactNode;\n /** Optional icon rendered before the label. */\n icon?: ReactNode;\n /** Layout: `inline` puts label-value on one line; `stacked` puts value below. Default `inline`. */\n layout?: 'inline' | 'stacked';\n}\n\n/**\n * Single row of label + value, with optional leading icon. Reach for this\n * when you have one or two pairs to show (e.g. inside a Card row); use\n * `DescriptionList` for many pairs.\n */\nexport const InfoRow = forwardRef<HTMLDivElement, InfoRowProps>(\n ({ label, value, icon, layout = 'inline', className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex text-sm',\n layout === 'inline' ? 'items-center justify-between gap-3' : 'flex-col gap-0.5',\n className,\n )}\n {...props}\n >\n <span className=\"inline-flex items-center gap-1.5 text-muted-foreground\">\n {icon}\n {label}\n </span>\n <span className=\"text-foreground\">{value}</span>\n </div>\n ),\n);\nInfoRow.displayName = 'InfoRow';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface BadgeOverlayProps extends ComponentPropsWithoutRef<'div'> {\n /** Element to overlay on (avatar, button, image). */\n children: ReactNode;\n /** Badge content (count, dot, icon). */\n badge: ReactNode;\n /** Position of the badge relative to the wrapper. Default `top-right`. */\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';\n /** Hide badge when truthy (e.g. when count is 0). */\n hidden?: boolean;\n}\n\nconst POS: Record<NonNullable<BadgeOverlayProps['position']>, string> = {\n 'top-right': 'top-0 right-0 -translate-y-1/2 translate-x-1/2',\n 'top-left': 'top-0 left-0 -translate-y-1/2 -translate-x-1/2',\n 'bottom-right': 'bottom-0 right-0 translate-y-1/2 translate-x-1/2',\n 'bottom-left': 'bottom-0 left-0 translate-y-1/2 -translate-x-1/2',\n};\n\n/**\n * Decorator that overlays a badge / dot on top of any child. Use to\n * attach `CountBadge`, `NotificationDot`, or arbitrary `Badge` to an\n * `Avatar`, `IconButton`, or icon.\n */\nexport const BadgeOverlay = forwardRef<HTMLDivElement, BadgeOverlayProps>(\n ({ children, badge, position = 'top-right', hidden, className, ...props }, ref) => (\n <div ref={ref} className={cn('relative inline-flex', className)} {...props}>\n {children}\n {!hidden && (\n <span className={cn('absolute z-10', POS[position])}>{badge}</span>\n )}\n </div>\n ),\n);\nBadgeOverlay.displayName = 'BadgeOverlay';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { Heading } from '../heading/Heading';\nimport { Text } from '../text/Text';\n\nexport interface SectionHeaderProps extends Omit<ComponentPropsWithoutRef<'header'>, 'title'> {\n /** Heading copy. */\n title: ReactNode;\n /** Optional description below the title. */\n description?: ReactNode;\n /** Right-aligned actions slot — typically Button(s). Cross-domain by design,\n * passed as content. */\n actions?: ReactNode;\n /** Heading element / size. Default level 2, size lg. */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: 'md' | 'lg' | 'xl' | '2xl';\n /** Add a bottom border. Default true. */\n bordered?: boolean;\n}\n\n/**\n * Section / page header — title + optional description + actions row.\n * Wraps `Heading` (semantic) + `Text` (description) + slot for actions.\n */\nexport const SectionHeader = forwardRef<HTMLElement, SectionHeaderProps>(\n (\n { title, description, actions, level = 2, size = 'lg', bordered = true, className, ...props },\n ref,\n ) => (\n <header\n ref={ref}\n className={cn(\n 'flex items-start justify-between gap-4 pb-3',\n bordered && 'border-b border-border',\n className,\n )}\n {...props}\n >\n <div className=\"flex min-w-0 flex-col gap-1\">\n <Heading level={level} size={size}>{title}</Heading>\n {description && <Text size=\"sm\" color=\"muted\">{description}</Text>}\n </div>\n {actions && <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>}\n </header>\n ),\n);\nSectionHeader.displayName = 'SectionHeader';\n","import { Fragment, forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { Mark } from '../mark/Mark';\n\nexport interface HighlightProps extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {\n /** Source text to render. */\n children: string;\n /** Substring(s) to highlight. Match is case-insensitive. */\n query: string | string[];\n /** When `true`, only highlights whole-word matches. Default `false`. */\n wholeWord?: boolean;\n}\n\nfunction escape(re: string) {\n return re.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Wraps each occurrence of `query` (or any of `query[]`) inside the\n * `children` text in a `<Mark>`. Case-insensitive; pass `wholeWord` to\n * avoid partial matches.\n */\nexport const Highlight = forwardRef<HTMLSpanElement, HighlightProps>(\n ({ children, query, wholeWord, className, ...props }, ref) => {\n const queries = (Array.isArray(query) ? query : [query]).filter(Boolean);\n if (queries.length === 0) return <span ref={ref} className={cn(className)} {...props}>{children}</span>;\n const pattern = queries.map(escape).join('|');\n const regex = new RegExp(wholeWord ? `\\\\b(${pattern})\\\\b` : `(${pattern})`, 'gi');\n const parts = children.split(regex);\n\n const nodes: ReactNode[] = [];\n parts.forEach((part, i) => {\n if (queries.some((q) => part.toLowerCase() === q.toLowerCase())) {\n nodes.push(<Mark key={i}>{part}</Mark>);\n } else if (part) {\n nodes.push(<Fragment key={i}>{part}</Fragment>);\n }\n });\n\n return (\n <span ref={ref} className={cn(className)} {...props}>\n {nodes}\n </span>\n );\n },\n);\nHighlight.displayName = 'Highlight';\n","import {\n createContext,\n forwardRef,\n useContext,\n useId,\n useMemo,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn, dataAttr } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Slot } from '../../primitives';\n\ninterface CollapsibleContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n contentId: string;\n triggerId: string;\n disabled: boolean;\n}\n\nconst CollapsibleContext = createContext<CollapsibleContextValue | null>(null);\n\nfunction useCollapsibleContext() {\n const ctx = useContext(CollapsibleContext);\n if (!ctx) throw new Error('Collapsible.* must be used inside <Collapsible>');\n return ctx;\n}\n\nexport interface CollapsibleProps extends HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n}\n\nexport const Collapsible = forwardRef<HTMLDivElement, CollapsibleProps>(function Collapsible(\n { open: openProp, defaultOpen = false, onOpenChange, disabled = false, className, children, ...rest },\n ref,\n) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const contentId = useId();\n const triggerId = useId();\n\n const ctx = useMemo<CollapsibleContextValue>(\n () => ({ open, setOpen, contentId, triggerId, disabled }),\n [open, setOpen, contentId, triggerId, disabled],\n );\n\n return (\n <CollapsibleContext.Provider value={ctx}>\n <div\n ref={ref}\n data-state={open ? 'open' : 'closed'}\n data-disabled={dataAttr(disabled)}\n className={className}\n {...rest}\n >\n {children}\n </div>\n </CollapsibleContext.Provider>\n );\n});\n\nexport interface CollapsibleTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const CollapsibleTrigger = forwardRef<HTMLButtonElement, CollapsibleTriggerProps>(\n function CollapsibleTrigger({ asChild, onClick, children, ...rest }, ref) {\n const ctx = useCollapsibleContext();\n const Component = asChild ? Slot : 'button';\n return (\n <Component\n ref={ref as never}\n id={ctx.triggerId}\n type=\"button\"\n aria-expanded={ctx.open}\n aria-controls={ctx.contentId}\n data-state={ctx.open ? 'open' : 'closed'}\n data-disabled={dataAttr(ctx.disabled)}\n disabled={ctx.disabled}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented || ctx.disabled) return;\n ctx.setOpen(!ctx.open);\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nexport interface CollapsibleContentProps extends HTMLAttributes<HTMLDivElement> {\n /** Render hidden content but keep it in the DOM (for animations). */\n forceMount?: boolean;\n children: ReactNode;\n}\n\nexport const CollapsibleContent = forwardRef<HTMLDivElement, CollapsibleContentProps>(\n function CollapsibleContent({ forceMount, className, children, ...rest }, ref) {\n const ctx = useCollapsibleContext();\n if (!ctx.open && !forceMount) return null;\n return (\n <div\n ref={ref}\n id={ctx.contentId}\n role=\"region\"\n aria-labelledby={ctx.triggerId}\n data-state={ctx.open ? 'open' : 'closed'}\n hidden={!ctx.open}\n className={cn(\n 'overflow-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\ntype CollapsibleComponent = typeof Collapsible & {\n Trigger: typeof CollapsibleTrigger;\n Content: typeof CollapsibleContent;\n};\n\n(Collapsible as CollapsibleComponent).Trigger = CollapsibleTrigger;\n(Collapsible as CollapsibleComponent).Content = CollapsibleContent;\n\nexport default Collapsible as CollapsibleComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { ChevronDown } from 'lucide-react';\nimport { cn, dataAttr } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { RovingFocusGroup, useRovingFocusItem } from '../../primitives';\n\ninterface AccordionContextValue {\n isOpen: (value: string) => boolean;\n toggle: (value: string) => void;\n disabled: boolean;\n}\n\nconst AccordionContext = createContext<AccordionContextValue | null>(null);\n\nfunction useAccordionContext() {\n const ctx = useContext(AccordionContext);\n if (!ctx) throw new Error('Accordion.* must be used inside <Accordion>');\n return ctx;\n}\n\ninterface AccordionItemContextValue {\n value: string;\n open: boolean;\n contentId: string;\n triggerId: string;\n disabled: boolean;\n}\n\nconst AccordionItemContext = createContext<AccordionItemContextValue | null>(null);\n\nfunction useAccordionItemContext() {\n const ctx = useContext(AccordionItemContext);\n if (!ctx) throw new Error('Accordion.Trigger / Content must be used inside <Accordion.Item>');\n return ctx;\n}\n\ntype SingleProps = {\n type?: 'single';\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n collapsible?: boolean;\n};\n\ntype MultipleProps = {\n type: 'multiple';\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n collapsible?: never;\n};\n\nexport type AccordionProps = HTMLAttributes<HTMLDivElement> &\n (SingleProps | MultipleProps) & {\n disabled?: boolean;\n };\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(\n props,\n ref,\n) {\n const {\n type = 'single',\n value,\n defaultValue,\n onValueChange,\n collapsible = false,\n disabled = false,\n className,\n children,\n ...rest\n } = props as AccordionProps & {\n type?: 'single' | 'multiple';\n value?: string | string[];\n defaultValue?: string | string[];\n onValueChange?: ((v: string) => void) | ((v: string[]) => void);\n collapsible?: boolean;\n };\n\n const initial = defaultValue ?? (type === 'multiple' ? [] : '');\n const [current, setCurrent] = useControlled<string | string[]>({\n controlled: value,\n default: initial,\n onChange: onValueChange as (v: string | string[]) => void,\n });\n\n const isOpen = useCallback(\n (val: string) => (Array.isArray(current) ? current.includes(val) : current === val),\n [current],\n );\n\n const toggle = useCallback(\n (val: string) => {\n if (type === 'multiple') {\n const arr = Array.isArray(current) ? current : [];\n setCurrent(arr.includes(val) ? arr.filter((v) => v !== val) : [...arr, val]);\n } else {\n if (current === val) {\n if (collapsible) setCurrent('');\n } else {\n setCurrent(val);\n }\n }\n },\n [collapsible, current, setCurrent, type],\n );\n\n const ctx = useMemo<AccordionContextValue>(\n () => ({ isOpen, toggle, disabled }),\n [isOpen, toggle, disabled],\n );\n\n return (\n <AccordionContext.Provider value={ctx}>\n <RovingFocusGroup\n ref={ref as never}\n orientation=\"vertical\"\n loop\n className={cn('flex flex-col', className)}\n {...rest}\n >\n {children}\n </RovingFocusGroup>\n </AccordionContext.Provider>\n );\n});\n\nexport interface AccordionItemProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n disabled?: boolean;\n children: ReactNode;\n}\n\nexport const AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(\n function AccordionItem({ value, disabled = false, className, children, ...rest }, ref) {\n const accordion = useAccordionContext();\n const open = accordion.isOpen(value);\n const contentId = useId();\n const triggerId = useId();\n const itemDisabled = disabled || accordion.disabled;\n\n const itemCtx = useMemo<AccordionItemContextValue>(\n () => ({ value, open, contentId, triggerId, disabled: itemDisabled }),\n [value, open, contentId, triggerId, itemDisabled],\n );\n\n return (\n <AccordionItemContext.Provider value={itemCtx}>\n <div\n ref={ref}\n data-state={open ? 'open' : 'closed'}\n data-disabled={dataAttr(itemDisabled)}\n className={cn('border-b border-border', className)}\n {...rest}\n >\n {children}\n </div>\n </AccordionItemContext.Provider>\n );\n },\n);\n\nexport interface AccordionTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: ReactNode;\n}\n\nexport const AccordionTrigger = forwardRef<HTMLButtonElement, AccordionTriggerProps>(\n function AccordionTrigger({ className, onClick, children, ...rest }, ref) {\n const accordion = useAccordionContext();\n const item = useAccordionItemContext();\n const roving = useRovingFocusItem();\n return (\n <h3 className=\"flex\">\n <button\n ref={(node) => {\n roving.ref(node);\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n id={item.triggerId}\n type=\"button\"\n aria-expanded={item.open}\n aria-controls={item.contentId}\n data-state={item.open ? 'open' : 'closed'}\n data-disabled={dataAttr(item.disabled)}\n disabled={item.disabled}\n tabIndex={roving.tabIndex}\n onFocus={roving.onFocus}\n onKeyDown={roving.onKeyDown}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || item.disabled) return;\n accordion.toggle(item.value);\n }}\n className={cn(\n 'flex w-full items-center justify-between gap-2 px-3 py-3 text-left text-sm font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...rest}\n >\n <span className=\"flex-1\">{children}</span>\n <ChevronDown\n className={cn(\n 'h-4 w-4 shrink-0 text-muted-foreground transition-transform',\n item.open && 'rotate-180',\n )}\n />\n </button>\n </h3>\n );\n },\n);\n\nexport interface AccordionContentProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const AccordionContent = forwardRef<HTMLDivElement, AccordionContentProps>(\n function AccordionContent({ className, children, ...rest }, ref) {\n const item = useAccordionItemContext();\n if (!item.open) return null;\n return (\n <div\n ref={ref}\n id={item.contentId}\n role=\"region\"\n aria-labelledby={item.triggerId}\n data-state=\"open\"\n className={cn('overflow-hidden px-3 pb-3 text-sm text-foreground', className)}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\ntype AccordionComponent = typeof Accordion & {\n Item: typeof AccordionItem;\n Trigger: typeof AccordionTrigger;\n Content: typeof AccordionContent;\n};\n\n(Accordion as AccordionComponent).Item = AccordionItem;\n(Accordion as AccordionComponent).Trigger = AccordionTrigger;\n(Accordion as AccordionComponent).Content = AccordionContent;\n\nexport default Accordion as AccordionComponent;\n","import {\n createContext,\n forwardRef,\n useContext,\n useId,\n useMemo,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn, dataAttr } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { RovingFocusGroup, useRovingFocusItem } from '../../primitives';\n\ninterface TabsContextValue {\n value: string;\n setValue: (value: string) => void;\n orientation: 'horizontal' | 'vertical';\n activationMode: 'automatic' | 'manual';\n baseId: string;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nfunction useTabsContext() {\n const ctx = useContext(TabsContext);\n if (!ctx) throw new Error('Tabs.* must be used inside <Tabs>');\n return ctx;\n}\n\nexport interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue'> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n orientation?: 'horizontal' | 'vertical';\n activationMode?: 'automatic' | 'manual';\n}\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n {\n value,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n activationMode = 'automatic',\n className,\n children,\n ...rest\n },\n ref,\n) {\n const [active, setActive] = useControlled<string>({\n controlled: value,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const baseId = useId();\n\n const ctx = useMemo<TabsContextValue>(\n () => ({ value: active, setValue: setActive, orientation, activationMode, baseId }),\n [active, setActive, orientation, activationMode, baseId],\n );\n\n return (\n <TabsContext.Provider value={ctx}>\n <div\n ref={ref}\n data-orientation={orientation}\n className={cn(\n orientation === 'vertical' ? 'flex gap-2' : 'flex flex-col gap-2',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </TabsContext.Provider>\n );\n});\n\nexport interface TabsListProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const TabsList = forwardRef<HTMLDivElement, TabsListProps>(function TabsList(\n { className, children, ...rest },\n ref,\n) {\n const ctx = useTabsContext();\n return (\n <RovingFocusGroup\n ref={ref as never}\n orientation={ctx.orientation}\n loop\n role=\"tablist\"\n aria-orientation={ctx.orientation}\n data-orientation={ctx.orientation}\n className={cn(\n 'inline-flex border-border',\n ctx.orientation === 'vertical' ? 'flex-col border-r' : 'flex-row border-b',\n className,\n )}\n {...rest}\n >\n {children}\n </RovingFocusGroup>\n );\n});\n\nexport interface TabsTabProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {\n value: string;\n disabled?: boolean;\n}\n\nexport const TabsTab = forwardRef<HTMLButtonElement, TabsTabProps>(function TabsTab(\n { value, disabled = false, className, onClick, onFocus, children, ...rest },\n ref,\n) {\n const ctx = useTabsContext();\n const roving = useRovingFocusItem();\n const selected = ctx.value === value;\n const tabId = `${ctx.baseId}-tab-${value}`;\n const panelId = `${ctx.baseId}-panel-${value}`;\n\n return (\n <button\n ref={(node) => {\n roving.ref(node);\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n id={tabId}\n role=\"tab\"\n type=\"button\"\n aria-selected={selected}\n aria-controls={panelId}\n data-state={selected ? 'active' : 'inactive'}\n data-disabled={dataAttr(disabled)}\n tabIndex={roving.tabIndex}\n disabled={disabled}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n ctx.setValue(value);\n }}\n onFocus={(e) => {\n onFocus?.(e);\n roving.onFocus();\n if (ctx.activationMode === 'automatic' && !disabled) {\n ctx.setValue(value);\n }\n }}\n onKeyDown={roving.onKeyDown}\n className={cn(\n 'inline-flex items-center justify-center gap-2 px-4 py-2 text-sm font-medium text-muted-foreground transition-colors',\n 'hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'data-[state=active]:text-foreground data-[state=active]:border-primary',\n ctx.orientation === 'vertical'\n ? 'border-r-2 border-transparent data-[state=active]:border-primary'\n : 'border-b-2 border-transparent data-[state=active]:border-primary',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...rest}\n >\n {children}\n </button>\n );\n});\n\nexport interface TabsPanelProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n children: ReactNode;\n}\n\nexport const TabsPanel = forwardRef<HTMLDivElement, TabsPanelProps>(function TabsPanel(\n { value, className, children, ...rest },\n ref,\n) {\n const ctx = useTabsContext();\n if (ctx.value !== value) return null;\n const tabId = `${ctx.baseId}-tab-${value}`;\n const panelId = `${ctx.baseId}-panel-${value}`;\n return (\n <div\n ref={ref}\n id={panelId}\n role=\"tabpanel\"\n aria-labelledby={tabId}\n tabIndex={0}\n className={cn(\n 'flex-1 outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\ntype TabsComponent = typeof Tabs & {\n List: typeof TabsList;\n Tab: typeof TabsTab;\n Panel: typeof TabsPanel;\n};\n\n(Tabs as TabsComponent).List = TabsList;\n(Tabs as TabsComponent).Tab = TabsTab;\n(Tabs as TabsComponent).Panel = TabsPanel;\n\nexport default Tabs as TabsComponent;\n","import { tv, type VariantProps } from '../../utils';\n\nexport const listVariants = tv({\n base: 'list-outside',\n variants: {\n marker: {\n none: 'list-none pl-0',\n disc: 'list-disc pl-5',\n decimal: 'list-decimal pl-5',\n check: 'list-none pl-0',\n },\n spacing: {\n tight: '[&>li]:py-0.5',\n normal: '[&>li]:py-1',\n loose: '[&>li]:py-2',\n },\n },\n defaultVariants: {\n marker: 'none',\n spacing: 'normal',\n },\n});\n\nexport const listItemVariants = tv({\n base: 'flex items-start gap-3 text-sm text-foreground',\n});\n\nexport type ListVariants = VariantProps<typeof listVariants>;\n","import { forwardRef, type HTMLAttributes, type LiHTMLAttributes, type ReactNode } from 'react';\nimport { Check } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { listItemVariants, listVariants, type ListVariants } from './List.variants';\n\nexport interface ListProps\n extends Omit<HTMLAttributes<HTMLUListElement | HTMLOListElement>, 'type'>,\n ListVariants {\n ordered?: boolean;\n children: ReactNode;\n}\n\nexport const List = forwardRef<HTMLUListElement | HTMLOListElement, ListProps>(function List(\n { ordered, marker, spacing, className, children, ...rest },\n ref,\n) {\n const Component = (ordered ? 'ol' : 'ul') as 'ol';\n return (\n <Component\n ref={ref as React.Ref<HTMLOListElement>}\n className={cn(listVariants({ marker, spacing }), className)}\n {...(rest as HTMLAttributes<HTMLOListElement>)}\n >\n {children}\n </Component>\n );\n});\n\nexport interface ListItemProps extends LiHTMLAttributes<HTMLLIElement> {\n /** Leading slot — icon, avatar, marker. */\n leading?: ReactNode;\n /** Trailing slot — badge, chevron, status. */\n trailing?: ReactNode;\n /** Auto-render a check marker if the parent List uses `marker=\"check\"`. */\n showCheckMarker?: boolean;\n children: ReactNode;\n}\n\nexport const ListItem = forwardRef<HTMLLIElement, ListItemProps>(function ListItem(\n { leading, trailing, showCheckMarker, className, children, ...rest },\n ref,\n) {\n return (\n <li ref={ref} className={cn(listItemVariants(), className)} {...rest}>\n {showCheckMarker && (\n <span aria-hidden=\"true\" className=\"mt-0.5 shrink-0 text-primary\">\n <Check className=\"h-4 w-4\" />\n </span>\n )}\n {leading && (\n <span aria-hidden=\"true\" className=\"mt-0.5 shrink-0 text-muted-foreground\">\n {leading}\n </span>\n )}\n <span className=\"flex-1\">{children}</span>\n {trailing && <span className=\"shrink-0 text-muted-foreground\">{trailing}</span>}\n </li>\n );\n});\n\ntype ListComponent = typeof List & {\n Item: typeof ListItem;\n};\n\n(List as ListComponent).Item = ListItem;\n\nexport default List as ListComponent;\n","import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useContext,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\n\nexport type TimelineStatus =\n | 'default'\n | 'primary'\n | 'success'\n | 'warning'\n | 'destructive'\n | 'info';\n\ninterface TimelineContextValue {\n align: 'left' | 'right';\n total: number;\n}\n\nconst TimelineContext = createContext<TimelineContextValue | null>(null);\n\nexport interface TimelineProps extends HTMLAttributes<HTMLOListElement> {\n align?: 'left' | 'right';\n children: ReactNode;\n}\n\nexport const Timeline = forwardRef<HTMLOListElement, TimelineProps>(function Timeline(\n { align = 'left', className, children, ...rest },\n ref,\n) {\n const total = Children.toArray(children).filter(isValidElement).length;\n return (\n <TimelineContext.Provider value={{ align, total }}>\n <ol\n ref={ref}\n className={cn(\n 'flex list-none flex-col',\n align === 'right' && 'items-end',\n className,\n )}\n {...rest}\n >\n {Children.map(children, (child, idx) => {\n if (!isValidElement(child)) return child;\n return (idx === total - 1\n ? // mark the last item so the connector line is suppressed\n { ...(child as ReactElement<{ 'data-last'?: string }>), props: { ...(child.props as Record<string, unknown>), 'data-last': '' } }\n : child) as ReactNode;\n })}\n </ol>\n </TimelineContext.Provider>\n );\n});\n\nconst STATUS_BG: Record<TimelineStatus, string> = {\n default: 'bg-muted text-muted-foreground border-border',\n primary: 'bg-primary text-primary-foreground border-primary',\n success: 'bg-success text-success-foreground border-success',\n warning: 'bg-warning text-warning-foreground border-warning',\n destructive: 'bg-destructive text-destructive-foreground border-destructive',\n info: 'bg-info text-info-foreground border-info',\n};\n\nexport interface TimelineItemProps extends HTMLAttributes<HTMLLIElement> {\n status?: TimelineStatus;\n icon?: ReactNode;\n children: ReactNode;\n}\n\nexport const TimelineItem = forwardRef<HTMLLIElement, TimelineItemProps>(function TimelineItem(\n { status = 'default', icon, className, children, ...rest },\n ref,\n) {\n const ctx = useContext(TimelineContext);\n const isLast = (rest as { 'data-last'?: string })['data-last'] !== undefined;\n\n return (\n <li\n ref={ref}\n data-status={status}\n className={cn('relative flex gap-3 pb-6 last:pb-0', className)}\n {...rest}\n >\n {/* Marker + connector column */}\n <div className=\"relative flex flex-col items-center\">\n <span\n aria-hidden=\"true\"\n className={cn(\n 'relative z-10 grid h-7 w-7 place-items-center rounded-full border-2',\n STATUS_BG[status],\n )}\n >\n {icon ?? <span className=\"h-1.5 w-1.5 rounded-full bg-current\" />}\n </span>\n {!isLast && (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'absolute left-1/2 top-7 h-full w-px -translate-x-1/2 bg-border',\n )}\n />\n )}\n </div>\n {/* Content */}\n <div className={cn('flex-1 pt-0.5', ctx?.align === 'right' && 'order-first text-right')}>\n {children}\n </div>\n </li>\n );\n});\n\nexport interface TimelineTitleProps extends HTMLAttributes<HTMLHeadingElement> {\n children: ReactNode;\n}\n\nexport function TimelineTitle({ className, children, ...rest }: TimelineTitleProps) {\n return (\n <h4 className={cn('text-sm font-medium text-foreground', className)} {...rest}>\n {children}\n </h4>\n );\n}\n\nexport interface TimelineDescriptionProps extends HTMLAttributes<HTMLParagraphElement> {\n children: ReactNode;\n}\n\nexport function TimelineDescription({\n className,\n children,\n ...rest\n}: TimelineDescriptionProps) {\n return (\n <p className={cn('text-xs text-muted-foreground', className)} {...rest}>\n {children}\n </p>\n );\n}\n\ntype TimelineComponent = typeof Timeline & {\n Item: typeof TimelineItem;\n Title: typeof TimelineTitle;\n Description: typeof TimelineDescription;\n};\n\n(Timeline as TimelineComponent).Item = TimelineItem;\n(Timeline as TimelineComponent).Title = TimelineTitle;\n(Timeline as TimelineComponent).Description = TimelineDescription;\n\nexport default Timeline as TimelineComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { ChevronRight } from 'lucide-react';\nimport { cn, dataAttr } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { RovingFocusGroup, useRovingFocusItem } from '../../primitives';\n\ninterface TreeContextValue {\n selectedValue: string | null;\n setSelectedValue: (value: string) => void;\n expanded: Set<string>;\n toggleExpanded: (value: string) => void;\n}\n\nconst TreeContext = createContext<TreeContextValue | null>(null);\n\nfunction useTreeContext() {\n const ctx = useContext(TreeContext);\n if (!ctx) throw new Error('Tree.* must be used inside <Tree>');\n return ctx;\n}\n\ninterface TreeLevelContextValue {\n level: number;\n}\n\nconst TreeLevelContext = createContext<TreeLevelContextValue>({ level: 1 });\n\nfunction useTreeLevel() {\n return useContext(TreeLevelContext).level;\n}\n\nexport interface TreeProps extends Omit<HTMLAttributes<HTMLUListElement>, 'defaultValue'> {\n selectedValue?: string | null;\n defaultSelectedValue?: string | null;\n onSelectionChange?: (value: string) => void;\n expanded?: string[];\n defaultExpanded?: string[];\n onExpandedChange?: (values: string[]) => void;\n}\n\nexport const Tree = forwardRef<HTMLUListElement, TreeProps>(function Tree(\n {\n selectedValue,\n defaultSelectedValue,\n onSelectionChange,\n expanded,\n defaultExpanded,\n onExpandedChange,\n className,\n children,\n ...rest\n },\n ref,\n) {\n const [selected, setSelected] = useControlled<string | null>({\n controlled: selectedValue,\n default: defaultSelectedValue ?? null,\n onChange: onSelectionChange as ((v: string | null) => void) | undefined,\n });\n const [expandedList, setExpandedList] = useControlled<string[]>({\n controlled: expanded,\n default: defaultExpanded ?? [],\n onChange: onExpandedChange,\n });\n\n const expandedSet = useMemo(() => new Set(expandedList), [expandedList]);\n\n const toggleExpanded = useCallback(\n (value: string) => {\n const next = new Set(expandedSet);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n setExpandedList(Array.from(next));\n },\n [expandedSet, setExpandedList],\n );\n\n const ctx = useMemo<TreeContextValue>(\n () => ({\n selectedValue: selected,\n setSelectedValue: setSelected,\n expanded: expandedSet,\n toggleExpanded,\n }),\n [selected, setSelected, expandedSet, toggleExpanded],\n );\n\n return (\n <TreeContext.Provider value={ctx}>\n <RovingFocusGroup\n ref={ref as never}\n orientation=\"vertical\"\n loop\n role=\"tree\"\n className={cn('flex flex-col text-sm', className)}\n {...(rest as HTMLAttributes<HTMLDivElement>)}\n >\n {children}\n </RovingFocusGroup>\n </TreeContext.Provider>\n );\n});\n\ninterface NodeRowProps {\n level: number;\n selected: boolean;\n expanded?: boolean;\n hasChildren: boolean;\n disabled: boolean;\n onActivate: () => void;\n label: ReactNode;\n}\n\nfunction NodeRow({\n level,\n selected,\n expanded,\n hasChildren,\n disabled,\n onActivate,\n label,\n}: NodeRowProps) {\n const roving = useRovingFocusItem();\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n roving.onKeyDown(e);\n if (e.defaultPrevented || disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onActivate();\n }\n },\n [roving, disabled, onActivate],\n );\n return (\n <div\n ref={roving.ref as never}\n role=\"treeitem\"\n aria-level={level}\n aria-selected={selected || undefined}\n aria-expanded={hasChildren ? expanded : undefined}\n aria-disabled={disabled || undefined}\n data-selected={dataAttr(selected)}\n data-disabled={dataAttr(disabled)}\n tabIndex={roving.tabIndex}\n onFocus={roving.onFocus}\n onKeyDown={handleKeyDown}\n onClick={() => {\n if (!disabled) onActivate();\n }}\n style={{ paddingLeft: `${(level - 1) * 16}px` }}\n className={cn(\n 'flex cursor-pointer items-center gap-1 rounded-sm px-2 py-1 transition-colors',\n 'hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n selected && 'bg-primary-soft text-primary-soft-foreground',\n disabled && 'pointer-events-none opacity-50',\n )}\n >\n {hasChildren ? (\n <ChevronRight\n className={cn(\n 'h-4 w-4 shrink-0 text-muted-foreground transition-transform',\n expanded && 'rotate-90',\n )}\n />\n ) : (\n <span className=\"w-4 shrink-0\" />\n )}\n <span className=\"flex-1 truncate\">{label}</span>\n </div>\n );\n}\n\nexport interface TreeGroupProps extends HTMLAttributes<HTMLLIElement> {\n value: string;\n label: ReactNode;\n disabled?: boolean;\n children: ReactNode;\n}\n\nexport const TreeGroup = forwardRef<HTMLLIElement, TreeGroupProps>(function TreeGroup(\n { value, label, disabled = false, className, children, ...rest },\n ref,\n) {\n const ctx = useTreeContext();\n const level = useTreeLevel();\n const expanded = ctx.expanded.has(value);\n\n return (\n <li\n ref={ref}\n role=\"presentation\"\n data-state={expanded ? 'open' : 'closed'}\n className={cn('list-none', className)}\n {...rest}\n >\n <NodeRow\n level={level}\n selected={false}\n expanded={expanded}\n hasChildren\n disabled={disabled}\n onActivate={() => ctx.toggleExpanded(value)}\n label={label}\n />\n {expanded && (\n <TreeLevelContext.Provider value={{ level: level + 1 }}>\n <ul role=\"group\" className=\"flex flex-col\">\n {children}\n </ul>\n </TreeLevelContext.Provider>\n )}\n </li>\n );\n});\n\nexport interface TreeItemProps extends HTMLAttributes<HTMLLIElement> {\n value: string;\n disabled?: boolean;\n children: ReactNode;\n}\n\nexport const TreeItem = forwardRef<HTMLLIElement, TreeItemProps>(function TreeItem(\n { value, disabled = false, className, children, ...rest },\n ref,\n) {\n const ctx = useTreeContext();\n const level = useTreeLevel();\n const selected = ctx.selectedValue === value;\n\n return (\n <li ref={ref} role=\"presentation\" className={cn('list-none', className)} {...rest}>\n <NodeRow\n level={level}\n selected={selected}\n hasChildren={false}\n disabled={disabled}\n onActivate={() => ctx.setSelectedValue(value)}\n label={children}\n />\n </li>\n );\n});\n\ntype TreeComponent = typeof Tree & {\n Group: typeof TreeGroup;\n Item: typeof TreeItem;\n};\n\n(Tree as TreeComponent).Group = TreeGroup;\n(Tree as TreeComponent).Item = TreeItem;\n\nexport default Tree as TreeComponent;\n","import {\n createContext,\n forwardRef,\n useContext,\n type HTMLAttributes,\n type ReactNode,\n type TableHTMLAttributes,\n type ThHTMLAttributes,\n type TdHTMLAttributes,\n} from 'react';\nimport { cn } from '../../utils';\n\nexport type TableDensity = 'compact' | 'cozy' | 'comfortable';\n\ninterface TableContextValue {\n striped: boolean;\n hoverable: boolean;\n density: TableDensity;\n}\n\nconst TableContext = createContext<TableContextValue>({\n striped: false,\n hoverable: false,\n density: 'cozy',\n});\n\nconst DENSITY_CELL: Record<TableDensity, string> = {\n compact: 'px-2 py-1.5 text-sm',\n cozy: 'px-3 py-2 text-sm',\n comfortable: 'px-4 py-3 text-sm',\n};\n\nexport interface TableProps extends TableHTMLAttributes<HTMLTableElement> {\n striped?: boolean;\n hoverable?: boolean;\n density?: TableDensity;\n bare?: boolean;\n children: ReactNode;\n}\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n { striped = false, hoverable = false, density = 'cozy', bare = false, className, children, ...rest },\n ref,\n) {\n const ctx = { striped, hoverable, density };\n const tableEl = (\n <table\n ref={ref}\n className={cn('w-full caption-bottom border-collapse text-left', className)}\n {...rest}\n >\n {children}\n </table>\n );\n return (\n <TableContext.Provider value={ctx}>\n {bare ? tableEl : (\n <div className=\"relative w-full overflow-x-auto rounded-md border border-border\">\n {tableEl}\n </div>\n )}\n </TableContext.Provider>\n );\n});\n\nexport const TableHead = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n function TableHead({ className, ...rest }, ref) {\n return (\n <thead\n ref={ref}\n className={cn('border-b border-border bg-muted/50 text-xs font-semibold uppercase tracking-wide text-muted-foreground', className)}\n {...rest}\n />\n );\n },\n);\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n function TableBody({ className, ...rest }, ref) {\n const ctx = useContext(TableContext);\n return (\n <tbody\n ref={ref}\n className={cn(\n ctx.striped && '[&>tr:nth-child(even)]:bg-muted/30',\n ctx.hoverable && '[&>tr:hover]:bg-muted',\n className,\n )}\n {...rest}\n />\n );\n },\n);\n\nexport const TableFooter = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n function TableFooter({ className, ...rest }, ref) {\n return (\n <tfoot\n ref={ref}\n className={cn('border-t border-border bg-muted/50 font-medium', className)}\n {...rest}\n />\n );\n },\n);\n\nexport const TableRow = forwardRef<HTMLTableRowElement, HTMLAttributes<HTMLTableRowElement>>(\n function TableRow({ className, ...rest }, ref) {\n return (\n <tr\n ref={ref}\n className={cn('border-b border-border last:border-0 transition-colors data-[selected]:bg-primary-soft', className)}\n {...rest}\n />\n );\n },\n);\n\nexport interface TableHeaderCellProps extends ThHTMLAttributes<HTMLTableCellElement> {\n children?: ReactNode;\n}\n\nexport const TableHeaderCell = forwardRef<HTMLTableCellElement, TableHeaderCellProps>(\n function TableHeaderCell({ className, ...rest }, ref) {\n const ctx = useContext(TableContext);\n return (\n <th\n ref={ref}\n scope=\"col\"\n className={cn(DENSITY_CELL[ctx.density], 'font-semibold text-foreground', className)}\n {...rest}\n />\n );\n },\n);\n\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n children?: ReactNode;\n}\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(function TableCell(\n { className, ...rest },\n ref,\n) {\n const ctx = useContext(TableContext);\n return (\n <td\n ref={ref}\n className={cn(DENSITY_CELL[ctx.density], 'align-middle', className)}\n {...rest}\n />\n );\n});\n\nexport const TableCaption = forwardRef<\n HTMLTableCaptionElement,\n HTMLAttributes<HTMLTableCaptionElement>\n>(function TableCaption({ className, ...rest }, ref) {\n return (\n <caption\n ref={ref}\n className={cn('mt-2 text-sm text-muted-foreground', className)}\n {...rest}\n />\n );\n});\n\ntype TableComponent = typeof Table & {\n Head: typeof TableHead;\n Body: typeof TableBody;\n Footer: typeof TableFooter;\n Row: typeof TableRow;\n HeaderCell: typeof TableHeaderCell;\n Cell: typeof TableCell;\n Caption: typeof TableCaption;\n};\n\n(Table as TableComponent).Head = TableHead;\n(Table as TableComponent).Body = TableBody;\n(Table as TableComponent).Footer = TableFooter;\n(Table as TableComponent).Row = TableRow;\n(Table as TableComponent).HeaderCell = TableHeaderCell;\n(Table as TableComponent).Cell = TableCell;\n(Table as TableComponent).Caption = TableCaption;\n\nexport default Table as TableComponent;\n","import { useMemo, type ReactNode } from 'react';\nimport { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeaderCell,\n TableRow,\n type TableDensity,\n} from '../table';\n\nexport type SortDirection = 'asc' | 'desc';\n\nexport interface DataTableSort {\n columnKey: string;\n direction: SortDirection;\n}\n\nexport interface DataTableColumn<T> {\n key: string;\n header: ReactNode;\n accessor?: (row: T) => unknown;\n cell?: (row: T, index: number) => ReactNode;\n sortable?: boolean;\n align?: 'left' | 'center' | 'right';\n width?: string;\n}\n\nexport interface DataTableProps<T> {\n columns: DataTableColumn<T>[];\n data: T[];\n rowKey?: (row: T, index: number) => string | number;\n onRowClick?: (row: T, index: number) => void;\n sortBy?: DataTableSort | null;\n defaultSortBy?: DataTableSort | null;\n onSortChange?: (sort: DataTableSort | null) => void;\n striped?: boolean;\n hoverable?: boolean;\n density?: TableDensity;\n bare?: boolean;\n emptyContent?: ReactNode;\n className?: string;\n 'aria-label'?: string;\n}\n\nfunction defaultCompare(a: unknown, b: unknown): number {\n if (a === b) return 0;\n if (a === null || a === undefined) return 1;\n if (b === null || b === undefined) return -1;\n if (typeof a === 'number' && typeof b === 'number') return a - b;\n if (a instanceof Date && b instanceof Date) return a.getTime() - b.getTime();\n return String(a).localeCompare(String(b));\n}\n\nexport function DataTable<T>({\n columns,\n data,\n rowKey,\n onRowClick,\n sortBy,\n defaultSortBy,\n onSortChange,\n striped,\n hoverable = !!onRowClick,\n density,\n bare,\n emptyContent = 'No results.',\n className,\n 'aria-label': ariaLabel,\n}: DataTableProps<T>) {\n const [sort, setSort] = useControlled<DataTableSort | null>({\n controlled: sortBy,\n default: defaultSortBy ?? null,\n onChange: onSortChange,\n });\n\n const sortedData = useMemo(() => {\n if (!sort) return data;\n const col = columns.find((c) => c.key === sort.columnKey);\n if (!col?.accessor) return data;\n const accessor = col.accessor;\n const sorted = [...data].sort((a, b) => {\n const r = defaultCompare(accessor(a), accessor(b));\n return sort.direction === 'asc' ? r : -r;\n });\n return sorted;\n }, [data, columns, sort]);\n\n const cycleSort = (columnKey: string) => {\n if (!sort || sort.columnKey !== columnKey) {\n setSort({ columnKey, direction: 'asc' });\n } else if (sort.direction === 'asc') {\n setSort({ columnKey, direction: 'desc' });\n } else {\n setSort(null);\n }\n };\n\n const alignClass = (a: DataTableColumn<T>['align']) =>\n a === 'right' ? 'text-right' : a === 'center' ? 'text-center' : 'text-left';\n\n return (\n <Table\n striped={striped}\n hoverable={hoverable}\n density={density}\n bare={bare}\n className={className}\n aria-label={ariaLabel}\n >\n <TableHead>\n <TableRow>\n {columns.map((col) => {\n const isSorted = sort?.columnKey === col.key;\n const ariaSort = isSorted\n ? sort?.direction === 'asc'\n ? 'ascending'\n : 'descending'\n : col.sortable\n ? 'none'\n : undefined;\n return (\n <TableHeaderCell\n key={col.key}\n aria-sort={ariaSort}\n style={col.width ? { width: col.width } : undefined}\n className={alignClass(col.align)}\n >\n {col.sortable ? (\n <button\n type=\"button\"\n onClick={() => cycleSort(col.key)}\n className={cn(\n 'inline-flex items-center gap-1 rounded-sm transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n )}\n >\n <span>{col.header}</span>\n {isSorted ? (\n sort?.direction === 'asc' ? (\n <ArrowUp className=\"h-3.5 w-3.5\" />\n ) : (\n <ArrowDown className=\"h-3.5 w-3.5\" />\n )\n ) : (\n <ArrowUpDown className=\"h-3.5 w-3.5 opacity-50\" />\n )}\n </button>\n ) : (\n col.header\n )}\n </TableHeaderCell>\n );\n })}\n </TableRow>\n </TableHead>\n <TableBody>\n {sortedData.length === 0 ? (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"py-8 text-center text-muted-foreground\">\n {emptyContent}\n </TableCell>\n </TableRow>\n ) : (\n sortedData.map((row, rowIndex) => {\n const key = rowKey ? rowKey(row, rowIndex) : rowIndex;\n return (\n <TableRow\n key={key}\n onClick={onRowClick ? () => onRowClick(row, rowIndex) : undefined}\n className={cn(onRowClick && 'cursor-pointer')}\n >\n {columns.map((col) => (\n <TableCell key={col.key} className={alignClass(col.align)}>\n {col.cell\n ? col.cell(row, rowIndex)\n : col.accessor\n ? (col.accessor(row) as ReactNode)\n : null}\n </TableCell>\n ))}\n </TableRow>\n );\n })\n )}\n </TableBody>\n </Table>\n );\n}\n","import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Icon } from '../../icons';\n\ninterface CarouselContextValue {\n index: number;\n setIndex: (index: number) => void;\n count: number;\n setCount: (count: number) => void;\n loop: boolean;\n prev: () => void;\n next: () => void;\n paused: boolean;\n setPaused: (paused: boolean) => void;\n autoPlay?: number;\n}\n\nconst CarouselContext = createContext<CarouselContextValue | null>(null);\n\nfunction useCarouselContext() {\n const ctx = useContext(CarouselContext);\n if (!ctx) throw new Error('Carousel.* must be used inside <Carousel>');\n return ctx;\n}\n\nexport interface CarouselProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n index?: number;\n defaultIndex?: number;\n onIndexChange?: (index: number) => void;\n loop?: boolean;\n autoPlay?: number;\n /** When set, overrides the automatic count (use for virtualised slides). */\n slidesCount?: number;\n children: ReactNode;\n}\n\nexport const Carousel = forwardRef<HTMLDivElement, CarouselProps>(function Carousel(\n {\n index: indexProp,\n defaultIndex = 0,\n onIndexChange,\n loop = false,\n autoPlay,\n slidesCount,\n className,\n children,\n ...rest\n },\n ref,\n) {\n const [index, setIndexState] = useControlled({\n controlled: indexProp,\n default: defaultIndex,\n onChange: onIndexChange,\n });\n const [count, setCount] = useState(slidesCount ?? 0);\n const [paused, setPaused] = useState(false);\n\n // External override.\n useEffect(() => {\n if (slidesCount != null) setCount(slidesCount);\n }, [slidesCount]);\n\n const setIndex = useCallback(\n (i: number) => {\n if (count === 0) {\n setIndexState(0);\n return;\n }\n let next = i;\n if (loop) {\n next = ((i % count) + count) % count;\n } else {\n next = Math.max(0, Math.min(count - 1, i));\n }\n setIndexState(next);\n },\n [count, loop, setIndexState],\n );\n\n const prev = useCallback(() => setIndex(index - 1), [index, setIndex]);\n const next = useCallback(() => setIndex(index + 1), [index, setIndex]);\n\n // Auto-play.\n useEffect(() => {\n if (!autoPlay || paused || count === 0) return;\n const handle = window.setInterval(() => {\n setIndex(loop ? index + 1 : Math.min(count - 1, index + 1));\n }, autoPlay);\n return () => window.clearInterval(handle);\n }, [autoPlay, paused, count, index, loop, setIndex]);\n\n const ctx = useMemo<CarouselContextValue>(\n () => ({ index, setIndex, count, setCount, loop, prev, next, paused, setPaused, autoPlay }),\n [index, setIndex, count, loop, prev, next, paused, autoPlay],\n );\n\n return (\n <CarouselContext.Provider value={ctx}>\n <div\n ref={ref}\n onMouseEnter={() => setPaused(true)}\n onMouseLeave={() => setPaused(false)}\n onFocus={() => setPaused(true)}\n onBlur={() => setPaused(false)}\n className={cn('relative', className)}\n {...rest}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n});\n\nexport interface CarouselViewportProps extends HTMLAttributes<HTMLDivElement> {\n /** Default `'Carousel'`. */\n 'aria-label'?: string;\n}\n\nexport const CarouselViewport = forwardRef<HTMLDivElement, CarouselViewportProps>(\n function CarouselViewport(\n { 'aria-label': ariaLabel = 'Carousel', className, onKeyDown, children, ...rest },\n forwardedRef,\n ) {\n const ctx = useCarouselContext();\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n ctx.prev();\n } else if (e.key === 'ArrowRight') {\n e.preventDefault();\n ctx.next();\n }\n };\n return (\n <div\n ref={forwardedRef}\n role=\"group\"\n aria-roledescription=\"carousel\"\n aria-label={ariaLabel}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n className={cn(\n 'relative overflow-hidden rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nexport interface CarouselSlidesProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const CarouselSlides = forwardRef<HTMLDivElement, CarouselSlidesProps>(\n function CarouselSlides({ className, children, ...rest }, forwardedRef) {\n const ctx = useCarouselContext();\n const childArray = Children.toArray(children).filter(isValidElement);\n\n useEffect(() => {\n ctx.setCount(childArray.length);\n }, [childArray.length, ctx]);\n\n return (\n <div\n ref={forwardedRef}\n aria-live={ctx.autoPlay ? 'off' : 'polite'}\n className={cn('flex transition-transform duration-300 ease-out', className)}\n style={{ transform: `translateX(-${ctx.index * 100}%)` }}\n {...rest}\n >\n {childArray.map((child, idx) => (\n <div\n key={idx}\n role=\"group\"\n aria-roledescription=\"slide\"\n aria-label={`${idx + 1} of ${childArray.length}`}\n aria-hidden={idx !== ctx.index || undefined}\n className=\"w-full shrink-0\"\n >\n {child}\n </div>\n ))}\n </div>\n );\n },\n);\n\nexport type CarouselSlideProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CarouselSlide = forwardRef<HTMLDivElement, CarouselSlideProps>(\n function CarouselSlide({ className, ...rest }, ref) {\n return <div ref={ref} className={cn('h-full w-full', className)} {...rest} />;\n },\n);\n\nexport interface CarouselNavButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Default `'Previous slide'` / `'Next slide'`. */\n 'aria-label'?: string;\n}\n\nexport const CarouselPrev = forwardRef<HTMLButtonElement, CarouselNavButtonProps>(\n function CarouselPrev(\n { 'aria-label': ariaLabel = 'Previous slide', className, onClick, type = 'button', children, ...rest },\n forwardedRef,\n ) {\n const ctx = useCarouselContext();\n const disabled = !ctx.loop && ctx.index === 0;\n return (\n <button\n ref={forwardedRef}\n type={type}\n aria-label={ariaLabel}\n disabled={disabled}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.prev();\n }}\n className={cn(\n 'absolute left-2 top-1/2 inline-flex h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full bg-background/80 text-foreground shadow ring-1 ring-border transition-colors hover:bg-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-40',\n className,\n )}\n {...rest}\n >\n {children ?? <Icon icon={ChevronLeft} size={16} />}\n </button>\n );\n },\n);\n\nexport const CarouselNext = forwardRef<HTMLButtonElement, CarouselNavButtonProps>(\n function CarouselNext(\n { 'aria-label': ariaLabel = 'Next slide', className, onClick, type = 'button', children, ...rest },\n forwardedRef,\n ) {\n const ctx = useCarouselContext();\n const disabled = !ctx.loop && ctx.index === ctx.count - 1;\n return (\n <button\n ref={forwardedRef}\n type={type}\n aria-label={ariaLabel}\n disabled={disabled}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.next();\n }}\n className={cn(\n 'absolute right-2 top-1/2 inline-flex h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full bg-background/80 text-foreground shadow ring-1 ring-border transition-colors hover:bg-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-40',\n className,\n )}\n {...rest}\n >\n {children ?? <Icon icon={ChevronRight} size={16} />}\n </button>\n );\n },\n);\n\nexport type CarouselDotsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CarouselDots = forwardRef<HTMLDivElement, CarouselDotsProps>(\n function CarouselDots({ className, ...rest }, forwardedRef) {\n const ctx = useCarouselContext();\n return (\n <div\n ref={forwardedRef}\n className={cn('mt-3 flex items-center justify-center gap-1.5', className)}\n {...rest}\n >\n {Array.from({ length: ctx.count }, (_, i) => (\n <CarouselDot key={i} slideIndex={i} />\n ))}\n </div>\n );\n },\n);\n\nexport interface CarouselDotProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n slideIndex: number;\n}\n\nexport const CarouselDot = forwardRef<HTMLButtonElement, CarouselDotProps>(\n function CarouselDot({ slideIndex, className, onClick, type = 'button', ...rest }, forwardedRef) {\n const ctx = useCarouselContext();\n const isActive = ctx.index === slideIndex;\n return (\n <button\n ref={forwardedRef}\n type={type}\n aria-label={`Go to slide ${slideIndex + 1}`}\n aria-current={isActive || undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setIndex(slideIndex);\n }}\n className={cn(\n 'h-1.5 rounded-full bg-border transition-all hover:bg-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n isActive ? 'w-6 bg-primary hover:bg-primary' : 'w-1.5',\n className,\n )}\n {...rest}\n />\n );\n },\n);\n\ntype CarouselComponent = typeof Carousel & {\n Viewport: typeof CarouselViewport;\n Slides: typeof CarouselSlides;\n Slide: typeof CarouselSlide;\n Prev: typeof CarouselPrev;\n Next: typeof CarouselNext;\n Dots: typeof CarouselDots;\n Dot: typeof CarouselDot;\n};\n\n(Carousel as CarouselComponent).Viewport = CarouselViewport;\n(Carousel as CarouselComponent).Slides = CarouselSlides;\n(Carousel as CarouselComponent).Slide = CarouselSlide;\n(Carousel as CarouselComponent).Prev = CarouselPrev;\n(Carousel as CarouselComponent).Next = CarouselNext;\n(Carousel as CarouselComponent).Dots = CarouselDots;\n(Carousel as CarouselComponent).Dot = CarouselDot;\n\nexport default Carousel as CarouselComponent;\n","import {\n forwardRef,\n useRef,\n useState,\n type HTMLAttributes,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\n\nexport interface SwipeActionsProps extends HTMLAttributes<HTMLDivElement> {\n left?: ReactNode;\n right?: ReactNode;\n /** px the user must drag before the row snaps open. */\n threshold?: number;\n /** Used to compute snap distance. Width per action button (px). */\n actionWidth?: number;\n disabled?: boolean;\n children: ReactNode;\n}\n\ntype Side = 'left' | 'right' | null;\n\n/**\n * Drag a row left/right to reveal action slots. Pointer-event based — works\n * with touch and mouse. Tap the row body while open to close.\n */\nexport const SwipeActions = forwardRef<HTMLDivElement, SwipeActionsProps>(\n function SwipeActions(\n {\n left,\n right,\n threshold = 60,\n actionWidth = 72,\n disabled,\n className,\n children,\n ...rest\n },\n forwardedRef,\n ) {\n const startXRef = useRef<number | null>(null);\n const startOffsetRef = useRef(0);\n const [offset, setOffset] = useState(0);\n const [openSide, setOpenSide] = useState<Side>(null);\n\n const leftSlots = countNodes(left);\n const rightSlots = countNodes(right);\n const leftMax = leftSlots * actionWidth;\n const rightMax = rightSlots * actionWidth;\n\n const onPointerDown = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n startXRef.current = e.clientX;\n startOffsetRef.current = offset;\n (e.currentTarget as HTMLDivElement).setPointerCapture(e.pointerId);\n };\n\n const onPointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled || startXRef.current == null) return;\n const dx = e.clientX - startXRef.current + startOffsetRef.current;\n const clamped = Math.max(-rightMax, Math.min(leftMax, dx));\n setOffset(clamped);\n };\n\n const onPointerUp = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (startXRef.current == null) return;\n startXRef.current = null;\n (e.currentTarget as HTMLDivElement).releasePointerCapture?.(e.pointerId);\n // Snap.\n if (offset > threshold && leftMax > 0) {\n setOffset(leftMax);\n setOpenSide('left');\n } else if (offset < -threshold && rightMax > 0) {\n setOffset(-rightMax);\n setOpenSide('right');\n } else {\n setOffset(0);\n setOpenSide(null);\n }\n };\n\n const close = () => {\n setOffset(0);\n setOpenSide(null);\n };\n\n return (\n <div\n ref={forwardedRef}\n className={cn(\n 'relative overflow-hidden bg-card text-card-foreground',\n className,\n )}\n {...rest}\n >\n {left && (\n <div\n className=\"absolute inset-y-0 left-0 flex\"\n style={{ width: leftMax }}\n aria-hidden={openSide !== 'left'}\n >\n {left}\n </div>\n )}\n {right && (\n <div\n className=\"absolute inset-y-0 right-0 flex\"\n style={{ width: rightMax }}\n aria-hidden={openSide !== 'right'}\n >\n {right}\n </div>\n )}\n <div\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerUp}\n onClick={openSide ? close : undefined}\n style={{\n transform: `translateX(${offset}px)`,\n transition: startXRef.current == null ? 'transform 200ms ease-out' : 'none',\n touchAction: 'pan-y',\n }}\n className=\"relative bg-card\"\n >\n {children}\n </div>\n </div>\n );\n },\n);\n\nfunction countNodes(node: ReactNode): number {\n if (!node) return 0;\n if (Array.isArray(node)) return node.length;\n return 1;\n}\n","import { forwardRef, useMemo, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport type DiffView = 'split' | 'unified';\n\ntype DiffOp = 'unchanged' | 'added' | 'removed';\n\ninterface DiffRow {\n op: DiffOp;\n leftNum: number | null;\n rightNum: number | null;\n text: string;\n}\n\nexport interface DiffViewerProps extends HTMLAttributes<HTMLDivElement> {\n left: string;\n right: string;\n view?: DiffView;\n leftLabel?: ReactNode;\n rightLabel?: ReactNode;\n showStats?: boolean;\n}\n\n/**\n * Line-level diff viewer (split / unified). Own LCS implementation; no\n * external diff dep. For intra-line word highlighting, install `diff` and\n * post-process — deferred.\n */\nexport const DiffViewer = forwardRef<HTMLDivElement, DiffViewerProps>(function DiffViewer(\n { left, right, view = 'split', leftLabel = 'Before', rightLabel = 'After', showStats = true, className, ...rest },\n ref,\n) {\n const rows = useMemo(() => computeDiff(left, right), [left, right]);\n const stats = useMemo(() => {\n let added = 0;\n let removed = 0;\n for (const r of rows) {\n if (r.op === 'added') added += 1;\n if (r.op === 'removed') removed += 1;\n }\n return { added, removed };\n }, [rows]);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'overflow-hidden rounded-md border border-border bg-card font-mono text-xs text-card-foreground shadow-sm',\n className,\n )}\n {...rest}\n >\n {showStats && (\n <div className=\"flex items-center justify-between border-b border-border bg-muted/40 px-3 py-1.5 text-xs\">\n <div className=\"text-muted-foreground\">{leftLabel} → {rightLabel}</div>\n <div className=\"flex items-center gap-3\">\n <span className=\"text-success font-medium\">+{stats.added}</span>\n <span className=\"text-destructive font-medium\">−{stats.removed}</span>\n </div>\n </div>\n )}\n {view === 'split' ? <SplitView rows={rows} /> : <UnifiedView rows={rows} />}\n </div>\n );\n});\n\nfunction SplitView({ rows }: { rows: DiffRow[] }) {\n // Pair removed/added rows row-by-row when possible to align them.\n // Simple alignment: walk, when we hit \"removed\" followed by \"added\", pair them.\n const pairs: Array<{ left?: DiffRow; right?: DiffRow }> = [];\n for (let i = 0; i < rows.length; i++) {\n const r = rows[i]!;\n if (r.op === 'unchanged') {\n pairs.push({ left: r, right: r });\n } else if (r.op === 'removed') {\n const next = rows[i + 1];\n if (next && next.op === 'added') {\n pairs.push({ left: r, right: next });\n i++;\n } else {\n pairs.push({ left: r });\n }\n } else if (r.op === 'added') {\n pairs.push({ right: r });\n }\n }\n\n return (\n <div className=\"grid grid-cols-2 divide-x divide-border\">\n <DiffColumn rows={pairs.map((p) => p.left)} />\n <DiffColumn rows={pairs.map((p) => p.right)} side=\"right\" />\n </div>\n );\n}\n\nfunction DiffColumn({ rows, side = 'left' }: { rows: Array<DiffRow | undefined>; side?: 'left' | 'right' }) {\n return (\n <div className=\"overflow-x-auto\">\n {rows.map((r, i) => {\n if (!r) {\n return (\n <div key={i} className=\"flex bg-muted/30\">\n <span className=\"select-none w-10 shrink-0 px-2 py-0.5 text-right text-muted-foreground\">·</span>\n <span className=\"flex-1 whitespace-pre px-2 py-0.5\">&nbsp;</span>\n </div>\n );\n }\n const num = side === 'left' ? r.leftNum : r.rightNum;\n const isChanged =\n (side === 'left' && r.op === 'removed') || (side === 'right' && r.op === 'added');\n return (\n <div\n key={i}\n data-state={r.op}\n className={cn(\n 'flex',\n isChanged && side === 'left' && 'bg-destructive-soft',\n isChanged && side === 'right' && 'bg-success-soft',\n )}\n >\n <span className=\"select-none w-10 shrink-0 border-r border-border px-2 py-0.5 text-right text-muted-foreground tabular-nums\">\n {num ?? ''}\n </span>\n <span className=\"flex-1 whitespace-pre px-2 py-0.5\">{r.text || ' '}</span>\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction UnifiedView({ rows }: { rows: DiffRow[] }) {\n return (\n <div className=\"overflow-x-auto\">\n {rows.map((r, i) => (\n <div\n key={i}\n data-state={r.op}\n className={cn(\n 'flex',\n r.op === 'added' && 'bg-success-soft',\n r.op === 'removed' && 'bg-destructive-soft',\n )}\n >\n <span className=\"select-none w-10 shrink-0 border-r border-border px-2 py-0.5 text-right text-muted-foreground tabular-nums\">\n {r.leftNum ?? ''}\n </span>\n <span className=\"select-none w-10 shrink-0 border-r border-border px-2 py-0.5 text-right text-muted-foreground tabular-nums\">\n {r.rightNum ?? ''}\n </span>\n <span className=\"w-5 shrink-0 px-1 py-0.5 text-center text-muted-foreground\">\n {r.op === 'added' ? '+' : r.op === 'removed' ? '−' : ' '}\n </span>\n <span className=\"flex-1 whitespace-pre px-2 py-0.5\">{r.text || ' '}</span>\n </div>\n ))}\n </div>\n );\n}\n\n/**\n * LCS-based line diff. Returns ordered rows with `unchanged` / `added` /\n * `removed` operations. O(n×m) time + space.\n */\nfunction computeDiff(left: string, right: string): DiffRow[] {\n const a = left.split('\\n');\n const b = right.split('\\n');\n const n = a.length;\n const m = b.length;\n\n // LCS table: dp[i][j] = LCS length of a[0..i] and b[0..j].\n const dp: number[][] = Array.from({ length: n + 1 }, () => new Array(m + 1).fill(0));\n for (let i = 1; i <= n; i++) {\n for (let j = 1; j <= m; j++) {\n if (a[i - 1] === b[j - 1]) dp[i]![j] = dp[i - 1]![j - 1]! + 1;\n else dp[i]![j] = Math.max(dp[i - 1]![j]!, dp[i]![j - 1]!);\n }\n }\n\n // Backtrack.\n const rows: DiffRow[] = [];\n let i = n;\n let j = m;\n while (i > 0 || j > 0) {\n if (i > 0 && j > 0 && a[i - 1] === b[j - 1]) {\n rows.push({ op: 'unchanged', leftNum: i, rightNum: j, text: a[i - 1]! });\n i--;\n j--;\n } else if (j > 0 && (i === 0 || dp[i]![j - 1]! >= dp[i - 1]![j]!)) {\n rows.push({ op: 'added', leftNum: null, rightNum: j, text: b[j - 1]! });\n j--;\n } else if (i > 0) {\n rows.push({ op: 'removed', leftNum: i, rightNum: null, text: a[i - 1]! });\n i--;\n } else {\n break;\n }\n }\n rows.reverse();\n return rows;\n}\n"]}