@spacing-ui/core 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +988 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +150 -6
- package/dist/index.d.ts +150 -6
- package/dist/index.js +983 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/select/select.tsx"],"names":["createContext","useContext","useState","useRef","useId","useCallback","useEffect","useMemo","forwardRef","Trigger","jsx"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n createContext,\n useContext,\n useState,\n useRef,\n useEffect,\n useId,\n useMemo,\n useCallback,\n forwardRef,\n type ReactNode,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type RefObject,\n} from \"react\";\n\ntype Renderable<S> = ReactNode | ((state: S) => ReactNode);\n\nfunction render<S>(children: Renderable<S> | undefined, state: S): ReactNode {\n return typeof children === \"function\" ? children(state) : children;\n}\n\ninterface OptionData {\n value: string;\n textValue: string;\n}\n\ninterface SelectContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n value: string;\n onValueChange: (value: string) => void;\n activeValue: string | null;\n setActiveValue: (value: string | null) => void;\n triggerId: string;\n listboxId: string;\n triggerRef: RefObject<HTMLButtonElement | null>;\n listboxRef: RefObject<HTMLDivElement | null>;\n getOptionId: (value: string) => string;\n getOrderedOptions: () => OptionData[];\n}\n\nconst SelectContext = createContext<SelectContextValue | null>(null);\n\nfunction useSelectContext(component: string): SelectContextValue {\n const ctx = useContext(SelectContext);\n if (!ctx) {\n throw new Error(`<Select.${component}> must be rendered inside <Select>`);\n }\n return ctx;\n}\n\ninterface SelectProps {\n value: string;\n onValueChange: (value: string) => void;\n children: ReactNode;\n}\n\nconst Root = ({ value, onValueChange, children }: SelectProps) => {\n const [open, setOpenState] = useState(false);\n const [activeValue, setActiveValue] = useState<string | null>(null);\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const listboxRef = useRef<HTMLDivElement | null>(null);\n\n const reactId = useId();\n const triggerId = `${reactId}trigger`;\n const listboxId = `${reactId}listbox`;\n const optionIdPrefix = `${reactId}option-`;\n\n const getOptionId = useCallback(\n (v: string) => optionIdPrefix + v.replace(/[^a-zA-Z0-9_-]/g, \"_\"),\n [optionIdPrefix]\n );\n\n const getOrderedOptions = useCallback((): OptionData[] => {\n const root = listboxRef.current;\n if (!root) return [];\n const nodes = root.querySelectorAll<HTMLElement>('[role=\"option\"]');\n return Array.from(nodes).map((node) => ({\n value: node.dataset.value ?? \"\",\n textValue: node.dataset.textValue ?? node.textContent ?? \"\",\n }));\n }, []);\n\n const setOpen = useCallback((next: boolean) => {\n setOpenState(next);\n if (!next) setActiveValue(null);\n }, []);\n\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (e: PointerEvent) => {\n const target = e.target as Node;\n if (!triggerRef.current?.contains(target) && !listboxRef.current?.contains(target)) {\n setOpen(false);\n }\n };\n document.addEventListener(\"pointerdown\", onPointerDown);\n return () => document.removeEventListener(\"pointerdown\", onPointerDown);\n }, [open, setOpen]);\n\n const ctxValue = useMemo<SelectContextValue>(\n () => ({\n open,\n setOpen,\n value,\n onValueChange,\n activeValue,\n setActiveValue,\n triggerId,\n listboxId,\n triggerRef,\n listboxRef,\n getOptionId,\n getOrderedOptions,\n }),\n [\n open,\n setOpen,\n value,\n onValueChange,\n activeValue,\n triggerId,\n listboxId,\n getOptionId,\n getOrderedOptions,\n ]\n );\n\n return <SelectContext.Provider value={ctxValue}>{children}</SelectContext.Provider>;\n};\n\ninterface TriggerProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n children?: Renderable<{ open: boolean; value: string }>;\n}\n\nconst Trigger = forwardRef<HTMLButtonElement, TriggerProps>(function Trigger(\n { children, onClick, onKeyDown, ...rest },\n forwardedRef\n) {\n const ctx = useSelectContext(\"Trigger\");\n\n const setRefs = (node: HTMLButtonElement | null) => {\n ctx.triggerRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n };\n\n const handleClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(!ctx.open);\n };\n\n const handleKeyDown = (e: ReactKeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === \" \" || e.key === \"Enter\" || e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n ctx.setOpen(true);\n }\n };\n\n return (\n <button\n ref={setRefs}\n type=\"button\"\n id={ctx.triggerId}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={ctx.open}\n aria-controls={ctx.listboxId}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {render(children, { open: ctx.open, value: ctx.value })}\n </button>\n );\n});\n\ninterface ContentProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nconst TYPEAHEAD_TIMEOUT_MS = 500;\n\nconst Content = ({ children, onKeyDown, ...rest }: ContentProps) => {\n const ctx = useSelectContext(\"Content\");\n const typeaheadRef = useRef({ buffer: \"\", lastTime: 0 });\n\n useEffect(() => {\n if (!ctx.open) return;\n const options = ctx.getOrderedOptions();\n if (options.length === 0) {\n ctx.listboxRef.current?.focus();\n return;\n }\n const initial = options.find((o) => o.value === ctx.value)?.value ?? options[0]!.value;\n ctx.setActiveValue(initial);\n ctx.listboxRef.current?.focus();\n // only re-run on open transition\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ctx.open]);\n\n if (!ctx.open) return null;\n\n const moveActive = (delta: 1 | -1 | \"first\" | \"last\") => {\n const options = ctx.getOrderedOptions();\n if (options.length === 0) return;\n const currentIdx = options.findIndex((o) => o.value === ctx.activeValue);\n let nextIdx: number;\n if (delta === \"first\") nextIdx = 0;\n else if (delta === \"last\") nextIdx = options.length - 1;\n else if (currentIdx === -1) nextIdx = delta === 1 ? 0 : options.length - 1;\n else nextIdx = Math.min(options.length - 1, Math.max(0, currentIdx + delta));\n ctx.setActiveValue(options[nextIdx]!.value);\n };\n\n const typeahead = (char: string) => {\n const now = Date.now();\n const reset = now - typeaheadRef.current.lastTime > TYPEAHEAD_TIMEOUT_MS;\n const buffer = (reset ? \"\" : typeaheadRef.current.buffer) + char.toLowerCase();\n typeaheadRef.current = { buffer, lastTime: now };\n const options = ctx.getOrderedOptions();\n const match = options.find((o) => o.textValue.toLowerCase().startsWith(buffer));\n if (match) ctx.setActiveValue(match.value);\n };\n\n const handleKeyDown = (e: ReactKeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n moveActive(1);\n return;\n case \"ArrowUp\":\n e.preventDefault();\n moveActive(-1);\n return;\n case \"Home\":\n e.preventDefault();\n moveActive(\"first\");\n return;\n case \"End\":\n e.preventDefault();\n moveActive(\"last\");\n return;\n case \"Enter\":\n case \" \":\n e.preventDefault();\n if (ctx.activeValue !== null) {\n ctx.onValueChange(ctx.activeValue);\n ctx.setOpen(false);\n ctx.triggerRef.current?.focus();\n }\n return;\n case \"Escape\":\n e.preventDefault();\n ctx.setOpen(false);\n ctx.triggerRef.current?.focus();\n return;\n case \"Tab\":\n ctx.setOpen(false);\n return;\n default:\n if (e.key.length === 1 && !e.metaKey && !e.ctrlKey && !e.altKey) {\n typeahead(e.key);\n }\n }\n };\n\n return (\n <div\n ref={(node) => {\n ctx.listboxRef.current = node;\n }}\n id={ctx.listboxId}\n role=\"listbox\"\n tabIndex={-1}\n aria-labelledby={ctx.triggerId}\n aria-activedescendant={\n ctx.activeValue !== null ? ctx.getOptionId(ctx.activeValue) : undefined\n }\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\ninterface OptionProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n value: string;\n textValue?: string;\n children?: Renderable<{ selected: boolean; active: boolean }>;\n}\n\nconst Option = ({ value, textValue, children, onMouseEnter, onClick, ...rest }: OptionProps) => {\n const ctx = useSelectContext(\"Option\");\n const selected = ctx.value === value;\n const active = ctx.activeValue === value;\n\n const handleClick = (e: ReactMouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.onValueChange(value);\n ctx.setOpen(false);\n ctx.triggerRef.current?.focus();\n };\n\n const handleMouseEnter = (e: ReactMouseEvent<HTMLDivElement>) => {\n onMouseEnter?.(e);\n if (e.defaultPrevented) return;\n ctx.setActiveValue(value);\n };\n\n return (\n <div\n id={ctx.getOptionId(value)}\n role=\"option\"\n aria-selected={selected}\n data-value={value}\n data-text-value={textValue}\n data-active={active || undefined}\n data-selected={selected || undefined}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n {...rest}\n >\n {render(children, { selected, active })}\n </div>\n );\n};\n\nexport const Select = Object.assign(Root, {\n Trigger,\n Content,\n Option,\n});\n\nexport type { SelectProps, TriggerProps, ContentProps, OptionProps };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/select/select.tsx","../src/tooltip/tooltip.tsx","../src/switch/switch.tsx","../src/checkbox/checkbox.tsx","../src/radio-group/radio-group.tsx","../src/tabs/tabs.tsx","../src/accordion/accordion.tsx","../src/dialog/dialog.tsx"],"names":["createContext","useContext","useState","useRef","useId","triggerId","useCallback","useEffect","useMemo","forwardRef","Trigger","jsx","Root","contentId","isValidElement","cloneElement","Content","Switch","Checkbox","RadioGroup","Tabs","Item","Accordion"],"mappings":"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","file":"index.cjs","sourcesContent":["import {\n createContext,\n useContext,\n useState,\n useRef,\n useEffect,\n useId,\n useMemo,\n useCallback,\n forwardRef,\n type ReactNode,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type RefObject,\n} from \"react\";\n\ntype Renderable<S> = ReactNode | ((state: S) => ReactNode);\n\nfunction render<S>(children: Renderable<S> | undefined, state: S): ReactNode {\n return typeof children === \"function\" ? children(state) : children;\n}\n\ninterface OptionData {\n value: string;\n textValue: string;\n}\n\ninterface SelectContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n value: string;\n onValueChange: (value: string) => void;\n activeValue: string | null;\n setActiveValue: (value: string | null) => void;\n triggerId: string;\n listboxId: string;\n triggerRef: RefObject<HTMLButtonElement | null>;\n listboxRef: RefObject<HTMLDivElement | null>;\n getOptionId: (value: string) => string;\n getOrderedOptions: () => OptionData[];\n}\n\nconst SelectContext = createContext<SelectContextValue | null>(null);\n\nfunction useSelectContext(component: string): SelectContextValue {\n const ctx = useContext(SelectContext);\n if (!ctx) {\n throw new Error(`<Select.${component}> must be rendered inside <Select>`);\n }\n return ctx;\n}\n\ninterface SelectProps {\n value: string;\n onValueChange: (value: string) => void;\n children: ReactNode;\n}\n\nconst Root = ({ value, onValueChange, children }: SelectProps) => {\n const [open, setOpenState] = useState(false);\n const [activeValue, setActiveValue] = useState<string | null>(null);\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const listboxRef = useRef<HTMLDivElement | null>(null);\n\n const reactId = useId();\n const triggerId = `${reactId}trigger`;\n const listboxId = `${reactId}listbox`;\n const optionIdPrefix = `${reactId}option-`;\n\n const getOptionId = useCallback(\n (v: string) => optionIdPrefix + v.replace(/[^a-zA-Z0-9_-]/g, \"_\"),\n [optionIdPrefix]\n );\n\n const getOrderedOptions = useCallback((): OptionData[] => {\n const root = listboxRef.current;\n if (!root) return [];\n const nodes = root.querySelectorAll<HTMLElement>('[role=\"option\"]');\n return Array.from(nodes).map((node) => ({\n value: node.dataset.value ?? \"\",\n textValue: node.dataset.textValue ?? node.textContent ?? \"\",\n }));\n }, []);\n\n const setOpen = useCallback((next: boolean) => {\n setOpenState(next);\n if (!next) setActiveValue(null);\n }, []);\n\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (e: PointerEvent) => {\n const target = e.target as Node;\n if (!triggerRef.current?.contains(target) && !listboxRef.current?.contains(target)) {\n setOpen(false);\n }\n };\n document.addEventListener(\"pointerdown\", onPointerDown);\n return () => document.removeEventListener(\"pointerdown\", onPointerDown);\n }, [open, setOpen]);\n\n const ctxValue = useMemo<SelectContextValue>(\n () => ({\n open,\n setOpen,\n value,\n onValueChange,\n activeValue,\n setActiveValue,\n triggerId,\n listboxId,\n triggerRef,\n listboxRef,\n getOptionId,\n getOrderedOptions,\n }),\n [\n open,\n setOpen,\n value,\n onValueChange,\n activeValue,\n triggerId,\n listboxId,\n getOptionId,\n getOrderedOptions,\n ]\n );\n\n return <SelectContext.Provider value={ctxValue}>{children}</SelectContext.Provider>;\n};\n\ninterface TriggerProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n children?: Renderable<{ open: boolean; value: string }>;\n}\n\nconst Trigger = forwardRef<HTMLButtonElement, TriggerProps>(function Trigger(\n { children, onClick, onKeyDown, ...rest },\n forwardedRef\n) {\n const ctx = useSelectContext(\"Trigger\");\n\n const setRefs = (node: HTMLButtonElement | null) => {\n ctx.triggerRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n };\n\n const handleClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(!ctx.open);\n };\n\n const handleKeyDown = (e: ReactKeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === \" \" || e.key === \"Enter\" || e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n ctx.setOpen(true);\n }\n };\n\n return (\n <button\n ref={setRefs}\n type=\"button\"\n id={ctx.triggerId}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={ctx.open}\n aria-controls={ctx.listboxId}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {render(children, { open: ctx.open, value: ctx.value })}\n </button>\n );\n});\n\ninterface ContentProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nconst TYPEAHEAD_TIMEOUT_MS = 500;\n\nconst Content = ({ children, onKeyDown, ...rest }: ContentProps) => {\n const ctx = useSelectContext(\"Content\");\n const typeaheadRef = useRef({ buffer: \"\", lastTime: 0 });\n\n useEffect(() => {\n if (!ctx.open) return;\n const options = ctx.getOrderedOptions();\n if (options.length === 0) {\n ctx.listboxRef.current?.focus();\n return;\n }\n const initial = options.find((o) => o.value === ctx.value)?.value ?? options[0]!.value;\n ctx.setActiveValue(initial);\n ctx.listboxRef.current?.focus();\n // only re-run on open transition\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ctx.open]);\n\n if (!ctx.open) return null;\n\n const moveActive = (delta: 1 | -1 | \"first\" | \"last\") => {\n const options = ctx.getOrderedOptions();\n if (options.length === 0) return;\n const currentIdx = options.findIndex((o) => o.value === ctx.activeValue);\n let nextIdx: number;\n if (delta === \"first\") nextIdx = 0;\n else if (delta === \"last\") nextIdx = options.length - 1;\n else if (currentIdx === -1) nextIdx = delta === 1 ? 0 : options.length - 1;\n else nextIdx = Math.min(options.length - 1, Math.max(0, currentIdx + delta));\n ctx.setActiveValue(options[nextIdx]!.value);\n };\n\n const typeahead = (char: string) => {\n const now = Date.now();\n const reset = now - typeaheadRef.current.lastTime > TYPEAHEAD_TIMEOUT_MS;\n const buffer = (reset ? \"\" : typeaheadRef.current.buffer) + char.toLowerCase();\n typeaheadRef.current = { buffer, lastTime: now };\n const options = ctx.getOrderedOptions();\n const match = options.find((o) => o.textValue.toLowerCase().startsWith(buffer));\n if (match) ctx.setActiveValue(match.value);\n };\n\n const handleKeyDown = (e: ReactKeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n moveActive(1);\n return;\n case \"ArrowUp\":\n e.preventDefault();\n moveActive(-1);\n return;\n case \"Home\":\n e.preventDefault();\n moveActive(\"first\");\n return;\n case \"End\":\n e.preventDefault();\n moveActive(\"last\");\n return;\n case \"Enter\":\n case \" \":\n e.preventDefault();\n if (ctx.activeValue !== null) {\n ctx.onValueChange(ctx.activeValue);\n ctx.setOpen(false);\n ctx.triggerRef.current?.focus();\n }\n return;\n case \"Escape\":\n e.preventDefault();\n ctx.setOpen(false);\n ctx.triggerRef.current?.focus();\n return;\n case \"Tab\":\n ctx.setOpen(false);\n return;\n default:\n if (e.key.length === 1 && !e.metaKey && !e.ctrlKey && !e.altKey) {\n typeahead(e.key);\n }\n }\n };\n\n return (\n <div\n ref={(node) => {\n ctx.listboxRef.current = node;\n }}\n id={ctx.listboxId}\n role=\"listbox\"\n tabIndex={-1}\n aria-labelledby={ctx.triggerId}\n aria-activedescendant={\n ctx.activeValue !== null ? ctx.getOptionId(ctx.activeValue) : undefined\n }\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\ninterface OptionProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n value: string;\n textValue?: string;\n children?: Renderable<{ selected: boolean; active: boolean }>;\n}\n\nconst Option = ({ value, textValue, children, onMouseEnter, onClick, ...rest }: OptionProps) => {\n const ctx = useSelectContext(\"Option\");\n const selected = ctx.value === value;\n const active = ctx.activeValue === value;\n\n const handleClick = (e: ReactMouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.onValueChange(value);\n ctx.setOpen(false);\n ctx.triggerRef.current?.focus();\n };\n\n const handleMouseEnter = (e: ReactMouseEvent<HTMLDivElement>) => {\n onMouseEnter?.(e);\n if (e.defaultPrevented) return;\n ctx.setActiveValue(value);\n };\n\n return (\n <div\n id={ctx.getOptionId(value)}\n role=\"option\"\n aria-selected={selected}\n data-value={value}\n data-text-value={textValue}\n data-active={active || undefined}\n data-selected={selected || undefined}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n {...rest}\n >\n {render(children, { selected, active })}\n </div>\n );\n};\n\nexport const Select = Object.assign(Root, {\n Trigger,\n Content,\n Option,\n});\n\nexport type {\n SelectProps,\n TriggerProps as SelectTriggerProps,\n ContentProps as SelectContentProps,\n OptionProps as SelectOptionProps,\n};\n","import {\n cloneElement,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type FocusEvent as ReactFocusEvent,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from \"react\";\n\nconst DEFAULT_DELAY_MS = 700;\nconst DEFAULT_SKIP_DELAY_MS = 300;\n\ninterface ProviderContextValue {\n delayDuration: number;\n skipDelayDuration: number;\n isInSkipWindow: () => boolean;\n noteClose: () => void;\n}\n\nconst ProviderContext = createContext<ProviderContextValue | null>(null);\n\ninterface ProviderProps {\n children: ReactNode;\n delayDuration?: number;\n skipDelayDuration?: number;\n}\n\nconst Provider = ({\n children,\n delayDuration = DEFAULT_DELAY_MS,\n skipDelayDuration = DEFAULT_SKIP_DELAY_MS,\n}: ProviderProps) => {\n const lastCloseAt = useRef(0);\n\n const isInSkipWindow = useCallback(\n () => Date.now() - lastCloseAt.current < skipDelayDuration,\n [skipDelayDuration]\n );\n\n const noteClose = useCallback(() => {\n lastCloseAt.current = Date.now();\n }, []);\n\n const value = useMemo<ProviderContextValue>(\n () => ({ delayDuration, skipDelayDuration, isInSkipWindow, noteClose }),\n [delayDuration, skipDelayDuration, isInSkipWindow, noteClose]\n );\n\n return <ProviderContext.Provider value={value}>{children}</ProviderContext.Provider>;\n};\n\ninterface TooltipContextValue {\n open: boolean;\n contentId: string;\n triggerProps: {\n onMouseEnter: (e: ReactMouseEvent<HTMLElement>) => void;\n onMouseLeave: (e: ReactMouseEvent<HTMLElement>) => void;\n onFocus: (e: ReactFocusEvent<HTMLElement>) => void;\n onBlur: (e: ReactFocusEvent<HTMLElement>) => void;\n onKeyDown: (e: ReactKeyboardEvent<HTMLElement>) => void;\n \"aria-describedby\"?: string;\n };\n setTriggerRef: (node: HTMLElement | null) => void;\n}\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null);\n\nfunction useTooltipContext(component: string): TooltipContextValue {\n const ctx = useContext(TooltipContext);\n if (!ctx) {\n throw new Error(`<Tooltip.${component}> must be rendered inside <Tooltip>`);\n }\n return ctx;\n}\n\ninterface RootProps {\n children: ReactNode;\n delayDuration?: number;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nconst Root = ({\n children,\n delayDuration,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n}: RootProps) => {\n const provider = useContext(ProviderContext);\n const effectiveDelay = delayDuration ?? provider?.delayDuration ?? DEFAULT_DELAY_MS;\n\n const isControlled = controlledOpen !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n\n const openTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const reactId = useId();\n const contentId = `${reactId}content`;\n\n const clearOpenTimer = useCallback(() => {\n if (openTimerRef.current !== null) {\n clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n }, []);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n if (!next) provider?.noteClose();\n },\n [isControlled, onOpenChange, provider]\n );\n\n const scheduleOpen = useCallback(() => {\n clearOpenTimer();\n if (provider?.isInSkipWindow()) {\n setOpen(true);\n return;\n }\n openTimerRef.current = setTimeout(() => {\n setOpen(true);\n openTimerRef.current = null;\n }, effectiveDelay);\n }, [clearOpenTimer, effectiveDelay, provider, setOpen]);\n\n const closeImmediately = useCallback(() => {\n clearOpenTimer();\n setOpen(false);\n }, [clearOpenTimer, setOpen]);\n\n useEffect(() => clearOpenTimer, [clearOpenTimer]);\n\n const setTriggerRef = useCallback((node: HTMLElement | null) => {\n triggerRef.current = node;\n }, []);\n\n const triggerProps = useMemo<TooltipContextValue[\"triggerProps\"]>(\n () => ({\n onMouseEnter: () => scheduleOpen(),\n onMouseLeave: () => closeImmediately(),\n onFocus: () => {\n clearOpenTimer();\n setOpen(true);\n },\n onBlur: () => closeImmediately(),\n onKeyDown: (e) => {\n if (e.key === \"Escape\" && open) {\n closeImmediately();\n }\n },\n \"aria-describedby\": open ? contentId : undefined,\n }),\n [scheduleOpen, closeImmediately, clearOpenTimer, setOpen, open, contentId]\n );\n\n const value = useMemo<TooltipContextValue>(\n () => ({ open, contentId, triggerProps, setTriggerRef }),\n [open, contentId, triggerProps, setTriggerRef]\n );\n\n return <TooltipContext.Provider value={value}>{children}</TooltipContext.Provider>;\n};\n\ntype SlottableProps = HTMLAttributes<HTMLElement> & {\n ref?: Ref<HTMLElement>;\n \"aria-describedby\"?: string;\n};\n\ninterface TriggerProps {\n children: ReactElement<SlottableProps>;\n}\n\nfunction composeRef<T>(...refs: (Ref<T> | undefined)[]) {\n return (node: T | null) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") ref(node);\n else (ref as { current: T | null }).current = node;\n }\n };\n}\n\nfunction composeHandler<E>(...handlers: Array<((e: E) => void) | undefined>) {\n return (e: E) => {\n for (const handler of handlers) {\n handler?.(e);\n if (\n typeof (e as unknown as { defaultPrevented?: boolean }).defaultPrevented === \"boolean\" &&\n (e as unknown as { defaultPrevented: boolean }).defaultPrevented\n ) {\n return;\n }\n }\n };\n}\n\nconst Trigger = ({ children }: TriggerProps) => {\n const ctx = useTooltipContext(\"Trigger\");\n\n if (!isValidElement(children)) {\n throw new Error(\"<Tooltip.Trigger> expects a single React element child.\");\n }\n\n const child = children as ReactElement<SlottableProps>;\n const childProps = child.props;\n const childRef = (child as ReactElement<SlottableProps> & { ref?: Ref<HTMLElement> }).ref;\n\n const merged: SlottableProps = {\n ...childProps,\n onMouseEnter: composeHandler<ReactMouseEvent<HTMLElement>>(\n childProps.onMouseEnter,\n ctx.triggerProps.onMouseEnter\n ),\n onMouseLeave: composeHandler<ReactMouseEvent<HTMLElement>>(\n childProps.onMouseLeave,\n ctx.triggerProps.onMouseLeave\n ),\n onFocus: composeHandler<ReactFocusEvent<HTMLElement>>(\n childProps.onFocus,\n ctx.triggerProps.onFocus\n ),\n onBlur: composeHandler<ReactFocusEvent<HTMLElement>>(\n childProps.onBlur,\n ctx.triggerProps.onBlur\n ),\n onKeyDown: composeHandler<ReactKeyboardEvent<HTMLElement>>(\n childProps.onKeyDown,\n ctx.triggerProps.onKeyDown\n ),\n \"aria-describedby\":\n [childProps[\"aria-describedby\"], ctx.triggerProps[\"aria-describedby\"]]\n .filter(Boolean)\n .join(\" \") || undefined,\n ref: composeRef(childRef, ctx.setTriggerRef),\n };\n\n return cloneElement(child, merged);\n};\n\ninterface ContentProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n forceMount?: boolean;\n}\n\nconst Content = ({ children, forceMount, id, ...rest }: ContentProps) => {\n const ctx = useTooltipContext(\"Content\");\n\n if (!ctx.open && !forceMount) return null;\n\n return (\n <div\n id={id ?? ctx.contentId}\n role=\"tooltip\"\n data-state={ctx.open ? \"open\" : \"closed\"}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\nexport const Tooltip = Object.assign(Root, {\n Provider,\n Trigger,\n Content,\n});\n\nexport type {\n ProviderProps as TooltipProviderProps,\n RootProps as TooltipProps,\n TriggerProps as TooltipTriggerProps,\n ContentProps as TooltipContentProps,\n};\n","import {\n forwardRef,\n useCallback,\n useState,\n type ButtonHTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n} from \"react\";\n\ninterface SwitchProps extends Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"onChange\" | \"defaultChecked\"\n> {\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n disabled?: boolean;\n}\n\nconst Switch = forwardRef<HTMLButtonElement, SwitchProps>(function Switch(\n {\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled,\n onClick,\n onKeyDown,\n ...rest\n },\n ref\n) {\n const isControlled = controlledChecked !== undefined;\n const [uncontrolled, setUncontrolled] = useState(defaultChecked);\n const checked = isControlled ? controlledChecked : uncontrolled;\n\n const toggle = useCallback(() => {\n if (disabled) return;\n const next = !checked;\n if (!isControlled) setUncontrolled(next);\n onCheckedChange?.(next);\n }, [checked, disabled, isControlled, onCheckedChange]);\n\n const handleClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n toggle();\n };\n\n const handleKeyDown = (e: ReactKeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n toggle();\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n data-state={checked ? \"checked\" : \"unchecked\"}\n data-disabled={disabled || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n />\n );\n});\n\nexport { Switch };\nexport type { SwitchProps };\n","import {\n forwardRef,\n useCallback,\n useState,\n type ButtonHTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n} from \"react\";\n\ntype CheckedState = boolean | \"indeterminate\";\n\ninterface CheckboxProps extends Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"onChange\" | \"defaultChecked\"\n> {\n checked?: CheckedState;\n defaultChecked?: CheckedState;\n onCheckedChange?: (checked: CheckedState) => void;\n disabled?: boolean;\n required?: boolean;\n}\n\nconst isChecked = (s: CheckedState) => s === true;\nconst isIndeterminate = (s: CheckedState) => s === \"indeterminate\";\n\nconst Checkbox = forwardRef<HTMLButtonElement, CheckboxProps>(function Checkbox(\n {\n checked: controlled,\n defaultChecked = false,\n onCheckedChange,\n disabled,\n required,\n onClick,\n onKeyDown,\n ...rest\n },\n ref\n) {\n const isControlled = controlled !== undefined;\n const [uncontrolled, setUncontrolled] = useState<CheckedState>(defaultChecked);\n const value: CheckedState = isControlled ? controlled : uncontrolled;\n\n const toggle = useCallback(() => {\n if (disabled) return;\n // indeterminate becomes true; true becomes false; false becomes true\n const next: CheckedState = isChecked(value) ? false : true;\n if (!isControlled) setUncontrolled(next);\n onCheckedChange?.(next);\n }, [disabled, isControlled, onCheckedChange, value]);\n\n const handleClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n toggle();\n };\n\n const handleKeyDown = (e: ReactKeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n // Enter should NOT toggle a native checkbox; Space does.\n if (e.key === \" \") {\n e.preventDefault();\n toggle();\n }\n };\n\n const ariaChecked: \"true\" | \"false\" | \"mixed\" = isIndeterminate(value)\n ? \"mixed\"\n : isChecked(value)\n ? \"true\"\n : \"false\";\n\n const dataState = isIndeterminate(value)\n ? \"indeterminate\"\n : isChecked(value)\n ? \"checked\"\n : \"unchecked\";\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"checkbox\"\n aria-checked={ariaChecked}\n aria-required={required || undefined}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n data-state={dataState}\n data-disabled={disabled || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n />\n );\n});\n\nexport { Checkbox };\nexport type { CheckboxProps, CheckedState };\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type RefObject,\n} from \"react\";\n\ninterface RadioGroupContextValue {\n value: string | null;\n onValueChange: (next: string) => void;\n name: string;\n disabled: boolean;\n orientation: \"horizontal\" | \"vertical\";\n groupRef: RefObject<HTMLDivElement | null>;\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\nfunction useRadioGroupContext(component: string): RadioGroupContextValue {\n const ctx = useContext(RadioGroupContext);\n if (!ctx) {\n throw new Error(`<${component}> must be rendered inside <RadioGroup>`);\n }\n return ctx;\n}\n\ninterface RadioGroupRootProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n name?: string;\n disabled?: boolean;\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst Root = forwardRef<HTMLDivElement, RadioGroupRootProps>(function RadioGroup(\n {\n value: controlled,\n defaultValue,\n onValueChange,\n name,\n disabled = false,\n orientation = \"vertical\",\n children,\n ...rest\n },\n forwardedRef\n) {\n const isControlled = controlled !== undefined;\n const [uncontrolled, setUncontrolled] = useState<string | null>(defaultValue ?? null);\n const value = isControlled ? (controlled ?? null) : uncontrolled;\n const reactId = useId();\n const generatedName = name ?? `${reactId}name`;\n const groupRef = useRef<HTMLDivElement | null>(null);\n\n const setRefs = (node: HTMLDivElement | null) => {\n groupRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n };\n\n const setValue = useCallback(\n (next: string) => {\n if (disabled) return;\n if (!isControlled) setUncontrolled(next);\n onValueChange?.(next);\n },\n [disabled, isControlled, onValueChange]\n );\n\n // Roving tabindex: exactly one item is tabbable.\n // If a value is selected, that item. Otherwise, the first non-disabled item.\n useEffect(() => {\n const root = groupRef.current;\n if (!root) return;\n const items = Array.from(root.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]'));\n const tabbable =\n value !== null\n ? items.find((el) => el.getAttribute(\"data-value\") === value && !el.disabled)\n : items.find((el) => !el.disabled);\n items.forEach((el) => {\n el.tabIndex = el === tabbable ? 0 : -1;\n });\n });\n\n const ctx = useMemo<RadioGroupContextValue>(\n () => ({\n value,\n onValueChange: setValue,\n name: generatedName,\n disabled,\n orientation,\n groupRef,\n }),\n [value, setValue, generatedName, disabled, orientation]\n );\n\n return (\n <RadioGroupContext.Provider value={ctx}>\n <div\n ref={setRefs}\n role=\"radiogroup\"\n aria-orientation={orientation}\n aria-disabled={disabled || undefined}\n data-disabled={disabled || undefined}\n {...rest}\n >\n {children}\n </div>\n </RadioGroupContext.Provider>\n );\n});\n\ninterface ItemProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"value\"> {\n value: string;\n disabled?: boolean;\n}\n\nconst Item = forwardRef<HTMLButtonElement, ItemProps>(function RadioGroupItem(\n { value, disabled: itemDisabled, onClick, onKeyDown, ...rest },\n ref\n) {\n const ctx = useRadioGroupContext(\"RadioGroup.Item\");\n const disabled = ctx.disabled || !!itemDisabled;\n const checked = ctx.value === value;\n\n const handleClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n ctx.onValueChange(value);\n };\n\n const move = (direction: 1 | -1) => {\n const root = ctx.groupRef.current;\n if (!root) return;\n const items = Array.from(root.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]')).filter(\n (el) => !el.disabled\n );\n if (items.length === 0) return;\n const idx = items.findIndex((el) => el === document.activeElement);\n const nextIdx = (idx + direction + items.length) % items.length;\n const next = items[nextIdx];\n if (!next) return;\n next.focus();\n const nextValue = next.getAttribute(\"data-value\");\n if (nextValue) ctx.onValueChange(nextValue);\n };\n\n const handleKeyDown = (e: ReactKeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled) return;\n const nextKey = ctx.orientation === \"horizontal\" ? \"ArrowRight\" : \"ArrowDown\";\n const prevKey = ctx.orientation === \"horizontal\" ? \"ArrowLeft\" : \"ArrowUp\";\n if (e.key === nextKey) {\n e.preventDefault();\n move(1);\n } else if (e.key === prevKey) {\n e.preventDefault();\n move(-1);\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"radio\"\n name={ctx.name}\n value={value}\n aria-checked={checked}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n tabIndex={-1}\n data-value={value}\n data-state={checked ? \"checked\" : \"unchecked\"}\n data-disabled={disabled || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n />\n );\n});\n\nexport const RadioGroup = Object.assign(Root, { Item });\n\nexport type { RadioGroupRootProps as RadioGroupProps, ItemProps as RadioGroupItemProps };\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type RefObject,\n} from \"react\";\n\ntype Orientation = \"horizontal\" | \"vertical\";\ntype ActivationMode = \"automatic\" | \"manual\";\n\ninterface TabsContextValue {\n value: string | null;\n onValueChange: (next: string) => void;\n activationMode: ActivationMode;\n orientation: Orientation;\n idPrefix: string;\n listRef: RefObject<HTMLDivElement | null>;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nfunction useTabsContext(component: string): TabsContextValue {\n const ctx = useContext(TabsContext);\n if (!ctx) {\n throw new Error(`<Tabs.${component}> must be rendered inside <Tabs>`);\n }\n return ctx;\n}\n\nconst triggerId = (prefix: string, value: string) =>\n `${prefix}trigger-${value.replace(/[^a-zA-Z0-9_-]/g, \"_\")}`;\nconst contentId = (prefix: string, value: string) =>\n `${prefix}content-${value.replace(/[^a-zA-Z0-9_-]/g, \"_\")}`;\n\ninterface RootProps extends HTMLAttributes<HTMLDivElement> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n orientation?: Orientation;\n activationMode?: ActivationMode;\n}\n\nconst Root = forwardRef<HTMLDivElement, RootProps>(function Tabs(\n {\n value: controlled,\n defaultValue,\n onValueChange,\n orientation = \"horizontal\",\n activationMode = \"automatic\",\n children,\n ...rest\n },\n ref\n) {\n const isControlled = controlled !== undefined;\n const [uncontrolled, setUncontrolled] = useState<string | null>(defaultValue ?? null);\n const value = isControlled ? (controlled ?? null) : uncontrolled;\n\n const reactId = useId();\n const listRef = useRef<HTMLDivElement | null>(null);\n\n const setValue = useCallback(\n (next: string) => {\n if (!isControlled) setUncontrolled(next);\n onValueChange?.(next);\n },\n [isControlled, onValueChange]\n );\n\n const ctx = useMemo<TabsContextValue>(\n () => ({\n value,\n onValueChange: setValue,\n activationMode,\n orientation,\n idPrefix: reactId,\n listRef,\n }),\n [value, setValue, activationMode, orientation, reactId]\n );\n\n return (\n <TabsContext.Provider value={ctx}>\n <div ref={ref} data-orientation={orientation} {...rest}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n});\n\ninterface ListProps extends HTMLAttributes<HTMLDivElement> {\n loop?: boolean;\n}\n\nconst List = forwardRef<HTMLDivElement, ListProps>(function TabsList(\n { loop = true, children, ...rest },\n forwardedRef\n) {\n const ctx = useTabsContext(\"List\");\n\n const setRefs = (node: HTMLDivElement | null) => {\n ctx.listRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n };\n\n return (\n <div\n ref={setRefs}\n role=\"tablist\"\n aria-orientation={ctx.orientation}\n data-orientation={ctx.orientation}\n data-loop={loop || undefined}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\ninterface TriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n disabled?: boolean;\n}\n\nconst Trigger = forwardRef<HTMLButtonElement, TriggerProps>(function TabsTrigger(\n { value, disabled, onClick, onKeyDown, onFocus, ...rest },\n ref\n) {\n const ctx = useTabsContext(\"Trigger\");\n const selected = ctx.value === value;\n\n const handleClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n ctx.onValueChange(value);\n };\n\n const move = (direction: 1 | -1 | \"first\" | \"last\") => {\n const root = ctx.listRef.current;\n if (!root) return;\n const triggers = Array.from(root.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]')).filter(\n (el) => !el.disabled\n );\n if (triggers.length === 0) return;\n\n let nextIdx: number;\n if (direction === \"first\") nextIdx = 0;\n else if (direction === \"last\") nextIdx = triggers.length - 1;\n else {\n const idx = triggers.findIndex((el) => el === document.activeElement);\n const loopList = (root.getAttribute(\"data-loop\") ?? \"true\") !== \"false\";\n const candidate = idx + direction;\n if (candidate < 0) nextIdx = loopList ? triggers.length - 1 : 0;\n else if (candidate >= triggers.length) nextIdx = loopList ? 0 : triggers.length - 1;\n else nextIdx = candidate;\n }\n\n const target = triggers[nextIdx];\n if (!target) return;\n target.focus();\n if (ctx.activationMode === \"automatic\") {\n const v = target.getAttribute(\"data-value\");\n if (v) ctx.onValueChange(v);\n }\n };\n\n const handleKeyDown = (e: ReactKeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled) return;\n const nextKey = ctx.orientation === \"horizontal\" ? \"ArrowRight\" : \"ArrowDown\";\n const prevKey = ctx.orientation === \"horizontal\" ? \"ArrowLeft\" : \"ArrowUp\";\n\n if (e.key === nextKey) {\n e.preventDefault();\n move(1);\n } else if (e.key === prevKey) {\n e.preventDefault();\n move(-1);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n move(\"first\");\n } else if (e.key === \"End\") {\n e.preventDefault();\n move(\"last\");\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n id={triggerId(ctx.idPrefix, value)}\n aria-selected={selected}\n aria-controls={contentId(ctx.idPrefix, value)}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n tabIndex={selected ? 0 : -1}\n data-value={value}\n data-state={selected ? \"active\" : \"inactive\"}\n data-disabled={disabled || undefined}\n data-orientation={ctx.orientation}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onFocus={onFocus}\n {...rest}\n />\n );\n});\n\ninterface ContentProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n forceMount?: boolean;\n}\n\nconst Content = forwardRef<HTMLDivElement, ContentProps>(function TabsContent(\n { value, forceMount, hidden, ...rest },\n ref\n) {\n const ctx = useTabsContext(\"Content\");\n const selected = ctx.value === value;\n\n if (!selected && !forceMount) return null;\n\n return (\n <div\n ref={ref}\n role=\"tabpanel\"\n id={contentId(ctx.idPrefix, value)}\n aria-labelledby={triggerId(ctx.idPrefix, value)}\n data-state={selected ? \"active\" : \"inactive\"}\n data-orientation={ctx.orientation}\n hidden={hidden ?? !selected}\n tabIndex={0}\n {...rest}\n />\n );\n});\n\nexport const Tabs = Object.assign(Root, { List, Trigger, Content });\n\nexport type {\n RootProps as TabsProps,\n ListProps as TabsListProps,\n TriggerProps as TabsTriggerProps,\n ContentProps as TabsContentProps,\n};\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n type RefObject,\n} from \"react\";\n\ntype AccordionType = \"single\" | \"multiple\";\n\ninterface AccordionContextValue {\n type: AccordionType;\n values: string[];\n toggle: (value: string) => void;\n collapsible: boolean;\n disabled: boolean;\n idPrefix: string;\n rootRef: RefObject<HTMLDivElement | null>;\n}\n\nconst AccordionContext = createContext<AccordionContextValue | null>(null);\n\nfunction useAccordionContext(component: string): AccordionContextValue {\n const ctx = useContext(AccordionContext);\n if (!ctx) {\n throw new Error(`<Accordion.${component}> must be rendered inside <Accordion>`);\n }\n return ctx;\n}\n\ninterface ItemContextValue {\n value: string;\n open: boolean;\n disabled: boolean;\n triggerId: string;\n contentId: string;\n}\n\nconst ItemContext = createContext<ItemContextValue | null>(null);\n\nfunction useItemContext(component: string): ItemContextValue {\n const ctx = useContext(ItemContext);\n if (!ctx) {\n throw new Error(`<Accordion.${component}> must be rendered inside <Accordion.Item>`);\n }\n return ctx;\n}\n\ntype RootProps =\n | (HTMLAttributes<HTMLDivElement> & {\n type: \"single\";\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n collapsible?: boolean;\n disabled?: boolean;\n })\n | (HTMLAttributes<HTMLDivElement> & {\n type: \"multiple\";\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n disabled?: boolean;\n });\n\nconst Root = forwardRef<HTMLDivElement, RootProps>(function Accordion(props, forwardedRef) {\n const {\n type,\n disabled = false,\n children,\n // strip controlled-state props so they don't leak onto the DOM\n value: _v,\n defaultValue: _dv,\n onValueChange: _ovc,\n collapsible: _col,\n ...rest\n } = props as RootProps & {\n children?: ReactNode;\n value?: unknown;\n defaultValue?: unknown;\n onValueChange?: unknown;\n collapsible?: unknown;\n };\n void _v;\n void _dv;\n void _ovc;\n void _col;\n\n // Normalize controlled / uncontrolled value handling\n const isMultiple = type === \"multiple\";\n const controlled =\n \"value\" in props\n ? isMultiple\n ? (props.value as string[] | undefined)\n : (props.value as string | undefined)\n : undefined;\n const isControlled = controlled !== undefined;\n const defaultValue =\n \"defaultValue\" in props\n ? isMultiple\n ? ((props.defaultValue as string[] | undefined) ?? [])\n : ((props.defaultValue as string | undefined) ?? null)\n : isMultiple\n ? []\n : null;\n\n const [uncontrolledArr, setUncontrolledArr] = useState<string[]>(\n isMultiple ? ((defaultValue as string[]) ?? []) : []\n );\n const [uncontrolledStr, setUncontrolledStr] = useState<string | null>(\n isMultiple ? null : ((defaultValue as string | null) ?? null)\n );\n\n const values = useMemo<string[]>(() => {\n if (isMultiple) {\n return isControlled ? ((controlled as string[]) ?? []) : uncontrolledArr;\n }\n return isControlled\n ? controlled\n ? [controlled as string]\n : []\n : uncontrolledStr\n ? [uncontrolledStr]\n : [];\n }, [isMultiple, isControlled, controlled, uncontrolledArr, uncontrolledStr]);\n\n const collapsible = !isMultiple && \"collapsible\" in props ? !!props.collapsible : isMultiple;\n\n const reactId = useId();\n const rootRef = useRef<HTMLDivElement | null>(null);\n\n const setRefs = (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n };\n\n const toggle = useCallback(\n (value: string) => {\n if (disabled) return;\n if (isMultiple) {\n const arr = isControlled ? ((controlled as string[]) ?? []) : uncontrolledArr;\n const next = arr.includes(value) ? arr.filter((v) => v !== value) : [...arr, value];\n if (!isControlled) setUncontrolledArr(next);\n (props as { onValueChange?: (v: string[]) => void }).onValueChange?.(next);\n } else {\n const current = isControlled ? (controlled as string | undefined) : uncontrolledStr;\n const allowEmpty = \"collapsible\" in props ? !!props.collapsible : false;\n let next: string;\n if (current === value) {\n if (!allowEmpty) return;\n next = \"\";\n } else {\n next = value;\n }\n if (!isControlled) setUncontrolledStr(next || null);\n (props as { onValueChange?: (v: string) => void }).onValueChange?.(next);\n }\n },\n [disabled, isMultiple, isControlled, controlled, uncontrolledArr, uncontrolledStr, props]\n );\n\n const ctx = useMemo<AccordionContextValue>(\n () => ({\n type,\n values,\n toggle,\n collapsible,\n disabled,\n idPrefix: reactId,\n rootRef,\n }),\n [type, values, toggle, collapsible, disabled, reactId]\n );\n\n return (\n <AccordionContext.Provider value={ctx}>\n <div ref={setRefs} data-disabled={disabled || undefined} {...rest}>\n {children}\n </div>\n </AccordionContext.Provider>\n );\n});\n\ninterface ItemProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n disabled?: boolean;\n}\n\nconst Item = forwardRef<HTMLDivElement, ItemProps>(function AccordionItem(\n { value, disabled: itemDisabled, children, ...rest },\n ref\n) {\n const ctx = useAccordionContext(\"Item\");\n const open = ctx.values.includes(value);\n const disabled = ctx.disabled || !!itemDisabled;\n\n const safeValue = value.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n const triggerId = `${ctx.idPrefix}trigger-${safeValue}`;\n const contentId = `${ctx.idPrefix}content-${safeValue}`;\n\n const itemCtx = useMemo<ItemContextValue>(\n () => ({ value, open, disabled, triggerId, contentId }),\n [value, open, disabled, triggerId, contentId]\n );\n\n return (\n <ItemContext.Provider value={itemCtx}>\n <div\n ref={ref}\n data-state={open ? \"open\" : \"closed\"}\n data-disabled={disabled || undefined}\n {...rest}\n >\n {children}\n </div>\n </ItemContext.Provider>\n );\n});\n\ntype TriggerProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst Trigger = forwardRef<HTMLButtonElement, TriggerProps>(function AccordionTrigger(\n { onClick, onKeyDown, ...rest },\n ref\n) {\n const ctx = useAccordionContext(\"Trigger\");\n const item = useItemContext(\"Trigger\");\n\n const handleClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented || item.disabled) return;\n ctx.toggle(item.value);\n };\n\n const move = (direction: 1 | -1 | \"first\" | \"last\") => {\n const root = ctx.rootRef.current;\n if (!root) return;\n const triggers = Array.from(\n root.querySelectorAll<HTMLButtonElement>('[data-accordion-trigger=\"true\"]')\n ).filter((el) => !el.disabled);\n if (triggers.length === 0) return;\n\n let nextIdx: number;\n if (direction === \"first\") nextIdx = 0;\n else if (direction === \"last\") nextIdx = triggers.length - 1;\n else {\n const idx = triggers.findIndex((el) => el === document.activeElement);\n const candidate = idx + direction;\n nextIdx = (candidate + triggers.length) % triggers.length;\n }\n triggers[nextIdx]?.focus();\n };\n\n const handleKeyDown = (e: ReactKeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n move(1);\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n move(-1);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n move(\"first\");\n } else if (e.key === \"End\") {\n e.preventDefault();\n move(\"last\");\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n id={item.triggerId}\n aria-expanded={item.open}\n aria-controls={item.contentId}\n aria-disabled={item.disabled || undefined}\n disabled={item.disabled}\n data-state={item.open ? \"open\" : \"closed\"}\n data-disabled={item.disabled || undefined}\n data-accordion-trigger=\"true\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n />\n );\n});\n\ninterface ContentProps extends HTMLAttributes<HTMLDivElement> {\n forceMount?: boolean;\n}\n\nconst Content = forwardRef<HTMLDivElement, ContentProps>(function AccordionContent(\n { forceMount, hidden, children, ...rest },\n ref\n) {\n const item = useItemContext(\"Content\");\n\n if (!item.open && !forceMount) return null;\n\n return (\n <div\n ref={ref}\n role=\"region\"\n id={item.contentId}\n aria-labelledby={item.triggerId}\n data-state={item.open ? \"open\" : \"closed\"}\n hidden={hidden ?? !item.open}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nexport const Accordion = Object.assign(Root, { Item, Trigger, Content });\n\nexport type {\n RootProps as AccordionProps,\n ItemProps as AccordionItemProps,\n TriggerProps as AccordionTriggerProps,\n ContentProps as AccordionContentProps,\n};\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n type RefObject,\n} from \"react\";\n\nconst FOCUSABLE_SELECTOR = [\n \"a[href]\",\n \"button:not([disabled])\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(\",\");\n\nfunction getFocusables(root: HTMLElement | null): HTMLElement[] {\n if (!root) return [];\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (el) => !el.hasAttribute(\"disabled\") && el.getAttribute(\"aria-hidden\") !== \"true\"\n );\n}\n\ninterface DialogContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: RefObject<HTMLButtonElement | null>;\n contentRef: RefObject<HTMLDivElement | null>;\n contentId: string;\n titleId: string;\n descriptionId: string;\n hasTitle: boolean;\n setHasTitle: (v: boolean) => void;\n hasDescription: boolean;\n setHasDescription: (v: boolean) => void;\n modal: boolean;\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null);\n\nfunction useDialogContext(component: string): DialogContextValue {\n const ctx = useContext(DialogContext);\n if (!ctx) {\n throw new Error(`<Dialog.${component}> must be rendered inside <Dialog>`);\n }\n return ctx;\n}\n\ninterface RootProps {\n children: ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n}\n\nconst Root = ({\n children,\n open: controlled,\n defaultOpen = false,\n onOpenChange,\n modal = true,\n}: RootProps) => {\n const isControlled = controlled !== undefined;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen);\n const open = isControlled ? controlled : uncontrolled;\n\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const [hasTitle, setHasTitle] = useState(false);\n const [hasDescription, setHasDescription] = useState(false);\n\n const reactId = useId();\n const contentId = `${reactId}content`;\n const titleId = `${reactId}title`;\n const descriptionId = `${reactId}description`;\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolled(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange]\n );\n\n const ctx = useMemo<DialogContextValue>(\n () => ({\n open,\n setOpen,\n triggerRef,\n contentRef,\n contentId,\n titleId,\n descriptionId,\n hasTitle,\n setHasTitle,\n hasDescription,\n setHasDescription,\n modal,\n }),\n [open, setOpen, contentId, titleId, descriptionId, hasTitle, hasDescription, modal]\n );\n\n return <DialogContext.Provider value={ctx}>{children}</DialogContext.Provider>;\n};\n\ntype TriggerProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst Trigger = forwardRef<HTMLButtonElement, TriggerProps>(function DialogTrigger(\n { onClick, ...rest },\n forwardedRef\n) {\n const ctx = useDialogContext(\"Trigger\");\n\n const setRefs = (node: HTMLButtonElement | null) => {\n ctx.triggerRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n };\n\n const handleClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(true);\n };\n\n return (\n <button\n ref={setRefs}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n aria-controls={ctx.open ? ctx.contentId : undefined}\n data-state={ctx.open ? \"open\" : \"closed\"}\n onClick={handleClick}\n {...rest}\n />\n );\n});\n\ninterface OverlayProps extends HTMLAttributes<HTMLDivElement> {\n forceMount?: boolean;\n}\n\nconst Overlay = forwardRef<HTMLDivElement, OverlayProps>(function DialogOverlay(\n { forceMount, onClick, ...rest },\n ref\n) {\n const ctx = useDialogContext(\"Overlay\");\n\n if (!ctx.open && !forceMount) return null;\n\n const handleClick = (e: ReactMouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (e.defaultPrevented || !ctx.modal) return;\n // Click on the overlay itself (not on bubbled content) closes\n if (e.target === e.currentTarget) {\n ctx.setOpen(false);\n }\n };\n\n return (\n <div ref={ref} data-state={ctx.open ? \"open\" : \"closed\"} onClick={handleClick} {...rest} />\n );\n});\n\ninterface ContentProps extends HTMLAttributes<HTMLDivElement> {\n forceMount?: boolean;\n onEscapeKeyDown?: (e: KeyboardEvent) => void;\n}\n\nconst Content = forwardRef<HTMLDivElement, ContentProps>(function DialogContent(\n { forceMount, onEscapeKeyDown, onKeyDown, children, ...rest },\n forwardedRef\n) {\n const ctx = useDialogContext(\"Content\");\n\n const setRefs = (node: HTMLDivElement | null) => {\n ctx.contentRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n };\n\n // Focus management: on open, save previous focus, move focus into the dialog.\n // On close, restore focus to the trigger (or previously-focused element).\n useEffect(() => {\n if (!ctx.open) return;\n const previouslyFocused = document.activeElement as HTMLElement | null;\n const id = requestAnimationFrame(() => {\n const root = ctx.contentRef.current;\n if (!root) return;\n const focusables = getFocusables(root);\n const target = focusables[0] ?? root;\n target.focus();\n });\n return () => {\n cancelAnimationFrame(id);\n const trigger = ctx.triggerRef.current;\n (trigger ?? previouslyFocused)?.focus?.();\n };\n }, [ctx.open, ctx.contentRef, ctx.triggerRef]);\n\n // Body scroll lock when modal\n useEffect(() => {\n if (!ctx.open || !ctx.modal) return;\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = prev;\n };\n }, [ctx.open, ctx.modal]);\n\n // Escape closes (use document listener since focus may be on inner elements)\n const { open: ctxOpen, setOpen: ctxSetOpen } = ctx;\n useEffect(() => {\n if (!ctxOpen) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\") return;\n onEscapeKeyDown?.(e);\n if (e.defaultPrevented) return;\n ctxSetOpen(false);\n };\n document.addEventListener(\"keydown\", onKey);\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [ctxOpen, ctxSetOpen, onEscapeKeyDown]);\n\n if (!ctx.open && !forceMount) return null;\n\n // Focus trap: if Tab would leave the dialog, wrap.\n const handleKeyDown = (e: ReactKeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key !== \"Tab\" || !ctx.modal) return;\n const focusables = getFocusables(ctx.contentRef.current);\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n const first = focusables[0]!;\n const last = focusables[focusables.length - 1]!;\n const active = document.activeElement as HTMLElement | null;\n if (e.shiftKey && (active === first || !ctx.contentRef.current?.contains(active))) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && active === last) {\n e.preventDefault();\n first.focus();\n }\n };\n\n return (\n <div\n ref={setRefs}\n role=\"dialog\"\n aria-modal={ctx.modal || undefined}\n id={ctx.contentId}\n aria-labelledby={ctx.hasTitle ? ctx.titleId : undefined}\n aria-describedby={ctx.hasDescription ? ctx.descriptionId : undefined}\n tabIndex={-1}\n data-state={ctx.open ? \"open\" : \"closed\"}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\ntype TitleProps = HTMLAttributes<HTMLHeadingElement>;\n\nconst Title = forwardRef<HTMLHeadingElement, TitleProps>(function DialogTitle(props, ref) {\n const ctx = useDialogContext(\"Title\");\n useEffect(() => {\n ctx.setHasTitle(true);\n return () => ctx.setHasTitle(false);\n }, [ctx]);\n return <h2 ref={ref} id={ctx.titleId} {...props} />;\n});\n\ntype DescriptionProps = HTMLAttributes<HTMLParagraphElement>;\n\nconst Description = forwardRef<HTMLParagraphElement, DescriptionProps>(\n function DialogDescription(props, ref) {\n const ctx = useDialogContext(\"Description\");\n useEffect(() => {\n ctx.setHasDescription(true);\n return () => ctx.setHasDescription(false);\n }, [ctx]);\n return <p ref={ref} id={ctx.descriptionId} {...props} />;\n }\n);\n\ntype CloseProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst Close = forwardRef<HTMLButtonElement, CloseProps>(function DialogClose(\n { onClick, ...rest },\n ref\n) {\n const ctx = useDialogContext(\"Close\");\n const handleClick = (e: ReactMouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(false);\n };\n return <button ref={ref} type=\"button\" onClick={handleClick} {...rest} />;\n});\n\nexport const Dialog = Object.assign(Root, {\n Trigger,\n Overlay,\n Content,\n Title,\n Description,\n Close,\n});\n\nexport type {\n RootProps as DialogProps,\n TriggerProps as DialogTriggerProps,\n OverlayProps as DialogOverlayProps,\n ContentProps as DialogContentProps,\n TitleProps as DialogTitleProps,\n DescriptionProps as DialogDescriptionProps,\n CloseProps as DialogCloseProps,\n};\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { HTMLAttributes,
|
|
2
|
+
import { ReactNode, ButtonHTMLAttributes, HTMLAttributes, ReactElement, Ref } from 'react';
|
|
3
3
|
|
|
4
4
|
type Renderable<S> = ReactNode | ((state: S) => ReactNode);
|
|
5
5
|
interface SelectProps {
|
|
@@ -7,13 +7,13 @@ interface SelectProps {
|
|
|
7
7
|
onValueChange: (value: string) => void;
|
|
8
8
|
children: ReactNode;
|
|
9
9
|
}
|
|
10
|
-
interface TriggerProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
|
|
10
|
+
interface TriggerProps$4 extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
|
|
11
11
|
children?: Renderable<{
|
|
12
12
|
open: boolean;
|
|
13
13
|
value: string;
|
|
14
14
|
}>;
|
|
15
15
|
}
|
|
16
|
-
interface ContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
16
|
+
interface ContentProps$4 extends HTMLAttributes<HTMLDivElement> {
|
|
17
17
|
children: ReactNode;
|
|
18
18
|
}
|
|
19
19
|
interface OptionProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
@@ -25,9 +25,153 @@ interface OptionProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
|
25
25
|
}>;
|
|
26
26
|
}
|
|
27
27
|
declare const Select: (({ value, onValueChange, children }: SelectProps) => react.JSX.Element) & {
|
|
28
|
-
Trigger: react.ForwardRefExoticComponent<TriggerProps & react.RefAttributes<HTMLButtonElement>>;
|
|
29
|
-
Content: ({ children, onKeyDown, ...rest }: ContentProps) => react.JSX.Element | null;
|
|
28
|
+
Trigger: react.ForwardRefExoticComponent<TriggerProps$4 & react.RefAttributes<HTMLButtonElement>>;
|
|
29
|
+
Content: ({ children, onKeyDown, ...rest }: ContentProps$4) => react.JSX.Element | null;
|
|
30
30
|
Option: ({ value, textValue, children, onMouseEnter, onClick, ...rest }: OptionProps) => react.JSX.Element;
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
interface ProviderProps {
|
|
34
|
+
children: ReactNode;
|
|
35
|
+
delayDuration?: number;
|
|
36
|
+
skipDelayDuration?: number;
|
|
37
|
+
}
|
|
38
|
+
interface RootProps$3 {
|
|
39
|
+
children: ReactNode;
|
|
40
|
+
delayDuration?: number;
|
|
41
|
+
open?: boolean;
|
|
42
|
+
defaultOpen?: boolean;
|
|
43
|
+
onOpenChange?: (open: boolean) => void;
|
|
44
|
+
}
|
|
45
|
+
type SlottableProps = HTMLAttributes<HTMLElement> & {
|
|
46
|
+
ref?: Ref<HTMLElement>;
|
|
47
|
+
"aria-describedby"?: string;
|
|
48
|
+
};
|
|
49
|
+
interface TriggerProps$3 {
|
|
50
|
+
children: ReactElement<SlottableProps>;
|
|
51
|
+
}
|
|
52
|
+
interface ContentProps$3 extends HTMLAttributes<HTMLDivElement> {
|
|
53
|
+
children: ReactNode;
|
|
54
|
+
forceMount?: boolean;
|
|
55
|
+
}
|
|
56
|
+
declare const Tooltip: (({ children, delayDuration, open: controlledOpen, defaultOpen, onOpenChange, }: RootProps$3) => react.JSX.Element) & {
|
|
57
|
+
Provider: ({ children, delayDuration, skipDelayDuration, }: ProviderProps) => react.JSX.Element;
|
|
58
|
+
Trigger: ({ children }: TriggerProps$3) => ReactElement<SlottableProps, string | react.JSXElementConstructor<any>>;
|
|
59
|
+
Content: ({ children, forceMount, id, ...rest }: ContentProps$3) => react.JSX.Element | null;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
interface SwitchProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "onChange" | "defaultChecked"> {
|
|
63
|
+
checked?: boolean;
|
|
64
|
+
defaultChecked?: boolean;
|
|
65
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
66
|
+
disabled?: boolean;
|
|
67
|
+
}
|
|
68
|
+
declare const Switch: react.ForwardRefExoticComponent<SwitchProps & react.RefAttributes<HTMLButtonElement>>;
|
|
69
|
+
|
|
70
|
+
type CheckedState = boolean | "indeterminate";
|
|
71
|
+
interface CheckboxProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "onChange" | "defaultChecked"> {
|
|
72
|
+
checked?: CheckedState;
|
|
73
|
+
defaultChecked?: CheckedState;
|
|
74
|
+
onCheckedChange?: (checked: CheckedState) => void;
|
|
75
|
+
disabled?: boolean;
|
|
76
|
+
required?: boolean;
|
|
77
|
+
}
|
|
78
|
+
declare const Checkbox: react.ForwardRefExoticComponent<CheckboxProps & react.RefAttributes<HTMLButtonElement>>;
|
|
79
|
+
|
|
80
|
+
interface RadioGroupRootProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
81
|
+
value?: string;
|
|
82
|
+
defaultValue?: string;
|
|
83
|
+
onValueChange?: (value: string) => void;
|
|
84
|
+
name?: string;
|
|
85
|
+
disabled?: boolean;
|
|
86
|
+
orientation?: "horizontal" | "vertical";
|
|
87
|
+
}
|
|
88
|
+
interface ItemProps$1 extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "value"> {
|
|
89
|
+
value: string;
|
|
90
|
+
disabled?: boolean;
|
|
91
|
+
}
|
|
92
|
+
declare const RadioGroup: react.ForwardRefExoticComponent<RadioGroupRootProps & react.RefAttributes<HTMLDivElement>> & {
|
|
93
|
+
Item: react.ForwardRefExoticComponent<ItemProps$1 & react.RefAttributes<HTMLButtonElement>>;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
type Orientation = "horizontal" | "vertical";
|
|
97
|
+
type ActivationMode = "automatic" | "manual";
|
|
98
|
+
interface RootProps$2 extends HTMLAttributes<HTMLDivElement> {
|
|
99
|
+
value?: string;
|
|
100
|
+
defaultValue?: string;
|
|
101
|
+
onValueChange?: (value: string) => void;
|
|
102
|
+
orientation?: Orientation;
|
|
103
|
+
activationMode?: ActivationMode;
|
|
104
|
+
}
|
|
105
|
+
interface ListProps extends HTMLAttributes<HTMLDivElement> {
|
|
106
|
+
loop?: boolean;
|
|
107
|
+
}
|
|
108
|
+
interface TriggerProps$2 extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
109
|
+
value: string;
|
|
110
|
+
disabled?: boolean;
|
|
111
|
+
}
|
|
112
|
+
interface ContentProps$2 extends HTMLAttributes<HTMLDivElement> {
|
|
113
|
+
value: string;
|
|
114
|
+
forceMount?: boolean;
|
|
115
|
+
}
|
|
116
|
+
declare const Tabs: react.ForwardRefExoticComponent<RootProps$2 & react.RefAttributes<HTMLDivElement>> & {
|
|
117
|
+
List: react.ForwardRefExoticComponent<ListProps & react.RefAttributes<HTMLDivElement>>;
|
|
118
|
+
Trigger: react.ForwardRefExoticComponent<TriggerProps$2 & react.RefAttributes<HTMLButtonElement>>;
|
|
119
|
+
Content: react.ForwardRefExoticComponent<ContentProps$2 & react.RefAttributes<HTMLDivElement>>;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
type RootProps$1 = (HTMLAttributes<HTMLDivElement> & {
|
|
123
|
+
type: "single";
|
|
124
|
+
value?: string;
|
|
125
|
+
defaultValue?: string;
|
|
126
|
+
onValueChange?: (value: string) => void;
|
|
127
|
+
collapsible?: boolean;
|
|
128
|
+
disabled?: boolean;
|
|
129
|
+
}) | (HTMLAttributes<HTMLDivElement> & {
|
|
130
|
+
type: "multiple";
|
|
131
|
+
value?: string[];
|
|
132
|
+
defaultValue?: string[];
|
|
133
|
+
onValueChange?: (value: string[]) => void;
|
|
134
|
+
disabled?: boolean;
|
|
135
|
+
});
|
|
136
|
+
interface ItemProps extends HTMLAttributes<HTMLDivElement> {
|
|
137
|
+
value: string;
|
|
138
|
+
disabled?: boolean;
|
|
139
|
+
}
|
|
140
|
+
type TriggerProps$1 = ButtonHTMLAttributes<HTMLButtonElement>;
|
|
141
|
+
interface ContentProps$1 extends HTMLAttributes<HTMLDivElement> {
|
|
142
|
+
forceMount?: boolean;
|
|
143
|
+
}
|
|
144
|
+
declare const Accordion: react.ForwardRefExoticComponent<RootProps$1 & react.RefAttributes<HTMLDivElement>> & {
|
|
145
|
+
Item: react.ForwardRefExoticComponent<ItemProps & react.RefAttributes<HTMLDivElement>>;
|
|
146
|
+
Trigger: react.ForwardRefExoticComponent<TriggerProps$1 & react.RefAttributes<HTMLButtonElement>>;
|
|
147
|
+
Content: react.ForwardRefExoticComponent<ContentProps$1 & react.RefAttributes<HTMLDivElement>>;
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
interface RootProps {
|
|
151
|
+
children: ReactNode;
|
|
152
|
+
open?: boolean;
|
|
153
|
+
defaultOpen?: boolean;
|
|
154
|
+
onOpenChange?: (open: boolean) => void;
|
|
155
|
+
modal?: boolean;
|
|
156
|
+
}
|
|
157
|
+
type TriggerProps = ButtonHTMLAttributes<HTMLButtonElement>;
|
|
158
|
+
interface OverlayProps extends HTMLAttributes<HTMLDivElement> {
|
|
159
|
+
forceMount?: boolean;
|
|
160
|
+
}
|
|
161
|
+
interface ContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
162
|
+
forceMount?: boolean;
|
|
163
|
+
onEscapeKeyDown?: (e: KeyboardEvent) => void;
|
|
164
|
+
}
|
|
165
|
+
type TitleProps = HTMLAttributes<HTMLHeadingElement>;
|
|
166
|
+
type DescriptionProps = HTMLAttributes<HTMLParagraphElement>;
|
|
167
|
+
type CloseProps = ButtonHTMLAttributes<HTMLButtonElement>;
|
|
168
|
+
declare const Dialog: (({ children, open: controlled, defaultOpen, onOpenChange, modal, }: RootProps) => react.JSX.Element) & {
|
|
169
|
+
Trigger: react.ForwardRefExoticComponent<TriggerProps & react.RefAttributes<HTMLButtonElement>>;
|
|
170
|
+
Overlay: react.ForwardRefExoticComponent<OverlayProps & react.RefAttributes<HTMLDivElement>>;
|
|
171
|
+
Content: react.ForwardRefExoticComponent<ContentProps & react.RefAttributes<HTMLDivElement>>;
|
|
172
|
+
Title: react.ForwardRefExoticComponent<TitleProps & react.RefAttributes<HTMLHeadingElement>>;
|
|
173
|
+
Description: react.ForwardRefExoticComponent<DescriptionProps & react.RefAttributes<HTMLParagraphElement>>;
|
|
174
|
+
Close: react.ForwardRefExoticComponent<CloseProps & react.RefAttributes<HTMLButtonElement>>;
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
export { Accordion, type ContentProps$1 as AccordionContentProps, type ItemProps as AccordionItemProps, type RootProps$1 as AccordionProps, type TriggerProps$1 as AccordionTriggerProps, Checkbox, type CheckboxProps, type CheckedState, Dialog, type CloseProps as DialogCloseProps, type ContentProps as DialogContentProps, type DescriptionProps as DialogDescriptionProps, type OverlayProps as DialogOverlayProps, type RootProps as DialogProps, type TitleProps as DialogTitleProps, type TriggerProps as DialogTriggerProps, RadioGroup, type ItemProps$1 as RadioGroupItemProps, type RadioGroupRootProps as RadioGroupProps, Select, type ContentProps$4 as SelectContentProps, type OptionProps as SelectOptionProps, type SelectProps, type TriggerProps$4 as SelectTriggerProps, Switch, type SwitchProps, Tabs, type ContentProps$2 as TabsContentProps, type ListProps as TabsListProps, type RootProps$2 as TabsProps, type TriggerProps$2 as TabsTriggerProps, Tooltip, type ContentProps$3 as TooltipContentProps, type RootProps$3 as TooltipProps, type ProviderProps as TooltipProviderProps, type TriggerProps$3 as TooltipTriggerProps };
|