@wow-two-beta/ui 0.0.11 → 0.0.13

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.
Files changed (131) hide show
  1. package/dist/actions/index.d.ts +1 -0
  2. package/dist/actions/index.d.ts.map +1 -1
  3. package/dist/actions/index.js +2 -2
  4. package/dist/actions/toolbar/Toolbar.d.ts +23 -0
  5. package/dist/actions/toolbar/Toolbar.d.ts.map +1 -0
  6. package/dist/actions/toolbar/index.d.ts +2 -0
  7. package/dist/actions/toolbar/index.d.ts.map +1 -0
  8. package/dist/{chunk-PFM3IQKM.js → chunk-A4N52LL6.js} +1132 -170
  9. package/dist/chunk-A4N52LL6.js.map +1 -0
  10. package/dist/{chunk-52DFDWY3.js → chunk-EU6JT5B4.js} +6 -6
  11. package/dist/chunk-EU6JT5B4.js.map +1 -0
  12. package/dist/{chunk-VTLWHUMD.js → chunk-PRRVOVUC.js} +384 -8
  13. package/dist/chunk-PRRVOVUC.js.map +1 -0
  14. package/dist/{chunk-ZTHJ5OTI.js → chunk-UGHPZ3I7.js} +212 -6
  15. package/dist/chunk-UGHPZ3I7.js.map +1 -0
  16. package/dist/{chunk-D5CHR6RX.js → chunk-ULAOIBCP.js} +113 -5
  17. package/dist/chunk-ULAOIBCP.js.map +1 -0
  18. package/dist/{chunk-YANOG5YR.js → chunk-YMSAS7M7.js} +104 -55
  19. package/dist/chunk-YMSAS7M7.js.map +1 -0
  20. package/dist/display/accordion/Accordion.d.ts +41 -0
  21. package/dist/display/accordion/Accordion.d.ts.map +1 -0
  22. package/dist/display/accordion/index.d.ts +2 -0
  23. package/dist/display/accordion/index.d.ts.map +1 -0
  24. package/dist/display/collapsible/Collapsible.d.ts +26 -0
  25. package/dist/display/collapsible/Collapsible.d.ts.map +1 -0
  26. package/dist/display/collapsible/index.d.ts +2 -0
  27. package/dist/display/collapsible/index.d.ts.map +1 -0
  28. package/dist/display/index.d.ts +3 -0
  29. package/dist/display/index.d.ts.map +1 -1
  30. package/dist/display/index.js +2 -3
  31. package/dist/display/tabs/Tabs.d.ts +31 -0
  32. package/dist/display/tabs/Tabs.d.ts.map +1 -0
  33. package/dist/display/tabs/index.d.ts +2 -0
  34. package/dist/display/tabs/index.d.ts.map +1 -0
  35. package/dist/forms/ColorExtensions.d.ts +38 -0
  36. package/dist/forms/ColorExtensions.d.ts.map +1 -0
  37. package/dist/forms/{_dateUtils.d.ts → DateExtensions.d.ts} +1 -1
  38. package/dist/forms/DateExtensions.d.ts.map +1 -0
  39. package/dist/forms/{_styles.d.ts → InputStyles.d.ts} +1 -1
  40. package/dist/forms/InputStyles.d.ts.map +1 -0
  41. package/dist/forms/colorArea/ColorArea.d.ts +18 -0
  42. package/dist/forms/colorArea/ColorArea.d.ts.map +1 -0
  43. package/dist/forms/colorArea/index.d.ts +2 -0
  44. package/dist/forms/colorArea/index.d.ts.map +1 -0
  45. package/dist/forms/colorField/ColorField.d.ts +11 -0
  46. package/dist/forms/colorField/ColorField.d.ts.map +1 -0
  47. package/dist/forms/colorField/index.d.ts +2 -0
  48. package/dist/forms/colorField/index.d.ts.map +1 -0
  49. package/dist/forms/colorPicker/ColorPicker.d.ts +15 -0
  50. package/dist/forms/colorPicker/ColorPicker.d.ts.map +1 -0
  51. package/dist/forms/colorPicker/index.d.ts +2 -0
  52. package/dist/forms/colorPicker/index.d.ts.map +1 -0
  53. package/dist/forms/colorSlider/ColorSlider.d.ts +15 -0
  54. package/dist/forms/colorSlider/ColorSlider.d.ts.map +1 -0
  55. package/dist/forms/colorSlider/index.d.ts +2 -0
  56. package/dist/forms/colorSlider/index.d.ts.map +1 -0
  57. package/dist/forms/colorSwatch/ColorSwatch.d.ts +21 -0
  58. package/dist/forms/colorSwatch/ColorSwatch.d.ts.map +1 -0
  59. package/dist/forms/colorSwatch/ColorSwatch.variants.d.ts +165 -0
  60. package/dist/forms/colorSwatch/ColorSwatch.variants.d.ts.map +1 -0
  61. package/dist/forms/colorSwatch/index.d.ts +3 -0
  62. package/dist/forms/colorSwatch/index.d.ts.map +1 -0
  63. package/dist/forms/colorSwatchPicker/ColorSwatchPicker.d.ts +13 -0
  64. package/dist/forms/colorSwatchPicker/ColorSwatchPicker.d.ts.map +1 -0
  65. package/dist/forms/colorSwatchPicker/index.d.ts +2 -0
  66. package/dist/forms/colorSwatchPicker/index.d.ts.map +1 -0
  67. package/dist/forms/colorWheel/ColorWheel.d.ts +13 -0
  68. package/dist/forms/colorWheel/ColorWheel.d.ts.map +1 -0
  69. package/dist/forms/colorWheel/index.d.ts +2 -0
  70. package/dist/forms/colorWheel/index.d.ts.map +1 -0
  71. package/dist/forms/combobox/Combobox.d.ts +1 -1
  72. package/dist/forms/combobox/Combobox.d.ts.map +1 -1
  73. package/dist/forms/dateField/DateField.d.ts +1 -1
  74. package/dist/forms/dateField/DateField.d.ts.map +1 -1
  75. package/dist/forms/datePicker/DatePicker.d.ts.map +1 -1
  76. package/dist/forms/dateRangePicker/DateRangePicker.d.ts.map +1 -1
  77. package/dist/forms/emailInput/EmailInput.d.ts +1 -1
  78. package/dist/forms/emailInput/EmailInput.d.ts.map +1 -1
  79. package/dist/forms/index.d.ts +8 -0
  80. package/dist/forms/index.d.ts.map +1 -1
  81. package/dist/forms/index.js +3 -3
  82. package/dist/forms/maskedInput/MaskedInput.d.ts +1 -1
  83. package/dist/forms/maskedInput/MaskedInput.d.ts.map +1 -1
  84. package/dist/forms/numberInput/NumberInput.d.ts +1 -1
  85. package/dist/forms/numberInput/NumberInput.d.ts.map +1 -1
  86. package/dist/forms/passwordInput/PasswordInput.d.ts +1 -1
  87. package/dist/forms/passwordInput/PasswordInput.d.ts.map +1 -1
  88. package/dist/forms/searchInput/SearchInput.d.ts +1 -1
  89. package/dist/forms/searchInput/SearchInput.d.ts.map +1 -1
  90. package/dist/forms/stepper/Stepper.d.ts +32 -0
  91. package/dist/forms/stepper/Stepper.d.ts.map +1 -0
  92. package/dist/forms/stepper/index.d.ts +2 -0
  93. package/dist/forms/stepper/index.d.ts.map +1 -0
  94. package/dist/forms/telInput/TelInput.d.ts +1 -1
  95. package/dist/forms/telInput/TelInput.d.ts.map +1 -1
  96. package/dist/forms/textInput/TextInput.d.ts +1 -1
  97. package/dist/forms/textInput/TextInput.d.ts.map +1 -1
  98. package/dist/forms/textarea/Textarea.d.ts +1 -1
  99. package/dist/forms/textarea/Textarea.d.ts.map +1 -1
  100. package/dist/forms/timeField/TimeField.d.ts +1 -1
  101. package/dist/forms/timeField/TimeField.d.ts.map +1 -1
  102. package/dist/forms/timePicker/TimePicker.d.ts.map +1 -1
  103. package/dist/forms/urlInput/UrlInput.d.ts +1 -1
  104. package/dist/forms/urlInput/UrlInput.d.ts.map +1 -1
  105. package/dist/index.js +6 -7
  106. package/dist/nav/index.d.ts +1 -0
  107. package/dist/nav/index.d.ts.map +1 -1
  108. package/dist/nav/index.js +2 -3
  109. package/dist/nav/navigationMenu/NavigationMenu.d.ts +39 -0
  110. package/dist/nav/navigationMenu/NavigationMenu.d.ts.map +1 -0
  111. package/dist/nav/navigationMenu/index.d.ts +2 -0
  112. package/dist/nav/navigationMenu/index.d.ts.map +1 -0
  113. package/dist/overlays/index.js +2 -3
  114. package/dist/overlays/popover/Popover.d.ts +7 -0
  115. package/dist/overlays/popover/Popover.d.ts.map +1 -1
  116. package/dist/primitives/anchoredPositioner/AnchoredPositioner.d.ts +8 -0
  117. package/dist/primitives/anchoredPositioner/AnchoredPositioner.d.ts.map +1 -1
  118. package/dist/primitives/index.js +1 -2
  119. package/dist/primitives/rovingFocusGroup/RovingFocusGroup.d.ts +1 -1
  120. package/dist/primitives/rovingFocusGroup/RovingFocusGroup.d.ts.map +1 -1
  121. package/package.json +1 -1
  122. package/dist/chunk-33IOXQYO.js +0 -47
  123. package/dist/chunk-33IOXQYO.js.map +0 -1
  124. package/dist/chunk-52DFDWY3.js.map +0 -1
  125. package/dist/chunk-D5CHR6RX.js.map +0 -1
  126. package/dist/chunk-PFM3IQKM.js.map +0 -1
  127. package/dist/chunk-VTLWHUMD.js.map +0 -1
  128. package/dist/chunk-YANOG5YR.js.map +0 -1
  129. package/dist/chunk-ZTHJ5OTI.js.map +0 -1
  130. package/dist/forms/_dateUtils.d.ts.map +0 -1
  131. package/dist/forms/_styles.d.ts.map +0 -1
