@component-labs/ui 0.0.1

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.
Files changed (114) hide show
  1. package/dist/HMKTUWOU-DlOdK4rt.js +25 -0
  2. package/dist/HMKTUWOU-DlOdK4rt.js.map +1 -0
  3. package/dist/HOITXJDS-DBccNHOl.js +48 -0
  4. package/dist/HOITXJDS-DBccNHOl.js.map +1 -0
  5. package/dist/I7KWAPMF-CcAk8kiH.js +86 -0
  6. package/dist/I7KWAPMF-CcAk8kiH.js.map +1 -0
  7. package/dist/IQYAUKXT-CoP_Jrsi.js +546 -0
  8. package/dist/IQYAUKXT-CoP_Jrsi.js.map +1 -0
  9. package/dist/PZ3OL7I2-h7WHitqi.js +61 -0
  10. package/dist/PZ3OL7I2-h7WHitqi.js.map +1 -0
  11. package/dist/Provider.d.ts +8 -0
  12. package/dist/Provider.d.ts.map +1 -0
  13. package/dist/Q5W46E73-DjlVG3LH.js +353 -0
  14. package/dist/Q5W46E73-DjlVG3LH.js.map +1 -0
  15. package/dist/U6HHPQDW-BkT6kvCd.js +888 -0
  16. package/dist/U6HHPQDW-BkT6kvCd.js.map +1 -0
  17. package/dist/X6LNAU2F-DroCIVyL.js +1692 -0
  18. package/dist/X6LNAU2F-DroCIVyL.js.map +1 -0
  19. package/dist/Z32PU2LQ-CPSDShGU.js +1116 -0
  20. package/dist/Z32PU2LQ-CPSDShGU.js.map +1 -0
  21. package/dist/button.d.ts +4 -0
  22. package/dist/button.d.ts.map +1 -0
  23. package/dist/button.js +252 -0
  24. package/dist/button.js.map +1 -0
  25. package/dist/checkbox.d.ts +4 -0
  26. package/dist/checkbox.d.ts.map +1 -0
  27. package/dist/checkbox.js +210 -0
  28. package/dist/checkbox.js.map +1 -0
  29. package/dist/combobox.d.ts +4 -0
  30. package/dist/combobox.d.ts.map +1 -0
  31. package/dist/combobox.js +948 -0
  32. package/dist/combobox.js.map +1 -0
  33. package/dist/components/button/Button.d.ts +26 -0
  34. package/dist/components/button/Button.d.ts.map +1 -0
  35. package/dist/components/button/Button.docs.d.ts +4 -0
  36. package/dist/components/button/Button.docs.d.ts.map +1 -0
  37. package/dist/components/button/Button.showcase.d.ts +40 -0
  38. package/dist/components/button/Button.showcase.d.ts.map +1 -0
  39. package/dist/components/checkbox/Checkbox.d.ts +19 -0
  40. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  41. package/dist/components/checkbox/Checkbox.docs.d.ts +4 -0
  42. package/dist/components/checkbox/Checkbox.docs.d.ts.map +1 -0
  43. package/dist/components/checkbox/Checkbox.showcase.d.ts +35 -0
  44. package/dist/components/checkbox/Checkbox.showcase.d.ts.map +1 -0
  45. package/dist/components/combobox/Combobox.d.ts +36 -0
  46. package/dist/components/combobox/Combobox.d.ts.map +1 -0
  47. package/dist/components/combobox/Combobox.docs.d.ts +4 -0
  48. package/dist/components/combobox/Combobox.docs.d.ts.map +1 -0
  49. package/dist/components/combobox/Combobox.showcase.d.ts +43 -0
  50. package/dist/components/combobox/Combobox.showcase.d.ts.map +1 -0
  51. package/dist/components/data-table/DataTable.d.ts +86 -0
  52. package/dist/components/data-table/DataTable.d.ts.map +1 -0
  53. package/dist/components/data-table/DataTable.docs.d.ts +4 -0
  54. package/dist/components/data-table/DataTable.docs.d.ts.map +1 -0
  55. package/dist/components/data-table/DataTable.showcase.d.ts +36 -0
  56. package/dist/components/data-table/DataTable.showcase.d.ts.map +1 -0
  57. package/dist/components/date-picker/date-picker.d.ts +1 -0
  58. package/dist/components/date-picker/date-picker.d.ts.map +1 -0
  59. package/dist/components/dialog/Dialog.d.ts +56 -0
  60. package/dist/components/dialog/Dialog.d.ts.map +1 -0
  61. package/dist/components/dialog/Dialog.docs.d.ts +4 -0
  62. package/dist/components/dialog/Dialog.docs.d.ts.map +1 -0
  63. package/dist/components/input/Input.d.ts +22 -0
  64. package/dist/components/input/Input.d.ts.map +1 -0
  65. package/dist/components/input/Input.docs.d.ts +4 -0
  66. package/dist/components/input/Input.docs.d.ts.map +1 -0
  67. package/dist/components/menu/Menu.d.ts +41 -0
  68. package/dist/components/menu/Menu.d.ts.map +1 -0
  69. package/dist/components/menu/Menu.docs.d.ts +4 -0
  70. package/dist/components/menu/Menu.docs.d.ts.map +1 -0
  71. package/dist/components/menu/Menu.showcase.d.ts +43 -0
  72. package/dist/components/menu/Menu.showcase.d.ts.map +1 -0
  73. package/dist/components/slider/date-picker.d.ts +1 -0
  74. package/dist/components/slider/date-picker.d.ts.map +1 -0
  75. package/dist/components/sub-menu/date-picker.d.ts +1 -0
  76. package/dist/components/sub-menu/date-picker.d.ts.map +1 -0
  77. package/dist/components/switch/Switch.d.ts +17 -0
  78. package/dist/components/switch/Switch.d.ts.map +1 -0
  79. package/dist/components/switch/Switch.docs.d.ts +4 -0
  80. package/dist/components/switch/Switch.docs.d.ts.map +1 -0
  81. package/dist/components/toast/date-picker.d.ts +1 -0
  82. package/dist/components/toast/date-picker.d.ts.map +1 -0
  83. package/dist/data-table.d.ts +4 -0
  84. package/dist/data-table.d.ts.map +1 -0
  85. package/dist/data-table.js +298 -0
  86. package/dist/data-table.js.map +1 -0
  87. package/dist/dialog.d.ts +4 -0
  88. package/dist/dialog.d.ts.map +1 -0
  89. package/dist/dialog.js +323 -0
  90. package/dist/dialog.js.map +1 -0
  91. package/dist/index.d.ts +27 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/input.d.ts +4 -0
  94. package/dist/input.d.ts.map +1 -0
  95. package/dist/input.js +230 -0
  96. package/dist/input.js.map +1 -0
  97. package/dist/lib/IntersectionObserver.d.ts +30 -0
  98. package/dist/lib/IntersectionObserver.d.ts.map +1 -0
  99. package/dist/lib/utils.d.ts +7 -0
  100. package/dist/lib/utils.d.ts.map +1 -0
  101. package/dist/menu.d.ts +4 -0
  102. package/dist/menu.d.ts.map +1 -0
  103. package/dist/menu.js +1335 -0
  104. package/dist/menu.js.map +1 -0
  105. package/dist/switch.d.ts +4 -0
  106. package/dist/switch.d.ts.map +1 -0
  107. package/dist/switch.js +194 -0
  108. package/dist/switch.js.map +1 -0
  109. package/dist/types/docs.d.ts +24 -0
  110. package/dist/types/docs.d.ts.map +1 -0
  111. package/dist/utils-BZvHF7th.js +2806 -0
  112. package/dist/utils-BZvHF7th.js.map +1 -0
  113. package/package.json +98 -0
  114. package/src/styles.css +91 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combobox.js","sources":["../../../node_modules/.pnpm/@ariakit+react-core@0.4.21_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@ariakit/react-core/esm/combobox/combobox.js","../../../node_modules/.pnpm/@ariakit+react-core@0.4.21_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@ariakit/react-core/esm/combobox/combobox-cancel.js","../../../node_modules/.pnpm/@ariakit+react-core@0.4.21_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@ariakit/react-core/esm/__chunks/IBXZ2LQC.js","../../../node_modules/.pnpm/@ariakit+react-core@0.4.21_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@ariakit/react-core/esm/__chunks/2G6YEJT4.js","../../../node_modules/.pnpm/@ariakit+react-core@0.4.21_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@ariakit/react-core/esm/combobox/combobox-popover.js","../../../node_modules/.pnpm/@ariakit+react-core@0.4.21_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@ariakit/react-core/esm/__chunks/XSIEPKGA.js","../../../node_modules/.pnpm/@ariakit+core@0.4.18/node_modules/@ariakit/core/esm/combobox/combobox-store.js","../../../node_modules/.pnpm/@ariakit+react-core@0.4.21_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@ariakit/react-core/esm/__chunks/SVN33SY6.js","../../../node_modules/.pnpm/@ariakit+react-core@0.4.21_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@ariakit/react-core/esm/combobox/combobox-provider.js","../src/components/combobox/Combobox.tsx","../src/components/combobox/Combobox.docs.ts"],"sourcesContent":["\"use client\";\nimport {\n useComposite\n} from \"../__chunks/ZMWF7ASR.js\";\nimport {\n usePopoverAnchor\n} from \"../__chunks/4POTBZ2J.js\";\nimport \"../__chunks/5VQZOHHZ.js\";\nimport {\n useComboboxProviderContext\n} from \"../__chunks/CVCFNOHX.js\";\nimport \"../__chunks/JMU4N4M5.js\";\nimport \"../__chunks/A62MDFCW.js\";\nimport \"../__chunks/LVDQFHCH.js\";\nimport \"../__chunks/AVVXDJMZ.js\";\nimport \"../__chunks/U6HHPQDW.js\";\nimport \"../__chunks/SWN3JYXT.js\";\nimport \"../__chunks/SMPCIMZM.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"../__chunks/GWSL6KNJ.js\";\nimport {\n useBooleanEvent,\n useEvent,\n useForceUpdate,\n useId,\n useMergeRefs,\n useSafeLayoutEffect,\n useUpdateEffect,\n useUpdateLayoutEffect\n} from \"../__chunks/KPHZR4MB.js\";\nimport \"../__chunks/YXGXYGQX.js\";\n\n// src/combobox/combobox.tsx\nimport {\n getPopupRole,\n getScrollingElement,\n getTextboxSelection,\n setSelectionRange\n} from \"@ariakit/core/utils/dom\";\nimport {\n isFocusEventOutside,\n queueBeforeEvent\n} from \"@ariakit/core/utils/events\";\nimport { hasFocus } from \"@ariakit/core/utils/focus\";\nimport {\n invariant,\n isFalsyBooleanCallback,\n noop,\n normalizeString\n} from \"@ariakit/core/utils/misc\";\nimport { sync } from \"@ariakit/core/utils/store\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nvar TagName = \"input\";\nfunction isFirstItemAutoSelected(items, activeValue, autoSelect) {\n if (!autoSelect) return false;\n const firstItem = items.find((item) => !item.disabled && item.value);\n return (firstItem == null ? void 0 : firstItem.value) === activeValue;\n}\nfunction hasCompletionString(value, activeValue) {\n if (!activeValue) return false;\n if (value == null) return false;\n value = normalizeString(value);\n return activeValue.length > value.length && activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0;\n}\nfunction isInputEvent(event) {\n return event.type === \"input\";\n}\nfunction isAriaAutoCompleteValue(value) {\n return value === \"inline\" || value === \"list\" || value === \"both\" || value === \"none\";\n}\nfunction getDefaultAutoSelectId(items) {\n const item = items.find((item2) => {\n var _a;\n if (item2.disabled) return false;\n return ((_a = item2.element) == null ? void 0 : _a.getAttribute(\"role\")) !== \"tab\";\n });\n return item == null ? void 0 : item.id;\n}\nvar useCombobox = createHook(\n function useCombobox2({\n store,\n focusable = true,\n autoSelect: autoSelectProp = false,\n getAutoSelectId,\n setValueOnChange,\n showMinLength = 0,\n showOnChange,\n showOnMouseDown,\n showOnClick = showOnMouseDown,\n showOnKeyDown,\n showOnKeyPress = showOnKeyDown,\n blurActiveItemOnClick,\n setValueOnClick = true,\n moveOnKeyPress = true,\n autoComplete = \"list\",\n ...props\n }) {\n const context = useComboboxProviderContext();\n store = store || context;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"Combobox must receive a `store` prop or be wrapped in a ComboboxProvider component.\"\n );\n const ref = useRef(null);\n const [valueUpdated, forceValueUpdate] = useForceUpdate();\n const canAutoSelectRef = useRef(false);\n const composingRef = useRef(false);\n const autoSelect = store.useState(\n (state) => state.virtualFocus && autoSelectProp\n );\n const inline = autoComplete === \"inline\" || autoComplete === \"both\";\n const [canInline, setCanInline] = useState(inline);\n useUpdateLayoutEffect(() => {\n if (!inline) return;\n setCanInline(true);\n }, [inline]);\n const storeValue = store.useState(\"value\");\n const prevSelectedValueRef = useRef(void 0);\n useEffect(() => {\n return sync(store, [\"selectedValue\", \"activeId\"], (_, prev) => {\n prevSelectedValueRef.current = prev.selectedValue;\n });\n }, []);\n const inlineActiveValue = store.useState((state) => {\n var _a;\n if (!inline) return;\n if (!canInline) return;\n if (state.activeValue && Array.isArray(state.selectedValue)) {\n if (state.selectedValue.includes(state.activeValue)) return;\n if ((_a = prevSelectedValueRef.current) == null ? void 0 : _a.includes(state.activeValue)) return;\n }\n return state.activeValue;\n });\n const items = store.useState(\"renderedItems\");\n const open = store.useState(\"open\");\n const contentElement = store.useState(\"contentElement\");\n const value = useMemo(() => {\n if (!inline) return storeValue;\n if (!canInline) return storeValue;\n const firstItemAutoSelected = isFirstItemAutoSelected(\n items,\n inlineActiveValue,\n autoSelect\n );\n if (firstItemAutoSelected) {\n if (hasCompletionString(storeValue, inlineActiveValue)) {\n const slice = (inlineActiveValue == null ? void 0 : inlineActiveValue.slice(storeValue.length)) || \"\";\n return storeValue + slice;\n }\n return storeValue;\n }\n return inlineActiveValue || storeValue;\n }, [inline, canInline, items, inlineActiveValue, autoSelect, storeValue]);\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n const onCompositeItemMove = () => setCanInline(true);\n element.addEventListener(\"combobox-item-move\", onCompositeItemMove);\n return () => {\n element.removeEventListener(\"combobox-item-move\", onCompositeItemMove);\n };\n }, []);\n useEffect(() => {\n if (!inline) return;\n if (!canInline) return;\n if (!inlineActiveValue) return;\n const firstItemAutoSelected = isFirstItemAutoSelected(\n items,\n inlineActiveValue,\n autoSelect\n );\n if (!firstItemAutoSelected) return;\n if (!hasCompletionString(storeValue, inlineActiveValue)) return;\n let cleanup = noop;\n queueMicrotask(() => {\n const element = ref.current;\n if (!element) return;\n const { start: prevStart, end: prevEnd } = getTextboxSelection(element);\n const nextStart = storeValue.length;\n const nextEnd = inlineActiveValue.length;\n setSelectionRange(element, nextStart, nextEnd);\n cleanup = () => {\n if (!hasFocus(element)) return;\n const { start, end } = getTextboxSelection(element);\n if (start !== nextStart) return;\n if (end !== nextEnd) return;\n setSelectionRange(element, prevStart, prevEnd);\n };\n });\n return () => cleanup();\n }, [\n valueUpdated,\n inline,\n canInline,\n inlineActiveValue,\n items,\n autoSelect,\n storeValue\n ]);\n const scrollingElementRef = useRef(null);\n const getAutoSelectIdProp = useEvent(getAutoSelectId);\n const autoSelectIdRef = useRef(null);\n useEffect(() => {\n if (!open) return;\n if (!contentElement) return;\n const scrollingElement = getScrollingElement(contentElement);\n if (!scrollingElement) return;\n scrollingElementRef.current = scrollingElement;\n const onUserScroll = () => {\n canAutoSelectRef.current = false;\n };\n const onScroll = () => {\n if (!store) return;\n if (!canAutoSelectRef.current) return;\n const { activeId } = store.getState();\n if (activeId === null) return;\n if (activeId === autoSelectIdRef.current) return;\n canAutoSelectRef.current = false;\n };\n const options = { passive: true, capture: true };\n scrollingElement.addEventListener(\"wheel\", onUserScroll, options);\n scrollingElement.addEventListener(\"touchmove\", onUserScroll, options);\n scrollingElement.addEventListener(\"scroll\", onScroll, options);\n return () => {\n scrollingElement.removeEventListener(\"wheel\", onUserScroll, true);\n scrollingElement.removeEventListener(\"touchmove\", onUserScroll, true);\n scrollingElement.removeEventListener(\"scroll\", onScroll, true);\n };\n }, [open, contentElement, store]);\n useSafeLayoutEffect(() => {\n if (!storeValue) return;\n if (composingRef.current) return;\n canAutoSelectRef.current = true;\n }, [storeValue]);\n useSafeLayoutEffect(() => {\n if (autoSelect !== \"always\" && open) return;\n canAutoSelectRef.current = open;\n }, [autoSelect, open]);\n const resetValueOnSelect = store.useState(\"resetValueOnSelect\");\n useUpdateEffect(() => {\n var _a, _b;\n const canAutoSelect = canAutoSelectRef.current;\n if (!store) return;\n if (!open) return;\n if (!canAutoSelect && !resetValueOnSelect) return;\n const { baseElement, contentElement: contentElement2, activeId } = store.getState();\n if (baseElement && !hasFocus(baseElement)) return;\n if (contentElement2 == null ? void 0 : contentElement2.hasAttribute(\"data-placing\")) {\n const observer = new MutationObserver(forceValueUpdate);\n observer.observe(contentElement2, { attributeFilter: [\"data-placing\"] });\n return () => observer.disconnect();\n }\n if (autoSelect && canAutoSelect) {\n const userAutoSelectId = getAutoSelectIdProp(items);\n const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : (_a = getDefaultAutoSelectId(items)) != null ? _a : store.first();\n autoSelectIdRef.current = autoSelectId;\n store.move(autoSelectId != null ? autoSelectId : null);\n } else {\n const element = (_b = store.item(activeId || store.first())) == null ? void 0 : _b.element;\n if (element && \"scrollIntoView\" in element) {\n element.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n }\n }\n return;\n }, [\n store,\n open,\n valueUpdated,\n storeValue,\n autoSelect,\n resetValueOnSelect,\n getAutoSelectIdProp,\n items\n ]);\n useEffect(() => {\n if (!inline) return;\n const combobox = ref.current;\n if (!combobox) return;\n const elements = [combobox, contentElement].filter(\n (value2) => !!value2\n );\n const onBlur2 = (event) => {\n if (elements.every((el) => isFocusEventOutside(event, el))) {\n store == null ? void 0 : store.setValue(value);\n }\n };\n for (const element of elements) {\n element.addEventListener(\"focusout\", onBlur2);\n }\n return () => {\n for (const element of elements) {\n element.removeEventListener(\"focusout\", onBlur2);\n }\n };\n }, [inline, contentElement, store, value]);\n const canShow = (event) => {\n const currentTarget = event.currentTarget;\n return currentTarget.value.length >= showMinLength;\n };\n const onChangeProp = props.onChange;\n const showOnChangeProp = useBooleanEvent(showOnChange != null ? showOnChange : canShow);\n const setValueOnChangeProp = useBooleanEvent(\n // If the combobox is combined with tags, the value will be set by the tag\n // input component.\n setValueOnChange != null ? setValueOnChange : !store.tag\n );\n const onChange = useEvent((event) => {\n onChangeProp == null ? void 0 : onChangeProp(event);\n if (event.defaultPrevented) return;\n if (!store) return;\n const currentTarget = event.currentTarget;\n const { value: value2, selectionStart, selectionEnd } = currentTarget;\n const nativeEvent = event.nativeEvent;\n canAutoSelectRef.current = true;\n if (isInputEvent(nativeEvent)) {\n if (nativeEvent.isComposing) {\n canAutoSelectRef.current = false;\n composingRef.current = true;\n }\n if (inline) {\n const textInserted = nativeEvent.inputType === \"insertText\" || nativeEvent.inputType === \"insertCompositionText\";\n const caretAtEnd = selectionStart === value2.length;\n setCanInline(textInserted && caretAtEnd);\n }\n }\n if (setValueOnChangeProp(event)) {\n const isSameValue = value2 === store.getState().value;\n store.setValue(value2);\n queueMicrotask(() => {\n setSelectionRange(currentTarget, selectionStart, selectionEnd);\n });\n if (inline && autoSelect && isSameValue) {\n forceValueUpdate();\n }\n }\n if (showOnChangeProp(event)) {\n store.show();\n }\n if (!autoSelect || !canAutoSelectRef.current) {\n store.setActiveId(null);\n }\n });\n const onCompositionEndProp = props.onCompositionEnd;\n const onCompositionEnd = useEvent((event) => {\n canAutoSelectRef.current = true;\n composingRef.current = false;\n onCompositionEndProp == null ? void 0 : onCompositionEndProp(event);\n if (event.defaultPrevented) return;\n if (!autoSelect) return;\n forceValueUpdate();\n });\n const onMouseDownProp = props.onMouseDown;\n const blurActiveItemOnClickProp = useBooleanEvent(\n blurActiveItemOnClick != null ? blurActiveItemOnClick : (() => !!(store == null ? void 0 : store.getState().includesBaseElement))\n );\n const setValueOnClickProp = useBooleanEvent(setValueOnClick);\n const showOnClickProp = useBooleanEvent(showOnClick != null ? showOnClick : canShow);\n const onMouseDown = useEvent((event) => {\n onMouseDownProp == null ? void 0 : onMouseDownProp(event);\n if (event.defaultPrevented) return;\n if (event.button) return;\n if (event.ctrlKey) return;\n if (!store) return;\n if (blurActiveItemOnClickProp(event)) {\n store.setActiveId(null);\n }\n if (setValueOnClickProp(event)) {\n store.setValue(value);\n }\n if (showOnClickProp(event)) {\n queueBeforeEvent(event.currentTarget, \"mouseup\", store.show);\n }\n });\n const onKeyDownProp = props.onKeyDown;\n const showOnKeyPressProp = useBooleanEvent(showOnKeyPress != null ? showOnKeyPress : canShow);\n const onKeyDown = useEvent((event) => {\n onKeyDownProp == null ? void 0 : onKeyDownProp(event);\n if (!event.repeat) {\n canAutoSelectRef.current = false;\n }\n if (event.defaultPrevented) return;\n if (event.ctrlKey) return;\n if (event.altKey) return;\n if (event.shiftKey) return;\n if (event.metaKey) return;\n if (!store) return;\n const { open: open2 } = store.getState();\n if (open2) return;\n if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n if (showOnKeyPressProp(event)) {\n event.preventDefault();\n store.show();\n }\n }\n });\n const onBlurProp = props.onBlur;\n const onBlur = useEvent((event) => {\n canAutoSelectRef.current = false;\n onBlurProp == null ? void 0 : onBlurProp(event);\n if (event.defaultPrevented) return;\n });\n const id = useId(props.id);\n const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0;\n const isActiveItem = store.useState((state) => state.activeId === null);\n props = {\n id,\n role: \"combobox\",\n \"aria-autocomplete\": ariaAutoComplete,\n \"aria-haspopup\": getPopupRole(contentElement, \"listbox\"),\n \"aria-expanded\": open,\n \"aria-controls\": contentElement == null ? void 0 : contentElement.id,\n \"data-active-item\": isActiveItem || void 0,\n value,\n ...props,\n ref: useMergeRefs(ref, props.ref),\n onChange,\n onCompositionEnd,\n onMouseDown,\n onKeyDown,\n onBlur\n };\n props = useComposite({\n store,\n focusable,\n ...props,\n // Enable inline autocomplete when the user moves from the combobox input\n // to an item.\n moveOnKeyPress: (event) => {\n if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false;\n if (inline) setCanInline(true);\n return true;\n }\n });\n props = usePopoverAnchor({ store, ...props });\n return { autoComplete: \"off\", ...props };\n }\n);\nvar Combobox = forwardRef(function Combobox2(props) {\n const htmlProps = useCombobox(props);\n return createElement(TagName, htmlProps);\n});\nexport {\n Combobox,\n useCombobox\n};\n","\"use client\";\nimport {\n useComboboxProviderContext\n} from \"../__chunks/CVCFNOHX.js\";\nimport \"../__chunks/JMU4N4M5.js\";\nimport \"../__chunks/A62MDFCW.js\";\nimport \"../__chunks/LVDQFHCH.js\";\nimport \"../__chunks/AVVXDJMZ.js\";\nimport {\n useButton\n} from \"../__chunks/HMKTUWOU.js\";\nimport \"../__chunks/PZ3OL7I2.js\";\nimport \"../__chunks/U6HHPQDW.js\";\nimport \"../__chunks/SWN3JYXT.js\";\nimport \"../__chunks/SMPCIMZM.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"../__chunks/GWSL6KNJ.js\";\nimport {\n useEvent,\n useWrapElement\n} from \"../__chunks/KPHZR4MB.js\";\nimport \"../__chunks/YXGXYGQX.js\";\n\n// src/combobox/combobox-cancel.tsx\nimport { invariant } from \"@ariakit/core/utils/misc\";\nimport { Fragment } from \"react\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar TagName = \"button\";\nvar children = /* @__PURE__ */ jsxs(\n \"svg\",\n {\n \"aria-hidden\": \"true\",\n display: \"block\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5,\n width: \"1em\",\n height: \"1em\",\n pointerEvents: \"none\",\n children: [\n /* @__PURE__ */ jsx(\"line\", { x1: \"5\", y1: \"5\", x2: \"11\", y2: \"11\" }),\n /* @__PURE__ */ jsx(\"line\", { x1: \"5\", y1: \"11\", x2: \"11\", y2: \"5\" })\n ]\n }\n);\nvar useComboboxCancel = createHook(\n function useComboboxCancel2({ store, hideWhenEmpty, ...props }) {\n const context = useComboboxProviderContext();\n store = store || context;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"ComboboxCancel must receive a `store` prop or be wrapped in a ComboboxProvider component.\"\n );\n const onClickProp = props.onClick;\n const onClick = useEvent((event) => {\n onClickProp == null ? void 0 : onClickProp(event);\n if (event.defaultPrevented) return;\n store == null ? void 0 : store.setValue(\"\");\n store == null ? void 0 : store.move(null);\n });\n const comboboxId = store.useState((state) => {\n var _a;\n return (_a = state.baseElement) == null ? void 0 : _a.id;\n });\n const empty = store.useState((state) => state.value === \"\");\n props = useWrapElement(\n props,\n (element) => {\n if (!hideWhenEmpty) return element;\n if (empty) return /* @__PURE__ */ jsx(Fragment, {});\n return element;\n },\n [hideWhenEmpty, empty]\n );\n props = {\n children,\n \"aria-label\": \"Clear input\",\n // This aria-controls will ensure the combobox popup remains visible when\n // this element gets focused. This logic is done in the ComboboxPopover\n // component.\n \"aria-controls\": comboboxId,\n ...props,\n onClick\n };\n props = useButton(props);\n return props;\n }\n);\nvar ComboboxCancel = forwardRef(function ComboboxCancel2(props) {\n const htmlProps = useComboboxCancel(props);\n return createElement(TagName, htmlProps);\n});\nexport {\n ComboboxCancel,\n useComboboxCancel\n};\n","\"use client\";\nimport {\n useCompositeHover\n} from \"./X6LNAU2F.js\";\nimport {\n useCompositeItem\n} from \"./WZWDIE3S.js\";\nimport {\n ComboboxItemCheckedContext,\n ComboboxItemValueContext,\n ComboboxListRoleContext,\n useComboboxScopedContext\n} from \"./CVCFNOHX.js\";\nimport {\n useStoreStateObject\n} from \"./Q5W46E73.js\";\nimport {\n createElement,\n createHook,\n forwardRef,\n memo\n} from \"./GWSL6KNJ.js\";\nimport {\n useBooleanEvent,\n useEvent,\n useWrapElement\n} from \"./KPHZR4MB.js\";\n\n// src/combobox/combobox-item.tsx\nimport { isTextField } from \"@ariakit/core/utils/dom\";\nimport { isDownloading, isOpeningInNewTab } from \"@ariakit/core/utils/events\";\nimport { hasFocus } from \"@ariakit/core/utils/focus\";\nimport { invariant } from \"@ariakit/core/utils/misc\";\nimport { useCallback, useContext } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"div\";\nfunction isSelected(storeValue, itemValue) {\n if (itemValue == null) return;\n if (storeValue == null) return false;\n if (Array.isArray(storeValue)) {\n return storeValue.includes(itemValue);\n }\n return storeValue === itemValue;\n}\nfunction getItemRole(popupRole) {\n var _a;\n const itemRoleByPopupRole = {\n menu: \"menuitem\",\n listbox: \"option\",\n tree: \"treeitem\"\n };\n const key = popupRole;\n return (_a = itemRoleByPopupRole[key]) != null ? _a : \"option\";\n}\nvar useComboboxItem = createHook(\n function useComboboxItem2({\n store,\n value,\n hideOnClick,\n setValueOnClick,\n selectValueOnClick = true,\n resetValueOnSelect,\n focusOnHover = false,\n moveOnKeyPress = true,\n getItem: getItemProp,\n ...props\n }) {\n var _a;\n const context = useComboboxScopedContext();\n store = store || context;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"ComboboxItem must be wrapped in a ComboboxList or ComboboxPopover component.\"\n );\n const { resetValueOnSelectState, multiSelectable, selected } = useStoreStateObject(store, {\n resetValueOnSelectState: \"resetValueOnSelect\",\n multiSelectable(state) {\n return Array.isArray(state.selectedValue);\n },\n selected(state) {\n return isSelected(state.selectedValue, value);\n }\n });\n const getItem = useCallback(\n (item) => {\n const nextItem = { ...item, value };\n if (getItemProp) {\n return getItemProp(nextItem);\n }\n return nextItem;\n },\n [value, getItemProp]\n );\n setValueOnClick = setValueOnClick != null ? setValueOnClick : !multiSelectable;\n hideOnClick = hideOnClick != null ? hideOnClick : value != null && !multiSelectable;\n const onClickProp = props.onClick;\n const setValueOnClickProp = useBooleanEvent(setValueOnClick);\n const selectValueOnClickProp = useBooleanEvent(selectValueOnClick);\n const resetValueOnSelectProp = useBooleanEvent(\n (_a = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a : multiSelectable\n );\n const hideOnClickProp = useBooleanEvent(hideOnClick);\n const onClick = useEvent((event) => {\n onClickProp == null ? void 0 : onClickProp(event);\n if (event.defaultPrevented) return;\n if (isDownloading(event)) return;\n if (isOpeningInNewTab(event)) return;\n if (value != null) {\n if (selectValueOnClickProp(event)) {\n if (resetValueOnSelectProp(event)) {\n store == null ? void 0 : store.resetValue();\n }\n store == null ? void 0 : store.setSelectedValue((prevValue) => {\n if (!Array.isArray(prevValue)) return value;\n if (prevValue.includes(value)) {\n return prevValue.filter((v) => v !== value);\n }\n return [...prevValue, value];\n });\n }\n if (setValueOnClickProp(event)) {\n store == null ? void 0 : store.setValue(value);\n }\n }\n if (hideOnClickProp(event)) {\n store == null ? void 0 : store.hide();\n }\n });\n const onKeyDownProp = props.onKeyDown;\n const onKeyDown = useEvent((event) => {\n onKeyDownProp == null ? void 0 : onKeyDownProp(event);\n if (event.defaultPrevented) return;\n const baseElement = store == null ? void 0 : store.getState().baseElement;\n if (!baseElement) return;\n if (hasFocus(baseElement)) return;\n const printable = event.key.length === 1;\n if (printable || event.key === \"Backspace\" || event.key === \"Delete\") {\n queueMicrotask(() => baseElement.focus());\n if (isTextField(baseElement)) {\n store == null ? void 0 : store.setValue(baseElement.value);\n }\n }\n });\n if (multiSelectable && selected != null) {\n props = {\n \"aria-selected\": selected,\n ...props\n };\n }\n props = useWrapElement(\n props,\n (element) => /* @__PURE__ */ jsx(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ jsx(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }),\n [value, selected]\n );\n const popupRole = useContext(ComboboxListRoleContext);\n props = {\n role: getItemRole(popupRole),\n children: value,\n ...props,\n onClick,\n onKeyDown\n };\n const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);\n props = useCompositeItem({\n store,\n ...props,\n getItem,\n // Dispatch a custom event on the combobox input when moving to an item\n // with the keyboard so the Combobox component can enable inline\n // autocompletion.\n moveOnKeyPress: (event) => {\n if (!moveOnKeyPressProp(event)) return false;\n const moveEvent = new Event(\"combobox-item-move\");\n const baseElement = store == null ? void 0 : store.getState().baseElement;\n baseElement == null ? void 0 : baseElement.dispatchEvent(moveEvent);\n return true;\n }\n });\n props = useCompositeHover({ store, focusOnHover, ...props });\n return props;\n }\n);\nvar ComboboxItem = memo(\n forwardRef(function ComboboxItem2(props) {\n const htmlProps = useComboboxItem(props);\n return createElement(TagName, htmlProps);\n })\n);\n\nexport {\n useComboboxItem,\n ComboboxItem\n};\n","\"use client\";\nimport {\n isHidden\n} from \"./6B3RXHKP.js\";\nimport {\n ComboboxListRoleContext,\n ComboboxScopedContextProvider,\n useComboboxContext,\n useComboboxScopedContext\n} from \"./CVCFNOHX.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"./GWSL6KNJ.js\";\nimport {\n useAttribute,\n useId,\n useMergeRefs,\n useSafeLayoutEffect,\n useWrapElement\n} from \"./KPHZR4MB.js\";\n\n// src/combobox/combobox-list.tsx\nimport { invariant, removeUndefinedValues } from \"@ariakit/core/utils/misc\";\nimport { useRef, useState } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"div\";\nvar useComboboxList = createHook(\n function useComboboxList2({ store, alwaysVisible, ...props }) {\n const scopedContext = useComboboxScopedContext(true);\n const context = useComboboxContext();\n store = store || context;\n const scopedContextSameStore = !!store && store === scopedContext;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"ComboboxList must receive a `store` prop or be wrapped in a ComboboxProvider component.\"\n );\n const ref = useRef(null);\n const id = useId(props.id);\n const mounted = store.useState(\"mounted\");\n const hidden = isHidden(mounted, props.hidden, alwaysVisible);\n const style = hidden ? { ...props.style, display: \"none\" } : props.style;\n const multiSelectable = store.useState(\n (state) => Array.isArray(state.selectedValue)\n );\n const role = useAttribute(ref, \"role\", props.role);\n const isCompositeRole = role === \"listbox\" || role === \"tree\" || role === \"grid\";\n const ariaMultiSelectable = isCompositeRole ? multiSelectable || void 0 : void 0;\n const [hasListboxInside, setHasListboxInside] = useState(false);\n const contentElement = store.useState(\"contentElement\");\n useSafeLayoutEffect(() => {\n if (!mounted) return;\n const element = ref.current;\n if (!element) return;\n if (contentElement !== element) return;\n const callback = () => {\n setHasListboxInside(!!element.querySelector(\"[role='listbox']\"));\n };\n const observer = new MutationObserver(callback);\n observer.observe(element, {\n subtree: true,\n childList: true,\n attributeFilter: [\"role\"]\n });\n callback();\n return () => observer.disconnect();\n }, [mounted, contentElement]);\n if (!hasListboxInside) {\n props = {\n role: \"listbox\",\n \"aria-multiselectable\": ariaMultiSelectable,\n ...props\n };\n }\n props = useWrapElement(\n props,\n (element) => /* @__PURE__ */ jsx(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ jsx(ComboboxListRoleContext.Provider, { value: role, children: element }) }),\n [store, role]\n );\n const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null;\n props = {\n id,\n hidden,\n ...props,\n ref: useMergeRefs(setContentElement, ref, props.ref),\n style\n };\n return removeUndefinedValues(props);\n }\n);\nvar ComboboxList = forwardRef(function ComboboxList2(props) {\n const htmlProps = useComboboxList(props);\n return createElement(TagName, htmlProps);\n});\n\nexport {\n useComboboxList,\n ComboboxList\n};\n","\"use client\";\nimport {\n usePopover\n} from \"../__chunks/KW7Z5AIL.js\";\nimport {\n createDialogComponent\n} from \"../__chunks/Z32PU2LQ.js\";\nimport \"../__chunks/VJH3F6TN.js\";\nimport \"../__chunks/AOQQTIBO.js\";\nimport \"../__chunks/5M6RIVE2.js\";\nimport \"../__chunks/BFOIJXK2.js\";\nimport \"../__chunks/2F57YTN4.js\";\nimport \"../__chunks/3HM4TGWW.js\";\nimport \"../__chunks/6GXEOXGT.js\";\nimport \"../__chunks/KKITJVHA.js\";\nimport \"../__chunks/U3R3WHDK.js\";\nimport \"../__chunks/JSI7U3EA.js\";\nimport \"../__chunks/B6W4QFKS.js\";\nimport \"../__chunks/OT5RJDXG.js\";\nimport \"../__chunks/CZ4GFWYL.js\";\nimport \"../__chunks/Z5GCVBAY.js\";\nimport \"../__chunks/IGR4SXG2.js\";\nimport \"../__chunks/677M2CI3.js\";\nimport \"../__chunks/S7U6BLGA.js\";\nimport \"../__chunks/P45QRJLH.js\";\nimport \"../__chunks/3NDVDEB4.js\";\nimport \"../__chunks/AOUGVQZ3.js\";\nimport \"../__chunks/K2ZF5NU7.js\";\nimport \"../__chunks/63XF7ACK.js\";\nimport {\n useComboboxList\n} from \"../__chunks/2G6YEJT4.js\";\nimport \"../__chunks/6B3RXHKP.js\";\nimport \"../__chunks/4NYSH4UO.js\";\nimport \"../__chunks/WLZ6H5FH.js\";\nimport \"../__chunks/JG4VNI52.js\";\nimport {\n useComboboxProviderContext\n} from \"../__chunks/CVCFNOHX.js\";\nimport \"../__chunks/JMU4N4M5.js\";\nimport \"../__chunks/A62MDFCW.js\";\nimport \"../__chunks/LVDQFHCH.js\";\nimport \"../__chunks/AVVXDJMZ.js\";\nimport \"../__chunks/U6HHPQDW.js\";\nimport \"../__chunks/SWN3JYXT.js\";\nimport {\n useStoreState\n} from \"../__chunks/Q5W46E73.js\";\nimport \"../__chunks/SMPCIMZM.js\";\nimport {\n createElement,\n createHook,\n forwardRef\n} from \"../__chunks/GWSL6KNJ.js\";\nimport \"../__chunks/KPHZR4MB.js\";\nimport \"../__chunks/YXGXYGQX.js\";\n\n// src/combobox/combobox-popover.tsx\nimport { getDocument } from \"@ariakit/core/utils/dom\";\nimport { invariant, isFalsyBooleanCallback } from \"@ariakit/core/utils/misc\";\nimport { useRef } from \"react\";\nvar TagName = \"div\";\nfunction isController(target, ...ids) {\n if (!target) return false;\n if (\"id\" in target) {\n const selector = ids.filter(Boolean).map((id) => `[aria-controls~=\"${id}\"]`).join(\", \");\n if (!selector) return false;\n return target.matches(selector);\n }\n return false;\n}\nvar useComboboxPopover = createHook(\n function useComboboxPopover2({\n store,\n modal,\n tabIndex,\n alwaysVisible,\n autoFocusOnHide = true,\n hideOnInteractOutside = true,\n ...props\n }) {\n const context = useComboboxProviderContext();\n store = store || context;\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" && \"ComboboxPopover must receive a `store` prop or be wrapped in a ComboboxProvider component.\"\n );\n const baseElement = store.useState(\"baseElement\");\n const hiddenByClickOutsideRef = useRef(false);\n const treeSnapshotKey = useStoreState(\n store.tag,\n (state) => state == null ? void 0 : state.renderedItems.length\n );\n props = useComboboxList({ store, alwaysVisible, ...props });\n props = usePopover({\n store,\n modal,\n alwaysVisible,\n backdrop: false,\n autoFocusOnShow: false,\n finalFocus: baseElement,\n preserveTabOrderAnchor: null,\n unstable_treeSnapshotKey: treeSnapshotKey,\n ...props,\n // When the combobox popover is modal, we make sure to include the\n // combobox input and all the combobox controls (cancel, disclosure) in\n // the list of persistent elements so they make part of the modal context,\n // allowing users to tab through them.\n getPersistentElements() {\n var _a;\n const elements = ((_a = props.getPersistentElements) == null ? void 0 : _a.call(props)) || [];\n if (!modal) return elements;\n if (!store) return elements;\n const { contentElement, baseElement: baseElement2 } = store.getState();\n if (!baseElement2) return elements;\n const doc = getDocument(baseElement2);\n const selectors = [];\n if (contentElement == null ? void 0 : contentElement.id) {\n selectors.push(`[aria-controls~=\"${contentElement.id}\"]`);\n }\n if (baseElement2 == null ? void 0 : baseElement2.id) {\n selectors.push(`[aria-controls~=\"${baseElement2.id}\"]`);\n }\n if (!selectors.length) return [...elements, baseElement2];\n const selector = selectors.join(\",\");\n const controlElements = doc.querySelectorAll(selector);\n return [...elements, ...controlElements];\n },\n // The combobox popover should focus on the combobox input when it hides,\n // unless the event was triggered by a click outside the popover, in which\n // case the input shouldn't be re-focused.\n autoFocusOnHide(element) {\n if (isFalsyBooleanCallback(autoFocusOnHide, element)) return false;\n if (hiddenByClickOutsideRef.current) {\n hiddenByClickOutsideRef.current = false;\n return false;\n }\n return true;\n },\n // Make sure we don't hide the popover when the user interacts with the\n // combobox cancel or the combobox disclosure buttons. They will have the\n // aria-controls attribute pointing to either the combobox input or the\n // combobox popover elements.\n hideOnInteractOutside(event) {\n var _a, _b;\n const state = store == null ? void 0 : store.getState();\n const contentId = (_a = state == null ? void 0 : state.contentElement) == null ? void 0 : _a.id;\n const baseId = (_b = state == null ? void 0 : state.baseElement) == null ? void 0 : _b.id;\n if (isController(event.target, contentId, baseId)) return false;\n const result = typeof hideOnInteractOutside === \"function\" ? hideOnInteractOutside(event) : hideOnInteractOutside;\n if (result) {\n hiddenByClickOutsideRef.current = event.type === \"click\";\n }\n return result;\n }\n });\n return props;\n }\n);\nvar ComboboxPopover = createDialogComponent(\n forwardRef(function ComboboxPopover2(props) {\n const htmlProps = useComboboxPopover(props);\n return createElement(TagName, htmlProps);\n }),\n useComboboxProviderContext\n);\nexport {\n ComboboxPopover,\n useComboboxPopover\n};\n","\"use client\";\nimport {\n CompositeContextProvider,\n CompositeScopedContextProvider\n} from \"./AVVXDJMZ.js\";\nimport {\n createStoreContext\n} from \"./GWSL6KNJ.js\";\n\n// src/tag/tag-context.tsx\nimport { createContext } from \"react\";\nvar TagValueContext = createContext(null);\nvar TagRemoveIdContext = createContext(\n null\n);\nvar ctx = createStoreContext(\n [CompositeContextProvider],\n [CompositeScopedContextProvider]\n);\nvar useTagContext = ctx.useContext;\nvar useTagScopedContext = ctx.useScopedContext;\nvar useTagProviderContext = ctx.useProviderContext;\nvar TagContextProvider = ctx.ContextProvider;\nvar TagScopedContextProvider = ctx.ScopedContextProvider;\n\nexport {\n TagValueContext,\n TagRemoveIdContext,\n useTagContext,\n useTagScopedContext,\n useTagProviderContext,\n TagContextProvider,\n TagScopedContextProvider\n};\n","\"use client\";\nimport {\n isSafari,\n isTouchDevice\n} from \"../__chunks/SNHYQNEZ.js\";\nimport {\n createPopoverStore\n} from \"../__chunks/BFGNM53A.js\";\nimport {\n createCompositeStore\n} from \"../__chunks/RVTIKFRL.js\";\nimport \"../__chunks/7PRQYBBV.js\";\nimport \"../__chunks/KMAUV3TY.js\";\nimport \"../__chunks/75BJEVSH.js\";\nimport \"../__chunks/N5XGANPW.js\";\nimport \"../__chunks/3DNM6L6E.js\";\nimport {\n batch,\n createStore,\n mergeStore,\n pick,\n setup,\n sync,\n throwOnConflictingProps\n} from \"../__chunks/SXKM4CGU.js\";\nimport {\n chain,\n defaultValue\n} from \"../__chunks/XMCVU3LR.js\";\n\n// src/combobox/combobox-store.ts\nvar isTouchSafari = isSafari() && isTouchDevice();\nfunction createComboboxStore({\n tag,\n ...props\n} = {}) {\n const store = mergeStore(props.store, pick(tag, [\"value\", \"rtl\"]));\n throwOnConflictingProps(props, store);\n const tagState = tag == null ? void 0 : tag.getState();\n const syncState = store == null ? void 0 : store.getState();\n const activeId = defaultValue(\n props.activeId,\n syncState == null ? void 0 : syncState.activeId,\n props.defaultActiveId,\n null\n );\n const composite = createCompositeStore({\n ...props,\n activeId,\n includesBaseElement: defaultValue(\n props.includesBaseElement,\n syncState == null ? void 0 : syncState.includesBaseElement,\n true\n ),\n orientation: defaultValue(\n props.orientation,\n syncState == null ? void 0 : syncState.orientation,\n \"vertical\"\n ),\n focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true),\n focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, true),\n virtualFocus: defaultValue(\n props.virtualFocus,\n syncState == null ? void 0 : syncState.virtualFocus,\n true\n )\n });\n const popover = createPopoverStore({\n ...props,\n placement: defaultValue(\n props.placement,\n syncState == null ? void 0 : syncState.placement,\n \"bottom-start\"\n )\n });\n const value = defaultValue(\n props.value,\n syncState == null ? void 0 : syncState.value,\n props.defaultValue,\n \"\"\n );\n const selectedValue = defaultValue(\n props.selectedValue,\n syncState == null ? void 0 : syncState.selectedValue,\n tagState == null ? void 0 : tagState.values,\n props.defaultSelectedValue,\n \"\"\n );\n const multiSelectable = Array.isArray(selectedValue);\n const initialState = {\n ...composite.getState(),\n ...popover.getState(),\n value,\n selectedValue,\n resetValueOnSelect: defaultValue(\n props.resetValueOnSelect,\n syncState == null ? void 0 : syncState.resetValueOnSelect,\n multiSelectable\n ),\n resetValueOnHide: defaultValue(\n props.resetValueOnHide,\n syncState == null ? void 0 : syncState.resetValueOnHide,\n multiSelectable && !tag\n ),\n activeValue: syncState == null ? void 0 : syncState.activeValue\n };\n const combobox = createStore(initialState, composite, popover, store);\n if (isTouchSafari) {\n setup(\n combobox,\n () => sync(combobox, [\"virtualFocus\"], () => {\n combobox.setState(\"virtualFocus\", false);\n })\n );\n }\n setup(combobox, () => {\n if (!tag) return;\n return chain(\n sync(combobox, [\"selectedValue\"], (state) => {\n if (!Array.isArray(state.selectedValue)) return;\n tag.setValues(state.selectedValue);\n }),\n sync(tag, [\"values\"], (state) => {\n combobox.setState(\"selectedValue\", state.values);\n })\n );\n });\n setup(\n combobox,\n () => sync(combobox, [\"resetValueOnHide\", \"mounted\"], (state) => {\n if (!state.resetValueOnHide) return;\n if (state.mounted) return;\n combobox.setState(\"value\", value);\n })\n );\n setup(\n combobox,\n () => sync(combobox, [\"open\"], (state) => {\n if (state.open) return;\n combobox.setState(\"activeId\", activeId);\n combobox.setState(\"moves\", 0);\n })\n );\n setup(\n combobox,\n () => sync(combobox, [\"moves\", \"activeId\"], (state, prevState) => {\n if (state.moves === prevState.moves) {\n combobox.setState(\"activeValue\", void 0);\n }\n })\n );\n setup(\n combobox,\n () => batch(combobox, [\"moves\", \"renderedItems\"], (state, prev) => {\n if (state.moves === prev.moves) return;\n const { activeId: activeId2 } = combobox.getState();\n const activeItem = composite.item(activeId2);\n combobox.setState(\"activeValue\", activeItem == null ? void 0 : activeItem.value);\n })\n );\n return {\n ...popover,\n ...composite,\n ...combobox,\n tag,\n setValue: (value2) => combobox.setState(\"value\", value2),\n resetValue: () => combobox.setState(\"value\", initialState.value),\n setSelectedValue: (selectedValue2) => combobox.setState(\"selectedValue\", selectedValue2)\n };\n}\nexport {\n createComboboxStore\n};\n","\"use client\";\nimport {\n useTagContext\n} from \"./XSIEPKGA.js\";\nimport {\n usePopoverStoreProps\n} from \"./B6FLPFJM.js\";\nimport {\n useCompositeStoreOptions,\n useCompositeStoreProps\n} from \"./IQYAUKXT.js\";\nimport {\n useStore,\n useStoreProps\n} from \"./Q5W46E73.js\";\nimport {\n useUpdateEffect\n} from \"./KPHZR4MB.js\";\n\n// src/combobox/combobox-store.ts\nimport * as Core from \"@ariakit/core/combobox/combobox-store\";\nfunction useComboboxStoreOptions(props) {\n const tag = useTagContext();\n props = {\n ...props,\n tag: props.tag !== void 0 ? props.tag : tag\n };\n return useCompositeStoreOptions(props);\n}\nfunction useComboboxStoreProps(store, update, props) {\n useUpdateEffect(update, [props.tag]);\n useStoreProps(store, props, \"value\", \"setValue\");\n useStoreProps(store, props, \"selectedValue\", \"setSelectedValue\");\n useStoreProps(store, props, \"resetValueOnHide\");\n useStoreProps(store, props, \"resetValueOnSelect\");\n return Object.assign(\n useCompositeStoreProps(\n usePopoverStoreProps(store, update, props),\n update,\n props\n ),\n { tag: props.tag }\n );\n}\nfunction useComboboxStore(props = {}) {\n props = useComboboxStoreOptions(props);\n const [store, update] = useStore(Core.createComboboxStore, props);\n return useComboboxStoreProps(store, update, props);\n}\n\nexport {\n useComboboxStoreOptions,\n useComboboxStoreProps,\n useComboboxStore\n};\n","\"use client\";\nimport {\n useComboboxStore\n} from \"../__chunks/SVN33SY6.js\";\nimport \"../__chunks/XSIEPKGA.js\";\nimport \"../__chunks/B6FLPFJM.js\";\nimport \"../__chunks/IQYAUKXT.js\";\nimport \"../__chunks/4NYSH4UO.js\";\nimport \"../__chunks/WLZ6H5FH.js\";\nimport \"../__chunks/GVAFFF2B.js\";\nimport {\n ComboboxContextProvider\n} from \"../__chunks/CVCFNOHX.js\";\nimport \"../__chunks/JMU4N4M5.js\";\nimport \"../__chunks/A62MDFCW.js\";\nimport \"../__chunks/LVDQFHCH.js\";\nimport \"../__chunks/AVVXDJMZ.js\";\nimport \"../__chunks/Q5W46E73.js\";\nimport \"../__chunks/SMPCIMZM.js\";\nimport \"../__chunks/GWSL6KNJ.js\";\nimport \"../__chunks/KPHZR4MB.js\";\nimport \"../__chunks/YXGXYGQX.js\";\n\n// src/combobox/combobox-provider.tsx\nimport { jsx } from \"react/jsx-runtime\";\nfunction ComboboxProvider(props = {}) {\n const store = useComboboxStore(props);\n return /* @__PURE__ */ jsx(ComboboxContextProvider, { value: store, children: props.children });\n}\nexport {\n ComboboxProvider\n};\n","import {\n Combobox as AriaCombobox,\n ComboboxCancel,\n ComboboxItem,\n ComboboxPopover,\n ComboboxProvider,\n type ComboboxProps as AriaComboboxProps,\n} from \"@ariakit/react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n forwardRef,\n startTransition,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nconst comboboxVariants = cva(\n [\n \"w-full max-w-md rounded-lg border px-3 py-2\",\n \"text-sm font-medium\",\n \"transition-all duration-200\",\n \"focus:outline-none focus:ring-2 focus:ring-primary-600 focus:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"placeholder:text-gray-400 dark:placeholder:text-gray-500\",\n ],\n {\n variants: {\n variant: {\n default: [\n \"bg-white dark:bg-gray-900\",\n \"border-gray-300 dark:border-gray-700\",\n \"text-gray-900 dark:text-gray-100\",\n \"hover:border-gray-400 dark:hover:border-gray-600\",\n ],\n outline: [\n \"bg-transparent\",\n \"border-primary-600 dark:border-primary-500\",\n \"text-gray-900 dark:text-gray-100\",\n \"hover:bg-primary-50 dark:hover:bg-primary-950\",\n ],\n },\n size: {\n sm: \"h-9 text-sm\",\n md: \"h-10 text-base\",\n lg: \"h-11 text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst comboboxItemVariants = cva(\n [\n \"flex items-center gap-2 px-3 py-2 rounded-md\",\n \"text-sm cursor-pointer\",\n \"transition-colors duration-150\",\n \"outline-none\",\n ],\n {\n variants: {\n variant: {\n default: [\n \"text-gray-900 dark:text-gray-100\",\n \"hover:bg-gray-100 dark:hover:bg-gray-800\",\n \"data-[active-item]:bg-primary-100 dark:data-[active-item]:bg-primary-900\",\n \"data-[active-item]:text-primary-900 dark:data-[active-item]:text-primary-100\",\n ],\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface ComboboxOption {\n value: string;\n label?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface ComboboxProps\n extends\n Omit<AriaComboboxProps, \"size\" | \"onSelect\">,\n VariantProps<typeof comboboxVariants> {\n /** Combobox label */\n label?: string;\n /** Options to display in the dropdown */\n options?: ComboboxOption[];\n /** Placeholder text */\n placeholder?: string;\n /** Show clear button when value is not empty */\n showClear?: boolean;\n /** Filter function for options */\n filterFn?: (\n options: ComboboxOption[],\n searchValue: string,\n ) => ComboboxOption[];\n /** Callback when value changes */\n onValueChange?: (value: string) => void;\n /** Callback when an option is selected */\n onSelectOption?: (value: string) => void;\n /** Empty state message */\n emptyMessage?: string;\n /** Custom render for items */\n renderItem?: (option: ComboboxOption) => ReactNode;\n}\n\nexport const Combobox = forwardRef<HTMLInputElement, ComboboxProps>(\n (\n {\n label,\n options = [],\n placeholder,\n showClear = true,\n filterFn,\n onValueChange,\n onSelectOption,\n emptyMessage = \"No results found\",\n renderItem,\n variant,\n size,\n className,\n ...props\n },\n ref,\n ) => {\n const [searchValue, setSearchValue] = useState(\"\");\n\n // Default filter function using simple includes\n const defaultFilterFn = (\n opts: ComboboxOption[],\n search: string,\n ): ComboboxOption[] => {\n if (!search) return opts;\n return opts.filter((opt) =>\n opt.value.toLowerCase().includes(search.toLowerCase()),\n );\n };\n\n const filteredOptions = useMemo(() => {\n const filterFunc = filterFn || defaultFilterFn;\n return filterFunc(options, searchValue);\n }, [options, searchValue, filterFn]);\n\n return (\n <ComboboxProvider\n setValue={(value) => {\n startTransition(() => {\n setSearchValue(value);\n onValueChange?.(value);\n });\n }}\n >\n <div className=\"w-full space-y-2\">\n {label && (\n <label className=\"text-sm font-medium text-gray-900 dark:text-gray-100\">\n {label}\n </label>\n )}\n <div className=\"relative\">\n <AriaCombobox\n ref={ref}\n placeholder={placeholder}\n className={cn(comboboxVariants({ variant, size, className }))}\n {...props}\n />\n {showClear && searchValue && (\n <ComboboxCancel className=\"absolute right-2 top-1/2 -translate-y-1/2 flex items-center justify-center rounded-md p-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors\">\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n >\n <path d=\"M4 4l8 8M12 4l-8 8\" />\n </svg>\n </ComboboxCancel>\n )}\n </div>\n <ComboboxPopover\n gutter={8}\n sameWidth\n className={cn(\n \"z-50 max-h-80 overflow-auto rounded-lg border bg-white p-1 shadow-lg dark:bg-gray-900 dark:border-gray-700\",\n \"opacity-0 transition-all duration-200 ease-out\",\n \"data-enter:opacity-100 data-enter:translate-y-0\",\n \"data-leave:opacity-0 data-leave:-translate-y-1\",\n )}\n >\n {filteredOptions.length > 0 ? (\n filteredOptions.map((option) => (\n <ComboboxItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n onClick={() => onSelectOption?.(option.value)}\n className={comboboxItemVariants()}\n >\n {renderItem\n ? renderItem(option)\n : option.label || option.value}\n </ComboboxItem>\n ))\n ) : (\n <div className=\"px-3 py-2 text-center text-sm text-gray-500 dark:text-gray-400\">\n {emptyMessage}\n </div>\n )}\n </ComboboxPopover>\n </div>\n </ComboboxProvider>\n );\n },\n);\n\nCombobox.displayName = \"Combobox\";\n","import type { ComponentDoc } from \"../../types/docs\";\n\nexport const comboboxDocs: ComponentDoc = {\n name: \"Combobox\",\n description: \"Searchable select with autocomplete functionality, built on Ariakit for accessibility.\",\n category: \"Navigation\",\n installation: `pnpm add @component-labs/ui`,\n usage: `import { Combobox } from \"@component-labs/ui\";\n\nconst options = [\n { value: \"apple\", label: \"Apple\" },\n { value: \"banana\", label: \"Banana\" },\n];\n\n<Combobox options={options} placeholder=\"Select fruit...\" />`,\n props: [\n {\n name: \"options\",\n type: \"ComboboxOption[]\",\n description: \"Array of options to display in the dropdown\",\n required: true,\n },\n {\n name: \"variant\",\n type: \"'default' | 'outline'\",\n description: \"Visual style variant\",\n default: \"'default'\",\n },\n {\n name: \"size\",\n type: \"'sm' | 'md' | 'lg'\",\n description: \"Size of the input\",\n default: \"'md'\",\n },\n {\n name: \"label\",\n type: \"string\",\n description: \"Label text above the combobox\",\n },\n {\n name: \"placeholder\",\n type: \"string\",\n description: \"Placeholder text for the input\",\n },\n {\n name: \"showClear\",\n type: \"boolean\",\n description: \"Show clear button when value is not empty\",\n default: \"true\",\n },\n {\n name: \"filterFn\",\n type: \"(options: ComboboxOption[], searchValue: string) => ComboboxOption[]\",\n description: \"Custom filter function for options\",\n },\n {\n name: \"onValueChange\",\n type: \"(value: string) => void\",\n description: \"Callback when search value changes\",\n },\n {\n name: \"onSelectOption\",\n type: \"(value: string) => void\",\n description: \"Callback when an option is selected\",\n },\n {\n name: \"emptyMessage\",\n type: \"string\",\n description: \"Message to display when no results found\",\n default: \"'No results found'\",\n },\n {\n name: \"renderItem\",\n type: \"(option: ComboboxOption) => ReactNode\",\n description: \"Custom render function for items\",\n },\n ],\n examples: [\n {\n title: \"Basic Combobox\",\n code: `const fruits = [\n { value: \"apple\", label: \"Apple\" },\n { value: \"banana\", label: \"Banana\" },\n { value: \"orange\", label: \"Orange\" },\n];\n\n<Combobox\n label=\"Select a fruit\"\n placeholder=\"Search fruits...\"\n options={fruits}\n/>`,\n description: \"Simple searchable select\",\n },\n {\n title: \"With Custom Filter\",\n code: `const customFilter = (options, search) => {\n return options.filter(opt =>\n opt.label.toLowerCase().startsWith(search.toLowerCase())\n );\n};\n\n<Combobox\n options={fruits}\n filterFn={customFilter}\n placeholder=\"Type to search...\"\n/>`,\n description: \"Using custom filter logic\",\n },\n {\n title: \"Controlled Selection\",\n code: `const [selected, setSelected] = useState(\"\");\n\n<Combobox\n options={fruits}\n onSelectOption={(value) => {\n setSelected(value);\n console.log(\"Selected:\", value);\n }}\n placeholder=\"Choose...\"\n/>`,\n description: \"Handle selection changes\",\n },\n {\n title: \"Custom Item Rendering\",\n code: `<Combobox\n options={users}\n renderItem={(option) => (\n <div className=\"flex items-center gap-2\">\n <Avatar src={option.avatar} />\n <span>{option.label}</span>\n </div>\n )}\n/>`,\n description: \"Customize how items are rendered\",\n },\n ],\n accessibility: [\n \"Built on Ariakit's accessible Combobox component\",\n \"Keyboard navigation (Arrow keys, Enter, Escape)\",\n \"Proper ARIA attributes (aria-autocomplete, aria-expanded)\",\n \"Screen reader support with announcements\",\n \"Focus management\",\n \"Type-ahead functionality\",\n ],\n relatedComponents: [\"Menu\", \"Command\"],\n};\n"],"names":["TagName","isFirstItemAutoSelected","items","activeValue","autoSelect","firstItem","item","hasCompletionString","value","normalizeString","isInputEvent","event","isAriaAutoCompleteValue","getDefaultAutoSelectId","item2","_a","useCombobox","createHook","store","focusable","autoSelectProp","getAutoSelectId","setValueOnChange","showMinLength","showOnChange","showOnMouseDown","showOnClick","showOnKeyDown","showOnKeyPress","blurActiveItemOnClick","setValueOnClick","moveOnKeyPress","autoComplete","props","context","useComboboxProviderContext","invariant","ref","useRef","valueUpdated","forceValueUpdate","useForceUpdate","canAutoSelectRef","composingRef","state","inline","canInline","setCanInline","useState","useUpdateLayoutEffect","storeValue","prevSelectedValueRef","useEffect","sync","_","prev","inlineActiveValue","open","contentElement","useMemo","slice","element","onCompositeItemMove","cleanup","noop","prevStart","prevEnd","getTextboxSelection","nextStart","nextEnd","setSelectionRange","hasFocus","start","end","scrollingElementRef","getAutoSelectIdProp","useEvent","autoSelectIdRef","scrollingElement","getScrollingElement","onUserScroll","onScroll","activeId","options","useSafeLayoutEffect","resetValueOnSelect","useUpdateEffect","_b","canAutoSelect","baseElement","contentElement2","observer","userAutoSelectId","autoSelectId","combobox","elements","value2","onBlur2","el","isFocusEventOutside","canShow","onChangeProp","showOnChangeProp","useBooleanEvent","setValueOnChangeProp","onChange","currentTarget","selectionStart","selectionEnd","nativeEvent","textInserted","caretAtEnd","isSameValue","onCompositionEndProp","onCompositionEnd","onMouseDownProp","blurActiveItemOnClickProp","setValueOnClickProp","showOnClickProp","onMouseDown","queueBeforeEvent","onKeyDownProp","showOnKeyPressProp","onKeyDown","open2","onBlurProp","onBlur","id","useId","ariaAutoComplete","isActiveItem","getPopupRole","useMergeRefs","useComposite","isFalsyBooleanCallback","usePopoverAnchor","Combobox","forwardRef","htmlProps","createElement","children","jsxs","jsx","useComboboxCancel","hideWhenEmpty","onClickProp","onClick","comboboxId","empty","useWrapElement","Fragment","useButton","ComboboxCancel","isSelected","itemValue","getItemRole","popupRole","useComboboxItem","hideOnClick","selectValueOnClick","focusOnHover","getItemProp","useComboboxScopedContext","resetValueOnSelectState","multiSelectable","selected","useStoreStateObject","getItem","useCallback","nextItem","selectValueOnClickProp","resetValueOnSelectProp","hideOnClickProp","isDownloading","isOpeningInNewTab","prevValue","v","isTextField","ComboboxItemValueContext","ComboboxItemCheckedContext","useContext","ComboboxListRoleContext","moveOnKeyPressProp","useCompositeItem","moveEvent","useCompositeHover","ComboboxItem","memo","useComboboxList","alwaysVisible","scopedContext","useComboboxContext","scopedContextSameStore","mounted","hidden","isHidden","style","role","useAttribute","ariaMultiSelectable","hasListboxInside","setHasListboxInside","callback","ComboboxScopedContextProvider","setContentElement","removeUndefinedValues","isController","target","ids","selector","useComboboxPopover","modal","tabIndex","autoFocusOnHide","hideOnInteractOutside","hiddenByClickOutsideRef","treeSnapshotKey","useStoreState","usePopover","baseElement2","doc","getDocument","selectors","controlElements","contentId","baseId","result","ComboboxPopover","createDialogComponent","createContext","ctx","createStoreContext","CompositeContextProvider","CompositeScopedContextProvider","useTagContext","isTouchSafari","isSafari","isTouchDevice","createComboboxStore","tag","mergeStore","pick","throwOnConflictingProps","tagState","syncState","defaultValue","composite","createCompositeStore","popover","createPopoverStore","selectedValue","initialState","createStore","setup","chain","prevState","batch","activeId2","activeItem","selectedValue2","useComboboxStoreOptions","useCompositeStoreOptions","useComboboxStoreProps","update","useStoreProps","useCompositeStoreProps","usePopoverStoreProps","useComboboxStore","useStore","Core.createComboboxStore","ComboboxProvider","ComboboxContextProvider","comboboxVariants","cva","comboboxItemVariants","label","placeholder","showClear","filterFn","onValueChange","onSelectOption","emptyMessage","renderItem","variant","size","className","searchValue","setSearchValue","defaultFilterFn","opts","search","opt","filteredOptions","startTransition","AriaCombobox","cn","option","comboboxDocs"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}
