@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.
package/dist/index.js.map CHANGED
@@ -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":["useRef","useCallback","jsx","useMemo","createContext","useContext","useLayoutEffect","useState","useEffect","createPortal","useFloating","useId"],"mappings":"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","file":"index.js","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":["useRef","useCallback","jsx","useMemo","createContext","useContext","useLayoutEffect","useState","useEffect","createPortal","useFloating","useId"],"mappings":"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","file":"index.js","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/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@kenos-ui/react-select",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Headless Select primitive for React — Kenos UI",
5
+ "license": "MIT",
5
6
  "repository": {
6
7
  "type": "git",
7
8
  "url": "https://github.com/allysontsoares/kenos-ui",
@@ -28,7 +29,7 @@
28
29
  "access": "public"
29
30
  },
30
31
  "dependencies": {
31
- "@kenos-ui/utils": "0.0.1"
32
+ "@kenos-ui/utils": "1.0.0"
32
33
  },
33
34
  "devDependencies": {
34
35
  "@testing-library/jest-dom": "^6.4.0",