@@ -0,0 +1 @@
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/tag/Tag.variants.ts","../src/display/tag/Tag.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"],"names":["Tag","forwardRef","jsx","useState","jsxs","isValidElement","Fragment","SIZE","TONE","POS","Collapsible","CollapsibleTrigger","CollapsibleContent","createContext","useContext","Accordion","useMemo","AccordionItem","useId","AccordionTrigger","AccordionContent","Tabs","TabsList","TabsTab","TabsPanel"],"mappings":"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","file":"chunk-PRRVOVUC.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 { tv, type VariantProps } from '../../utils';\n\nexport const tagVariants = tv({\n base: 'inline-flex items-center gap-1 rounded-md border border-border bg-card px-2 py-0.5 text-xs font-medium text-card-foreground',\n variants: {\n variant: {\n neutral: '',\n brand: 'border-transparent bg-primary-soft text-primary-soft-foreground',\n success: 'border-transparent bg-success-soft text-success-soft-foreground',\n warning: 'border-transparent bg-warning-soft text-warning-soft-foreground',\n danger: 'border-transparent bg-destructive-soft text-destructive-soft-foreground',\n info: 'border-transparent bg-info-soft text-info-soft-foreground',\n },\n },\n defaultVariants: {\n variant: 'neutral',\n },\n});\n\nexport type TagVariants = VariantProps<typeof tagVariants>;\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { tagVariants, type TagVariants } from './Tag.variants';\n\nexport interface TagProps\n extends Omit<ComponentPropsWithoutRef<'span'>, 'children'>,\n TagVariants {\n children?: ReactNode;\n /** Show a close (×) button. Pass a handler to receive the click. */\n onClose?: () => void;\n /** Accessible label for the close button. Default `\"Remove\"`. */\n closeLabel?: string;\n}\n\n/**\n * Pill with an optional close button. The close button is a raw `<button>`\n * (not `IconButton`) so this stays a strict atom.\n */\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(\n ({ children, onClose, closeLabel = 'Remove', variant, className, ...props }, ref) => (\n <span ref={ref} className={cn(tagVariants({ variant }), className)} {...props}>\n {children}\n {onClose && (\n <button\n type=\"button\"\n aria-label={closeLabel}\n onClick={onClose}\n className=\"-mr-1 inline-flex h-4 w-4 items-center justify-center rounded-sm text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n >\n <Icon icon={X} size={12} />\n </button>\n )}\n </span>\n ),\n);\nTag.displayName = 'Tag';\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"]}
@@ -1,12 +1,11 @@
1
- import { Portal, AnchoredPositioner, DismissableLayer } from './chunk-YANOG5YR.js';
2
1
  import { useControlled } from './chunk-4P2TFUVW.js';
3
- import { Slot } from './chunk-33IOXQYO.js';
2
+ import { Slot, RovingFocusGroup, useRovingFocusItem, Portal, AnchoredPositioner, DismissableLayer } from './chunk-YMSAS7M7.js';
4
3
  import { dataAttr, tv } from './chunk-BMBIZLO4.js';
5
4
  import { Icon } from './chunk-TDX22OWF.js';
6
5
  import { composeRefs } from './chunk-DN7WBRIV.js';
7
6
  import { cn } from './chunk-KZ4VFY2T.js';
8
7
  import { forwardRef, Fragment, createContext, useId, useRef, useEffect, useCallback, useMemo, useContext, useState } from 'react';
9
- import { ChevronLeft, ChevronRight } from 'lucide-react';
8
+ import { ChevronLeft, ChevronRight, ChevronDown } from 'lucide-react';
10
9
  import { jsx, jsxs } from 'react/jsx-runtime';
11
10
  import { FocusScope } from '@radix-ui/react-focus-scope';
12
11
 
@@ -691,7 +690,214 @@ Menubar.Item = MenuItem;
691
690
  Menubar.Group = MenuGroup;
692
691
  Menubar.Label = MenuLabel;
693
692
  Menubar.Separator = MenuSeparator;
693
+ var NavigationMenuContext = createContext(null);
694
+ function useNavContext() {
695
+ const ctx = useContext(NavigationMenuContext);
696
+ if (!ctx) throw new Error("NavigationMenu.* must be used inside <NavigationMenu>");
697
+ return ctx;
698
+ }
699
+ var NavigationMenuItemContext = createContext(null);
700
+ function useNavItemContext() {
701
+ const ctx = useContext(NavigationMenuItemContext);
702
+ if (!ctx)
703
+ throw new Error("NavigationMenu.Trigger / Content must be used inside <NavigationMenu.Item>");
704
+ return ctx;
705
+ }
706
+ var NavigationMenu = forwardRef(
707
+ function NavigationMenu2({
708
+ value,
709
+ defaultValue = null,
710
+ onValueChange,
711
+ "aria-label": ariaLabel = "Main navigation",
712
+ className,
713
+ children,
714
+ ...rest
715
+ }, ref) {
716
+ const [activeId, setActiveId] = useControlled({
717
+ controlled: value,
718
+ default: defaultValue,
719
+ onChange: onValueChange
720
+ });
721
+ const ctx = useMemo(
722
+ () => ({ activeId, setActiveId }),
723
+ [activeId, setActiveId]
724
+ );
725
+ return /* @__PURE__ */ jsx(NavigationMenuContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(
726
+ "nav",
727
+ {
728
+ ref,
729
+ "aria-label": ariaLabel,
730
+ className: cn("relative", className),
731
+ ...rest,
732
+ children
733
+ }
734
+ ) });
735
+ }
736
+ );
737
+ var NavigationMenuList = forwardRef(
738
+ function NavigationMenuList2({ className, children, ...rest }, ref) {
739
+ return /* @__PURE__ */ jsx(
740
+ RovingFocusGroup,
741
+ {
742
+ ref,
743
+ orientation: "horizontal",
744
+ loop: true,
745
+ role: "list",
746
+ className: cn("flex items-center gap-1", className),
747
+ ...rest,
748
+ children
749
+ }
750
+ );
751
+ }
752
+ );
753
+ var NavigationMenuItem = forwardRef(
754
+ function NavigationMenuItem2({ value, className, children, ...rest }, ref) {
755
+ const nav = useNavContext();
756
+ const triggerRef = useRef(null);
757
+ const contentId = useId();
758
+ const triggerId = useId();
759
+ const open = nav.activeId === value;
760
+ const itemCtx = useMemo(
761
+ () => ({ value, open, triggerRef, contentId, triggerId }),
762
+ [value, open, contentId, triggerId]
763
+ );
764
+ return /* @__PURE__ */ jsx(NavigationMenuItemContext.Provider, { value: itemCtx, children: /* @__PURE__ */ jsx("li", { ref, className: cn("relative", className), ...rest, children }) });
765
+ }
766
+ );
767
+ var NavigationMenuTrigger = forwardRef(
768
+ function NavigationMenuTrigger2({ className, onClick, onPointerEnter, onKeyDown, onFocus, children, ...rest }, ref) {
769
+ const nav = useNavContext();
770
+ const item = useNavItemContext();
771
+ const roving = useRovingFocusItem();
772
+ return /* @__PURE__ */ jsxs(
773
+ "button",
774
+ {
775
+ ref: (node) => {
776
+ item.triggerRef.current = node;
777
+ roving.ref(node);
778
+ if (typeof ref === "function") ref(node);
779
+ else if (ref) ref.current = node;
780
+ },
781
+ id: item.triggerId,
782
+ type: "button",
783
+ "aria-haspopup": "true",
784
+ "aria-expanded": item.open,
785
+ "aria-controls": item.contentId,
786
+ "data-state": item.open ? "open" : "closed",
787
+ tabIndex: roving.tabIndex,
788
+ onClick: (e) => {
789
+ onClick?.(e);
790
+ if (e.defaultPrevented) return;
791
+ nav.setActiveId(item.open ? null : item.value);
792
+ },
793
+ onPointerEnter: (e) => {
794
+ onPointerEnter?.(e);
795
+ if (nav.activeId !== null && nav.activeId !== item.value) {
796
+ nav.setActiveId(item.value);
797
+ }
798
+ },
799
+ onFocus: (e) => {
800
+ onFocus?.(e);
801
+ roving.onFocus();
802
+ },
803
+ onKeyDown: (e) => {
804
+ onKeyDown?.(e);
805
+ if (e.defaultPrevented) return;
806
+ roving.onKeyDown(e);
807
+ },
808
+ className: cn(
809
+ "inline-flex items-center gap-1 rounded-md px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring data-[state=open]:bg-muted",
810
+ className
811
+ ),
812
+ ...rest,
813
+ children: [
814
+ children,
815
+ /* @__PURE__ */ jsx(
816
+ ChevronDown,
817
+ {
818
+ className: cn("h-4 w-4 transition-transform", item.open && "rotate-180")
819
+ }
820
+ )
821
+ ]
822
+ }
823
+ );
824
+ }
825
+ );
826
+ var NavigationMenuLink = forwardRef(
827
+ function NavigationMenuLink2({ className, onKeyDown, onFocus, children, ...rest }, ref) {
828
+ const roving = useRovingFocusItem();
829
+ return /* @__PURE__ */ jsx(
830
+ "a",
831
+ {
832
+ ref: (node) => {
833
+ roving.ref(node);
834
+ if (typeof ref === "function") ref(node);
835
+ else if (ref) ref.current = node;
836
+ },
837
+ tabIndex: roving.tabIndex,
838
+ onFocus: (e) => {
839
+ onFocus?.(e);
840
+ roving.onFocus();
841
+ },
842
+ onKeyDown: (e) => {
843
+ onKeyDown?.(e);
844
+ if (e.defaultPrevented) return;
845
+ roving.onKeyDown(e);
846
+ },
847
+ className: cn(
848
+ "inline-flex items-center rounded-md px-3 py-1.5 text-sm font-medium text-foreground transition-colors hover:bg-muted hover:underline-offset-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
849
+ className
850
+ ),
851
+ ...rest,
852
+ children
853
+ }
854
+ );
855
+ }
856
+ );
857
+ var NavigationMenuContent = forwardRef(
858
+ function NavigationMenuContent2({ className, children, ...rest }, ref) {
859
+ const nav = useNavContext();
860
+ const item = useNavItemContext();
861
+ const handleClose = useCallback(() => {
862
+ nav.setActiveId(null);
863
+ requestAnimationFrame(() => item.triggerRef.current?.focus());
864
+ }, [nav, item.triggerRef]);
865
+ useEffect(() => {
866
+ }, []);
867
+ if (!item.open) return null;
868
+ return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(AnchoredPositioner, { anchor: item.triggerRef.current, placement: "bottom-start", offset: 6, children: /* @__PURE__ */ jsx(
869
+ DismissableLayer,
870
+ {
871
+ onEscape: handleClose,
872
+ onOutsidePointerDown: (e) => {
873
+ if (item.triggerRef.current?.contains(e.target)) return;
874
+ nav.setActiveId(null);
875
+ },
876
+ children: /* @__PURE__ */ jsx(
877
+ "div",
878
+ {
879
+ ref,
880
+ id: item.contentId,
881
+ "aria-labelledby": item.triggerId,
882
+ "data-state": "open",
883
+ className: cn(
884
+ "z-50 min-w-[12rem] rounded-md border border-border bg-popover p-3 text-popover-foreground shadow-md outline-none animate-in fade-in-0 zoom-in-95",
885
+ className
886
+ ),
887
+ ...rest,
888
+ children
889
+ }
890
+ )
891
+ }
892
+ ) }) });
893
+ }
894
+ );
895
+ NavigationMenu.List = NavigationMenuList;
896
+ NavigationMenu.Item = NavigationMenuItem;
897
+ NavigationMenu.Trigger = NavigationMenuTrigger;
898
+ NavigationMenu.Content = NavigationMenuContent;
899
+ NavigationMenu.Link = NavigationMenuLink;
694
900
 
695
- export { Breadcrumb, ContextMenu, ContextMenuContent, ContextMenuTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, Menu, MenuGroup, MenuItem, MenuLabel, MenuSeparator, Menubar, MenubarContent, MenubarMenu, MenubarTrigger, NavItem, Pagination, menuItemVariants, menuLabelVariants, menuSeparatorVariants, menuVariants };
696
- //# sourceMappingURL=chunk-ZTHJ5OTI.js.map
697
- //# sourceMappingURL=chunk-ZTHJ5OTI.js.map
901
+ export { Breadcrumb, ContextMenu, ContextMenuContent, ContextMenuTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, Menu, MenuGroup, MenuItem, MenuLabel, MenuSeparator, Menubar, MenubarContent, MenubarMenu, MenubarTrigger, NavItem, NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, Pagination, menuItemVariants, menuLabelVariants, menuSeparatorVariants, menuVariants };
902
+ //# sourceMappingURL=chunk-UGHPZ3I7.js.map
903
+ //# sourceMappingURL=chunk-UGHPZ3I7.js.map