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,297 @@
1
+ import React from 'react';
2
+ import { Prettify } from '../../../types/utilities.js';
3
+ import { BaseComponent, Size } from '../../../types/common.js';
4
+
5
+ type CurveEditorSize = Size;
6
+ /**
7
+ * Tangent handle mode — controls how handles behave around a keyframe.
8
+ * - `free`: Each handle moves independently
9
+ * - `aligned`: Handles stay co-linear but can differ in length
10
+ * - `mirrored`: Handles are symmetric (same angle and length)
11
+ * - `auto`: Smooth catmull-rom style — handles auto-computed from neighbors
12
+ * - `linear`: No handles — straight line segments
13
+ * - `step`: Constant value until next keyframe (hold / step function)
14
+ */
15
+ type TangentMode = 'free' | 'aligned' | 'mirrored' | 'auto' | 'linear' | 'step';
16
+ /**
17
+ * Single control point (keyframe) on the curve.
18
+ */
19
+ interface CurveKeyframe {
20
+ /** X position in domain space (e.g., 0-1 for normalized, 0-100 for frames) */
21
+ x: number;
22
+ /** Y value at this position */
23
+ y: number;
24
+ /** Left tangent handle offset (relative to keyframe position) */
25
+ handleIn: {
26
+ x: number;
27
+ y: number;
28
+ };
29
+ /** Right tangent handle offset (relative to keyframe position) */
30
+ handleOut: {
31
+ x: number;
32
+ y: number;
33
+ };
34
+ /** Tangent mode for this keyframe */
35
+ tangentMode: TangentMode;
36
+ /** Optional unique ID (auto-generated if not provided) */
37
+ id?: string;
38
+ }
39
+ /**
40
+ * Complete curve data model.
41
+ */
42
+ interface CurveData {
43
+ /** Ordered array of keyframes (sorted by x) */
44
+ keyframes: CurveKeyframe[];
45
+ /** Domain bounds — x range */
46
+ domainX: [number, number];
47
+ /** Domain bounds — y range */
48
+ domainY: [number, number];
49
+ /**
50
+ * Pre-infinity behavior — what happens before the first keyframe
51
+ * @default "constant"
52
+ */
53
+ preInfinity?: 'constant' | 'linear' | 'cycle' | 'pingpong';
54
+ /**
55
+ * Post-infinity behavior — what happens after the last keyframe
56
+ * @default "constant"
57
+ */
58
+ postInfinity?: 'constant' | 'linear' | 'cycle' | 'pingpong';
59
+ }
60
+ interface CurveEditorBaseProps extends Omit<BaseComponent, 'onChange' | 'value' | 'defaultValue'> {
61
+ /**
62
+ * Curve data (controlled)
63
+ */
64
+ value?: CurveData;
65
+ /**
66
+ * Default curve data (uncontrolled)
67
+ * @default ease-in-out preset
68
+ */
69
+ defaultValue?: CurveData;
70
+ /**
71
+ * Width of the editor in pixels
72
+ * @default 320
73
+ */
74
+ width?: number;
75
+ /**
76
+ * Height of the editor in pixels
77
+ * @default 200
78
+ */
79
+ height?: number;
80
+ /**
81
+ * Whether the editor fills its parent container.
82
+ * Overrides width/height — uses ResizeObserver.
83
+ * @default false
84
+ */
85
+ responsive?: boolean;
86
+ /**
87
+ * Whether to show the toolbar (presets, tangent mode, zoom)
88
+ * @default true
89
+ */
90
+ showToolbar?: boolean;
91
+ /**
92
+ * Whether to show the grid lines
93
+ * @default true
94
+ */
95
+ showGrid?: boolean;
96
+ /**
97
+ * Grid subdivision count (lines between domain bounds)
98
+ * @default 4
99
+ */
100
+ gridSubdivisions?: number;
101
+ /**
102
+ * Whether to display X/Y axis value labels on the grid
103
+ * @default true
104
+ */
105
+ showAxisLabels?: boolean;
106
+ /**
107
+ * Whether to allow adding new keyframes by double-clicking the curve
108
+ * @default true
109
+ */
110
+ allowAdd?: boolean;
111
+ /**
112
+ * Maximum number of keyframes allowed.
113
+ * When reached, double-click will not add new keyframes.
114
+ * @default Infinity
115
+ */
116
+ maxKeyframes?: number;
117
+ /**
118
+ * Whether to allow deleting keyframes (Delete/Backspace key)
119
+ * @default true
120
+ */
121
+ allowDelete?: boolean;
122
+ /**
123
+ * Whether the first and last keyframe X positions are locked
124
+ * (user can change Y but not move them along X axis)
125
+ * @default true
126
+ */
127
+ lockEndpoints?: boolean;
128
+ /**
129
+ * Minimum distance between keyframes on the X axis.
130
+ * Prevents overlapping keyframes.
131
+ * @default 0.001
132
+ */
133
+ minKeyframeDistance?: number;
134
+ /**
135
+ * Whether Y values are clamped to domainY bounds.
136
+ * @default true
137
+ */
138
+ clampY?: boolean;
139
+ /**
140
+ * Snap to grid while dragging (hold Ctrl to toggle)
141
+ * @default false
142
+ */
143
+ snapToGrid?: boolean;
144
+ /**
145
+ * Number format precision for displayed values
146
+ * @default 3
147
+ */
148
+ precision?: number;
149
+ /**
150
+ * X axis label (e.g., "Time", "Input", "Distance")
151
+ */
152
+ labelX?: string;
153
+ /**
154
+ * Y axis label (e.g., "Value", "Output", "Intensity")
155
+ */
156
+ labelY?: string;
157
+ /**
158
+ * Preset curves available in the toolbar.
159
+ * Merged with built-in presets.
160
+ */
161
+ presets?: CurvePreset[];
162
+ /**
163
+ * Component size — affects toolbar and label sizing
164
+ * @default "md"
165
+ */
166
+ size?: CurveEditorSize;
167
+ /**
168
+ * Whether the editor is disabled
169
+ * @default false
170
+ */
171
+ disabled?: boolean;
172
+ /**
173
+ * Whether the editor is read-only (can view but not edit)
174
+ * @default false
175
+ */
176
+ readOnly?: boolean;
177
+ /**
178
+ * Curve line color
179
+ * @default theme.colors.accent.primary
180
+ */
181
+ curveColor?: string;
182
+ /**
183
+ * Curve line width in pixels
184
+ * @default 2
185
+ */
186
+ curveWidth?: number;
187
+ /**
188
+ * Callback when curve data changes.
189
+ * Fires continuously during drag.
190
+ */
191
+ onChange?: (curve: CurveData) => void;
192
+ /**
193
+ * Callback when editing is committed (drag end, keyframe add/delete).
194
+ * Use for undo system integration.
195
+ */
196
+ onChangeComplete?: (curve: CurveData) => void;
197
+ /**
198
+ * Callback when selection changes
199
+ */
200
+ onSelectionChange?: (selectedIds: string[]) => void;
201
+ /**
202
+ * Callback to evaluate the curve at a given X position.
203
+ * Useful for displaying a preview value indicator.
204
+ */
205
+ onEvaluate?: (x: number, y: number) => void;
206
+ /**
207
+ * Custom background renderer — called after clearing the canvas but before
208
+ * drawing the grid. Use this to draw histograms, gradients, or other
209
+ * visualisations behind the curve (like Photoshop / Lightroom curves).
210
+ *
211
+ * The callback receives the canvas 2D context already scaled for
212
+ * `devicePixelRatio`, the drawable area in CSS pixels, and the current
213
+ * viewport so you can map domain values to pixel positions with
214
+ * `domainToCanvas()`.
215
+ */
216
+ renderBackground?: (ctx: CanvasRenderingContext2D, info: CurveBackgroundInfo) => void;
217
+ /**
218
+ * Render prop for custom content below the canvas.
219
+ * Use for channel selectors, coordinate displays, color space
220
+ * pickers, or any custom status bar content.
221
+ *
222
+ * The callback receives curve state so the bottom bar can display
223
+ * reactive data (selected keyframe coordinates, evaluated values, etc.).
224
+ */
225
+ renderBottomBar?: (info: CurveBottomBarInfo) => React.ReactNode;
226
+ /**
227
+ * Whether tangent editing is locked.
228
+ * When true:
229
+ * - Tangent mode buttons are hidden from the toolbar
230
+ * - Tangent handle lines/circles are not drawn on canvas
231
+ * - Handle dragging is disabled
232
+ * - Double-click on keyframes does not cycle tangent modes
233
+ * - Keyboard shortcuts 1-6 for tangent modes are ignored
234
+ *
235
+ * The curve still renders normally using each keyframe's existing
236
+ * tangentMode — this prop only locks UI-based changes.
237
+ * @default false
238
+ */
239
+ lockTangents?: boolean;
240
+ }
241
+ type CurveEditorProps = Prettify<CurveEditorBaseProps>;
242
+ interface CurvePreset {
243
+ /** Display name in the preset selector */
244
+ label: string;
245
+ /** Preset identifier */
246
+ id: string;
247
+ /** Curve data for this preset */
248
+ curve: CurveData;
249
+ /** Optional category for grouping presets */
250
+ category?: string;
251
+ /** Optional icon element */
252
+ icon?: React.ReactNode;
253
+ }
254
+ /**
255
+ * Information passed to the `renderBottomBar` render prop.
256
+ */
257
+ interface CurveBottomBarInfo {
258
+ /** Current curve data */
259
+ curve: CurveData;
260
+ /** IDs of currently selected keyframes */
261
+ selectedIds: string[];
262
+ /** The actual selected keyframe objects */
263
+ selectedKeyframes: CurveKeyframe[];
264
+ /** Evaluate the curve at a given X position */
265
+ evaluate: (x: number) => number;
266
+ /** Whether the editor is disabled */
267
+ disabled: boolean;
268
+ /** Whether the editor is read-only */
269
+ readOnly: boolean;
270
+ }
271
+ /**
272
+ * Information passed to the `renderBackground` callback.
273
+ */
274
+ interface CurveBackgroundInfo {
275
+ /** Canvas width in CSS pixels */
276
+ width: number;
277
+ /** Canvas height in CSS pixels */
278
+ height: number;
279
+ /** Current viewport mapping (use with `domainToCanvas`) */
280
+ viewport: CurveViewport;
281
+ /** Domain X range — e.g. [0, 1] or [0, 255] */
282
+ domainX: [number, number];
283
+ /** Domain Y range */
284
+ domainY: [number, number];
285
+ }
286
+ interface CurveViewport {
287
+ /** Visible domain range */
288
+ viewX: [number, number];
289
+ viewY: [number, number];
290
+ /** Zoom level (1 = fit to bounds) */
291
+ zoom: number;
292
+ /** Pan offset in domain units */
293
+ panX: number;
294
+ panY: number;
295
+ }
296
+
297
+ export type { CurveBackgroundInfo, CurveBottomBarInfo, CurveData, CurveEditorBaseProps, CurveEditorProps, CurveEditorSize, CurveKeyframe, CurvePreset, CurveViewport, TangentMode };
@@ -0,0 +1,5 @@
1
+ import { CurvePreset } from './CurveEditor.types.js';
2
+
3
+ declare const CURVE_PRESETS: CurvePreset[];
4
+
5
+ export { CURVE_PRESETS };
@@ -0,0 +1,28 @@
1
+ import { CurveData, CurveViewport } from './CurveEditor.types.js';
2
+
3
+ /**
4
+ * Evaluate the entire curve at a given X position.
5
+ * Finds the right segment, solves for t, returns Y.
6
+ */
7
+ declare function evaluateCurve(curve: CurveData, x: number): number;
8
+ /**
9
+ * Sample the curve at N evenly-spaced X points.
10
+ * Returns array of {x, y} for rendering as a polyline.
11
+ */
12
+ declare function sampleCurve(curve: CurveData, numSamples: number): Array<{
13
+ x: number;
14
+ y: number;
15
+ }>;
16
+ /**
17
+ * Convert domain coordinates to canvas pixel coordinates.
18
+ */
19
+ declare function domainToCanvas(domainX: number, domainY: number, viewport: CurveViewport, canvasWidth: number, canvasHeight: number): {
20
+ px: number;
21
+ py: number;
22
+ };
23
+ /**
24
+ * Create a default linear curve.
25
+ */
26
+ declare function createLinearCurve(domainX?: [number, number], domainY?: [number, number]): CurveData;
27
+
28
+ export { createLinearCurve, domainToCanvas, evaluateCurve, sampleCurve };
@@ -0,0 +1,150 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { Prettify } from '../../../types/utilities.js';
4
+ import { BaseComponent, Size } from '../../../types/common.js';
5
+ import { UseNumberInputOptions } from './useNumberInput.js';
6
+
7
+ /**
8
+ * Props specific to NumberInput component
9
+ */
10
+ interface NumberInputBaseProps extends Omit<BaseComponent, 'onChange'>, UseNumberInputOptions {
11
+ /**
12
+ * Current numeric value
13
+ */
14
+ value: number;
15
+ /**
16
+ * Callback when value changes
17
+ */
18
+ onChange: (value: number) => void;
19
+ /**
20
+ * Unit suffix to display (e.g., "px", "%", "°")
21
+ * Can be a string or a function that formats the value
22
+ */
23
+ unit?: string | ((value: number) => string);
24
+ /**
25
+ * Whether to show increment/decrement buttons on hover
26
+ * @default true
27
+ */
28
+ showStepButtons?: boolean;
29
+ /**
30
+ * Custom validation function
31
+ * Return error message string if invalid, undefined if valid
32
+ */
33
+ validate?: (value: number) => string | undefined;
34
+ /**
35
+ * Format value for display (e.g., add commas, currency symbols)
36
+ * This is separate from unit display
37
+ */
38
+ formatValue?: (value: number) => string;
39
+ /**
40
+ * Parse custom formatted input back to number
41
+ * Used in conjunction with formatValue
42
+ */
43
+ parseValue?: (input: string) => number | null;
44
+ /**
45
+ * Input size using standard library sizing
46
+ * - `sm`: 20px height, compact for toolbars
47
+ * - `md`: 24px height, standard for forms
48
+ * - `lg`: 32px height, prominent inputs
49
+ * @default "md"
50
+ */
51
+ size?: Size;
52
+ /**
53
+ * Whether the input is disabled
54
+ * @default false
55
+ */
56
+ disabled?: boolean;
57
+ /**
58
+ * Whether the input is read-only
59
+ * @default false
60
+ */
61
+ readOnly?: boolean;
62
+ /**
63
+ * Error message displayed when error is true
64
+ */
65
+ errorMessage?: string | undefined;
66
+ /**
67
+ * Placeholder text
68
+ */
69
+ placeholder?: string | undefined;
70
+ /**
71
+ * Input label
72
+ */
73
+ label?: string | undefined;
74
+ /**
75
+ * Helper text displayed below the input
76
+ */
77
+ helperText?: string | undefined;
78
+ /**
79
+ * Whether the input is required
80
+ * @default false
81
+ */
82
+ required?: boolean;
83
+ /**
84
+ * Focus event handler
85
+ */
86
+ onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;
87
+ /**
88
+ * Blur event handler
89
+ */
90
+ onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;
91
+ /**
92
+ * Key down event handler
93
+ */
94
+ onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
95
+ }
96
+ /**
97
+ * Props for the NumberInput component with prettified type for better IntelliSense
98
+ */
99
+ type NumberInputProps = Prettify<NumberInputBaseProps>;
100
+ /**
101
+ * A specialized number input component with Blender-like functionality.
102
+ *
103
+ * Features:
104
+ * - Drag left/right to change values with mouse
105
+ * - Click chevron buttons to increment/decrement
106
+ * - Keyboard input with mathematical expression support
107
+ * - Modifier keys: Ctrl (large steps), Shift (precision), Minus (negate)
108
+ * - Soft and hard value limits
109
+ * - Unit display support
110
+ * - Expression evaluation (pi, sqrt, sin, etc.)
111
+ * - Custom validation and formatting
112
+ * - Centered value and unit display
113
+ *
114
+ * @example
115
+ * ```tsx
116
+ * // Basic number input
117
+ * <NumberInput
118
+ * value={rotation}
119
+ * onChange={setRotation}
120
+ * unit="°"
121
+ * step={1}
122
+ * />
123
+ *
124
+ * // With limits and precision
125
+ * <NumberInput
126
+ * value={opacity}
127
+ * onChange={setOpacity}
128
+ * min={0}
129
+ * max={1}
130
+ * step={0.1}
131
+ * precision={2}
132
+ * unit="%"
133
+ * />
134
+ *
135
+ * // With custom validation
136
+ * <NumberInput
137
+ * value={dimension}
138
+ * onChange={setDimension}
139
+ * validate={(v) => v <= 0 ? "Must be positive" : undefined}
140
+ * placeholder="Enter value or expression"
141
+ * />
142
+ * ```
143
+ */
144
+ declare const NumberInput: {
145
+ ({ value, onChange, unit, showStepButtons, validate, formatValue, parseValue, min, max, softMin, softMax, step, precisionStep, largeStep, precision, allowExpressions, dragSensitivity, size, disabled, readOnly, errorMessage, placeholder, label, helperText, required, className, testId, onFocus, onBlur, onKeyDown, ref, ...props }: NumberInputProps): react_jsx_runtime.JSX.Element;
146
+ displayName: string;
147
+ };
148
+
149
+ export { NumberInput };
150
+ export type { NumberInputBaseProps, NumberInputProps };
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Configuration options for NumberInput behavior
3
+ */
4
+ interface UseNumberInputOptions {
5
+ /**
6
+ * Minimum allowed value (hard limit)
7
+ */
8
+ min?: number;
9
+ /**
10
+ * Maximum allowed value (hard limit)
11
+ */
12
+ max?: number;
13
+ /**
14
+ * Soft minimum for drag operations (can be overridden by keyboard)
15
+ */
16
+ softMin?: number;
17
+ /**
18
+ * Soft maximum for drag operations (can be overridden by keyboard)
19
+ */
20
+ softMax?: number;
21
+ /**
22
+ * Step size for increment/decrement operations
23
+ * @default 1
24
+ */
25
+ step?: number;
26
+ /**
27
+ * Step size when Shift is held (precision mode)
28
+ * @default step / 10
29
+ */
30
+ precisionStep?: number;
31
+ /**
32
+ * Step size when Ctrl is held (large steps)
33
+ * @default step * 10
34
+ */
35
+ largeStep?: number;
36
+ /**
37
+ * Number of decimal places to round to
38
+ */
39
+ precision?: number;
40
+ /**
41
+ * Whether to allow mathematical expressions
42
+ * @default true
43
+ */
44
+ allowExpressions?: boolean;
45
+ /**
46
+ * Whether the input is disabled
47
+ * @default false
48
+ */
49
+ disabled?: boolean;
50
+ /**
51
+ * Drag sensitivity multiplier
52
+ * @default 1
53
+ */
54
+ dragSensitivity?: number;
55
+ /**
56
+ * Custom format function for display
57
+ */
58
+ formatValue?: (value: number) => string;
59
+ /**
60
+ * Custom parse function for input
61
+ */
62
+ parseValue?: (input: string) => number | null;
63
+ }
64
+
65
+ export type { UseNumberInputOptions };
@@ -0,0 +1,29 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { SelectProps } from './Select.types.js';
3
+
4
+ /**
5
+ * Select component for choosing single values from a dropdown list.
6
+ *
7
+ * Supports searchable mode, grouped options, keyboard navigation,
8
+ * clearable state, and multiple visual variants.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * <Select
13
+ * label="Blend Mode"
14
+ * options={[
15
+ * { value: 'normal', label: 'Normal' },
16
+ * { value: 'multiply', label: 'Multiply' },
17
+ * { value: 'screen', label: 'Screen' },
18
+ * ]}
19
+ * value={blendMode}
20
+ * onChange={setBlendMode}
21
+ * />
22
+ * ```
23
+ */
24
+ declare function Select<T extends string = string>({ value: valueProp, defaultValue, options, placeholder, searchable, searchPlaceholder, filterFn, emptyMessage, size, variant, label, helperText, error, errorMessage, disabled, required, clearable, maxDropdownHeight, minDropdownWidth, name, onChange, onOpenChange, className, style, css, testId, ref, id: idProp, ...rest }: SelectProps<T>): react_jsx_runtime.JSX.Element;
25
+ declare namespace Select {
26
+ var displayName: string;
27
+ }
28
+
29
+ export { Select };
@@ -0,0 +1,131 @@
1
+ import React from 'react';
2
+ import { Prettify } from '../../../types/utilities.js';
3
+ import { BaseComponent, Size } from '../../../types/common.js';
4
+
5
+ type SelectSize = Size;
6
+ type SelectVariant = 'default' | 'ghost' | 'filled';
7
+ interface SelectOptionItem<T extends string = string> {
8
+ /** Unique value used for selection */
9
+ value: T;
10
+ /** Display label (falls back to value if not provided) */
11
+ label?: string;
12
+ /** Optional icon rendered before the label */
13
+ icon?: React.ReactNode;
14
+ /** Whether this option is disabled */
15
+ disabled?: boolean;
16
+ }
17
+ interface SelectOptionGroup<T extends string = string> {
18
+ /** Group label displayed as a non-selectable header */
19
+ label: string;
20
+ /** Options within this group */
21
+ options: SelectOptionItem<T>[];
22
+ }
23
+ interface SelectBaseProps<T extends string = string> extends Omit<BaseComponent<HTMLButtonElement>, 'onChange' | 'value' | 'defaultValue'> {
24
+ /**
25
+ * Selected value (controlled)
26
+ */
27
+ value?: T | null;
28
+ /**
29
+ * Default selected value (uncontrolled)
30
+ */
31
+ defaultValue?: T;
32
+ /**
33
+ * Options to display — flat list or grouped
34
+ */
35
+ options: Array<SelectOptionItem<T> | SelectOptionGroup<T>>;
36
+ /**
37
+ * Placeholder text when no value is selected
38
+ * @default "Select..."
39
+ */
40
+ placeholder?: string;
41
+ /**
42
+ * Whether to show a search/filter input inside the dropdown
43
+ * @default false
44
+ */
45
+ searchable?: boolean;
46
+ /**
47
+ * Placeholder for the search input
48
+ * @default "Search..."
49
+ */
50
+ searchPlaceholder?: string;
51
+ /**
52
+ * Custom filter function for searchable mode
53
+ */
54
+ filterFn?: (option: SelectOptionItem<T>, query: string) => boolean;
55
+ /**
56
+ * Message shown when search yields no results
57
+ * @default "No results found"
58
+ */
59
+ emptyMessage?: string;
60
+ /**
61
+ * Size using standard library sizing
62
+ * - `sm`: 20px trigger height
63
+ * - `md`: 24px trigger height
64
+ * - `lg`: 32px trigger height
65
+ * @default "md"
66
+ */
67
+ size?: SelectSize;
68
+ /**
69
+ * Visual variant for the trigger button
70
+ * @default "default"
71
+ */
72
+ variant?: SelectVariant;
73
+ /**
74
+ * Label displayed above the select
75
+ */
76
+ label?: string;
77
+ /**
78
+ * Helper text displayed below the select
79
+ */
80
+ helperText?: string;
81
+ /**
82
+ * Error state
83
+ * @default false
84
+ */
85
+ error?: boolean;
86
+ /**
87
+ * Error message
88
+ */
89
+ errorMessage?: string;
90
+ /**
91
+ * Whether the select is disabled
92
+ * @default false
93
+ */
94
+ disabled?: boolean;
95
+ /**
96
+ * Whether the select is required
97
+ * @default false
98
+ */
99
+ required?: boolean;
100
+ /**
101
+ * Whether a clear button appears when value is selected
102
+ * @default false
103
+ */
104
+ clearable?: boolean;
105
+ /**
106
+ * Maximum height of the dropdown in pixels
107
+ * @default 240
108
+ */
109
+ maxDropdownHeight?: number;
110
+ /**
111
+ * Minimum width of the dropdown in pixels.
112
+ * When set, the dropdown will be at least this wide,
113
+ * even if the trigger is narrower.
114
+ */
115
+ minDropdownWidth?: number;
116
+ /**
117
+ * Name attribute for form submission
118
+ */
119
+ name?: string;
120
+ /**
121
+ * Change event handler
122
+ */
123
+ onChange?: (value: T | null) => void;
124
+ /**
125
+ * Open state change handler
126
+ */
127
+ onOpenChange?: (open: boolean) => void;
128
+ }
129
+ type SelectProps<T extends string = string> = Prettify<SelectBaseProps<T>>;
130
+
131
+ export type { SelectBaseProps, SelectOptionGroup, SelectOptionItem, SelectProps, SelectSize, SelectVariant };