@uselets/ui 2.0.0 → 2.0.2
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.
- package/dist/{as-child-Dxg3Xo1G.d.ts → as-child-T9W73ZYU.d.ts} +1 -3
- package/dist/{chart-B_6nC_ih.d.ts → chart-8rgtsk95.d.ts} +1 -3
- package/dist/cli/uselets.mjs.map +1 -1
- package/dist/components/accordion.d.ts +1 -3
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/alert-dialog.d.ts +5 -5
- package/dist/components/alert-dialog.js +1 -1
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/alert.d.ts +0 -2
- package/dist/components/alert.js.map +1 -1
- package/dist/components/anchor.d.ts +1 -3
- package/dist/components/anchor.js.map +1 -1
- package/dist/components/area-chart.d.ts +1 -3
- package/dist/components/area-chart.js.map +1 -1
- package/dist/components/avatar.d.ts +1 -3
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/badge.d.ts +1 -3
- package/dist/components/badge.js.map +1 -1
- package/dist/components/bar-chart.d.ts +1 -3
- package/dist/components/bar-chart.js.map +1 -1
- package/dist/components/bottom-nav.d.ts +1 -3
- package/dist/components/bottom-nav.js.map +1 -1
- package/dist/components/breadcrumb.d.ts +1 -3
- package/dist/components/breadcrumb.js.map +1 -1
- package/dist/components/button-group.d.ts +1 -3
- package/dist/components/button-group.js.map +1 -1
- package/dist/components/button.d.ts +1 -3
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar.d.ts +0 -2
- package/dist/components/calendar.js +1 -1
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/card.d.ts +0 -2
- package/dist/components/card.js.map +1 -1
- package/dist/components/carousel.d.ts +0 -2
- package/dist/components/carousel.js.map +1 -1
- package/dist/components/center.d.ts +0 -2
- package/dist/components/center.js.map +1 -1
- package/dist/components/chart.d.ts +1 -1
- package/dist/components/chart.js.map +1 -1
- package/dist/components/checkbox.d.ts +0 -2
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/code.d.ts +0 -2
- package/dist/components/code.js.map +1 -1
- package/dist/components/collapsible.d.ts +1 -3
- package/dist/components/collapsible.js.map +1 -1
- package/dist/components/combobox.d.ts +1 -3
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/command.d.ts +0 -2
- package/dist/components/command.js.map +1 -1
- package/dist/components/container.d.ts +0 -2
- package/dist/components/container.js.map +1 -1
- package/dist/components/data-table.d.ts +0 -2
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-range-picker.d.ts +0 -2
- package/dist/components/date-range-picker.js.map +1 -1
- package/dist/components/dialog.d.ts +5 -5
- package/dist/components/dialog.js +1 -1
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/direction.d.ts +0 -2
- package/dist/components/donut-chart.d.ts +0 -2
- package/dist/components/donut-chart.js.map +1 -1
- package/dist/components/drawer.d.ts +2 -4
- package/dist/components/drawer.js +1 -1
- package/dist/components/drawer.js.map +1 -1
- package/dist/components/dropdown-menu.d.ts +1 -3
- package/dist/components/dropdown-menu.js.map +1 -1
- package/dist/components/dropzone.d.ts +0 -2
- package/dist/components/dropzone.js.map +1 -1
- package/dist/components/empty.d.ts +0 -2
- package/dist/components/empty.js.map +1 -1
- package/dist/components/field.d.ts +0 -2
- package/dist/components/field.js.map +1 -1
- package/dist/components/flex.d.ts +0 -2
- package/dist/components/flex.js.map +1 -1
- package/dist/components/grid.d.ts +0 -2
- package/dist/components/grid.js.map +1 -1
- package/dist/components/group.d.ts +0 -2
- package/dist/components/group.js.map +1 -1
- package/dist/components/heading.d.ts +1 -3
- package/dist/components/heading.js.map +1 -1
- package/dist/components/hover-card.d.ts +1 -3
- package/dist/components/hover-card.js.map +1 -1
- package/dist/components/input-group.d.ts +0 -2
- package/dist/components/input-group.js.map +1 -1
- package/dist/components/input-otp.d.ts +0 -2
- package/dist/components/input-otp.js.map +1 -1
- package/dist/components/input.d.ts +0 -2
- package/dist/components/input.js.map +1 -1
- package/dist/components/kbd.d.ts +0 -2
- package/dist/components/kbd.js.map +1 -1
- package/dist/components/label.d.ts +1 -3
- package/dist/components/label.js.map +1 -1
- package/dist/components/list.d.ts +1 -3
- package/dist/components/list.js.map +1 -1
- package/dist/components/logo.d.ts +0 -2
- package/dist/components/marker.d.ts +1 -3
- package/dist/components/marker.js.map +1 -1
- package/dist/components/mask-input.d.ts +0 -2
- package/dist/components/mask-input.js.map +1 -1
- package/dist/components/native-select.d.ts +0 -2
- package/dist/components/native-select.js.map +1 -1
- package/dist/components/navigation-menu.d.ts +1 -3
- package/dist/components/navigation-menu.js.map +1 -1
- package/dist/components/number-field.d.ts +1 -3
- package/dist/components/number-field.js.map +1 -1
- package/dist/components/pagination.d.ts +0 -2
- package/dist/components/pagination.js.map +1 -1
- package/dist/components/phone-input.d.ts +0 -2
- package/dist/components/phone-input.js.map +1 -1
- package/dist/components/pie-chart.d.ts +1 -3
- package/dist/components/pie-chart.js.map +1 -1
- package/dist/components/popover.d.ts +1 -3
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress.d.ts +0 -2
- package/dist/components/progress.js.map +1 -1
- package/dist/components/radio-group.d.ts +0 -2
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/resizable.d.ts +0 -2
- package/dist/components/resizable.js.map +1 -1
- package/dist/components/ring-progress.d.ts +0 -2
- package/dist/components/ring-progress.js.map +1 -1
- package/dist/components/scroll-area.d.ts +0 -2
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/select.d.ts +1 -3
- package/dist/components/select.js.map +1 -1
- package/dist/components/separator.d.ts +1 -3
- package/dist/components/separator.js.map +1 -1
- package/dist/components/sidebar.d.ts +1 -3
- package/dist/components/sidebar.js.map +1 -1
- package/dist/components/simple-grid.d.ts +0 -2
- package/dist/components/simple-grid.js.map +1 -1
- package/dist/components/skeleton.d.ts +0 -2
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/slider.d.ts +0 -2
- package/dist/components/slider.js.map +1 -1
- package/dist/components/sonner.d.ts +0 -2
- package/dist/components/sonner.js.map +1 -1
- package/dist/components/spinner.d.ts +0 -2
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/stack.d.ts +0 -2
- package/dist/components/stack.js.map +1 -1
- package/dist/components/stepper.d.ts +1 -3
- package/dist/components/stepper.js.map +1 -1
- package/dist/components/switch.d.ts +0 -2
- package/dist/components/switch.js.map +1 -1
- package/dist/components/table.d.ts +0 -2
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.d.ts +1 -3
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/text.d.ts +1 -3
- package/dist/components/text.js.map +1 -1
- package/dist/components/textarea.d.ts +0 -2
- package/dist/components/textarea.js.map +1 -1
- package/dist/components/theme.d.ts +0 -2
- package/dist/components/theme.js.map +1 -1
- package/dist/components/timeline.d.ts +0 -2
- package/dist/components/timeline.js.map +1 -1
- package/dist/components/toggle-group.d.ts +1 -3
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toggle.d.ts +1 -3
- package/dist/components/toggle.js.map +1 -1
- package/dist/components/tooltip.d.ts +1 -3
- package/dist/components/tooltip.js.map +1 -1
- package/dist/components/unstyled-button.d.ts +1 -3
- package/dist/components/unstyled-button.js.map +1 -1
- package/dist/components/visibility.d.ts +0 -2
- package/dist/components/visibility.js.map +1 -1
- package/dist/hooks/use-breakpoint-value.d.ts +0 -2
- package/dist/hooks/use-breakpoint-value.js.map +1 -1
- package/dist/hooks/use-breakpoint.d.ts +0 -2
- package/dist/hooks/use-breakpoint.js.map +1 -1
- package/dist/hooks/use-disclosure.d.ts +0 -2
- package/dist/hooks/use-disclosure.js.map +1 -1
- package/dist/hooks/use-document-visibility.d.ts +0 -2
- package/dist/hooks/use-document-visibility.js.map +1 -1
- package/dist/hooks/use-hotkeys.d.ts +1 -1
- package/dist/hooks/use-idle.d.ts +0 -2
- package/dist/hooks/use-idle.js.map +1 -1
- package/dist/hooks/use-interval.d.ts +0 -2
- package/dist/hooks/use-interval.js.map +1 -1
- package/dist/hooks/use-local-storage.d.ts +0 -2
- package/dist/hooks/use-local-storage.js.map +1 -1
- package/dist/hooks/use-mask.d.ts +0 -2
- package/dist/hooks/use-mask.js.map +1 -1
- package/dist/hooks/use-mobile.d.ts +0 -2
- package/dist/hooks/use-mobile.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/lib/as-child.d.ts +1 -1
- package/dist/lib/as-child.js.map +1 -1
- package/dist/lib/badge.d.ts +0 -2
- package/dist/lib/badge.js.map +1 -1
- package/dist/lib/button.d.ts +0 -2
- package/dist/lib/button.js.map +1 -1
- package/dist/lib/color.d.ts +0 -2
- package/dist/lib/color.js.map +1 -1
- package/dist/lib/compose-refs.d.ts +0 -2
- package/dist/lib/compose-refs.js.map +1 -1
- package/dist/lib/progress.d.ts +0 -2
- package/dist/lib/progress.js.map +1 -1
- package/dist/lib/utils.d.ts +0 -2
- package/dist/lib/utils.js.map +1 -1
- package/dist/logo--R3_XDgA.js.map +1 -1
- package/dist/postcss.config.js.map +1 -1
- package/dist/resolve-class-name-BurP8ngI.js.map +1 -1
- package/dist/skills/uselets-ui/references/component-catalog.md +3 -3
- package/dist/{use-hotkeys-D1_TEIwN.d.ts → use-hotkeys-BVm0IGb8.d.ts} +1 -5
- package/dist/use-hotkeys-YDJmGWX6.js.map +1 -1
- package/package.json +9 -9
- package/skills/uselets-ui/references/component-catalog.md +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stepper.js","names":["StepperContext","createContext","StepItemContext","ctx","useContext","props","activeStep","setActiveStep","useState","defaultValue","baseId","useId","handleSetActiveStep","useCallback","value","step","onValueChange","currentStep","getTriggerId","getContentId","contextValue","useMemo","Children","children","isValidElement","child","orientation","indicators","cn","className","state","completed","isLoading","loading","disabled","root","trigger","node","isSelected","isAriaDisabled","asChild","isDisabled","onClick","event","onKeyDown","triggers","index","target","useAsChild","tabIndex","isActive","forceMount"],"sources":["../../src/components/stepper.tsx"],"sourcesContent":["import {\n Children,\n createContext,\n isValidElement,\n type ReactElement,\n useCallback,\n useContext,\n useId,\n useMemo,\n useState\n} from 'react'\n\nimport { type AsChildProps, useAsChild } from '../lib/as-child'\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 indicators: StepIndicators\n getTriggerId: (step: number) => string\n getContentId: (step: number) => string\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\nexport type StepperProps = Omit<React.ComponentProps<'div'>, 'defaultValue'> & {\n /**\n * Initial step (uncontrolled), starting at `1`.\n * @default 1\n */\n defaultValue?: number\n /** Current step (controlled). */\n value?: number\n /** Called with the new step when the user moves to it. */\n onValueChange?: (value: number) => void\n /**\n * Layout of the steps.\n * @default 'horizontal'\n */\n orientation?: StepperOrientation\n /** Custom indicator content per state: `active`, `completed`, `inactive`, `loading`. */\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 baseId = useId()\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 const getTriggerId = useCallback((step: number) => `${baseId}-tab-${step}`, [baseId])\n const getContentId = useCallback((step: number) => `${baseId}-panel-${step}`, [baseId])\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 indicators,\n getTriggerId,\n getContentId\n }),\n [currentStep, handleSetActiveStep, children, orientation, indicators, getTriggerId, getContentId]\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\nexport type StepperItemProps = React.ComponentProps<'div'> & {\n /** Number of this step, starting at `1`. */\n step: number\n /**\n * Marks the step as completed.\n * @default false\n */\n completed?: boolean\n /**\n * Prevents navigating to this step.\n * @default false\n */\n disabled?: boolean\n /**\n * Shows the loading indicator for this step.\n * @default false\n */\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\nexport type StepperTriggerProps = AsChildProps<'button'>\n\n// Enabled triggers of the closest Stepper, in DOM order (nested steppers excluded).\nfunction getStepperTriggers(trigger: HTMLElement) {\n const root = trigger.closest('[data-slot=\"stepper\"]')\n if (!root) return []\n\n return Array.from(root.querySelectorAll<HTMLElement>('[data-slot=\"stepper-trigger\"]')).filter(\n (node) => node.closest('[data-slot=\"stepper\"]') === root && !node.matches(':disabled, [aria-disabled=\"true\"]')\n )\n}\n\nfunction StepperTrigger({\n asChild = false,\n className,\n children,\n tabIndex,\n onClick,\n onKeyDown,\n ...props\n}: StepperTriggerProps) {\n const { setActiveStep, activeStep, getTriggerId, getContentId } = useStepper()\n const { step, state, isDisabled, isLoading } = useStepItem()\n const isSelected = activeStep === step\n // A non-button child can't be natively disabled, so it gets `aria-disabled` instead.\n const isAriaDisabled = asChild && isDisabled\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event)\n if (event.defaultPrevented || isDisabled) return\n setActiveStep(step)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event)\n if (event.defaultPrevented) return\n\n const triggers = getStepperTriggers(event.currentTarget)\n const index = triggers.indexOf(event.currentTarget)\n let target: HTMLElement | undefined\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n target = index === -1 ? undefined : triggers[(index + 1) % triggers.length]\n break\n case 'ArrowLeft':\n case 'ArrowUp':\n target = index === -1 ? undefined : triggers[(index - 1 + triggers.length) % triggers.length]\n break\n case 'Home':\n target = triggers[0]\n break\n case 'End':\n target = triggers[triggers.length - 1]\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n if (!isDisabled) setActiveStep(step)\n return\n default:\n return\n }\n\n event.preventDefault()\n target?.focus()\n }\n\n return useAsChild('button', {\n asChild,\n type: !asChild ? 'button' : undefined,\n role: 'tab',\n id: getTriggerId(step),\n 'aria-selected': isSelected,\n 'aria-controls': getContentId(step),\n 'aria-disabled': isAriaDisabled ? true : undefined,\n tabIndex: typeof tabIndex === 'number' ? tabIndex : isSelected ? 0 : -1,\n 'data-slot': 'stepper-trigger',\n 'data-state': state,\n 'data-loading': isLoading,\n disabled: asChild ? undefined : isDisabled,\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 aria-disabled:pointer-events-none aria-disabled:opacity-60',\n 'gap-2.5 rounded-full',\n className\n ),\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ...props,\n children\n })\n}\n\nexport type StepperIndicatorProps = React.ComponentProps<'div'>\n\nfunction StepperIndicator({ children, className, ...props }: 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 {...props}\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, ...props }: 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 {...props}\n />\n )\n}\n\nexport type StepperTitleProps = React.ComponentProps<'h3'>\n\nfunction StepperTitle({ children, className, ...props }: StepperTitleProps) {\n const { state } = useStepItem()\n\n return (\n <h3\n data-slot=\"stepper-title\"\n data-state={state}\n className={cn('text-sm leading-none font-medium', className)}\n {...props}\n >\n {children}\n </h3>\n )\n}\n\nexport type StepperDescriptionProps = React.ComponentProps<'div'>\n\nfunction StepperDescription({ children, className, ...props }: StepperDescriptionProps) {\n const { state } = useStepItem()\n\n return (\n <div\n data-slot=\"stepper-description\"\n data-state={state}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport type StepperNavProps = React.ComponentProps<'nav'>\n\nfunction StepperNav({ children, className, ...props }: 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 {...props}\n >\n {children}\n </nav>\n )\n}\n\nexport type StepperPanelProps = React.ComponentProps<'div'>\n\nfunction StepperPanel({ children, className, ...props }: StepperPanelProps) {\n const { activeStep } = useStepper()\n\n return (\n <div data-slot=\"stepper-panel\" data-state={activeStep} className={cn('w-full', className)} {...props}>\n {children}\n </div>\n )\n}\n\nexport type StepperContentProps = React.ComponentProps<'div'> & {\n /** Step this content belongs to. */\n value: number\n /** Keeps the content mounted when its step isn’t active. */\n forceMount?: boolean\n}\n\nfunction StepperContent({ value, forceMount, children, className, ...props }: StepperContentProps) {\n const { activeStep, getTriggerId, getContentId } = useStepper()\n const isActive = value === activeStep\n\n if (!forceMount && !isActive) {\n return null\n }\n\n return (\n <div\n role=\"tabpanel\"\n id={getContentId(value)}\n aria-labelledby={getTriggerId(value)}\n data-slot=\"stepper-content\"\n data-state={activeStep}\n className={cn('w-full', className, !isActive && forceMount && 'hidden')}\n hidden={!isActive && forceMount}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport {\n Stepper,\n StepperContent,\n StepperDescription,\n StepperIndicator,\n StepperItem,\n StepperNav,\n StepperPanel,\n StepperSeparator,\n StepperTitle,\n StepperTrigger,\n useStepItem,\n useStepper\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stepper.js","names":["StepperContext","createContext","StepItemContext","ctx","useContext","props","activeStep","setActiveStep","useState","defaultValue","baseId","useId","handleSetActiveStep","useCallback","value","step","onValueChange","currentStep","getTriggerId","getContentId","contextValue","useMemo","Children","children","isValidElement","child","orientation","indicators","cn","className","state","completed","isLoading","loading","disabled","root","trigger","node","isSelected","isAriaDisabled","asChild","isDisabled","onClick","event","onKeyDown","triggers","index","target","useAsChild","tabIndex","isActive","forceMount"],"sources":["../../src/components/stepper.tsx"],"sourcesContent":["import {\n Children,\n createContext,\n isValidElement,\n type ReactElement,\n useCallback,\n useContext,\n useId,\n useMemo,\n useState\n} from 'react'\n\nimport { type AsChildProps, useAsChild } from '../lib/as-child'\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 indicators: StepIndicators\n getTriggerId: (step: number) => string\n getContentId: (step: number) => string\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\nexport type StepperProps = Omit<React.ComponentProps<'div'>, 'defaultValue'> & {\n /**\n * Initial step (uncontrolled), starting at `1`.\n * @default 1\n */\n defaultValue?: number\n /** Current step (controlled). */\n value?: number\n /** Called with the new step when the user moves to it. */\n onValueChange?: (value: number) => void\n /**\n * Layout of the steps.\n * @default 'horizontal'\n */\n orientation?: StepperOrientation\n /** Custom indicator content per state: `active`, `completed`, `inactive`, `loading`. */\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 baseId = useId()\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 const getTriggerId = useCallback((step: number) => `${baseId}-tab-${step}`, [baseId])\n const getContentId = useCallback((step: number) => `${baseId}-panel-${step}`, [baseId])\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 indicators,\n getTriggerId,\n getContentId\n }),\n [currentStep, handleSetActiveStep, children, orientation, indicators, getTriggerId, getContentId]\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\nexport type StepperItemProps = React.ComponentProps<'div'> & {\n /** Number of this step, starting at `1`. */\n step: number\n /**\n * Marks the step as completed.\n * @default false\n */\n completed?: boolean\n /**\n * Prevents navigating to this step.\n * @default false\n */\n disabled?: boolean\n /**\n * Shows the loading indicator for this step.\n * @default false\n */\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\nexport type StepperTriggerProps = AsChildProps<'button'>\n\n// Enabled triggers of the closest Stepper, in DOM order (nested steppers excluded).\nfunction getStepperTriggers(trigger: HTMLElement) {\n const root = trigger.closest('[data-slot=\"stepper\"]')\n if (!root) return []\n\n return Array.from(root.querySelectorAll<HTMLElement>('[data-slot=\"stepper-trigger\"]')).filter(\n (node) => node.closest('[data-slot=\"stepper\"]') === root && !node.matches(':disabled, [aria-disabled=\"true\"]')\n )\n}\n\nfunction StepperTrigger({\n asChild = false,\n className,\n children,\n tabIndex,\n onClick,\n onKeyDown,\n ...props\n}: StepperTriggerProps) {\n const { setActiveStep, activeStep, getTriggerId, getContentId } = useStepper()\n const { step, state, isDisabled, isLoading } = useStepItem()\n const isSelected = activeStep === step\n // A non-button child can't be natively disabled, so it gets `aria-disabled` instead.\n const isAriaDisabled = asChild && isDisabled\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event)\n if (event.defaultPrevented || isDisabled) return\n setActiveStep(step)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event)\n if (event.defaultPrevented) return\n\n const triggers = getStepperTriggers(event.currentTarget)\n const index = triggers.indexOf(event.currentTarget)\n let target: HTMLElement | undefined\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n target = index === -1 ? undefined : triggers[(index + 1) % triggers.length]\n break\n case 'ArrowLeft':\n case 'ArrowUp':\n target = index === -1 ? undefined : triggers[(index - 1 + triggers.length) % triggers.length]\n break\n case 'Home':\n target = triggers[0]\n break\n case 'End':\n target = triggers[triggers.length - 1]\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n if (!isDisabled) setActiveStep(step)\n return\n default:\n return\n }\n\n event.preventDefault()\n target?.focus()\n }\n\n return useAsChild('button', {\n asChild,\n type: !asChild ? 'button' : undefined,\n role: 'tab',\n id: getTriggerId(step),\n 'aria-selected': isSelected,\n 'aria-controls': getContentId(step),\n 'aria-disabled': isAriaDisabled ? true : undefined,\n tabIndex: typeof tabIndex === 'number' ? tabIndex : isSelected ? 0 : -1,\n 'data-slot': 'stepper-trigger',\n 'data-state': state,\n 'data-loading': isLoading,\n disabled: asChild ? undefined : isDisabled,\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 aria-disabled:pointer-events-none aria-disabled:opacity-60',\n 'gap-2.5 rounded-full',\n className\n ),\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ...props,\n children\n })\n}\n\nexport type StepperIndicatorProps = React.ComponentProps<'div'>\n\nfunction StepperIndicator({ children, className, ...props }: 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 {...props}\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, ...props }: 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 {...props}\n />\n )\n}\n\nexport type StepperTitleProps = React.ComponentProps<'h3'>\n\nfunction StepperTitle({ children, className, ...props }: StepperTitleProps) {\n const { state } = useStepItem()\n\n return (\n <h3\n data-slot=\"stepper-title\"\n data-state={state}\n className={cn('text-sm leading-none font-medium', className)}\n {...props}\n >\n {children}\n </h3>\n )\n}\n\nexport type StepperDescriptionProps = React.ComponentProps<'div'>\n\nfunction StepperDescription({ children, className, ...props }: StepperDescriptionProps) {\n const { state } = useStepItem()\n\n return (\n <div\n data-slot=\"stepper-description\"\n data-state={state}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport type StepperNavProps = React.ComponentProps<'nav'>\n\nfunction StepperNav({ children, className, ...props }: 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 {...props}\n >\n {children}\n </nav>\n )\n}\n\nexport type StepperPanelProps = React.ComponentProps<'div'>\n\nfunction StepperPanel({ children, className, ...props }: StepperPanelProps) {\n const { activeStep } = useStepper()\n\n return (\n <div data-slot=\"stepper-panel\" data-state={activeStep} className={cn('w-full', className)} {...props}>\n {children}\n </div>\n )\n}\n\nexport type StepperContentProps = React.ComponentProps<'div'> & {\n /** Step this content belongs to. */\n value: number\n /** Keeps the content mounted when its step isn’t active. */\n forceMount?: boolean\n}\n\nfunction StepperContent({ value, forceMount, children, className, ...props }: StepperContentProps) {\n const { activeStep, getTriggerId, getContentId } = useStepper()\n const isActive = value === activeStep\n\n if (!forceMount && !isActive) {\n return null\n }\n\n return (\n <div\n role=\"tabpanel\"\n id={getContentId(value)}\n aria-labelledby={getTriggerId(value)}\n data-slot=\"stepper-content\"\n data-state={activeStep}\n className={cn('w-full', className, !isActive && forceMount && 'hidden')}\n hidden={!isActive && forceMount}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport {\n Stepper,\n StepperContent,\n StepperDescription,\n StepperIndicator,\n StepperItem,\n StepperNav,\n StepperPanel,\n StepperSeparator,\n StepperTitle,\n StepperTrigger,\n useStepItem,\n useStepper\n}\n"],"mappings":"A,oTA0CA,MAAMA,EAAiBC,EAA+C,IAAA,EAAS,EACzEC,EAAkBD,EAAgD,IAAA,EAAS,EAEjF,SAAS,YAAa,CACpB,IAAME,EAAMC,EAAWJ,CAAc,EACrC,GAAI,CAACG,EAAK,MAAU,MAAM,0CAA0C,EACpE,OAAOA,CACT,CAEA,SAAS,aAAc,CACrB,IAAMA,EAAMC,EAAWF,CAAe,EACtC,GAAI,CAACC,EAAK,MAAU,MAAM,+CAA+C,EACzE,OAAOA,CACT,CAqBA,SAAS,QAAQ,CACf,eAAe,EACf,QACA,gBACA,cAAc,aACd,YACA,WACA,aAAa,CAAC,EACd,GAAGE,GACY,CACf,GAAM,CAACC,EAAYC,GAAiBC,EAASC,CAAY,EACnDC,EAASC,EAAM,EAEfC,EAAsBC,EACzB,GAAiB,CACZC,IAAU,IAAA,IACZP,EAAcQ,CAAI,EAEpBC,IAAgBD,CAAI,CACtB,EACA,CAACD,EAAOE,CAAa,CACvB,EAEMC,EAAcH,GAASR,EAEvBY,EAAeL,EAAa,GAAiB,GAAGH,EAAO,OAAOK,IAAQ,CAACL,CAAM,CAAC,EAC9ES,EAAeN,EAAa,GAAiB,GAAGH,EAAO,SAASK,IAAQ,CAACL,CAAM,CAAC,EAGhFU,EAAeC,OACZ,CACL,WAAYJ,EACZ,cAAeL,EACf,WAAYU,EAAS,QAAQC,CAAQ,CAAC,CAAC,OACpC,GACCC,EAAeC,CAAK,GAAMA,EAAM,KAAkC,cAAgB,aACtF,CAAC,CAAC,OACF,cACA,aACA,eACA,cACF,GACA,CAACR,EAAaL,EAAqBW,EAAUG,EAAaC,EAAYT,EAAcC,CAAY,CAClG,EAEA,MACE,kBAACnB,EAAe,SAAhB,CAAyB,MAAOoB,EAC9B,SAAA,kBAAC,MAAD,CACE,KAAK,UACL,mBAAkBM,EAClB,YAAU,UACV,UAAWE,EAAG,SAAUC,CAAS,EACjC,mBAAkBH,EAClB,GAAIrB,EAEH,UACE,CAAA,CACkB,CAAA,CAE7B,CAsBA,SAAS,YAAY,CACnB,OACA,YAAY,GACZ,WAAW,GACX,UAAU,GACV,YACA,WACA,GAAGA,GACgB,CACnB,GAAM,CAAE,cAAe,WAAW,EAE5ByB,EAAmBC,GAAahB,EAAOT,EAAa,YAAcA,IAAeS,EAAO,SAAW,WAEnGiB,EAAYC,GAAWlB,IAAST,EAEtC,MACE,kBAACJ,EAAgB,SAAjB,CAA0B,MAAO,CAAE,OAAM,QAAO,WAAYgC,EAAU,WAAU,EAC9E,SAAA,kBAAC,MAAD,CACE,YAAU,eACV,UAAWN,EACT,8KACAC,CACF,EACA,aAAYC,EACZ,GAAKE,EAAY,CAAE,eAAgB,EAAK,EAAI,CAAC,EAC7C,GAAI3B,EAEH,UACE,CAAA,CACmB,CAAA,CAE9B,CAKA,SAAS,mBAAmB,EAAsB,CAChD,IAAM8B,EAAOC,EAAQ,QAAQ,uBAAuB,EAGpD,OAFKD,EAEE,MAAM,KAAKA,EAAK,iBAA8B,+BAA+B,CAAC,CAAC,CAAC,OACpF,GAASE,EAAK,QAAQ,uBAAuB,IAAMF,GAAQ,CAACE,EAAK,QAAQ,mCAAmC,CAC/G,EAJkB,CAAC,CAKrB,CAEA,SAAS,eAAe,CACtB,UAAU,GACV,YACA,WACA,WACA,UACA,YACA,GAAGhC,GACmB,CACtB,GAAM,CAAE,gBAAe,aAAY,eAAc,gBAAiB,WAAW,EACvE,CAAE,OAAM,QAAO,aAAY,aAAc,YAAY,EACrDiC,EAAahC,IAAeS,EAE5BwB,EAAiBC,GAAWC,EAE5B,YAAe,GAA+C,CAClEC,IAAUC,CAAK,EACX,IAAM,kBAAoBF,IAC9BlC,EAAcQ,CAAI,CACpB,EAEM,cAAiB,GAAkD,CAEvE,GADA6B,IAAYD,CAAK,EACbA,EAAM,iBAAkB,OAE5B,IAAME,EAAW,mBAAmBF,EAAM,aAAa,EACjDG,EAAQD,EAAS,QAAQF,EAAM,aAAa,EAC9CI,EAEJ,OAAQJ,EAAM,IAAd,CACE,IAAK,aACL,IAAK,YACH,EAASG,IAAU,GAAK,IAAA,GAAYD,GAAUC,EAAQ,GAAKD,EAAS,QACpE,MACF,IAAK,YACL,IAAK,UACH,EAASC,IAAU,GAAK,IAAA,GAAYD,GAAUC,EAAQ,EAAID,EAAS,QAAUA,EAAS,QACtF,MACF,IAAK,OACH,EAASA,EAAS,GAClB,MACF,IAAK,MACH,EAASA,EAASA,EAAS,OAAS,GACpC,MACF,IAAK,QACL,IAAK,IACHF,EAAM,eAAe,EAChBF,GAAYlC,EAAcQ,CAAI,EACnC,OACF,QACE,MACJ,CAEA4B,EAAM,eAAe,EACrBI,GAAQ,MAAM,CAChB,EAEA,OAAOC,EAAW,SAAU,CAC1B,UACA,KAAOR,EAAqB,IAAA,GAAX,SACjB,KAAM,MACN,GAAItB,EAAaH,CAAI,EACrB,gBAAiBuB,EACjB,gBAAiBnB,EAAaJ,CAAI,EAClC,gBAAiBwB,EAAiB,GAAO,IAAA,GACzC,SAAU,OAAOU,GAAa,SAAWA,EAAWX,EAAa,EAAI,GACrE,YAAa,kBACb,aAAcR,EACd,eAAgBE,EAChB,SAAUQ,EAAU,IAAA,GAAYC,EAChC,UAAWb,EACT,gQACA,uBACAC,CACF,EACA,QAAS,YACT,UAAW,cACX,GAAGxB,EACH,UACF,CAAC,CACH,CAIA,SAAS,iBAAiB,CAAE,WAAU,YAAW,GAAGA,GAAgC,CAClF,GAAM,CAAE,QAAO,aAAc,YAAY,EACnC,CAAE,cAAe,WAAW,EAElC,MACE,kBAAC,MAAD,CACE,YAAU,oBACV,aAAYyB,EACZ,UAAWF,EACT,2RACA,uBACAC,CACF,EACA,GAAIxB,EAEJ,SAAA,kBAAC,MAAD,CAAK,UAAU,WACZ,SAAAsB,IACCK,GAAaL,EAAW,SACvBG,IAAU,aAAeH,EAAW,WACpCG,IAAU,UAAYH,EAAW,QACjCG,IAAU,YAAcH,EAAW,UACjCK,GAAaL,EAAW,SACxBG,IAAU,aAAeH,EAAW,WACpCG,IAAU,UAAYH,EAAW,QACjCG,IAAU,YAAcH,EAAW,SACpCJ,CACD,CAAA,CACF,CAAA,CAET,CAIA,SAAS,iBAAiB,CAAE,YAAW,GAAGlB,GAAgC,CACxE,GAAM,CAAE,SAAU,YAAY,EAE9B,MACE,kBAAC,MAAD,CACE,YAAU,oBACV,aAAYyB,EACZ,UAAWF,EACT,gPACAC,CACF,EACA,GAAIxB,CACL,CAAA,CAEL,CAIA,SAAS,aAAa,CAAE,WAAU,YAAW,GAAGA,GAA4B,CAC1E,GAAM,CAAE,SAAU,YAAY,EAE9B,MACE,kBAAC,KAAD,CACE,YAAU,gBACV,aAAYyB,EACZ,UAAWF,EAAG,mCAAoCC,CAAS,EAC3D,GAAIxB,EAEH,UACC,CAAA,CAER,CAIA,SAAS,mBAAmB,CAAE,WAAU,YAAW,GAAGA,GAAkC,CACtF,GAAM,CAAE,SAAU,YAAY,EAE9B,MACE,kBAAC,MAAD,CACE,YAAU,sBACV,aAAYyB,EACZ,UAAWF,EAAG,gCAAiCC,CAAS,EACxD,GAAIxB,EAEH,UACE,CAAA,CAET,CAIA,SAAS,WAAW,CAAE,WAAU,YAAW,GAAGA,GAA0B,CACtE,GAAM,CAAE,aAAY,eAAgB,WAAW,EAE/C,MACE,kBAAC,MAAD,CACE,YAAU,cACV,aAAYC,EACZ,mBAAkBoB,EAClB,UAAWE,EACT,iJACAC,CACF,EACA,GAAIxB,EAEH,UACE,CAAA,CAET,CAIA,SAAS,aAAa,CAAE,WAAU,YAAW,GAAGA,GAA4B,CAC1E,GAAM,CAAE,cAAe,WAAW,EAElC,MACE,kBAAC,MAAD,CAAK,YAAU,gBAAgB,aAAYC,EAAY,UAAWsB,EAAG,SAAUC,CAAS,EAAG,GAAIxB,EAC5F,UACE,CAAA,CAET,CASA,SAAS,eAAe,CAAE,QAAO,aAAY,WAAU,YAAW,GAAGA,GAA8B,CACjG,GAAM,CAAE,aAAY,eAAc,gBAAiB,WAAW,EACxD6C,EAAWpC,IAAUR,EAM3B,MAJI,CAAC6C,GAAc,CAACD,EACX,KAIP,kBAAC,MAAD,CACE,KAAK,WACL,GAAI/B,EAAaL,CAAK,EACtB,kBAAiBI,EAAaJ,CAAK,EACnC,YAAU,kBACV,aAAYR,EACZ,UAAWsB,EAAG,SAAUC,EAAW,CAACqB,GAAYC,GAAc,QAAQ,EACtE,OAAQ,CAACD,GAAYC,EACrB,GAAI9C,EAEH,UACE,CAAA,CAET,C"}
|
|
@@ -4,7 +4,6 @@ import { LabelProps } from "./label.js";
|
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { ReactNode } from "react";
|
|
6
6
|
import { Switch as Switch$1 } from "@base-ui/react/switch";
|
|
7
|
-
//#region src/components/switch.d.ts
|
|
8
7
|
export type SwitchProps = Omit<React.ComponentProps<typeof Switch$1.Root>, 'render'> & {
|
|
9
8
|
/**
|
|
10
9
|
* Palette family used when on.
|
|
@@ -26,6 +25,5 @@ export type SwitchProps = Omit<React.ComponentProps<typeof Switch$1.Root>, 'rend
|
|
|
26
25
|
size?: 'sm' | 'md' | 'lg';
|
|
27
26
|
};
|
|
28
27
|
declare function Switch({ className, color, id, label, labelProps, description, descriptionProps, size, 'aria-invalid': ariaInvalid, ...props }: SwitchProps): React.JSX.Element;
|
|
29
|
-
//#endregion
|
|
30
28
|
export { Switch };
|
|
31
29
|
//# sourceMappingURL=switch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.js","names":["SwitchPrimitive","Switch$1","switchColorVariants","switchLabelVariants","cva","switchDescriptionVariants","ariaInvalid","props","generatedId","useId","fieldControlId","useFieldControlId","id","invalid","useFieldInvalid","hasLabel","label","resolvedId","labelClassName","labelRootProps","labelProps","descriptionId","hasDescription","description","descriptionClassName","descriptionRootProps","descriptionProps","resolvedDescriptionId","switchControl","color","size","cn","resolveClassName","className","state","Label"],"sources":["../../src/components/switch.tsx"],"sourcesContent":["import type * as React from 'react'\nimport { type ReactNode, useId } from 'react'\n\nimport { Switch as SwitchPrimitive } from '@base-ui/react/switch'\nimport { cva } from 'class-variance-authority'\n\nimport type { UIColor } from '../lib/color'\nimport { cn } from '../lib/utils'\nimport { resolveClassName } from '../utils/resolve-class-name'\nimport { useFieldControlId, useFieldInvalid } from './field'\nimport { Label, type LabelProps } from './label'\n\nexport type SwitchProps = Omit<React.ComponentProps<typeof SwitchPrimitive.Root>, 'render'> & {\n /**\n * Palette family used when on.\n * @default 'green'\n */\n color?: UIColor\n /** Label rendered next to the switch and linked to it. */\n label?: ReactNode\n /** Props for the rendered label. */\n labelProps?: Omit<LabelProps, 'children' | 'htmlFor'>\n /** Helper text rendered below the label. */\n description?: ReactNode\n /** Props for the rendered description. */\n descriptionProps?: Omit<React.ComponentProps<'p'>, 'children'>\n /**\n * Size of the switch and its label.\n * @default 'md'\n */\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-lg'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nconst switchDescriptionVariants = cva(\n 'text-muted-foreground text-left leading-normal font-normal [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-xs',\n lg: 'text-sm'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n)\n\nfunction Switch({\n className,\n color = 'green',\n id,\n label,\n labelProps,\n description,\n descriptionProps,\n size = 'md',\n 'aria-invalid': ariaInvalid,\n ...props\n}: SwitchProps) {\n const generatedId = useId()\n const fieldControlId = useFieldControlId(id)\n const invalid = useFieldInvalid(ariaInvalid)\n const hasLabel = label !== undefined\n const resolvedId = fieldControlId ?? (hasLabel ? generatedId : undefined)\n const { className: labelClassName, ...labelRootProps } = labelProps ?? {}\n const descriptionId = useId()\n const hasDescription = description !== undefined\n const { className: descriptionClassName, ...descriptionRootProps } = descriptionProps ?? {}\n const resolvedDescriptionId = hasDescription ? (descriptionRootProps.id ?? descriptionId) : undefined\n\n const switchControl = (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-color={color}\n data-size={size}\n id={resolvedId}\n aria-describedby={resolvedDescriptionId}\n aria-invalid={invalid}\n className={(state) =>\n 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 'data-[size=lg]:h-5 data-[size=lg]:w-10.5 data-[size=md]:h-4 data-[size=md]:w-8.5 data-[size=sm]:h-3.5 data-[size=sm]:w-7.5',\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 resolveClassName(className, state)\n )\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 group-data-[size=md]/switch:size-3 group-data-[size=sm]/switch:size-2.5',\n 'group-data-[size=lg]/switch:data-checked:translate-x-6',\n 'group-data-[size=md]/switch:data-checked:translate-x-5',\n 'group-data-[size=sm]/switch:data-checked:translate-x-4.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 group-data-[size=md]/switch:size-1.5 group-data-[size=sm]/switch:size-1',\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 && !hasDescription) {\n return switchControl\n }\n\n return (\n <div\n data-slot=\"switch-field\"\n className=\"grid grid-cols-[auto_1fr] items-center justify-items-start gap-x-2 gap-y-0.5\"\n >\n {switchControl}\n {hasLabel && (\n <Label {...labelRootProps} htmlFor={resolvedId} className={cn(switchLabelVariants({ size }), labelClassName)}>\n {label}\n </Label>\n )}\n {hasDescription && (\n <p\n data-slot=\"switch-description\"\n {...descriptionRootProps}\n id={resolvedDescriptionId}\n className={cn('col-start-2', switchDescriptionVariants({ size }), descriptionClassName)}\n >\n {description}\n </p>\n )}\n </div>\n )\n}\n\nexport { Switch }\n"],"mappings":"mZAiCA,MAAME,EAA+C,CACnD,QAAS,oCACT,MAAO,kCACP,KAAM,iCACN,KAAM,iCACN,IAAK,gCACL,OAAQ,mCACR,KAAM,iCACN,OAAQ,mCACR,KAAM,iCACN,MAAO,iCACT,EAEMC,EAAsBC,EAAI,GAAI,CAClC,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,SACN,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CAAC,EAEKC,EAA4BD,EAChC,+HACA,CACE,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,SACN,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CACF,EAEA,SAAS,OAAO,CACd,YACA,QAAQ,QACR,KACA,QACA,aACA,cACA,mBACA,OAAO,KACP,eAAgBE,EAChB,GAAGC,GACW,CACd,IAAMC,EAAcC,EAAM,EACpBC,EAAiBC,EAAkBC,CAAE,EACrCC,EAAUC,EAAgBR,CAAW,EACrCS,EAAWC,IAAU,IAAA,GACrBC,EAAaP,IAAmBK,EAAWP,EAAc,IAAA,IACzD,CAAE,UAAWU,EAAgB,GAAGC,GAAmBC,GAAc,CAAC,EAClEC,EAAgBZ,EAAM,EACtBa,EAAiBC,IAAgB,IAAA,GACjC,CAAE,UAAWC,EAAsB,GAAGC,GAAyBC,GAAoB,CAAC,EACpFC,EAAwBL,EAAkBG,EAAqB,IAAMJ,EAAiB,IAAA,GAEtFO,EACJ,kBAAC5B,EAAgB,KAAjB,CACE,YAAU,SACV,aAAY6B,EACZ,YAAWC,EACX,GAAIb,EACJ,mBAAkBU,EAClB,eAAcd,EACd,UAAY,GACVkB,EACE,kIACA,mDACA,4EACA,6HACA,6FACA,4DACA7B,EAAoB2B,GACpBG,EAAiBC,EAAWC,CAAK,CACnC,EAEF,GAAI3B,EAEJ,SAAA,kBAACP,EAAgB,MAAjB,CACE,YAAU,eACV,UAAW+B,EACT,8GACA,6GACA,yDACA,yDACA,2DACA,6DACA,6DACA,6DACA,2EACF,EAEA,SAAA,kBAAC,OAAD,CACE,YAAU,yBACV,UAAWA,EACT,iCACA,6GACA,uFACA,8CACF,CACD,CAAA,CACoB,CAAA,CACH,CAAA,EAOxB,MAJI,CAAChB,GAAY,CAACO,EACTM,EAIP,kBAAC,MAAD,CACE,YAAU,eACV,UAAU,+EAFZ,SAAA,CAIGA,EACAb,GACC,kBAACoB,EAAD,CAAO,GAAIhB,EAAgB,QAASF,EAAY,UAAWc,EAAG5B,EAAoB,CAAE,MAAK,CAAC,EAAGe,CAAc,EACxG,SAAAF,CACI,CAAA,EAERM,GACC,kBAAC,IAAD,CACE,YAAU,qBACV,GAAIG,EACJ,GAAIE,EACJ,UAAWI,EAAG,cAAe1B,EAA0B,CAAE,MAAK,CAAC,EAAGmB,CAAoB,EAErF,SAAAD,CACA,CAAA,CAEF,
|
|
1
|
+
{"version":3,"file":"switch.js","names":["SwitchPrimitive","Switch$1","switchColorVariants","switchLabelVariants","cva","switchDescriptionVariants","ariaInvalid","props","generatedId","useId","fieldControlId","useFieldControlId","id","invalid","useFieldInvalid","hasLabel","label","resolvedId","labelClassName","labelRootProps","labelProps","descriptionId","hasDescription","description","descriptionClassName","descriptionRootProps","descriptionProps","resolvedDescriptionId","switchControl","color","size","cn","resolveClassName","className","state","Label"],"sources":["../../src/components/switch.tsx"],"sourcesContent":["import type * as React from 'react'\nimport { type ReactNode, useId } from 'react'\n\nimport { Switch as SwitchPrimitive } from '@base-ui/react/switch'\nimport { cva } from 'class-variance-authority'\n\nimport type { UIColor } from '../lib/color'\nimport { cn } from '../lib/utils'\nimport { resolveClassName } from '../utils/resolve-class-name'\nimport { useFieldControlId, useFieldInvalid } from './field'\nimport { Label, type LabelProps } from './label'\n\nexport type SwitchProps = Omit<React.ComponentProps<typeof SwitchPrimitive.Root>, 'render'> & {\n /**\n * Palette family used when on.\n * @default 'green'\n */\n color?: UIColor\n /** Label rendered next to the switch and linked to it. */\n label?: ReactNode\n /** Props for the rendered label. */\n labelProps?: Omit<LabelProps, 'children' | 'htmlFor'>\n /** Helper text rendered below the label. */\n description?: ReactNode\n /** Props for the rendered description. */\n descriptionProps?: Omit<React.ComponentProps<'p'>, 'children'>\n /**\n * Size of the switch and its label.\n * @default 'md'\n */\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-lg'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nconst switchDescriptionVariants = cva(\n 'text-muted-foreground text-left leading-normal font-normal [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-xs',\n lg: 'text-sm'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n)\n\nfunction Switch({\n className,\n color = 'green',\n id,\n label,\n labelProps,\n description,\n descriptionProps,\n size = 'md',\n 'aria-invalid': ariaInvalid,\n ...props\n}: SwitchProps) {\n const generatedId = useId()\n const fieldControlId = useFieldControlId(id)\n const invalid = useFieldInvalid(ariaInvalid)\n const hasLabel = label !== undefined\n const resolvedId = fieldControlId ?? (hasLabel ? generatedId : undefined)\n const { className: labelClassName, ...labelRootProps } = labelProps ?? {}\n const descriptionId = useId()\n const hasDescription = description !== undefined\n const { className: descriptionClassName, ...descriptionRootProps } = descriptionProps ?? {}\n const resolvedDescriptionId = hasDescription ? (descriptionRootProps.id ?? descriptionId) : undefined\n\n const switchControl = (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-color={color}\n data-size={size}\n id={resolvedId}\n aria-describedby={resolvedDescriptionId}\n aria-invalid={invalid}\n className={(state) =>\n 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 'data-[size=lg]:h-5 data-[size=lg]:w-10.5 data-[size=md]:h-4 data-[size=md]:w-8.5 data-[size=sm]:h-3.5 data-[size=sm]:w-7.5',\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 resolveClassName(className, state)\n )\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 group-data-[size=md]/switch:size-3 group-data-[size=sm]/switch:size-2.5',\n 'group-data-[size=lg]/switch:data-checked:translate-x-6',\n 'group-data-[size=md]/switch:data-checked:translate-x-5',\n 'group-data-[size=sm]/switch:data-checked:translate-x-4.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 group-data-[size=md]/switch:size-1.5 group-data-[size=sm]/switch:size-1',\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 && !hasDescription) {\n return switchControl\n }\n\n return (\n <div\n data-slot=\"switch-field\"\n className=\"grid grid-cols-[auto_1fr] items-center justify-items-start gap-x-2 gap-y-0.5\"\n >\n {switchControl}\n {hasLabel && (\n <Label {...labelRootProps} htmlFor={resolvedId} className={cn(switchLabelVariants({ size }), labelClassName)}>\n {label}\n </Label>\n )}\n {hasDescription && (\n <p\n data-slot=\"switch-description\"\n {...descriptionRootProps}\n id={resolvedDescriptionId}\n className={cn('col-start-2', switchDescriptionVariants({ size }), descriptionClassName)}\n >\n {description}\n </p>\n )}\n </div>\n )\n}\n\nexport { Switch }\n"],"mappings":"A,mZAiCA,MAAME,EAA+C,CACnD,QAAS,oCACT,MAAO,kCACP,KAAM,iCACN,KAAM,iCACN,IAAK,gCACL,OAAQ,mCACR,KAAM,iCACN,OAAQ,mCACR,KAAM,iCACN,MAAO,iCACT,EAEMC,EAAsBC,EAAI,GAAI,CAClC,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,SACN,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CAAC,EAEKC,EAA4BD,EAChC,+HACA,CACE,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,SACN,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CACF,EAEA,SAAS,OAAO,CACd,YACA,QAAQ,QACR,KACA,QACA,aACA,cACA,mBACA,OAAO,KACP,eAAgBE,EAChB,GAAGC,GACW,CACd,IAAMC,EAAcC,EAAM,EACpBC,EAAiBC,EAAkBC,CAAE,EACrCC,EAAUC,EAAgBR,CAAW,EACrCS,EAAWC,IAAU,IAAA,GACrBC,EAAaP,IAAmBK,EAAWP,EAAc,IAAA,IACzD,CAAE,UAAWU,EAAgB,GAAGC,GAAmBC,GAAc,CAAC,EAClEC,EAAgBZ,EAAM,EACtBa,EAAiBC,IAAgB,IAAA,GACjC,CAAE,UAAWC,EAAsB,GAAGC,GAAyBC,GAAoB,CAAC,EACpFC,EAAwBL,EAAkBG,EAAqB,IAAMJ,EAAiB,IAAA,GAEtFO,EACJ,kBAAC5B,EAAgB,KAAjB,CACE,YAAU,SACV,aAAY6B,EACZ,YAAWC,EACX,GAAIb,EACJ,mBAAkBU,EAClB,eAAcd,EACd,UAAY,GACVkB,EACE,kIACA,mDACA,4EACA,6HACA,6FACA,4DACA7B,EAAoB2B,GACpBG,EAAiBC,EAAWC,CAAK,CACnC,EAEF,GAAI3B,EAEJ,SAAA,kBAACP,EAAgB,MAAjB,CACE,YAAU,eACV,UAAW+B,EACT,8GACA,6GACA,yDACA,yDACA,2DACA,6DACA,6DACA,6DACA,2EACF,EAEA,SAAA,kBAAC,OAAD,CACE,YAAU,yBACV,UAAWA,EACT,iCACA,6GACA,uFACA,8CACF,CACD,CAAA,CACoB,CAAA,CACH,CAAA,EAOxB,MAJI,CAAChB,GAAY,CAACO,EACTM,EAIP,kBAAC,MAAD,CACE,YAAU,eACV,UAAU,+EAFZ,SAAA,CAIGA,EACAb,GACC,kBAACoB,EAAD,CAAO,GAAIhB,EAAgB,QAASF,EAAY,UAAWc,EAAG5B,EAAoB,CAAE,MAAK,CAAC,EAAGe,CAAc,EACxG,SAAAF,CACI,CAAA,EAERM,GACC,kBAAC,IAAD,CACE,YAAU,qBACV,GAAIG,EACJ,GAAIE,EACJ,UAAWI,EAAG,cAAe1B,EAA0B,CAAE,MAAK,CAAC,EAAGmB,CAAoB,EAErF,SAAAD,CACA,CAAA,CAEF,C,EAET,C"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { VariantProps } from "class-variance-authority";
|
|
4
|
-
//#region src/components/table.d.ts
|
|
5
4
|
export type TableContainerProps = React.ComponentProps<'div'> & {
|
|
6
5
|
/** Minimum table width (px number or CSS length); the container scrolls horizontally below it. */
|
|
7
6
|
minWidth?: number | string;
|
|
@@ -37,6 +36,5 @@ declare function TableRow({ className, ...props }: TableRowProps): React.JSX.Ele
|
|
|
37
36
|
declare function TableHead({ className, ...props }: TableHeadProps): React.JSX.Element;
|
|
38
37
|
declare function TableCell({ className, ...props }: TableCellProps): React.JSX.Element;
|
|
39
38
|
declare function TableCaption({ className, ...props }: TableCaptionProps): React.JSX.Element;
|
|
40
|
-
//#endregion
|
|
41
39
|
export { Table, TableBody, TableCaption, TableCell, TableContainer, TableFooter, TableHead, TableHeader, TableRow, tableVariants };
|
|
42
40
|
//# sourceMappingURL=table.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","names":["tableVariants","cva","cn","props","className","minWidth","style","variant","striped","stickyHeader"],"sources":["../../src/components/table.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\n\nexport type TableContainerProps = React.ComponentProps<'div'> & {\n /** Minimum table width (px number or CSS length); the container scrolls horizontally below it. */\n minWidth?: number | string\n}\n\nconst tableVariants = cva('w-full caption-bottom text-sm', {\n variants: {\n variant: {\n line: '',\n outline: cn(\n 'rounded-lg border border-separate border-spacing-0',\n '[&_thead_th]:border-b',\n '[&_tbody_tr:not(:last-child)>td]:border-b'\n )\n }\n },\n defaultVariants: {\n variant: 'line'\n }\n})\n\nexport type TableProps = React.ComponentProps<'table'> &\n VariantProps<typeof tableVariants> & {\n /**\n * Alternates the row background.\n * @default true\n */\n striped?: boolean\n /**\n * Keeps the header at the top while the body scrolls inside a `TableContainer`.\n * @default false\n */\n stickyHeader?: boolean\n }\n\nexport type TableHeaderProps = React.ComponentProps<'thead'>\n\nexport type TableBodyProps = React.ComponentProps<'tbody'>\n\nexport type TableFooterProps = React.ComponentProps<'tfoot'>\n\nexport type TableRowProps = React.ComponentProps<'tr'>\n\nexport type TableHeadProps = React.ComponentProps<'th'>\n\nexport type TableCellProps = React.ComponentProps<'td'>\n\nexport type TableCaptionProps = React.ComponentProps<'caption'>\n\nfunction TableContainer({ className, minWidth, style, ...props }: TableContainerProps) {\n return (\n <div\n data-slot=\"table-container\"\n className={cn(\n 'relative w-full overflow-x-auto',\n 'has-[>table[data-variant=outline]]:rounded-lg has-[>table[data-variant=outline]]:border',\n '[&>table[data-variant=outline]]:rounded-none [&>table[data-variant=outline]]:border-0',\n '[&>table]:min-w-(--table-min-width)',\n className\n )}\n style={\n minWidth !== undefined\n ? ({\n '--table-min-width': typeof minWidth === 'number' ? `${minWidth}px` : minWidth,\n ...style\n } as React.CSSProperties)\n : style\n }\n {...props}\n />\n )\n}\n\nfunction Table({ className, variant = 'line', striped = true, stickyHeader = false, ...props }: TableProps) {\n return (\n <table\n data-slot=\"table\"\n data-variant={variant}\n data-striped={striped ? 'true' : 'false'}\n data-sticky-header={stickyHeader ? 'true' : 'false'}\n className={cn(\n tableVariants({ variant }),\n 'data-[striped=true]:[&_tbody_tr:nth-child(even):not([data-state=selected]):not(:hover)]:bg-muted/50',\n 'data-[sticky-header=true]:[&_thead]:sticky data-[sticky-header=true]:[&_thead]:top-0 data-[sticky-header=true]:[&_thead]:z-10 data-[sticky-header=true]:[&_thead]:bg-background',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHeader({ className, ...props }: TableHeaderProps) {\n return <thead data-slot=\"table-header\" className={cn('[&_tr]:border-b', className)} {...props} />\n}\n\nfunction TableBody({ className, ...props }: TableBodyProps) {\n return <tbody data-slot=\"table-body\" className={cn('[&_tr:last-child]:border-0', className)} {...props} />\n}\n\nfunction TableFooter({ className, ...props }: TableFooterProps) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn('border-t bg-muted/50 font-medium [&>tr]:last:border-b-0', className)}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: TableRowProps) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn('border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted', className)}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: TableHeadProps) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground has-[[role=checkbox]]:pr-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: TableCellProps) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn('p-2 align-middle whitespace-nowrap has-[[role=checkbox]]:pr-0', className)}\n {...props}\n />\n )\n}\n\nfunction TableCaption({ className, ...props }: TableCaptionProps) {\n return (\n <caption data-slot=\"table-caption\" className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />\n )\n}\n\nexport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableContainer,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n tableVariants\n}\n"],"mappings":"oKAWA,MAAMA,EAAgBC,EAAI,gCAAiC,CACzD,SAAU,CACR,QAAS,CACP,KAAM,GACN,QAASC,EACP,qDACA,wBACA,2CACF,CACF,CACF,EACA,gBAAiB,CACf,QAAS,MACX,CACF,CAAC,EA8BD,SAAS,eAAe,CAAE,YAAW,WAAU,QAAO,GAAGC,GAA8B,CACrF,MACE,kBAAC,MAAD,CACE,YAAU,kBACV,UAAWD,EACT,kCACA,0FACA,wFACA,sCACAE,CACF,EACA,MACEC,IAAa,IAAA,GAKTC,EAJC,CACC,oBAAqB,OAAOD,GAAa,SAAW,GAAGA,EAAS,IAAMA,EACtE,GAAGC,CACL,EAGN,GAAIH,CACL,CAAA,CAEL,CAEA,SAAS,MAAM,CAAE,YAAW,UAAU,OAAQ,UAAU,GAAM,eAAe,GAAO,GAAGA,GAAqB,CAC1G,MACE,kBAAC,QAAD,CACE,YAAU,QACV,eAAcI,EACd,eAAcC,EAAU,OAAS,QACjC,qBAAoBC,EAAe,OAAS,QAC5C,UAAWP,EACTF,EAAc,CAAE,SAAQ,CAAC,EACzB,sGACA,kLACAI,CACF,EACA,GAAID,CACL,CAAA,CAEL,CAEA,SAAS,YAAY,CAAE,YAAW,GAAGA,GAA2B,CAC9D,MAAO,kBAAC,QAAD,CAAO,YAAU,eAAe,UAAWD,EAAG,kBAAmBE,CAAS,EAAG,GAAID,CAAQ,CAAA,CAClG,CAEA,SAAS,UAAU,CAAE,YAAW,GAAGA,GAAyB,CAC1D,MAAO,kBAAC,QAAD,CAAO,YAAU,aAAa,UAAWD,EAAG,6BAA8BE,CAAS,EAAG,GAAID,CAAQ,CAAA,CAC3G,CAEA,SAAS,YAAY,CAAE,YAAW,GAAGA,GAA2B,CAC9D,MACE,kBAAC,QAAD,CACE,YAAU,eACV,UAAWD,EAAG,0DAA2DE,CAAS,EAClF,GAAID,CACL,CAAA,CAEL,CAEA,SAAS,SAAS,CAAE,YAAW,GAAGA,GAAwB,CACxD,MACE,kBAAC,KAAD,CACE,YAAU,YACV,UAAWD,EAAG,8EAA+EE,CAAS,EACtG,GAAID,CACL,CAAA,CAEL,CAEA,SAAS,UAAU,CAAE,YAAW,GAAGA,GAAyB,CAC1D,MACE,kBAAC,KAAD,CACE,YAAU,aACV,UAAWD,EACT,4GACAE,CACF,EACA,GAAID,CACL,CAAA,CAEL,CAEA,SAAS,UAAU,CAAE,YAAW,GAAGA,GAAyB,CAC1D,MACE,kBAAC,KAAD,CACE,YAAU,aACV,UAAWD,EAAG,gEAAiEE,CAAS,EACxF,GAAID,CACL,CAAA,CAEL,CAEA,SAAS,aAAa,CAAE,YAAW,GAAGA,GAA4B,CAChE,MACE,kBAAC,UAAD,CAAS,YAAU,gBAAgB,UAAWD,EAAG,qCAAsCE,CAAS,EAAG,GAAID,CAAQ,CAAA,CAEnH"}
|
|
1
|
+
{"version":3,"file":"table.js","names":["tableVariants","cva","cn","props","className","minWidth","style","variant","striped","stickyHeader"],"sources":["../../src/components/table.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '../lib/utils'\n\nexport type TableContainerProps = React.ComponentProps<'div'> & {\n /** Minimum table width (px number or CSS length); the container scrolls horizontally below it. */\n minWidth?: number | string\n}\n\nconst tableVariants = cva('w-full caption-bottom text-sm', {\n variants: {\n variant: {\n line: '',\n outline: cn(\n 'rounded-lg border border-separate border-spacing-0',\n '[&_thead_th]:border-b',\n '[&_tbody_tr:not(:last-child)>td]:border-b'\n )\n }\n },\n defaultVariants: {\n variant: 'line'\n }\n})\n\nexport type TableProps = React.ComponentProps<'table'> &\n VariantProps<typeof tableVariants> & {\n /**\n * Alternates the row background.\n * @default true\n */\n striped?: boolean\n /**\n * Keeps the header at the top while the body scrolls inside a `TableContainer`.\n * @default false\n */\n stickyHeader?: boolean\n }\n\nexport type TableHeaderProps = React.ComponentProps<'thead'>\n\nexport type TableBodyProps = React.ComponentProps<'tbody'>\n\nexport type TableFooterProps = React.ComponentProps<'tfoot'>\n\nexport type TableRowProps = React.ComponentProps<'tr'>\n\nexport type TableHeadProps = React.ComponentProps<'th'>\n\nexport type TableCellProps = React.ComponentProps<'td'>\n\nexport type TableCaptionProps = React.ComponentProps<'caption'>\n\nfunction TableContainer({ className, minWidth, style, ...props }: TableContainerProps) {\n return (\n <div\n data-slot=\"table-container\"\n className={cn(\n 'relative w-full overflow-x-auto',\n 'has-[>table[data-variant=outline]]:rounded-lg has-[>table[data-variant=outline]]:border',\n '[&>table[data-variant=outline]]:rounded-none [&>table[data-variant=outline]]:border-0',\n '[&>table]:min-w-(--table-min-width)',\n className\n )}\n style={\n minWidth !== undefined\n ? ({\n '--table-min-width': typeof minWidth === 'number' ? `${minWidth}px` : minWidth,\n ...style\n } as React.CSSProperties)\n : style\n }\n {...props}\n />\n )\n}\n\nfunction Table({ className, variant = 'line', striped = true, stickyHeader = false, ...props }: TableProps) {\n return (\n <table\n data-slot=\"table\"\n data-variant={variant}\n data-striped={striped ? 'true' : 'false'}\n data-sticky-header={stickyHeader ? 'true' : 'false'}\n className={cn(\n tableVariants({ variant }),\n 'data-[striped=true]:[&_tbody_tr:nth-child(even):not([data-state=selected]):not(:hover)]:bg-muted/50',\n 'data-[sticky-header=true]:[&_thead]:sticky data-[sticky-header=true]:[&_thead]:top-0 data-[sticky-header=true]:[&_thead]:z-10 data-[sticky-header=true]:[&_thead]:bg-background',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHeader({ className, ...props }: TableHeaderProps) {\n return <thead data-slot=\"table-header\" className={cn('[&_tr]:border-b', className)} {...props} />\n}\n\nfunction TableBody({ className, ...props }: TableBodyProps) {\n return <tbody data-slot=\"table-body\" className={cn('[&_tr:last-child]:border-0', className)} {...props} />\n}\n\nfunction TableFooter({ className, ...props }: TableFooterProps) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn('border-t bg-muted/50 font-medium [&>tr]:last:border-b-0', className)}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: TableRowProps) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn('border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted', className)}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: TableHeadProps) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n 'h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground has-[[role=checkbox]]:pr-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: TableCellProps) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn('p-2 align-middle whitespace-nowrap has-[[role=checkbox]]:pr-0', className)}\n {...props}\n />\n )\n}\n\nfunction TableCaption({ className, ...props }: TableCaptionProps) {\n return (\n <caption data-slot=\"table-caption\" className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />\n )\n}\n\nexport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableContainer,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n tableVariants\n}\n"],"mappings":"A,oKAWA,MAAMA,EAAgBC,EAAI,gCAAiC,CACzD,SAAU,CACR,QAAS,CACP,KAAM,GACN,QAASC,EACP,qDACA,wBACA,2CACF,CACF,CACF,EACA,gBAAiB,CACf,QAAS,MACX,CACF,CAAC,EA8BD,SAAS,eAAe,CAAE,YAAW,WAAU,QAAO,GAAGC,GAA8B,CACrF,MACE,kBAAC,MAAD,CACE,YAAU,kBACV,UAAWD,EACT,kCACA,0FACA,wFACA,sCACAE,CACF,EACA,MACEC,IAAa,IAAA,GAKTC,EAJC,CACC,oBAAqB,OAAOD,GAAa,SAAW,GAAGA,EAAS,IAAMA,EACtE,GAAGC,CACL,EAGN,GAAIH,CACL,CAAA,CAEL,CAEA,SAAS,MAAM,CAAE,YAAW,UAAU,OAAQ,UAAU,GAAM,eAAe,GAAO,GAAGA,GAAqB,CAC1G,MACE,kBAAC,QAAD,CACE,YAAU,QACV,eAAcI,EACd,eAAcC,EAAU,OAAS,QACjC,qBAAoBC,EAAe,OAAS,QAC5C,UAAWP,EACTF,EAAc,CAAE,SAAQ,CAAC,EACzB,sGACA,kLACAI,CACF,EACA,GAAID,CACL,CAAA,CAEL,CAEA,SAAS,YAAY,CAAE,YAAW,GAAGA,GAA2B,CAC9D,MAAO,kBAAC,QAAD,CAAO,YAAU,eAAe,UAAWD,EAAG,kBAAmBE,CAAS,EAAG,GAAID,CAAQ,CAAA,CAClG,CAEA,SAAS,UAAU,CAAE,YAAW,GAAGA,GAAyB,CAC1D,MAAO,kBAAC,QAAD,CAAO,YAAU,aAAa,UAAWD,EAAG,6BAA8BE,CAAS,EAAG,GAAID,CAAQ,CAAA,CAC3G,CAEA,SAAS,YAAY,CAAE,YAAW,GAAGA,GAA2B,CAC9D,MACE,kBAAC,QAAD,CACE,YAAU,eACV,UAAWD,EAAG,0DAA2DE,CAAS,EAClF,GAAID,CACL,CAAA,CAEL,CAEA,SAAS,SAAS,CAAE,YAAW,GAAGA,GAAwB,CACxD,MACE,kBAAC,KAAD,CACE,YAAU,YACV,UAAWD,EAAG,8EAA+EE,CAAS,EACtG,GAAID,CACL,CAAA,CAEL,CAEA,SAAS,UAAU,CAAE,YAAW,GAAGA,GAAyB,CAC1D,MACE,kBAAC,KAAD,CACE,YAAU,aACV,UAAWD,EACT,4GACAE,CACF,EACA,GAAID,CACL,CAAA,CAEL,CAEA,SAAS,UAAU,CAAE,YAAW,GAAGA,GAAyB,CAC1D,MACE,kBAAC,KAAD,CACE,YAAU,aACV,UAAWD,EAAG,gEAAiEE,CAAS,EACxF,GAAID,CACL,CAAA,CAEL,CAEA,SAAS,aAAa,CAAE,YAAW,GAAGA,GAA4B,CAChE,MACE,kBAAC,UAAD,CAAS,YAAU,gBAAgB,UAAWD,EAAG,qCAAsCE,CAAS,EAAG,GAAID,CAAQ,CAAA,CAEnH,C"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
|
-
import { t as AsChildPrimitiveProps } from "../as-child-
|
|
2
|
+
import { t as AsChildPrimitiveProps } from "../as-child-T9W73ZYU.js";
|
|
3
3
|
import { VariantProps } from "class-variance-authority";
|
|
4
4
|
import { Tabs as Tabs$1 } from "@base-ui/react/tabs";
|
|
5
|
-
//#region src/components/tabs.d.ts
|
|
6
5
|
export type TabsProps = AsChildPrimitiveProps<typeof Tabs$1.Root>;
|
|
7
6
|
declare function Tabs({ className, orientation, asChild, children, ...props }: TabsProps): import("react").JSX.Element;
|
|
8
7
|
declare const tabsListVariants: (props?: ({
|
|
@@ -20,6 +19,5 @@ export type TabsContentProps = AsChildPrimitiveProps<typeof Tabs$1.Panel>;
|
|
|
20
19
|
declare function TabsList({ className, variant, grow, asChild, children, ...props }: TabsListProps): import("react").JSX.Element;
|
|
21
20
|
declare function TabsTrigger({ className, asChild, children, ...props }: TabsTriggerProps): import("react").JSX.Element;
|
|
22
21
|
declare function TabsContent({ className, asChild, children, ...props }: TabsContentProps): import("react").JSX.Element;
|
|
23
|
-
//#endregion
|
|
24
22
|
export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants };
|
|
25
23
|
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","names":["TabsPrimitive","resolveClassName","Tabs$1","props","cn","className","state","toAsChildRenderProps","asChild","children","tabsListVariants","cva","variant","grow"],"sources":["../../src/components/tabs.tsx"],"sourcesContent":["import { Tabs as TabsPrimitive } from '@base-ui/react/tabs'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport { cn } from '../lib/utils'\nimport { resolveClassName } from '../utils/resolve-class-name'\n\nexport type TabsProps = AsChildPrimitiveProps<typeof TabsPrimitive.Root>\n\nfunction Tabs({ className, orientation = 'horizontal', asChild, children, ...props }: TabsProps) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n orientation={orientation}\n className={(state) => cn('group/tabs flex gap-2 data-horizontal:flex-col', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nconst tabsListVariants = cva(\n 'group/tabs-list inline-flex items-center justify-start rounded-lg h-fit group-data-horizontal/tabs:flex-wrap group-data-horizontal/tabs:w-full group-data-vertical/tabs:w-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none',\n {\n variants: {\n variant: {\n enclosed: 'bg-muted p-0.75',\n line: 'gap-1 bg-transparent group-data-horizontal/tabs:border-b group-data-horizontal/tabs:border-b-border group-data-vertical/tabs:border-r group-data-vertical/tabs:border-r-border'\n }\n },\n defaultVariants: {\n variant: 'line'\n }\n }\n)\n\nexport type TabsListProps = AsChildPrimitiveProps<typeof TabsPrimitive.List> &\n VariantProps<typeof tabsListVariants> & {\n /**\n * Makes horizontal tabs share the available width equally.\n * @default false\n */\n grow?: boolean\n }\n\nexport type TabsTriggerProps = AsChildPrimitiveProps<typeof TabsPrimitive.Tab>\n\nexport type TabsContentProps = AsChildPrimitiveProps<typeof TabsPrimitive.Panel>\n\nfunction TabsList({ className, variant = 'line', grow = false, asChild, children, ...props }: TabsListProps) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n data-grow={grow}\n className={(state) => cn(tabsListVariants({ variant }), resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction TabsTrigger({ className, asChild, children, ...props }: TabsTriggerProps) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={(state) =>\n cn(\n \"relative inline-flex items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-normal whitespace-nowrap text-foreground transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:bg-muted focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-[variant=enclosed]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n 'group-data-horizontal/tabs:group-data-[grow=true]/tabs-list:flex-1',\n 'group-data-[variant=line]/tabs-list:bg-transparent group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:rounded-t-[8px] group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:rounded-b-none group-data-vertical/tabs:group-data-[variant=line]/tabs-list:rounded-l-[8px] group-data-vertical/tabs:group-data-[variant=line]/tabs-list:rounded-r-none',\n 'group-data-[variant=line]/tabs-list:h-8 group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:data-active:border-b-primary-500 group-data-vertical/tabs:group-data-[variant=line]/tabs-list:data-active:border-r-primary-500',\n 'group-data-[variant=enclosed]/tabs-list:h-[calc(100%-1px)] group-data-[variant=enclosed]/tabs-list:data-active:bg-background group-data-[variant=enclosed]/tabs-list:data-active:hover:bg-muted dark:group-data-[variant=enclosed]/tabs-list:data-active:border-input dark:group-data-[variant=enclosed]/tabs-list:data-active:bg-input/30',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction TabsContent({ className, asChild, children, ...props }: TabsContentProps) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={(state) => cn('flex-1 text-sm outline-none', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants }\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"tabs.js","names":["TabsPrimitive","resolveClassName","Tabs$1","props","cn","className","state","toAsChildRenderProps","asChild","children","tabsListVariants","cva","variant","grow"],"sources":["../../src/components/tabs.tsx"],"sourcesContent":["import { Tabs as TabsPrimitive } from '@base-ui/react/tabs'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport { cn } from '../lib/utils'\nimport { resolveClassName } from '../utils/resolve-class-name'\n\nexport type TabsProps = AsChildPrimitiveProps<typeof TabsPrimitive.Root>\n\nfunction Tabs({ className, orientation = 'horizontal', asChild, children, ...props }: TabsProps) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n orientation={orientation}\n className={(state) => cn('group/tabs flex gap-2 data-horizontal:flex-col', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nconst tabsListVariants = cva(\n 'group/tabs-list inline-flex items-center justify-start rounded-lg h-fit group-data-horizontal/tabs:flex-wrap group-data-horizontal/tabs:w-full group-data-vertical/tabs:w-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none',\n {\n variants: {\n variant: {\n enclosed: 'bg-muted p-0.75',\n line: 'gap-1 bg-transparent group-data-horizontal/tabs:border-b group-data-horizontal/tabs:border-b-border group-data-vertical/tabs:border-r group-data-vertical/tabs:border-r-border'\n }\n },\n defaultVariants: {\n variant: 'line'\n }\n }\n)\n\nexport type TabsListProps = AsChildPrimitiveProps<typeof TabsPrimitive.List> &\n VariantProps<typeof tabsListVariants> & {\n /**\n * Makes horizontal tabs share the available width equally.\n * @default false\n */\n grow?: boolean\n }\n\nexport type TabsTriggerProps = AsChildPrimitiveProps<typeof TabsPrimitive.Tab>\n\nexport type TabsContentProps = AsChildPrimitiveProps<typeof TabsPrimitive.Panel>\n\nfunction TabsList({ className, variant = 'line', grow = false, asChild, children, ...props }: TabsListProps) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n data-grow={grow}\n className={(state) => cn(tabsListVariants({ variant }), resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction TabsTrigger({ className, asChild, children, ...props }: TabsTriggerProps) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={(state) =>\n cn(\n \"relative inline-flex items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-normal whitespace-nowrap text-foreground transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:bg-muted focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-[variant=enclosed]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n 'group-data-horizontal/tabs:group-data-[grow=true]/tabs-list:flex-1',\n 'group-data-[variant=line]/tabs-list:bg-transparent group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:rounded-t-[8px] group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:rounded-b-none group-data-vertical/tabs:group-data-[variant=line]/tabs-list:rounded-l-[8px] group-data-vertical/tabs:group-data-[variant=line]/tabs-list:rounded-r-none',\n 'group-data-[variant=line]/tabs-list:h-8 group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:data-active:border-b-primary-500 group-data-vertical/tabs:group-data-[variant=line]/tabs-list:data-active:border-r-primary-500',\n 'group-data-[variant=enclosed]/tabs-list:h-[calc(100%-1px)] group-data-[variant=enclosed]/tabs-list:data-active:bg-background group-data-[variant=enclosed]/tabs-list:data-active:hover:bg-muted dark:group-data-[variant=enclosed]/tabs-list:data-active:border-input dark:group-data-[variant=enclosed]/tabs-list:data-active:bg-input/30',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction TabsContent({ className, asChild, children, ...props }: TabsContentProps) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={(state) => cn('flex-1 text-sm outline-none', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants }\n"],"mappings":"A,+TASA,SAAS,KAAK,CAAE,YAAW,cAAc,aAAc,UAAS,WAAU,GAAGG,GAAoB,CAC/F,MACE,kBAACH,EAAc,KAAf,CACE,YAAU,OACG,cACb,UAAY,GAAUI,EAAG,iDAAkDH,EAAiBI,EAAWC,CAAK,CAAC,EAC7G,GAAIH,EACJ,GAAII,EAAqBC,EAASC,CAAQ,CAC3C,CAAA,CAEL,CAEA,MAAMC,EAAmBC,EACvB,mPACA,CACE,SAAU,CACR,QAAS,CACP,SAAU,kBACV,KAAM,gLACR,CACF,EACA,gBAAiB,CACf,QAAS,MACX,CACF,CACF,EAeA,SAAS,SAAS,CAAE,YAAW,UAAU,OAAQ,OAAO,GAAO,UAAS,WAAU,GAAGR,GAAwB,CAC3G,MACE,kBAACH,EAAc,KAAf,CACE,YAAU,YACV,eAAcY,EACd,YAAWC,EACX,UAAY,GAAUT,EAAGM,EAAiB,CAAE,SAAQ,CAAC,EAAGT,EAAiBI,EAAWC,CAAK,CAAC,EAC1F,GAAIH,EACJ,GAAII,EAAqBC,EAASC,CAAQ,CAC3C,CAAA,CAEL,CAEA,SAAS,YAAY,CAAE,YAAW,UAAS,WAAU,GAAGN,GAA2B,CACjF,MACE,kBAACH,EAAc,IAAf,CACE,YAAU,eACV,UAAY,GACVI,EACE,ksBACA,qEACA,2WACA,wOACA,6UACAH,EAAiBI,EAAWC,CAAK,CACnC,EAEF,GAAIH,EACJ,GAAII,EAAqBC,EAASC,CAAQ,CAC3C,CAAA,CAEL,CAEA,SAAS,YAAY,CAAE,YAAW,UAAS,WAAU,GAAGN,GAA2B,CACjF,MACE,kBAACH,EAAc,MAAf,CACE,YAAU,eACV,UAAY,GAAUI,EAAG,8BAA+BH,EAAiBI,EAAWC,CAAK,CAAC,EAC1F,GAAIH,EACJ,GAAII,EAAqBC,EAASC,CAAQ,CAC3C,CAAA,CAEL,C"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
|
-
import { n as AsChildProps } from "../as-child-
|
|
2
|
+
import { n as AsChildProps } from "../as-child-T9W73ZYU.js";
|
|
3
3
|
import { VariantProps } from "class-variance-authority";
|
|
4
|
-
//#region src/components/text.d.ts
|
|
5
4
|
declare const textVariants: (props?: ({
|
|
6
5
|
size?: "lg" | "md" | "sm" | "xl" | "xs" | null | undefined;
|
|
7
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
7
|
export type TextProps = AsChildProps<'p'> & VariantProps<typeof textVariants>;
|
|
9
8
|
declare function Text({ className, size, ...props }: TextProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
10
|
-
//#endregion
|
|
11
9
|
export { Text, textVariants };
|
|
12
10
|
//# sourceMappingURL=text.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","names":["textVariants","cva","props","useAsChild","size","cn","className"],"sources":["../../src/components/text.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\n\nimport { type AsChildProps, useAsChild } from '../lib/as-child'\nimport { cn } from '../lib/utils'\n\nconst textVariants = cva('text-foreground font-normal', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nexport type TextProps = AsChildProps<'p'> & VariantProps<typeof textVariants>\n\nfunction Text({ className, size = 'md', ...props }: TextProps) {\n return useAsChild('p', {\n 'data-slot': 'text',\n 'data-size': size,\n className: cn(textVariants({ size }), className),\n ...props\n })\n}\n\nexport { Text, textVariants }\n"],"mappings":"4KAKA,MAAMA,EAAeC,EAAI,8BAA+B,CACtD,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,YACJ,GAAI,UACJ,GAAI,SACN,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CAAC,EAID,SAAS,KAAK,CAAE,YAAW,OAAO,KAAM,GAAGC,GAAoB,CAC7D,OAAOC,EAAW,IAAK,CACrB,YAAa,OACb,YAAaC,EACb,UAAWC,EAAGL,EAAa,CAAE,MAAK,CAAC,EAAGM,CAAS,EAC/C,GAAGJ,CACL,CAAC,CACH"}
|
|
1
|
+
{"version":3,"file":"text.js","names":["textVariants","cva","props","useAsChild","size","cn","className"],"sources":["../../src/components/text.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\n\nimport { type AsChildProps, useAsChild } from '../lib/as-child'\nimport { cn } from '../lib/utils'\n\nconst textVariants = cva('text-foreground font-normal', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n})\n\nexport type TextProps = AsChildProps<'p'> & VariantProps<typeof textVariants>\n\nfunction Text({ className, size = 'md', ...props }: TextProps) {\n return useAsChild('p', {\n 'data-slot': 'text',\n 'data-size': size,\n className: cn(textVariants({ size }), className),\n ...props\n })\n}\n\nexport { Text, textVariants }\n"],"mappings":"A,4KAKA,MAAMA,EAAeC,EAAI,8BAA+B,CACtD,SAAU,CACR,KAAM,CACJ,GAAI,UACJ,GAAI,UACJ,GAAI,YACJ,GAAI,UACJ,GAAI,SACN,CACF,EACA,gBAAiB,CACf,KAAM,IACR,CACF,CAAC,EAID,SAAS,KAAK,CAAE,YAAW,OAAO,KAAM,GAAGC,GAAoB,CAC7D,OAAOC,EAAW,IAAK,CACrB,YAAa,OACb,YAAaC,EACb,UAAWC,EAAGL,EAAa,CAAE,MAAK,CAAC,EAAGM,CAAS,EAC/C,GAAGJ,CACL,CAAC,CACH,C"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
2
|
import * as React from "react";
|
|
3
|
-
//#region src/components/textarea.d.ts
|
|
4
3
|
export type TextareaProps = React.ComponentProps<'textarea'>;
|
|
5
4
|
declare function Textarea({ className, id, 'aria-invalid': ariaInvalid, ...props }: TextareaProps): React.JSX.Element;
|
|
6
|
-
//#endregion
|
|
7
5
|
export { Textarea };
|
|
8
6
|
//# sourceMappingURL=textarea.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.js","names":["ariaInvalid","props","fieldControlId","useFieldControlId","id","invalid","useFieldInvalid","cn","className"],"sources":["../../src/components/textarea.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { cn } from '../lib/utils'\nimport { useFieldControlId, useFieldInvalid } from './field'\n\nexport type TextareaProps = React.ComponentProps<'textarea'>\n\nfunction Textarea({ className, id, 'aria-invalid': ariaInvalid, ...props }: TextareaProps) {\n const fieldControlId = useFieldControlId(id)\n const invalid = useFieldInvalid(ariaInvalid)\n\n return (\n <textarea\n id={fieldControlId}\n aria-invalid={invalid}\n data-slot=\"textarea\"\n className={cn(\n 'flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-placeholder focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n"],"mappings":"yLAOA,SAAS,SAAS,CAAE,YAAW,KAAI,eAAgBA,EAAa,GAAGC,GAAwB,CACzF,IAAMC,EAAiBC,EAAkBC,CAAE,EACrCC,EAAUC,EAAgBN,CAAW,EAE3C,MACE,kBAAC,WAAD,CACE,GAAIE,EACJ,eAAcG,EACd,YAAU,WACV,UAAWE,EACT,ohBACAC,CACF,EACA,GAAIP,CACL,CAAA,CAEL"}
|
|
1
|
+
{"version":3,"file":"textarea.js","names":["ariaInvalid","props","fieldControlId","useFieldControlId","id","invalid","useFieldInvalid","cn","className"],"sources":["../../src/components/textarea.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { cn } from '../lib/utils'\nimport { useFieldControlId, useFieldInvalid } from './field'\n\nexport type TextareaProps = React.ComponentProps<'textarea'>\n\nfunction Textarea({ className, id, 'aria-invalid': ariaInvalid, ...props }: TextareaProps) {\n const fieldControlId = useFieldControlId(id)\n const invalid = useFieldInvalid(ariaInvalid)\n\n return (\n <textarea\n id={fieldControlId}\n aria-invalid={invalid}\n data-slot=\"textarea\"\n className={cn(\n 'flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-placeholder focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n"],"mappings":"A,yLAOA,SAAS,SAAS,CAAE,YAAW,KAAI,eAAgBA,EAAa,GAAGC,GAAwB,CACzF,IAAMC,EAAiBC,EAAkBC,CAAE,EACrCC,EAAUC,EAAgBN,CAAW,EAE3C,MACE,kBAAC,WAAD,CACE,GAAIE,EACJ,eAAcG,EACd,YAAU,WACV,UAAWE,EACT,ohBACAC,CACF,EACA,GAAIP,CACL,CAAA,CAEL,C"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
2
|
import { Button } from "./button.js";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
//#region src/components/theme.d.ts
|
|
5
4
|
export type Theme = 'dark' | 'light' | 'system';
|
|
6
5
|
export type ThemeProviderProps = {
|
|
7
6
|
children: React.ReactNode;
|
|
@@ -29,5 +28,4 @@ export type ModeToggleProps = React.ComponentProps<typeof Button>;
|
|
|
29
28
|
export declare function ThemeProvider({ children, defaultTheme, storageKey, disableTransitionOnChange, ...props }: ThemeProviderProps): React.JSX.Element;
|
|
30
29
|
export declare const useTheme: () => ThemeProviderState;
|
|
31
30
|
export declare function ModeToggle(props: ModeToggleProps): React.JSX.Element;
|
|
32
|
-
//#endregion
|
|
33
31
|
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","names":["ThemeProviderContext","createContext","css","storageKey","defaultTheme","theme","props","setTheme","useState","useEffect","root","darkSchemeQuery","enableTransitions","disableTransitionOnChange","value","context","use","DropdownMenu","DropdownMenuTrigger","Button","IconSun","IconMoon","DropdownMenuContent","DropdownMenuItem"],"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 /**\n * Theme used until the user picks one.\n * @default 'system'\n */\n defaultTheme?: Theme\n /**\n * `localStorage` key where the theme is saved.\n * @default 'vite-ui-theme'\n */\n storageKey?: string\n /**\n * Turns off CSS transitions while the theme switches.\n * @default false\n */\n disableTransitionOnChange?: boolean\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\nfunction disableAnimation() {\n const css = document.createElement('style')\n\n css.appendChild(\n document.createTextNode(\n '*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}'\n )\n )\n document.head.appendChild(css)\n\n return () => {\n window.getComputedStyle(document.body)\n\n setTimeout(() => {\n document.head.removeChild(css)\n }, 1)\n }\n}\n\n// Storage can be missing (server rendering) or throw (blocked by the browser); the theme then just isn't persisted.\nfunction readStoredTheme(storageKey: string, defaultTheme: Theme) {\n try {\n return (window.localStorage.getItem(storageKey) as Theme | null) || defaultTheme\n } catch {\n return defaultTheme\n }\n}\n\nfunction writeStoredTheme(storageKey: string, theme: Theme) {\n try {\n window.localStorage.setItem(storageKey, theme)\n } catch {}\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n storageKey = 'vite-ui-theme',\n disableTransitionOnChange = false,\n ...props\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<Theme>(() => readStoredTheme(storageKey, defaultTheme))\n\n useEffect(() => {\n const root = window.document.documentElement\n const darkSchemeQuery = window.matchMedia('(prefers-color-scheme: dark)')\n\n const applyTheme = () => {\n const enableTransitions = disableTransitionOnChange ? disableAnimation() : null\n\n root.classList.remove('light', 'dark')\n root.classList.add(theme === 'system' ? (darkSchemeQuery.matches ? 'dark' : 'light') : theme)\n\n enableTransitions?.()\n }\n\n applyTheme()\n\n // With the system theme, follow the OS while the app is open.\n if (theme !== 'system') return\n darkSchemeQuery.addEventListener('change', applyTheme)\n return () => darkSchemeQuery.removeEventListener('change', applyTheme)\n }, [theme, disableTransitionOnChange])\n\n const value = {\n theme,\n setTheme: (theme: Theme) => {\n writeStoredTheme(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":"iYAoCA,MAAMA,EAAuBC,EAAc,CAAC,CAAuB,EAEnE,SAAS,kBAAmB,CAC1B,IAAMC,EAAM,SAAS,cAAc,OAAO,EAS1C,OAPAA,EAAI,YACF,SAAS,eACP,6KACF,CACF,EACA,SAAS,KAAK,YAAYA,CAAG,MAEhB,CACX,OAAO,iBAAiB,SAAS,IAAI,EAErC,eAAiB,CACf,SAAS,KAAK,YAAYA,CAAG,CAC/B,EAAG,CAAC,CACN,CACF,CAGA,SAAS,gBAAgB,EAAoB,EAAqB,CAChE,GAAI,CACF,OAAQ,OAAO,aAAa,QAAQC,CAAU,GAAsBC,CACtE,MAAQ,CACN,OAAOA,CACT,CACF,CAEA,SAAS,iBAAiB,EAAoB,EAAc,CAC1D,GAAI,CACF,OAAO,aAAa,QAAQD,EAAYE,CAAK,CAC/C,MAAQ,CAAC,CACX,CAEA,SAAgB,cAAc,CAC5B,WACA,eAAe,SACf,aAAa,gBACb,4BAA4B,GAC5B,GAAGC,GACkB,CACrB,GAAM,CAACD,EAAOE,GAAYC,MAAsB,gBAAgBL,EAAYC,CAAY,CAAC,EAEzFK,MAAgB,CACd,IAAMC,EAAO,OAAO,SAAS,gBACvBC,EAAkB,OAAO,WAAW,8BAA8B,EAElE,eAAmB,CACvB,IAAMC,EAAoBC,EAA4B,iBAAiB,EAAI,KAE3EH,EAAK,UAAU,OAAO,QAAS,MAAM,EACrCA,EAAK,UAAU,IAAIL,IAAU,SAAYM,EAAgB,QAAU,OAAS,QAAWN,CAAK,EAE5FO,IAAoB,CACtB,EAKA,GAHA,WAAW,EAGPP,IAAU,SAEd,OADAM,EAAgB,iBAAiB,SAAU,UAAU,MACxCA,EAAgB,oBAAoB,SAAU,UAAU,CACvE,EAAG,CAACN,EAAOQ,CAAyB,CAAC,EAErC,IAAMC,EAAQ,CACZ,QACA,SAAW,GAAiB,CAC1B,iBAAiBX,EAAYE,CAAK,EAClCE,EAASF,CAAK,CAChB,CACF,EAEA,MACE,kBAACL,EAAqB,SAAtB,CAA+B,GAAIM,EAAc,QAC9C,UAC4B,CAAA,CAEnC,CAEA,MAAa,aAAiB,CAC5B,IAAMS,EAAUC,EAAIhB,CAAoB,EAExC,GAAIe,IAAY,IAAA,IAAa,OAAO,KAAKA,CAAO,CAAC,CAAC,SAAW,EAC3D,MAAU,MAAM,8CAA8C,EAGhE,OAAOA,CACT,EAEA,SAAgB,WAAW,EAAwB,CACjD,GAAM,CAAE,YAAa,SAAS,EAE9B,MACE,kBAACE,EAAD,CAAA,SAAA,CACE,kBAACC,EAAD,CAAqB,QAAA,GACnB,SAAA,kBAACC,EAAD,CAAQ,QAAQ,UAAU,KAAK,OAAO,GAAIb,EAA1C,SAAA,CACE,kBAACc,EAAD,CAAS,UAAU,sFAAwF,CAAA,EAC3G,kBAACC,EAAD,CAAU,UAAU,8FAAgG,CAAA,EACpH,kBAAC,OAAD,CAAM,UAAU,UAAU,SAAA,cAAkB,CAAA,CACtC,
|
|
1
|
+
{"version":3,"file":"theme.js","names":["ThemeProviderContext","createContext","css","storageKey","defaultTheme","theme","props","setTheme","useState","useEffect","root","darkSchemeQuery","enableTransitions","disableTransitionOnChange","value","context","use","DropdownMenu","DropdownMenuTrigger","Button","IconSun","IconMoon","DropdownMenuContent","DropdownMenuItem"],"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 /**\n * Theme used until the user picks one.\n * @default 'system'\n */\n defaultTheme?: Theme\n /**\n * `localStorage` key where the theme is saved.\n * @default 'vite-ui-theme'\n */\n storageKey?: string\n /**\n * Turns off CSS transitions while the theme switches.\n * @default false\n */\n disableTransitionOnChange?: boolean\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\nfunction disableAnimation() {\n const css = document.createElement('style')\n\n css.appendChild(\n document.createTextNode(\n '*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}'\n )\n )\n document.head.appendChild(css)\n\n return () => {\n window.getComputedStyle(document.body)\n\n setTimeout(() => {\n document.head.removeChild(css)\n }, 1)\n }\n}\n\n// Storage can be missing (server rendering) or throw (blocked by the browser); the theme then just isn't persisted.\nfunction readStoredTheme(storageKey: string, defaultTheme: Theme) {\n try {\n return (window.localStorage.getItem(storageKey) as Theme | null) || defaultTheme\n } catch {\n return defaultTheme\n }\n}\n\nfunction writeStoredTheme(storageKey: string, theme: Theme) {\n try {\n window.localStorage.setItem(storageKey, theme)\n } catch {}\n}\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n storageKey = 'vite-ui-theme',\n disableTransitionOnChange = false,\n ...props\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<Theme>(() => readStoredTheme(storageKey, defaultTheme))\n\n useEffect(() => {\n const root = window.document.documentElement\n const darkSchemeQuery = window.matchMedia('(prefers-color-scheme: dark)')\n\n const applyTheme = () => {\n const enableTransitions = disableTransitionOnChange ? disableAnimation() : null\n\n root.classList.remove('light', 'dark')\n root.classList.add(theme === 'system' ? (darkSchemeQuery.matches ? 'dark' : 'light') : theme)\n\n enableTransitions?.()\n }\n\n applyTheme()\n\n // With the system theme, follow the OS while the app is open.\n if (theme !== 'system') return\n darkSchemeQuery.addEventListener('change', applyTheme)\n return () => darkSchemeQuery.removeEventListener('change', applyTheme)\n }, [theme, disableTransitionOnChange])\n\n const value = {\n theme,\n setTheme: (theme: Theme) => {\n writeStoredTheme(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":"A,iYAoCA,MAAMA,EAAuBC,EAAc,CAAC,CAAuB,EAEnE,SAAS,kBAAmB,CAC1B,IAAMC,EAAM,SAAS,cAAc,OAAO,EAS1C,OAPAA,EAAI,YACF,SAAS,eACP,6KACF,CACF,EACA,SAAS,KAAK,YAAYA,CAAG,MAEhB,CACX,OAAO,iBAAiB,SAAS,IAAI,EAErC,eAAiB,CACf,SAAS,KAAK,YAAYA,CAAG,CAC/B,EAAG,CAAC,CACN,CACF,CAGA,SAAS,gBAAgB,EAAoB,EAAqB,CAChE,GAAI,CACF,OAAQ,OAAO,aAAa,QAAQC,CAAU,GAAsBC,CACtE,MAAQ,CACN,OAAOA,CACT,CACF,CAEA,SAAS,iBAAiB,EAAoB,EAAc,CAC1D,GAAI,CACF,OAAO,aAAa,QAAQD,EAAYE,CAAK,CAC/C,MAAQ,CAAC,CACX,CAEA,SAAgB,cAAc,CAC5B,WACA,eAAe,SACf,aAAa,gBACb,4BAA4B,GAC5B,GAAGC,GACkB,CACrB,GAAM,CAACD,EAAOE,GAAYC,MAAsB,gBAAgBL,EAAYC,CAAY,CAAC,EAEzFK,MAAgB,CACd,IAAMC,EAAO,OAAO,SAAS,gBACvBC,EAAkB,OAAO,WAAW,8BAA8B,EAElE,eAAmB,CACvB,IAAMC,EAAoBC,EAA4B,iBAAiB,EAAI,KAE3EH,EAAK,UAAU,OAAO,QAAS,MAAM,EACrCA,EAAK,UAAU,IAAIL,IAAU,SAAYM,EAAgB,QAAU,OAAS,QAAWN,CAAK,EAE5FO,IAAoB,CACtB,EAKA,GAHA,WAAW,EAGPP,IAAU,SAEd,OADAM,EAAgB,iBAAiB,SAAU,UAAU,MACxCA,EAAgB,oBAAoB,SAAU,UAAU,CACvE,EAAG,CAACN,EAAOQ,CAAyB,CAAC,EAErC,IAAMC,EAAQ,CACZ,QACA,SAAW,GAAiB,CAC1B,iBAAiBX,EAAYE,CAAK,EAClCE,EAASF,CAAK,CAChB,CACF,EAEA,MACE,kBAACL,EAAqB,SAAtB,CAA+B,GAAIM,EAAc,QAC9C,UAC4B,CAAA,CAEnC,CAEA,MAAa,aAAiB,CAC5B,IAAMS,EAAUC,EAAIhB,CAAoB,EAExC,GAAIe,IAAY,IAAA,IAAa,OAAO,KAAKA,CAAO,CAAC,CAAC,SAAW,EAC3D,MAAU,MAAM,8CAA8C,EAGhE,OAAOA,CACT,EAEA,SAAgB,WAAW,EAAwB,CACjD,GAAM,CAAE,YAAa,SAAS,EAE9B,MACE,kBAACE,EAAD,CAAA,SAAA,CACE,kBAACC,EAAD,CAAqB,QAAA,GACnB,SAAA,kBAACC,EAAD,CAAQ,QAAQ,UAAU,KAAK,OAAO,GAAIb,EAA1C,SAAA,CACE,kBAACc,EAAD,CAAS,UAAU,sFAAwF,CAAA,EAC3G,kBAACC,EAAD,CAAU,UAAU,8FAAgG,CAAA,EACpH,kBAAC,OAAD,CAAM,UAAU,UAAU,SAAA,cAAkB,CAAA,CACtC,C,EACW,CAAA,EACrB,kBAACC,EAAD,CAAqB,MAAM,MAA3B,SAAA,CACE,kBAACC,EAAD,CAAkB,YAAehB,EAAS,OAAO,EAAG,SAAA,OAAuB,CAAA,EAC3E,kBAACgB,EAAD,CAAkB,YAAehB,EAAS,MAAM,EAAG,SAAA,MAAsB,CAAA,EACzE,kBAACgB,EAAD,CAAkB,YAAehB,EAAS,QAAQ,EAAG,SAAA,QAAwB,CAAA,CAC1D,CACT,CAAA,CAAA,CAAA,CAAA,CAElB,C"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { VariantProps } from "class-variance-authority";
|
|
4
|
-
//#region src/components/timeline.d.ts
|
|
5
4
|
declare const timelineVariants: (props?: ({
|
|
6
5
|
size?: "lg" | "md" | "sm" | null | undefined;
|
|
7
6
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
@@ -80,6 +79,5 @@ export type TimelineContentProps = React.ComponentProps<'div'>;
|
|
|
80
79
|
declare const TimelineContent: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
81
80
|
export type TimelineEmptyProps = React.ComponentProps<'div'>;
|
|
82
81
|
declare const TimelineEmpty: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
83
|
-
//#endregion
|
|
84
82
|
export { Timeline, TimelineConnector, TimelineContent, TimelineDescription, TimelineEmpty, TimelineHeader, TimelineIcon, TimelineItem, TimelineTime, TimelineTitle, timelineVariants };
|
|
85
83
|
//# sourceMappingURL=timeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline.js","names":["React","timelineVariants","cva","timelineItemVariants","timelineConnectorVariants","timelineIconVariants","timelineIconContentVariants","Timeline","props","childArray","children","totalItems","size","cn","className","TimelineEmpty","itemIndex","child","isLastItem","iconSize","TimelineItem","loading","status","Spinner","showConnector","error","TimelineTime","date","IconAlertCircle","TimelineConnector","TimelineHeader","TimelineTitle","title","TimelineDescription","TimelineIcon","iconColor","connectorColor","TimelineContent","description","defaultDateFormat","dateValue","formattedDate","format","color","icon","parsedDate","ISO_DATE_PATTERN","keyPrefix"],"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 /** Icon size for every item. */\n iconSize?: TimelineIconSize\n }\n\nconst Timeline = React.forwardRef<HTMLOListElement, TimelineProps>(\n ({ className, iconSize, size = 'md', children, ...props }, ref) => {\n const childArray = flattenFragments(children)\n const totalItems = childArray.filter(isTimelineItemElement).length\n\n if (childArray.length === 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 {childArray.map((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 shown next to the icon. ISO strings and timestamps are also exposed as machine-readable dates. */\n date?: React.ReactNode\n /** Item title. */\n title?: React.ReactNode\n /** Text below the title. */\n description?: React.ReactNode\n /** Icon inside the circle. */\n icon?: React.ReactNode\n /** Background color of the icon. */\n iconColor?: TimelineIconColor\n /**\n * Progress of the item; sets the connector color. `in-progress` marks it as the current step.\n * @default 'completed'\n */\n status?: TimelineStatus\n /** Overrides the connector color. */\n connectorColor?: TimelineConnectorColor\n /**\n * Shows the line to the next item.\n * @default true\n */\n showConnector?: boolean\n /** Icon size for this item. Defaults to the timeline `iconSize`. */\n iconSize?: TimelineIconSize\n /**\n * Renders a skeleton instead of the item.\n * @default false\n */\n loading?: boolean\n /** Renders the item as failed, with this message. */\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\" dateTime={getItemDateTime(date)}>\n {date}\n </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\" dateTime={getItemDateTime(date)}>\n {date}\n </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 to format (`Date`, timestamp or ISO string). */\n date?: string | Date | number\n /** `Intl.DateTimeFormat` options merged over the defaults. */\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 inside the circle. */\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\n// Matches ISO 8601 dates (`2024-01-15`, `2024-01-15T10:30:00Z`). Other formats such as `01/02/2024` are\n// ambiguous across locales, so they are shown as given without a machine-readable `dateTime`.\nconst ISO_DATE_PATTERN = /^\\d{4}-\\d{2}-\\d{2}(T[\\d:.]+(Z|[+-]\\d{2}:?\\d{2})?)?$/\n\nfunction getItemDateTime(date: React.ReactNode) {\n if (typeof date === 'number') {\n return getValidDate(date)?.toISOString()\n }\n if (typeof date === 'string' && ISO_DATE_PATTERN.test(date.trim()) && getValidDate(date.trim())) {\n return date.trim()\n }\n return undefined\n}\n\n// Opens fragments so items inside them count as items (empty state, last connector, `iconSize`). Keys are\n// prefixed with the fragment key so items from sibling fragments never collide.\nfunction flattenFragments(children: React.ReactNode, keyPrefix = ''): React.ReactNode[] {\n return React.Children.toArray(children).flatMap((child) => {\n if (React.isValidElement<{ children?: React.ReactNode }>(child) && child.type === React.Fragment) {\n return flattenFragments(child.props.children, `${keyPrefix}${child.key}/`)\n }\n if (keyPrefix && React.isValidElement(child)) {\n return [React.cloneElement(child, { key: `${keyPrefix}${child.key}` })]\n }\n return [child]\n })\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":["React","timelineVariants","cva","timelineItemVariants","timelineConnectorVariants","timelineIconVariants","timelineIconContentVariants","Timeline","props","childArray","children","totalItems","size","cn","className","TimelineEmpty","itemIndex","child","isLastItem","iconSize","TimelineItem","loading","status","Spinner","showConnector","error","TimelineTime","date","IconAlertCircle","TimelineConnector","TimelineHeader","TimelineTitle","title","TimelineDescription","TimelineIcon","iconColor","connectorColor","TimelineContent","description","defaultDateFormat","dateValue","formattedDate","format","color","icon","parsedDate","ISO_DATE_PATTERN","keyPrefix"],"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 /** Icon size for every item. */\n iconSize?: TimelineIconSize\n }\n\nconst Timeline = React.forwardRef<HTMLOListElement, TimelineProps>(\n ({ className, iconSize, size = 'md', children, ...props }, ref) => {\n const childArray = flattenFragments(children)\n const totalItems = childArray.filter(isTimelineItemElement).length\n\n if (childArray.length === 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 {childArray.map((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 shown next to the icon. ISO strings and timestamps are also exposed as machine-readable dates. */\n date?: React.ReactNode\n /** Item title. */\n title?: React.ReactNode\n /** Text below the title. */\n description?: React.ReactNode\n /** Icon inside the circle. */\n icon?: React.ReactNode\n /** Background color of the icon. */\n iconColor?: TimelineIconColor\n /**\n * Progress of the item; sets the connector color. `in-progress` marks it as the current step.\n * @default 'completed'\n */\n status?: TimelineStatus\n /** Overrides the connector color. */\n connectorColor?: TimelineConnectorColor\n /**\n * Shows the line to the next item.\n * @default true\n */\n showConnector?: boolean\n /** Icon size for this item. Defaults to the timeline `iconSize`. */\n iconSize?: TimelineIconSize\n /**\n * Renders a skeleton instead of the item.\n * @default false\n */\n loading?: boolean\n /** Renders the item as failed, with this message. */\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\" dateTime={getItemDateTime(date)}>\n {date}\n </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\" dateTime={getItemDateTime(date)}>\n {date}\n </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 to format (`Date`, timestamp or ISO string). */\n date?: string | Date | number\n /** `Intl.DateTimeFormat` options merged over the defaults. */\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 inside the circle. */\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\n// Matches ISO 8601 dates (`2024-01-15`, `2024-01-15T10:30:00Z`). Other formats such as `01/02/2024` are\n// ambiguous across locales, so they are shown as given without a machine-readable `dateTime`.\nconst ISO_DATE_PATTERN = /^\\d{4}-\\d{2}-\\d{2}(T[\\d:.]+(Z|[+-]\\d{2}:?\\d{2})?)?$/\n\nfunction getItemDateTime(date: React.ReactNode) {\n if (typeof date === 'number') {\n return getValidDate(date)?.toISOString()\n }\n if (typeof date === 'string' && ISO_DATE_PATTERN.test(date.trim()) && getValidDate(date.trim())) {\n return date.trim()\n }\n return undefined\n}\n\n// Opens fragments so items inside them count as items (empty state, last connector, `iconSize`). Keys are\n// prefixed with the fragment key so items from sibling fragments never collide.\nfunction flattenFragments(children: React.ReactNode, keyPrefix = ''): React.ReactNode[] {\n return React.Children.toArray(children).flatMap((child) => {\n if (React.isValidElement<{ children?: React.ReactNode }>(child) && child.type === React.Fragment) {\n return flattenFragments(child.props.children, `${keyPrefix}${child.key}/`)\n }\n if (keyPrefix && React.isValidElement(child)) {\n return [React.cloneElement(child, { key: `${keyPrefix}${child.key}` })]\n }\n return [child]\n })\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,11 +1,10 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
|
-
import { t as AsChildPrimitiveProps } from "../as-child-
|
|
2
|
+
import { t as AsChildPrimitiveProps } from "../as-child-T9W73ZYU.js";
|
|
3
3
|
import { toggleVariants } from "./toggle.js";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { VariantProps } from "class-variance-authority";
|
|
6
6
|
import { Toggle } from "@base-ui/react/toggle";
|
|
7
7
|
import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
|
|
8
|
-
//#region src/components/toggle-group.d.ts
|
|
9
8
|
export type ToggleGroupProps = AsChildPrimitiveProps<typeof ToggleGroup$1> & VariantProps<typeof toggleVariants> & {
|
|
10
9
|
/**
|
|
11
10
|
* Gap between items, in Tailwind spacing units. `0` joins them into one control.
|
|
@@ -21,6 +20,5 @@ export type ToggleGroupProps = AsChildPrimitiveProps<typeof ToggleGroup$1> & Var
|
|
|
21
20
|
export type ToggleGroupItemProps = AsChildPrimitiveProps<typeof Toggle> & VariantProps<typeof toggleVariants>;
|
|
22
21
|
declare function ToggleGroup({ className, variant, color, size, spacing, orientation, children, asChild, ...props }: ToggleGroupProps): React.JSX.Element;
|
|
23
22
|
declare function ToggleGroupItem({ className, children, variant, color, size, asChild, ...props }: ToggleGroupItemProps): React.JSX.Element;
|
|
24
|
-
//#endregion
|
|
25
23
|
export { ToggleGroup, ToggleGroupItem };
|
|
26
24
|
//# sourceMappingURL=toggle-group.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-group.js","names":["ToggleGroupPrimitive","TogglePrimitive","resolveClassName","React","ToggleGroup$1","ToggleGroupContext","props","variant","color","size","spacing","orientation","cn","className","state","toAsChildRenderProps","asChild","children","context","Toggle","toggleVariants"],"sources":["../../src/components/toggle-group.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Toggle as TogglePrimitive } from '@base-ui/react/toggle'\nimport { ToggleGroup as ToggleGroupPrimitive } from '@base-ui/react/toggle-group'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport { cn } from '../lib/utils'\nimport { resolveClassName } from '../utils/resolve-class-name'\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 = AsChildPrimitiveProps<typeof ToggleGroupPrimitive> &\n VariantProps<typeof toggleVariants> & {\n /**\n * Gap between items, in Tailwind spacing units. `0` joins them into one control.\n * @default 0\n */\n spacing?: number\n /**\n * Layout and arrow-key direction.\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical'\n }\n\nexport type ToggleGroupItemProps = AsChildPrimitiveProps<typeof TogglePrimitive> & VariantProps<typeof toggleVariants>\n\nfunction ToggleGroup({\n className,\n variant,\n color,\n size,\n spacing = 0,\n orientation = 'horizontal',\n children,\n asChild,\n ...props\n}: ToggleGroupProps) {\n return (\n <ToggleGroupContext.Provider value={{ variant, color, size, spacing, orientation }}>\n <ToggleGroupPrimitive\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 orientation={orientation}\n style={{ '--gap': spacing } as React.CSSProperties}\n className={(state) =>\n 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 resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n </ToggleGroupContext.Provider>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant = 'ghost',\n color = 'primary',\n size = 'md',\n asChild,\n ...props\n}: ToggleGroupItemProps) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <TogglePrimitive\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={(state) =>\n 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',\n '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 'group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=secondary]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=secondary]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=secondary]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=secondary]:first:border-t',\n toggleVariants({\n variant: context.variant || variant,\n color: context.color || color,\n size: context.size || size\n }),\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n </TogglePrimitive>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"],"mappings":"mZAWA,MAAMK,EAAqBF,EAAM,cAK/B,CACA,KAAM,KACN,QAAS,QACT,MAAO,UACP,QAAS,EACT,YAAa,YACf,CAAC,EAkBD,SAAS,YAAY,CACnB,YACA,UACA,QACA,OACA,UAAU,EACV,cAAc,aACd,WACA,UACA,GAAGG,GACgB,CACnB,MACE,kBAACD,EAAmB,SAApB,CAA6B,MAAO,CAAE,UAAS,QAAO,OAAM,UAAS,aAAY,EAC/E,SAAA,kBAACL,EAAD,CACE,YAAU,eACV,eAAcO,GAAW,QACzB,aAAYC,GAAS,UACrB,YAAWC,GAAQ,KACnB,eAAcC,EACd,mBAAkBC,EACL,cACb,MAAO,CAAE,QAASD,CAAQ,EAC1B,UAAY,GACVE,EACE,oMACAV,EAAiBW,EAAWC,CAAK,CACnC,EAEF,GAAIR,EACJ,GAAIS,EAAqBC,EAASC,CAAQ,CAC3C,CAAA,CAC0B,CAAA,CAEjC,CAEA,SAAS,gBAAgB,CACvB,YACA,WACA,UAAU,QACV,QAAQ,UACR,OAAO,KACP,UACA,GAAGX,GACoB,CACvB,IAAMY,EAAUf,EAAM,WAAWE,CAAkB,EAEnD,MACE,kBAACJ,EAAD,CACE,YAAU,oBACV,eAAciB,EAAQ,SAAWX,EACjC,aAAYW,EAAQ,OAASV,EAC7B,YAAWU,EAAQ,MAAQT,EAC3B,eAAcS,EAAQ,QACtB,UAAY,GACVN,EACE,yZACA,8VACA,sWACAQ,EAAe,CACb,QAASF,EAAQ,SAAWX,EAC5B,MAAOW,EAAQ,OAASV,EACxB,KAAMU,EAAQ,MAAQT,CACxB,CAAC,EACDP,EAAiBW,EAAWC,CAAK,CACnC,EAEF,GAAIR,EACJ,GAAIS,EAAqBC,EAASC,CAAQ,EAEzC,SAAA,CAACD,GAAWC,CACE,CAAA,CAErB"}
|
|
1
|
+
{"version":3,"file":"toggle-group.js","names":["ToggleGroupPrimitive","TogglePrimitive","resolveClassName","React","ToggleGroup$1","ToggleGroupContext","props","variant","color","size","spacing","orientation","cn","className","state","toAsChildRenderProps","asChild","children","context","Toggle","toggleVariants"],"sources":["../../src/components/toggle-group.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Toggle as TogglePrimitive } from '@base-ui/react/toggle'\nimport { ToggleGroup as ToggleGroupPrimitive } from '@base-ui/react/toggle-group'\nimport type { VariantProps } from 'class-variance-authority'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport { cn } from '../lib/utils'\nimport { resolveClassName } from '../utils/resolve-class-name'\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 = AsChildPrimitiveProps<typeof ToggleGroupPrimitive> &\n VariantProps<typeof toggleVariants> & {\n /**\n * Gap between items, in Tailwind spacing units. `0` joins them into one control.\n * @default 0\n */\n spacing?: number\n /**\n * Layout and arrow-key direction.\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical'\n }\n\nexport type ToggleGroupItemProps = AsChildPrimitiveProps<typeof TogglePrimitive> & VariantProps<typeof toggleVariants>\n\nfunction ToggleGroup({\n className,\n variant,\n color,\n size,\n spacing = 0,\n orientation = 'horizontal',\n children,\n asChild,\n ...props\n}: ToggleGroupProps) {\n return (\n <ToggleGroupContext.Provider value={{ variant, color, size, spacing, orientation }}>\n <ToggleGroupPrimitive\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 orientation={orientation}\n style={{ '--gap': spacing } as React.CSSProperties}\n className={(state) =>\n 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 resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n </ToggleGroupContext.Provider>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant = 'ghost',\n color = 'primary',\n size = 'md',\n asChild,\n ...props\n}: ToggleGroupItemProps) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <TogglePrimitive\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={(state) =>\n 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',\n '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 'group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=secondary]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=secondary]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=secondary]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=secondary]:first:border-t',\n toggleVariants({\n variant: context.variant || variant,\n color: context.color || color,\n size: context.size || size\n }),\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n </TogglePrimitive>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"],"mappings":"A,mZAWA,MAAMK,EAAqBF,EAAM,cAK/B,CACA,KAAM,KACN,QAAS,QACT,MAAO,UACP,QAAS,EACT,YAAa,YACf,CAAC,EAkBD,SAAS,YAAY,CACnB,YACA,UACA,QACA,OACA,UAAU,EACV,cAAc,aACd,WACA,UACA,GAAGG,GACgB,CACnB,MACE,kBAACD,EAAmB,SAApB,CAA6B,MAAO,CAAE,UAAS,QAAO,OAAM,UAAS,aAAY,EAC/E,SAAA,kBAACL,EAAD,CACE,YAAU,eACV,eAAcO,GAAW,QACzB,aAAYC,GAAS,UACrB,YAAWC,GAAQ,KACnB,eAAcC,EACd,mBAAkBC,EACL,cACb,MAAO,CAAE,QAASD,CAAQ,EAC1B,UAAY,GACVE,EACE,oMACAV,EAAiBW,EAAWC,CAAK,CACnC,EAEF,GAAIR,EACJ,GAAIS,EAAqBC,EAASC,CAAQ,CAC3C,CAAA,CAC0B,CAAA,CAEjC,CAEA,SAAS,gBAAgB,CACvB,YACA,WACA,UAAU,QACV,QAAQ,UACR,OAAO,KACP,UACA,GAAGX,GACoB,CACvB,IAAMY,EAAUf,EAAM,WAAWE,CAAkB,EAEnD,MACE,kBAACJ,EAAD,CACE,YAAU,oBACV,eAAciB,EAAQ,SAAWX,EACjC,aAAYW,EAAQ,OAASV,EAC7B,YAAWU,EAAQ,MAAQT,EAC3B,eAAcS,EAAQ,QACtB,UAAY,GACVN,EACE,yZACA,8VACA,sWACAQ,EAAe,CACb,QAASF,EAAQ,SAAWX,EAC5B,MAAOW,EAAQ,OAASV,EACxB,KAAMU,EAAQ,MAAQT,CACxB,CAAC,EACDP,EAAiBW,EAAWC,CAAK,CACnC,EAEF,GAAIR,EACJ,GAAIS,EAAqBC,EAASC,CAAQ,EAEzC,SAAA,CAACD,GAAWC,CACE,CAAA,CAErB,C"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
|
|
2
|
-
import { t as AsChildPrimitiveProps } from "../as-child-
|
|
2
|
+
import { t as AsChildPrimitiveProps } from "../as-child-T9W73ZYU.js";
|
|
3
3
|
import { VariantProps } from "class-variance-authority";
|
|
4
4
|
import { Toggle as Toggle$1 } from "@base-ui/react/toggle";
|
|
5
|
-
//#region src/components/toggle.d.ts
|
|
6
5
|
declare const toggleVariants: (props?: ({
|
|
7
6
|
variant?: "ghost" | "outline" | "secondary" | null | undefined;
|
|
8
7
|
color?: "blue" | "brand" | "gray" | "green" | "indigo" | "pink" | "primary" | "red" | "yellow" | "zinc" | null | undefined;
|
|
@@ -10,6 +9,5 @@ declare const toggleVariants: (props?: ({
|
|
|
10
9
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
11
10
|
export type ToggleProps = AsChildPrimitiveProps<typeof Toggle$1> & VariantProps<typeof toggleVariants>;
|
|
12
11
|
declare function Toggle({ className, variant, color, size, asChild, children, ...props }: ToggleProps): import("react").JSX.Element;
|
|
13
|
-
//#endregion
|
|
14
12
|
export { Toggle, toggleVariants };
|
|
15
13
|
//# sourceMappingURL=toggle.d.ts.map
|