@kenos-ui/react-select 0.2.1 → 0.2.3

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.parts.ts","../src/store.ts","../src/context.ts","../src/utils/extract-items.ts","../src/utils/scroll-to-index.ts","../src/root/SelectRoot.tsx","../src/label/SelectLabel.tsx","../src/trigger/SelectTrigger.tsx","../src/utils/labels.ts","../src/value/SelectValue.tsx","../src/icon/SelectIcon.tsx","../src/positioner/PositionerContext.ts","../src/portal/SelectPortal.tsx","../src/utils/align-with-trigger.ts","../src/utils/use-align-item-with-trigger.ts","../src/content/SelectContent.tsx","../src/positioner/SelectPositioner.tsx","../src/backdrop/SelectBackdrop.tsx","../src/clear-trigger/SelectClearTrigger.tsx","../src/list/SelectList.tsx","../src/item/SelectItem.tsx","../src/item-text/SelectItemText.tsx","../src/item-indicator/SelectItemIndicator.tsx","../src/group/GroupContext.ts","../src/group/SelectGroup.tsx","../src/group-label/SelectGroupLabel.tsx","../src/hidden-select/SelectHiddenSelect.tsx","../src/utils/use-list-scroll-overflow.ts","../src/scroll-button/SelectScrollButton.tsx","../src/scroll-up-button/SelectScrollUpButton.tsx","../src/scroll-down-button/SelectScrollDownButton.tsx"],"names":["useSyncExternalStore","useCallback","createContext","useContext","Children","isValidElement","useId","useMemo","useRef","useEffect","restoreFocus","jsx","createPortal","useState","useLayoutEffect","useFloating","usePresence","useClickOutside","useEscapeKey","useFocusTrap","useListNavigation","useTypeahead","jsxs"],"mappings":"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","file":"index.cjs","sourcesContent":["// Parts barrel — exported as the `Select` namespace.\n// packages/select/src/index.parts.ts\n\nexport { Root } from \"./root/SelectRoot\";\nexport { Label } from \"./label/SelectLabel\";\nexport { Trigger } from \"./trigger/SelectTrigger\";\nexport { Value } from \"./value/SelectValue\";\nexport { Icon } from \"./icon/SelectIcon\";\nexport { Content } from \"./content/SelectContent\";\nexport { Portal } from \"./portal/SelectPortal\";\nexport { Positioner } from \"./positioner/SelectPositioner\";\nexport { Backdrop } from \"./backdrop/SelectBackdrop\";\nexport { ClearTrigger } from \"./clear-trigger/SelectClearTrigger\";\nexport { List } from \"./list/SelectList\";\nexport { Item } from \"./item/SelectItem\";\nexport { ItemText } from \"./item-text/SelectItemText\";\nexport { ItemIndicator } from \"./item-indicator/SelectItemIndicator\";\nexport { Group } from \"./group/SelectGroup\";\nexport { GroupLabel } from \"./group-label/SelectGroupLabel\";\nexport { HiddenSelect } from \"./hidden-select/SelectHiddenSelect\";\nexport { ScrollUpButton } from \"./scroll-up-button/SelectScrollUpButton\";\nexport { ScrollDownButton } from \"./scroll-down-button/SelectScrollDownButton\";\n","import { useSyncExternalStore, useCallback, useRef } from \"react\";\nimport type { SelectItemEqualFn, SelectStoreState, SelectItemRecord } from \"./types\";\n\n// ── SelectStore ────────────────────────────────────────────────────────────\n\ntype Listener = () => void;\n\nfunction arraysEqual(a: string[], b: string[]): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\nexport class SelectStore {\n private state: SelectStoreState;\n private listeners = new Set<Listener>();\n\n constructor(initial: Partial<SelectStoreState> = {}) {\n this.state = {\n open: false,\n openSource: null,\n value: null,\n highlightedValue: null,\n items: new Map(),\n ...initial,\n };\n }\n\n getState(): SelectStoreState {\n return this.state;\n }\n\n subscribe(listener: Listener): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n private notify(): void {\n for (const listener of this.listeners) {\n listener();\n }\n }\n\n // ── Mutations ────────────────────────────────────────────────────────────\n\n setOpen(open: boolean, source: \"trigger\" | null = null): void {\n if (this.state.open === open) return;\n this.state = {\n ...this.state,\n open,\n openSource: open ? source : null,\n // Reset highlight when closing\n highlightedValue: open ? this.state.highlightedValue : null,\n };\n this.notify();\n }\n\n setValue(value: string | null): void {\n if (this.state.value === value) return;\n this.state = { ...this.state, value };\n this.notify();\n }\n\n setValues(values: string[]): void {\n const current = this.state.value;\n if (Array.isArray(current) && arraysEqual(current, values)) return;\n this.state = { ...this.state, value: values };\n this.notify();\n }\n\n toggleValue(value: string, comparator: SelectItemEqualFn): void {\n const current = this.state.value;\n const next = Array.isArray(current) ? [...current] : [];\n const index = next.findIndex((item) => comparator(item, value));\n\n if (index >= 0) {\n next.splice(index, 1);\n } else {\n next.push(value);\n }\n\n if (Array.isArray(current) && arraysEqual(current, next)) return;\n\n this.state = { ...this.state, value: next };\n this.notify();\n }\n\n clearValue(multiple: boolean): void {\n const next = multiple ? [] : null;\n const current = this.state.value;\n\n if (multiple) {\n if (Array.isArray(current) && current.length === 0) return;\n } else if (current === null) {\n return;\n }\n\n this.state = { ...this.state, value: next };\n this.notify();\n }\n\n isSelected(value: string, multiple: boolean, comparator: SelectItemEqualFn): boolean {\n const current = this.state.value;\n\n if (multiple) {\n return Array.isArray(current) && current.some((item) => comparator(item, value));\n }\n\n return typeof current === \"string\" && comparator(current, value);\n }\n\n setHighlightedValue(value: string | null): void {\n if (this.state.highlightedValue === value) return;\n this.state = { ...this.state, highlightedValue: value };\n this.notify();\n }\n\n registerItem(record: SelectItemRecord): void {\n const next = new Map(this.state.items);\n next.set(record.value, record);\n this.state = { ...this.state, items: next };\n this.notify();\n }\n\n unregisterItem(value: string): void {\n if (!this.state.items.has(value)) return;\n const next = new Map(this.state.items);\n next.delete(value);\n this.state = { ...this.state, items: next };\n this.notify();\n }\n\n updateItemRef(value: string, ref: HTMLElement | null): void {\n const item = this.state.items.get(value);\n if (!item || item.ref === ref) return;\n const next = new Map(this.state.items);\n next.set(value, { ...item, ref });\n this.state = { ...this.state, items: next };\n // Don't notify for ref updates — avoids render cascades\n }\n}\n\n// ── useSelectStore ─────────────────────────────────────────────────────────\n\n/**\n * Subscribe to a slice of the SelectStore.\n * Re-renders only when the selected slice changes (by reference).\n */\nexport function useSelectStore<T>(store: SelectStore, selector: (s: SelectStoreState) => T): T {\n return useSyncExternalStore(\n useCallback((cb) => store.subscribe(cb), [store]),\n () => selector(store.getState()),\n () => selector(store.getState()),\n );\n}\n\n// ── useSelectStoreRef ──────────────────────────────────────────────────────\n\n/**\n * Return a stable ref to the store's current state getter.\n * Useful for event handlers that need a snapshot without subscribing.\n */\nexport function useSelectStateRef(store: SelectStore): React.RefObject<SelectStoreState> {\n const ref = useRef(store.getState());\n // Keep in sync each render (no subscription overhead).\n ref.current = store.getState();\n return ref;\n}","import { createContext, useContext, type RefObject } from \"react\";\nimport type { SelectStore } from \"./store\";\nimport type { SelectItemEqualFn, ScrollToIndexOptions } from \"./types\";\n\nexport interface SelectRefs {\n triggerRef: RefObject<HTMLButtonElement | null>;\n contentRef: RefObject<HTMLDivElement | null>;\n listRef: RefObject<HTMLUListElement | null>;\n}\n\nexport interface SelectContextValue {\n store: SelectStore;\n ids: {\n root: string;\n label: string;\n trigger: string;\n content: string;\n };\n refs: SelectRefs;\n config: {\n disabled: boolean;\n required: boolean;\n readOnly: boolean;\n modal: boolean;\n name: string | undefined;\n multiple: boolean;\n items: Record<string, string>;\n isItemEqualToValue: SelectItemEqualFn;\n openOnFocus: boolean;\n };\n isControlledOpen: boolean;\n isControlledValue: boolean;\n onOpenChangeComplete: ((open: boolean) => void) | undefined;\n /** Close the listbox and restore focus to the trigger. */\n close: () => void;\n /** Select a value (toggle in multiple mode, set + close in single mode). */\n selectValue: (value: string) => void;\n /** Alias for selectValue — kept for backward compatibility. */\n selectAndClose: (value: string) => void;\n /** Clear the current selection. */\n clearValue: () => void;\n /** Scroll the list to the item at the given index. */\n scrollToIndex: (index: number, options?: ScrollToIndexOptions) => void;\n}\n\nexport const SelectContext = createContext<SelectContextValue | null>(null);\n\nexport function useSelectContext(): SelectContextValue {\n const ctx = useContext(SelectContext);\n if (!ctx) {\n throw new Error(\"Select compound components must be rendered inside <Select.Root>.\");\n }\n return ctx;\n}","import { Children, isValidElement, type ReactNode } from \"react\";\n\nfunction extractItemTextLabel(children: ReactNode): string | null {\n let label: string | null = null;\n\n Children.forEach(children, (child) => {\n if (label != null || !isValidElement(child)) return;\n\n const type = child.type as { displayName?: string; name?: string };\n const isItemText =\n type?.displayName === \"Select.ItemText\" || type?.name === \"ItemText\";\n\n if (isItemText) {\n const content = child.props.children;\n if (typeof content === \"string\" || typeof content === \"number\") {\n label = String(content);\n }\n return;\n }\n\n if (child.props?.children != null) {\n label = extractItemTextLabel(child.props.children);\n }\n });\n\n return label;\n}\n\nfunction isSelectItemElement(child: React.ReactElement): boolean {\n const type = child.type as { displayName?: string; name?: string };\n return type?.displayName === \"Select.Item\" || type?.name === \"Item\";\n}\n\n/** Walk the Root children tree and collect value→label pairs from Item/ItemText. */\nexport function extractItemsFromChildren(children: ReactNode): Record<string, string> {\n const items: Record<string, string> = {};\n\n const walk = (node: ReactNode): void => {\n Children.forEach(node, (child) => {\n if (!isValidElement(child)) return;\n\n if (isSelectItemElement(child)) {\n const value = child.props.value as string | undefined;\n const label = extractItemTextLabel(child.props.children) ?? value;\n if (value != null && label != null) {\n items[value] = label;\n }\n }\n\n if (child.props?.children != null) {\n walk(child.props.children);\n }\n });\n };\n\n walk(children);\n return items;\n}","import type { ScrollToIndexAlign, ScrollToIndexOptions, SelectStoreState } from \"../types\";\n\nfunction toScrollBlock(align: ScrollToIndexAlign): ScrollLogicalPosition {\n switch (align) {\n case \"start\":\n return \"start\";\n case \"end\":\n return \"end\";\n case \"center\":\n return \"center\";\n case \"nearest\":\n case \"auto\":\n default:\n return \"nearest\";\n }\n}\n\nexport function scrollToIndexInState(\n state: SelectStoreState,\n index: number,\n options: ScrollToIndexOptions = {},\n): void {\n const items = Array.from(state.items.values());\n const item = items[index];\n if (!item?.ref) return;\n\n item.ref.scrollIntoView({\n block: toScrollBlock(options.align ?? \"nearest\"),\n });\n}","import React, { useId, useMemo, useRef, useEffect, useCallback } from \"react\";\nimport { restoreFocus } from \"@kenos-ui/utils\";\nimport { SelectStore } from \"../store\";\nimport { SelectContext } from \"../context\";\nimport type { SelectRootProps } from \"../types\";\nimport { extractItemsFromChildren } from \"../utils/extract-items\";\nimport { scrollToIndexInState } from \"../utils/scroll-to-index\";\nimport type { ScrollToIndexOptions } from \"../types\";\n\nconst defaultIsItemEqualToValue = (a: string, b: string) => a === b;\n\nfunction valuesEqual(\n a: string | string[] | null | undefined,\n b: string | string[] | null | undefined,\n): boolean {\n if (a === b) return true;\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n return false;\n}\n\nexport function Root(props: SelectRootProps) {\n const {\n children,\n value,\n defaultValue,\n onValueChange,\n open,\n defaultOpen,\n onOpenChange,\n onOpenChangeComplete,\n name,\n disabled = false,\n required = false,\n readOnly = false,\n modal = false,\n id,\n items = {},\n isItemEqualToValue = defaultIsItemEqualToValue,\n multiple = false,\n openOnFocus = false,\n } = props;\n\n const uid = useId();\n const prefix = id ?? `sel-${uid.replace(/:/g, \"\")}`;\n\n const ids = useMemo(\n () => ({\n root: prefix,\n label: `${prefix}-label`,\n trigger: `${prefix}-trigger`,\n content: `${prefix}-content`,\n }),\n [prefix],\n );\n\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLUListElement | null>(null);\n\n const isControlledValue = value !== undefined;\n const isControlledOpen = open !== undefined;\n\n const initialValue = isControlledValue\n ? multiple\n ? (value ?? [])\n : (value ?? null)\n : multiple\n ? (defaultValue ?? [])\n : (defaultValue ?? null);\n\n const storeRef = useRef<SelectStore | null>(null);\n if (!storeRef.current) {\n storeRef.current = new SelectStore({\n value: initialValue,\n open: isControlledOpen ? (open ?? false) : (defaultOpen ?? false),\n });\n }\n const store = storeRef.current;\n\n const prevControlledValue = useRef(value);\n useEffect(() => {\n if (!isControlledValue) return;\n if (valuesEqual(value, prevControlledValue.current)) return;\n prevControlledValue.current = value;\n\n if (multiple) {\n store.setValues(Array.isArray(value) ? value : []);\n } else {\n store.setValue(typeof value === \"string\" ? value : null);\n }\n }, [isControlledValue, value, store, multiple]);\n\n const prevControlledOpen = useRef(open);\n useEffect(() => {\n if (!isControlledOpen) return;\n if (open === prevControlledOpen.current) return;\n prevControlledOpen.current = open;\n store.setOpen(open ?? false);\n }, [isControlledOpen, open, store]);\n\n const onValueChangeRef = useRef(onValueChange);\n onValueChangeRef.current = onValueChange;\n\n const prevStoreValue = useRef(store.getState().value);\n useEffect(() => {\n return store.subscribe(() => {\n const state = store.getState();\n if (!valuesEqual(state.value, prevStoreValue.current)) {\n prevStoreValue.current = state.value;\n if (multiple) {\n (onValueChangeRef.current as ((value: string[]) => void) | undefined)?.(\n Array.isArray(state.value) ? state.value : [],\n );\n } else {\n (onValueChangeRef.current as ((value: string | null) => void) | undefined)?.(\n typeof state.value === \"string\" ? state.value : null,\n );\n }\n }\n });\n }, [store, multiple]);\n\n const onOpenChangeRef = useRef(onOpenChange);\n onOpenChangeRef.current = onOpenChange;\n\n const prevStoreOpen = useRef(store.getState().open);\n useEffect(() => {\n return store.subscribe(() => {\n const state = store.getState();\n if (state.open !== prevStoreOpen.current) {\n prevStoreOpen.current = state.open;\n onOpenChangeRef.current?.(state.open);\n }\n });\n }, [store]);\n\n const close = useCallback(() => {\n const state = store.getState();\n if (!state.open) return;\n store.setOpen(false);\n restoreFocus({\n openSource: state.openSource ?? \"trigger\",\n trigger: triggerRef.current,\n });\n }, [store]);\n\n const selectValue = useCallback(\n (itemValue: string) => {\n if (multiple) {\n store.toggleValue(itemValue, isItemEqualToValue);\n return;\n }\n store.setValue(itemValue);\n close();\n },\n [store, close, multiple, isItemEqualToValue],\n );\n\n const clearValue = useCallback(() => {\n store.clearValue(multiple);\n }, [store, multiple]);\n\n const scrollToIndex = useCallback(\n (index: number, options?: ScrollToIndexOptions) => {\n scrollToIndexInState(store.getState(), index, options);\n },\n [store],\n );\n\n const discoveredItems = useMemo(() => extractItemsFromChildren(children), [children]);\n const mergedItems = useMemo(\n () => ({ ...discoveredItems, ...items }),\n [discoveredItems, items],\n );\n\n const config = useMemo(\n () => ({\n disabled,\n required,\n readOnly,\n modal,\n name,\n multiple,\n items: mergedItems,\n isItemEqualToValue,\n openOnFocus,\n }),\n [disabled, required, readOnly, modal, name, multiple, mergedItems, isItemEqualToValue, openOnFocus],\n );\n\n const ctx = useMemo(\n () => ({\n store,\n ids,\n refs: { triggerRef, contentRef, listRef },\n config,\n isControlledValue,\n isControlledOpen,\n onOpenChangeComplete,\n close,\n selectValue,\n selectAndClose: selectValue,\n clearValue,\n scrollToIndex,\n }),\n [\n store,\n ids,\n config,\n isControlledValue,\n isControlledOpen,\n onOpenChangeComplete,\n close,\n selectValue,\n clearValue,\n scrollToIndex,\n ],\n );\n\n return <SelectContext.Provider value={ctx}>{children}</SelectContext.Provider>;\n}","import React from \"react\";\nimport { useSelectContext } from \"../context\";\n\nexport type LabelProps = React.LabelHTMLAttributes<HTMLLabelElement>;\n\nexport function Label({ children, ...props }: LabelProps) {\n const { ids } = useSelectContext();\n return (\n <label id={ids.label} htmlFor={ids.trigger} {...props}>\n {children}\n </label>\n );\n}\n","import React from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\n\nexport type TriggerProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"aria-haspopup\" | \"aria-expanded\" | \"aria-controls\"\n> & {\n /**\n * When true, focusing the trigger opens the listbox.\n * Overrides `openOnFocus` on `<Select.Root>` when set.\n */\n openOnFocus?: boolean | undefined;\n};\n\nexport function Trigger({\n children,\n onClick,\n onFocus,\n disabled,\n openOnFocus: openOnFocusProp,\n ...props\n}: TriggerProps) {\n const { store, ids, refs, config } = useSelectContext();\n const open = useSelectStore(store, (s) => s.open);\n const highlightedValue = useSelectStore(store, (s) => s.highlightedValue);\n\n const isDisabled = disabled ?? config.disabled;\n const isReadOnly = config.readOnly;\n const openOnFocus = openOnFocusProp ?? config.openOnFocus;\n\n const activeDescendantId =\n open && highlightedValue != null ? `${ids.content}-opt-${highlightedValue}` : undefined;\n\n return (\n <button\n ref={refs.triggerRef}\n type=\"button\"\n id={ids.trigger}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={open ? ids.content : undefined}\n aria-labelledby={ids.label ? `${ids.label} ${ids.trigger}` : undefined}\n aria-activedescendant={activeDescendantId}\n aria-disabled={isDisabled || isReadOnly || undefined}\n data-disabled={isDisabled || isReadOnly ? \"true\" : undefined}\n data-open={open ? \"true\" : undefined}\n data-state={open ? \"open\" : \"closed\"}\n disabled={isDisabled || isReadOnly}\n onClick={(e) => {\n if (isDisabled || isReadOnly) return;\n store.setOpen(!open, \"trigger\");\n onClick?.(e);\n }}\n onFocus={(e) => {\n if (openOnFocus && !isDisabled && !isReadOnly && !open) {\n store.setOpen(true, \"trigger\");\n }\n onFocus?.(e);\n }}\n {...props}\n >\n {children}\n </button>\n );\n}","import type { SelectItemRecord } from \"../types\";\n\n/** Resolve display label: registry wins over static map, then raw value. */\nexport function resolveItemLabel(\n value: string,\n registry: Map<string, SelectItemRecord>,\n staticItems: Record<string, string>,\n): string {\n return registry.get(value)?.label ?? staticItems[value] ?? value;\n}\n\n/** Merge option values from registry and static items (registry order first). */\nexport function mergeOptionValues(\n registry: Map<string, SelectItemRecord>,\n staticItems: Record<string, string>,\n): string[] {\n const seen = new Set<string>();\n const values: string[] = [];\n\n for (const value of registry.keys()) {\n if (!seen.has(value)) {\n seen.add(value);\n values.push(value);\n }\n }\n\n for (const value of Object.keys(staticItems)) {\n if (!seen.has(value)) {\n seen.add(value);\n values.push(value);\n }\n }\n\n return values;\n}","import React, { useMemo } from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport { resolveItemLabel } from \"../utils/labels\";\n\nexport interface ValueProps extends React.HTMLAttributes<HTMLSpanElement> {\n placeholder?: string | undefined;\n}\n\nexport function Value({ placeholder = \"\", ...props }: ValueProps) {\n const { store, config } = useSelectContext();\n const value = useSelectStore(store, (s) => s.value);\n const registry = useSelectStore(store, (s) => s.items);\n\n const label = useMemo(() => {\n if (config.multiple) {\n const values = Array.isArray(value) ? value : [];\n if (values.length === 0) return null;\n return values\n .map((itemValue) => resolveItemLabel(itemValue, registry, config.items))\n .join(\", \");\n }\n\n if (typeof value !== \"string\") return null;\n return resolveItemLabel(value, registry, config.items);\n }, [config.multiple, config.items, registry, value]);\n\n return (\n <span data-placeholder={label == null ? \"true\" : undefined} {...props}>\n {label ?? placeholder}\n </span>\n );\n}","import React from \"react\";\n\nexport type IconProps = React.HTMLAttributes<HTMLSpanElement>;\n\n/** Chevron/arrow slot — render your own icon as children. */\nexport function Icon({ children, ...props }: IconProps) {\n return (\n <span aria-hidden=\"true\" {...props}>\n {children ?? \"▾\"}\n </span>\n );\n}\n","import { createContext, useContext, type CSSProperties } from \"react\";\n\nexport interface PositionerContextValue {\n floatingStyles: CSSProperties;\n isPositioned: boolean;\n setFloating: (node: HTMLElement | null) => void;\n alignItemWithTriggerActive: boolean;\n}\n\nexport const PositionerContext = createContext<PositionerContextValue | null>(null);\n\nexport function usePositionerContext(): PositionerContextValue | null {\n return useContext(PositionerContext);\n}","import React, { createContext, useContext } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { SelectPortalContainer, SelectPortalProps } from \"../types\";\n\nexport const PortalContext = createContext(false);\n\nexport function usePortalContext(): boolean {\n return useContext(PortalContext);\n}\n\nexport function resolvePortalContainer(\n container: SelectPortalContainer | undefined,\n): HTMLElement | null {\n if (container == null) {\n return typeof document !== \"undefined\" ? document.body : null;\n }\n if (typeof HTMLElement !== \"undefined\" && container instanceof HTMLElement) {\n return container;\n }\n if (typeof container === \"object\" && \"current\" in container) {\n return container.current;\n }\n return null;\n}\n\nexport function Portal({ children, container = null }: SelectPortalProps) {\n const mountNode = resolvePortalContainer(container);\n\n if (!mountNode) {\n return null;\n }\n\n return (\n <PortalContext.Provider value>\n {createPortal(children, mountNode)}\n </PortalContext.Provider>\n );\n}","import type { FloatingSide } from \"@kenos-ui/utils\";\n\nexport function getAlignItemWithTriggerOffset(\n alignItemWithTrigger: boolean,\n side: FloatingSide,\n triggerHeight: number,\n sideOffset: number,\n): number {\n if (!alignItemWithTrigger || triggerHeight <= 0) {\n return sideOffset;\n }\n\n if (side === \"bottom\" || side === \"top\") {\n return -triggerHeight + sideOffset;\n }\n\n return sideOffset;\n}\n\nexport function shouldDisableFlipForAlign(alignItemWithTrigger: boolean): boolean {\n return alignItemWithTrigger;\n}","import { useLayoutEffect, useState } from \"react\";\nimport type { FloatingSide } from \"@kenos-ui/utils\";\nimport type { SelectRefs } from \"../context\";\nimport {\n getAlignItemWithTriggerOffset,\n shouldDisableFlipForAlign,\n} from \"./align-with-trigger\";\n\nexport interface AlignItemWithTriggerOptions {\n alignItemWithTrigger: boolean;\n side: FloatingSide;\n sideOffset: number;\n open: boolean;\n refs: SelectRefs;\n}\n\nexport function useAlignItemWithTrigger({\n alignItemWithTrigger,\n side,\n sideOffset,\n open,\n refs,\n}: AlignItemWithTriggerOptions) {\n const [triggerHeight, setTriggerHeight] = useState(0);\n\n useLayoutEffect(() => {\n if (!alignItemWithTrigger || !open) {\n setTriggerHeight(0);\n return;\n }\n\n const trigger = refs.triggerRef.current;\n if (!trigger) return;\n\n const update = () => setTriggerHeight(trigger.offsetHeight);\n update();\n\n const observer = new ResizeObserver(update);\n observer.observe(trigger);\n\n return () => observer.disconnect();\n }, [alignItemWithTrigger, open, refs.triggerRef]);\n\n const effectiveSideOffset = getAlignItemWithTriggerOffset(\n alignItemWithTrigger,\n side,\n triggerHeight,\n sideOffset,\n );\n\n const avoidCollisionsOverride = shouldDisableFlipForAlign(alignItemWithTrigger)\n ? false\n : undefined;\n\n return {\n alignItemWithTriggerActive: alignItemWithTrigger && triggerHeight > 0,\n effectiveSideOffset,\n avoidCollisionsOverride,\n };\n}","import React, {\n useEffect,\n useCallback,\n useLayoutEffect,\n useState,\n type KeyboardEvent,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n useFloating,\n usePresence,\n useClickOutside,\n useEscapeKey,\n useListNavigation,\n useTypeahead,\n useFocusTrap,\n} from \"@kenos-ui/utils\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport { usePositionerContext } from \"../positioner/PositionerContext\";\nimport { resolvePortalContainer, usePortalContext } from \"../portal/SelectPortal\";\nimport type { SelectContentProps } from \"../types\";\nimport { useAlignItemWithTrigger } from \"../utils/use-align-item-with-trigger\";\n\nexport function Content({\n children,\n forceMount,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n avoidCollisions = true,\n collisionPadding = 8,\n portal = false,\n container = null,\n sameWidth = false,\n alignItemWithTrigger = false,\n lazyMount = true,\n unmountOnExit = false,\n onOpenChangeComplete: onOpenChangeCompleteProp,\n style,\n onKeyDown,\n ...props\n}: SelectContentProps & React.HTMLAttributes<HTMLDivElement>) {\n const {\n store,\n ids,\n refs,\n config,\n close,\n selectValue,\n onOpenChangeComplete: onOpenChangeCompleteRoot,\n } = useSelectContext();\n const open = useSelectStore(store, (s) => s.open);\n const highlightedValue = useSelectStore(store, (s) => s.highlightedValue);\n const items = useSelectStore(store, (s) => s.items);\n const positionerContext = usePositionerContext();\n const isInsidePortal = usePortalContext();\n\n const onOpenChangeComplete = onOpenChangeCompleteProp ?? onOpenChangeCompleteRoot;\n\n const ownAlign = useAlignItemWithTrigger({\n alignItemWithTrigger: positionerContext ? false : alignItemWithTrigger,\n side,\n sideOffset,\n open,\n refs,\n });\n\n const ownFloating = useFloating({\n open: positionerContext ? false : open,\n side,\n align,\n sideOffset: ownAlign.effectiveSideOffset,\n alignOffset,\n avoidCollisions: ownAlign.avoidCollisionsOverride ?? avoidCollisions,\n collisionPadding,\n sameWidth,\n });\n\n const { setReference } = ownFloating;\n const setFloating = positionerContext?.setFloating ?? ownFloating.setFloating;\n const floatingStyles = positionerContext?.floatingStyles ?? ownFloating.floatingStyles;\n const isPositioned = positionerContext?.isPositioned ?? ownFloating.isPositioned;\n const alignItemWithTriggerActive =\n positionerContext?.alignItemWithTriggerActive ?? ownAlign.alignItemWithTriggerActive;\n\n useLayoutEffect(() => {\n if (positionerContext || !open) return;\n setReference(refs.triggerRef.current);\n }, [open, positionerContext, refs.triggerRef, setReference]);\n\n const mergedRef = useCallback(\n (node: HTMLDivElement | null) => {\n refs.contentRef.current = node;\n setFloating(node);\n },\n [refs.contentRef, setFloating],\n );\n\n const { present } = usePresence({\n open,\n lazyMount,\n unmountOnExit,\n onOpenChangeComplete,\n });\n\n useClickOutside([refs.contentRef, refs.triggerRef], close, open);\n\n useEscapeKey({\n enabled: open,\n stopPropagation: true,\n onEscape: close,\n });\n\n useFocusTrap(refs.contentRef, open && config.modal);\n\n const navItems = Array.from(items.values()).map((item) => ({\n value: item.value,\n disabled: item.disabled,\n }));\n\n const { onKeyDown: onNavKeyDown } = useListNavigation({\n enabled: open && !config.disabled && !config.readOnly,\n items: navItems,\n highlightedValue,\n onHighlight: (v) => store.setHighlightedValue(v),\n loop: true,\n });\n\n const typeaheadItems = Array.from(items.values()).map((item) => ({\n value: item.value,\n disabled: item.disabled,\n textValue: item.textValue,\n }));\n\n const { onKeyDown: onTypeaheadKeyDown } = useTypeahead({\n enabled: open && !config.disabled && !config.readOnly,\n items: typeaheadItems,\n onMatch: (v) => store.setHighlightedValue(v),\n });\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n if (highlightedValue != null) {\n e.preventDefault();\n const item = items.get(highlightedValue);\n if (item && !item.disabled) {\n selectValue(highlightedValue);\n }\n }\n return;\n }\n onNavKeyDown(e);\n onTypeaheadKeyDown(e);\n onKeyDown?.(e);\n },\n [highlightedValue, items, selectValue, onNavKeyDown, onTypeaheadKeyDown, onKeyDown],\n );\n\n const [transitionsReady, setTransitionsReady] = useState(false);\n useEffect(() => {\n if (!open || !isPositioned) {\n setTransitionsReady(false);\n return;\n }\n const raf = requestAnimationFrame(() => setTransitionsReady(true));\n return () => cancelAnimationFrame(raf);\n }, [open, isPositioned]);\n\n useEffect(() => {\n if (!open || !refs.contentRef.current) return;\n const state = store.getState();\n if (state.highlightedValue == null) {\n const first = navItems.find((i) => !i.disabled);\n if (first) store.setHighlightedValue(first.value);\n }\n refs.contentRef.current.focus({ preventScroll: true });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only run on open\n }, [open]);\n\n useEffect(() => {\n if (!open || !highlightedValue) return;\n const item = items.get(highlightedValue);\n if (typeof item?.ref?.scrollIntoView === \"function\") {\n item.ref.scrollIntoView({ block: \"nearest\" });\n }\n }, [highlightedValue, items, open]);\n\n if (!present && !forceMount) return null;\n\n const content = (\n <div\n ref={mergedRef}\n id={ids.content}\n data-state={open ? \"open\" : \"closed\"}\n data-open={open ? \"true\" : undefined}\n data-align-trigger={alignItemWithTriggerActive ? \"true\" : undefined}\n aria-modal={config.modal ? \"true\" : undefined}\n tabIndex={-1}\n style={{\n ...floatingStyles,\n ...(!open ? { display: \"none\" } : undefined),\n ...(open && !isPositioned ? { opacity: 0, pointerEvents: \"none\" } : undefined),\n ...(open && !transitionsReady ? { transition: \"none\" } : undefined),\n ...style,\n }}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n );\n\n if (isInsidePortal || !portal) {\n return content;\n }\n\n const mountNode = resolvePortalContainer(container);\n if (!mountNode) {\n return content;\n }\n\n return createPortal(content, mountNode);\n}","import React, { useLayoutEffect, useMemo } from \"react\";\nimport { useFloating } from \"@kenos-ui/utils\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport type { SelectPositionerProps } from \"../types\";\nimport { useAlignItemWithTrigger } from \"../utils/use-align-item-with-trigger\";\nimport { PositionerContext } from \"./PositionerContext\";\n\nexport function Positioner({\n children,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n avoidCollisions = true,\n collisionPadding = 8,\n sameWidth = false,\n alignItemWithTrigger = false,\n}: SelectPositionerProps) {\n const { store, refs } = useSelectContext();\n const open = useSelectStore(store, (s) => s.open);\n\n const { alignItemWithTriggerActive, effectiveSideOffset, avoidCollisionsOverride } =\n useAlignItemWithTrigger({\n alignItemWithTrigger,\n side,\n sideOffset,\n open,\n refs,\n });\n\n const { setReference, setFloating, floatingStyles, isPositioned } = useFloating({\n open,\n side,\n align,\n sideOffset: effectiveSideOffset,\n alignOffset,\n avoidCollisions: avoidCollisionsOverride ?? avoidCollisions,\n collisionPadding,\n sameWidth,\n });\n\n useLayoutEffect(() => {\n if (!open) return;\n setReference(refs.triggerRef.current);\n }, [open, refs.triggerRef, setReference]);\n\n const contextValue = useMemo(\n () => ({\n floatingStyles,\n isPositioned,\n setFloating,\n alignItemWithTriggerActive,\n }),\n [floatingStyles, isPositioned, setFloating, alignItemWithTriggerActive],\n );\n\n return (\n <PositionerContext.Provider value={contextValue}>{children}</PositionerContext.Provider>\n );\n}","import React from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport type { SelectBackdropProps } from \"../types\";\n\nexport function Backdrop({ style, ...props }: SelectBackdropProps) {\n const { store, config } = useSelectContext();\n const open = useSelectStore(store, (s) => s.open);\n\n if (!config.modal) {\n return null;\n }\n\n return (\n <div\n role=\"presentation\"\n aria-hidden=\"true\"\n data-state={open ? \"open\" : \"closed\"}\n style={{\n position: \"fixed\",\n inset: 0,\n pointerEvents: open ? undefined : \"none\",\n ...style,\n }}\n {...props}\n />\n );\n}","import React, { useCallback } from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport type { SelectClearTriggerProps } from \"../types\";\n\nexport function ClearTrigger({ onClick, ...props }: SelectClearTriggerProps) {\n const { store, config, clearValue } = useSelectContext();\n const value = useSelectStore(store, (s) => s.value);\n\n const hasValue = config.multiple\n ? Array.isArray(value) && value.length > 0\n : value != null;\n\n const handleActivate = useCallback(\n (e: React.SyntheticEvent) => {\n e.preventDefault();\n e.stopPropagation();\n clearValue();\n onClick?.(e as React.MouseEvent<HTMLSpanElement>);\n },\n [clearValue, onClick],\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n handleActivate(e);\n }\n },\n [handleActivate],\n );\n\n if (!hasValue || config.disabled || config.readOnly) {\n return null;\n }\n\n return (\n <span\n role=\"button\"\n tabIndex={0}\n aria-label=\"Clear selection\"\n onClick={handleActivate}\n onKeyDown={handleKeyDown}\n {...props}\n />\n );\n}","import React, { useEffect } from \"react\";\nimport { useSelectContext } from \"../context\";\n\nexport type ListProps = React.HTMLAttributes<HTMLUListElement> & {\n /**\n * When set, scrolls the list to the item at this index.\n * Useful with virtualization or controlled scroll sync.\n */\n scrollToIndex?: number | undefined;\n};\n\nexport function List({ children, scrollToIndex, ...props }: ListProps) {\n const { ids, refs, config, scrollToIndex: scrollToIndexFn } = useSelectContext();\n\n useEffect(() => {\n if (scrollToIndex == null || scrollToIndex < 0) return;\n scrollToIndexFn(scrollToIndex);\n }, [scrollToIndex, scrollToIndexFn]);\n\n return (\n <ul\n ref={refs.listRef}\n role=\"listbox\"\n id={`${ids.content}-list`}\n aria-labelledby={ids.label}\n aria-multiselectable={config.multiple ? true : undefined}\n {...props}\n >\n {children}\n </ul>\n );\n}","import React, { useRef, useLayoutEffect, useCallback } from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\n\nexport interface ItemProps extends React.HTMLAttributes<HTMLLIElement> {\n value: string;\n disabled?: boolean | undefined;\n textValue?: string | undefined;\n}\n\nItem.displayName = \"Select.Item\";\n\nexport function Item({\n value,\n disabled = false,\n textValue,\n children,\n onClick,\n onPointerMove,\n ...props\n}: ItemProps) {\n const { store, ids, config, selectValue } = useSelectContext();\n const selectedValue = useSelectStore(store, (s) => s.value);\n const highlightedValue = useSelectStore(store, (s) => s.highlightedValue);\n const liRef = useRef<HTMLLIElement>(null);\n\n const isSelected = config.multiple\n ? Array.isArray(selectedValue) &&\n selectedValue.some((item) => config.isItemEqualToValue(item, value))\n : typeof selectedValue === \"string\" && config.isItemEqualToValue(selectedValue, value);\n const isHighlighted = highlightedValue === value;\n const isDisabled = disabled || config.disabled || config.readOnly;\n\n useLayoutEffect(() => {\n const el = liRef.current;\n const label = textValue ?? (el?.textContent ?? value);\n\n store.registerItem({\n value,\n label,\n textValue: textValue ?? label,\n disabled: isDisabled,\n ref: el,\n groupId: null,\n });\n\n return () => store.unregisterItem(value);\n }, [value, isDisabled, store, textValue, children]);\n\n useLayoutEffect(() => {\n store.updateItemRef(value, liRef.current);\n });\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLLIElement>) => {\n if (isDisabled) return;\n selectValue(value);\n onClick?.(e);\n },\n [isDisabled, selectValue, value, onClick],\n );\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent<HTMLLIElement>) => {\n if (!isDisabled) store.setHighlightedValue(value);\n onPointerMove?.(e);\n },\n [isDisabled, store, value, onPointerMove],\n );\n\n return (\n <li\n ref={liRef}\n id={`${ids.content}-opt-${value}`}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={isDisabled || undefined}\n data-highlighted={isHighlighted ? \"true\" : undefined}\n data-selected={isSelected ? \"true\" : undefined}\n data-disabled={isDisabled ? \"true\" : undefined}\n tabIndex={-1}\n onClick={handleClick}\n onPointerMove={handlePointerMove}\n {...props}\n >\n {children}\n </li>\n );\n}","import React from \"react\";\n\nexport type ItemTextProps = React.HTMLAttributes<HTMLSpanElement>;\n\n/** Text label for a Select.Item — also used by Select.Value to display the selected label. */\nexport function ItemText({ children, ...props }: ItemTextProps) {\n return <span {...props}>{children}</span>;\n}\n","import React from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\n\nexport interface ItemIndicatorProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** The item value to check — reads from the nearest Item when not provided. */\n value?: string | undefined;\n}\n\n/**\n * Renders only when the parent item is selected.\n * Wrap a checkmark or any indicator icon as children.\n */\nexport function ItemIndicator({ value, children, style, ...props }: ItemIndicatorProps) {\n const { store } = useSelectContext();\n const selectedValue = useSelectStore(store, (s) => s.value);\n\n const isSelected = value != null ? selectedValue === value : false;\n\n return (\n <span\n aria-hidden=\"true\"\n data-state={isSelected ? \"checked\" : \"unchecked\"}\n style={{ visibility: isSelected ? undefined : \"hidden\", ...style }}\n {...props}\n >\n {children}\n </span>\n );\n}\n","import { createContext, useContext } from \"react\";\n\nexport interface GroupContextValue {\n labelId: string;\n}\n\nexport const GroupContext = createContext<GroupContextValue | null>(null);\n\nexport function useGroupContext(): GroupContextValue | null {\n return useContext(GroupContext);\n}\n","import React, { useId } from \"react\";\nimport { GroupContext } from \"./GroupContext\";\n\nexport type GroupProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport function Group({ children, ...props }: GroupProps) {\n const groupId = useId();\n const labelId = `${groupId}-label`;\n\n return (\n <GroupContext.Provider value={{ labelId }}>\n <div role=\"group\" aria-labelledby={labelId} {...props}>\n {children}\n </div>\n </GroupContext.Provider>\n );\n}\n","import React from \"react\";\nimport { useGroupContext } from \"../group/GroupContext\";\n\nexport type GroupLabelProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport function GroupLabel({ children, ...props }: GroupLabelProps) {\n const group = useGroupContext();\n\n return (\n <div id={group?.labelId} {...props}>\n {children}\n </div>\n );\n}\n","import React from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport { mergeOptionValues, resolveItemLabel } from \"../utils/labels\";\n\nexport function HiddenSelect() {\n const { store, config } = useSelectContext();\n const value = useSelectStore(store, (s) => s.value);\n const registry = useSelectStore(store, (s) => s.items);\n\n if (!config.name) return null;\n\n const optionValues = mergeOptionValues(registry, config.items);\n const selectedValues = config.multiple\n ? Array.isArray(value)\n ? value\n : []\n : typeof value === \"string\"\n ? [value]\n : [];\n\n if (config.multiple) {\n const allOptionValues = [\n ...optionValues,\n ...selectedValues.filter(\n (selected) => !optionValues.some((v) => config.isItemEqualToValue(v, selected)),\n ),\n ];\n\n return (\n <select\n aria-hidden=\"true\"\n tabIndex={-1}\n name={config.name}\n multiple\n required={config.required}\n disabled={config.disabled}\n value={selectedValues}\n onChange={() => undefined}\n style={{\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: 0,\n overflow: \"hidden\",\n clip: \"rect(0,0,0,0)\",\n whiteSpace: \"nowrap\",\n pointerEvents: \"none\",\n opacity: 0,\n }}\n data-part=\"hidden-select\"\n >\n {allOptionValues.map((optionValue) => {\n const record = registry.get(optionValue);\n return (\n <option key={optionValue} value={optionValue} disabled={record?.disabled}>\n {resolveItemLabel(optionValue, registry, config.items)}\n </option>\n );\n })}\n </select>\n );\n }\n\n const singleValue = typeof value === \"string\" ? value : \"\";\n const hasValueOption =\n singleValue !== \"\" && optionValues.some((v) => config.isItemEqualToValue(v, singleValue));\n\n return (\n <select\n aria-hidden=\"true\"\n tabIndex={-1}\n name={config.name}\n required={config.required}\n disabled={config.disabled}\n value={singleValue}\n onChange={() => undefined}\n style={{\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: 0,\n overflow: \"hidden\",\n clip: \"rect(0,0,0,0)\",\n whiteSpace: \"nowrap\",\n pointerEvents: \"none\",\n opacity: 0,\n }}\n data-part=\"hidden-select\"\n >\n <option value=\"\" disabled hidden />\n {optionValues.map((optionValue) => {\n const record = registry.get(optionValue);\n return (\n <option key={optionValue} value={optionValue} disabled={record?.disabled}>\n {resolveItemLabel(optionValue, registry, config.items)}\n </option>\n );\n })}\n {singleValue !== \"\" && !hasValueOption && <option value={singleValue}>{singleValue}</option>}\n </select>\n );\n}","import { useCallback, useLayoutEffect, useState, type RefObject } from \"react\";\n\nexport interface ListScrollOverflow {\n canScrollUp: boolean;\n canScrollDown: boolean;\n update: () => void;\n}\n\nexport function useListScrollOverflow(\n listRef: RefObject<HTMLUListElement | null>,\n enabled: boolean,\n): ListScrollOverflow {\n const [canScrollUp, setCanScrollUp] = useState(false);\n const [canScrollDown, setCanScrollDown] = useState(false);\n\n const update = useCallback(() => {\n const list = listRef.current;\n if (!list) {\n setCanScrollUp(false);\n setCanScrollDown(false);\n return;\n }\n\n const { scrollTop, scrollHeight, clientHeight } = list;\n setCanScrollUp(scrollTop > 0);\n setCanScrollDown(scrollTop + clientHeight < scrollHeight - 1);\n }, [listRef]);\n\n useLayoutEffect(() => {\n if (!enabled) {\n setCanScrollUp(false);\n setCanScrollDown(false);\n return;\n }\n\n update();\n\n const list = listRef.current;\n if (!list) return;\n\n list.addEventListener(\"scroll\", update, { passive: true });\n\n const observer = new ResizeObserver(update);\n observer.observe(list);\n\n return () => {\n list.removeEventListener(\"scroll\", update);\n observer.disconnect();\n };\n }, [enabled, listRef, update]);\n\n return { canScrollUp, canScrollDown, update };\n}","import React, { useCallback } from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport { useListScrollOverflow } from \"../utils/use-list-scroll-overflow\";\nimport type { SelectScrollButtonProps } from \"../types\";\n\nconst SCROLL_STEP_PX = 40;\n\nexport function ScrollButton({\n direction,\n keepMounted = false,\n onClick,\n children,\n style,\n ...props\n}: SelectScrollButtonProps) {\n const { store, refs } = useSelectContext();\n const open = useSelectStore(store, (s) => s.open);\n const isUp = direction === \"up\";\n\n const { canScrollUp, canScrollDown, update } = useListScrollOverflow(refs.listRef, open);\n const visible = isUp ? canScrollUp : canScrollDown;\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n const list = refs.listRef.current;\n if (list) {\n const delta = isUp ? -SCROLL_STEP_PX : SCROLL_STEP_PX;\n if (typeof list.scrollBy === \"function\") {\n list.scrollBy({ top: delta, behavior: \"smooth\" });\n } else {\n list.scrollTop += delta;\n }\n list.dispatchEvent(new Event(\"scroll\"));\n update();\n }\n onClick?.(event);\n },\n [isUp, onClick, refs.listRef, update],\n );\n\n if (!visible && !keepMounted) {\n return null;\n }\n\n return (\n <button\n type=\"button\"\n aria-hidden\n tabIndex={-1}\n data-direction={direction}\n data-visible={visible ? \"true\" : \"false\"}\n style={{\n display: visible || keepMounted ? undefined : \"none\",\n ...style,\n }}\n onClick={handleClick}\n {...props}\n >\n {children ?? (isUp ? \"▲\" : \"▼\")}\n </button>\n );\n}","import React from \"react\";\nimport { ScrollButton } from \"../scroll-button/SelectScrollButton\";\nimport type { SelectScrollButtonProps } from \"../types\";\n\nexport type ScrollUpButtonProps = Omit<SelectScrollButtonProps, \"direction\">;\n\nexport function ScrollUpButton(props: ScrollUpButtonProps) {\n return <ScrollButton direction=\"up\" {...props} />;\n}","import React from \"react\";\nimport { ScrollButton } from \"../scroll-button/SelectScrollButton\";\nimport type { SelectScrollButtonProps } from \"../types\";\n\nexport type ScrollDownButtonProps = Omit<SelectScrollButtonProps, \"direction\">;\n\nexport function ScrollDownButton(props: ScrollDownButtonProps) {\n return <ScrollButton direction=\"down\" {...props} />;\n}"]}
1
+ {"version":3,"sources":["../src/index.parts.ts","../src/store.ts","../src/context.ts","../src/utils/extract-items.ts","../src/utils/scroll-to-index.ts","../src/root/SelectRoot.tsx","../src/label/SelectLabel.tsx","../src/trigger/SelectTrigger.tsx","../src/utils/labels.ts","../src/value/SelectValue.tsx","../src/icon/SelectIcon.tsx","../src/positioner/PositionerContext.ts","../src/portal/SelectPortal.tsx","../src/utils/align-with-trigger.ts","../src/utils/use-align-item-with-trigger.ts","../src/content/SelectContent.tsx","../src/positioner/SelectPositioner.tsx","../src/backdrop/SelectBackdrop.tsx","../src/clear-trigger/SelectClearTrigger.tsx","../src/list/SelectList.tsx","../src/item/SelectItem.tsx","../src/item-text/SelectItemText.tsx","../src/item-indicator/SelectItemIndicator.tsx","../src/group/GroupContext.ts","../src/group/SelectGroup.tsx","../src/group-label/SelectGroupLabel.tsx","../src/hidden-select/SelectHiddenSelect.tsx","../src/utils/use-list-scroll-overflow.ts","../src/scroll-button/SelectScrollButton.tsx","../src/scroll-up-button/SelectScrollUpButton.tsx","../src/scroll-down-button/SelectScrollDownButton.tsx"],"names":["useSyncExternalStore","useCallback","createContext","useContext","Children","isValidElement","useId","useMemo","useRef","useEffect","restoreFocus","jsx","createPortal","useState","useLayoutEffect","useFloating","usePresence","useClickOutside","useEscapeKey","useFocusTrap","useListNavigation","useTypeahead","jsxs"],"mappings":"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","file":"index.cjs","sourcesContent":["// Parts barrel — exported as the `Select` namespace.\n// packages/select/src/index.parts.ts\n\nexport { Root } from \"./root/SelectRoot\";\nexport { Label } from \"./label/SelectLabel\";\nexport { Trigger } from \"./trigger/SelectTrigger\";\nexport { Value } from \"./value/SelectValue\";\nexport { Icon } from \"./icon/SelectIcon\";\nexport { Content } from \"./content/SelectContent\";\nexport { Portal } from \"./portal/SelectPortal\";\nexport { Positioner } from \"./positioner/SelectPositioner\";\nexport { Backdrop } from \"./backdrop/SelectBackdrop\";\nexport { ClearTrigger } from \"./clear-trigger/SelectClearTrigger\";\nexport { List } from \"./list/SelectList\";\nexport { Item } from \"./item/SelectItem\";\nexport { ItemText } from \"./item-text/SelectItemText\";\nexport { ItemIndicator } from \"./item-indicator/SelectItemIndicator\";\nexport { Group } from \"./group/SelectGroup\";\nexport { GroupLabel } from \"./group-label/SelectGroupLabel\";\nexport { HiddenSelect } from \"./hidden-select/SelectHiddenSelect\";\nexport { ScrollUpButton } from \"./scroll-up-button/SelectScrollUpButton\";\nexport { ScrollDownButton } from \"./scroll-down-button/SelectScrollDownButton\";\n","import { useSyncExternalStore, useCallback, useRef } from \"react\";\nimport type { SelectItemEqualFn, SelectStoreState, SelectItemRecord } from \"./types\";\n\n// ── SelectStore ────────────────────────────────────────────────────────────\n\ntype Listener = () => void;\n\nfunction arraysEqual(a: string[], b: string[]): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\nexport class SelectStore {\n private state: SelectStoreState;\n private listeners = new Set<Listener>();\n\n constructor(initial: Partial<SelectStoreState> = {}) {\n this.state = {\n open: false,\n openSource: null,\n value: null,\n highlightedValue: null,\n items: new Map(),\n ...initial,\n };\n }\n\n getState(): SelectStoreState {\n return this.state;\n }\n\n subscribe(listener: Listener): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n private notify(): void {\n for (const listener of this.listeners) {\n listener();\n }\n }\n\n // ── Mutations ────────────────────────────────────────────────────────────\n\n setOpen(open: boolean, source: \"trigger\" | null = null): void {\n if (this.state.open === open) return;\n this.state = {\n ...this.state,\n open,\n openSource: open ? source : null,\n // Reset highlight when closing\n highlightedValue: open ? this.state.highlightedValue : null,\n };\n this.notify();\n }\n\n setValue(value: string | null): void {\n if (this.state.value === value) return;\n this.state = { ...this.state, value };\n this.notify();\n }\n\n setValues(values: string[]): void {\n const current = this.state.value;\n if (Array.isArray(current) && arraysEqual(current, values)) return;\n this.state = { ...this.state, value: values };\n this.notify();\n }\n\n toggleValue(value: string, comparator: SelectItemEqualFn): void {\n const current = this.state.value;\n const next = Array.isArray(current) ? [...current] : [];\n const index = next.findIndex((item) => comparator(item, value));\n\n if (index >= 0) {\n next.splice(index, 1);\n } else {\n next.push(value);\n }\n\n if (Array.isArray(current) && arraysEqual(current, next)) return;\n\n this.state = { ...this.state, value: next };\n this.notify();\n }\n\n clearValue(multiple: boolean): void {\n const next = multiple ? [] : null;\n const current = this.state.value;\n\n if (multiple) {\n if (Array.isArray(current) && current.length === 0) return;\n } else if (current === null) {\n return;\n }\n\n this.state = { ...this.state, value: next };\n this.notify();\n }\n\n isSelected(value: string, multiple: boolean, comparator: SelectItemEqualFn): boolean {\n const current = this.state.value;\n\n if (multiple) {\n return Array.isArray(current) && current.some((item) => comparator(item, value));\n }\n\n return typeof current === \"string\" && comparator(current, value);\n }\n\n setHighlightedValue(value: string | null): void {\n if (this.state.highlightedValue === value) return;\n this.state = { ...this.state, highlightedValue: value };\n this.notify();\n }\n\n registerItem(record: SelectItemRecord): void {\n const next = new Map(this.state.items);\n next.set(record.value, record);\n this.state = { ...this.state, items: next };\n this.notify();\n }\n\n unregisterItem(value: string): void {\n if (!this.state.items.has(value)) return;\n const next = new Map(this.state.items);\n next.delete(value);\n this.state = { ...this.state, items: next };\n this.notify();\n }\n\n updateItemRef(value: string, ref: HTMLElement | null): void {\n const item = this.state.items.get(value);\n if (!item || item.ref === ref) return;\n const next = new Map(this.state.items);\n next.set(value, { ...item, ref });\n this.state = { ...this.state, items: next };\n // Don't notify for ref updates — avoids render cascades\n }\n}\n\n// ── useSelectStore ─────────────────────────────────────────────────────────\n\n/**\n * Subscribe to a slice of the SelectStore.\n * Re-renders only when the selected slice changes (by reference).\n */\nexport function useSelectStore<T>(store: SelectStore, selector: (s: SelectStoreState) => T): T {\n return useSyncExternalStore(\n useCallback((cb) => store.subscribe(cb), [store]),\n () => selector(store.getState()),\n () => selector(store.getState()),\n );\n}\n\n// ── useSelectStoreRef ──────────────────────────────────────────────────────\n\n/**\n * Return a stable ref to the store's current state getter.\n * Useful for event handlers that need a snapshot without subscribing.\n */\nexport function useSelectStateRef(store: SelectStore): React.RefObject<SelectStoreState> {\n const ref = useRef(store.getState());\n // Keep in sync each render (no subscription overhead).\n ref.current = store.getState();\n return ref;\n}\n","import { createContext, useContext, type RefObject } from \"react\";\nimport type { SelectStore } from \"./store\";\nimport type { SelectItemEqualFn, ScrollToIndexOptions } from \"./types\";\n\nexport interface SelectRefs {\n triggerRef: RefObject<HTMLButtonElement | null>;\n contentRef: RefObject<HTMLDivElement | null>;\n listRef: RefObject<HTMLUListElement | null>;\n}\n\nexport interface SelectContextValue {\n store: SelectStore;\n ids: {\n root: string;\n label: string;\n trigger: string;\n content: string;\n };\n refs: SelectRefs;\n config: {\n disabled: boolean;\n required: boolean;\n readOnly: boolean;\n modal: boolean;\n name: string | undefined;\n multiple: boolean;\n items: Record<string, string>;\n isItemEqualToValue: SelectItemEqualFn;\n openOnFocus: boolean;\n };\n isControlledOpen: boolean;\n isControlledValue: boolean;\n onOpenChangeComplete: ((open: boolean) => void) | undefined;\n /** Close the listbox and restore focus to the trigger. */\n close: () => void;\n /** Select a value (toggle in multiple mode, set + close in single mode). */\n selectValue: (value: string) => void;\n /** Alias for selectValue — kept for backward compatibility. */\n selectAndClose: (value: string) => void;\n /** Clear the current selection. */\n clearValue: () => void;\n /** Scroll the list to the item at the given index. */\n scrollToIndex: (index: number, options?: ScrollToIndexOptions) => void;\n}\n\nexport const SelectContext = createContext<SelectContextValue | null>(null);\n\nexport function useSelectContext(): SelectContextValue {\n const ctx = useContext(SelectContext);\n if (!ctx) {\n throw new Error(\"Select compound components must be rendered inside <Select.Root>.\");\n }\n return ctx;\n}\n","import { Children, isValidElement, type ReactElement, type ReactNode } from \"react\";\n\ninterface ItemElementProps {\n value?: string;\n children?: ReactNode;\n}\n\nfunction extractItemTextLabel(children: ReactNode): string | null {\n let label: string | null = null;\n\n Children.forEach(children, (child) => {\n if (label != null || !isValidElement(child)) return;\n\n const element = child as ReactElement<ItemElementProps>;\n const type = element.type as { displayName?: string; name?: string };\n const isItemText = type?.displayName === \"Select.ItemText\" || type?.name === \"ItemText\";\n\n if (isItemText) {\n const content = element.props.children;\n if (typeof content === \"string\" || typeof content === \"number\") {\n label = String(content);\n }\n return;\n }\n\n if (element.props.children != null) {\n label = extractItemTextLabel(element.props.children);\n }\n });\n\n return label;\n}\n\nfunction isSelectItemElement(child: ReactElement<ItemElementProps>): boolean {\n const type = child.type as { displayName?: string; name?: string };\n return type?.displayName === \"Select.Item\" || type?.name === \"Item\";\n}\n\n/** Walk the Root children tree and collect value→label pairs from Item/ItemText. */\nexport function extractItemsFromChildren(children: ReactNode): Record<string, string> {\n const items: Record<string, string> = {};\n\n const walk = (node: ReactNode): void => {\n Children.forEach(node, (child) => {\n if (!isValidElement(child)) return;\n\n const element = child as ReactElement<ItemElementProps>;\n\n if (isSelectItemElement(element)) {\n const value = element.props.value;\n const label = extractItemTextLabel(element.props.children) ?? value;\n if (value != null && label != null) {\n items[value] = label;\n }\n }\n\n if (element.props.children != null) {\n walk(element.props.children);\n }\n });\n };\n\n walk(children);\n return items;\n}\n","import type { ScrollToIndexAlign, ScrollToIndexOptions, SelectStoreState } from \"../types\";\n\nfunction toScrollBlock(align: ScrollToIndexAlign): ScrollLogicalPosition {\n switch (align) {\n case \"start\":\n return \"start\";\n case \"end\":\n return \"end\";\n case \"center\":\n return \"center\";\n case \"nearest\":\n case \"auto\":\n default:\n return \"nearest\";\n }\n}\n\nexport function scrollToIndexInState(\n state: SelectStoreState,\n index: number,\n options: ScrollToIndexOptions = {},\n): void {\n const items = Array.from(state.items.values());\n const item = items[index];\n if (!item?.ref) return;\n\n item.ref.scrollIntoView({\n block: toScrollBlock(options.align ?? \"nearest\"),\n });\n}\n","import React, { useId, useMemo, useRef, useEffect, useCallback } from \"react\";\nimport { restoreFocus } from \"@kenos-ui/utils\";\nimport { SelectStore } from \"../store\";\nimport { SelectContext } from \"../context\";\nimport type { SelectRootProps } from \"../types\";\nimport { extractItemsFromChildren } from \"../utils/extract-items\";\nimport { scrollToIndexInState } from \"../utils/scroll-to-index\";\nimport type { ScrollToIndexOptions } from \"../types\";\n\nconst defaultIsItemEqualToValue = (a: string, b: string) => a === b;\n\nfunction valuesEqual(\n a: string | string[] | null | undefined,\n b: string | string[] | null | undefined,\n): boolean {\n if (a === b) return true;\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n return false;\n}\n\nexport function Root(props: SelectRootProps) {\n const {\n children,\n value,\n defaultValue,\n onValueChange,\n open,\n defaultOpen,\n onOpenChange,\n onOpenChangeComplete,\n name,\n disabled = false,\n required = false,\n readOnly = false,\n modal = false,\n id,\n items = {},\n isItemEqualToValue = defaultIsItemEqualToValue,\n multiple = false,\n openOnFocus = false,\n } = props;\n\n const uid = useId();\n const prefix = id ?? `sel-${uid.replace(/:/g, \"\")}`;\n\n const ids = useMemo(\n () => ({\n root: prefix,\n label: `${prefix}-label`,\n trigger: `${prefix}-trigger`,\n content: `${prefix}-content`,\n }),\n [prefix],\n );\n\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLUListElement | null>(null);\n\n const isControlledValue = value !== undefined;\n const isControlledOpen = open !== undefined;\n\n const initialValue = isControlledValue\n ? multiple\n ? (value ?? [])\n : (value ?? null)\n : multiple\n ? (defaultValue ?? [])\n : (defaultValue ?? null);\n\n const storeRef = useRef<SelectStore | null>(null);\n if (!storeRef.current) {\n storeRef.current = new SelectStore({\n value: initialValue,\n open: isControlledOpen ? (open ?? false) : (defaultOpen ?? false),\n });\n }\n const store = storeRef.current;\n\n const prevControlledValue = useRef(value);\n useEffect(() => {\n if (!isControlledValue) return;\n if (valuesEqual(value, prevControlledValue.current)) return;\n prevControlledValue.current = value;\n\n if (multiple) {\n store.setValues(Array.isArray(value) ? value : []);\n } else {\n store.setValue(typeof value === \"string\" ? value : null);\n }\n }, [isControlledValue, value, store, multiple]);\n\n const prevControlledOpen = useRef(open);\n useEffect(() => {\n if (!isControlledOpen) return;\n if (open === prevControlledOpen.current) return;\n prevControlledOpen.current = open;\n store.setOpen(open ?? false);\n }, [isControlledOpen, open, store]);\n\n const onValueChangeRef = useRef(onValueChange);\n onValueChangeRef.current = onValueChange;\n\n const prevStoreValue = useRef(store.getState().value);\n useEffect(() => {\n return store.subscribe(() => {\n const state = store.getState();\n if (!valuesEqual(state.value, prevStoreValue.current)) {\n prevStoreValue.current = state.value;\n if (multiple) {\n (onValueChangeRef.current as ((value: string[]) => void) | undefined)?.(\n Array.isArray(state.value) ? state.value : [],\n );\n } else {\n (onValueChangeRef.current as ((value: string | null) => void) | undefined)?.(\n typeof state.value === \"string\" ? state.value : null,\n );\n }\n }\n });\n }, [store, multiple]);\n\n const onOpenChangeRef = useRef(onOpenChange);\n onOpenChangeRef.current = onOpenChange;\n\n const prevStoreOpen = useRef(store.getState().open);\n useEffect(() => {\n return store.subscribe(() => {\n const state = store.getState();\n if (state.open !== prevStoreOpen.current) {\n prevStoreOpen.current = state.open;\n onOpenChangeRef.current?.(state.open);\n }\n });\n }, [store]);\n\n const close = useCallback(() => {\n const state = store.getState();\n if (!state.open) return;\n store.setOpen(false);\n restoreFocus({\n openSource: state.openSource ?? \"trigger\",\n trigger: triggerRef.current,\n });\n }, [store]);\n\n const selectValue = useCallback(\n (itemValue: string) => {\n if (multiple) {\n store.toggleValue(itemValue, isItemEqualToValue);\n return;\n }\n store.setValue(itemValue);\n close();\n },\n [store, close, multiple, isItemEqualToValue],\n );\n\n const clearValue = useCallback(() => {\n store.clearValue(multiple);\n }, [store, multiple]);\n\n const scrollToIndex = useCallback(\n (index: number, options?: ScrollToIndexOptions) => {\n scrollToIndexInState(store.getState(), index, options);\n },\n [store],\n );\n\n const discoveredItems = useMemo(() => extractItemsFromChildren(children), [children]);\n const mergedItems = useMemo(() => ({ ...discoveredItems, ...items }), [discoveredItems, items]);\n\n const config = useMemo(\n () => ({\n disabled,\n required,\n readOnly,\n modal,\n name,\n multiple,\n items: mergedItems,\n isItemEqualToValue,\n openOnFocus,\n }),\n [\n disabled,\n required,\n readOnly,\n modal,\n name,\n multiple,\n mergedItems,\n isItemEqualToValue,\n openOnFocus,\n ],\n );\n\n const ctx = useMemo(\n () => ({\n store,\n ids,\n refs: { triggerRef, contentRef, listRef },\n config,\n isControlledValue,\n isControlledOpen,\n onOpenChangeComplete,\n close,\n selectValue,\n selectAndClose: selectValue,\n clearValue,\n scrollToIndex,\n }),\n [\n store,\n ids,\n config,\n isControlledValue,\n isControlledOpen,\n onOpenChangeComplete,\n close,\n selectValue,\n clearValue,\n scrollToIndex,\n ],\n );\n\n return <SelectContext.Provider value={ctx}>{children}</SelectContext.Provider>;\n}\n","import React from \"react\";\nimport { useSelectContext } from \"../context\";\n\nexport type LabelProps = React.LabelHTMLAttributes<HTMLLabelElement>;\n\nexport function Label({ children, ...props }: LabelProps) {\n const { ids } = useSelectContext();\n return (\n <label id={ids.label} htmlFor={ids.trigger} {...props}>\n {children}\n </label>\n );\n}\n","import React from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\n\nexport type TriggerProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"aria-haspopup\" | \"aria-expanded\" | \"aria-controls\"\n> & {\n /**\n * When true, focusing the trigger opens the listbox.\n * Overrides `openOnFocus` on `<Select.Root>` when set.\n */\n openOnFocus?: boolean | undefined;\n};\n\nexport function Trigger({\n children,\n onClick,\n onFocus,\n disabled,\n openOnFocus: openOnFocusProp,\n ...props\n}: TriggerProps) {\n const { store, ids, refs, config } = useSelectContext();\n const open = useSelectStore(store, (s) => s.open);\n const highlightedValue = useSelectStore(store, (s) => s.highlightedValue);\n\n const isDisabled = disabled ?? config.disabled;\n const isReadOnly = config.readOnly;\n const openOnFocus = openOnFocusProp ?? config.openOnFocus;\n\n const activeDescendantId =\n open && highlightedValue != null ? `${ids.content}-opt-${highlightedValue}` : undefined;\n\n return (\n <button\n ref={refs.triggerRef}\n type=\"button\"\n id={ids.trigger}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={open ? ids.content : undefined}\n aria-labelledby={ids.label ? `${ids.label} ${ids.trigger}` : undefined}\n aria-activedescendant={activeDescendantId}\n aria-disabled={isDisabled || isReadOnly || undefined}\n data-disabled={isDisabled || isReadOnly ? \"true\" : undefined}\n data-open={open ? \"true\" : undefined}\n data-state={open ? \"open\" : \"closed\"}\n disabled={isDisabled || isReadOnly}\n onClick={(e) => {\n if (isDisabled || isReadOnly) return;\n store.setOpen(!open, \"trigger\");\n onClick?.(e);\n }}\n onFocus={(e) => {\n if (openOnFocus && !isDisabled && !isReadOnly && !open) {\n store.setOpen(true, \"trigger\");\n }\n onFocus?.(e);\n }}\n {...props}\n >\n {children}\n </button>\n );\n}\n","import type { SelectItemRecord } from \"../types\";\n\n/** Resolve display label: registry wins over static map, then raw value. */\nexport function resolveItemLabel(\n value: string,\n registry: Map<string, SelectItemRecord>,\n staticItems: Record<string, string>,\n): string {\n return registry.get(value)?.label ?? staticItems[value] ?? value;\n}\n\n/** Merge option values from registry and static items (registry order first). */\nexport function mergeOptionValues(\n registry: Map<string, SelectItemRecord>,\n staticItems: Record<string, string>,\n): string[] {\n const seen = new Set<string>();\n const values: string[] = [];\n\n for (const value of registry.keys()) {\n if (!seen.has(value)) {\n seen.add(value);\n values.push(value);\n }\n }\n\n for (const value of Object.keys(staticItems)) {\n if (!seen.has(value)) {\n seen.add(value);\n values.push(value);\n }\n }\n\n return values;\n}\n","import React, { useMemo } from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport { resolveItemLabel } from \"../utils/labels\";\n\nexport interface ValueProps extends React.HTMLAttributes<HTMLSpanElement> {\n placeholder?: string | undefined;\n}\n\nexport function Value({ placeholder = \"\", ...props }: ValueProps) {\n const { store, config } = useSelectContext();\n const value = useSelectStore(store, (s) => s.value);\n const registry = useSelectStore(store, (s) => s.items);\n\n const label = useMemo(() => {\n if (config.multiple) {\n const values = Array.isArray(value) ? value : [];\n if (values.length === 0) return null;\n return values\n .map((itemValue) => resolveItemLabel(itemValue, registry, config.items))\n .join(\", \");\n }\n\n if (typeof value !== \"string\") return null;\n return resolveItemLabel(value, registry, config.items);\n }, [config.multiple, config.items, registry, value]);\n\n return (\n <span data-placeholder={label == null ? \"true\" : undefined} {...props}>\n {label ?? placeholder}\n </span>\n );\n}\n","import React from \"react\";\n\nexport type IconProps = React.HTMLAttributes<HTMLSpanElement>;\n\n/** Chevron/arrow slot — render your own icon as children. */\nexport function Icon({ children, ...props }: IconProps) {\n return (\n <span aria-hidden=\"true\" {...props}>\n {children ?? \"▾\"}\n </span>\n );\n}\n","import { createContext, useContext, type CSSProperties } from \"react\";\n\nexport interface PositionerContextValue {\n floatingStyles: CSSProperties;\n isPositioned: boolean;\n setFloating: (node: HTMLElement | null) => void;\n alignItemWithTriggerActive: boolean;\n}\n\nexport const PositionerContext = createContext<PositionerContextValue | null>(null);\n\nexport function usePositionerContext(): PositionerContextValue | null {\n return useContext(PositionerContext);\n}\n","import React, { createContext, useContext } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { SelectPortalContainer, SelectPortalProps } from \"../types\";\n\nexport const PortalContext = createContext(false);\n\nexport function usePortalContext(): boolean {\n return useContext(PortalContext);\n}\n\nexport function resolvePortalContainer(\n container: SelectPortalContainer | undefined,\n): HTMLElement | null {\n if (container == null) {\n return typeof document !== \"undefined\" ? document.body : null;\n }\n if (typeof HTMLElement !== \"undefined\" && container instanceof HTMLElement) {\n return container;\n }\n if (typeof container === \"object\" && \"current\" in container) {\n return container.current;\n }\n return null;\n}\n\nexport function Portal({ children, container = null }: SelectPortalProps) {\n const mountNode = resolvePortalContainer(container);\n\n if (!mountNode) {\n return null;\n }\n\n return <PortalContext.Provider value>{createPortal(children, mountNode)}</PortalContext.Provider>;\n}\n","import type { FloatingSide } from \"@kenos-ui/utils\";\n\nexport function getAlignItemWithTriggerOffset(\n alignItemWithTrigger: boolean,\n side: FloatingSide,\n triggerHeight: number,\n sideOffset: number,\n): number {\n if (!alignItemWithTrigger || triggerHeight <= 0) {\n return sideOffset;\n }\n\n if (side === \"bottom\" || side === \"top\") {\n return -triggerHeight + sideOffset;\n }\n\n return sideOffset;\n}\n\nexport function shouldDisableFlipForAlign(alignItemWithTrigger: boolean): boolean {\n return alignItemWithTrigger;\n}\n","import { useLayoutEffect, useState } from \"react\";\nimport type { FloatingSide } from \"@kenos-ui/utils\";\nimport type { SelectRefs } from \"../context\";\nimport { getAlignItemWithTriggerOffset, shouldDisableFlipForAlign } from \"./align-with-trigger\";\n\nexport interface AlignItemWithTriggerOptions {\n alignItemWithTrigger: boolean;\n side: FloatingSide;\n sideOffset: number;\n open: boolean;\n refs: SelectRefs;\n}\n\nexport function useAlignItemWithTrigger({\n alignItemWithTrigger,\n side,\n sideOffset,\n open,\n refs,\n}: AlignItemWithTriggerOptions) {\n const [triggerHeight, setTriggerHeight] = useState(0);\n\n useLayoutEffect(() => {\n if (!alignItemWithTrigger || !open) {\n setTriggerHeight(0);\n return;\n }\n\n const trigger = refs.triggerRef.current;\n if (!trigger) return;\n\n const update = () => setTriggerHeight(trigger.offsetHeight);\n update();\n\n const observer = new ResizeObserver(update);\n observer.observe(trigger);\n\n return () => observer.disconnect();\n }, [alignItemWithTrigger, open, refs.triggerRef]);\n\n const effectiveSideOffset = getAlignItemWithTriggerOffset(\n alignItemWithTrigger,\n side,\n triggerHeight,\n sideOffset,\n );\n\n const avoidCollisionsOverride = shouldDisableFlipForAlign(alignItemWithTrigger)\n ? false\n : undefined;\n\n return {\n alignItemWithTriggerActive: alignItemWithTrigger && triggerHeight > 0,\n effectiveSideOffset,\n avoidCollisionsOverride,\n };\n}\n","import React, {\n useEffect,\n useCallback,\n useLayoutEffect,\n useState,\n type KeyboardEvent,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n useFloating,\n usePresence,\n useClickOutside,\n useEscapeKey,\n useListNavigation,\n useTypeahead,\n useFocusTrap,\n} from \"@kenos-ui/utils\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport { usePositionerContext } from \"../positioner/PositionerContext\";\nimport { resolvePortalContainer, usePortalContext } from \"../portal/SelectPortal\";\nimport type { SelectContentProps } from \"../types\";\nimport { useAlignItemWithTrigger } from \"../utils/use-align-item-with-trigger\";\n\nexport function Content({\n children,\n forceMount,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n avoidCollisions = true,\n collisionPadding = 8,\n portal = false,\n container = null,\n sameWidth = false,\n alignItemWithTrigger = false,\n lazyMount = true,\n unmountOnExit = false,\n onOpenChangeComplete: onOpenChangeCompleteProp,\n style,\n onKeyDown,\n ...props\n}: SelectContentProps & React.HTMLAttributes<HTMLDivElement>) {\n const {\n store,\n ids,\n refs,\n config,\n close,\n selectValue,\n onOpenChangeComplete: onOpenChangeCompleteRoot,\n } = useSelectContext();\n const open = useSelectStore(store, (s) => s.open);\n const highlightedValue = useSelectStore(store, (s) => s.highlightedValue);\n const items = useSelectStore(store, (s) => s.items);\n const positionerContext = usePositionerContext();\n const isInsidePortal = usePortalContext();\n\n const onOpenChangeComplete = onOpenChangeCompleteProp ?? onOpenChangeCompleteRoot;\n\n const ownAlign = useAlignItemWithTrigger({\n alignItemWithTrigger: positionerContext ? false : alignItemWithTrigger,\n side,\n sideOffset,\n open,\n refs,\n });\n\n const ownFloating = useFloating({\n open: positionerContext ? false : open,\n side,\n align,\n sideOffset: ownAlign.effectiveSideOffset,\n alignOffset,\n avoidCollisions: ownAlign.avoidCollisionsOverride ?? avoidCollisions,\n collisionPadding,\n sameWidth,\n });\n\n const { setReference } = ownFloating;\n const setFloating = positionerContext?.setFloating ?? ownFloating.setFloating;\n const floatingStyles = positionerContext?.floatingStyles ?? ownFloating.floatingStyles;\n const isPositioned = positionerContext?.isPositioned ?? ownFloating.isPositioned;\n const alignItemWithTriggerActive =\n positionerContext?.alignItemWithTriggerActive ?? ownAlign.alignItemWithTriggerActive;\n\n useLayoutEffect(() => {\n if (positionerContext || !open) return;\n setReference(refs.triggerRef.current);\n }, [open, positionerContext, refs.triggerRef, setReference]);\n\n const mergedRef = useCallback(\n (node: HTMLDivElement | null) => {\n refs.contentRef.current = node;\n setFloating(node);\n },\n [refs.contentRef, setFloating],\n );\n\n const { present } = usePresence({\n open,\n lazyMount,\n unmountOnExit,\n onOpenChangeComplete,\n });\n\n useClickOutside([refs.contentRef, refs.triggerRef], close, open);\n\n useEscapeKey({\n enabled: open,\n stopPropagation: true,\n onEscape: close,\n });\n\n useFocusTrap(refs.contentRef, open && config.modal);\n\n const navItems = Array.from(items.values()).map((item) => ({\n value: item.value,\n disabled: item.disabled,\n }));\n\n const { onKeyDown: onNavKeyDown } = useListNavigation({\n enabled: open && !config.disabled && !config.readOnly,\n items: navItems,\n highlightedValue,\n onHighlight: (v) => store.setHighlightedValue(v),\n loop: true,\n });\n\n const typeaheadItems = Array.from(items.values()).map((item) => ({\n value: item.value,\n disabled: item.disabled,\n textValue: item.textValue,\n }));\n\n const { onKeyDown: onTypeaheadKeyDown } = useTypeahead({\n enabled: open && !config.disabled && !config.readOnly,\n items: typeaheadItems,\n onMatch: (v) => store.setHighlightedValue(v),\n });\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n if (highlightedValue != null) {\n e.preventDefault();\n const item = items.get(highlightedValue);\n if (item && !item.disabled) {\n selectValue(highlightedValue);\n }\n }\n return;\n }\n onNavKeyDown(e);\n onTypeaheadKeyDown(e);\n onKeyDown?.(e);\n },\n [highlightedValue, items, selectValue, onNavKeyDown, onTypeaheadKeyDown, onKeyDown],\n );\n\n const [transitionsReady, setTransitionsReady] = useState(false);\n useEffect(() => {\n if (!open || !isPositioned) {\n setTransitionsReady(false);\n return;\n }\n const raf = requestAnimationFrame(() => setTransitionsReady(true));\n return () => cancelAnimationFrame(raf);\n }, [open, isPositioned]);\n\n useEffect(() => {\n if (!open || !refs.contentRef.current) return;\n const state = store.getState();\n if (state.highlightedValue == null) {\n const first = navItems.find((i) => !i.disabled);\n if (first) store.setHighlightedValue(first.value);\n }\n refs.contentRef.current.focus({ preventScroll: true });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only run on open\n }, [open]);\n\n useEffect(() => {\n if (!open || !highlightedValue) return;\n const item = items.get(highlightedValue);\n if (typeof item?.ref?.scrollIntoView === \"function\") {\n item.ref.scrollIntoView({ block: \"nearest\" });\n }\n }, [highlightedValue, items, open]);\n\n if (!present && !forceMount) return null;\n\n const content = (\n <div\n ref={mergedRef}\n id={ids.content}\n data-state={open ? \"open\" : \"closed\"}\n data-open={open ? \"true\" : undefined}\n data-align-trigger={alignItemWithTriggerActive ? \"true\" : undefined}\n aria-modal={config.modal ? \"true\" : undefined}\n tabIndex={-1}\n style={{\n ...floatingStyles,\n ...(!open ? { display: \"none\" } : undefined),\n ...(open && !isPositioned ? { opacity: 0, pointerEvents: \"none\" } : undefined),\n ...(open && !transitionsReady ? { transition: \"none\" } : undefined),\n ...style,\n }}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n );\n\n if (isInsidePortal || !portal) {\n return content;\n }\n\n const mountNode = resolvePortalContainer(container);\n if (!mountNode) {\n return content;\n }\n\n return createPortal(content, mountNode);\n}\n","import React, { useLayoutEffect, useMemo } from \"react\";\nimport { useFloating } from \"@kenos-ui/utils\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport type { SelectPositionerProps } from \"../types\";\nimport { useAlignItemWithTrigger } from \"../utils/use-align-item-with-trigger\";\nimport { PositionerContext } from \"./PositionerContext\";\n\nexport function Positioner({\n children,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n avoidCollisions = true,\n collisionPadding = 8,\n sameWidth = false,\n alignItemWithTrigger = false,\n}: SelectPositionerProps) {\n const { store, refs } = useSelectContext();\n const open = useSelectStore(store, (s) => s.open);\n\n const { alignItemWithTriggerActive, effectiveSideOffset, avoidCollisionsOverride } =\n useAlignItemWithTrigger({\n alignItemWithTrigger,\n side,\n sideOffset,\n open,\n refs,\n });\n\n const { setReference, setFloating, floatingStyles, isPositioned } = useFloating({\n open,\n side,\n align,\n sideOffset: effectiveSideOffset,\n alignOffset,\n avoidCollisions: avoidCollisionsOverride ?? avoidCollisions,\n collisionPadding,\n sameWidth,\n });\n\n useLayoutEffect(() => {\n if (!open) return;\n setReference(refs.triggerRef.current);\n }, [open, refs.triggerRef, setReference]);\n\n const contextValue = useMemo(\n () => ({\n floatingStyles,\n isPositioned,\n setFloating,\n alignItemWithTriggerActive,\n }),\n [floatingStyles, isPositioned, setFloating, alignItemWithTriggerActive],\n );\n\n return <PositionerContext.Provider value={contextValue}>{children}</PositionerContext.Provider>;\n}\n","import React from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport type { SelectBackdropProps } from \"../types\";\n\nexport function Backdrop({ style, ...props }: SelectBackdropProps) {\n const { store, config } = useSelectContext();\n const open = useSelectStore(store, (s) => s.open);\n\n if (!config.modal) {\n return null;\n }\n\n return (\n <div\n role=\"presentation\"\n aria-hidden=\"true\"\n data-state={open ? \"open\" : \"closed\"}\n style={{\n position: \"fixed\",\n inset: 0,\n pointerEvents: open ? undefined : \"none\",\n ...style,\n }}\n {...props}\n />\n );\n}\n","import React, { useCallback } from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport type { SelectClearTriggerProps } from \"../types\";\n\nexport function ClearTrigger({ onClick, ...props }: SelectClearTriggerProps) {\n const { store, config, clearValue } = useSelectContext();\n const value = useSelectStore(store, (s) => s.value);\n\n const hasValue = config.multiple ? Array.isArray(value) && value.length > 0 : value != null;\n\n const handleActivate = useCallback(\n (e: React.SyntheticEvent) => {\n e.preventDefault();\n e.stopPropagation();\n clearValue();\n onClick?.(e as React.MouseEvent<HTMLSpanElement>);\n },\n [clearValue, onClick],\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n handleActivate(e);\n }\n },\n [handleActivate],\n );\n\n if (!hasValue || config.disabled || config.readOnly) {\n return null;\n }\n\n return (\n <span\n role=\"button\"\n tabIndex={0}\n aria-label=\"Clear selection\"\n onClick={handleActivate}\n onKeyDown={handleKeyDown}\n {...props}\n />\n );\n}\n","import React, { useEffect } from \"react\";\nimport { useSelectContext } from \"../context\";\n\nexport type ListProps = React.HTMLAttributes<HTMLUListElement> & {\n /**\n * When set, scrolls the list to the item at this index.\n * Useful with virtualization or controlled scroll sync.\n */\n scrollToIndex?: number | undefined;\n};\n\nexport function List({ children, scrollToIndex, ...props }: ListProps) {\n const { ids, refs, config, scrollToIndex: scrollToIndexFn } = useSelectContext();\n\n useEffect(() => {\n if (scrollToIndex == null || scrollToIndex < 0) return;\n scrollToIndexFn(scrollToIndex);\n }, [scrollToIndex, scrollToIndexFn]);\n\n return (\n <ul\n ref={refs.listRef}\n role=\"listbox\"\n id={`${ids.content}-list`}\n aria-labelledby={ids.label}\n aria-multiselectable={config.multiple ? true : undefined}\n {...props}\n >\n {children}\n </ul>\n );\n}\n","import React, { useRef, useLayoutEffect, useCallback } from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\n\nexport interface ItemProps extends React.HTMLAttributes<HTMLLIElement> {\n value: string;\n disabled?: boolean | undefined;\n textValue?: string | undefined;\n}\n\nItem.displayName = \"Select.Item\";\n\nexport function Item({\n value,\n disabled = false,\n textValue,\n children,\n onClick,\n onPointerMove,\n ...props\n}: ItemProps) {\n const { store, ids, config, selectValue } = useSelectContext();\n const selectedValue = useSelectStore(store, (s) => s.value);\n const highlightedValue = useSelectStore(store, (s) => s.highlightedValue);\n const liRef = useRef<HTMLLIElement>(null);\n\n const isSelected = config.multiple\n ? Array.isArray(selectedValue) &&\n selectedValue.some((item) => config.isItemEqualToValue(item, value))\n : typeof selectedValue === \"string\" && config.isItemEqualToValue(selectedValue, value);\n const isHighlighted = highlightedValue === value;\n const isDisabled = disabled || config.disabled || config.readOnly;\n\n useLayoutEffect(() => {\n const el = liRef.current;\n const label = textValue ?? el?.textContent ?? value;\n\n store.registerItem({\n value,\n label,\n textValue: textValue ?? label,\n disabled: isDisabled,\n ref: el,\n groupId: null,\n });\n\n return () => store.unregisterItem(value);\n }, [value, isDisabled, store, textValue, children]);\n\n useLayoutEffect(() => {\n store.updateItemRef(value, liRef.current);\n });\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLLIElement>) => {\n if (isDisabled) return;\n selectValue(value);\n onClick?.(e);\n },\n [isDisabled, selectValue, value, onClick],\n );\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent<HTMLLIElement>) => {\n if (!isDisabled) store.setHighlightedValue(value);\n onPointerMove?.(e);\n },\n [isDisabled, store, value, onPointerMove],\n );\n\n return (\n <li\n ref={liRef}\n id={`${ids.content}-opt-${value}`}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={isDisabled || undefined}\n data-highlighted={isHighlighted ? \"true\" : undefined}\n data-selected={isSelected ? \"true\" : undefined}\n data-disabled={isDisabled ? \"true\" : undefined}\n tabIndex={-1}\n onClick={handleClick}\n onPointerMove={handlePointerMove}\n {...props}\n >\n {children}\n </li>\n );\n}\n","import React from \"react\";\n\nexport type ItemTextProps = React.HTMLAttributes<HTMLSpanElement>;\n\n/** Text label for a Select.Item — also used by Select.Value to display the selected label. */\nexport function ItemText({ children, ...props }: ItemTextProps) {\n return <span {...props}>{children}</span>;\n}\n","import React from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\n\nexport interface ItemIndicatorProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** The item value to check — reads from the nearest Item when not provided. */\n value?: string | undefined;\n}\n\n/**\n * Renders only when the parent item is selected.\n * Wrap a checkmark or any indicator icon as children.\n */\nexport function ItemIndicator({ value, children, style, ...props }: ItemIndicatorProps) {\n const { store } = useSelectContext();\n const selectedValue = useSelectStore(store, (s) => s.value);\n\n const isSelected = value != null ? selectedValue === value : false;\n\n return (\n <span\n aria-hidden=\"true\"\n data-state={isSelected ? \"checked\" : \"unchecked\"}\n style={{ visibility: isSelected ? undefined : \"hidden\", ...style }}\n {...props}\n >\n {children}\n </span>\n );\n}\n","import { createContext, useContext } from \"react\";\n\nexport interface GroupContextValue {\n labelId: string;\n}\n\nexport const GroupContext = createContext<GroupContextValue | null>(null);\n\nexport function useGroupContext(): GroupContextValue | null {\n return useContext(GroupContext);\n}\n","import React, { useId } from \"react\";\nimport { GroupContext } from \"./GroupContext\";\n\nexport type GroupProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport function Group({ children, ...props }: GroupProps) {\n const groupId = useId();\n const labelId = `${groupId}-label`;\n\n return (\n <GroupContext.Provider value={{ labelId }}>\n <div role=\"group\" aria-labelledby={labelId} {...props}>\n {children}\n </div>\n </GroupContext.Provider>\n );\n}\n","import React from \"react\";\nimport { useGroupContext } from \"../group/GroupContext\";\n\nexport type GroupLabelProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport function GroupLabel({ children, ...props }: GroupLabelProps) {\n const group = useGroupContext();\n\n return (\n <div id={group?.labelId} {...props}>\n {children}\n </div>\n );\n}\n","import React from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport { mergeOptionValues, resolveItemLabel } from \"../utils/labels\";\n\nexport function HiddenSelect() {\n const { store, config } = useSelectContext();\n const value = useSelectStore(store, (s) => s.value);\n const registry = useSelectStore(store, (s) => s.items);\n\n if (!config.name) return null;\n\n const optionValues = mergeOptionValues(registry, config.items);\n const selectedValues = config.multiple\n ? Array.isArray(value)\n ? value\n : []\n : typeof value === \"string\"\n ? [value]\n : [];\n\n if (config.multiple) {\n const allOptionValues = [\n ...optionValues,\n ...selectedValues.filter(\n (selected) => !optionValues.some((v) => config.isItemEqualToValue(v, selected)),\n ),\n ];\n\n return (\n <select\n aria-hidden=\"true\"\n tabIndex={-1}\n name={config.name}\n multiple\n required={config.required}\n disabled={config.disabled}\n value={selectedValues}\n onChange={() => undefined}\n style={{\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: 0,\n overflow: \"hidden\",\n clip: \"rect(0,0,0,0)\",\n whiteSpace: \"nowrap\",\n pointerEvents: \"none\",\n opacity: 0,\n }}\n data-part=\"hidden-select\"\n >\n {allOptionValues.map((optionValue) => {\n const record = registry.get(optionValue);\n return (\n <option key={optionValue} value={optionValue} disabled={record?.disabled}>\n {resolveItemLabel(optionValue, registry, config.items)}\n </option>\n );\n })}\n </select>\n );\n }\n\n const singleValue = typeof value === \"string\" ? value : \"\";\n const hasValueOption =\n singleValue !== \"\" && optionValues.some((v) => config.isItemEqualToValue(v, singleValue));\n\n return (\n <select\n aria-hidden=\"true\"\n tabIndex={-1}\n name={config.name}\n required={config.required}\n disabled={config.disabled}\n value={singleValue}\n onChange={() => undefined}\n style={{\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: 0,\n overflow: \"hidden\",\n clip: \"rect(0,0,0,0)\",\n whiteSpace: \"nowrap\",\n pointerEvents: \"none\",\n opacity: 0,\n }}\n data-part=\"hidden-select\"\n >\n <option value=\"\" disabled hidden />\n {optionValues.map((optionValue) => {\n const record = registry.get(optionValue);\n return (\n <option key={optionValue} value={optionValue} disabled={record?.disabled}>\n {resolveItemLabel(optionValue, registry, config.items)}\n </option>\n );\n })}\n {singleValue !== \"\" && !hasValueOption && <option value={singleValue}>{singleValue}</option>}\n </select>\n );\n}\n","import { useCallback, useLayoutEffect, useState, type RefObject } from \"react\";\n\nexport interface ListScrollOverflow {\n canScrollUp: boolean;\n canScrollDown: boolean;\n update: () => void;\n}\n\nexport function useListScrollOverflow(\n listRef: RefObject<HTMLUListElement | null>,\n enabled: boolean,\n): ListScrollOverflow {\n const [canScrollUp, setCanScrollUp] = useState(false);\n const [canScrollDown, setCanScrollDown] = useState(false);\n\n const update = useCallback(() => {\n const list = listRef.current;\n if (!list) {\n setCanScrollUp(false);\n setCanScrollDown(false);\n return;\n }\n\n const { scrollTop, scrollHeight, clientHeight } = list;\n setCanScrollUp(scrollTop > 0);\n setCanScrollDown(scrollTop + clientHeight < scrollHeight - 1);\n }, [listRef]);\n\n useLayoutEffect(() => {\n if (!enabled) {\n setCanScrollUp(false);\n setCanScrollDown(false);\n return;\n }\n\n update();\n\n const list = listRef.current;\n if (!list) return;\n\n list.addEventListener(\"scroll\", update, { passive: true });\n\n const observer = new ResizeObserver(update);\n observer.observe(list);\n\n return () => {\n list.removeEventListener(\"scroll\", update);\n observer.disconnect();\n };\n }, [enabled, listRef, update]);\n\n return { canScrollUp, canScrollDown, update };\n}\n","import React, { useCallback } from \"react\";\nimport { useSelectContext } from \"../context\";\nimport { useSelectStore } from \"../store\";\nimport { useListScrollOverflow } from \"../utils/use-list-scroll-overflow\";\nimport type { SelectScrollButtonProps } from \"../types\";\n\nconst SCROLL_STEP_PX = 40;\n\nexport function ScrollButton({\n direction,\n keepMounted = false,\n onClick,\n children,\n style,\n ...props\n}: SelectScrollButtonProps) {\n const { store, refs } = useSelectContext();\n const open = useSelectStore(store, (s) => s.open);\n const isUp = direction === \"up\";\n\n const { canScrollUp, canScrollDown, update } = useListScrollOverflow(refs.listRef, open);\n const visible = isUp ? canScrollUp : canScrollDown;\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n const list = refs.listRef.current;\n if (list) {\n const delta = isUp ? -SCROLL_STEP_PX : SCROLL_STEP_PX;\n if (typeof list.scrollBy === \"function\") {\n list.scrollBy({ top: delta, behavior: \"smooth\" });\n } else {\n list.scrollTop += delta;\n }\n list.dispatchEvent(new Event(\"scroll\"));\n update();\n }\n onClick?.(event);\n },\n [isUp, onClick, refs.listRef, update],\n );\n\n if (!visible && !keepMounted) {\n return null;\n }\n\n return (\n <button\n type=\"button\"\n aria-hidden\n tabIndex={-1}\n data-direction={direction}\n data-visible={visible ? \"true\" : \"false\"}\n style={{\n display: visible || keepMounted ? undefined : \"none\",\n ...style,\n }}\n onClick={handleClick}\n {...props}\n >\n {children ?? (isUp ? \"▲\" : \"▼\")}\n </button>\n );\n}\n","import React from \"react\";\nimport { ScrollButton } from \"../scroll-button/SelectScrollButton\";\nimport type { SelectScrollButtonProps } from \"../types\";\n\nexport type ScrollUpButtonProps = Omit<SelectScrollButtonProps, \"direction\">;\n\nexport function ScrollUpButton(props: ScrollUpButtonProps) {\n return <ScrollButton direction=\"up\" {...props} />;\n}\n","import React from \"react\";\nimport { ScrollButton } from \"../scroll-button/SelectScrollButton\";\nimport type { SelectScrollButtonProps } from \"../types\";\n\nexport type ScrollDownButtonProps = Omit<SelectScrollButtonProps, \"direction\">;\n\nexport function ScrollDownButton(props: ScrollDownButtonProps) {\n return <ScrollButton direction=\"down\" {...props} />;\n}\n"]}
package/dist/index.d.cts CHANGED
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import React, { HTMLAttributes, ReactNode, RefObject, ButtonHTMLAttributes } from 'react';
3
2
 