@@ -0,0 +1,26 @@
1
+ import { ButtonProps as AccessibleButtonProps } from '@ariakit/react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import { ReactNode } from 'react';
4
+
5
+ declare const buttonVariants: (props?: ({
6
+ variant?: "default" | "secondary" | "outline" | "ghost" | "destructive" | "link" | null | undefined;
7
+ size?: "sm" | "md" | "lg" | "icon" | null | undefined;
8
+ fullWidth?: boolean | null | undefined;
9
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
10
+ export interface ButtonProps extends Omit<AccessibleButtonProps, "disabled">, VariantProps<typeof buttonVariants> {
11
+ /** Whether the button is disabled */
12
+ disabled?: boolean;
13
+ /** Whether the button should take full width of its container */
14
+ fullWidth?: boolean;
15
+ /** Loading state - shows loading indicator and disables the button */
16
+ loading?: boolean;
17
+ /** Custom loading indicator element */
18
+ loadingIndicator?: ReactNode;
19
+ /** Icon to display before the button text */
20
+ startIcon?: ReactNode;
21
+ /** Icon to display after the button text */
22
+ endIcon?: ReactNode;
23
+ }
24
+ export declare const Button: import('react').ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
25
+ export {};
26
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,IAAI,qBAAqB,EACrC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnD,QAAA,MAAM,cAAc;;;;8EA+DnB,CAAC;AAEF,MAAM,WAAW,WACf,SACE,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,EACvC,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,wHAwClB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ComponentDoc } from '../../types/docs';
2
+
3
+ export declare const buttonDocs: ComponentDoc;
4
+ //# sourceMappingURL=Button.docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.docs.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,eAAO,MAAM,UAAU,EAAE,YA6GxB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { ButtonProps } from './Button';
2
+
3
+ declare const _default: {
4
+ title: string;
5
+ component: import('react').ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
6
+ };
7
+ export default _default;
8
+ export declare function Playground(props: ButtonProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare namespace Playground {
10
+ var props: {
11
+ variant: {
12
+ type: string;
13
+ options: string[];
14
+ default: string;
15
+ };
16
+ size: {
17
+ type: string;
18
+ options: string[];
19
+ default: string;
20
+ };
21
+ disabled: {
22
+ type: string;
23
+ default: boolean;
24
+ };
25
+ loading: {
26
+ type: string;
27
+ default: boolean;
28
+ };
29
+ fullWidth: {
30
+ type: string;
31
+ default: boolean;
32
+ };
33
+ children: {
34
+ label: string;
35
+ type: string;
36
+ default: string;
37
+ };
38
+ };
39
+ }
40
+ //# sourceMappingURL=Button.showcase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.showcase.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.showcase.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,WAAW,EAAE,MAAM,UAAU,CAAC;;;;;AAG/C,wBAGE;AAGF,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,2CAI5C;yBAJe,UAAU"}
@@ -0,0 +1,19 @@
1
+ import { CheckboxProps as AriaCheckboxProps } from '@ariakit/react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import { ReactNode } from 'react';
4
+
5
+ declare const checkboxVariants: (props?: ({
6
+ variant?: "default" | "outline" | null | undefined;
7
+ size?: "sm" | "md" | "lg" | null | undefined;
8
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
9
+ export interface CheckboxProps extends Omit<AriaCheckboxProps, "size">, VariantProps<typeof checkboxVariants> {
10
+ /** Label text to display next to the checkbox */
11
+ label?: ReactNode;
12
+ /** Description text to display below the label */
13
+ description?: ReactNode;
14
+ /** Custom check icon */
15
+ checkIcon?: ReactNode;
16
+ }
17
+ export declare const Checkbox: import('react').ForwardRefExoticComponent<Omit<CheckboxProps, "ref"> & import('react').RefAttributes<HTMLInputElement>>;
18
+ export {};
19
+ //# sourceMappingURL=Checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,aAAa,IAAI,iBAAiB,EACxC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnD,QAAA,MAAM,gBAAgB;;;8EAmCrB,CAAC;AAEF,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,EACrC,YAAY,CAAC,OAAO,gBAAgB,CAAC;IACvC,iDAAiD;IACjD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,kDAAkD;IAClD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,wBAAwB;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,eAAO,MAAM,QAAQ,yHAkDpB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ComponentDoc } from '../../types/docs';
2
+
3
+ export declare const checkboxDocs: ComponentDoc;
4
+ //# sourceMappingURL=Checkbox.docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.docs.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,YA6G1B,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { CheckboxProps } from './Checkbox';
2
+
3
+ declare const _default: {
4
+ title: string;
5
+ component: import('react').ForwardRefExoticComponent<Omit<CheckboxProps, "ref"> & import('react').RefAttributes<HTMLInputElement>>;
6
+ };
7
+ export default _default;
8
+ export declare function Playground(props: CheckboxProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare namespace Playground {
10
+ var props: {
11
+ variant: {
12
+ type: string;
13
+ options: string[];
14
+ default: string;
15
+ };
16
+ size: {
17
+ type: string;
18
+ options: string[];
19
+ default: string;
20
+ };
21
+ label: {
22
+ type: string;
23
+ default: string;
24
+ };
25
+ description: {
26
+ type: string;
27
+ default: string;
28
+ };
29
+ disabled: {
30
+ type: string;
31
+ default: boolean;
32
+ };
33
+ };
34
+ }
35
+ //# sourceMappingURL=Checkbox.showcase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.showcase.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.showcase.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,aAAa,EAAE,MAAM,YAAY,CAAC;;;;;AAGrD,wBAGE;AAGF,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,2CAM9C;yBANe,UAAU"}
@@ -0,0 +1,36 @@
1
+ import { ComboboxProps as AriaComboboxProps } from '@ariakit/react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import { ReactNode } from 'react';
4
+
5
+ declare const comboboxVariants: (props?: ({
6
+ variant?: "default" | "outline" | null | undefined;
7
+ size?: "sm" | "md" | "lg" | null | undefined;
8
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
9
+ export interface ComboboxOption {
10
+ value: string;
11
+ label?: ReactNode;
12
+ disabled?: boolean;
13
+ }
14
+ export interface ComboboxProps extends Omit<AriaComboboxProps, "size" | "onSelect">, VariantProps<typeof comboboxVariants> {
15
+ /** Combobox label */
16
+ label?: string;
17
+ /** Options to display in the dropdown */
18
+ options?: ComboboxOption[];
19
+ /** Placeholder text */
20
+ placeholder?: string;
21
+ /** Show clear button when value is not empty */
22
+ showClear?: boolean;
23
+ /** Filter function for options */
24
+ filterFn?: (options: ComboboxOption[], searchValue: string) => ComboboxOption[];
25
+ /** Callback when value changes */
26
+ onValueChange?: (value: string) => void;
27
+ /** Callback when an option is selected */
28
+ onSelectOption?: (value: string) => void;
29
+ /** Empty state message */
30
+ emptyMessage?: string;
31
+ /** Custom render for items */
32
+ renderItem?: (option: ComboboxOption) => ReactNode;
33
+ }
34
+ export declare const Combobox: import('react').ForwardRefExoticComponent<Omit<ComboboxProps, "ref"> & import('react').RefAttributes<HTMLInputElement>>;
35
+ export {};
36
+ //# sourceMappingURL=Combobox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,IAAI,iBAAiB,EACxC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,QAAA,MAAM,gBAAgB;;;8EAoCrB,CAAC;AA0BF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aACf,SACE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,EAC5C,YAAY,CAAC,OAAO,gBAAgB,CAAC;IACvC,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CACT,OAAO,EAAE,cAAc,EAAE,EACzB,WAAW,EAAE,MAAM,KAChB,cAAc,EAAE,CAAC;IACtB,kCAAkC;IAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,0CAA0C;IAC1C,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,SAAS,CAAC;CACpD;AAED,eAAO,MAAM,QAAQ,yHA6GpB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ComponentDoc } from '../../types/docs';
2
+
3
+ export declare const comboboxDocs: ComponentDoc;
4
+ //# sourceMappingURL=Combobox.docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Combobox.docs.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,YA+I1B,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { ComboboxProps } from './Combobox';
2
+
3
+ declare const _default: {
4
+ title: string;
5
+ component: import('react').ForwardRefExoticComponent<Omit<ComboboxProps, "ref"> & import('react').RefAttributes<HTMLInputElement>>;
6
+ };
7
+ export default _default;
8
+ export declare function Playground(props: ComboboxProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare namespace Playground {
10
+ var props: {
11
+ variant: {
12
+ type: string;
13
+ options: string[];
14
+ default: string;
15
+ };
16
+ size: {
17
+ type: string;
18
+ options: string[];
19
+ default: string;
20
+ };
21
+ label: {
22
+ type: string;
23
+ default: string;
24
+ };
25
+ placeholder: {
26
+ type: string;
27
+ default: string;
28
+ };
29
+ showClear: {
30
+ type: string;
31
+ default: boolean;
32
+ };
33
+ emptyMessage: {
34
+ type: string;
35
+ default: string;
36
+ };
37
+ disabled: {
38
+ type: string;
39
+ default: boolean;
40
+ };
41
+ };
42
+ }
43
+ //# sourceMappingURL=Combobox.showcase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Combobox.showcase.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.showcase.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,aAAa,EAAE,MAAM,YAAY,CAAC;;;;;AAGrD,wBAGE;AAiBF,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,2CAE9C;yBAFe,UAAU"}
@@ -0,0 +1,86 @@
1
+ import { ReactNode, ReactElement } from 'react';
2
+
3
+ export interface TableProps<T> {
4
+ /** Array of data items to display in the table */
5
+ data: T[];
6
+ /** Accessible label for the table */
7
+ label: string;
8
+ /** Optional description for assistive technology */
9
+ description?: string;
10
+ /**
11
+ * Table header component
12
+ * Can be a React element or component
13
+ * @example tableHeader={<TableHeader />}
14
+ * @example tableHeader={<tr><th>Name</th></tr>}
15
+ */
16
+ tableHeader: ReactElement;
17
+ /**
18
+ * Table row component - receives the data item as prop
19
+ * @param item - The data item for this row
20
+ * @param index - The index of this item in the data array
21
+ * @example tableRow={(item) => <ProductRow product={item} />}
22
+ * @example tableRow={(item) => <tr><td>{item.name}</td></tr>}
23
+ */
24
+ tableRow: (item: T, index: number) => ReactElement;
25
+ /**
26
+ * Loading skeleton row component
27
+ * Rendered multiple times (pageLimit) during loading
28
+ * @example loadingRow={<SkeletonRow />}
29
+ * @example loadingRow={<tr><td><Skeleton /></td></tr>}
30
+ */
31
+ loadingRow?: ReactElement;
32
+ /**
33
+ * Empty state component
34
+ * Shown when no data is available and not loading
35
+ * @example emptyRow={<EmptyState message="No items found" />}
36
+ * @example emptyRow={<tr><td>No data</td></tr>}
37
+ */
38
+ emptyRow?: ReactElement;
39
+ /**
40
+ * Optional table footer component
41
+ * @example tableFooter={<TableFooter />}
42
+ * @example tableFooter={<tfoot><tr><td>Total</td></tr></tfoot>}
43
+ */
44
+ tableFooter?: ReactElement;
45
+ /** Number of skeleton rows to show during loading states */
46
+ pageLimit?: number;
47
+ /** Initial loading state - shows skeleton rows for entire first page */
48
+ isLoading?: boolean;
49
+ /** Whether there are more pages to fetch (enables IntersectionObserver) */
50
+ hasNextPage?: boolean;
51
+ /** Callback to fetch the next page when user scrolls near the end */
52
+ fetchNextPage?: () => void;
53
+ /** Whether currently fetching next page - shows additional skeleton rows */
54
+ isFetchingNextPage?: boolean;
55
+ /**
56
+ * Error state - disables IntersectionObserver to prevent infinite loops
57
+ * IMPORTANT: Pass this to prevent continuous failed fetch attempts
58
+ */
59
+ isError?: boolean;
60
+ /**
61
+ * Number of rows from the end to trigger fetchNextPage
62
+ * @default 5
63
+ * @example triggerOffset={10} - Trigger when user is 10 rows from bottom
64
+ */
65
+ triggerOffset?: number;
66
+ /**
67
+ * IntersectionObserver rootMargin (how far before trigger enters viewport)
68
+ * @default "200px"
69
+ * @example rootMargin="500px" - Start fetching 500px before trigger is visible
70
+ */
71
+ rootMargin?: string;
72
+ /** Additional CSS classes for the table container */
73
+ className?: string;
74
+ /** Additional children to render inside table element (rare use case) */
75
+ children?: ReactNode;
76
+ }
77
+ /**
78
+ * Table<T>
79
+ *
80
+ * A fully accessible table component with row-based rendering.
81
+ *
82
+ * @template T - Row data type
83
+ */
84
+ export declare function DataTable<T>({ data, label, description, tableHeader, tableRow, loadingRow, emptyRow, tableFooter, isLoading, pageLimit, isFetchingNextPage, hasNextPage, fetchNextPage, isError, triggerOffset, rootMargin, className, children, }: TableProps<T>): import("react/jsx-runtime").JSX.Element;
85
+ export default DataTable;
86
+ //# sourceMappingURL=DataTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTable.tsx"],"names":[],"mappings":"AAEA,OAAc,EACZ,KAAK,SAAS,EACd,KAAK,YAAY,EAGlB,MAAM,OAAO,CAAC;AAQf,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,kDAAkD;IAClD,IAAI,EAAE,CAAC,EAAE,CAAC;IAEV,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IAEd,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,WAAW,EAAE,YAAY,CAAC;IAE1B;;;;;;OAMG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC;IAEnD;;;;;OAKG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;IAE1B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IAExB;;;;OAIG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAM3B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B,4EAA4E;IAC5E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAMlB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAMpB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAC3B,IAAI,EACJ,KAAoB,EACpB,WAAW,EACX,WAAW,EACX,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAiB,EACjB,SAAc,EACd,kBAA0B,EAC1B,WAAmB,EACnB,aAAyB,EACzB,OAAe,EACf,aAAiB,EACjB,UAAoB,EACpB,SAAc,EACd,QAAQ,GACT,EAAE,UAAU,CAAC,CAAC,CAAC,2CA2Gf;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ComponentDoc } from '../../types/docs';
2
+
3
+ export declare const dataTableDocs: ComponentDoc;
4
+ //# sourceMappingURL=DataTable.docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.docs.d.ts","sourceRoot":"","sources":["../../../src/components/data-table/DataTable.docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,eAAO,MAAM,aAAa,EAAE,YAgL3B,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { DataTable } from './DataTable';
2
+
3
+ declare const _default: {
4
+ title: string;
5
+ component: typeof DataTable;
6
+ };
7
+ export default _default;
8
+ interface User {
9
+ id: number;
10
+ name: string;
11
+ email: string;
12
+ role: string;
13
+ status: "active" | "inactive";
14
+ }
15
+ export declare function BasicTable(props: {
16
+ data: User[];
17
+ label: string;
18
+ description: string;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ export declare namespace BasicTable {
21
+ var props: {
22
+ label: {
23
+ type: string;
24
+ default: string;
25
+ };
26
+ description: {
27
+ type: string;
28
+ default: string;
29
+ };
30
+ data: {
31
+ type: string;
32
+ default: User[];
33
+ };
34
+ };
35
+ }
36
+ //# sourceMappingURL=DataTable.showcase.d.ts.map