@uselets/ui 1.12.0 → 1.14.0

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 (198) hide show
  1. package/README.md +6 -2
  2. package/dist/{chart-lqgodZYQ.d.ts → chart-CVe5-EWS.d.ts} +9 -39
  3. package/dist/components/accordion.d.ts +4 -19
  4. package/dist/components/accordion.js.map +1 -1
  5. package/dist/components/alert-dialog.d.ts +12 -53
  6. package/dist/components/alert-dialog.js.map +1 -1
  7. package/dist/components/alert.d.ts +4 -18
  8. package/dist/components/anchor.d.ts +2 -9
  9. package/dist/components/area-chart.d.ts +2 -26
  10. package/dist/components/area-chart.js.map +1 -1
  11. package/dist/components/avatar.d.ts +6 -26
  12. package/dist/components/badge.d.ts +4 -12
  13. package/dist/components/bar-chart.d.ts +2 -24
  14. package/dist/components/bar-chart.js.map +1 -1
  15. package/dist/components/breadcrumb.d.ts +7 -31
  16. package/dist/components/breadcrumb.js.map +1 -1
  17. package/dist/components/button-group.d.ts +3 -16
  18. package/dist/components/button.d.ts +4 -15
  19. package/dist/components/button.js.map +1 -1
  20. package/dist/components/calendar.d.ts +2 -19
  21. package/dist/components/calendar.js.map +1 -1
  22. package/dist/components/card.d.ts +7 -30
  23. package/dist/components/carousel.d.ts +6 -37
  24. package/dist/components/carousel.js +1 -1
  25. package/dist/components/carousel.js.map +1 -1
  26. package/dist/components/carousel.spec.d.ts +1 -1
  27. package/dist/components/carousel.spec.js +93 -1
  28. package/dist/components/carousel.spec.js.map +1 -1
  29. package/dist/components/center.d.ts +2 -8
  30. package/dist/components/chart.d.ts +1 -1
  31. package/dist/components/chart.js +1 -1
  32. package/dist/components/chart.js.map +1 -1
  33. package/dist/components/checkbox.d.ts +3 -12
  34. package/dist/components/checkbox.js +1 -1
  35. package/dist/components/checkbox.js.map +1 -1
  36. package/dist/components/code.d.ts +1 -5
  37. package/dist/components/collapsible.d.ts +3 -10
  38. package/dist/components/combobox.d.ts +15 -80
  39. package/dist/components/combobox.js.map +1 -1
  40. package/dist/components/command.d.ts +9 -43
  41. package/dist/components/command.js.map +1 -1
  42. package/dist/components/container.d.ts +2 -7
  43. package/dist/components/data-table.d.ts +8 -61
  44. package/dist/components/data-table.js.map +1 -1
  45. package/dist/components/date-range-picker.d.ts +11 -75
  46. package/dist/components/date-range-picker.js +1 -1
  47. package/dist/components/date-range-picker.js.map +1 -1
  48. package/dist/components/dialog.d.ts +12 -49
  49. package/dist/components/dialog.js.map +1 -1
  50. package/dist/components/donut-chart.d.ts +1 -10
  51. package/dist/components/donut-chart.js.map +1 -1
  52. package/dist/components/drawer.d.ts +13 -49
  53. package/dist/components/drawer.js.map +1 -1
  54. package/dist/components/dropdown-menu.d.ts +15 -66
  55. package/dist/components/dropdown-menu.js.map +1 -1
  56. package/dist/components/dropzone.d.ts +1 -5
  57. package/dist/components/dropzone.js.map +1 -1
  58. package/dist/components/empty.d.ts +6 -26
  59. package/dist/components/field.d.ts +11 -48
  60. package/dist/components/field.js.map +1 -1
  61. package/dist/components/field.spec.d.ts +1 -1
  62. package/dist/components/field.spec.js +1 -1
  63. package/dist/components/field.spec.js.map +1 -1
  64. package/dist/components/flex.d.ts +5 -14
  65. package/dist/components/grid.d.ts +2 -18
  66. package/dist/components/group.d.ts +4 -12
  67. package/dist/components/heading.d.ts +2 -8
  68. package/dist/components/hover-card.d.ts +3 -13
  69. package/dist/components/hover-card.js.map +1 -1
  70. package/dist/components/input-group.d.ts +8 -32
  71. package/dist/components/input-otp.d.ts +4 -19
  72. package/dist/components/input-otp.js.map +1 -1
  73. package/dist/components/input.d.ts +1 -7
  74. package/dist/components/kbd.d.ts +2 -9
  75. package/dist/components/label.d.ts +1 -5
  76. package/dist/components/list.d.ts +5 -22
  77. package/dist/components/list.js.map +1 -1
  78. package/dist/components/marker.d.ts +18 -0
  79. package/dist/components/marker.js +2 -0
  80. package/dist/components/marker.js.map +1 -0
  81. package/dist/components/mask-input.d.ts +1 -11
  82. package/dist/components/native-select.d.ts +3 -14
  83. package/dist/components/native-select.js.map +1 -1
  84. package/dist/components/navigation-menu.d.ts +8 -36
  85. package/dist/components/navigation-menu.js.map +1 -1
  86. package/dist/components/number-field.d.ts +35 -0
  87. package/dist/components/number-field.js +2 -0
  88. package/dist/components/number-field.js.map +1 -0
  89. package/dist/components/pagination.d.ts +7 -33
  90. package/dist/components/pagination.js.map +1 -1
  91. package/dist/components/phone-input.d.ts +13 -0
  92. package/dist/components/phone-input.js +2 -0
  93. package/dist/components/phone-input.js.map +1 -0
  94. package/dist/components/pie-chart.d.ts +2 -24
  95. package/dist/components/pie-chart.js.map +1 -1
  96. package/dist/components/popover.d.ts +7 -28
  97. package/dist/components/progress.d.ts +3 -10
  98. package/dist/components/progress.js.map +1 -1
  99. package/dist/components/radio-group.d.ts +4 -17
  100. package/dist/components/radio-group.js +1 -1
  101. package/dist/components/radio-group.js.map +1 -1
  102. package/dist/components/resizable.d.ts +3 -13
  103. package/dist/components/resizable.js.map +1 -1
  104. package/dist/components/ring-progress.d.ts +3 -11
  105. package/dist/components/ring-progress.js.map +1 -1
  106. package/dist/components/scroll-area.d.ts +2 -11
  107. package/dist/components/scroll-area.js.map +1 -1
  108. package/dist/components/select.d.ts +10 -46
  109. package/dist/components/select.js.map +1 -1
  110. package/dist/components/separator.d.ts +1 -7
  111. package/dist/components/sidebar.d.ts +24 -118
  112. package/dist/components/sidebar.js.map +1 -1
  113. package/dist/components/simple-grid.d.ts +1 -10
  114. package/dist/components/skeleton.d.ts +1 -7
  115. package/dist/components/skeleton.js.map +1 -1
  116. package/dist/components/skeleton.spec.d.ts +1 -1
  117. package/dist/components/skeleton.spec.js +1 -1
  118. package/dist/components/skeleton.spec.js.map +1 -1
  119. package/dist/components/slider.d.ts +1 -10
  120. package/dist/components/slider.js.map +1 -1
  121. package/dist/components/sonner.d.ts +0 -1
  122. package/dist/components/spinner.d.ts +2 -7
  123. package/dist/components/stack.d.ts +4 -11
  124. package/dist/components/stepper.d.ts +71 -0
  125. package/dist/components/stepper.js +2 -0
  126. package/dist/components/stepper.js.map +1 -0
  127. package/dist/components/switch.d.ts +1 -10
  128. package/dist/components/switch.js +1 -1
  129. package/dist/components/switch.js.map +1 -1
  130. package/dist/components/table.d.ts +10 -43
  131. package/dist/components/tabs.d.ts +5 -21
  132. package/dist/components/text.d.ts +2 -8
  133. package/dist/components/textarea.d.ts +1 -6
  134. package/dist/components/theme.d.ts +1 -7
  135. package/dist/components/theme.js.map +1 -1
  136. package/dist/components/timeline.d.ts +5 -6
  137. package/dist/components/timeline.js.map +1 -1
  138. package/dist/components/toggle-group.d.ts +2 -19
  139. package/dist/components/toggle-group.js.map +1 -1
  140. package/dist/components/toggle.d.ts +4 -11
  141. package/dist/components/tooltip.d.ts +5 -28
  142. package/dist/components/tooltip.js.map +1 -1
  143. package/dist/components/unstyled-button.d.ts +1 -7
  144. package/dist/components/visibility.d.ts +2 -9
  145. package/dist/hooks/use-breakpoint-value.d.ts +0 -1
  146. package/dist/hooks/use-breakpoint-value.spec.d.ts +1 -1
  147. package/dist/hooks/use-breakpoint-value.spec.js +1 -1
  148. package/dist/hooks/use-breakpoint-value.spec.js.map +1 -1
  149. package/dist/hooks/use-breakpoint.d.ts +0 -1
  150. package/dist/hooks/use-breakpoint.spec.d.ts +1 -1
  151. package/dist/hooks/use-breakpoint.spec.js +1 -1
  152. package/dist/hooks/use-disclosure.d.ts +0 -1
  153. package/dist/hooks/use-disclosure.spec.d.ts +1 -1
  154. package/dist/hooks/use-disclosure.spec.js +1 -1
  155. package/dist/hooks/use-document-visibility.d.ts +0 -1
  156. package/dist/hooks/use-document-visibility.spec.d.ts +1 -1
  157. package/dist/hooks/use-document-visibility.spec.js +1 -1
  158. package/dist/hooks/use-hotkeys.d.ts +1 -1
  159. package/dist/hooks/use-hotkeys.js +1 -1
  160. package/dist/hooks/use-hotkeys.spec.d.ts +1 -1
  161. package/dist/hooks/use-hotkeys.spec.js +1 -1
  162. package/dist/hooks/use-idle.d.ts +0 -1
  163. package/dist/hooks/use-idle.spec.d.ts +1 -1
  164. package/dist/hooks/use-idle.spec.js +1 -1
  165. package/dist/hooks/use-interval.d.ts +10 -8
  166. package/dist/hooks/use-interval.spec.d.ts +1 -1
  167. package/dist/hooks/use-interval.spec.js +1 -1
  168. package/dist/hooks/use-local-storage.d.ts +0 -1
  169. package/dist/hooks/use-local-storage.spec.d.ts +1 -1
  170. package/dist/hooks/use-local-storage.spec.js +1 -1
  171. package/dist/hooks/use-mask.d.ts +0 -1
  172. package/dist/hooks/use-mask.js +1 -1
  173. package/dist/hooks/use-mask.js.map +1 -1
  174. package/dist/hooks/use-mobile.d.ts +0 -1
  175. package/dist/hooks/use-mobile.spec.d.ts +1 -1
  176. package/dist/hooks/use-mobile.spec.js +1 -1
  177. package/dist/index.d.ts +7 -3
  178. package/dist/index.js +1 -1
  179. package/dist/lib/badge.d.ts +0 -1
  180. package/dist/lib/button.d.ts +0 -1
  181. package/dist/lib/color.d.ts +1 -2
  182. package/dist/lib/compose-refs.d.ts +0 -1
  183. package/dist/lib/progress.d.ts +0 -1
  184. package/dist/lib/utils.d.ts +0 -1
  185. package/dist/{magic-string.es-DbBO8R0S.js → magic-string.es-oADFB1hu.js} +2 -2
  186. package/dist/{magic-string.es-DbBO8R0S.js.map → magic-string.es-oADFB1hu.js.map} +1 -1
  187. package/dist/{react.esm-D88qr0ij.js → react.esm-D5AipFQb.js} +5 -5
  188. package/dist/{react.esm-D88qr0ij.js.map → react.esm-D5AipFQb.js.map} +1 -1
  189. package/dist/skills/uselets-ui/references/component-catalog.md +14 -2
  190. package/dist/{use-hotkeys-BOfOFxb5.js → use-hotkeys-C0d5t4yo.js} +2 -2
  191. package/dist/{use-hotkeys-BOfOFxb5.js.map → use-hotkeys-C0d5t4yo.js.map} +1 -1
  192. package/dist/{use-hotkeys-Cl1cV6e8.d.ts → use-hotkeys-DloZH-B4.d.ts} +1 -2
  193. package/dist/utils-Cj3IZeiu.js +37 -0
  194. package/dist/utils-Cj3IZeiu.js.map +1 -0
  195. package/package.json +17 -16
  196. package/skills/uselets-ui/references/component-catalog.md +14 -2
  197. package/dist/dist-B-hwiqYg.js +0 -129
  198. package/dist/dist-B-hwiqYg.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepper.js","names":[],"sources":["../../src/components/stepper.tsx"],"sourcesContent":["import {\n Children,\n createContext,\n type HTMLAttributes,\n isValidElement,\n type ReactElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState\n} from 'react'\n\nimport { cn } from '../lib/utils'\n\n// Types\ntype StepperOrientation = 'horizontal' | 'vertical'\ntype StepState = 'active' | 'completed' | 'inactive' | 'loading'\ntype StepIndicators = {\n active?: React.ReactNode\n completed?: React.ReactNode\n inactive?: React.ReactNode\n loading?: React.ReactNode\n}\n\ninterface StepperContextValue {\n activeStep: number\n setActiveStep: (step: number) => void\n stepsCount: number\n orientation: StepperOrientation\n registerTrigger: (node: HTMLButtonElement | null) => void\n triggerNodes: HTMLButtonElement[]\n focusNext: (currentIdx: number) => void\n focusPrev: (currentIdx: number) => void\n focusFirst: () => void\n focusLast: () => void\n indicators: StepIndicators\n}\n\ninterface StepItemContextValue {\n step: number\n state: StepState\n isDisabled: boolean\n isLoading: boolean\n}\n\nconst StepperContext = createContext<StepperContextValue | undefined>(undefined)\nconst StepItemContext = createContext<StepItemContextValue | undefined>(undefined)\n\nfunction useStepper() {\n const ctx = useContext(StepperContext)\n if (!ctx) throw new Error('useStepper must be used within a Stepper')\n return ctx\n}\n\nfunction useStepItem() {\n const ctx = useContext(StepItemContext)\n if (!ctx) throw new Error('useStepItem must be used within a StepperItem')\n return ctx\n}\n\ninterface StepperProps extends HTMLAttributes<HTMLDivElement> {\n defaultValue?: number\n value?: number\n onValueChange?: (value: number) => void\n orientation?: StepperOrientation\n indicators?: StepIndicators\n}\n\nfunction Stepper({\n defaultValue = 1,\n value,\n onValueChange,\n orientation = 'horizontal',\n className,\n children,\n indicators = {},\n ...props\n}: StepperProps) {\n const [activeStep, setActiveStep] = useState(defaultValue)\n const [triggerNodes, setTriggerNodes] = useState<HTMLButtonElement[]>([])\n\n // Register/unregister triggers\n const registerTrigger = useCallback((node: HTMLButtonElement | null) => {\n setTriggerNodes((prev) => {\n if (node && !prev.includes(node)) {\n return [...prev, node]\n } else if (!node && prev.includes(node!)) {\n return prev.filter((n) => n !== node)\n } else {\n return prev\n }\n })\n }, [])\n\n const handleSetActiveStep = useCallback(\n (step: number) => {\n if (value === undefined) {\n setActiveStep(step)\n }\n onValueChange?.(step)\n },\n [value, onValueChange]\n )\n\n const currentStep = value ?? activeStep\n\n // Keyboard navigation logic\n const focusTrigger = useCallback(\n (idx: number) => {\n if (triggerNodes[idx]) triggerNodes[idx].focus()\n },\n [triggerNodes]\n )\n const focusNext = useCallback(\n (currentIdx: number) => focusTrigger((currentIdx + 1) % triggerNodes.length),\n [focusTrigger, triggerNodes]\n )\n const focusPrev = useCallback(\n (currentIdx: number) => focusTrigger((currentIdx - 1 + triggerNodes.length) % triggerNodes.length),\n [focusTrigger, triggerNodes]\n )\n const focusFirst = useCallback(() => focusTrigger(0), [focusTrigger])\n const focusLast = useCallback(() => focusTrigger(triggerNodes.length - 1), [focusTrigger, triggerNodes])\n\n // Context value\n const contextValue = useMemo<StepperContextValue>(\n () => ({\n activeStep: currentStep,\n setActiveStep: handleSetActiveStep,\n stepsCount: Children.toArray(children).filter(\n (child): child is ReactElement =>\n isValidElement(child) && (child.type as { displayName?: string }).displayName === 'StepperItem'\n ).length,\n orientation,\n registerTrigger,\n focusNext,\n focusPrev,\n focusFirst,\n focusLast,\n triggerNodes,\n indicators\n }),\n [\n currentStep,\n handleSetActiveStep,\n children,\n orientation,\n registerTrigger,\n triggerNodes,\n focusFirst,\n focusLast,\n focusNext,\n focusPrev,\n indicators\n ]\n )\n\n return (\n <StepperContext.Provider value={contextValue}>\n <div\n role=\"tablist\"\n aria-orientation={orientation}\n data-slot=\"stepper\"\n className={cn('w-full', className)}\n data-orientation={orientation}\n {...props}\n >\n {children}\n </div>\n </StepperContext.Provider>\n )\n}\n\ninterface StepperItemProps extends React.HTMLAttributes<HTMLDivElement> {\n step: number\n completed?: boolean\n disabled?: boolean\n loading?: boolean\n}\n\nfunction StepperItem({\n step,\n completed = false,\n disabled = false,\n loading = false,\n className,\n children,\n ...props\n}: StepperItemProps) {\n const { activeStep } = useStepper()\n\n const state: StepState = completed || step < activeStep ? 'completed' : activeStep === step ? 'active' : 'inactive'\n\n const isLoading = loading && step === activeStep\n\n return (\n <StepItemContext.Provider value={{ step, state, isDisabled: disabled, isLoading }}>\n <div\n data-slot=\"stepper-item\"\n className={cn(\n 'group/step flex items-center justify-center not-last:flex-1 group-data-[orientation=horizontal]/stepper-nav:flex-row group-data-[orientation=vertical]/stepper-nav:flex-col',\n className\n )}\n data-state={state}\n {...(isLoading ? { 'data-loading': true } : {})}\n {...props}\n >\n {children}\n </div>\n </StepItemContext.Provider>\n )\n}\n\ninterface StepperTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean\n}\n\nfunction StepperTrigger({ asChild = false, className, children, tabIndex, ...props }: StepperTriggerProps) {\n const { state, isLoading } = useStepItem()\n const stepperCtx = useStepper()\n const { setActiveStep, activeStep, registerTrigger, triggerNodes, focusNext, focusPrev, focusFirst, focusLast } =\n stepperCtx\n const { step, isDisabled } = useStepItem()\n const isSelected = activeStep === step\n const id = `stepper-tab-${step}`\n const panelId = `stepper-panel-${step}`\n\n // Register this trigger for keyboard navigation\n const btnRef = useRef<HTMLButtonElement>(null)\n useEffect(() => {\n if (btnRef.current) {\n registerTrigger(btnRef.current)\n }\n }, [registerTrigger])\n\n // Find our index among triggers for navigation\n const myIdx = useMemo(() => triggerNodes.findIndex((n: HTMLButtonElement) => n === btnRef.current), [triggerNodes])\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n e.preventDefault()\n if (myIdx !== -1 && focusNext) focusNext(myIdx)\n break\n case 'ArrowLeft':\n case 'ArrowUp':\n e.preventDefault()\n if (myIdx !== -1 && focusPrev) focusPrev(myIdx)\n break\n case 'Home':\n e.preventDefault()\n if (focusFirst) focusFirst()\n break\n case 'End':\n e.preventDefault()\n if (focusLast) focusLast()\n break\n case 'Enter':\n case ' ':\n e.preventDefault()\n setActiveStep(step)\n break\n }\n }\n\n if (asChild) {\n return (\n <span data-slot=\"stepper-trigger\" data-state={state} className={className}>\n {children}\n </span>\n )\n }\n\n return (\n <button\n ref={btnRef}\n role=\"tab\"\n id={id}\n aria-selected={isSelected}\n aria-controls={panelId}\n tabIndex={typeof tabIndex === 'number' ? tabIndex : isSelected ? 0 : -1}\n data-slot=\"stepper-trigger\"\n data-state={state}\n data-loading={isLoading}\n className={cn(\n 'focus-visible:border-ring focus-visible:ring-ring/50 inline-flex cursor-pointer items-center outline-none focus-visible:z-10 focus-visible:ring-3 disabled:pointer-events-none disabled:opacity-60',\n 'gap-2.5 rounded-full',\n className\n )}\n onClick={() => setActiveStep(step)}\n onKeyDown={handleKeyDown}\n disabled={isDisabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nexport type StepperIndicatorProps = React.ComponentProps<'div'>\n\nfunction StepperIndicator({ children, className }: StepperIndicatorProps) {\n const { state, isLoading } = useStepItem()\n const { indicators } = useStepper()\n\n return (\n <div\n data-slot=\"stepper-indicator\"\n data-state={state}\n className={cn(\n 'border-background bg-accent text-accent-foreground data-[state=completed]:bg-primary data-[state=completed]:text-primary-foreground data-[state=active]:bg-primary data-[state=active]:text-primary-foreground relative flex size-6 shrink-0 items-center justify-center overflow-hidden',\n 'rounded-full text-xs',\n className\n )}\n >\n <div className=\"absolute\">\n {indicators &&\n ((isLoading && indicators.loading) ||\n (state === 'completed' && indicators.completed) ||\n (state === 'active' && indicators.active) ||\n (state === 'inactive' && indicators.inactive))\n ? (isLoading && indicators.loading) ||\n (state === 'completed' && indicators.completed) ||\n (state === 'active' && indicators.active) ||\n (state === 'inactive' && indicators.inactive)\n : children}\n </div>\n </div>\n )\n}\n\nexport type StepperSeparatorProps = React.ComponentProps<'div'>\n\nfunction StepperSeparator({ className }: StepperSeparatorProps) {\n const { state } = useStepItem()\n\n return (\n <div\n data-slot=\"stepper-separator\"\n data-state={state}\n className={cn(\n 'bg-muted rounded-sm group-data-[orientation=horizontal]/stepper-nav:h-0.5 group-data-[orientation=vertical]/stepper-nav:h-12 group-data-[orientation=vertical]/stepper-nav:w-0.5 m-0.5 group-data-[orientation=horizontal]/stepper-nav:flex-1',\n className\n )}\n />\n )\n}\n\nexport type StepperTitleProps = React.ComponentProps<'h3'>\n\nfunction StepperTitle({ children, className }: StepperTitleProps) {\n const { state } = useStepItem()\n\n return (\n <h3 data-slot=\"stepper-title\" data-state={state} className={cn('text-sm leading-none font-medium', className)}>\n {children}\n </h3>\n )\n}\n\nexport type StepperDescriptionProps = React.ComponentProps<'div'>\n\nfunction StepperDescription({ children, className }: StepperDescriptionProps) {\n const { state } = useStepItem()\n\n return (\n <div data-slot=\"stepper-description\" data-state={state} className={cn('text-muted-foreground text-sm', className)}>\n {children}\n </div>\n )\n}\n\nexport type StepperNavProps = React.ComponentProps<'nav'>\n\nfunction StepperNav({ children, className }: StepperNavProps) {\n const { activeStep, orientation } = useStepper()\n\n return (\n <nav\n data-slot=\"stepper-nav\"\n data-state={activeStep}\n data-orientation={orientation}\n className={cn(\n 'group/stepper-nav inline-flex data-[orientation=horizontal]:w-full data-[orientation=horizontal]:flex-row data-[orientation=vertical]:flex-col',\n className\n )}\n >\n {children}\n </nav>\n )\n}\n\nexport type StepperPanelProps = React.ComponentProps<'div'>\n\nfunction StepperPanel({ children, className }: StepperPanelProps) {\n const { activeStep } = useStepper()\n\n return (\n <div data-slot=\"stepper-panel\" data-state={activeStep} className={cn('w-full', className)}>\n {children}\n </div>\n )\n}\n\ninterface StepperContentProps extends React.ComponentProps<'div'> {\n value: number\n forceMount?: boolean\n}\n\nfunction StepperContent({ value, forceMount, children, className }: StepperContentProps) {\n const { activeStep } = useStepper()\n const isActive = value === activeStep\n\n if (!forceMount && !isActive) {\n return null\n }\n\n return (\n <div\n data-slot=\"stepper-content\"\n data-state={activeStep}\n className={cn('w-full', className, !isActive && forceMount && 'hidden')}\n hidden={!isActive && forceMount}\n >\n {children}\n </div>\n )\n}\n\nexport {\n Stepper,\n StepperContent,\n type StepperContentProps,\n StepperDescription,\n StepperIndicator,\n StepperItem,\n type StepperItemProps,\n StepperNav,\n StepperPanel,\n type StepperProps,\n StepperSeparator,\n StepperTitle,\n StepperTrigger,\n type StepperTriggerProps,\n useStepItem,\n useStepper\n}\n"],"mappings":"oRA+CA,MAAM,EAAiB,EAA+C,IAAA,EAAS,EACzE,EAAkB,EAAgD,IAAA,EAAS,EAEjF,SAAS,YAAa,CACpB,IAAM,EAAM,EAAW,CAAc,EACrC,GAAI,CAAC,EAAK,MAAU,MAAM,0CAA0C,EACpE,OAAO,CACT,CAEA,SAAS,aAAc,CACrB,IAAM,EAAM,EAAW,CAAe,EACtC,GAAI,CAAC,EAAK,MAAU,MAAM,+CAA+C,EACzE,OAAO,CACT,CAUA,SAAS,QAAQ,CACf,eAAe,EACf,QACA,gBACA,cAAc,aACd,YACA,WACA,aAAa,CAAC,EACd,GAAG,GACY,CACf,GAAM,CAAC,EAAY,GAAiB,EAAS,CAAY,EACnD,CAAC,EAAc,GAAmB,EAA8B,CAAC,CAAC,EAGlE,EAAkB,EAAa,GAAmC,CACtE,EAAiB,GACX,GAAQ,CAAC,EAAK,SAAS,CAAI,EACtB,CAAC,GAAG,EAAM,CAAI,EACZ,CAAC,GAAQ,EAAK,SAAS,CAAK,EAC9B,EAAK,OAAQ,GAAM,IAAM,CAAI,EAE7B,CAEV,CACH,EAAG,CAAC,CAAC,EAEC,EAAsB,EACzB,GAAiB,CACZ,IAAU,IAAA,IACZ,EAAc,CAAI,EAEpB,IAAgB,CAAI,CACtB,EACA,CAAC,EAAO,CAAa,CACvB,EAEM,EAAc,GAAS,EAGvB,EAAe,EAClB,GAAgB,CACX,EAAa,IAAM,EAAa,EAAI,CAAC,MAAM,CACjD,EACA,CAAC,CAAY,CACf,EACM,EAAY,EACf,GAAuB,GAAc,EAAa,GAAK,EAAa,MAAM,EAC3E,CAAC,EAAc,CAAY,CAC7B,EACM,EAAY,EACf,GAAuB,GAAc,EAAa,EAAI,EAAa,QAAU,EAAa,MAAM,EACjG,CAAC,EAAc,CAAY,CAC7B,EACM,EAAa,MAAkB,EAAa,CAAC,EAAG,CAAC,CAAY,CAAC,EAC9D,EAAY,MAAkB,EAAa,EAAa,OAAS,CAAC,EAAG,CAAC,EAAc,CAAY,CAAC,EAGjG,EAAe,OACZ,CACL,WAAY,EACZ,cAAe,EACf,WAAY,EAAS,QAAQ,CAAQ,CAAC,CAAC,OACpC,GACC,EAAe,CAAK,GAAM,EAAM,KAAkC,cAAgB,aACtF,CAAC,CAAC,OACF,cACA,kBACA,YACA,YACA,aACA,YACA,eACA,YACF,GACA,CACE,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACF,CACF,EAEA,OACE,EAAC,EAAe,SAAhB,CAAyB,MAAO,EAC9B,SAAA,EAAC,MAAD,CACE,KAAK,UACL,mBAAkB,EAClB,YAAU,UACV,UAAW,EAAG,SAAU,CAAS,EACjC,mBAAkB,EAClB,GAAI,EAEH,UACE,CAAA,CACkB,CAAA,CAE7B,CASA,SAAS,YAAY,CACnB,OACA,YAAY,GACZ,WAAW,GACX,UAAU,GACV,YACA,WACA,GAAG,GACgB,CACnB,GAAM,CAAE,cAAe,WAAW,EAE5B,EAAmB,GAAa,EAAO,EAAa,YAAc,IAAe,EAAO,SAAW,WAEnG,EAAY,GAAW,IAAS,EAEtC,OACE,EAAC,EAAgB,SAAjB,CAA0B,MAAO,CAAE,OAAM,QAAO,WAAY,EAAU,WAAU,EAC9E,SAAA,EAAC,MAAD,CACE,YAAU,eACV,UAAW,EACT,8KACA,CACF,EACA,aAAY,EACZ,GAAK,EAAY,CAAE,eAAgB,EAAK,EAAI,CAAC,EAC7C,GAAI,EAEH,UACE,CAAA,CACmB,CAAA,CAE9B,CAMA,SAAS,eAAe,CAAE,UAAU,GAAO,YAAW,WAAU,WAAU,GAAG,GAA8B,CACzG,GAAM,CAAE,QAAO,aAAc,YAAY,EAEnC,CAAE,gBAAe,aAAY,kBAAiB,eAAc,YAAW,YAAW,aAAY,aADjF,WAER,EACL,CAAE,OAAM,cAAe,YAAY,EACnC,EAAa,IAAe,EAC5B,EAAK,eAAe,IACpB,EAAU,iBAAiB,IAG3B,EAAS,EAA0B,IAAI,EAC7C,MAAgB,CACV,EAAO,SACT,EAAgB,EAAO,OAAO,CAElC,EAAG,CAAC,CAAe,CAAC,EAGpB,IAAM,EAAQ,MAAc,EAAa,UAAW,GAAyB,IAAM,EAAO,OAAO,EAAG,CAAC,CAAY,CAAC,EAE5G,cAAiB,GAA8C,CACnE,OAAQ,EAAE,IAAV,CACE,IAAK,aACL,IAAK,YACH,EAAE,eAAe,EACb,IAAU,IAAM,GAAW,EAAU,CAAK,EAC9C,MACF,IAAK,YACL,IAAK,UACH,EAAE,eAAe,EACb,IAAU,IAAM,GAAW,EAAU,CAAK,EAC9C,MACF,IAAK,OACH,EAAE,eAAe,EACb,GAAY,EAAW,EAC3B,MACF,IAAK,MACH,EAAE,eAAe,EACb,GAAW,EAAU,EACzB,MACF,IAAK,QACL,IAAK,IACH,EAAE,eAAe,EACjB,EAAc,CAAI,EAClB,KACJ,CACF,EAUA,OARI,EAEA,EAAC,OAAD,CAAM,YAAU,kBAAkB,aAAY,EAAkB,YAC7D,UACG,CAAA,EAKR,EAAC,SAAD,CACE,IAAK,EACL,KAAK,MACD,KACJ,gBAAe,EACf,gBAAe,EACf,SAAU,OAAO,GAAa,SAAW,EAAW,EAAa,EAAI,GACrE,YAAU,kBACV,aAAY,EACZ,eAAc,EACd,UAAW,EACT,qMACA,uBACA,CACF,EACA,YAAe,EAAc,CAAI,EACjC,UAAW,cACX,SAAU,EACV,GAAI,EAEH,UACK,CAAA,CAEZ,CAIA,SAAS,iBAAiB,CAAE,WAAU,aAAoC,CACxE,GAAM,CAAE,QAAO,aAAc,YAAY,EACnC,CAAE,cAAe,WAAW,EAElC,OACE,EAAC,MAAD,CACE,YAAU,oBACV,aAAY,EACZ,UAAW,EACT,2RACA,uBACA,CACF,EAEA,SAAA,EAAC,MAAD,CAAK,UAAU,WACZ,SAAA,IACC,GAAa,EAAW,SACvB,IAAU,aAAe,EAAW,WACpC,IAAU,UAAY,EAAW,QACjC,IAAU,YAAc,EAAW,UACjC,GAAa,EAAW,SACxB,IAAU,aAAe,EAAW,WACpC,IAAU,UAAY,EAAW,QACjC,IAAU,YAAc,EAAW,SACpC,CACD,CAAA,CACF,CAAA,CAET,CAIA,SAAS,iBAAiB,CAAE,aAAoC,CAC9D,GAAM,CAAE,SAAU,YAAY,EAE9B,OACE,EAAC,MAAD,CACE,YAAU,oBACV,aAAY,EACZ,UAAW,EACT,gPACA,CACF,CACD,CAAA,CAEL,CAIA,SAAS,aAAa,CAAE,WAAU,aAAgC,CAChE,GAAM,CAAE,SAAU,YAAY,EAE9B,OACE,EAAC,KAAD,CAAI,YAAU,gBAAgB,aAAY,EAAO,UAAW,EAAG,mCAAoC,CAAS,EACzG,UACC,CAAA,CAER,CAIA,SAAS,mBAAmB,CAAE,WAAU,aAAsC,CAC5E,GAAM,CAAE,SAAU,YAAY,EAE9B,OACE,EAAC,MAAD,CAAK,YAAU,sBAAsB,aAAY,EAAO,UAAW,EAAG,gCAAiC,CAAS,EAC7G,UACE,CAAA,CAET,CAIA,SAAS,WAAW,CAAE,WAAU,aAA8B,CAC5D,GAAM,CAAE,aAAY,eAAgB,WAAW,EAE/C,OACE,EAAC,MAAD,CACE,YAAU,cACV,aAAY,EACZ,mBAAkB,EAClB,UAAW,EACT,iJACA,CACF,EAEC,UACE,CAAA,CAET,CAIA,SAAS,aAAa,CAAE,WAAU,aAAgC,CAChE,GAAM,CAAE,cAAe,WAAW,EAElC,OACE,EAAC,MAAD,CAAK,YAAU,gBAAgB,aAAY,EAAY,UAAW,EAAG,SAAU,CAAS,EACrF,UACE,CAAA,CAET,CAOA,SAAS,eAAe,CAAE,QAAO,aAAY,WAAU,aAAkC,CACvF,GAAM,CAAE,cAAe,WAAW,EAC5B,EAAW,IAAU,EAM3B,MAJI,CAAC,GAAc,CAAC,EACX,KAIP,EAAC,MAAD,CACE,YAAU,kBACV,aAAY,EACZ,UAAW,EAAG,SAAU,EAAW,CAAC,GAAY,GAAc,QAAQ,EACtE,OAAQ,CAAC,GAAY,EAEpB,UACE,CAAA,CAET"}
