entangle-ui 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +129 -75
  3. package/dist/esm/components/Icons/CheckIcon.js +27 -0
  4. package/dist/esm/components/Icons/CheckIcon.js.map +1 -0
  5. package/dist/esm/components/Icons/ChevronDownIcon.js +27 -0
  6. package/dist/esm/components/Icons/ChevronDownIcon.js.map +1 -0
  7. package/dist/esm/components/Icons/ChevronUpIcon.js +27 -0
  8. package/dist/esm/components/Icons/ChevronUpIcon.js.map +1 -0
  9. package/dist/esm/components/Icons/CircleIcon.js +27 -0
  10. package/dist/esm/components/Icons/CircleIcon.js.map +1 -0
  11. package/dist/esm/components/Icons/CloseIcon.js +27 -0
  12. package/dist/esm/components/Icons/CloseIcon.js.map +1 -0
  13. package/dist/esm/components/Icons/EyeDropperIcon.js +28 -0
  14. package/dist/esm/components/Icons/EyeDropperIcon.js.map +1 -0
  15. package/dist/esm/components/Icons/TangentAlignedIcon.js +9 -0
  16. package/dist/esm/components/Icons/TangentAlignedIcon.js.map +1 -0
  17. package/dist/esm/components/Icons/TangentAutoIcon.js +9 -0
  18. package/dist/esm/components/Icons/TangentAutoIcon.js.map +1 -0
  19. package/dist/esm/components/Icons/TangentFreeIcon.js +9 -0
  20. package/dist/esm/components/Icons/TangentFreeIcon.js.map +1 -0
  21. package/dist/esm/components/Icons/TangentLinearIcon.js +9 -0
  22. package/dist/esm/components/Icons/TangentLinearIcon.js.map +1 -0
  23. package/dist/esm/components/Icons/TangentMirroredIcon.js +9 -0
  24. package/dist/esm/components/Icons/TangentMirroredIcon.js.map +1 -0
  25. package/dist/esm/components/Icons/TangentStepIcon.js +9 -0
  26. package/dist/esm/components/Icons/TangentStepIcon.js.map +1 -0
  27. package/dist/esm/components/controls/ColorPicker/AlphaSlider.js +92 -0
  28. package/dist/esm/components/controls/ColorPicker/AlphaSlider.js.map +1 -0
  29. package/dist/esm/components/controls/ColorPicker/ColorArea.js +93 -0
  30. package/dist/esm/components/controls/ColorPicker/ColorArea.js.map +1 -0
  31. package/dist/esm/components/controls/ColorPicker/ColorInputs.js +129 -0
  32. package/dist/esm/components/controls/ColorPicker/ColorInputs.js.map +1 -0
  33. package/dist/esm/components/controls/ColorPicker/ColorPalette.js +89 -0
  34. package/dist/esm/components/controls/ColorPicker/ColorPalette.js.map +1 -0
  35. package/dist/esm/components/controls/ColorPicker/ColorPicker.js +75 -0
  36. package/dist/esm/components/controls/ColorPicker/ColorPicker.js.map +1 -0
  37. package/dist/esm/components/controls/ColorPicker/ColorPresets.js +57 -0
  38. package/dist/esm/components/controls/ColorPicker/ColorPresets.js.map +1 -0
  39. package/dist/esm/components/controls/ColorPicker/ColorSwatch.js +67 -0
  40. package/dist/esm/components/controls/ColorPicker/ColorSwatch.js.map +1 -0
  41. package/dist/esm/components/controls/ColorPicker/EyeDropper.js +85 -0
  42. package/dist/esm/components/controls/ColorPicker/EyeDropper.js.map +1 -0
  43. package/dist/esm/components/controls/ColorPicker/HueSlider.js +85 -0
  44. package/dist/esm/components/controls/ColorPicker/HueSlider.js.map +1 -0
  45. package/dist/esm/components/controls/ColorPicker/colorUtils.js +220 -0
  46. package/dist/esm/components/controls/ColorPicker/colorUtils.js.map +1 -0
  47. package/dist/esm/components/controls/ColorPicker/palettes/material.js +299 -0
  48. package/dist/esm/components/controls/ColorPicker/palettes/material.js.map +1 -0
  49. package/dist/esm/components/controls/ColorPicker/palettes/professional.js +479 -0
  50. package/dist/esm/components/controls/ColorPicker/palettes/professional.js.map +1 -0
  51. package/dist/esm/components/controls/ColorPicker/palettes/tailwind.js +366 -0
  52. package/dist/esm/components/controls/ColorPicker/palettes/tailwind.js.map +1 -0
  53. package/dist/esm/components/controls/ColorPicker/useColor.js +63 -0
  54. package/dist/esm/components/controls/ColorPicker/useColor.js.map +1 -0
  55. package/dist/esm/components/controls/CurveEditor/CurveCanvas.js +84 -0
  56. package/dist/esm/components/controls/CurveEditor/CurveCanvas.js.map +1 -0
  57. package/dist/esm/components/controls/CurveEditor/CurveEditor.js +134 -0
  58. package/dist/esm/components/controls/CurveEditor/CurveEditor.js.map +1 -0
  59. package/dist/esm/components/controls/CurveEditor/CurveToolbar.js +96 -0
  60. package/dist/esm/components/controls/CurveEditor/CurveToolbar.js.map +1 -0
  61. package/dist/esm/components/controls/CurveEditor/curvePresets.js +184 -0
  62. package/dist/esm/components/controls/CurveEditor/curvePresets.js.map +1 -0
  63. package/dist/esm/components/controls/CurveEditor/curveUtils.js +338 -0
  64. package/dist/esm/components/controls/CurveEditor/curveUtils.js.map +1 -0
  65. package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js +569 -0
  66. package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js.map +1 -0
  67. package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js +400 -0
  68. package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js.map +1 -0
  69. package/dist/esm/components/controls/NumberInput/NumberInput.js +377 -0
  70. package/dist/esm/components/controls/NumberInput/NumberInput.js.map +1 -0
  71. package/dist/esm/components/controls/NumberInput/useNumberInput.js +324 -0
  72. package/dist/esm/components/controls/NumberInput/useNumberInput.js.map +1 -0
  73. package/dist/esm/components/controls/Select/Select.js +533 -0
  74. package/dist/esm/components/controls/Select/Select.js.map +1 -0
  75. package/dist/esm/components/controls/Slider/Slider.js +413 -0
  76. package/dist/esm/components/controls/Slider/Slider.js.map +1 -0
  77. package/dist/esm/components/controls/TreeView/TreeNode.js +189 -0
  78. package/dist/esm/components/controls/TreeView/TreeNode.js.map +1 -0
  79. package/dist/esm/components/controls/TreeView/TreeView.js +213 -0
  80. package/dist/esm/components/controls/TreeView/TreeView.js.map +1 -0
  81. package/dist/esm/components/controls/TreeView/useTreeState.js +154 -0
  82. package/dist/esm/components/controls/TreeView/useTreeState.js.map +1 -0
  83. package/dist/esm/components/controls/VectorInput/VectorInput.js +202 -0
  84. package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -0
  85. package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js +42 -0
  86. package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js.map +1 -0
  87. package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js +98 -0
  88. package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js.map +1 -0
  89. package/dist/esm/components/editor/PropertyInspector/PropertyRow.js +154 -0
  90. package/dist/esm/components/editor/PropertyInspector/PropertyRow.js.map +1 -0
  91. package/dist/esm/components/editor/PropertyInspector/PropertySection.js +136 -0
  92. package/dist/esm/components/editor/PropertyInspector/PropertySection.js.map +1 -0
  93. package/dist/esm/components/editor/PropertyInspector/usePropertyUndo.js +86 -0
  94. package/dist/esm/components/editor/PropertyInspector/usePropertyUndo.js.map +1 -0
  95. package/dist/esm/components/feedback/Dialog/Dialog.js +92 -0
  96. package/dist/esm/components/feedback/Dialog/Dialog.js.map +1 -0
  97. package/dist/esm/components/feedback/Dialog/Dialog.styled.js +80 -0
  98. package/dist/esm/components/feedback/Dialog/Dialog.styled.js.map +1 -0
  99. package/dist/esm/components/feedback/Dialog/DialogBody.js +33 -0
  100. package/dist/esm/components/feedback/Dialog/DialogBody.js.map +1 -0
  101. package/dist/esm/components/feedback/Dialog/DialogClose.js +26 -0
  102. package/dist/esm/components/feedback/Dialog/DialogClose.js.map +1 -0
  103. package/dist/esm/components/feedback/Dialog/DialogFooter.js +43 -0
  104. package/dist/esm/components/feedback/Dialog/DialogFooter.js.map +1 -0
  105. package/dist/esm/components/feedback/Dialog/DialogHeader.js +84 -0
  106. package/dist/esm/components/feedback/Dialog/DialogHeader.js.map +1 -0
  107. package/dist/esm/components/feedback/Dialog/useDialogAnimation.js +70 -0
  108. package/dist/esm/components/feedback/Dialog/useDialogAnimation.js.map +1 -0
  109. package/dist/esm/components/feedback/Dialog/useFocusTrap.js +55 -0
  110. package/dist/esm/components/feedback/Dialog/useFocusTrap.js.map +1 -0
  111. package/dist/esm/components/feedback/Toast/ToastContainer.js +34 -0
  112. package/dist/esm/components/feedback/Toast/ToastContainer.js.map +1 -0
  113. package/dist/esm/components/feedback/Toast/ToastItem.js +214 -0
  114. package/dist/esm/components/feedback/Toast/ToastItem.js.map +1 -0
  115. package/dist/esm/components/feedback/Toast/ToastProvider.js +47 -0
  116. package/dist/esm/components/feedback/Toast/ToastProvider.js.map +1 -0
  117. package/dist/esm/components/feedback/Toast/useToast.js +60 -0
  118. package/dist/esm/components/feedback/Toast/useToast.js.map +1 -0
  119. package/dist/esm/components/form/FormHelperText.js +38 -0
  120. package/dist/esm/components/form/FormHelperText.js.map +1 -0
  121. package/dist/esm/components/form/FormLabel.js +43 -0
  122. package/dist/esm/components/form/FormLabel.js.map +1 -0
  123. package/dist/esm/components/form/InputWrapper.js +100 -0
  124. package/dist/esm/components/form/InputWrapper.js.map +1 -0
  125. package/dist/esm/components/layout/Accordion/Accordion.js +103 -0
  126. package/dist/esm/components/layout/Accordion/Accordion.js.map +1 -0
  127. package/dist/esm/components/layout/Accordion/AccordionContent.js +37 -0
  128. package/dist/esm/components/layout/Accordion/AccordionContent.js.map +1 -0
  129. package/dist/esm/components/layout/Accordion/AccordionItem.js +24 -0
  130. package/dist/esm/components/layout/Accordion/AccordionItem.js.map +1 -0
  131. package/dist/esm/components/layout/Accordion/AccordionTrigger.js +123 -0
  132. package/dist/esm/components/layout/Accordion/AccordionTrigger.js.map +1 -0
  133. package/dist/esm/components/layout/Flex/Flex.js +149 -0
  134. package/dist/esm/components/layout/Flex/Flex.js.map +1 -0
  135. package/dist/esm/components/layout/Grid/Grid.js +118 -0
  136. package/dist/esm/components/layout/Grid/Grid.js.map +1 -0
  137. package/dist/esm/components/layout/PanelSurface/PanelSurface.js +106 -0
  138. package/dist/esm/components/layout/PanelSurface/PanelSurface.js.map +1 -0
  139. package/dist/esm/components/layout/ScrollArea/ScrollArea.js +362 -0
  140. package/dist/esm/components/layout/ScrollArea/ScrollArea.js.map +1 -0
  141. package/dist/esm/components/layout/Spacer/Spacer.js +78 -0
  142. package/dist/esm/components/layout/Spacer/Spacer.js.map +1 -0
  143. package/dist/esm/components/layout/SplitPane/SplitPane.js +581 -0
  144. package/dist/esm/components/layout/SplitPane/SplitPane.js.map +1 -0
  145. package/dist/esm/components/layout/SplitPane/SplitPanePanel.js +29 -0
  146. package/dist/esm/components/layout/SplitPane/SplitPanePanel.js.map +1 -0
  147. package/dist/esm/components/layout/Stack/Stack.js +138 -0
  148. package/dist/esm/components/layout/Stack/Stack.js.map +1 -0
  149. package/dist/esm/components/navigation/ContextMenu/ContextMenu.js +45 -0
  150. package/dist/esm/components/navigation/ContextMenu/ContextMenu.js.map +1 -0
  151. package/dist/esm/components/navigation/ContextMenu/useContextMenuTarget.js +52 -0
  152. package/dist/esm/components/navigation/ContextMenu/useContextMenuTarget.js.map +1 -0
  153. package/dist/esm/components/navigation/Menu/Menu.helpers.js +52 -0
  154. package/dist/esm/components/navigation/Menu/Menu.helpers.js.map +1 -0
  155. package/dist/esm/components/navigation/Menu/Menu.js +80 -0
  156. package/dist/esm/components/navigation/Menu/Menu.js.map +1 -0
  157. package/dist/esm/components/navigation/Menu/Menu.styled.js +83 -0
  158. package/dist/esm/components/navigation/Menu/Menu.styled.js.map +1 -0
  159. package/dist/esm/components/navigation/Menu/useMenu.js +87 -0
  160. package/dist/esm/components/navigation/Menu/useMenu.js.map +1 -0
  161. package/dist/esm/components/navigation/Tabs/Tab.js +222 -0
  162. package/dist/esm/components/navigation/Tabs/Tab.js.map +1 -0
  163. package/dist/esm/components/navigation/Tabs/TabList.js +115 -0
  164. package/dist/esm/components/navigation/Tabs/TabList.js.map +1 -0
  165. package/dist/esm/components/navigation/Tabs/TabPanel.js +32 -0
  166. package/dist/esm/components/navigation/Tabs/TabPanel.js.map +1 -0
  167. package/dist/esm/components/navigation/Tabs/Tabs.js +77 -0
  168. package/dist/esm/components/navigation/Tabs/Tabs.js.map +1 -0
  169. package/dist/esm/components/primitives/BaseButton/BaseButton.js +17 -0
  170. package/dist/esm/components/primitives/BaseButton/BaseButton.js.map +1 -0
  171. package/dist/esm/components/primitives/Button/Button.js +183 -0
  172. package/dist/esm/components/primitives/Button/Button.js.map +1 -0
  173. package/dist/esm/components/primitives/Checkbox/Checkbox.js +205 -0
  174. package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -0
  175. package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js +71 -0
  176. package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js.map +1 -0
  177. package/dist/esm/components/primitives/Collapsible/Collapsible.js +116 -0
  178. package/dist/esm/components/primitives/Collapsible/Collapsible.js.map +1 -0
  179. package/dist/esm/components/primitives/Icon/Icon.js +63 -0
  180. package/dist/esm/components/primitives/Icon/Icon.js.map +1 -0
  181. package/dist/esm/components/primitives/IconButton/IconButton.js +222 -0
  182. package/dist/esm/components/primitives/IconButton/IconButton.js.map +1 -0
  183. package/dist/esm/components/primitives/Input/Input.js +133 -0
  184. package/dist/esm/components/primitives/Input/Input.js.map +1 -0
  185. package/dist/esm/components/primitives/Paper/Paper.js +146 -0
  186. package/dist/esm/components/primitives/Paper/Paper.js.map +1 -0
  187. package/dist/esm/components/primitives/Popover/Popover.js +121 -0
  188. package/dist/esm/components/primitives/Popover/Popover.js.map +1 -0
  189. package/dist/esm/components/primitives/Popover/PopoverClose.js +50 -0
  190. package/dist/esm/components/primitives/Popover/PopoverClose.js.map +1 -0
  191. package/dist/esm/components/primitives/Popover/PopoverContent.js +102 -0
  192. package/dist/esm/components/primitives/Popover/PopoverContent.js.map +1 -0
  193. package/dist/esm/components/primitives/Popover/PopoverTrigger.js +37 -0
  194. package/dist/esm/components/primitives/Popover/PopoverTrigger.js.map +1 -0
  195. package/dist/esm/components/primitives/Switch/Switch.js +170 -0
  196. package/dist/esm/components/primitives/Switch/Switch.js.map +1 -0
  197. package/dist/esm/components/primitives/Text/Text.js +166 -0
  198. package/dist/esm/components/primitives/Text/Text.js.map +1 -0
  199. package/dist/esm/components/primitives/Tooltip/Arrow.js +52 -0
  200. package/dist/esm/components/primitives/Tooltip/Arrow.js.map +1 -0
  201. package/dist/esm/components/primitives/Tooltip/Tooltip.js +219 -0
  202. package/dist/esm/components/primitives/Tooltip/Tooltip.js.map +1 -0
  203. package/dist/esm/components/primitives/Tooltip/utils.js +66 -0
  204. package/dist/esm/components/primitives/Tooltip/utils.js.map +1 -0
  205. package/dist/esm/components/shell/AppShell/AppShell.js +157 -0
  206. package/dist/esm/components/shell/AppShell/AppShell.js.map +1 -0
  207. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js +236 -0
  208. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js.map +1 -0
  209. package/dist/esm/components/shell/MenuBar/MenuBar.js +340 -0
  210. package/dist/esm/components/shell/MenuBar/MenuBar.js.map +1 -0
  211. package/dist/esm/components/shell/StatusBar/StatusBar.js +134 -0
  212. package/dist/esm/components/shell/StatusBar/StatusBar.js.map +1 -0
  213. package/dist/esm/components/shell/Toolbar/Toolbar.js +185 -0
  214. package/dist/esm/components/shell/Toolbar/Toolbar.js.map +1 -0
  215. package/dist/esm/context/KeyboardContext.js +14 -0
  216. package/dist/esm/context/KeyboardContext.js.map +1 -0
  217. package/dist/esm/index.js +78 -0
  218. package/dist/esm/index.js.map +1 -0
  219. package/dist/esm/palettes.js +4 -0
  220. package/dist/esm/palettes.js.map +1 -0
  221. package/dist/esm/theme/ThemeProvider.js +12 -0
  222. package/dist/esm/theme/ThemeProvider.js.map +1 -0
  223. package/dist/esm/theme/createTheme.js +10 -0
  224. package/dist/esm/theme/createTheme.js.map +1 -0
  225. package/dist/esm/theme/tokens.js +144 -0
  226. package/dist/esm/theme/tokens.js.map +1 -0
  227. package/dist/esm/utils/cn.js +6 -0
  228. package/dist/esm/utils/cn.js.map +1 -0
  229. package/dist/esm/utils/mathExpression.js +275 -0
  230. package/dist/esm/utils/mathExpression.js.map +1 -0
  231. package/dist/esm/utils/mathUtils.js +18 -0
  232. package/dist/esm/utils/mathUtils.js.map +1 -0
  233. package/dist/esm/utils/objects.js +22 -0
  234. package/dist/esm/utils/objects.js.map +1 -0
  235. package/dist/esm/utils/styledUtils.js +81 -0
  236. package/dist/esm/utils/styledUtils.js.map +1 -0
  237. package/dist/types/components/controls/ColorPicker/ColorPalette.d.ts +16 -0
  238. package/dist/types/components/controls/ColorPicker/ColorPicker.d.ts +6 -0
  239. package/dist/types/components/controls/ColorPicker/ColorPicker.types.d.ts +120 -0
  240. package/dist/types/components/controls/ColorPicker/ColorSwatch.d.ts +6 -0
  241. package/dist/types/components/controls/ColorPicker/EyeDropper.d.ts +28 -0
  242. package/dist/types/components/controls/ColorPicker/colorUtils.d.ts +3 -0
  243. package/dist/types/components/controls/ColorPicker/palettes/material.d.ts +24 -0
  244. package/dist/types/components/controls/ColorPicker/palettes/professional.d.ts +19 -0
  245. package/dist/types/components/controls/ColorPicker/palettes/tailwind.d.ts +12 -0
  246. package/dist/types/components/controls/CurveEditor/CurveEditor.d.ts +6 -0
  247. package/dist/types/components/controls/CurveEditor/CurveEditor.types.d.ts +297 -0
  248. package/dist/types/components/controls/CurveEditor/curvePresets.d.ts +5 -0
  249. package/dist/types/components/controls/CurveEditor/curveUtils.d.ts +28 -0
  250. package/dist/types/components/controls/NumberInput/NumberInput.d.ts +150 -0
  251. package/dist/types/components/controls/NumberInput/useNumberInput.d.ts +65 -0
  252. package/dist/types/components/controls/Select/Select.d.ts +29 -0
  253. package/dist/types/components/controls/Select/Select.types.d.ts +131 -0
  254. package/dist/types/components/controls/Slider/Slider.d.ts +178 -0
  255. package/dist/types/components/controls/TreeView/TreeView.d.ts +27 -0
  256. package/dist/types/components/controls/TreeView/TreeView.types.d.ts +135 -0
  257. package/dist/types/components/controls/VectorInput/VectorInput.d.ts +26 -0
  258. package/dist/types/components/controls/VectorInput/VectorInput.types.d.ts +158 -0
  259. package/dist/types/components/editor/PropertyInspector/PropertyGroup.d.ts +6 -0
  260. package/dist/types/components/editor/PropertyInspector/PropertyInspector.types.d.ts +238 -0
  261. package/dist/types/components/editor/PropertyInspector/PropertyPanel.d.ts +6 -0
  262. package/dist/types/components/editor/PropertyInspector/PropertyRow.d.ts +6 -0
  263. package/dist/types/components/editor/PropertyInspector/PropertySection.d.ts +6 -0
  264. package/dist/types/components/editor/PropertyInspector/usePropertyUndo.d.ts +9 -0
  265. package/dist/types/components/feedback/Dialog/Dialog.d.ts +25 -0
  266. package/dist/types/components/feedback/Dialog/Dialog.types.d.ts +55 -0
  267. package/dist/types/components/feedback/Dialog/DialogBody.d.ts +16 -0
  268. package/dist/types/components/feedback/Dialog/DialogClose.d.ts +21 -0
  269. package/dist/types/components/feedback/Dialog/DialogFooter.d.ts +17 -0
  270. package/dist/types/components/feedback/Dialog/DialogHeader.d.ts +17 -0
  271. package/dist/types/components/feedback/Toast/Toast.types.d.ts +39 -0
  272. package/dist/types/components/feedback/Toast/ToastProvider.d.ts +19 -0
  273. package/dist/types/components/feedback/Toast/useToast.d.ts +22 -0
  274. package/dist/types/components/form/FormHelperText.d.ts +321 -0
  275. package/dist/types/components/form/FormLabel.d.ts +331 -0
  276. package/dist/types/components/form/InputWrapper.d.ts +346 -0
  277. package/dist/types/components/layout/Accordion/Accordion.d.ts +23 -0
  278. package/dist/types/components/layout/Accordion/Accordion.types.d.ts +109 -0
  279. package/dist/types/components/layout/Accordion/AccordionContent.d.ts +6 -0
  280. package/dist/types/components/layout/Accordion/AccordionItem.d.ts +6 -0
  281. package/dist/types/components/layout/Accordion/AccordionTrigger.d.ts +6 -0
  282. package/dist/types/components/layout/Flex/Flex.d.ts +215 -0
  283. package/dist/types/components/layout/Grid/Grid.d.ts +113 -0
  284. package/dist/types/components/layout/PanelSurface/PanelSurface.d.ts +1153 -0
  285. package/dist/types/components/layout/PanelSurface/PanelSurface.types.d.ts +64 -0
  286. package/dist/types/components/layout/ScrollArea/ScrollArea.d.ts +6 -0
  287. package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts +93 -0
  288. package/dist/types/components/layout/Spacer/Spacer.d.ts +329 -0
  289. package/dist/types/components/layout/SplitPane/SplitPane.d.ts +21 -0
  290. package/dist/types/components/layout/SplitPane/SplitPane.types.d.ts +87 -0
  291. package/dist/types/components/layout/SplitPane/SplitPanePanel.d.ts +20 -0
  292. package/dist/types/components/layout/Stack/Stack.d.ts +166 -0
  293. package/dist/types/components/navigation/ContextMenu/ContextMenu.d.ts +6 -0
  294. package/dist/types/components/navigation/ContextMenu/ContextMenu.types.d.ts +74 -0
  295. package/dist/types/components/navigation/ContextMenu/useContextMenuTarget.d.ts +5 -0
  296. package/dist/types/components/navigation/Menu/Menu.d.ts +42 -0
  297. package/dist/types/components/navigation/Menu/Menu.types.d.ts +94 -0
  298. package/dist/types/components/navigation/Menu/useMenu.d.ts +16 -0
  299. package/dist/types/components/navigation/Tabs/Tab.d.ts +6 -0
  300. package/dist/types/components/navigation/Tabs/TabList.d.ts +6 -0
  301. package/dist/types/components/navigation/Tabs/TabPanel.d.ts +6 -0
  302. package/dist/types/components/navigation/Tabs/Tabs.d.ts +23 -0
  303. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +117 -0
  304. package/dist/types/components/primitives/Button/Button.d.ts +392 -0
  305. package/dist/types/components/primitives/Checkbox/Checkbox.d.ts +20 -0
  306. package/dist/types/components/primitives/Checkbox/Checkbox.types.d.ts +156 -0
  307. package/dist/types/components/primitives/Checkbox/CheckboxGroup.d.ts +25 -0
  308. package/dist/types/components/primitives/Collapsible/Collapsible.d.ts +6 -0
  309. package/dist/types/components/primitives/Collapsible/Collapsible.types.d.ts +28 -0
  310. package/dist/types/components/primitives/Icon/Icon.d.ts +40 -0
  311. package/dist/types/components/primitives/IconButton/IconButton.d.ts +354 -0
  312. package/dist/types/components/primitives/Input/Input.d.ts +134 -0
  313. package/dist/types/components/primitives/Paper/Paper.d.ts +419 -0
  314. package/dist/types/components/primitives/Popover/Popover.d.ts +25 -0
  315. package/dist/types/components/primitives/Popover/Popover.types.d.ts +99 -0
  316. package/dist/types/components/primitives/Popover/PopoverClose.d.ts +6 -0
  317. package/dist/types/components/primitives/Popover/PopoverContent.d.ts +6 -0
  318. package/dist/types/components/primitives/Popover/PopoverTrigger.d.ts +10 -0
  319. package/dist/types/components/primitives/Switch/Switch.d.ts +78 -0
  320. package/dist/types/components/primitives/Text/Text.d.ts +442 -0
  321. package/dist/types/components/primitives/Tooltip/Tooltip.d.ts +175 -0
  322. package/dist/types/components/primitives/Tooltip/types.d.ts +82 -0
  323. package/dist/types/components/shell/AppShell/AppShell.d.ts +1437 -0
  324. package/dist/types/components/shell/AppShell/AppShell.types.d.ts +48 -0
  325. package/dist/types/components/shell/FloatingPanel/FloatingPanel.d.ts +7 -0
  326. package/dist/types/components/shell/FloatingPanel/FloatingPanel.types.d.ts +61 -0
  327. package/dist/types/components/shell/MenuBar/MenuBar.d.ts +1441 -0
  328. package/dist/types/components/shell/MenuBar/MenuBar.types.d.ts +48 -0
  329. package/dist/types/components/shell/StatusBar/StatusBar.d.ts +868 -0
  330. package/dist/types/components/shell/StatusBar/StatusBar.types.d.ts +40 -0
  331. package/dist/types/components/shell/Toolbar/Toolbar.d.ts +1728 -0
  332. package/dist/types/components/shell/Toolbar/Toolbar.types.d.ts +59 -0
  333. package/dist/types/index.d.ts +101 -0
  334. package/dist/types/palettes.d.ts +3 -0
  335. package/dist/types/theme/ThemeProvider.d.ts +11 -0
  336. package/dist/types/theme/createTheme.d.ts +6 -0
  337. package/dist/types/theme/tokens.d.ts +147 -0
  338. package/dist/types/theme/types.d.ts +7 -0
  339. package/dist/types/types/common.d.ts +24 -0
  340. package/dist/types/types/utilities.d.ts +72 -0
  341. package/dist/types/utils/cn.d.ts +3 -0
  342. package/package.json +23 -7
  343. package/dist/index.d.ts +0 -11
  344. package/dist/index.esm.js +0 -12149
  345. package/dist/index.esm.js.map +0 -1
  346. package/dist/index.js +0 -12223
  347. package/dist/index.js.map +0 -1
