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,275 @@
1
+ // src/utils/mathExpression.ts
2
+ /**
3
+ * Blocked identifiers that must be rejected before evaluation.
4
+ * Defense-in-depth layer to prevent prototype pollution or code execution
5
+ * via dangerous JavaScript identifiers that pass character validation.
6
+ */
7
+ const BLOCKED_IDENTIFIERS = new Set([
8
+ 'constructor',
9
+ 'prototype',
10
+ '__proto__',
11
+ 'this',
12
+ 'self',
13
+ 'window',
14
+ 'document',
15
+ 'globalThis',
16
+ 'process',
17
+ 'require',
18
+ 'import',
19
+ 'module',
20
+ 'exports',
21
+ 'eval',
22
+ 'Function',
23
+ 'Object',
24
+ 'Array',
25
+ 'Reflect',
26
+ 'Proxy',
27
+ 'Symbol',
28
+ ]);
29
+ /**
30
+ * Mathematical constants available in expressions
31
+ */
32
+ const MATH_CONSTANTS = {
33
+ pi: Math.PI,
34
+ e: Math.E,
35
+ tau: 2 * Math.PI,
36
+ phi: (1 + Math.sqrt(5)) / 2, // Golden ratio
37
+ };
38
+ /**
39
+ * Mathematical functions available in expressions
40
+ */
41
+ const MATH_FUNCTIONS = {
42
+ // Trigonometric functions
43
+ sin: Math.sin,
44
+ cos: Math.cos,
45
+ tan: Math.tan,
46
+ asin: Math.asin,
47
+ acos: Math.acos,
48
+ atan: Math.atan,
49
+ // Logarithmic and exponential
50
+ log: Math.log,
51
+ log10: Math.log10,
52
+ log2: Math.log2,
53
+ exp: Math.exp,
54
+ // Power and root functions
55
+ sqrt: Math.sqrt,
56
+ cbrt: Math.cbrt,
57
+ // Rounding functions
58
+ floor: Math.floor,
59
+ ceil: Math.ceil,
60
+ round: Math.round,
61
+ // Other useful functions
62
+ abs: Math.abs,
63
+ sign: Math.sign,
64
+ };
65
+ /**
66
+ * Sanitizes mathematical expression by removing dangerous patterns
67
+ * and normalizing the input for safe evaluation.
68
+ */
69
+ function sanitizeExpression(expression) {
70
+ // Remove whitespace
71
+ let sanitized = expression.replace(/\s+/g, '');
72
+ // Convert common alternative notations
73
+ sanitized = sanitized.replace(/×/g, '*'); // Multiplication symbol
74
+ sanitized = sanitized.replace(/÷/g, '/'); // Division symbol
75
+ sanitized = sanitized.replace(/\^/g, '**'); // Power operator
76
+ // Ensure proper decimal notation
77
+ sanitized = sanitized.replace(/,/g, '.'); // European decimal notation
78
+ return sanitized;
79
+ }
80
+ /**
81
+ * Validates that expression contains only allowed characters and patterns
82
+ */
83
+ function isValidExpression(expression) {
84
+ // Allow numbers, operators, parentheses, dots, and known constants/functions
85
+ const allowedPattern = /^[0-9+\-*/().a-zA-Z_]+$/;
86
+ if (!allowedPattern.test(expression)) {
87
+ return false;
88
+ }
89
+ // Check for balanced parentheses
90
+ let depth = 0;
91
+ for (const char of expression) {
92
+ if (char === '(')
93
+ depth++;
94
+ if (char === ')')
95
+ depth--;
96
+ if (depth < 0)
97
+ return false;
98
+ }
99
+ return depth === 0;
100
+ }
101
+ /**
102
+ * Checks whether the expression contains any blocked identifiers or
103
+ * unknown alphabetic tokens. All word tokens must be either a known
104
+ * constant, a known function name, or part of "Math" (introduced by
105
+ * replaceConstantsAndFunctions). Any unrecognized identifier is rejected.
106
+ */
107
+ function containsBlockedIdentifiers(expression) {
108
+ const wordTokens = expression.match(/[a-zA-Z_][a-zA-Z0-9_]*/g);
109
+ if (!wordTokens)
110
+ return false;
111
+ const allowedTokens = new Set([
112
+ ...Object.keys(MATH_CONSTANTS),
113
+ ...Object.keys(MATH_FUNCTIONS),
114
+ ]);
115
+ for (const token of wordTokens) {
116
+ if (BLOCKED_IDENTIFIERS.has(token))
117
+ return true;
118
+ if (!allowedTokens.has(token))
119
+ return true;
120
+ }
121
+ return false;
122
+ }
123
+ /**
124
+ * Replaces mathematical constants and functions in the expression
125
+ * with their JavaScript equivalents for safe evaluation.
126
+ */
127
+ function replaceConstantsAndFunctions(expression) {
128
+ let result = expression;
129
+ // Replace constants
130
+ Object.entries(MATH_CONSTANTS).forEach(([name, value]) => {
131
+ const regex = new RegExp(`\\b${name}\\b`, 'g');
132
+ result = result.replace(regex, value.toString());
133
+ });
134
+ // Replace functions
135
+ Object.entries(MATH_FUNCTIONS).forEach(([name]) => {
136
+ const regex = new RegExp(`\\b${name}\\(`, 'g');
137
+ result = result.replace(regex, `Math.${name}(`);
138
+ });
139
+ return result;
140
+ }
141
+ /**
142
+ * Safely evaluates a mathematical expression using Function constructor
143
+ * instead of eval() for better security.
144
+ */
145
+ function safeEvaluate(expression) {
146
+ // Create a function that returns the expression result
147
+ // This is safer than eval() as it doesn't have access to the scope
148
+ // eslint-disable-next-line @typescript-eslint/no-implied-eval
149
+ const func = new Function('Math', `"use strict"; return (${expression});`);
150
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
151
+ return func(Math);
152
+ }
153
+ /**
154
+ * Evaluates a mathematical expression and returns the result.
155
+ *
156
+ * Supports:
157
+ * - Basic arithmetic: +, -, *, /, **, ()
158
+ * - Mathematical constants: pi, e, tau, phi
159
+ * - Mathematical functions: sin, cos, tan, sqrt, log, etc.
160
+ * - Alternative notations: × (multiplication), ÷ (division), ^ (power)
161
+ * - European decimal notation: , instead of .
162
+ *
163
+ * @param expression The mathematical expression to evaluate
164
+ * @returns Evaluation result with success status and value or error
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * evaluateExpression("3 + 4 * 2") // { success: true, value: 11 }
169
+ * evaluateExpression("sqrt(16)") // { success: true, value: 4 }
170
+ * evaluateExpression("pi * 2") // { success: true, value: 6.283... }
171
+ * evaluateExpression("2 ^ 3") // { success: true, value: 8 }
172
+ * evaluateExpression("invalid") // { success: false, error: "..." }
173
+ * ```
174
+ */
175
+ function evaluateExpression(expression) {
176
+ const originalExpression = expression;
177
+ try {
178
+ // Handle empty or whitespace-only expressions
179
+ if (!expression?.trim()) {
180
+ return {
181
+ success: false,
182
+ error: 'Expression cannot be empty',
183
+ expression: originalExpression,
184
+ };
185
+ }
186
+ // Sanitize the expression
187
+ const sanitized = sanitizeExpression(expression);
188
+ // Validate the expression
189
+ if (!isValidExpression(sanitized)) {
190
+ return {
191
+ success: false,
192
+ error: 'Expression contains invalid characters or syntax',
193
+ expression: originalExpression,
194
+ };
195
+ }
196
+ // Check for blocked or unknown identifiers (defense-in-depth)
197
+ if (containsBlockedIdentifiers(sanitized)) {
198
+ return {
199
+ success: false,
200
+ error: 'Expression contains invalid characters or syntax',
201
+ expression: originalExpression,
202
+ };
203
+ }
204
+ // Replace constants and functions
205
+ const processed = replaceConstantsAndFunctions(sanitized);
206
+ // Evaluate the expression
207
+ const result = safeEvaluate(processed);
208
+ // Check if result is a valid number
209
+ if (typeof result !== 'number' || !isFinite(result)) {
210
+ return {
211
+ success: false,
212
+ error: 'Expression does not evaluate to a valid number',
213
+ expression: originalExpression,
214
+ };
215
+ }
216
+ return {
217
+ success: true,
218
+ value: result,
219
+ expression: originalExpression,
220
+ };
221
+ }
222
+ catch (error) {
223
+ return {
224
+ success: false,
225
+ error: error instanceof Error ? error.message : 'Unknown evaluation error',
226
+ expression: originalExpression,
227
+ };
228
+ }
229
+ }
230
+ /**
231
+ * Checks if a string looks like a mathematical expression
232
+ * (contains operators, functions, or constants)
233
+ */
234
+ function isExpression(input) {
235
+ const trimmed = input.trim();
236
+ // Check for mathematical operators
237
+ if (/[+\-*/^×÷()]/.test(trimmed)) {
238
+ return true;
239
+ }
240
+ // Check for mathematical functions
241
+ const functionNames = Object.keys(MATH_FUNCTIONS);
242
+ const functionRegex = new RegExp(`\\b(${functionNames.join('|')})\\(`, 'i');
243
+ if (functionRegex.test(trimmed)) {
244
+ return true;
245
+ }
246
+ // Check for mathematical constants
247
+ const constantNames = Object.keys(MATH_CONSTANTS);
248
+ const constantRegex = new RegExp(`\\b(${constantNames.join('|')})\\b`, 'i');
249
+ if (constantRegex.test(trimmed)) {
250
+ return true;
251
+ }
252
+ return false;
253
+ }
254
+ /**
255
+ * Attempts to parse a string as either a direct number or mathematical expression
256
+ */
257
+ function parseNumericInput(input) {
258
+ const trimmed = input.trim();
259
+ // Try direct number parsing first (more efficient)
260
+ const directNumber = parseFloat(trimmed);
261
+ if (!isNaN(directNumber) &&
262
+ isFinite(directNumber) &&
263
+ trimmed === directNumber.toString()) {
264
+ return {
265
+ success: true,
266
+ value: directNumber,
267
+ expression: input,
268
+ };
269
+ }
270
+ // Fall back to expression evaluation
271
+ return evaluateExpression(input);
272
+ }
273
+
274
+ export { evaluateExpression, isExpression, parseNumericInput };
275
+ //# sourceMappingURL=mathExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mathExpression.js","sources":["../../../../src/utils/mathExpression.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Clamps a value between min and max bounds
3
+ */
4
+ function clamp(value, min, max) {
5
+ return Math.min(Math.max(value, min), max);
6
+ }
7
+ /**
8
+ * Rounds a number to specified decimal places
9
+ */
10
+ function roundToPrecision(value, precision) {
11
+ if (precision === undefined)
12
+ return value;
13
+ const factor = Math.pow(10, precision);
14
+ return Math.round(value * factor) / factor;
15
+ }
16
+
17
+ export { clamp, roundToPrecision };
18
+ //# sourceMappingURL=mathUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mathUtils.js","sources":["../../../../src/utils/mathUtils.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;AAEG;SACa,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAA;AAC3D,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;AAC5C;AAEA;;AAEG;AACa,SAAA,gBAAgB,CAAC,KAAa,EAAE,SAAkB,EAAA;IAChE,IAAI,SAAS,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM;AAC5C;;;;"}
@@ -0,0 +1,22 @@
1
+ const mergeDeep = (target, source) => {
2
+ const result = { ...target };
3
+ for (const key in source) {
4
+ const sourceValue = source[key];
5
+ const targetValue = result[key];
6
+ if (sourceValue &&
7
+ typeof sourceValue === 'object' &&
8
+ !Array.isArray(sourceValue) &&
9
+ targetValue &&
10
+ typeof targetValue === 'object' &&
11
+ !Array.isArray(targetValue)) {
12
+ result[key] = mergeDeep(targetValue, sourceValue);
13
+ }
14
+ else if (sourceValue !== undefined) {
15
+ result[key] = sourceValue;
16
+ }
17
+ }
18
+ return result;
19
+ };
20
+
21
+ export { mergeDeep };
22
+ //# sourceMappingURL=objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objects.js","sources":["../../../../src/utils/objects.ts"],"sourcesContent":[null],"names":[],"mappings":"MAEa,SAAS,GAAG,CACvB,MAAS,EACT,MAAsB,KACjB;AACL,IAAA,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE;AAC5B,IAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACxB,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AAC/B,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AAE/B,QAAA,IACE,WAAW;YACX,OAAO,WAAW,KAAK,QAAQ;AAC/B,YAAA,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3B,WAAW;YACX,OAAO,WAAW,KAAK,QAAQ;AAC/B,YAAA,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B;YACA,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CACrB,WAAsC,EACtC,WAAmD,CACrB;;AAC3B,aAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AACpC,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,WAA0C;;;AAG5D,IAAA,OAAO,MAAM;AACf;;;;"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Converts camelCase to kebab-case
3
+ */
4
+ const camelToKebab = (str) => {
5
+ return str.replace(/([A-Z])/g, '-$1').toLowerCase();
6
+ };
7
+ /**
8
+ * Set of CSS properties (in kebab-case) that should NOT receive a `px` suffix
9
+ * when their value is a number. Based on the React DOM unitless properties list.
10
+ */
11
+ const UNITLESS_PROPERTIES = new Set([
12
+ 'animation-iteration-count',
13
+ 'border-image-outset',
14
+ 'border-image-slice',
15
+ 'border-image-width',
16
+ 'box-flex',
17
+ 'box-flex-group',
18
+ 'box-ordinal-group',
19
+ 'column-count',
20
+ 'columns',
21
+ 'flex',
22
+ 'flex-grow',
23
+ 'flex-positive',
24
+ 'flex-shrink',
25
+ 'flex-negative',
26
+ 'flex-order',
27
+ 'grid-area',
28
+ 'grid-column',
29
+ 'grid-column-end',
30
+ 'grid-column-span',
31
+ 'grid-column-start',
32
+ 'grid-row',
33
+ 'grid-row-end',
34
+ 'grid-row-span',
35
+ 'grid-row-start',
36
+ 'font-weight',
37
+ 'line-clamp',
38
+ 'line-height',
39
+ 'opacity',
40
+ 'order',
41
+ 'orphans',
42
+ 'tab-size',
43
+ 'widows',
44
+ 'z-index',
45
+ 'zoom',
46
+ 'fill-opacity',
47
+ 'flood-opacity',
48
+ 'stop-opacity',
49
+ 'stroke-dasharray',
50
+ 'stroke-dashoffset',
51
+ 'stroke-miterlimit',
52
+ 'stroke-opacity',
53
+ 'stroke-width',
54
+ ]);
55
+ /**
56
+ * Processes CSS properties from a CSS object or function
57
+ * Handles camelCase to kebab-case conversion and theme access.
58
+ * Numeric values are appended with 'px' unless the property is unitless.
59
+ */
60
+ const processCss = (css, theme) => {
61
+ if (!css)
62
+ return '';
63
+ const cssObj = typeof css === 'function' ? css(theme) : css;
64
+ return Object.entries(cssObj)
65
+ .map(([key, value]) => {
66
+ const kebabKey = camelToKebab(key);
67
+ // Append 'px' to numeric values, except for 0 and unitless properties
68
+ const formattedValue = typeof value === 'number' &&
69
+ value !== 0 &&
70
+ !UNITLESS_PROPERTIES.has(kebabKey)
71
+ ? `${value}px`
72
+ : typeof value === 'number'
73
+ ? `${value}`
74
+ : value;
75
+ return `${kebabKey}: ${formattedValue};`;
76
+ })
77
+ .join('\n');
78
+ };
79
+
80
+ export { UNITLESS_PROPERTIES, camelToKebab, processCss };
81
+ //# sourceMappingURL=styledUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styledUtils.js","sources":["../../../../src/utils/styledUtils.ts"],"sourcesContent":[null],"names":[],"mappings":"AAGA;;AAEG;AACU,MAAA,YAAY,GAAG,CAAC,GAAW,KAAY;IAClD,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE;AACrD;AAEA;;;AAGG;AACU,MAAA,mBAAmB,GAAwB,IAAI,GAAG,CAAC;IAC9D,2BAA2B;IAC3B,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,UAAU;IACV,gBAAgB;IAChB,mBAAmB;IACnB,cAAc;IACd,SAAS;IACT,MAAM;IACN,WAAW;IACX,eAAe;IACf,aAAa;IACb,eAAe;IACf,YAAY;IACZ,WAAW;IACX,aAAa;IACb,iBAAiB;IACjB,kBAAkB;IAClB,mBAAmB;IACnB,UAAU;IACV,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,aAAa;IACb,YAAY;IACZ,aAAa;IACb,SAAS;IACT,OAAO;IACP,SAAS;IACT,UAAU;IACV,QAAQ;IACR,SAAS;IACT,MAAM;IACN,cAAc;IACd,eAAe;IACf,cAAc;IACd,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;AACf,CAAA;AAED;;;;AAIG;MACU,UAAU,GAAG,CACxB,GAGa,EACb,KAAY,KACF;AACV,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,EAAE;AAEnB,IAAA,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG;AAE3D,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM;SACzB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACpB,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC;;AAElC,QAAA,MAAM,cAAc,GAClB,OAAO,KAAK,KAAK,QAAQ;AACzB,YAAA,KAAK,KAAK,CAAC;AACX,YAAA,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ;cAC7B,CAAG,EAAA,KAAK,CAAI,EAAA;AACd,cAAE,OAAO,KAAK,KAAK;kBACf,CAAG,EAAA,KAAK,CAAE;kBACT,KAAgB;AACzB,QAAA,OAAO,CAAG,EAAA,QAAQ,CAAK,EAAA,EAAA,cAAc,GAAG;AAC1C,KAAC;SACA,IAAI,CAAC,IAAI,CAAC;AACf;;;;"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { PaletteColor } from './palettes/material.js';
3
+
4
+ interface ColorPaletteProps {
5
+ palette: PaletteColor[];
6
+ currentColor: string;
7
+ onSelect: (color: string) => void;
8
+ /** Title displayed in the collapsible header @default "Palette" */
9
+ title?: string;
10
+ /** Whether the palette starts expanded @default false */
11
+ defaultExpanded?: boolean;
12
+ }
13
+ declare const ColorPalette: React.FC<ColorPaletteProps>;
14
+
15
+ export { ColorPalette };
16
+ export type { ColorPaletteProps };
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { ColorPickerProps } from './ColorPicker.types.js';
3
+
4
+ declare const ColorPicker: React.FC<ColorPickerProps>;
5
+
6
+ export { ColorPicker };
@@ -0,0 +1,120 @@
1
+ import { Prettify } from '../../../types/utilities.js';
2
+ import { BaseComponent, Size } from '../../../types/common.js';
3
+ import { ColorFormat as ColorFormat$1 } from './colorUtils.js';
4
+ import { Palette, PaletteColor } from './palettes/material.js';
5
+ export { PaletteShade } from './palettes/material.js';
6
+
7
+ type ColorFormat = ColorFormat$1;
8
+ type ColorPickerSize = Size;
9
+ type ColorInputMode = 'hex' | 'rgb' | 'hsl';
10
+ interface ColorPreset {
11
+ color: string;
12
+ label?: string;
13
+ }
14
+
15
+ interface ColorPickerBaseProps extends Omit<BaseComponent, 'onChange' | 'value' | 'defaultValue'> {
16
+ /**
17
+ * Current color value (controlled).
18
+ * Accepts any valid CSS color string.
19
+ */
20
+ value?: string;
21
+ /**
22
+ * Default color value (uncontrolled)
23
+ * @default "#007acc"
24
+ */
25
+ defaultValue?: string;
26
+ /**
27
+ * Output format for onChange
28
+ * @default "hex"
29
+ */
30
+ format?: ColorFormat;
31
+ /**
32
+ * Whether to show the alpha channel control
33
+ * @default false
34
+ */
35
+ showAlpha?: boolean;
36
+ /**
37
+ * Available input modes
38
+ * @default ['hex', 'rgb', 'hsl']
39
+ */
40
+ inputModes?: ColorInputMode[];
41
+ /**
42
+ * Default input mode
43
+ * @default "hex"
44
+ */
45
+ defaultInputMode?: ColorInputMode;
46
+ /**
47
+ * Preset color palette
48
+ */
49
+ presets?: ColorPreset[];
50
+ /**
51
+ * Swatch trigger size
52
+ * @default "md"
53
+ */
54
+ size?: ColorPickerSize;
55
+ /**
56
+ * Shape of the swatch trigger
57
+ * @default "square"
58
+ */
59
+ swatchShape?: 'square' | 'circle';
60
+ /**
61
+ * Label displayed next to the swatch
62
+ */
63
+ label?: string;
64
+ /**
65
+ * Whether the picker is disabled
66
+ * @default false
67
+ */
68
+ disabled?: boolean;
69
+ /**
70
+ * Whether the component is inline (no popover)
71
+ * @default false
72
+ */
73
+ inline?: boolean;
74
+ /**
75
+ * Width of the picker panel in pixels
76
+ * @default 240
77
+ */
78
+ pickerWidth?: number;
79
+ /**
80
+ * Callback when color changes (continuous)
81
+ */
82
+ onChange?: (color: string) => void;
83
+ /**
84
+ * Callback when color change is committed (drag end)
85
+ */
86
+ onChangeComplete?: (color: string) => void;
87
+ /**
88
+ * Whether to show the EyeDropper button (Chromium-only).
89
+ * Hidden automatically if browser doesn't support the EyeDropper API.
90
+ * @default false
91
+ */
92
+ showEyeDropper?: boolean;
93
+ /**
94
+ * Built-in color palette or custom palette data.
95
+ * - `'material'` — Material Design colors (19 hues × 10 shades)
96
+ * - `'tailwind'` — Tailwind CSS colors (22 hues × 11 shades)
97
+ * - `'pastel'` — Soft pastel colors
98
+ * - `'earth'` — Natural earth tones
99
+ * - `'neon'` — High-saturation neon colors
100
+ * - `'monochrome'` — Neutral, warm, and cool grays
101
+ * - `'skin-tones'` — Portrait/illustration skin palette
102
+ * - `'vintage'` — Desaturated retro film colors
103
+ * - `Palette` — custom palette with name
104
+ * - `PaletteColor[]` — custom palette data (legacy)
105
+ */
106
+ palette?: 'material' | 'tailwind' | 'pastel' | 'earth' | 'neon' | 'monochrome' | 'skin-tones' | 'vintage' | Palette | PaletteColor[];
107
+ }
108
+ type ColorPickerProps = Prettify<ColorPickerBaseProps>;
109
+ interface ColorSwatchProps extends BaseComponent<HTMLButtonElement> {
110
+ color: string;
111
+ size?: ColorPickerSize;
112
+ shape?: 'square' | 'circle';
113
+ disabled?: boolean;
114
+ onClick?: () => void;
115
+ 'aria-label'?: string;
116
+ }
117
+ type ColorSwatchPublicProps = Prettify<ColorSwatchProps>;
118
+
119
+ export { Palette, PaletteColor };
120
+ export type { ColorFormat, ColorInputMode, ColorPickerBaseProps, ColorPickerProps, ColorPickerSize, ColorPreset, ColorSwatchProps, ColorSwatchPublicProps };
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { ColorSwatchProps } from './ColorPicker.types.js';
3
+
4
+ declare const ColorSwatch: React.NamedExoticComponent<ColorSwatchProps>;
5
+
6
+ export { ColorSwatch };
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { Prettify } from '../../../types/utilities.js';
3
+ import { BaseComponent, Size } from '../../../types/common.js';
4
+
5
+ interface EyeDropperBaseProps extends Omit<BaseComponent<HTMLButtonElement>, 'onChange'> {
6
+ /** Callback when a color is picked */
7
+ onColorPick?: (color: string) => void;
8
+ /** Button size @default "md" */
9
+ size?: Size;
10
+ /** Whether disabled @default false */
11
+ disabled?: boolean;
12
+ }
13
+ type EyeDropperProps = Prettify<EyeDropperBaseProps>;
14
+ /**
15
+ * EyeDropper button that opens the native browser EyeDropper API
16
+ * to sample a color from anywhere on the screen.
17
+ *
18
+ * Renders nothing if the EyeDropper API is not available in the browser.
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * <EyeDropper onColorPick={(hex) => setColor(hex)} />
23
+ * ```
24
+ */
25
+ declare const EyeDropper: React.FC<EyeDropperProps>;
26
+
27
+ export { EyeDropper };
28
+ export type { EyeDropperProps };
@@ -0,0 +1,3 @@
1
+ type ColorFormat = 'hex' | 'hex8' | 'rgb' | 'rgba' | 'hsl' | 'hsla';
2
+
3
+ export type { ColorFormat };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Material Design color palette
3
+ *
4
+ * Contains 19 color families with 10 shades each (50-900).
5
+ * Based on the official Material Design color system.
6
+ */
7
+ interface PaletteShade {
8
+ label: string;
9
+ color: string;
10
+ }
11
+ interface PaletteColor {
12
+ name: string;
13
+ shades: PaletteShade[];
14
+ }
15
+ interface Palette {
16
+ /** Display name for the palette (e.g. "Material Design") */
17
+ name: string;
18
+ /** Color families in this palette */
19
+ colors: PaletteColor[];
20
+ }
21
+ declare const MATERIAL_PALETTE: Palette;
22
+
23
+ export { MATERIAL_PALETTE };
24
+ export type { Palette, PaletteColor, PaletteShade };
@@ -0,0 +1,19 @@
1
+ import { Palette } from './material.js';
2
+
3
+ /**
4
+ * Professional color palettes for creative workflows.
5
+ *
6
+ * Inspired by palettes found in Photoshop, Affinity Photo,
7
+ * and other professional creative tools.
8
+ */
9
+
10
+ declare const PASTEL_PALETTE: Palette;
11
+ declare const EARTH_PALETTE: Palette;
12
+ declare const NEON_PALETTE: Palette;
13
+ declare const MONOCHROME_PALETTE: Palette;
14
+ declare const SKIN_TONES_PALETTE: Palette;
15
+ declare const VINTAGE_PALETTE: Palette;
16
+ /** All professional palettes as a convenience array */
17
+ declare const PROFESSIONAL_PALETTES: Palette[];
18
+
19
+ export { EARTH_PALETTE, MONOCHROME_PALETTE, NEON_PALETTE, PASTEL_PALETTE, PROFESSIONAL_PALETTES, SKIN_TONES_PALETTE, VINTAGE_PALETTE };
@@ -0,0 +1,12 @@
1
+ import { Palette } from './material.js';
2
+
3
+ /**
4
+ * Tailwind CSS color palette
5
+ *
6
+ * Contains 22 color families with 11 shades each (50-950).
7
+ * Based on the official Tailwind CSS color system.
8
+ */
9
+
10
+ declare const TAILWIND_PALETTE: Palette;
11
+
12
+ export { TAILWIND_PALETTE };
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { CurveEditorProps } from './CurveEditor.types.js';
3
+
4
+ declare const CurveEditor: React.FC<CurveEditorProps>;
5
+
6
+ export { CurveEditor };