@@ -4,7 +4,6 @@ import { LabelProps } from "./label.js";
4
4
  import { Switch as Switch$1 } from "radix-ui";
5
5
  import * as React from "react";
6
6
  import { ReactNode } from "react";
7
-
8
7
  //#region src/components/switch.d.ts
9
8
  type SwitchProps = React.ComponentProps<typeof Switch$1.Root> & {
10
9
  color?: UIColor;
@@ -12,15 +11,7 @@ type SwitchProps = React.ComponentProps<typeof Switch$1.Root> & {
12
11
  labelProps?: Omit<LabelProps, 'children' | 'htmlFor'>;
13
12
  size?: 'sm' | 'md' | 'lg';
14
13
  };
15
- declare function Switch({
16
- className,
17
- color,
18
- id,
19
- label,
20
- labelProps,
21
- size,
22
- ...props
23
- }: SwitchProps): React.JSX.Element;
14
+ declare function Switch({ className, color, id, label, labelProps, size, ...props }: SwitchProps): React.JSX.Element;
24
15
  //#endregion
25
16
  export { Switch, SwitchProps };
26
17
  //# sourceMappingURL=switch.d.ts.map
@@ -1,2 +1,2 @@
1
- import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{Label as t}from"./label.js";import{useFieldControlId as n}from"./field.js";import{Switch as r}from"radix-ui";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{cva as o}from"class-variance-authority";import{useId as s}from"react";const c={primary:`[--switch-checked:var(--primary)]`,brand:`[--switch-checked:var(--brand)]`,gray:`[--switch-checked:var(--gray)]`,zinc:`[--switch-checked:var(--zinc)]`,red:`[--switch-checked:var(--red)]`,yellow:`[--switch-checked:var(--yellow)]`,blue:`[--switch-checked:var(--blue)]`,indigo:`[--switch-checked:var(--indigo)]`,pink:`[--switch-checked:var(--pink)]`,green:`[--switch-checked:var(--green)]`},l=o(``,{variants:{size:{sm:`text-xs`,md:`text-sm`,lg:`text-xl`}},defaultVariants:{size:`md`}});function Switch({className:o,color:u=`green`,id:d,label:f,labelProps:p,size:m=`md`,...h}){let g=s(),_=n(d),v=f!==void 0,y=_??(v?g:void 0),{className:b,...x}=p??{},S=i(r.Root,{"data-slot":`switch`,"data-color":u,"data-size":m,id:y,className:e(`peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none`,`after:absolute after:-inset-x-3 after:-inset-y-2`,`focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50`,`aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20`,`data-[size=lg]:h-5.5 data-[size=lg]:w-12 data-[size=md]:h-5 data-[size=md]:w-10.5 data-[size=sm]:h-4 data-[size=sm]:w-8.5`,`dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,`data-checked:bg-(--switch-checked) data-unchecked:bg-input dark:data-unchecked:bg-input/80`,`data-disabled:cursor-not-allowed data-disabled:opacity-50`,c[u],o),...h,children:i(r.Thumb,{"data-slot":`switch-thumb`,className:e(`pointer-events-none flex items-center justify-center rounded-full bg-background ring-0 transition-transform`,`group-data-[size=lg]/switch:size-4.5 group-data-[size=md]/switch:size-4 group-data-[size=sm]/switch:size-3`,`group-data-[size=lg]/switch:data-checked:translate-x-7`,`group-data-[size=md]/switch:data-checked:translate-x-6`,`group-data-[size=sm]/switch:data-checked:translate-x-5`,`group-data-[size=lg]/switch:data-unchecked:translate-x-0.5`,`group-data-[size=md]/switch:data-unchecked:translate-x-0.5`,`group-data-[size=sm]/switch:data-unchecked:translate-x-0.5`,`dark:data-checked:bg-primary-foreground dark:data-unchecked:bg-foreground`),children:i(`span`,{"data-slot":`switch-thumb-indicator`,className:e(`rounded-full transition-colors`,`group-data-[size=lg]/switch:size-2.5 group-data-[size=md]/switch:size-2 group-data-[size=sm]/switch:size-1.5`,`group-data-checked/switch:bg-(--switch-checked) group-data-unchecked/switch:bg-input`,`group-data-unchecked/switch:dark:bg-input/80`)})})});return v?a(`div`,{"data-slot":`switch-field`,className:`flex items-center gap-2`,children:[S,i(t,{...x,htmlFor:y,className:e(l({size:m}),b),children:f})]}):S}export{Switch};
1
+ import"../rolldown-runtime-Bdj-bS2b.js";import{cn as e}from"../lib/utils.js";import{Label as t}from"./label.js";import{useFieldControlId as n}from"./field.js";import{Switch as r}from"radix-ui";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{cva as o}from"class-variance-authority";import{useId as s}from"react";const c={primary:`[--switch-checked:var(--primary)]`,brand:`[--switch-checked:var(--brand)]`,gray:`[--switch-checked:var(--gray)]`,zinc:`[--switch-checked:var(--zinc)]`,red:`[--switch-checked:var(--red)]`,yellow:`[--switch-checked:var(--yellow)]`,blue:`[--switch-checked:var(--blue)]`,indigo:`[--switch-checked:var(--indigo)]`,pink:`[--switch-checked:var(--pink)]`,green:`[--switch-checked:var(--green)]`},l=o(``,{variants:{size:{sm:`text-sm`,md:`text-base`,lg:`text-lg`}},defaultVariants:{size:`md`}});function Switch({className:o,color:u=`green`,id:d,label:f,labelProps:p,size:m=`md`,...h}){let g=s(),_=n(d),v=f!==void 0,y=_??(v?g:void 0),{className:b,...x}=p??{},S=i(r.Root,{"data-slot":`switch`,"data-color":u,"data-size":m,id:y,className:e(`peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none`,`after:absolute after:-inset-x-3 after:-inset-y-2`,`focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50`,`aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20`,`data-[size=lg]:h-5.5 data-[size=lg]:w-12 data-[size=md]:h-5 data-[size=md]:w-10.5 data-[size=sm]:h-4 data-[size=sm]:w-8.5`,`dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,`data-checked:bg-(--switch-checked) data-unchecked:bg-input dark:data-unchecked:bg-input/80`,`data-disabled:cursor-not-allowed data-disabled:opacity-50`,c[u],o),...h,children:i(r.Thumb,{"data-slot":`switch-thumb`,className:e(`pointer-events-none flex items-center justify-center rounded-full bg-background ring-0 transition-transform`,`group-data-[size=lg]/switch:size-4.5 group-data-[size=md]/switch:size-4 group-data-[size=sm]/switch:size-3`,`group-data-[size=lg]/switch:data-checked:translate-x-7`,`group-data-[size=md]/switch:data-checked:translate-x-6`,`group-data-[size=sm]/switch:data-checked:translate-x-5`,`group-data-[size=lg]/switch:data-unchecked:translate-x-0.5`,`group-data-[size=md]/switch:data-unchecked:translate-x-0.5`,`group-data-[size=sm]/switch:data-unchecked:translate-x-0.5`,`dark:data-checked:bg-primary-foreground dark:data-unchecked:bg-foreground`),children:i(`span`,{"data-slot":`switch-thumb-indicator`,className:e(`rounded-full transition-colors`,`group-data-[size=lg]/switch:size-2.5 group-data-[size=md]/switch:size-2 group-data-[size=sm]/switch:size-1.5`,`group-data-checked/switch:bg-(--switch-checked) group-data-unchecked/switch:bg-input`,`group-data-unchecked/switch:dark:bg-input/80`)})})});return v?a(`div`,{"data-slot":`switch-field`,className:`flex items-center gap-2`,children:[S,i(t,{...x,htmlFor:y,className:e(l({size:m}),b),children:f})]}):S}export{Switch};
2
2
  //# sourceMappingURL=switch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch.js","names":["SwitchPrimitive","Label"],"sources":["../../src/components/switch.tsx"],"sourcesContent":["import type * as React from 'react'\nimport { type ReactNode, useId } from 'react'\n\nimport { cva } from 'class-variance-authority'\nimport { Switch as SwitchPrimitive } from 'radix-ui'\n\nimport type { UIColor } from '../lib/color'\nimport { cn } from '../lib/utils'\nimport { useFieldControlId } from './field'\nimport { Label, type LabelProps } from './label'\n\nexport type SwitchProps = React.ComponentProps<typeof SwitchPrimitive.Root> & {\n color?: UIColor\n label?: ReactNode\n labelProps?: Omit<LabelProps, 'children' | 'htmlFor'>\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst switchColorVariants: Record<UIColor, string> = {\n primary: '[--switch-checked:var(--primary)]',\n brand: '[--switch-checked:var(--brand)]',\n gray: '[--switch-checked:var(--gray)]',\n zinc: '[--switch-checked:var(--zinc)]',\n red: '[--switch-checked:var(--red)]',\n yellow: '[--switch-checked:var(--yellow)]',\n blue: '[--switch-checked:var(--blue)]',\n indigo: '[--switch-checked:var(--indigo)]',\n pink: '[--switch-checked:var(--pink)]',\n green: '[--switch-checked:var(--green)]'\n}\n\nconst switchLabelVariants = cva('', {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-xl'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nfunction Switch({ className, color = 'green', id, label, labelProps, size = 'md', ...props }: SwitchProps) {\n const generatedId = useId()\n const fieldControlId = useFieldControlId(id)\n const hasLabel = label !== undefined\n const resolvedId = fieldControlId ?? (hasLabel ? generatedId : undefined)\n const { className: labelClassName, ...labelRootProps } = labelProps ?? {}\n\n const switchControl = (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-color={color}\n data-size={size}\n id={resolvedId}\n className={cn(\n 'peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none',\n 'after:absolute after:-inset-x-3 after:-inset-y-2',\n 'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50',\n 'aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20',\n 'data-[size=lg]:h-5.5 data-[size=lg]:w-12 data-[size=md]:h-5 data-[size=md]:w-10.5 data-[size=sm]:h-4 data-[size=sm]:w-8.5',\n 'dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40',\n 'data-checked:bg-(--switch-checked) data-unchecked:bg-input dark:data-unchecked:bg-input/80',\n 'data-disabled:cursor-not-allowed data-disabled:opacity-50',\n switchColorVariants[color],\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'pointer-events-none flex items-center justify-center rounded-full bg-background ring-0 transition-transform',\n 'group-data-[size=lg]/switch:size-4.5 group-data-[size=md]/switch:size-4 group-data-[size=sm]/switch:size-3',\n 'group-data-[size=lg]/switch:data-checked:translate-x-7',\n 'group-data-[size=md]/switch:data-checked:translate-x-6',\n 'group-data-[size=sm]/switch:data-checked:translate-x-5',\n 'group-data-[size=lg]/switch:data-unchecked:translate-x-0.5',\n 'group-data-[size=md]/switch:data-unchecked:translate-x-0.5',\n 'group-data-[size=sm]/switch:data-unchecked:translate-x-0.5',\n 'dark:data-checked:bg-primary-foreground dark:data-unchecked:bg-foreground'\n )}\n >\n <span\n data-slot=\"switch-thumb-indicator\"\n className={cn(\n 'rounded-full transition-colors',\n 'group-data-[size=lg]/switch:size-2.5 group-data-[size=md]/switch:size-2 group-data-[size=sm]/switch:size-1.5',\n 'group-data-checked/switch:bg-(--switch-checked) group-data-unchecked/switch:bg-input',\n 'group-data-unchecked/switch:dark:bg-input/80'\n )}\n />\n </SwitchPrimitive.Thumb>\n </SwitchPrimitive.Root>\n )\n\n if (!hasLabel) {\n return switchControl\n }\n\n return (\n <div data-slot=\"switch-field\" className=\"flex items-center gap-2\">\n {switchControl}\n <Label {...labelRootProps} htmlFor={resolvedId} className={cn(switchLabelVariants({ size }), labelClassName)}>\n {label}\n </Label>\n </div>\n )\n}\n\nexport { Switch }\n"],"mappings":"gUAkBA,MAAM,EAA+C,CACnD,QAAS,oCACT,MAAO,kCACP,KAAM,iCACN,KAAM,iCACN,IAAK,gCACL,OAAQ,mCACR,KAAM,iCACN,OAAQ,mCACR,KAAM,iCACN,MAAO,iCACT,EAEM,EAAsB,EAAI,GAAI,CAClC,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,SACN,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CAAC,EAED,SAAS,OAAO,CAAE,YAAW,QAAQ,QAAS,KAAI,QAAO,aAAY,OAAO,KAAM,GAAG,GAAsB,CACzG,IAAM,EAAc,EAAM,EACpB,EAAiB,EAAkB,CAAE,EACrC,EAAW,IAAU,IAAA,GACrB,EAAa,IAAmB,EAAW,EAAc,IAAA,IACzD,CAAE,UAAW,EAAgB,GAAG,GAAmB,GAAc,CAAC,EAElE,EACJ,EAACA,EAAgB,KAAjB,CACE,YAAU,SACV,aAAY,EACZ,YAAW,EACX,GAAI,EACJ,UAAW,EACT,kIACA,mDACA,4EACA,uFACA,4HACA,gFACA,6FACA,4DACA,EAAoB,GACpB,CACF,EACA,GAAI,WAEJ,EAACA,EAAgB,MAAjB,CACE,YAAU,eACV,UAAW,EACT,8GACA,6GACA,yDACA,yDACA,yDACA,6DACA,6DACA,6DACA,2EACF,WAEA,EAAC,OAAD,CACE,YAAU,yBACV,UAAW,EACT,iCACA,+GACA,uFACA,8CACF,CACD,CAAA,CACoB,CAAA,CACH,CAAA,EAOxB,OAJK,EAKH,EAAC,MAAD,CAAK,YAAU,eAAe,UAAU,mCAAxC,CACG,EACD,EAACC,EAAD,CAAO,GAAI,EAAgB,QAAS,EAAY,UAAW,EAAG,EAAoB,CAAE,MAAK,CAAC,EAAG,CAAc,WACxG,CACI,CAAA,CACJ,IATE,CAWX"}
1
+ {"version":3,"file":"switch.js","names":["SwitchPrimitive","Label"],"sources":["../../src/components/switch.tsx"],"sourcesContent":["import type * as React from 'react'\nimport { type ReactNode, useId } from 'react'\n\nimport { cva } from 'class-variance-authority'\nimport { Switch as SwitchPrimitive } from 'radix-ui'\n\nimport type { UIColor } from '../lib/color'\nimport { cn } from '../lib/utils'\nimport { useFieldControlId } from './field'\nimport { Label, type LabelProps } from './label'\n\nexport type SwitchProps = React.ComponentProps<typeof SwitchPrimitive.Root> & {\n color?: UIColor\n label?: ReactNode\n labelProps?: Omit<LabelProps, 'children' | 'htmlFor'>\n size?: 'sm' | 'md' | 'lg'\n}\n\nconst switchColorVariants: Record<UIColor, string> = {\n primary: '[--switch-checked:var(--primary)]',\n brand: '[--switch-checked:var(--brand)]',\n gray: '[--switch-checked:var(--gray)]',\n zinc: '[--switch-checked:var(--zinc)]',\n red: '[--switch-checked:var(--red)]',\n yellow: '[--switch-checked:var(--yellow)]',\n blue: '[--switch-checked:var(--blue)]',\n indigo: '[--switch-checked:var(--indigo)]',\n pink: '[--switch-checked:var(--pink)]',\n green: '[--switch-checked:var(--green)]'\n}\n\nconst switchLabelVariants = cva('', {\n variants: {\n size: {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nfunction Switch({ className, color = 'green', id, label, labelProps, size = 'md', ...props }: SwitchProps) {\n const generatedId = useId()\n const fieldControlId = useFieldControlId(id)\n const hasLabel = label !== undefined\n const resolvedId = fieldControlId ?? (hasLabel ? generatedId : undefined)\n const { className: labelClassName, ...labelRootProps } = labelProps ?? {}\n\n const switchControl = (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-color={color}\n data-size={size}\n id={resolvedId}\n className={cn(\n 'peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none',\n 'after:absolute after:-inset-x-3 after:-inset-y-2',\n 'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50',\n 'aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20',\n 'data-[size=lg]:h-5.5 data-[size=lg]:w-12 data-[size=md]:h-5 data-[size=md]:w-10.5 data-[size=sm]:h-4 data-[size=sm]:w-8.5',\n 'dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40',\n 'data-checked:bg-(--switch-checked) data-unchecked:bg-input dark:data-unchecked:bg-input/80',\n 'data-disabled:cursor-not-allowed data-disabled:opacity-50',\n switchColorVariants[color],\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'pointer-events-none flex items-center justify-center rounded-full bg-background ring-0 transition-transform',\n 'group-data-[size=lg]/switch:size-4.5 group-data-[size=md]/switch:size-4 group-data-[size=sm]/switch:size-3',\n 'group-data-[size=lg]/switch:data-checked:translate-x-7',\n 'group-data-[size=md]/switch:data-checked:translate-x-6',\n 'group-data-[size=sm]/switch:data-checked:translate-x-5',\n 'group-data-[size=lg]/switch:data-unchecked:translate-x-0.5',\n 'group-data-[size=md]/switch:data-unchecked:translate-x-0.5',\n 'group-data-[size=sm]/switch:data-unchecked:translate-x-0.5',\n 'dark:data-checked:bg-primary-foreground dark:data-unchecked:bg-foreground'\n )}\n >\n <span\n data-slot=\"switch-thumb-indicator\"\n className={cn(\n 'rounded-full transition-colors',\n 'group-data-[size=lg]/switch:size-2.5 group-data-[size=md]/switch:size-2 group-data-[size=sm]/switch:size-1.5',\n 'group-data-checked/switch:bg-(--switch-checked) group-data-unchecked/switch:bg-input',\n 'group-data-unchecked/switch:dark:bg-input/80'\n )}\n />\n </SwitchPrimitive.Thumb>\n </SwitchPrimitive.Root>\n )\n\n if (!hasLabel) {\n return switchControl\n }\n\n return (\n <div data-slot=\"switch-field\" className=\"flex items-center gap-2\">\n {switchControl}\n <Label {...labelRootProps} htmlFor={resolvedId} className={cn(switchLabelVariants({ size }), labelClassName)}>\n {label}\n </Label>\n </div>\n )\n}\n\nexport { Switch }\n"],"mappings":"gUAkBA,MAAM,EAA+C,CACnD,QAAS,oCACT,MAAO,kCACP,KAAM,iCACN,KAAM,iCACN,IAAK,gCACL,OAAQ,mCACR,KAAM,iCACN,OAAQ,mCACR,KAAM,iCACN,MAAO,iCACT,EAEM,EAAsB,EAAI,GAAI,CAClC,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,YACJ,GAAI,SACN,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CAAC,EAED,SAAS,OAAO,CAAE,YAAW,QAAQ,QAAS,KAAI,QAAO,aAAY,OAAO,KAAM,GAAG,GAAsB,CACzG,IAAM,EAAc,EAAM,EACpB,EAAiB,EAAkB,CAAE,EACrC,EAAW,IAAU,IAAA,GACrB,EAAa,IAAmB,EAAW,EAAc,IAAA,IACzD,CAAE,UAAW,EAAgB,GAAG,GAAmB,GAAc,CAAC,EAElE,EACJ,EAACA,EAAgB,KAAjB,CACE,YAAU,SACV,aAAY,EACZ,YAAW,EACX,GAAI,EACJ,UAAW,EACT,kIACA,mDACA,4EACA,uFACA,4HACA,gFACA,6FACA,4DACA,EAAoB,GACpB,CACF,EACA,GAAI,EAEJ,SAAA,EAACA,EAAgB,MAAjB,CACE,YAAU,eACV,UAAW,EACT,8GACA,6GACA,yDACA,yDACA,yDACA,6DACA,6DACA,6DACA,2EACF,EAEA,SAAA,EAAC,OAAD,CACE,YAAU,yBACV,UAAW,EACT,iCACA,+GACA,uFACA,8CACF,CACD,CAAA,CACoB,CAAA,CACH,CAAA,EAOxB,OAJK,EAKH,EAAC,MAAD,CAAK,YAAU,eAAe,UAAU,0BAAxC,SAAA,CACG,EACD,EAACC,EAAD,CAAO,GAAI,EAAgB,QAAS,EAAY,UAAW,EAAG,EAAoB,CAAE,MAAK,CAAC,EAAG,CAAc,EACxG,SAAA,CACI,CAAA,CACJ,IATE,CAWX"}
@@ -1,13 +1,12 @@
1
1
  import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
2
  import { VariantProps } from "class-variance-authority";
3
3
  import * as React from "react";
4
-
5
4
  //#region src/components/table.d.ts
6
5
  type TableContainerProps = React.ComponentProps<'div'> & {
7
6
  minWidth?: number | string;
8
7
  };
9
8
  declare const tableVariants: (props?: ({
10
- variant?: "outline" | "line" | null | undefined;
9
+ variant?: "line" | "outline" | null | undefined;
11
10
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
11
  type TableProps = React.ComponentProps<'table'> & VariantProps<typeof tableVariants> & {
13
12
  striped?: boolean;
@@ -20,47 +19,15 @@ type TableRowProps = React.ComponentProps<'tr'>;
20
19
  type TableHeadProps = React.ComponentProps<'th'>;
21
20
  type TableCellProps = React.ComponentProps<'td'>;
22
21
  type TableCaptionProps = React.ComponentProps<'caption'>;
23
- declare function TableContainer({
24
- className,
25
- minWidth,
26
- style,
27
- ...props
28
- }: TableContainerProps): React.JSX.Element;
29
- declare function Table({
30
- className,
31
- variant,
32
- striped,
33
- stickyHeader,
34
- ...props
35
- }: TableProps): React.JSX.Element;
36
- declare function TableHeader({
37
- className,
38
- ...props
39
- }: TableHeaderProps): React.JSX.Element;
40
- declare function TableBody({
41
- className,
42
- ...props
43
- }: TableBodyProps): React.JSX.Element;
44
- declare function TableFooter({
45
- className,
46
- ...props
47
- }: TableFooterProps): React.JSX.Element;
48
- declare function TableRow({
49
- className,
50
- ...props
51
- }: TableRowProps): React.JSX.Element;
52
- declare function TableHead({
53
- className,
54
- ...props
55
- }: TableHeadProps): React.JSX.Element;
56
- declare function TableCell({
57
- className,
58
- ...props
59
- }: TableCellProps): React.JSX.Element;
60
- declare function TableCaption({
61
- className,
62
- ...props
63
- }: TableCaptionProps): React.JSX.Element;
22
+ declare function TableContainer({ className, minWidth, style, ...props }: TableContainerProps): React.JSX.Element;
23
+ declare function Table({ className, variant, striped, stickyHeader, ...props }: TableProps): React.JSX.Element;
24
+ declare function TableHeader({ className, ...props }: TableHeaderProps): React.JSX.Element;
25
+ declare function TableBody({ className, ...props }: TableBodyProps): React.JSX.Element;
26
+ declare function TableFooter({ className, ...props }: TableFooterProps): React.JSX.Element;
27
+ declare function TableRow({ className, ...props }: TableRowProps): React.JSX.Element;
28
+ declare function TableHead({ className, ...props }: TableHeadProps): React.JSX.Element;
29
+ declare function TableCell({ className, ...props }: TableCellProps): React.JSX.Element;
30
+ declare function TableCaption({ className, ...props }: TableCaptionProps): React.JSX.Element;
64
31
  //#endregion
65
32
  export { Table, TableBody, TableBodyProps, TableCaption, TableCaptionProps, TableCell, TableCellProps, TableContainer, TableContainerProps, TableFooter, TableFooterProps, TableHead, TableHeadProps, TableHeader, TableHeaderProps, TableProps, TableRow, TableRowProps, tableVariants };
66
33
  //# sourceMappingURL=table.d.ts.map
@@ -2,36 +2,20 @@ import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
2
  import { Tabs as Tabs$1 } from "radix-ui";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
  import * as React from "react";
5
-
6
5
  //#region src/components/tabs.d.ts
7
6
  type TabsProps = React.ComponentProps<typeof Tabs$1.Root>;
8
- declare function Tabs({
9
- className,
10
- orientation,
11
- ...props
12
- }: TabsProps): React.JSX.Element;
7
+ declare function Tabs({ className, orientation, ...props }: TabsProps): React.JSX.Element;
13
8
  declare const tabsListVariants: (props?: ({
14
- variant?: "line" | "enclosed" | null | undefined;
9
+ variant?: "enclosed" | "line" | null | undefined;
15
10
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
16
11
  type TabsListProps = React.ComponentProps<typeof Tabs$1.List> & VariantProps<typeof tabsListVariants> & {
17
12
  grow?: boolean;
18
13
  };
19
14
  type TabsTriggerProps = React.ComponentProps<typeof Tabs$1.Trigger>;
20
15
  type TabsContentProps = React.ComponentProps<typeof Tabs$1.Content>;
21
- declare function TabsList({
22
- className,
23
- variant,
24
- grow,
25
- ...props
26
- }: TabsListProps): React.JSX.Element;
27
- declare function TabsTrigger({
28
- className,
29
- ...props
30
- }: TabsTriggerProps): React.JSX.Element;
31
- declare function TabsContent({
32
- className,
33
- ...props
34
- }: TabsContentProps): React.JSX.Element;
16
+ declare function TabsList({ className, variant, grow, ...props }: TabsListProps): React.JSX.Element;
17
+ declare function TabsTrigger({ className, ...props }: TabsTriggerProps): React.JSX.Element;
18
+ declare function TabsContent({ className, ...props }: TabsContentProps): React.JSX.Element;
35
19
  //#endregion
36
20
  export { Tabs, TabsContent, TabsContentProps, TabsList, TabsListProps, TabsProps, TabsTrigger, TabsTriggerProps, tabsListVariants };
37
21
  //# sourceMappingURL=tabs.d.ts.map
@@ -1,20 +1,14 @@
1
1
  import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
2
  import { VariantProps } from "class-variance-authority";
3
3
  import * as React from "react";
4
-
5
4
  //#region src/components/text.d.ts
6
5
  declare const textVariants: (props?: ({
7
- size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
6
+ size?: "lg" | "md" | "sm" | "xl" | "xs" | null | undefined;
8
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
8
  type TextProps = React.ComponentProps<'p'> & VariantProps<typeof textVariants> & {
10
9
  asChild?: boolean;
11
10
  };
12
- declare function Text({
13
- className,
14
- size,
15
- asChild,
16
- ...props
17
- }: TextProps): React.JSX.Element;
11
+ declare function Text({ className, size, asChild, ...props }: TextProps): React.JSX.Element;
18
12
  //#endregion
19
13
  export { Text, TextProps, textVariants };
20
14
  //# sourceMappingURL=text.d.ts.map
@@ -1,13 +1,8 @@
1
1
  import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
2
  import * as React from "react";
3
-
4
3
  //#region src/components/textarea.d.ts
5
4
  type TextareaProps = React.ComponentProps<'textarea'>;
6
- declare function Textarea({
7
- className,
8
- id,
9
- ...props
10
- }: TextareaProps): React.JSX.Element;
5
+ declare function Textarea({ className, id, ...props }: TextareaProps): React.JSX.Element;
11
6
  //#endregion
12
7
  export { Textarea, TextareaProps };
13
8
  //# sourceMappingURL=textarea.d.ts.map
@@ -1,7 +1,6 @@
1
1
  import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
2
  import { Button } from "./button.js";
3
3
  import * as React from "react";
4
-
5
4
  //#region src/components/theme.d.ts
6
5
  type Theme = 'dark' | 'light' | 'system';
7
6
  type ThemeProviderProps = {
@@ -14,12 +13,7 @@ type ThemeProviderState = {
14
13
  setTheme: (theme: Theme) => void;
15
14
  };
16
15
  type ModeToggleProps = React.ComponentProps<typeof Button>;
17
- declare function ThemeProvider({
18
- children,
19
- defaultTheme,
20
- storageKey,
21
- ...props
22
- }: ThemeProviderProps): React.JSX.Element;
16
+ declare function ThemeProvider({ children, defaultTheme, storageKey, ...props }: ThemeProviderProps): React.JSX.Element;
23
17
  declare const useTheme: () => ThemeProviderState;
24
18
  declare function ModeToggle(props: ModeToggleProps): React.JSX.Element;
25
19
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","names":[],"sources":["../../src/components/theme.tsx"],"sourcesContent":["import type * as React from 'react'\nimport { createContext, use, useEffect, useState } from 'react'\n\nimport { IconMoon, IconSun } from '@tabler/icons-react'\n\nimport { Button } from './button'\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from './dropdown-menu'\n\nexport type Theme = 'dark' | 'light' | 'system'\n\nexport type ThemeProviderProps = {\n children: React.ReactNode\n defaultTheme?: Theme\n storageKey?: string\n}\n\nexport type ThemeProviderState = {\n theme: Theme\n setTheme: (theme: Theme) => void\n}\n\nexport type ModeToggleProps = React.ComponentProps<typeof Button>\n\nconst ThemeProviderContext = createContext({} as ThemeProviderState)\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n storageKey = 'vite-ui-theme',\n ...props\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<Theme>(() => (localStorage.getItem(storageKey) as Theme) || defaultTheme)\n\n useEffect(() => {\n const root = window.document.documentElement\n\n root.classList.remove('light', 'dark')\n\n if (theme === 'system') {\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n\n root.classList.add(systemTheme)\n return\n }\n\n root.classList.add(theme)\n }, [theme])\n\n const value = {\n theme,\n setTheme: (theme: Theme) => {\n localStorage.setItem(storageKey, theme)\n setTheme(theme)\n }\n }\n\n return (\n <ThemeProviderContext.Provider {...props} value={value}>\n {children}\n </ThemeProviderContext.Provider>\n )\n}\n\nexport const useTheme = () => {\n const context = use(ThemeProviderContext)\n\n if (context === undefined || Object.keys(context).length === 0) {\n throw new Error('useTheme must be used within a ThemeProvider')\n }\n\n return context\n}\n\nexport function ModeToggle(props: ModeToggleProps) {\n const { setTheme } = useTheme()\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"icon\" {...props}>\n <IconSun className=\"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90\" />\n <IconMoon className=\"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme('light')}>Light</DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('dark')}>Dark</DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('system')}>System</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n"],"mappings":"iYAuBA,MAAM,EAAuB,EAAc,CAAC,CAAuB,EAEnE,SAAgB,cAAc,CAC5B,WACA,eAAe,SACf,aAAa,gBACb,GAAG,GACkB,CACrB,GAAM,CAAC,EAAO,GAAY,MAAuB,aAAa,QAAQ,CAAU,GAAe,CAAY,EAE3G,MAAgB,CACd,IAAM,EAAO,OAAO,SAAS,gBAI7B,GAFA,EAAK,UAAU,OAAO,QAAS,MAAM,EAEjC,IAAU,SAAU,CACtB,IAAM,EAAc,OAAO,WAAW,8BAA8B,CAAC,CAAC,QAAU,OAAS,QAEzF,EAAK,UAAU,IAAI,CAAW,EAC9B,MACF,CAEA,EAAK,UAAU,IAAI,CAAK,CAC1B,EAAG,CAAC,CAAK,CAAC,EAEV,IAAM,EAAQ,CACZ,QACA,SAAW,GAAiB,CAC1B,aAAa,QAAQ,EAAY,CAAK,EACtC,EAAS,CAAK,CAChB,CACF,EAEA,OACE,EAAC,EAAqB,SAAtB,CAA+B,GAAI,EAAc,QAC9C,UAC4B,CAAA,CAEnC,CAEA,MAAa,aAAiB,CAC5B,IAAM,EAAU,EAAI,CAAoB,EAExC,GAAI,IAAY,IAAA,IAAa,OAAO,KAAK,CAAO,CAAC,CAAC,SAAW,EAC3D,MAAU,MAAM,8CAA8C,EAGhE,OAAO,CACT,EAEA,SAAgB,WAAW,EAAwB,CACjD,GAAM,CAAE,YAAa,SAAS,EAE9B,OACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAqB,QAAA,YACnB,EAAC,EAAD,CAAQ,QAAQ,UAAU,KAAK,OAAO,GAAI,WAA1C,CACE,EAAC,EAAD,CAAS,UAAU,sFAAwF,CAAA,EAC3G,EAAC,EAAD,CAAU,UAAU,8FAAgG,CAAA,EACpH,EAAC,OAAD,CAAM,UAAU,mBAAU,cAAkB,CAAA,CACtC,GACW,CAAA,EACrB,EAAC,EAAD,CAAqB,MAAM,eAA3B,CACE,EAAC,EAAD,CAAkB,YAAe,EAAS,OAAO,WAAG,OAAuB,CAAA,EAC3E,EAAC,EAAD,CAAkB,YAAe,EAAS,MAAM,WAAG,MAAsB,CAAA,EACzE,EAAC,EAAD,CAAkB,YAAe,EAAS,QAAQ,WAAG,QAAwB,CAAA,CAC1D,GACT,CAAA,CAAA,CAElB"}
1
+ {"version":3,"file":"theme.js","names":[],"sources":["../../src/components/theme.tsx"],"sourcesContent":["import type * as React from 'react'\nimport { createContext, use, useEffect, useState } from 'react'\n\nimport { IconMoon, IconSun } from '@tabler/icons-react'\n\nimport { Button } from './button'\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from './dropdown-menu'\n\nexport type Theme = 'dark' | 'light' | 'system'\n\nexport type ThemeProviderProps = {\n children: React.ReactNode\n defaultTheme?: Theme\n storageKey?: string\n}\n\nexport type ThemeProviderState = {\n theme: Theme\n setTheme: (theme: Theme) => void\n}\n\nexport type ModeToggleProps = React.ComponentProps<typeof Button>\n\nconst ThemeProviderContext = createContext({} as ThemeProviderState)\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n storageKey = 'vite-ui-theme',\n ...props\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<Theme>(() => (localStorage.getItem(storageKey) as Theme) || defaultTheme)\n\n useEffect(() => {\n const root = window.document.documentElement\n\n root.classList.remove('light', 'dark')\n\n if (theme === 'system') {\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n\n root.classList.add(systemTheme)\n return\n }\n\n root.classList.add(theme)\n }, [theme])\n\n const value = {\n theme,\n setTheme: (theme: Theme) => {\n localStorage.setItem(storageKey, theme)\n setTheme(theme)\n }\n }\n\n return (\n <ThemeProviderContext.Provider {...props} value={value}>\n {children}\n </ThemeProviderContext.Provider>\n )\n}\n\nexport const useTheme = () => {\n const context = use(ThemeProviderContext)\n\n if (context === undefined || Object.keys(context).length === 0) {\n throw new Error('useTheme must be used within a ThemeProvider')\n }\n\n return context\n}\n\nexport function ModeToggle(props: ModeToggleProps) {\n const { setTheme } = useTheme()\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"icon\" {...props}>\n <IconSun className=\"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90\" />\n <IconMoon className=\"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme('light')}>Light</DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('dark')}>Dark</DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme('system')}>System</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n"],"mappings":"iYAuBA,MAAM,EAAuB,EAAc,CAAC,CAAuB,EAEnE,SAAgB,cAAc,CAC5B,WACA,eAAe,SACf,aAAa,gBACb,GAAG,GACkB,CACrB,GAAM,CAAC,EAAO,GAAY,MAAuB,aAAa,QAAQ,CAAU,GAAe,CAAY,EAE3G,MAAgB,CACd,IAAM,EAAO,OAAO,SAAS,gBAI7B,GAFA,EAAK,UAAU,OAAO,QAAS,MAAM,EAEjC,IAAU,SAAU,CACtB,IAAM,EAAc,OAAO,WAAW,8BAA8B,CAAC,CAAC,QAAU,OAAS,QAEzF,EAAK,UAAU,IAAI,CAAW,EAC9B,MACF,CAEA,EAAK,UAAU,IAAI,CAAK,CAC1B,EAAG,CAAC,CAAK,CAAC,EAEV,IAAM,EAAQ,CACZ,QACA,SAAW,GAAiB,CAC1B,aAAa,QAAQ,EAAY,CAAK,EACtC,EAAS,CAAK,CAChB,CACF,EAEA,OACE,EAAC,EAAqB,SAAtB,CAA+B,GAAI,EAAc,QAC9C,UAC4B,CAAA,CAEnC,CAEA,MAAa,aAAiB,CAC5B,IAAM,EAAU,EAAI,CAAoB,EAExC,GAAI,IAAY,IAAA,IAAa,OAAO,KAAK,CAAO,CAAC,CAAC,SAAW,EAC3D,MAAU,MAAM,8CAA8C,EAGhE,OAAO,CACT,EAEA,SAAgB,WAAW,EAAwB,CACjD,GAAM,CAAE,YAAa,SAAS,EAE9B,OACE,EAAC,EAAD,CAAA,SAAA,CACE,EAAC,EAAD,CAAqB,QAAA,GACnB,SAAA,EAAC,EAAD,CAAQ,QAAQ,UAAU,KAAK,OAAO,GAAI,EAA1C,SAAA,CACE,EAAC,EAAD,CAAS,UAAU,sFAAwF,CAAA,EAC3G,EAAC,EAAD,CAAU,UAAU,8FAAgG,CAAA,EACpH,EAAC,OAAD,CAAM,UAAU,UAAU,SAAA,cAAkB,CAAA,CACtC,GACW,CAAA,EACrB,EAAC,EAAD,CAAqB,MAAM,MAA3B,SAAA,CACE,EAAC,EAAD,CAAkB,YAAe,EAAS,OAAO,EAAG,SAAA,OAAuB,CAAA,EAC3E,EAAC,EAAD,CAAkB,YAAe,EAAS,MAAM,EAAG,SAAA,MAAsB,CAAA,EACzE,EAAC,EAAD,CAAkB,YAAe,EAAS,QAAQ,EAAG,SAAA,QAAwB,CAAA,CAC1D,CACT,CAAA,CAAA,CAAA,CAAA,CAElB"}
@@ -1,18 +1,17 @@
1
1
  import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
2
  import { VariantProps } from "class-variance-authority";
3
3
  import * as React from "react";
4
-
5
4
  //#region src/components/timeline.d.ts
6
5
  declare const timelineVariants: (props?: ({
7
- size?: "sm" | "md" | "lg" | null | undefined;
6
+ size?: "lg" | "md" | "sm" | null | undefined;
8
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
8
  declare const timelineConnectorVariants: (props?: ({
10
- status?: "pending" | "completed" | "in-progress" | null | undefined;
11
- color?: "destructive" | "secondary" | "primary" | "muted" | "accent" | "gradient" | null | undefined;
9
+ status?: "completed" | "in-progress" | "pending" | null | undefined;
10
+ color?: "accent" | "destructive" | "gradient" | "muted" | "primary" | "secondary" | null | undefined;
12
11
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
12
  declare const timelineIconVariants: (props?: ({
14
- color?: "destructive" | "secondary" | "primary" | "muted" | "accent" | null | undefined;
15
- size?: "sm" | "md" | "lg" | null | undefined;
13
+ color?: "accent" | "destructive" | "muted" | "primary" | "secondary" | null | undefined;
14
+ size?: "lg" | "md" | "sm" | null | undefined;
16
15
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
17
16
  type TimelineIconSize = NonNullable<VariantProps<typeof timelineIconVariants>['size']>;
18
17
  type TimelineConnectorColor = NonNullable<VariantProps<typeof timelineConnectorVariants>['color']>;
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.js","names":[],"sources":["../../src/components/timeline.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { IconAlertCircle } from '@tabler/icons-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\nimport { Spinner } from './spinner'\n\nconst timelineVariants = cva('relative mx-auto m-0 flex w-full max-w-2xl min-h-150 list-none flex-col p-0 py-8', {\n variants: {\n size: {\n sm: 'gap-4',\n md: 'gap-6',\n lg: 'gap-8'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nconst timelineItemVariants = cva('relative w-full last:mb-0', {\n variants: {\n tone: {\n default: 'mb-2',\n error: 'mb-2'\n }\n },\n defaultVariants: {\n tone: 'default'\n }\n})\n\nconst timelineConnectorVariants = cva('w-0.5', {\n variants: {\n status: {\n completed: 'bg-primary',\n 'in-progress': 'bg-accent',\n pending: 'bg-muted'\n },\n color: {\n primary: 'bg-primary',\n secondary: 'bg-secondary',\n muted: 'bg-muted',\n accent: 'bg-accent',\n destructive: 'bg-destructive',\n gradient: 'bg-linear-to-b from-primary to-muted'\n }\n }\n})\n\nconst timelineIconVariants = cva(\n 'relative flex items-center justify-center rounded-full ring-8 ring-background shadow-sm',\n {\n variants: {\n color: {\n primary: 'bg-primary text-primary-foreground',\n secondary: 'bg-secondary text-secondary-foreground',\n muted: 'bg-muted text-muted-foreground',\n accent: 'bg-accent text-accent-foreground',\n destructive: 'bg-destructive text-destructive-foreground'\n },\n size: {\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12'\n }\n },\n defaultVariants: {\n color: 'primary',\n size: 'md'\n }\n }\n)\n\nconst timelineIconContentVariants = cva('flex items-center justify-center', {\n variants: {\n size: {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nexport type TimelineIconSize = NonNullable<VariantProps<typeof timelineIconVariants>['size']>\nexport type TimelineConnectorColor = NonNullable<VariantProps<typeof timelineConnectorVariants>['color']>\nexport type TimelineIconColor = NonNullable<VariantProps<typeof timelineIconVariants>['color']>\nexport type TimelineStatus = NonNullable<VariantProps<typeof timelineConnectorVariants>['status']>\n\nexport type TimelineProps = React.ComponentProps<'ol'> &\n VariantProps<typeof timelineVariants> & {\n iconSize?: TimelineIconSize\n }\n\nconst Timeline = React.forwardRef<HTMLOListElement, TimelineProps>(\n ({ className, iconSize, size = 'md', children, ...props }, ref) => {\n const childArray = React.Children.toArray(children)\n const totalItems = childArray.filter(isTimelineItemElement).length\n\n if (totalItems === 0) {\n return (\n <ol\n ref={ref}\n aria-label=\"Timeline\"\n data-slot=\"timeline\"\n data-size={size}\n className={cn(timelineVariants({ size }), className)}\n {...props}\n >\n <li className=\"list-none\">\n <TimelineEmpty />\n </li>\n </ol>\n )\n }\n\n let itemIndex = 0\n\n return (\n <ol\n ref={ref}\n aria-label=\"Timeline\"\n data-slot=\"timeline\"\n data-size={size}\n className={cn(timelineVariants({ size }), className)}\n {...props}\n >\n {React.Children.map(children, (child) => {\n if (!isTimelineItemElement(child)) {\n return child\n }\n\n const isLastItem = itemIndex === totalItems - 1\n itemIndex += 1\n\n return React.cloneElement(child, {\n iconSize: child.props.iconSize ?? iconSize,\n showConnector: child.props.showConnector ?? !isLastItem\n })\n })}\n </ol>\n )\n }\n)\nTimeline.displayName = 'Timeline'\n\nexport type TimelineItemProps = React.ComponentProps<'li'> & {\n date?: React.ReactNode\n title?: React.ReactNode\n description?: React.ReactNode\n icon?: React.ReactNode\n iconColor?: TimelineIconColor\n status?: TimelineStatus\n connectorColor?: TimelineConnectorColor\n showConnector?: boolean\n iconSize?: TimelineIconSize\n loading?: boolean\n error?: React.ReactNode\n}\n\nconst TimelineItem = React.forwardRef<HTMLLIElement, TimelineItemProps>(\n (\n {\n className,\n children,\n date,\n title,\n description,\n icon,\n iconColor,\n status = 'completed',\n connectorColor,\n showConnector = true,\n iconSize,\n loading = false,\n error,\n ...props\n },\n ref\n ) => {\n if (loading) {\n return (\n <li\n ref={ref}\n aria-busy=\"true\"\n data-slot=\"timeline-item\"\n data-status={status}\n className={cn(timelineItemVariants(), className)}\n {...props}\n >\n <div className=\"grid grid-cols-[minmax(auto,8rem)_auto_1fr] items-start px-4\">\n <div className=\"pr-4 text-right\">\n <div className=\"h-4 w-24 animate-pulse rounded bg-muted\" />\n </div>\n\n <div className=\"mx-3 flex flex-col items-center justify-start gap-y-2\">\n <div className=\"relative flex h-8 w-8 animate-pulse items-center justify-center rounded-full bg-muted ring-8 ring-background\">\n <Spinner />\n </div>\n {showConnector && <div className=\"h-full w-0.5 animate-pulse bg-muted\" />}\n </div>\n\n <div className=\"flex flex-col gap-2 pl-2\">\n <div className=\"space-y-2\">\n <div className=\"h-4 w-24 animate-pulse rounded bg-muted\" />\n <div className=\"h-3 w-48 animate-pulse rounded bg-muted\" />\n </div>\n </div>\n </div>\n </li>\n )\n }\n\n if (error) {\n return (\n <li\n ref={ref}\n role=\"alert\"\n data-slot=\"timeline-item\"\n data-status=\"error\"\n className={cn(timelineItemVariants({ tone: 'error' }), className)}\n {...props}\n >\n <div className=\"grid grid-cols-[minmax(auto,8rem)_auto_1fr] items-start px-4\">\n <div className=\"pr-4 text-right\">\n <TimelineTime className=\"text-destructive\">{date}</TimelineTime>\n </div>\n\n <div className=\"mx-3 flex flex-col items-center justify-start gap-y-2\">\n <div className=\"relative flex h-8 w-8 items-center justify-center rounded-full bg-destructive/20 ring-8 ring-background\">\n <IconAlertCircle className=\"h-4 w-4 text-destructive\" />\n </div>\n {showConnector && <TimelineConnector color=\"destructive\" className=\"h-full\" />}\n </div>\n\n <div className=\"flex flex-col gap-2 pl-2\">\n <TimelineHeader>\n <TimelineTitle className=\"text-destructive\">{title || 'Error'}</TimelineTitle>\n </TimelineHeader>\n <TimelineDescription className=\"text-destructive\">{error}</TimelineDescription>\n </div>\n </div>\n </li>\n )\n }\n\n if (children != null) {\n return (\n <li\n ref={ref}\n data-slot=\"timeline-item\"\n data-status={status}\n className={cn(timelineItemVariants(), className)}\n aria-current={status === 'in-progress' ? 'step' : undefined}\n {...props}\n >\n {children}\n </li>\n )\n }\n\n return (\n <li\n ref={ref}\n data-slot=\"timeline-item\"\n data-status={status}\n className={cn(timelineItemVariants(), className)}\n aria-current={status === 'in-progress' ? 'step' : undefined}\n {...props}\n >\n <div className=\"grid grid-cols-[1fr_auto_1fr] items-start gap-4\">\n <div className=\"flex flex-col justify-start pt-1\">\n <TimelineTime className=\"pr-4 text-right\">{date}</TimelineTime>\n </div>\n\n <div className=\"flex flex-col items-center\">\n <div className=\"relative z-10\">\n <TimelineIcon\n icon={icon}\n color={iconColor ?? (status === 'pending' ? 'muted' : 'primary')}\n size={iconSize}\n />\n </div>\n {showConnector && <TimelineConnector status={status} color={connectorColor} className=\"mt-2 h-16\" />}\n </div>\n\n <TimelineContent>\n <TimelineHeader>\n <TimelineTitle>{title}</TimelineTitle>\n </TimelineHeader>\n <TimelineDescription>{description}</TimelineDescription>\n </TimelineContent>\n </div>\n </li>\n )\n }\n)\nTimelineItem.displayName = 'TimelineItem'\n\nexport type TimelineTimeProps = React.ComponentProps<'time'> & {\n date?: string | Date | number\n format?: Intl.DateTimeFormatOptions\n}\n\nconst defaultDateFormat: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'short',\n day: '2-digit'\n}\n\nconst TimelineTime = React.forwardRef<HTMLTimeElement, TimelineTimeProps>(\n ({ className, date, format, children, ...props }, ref) => {\n const dateValue = React.useMemo(() => getValidDate(date), [date])\n\n const formattedDate = React.useMemo(() => {\n if (!dateValue) {\n return ''\n }\n\n return new Intl.DateTimeFormat('en-US', {\n ...defaultDateFormat,\n ...format\n }).format(dateValue)\n }, [dateValue, format])\n\n return (\n <time\n ref={ref}\n data-slot=\"timeline-time\"\n dateTime={dateValue?.toISOString()}\n className={cn('text-sm font-medium tracking-tight text-muted-foreground', className)}\n {...props}\n >\n {children || formattedDate}\n </time>\n )\n }\n)\nTimelineTime.displayName = 'TimelineTime'\n\nexport type TimelineConnectorProps = React.ComponentProps<'div'> & VariantProps<typeof timelineConnectorVariants>\n\nconst TimelineConnector = React.forwardRef<HTMLDivElement, TimelineConnectorProps>(\n ({ className, status = 'completed', color, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"timeline-connector\"\n data-status={status}\n data-color={color}\n className={cn(color ? timelineConnectorVariants({ color }) : timelineConnectorVariants({ status }), className)}\n {...props}\n />\n )\n)\nTimelineConnector.displayName = 'TimelineConnector'\n\nexport type TimelineHeaderProps = React.ComponentProps<'div'>\n\nconst TimelineHeader = React.forwardRef<HTMLDivElement, TimelineHeaderProps>(({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"timeline-header\" className={cn('flex items-center gap-4', className)} {...props} />\n))\nTimelineHeader.displayName = 'TimelineHeader'\n\nexport type TimelineTitleProps = React.ComponentProps<'h3'>\n\nconst TimelineTitle = React.forwardRef<HTMLHeadingElement, TimelineTitleProps>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n data-slot=\"timeline-title\"\n className={cn('font-semibold leading-none tracking-tight text-secondary-foreground', className)}\n {...props}\n />\n))\nTimelineTitle.displayName = 'TimelineTitle'\n\nexport type TimelineIconProps = React.ComponentProps<'div'> &\n VariantProps<typeof timelineIconVariants> & {\n icon?: React.ReactNode\n }\n\nconst TimelineIcon = React.forwardRef<HTMLDivElement, TimelineIconProps>(\n ({ className, color = 'primary', icon, size = 'md', ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"timeline-icon\"\n data-color={color}\n data-size={size}\n className={cn(timelineIconVariants({ color, size }), className)}\n {...props}\n >\n {icon ? (\n <div className={timelineIconContentVariants({ size })}>{icon}</div>\n ) : (\n <div className={cn('rounded-full', timelineIconContentVariants({ size }))} />\n )}\n </div>\n )\n)\nTimelineIcon.displayName = 'TimelineIcon'\n\nexport type TimelineDescriptionProps = React.ComponentProps<'p'>\n\nconst TimelineDescription = React.forwardRef<HTMLParagraphElement, TimelineDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n data-slot=\"timeline-description\"\n className={cn('max-w-sm text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n)\nTimelineDescription.displayName = 'TimelineDescription'\n\nexport type TimelineContentProps = React.ComponentProps<'div'>\n\nconst TimelineContent = React.forwardRef<HTMLDivElement, TimelineContentProps>(({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"timeline-content\" className={cn('flex flex-col gap-2 pl-2', className)} {...props} />\n))\nTimelineContent.displayName = 'TimelineContent'\n\nexport type TimelineEmptyProps = React.ComponentProps<'div'>\n\nconst TimelineEmpty = React.forwardRef<HTMLDivElement, TimelineEmptyProps>(({ className, children, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"timeline-empty\"\n className={cn('flex flex-col items-center justify-center p-8 text-center', className)}\n {...props}\n >\n <p className=\"text-sm text-muted-foreground\">{children || 'No timeline items to display'}</p>\n </div>\n))\nTimelineEmpty.displayName = 'TimelineEmpty'\n\nfunction getValidDate(date?: string | Date | number) {\n if (date == null || date === '') {\n return null\n }\n\n const parsedDate = date instanceof Date ? date : new Date(date)\n\n return Number.isNaN(parsedDate.getTime()) ? null : parsedDate\n}\n\nfunction isTimelineItemElement(child: React.ReactNode): child is React.ReactElement<TimelineItemProps> {\n return React.isValidElement(child) && child.type === TimelineItem\n}\n\nexport {\n Timeline,\n TimelineConnector,\n TimelineContent,\n TimelineDescription,\n TimelineEmpty,\n TimelineHeader,\n TimelineIcon,\n TimelineItem,\n TimelineTime,\n TimelineTitle,\n timelineVariants\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"timeline.js","names":[],"sources":["../../src/components/timeline.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { IconAlertCircle } from '@tabler/icons-react'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\nimport { Spinner } from './spinner'\n\nconst timelineVariants = cva('relative mx-auto m-0 flex w-full max-w-2xl min-h-150 list-none flex-col p-0 py-8', {\n variants: {\n size: {\n sm: 'gap-4',\n md: 'gap-6',\n lg: 'gap-8'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nconst timelineItemVariants = cva('relative w-full last:mb-0', {\n variants: {\n tone: {\n default: 'mb-2',\n error: 'mb-2'\n }\n },\n defaultVariants: {\n tone: 'default'\n }\n})\n\nconst timelineConnectorVariants = cva('w-0.5', {\n variants: {\n status: {\n completed: 'bg-primary',\n 'in-progress': 'bg-accent',\n pending: 'bg-muted'\n },\n color: {\n primary: 'bg-primary',\n secondary: 'bg-secondary',\n muted: 'bg-muted',\n accent: 'bg-accent',\n destructive: 'bg-destructive',\n gradient: 'bg-linear-to-b from-primary to-muted'\n }\n }\n})\n\nconst timelineIconVariants = cva(\n 'relative flex items-center justify-center rounded-full ring-8 ring-background shadow-sm',\n {\n variants: {\n color: {\n primary: 'bg-primary text-primary-foreground',\n secondary: 'bg-secondary text-secondary-foreground',\n muted: 'bg-muted text-muted-foreground',\n accent: 'bg-accent text-accent-foreground',\n destructive: 'bg-destructive text-destructive-foreground'\n },\n size: {\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12'\n }\n },\n defaultVariants: {\n color: 'primary',\n size: 'md'\n }\n }\n)\n\nconst timelineIconContentVariants = cva('flex items-center justify-center', {\n variants: {\n size: {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nexport type TimelineIconSize = NonNullable<VariantProps<typeof timelineIconVariants>['size']>\nexport type TimelineConnectorColor = NonNullable<VariantProps<typeof timelineConnectorVariants>['color']>\nexport type TimelineIconColor = NonNullable<VariantProps<typeof timelineIconVariants>['color']>\nexport type TimelineStatus = NonNullable<VariantProps<typeof timelineConnectorVariants>['status']>\n\nexport type TimelineProps = React.ComponentProps<'ol'> &\n VariantProps<typeof timelineVariants> & {\n iconSize?: TimelineIconSize\n }\n\nconst Timeline = React.forwardRef<HTMLOListElement, TimelineProps>(\n ({ className, iconSize, size = 'md', children, ...props }, ref) => {\n const childArray = React.Children.toArray(children)\n const totalItems = childArray.filter(isTimelineItemElement).length\n\n if (totalItems === 0) {\n return (\n <ol\n ref={ref}\n aria-label=\"Timeline\"\n data-slot=\"timeline\"\n data-size={size}\n className={cn(timelineVariants({ size }), className)}\n {...props}\n >\n <li className=\"list-none\">\n <TimelineEmpty />\n </li>\n </ol>\n )\n }\n\n let itemIndex = 0\n\n return (\n <ol\n ref={ref}\n aria-label=\"Timeline\"\n data-slot=\"timeline\"\n data-size={size}\n className={cn(timelineVariants({ size }), className)}\n {...props}\n >\n {React.Children.map(children, (child) => {\n if (!isTimelineItemElement(child)) {\n return child\n }\n\n const isLastItem = itemIndex === totalItems - 1\n itemIndex += 1\n\n return React.cloneElement(child, {\n iconSize: child.props.iconSize ?? iconSize,\n showConnector: child.props.showConnector ?? !isLastItem\n })\n })}\n </ol>\n )\n }\n)\nTimeline.displayName = 'Timeline'\n\nexport type TimelineItemProps = React.ComponentProps<'li'> & {\n date?: React.ReactNode\n title?: React.ReactNode\n description?: React.ReactNode\n icon?: React.ReactNode\n iconColor?: TimelineIconColor\n status?: TimelineStatus\n connectorColor?: TimelineConnectorColor\n showConnector?: boolean\n iconSize?: TimelineIconSize\n loading?: boolean\n error?: React.ReactNode\n}\n\nconst TimelineItem = React.forwardRef<HTMLLIElement, TimelineItemProps>(\n (\n {\n className,\n children,\n date,\n title,\n description,\n icon,\n iconColor,\n status = 'completed',\n connectorColor,\n showConnector = true,\n iconSize,\n loading = false,\n error,\n ...props\n },\n ref\n ) => {\n if (loading) {\n return (\n <li\n ref={ref}\n aria-busy=\"true\"\n data-slot=\"timeline-item\"\n data-status={status}\n className={cn(timelineItemVariants(), className)}\n {...props}\n >\n <div className=\"grid grid-cols-[minmax(auto,8rem)_auto_1fr] items-start px-4\">\n <div className=\"pr-4 text-right\">\n <div className=\"h-4 w-24 animate-pulse rounded bg-muted\" />\n </div>\n\n <div className=\"mx-3 flex flex-col items-center justify-start gap-y-2\">\n <div className=\"relative flex h-8 w-8 animate-pulse items-center justify-center rounded-full bg-muted ring-8 ring-background\">\n <Spinner />\n </div>\n {showConnector && <div className=\"h-full w-0.5 animate-pulse bg-muted\" />}\n </div>\n\n <div className=\"flex flex-col gap-2 pl-2\">\n <div className=\"space-y-2\">\n <div className=\"h-4 w-24 animate-pulse rounded bg-muted\" />\n <div className=\"h-3 w-48 animate-pulse rounded bg-muted\" />\n </div>\n </div>\n </div>\n </li>\n )\n }\n\n if (error) {\n return (\n <li\n ref={ref}\n role=\"alert\"\n data-slot=\"timeline-item\"\n data-status=\"error\"\n className={cn(timelineItemVariants({ tone: 'error' }), className)}\n {...props}\n >\n <div className=\"grid grid-cols-[minmax(auto,8rem)_auto_1fr] items-start px-4\">\n <div className=\"pr-4 text-right\">\n <TimelineTime className=\"text-destructive\">{date}</TimelineTime>\n </div>\n\n <div className=\"mx-3 flex flex-col items-center justify-start gap-y-2\">\n <div className=\"relative flex h-8 w-8 items-center justify-center rounded-full bg-destructive/20 ring-8 ring-background\">\n <IconAlertCircle className=\"h-4 w-4 text-destructive\" />\n </div>\n {showConnector && <TimelineConnector color=\"destructive\" className=\"h-full\" />}\n </div>\n\n <div className=\"flex flex-col gap-2 pl-2\">\n <TimelineHeader>\n <TimelineTitle className=\"text-destructive\">{title || 'Error'}</TimelineTitle>\n </TimelineHeader>\n <TimelineDescription className=\"text-destructive\">{error}</TimelineDescription>\n </div>\n </div>\n </li>\n )\n }\n\n if (children != null) {\n return (\n <li\n ref={ref}\n data-slot=\"timeline-item\"\n data-status={status}\n className={cn(timelineItemVariants(), className)}\n aria-current={status === 'in-progress' ? 'step' : undefined}\n {...props}\n >\n {children}\n </li>\n )\n }\n\n return (\n <li\n ref={ref}\n data-slot=\"timeline-item\"\n data-status={status}\n className={cn(timelineItemVariants(), className)}\n aria-current={status === 'in-progress' ? 'step' : undefined}\n {...props}\n >\n <div className=\"grid grid-cols-[1fr_auto_1fr] items-start gap-4\">\n <div className=\"flex flex-col justify-start pt-1\">\n <TimelineTime className=\"pr-4 text-right\">{date}</TimelineTime>\n </div>\n\n <div className=\"flex flex-col items-center\">\n <div className=\"relative z-10\">\n <TimelineIcon\n icon={icon}\n color={iconColor ?? (status === 'pending' ? 'muted' : 'primary')}\n size={iconSize}\n />\n </div>\n {showConnector && <TimelineConnector status={status} color={connectorColor} className=\"mt-2 h-16\" />}\n </div>\n\n <TimelineContent>\n <TimelineHeader>\n <TimelineTitle>{title}</TimelineTitle>\n </TimelineHeader>\n <TimelineDescription>{description}</TimelineDescription>\n </TimelineContent>\n </div>\n </li>\n )\n }\n)\nTimelineItem.displayName = 'TimelineItem'\n\nexport type TimelineTimeProps = React.ComponentProps<'time'> & {\n date?: string | Date | number\n format?: Intl.DateTimeFormatOptions\n}\n\nconst defaultDateFormat: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'short',\n day: '2-digit'\n}\n\nconst TimelineTime = React.forwardRef<HTMLTimeElement, TimelineTimeProps>(\n ({ className, date, format, children, ...props }, ref) => {\n const dateValue = React.useMemo(() => getValidDate(date), [date])\n\n const formattedDate = React.useMemo(() => {\n if (!dateValue) {\n return ''\n }\n\n return new Intl.DateTimeFormat('en-US', {\n ...defaultDateFormat,\n ...format\n }).format(dateValue)\n }, [dateValue, format])\n\n return (\n <time\n ref={ref}\n data-slot=\"timeline-time\"\n dateTime={dateValue?.toISOString()}\n className={cn('text-sm font-medium tracking-tight text-muted-foreground', className)}\n {...props}\n >\n {children || formattedDate}\n </time>\n )\n }\n)\nTimelineTime.displayName = 'TimelineTime'\n\nexport type TimelineConnectorProps = React.ComponentProps<'div'> & VariantProps<typeof timelineConnectorVariants>\n\nconst TimelineConnector = React.forwardRef<HTMLDivElement, TimelineConnectorProps>(\n ({ className, status = 'completed', color, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"timeline-connector\"\n data-status={status}\n data-color={color}\n className={cn(color ? timelineConnectorVariants({ color }) : timelineConnectorVariants({ status }), className)}\n {...props}\n />\n )\n)\nTimelineConnector.displayName = 'TimelineConnector'\n\nexport type TimelineHeaderProps = React.ComponentProps<'div'>\n\nconst TimelineHeader = React.forwardRef<HTMLDivElement, TimelineHeaderProps>(({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"timeline-header\" className={cn('flex items-center gap-4', className)} {...props} />\n))\nTimelineHeader.displayName = 'TimelineHeader'\n\nexport type TimelineTitleProps = React.ComponentProps<'h3'>\n\nconst TimelineTitle = React.forwardRef<HTMLHeadingElement, TimelineTitleProps>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n data-slot=\"timeline-title\"\n className={cn('font-semibold leading-none tracking-tight text-secondary-foreground', className)}\n {...props}\n />\n))\nTimelineTitle.displayName = 'TimelineTitle'\n\nexport type TimelineIconProps = React.ComponentProps<'div'> &\n VariantProps<typeof timelineIconVariants> & {\n icon?: React.ReactNode\n }\n\nconst TimelineIcon = React.forwardRef<HTMLDivElement, TimelineIconProps>(\n ({ className, color = 'primary', icon, size = 'md', ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"timeline-icon\"\n data-color={color}\n data-size={size}\n className={cn(timelineIconVariants({ color, size }), className)}\n {...props}\n >\n {icon ? (\n <div className={timelineIconContentVariants({ size })}>{icon}</div>\n ) : (\n <div className={cn('rounded-full', timelineIconContentVariants({ size }))} />\n )}\n </div>\n )\n)\nTimelineIcon.displayName = 'TimelineIcon'\n\nexport type TimelineDescriptionProps = React.ComponentProps<'p'>\n\nconst TimelineDescription = React.forwardRef<HTMLParagraphElement, TimelineDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n data-slot=\"timeline-description\"\n className={cn('max-w-sm text-sm text-muted-foreground', className)}\n {...props}\n />\n )\n)\nTimelineDescription.displayName = 'TimelineDescription'\n\nexport type TimelineContentProps = React.ComponentProps<'div'>\n\nconst TimelineContent = React.forwardRef<HTMLDivElement, TimelineContentProps>(({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"timeline-content\" className={cn('flex flex-col gap-2 pl-2', className)} {...props} />\n))\nTimelineContent.displayName = 'TimelineContent'\n\nexport type TimelineEmptyProps = React.ComponentProps<'div'>\n\nconst TimelineEmpty = React.forwardRef<HTMLDivElement, TimelineEmptyProps>(({ className, children, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"timeline-empty\"\n className={cn('flex flex-col items-center justify-center p-8 text-center', className)}\n {...props}\n >\n <p className=\"text-sm text-muted-foreground\">{children || 'No timeline items to display'}</p>\n </div>\n))\nTimelineEmpty.displayName = 'TimelineEmpty'\n\nfunction getValidDate(date?: string | Date | number) {\n if (date == null || date === '') {\n return null\n }\n\n const parsedDate = date instanceof Date ? date : new Date(date)\n\n return Number.isNaN(parsedDate.getTime()) ? null : parsedDate\n}\n\nfunction isTimelineItemElement(child: React.ReactNode): child is React.ReactElement<TimelineItemProps> {\n return React.isValidElement(child) && child.type === TimelineItem\n}\n\nexport {\n Timeline,\n TimelineConnector,\n TimelineContent,\n TimelineDescription,\n TimelineEmpty,\n TimelineHeader,\n TimelineIcon,\n TimelineItem,\n TimelineTime,\n TimelineTitle,\n timelineVariants\n}\n"],"mappings":"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"}
@@ -3,31 +3,14 @@ import { toggleVariants } from "./toggle.js";
3
3
  import { ToggleGroup as ToggleGroup$1 } from "radix-ui";
4
4
  import { VariantProps } from "class-variance-authority";
5
5
  import * as React from "react";
6
-
7
6
  //#region src/components/toggle-group.d.ts
8
7
  type ToggleGroupProps = React.ComponentProps<typeof ToggleGroup$1.Root> & VariantProps<typeof toggleVariants> & {
9
8
  spacing?: number;
10
9
  orientation?: 'horizontal' | 'vertical';
11
10
  };
12
11
  type ToggleGroupItemProps = React.ComponentProps<typeof ToggleGroup$1.Item> & VariantProps<typeof toggleVariants>;
13
- declare function ToggleGroup({
14
- className,
15
- variant,
16
- color,
17
- size,
18
- spacing,
19
- orientation,
20
- children,
21
- ...props
22
- }: ToggleGroupProps): React.JSX.Element;
23
- declare function ToggleGroupItem({
24
- className,
25
- children,
26
- variant,
27
- color,
28
- size,
29
- ...props
30
- }: ToggleGroupItemProps): React.JSX.Element;
12
+ declare function ToggleGroup({ className, variant, color, size, spacing, orientation, children, ...props }: ToggleGroupProps): React.JSX.Element;
13
+ declare function ToggleGroupItem({ className, children, variant, color, size, ...props }: ToggleGroupItemProps): React.JSX.Element;
31
14
  //#endregion
32
15
  export { ToggleGroup, ToggleGroupItem, ToggleGroupItemProps, ToggleGroupProps };
33
16
  //# sourceMappingURL=toggle-group.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-group.js","names":["ToggleGroupPrimitive"],"sources":["../../src/components/toggle-group.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport type { VariantProps } from 'class-variance-authority'\nimport { ToggleGroup as ToggleGroupPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\nimport { toggleVariants } from './toggle'\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n orientation?: 'horizontal' | 'vertical'\n }\n>({\n size: 'md',\n variant: 'ghost',\n color: 'primary',\n spacing: 0,\n orientation: 'horizontal'\n})\n\nexport type ToggleGroupProps = React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n orientation?: 'horizontal' | 'vertical'\n }\n\nexport type ToggleGroupItemProps = React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>\n\nfunction ToggleGroup({\n className,\n variant,\n color,\n size,\n spacing = 0,\n orientation = 'horizontal',\n children,\n ...props\n}: ToggleGroupProps) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant ?? 'ghost'}\n data-color={color ?? 'primary'}\n data-size={size ?? 'md'}\n data-spacing={spacing}\n data-orientation={orientation}\n style={{ '--gap': spacing } as React.CSSProperties}\n className={cn(\n 'group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch',\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, color, size, spacing, orientation }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant = 'ghost',\n color = 'primary',\n size = 'md',\n ...props\n}: ToggleGroupItemProps) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-color={context.color || color}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n 'shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t',\n toggleVariants({\n variant: context.variant || variant,\n color: context.color || color,\n size: context.size || size\n }),\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"],"mappings":"iOAQA,MAAM,EAAqB,EAAM,cAK/B,CACA,KAAM,KACN,QAAS,QACT,MAAO,UACP,QAAS,EACT,YAAa,YACf,CAAC,EAWD,SAAS,YAAY,CACnB,YACA,UACA,QACA,OACA,UAAU,EACV,cAAc,aACd,WACA,GAAG,GACgB,CACnB,OACE,EAACA,EAAqB,KAAtB,CACE,YAAU,eACV,eAAc,GAAW,QACzB,aAAY,GAAS,UACrB,YAAW,GAAQ,KACnB,eAAc,EACd,mBAAkB,EAClB,MAAO,CAAE,QAAS,CAAQ,EAC1B,UAAW,EACT,oMACA,CACF,EACA,GAAI,WAEJ,EAAC,EAAmB,SAApB,CAA6B,MAAO,CAAE,UAAS,QAAO,OAAM,UAAS,aAAY,EAC9E,UAC0B,CAAA,CACJ,CAAA,CAE/B,CAEA,SAAS,gBAAgB,CACvB,YACA,WACA,UAAU,QACV,QAAQ,UACR,OAAO,KACP,GAAG,GACoB,CACvB,IAAM,EAAU,EAAM,WAAW,CAAkB,EAEnD,OACE,EAACA,EAAqB,KAAtB,CACE,YAAU,oBACV,eAAc,EAAQ,SAAW,EACjC,aAAY,EAAQ,OAAS,EAC7B,YAAW,EAAQ,MAAQ,EAC3B,eAAc,EAAQ,QACtB,UAAW,EACT,qvBACA,EAAe,CACb,QAAS,EAAQ,SAAW,EAC5B,MAAO,EAAQ,OAAS,EACxB,KAAM,EAAQ,MAAQ,CACxB,CAAC,EACD,CACF,EACA,GAAI,EAEH,UACwB,CAAA,CAE/B"}
1
+ {"version":3,"file":"toggle-group.js","names":["ToggleGroupPrimitive"],"sources":["../../src/components/toggle-group.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport type { VariantProps } from 'class-variance-authority'\nimport { ToggleGroup as ToggleGroupPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\nimport { toggleVariants } from './toggle'\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n orientation?: 'horizontal' | 'vertical'\n }\n>({\n size: 'md',\n variant: 'ghost',\n color: 'primary',\n spacing: 0,\n orientation: 'horizontal'\n})\n\nexport type ToggleGroupProps = React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n orientation?: 'horizontal' | 'vertical'\n }\n\nexport type ToggleGroupItemProps = React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>\n\nfunction ToggleGroup({\n className,\n variant,\n color,\n size,\n spacing = 0,\n orientation = 'horizontal',\n children,\n ...props\n}: ToggleGroupProps) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant ?? 'ghost'}\n data-color={color ?? 'primary'}\n data-size={size ?? 'md'}\n data-spacing={spacing}\n data-orientation={orientation}\n style={{ '--gap': spacing } as React.CSSProperties}\n className={cn(\n 'group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch',\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, color, size, spacing, orientation }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant = 'ghost',\n color = 'primary',\n size = 'md',\n ...props\n}: ToggleGroupItemProps) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-color={context.color || color}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n 'shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t',\n toggleVariants({\n variant: context.variant || variant,\n color: context.color || color,\n size: context.size || size\n }),\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"],"mappings":"iOAQA,MAAM,EAAqB,EAAM,cAK/B,CACA,KAAM,KACN,QAAS,QACT,MAAO,UACP,QAAS,EACT,YAAa,YACf,CAAC,EAWD,SAAS,YAAY,CACnB,YACA,UACA,QACA,OACA,UAAU,EACV,cAAc,aACd,WACA,GAAG,GACgB,CACnB,OACE,EAACA,EAAqB,KAAtB,CACE,YAAU,eACV,eAAc,GAAW,QACzB,aAAY,GAAS,UACrB,YAAW,GAAQ,KACnB,eAAc,EACd,mBAAkB,EAClB,MAAO,CAAE,QAAS,CAAQ,EAC1B,UAAW,EACT,oMACA,CACF,EACA,GAAI,EAEJ,SAAA,EAAC,EAAmB,SAApB,CAA6B,MAAO,CAAE,UAAS,QAAO,OAAM,UAAS,aAAY,EAC9E,UAC0B,CAAA,CACJ,CAAA,CAE/B,CAEA,SAAS,gBAAgB,CACvB,YACA,WACA,UAAU,QACV,QAAQ,UACR,OAAO,KACP,GAAG,GACoB,CACvB,IAAM,EAAU,EAAM,WAAW,CAAkB,EAEnD,OACE,EAACA,EAAqB,KAAtB,CACE,YAAU,oBACV,eAAc,EAAQ,SAAW,EACjC,aAAY,EAAQ,OAAS,EAC7B,YAAW,EAAQ,MAAQ,EAC3B,eAAc,EAAQ,QACtB,UAAW,EACT,qvBACA,EAAe,CACb,QAAS,EAAQ,SAAW,EAC5B,MAAO,EAAQ,OAAS,EACxB,KAAM,EAAQ,MAAQ,CACxB,CAAC,EACD,CACF,EACA,GAAI,EAEH,UACwB,CAAA,CAE/B"}
@@ -2,21 +2,14 @@ import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
2
  import { Toggle as Toggle$1 } from "radix-ui";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
  import * as React from "react";
5
-
6
5
  //#region src/components/toggle.d.ts
7
6
  declare const toggleVariants: (props?: ({
8
- variant?: "outline" | "ghost" | null | undefined;
9
- color?: "primary" | "brand" | "gray" | "zinc" | "red" | "yellow" | "blue" | "indigo" | "pink" | "green" | null | undefined;
10
- size?: "sm" | "md" | "lg" | null | undefined;
7
+ variant?: "ghost" | "outline" | null | undefined;
8
+ color?: "blue" | "brand" | "gray" | "green" | "indigo" | "pink" | "primary" | "red" | "yellow" | "zinc" | null | undefined;
9
+ size?: "lg" | "md" | "sm" | null | undefined;
11
10
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
11
  type ToggleProps = React.ComponentProps<typeof Toggle$1.Root> & VariantProps<typeof toggleVariants>;
13
- declare function Toggle({
14
- className,
15
- variant,
16
- color,
17
- size,
18
- ...props
19
- }: ToggleProps): React.JSX.Element;
12
+ declare function Toggle({ className, variant, color, size, ...props }: ToggleProps): React.JSX.Element;
20
13
  //#endregion
21
14
  export { Toggle, ToggleProps, toggleVariants };
22
15
  //# sourceMappingURL=toggle.d.ts.map
@@ -1,7 +1,6 @@
1
1
  import { n as __name } from "../rolldown-runtime-Bdj-bS2b.js";
2
2
  import { Tooltip as Tooltip$1 } from "radix-ui";
3
3
  import * as React from "react";
4
-
5
4
  //#region src/components/tooltip.d.ts
6
5
  type TooltipProviderProps = React.ComponentProps<typeof Tooltip$1.Provider>;
7
6
  type TooltipRootProps = React.ComponentProps<typeof Tooltip$1.Root>;
@@ -12,33 +11,11 @@ type TooltipProps = Omit<TooltipRootProps, 'children'> & Omit<TooltipContentProp
12
11
  label?: React.ReactNode;
13
12
  disabled?: boolean;
14
13
  };
15
- declare function TooltipProvider({
16
- delayDuration,
17
- ...props
18
- }: TooltipProviderProps): React.JSX.Element;
19
- declare function TooltipRoot({
20
- ...props
21
- }: TooltipRootProps): React.JSX.Element;
22
- declare function Tooltip({
23
- label,
24
- children,
25
- disabled,
26
- open,
27
- defaultOpen,
28
- onOpenChange,
29
- delayDuration,
30
- disableHoverableContent,
31
- ...contentProps
32
- }: TooltipProps): string | number | bigint | boolean | React.JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | undefined;
33
- declare function TooltipTrigger({
34
- ...props
35
- }: TooltipTriggerProps): React.JSX.Element;
36
- declare function TooltipContent({
37
- className,
38
- sideOffset,
39
- children,
40
- ...props
41
- }: TooltipContentProps): React.JSX.Element;
14
+ declare function TooltipProvider({ delayDuration, ...props }: TooltipProviderProps): React.JSX.Element;
15
+ declare function TooltipRoot({ ...props }: TooltipRootProps): React.JSX.Element;
16
+ declare function Tooltip({ label, children, disabled, open, defaultOpen, onOpenChange, delayDuration, disableHoverableContent, ...contentProps }: TooltipProps): string | number | bigint | boolean | React.JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | Iterable<React.ReactNode> | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | React.ReactPortal | null | undefined> | null | undefined;
17
+ declare function TooltipTrigger({ ...props }: TooltipTriggerProps): React.JSX.Element;
18
+ declare function TooltipContent({ className, sideOffset, children, ...props }: TooltipContentProps): React.JSX.Element;
42
19
  //#endregion
43
20
  export { Tooltip, TooltipContent, TooltipContentProps, TooltipProps, TooltipProvider, TooltipProviderProps, TooltipRoot, TooltipRootProps, TooltipTrigger, TooltipTriggerProps };
44
21
  //# sourceMappingURL=tooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","names":["TooltipPrimitive"],"sources":["../../src/components/tooltip.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { Tooltip as TooltipPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\nexport type TooltipProviderProps = React.ComponentProps<typeof TooltipPrimitive.Provider>\n\nexport type TooltipRootProps = React.ComponentProps<typeof TooltipPrimitive.Root>\n\nexport type TooltipTriggerProps = React.ComponentProps<typeof TooltipPrimitive.Trigger>\n\nexport type TooltipContentProps = React.ComponentProps<typeof TooltipPrimitive.Content>\n\nexport type TooltipProps = Omit<TooltipRootProps, 'children'> &\n Omit<TooltipContentProps, 'children'> & {\n children?: React.ReactNode\n label?: React.ReactNode\n disabled?: boolean\n }\n\nfunction TooltipProvider({ delayDuration = 0, ...props }: TooltipProviderProps) {\n return <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />\n}\n\nfunction TooltipRoot({ ...props }: TooltipRootProps) {\n return <TooltipPrimitive.Root data-slot=\"tooltip-root\" {...props} />\n}\n\nfunction Tooltip({\n label,\n children,\n disabled = false,\n open,\n defaultOpen,\n onOpenChange,\n delayDuration,\n disableHoverableContent,\n ...contentProps\n}: TooltipProps) {\n if (disabled) {\n return children\n }\n\n return (\n <TooltipRoot\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n delayDuration={delayDuration}\n disableHoverableContent={disableHoverableContent}\n >\n <TooltipTrigger asChild>{children}</TooltipTrigger>\n <TooltipContent {...contentProps}>{label}</TooltipContent>\n </TooltipRoot>\n )\n}\n\nfunction TooltipTrigger({ ...props }: TooltipTriggerProps) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({ className, sideOffset = 0, children, ...props }: TooltipContentProps) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'bg-foreground text-background z-50 w-fit max-w-xs rounded-md px-3 py-1.5 text-xs origin-(--radix-tooltip-content-transform-origin)',\n 'data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95',\n 'data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"size-2.5 rotate-45 rounded-[2px] bg-foreground fill-foreground z-50 translate-y-[calc(-50%-2px)]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipRoot, TooltipTrigger }\n"],"mappings":"kKAqBA,SAAS,gBAAgB,CAAE,gBAAgB,EAAG,GAAG,GAA+B,CAC9E,OAAO,EAACA,EAAiB,SAAlB,CAA2B,YAAU,mBAAkC,gBAAe,GAAI,CAAQ,CAAA,CAC3G,CAEA,SAAS,YAAY,CAAE,GAAG,GAA2B,CACnD,OAAO,EAACA,EAAiB,KAAlB,CAAuB,YAAU,eAAe,GAAI,CAAQ,CAAA,CACrE,CAEA,SAAS,QAAQ,CACf,QACA,WACA,WAAW,GACX,OACA,cACA,eACA,gBACA,0BACA,GAAG,GACY,CAKf,OAJI,EACK,EAIP,EAAC,YAAD,CACQ,OACO,cACC,eACC,gBACU,mCAL3B,CAOE,EAAC,eAAD,CAAgB,QAAA,GAAS,UAAyB,CAAA,EAClD,EAAC,eAAD,CAAgB,GAAI,WAAe,CAAsB,CAAA,CAC9C,GAEjB,CAEA,SAAS,eAAe,CAAE,GAAG,GAA8B,CACzD,OAAO,EAACA,EAAiB,QAAlB,CAA0B,YAAU,kBAAkB,GAAI,CAAQ,CAAA,CAC3E,CAEA,SAAS,eAAe,CAAE,YAAW,aAAa,EAAG,WAAU,GAAG,GAA8B,CAC9F,OACE,EAACA,EAAiB,OAAlB,CAAA,SACE,EAACA,EAAiB,QAAlB,CACE,YAAU,kBACE,aACZ,UAAW,EACT,qIACA,8KACA,yEACA,8JACA,CACF,EACA,GAAI,WAVN,CAYG,EACD,EAACA,EAAiB,MAAlB,CAAwB,UAAU,kGAAoG,CAAA,CAC9G,GACH,CAAA,CAE7B"}
1
+ {"version":3,"file":"tooltip.js","names":["TooltipPrimitive"],"sources":["../../src/components/tooltip.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { Tooltip as TooltipPrimitive } from 'radix-ui'\n\nimport { cn } from '../lib/utils'\n\nexport type TooltipProviderProps = React.ComponentProps<typeof TooltipPrimitive.Provider>\n\nexport type TooltipRootProps = React.ComponentProps<typeof TooltipPrimitive.Root>\n\nexport type TooltipTriggerProps = React.ComponentProps<typeof TooltipPrimitive.Trigger>\n\nexport type TooltipContentProps = React.ComponentProps<typeof TooltipPrimitive.Content>\n\nexport type TooltipProps = Omit<TooltipRootProps, 'children'> &\n Omit<TooltipContentProps, 'children'> & {\n children?: React.ReactNode\n label?: React.ReactNode\n disabled?: boolean\n }\n\nfunction TooltipProvider({ delayDuration = 0, ...props }: TooltipProviderProps) {\n return <TooltipPrimitive.Provider data-slot=\"tooltip-provider\" delayDuration={delayDuration} {...props} />\n}\n\nfunction TooltipRoot({ ...props }: TooltipRootProps) {\n return <TooltipPrimitive.Root data-slot=\"tooltip-root\" {...props} />\n}\n\nfunction Tooltip({\n label,\n children,\n disabled = false,\n open,\n defaultOpen,\n onOpenChange,\n delayDuration,\n disableHoverableContent,\n ...contentProps\n}: TooltipProps) {\n if (disabled) {\n return children\n }\n\n return (\n <TooltipRoot\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n delayDuration={delayDuration}\n disableHoverableContent={disableHoverableContent}\n >\n <TooltipTrigger asChild>{children}</TooltipTrigger>\n <TooltipContent {...contentProps}>{label}</TooltipContent>\n </TooltipRoot>\n )\n}\n\nfunction TooltipTrigger({ ...props }: TooltipTriggerProps) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({ className, sideOffset = 0, children, ...props }: TooltipContentProps) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n 'bg-foreground text-background z-50 w-fit max-w-xs rounded-md px-3 py-1.5 text-xs origin-(--radix-tooltip-content-transform-origin)',\n 'data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95',\n 'data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"size-2.5 rotate-45 rounded-[2px] bg-foreground fill-foreground z-50 translate-y-[calc(-50%-2px)]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipRoot, TooltipTrigger }\n"],"mappings":"kKAqBA,SAAS,gBAAgB,CAAE,gBAAgB,EAAG,GAAG,GAA+B,CAC9E,OAAO,EAACA,EAAiB,SAAlB,CAA2B,YAAU,mBAAkC,gBAAe,GAAI,CAAQ,CAAA,CAC3G,CAEA,SAAS,YAAY,CAAE,GAAG,GAA2B,CACnD,OAAO,EAACA,EAAiB,KAAlB,CAAuB,YAAU,eAAe,GAAI,CAAQ,CAAA,CACrE,CAEA,SAAS,QAAQ,CACf,QACA,WACA,WAAW,GACX,OACA,cACA,eACA,gBACA,0BACA,GAAG,GACY,CAKf,OAJI,EACK,EAIP,EAAC,YAAD,CACQ,OACO,cACC,eACC,gBACU,0BAL3B,SAAA,CAOE,EAAC,eAAD,CAAgB,QAAA,GAAS,UAAyB,CAAA,EAClD,EAAC,eAAD,CAAgB,GAAI,EAAe,SAAA,CAAsB,CAAA,CAC9C,GAEjB,CAEA,SAAS,eAAe,CAAE,GAAG,GAA8B,CACzD,OAAO,EAACA,EAAiB,QAAlB,CAA0B,YAAU,kBAAkB,GAAI,CAAQ,CAAA,CAC3E,CAEA,SAAS,eAAe,CAAE,YAAW,aAAa,EAAG,WAAU,GAAG,GAA8B,CAC9F,OACE,EAACA,EAAiB,OAAlB,CAAA,SACE,EAACA,EAAiB,QAAlB,CACE,YAAU,kBACE,aACZ,UAAW,EACT,qIACA,8KACA,yEACA,8JACA,CACF,EACA,GAAI,EAVN,SAAA,CAYG,EACD,EAACA,EAAiB,MAAlB,CAAwB,UAAU,kGAAoG,CAAA,CAC9G,CACH,CAAA,CAAA,CAAA,CAE7B"}