@@ -0,0 +1,533 @@
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import { useId, useRef, useState, useMemo, useCallback, useEffect } from 'react';
3
+ import { createPortal } from 'react-dom';
4
+ import styled from '@emotion/styled';
5
+ import { processCss } from '../../../utils/styledUtils.js';
6
+ import { FormLabel } from '../../form/FormLabel.js';
7
+ import { FormHelperText } from '../../form/FormHelperText.js';
8
+ import '../../form/InputWrapper.js';
9
+ import { ScrollArea } from '../../layout/ScrollArea/ScrollArea.js';
10
+
11
+ // --- Helpers ---
12
+ function isOptionGroup(item) {
13
+ return 'options' in item && Array.isArray(item.options);
14
+ }
15
+ function flattenOptions(items) {
16
+ const result = [];
17
+ for (const item of items) {
18
+ if (isOptionGroup(item)) {
19
+ result.push(...item.options);
20
+ }
21
+ else {
22
+ result.push(item);
23
+ }
24
+ }
25
+ return result;
26
+ }
27
+ function defaultFilter(option, query) {
28
+ const label = (option.label ?? option.value).toLowerCase();
29
+ return label.includes(query.toLowerCase());
30
+ }
31
+ // --- Size maps ---
32
+ const TRIGGER_SIZES = {
33
+ sm: { height: 20, paddingKey: 'sm', fontKey: 'xs', chevronSize: 10 },
34
+ md: { height: 24, paddingKey: 'md', fontKey: 'xs', chevronSize: 12 },
35
+ lg: { height: 32, paddingKey: 'xl', fontKey: 'sm', chevronSize: 14 },
36
+ };
37
+ // --- Styled components ---
38
+ const StyledSelectContainer = styled.div `
39
+ display: flex;
40
+ flex-direction: column;
41
+ position: relative;
42
+ `;
43
+ const StyledTrigger = styled.button `
44
+ /* Reset */
45
+ margin: 0;
46
+ font-family: inherit;
47
+ cursor: ${props => (props.$disabled ? 'not-allowed' : 'pointer')};
48
+ user-select: none;
49
+ outline: none;
50
+
51
+ /* Layout */
52
+ display: inline-flex;
53
+ align-items: center;
54
+ justify-content: space-between;
55
+ font-weight: ${props => props.theme.typography.fontWeight.normal};
56
+ border-radius: ${props => props.theme.borderRadius.md}px;
57
+ transition: all ${props => props.theme.transitions.fast};
58
+ text-align: left;
59
+
60
+ /* Sizing */
61
+ height: ${props => TRIGGER_SIZES[props.$size].height}px;
62
+ padding: 0
63
+ ${props => props.theme.spacing[TRIGGER_SIZES[props.$size].paddingKey]}px;
64
+ font-size: ${props => props.theme.typography.fontSize[TRIGGER_SIZES[props.$size].fontKey]}px;
65
+ gap: ${props => props.theme.spacing.sm}px;
66
+
67
+ /* Variant styles */
68
+ ${props => {
69
+ const { colors } = props.theme;
70
+ const borderColor = props.$error
71
+ ? colors.accent.error
72
+ : props.$open
73
+ ? colors.border.focus
74
+ : colors.border.default;
75
+ switch (props.$variant) {
76
+ case 'ghost':
77
+ return `
78
+ background: transparent;
79
+ border: 1px solid transparent;
80
+ color: ${props.$hasValue ? colors.text.primary : colors.text.muted};
81
+ &:hover:not(:disabled) {
82
+ background: ${colors.surface.hover};
83
+ }
84
+ `;
85
+ case 'filled':
86
+ return `
87
+ background: ${colors.surface.default};
88
+ border: 1px solid ${borderColor};
89
+ color: ${props.$hasValue ? colors.text.primary : colors.text.muted};
90
+ &:hover:not(:disabled) {
91
+ border-color: ${colors.border.focus};
92
+ }
93
+ `;
94
+ default:
95
+ return `
96
+ background: transparent;
97
+ border: 1px solid ${borderColor};
98
+ color: ${props.$hasValue ? colors.text.primary : colors.text.muted};
99
+ &:hover:not(:disabled) {
100
+ background: ${colors.surface.hover};
101
+ border-color: ${props.$error ? colors.accent.error : 'transparent'};
102
+ }
103
+ `;
104
+ }
105
+ }}
106
+
107
+ /* Open state */
108
+ ${props => props.$open && `box-shadow: ${props.theme.shadows.focus};`}
109
+
110
+ /* Disabled */
111
+ &:disabled {
112
+ opacity: 0.5;
113
+ cursor: not-allowed;
114
+ }
115
+
116
+ /* Focus visible */
117
+ &:focus-visible {
118
+ box-shadow: ${props => props.theme.shadows.focus};
119
+ }
120
+
121
+ /* Custom CSS */
122
+ ${props => processCss(props.$css, props.theme)}
123
+ `;
124
+ const StyledTriggerContent = styled.span `
125
+ display: flex;
126
+ align-items: center;
127
+ gap: ${props => props.theme.spacing.sm}px;
128
+ overflow: hidden;
129
+ text-overflow: ellipsis;
130
+ white-space: nowrap;
131
+ min-width: 0;
132
+ flex: 1;
133
+ `;
134
+ const StyledChevron = styled.span `
135
+ display: flex;
136
+ align-items: center;
137
+ justify-content: center;
138
+ flex-shrink: 0;
139
+ transition: transform ${props => props.theme.transitions.fast};
140
+ transform: ${props => (props.$open ? 'rotate(180deg)' : 'rotate(0deg)')};
141
+ color: ${props => props.theme.colors.text.muted};
142
+
143
+ svg {
144
+ width: ${props => props.$size}px;
145
+ height: ${props => props.$size}px;
146
+ }
147
+ `;
148
+ const StyledClearButton = styled.span `
149
+ /* Reset */
150
+ padding: 0;
151
+ margin: 0;
152
+ border: none;
153
+ background: none;
154
+ outline: none;
155
+ cursor: pointer;
156
+ display: flex;
157
+ align-items: center;
158
+ justify-content: center;
159
+ color: ${props => props.theme.colors.text.muted};
160
+ flex-shrink: 0;
161
+
162
+ &:hover {
163
+ color: ${props => props.theme.colors.text.primary};
164
+ }
165
+ `;
166
+ const StyledDropdown = styled.div `
167
+ position: fixed;
168
+ z-index: ${props => props.theme.zIndex.dropdown};
169
+ background: ${props => props.theme.colors.background.elevated};
170
+ border: 1px solid ${props => props.theme.colors.border.default};
171
+ border-radius: ${props => props.theme.borderRadius.md}px;
172
+ box-shadow: ${props => props.theme.shadows.lg};
173
+ overflow: hidden;
174
+ font-family: ${props => props.theme.typography.fontFamily.sans};
175
+ animation: selectDropdownIn ${props => props.theme.transitions.fast} forwards;
176
+
177
+ @keyframes selectDropdownIn {
178
+ from {
179
+ opacity: 0;
180
+ transform: scaleY(0.96);
181
+ }
182
+ to {
183
+ opacity: 1;
184
+ transform: scaleY(1);
185
+ }
186
+ }
187
+ `;
188
+ const StyledSearchInput = styled.input `
189
+ width: 100%;
190
+ padding: ${props => props.theme.spacing.sm}px
191
+ ${props => props.theme.spacing.md}px;
192
+ border: none;
193
+ border-bottom: 1px solid ${props => props.theme.colors.border.default};
194
+ background: transparent;
195
+ color: ${props => props.theme.colors.text.primary};
196
+ font-size: ${props => props.theme.typography.fontSize.md}px;
197
+ outline: none;
198
+ font-family: inherit;
199
+
200
+ &::placeholder {
201
+ color: ${props => props.theme.colors.text.muted};
202
+ }
203
+ `;
204
+ const StyledOptionsList = styled(ScrollArea) `
205
+ width: 100%;
206
+ `;
207
+ const StyledOptionItem = styled.div `
208
+ display: flex;
209
+ align-items: center;
210
+ padding: ${props => props.theme.spacing.sm}px
211
+ ${props => props.theme.spacing.md}px;
212
+ cursor: ${props => (props.$disabled ? 'not-allowed' : 'pointer')};
213
+ font-size: ${props => props.theme.typography.fontSize.md}px;
214
+ color: ${props => props.$disabled
215
+ ? props.theme.colors.text.disabled
216
+ : props.theme.colors.text.primary};
217
+ background: ${props => {
218
+ if (props.$highlighted)
219
+ return props.theme.colors.surface.hover;
220
+ if (props.$selected)
221
+ return props.theme.colors.surface.active;
222
+ return 'transparent';
223
+ }};
224
+ gap: ${props => props.theme.spacing.sm}px;
225
+ opacity: ${props => (props.$disabled ? 0.5 : 1)};
226
+ transition: background ${props => props.theme.transitions.fast};
227
+
228
+ &:hover {
229
+ ${props => !props.$disabled && `background: ${props.theme.colors.surface.hover};`}
230
+ }
231
+ `;
232
+ const StyledGroupLabel = styled.div `
233
+ padding: ${props => props.theme.spacing.sm}px
234
+ ${props => props.theme.spacing.md}px;
235
+ font-size: ${props => props.theme.typography.fontSize.xs}px;
236
+ color: ${props => props.theme.colors.text.muted};
237
+ text-transform: uppercase;
238
+ font-weight: ${props => props.theme.typography.fontWeight.medium};
239
+ letter-spacing: 0.5px;
240
+ border-bottom: 1px solid ${props => props.theme.colors.border.default};
241
+ `;
242
+ const StyledEmptyMessage = styled.div `
243
+ padding: ${props => props.theme.spacing.md}px;
244
+ text-align: center;
245
+ color: ${props => props.theme.colors.text.muted};
246
+ font-size: ${props => props.theme.typography.fontSize.md}px;
247
+ `;
248
+ const StyledCheckmark = styled.span `
249
+ margin-left: auto;
250
+ flex-shrink: 0;
251
+ color: ${props => props.theme.colors.accent.primary};
252
+ display: flex;
253
+ align-items: center;
254
+ `;
255
+ // --- Chevron icon ---
256
+ const ChevronDownIcon = ({ size }) => (jsx("svg", { width: size, height: size, viewBox: "0 0 12 12", fill: "none", "aria-hidden": "true", children: jsx("path", { d: "M3 4.5L6 7.5L9 4.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
257
+ // --- Component ---
258
+ /**
259
+ * Select component for choosing single values from a dropdown list.
260
+ *
261
+ * Supports searchable mode, grouped options, keyboard navigation,
262
+ * clearable state, and multiple visual variants.
263
+ *
264
+ * @example
265
+ * ```tsx
266
+ * <Select
267
+ * label="Blend Mode"
268
+ * options={[
269
+ * { value: 'normal', label: 'Normal' },
270
+ * { value: 'multiply', label: 'Multiply' },
271
+ * { value: 'screen', label: 'Screen' },
272
+ * ]}
273
+ * value={blendMode}
274
+ * onChange={setBlendMode}
275
+ * />
276
+ * ```
277
+ */
278
+ function Select({ value: valueProp, defaultValue, options, placeholder = 'Select...', searchable = false, searchPlaceholder = 'Search...', filterFn, emptyMessage = 'No results found', size = 'md', variant = 'default', label, helperText, error = false, errorMessage, disabled = false, required = false, clearable = false, maxDropdownHeight = 240, minDropdownWidth, name, onChange, onOpenChange, className, style, css, testId, ref, id: idProp, ...rest }) {
279
+ const autoId = useId();
280
+ const selectId = idProp ?? autoId;
281
+ const labelId = `${selectId}-label`;
282
+ const helperId = `${selectId}-helper`;
283
+ const listboxId = `${selectId}-listbox`;
284
+ const triggerRef = useRef(null);
285
+ const dropdownRef = useRef(null);
286
+ const searchRef = useRef(null);
287
+ const [isOpen, setIsOpen] = useState(false);
288
+ const [internalValue, setInternalValue] = useState(defaultValue ?? null);
289
+ const [searchQuery, setSearchQuery] = useState('');
290
+ const [highlightedIndex, setHighlightedIndex] = useState(-1);
291
+ const [dropdownStyle, setDropdownStyle] = useState({});
292
+ const isControlled = valueProp !== undefined;
293
+ const currentValue = isControlled ? valueProp : internalValue;
294
+ // Flatten all options for navigation
295
+ const allOptions = useMemo(() => flattenOptions(options), [options]);
296
+ // Filter options when searchable
297
+ const filter = filterFn ?? defaultFilter;
298
+ const filteredOptions = useMemo(() => {
299
+ if (!searchable || !searchQuery)
300
+ return allOptions;
301
+ return allOptions.filter(opt => filter(opt, searchQuery));
302
+ }, [allOptions, searchable, searchQuery, filter]);
303
+ // Find selected option
304
+ const selectedOption = useMemo(() => allOptions.find(o => o.value === currentValue) ?? null, [allOptions, currentValue]);
305
+ // Position dropdown
306
+ const updateDropdownPosition = useCallback(() => {
307
+ const trigger = triggerRef.current;
308
+ if (!trigger)
309
+ return;
310
+ const rect = trigger.getBoundingClientRect();
311
+ const spaceBelow = window.innerHeight - rect.bottom;
312
+ const openAbove = spaceBelow < maxDropdownHeight + 8 && rect.top > spaceBelow;
313
+ const dropdownW = minDropdownWidth !== undefined
314
+ ? Math.max(rect.width, minDropdownWidth)
315
+ : rect.width;
316
+ setDropdownStyle({
317
+ left: rect.left,
318
+ width: dropdownW,
319
+ ...(openAbove
320
+ ? {
321
+ bottom: window.innerHeight - rect.top + 4,
322
+ transformOrigin: 'bottom',
323
+ }
324
+ : { top: rect.bottom + 4, transformOrigin: 'top' }),
325
+ });
326
+ }, [maxDropdownHeight, minDropdownWidth]);
327
+ const open = useCallback(() => {
328
+ if (disabled)
329
+ return;
330
+ setIsOpen(true);
331
+ setSearchQuery('');
332
+ setHighlightedIndex(-1);
333
+ onOpenChange?.(true);
334
+ // Position is calculated in useEffect after render
335
+ }, [disabled, onOpenChange]);
336
+ const close = useCallback(() => {
337
+ setIsOpen(false);
338
+ setSearchQuery('');
339
+ setHighlightedIndex(-1);
340
+ onOpenChange?.(false);
341
+ triggerRef.current?.focus();
342
+ }, [onOpenChange]);
343
+ const selectValue = useCallback((val) => {
344
+ if (!isControlled) {
345
+ setInternalValue(val);
346
+ }
347
+ onChange?.(val);
348
+ close();
349
+ }, [isControlled, onChange, close]);
350
+ // Update position when open
351
+ useEffect(() => {
352
+ if (isOpen) {
353
+ updateDropdownPosition();
354
+ if (searchable) {
355
+ // Focus search input after portal renders
356
+ requestAnimationFrame(() => {
357
+ searchRef.current?.focus();
358
+ });
359
+ }
360
+ }
361
+ }, [isOpen, updateDropdownPosition, searchable]);
362
+ // Close on outside click
363
+ useEffect(() => {
364
+ if (!isOpen)
365
+ return;
366
+ const handleClick = (e) => {
367
+ const target = e.target;
368
+ if (!triggerRef.current?.contains(target) &&
369
+ !dropdownRef.current?.contains(target)) {
370
+ close();
371
+ }
372
+ };
373
+ document.addEventListener('mousedown', handleClick);
374
+ return () => document.removeEventListener('mousedown', handleClick);
375
+ }, [isOpen, close]);
376
+ // Get navigable options (non-disabled)
377
+ const navigableIndices = useMemo(() => filteredOptions
378
+ .map((opt, i) => (opt.disabled ? -1 : i))
379
+ .filter(i => i !== -1), [filteredOptions]);
380
+ const navigateHighlight = useCallback((direction) => {
381
+ if (navigableIndices.length === 0)
382
+ return;
383
+ let nextIndex;
384
+ const currentNavIdx = navigableIndices.indexOf(highlightedIndex);
385
+ switch (direction) {
386
+ case 'first':
387
+ nextIndex = navigableIndices[0] ?? 0;
388
+ break;
389
+ case 'last':
390
+ nextIndex = navigableIndices[navigableIndices.length - 1] ?? 0;
391
+ break;
392
+ case 'next':
393
+ if (currentNavIdx === -1 ||
394
+ currentNavIdx >= navigableIndices.length - 1) {
395
+ nextIndex = navigableIndices[0] ?? 0;
396
+ }
397
+ else {
398
+ nextIndex = navigableIndices[currentNavIdx + 1] ?? 0;
399
+ }
400
+ break;
401
+ case 'prev':
402
+ if (currentNavIdx <= 0) {
403
+ nextIndex = navigableIndices[navigableIndices.length - 1] ?? 0;
404
+ }
405
+ else {
406
+ nextIndex = navigableIndices[currentNavIdx - 1] ?? 0;
407
+ }
408
+ break;
409
+ }
410
+ setHighlightedIndex(nextIndex);
411
+ }, [navigableIndices, highlightedIndex]);
412
+ // Keyboard handling for trigger
413
+ const handleTriggerKeyDown = useCallback((e) => {
414
+ if (disabled)
415
+ return;
416
+ switch (e.key) {
417
+ case 'Enter':
418
+ case ' ':
419
+ case 'ArrowDown':
420
+ e.preventDefault();
421
+ if (!isOpen) {
422
+ open();
423
+ }
424
+ break;
425
+ case 'ArrowUp':
426
+ e.preventDefault();
427
+ if (!isOpen) {
428
+ open();
429
+ }
430
+ break;
431
+ }
432
+ }, [disabled, isOpen, open]);
433
+ // Keyboard handling for dropdown
434
+ const handleDropdownKeyDown = useCallback((e) => {
435
+ switch (e.key) {
436
+ case 'ArrowDown':
437
+ e.preventDefault();
438
+ navigateHighlight('next');
439
+ break;
440
+ case 'ArrowUp':
441
+ e.preventDefault();
442
+ navigateHighlight('prev');
443
+ break;
444
+ case 'Home':
445
+ e.preventDefault();
446
+ navigateHighlight('first');
447
+ break;
448
+ case 'End':
449
+ e.preventDefault();
450
+ navigateHighlight('last');
451
+ break;
452
+ case 'Enter':
453
+ e.preventDefault();
454
+ if (highlightedIndex >= 0 &&
455
+ highlightedIndex < filteredOptions.length) {
456
+ const opt = filteredOptions[highlightedIndex];
457
+ if (opt && !opt.disabled) {
458
+ selectValue(opt.value);
459
+ }
460
+ }
461
+ break;
462
+ case 'Escape':
463
+ e.preventDefault();
464
+ close();
465
+ break;
466
+ }
467
+ }, [navigateHighlight, highlightedIndex, filteredOptions, selectValue, close]);
468
+ const handleClear = useCallback((e) => {
469
+ e.stopPropagation();
470
+ selectValue(null);
471
+ }, [selectValue]);
472
+ const showHelperText = error && errorMessage ? errorMessage : helperText;
473
+ const sizeConfig = TRIGGER_SIZES[size];
474
+ // Assign ref
475
+ const setTriggerRef = useCallback((node) => {
476
+ triggerRef.current = node;
477
+ if (typeof ref === 'function') {
478
+ ref(node);
479
+ }
480
+ else if (ref) {
481
+ ref.current =
482
+ node;
483
+ }
484
+ }, [ref]);
485
+ // Render options list
486
+ const renderOptions = () => {
487
+ if (filteredOptions.length === 0) {
488
+ return jsx(StyledEmptyMessage, { children: emptyMessage });
489
+ }
490
+ // If options are grouped, render with group headers
491
+ const hasGroups = options.some(isOptionGroup);
492
+ if (hasGroups && !searchQuery) {
493
+ let flatIndex = 0;
494
+ return options.map((item, groupIdx) => {
495
+ if (isOptionGroup(item)) {
496
+ const groupOptions = item.options;
497
+ const startIdx = flatIndex;
498
+ flatIndex += groupOptions.length;
499
+ return (jsxs("div", { role: "group", "aria-label": item.label, children: [jsx(StyledGroupLabel, { children: item.label }), groupOptions.map((opt, optIdx) => {
500
+ const idx = startIdx + optIdx;
501
+ return renderOptionItem(opt, idx);
502
+ })] }, `group-${groupIdx}`));
503
+ }
504
+ const idx = flatIndex;
505
+ flatIndex += 1;
506
+ return renderOptionItem(item, idx);
507
+ });
508
+ }
509
+ return filteredOptions.map((opt, idx) => renderOptionItem(opt, idx));
510
+ };
511
+ const renderOptionItem = (opt, index) => {
512
+ const isSelected = opt.value === currentValue;
513
+ const isHighlighted = index === highlightedIndex;
514
+ return (jsxs(StyledOptionItem, { role: "option", "aria-selected": isSelected, "aria-disabled": opt.disabled ?? undefined, "$highlighted": isHighlighted, "$selected": isSelected, "$disabled": opt.disabled ?? false, onClick: () => {
515
+ if (!opt.disabled) {
516
+ selectValue(opt.value);
517
+ }
518
+ }, onMouseEnter: () => {
519
+ if (!opt.disabled) {
520
+ setHighlightedIndex(index);
521
+ }
522
+ }, children: [opt.icon && jsx("span", { children: opt.icon }), jsx("span", { children: opt.label ?? opt.value }), isSelected && (jsx(StyledCheckmark, { children: jsx("svg", { width: "10", height: "10", viewBox: "0 0 12 12", fill: "none", "aria-hidden": "true", children: jsx("path", { d: "M2 6L5 9L10 3", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) }))] }, opt.value));
523
+ };
524
+ return (jsxs(StyledSelectContainer, { className: className, style: style, children: [label && (jsx(FormLabel, { id: labelId, htmlFor: selectId, required: required, disabled: disabled, children: label })), jsxs(StyledTrigger, { ref: setTriggerRef, type: "button", role: "combobox", "aria-haspopup": "listbox", "aria-expanded": isOpen, "aria-controls": isOpen ? listboxId : undefined, "aria-labelledby": label ? labelId : undefined, "aria-required": required || undefined, "aria-invalid": error || undefined, "aria-describedby": showHelperText ? helperId : undefined, disabled: disabled, onClick: () => (isOpen ? close() : open()), onKeyDown: handleTriggerKeyDown, "$size": size, "$variant": variant, "$open": isOpen, "$disabled": disabled, "$error": error, "$hasValue": currentValue !== null, "$css": css, "data-testid": testId, ...rest, children: [jsx(StyledTriggerContent, { children: selectedOption ? (jsxs(Fragment, { children: [selectedOption.icon && jsx("span", { children: selectedOption.icon }), jsx("span", { children: selectedOption.label ?? selectedOption.value })] })) : (jsx("span", { children: placeholder })) }), clearable && currentValue !== null && (jsx(StyledClearButton, { role: "button", onClick: handleClear, "aria-label": "Clear selection", tabIndex: -1, children: jsx("svg", { width: "8", height: "8", viewBox: "0 0 8 8", fill: "none", "aria-hidden": "true", children: jsx("path", { d: "M1 1L7 7M7 1L1 7", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) })), jsx(StyledChevron, { "$open": isOpen, "$size": sizeConfig.chevronSize, children: jsx(ChevronDownIcon, { size: sizeConfig.chevronSize }) })] }), name && jsx("input", { type: "hidden", name: name, value: currentValue ?? '' }), isOpen &&
525
+ createPortal(jsxs(StyledDropdown, { ref: dropdownRef, role: "listbox", id: listboxId, "aria-labelledby": label ? labelId : undefined, "$maxHeight": maxDropdownHeight, style: dropdownStyle, onKeyDown: handleDropdownKeyDown, tabIndex: -1, children: [searchable && (jsx(StyledSearchInput, { ref: searchRef, type: "text", placeholder: searchPlaceholder, value: searchQuery, onChange: e => {
526
+ setSearchQuery(e.target.value);
527
+ setHighlightedIndex(-1);
528
+ }, onKeyDown: handleDropdownKeyDown, "aria-label": "Search options" })), jsx(StyledOptionsList, { maxHeight: maxDropdownHeight - (searchable ? 32 : 0), scrollbarWidth: 4, scrollbarVisibility: "auto", hideDelay: 600, children: renderOptions() })] }), document.body), showHelperText && (jsx(FormHelperText, { id: helperId, error: error, children: showHelperText }))] }));
529
+ }
530
+ Select.displayName = 'Select';
531
+
532
+ export { Select };
533
+ //# sourceMappingURL=Select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.js","sources":["../../../../../../src/components/controls/Select/Select.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}