@kismet-ux/constellation 1.7.0 → 1.9.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/README.md +36 -0
- package/dist/form/Input/input.css +32 -0
- package/dist/form/Input/input.d.ts +18 -1
- package/dist/form/Input/input.d.ts.map +1 -1
- package/dist/form/Input/input.js +20 -2
- package/dist/form/Input/input.js.map +1 -1
- package/dist/form/Input/input.module.scss.js +1 -1
- package/dist/form/Select/select.css +9 -0
- package/dist/form/Select/select.d.ts +11 -1
- package/dist/form/Select/select.d.ts.map +1 -1
- package/dist/form/Select/select.js +10 -2
- package/dist/form/Select/select.js.map +1 -1
- package/dist/form/Select/select.module.scss.js +1 -1
- package/dist/form.d.ts +2 -2
- package/dist/{index-Bexoc2w4.d.ts → index-CRrCqjAW.d.ts} +13 -3
- package/dist/{index-K2b259WI.d.ts → index-Mihuyg_o.d.ts} +4 -2
- package/dist/{index-IHzHSsCh.d.ts → index-ZgohDspB.d.ts} +14 -14
- package/dist/index.d.ts +13 -55
- package/dist/{input-CWHXOpeH.d.ts → input-Cp5LET5i.d.ts} +17 -0
- package/dist/layout/Container/container.css +1 -1
- package/dist/layout/Container/container.d.ts.map +1 -1
- package/dist/layout/Container/container.js +5 -2
- package/dist/layout/Container/container.js.map +1 -1
- package/dist/layout/Sidebar/sidebar.d.ts.map +1 -1
- package/dist/layout/Sidebar/sidebar.js.map +1 -1
- package/dist/layout.d.ts +3 -3
- package/dist/navigation.d.ts +1 -1
- package/dist/{tooltip-CYRWWtkq.d.ts → tooltip-cjwkBINy.d.ts} +5 -1
- package/dist/types/layout/container.d.ts +2 -0
- package/dist/types/layout/container.d.ts.map +1 -1
- package/dist/ui/Button/button-variants.d.ts +1 -1
- package/dist/ui/Button/button.css +92 -77
- package/dist/ui/Button/button.d.ts +4 -0
- package/dist/ui/Button/button.d.ts.map +1 -1
- package/dist/ui/Button/button.js +8 -2
- package/dist/ui/Button/button.js.map +1 -1
- package/dist/ui/Icon/icon-variants.d.ts +1 -1
- package/dist/ui/Toggle/toggle-variants.d.ts +1 -1
- package/dist/ui.d.ts +2 -2
- package/package.json +1 -1
- package/vite-plugin.mjs +7 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sources":["../../../src/form/Select/select.tsx"],"sourcesContent":["import inputStyles from '@constellation/form/Input/input.module.scss';\nimport { Label } from '@constellation/form/Label';\nimport { useBreakpoint } from '@constellation/hooks/use-mobile';\nimport {\n type SelectAlign,\n type SelectContentProps,\n type SelectFieldProps,\n type SelectPosition,\n type SelectProps,\n type SelectSide,\n} from '@constellation/types';\nimport { Typography } from '@constellation/typography/Typography';\nimport cn from 'clsx';\nimport { CheckIcon, ChevronDownIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport s from './select.module.scss';\n\nconst SELECT_ANIMATION_DURATION = 200; // keep in sync with --select-duration in select.module.scss\nconst DEFAULT_SEARCH_THRESHOLD = 5;\nconst DEFAULT_COLLISION_PADDING = 8;\n\ntype SelectItemMeta = {\n value: string;\n label: string;\n disabled: boolean;\n};\n\ntype SelectContextValue = {\n contentId: string;\n contentRef: React.MutableRefObject<HTMLDivElement | null>;\n disabled: boolean;\n displayOpen: boolean;\n isClosing: boolean;\n items: SelectItemMeta[];\n open: boolean;\n selectedLabel?: string;\n setOpen: (open: boolean) => void;\n setValue: (value: string) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n value?: string;\n viewportRef: React.MutableRefObject<HTMLDivElement | null>;\n};\n\ntype SurfaceProps = {\n align?: SelectAlign;\n children: React.ReactNode;\n className?: string;\n collisionPadding?: number;\n contentRef: React.MutableRefObject<HTMLDivElement | null>;\n displayOpen: boolean;\n isClosing?: boolean;\n onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;\n open: boolean;\n position?: SelectPosition;\n side?: SelectSide;\n sideOffset?: number;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'className' | 'onKeyDown'>;\n\ntype ItemButtonElement = HTMLButtonElement;\ntype SelectChildElement = React.ReactElement<{\n children?: React.ReactNode;\n disabled?: boolean;\n value?: unknown;\n}>;\n\nconst SelectContext = React.createContext<SelectContextValue | null>(null);\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction readNodeText(node: React.ReactNode): string {\n if (node == null || typeof node === 'boolean') {\n return '';\n }\n\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node);\n }\n\n if (Array.isArray(node)) {\n return node.map(readNodeText).join(' ').trim();\n }\n\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) {\n return readNodeText(node.props.children);\n }\n\n return '';\n}\n\nfunction collectSelectItems(node: React.ReactNode): SelectItemMeta[] {\n const items: SelectItemMeta[] = [];\n\n const visit = (childNode: React.ReactNode) => {\n React.Children.forEach(childNode, child => {\n if (\n !React.isValidElement<{ children?: React.ReactNode; disabled?: boolean; value?: unknown }>(\n child,\n )\n ) {\n return;\n }\n\n if (child.props.value !== undefined) {\n items.push({\n value: String(child.props.value),\n label: readNodeText(child.props.children).trim(),\n disabled: Boolean(child.props.disabled),\n });\n return;\n }\n\n if (child.props.children) {\n visit(child.props.children);\n }\n });\n };\n\n visit(node);\n return items;\n}\n\nfunction getNavigableItems(viewport: HTMLDivElement | null, slot: string): ItemButtonElement[] {\n if (!viewport) {\n return [];\n }\n\n return Array.from(\n viewport.querySelectorAll<ItemButtonElement>(\n `[data-slot='${slot}']:not([data-disabled='true'])`,\n ),\n );\n}\n\nfunction focusItemByValue(viewport: HTMLDivElement | null, slot: string, value?: string) {\n const items = getNavigableItems(viewport, slot);\n\n if (!items.length) {\n return;\n }\n\n const target = value ? items.find(item => item.dataset.value === value) : undefined;\n (target ?? items[0])?.focus();\n}\n\nfunction moveItemFocus(\n viewport: HTMLDivElement | null,\n slot: string,\n direction: 'next' | 'prev' | 'first' | 'last',\n) {\n const items = getNavigableItems(viewport, slot);\n\n if (!items.length) {\n return;\n }\n\n if (direction === 'first') {\n items[0]?.focus();\n return;\n }\n\n if (direction === 'last') {\n items[items.length - 1]?.focus();\n return;\n }\n\n const currentIndex = items.findIndex(item => item === document.activeElement);\n const fallbackIndex = direction === 'next' ? 0 : items.length - 1;\n\n if (currentIndex === -1) {\n items[fallbackIndex]?.focus();\n return;\n }\n\n const nextIndex =\n direction === 'next'\n ? (currentIndex + 1) % items.length\n : (currentIndex - 1 + items.length) % items.length;\n\n items[nextIndex]?.focus();\n}\n\nfunction useDismissibleLayer({\n contentRef,\n onDismiss,\n open,\n triggerRef,\n}: {\n contentRef: React.MutableRefObject<HTMLElement | null>;\n onDismiss: () => void;\n open: boolean;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n}) {\n React.useEffect(() => {\n if (!open) {\n return;\n }\n\n const handlePointer = (event: MouseEvent | TouchEvent) => {\n const target = event.target;\n\n if (\n target instanceof Node &&\n (triggerRef.current?.contains(target) || contentRef.current?.contains(target))\n ) {\n return;\n }\n\n onDismiss();\n };\n\n const handleFocus = (event: FocusEvent) => {\n const target = event.target;\n\n if (\n target instanceof Node &&\n (triggerRef.current?.contains(target) || contentRef.current?.contains(target))\n ) {\n return;\n }\n\n onDismiss();\n };\n\n document.addEventListener('mousedown', handlePointer);\n document.addEventListener('touchstart', handlePointer);\n document.addEventListener('focusin', handleFocus);\n\n return () => {\n document.removeEventListener('mousedown', handlePointer);\n document.removeEventListener('touchstart', handlePointer);\n document.removeEventListener('focusin', handleFocus);\n };\n }, [contentRef, onDismiss, open, triggerRef]);\n}\n\nfunction useSurfacePosition({\n align = 'start',\n collisionPadding = DEFAULT_COLLISION_PADDING,\n contentRef,\n displayOpen,\n position = 'popper',\n side = 'bottom',\n sideOffset = 4,\n triggerRef,\n}: {\n align?: SelectAlign;\n collisionPadding?: number;\n contentRef: React.MutableRefObject<HTMLDivElement | null>;\n displayOpen: boolean;\n position?: SelectPosition;\n side?: SelectSide;\n sideOffset?: number;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n}) {\n const [computedStyle, setComputedStyle] = React.useState<React.CSSProperties>({\n position: 'fixed',\n visibility: 'hidden',\n });\n const [resolvedSide, setResolvedSide] = React.useState<SelectSide>(side);\n\n React.useLayoutEffect(() => {\n if (!displayOpen) {\n return;\n }\n\n const triggerElement = triggerRef.current;\n const contentElement = contentRef.current;\n\n if (!triggerElement || !contentElement) {\n return;\n }\n\n const updatePosition = () => {\n const triggerRect = triggerElement.getBoundingClientRect();\n const contentRect = {\n width: contentElement.offsetWidth,\n height: contentElement.offsetHeight,\n };\n const padding = collisionPadding;\n // The surface is portaled to <body> and positioned `fixed`, so the\n // collision boundary is always the viewport — never an ancestor's box.\n const boundaryLeft = 0;\n const boundaryTop = 0;\n const boundaryWidth = window.innerWidth;\n const boundaryHeight = window.innerHeight;\n const boundaryRight = boundaryWidth;\n const boundaryBottom = boundaryHeight;\n let nextSide = side;\n\n if (side === 'bottom' || side === 'top') {\n const canFitBelow =\n triggerRect.bottom + sideOffset + contentRect.height <= boundaryBottom - padding;\n const canFitAbove =\n triggerRect.top - sideOffset - contentRect.height >= boundaryTop + padding;\n\n if (side === 'bottom' && !canFitBelow && canFitAbove) {\n nextSide = 'top';\n }\n\n if (side === 'top' && !canFitAbove && canFitBelow) {\n nextSide = 'bottom';\n }\n } else {\n const canFitRight =\n triggerRect.right + sideOffset + contentRect.width <= boundaryRight - padding;\n const canFitLeft =\n triggerRect.left - sideOffset - contentRect.width >= boundaryLeft + padding;\n\n if (side === 'right' && !canFitRight && canFitLeft) {\n nextSide = 'left';\n }\n\n if (side === 'left' && !canFitLeft && canFitRight) {\n nextSide = 'right';\n }\n }\n\n let top = triggerRect.bottom + sideOffset;\n let left = triggerRect.left;\n\n if (nextSide === 'bottom' || nextSide === 'top') {\n top =\n nextSide === 'bottom'\n ? triggerRect.bottom + sideOffset\n : triggerRect.top - contentRect.height - sideOffset;\n\n if (align === 'center') {\n left = triggerRect.left + (triggerRect.width - contentRect.width) / 2;\n } else if (align === 'end') {\n left = triggerRect.right - contentRect.width;\n } else {\n left = triggerRect.left;\n }\n } else {\n left =\n nextSide === 'right'\n ? triggerRect.right + sideOffset\n : triggerRect.left - contentRect.width - sideOffset;\n\n if (align === 'center') {\n top = triggerRect.top + (triggerRect.height - contentRect.height) / 2;\n } else if (align === 'end') {\n top = triggerRect.bottom - contentRect.height;\n } else {\n top = triggerRect.top;\n }\n }\n\n left = clamp(left, padding, Math.max(padding, boundaryWidth - contentRect.width - padding));\n top = clamp(top, padding, Math.max(padding, boundaryHeight - contentRect.height - padding));\n\n setResolvedSide(nextSide);\n setComputedStyle({ position: 'fixed', top, left });\n };\n\n updatePosition();\n\n const resizeObserver = new ResizeObserver(updatePosition);\n resizeObserver.observe(triggerElement);\n resizeObserver.observe(contentElement);\n window.addEventListener('resize', updatePosition);\n window.addEventListener('scroll', updatePosition, true);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', updatePosition, true);\n };\n }, [align, collisionPadding, contentRef, displayOpen, position, side, sideOffset, triggerRef]);\n\n return { computedStyle, resolvedSide };\n}\n\nfunction useSelectContext(componentName: string) {\n const context = React.useContext(SelectContext);\n\n if (!context) {\n throw new Error(`${componentName} must be used within Select.`);\n }\n\n return context;\n}\n\nfunction Surface({\n align = 'start',\n children,\n className,\n collisionPadding = DEFAULT_COLLISION_PADDING,\n contentRef,\n displayOpen,\n isClosing = false,\n onKeyDown,\n open,\n position = 'popper',\n side = 'bottom',\n sideOffset = 4,\n triggerRef,\n ...props\n}: SurfaceProps) {\n const { computedStyle, resolvedSide } = useSurfacePosition({\n align,\n collisionPadding,\n contentRef,\n displayOpen,\n position,\n side,\n sideOffset,\n triggerRef,\n });\n\n if (!displayOpen || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(\n <div\n ref={contentRef}\n data-state={open ? 'open' : 'closed'}\n data-closing={isClosing ? 'true' : undefined}\n data-side={resolvedSide}\n className={className}\n style={computedStyle}\n onKeyDown={onKeyDown}\n {...props}\n >\n {children}\n </div>,\n // Always <body>: a Dialog/Sheet shell scrolls its own overflow, which would\n // clip a dropdown rendered inside it. The dialog dismisses via a click on\n // its overlay (not a document listener) and its focus trap only intercepts\n // Tab, so an out-of-tree surface stays safe on both counts.\n document.body,\n );\n}\n\nfunction Select({\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n disabled = false,\n children,\n ...props\n}: SelectProps) {\n const isOpenControlled = openProp !== undefined;\n const isValueControlled = valueProp !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const [isClosing, setIsClosing] = React.useState(false);\n const closeTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const viewportRef = React.useRef<HTMLDivElement | null>(null);\n const contentId = React.useId();\n const currentOpen = isOpenControlled ? openProp : uncontrolledOpen;\n const currentValue = isValueControlled ? valueProp : uncontrolledValue;\n const displayOpen = currentOpen || isClosing;\n const items = React.useMemo(() => collectSelectItems(children), [children]);\n const selectedLabel = items.find(item => item.value === currentValue)?.label;\n\n const clearCloseTimer = React.useCallback(() => {\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (nextOpen) {\n clearCloseTimer();\n setIsClosing(false);\n\n if (!isOpenControlled) {\n setUncontrolledOpen(true);\n }\n\n onOpenChange?.(true);\n return;\n }\n\n onOpenChange?.(false);\n if (!isOpenControlled) {\n setUncontrolledOpen(false);\n }\n\n setIsClosing(true);\n clearCloseTimer();\n closeTimerRef.current = setTimeout(() => {\n setIsClosing(false);\n }, SELECT_ANIMATION_DURATION);\n },\n [clearCloseTimer, isOpenControlled, onOpenChange],\n );\n\n const setValue = React.useCallback(\n (nextValue: string) => {\n if (!isValueControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onValueChange?.(nextValue);\n setOpen(false);\n\n requestAnimationFrame(() => {\n triggerRef.current?.focus();\n });\n },\n [isValueControlled, onValueChange, setOpen],\n );\n\n useDismissibleLayer({\n contentRef,\n onDismiss: () => setOpen(false),\n open: currentOpen,\n triggerRef,\n });\n\n React.useEffect(() => {\n return () => clearCloseTimer();\n }, [clearCloseTimer]);\n\n const contextValue = React.useMemo<SelectContextValue>(\n () => ({\n contentId,\n contentRef,\n disabled,\n displayOpen,\n isClosing,\n items,\n open: currentOpen,\n selectedLabel,\n setOpen,\n setValue,\n triggerRef,\n value: currentValue,\n viewportRef,\n }),\n [\n contentId,\n currentOpen,\n currentValue,\n disabled,\n displayOpen,\n isClosing,\n items,\n selectedLabel,\n setOpen,\n setValue,\n ],\n );\n\n return (\n <SelectContext.Provider value={contextValue}>\n <div data-slot={'select'} {...props}>\n {children}\n </div>\n </SelectContext.Provider>\n );\n}\n\nfunction SelectGroup({ ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div data-slot={'select-group'} {...props} />;\n}\n\nfunction SelectValue({\n children,\n placeholder,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement> & { placeholder?: React.ReactNode }) {\n const context = useSelectContext('SelectValue');\n const content = children ?? context.selectedLabel ?? placeholder;\n\n return (\n <span data-slot={'select-value'} {...props}>\n {content}\n </span>\n );\n}\n\nfunction SelectTrigger({\n className,\n children,\n onClick,\n onKeyDown,\n type,\n ...props\n}: React.ButtonHTMLAttributes<HTMLButtonElement>) {\n const context = useSelectContext('SelectTrigger');\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n\n if (event.defaultPrevented || context.disabled) {\n return;\n }\n\n context.setOpen(!context.open);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented || context.disabled) {\n return;\n }\n\n if (\n event.key === 'Enter' ||\n event.key === ' ' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n ) {\n event.preventDefault();\n context.setOpen(true);\n }\n\n // Only claim Escape when the surface is actually open — an unguarded\n // preventDefault would swallow it from an enclosing Dialog/Sheet.\n if (event.key === 'Escape' && context.open) {\n event.preventDefault();\n context.setOpen(false);\n }\n };\n\n return (\n <button\n ref={context.triggerRef}\n data-slot={'select-trigger'}\n type={type ?? 'button'}\n aria-controls={context.contentId}\n aria-expanded={context.open}\n aria-haspopup={'listbox'}\n disabled={context.disabled}\n className={cn(s.trigger, className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n <ChevronDownIcon className={cn(s['trigger-icon'])} />\n </button>\n );\n}\n\nfunction SelectContent({\n align = 'start',\n className,\n children,\n collisionPadding = DEFAULT_COLLISION_PADDING,\n onKeyDown,\n position = 'popper',\n side = 'bottom',\n sideOffset = 4,\n ...props\n}: SelectContentProps) {\n const context = useSelectContext('SelectContent');\n\n React.useEffect(() => {\n if (!context.open) {\n const content = context.contentRef.current;\n\n if (content) {\n content.style.maxWidth = '';\n }\n\n return;\n }\n\n const frame = requestAnimationFrame(() => {\n const content = context.contentRef.current;\n\n const triggerHasInput = context.triggerRef.current?.querySelector('input') != null;\n if (!triggerHasInput && !content?.querySelector('input')) {\n focusItemByValue(context.viewportRef.current, 'select-item', context.value);\n }\n });\n\n return () => cancelAnimationFrame(frame);\n }, [context.open, context.value, context.contentRef, context.viewportRef, context.triggerRef]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n context.setOpen(false);\n context.triggerRef.current?.focus();\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n moveItemFocus(context.viewportRef.current, 'select-item', 'next');\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n moveItemFocus(context.viewportRef.current, 'select-item', 'prev');\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n moveItemFocus(context.viewportRef.current, 'select-item', 'first');\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n moveItemFocus(context.viewportRef.current, 'select-item', 'last');\n }\n };\n\n return (\n <Surface\n data-slot={'select-content'}\n open={context.open}\n displayOpen={context.displayOpen}\n isClosing={context.isClosing}\n triggerRef={context.triggerRef as React.MutableRefObject<HTMLElement | null>}\n contentRef={context.contentRef}\n align={align}\n side={side}\n sideOffset={sideOffset}\n collisionPadding={collisionPadding}\n position={position}\n className={cn(s.content, className)}\n onKeyDown={handleKeyDown}\n {...props}\n >\n <div\n ref={context.viewportRef}\n className={cn(s.viewport, position === 'popper' && s['viewport-popper'])}\n id={context.contentId}\n role={'listbox'}\n >\n {children}\n </div>\n </Surface>\n );\n}\n\nfunction SelectItem({\n className,\n children,\n disabled = false,\n onClick,\n onMouseMove,\n value,\n ...props\n}: React.ButtonHTMLAttributes<HTMLButtonElement> & { value: string }) {\n const context = useSelectContext('SelectItem');\n const selected = context.value === value;\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n\n if (event.defaultPrevented || disabled) {\n return;\n }\n\n context.setValue(value);\n };\n\n const handleMouseMove = (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseMove?.(event);\n\n if (disabled) {\n return;\n }\n\n event.currentTarget.focus();\n };\n\n return (\n <button\n data-slot={'select-item'}\n data-value={value}\n data-disabled={disabled ? 'true' : undefined}\n type={'button'}\n role={'option'}\n aria-selected={selected}\n disabled={disabled}\n tabIndex={-1}\n className={cn(s.item, className)}\n onClick={handleClick}\n onMouseMove={handleMouseMove}\n {...props}\n >\n <span className={s['item-indicator']}>{selected ? <CheckIcon /> : null}</span>\n <span>{children}</span>\n </button>\n );\n}\n\nfunction SelectSeparator({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div data-slot={'select-separator'} className={cn(s.separator, className)} {...props} />;\n}\n\nfunction SelectInputTrigger({\n className,\n id,\n onBlur,\n onFocus,\n placeholder,\n searchQuery,\n setSearchQuery,\n ...props\n}: Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value'> & {\n searchQuery: string;\n setSearchQuery: React.Dispatch<React.SetStateAction<string>>;\n}) {\n const context = useSelectContext('SelectInputTrigger');\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n\n const setWrapperRef = React.useCallback(\n (el: HTMLDivElement | null) => {\n (context.triggerRef as React.MutableRefObject<HTMLElement | null>).current = el;\n },\n [context.triggerRef],\n );\n\n const displayValue = context.open ? searchQuery : (context.selectedLabel ?? '');\n\n React.useEffect(() => {\n if (context.open) {\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n }\n }, [context.open]);\n\n const handleClick = () => {\n if (!context.disabled) {\n context.setOpen(true);\n }\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!context.open) {\n const nativeEvent = event.nativeEvent as InputEvent;\n setSearchQuery(nativeEvent.data ?? '');\n context.setOpen(true);\n } else {\n setSearchQuery(event.target.value);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (context.disabled) {\n return;\n }\n\n if ((event.key === 'Backspace' || event.key === 'Delete') && !context.open) {\n event.preventDefault();\n return;\n }\n\n if (event.key === ' ' && !context.open) {\n event.preventDefault();\n context.setOpen(true);\n return;\n }\n\n if (event.key === 'Escape' && context.open) {\n event.preventDefault();\n context.setOpen(false);\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (!context.open) {\n context.setOpen(true);\n }\n\n requestAnimationFrame(() => {\n moveItemFocus(context.viewportRef.current, 'select-item', 'next');\n });\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (!context.open) {\n context.setOpen(true);\n }\n\n requestAnimationFrame(() => {\n moveItemFocus(context.viewportRef.current, 'select-item', 'prev');\n });\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (!context.open) {\n context.setOpen(true);\n } else if (searchQuery) {\n const firstItem = context.viewportRef.current?.querySelector(\n '[data-slot=\"select-item\"]:not([data-disabled=\"true\"])',\n ) as HTMLButtonElement | null;\n firstItem?.click();\n }\n return;\n }\n\n if (!context.open && event.key.length === 1 && !event.ctrlKey && !event.metaKey) {\n context.setOpen(true);\n }\n };\n\n return (\n <div\n ref={setWrapperRef}\n tabIndex={-1}\n className={cn(s.trigger, s['input-trigger'], className)}\n onClick={handleClick}\n onFocus={event => {\n if (event.target === event.currentTarget) {\n inputRef.current?.focus();\n }\n }}\n >\n <input\n ref={inputRef}\n id={id}\n type={'text'}\n value={displayValue}\n placeholder={placeholder}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n disabled={context.disabled}\n aria-controls={context.contentId}\n aria-expanded={context.open}\n aria-haspopup={'listbox'}\n className={s['search-trigger-input']}\n autoComplete={'off'}\n {...props}\n />\n <ChevronDownIcon className={cn(s['trigger-icon'])} />\n </div>\n );\n}\n\ntype SharedSelectFieldProps = {\n contentProps?: SelectFieldProps['contentProps'];\n error: boolean;\n fieldClassName?: string;\n filteredItems: SelectChildElement[];\n getItemText: (child: SelectChildElement) => string;\n helperText?: React.ReactNode;\n isFocused: boolean;\n isRequired: boolean;\n label?: React.ReactNode;\n labelRef: React.MutableRefObject<HTMLLabelElement | null>;\n minWidth?: number;\n placeholder?: string;\n resolvedSize: 'sm' | 'md';\n searchable: boolean;\n selectableItems: SelectChildElement[];\n searchQuery: string;\n setIsFocused: React.Dispatch<React.SetStateAction<boolean>>;\n setSearchQuery: React.Dispatch<React.SetStateAction<string>>;\n triggerId: string;\n};\n\ntype MultiSelectFieldInternalProps = Extract<SelectFieldProps, { multiple: true }> &\n SharedSelectFieldProps;\n\nfunction MultiSelectField({\n contentProps,\n defaultOpen,\n defaultValue,\n disabled = false,\n error,\n fieldClassName,\n filteredItems,\n getItemText,\n helperText,\n isFocused,\n isRequired,\n label,\n labelRef,\n minWidth,\n name,\n onOpenChange,\n onValueChange,\n open: openProp,\n placeholder,\n resolvedSize,\n searchable,\n selectableItems,\n searchQuery,\n setIsFocused,\n setSearchQuery,\n triggerId,\n value,\n}: MultiSelectFieldInternalProps) {\n const triggerRef = React.useRef<HTMLElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const viewportRef = React.useRef<HTMLDivElement | null>(null);\n const closeTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const isOpenControlled = openProp !== undefined;\n const isValueControlled = value !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue ?? []);\n const [isClosing, setIsClosing] = React.useState(false);\n const currentOpen = isOpenControlled ? openProp : uncontrolledOpen;\n const currentValue = isValueControlled ? value : uncontrolledValue;\n const displayOpen = currentOpen || isClosing;\n const selectedLabels = selectableItems\n .filter(child => currentValue.includes(String(child.props.value)))\n .map(getItemText)\n .filter(Boolean);\n const hasValue = currentValue.length > 0;\n\n const clearCloseTimer = React.useCallback(() => {\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (nextOpen) {\n clearCloseTimer();\n setIsClosing(false);\n\n if (!isOpenControlled) {\n setUncontrolledOpen(true);\n }\n\n onOpenChange?.(true);\n return;\n }\n\n onOpenChange?.(false);\n if (!isOpenControlled) {\n setUncontrolledOpen(false);\n }\n\n setIsClosing(true);\n clearCloseTimer();\n closeTimerRef.current = setTimeout(() => {\n setIsClosing(false);\n }, SELECT_ANIMATION_DURATION);\n },\n [clearCloseTimer, isOpenControlled, onOpenChange],\n );\n\n const setValues = React.useCallback(\n (nextValue: string[]) => {\n if (!isValueControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onValueChange?.(nextValue);\n },\n [isValueControlled, onValueChange],\n );\n\n useDismissibleLayer({\n contentRef,\n onDismiss: () => setOpen(false),\n open: currentOpen,\n triggerRef: triggerRef as React.MutableRefObject<HTMLElement | null>,\n });\n\n React.useEffect(() => {\n if (!displayOpen) {\n setSearchQuery('');\n }\n }, [displayOpen, setSearchQuery]);\n\n React.useEffect(() => {\n return () => clearCloseTimer();\n }, [clearCloseTimer]);\n\n React.useEffect(() => {\n if (!currentOpen) {\n const content = contentRef.current;\n\n if (content) {\n content.style.maxWidth = '';\n }\n\n return;\n }\n\n const frame = requestAnimationFrame(() => {\n const content = contentRef.current;\n\n const triggerHasInput = triggerRef.current?.querySelector('input') != null;\n if (!triggerHasInput && !content?.querySelector('input')) {\n focusItemByValue(viewportRef.current, 'select-multi-item', currentValue[0]);\n }\n });\n\n return () => cancelAnimationFrame(frame);\n }, [currentOpen, currentValue]);\n\n React.useEffect(() => {\n if (searchable && currentOpen) {\n requestAnimationFrame(() => {\n const input = triggerRef.current?.querySelector('input');\n input?.focus();\n });\n }\n }, [currentOpen, searchable]);\n\n const containerClasses = cn(\n inputStyles.container,\n inputStyles[resolvedSize],\n { [inputStyles.error]: error },\n { [inputStyles.disabled]: disabled },\n { [inputStyles.placeholder]: placeholder },\n { [inputStyles['has-value']]: hasValue },\n { [inputStyles['is-focused']]: isFocused || currentOpen || isClosing },\n fieldClassName,\n );\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (searchable) {\n const input = triggerRef.current?.querySelector('input');\n\n if (document.activeElement !== input) {\n if (event.key === 'Backspace') {\n event.preventDefault();\n setSearchQuery(prev => prev.slice(0, -1));\n input?.focus();\n return;\n }\n\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n event.preventDefault();\n setSearchQuery(prev => prev + event.key);\n input?.focus();\n return;\n }\n }\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n setOpen(false);\n const input = triggerRef.current?.querySelector('input');\n (input ?? triggerRef.current)?.focus();\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n moveItemFocus(viewportRef.current, 'select-multi-item', 'next');\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n moveItemFocus(viewportRef.current, 'select-multi-item', 'prev');\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n moveItemFocus(viewportRef.current, 'select-multi-item', 'first');\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n moveItemFocus(viewportRef.current, 'select-multi-item', 'last');\n }\n };\n\n return (\n <>\n <div\n data-constellation-field\n className={containerClasses}\n style={minWidth ? { minWidth: Math.max(minWidth, 140) } : undefined}\n >\n <div className={inputStyles['input-container']}>\n <div className={inputStyles['label-container']}>\n <Label htmlFor={triggerId} ref={labelRef}>\n {label}\n {isRequired && <span className={inputStyles.required}>*</span>}\n </Label>\n </div>\n {searchable ? (\n <div\n ref={triggerRef as React.MutableRefObject<HTMLDivElement | null>}\n tabIndex={-1}\n className={cn(s.trigger, s['input-trigger'])}\n data-placeholder={!hasValue ? 'true' : undefined}\n onClick={() => {\n if (!currentOpen) {\n setOpen(true);\n }\n }}\n onFocus={event => {\n if (event.target === event.currentTarget) {\n triggerRef.current?.querySelector('input')?.focus();\n }\n }}\n >\n <input\n id={triggerId}\n type={'text'}\n value={currentOpen ? searchQuery : hasValue ? selectedLabels.join(', ') : ''}\n placeholder={placeholder}\n aria-expanded={currentOpen}\n aria-haspopup={'listbox'}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={helperText ? `${triggerId}-helper` : undefined}\n disabled={disabled}\n className={s['search-trigger-input']}\n autoComplete={'off'}\n onChange={event => {\n if (!currentOpen) {\n const nativeEvent = event.nativeEvent as InputEvent;\n setSearchQuery(nativeEvent.data ?? '');\n setOpen(true);\n } else {\n setSearchQuery(event.target.value);\n }\n }}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={event => {\n if ((event.key === 'Backspace' || event.key === 'Delete') && !currentOpen) {\n event.preventDefault();\n return;\n }\n\n if (event.key === ' ' && !currentOpen) {\n event.preventDefault();\n setOpen(true);\n return;\n }\n\n if (event.key === 'Escape' && currentOpen) {\n event.preventDefault();\n setOpen(false);\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (!currentOpen) {\n setOpen(true);\n }\n\n requestAnimationFrame(() => {\n moveItemFocus(viewportRef.current, 'select-multi-item', 'next');\n });\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (!currentOpen) {\n setOpen(true);\n }\n\n requestAnimationFrame(() => {\n moveItemFocus(viewportRef.current, 'select-multi-item', 'prev');\n });\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (!currentOpen) {\n setOpen(true);\n }\n return;\n }\n\n if (!currentOpen && event.key.length === 1 && !event.ctrlKey && !event.metaKey) {\n setOpen(true);\n }\n }}\n />\n <ChevronDownIcon className={s['trigger-icon']} />\n </div>\n ) : (\n <button\n ref={triggerRef as React.MutableRefObject<HTMLButtonElement | null>}\n id={triggerId}\n type={'button'}\n aria-expanded={currentOpen}\n aria-haspopup={'listbox'}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={helperText ? `${triggerId}-helper` : undefined}\n disabled={disabled}\n className={cn(s.trigger, s['input-trigger'])}\n data-placeholder={!hasValue ? 'true' : undefined}\n onClick={() => setOpen(!currentOpen)}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={event => {\n if (\n event.key === 'Enter' ||\n event.key === ' ' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n ) {\n event.preventDefault();\n setOpen(true);\n }\n }}\n >\n <span className={s['trigger-value']}>\n {hasValue ? selectedLabels.join(', ') : placeholder}\n </span>\n <ChevronDownIcon className={s['trigger-icon']} />\n </button>\n )}\n </div>\n {helperText ? (\n <Typography\n id={`${triggerId}-helper`}\n variant={'caption'}\n className={inputStyles['helper-text']}\n >\n {helperText}\n </Typography>\n ) : null}\n {name\n ? currentValue.map(itemValue => (\n <input key={itemValue} type={'hidden'} name={name} value={itemValue} />\n ))\n : null}\n </div>\n <Surface\n data-slot={'select-content'}\n open={currentOpen}\n displayOpen={displayOpen}\n isClosing={isClosing}\n triggerRef={triggerRef as React.MutableRefObject<HTMLElement | null>}\n contentRef={contentRef}\n align={contentProps?.align}\n side={contentProps?.side}\n sideOffset={contentProps?.sideOffset}\n collisionPadding={contentProps?.collisionPadding ?? DEFAULT_COLLISION_PADDING}\n className={cn(s.content, s['multi-content'], contentProps?.className)}\n onKeyDown={handleKeyDown}\n >\n <div ref={viewportRef} className={cn(s.viewport, s['multi-options'])} role={'listbox'}>\n {filteredItems.map(child => {\n const itemValue = String(child.props.value);\n const checked = currentValue.includes(itemValue);\n\n return (\n <button\n key={itemValue}\n data-slot={'select-multi-item'}\n data-value={itemValue}\n data-disabled={child.props.disabled ? 'true' : undefined}\n type={'button'}\n role={'option'}\n aria-selected={checked}\n disabled={child.props.disabled}\n tabIndex={-1}\n className={cn(s.item, s['multi-item'])}\n onClick={() =>\n setValues(\n checked\n ? currentValue.filter(currentItem => currentItem !== itemValue)\n : [...currentValue, itemValue],\n )\n }\n onMouseMove={event => {\n if (!child.props.disabled) {\n event.currentTarget.focus();\n }\n }}\n >\n <span className={s['item-indicator']}>{checked ? <CheckIcon /> : null}</span>\n <span>{child.props.children}</span>\n </button>\n );\n })}\n </div>\n </Surface>\n </>\n );\n}\n\nfunction SelectField(props: SelectFieldProps) {\n const {\n label,\n helperText,\n error = false,\n placeholder,\n children,\n fieldClassName,\n contentProps,\n id,\n sizeVariant,\n searchThreshold = DEFAULT_SEARCH_THRESHOLD,\n } = props;\n const generatedId = React.useId();\n const triggerId = id ?? generatedId;\n const { isBelow } = useBreakpoint();\n const resolvedSize = sizeVariant ?? (isBelow(900) ? 'sm' : 'md');\n const [isFocused, setIsFocused] = React.useState(false);\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchQuery, setSearchQuery] = React.useState('');\n const [minWidth, setMinWidth] = React.useState<number | undefined>(undefined);\n const labelRef = React.useRef<HTMLLabelElement | null>(null);\n const childArray = React.useMemo(\n () =>\n React.Children.toArray(children).filter((child): child is SelectChildElement =>\n React.isValidElement(child),\n ),\n [children],\n );\n const selectableItems = React.useMemo(\n () => childArray.filter(child => child.props.value !== undefined),\n [childArray],\n );\n const searchable = selectableItems.length >= searchThreshold;\n const getItemText = React.useCallback((child: SelectChildElement) => {\n return readNodeText(child.props.children).trim();\n }, []);\n\n const matchesQuery = React.useCallback(\n (child: SelectChildElement) => {\n if (!searchQuery) {\n return true;\n }\n\n return getItemText(child).toLowerCase().includes(searchQuery.toLowerCase());\n },\n [getItemText, searchQuery],\n );\n\n const filteredItems = React.useMemo(() => {\n if (!searchQuery) {\n return selectableItems;\n }\n\n return selectableItems.filter(matchesQuery);\n }, [matchesQuery, searchQuery, selectableItems]);\n\n React.useLayoutEffect(() => {\n if (!label) {\n setMinWidth(undefined);\n return;\n }\n\n const labelElement = labelRef.current;\n\n if (!labelElement) {\n return;\n }\n\n const updateMinWidth = () => {\n const labelWidth = labelElement.getBoundingClientRect().width;\n const iconWidth = 16;\n const horizontalPadding = resolvedSize === 'sm' ? 20 : 24;\n const computedWidth = Math.ceil(labelWidth + iconWidth + horizontalPadding);\n setMinWidth(Math.max(computedWidth, 0));\n };\n\n updateMinWidth();\n\n const resizeObserver = new ResizeObserver(updateMinWidth);\n resizeObserver.observe(labelElement);\n\n return () => resizeObserver.disconnect();\n }, [label, resolvedSize]);\n\n const ariaRequired = props['aria-required'];\n const isRequired = Boolean(ariaRequired || props.required);\n const baseSelectProps = {\n open: props.open,\n defaultOpen: props.defaultOpen,\n onOpenChange: props.onOpenChange,\n disabled: props.disabled,\n required: props.required,\n name: props.name,\n };\n\n if (props.multiple) {\n return (\n <MultiSelectField\n {...props}\n contentProps={contentProps}\n error={error}\n fieldClassName={fieldClassName}\n filteredItems={filteredItems}\n getItemText={getItemText}\n helperText={helperText}\n isFocused={isFocused}\n isRequired={isRequired}\n label={label}\n labelRef={labelRef}\n minWidth={minWidth}\n placeholder={placeholder}\n resolvedSize={resolvedSize}\n searchable={searchable}\n selectableItems={selectableItems}\n searchQuery={searchQuery}\n setIsFocused={setIsFocused}\n setSearchQuery={setSearchQuery}\n triggerId={triggerId}\n />\n );\n }\n\n const { value, defaultValue, onValueChange } = props;\n\n const handleContentKeyDown = searchable\n ? (event: React.KeyboardEvent<HTMLDivElement>) => {\n const triggerInput = document.getElementById(triggerId);\n\n if (triggerInput instanceof HTMLInputElement && document.activeElement !== triggerInput) {\n if (event.key === 'Backspace') {\n event.preventDefault();\n setSearchQuery(prev => prev.slice(0, -1));\n triggerInput.focus();\n return;\n }\n\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n event.preventDefault();\n setSearchQuery(prev => prev + event.key);\n triggerInput.focus();\n return;\n }\n }\n }\n : undefined;\n\n return (\n <Select\n {...baseSelectProps}\n onOpenChange={nextOpen => {\n props.onOpenChange?.(nextOpen);\n setIsOpen(nextOpen);\n\n if (!nextOpen) {\n setSearchQuery('');\n }\n }}\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n >\n <div\n data-constellation-field\n className={cn(\n inputStyles.container,\n inputStyles[resolvedSize],\n { [inputStyles.error]: error },\n { [inputStyles.disabled]: props.disabled },\n { [inputStyles.placeholder]: placeholder },\n { [inputStyles['has-value']]: Boolean(value ?? defaultValue) },\n { [inputStyles['is-focused']]: isFocused || isOpen },\n fieldClassName,\n )}\n style={minWidth ? { minWidth: Math.max(minWidth, 140) } : undefined}\n >\n <div className={inputStyles['input-container']}>\n <div className={inputStyles['label-container']}>\n <Label htmlFor={triggerId} ref={labelRef}>\n {label}\n {isRequired && <span className={inputStyles.required}>*</span>}\n </Label>\n </div>\n {searchable ? (\n <SelectInputTrigger\n id={triggerId}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={helperText ? `${triggerId}-helper` : undefined}\n placeholder={placeholder}\n searchQuery={searchQuery}\n setSearchQuery={setSearchQuery}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n />\n ) : (\n <SelectTrigger\n id={triggerId}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={helperText ? `${triggerId}-helper` : undefined}\n className={s['input-trigger']}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n )}\n </div>\n {helperText ? (\n <Typography\n id={`${triggerId}-helper`}\n variant={'caption'}\n className={inputStyles['helper-text']}\n >\n {helperText}\n </Typography>\n ) : null}\n </div>\n <SelectContent {...contentProps} onKeyDown={handleContentKeyDown}>\n {searchQuery ? filteredItems : childArray}\n </SelectContent>\n </Select>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectField,\n SelectGroup,\n SelectItem,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"select.js","sources":["../../../src/form/Select/select.tsx"],"sourcesContent":["import inputStyles from '@constellation/form/Input/input.module.scss';\nimport { Label } from '@constellation/form/Label';\nimport { useBreakpoint } from '@constellation/hooks/use-mobile';\nimport {\n type SelectAlign,\n type SelectContentProps,\n type SelectFieldProps,\n type SelectPosition,\n type SelectProps,\n type SelectSide,\n} from '@constellation/types';\nimport { Typography } from '@constellation/typography/Typography';\nimport cn from 'clsx';\nimport { CheckIcon, ChevronDownIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport s from './select.module.scss';\n\nconst SELECT_ANIMATION_DURATION = 200; // keep in sync with --select-duration in select.module.scss\nconst DEFAULT_SEARCH_THRESHOLD = 5;\nconst DEFAULT_COLLISION_PADDING = 8;\n\ntype SelectItemMeta = {\n value: string;\n label: string;\n disabled: boolean;\n};\n\ntype SelectContextValue = {\n contentId: string;\n contentRef: React.MutableRefObject<HTMLDivElement | null>;\n disabled: boolean;\n displayOpen: boolean;\n isClosing: boolean;\n items: SelectItemMeta[];\n open: boolean;\n selectedLabel?: string;\n setOpen: (open: boolean) => void;\n setValue: (value: string) => void;\n triggerRef: React.MutableRefObject<HTMLButtonElement | null>;\n value?: string;\n viewportRef: React.MutableRefObject<HTMLDivElement | null>;\n};\n\ntype SurfaceProps = {\n align?: SelectAlign;\n children: React.ReactNode;\n className?: string;\n collisionPadding?: number;\n contentRef: React.MutableRefObject<HTMLDivElement | null>;\n displayOpen: boolean;\n isClosing?: boolean;\n onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;\n open: boolean;\n position?: SelectPosition;\n side?: SelectSide;\n sideOffset?: number;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'className' | 'onKeyDown'>;\n\ntype ItemButtonElement = HTMLButtonElement;\ntype SelectChildElement = React.ReactElement<{\n children?: React.ReactNode;\n disabled?: boolean;\n value?: unknown;\n}>;\n\nconst SelectContext = React.createContext<SelectContextValue | null>(null);\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction readNodeText(node: React.ReactNode): string {\n if (node == null || typeof node === 'boolean') {\n return '';\n }\n\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node);\n }\n\n if (Array.isArray(node)) {\n return node.map(readNodeText).join(' ').trim();\n }\n\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) {\n return readNodeText(node.props.children);\n }\n\n return '';\n}\n\nfunction collectSelectItems(node: React.ReactNode): SelectItemMeta[] {\n const items: SelectItemMeta[] = [];\n\n const visit = (childNode: React.ReactNode) => {\n React.Children.forEach(childNode, child => {\n if (\n !React.isValidElement<{ children?: React.ReactNode; disabled?: boolean; value?: unknown }>(\n child,\n )\n ) {\n return;\n }\n\n if (child.props.value !== undefined) {\n items.push({\n value: String(child.props.value),\n label: readNodeText(child.props.children).trim(),\n disabled: Boolean(child.props.disabled),\n });\n return;\n }\n\n if (child.props.children) {\n visit(child.props.children);\n }\n });\n };\n\n visit(node);\n return items;\n}\n\nfunction getNavigableItems(viewport: HTMLDivElement | null, slot: string): ItemButtonElement[] {\n if (!viewport) {\n return [];\n }\n\n return Array.from(\n viewport.querySelectorAll<ItemButtonElement>(\n `[data-slot='${slot}']:not([data-disabled='true'])`,\n ),\n );\n}\n\nfunction focusItemByValue(viewport: HTMLDivElement | null, slot: string, value?: string) {\n const items = getNavigableItems(viewport, slot);\n\n if (!items.length) {\n return;\n }\n\n const target = value ? items.find(item => item.dataset.value === value) : undefined;\n (target ?? items[0])?.focus();\n}\n\nfunction moveItemFocus(\n viewport: HTMLDivElement | null,\n slot: string,\n direction: 'next' | 'prev' | 'first' | 'last',\n) {\n const items = getNavigableItems(viewport, slot);\n\n if (!items.length) {\n return;\n }\n\n if (direction === 'first') {\n items[0]?.focus();\n return;\n }\n\n if (direction === 'last') {\n items[items.length - 1]?.focus();\n return;\n }\n\n const currentIndex = items.findIndex(item => item === document.activeElement);\n const fallbackIndex = direction === 'next' ? 0 : items.length - 1;\n\n if (currentIndex === -1) {\n items[fallbackIndex]?.focus();\n return;\n }\n\n const nextIndex =\n direction === 'next'\n ? (currentIndex + 1) % items.length\n : (currentIndex - 1 + items.length) % items.length;\n\n items[nextIndex]?.focus();\n}\n\nfunction useDismissibleLayer({\n contentRef,\n onDismiss,\n open,\n triggerRef,\n}: {\n contentRef: React.MutableRefObject<HTMLElement | null>;\n onDismiss: () => void;\n open: boolean;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n}) {\n React.useEffect(() => {\n if (!open) {\n return;\n }\n\n const handlePointer = (event: MouseEvent | TouchEvent) => {\n const target = event.target;\n\n if (\n target instanceof Node &&\n (triggerRef.current?.contains(target) || contentRef.current?.contains(target))\n ) {\n return;\n }\n\n onDismiss();\n };\n\n const handleFocus = (event: FocusEvent) => {\n const target = event.target;\n\n if (\n target instanceof Node &&\n (triggerRef.current?.contains(target) || contentRef.current?.contains(target))\n ) {\n return;\n }\n\n onDismiss();\n };\n\n document.addEventListener('mousedown', handlePointer);\n document.addEventListener('touchstart', handlePointer);\n document.addEventListener('focusin', handleFocus);\n\n return () => {\n document.removeEventListener('mousedown', handlePointer);\n document.removeEventListener('touchstart', handlePointer);\n document.removeEventListener('focusin', handleFocus);\n };\n }, [contentRef, onDismiss, open, triggerRef]);\n}\n\nfunction useSurfacePosition({\n align = 'start',\n collisionPadding = DEFAULT_COLLISION_PADDING,\n contentRef,\n displayOpen,\n position = 'popper',\n side = 'bottom',\n sideOffset = 4,\n triggerRef,\n}: {\n align?: SelectAlign;\n collisionPadding?: number;\n contentRef: React.MutableRefObject<HTMLDivElement | null>;\n displayOpen: boolean;\n position?: SelectPosition;\n side?: SelectSide;\n sideOffset?: number;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n}) {\n const [computedStyle, setComputedStyle] = React.useState<React.CSSProperties>({\n position: 'fixed',\n visibility: 'hidden',\n });\n const [resolvedSide, setResolvedSide] = React.useState<SelectSide>(side);\n\n React.useLayoutEffect(() => {\n if (!displayOpen) {\n return;\n }\n\n const triggerElement = triggerRef.current;\n const contentElement = contentRef.current;\n\n if (!triggerElement || !contentElement) {\n return;\n }\n\n const updatePosition = () => {\n const triggerRect = triggerElement.getBoundingClientRect();\n const contentRect = {\n width: contentElement.offsetWidth,\n height: contentElement.offsetHeight,\n };\n const padding = collisionPadding;\n // The surface is portaled to <body> and positioned `fixed`, so the\n // collision boundary is always the viewport — never an ancestor's box.\n const boundaryLeft = 0;\n const boundaryTop = 0;\n const boundaryWidth = window.innerWidth;\n const boundaryHeight = window.innerHeight;\n const boundaryRight = boundaryWidth;\n const boundaryBottom = boundaryHeight;\n let nextSide = side;\n\n if (side === 'bottom' || side === 'top') {\n const canFitBelow =\n triggerRect.bottom + sideOffset + contentRect.height <= boundaryBottom - padding;\n const canFitAbove =\n triggerRect.top - sideOffset - contentRect.height >= boundaryTop + padding;\n\n if (side === 'bottom' && !canFitBelow && canFitAbove) {\n nextSide = 'top';\n }\n\n if (side === 'top' && !canFitAbove && canFitBelow) {\n nextSide = 'bottom';\n }\n } else {\n const canFitRight =\n triggerRect.right + sideOffset + contentRect.width <= boundaryRight - padding;\n const canFitLeft =\n triggerRect.left - sideOffset - contentRect.width >= boundaryLeft + padding;\n\n if (side === 'right' && !canFitRight && canFitLeft) {\n nextSide = 'left';\n }\n\n if (side === 'left' && !canFitLeft && canFitRight) {\n nextSide = 'right';\n }\n }\n\n let top = triggerRect.bottom + sideOffset;\n let left = triggerRect.left;\n\n if (nextSide === 'bottom' || nextSide === 'top') {\n top =\n nextSide === 'bottom'\n ? triggerRect.bottom + sideOffset\n : triggerRect.top - contentRect.height - sideOffset;\n\n if (align === 'center') {\n left = triggerRect.left + (triggerRect.width - contentRect.width) / 2;\n } else if (align === 'end') {\n left = triggerRect.right - contentRect.width;\n } else {\n left = triggerRect.left;\n }\n } else {\n left =\n nextSide === 'right'\n ? triggerRect.right + sideOffset\n : triggerRect.left - contentRect.width - sideOffset;\n\n if (align === 'center') {\n top = triggerRect.top + (triggerRect.height - contentRect.height) / 2;\n } else if (align === 'end') {\n top = triggerRect.bottom - contentRect.height;\n } else {\n top = triggerRect.top;\n }\n }\n\n left = clamp(left, padding, Math.max(padding, boundaryWidth - contentRect.width - padding));\n top = clamp(top, padding, Math.max(padding, boundaryHeight - contentRect.height - padding));\n\n setResolvedSide(nextSide);\n setComputedStyle({ position: 'fixed', top, left });\n };\n\n updatePosition();\n\n const resizeObserver = new ResizeObserver(updatePosition);\n resizeObserver.observe(triggerElement);\n resizeObserver.observe(contentElement);\n window.addEventListener('resize', updatePosition);\n window.addEventListener('scroll', updatePosition, true);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', updatePosition, true);\n };\n }, [align, collisionPadding, contentRef, displayOpen, position, side, sideOffset, triggerRef]);\n\n return { computedStyle, resolvedSide };\n}\n\nfunction useSelectContext(componentName: string) {\n const context = React.useContext(SelectContext);\n\n if (!context) {\n throw new Error(`${componentName} must be used within Select.`);\n }\n\n return context;\n}\n\nfunction Surface({\n align = 'start',\n children,\n className,\n collisionPadding = DEFAULT_COLLISION_PADDING,\n contentRef,\n displayOpen,\n isClosing = false,\n onKeyDown,\n open,\n position = 'popper',\n side = 'bottom',\n sideOffset = 4,\n triggerRef,\n ...props\n}: SurfaceProps) {\n const { computedStyle, resolvedSide } = useSurfacePosition({\n align,\n collisionPadding,\n contentRef,\n displayOpen,\n position,\n side,\n sideOffset,\n triggerRef,\n });\n\n if (!displayOpen || typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(\n <div\n ref={contentRef}\n data-state={open ? 'open' : 'closed'}\n data-closing={isClosing ? 'true' : undefined}\n data-side={resolvedSide}\n className={className}\n style={computedStyle}\n onKeyDown={onKeyDown}\n {...props}\n >\n {children}\n </div>,\n // Always <body>: a Dialog/Sheet shell scrolls its own overflow, which would\n // clip a dropdown rendered inside it. The dialog dismisses via a click on\n // its overlay (not a document listener) and its focus trap only intercepts\n // Tab, so an out-of-tree surface stays safe on both counts.\n document.body,\n );\n}\n\nfunction Select({\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n disabled = false,\n children,\n ...props\n}: SelectProps) {\n const isOpenControlled = openProp !== undefined;\n const isValueControlled = valueProp !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);\n const [isClosing, setIsClosing] = React.useState(false);\n const closeTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const viewportRef = React.useRef<HTMLDivElement | null>(null);\n const contentId = React.useId();\n const currentOpen = isOpenControlled ? openProp : uncontrolledOpen;\n const currentValue = isValueControlled ? valueProp : uncontrolledValue;\n const displayOpen = currentOpen || isClosing;\n const items = React.useMemo(() => collectSelectItems(children), [children]);\n const selectedLabel = items.find(item => item.value === currentValue)?.label;\n\n const clearCloseTimer = React.useCallback(() => {\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (nextOpen) {\n clearCloseTimer();\n setIsClosing(false);\n\n if (!isOpenControlled) {\n setUncontrolledOpen(true);\n }\n\n onOpenChange?.(true);\n return;\n }\n\n onOpenChange?.(false);\n if (!isOpenControlled) {\n setUncontrolledOpen(false);\n }\n\n setIsClosing(true);\n clearCloseTimer();\n closeTimerRef.current = setTimeout(() => {\n setIsClosing(false);\n }, SELECT_ANIMATION_DURATION);\n },\n [clearCloseTimer, isOpenControlled, onOpenChange],\n );\n\n const setValue = React.useCallback(\n (nextValue: string) => {\n if (!isValueControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onValueChange?.(nextValue);\n setOpen(false);\n\n requestAnimationFrame(() => {\n triggerRef.current?.focus();\n });\n },\n [isValueControlled, onValueChange, setOpen],\n );\n\n useDismissibleLayer({\n contentRef,\n onDismiss: () => setOpen(false),\n open: currentOpen,\n triggerRef,\n });\n\n React.useEffect(() => {\n return () => clearCloseTimer();\n }, [clearCloseTimer]);\n\n const contextValue = React.useMemo<SelectContextValue>(\n () => ({\n contentId,\n contentRef,\n disabled,\n displayOpen,\n isClosing,\n items,\n open: currentOpen,\n selectedLabel,\n setOpen,\n setValue,\n triggerRef,\n value: currentValue,\n viewportRef,\n }),\n [\n contentId,\n currentOpen,\n currentValue,\n disabled,\n displayOpen,\n isClosing,\n items,\n selectedLabel,\n setOpen,\n setValue,\n ],\n );\n\n return (\n <SelectContext.Provider value={contextValue}>\n <div data-slot={'select'} {...props}>\n {children}\n </div>\n </SelectContext.Provider>\n );\n}\n\n/**\n * A titled run of options — the `<optgroup>` of this select.\n *\n * The heading is presentational and never focusable: it names the run, it is\n * not a thing you can pick. Labelling the group with `aria-label` rather than\n * pointing at the heading keeps it out of the option list for a screen reader\n * too.\n */\nfunction SelectGroup({\n label,\n children,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & { label?: React.ReactNode }) {\n return (\n <div data-slot={'select-group'} role={'group'} aria-label={typeof label === 'string' ? label : undefined} {...props}>\n {label ? (\n <div data-slot={'select-group-label'} aria-hidden={'true'} className={s['group-label']}>\n {label}\n </div>\n ) : null}\n {children}\n </div>\n );\n}\n\nfunction SelectValue({\n children,\n placeholder,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement> & { placeholder?: React.ReactNode }) {\n const context = useSelectContext('SelectValue');\n const content = children ?? context.selectedLabel ?? placeholder;\n\n return (\n <span data-slot={'select-value'} {...props}>\n {content}\n </span>\n );\n}\n\nfunction SelectTrigger({\n className,\n children,\n onClick,\n onKeyDown,\n type,\n ...props\n}: React.ButtonHTMLAttributes<HTMLButtonElement>) {\n const context = useSelectContext('SelectTrigger');\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n\n if (event.defaultPrevented || context.disabled) {\n return;\n }\n\n context.setOpen(!context.open);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented || context.disabled) {\n return;\n }\n\n if (\n event.key === 'Enter' ||\n event.key === ' ' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n ) {\n event.preventDefault();\n context.setOpen(true);\n }\n\n // Only claim Escape when the surface is actually open — an unguarded\n // preventDefault would swallow it from an enclosing Dialog/Sheet.\n if (event.key === 'Escape' && context.open) {\n event.preventDefault();\n context.setOpen(false);\n }\n };\n\n return (\n <button\n ref={context.triggerRef}\n data-slot={'select-trigger'}\n type={type ?? 'button'}\n aria-controls={context.contentId}\n aria-expanded={context.open}\n aria-haspopup={'listbox'}\n disabled={context.disabled}\n className={cn(s.trigger, className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n <ChevronDownIcon className={cn(s['trigger-icon'])} />\n </button>\n );\n}\n\nfunction SelectContent({\n align = 'start',\n className,\n children,\n collisionPadding = DEFAULT_COLLISION_PADDING,\n onKeyDown,\n position = 'popper',\n side = 'bottom',\n sideOffset = 4,\n ...props\n}: SelectContentProps) {\n const context = useSelectContext('SelectContent');\n\n React.useEffect(() => {\n if (!context.open) {\n const content = context.contentRef.current;\n\n if (content) {\n content.style.maxWidth = '';\n }\n\n return;\n }\n\n const frame = requestAnimationFrame(() => {\n const content = context.contentRef.current;\n\n const triggerHasInput = context.triggerRef.current?.querySelector('input') != null;\n if (!triggerHasInput && !content?.querySelector('input')) {\n focusItemByValue(context.viewportRef.current, 'select-item', context.value);\n }\n });\n\n return () => cancelAnimationFrame(frame);\n }, [context.open, context.value, context.contentRef, context.viewportRef, context.triggerRef]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n context.setOpen(false);\n context.triggerRef.current?.focus();\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n moveItemFocus(context.viewportRef.current, 'select-item', 'next');\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n moveItemFocus(context.viewportRef.current, 'select-item', 'prev');\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n moveItemFocus(context.viewportRef.current, 'select-item', 'first');\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n moveItemFocus(context.viewportRef.current, 'select-item', 'last');\n }\n };\n\n return (\n <Surface\n data-slot={'select-content'}\n open={context.open}\n displayOpen={context.displayOpen}\n isClosing={context.isClosing}\n triggerRef={context.triggerRef as React.MutableRefObject<HTMLElement | null>}\n contentRef={context.contentRef}\n align={align}\n side={side}\n sideOffset={sideOffset}\n collisionPadding={collisionPadding}\n position={position}\n className={cn(s.content, className)}\n onKeyDown={handleKeyDown}\n {...props}\n >\n <div\n ref={context.viewportRef}\n className={cn(s.viewport, position === 'popper' && s['viewport-popper'])}\n id={context.contentId}\n role={'listbox'}\n >\n {children}\n </div>\n </Surface>\n );\n}\n\nfunction SelectItem({\n className,\n children,\n disabled = false,\n onClick,\n onMouseMove,\n value,\n ...props\n}: React.ButtonHTMLAttributes<HTMLButtonElement> & { value: string }) {\n const context = useSelectContext('SelectItem');\n const selected = context.value === value;\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n\n if (event.defaultPrevented || disabled) {\n return;\n }\n\n context.setValue(value);\n };\n\n const handleMouseMove = (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseMove?.(event);\n\n if (disabled) {\n return;\n }\n\n event.currentTarget.focus();\n };\n\n return (\n <button\n data-slot={'select-item'}\n data-value={value}\n data-disabled={disabled ? 'true' : undefined}\n type={'button'}\n role={'option'}\n aria-selected={selected}\n disabled={disabled}\n tabIndex={-1}\n className={cn(s.item, className)}\n onClick={handleClick}\n onMouseMove={handleMouseMove}\n {...props}\n >\n <span className={s['item-indicator']}>{selected ? <CheckIcon /> : null}</span>\n <span>{children}</span>\n </button>\n );\n}\n\nfunction SelectSeparator({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div data-slot={'select-separator'} className={cn(s.separator, className)} {...props} />;\n}\n\nfunction SelectInputTrigger({\n className,\n id,\n onBlur,\n onFocus,\n placeholder,\n searchQuery,\n setSearchQuery,\n ...props\n}: Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value'> & {\n searchQuery: string;\n setSearchQuery: React.Dispatch<React.SetStateAction<string>>;\n}) {\n const context = useSelectContext('SelectInputTrigger');\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n\n const setWrapperRef = React.useCallback(\n (el: HTMLDivElement | null) => {\n (context.triggerRef as React.MutableRefObject<HTMLElement | null>).current = el;\n },\n [context.triggerRef],\n );\n\n const displayValue = context.open ? searchQuery : (context.selectedLabel ?? '');\n\n React.useEffect(() => {\n if (context.open) {\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n }\n }, [context.open]);\n\n const handleClick = () => {\n if (!context.disabled) {\n context.setOpen(true);\n }\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!context.open) {\n const nativeEvent = event.nativeEvent as InputEvent;\n setSearchQuery(nativeEvent.data ?? '');\n context.setOpen(true);\n } else {\n setSearchQuery(event.target.value);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (context.disabled) {\n return;\n }\n\n if ((event.key === 'Backspace' || event.key === 'Delete') && !context.open) {\n event.preventDefault();\n return;\n }\n\n if (event.key === ' ' && !context.open) {\n event.preventDefault();\n context.setOpen(true);\n return;\n }\n\n if (event.key === 'Escape' && context.open) {\n event.preventDefault();\n context.setOpen(false);\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (!context.open) {\n context.setOpen(true);\n }\n\n requestAnimationFrame(() => {\n moveItemFocus(context.viewportRef.current, 'select-item', 'next');\n });\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (!context.open) {\n context.setOpen(true);\n }\n\n requestAnimationFrame(() => {\n moveItemFocus(context.viewportRef.current, 'select-item', 'prev');\n });\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (!context.open) {\n context.setOpen(true);\n } else if (searchQuery) {\n const firstItem = context.viewportRef.current?.querySelector(\n '[data-slot=\"select-item\"]:not([data-disabled=\"true\"])',\n ) as HTMLButtonElement | null;\n firstItem?.click();\n }\n return;\n }\n\n if (!context.open && event.key.length === 1 && !event.ctrlKey && !event.metaKey) {\n context.setOpen(true);\n }\n };\n\n return (\n <div\n ref={setWrapperRef}\n tabIndex={-1}\n className={cn(s.trigger, s['input-trigger'], className)}\n onClick={handleClick}\n onFocus={event => {\n if (event.target === event.currentTarget) {\n inputRef.current?.focus();\n }\n }}\n >\n <input\n ref={inputRef}\n id={id}\n type={'text'}\n value={displayValue}\n placeholder={placeholder}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n disabled={context.disabled}\n aria-controls={context.contentId}\n aria-expanded={context.open}\n aria-haspopup={'listbox'}\n className={s['search-trigger-input']}\n autoComplete={'off'}\n {...props}\n />\n <ChevronDownIcon className={cn(s['trigger-icon'])} />\n </div>\n );\n}\n\ntype SharedSelectFieldProps = {\n contentProps?: SelectFieldProps['contentProps'];\n error: boolean;\n fieldClassName?: string;\n filteredItems: SelectChildElement[];\n getItemText: (child: SelectChildElement) => string;\n helperText?: React.ReactNode;\n isFocused: boolean;\n isRequired: boolean;\n label?: React.ReactNode;\n labelRef: React.MutableRefObject<HTMLLabelElement | null>;\n minWidth?: number;\n placeholder?: string;\n resolvedSize: 'sm' | 'md';\n searchable: boolean;\n selectableItems: SelectChildElement[];\n searchQuery: string;\n setIsFocused: React.Dispatch<React.SetStateAction<boolean>>;\n setSearchQuery: React.Dispatch<React.SetStateAction<string>>;\n triggerId: string;\n};\n\ntype MultiSelectFieldInternalProps = Extract<SelectFieldProps, { multiple: true }> &\n SharedSelectFieldProps;\n\nfunction MultiSelectField({\n contentProps,\n defaultOpen,\n defaultValue,\n disabled = false,\n error,\n fieldClassName,\n filteredItems,\n getItemText,\n helperText,\n isFocused,\n isRequired,\n label,\n labelRef,\n minWidth,\n name,\n onOpenChange,\n onValueChange,\n open: openProp,\n placeholder,\n resolvedSize,\n searchable,\n selectableItems,\n searchQuery,\n setIsFocused,\n setSearchQuery,\n triggerId,\n value,\n}: MultiSelectFieldInternalProps) {\n const triggerRef = React.useRef<HTMLElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const viewportRef = React.useRef<HTMLDivElement | null>(null);\n const closeTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const isOpenControlled = openProp !== undefined;\n const isValueControlled = value !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue ?? []);\n const [isClosing, setIsClosing] = React.useState(false);\n const currentOpen = isOpenControlled ? openProp : uncontrolledOpen;\n const currentValue = isValueControlled ? value : uncontrolledValue;\n const displayOpen = currentOpen || isClosing;\n const selectedLabels = selectableItems\n .filter(child => currentValue.includes(String(child.props.value)))\n .map(getItemText)\n .filter(Boolean);\n const hasValue = currentValue.length > 0;\n\n const clearCloseTimer = React.useCallback(() => {\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (nextOpen) {\n clearCloseTimer();\n setIsClosing(false);\n\n if (!isOpenControlled) {\n setUncontrolledOpen(true);\n }\n\n onOpenChange?.(true);\n return;\n }\n\n onOpenChange?.(false);\n if (!isOpenControlled) {\n setUncontrolledOpen(false);\n }\n\n setIsClosing(true);\n clearCloseTimer();\n closeTimerRef.current = setTimeout(() => {\n setIsClosing(false);\n }, SELECT_ANIMATION_DURATION);\n },\n [clearCloseTimer, isOpenControlled, onOpenChange],\n );\n\n const setValues = React.useCallback(\n (nextValue: string[]) => {\n if (!isValueControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onValueChange?.(nextValue);\n },\n [isValueControlled, onValueChange],\n );\n\n useDismissibleLayer({\n contentRef,\n onDismiss: () => setOpen(false),\n open: currentOpen,\n triggerRef: triggerRef as React.MutableRefObject<HTMLElement | null>,\n });\n\n React.useEffect(() => {\n if (!displayOpen) {\n setSearchQuery('');\n }\n }, [displayOpen, setSearchQuery]);\n\n React.useEffect(() => {\n return () => clearCloseTimer();\n }, [clearCloseTimer]);\n\n React.useEffect(() => {\n if (!currentOpen) {\n const content = contentRef.current;\n\n if (content) {\n content.style.maxWidth = '';\n }\n\n return;\n }\n\n const frame = requestAnimationFrame(() => {\n const content = contentRef.current;\n\n const triggerHasInput = triggerRef.current?.querySelector('input') != null;\n if (!triggerHasInput && !content?.querySelector('input')) {\n focusItemByValue(viewportRef.current, 'select-multi-item', currentValue[0]);\n }\n });\n\n return () => cancelAnimationFrame(frame);\n }, [currentOpen, currentValue]);\n\n React.useEffect(() => {\n if (searchable && currentOpen) {\n requestAnimationFrame(() => {\n const input = triggerRef.current?.querySelector('input');\n input?.focus();\n });\n }\n }, [currentOpen, searchable]);\n\n const containerClasses = cn(\n inputStyles.container,\n inputStyles[resolvedSize],\n { [inputStyles.error]: error },\n { [inputStyles.disabled]: disabled },\n { [inputStyles.placeholder]: placeholder },\n { [inputStyles['has-value']]: hasValue },\n { [inputStyles['is-focused']]: isFocused || currentOpen || isClosing },\n fieldClassName,\n );\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (searchable) {\n const input = triggerRef.current?.querySelector('input');\n\n if (document.activeElement !== input) {\n if (event.key === 'Backspace') {\n event.preventDefault();\n setSearchQuery(prev => prev.slice(0, -1));\n input?.focus();\n return;\n }\n\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n event.preventDefault();\n setSearchQuery(prev => prev + event.key);\n input?.focus();\n return;\n }\n }\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n setOpen(false);\n const input = triggerRef.current?.querySelector('input');\n (input ?? triggerRef.current)?.focus();\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n moveItemFocus(viewportRef.current, 'select-multi-item', 'next');\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n moveItemFocus(viewportRef.current, 'select-multi-item', 'prev');\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n moveItemFocus(viewportRef.current, 'select-multi-item', 'first');\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n moveItemFocus(viewportRef.current, 'select-multi-item', 'last');\n }\n };\n\n return (\n <>\n <div\n data-constellation-field\n className={containerClasses}\n style={minWidth ? { minWidth: Math.max(minWidth, 140) } : undefined}\n >\n <div className={inputStyles['input-container']}>\n <div className={inputStyles['label-container']}>\n <Label htmlFor={triggerId} ref={labelRef}>\n {label}\n {isRequired && <span className={inputStyles.required}>*</span>}\n </Label>\n </div>\n {searchable ? (\n <div\n ref={triggerRef as React.MutableRefObject<HTMLDivElement | null>}\n tabIndex={-1}\n className={cn(s.trigger, s['input-trigger'])}\n data-placeholder={!hasValue ? 'true' : undefined}\n onClick={() => {\n if (!currentOpen) {\n setOpen(true);\n }\n }}\n onFocus={event => {\n if (event.target === event.currentTarget) {\n triggerRef.current?.querySelector('input')?.focus();\n }\n }}\n >\n <input\n id={triggerId}\n type={'text'}\n value={currentOpen ? searchQuery : hasValue ? selectedLabels.join(', ') : ''}\n placeholder={placeholder}\n aria-expanded={currentOpen}\n aria-haspopup={'listbox'}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={helperText ? `${triggerId}-helper` : undefined}\n disabled={disabled}\n className={s['search-trigger-input']}\n autoComplete={'off'}\n onChange={event => {\n if (!currentOpen) {\n const nativeEvent = event.nativeEvent as InputEvent;\n setSearchQuery(nativeEvent.data ?? '');\n setOpen(true);\n } else {\n setSearchQuery(event.target.value);\n }\n }}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={event => {\n if ((event.key === 'Backspace' || event.key === 'Delete') && !currentOpen) {\n event.preventDefault();\n return;\n }\n\n if (event.key === ' ' && !currentOpen) {\n event.preventDefault();\n setOpen(true);\n return;\n }\n\n if (event.key === 'Escape' && currentOpen) {\n event.preventDefault();\n setOpen(false);\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (!currentOpen) {\n setOpen(true);\n }\n\n requestAnimationFrame(() => {\n moveItemFocus(viewportRef.current, 'select-multi-item', 'next');\n });\n return;\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n\n if (!currentOpen) {\n setOpen(true);\n }\n\n requestAnimationFrame(() => {\n moveItemFocus(viewportRef.current, 'select-multi-item', 'prev');\n });\n return;\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n\n if (!currentOpen) {\n setOpen(true);\n }\n return;\n }\n\n if (!currentOpen && event.key.length === 1 && !event.ctrlKey && !event.metaKey) {\n setOpen(true);\n }\n }}\n />\n <ChevronDownIcon className={s['trigger-icon']} />\n </div>\n ) : (\n <button\n ref={triggerRef as React.MutableRefObject<HTMLButtonElement | null>}\n id={triggerId}\n type={'button'}\n aria-expanded={currentOpen}\n aria-haspopup={'listbox'}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={helperText ? `${triggerId}-helper` : undefined}\n disabled={disabled}\n className={cn(s.trigger, s['input-trigger'])}\n data-placeholder={!hasValue ? 'true' : undefined}\n onClick={() => setOpen(!currentOpen)}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={event => {\n if (\n event.key === 'Enter' ||\n event.key === ' ' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp'\n ) {\n event.preventDefault();\n setOpen(true);\n }\n }}\n >\n <span className={s['trigger-value']}>\n {hasValue ? selectedLabels.join(', ') : placeholder}\n </span>\n <ChevronDownIcon className={s['trigger-icon']} />\n </button>\n )}\n </div>\n {helperText ? (\n <Typography\n id={`${triggerId}-helper`}\n variant={'caption'}\n className={inputStyles['helper-text']}\n >\n {helperText}\n </Typography>\n ) : null}\n {name\n ? currentValue.map(itemValue => (\n <input key={itemValue} type={'hidden'} name={name} value={itemValue} />\n ))\n : null}\n </div>\n <Surface\n data-slot={'select-content'}\n open={currentOpen}\n displayOpen={displayOpen}\n isClosing={isClosing}\n triggerRef={triggerRef as React.MutableRefObject<HTMLElement | null>}\n contentRef={contentRef}\n align={contentProps?.align}\n side={contentProps?.side}\n sideOffset={contentProps?.sideOffset}\n collisionPadding={contentProps?.collisionPadding ?? DEFAULT_COLLISION_PADDING}\n className={cn(s.content, s['multi-content'], contentProps?.className)}\n onKeyDown={handleKeyDown}\n >\n <div ref={viewportRef} className={cn(s.viewport, s['multi-options'])} role={'listbox'}>\n {filteredItems.map(child => {\n const itemValue = String(child.props.value);\n const checked = currentValue.includes(itemValue);\n\n return (\n <button\n key={itemValue}\n data-slot={'select-multi-item'}\n data-value={itemValue}\n data-disabled={child.props.disabled ? 'true' : undefined}\n type={'button'}\n role={'option'}\n aria-selected={checked}\n disabled={child.props.disabled}\n tabIndex={-1}\n className={cn(s.item, s['multi-item'])}\n onClick={() =>\n setValues(\n checked\n ? currentValue.filter(currentItem => currentItem !== itemValue)\n : [...currentValue, itemValue],\n )\n }\n onMouseMove={event => {\n if (!child.props.disabled) {\n event.currentTarget.focus();\n }\n }}\n >\n <span className={s['item-indicator']}>{checked ? <CheckIcon /> : null}</span>\n <span>{child.props.children}</span>\n </button>\n );\n })}\n </div>\n </Surface>\n </>\n );\n}\n\nfunction SelectField(props: SelectFieldProps) {\n const {\n label,\n helperText,\n error = false,\n placeholder,\n children,\n fieldClassName,\n contentProps,\n id,\n sizeVariant,\n searchThreshold = DEFAULT_SEARCH_THRESHOLD,\n } = props;\n const generatedId = React.useId();\n const triggerId = id ?? generatedId;\n const { isBelow } = useBreakpoint();\n const resolvedSize = sizeVariant ?? (isBelow(900) ? 'sm' : 'md');\n const [isFocused, setIsFocused] = React.useState(false);\n const [isOpen, setIsOpen] = React.useState(false);\n const [searchQuery, setSearchQuery] = React.useState('');\n const [minWidth, setMinWidth] = React.useState<number | undefined>(undefined);\n const labelRef = React.useRef<HTMLLabelElement | null>(null);\n const childArray = React.useMemo(\n () =>\n React.Children.toArray(children).filter((child): child is SelectChildElement =>\n React.isValidElement(child),\n ),\n [children],\n );\n const selectableItems = React.useMemo(\n () => childArray.filter(child => child.props.value !== undefined),\n [childArray],\n );\n const searchable = selectableItems.length >= searchThreshold;\n const getItemText = React.useCallback((child: SelectChildElement) => {\n return readNodeText(child.props.children).trim();\n }, []);\n\n const matchesQuery = React.useCallback(\n (child: SelectChildElement) => {\n if (!searchQuery) {\n return true;\n }\n\n return getItemText(child).toLowerCase().includes(searchQuery.toLowerCase());\n },\n [getItemText, searchQuery],\n );\n\n const filteredItems = React.useMemo(() => {\n if (!searchQuery) {\n return selectableItems;\n }\n\n return selectableItems.filter(matchesQuery);\n }, [matchesQuery, searchQuery, selectableItems]);\n\n React.useLayoutEffect(() => {\n if (!label) {\n setMinWidth(undefined);\n return;\n }\n\n const labelElement = labelRef.current;\n\n if (!labelElement) {\n return;\n }\n\n const updateMinWidth = () => {\n const labelWidth = labelElement.getBoundingClientRect().width;\n const iconWidth = 16;\n const horizontalPadding = resolvedSize === 'sm' ? 20 : 24;\n const computedWidth = Math.ceil(labelWidth + iconWidth + horizontalPadding);\n setMinWidth(Math.max(computedWidth, 0));\n };\n\n updateMinWidth();\n\n const resizeObserver = new ResizeObserver(updateMinWidth);\n resizeObserver.observe(labelElement);\n\n return () => resizeObserver.disconnect();\n }, [label, resolvedSize]);\n\n const ariaRequired = props['aria-required'];\n const isRequired = Boolean(ariaRequired || props.required);\n const baseSelectProps = {\n open: props.open,\n defaultOpen: props.defaultOpen,\n onOpenChange: props.onOpenChange,\n disabled: props.disabled,\n required: props.required,\n name: props.name,\n };\n\n if (props.multiple) {\n return (\n <MultiSelectField\n {...props}\n contentProps={contentProps}\n error={error}\n fieldClassName={fieldClassName}\n filteredItems={filteredItems}\n getItemText={getItemText}\n helperText={helperText}\n isFocused={isFocused}\n isRequired={isRequired}\n label={label}\n labelRef={labelRef}\n minWidth={minWidth}\n placeholder={placeholder}\n resolvedSize={resolvedSize}\n searchable={searchable}\n selectableItems={selectableItems}\n searchQuery={searchQuery}\n setIsFocused={setIsFocused}\n setSearchQuery={setSearchQuery}\n triggerId={triggerId}\n />\n );\n }\n\n const { value, defaultValue, onValueChange } = props;\n\n const handleContentKeyDown = searchable\n ? (event: React.KeyboardEvent<HTMLDivElement>) => {\n const triggerInput = document.getElementById(triggerId);\n\n if (triggerInput instanceof HTMLInputElement && document.activeElement !== triggerInput) {\n if (event.key === 'Backspace') {\n event.preventDefault();\n setSearchQuery(prev => prev.slice(0, -1));\n triggerInput.focus();\n return;\n }\n\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n event.preventDefault();\n setSearchQuery(prev => prev + event.key);\n triggerInput.focus();\n return;\n }\n }\n }\n : undefined;\n\n return (\n <Select\n {...baseSelectProps}\n onOpenChange={nextOpen => {\n props.onOpenChange?.(nextOpen);\n setIsOpen(nextOpen);\n\n if (!nextOpen) {\n setSearchQuery('');\n }\n }}\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n >\n <div\n data-constellation-field\n className={cn(\n inputStyles.container,\n inputStyles[resolvedSize],\n { [inputStyles.error]: error },\n { [inputStyles.disabled]: props.disabled },\n { [inputStyles.placeholder]: placeholder },\n { [inputStyles['has-value']]: Boolean(value ?? defaultValue) },\n { [inputStyles['is-focused']]: isFocused || isOpen },\n fieldClassName,\n )}\n style={minWidth ? { minWidth: Math.max(minWidth, 140) } : undefined}\n >\n <div className={inputStyles['input-container']}>\n <div className={inputStyles['label-container']}>\n <Label htmlFor={triggerId} ref={labelRef}>\n {label}\n {isRequired && <span className={inputStyles.required}>*</span>}\n </Label>\n </div>\n {searchable ? (\n <SelectInputTrigger\n id={triggerId}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={helperText ? `${triggerId}-helper` : undefined}\n placeholder={placeholder}\n searchQuery={searchQuery}\n setSearchQuery={setSearchQuery}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n />\n ) : (\n <SelectTrigger\n id={triggerId}\n aria-invalid={error ? 'true' : undefined}\n aria-describedby={helperText ? `${triggerId}-helper` : undefined}\n className={s['input-trigger']}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n )}\n </div>\n {helperText ? (\n <Typography\n id={`${triggerId}-helper`}\n variant={'caption'}\n className={inputStyles['helper-text']}\n >\n {helperText}\n </Typography>\n ) : null}\n </div>\n <SelectContent {...contentProps} onKeyDown={handleContentKeyDown}>\n {searchQuery ? filteredItems : childArray}\n </SelectContent>\n </Select>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectField,\n SelectGroup,\n SelectItem,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './select.css';
|
|
2
2
|
|
|
3
|
-
var s = {"trigger":"select-module_trigger__qCGcl","trigger-value":"select-module_trigger-value__Vae0v","input-trigger":"select-module_input-trigger__hbH53","trigger-icon":"select-module_trigger-icon__qRRBP","content":"select-module_content__YXA6X","multi-content":"select-module_multi-content__gWNO1","viewport":"select-module_viewport__i2aSN","viewport-popper":"select-module_viewport-popper__KXAMM","item":"select-module_item__y1wex","search-trigger-input":"select-module_search-trigger-input__23K3U","multi-options":"select-module_multi-options__aQkaR","multi-item":"select-module_multi-item__S1Ykf","item-indicator":"select-module_item-indicator__m89G1","separator":"select-module_separator__aPMWg"};
|
|
3
|
+
var s = {"trigger":"select-module_trigger__qCGcl","trigger-value":"select-module_trigger-value__Vae0v","input-trigger":"select-module_input-trigger__hbH53","trigger-icon":"select-module_trigger-icon__qRRBP","content":"select-module_content__YXA6X","multi-content":"select-module_multi-content__gWNO1","viewport":"select-module_viewport__i2aSN","viewport-popper":"select-module_viewport-popper__KXAMM","item":"select-module_item__y1wex","search-trigger-input":"select-module_search-trigger-input__23K3U","multi-options":"select-module_multi-options__aQkaR","multi-item":"select-module_multi-item__S1Ykf","item-indicator":"select-module_item-indicator__m89G1","group-label":"select-module_group-label__J50K8","separator":"select-module_separator__aPMWg"};
|
|
4
4
|
|
|
5
5
|
export { s as default };
|
|
6
6
|
//# sourceMappingURL=select.module.scss.js.map
|
package/dist/form.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { C as Checkbox, a as CheckboxProps, D as DatePicker, L as Label, c as LabelProps, S as Select, e as SelectContent, g as SelectField, i as SelectGroup, j as SelectItem, m as SelectSeparator, o as SelectTrigger, p as SelectValue } from './index-
|
|
2
|
-
export { I as Input, a as InputBaseProps } from './input-
|
|
1
|
+
export { C as Checkbox, a as CheckboxProps, D as DatePicker, L as Label, c as LabelProps, S as Select, e as SelectContent, g as SelectField, i as SelectGroup, j as SelectItem, m as SelectSeparator, o as SelectTrigger, p as SelectValue } from './index-CRrCqjAW.js';
|
|
2
|
+
export { I as Input, a as InputBaseProps } from './input-Cp5LET5i.js';
|
|
3
3
|
import 'react';
|
|
4
4
|
import 'class-variance-authority';
|
|
5
5
|
import 'class-variance-authority/types';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import React__default from 'react';
|
|
3
|
-
import './input-
|
|
3
|
+
import './input-Cp5LET5i.js';
|
|
4
4
|
import { VariantProps } from 'class-variance-authority';
|
|
5
5
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
6
6
|
|
|
@@ -95,7 +95,7 @@ declare function DatePicker({ value: valueProp, defaultValue, onChange, label, h
|
|
|
95
95
|
|
|
96
96
|
declare const labelVariants: (props?: ({
|
|
97
97
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
98
|
-
theme?: "
|
|
98
|
+
theme?: "primary" | "secondary" | "destructive" | "success" | "warning" | "info" | "slate" | "inherit" | null | undefined;
|
|
99
99
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
100
100
|
|
|
101
101
|
interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement>, VariantProps<typeof labelVariants> {
|
|
@@ -104,7 +104,17 @@ interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement>, Varian
|
|
|
104
104
|
declare const Label: React.ForwardRefExoticComponent<LabelProps & React.RefAttributes<HTMLLabelElement>>;
|
|
105
105
|
|
|
106
106
|
declare function Select({ open: openProp, defaultOpen, onOpenChange, value: valueProp, defaultValue, onValueChange, disabled, children, ...props }: SelectProps): React.JSX.Element;
|
|
107
|
-
|
|
107
|
+
/**
|
|
108
|
+
* A titled run of options — the `<optgroup>` of this select.
|
|
109
|
+
*
|
|
110
|
+
* The heading is presentational and never focusable: it names the run, it is
|
|
111
|
+
* not a thing you can pick. Labelling the group with `aria-label` rather than
|
|
112
|
+
* pointing at the heading keeps it out of the option list for a screen reader
|
|
113
|
+
* too.
|
|
114
|
+
*/
|
|
115
|
+
declare function SelectGroup({ label, children, ...props }: React.HTMLAttributes<HTMLDivElement> & {
|
|
116
|
+
label?: React.ReactNode;
|
|
117
|
+
}): React.JSX.Element;
|
|
108
118
|
declare function SelectValue({ children, placeholder, ...props }: React.HTMLAttributes<HTMLSpanElement> & {
|
|
109
119
|
placeholder?: React.ReactNode;
|
|
110
120
|
}): React.JSX.Element;
|
|
@@ -2,8 +2,8 @@ import * as React from 'react';
|
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { d as SidebarSection, S as SidebarNavItem, B as BreadcrumbItemData, c as NavUserProps } from './nav-user-CJIcWKyY.js';
|
|
4
4
|
import { R as RowProps } from './row-CS9-talZ.js';
|
|
5
|
-
import { I as Input } from './input-
|
|
6
|
-
import { b as TooltipContent, B as Button } from './tooltip-
|
|
5
|
+
import { I as Input } from './input-Cp5LET5i.js';
|
|
6
|
+
import { b as TooltipContent, B as Button } from './tooltip-cjwkBINy.js';
|
|
7
7
|
import { VariantProps } from 'class-variance-authority';
|
|
8
8
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
9
9
|
|
|
@@ -27,6 +27,8 @@ interface ContainerProps extends React__default.HTMLAttributes<HTMLDivElement> {
|
|
|
27
27
|
full?: boolean;
|
|
28
28
|
rounded?: boolean | 'extra';
|
|
29
29
|
outlined?: boolean;
|
|
30
|
+
/** A border colour outside the theme scale; pairs with `outlined`. */
|
|
31
|
+
color?: string;
|
|
30
32
|
theme?: 'primary' | 'secondary' | 'success' | 'destructive' | 'warning' | 'info' | 'slate' | 'light-slate';
|
|
31
33
|
elevation?: number;
|
|
32
34
|
padding?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 'xl' | 'lg' | 'md' | 'sm' | 'none';
|