4
3
  interface SelectItemRecord {
@@ -151,10 +150,10 @@ interface SelectContentProps {
151
150
  onOpenChangeComplete?: ((open: boolean) => void) | undefined;
152
151
  }
153
152
 
154
- declare function Root(props: SelectRootProps): react_jsx_runtime.JSX.Element;
153
+ declare function Root(props: SelectRootProps): React.JSX.Element;
155
154
 
156
155
  type LabelProps = React.LabelHTMLAttributes<HTMLLabelElement>;
157
- declare function Label({ children, ...props }: LabelProps): react_jsx_runtime.JSX.Element;
156
+ declare function Label({ children, ...props }: LabelProps): React.JSX.Element;
158
157
 
159
158
  type TriggerProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "aria-haspopup" | "aria-expanded" | "aria-controls"> & {
160
159
  /**
@@ -163,26 +162,26 @@ type TriggerProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "aria-ha
163
162
  */
164
163
  openOnFocus?: boolean | undefined;
165
164
  };
166
- declare function Trigger({ children, onClick, onFocus, disabled, openOnFocus: openOnFocusProp, ...props }: TriggerProps): react_jsx_runtime.JSX.Element;
165
+ declare function Trigger({ children, onClick, onFocus, disabled, openOnFocus: openOnFocusProp, ...props }: TriggerProps): React.JSX.Element;
167
166
 
168
167
  interface ValueProps extends React.HTMLAttributes<HTMLSpanElement> {
169
168
  placeholder?: string | undefined;
170
169
  }
171
- declare function Value({ placeholder, ...props }: ValueProps): react_jsx_runtime.JSX.Element;
170
+ declare function Value({ placeholder, ...props }: ValueProps): React.JSX.Element;
172
171
 
173
172
  type IconProps = React.HTMLAttributes<HTMLSpanElement>;
174
173
  /** Chevron/arrow slot — render your own icon as children. */
175
- declare function Icon({ children, ...props }: IconProps): react_jsx_runtime.JSX.Element;
174
+ declare function Icon({ children, ...props }: IconProps): React.JSX.Element;
176
175
 
177
- declare function Content({ children, forceMount, side, align, sideOffset, alignOffset, avoidCollisions, collisionPadding, portal, container, sameWidth, alignItemWithTrigger, lazyMount, unmountOnExit, onOpenChangeComplete: onOpenChangeCompleteProp, style, onKeyDown, ...props }: SelectContentProps & React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element | null;
176
+ declare function Content({ children, forceMount, side, align, sideOffset, alignOffset, avoidCollisions, collisionPadding, portal, container, sameWidth, alignItemWithTrigger, lazyMount, unmountOnExit, onOpenChangeComplete: onOpenChangeCompleteProp, style, onKeyDown, ...props }: SelectContentProps & React.HTMLAttributes<HTMLDivElement>): React.JSX.Element | null;
178
177
 
179
- declare function Portal({ children, container }: SelectPortalProps): react_jsx_runtime.JSX.Element | null;
178
+ declare function Portal({ children, container }: SelectPortalProps): React.JSX.Element | null;
180
179
 
181
- declare function Positioner({ children, side, align, sideOffset, alignOffset, avoidCollisions, collisionPadding, sameWidth, alignItemWithTrigger, }: SelectPositionerProps): react_jsx_runtime.JSX.Element;
180
+ declare function Positioner({ children, side, align, sideOffset, alignOffset, avoidCollisions, collisionPadding, sameWidth, alignItemWithTrigger, }: SelectPositionerProps): React.JSX.Element;
182
181
 
183
- declare function Backdrop({ style, ...props }: SelectBackdropProps): react_jsx_runtime.JSX.Element | null;
182
+ declare function Backdrop({ style, ...props }: SelectBackdropProps): React.JSX.Element | null;
184
183
 
185
- declare function ClearTrigger({ onClick, ...props }: SelectClearTriggerProps): react_jsx_runtime.JSX.Element | null;
184
+ declare function ClearTrigger({ onClick, ...props }: SelectClearTriggerProps): React.JSX.Element | null;
186
185
 
187
186
  type ListProps = React.HTMLAttributes<HTMLUListElement> & {
188
187
  /**
@@ -191,21 +190,21 @@ type ListProps = React.HTMLAttributes<HTMLUListElement> & {
191
190
  */
192
191
  scrollToIndex?: number | undefined;
193
192
  };
194
- declare function List({ children, scrollToIndex, ...props }: ListProps): react_jsx_runtime.JSX.Element;
193
+ declare function List({ children, scrollToIndex, ...props }: ListProps): React.JSX.Element;
195
194
 
196
195
  interface ItemProps extends React.HTMLAttributes<HTMLLIElement> {
197
196
  value: string;
198
197
  disabled?: boolean | undefined;
199
198
  textValue?: string | undefined;
200
199
  }
201
- declare function Item({ value, disabled, textValue, children, onClick, onPointerMove, ...props }: ItemProps): react_jsx_runtime.JSX.Element;
200
+ declare function Item({ value, disabled, textValue, children, onClick, onPointerMove, ...props }: ItemProps): React.JSX.Element;
202
201
  declare namespace Item {
203
202
  var displayName: string;
204
203
  }
205
204
 
206
205
  type ItemTextProps = React.HTMLAttributes<HTMLSpanElement>;
207
206
  /** Text label for a Select.Item — also used by Select.Value to display the selected label. */
208
- declare function ItemText({ children, ...props }: ItemTextProps): react_jsx_runtime.JSX.Element;
207
+ declare function ItemText({ children, ...props }: ItemTextProps): React.JSX.Element;
209
208
 
210
209
  interface ItemIndicatorProps extends React.HTMLAttributes<HTMLSpanElement> {
211
210
  /** The item value to check — reads from the nearest Item when not provided. */
@@ -215,21 +214,21 @@ interface ItemIndicatorProps extends React.HTMLAttributes<HTMLSpanElement> {
215
214
  * Renders only when the parent item is selected.
216
215
  * Wrap a checkmark or any indicator icon as children.
217
216
  */
218
- declare function ItemIndicator({ value, children, style, ...props }: ItemIndicatorProps): react_jsx_runtime.JSX.Element;
217
+ declare function ItemIndicator({ value, children, style, ...props }: ItemIndicatorProps): React.JSX.Element;
219
218
 
220
219
  type GroupProps = React.HTMLAttributes<HTMLDivElement>;
221
- declare function Group({ children, ...props }: GroupProps): react_jsx_runtime.JSX.Element;
220
+ declare function Group({ children, ...props }: GroupProps): React.JSX.Element;
222
221
 
223
222
  type GroupLabelProps = React.HTMLAttributes<HTMLDivElement>;
224
- declare function GroupLabel({ children, ...props }: GroupLabelProps): react_jsx_runtime.JSX.Element;
223
+ declare function GroupLabel({ children, ...props }: GroupLabelProps): React.JSX.Element;
225
224
 
226
- declare function HiddenSelect(): react_jsx_runtime.JSX.Element | null;
225
+ declare function HiddenSelect(): React.JSX.Element | null;
227
226
 
228
227
  type ScrollUpButtonProps = Omit<SelectScrollButtonProps, "direction">;
229
- declare function ScrollUpButton(props: ScrollUpButtonProps): react_jsx_runtime.JSX.Element;
228
+ declare function ScrollUpButton(props: ScrollUpButtonProps): React.JSX.Element;
230
229
 
231
230
  type ScrollDownButtonProps = Omit<SelectScrollButtonProps, "direction">;
232
- declare function ScrollDownButton(props: ScrollDownButtonProps): react_jsx_runtime.JSX.Element;
231
+ declare function ScrollDownButton(props: ScrollDownButtonProps): React.JSX.Element;
233
232
 
234
233
  declare const index_parts_Backdrop: typeof Backdrop;
235
234
  declare const index_parts_ClearTrigger: typeof ClearTrigger;