entangle-ui 0.2.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 (346) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/esm/components/Icons/CheckIcon.js +27 -0
  3. package/dist/esm/components/Icons/CheckIcon.js.map +1 -0
  4. package/dist/esm/components/Icons/ChevronDownIcon.js +27 -0
  5. package/dist/esm/components/Icons/ChevronDownIcon.js.map +1 -0
  6. package/dist/esm/components/Icons/ChevronUpIcon.js +27 -0
  7. package/dist/esm/components/Icons/ChevronUpIcon.js.map +1 -0
  8. package/dist/esm/components/Icons/CircleIcon.js +27 -0
  9. package/dist/esm/components/Icons/CircleIcon.js.map +1 -0
  10. package/dist/esm/components/Icons/CloseIcon.js +27 -0
  11. package/dist/esm/components/Icons/CloseIcon.js.map +1 -0
  12. package/dist/esm/components/Icons/EyeDropperIcon.js +28 -0
  13. package/dist/esm/components/Icons/EyeDropperIcon.js.map +1 -0
  14. package/dist/esm/components/Icons/TangentAlignedIcon.js +9 -0
  15. package/dist/esm/components/Icons/TangentAlignedIcon.js.map +1 -0
  16. package/dist/esm/components/Icons/TangentAutoIcon.js +9 -0
  17. package/dist/esm/components/Icons/TangentAutoIcon.js.map +1 -0
  18. package/dist/esm/components/Icons/TangentFreeIcon.js +9 -0
  19. package/dist/esm/components/Icons/TangentFreeIcon.js.map +1 -0
  20. package/dist/esm/components/Icons/TangentLinearIcon.js +9 -0
  21. package/dist/esm/components/Icons/TangentLinearIcon.js.map +1 -0
  22. package/dist/esm/components/Icons/TangentMirroredIcon.js +9 -0
  23. package/dist/esm/components/Icons/TangentMirroredIcon.js.map +1 -0
  24. package/dist/esm/components/Icons/TangentStepIcon.js +9 -0
  25. package/dist/esm/components/Icons/TangentStepIcon.js.map +1 -0
  26. package/dist/esm/components/controls/ColorPicker/AlphaSlider.js +92 -0
  27. package/dist/esm/components/controls/ColorPicker/AlphaSlider.js.map +1 -0
  28. package/dist/esm/components/controls/ColorPicker/ColorArea.js +93 -0
  29. package/dist/esm/components/controls/ColorPicker/ColorArea.js.map +1 -0
  30. package/dist/esm/components/controls/ColorPicker/ColorInputs.js +129 -0
  31. package/dist/esm/components/controls/ColorPicker/ColorInputs.js.map +1 -0
  32. package/dist/esm/components/controls/ColorPicker/ColorPalette.js +89 -0
  33. package/dist/esm/components/controls/ColorPicker/ColorPalette.js.map +1 -0
  34. package/dist/esm/components/controls/ColorPicker/ColorPicker.js +75 -0
  35. package/dist/esm/components/controls/ColorPicker/ColorPicker.js.map +1 -0
  36. package/dist/esm/components/controls/ColorPicker/ColorPresets.js +57 -0
  37. package/dist/esm/components/controls/ColorPicker/ColorPresets.js.map +1 -0
  38. package/dist/esm/components/controls/ColorPicker/ColorSwatch.js +67 -0
  39. package/dist/esm/components/controls/ColorPicker/ColorSwatch.js.map +1 -0
  40. package/dist/esm/components/controls/ColorPicker/EyeDropper.js +85 -0
  41. package/dist/esm/components/controls/ColorPicker/EyeDropper.js.map +1 -0
  42. package/dist/esm/components/controls/ColorPicker/HueSlider.js +85 -0
  43. package/dist/esm/components/controls/ColorPicker/HueSlider.js.map +1 -0
  44. package/dist/esm/components/controls/ColorPicker/colorUtils.js +220 -0
  45. package/dist/esm/components/controls/ColorPicker/colorUtils.js.map +1 -0
  46. package/dist/esm/components/controls/ColorPicker/palettes/material.js +299 -0
  47. package/dist/esm/components/controls/ColorPicker/palettes/material.js.map +1 -0
  48. package/dist/esm/components/controls/ColorPicker/palettes/professional.js +479 -0
  49. package/dist/esm/components/controls/ColorPicker/palettes/professional.js.map +1 -0
  50. package/dist/esm/components/controls/ColorPicker/palettes/tailwind.js +366 -0
  51. package/dist/esm/components/controls/ColorPicker/palettes/tailwind.js.map +1 -0
  52. package/dist/esm/components/controls/ColorPicker/useColor.js +63 -0
  53. package/dist/esm/components/controls/ColorPicker/useColor.js.map +1 -0
  54. package/dist/esm/components/controls/CurveEditor/CurveCanvas.js +84 -0
  55. package/dist/esm/components/controls/CurveEditor/CurveCanvas.js.map +1 -0
  56. package/dist/esm/components/controls/CurveEditor/CurveEditor.js +134 -0
  57. package/dist/esm/components/controls/CurveEditor/CurveEditor.js.map +1 -0
  58. package/dist/esm/components/controls/CurveEditor/CurveToolbar.js +96 -0
  59. package/dist/esm/components/controls/CurveEditor/CurveToolbar.js.map +1 -0
  60. package/dist/esm/components/controls/CurveEditor/curvePresets.js +184 -0
  61. package/dist/esm/components/controls/CurveEditor/curvePresets.js.map +1 -0
  62. package/dist/esm/components/controls/CurveEditor/curveUtils.js +338 -0
  63. package/dist/esm/components/controls/CurveEditor/curveUtils.js.map +1 -0
  64. package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js +569 -0
  65. package/dist/esm/components/controls/CurveEditor/useCurveInteraction.js.map +1 -0
  66. package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js +400 -0
  67. package/dist/esm/components/controls/CurveEditor/useCurveRenderer.js.map +1 -0
  68. package/dist/esm/components/controls/NumberInput/NumberInput.js +377 -0
  69. package/dist/esm/components/controls/NumberInput/NumberInput.js.map +1 -0
  70. package/dist/esm/components/controls/NumberInput/useNumberInput.js +324 -0
  71. package/dist/esm/components/controls/NumberInput/useNumberInput.js.map +1 -0
  72. package/dist/esm/components/controls/Select/Select.js +533 -0
  73. package/dist/esm/components/controls/Select/Select.js.map +1 -0
  74. package/dist/esm/components/controls/Slider/Slider.js +413 -0
  75. package/dist/esm/components/controls/Slider/Slider.js.map +1 -0
  76. package/dist/esm/components/controls/TreeView/TreeNode.js +189 -0
  77. package/dist/esm/components/controls/TreeView/TreeNode.js.map +1 -0
  78. package/dist/esm/components/controls/TreeView/TreeView.js +213 -0
  79. package/dist/esm/components/controls/TreeView/TreeView.js.map +1 -0
  80. package/dist/esm/components/controls/TreeView/useTreeState.js +154 -0
  81. package/dist/esm/components/controls/TreeView/useTreeState.js.map +1 -0
  82. package/dist/esm/components/controls/VectorInput/VectorInput.js +202 -0
  83. package/dist/esm/components/controls/VectorInput/VectorInput.js.map +1 -0
  84. package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js +42 -0
  85. package/dist/esm/components/editor/PropertyInspector/PropertyGroup.js.map +1 -0
  86. package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js +98 -0
  87. package/dist/esm/components/editor/PropertyInspector/PropertyPanel.js.map +1 -0
  88. package/dist/esm/components/editor/PropertyInspector/PropertyRow.js +154 -0
  89. package/dist/esm/components/editor/PropertyInspector/PropertyRow.js.map +1 -0
  90. package/dist/esm/components/editor/PropertyInspector/PropertySection.js +136 -0
  91. package/dist/esm/components/editor/PropertyInspector/PropertySection.js.map +1 -0
  92. package/dist/esm/components/editor/PropertyInspector/usePropertyUndo.js +86 -0
  93. package/dist/esm/components/editor/PropertyInspector/usePropertyUndo.js.map +1 -0
  94. package/dist/esm/components/feedback/Dialog/Dialog.js +92 -0
  95. package/dist/esm/components/feedback/Dialog/Dialog.js.map +1 -0
  96. package/dist/esm/components/feedback/Dialog/Dialog.styled.js +80 -0
  97. package/dist/esm/components/feedback/Dialog/Dialog.styled.js.map +1 -0
  98. package/dist/esm/components/feedback/Dialog/DialogBody.js +33 -0
  99. package/dist/esm/components/feedback/Dialog/DialogBody.js.map +1 -0
  100. package/dist/esm/components/feedback/Dialog/DialogClose.js +26 -0
  101. package/dist/esm/components/feedback/Dialog/DialogClose.js.map +1 -0
  102. package/dist/esm/components/feedback/Dialog/DialogFooter.js +43 -0
  103. package/dist/esm/components/feedback/Dialog/DialogFooter.js.map +1 -0
  104. package/dist/esm/components/feedback/Dialog/DialogHeader.js +84 -0
  105. package/dist/esm/components/feedback/Dialog/DialogHeader.js.map +1 -0
  106. package/dist/esm/components/feedback/Dialog/useDialogAnimation.js +70 -0
  107. package/dist/esm/components/feedback/Dialog/useDialogAnimation.js.map +1 -0
  108. package/dist/esm/components/feedback/Dialog/useFocusTrap.js +55 -0
  109. package/dist/esm/components/feedback/Dialog/useFocusTrap.js.map +1 -0
  110. package/dist/esm/components/feedback/Toast/ToastContainer.js +34 -0
  111. package/dist/esm/components/feedback/Toast/ToastContainer.js.map +1 -0
  112. package/dist/esm/components/feedback/Toast/ToastItem.js +214 -0
  113. package/dist/esm/components/feedback/Toast/ToastItem.js.map +1 -0
  114. package/dist/esm/components/feedback/Toast/ToastProvider.js +47 -0
  115. package/dist/esm/components/feedback/Toast/ToastProvider.js.map +1 -0
  116. package/dist/esm/components/feedback/Toast/useToast.js +60 -0
  117. package/dist/esm/components/feedback/Toast/useToast.js.map +1 -0
  118. package/dist/esm/components/form/FormHelperText.js +38 -0
  119. package/dist/esm/components/form/FormHelperText.js.map +1 -0
  120. package/dist/esm/components/form/FormLabel.js +43 -0
  121. package/dist/esm/components/form/FormLabel.js.map +1 -0
  122. package/dist/esm/components/form/InputWrapper.js +100 -0
  123. package/dist/esm/components/form/InputWrapper.js.map +1 -0
  124. package/dist/esm/components/layout/Accordion/Accordion.js +103 -0
  125. package/dist/esm/components/layout/Accordion/Accordion.js.map +1 -0
  126. package/dist/esm/components/layout/Accordion/AccordionContent.js +37 -0
  127. package/dist/esm/components/layout/Accordion/AccordionContent.js.map +1 -0
  128. package/dist/esm/components/layout/Accordion/AccordionItem.js +24 -0
  129. package/dist/esm/components/layout/Accordion/AccordionItem.js.map +1 -0
  130. package/dist/esm/components/layout/Accordion/AccordionTrigger.js +123 -0
  131. package/dist/esm/components/layout/Accordion/AccordionTrigger.js.map +1 -0
  132. package/dist/esm/components/layout/Flex/Flex.js +149 -0
  133. package/dist/esm/components/layout/Flex/Flex.js.map +1 -0
  134. package/dist/esm/components/layout/Grid/Grid.js +118 -0
  135. package/dist/esm/components/layout/Grid/Grid.js.map +1 -0
  136. package/dist/esm/components/layout/PanelSurface/PanelSurface.js +106 -0
  137. package/dist/esm/components/layout/PanelSurface/PanelSurface.js.map +1 -0
  138. package/dist/esm/components/layout/ScrollArea/ScrollArea.js +362 -0
  139. package/dist/esm/components/layout/ScrollArea/ScrollArea.js.map +1 -0
  140. package/dist/esm/components/layout/Spacer/Spacer.js +78 -0
  141. package/dist/esm/components/layout/Spacer/Spacer.js.map +1 -0
  142. package/dist/esm/components/layout/SplitPane/SplitPane.js +581 -0
  143. package/dist/esm/components/layout/SplitPane/SplitPane.js.map +1 -0
  144. package/dist/esm/components/layout/SplitPane/SplitPanePanel.js +29 -0
  145. package/dist/esm/components/layout/SplitPane/SplitPanePanel.js.map +1 -0
  146. package/dist/esm/components/layout/Stack/Stack.js +138 -0
  147. package/dist/esm/components/layout/Stack/Stack.js.map +1 -0
  148. package/dist/esm/components/navigation/ContextMenu/ContextMenu.js +45 -0
  149. package/dist/esm/components/navigation/ContextMenu/ContextMenu.js.map +1 -0
  150. package/dist/esm/components/navigation/ContextMenu/useContextMenuTarget.js +52 -0
  151. package/dist/esm/components/navigation/ContextMenu/useContextMenuTarget.js.map +1 -0
  152. package/dist/esm/components/navigation/Menu/Menu.helpers.js +52 -0
  153. package/dist/esm/components/navigation/Menu/Menu.helpers.js.map +1 -0
  154. package/dist/esm/components/navigation/Menu/Menu.js +80 -0
  155. package/dist/esm/components/navigation/Menu/Menu.js.map +1 -0
  156. package/dist/esm/components/navigation/Menu/Menu.styled.js +83 -0
  157. package/dist/esm/components/navigation/Menu/Menu.styled.js.map +1 -0
  158. package/dist/esm/components/navigation/Menu/useMenu.js +87 -0
  159. package/dist/esm/components/navigation/Menu/useMenu.js.map +1 -0
  160. package/dist/esm/components/navigation/Tabs/Tab.js +222 -0
  161. package/dist/esm/components/navigation/Tabs/Tab.js.map +1 -0
  162. package/dist/esm/components/navigation/Tabs/TabList.js +115 -0
  163. package/dist/esm/components/navigation/Tabs/TabList.js.map +1 -0
  164. package/dist/esm/components/navigation/Tabs/TabPanel.js +32 -0
  165. package/dist/esm/components/navigation/Tabs/TabPanel.js.map +1 -0
  166. package/dist/esm/components/navigation/Tabs/Tabs.js +77 -0
  167. package/dist/esm/components/navigation/Tabs/Tabs.js.map +1 -0
  168. package/dist/esm/components/primitives/BaseButton/BaseButton.js +17 -0
  169. package/dist/esm/components/primitives/BaseButton/BaseButton.js.map +1 -0
  170. package/dist/esm/components/primitives/Button/Button.js +183 -0
  171. package/dist/esm/components/primitives/Button/Button.js.map +1 -0
  172. package/dist/esm/components/primitives/Checkbox/Checkbox.js +205 -0
  173. package/dist/esm/components/primitives/Checkbox/Checkbox.js.map +1 -0
  174. package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js +71 -0
  175. package/dist/esm/components/primitives/Checkbox/CheckboxGroup.js.map +1 -0
  176. package/dist/esm/components/primitives/Collapsible/Collapsible.js +116 -0
  177. package/dist/esm/components/primitives/Collapsible/Collapsible.js.map +1 -0
  178. package/dist/esm/components/primitives/Icon/Icon.js +63 -0
  179. package/dist/esm/components/primitives/Icon/Icon.js.map +1 -0
  180. package/dist/esm/components/primitives/IconButton/IconButton.js +222 -0
  181. package/dist/esm/components/primitives/IconButton/IconButton.js.map +1 -0
  182. package/dist/esm/components/primitives/Input/Input.js +133 -0
  183. package/dist/esm/components/primitives/Input/Input.js.map +1 -0
  184. package/dist/esm/components/primitives/Paper/Paper.js +146 -0
  185. package/dist/esm/components/primitives/Paper/Paper.js.map +1 -0
  186. package/dist/esm/components/primitives/Popover/Popover.js +121 -0
  187. package/dist/esm/components/primitives/Popover/Popover.js.map +1 -0
  188. package/dist/esm/components/primitives/Popover/PopoverClose.js +50 -0
  189. package/dist/esm/components/primitives/Popover/PopoverClose.js.map +1 -0
  190. package/dist/esm/components/primitives/Popover/PopoverContent.js +102 -0
  191. package/dist/esm/components/primitives/Popover/PopoverContent.js.map +1 -0
  192. package/dist/esm/components/primitives/Popover/PopoverTrigger.js +37 -0
  193. package/dist/esm/components/primitives/Popover/PopoverTrigger.js.map +1 -0
  194. package/dist/esm/components/primitives/Switch/Switch.js +170 -0
  195. package/dist/esm/components/primitives/Switch/Switch.js.map +1 -0
  196. package/dist/esm/components/primitives/Text/Text.js +166 -0
  197. package/dist/esm/components/primitives/Text/Text.js.map +1 -0
  198. package/dist/esm/components/primitives/Tooltip/Arrow.js +52 -0
  199. package/dist/esm/components/primitives/Tooltip/Arrow.js.map +1 -0
  200. package/dist/esm/components/primitives/Tooltip/Tooltip.js +219 -0
  201. package/dist/esm/components/primitives/Tooltip/Tooltip.js.map +1 -0
  202. package/dist/esm/components/primitives/Tooltip/utils.js +66 -0
  203. package/dist/esm/components/primitives/Tooltip/utils.js.map +1 -0
  204. package/dist/esm/components/shell/AppShell/AppShell.js +157 -0
  205. package/dist/esm/components/shell/AppShell/AppShell.js.map +1 -0
  206. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js +236 -0
  207. package/dist/esm/components/shell/FloatingPanel/FloatingPanel.js.map +1 -0
  208. package/dist/esm/components/shell/MenuBar/MenuBar.js +340 -0
  209. package/dist/esm/components/shell/MenuBar/MenuBar.js.map +1 -0
  210. package/dist/esm/components/shell/StatusBar/StatusBar.js +134 -0
  211. package/dist/esm/components/shell/StatusBar/StatusBar.js.map +1 -0
  212. package/dist/esm/components/shell/Toolbar/Toolbar.js +185 -0
  213. package/dist/esm/components/shell/Toolbar/Toolbar.js.map +1 -0
  214. package/dist/esm/context/KeyboardContext.js +14 -0
  215. package/dist/esm/context/KeyboardContext.js.map +1 -0
  216. package/dist/esm/index.js +78 -0
  217. package/dist/esm/index.js.map +1 -0
  218. package/dist/esm/palettes.js +4 -0
  219. package/dist/esm/palettes.js.map +1 -0
  220. package/dist/esm/theme/ThemeProvider.js +12 -0
  221. package/dist/esm/theme/ThemeProvider.js.map +1 -0
  222. package/dist/esm/theme/createTheme.js +10 -0
  223. package/dist/esm/theme/createTheme.js.map +1 -0
  224. package/dist/esm/theme/tokens.js +144 -0
  225. package/dist/esm/theme/tokens.js.map +1 -0
  226. package/dist/esm/utils/cn.js +6 -0
  227. package/dist/esm/utils/cn.js.map +1 -0
  228. package/dist/esm/utils/mathExpression.js +275 -0
  229. package/dist/esm/utils/mathExpression.js.map +1 -0
  230. package/dist/esm/utils/mathUtils.js +18 -0
  231. package/dist/esm/utils/mathUtils.js.map +1 -0
  232. package/dist/esm/utils/objects.js +22 -0
  233. package/dist/esm/utils/objects.js.map +1 -0
  234. package/dist/esm/utils/styledUtils.js +81 -0
  235. package/dist/esm/utils/styledUtils.js.map +1 -0
  236. package/dist/types/components/controls/ColorPicker/ColorPalette.d.ts +16 -0
  237. package/dist/types/components/controls/ColorPicker/ColorPicker.d.ts +6 -0
  238. package/dist/types/components/controls/ColorPicker/ColorPicker.types.d.ts +120 -0
  239. package/dist/types/components/controls/ColorPicker/ColorSwatch.d.ts +6 -0
  240. package/dist/types/components/controls/ColorPicker/EyeDropper.d.ts +28 -0
  241. package/dist/types/components/controls/ColorPicker/colorUtils.d.ts +3 -0
  242. package/dist/types/components/controls/ColorPicker/palettes/material.d.ts +24 -0
  243. package/dist/types/components/controls/ColorPicker/palettes/professional.d.ts +19 -0
  244. package/dist/types/components/controls/ColorPicker/palettes/tailwind.d.ts +12 -0
  245. package/dist/types/components/controls/CurveEditor/CurveEditor.d.ts +6 -0
  246. package/dist/types/components/controls/CurveEditor/CurveEditor.types.d.ts +297 -0
  247. package/dist/types/components/controls/CurveEditor/curvePresets.d.ts +5 -0
  248. package/dist/types/components/controls/CurveEditor/curveUtils.d.ts +28 -0
  249. package/dist/types/components/controls/NumberInput/NumberInput.d.ts +150 -0
  250. package/dist/types/components/controls/NumberInput/useNumberInput.d.ts +65 -0
  251. package/dist/types/components/controls/Select/Select.d.ts +29 -0
  252. package/dist/types/components/controls/Select/Select.types.d.ts +131 -0
  253. package/dist/types/components/controls/Slider/Slider.d.ts +178 -0
  254. package/dist/types/components/controls/TreeView/TreeView.d.ts +27 -0
  255. package/dist/types/components/controls/TreeView/TreeView.types.d.ts +135 -0
  256. package/dist/types/components/controls/VectorInput/VectorInput.d.ts +26 -0
  257. package/dist/types/components/controls/VectorInput/VectorInput.types.d.ts +158 -0
  258. package/dist/types/components/editor/PropertyInspector/PropertyGroup.d.ts +6 -0
  259. package/dist/types/components/editor/PropertyInspector/PropertyInspector.types.d.ts +238 -0
  260. package/dist/types/components/editor/PropertyInspector/PropertyPanel.d.ts +6 -0
  261. package/dist/types/components/editor/PropertyInspector/PropertyRow.d.ts +6 -0
  262. package/dist/types/components/editor/PropertyInspector/PropertySection.d.ts +6 -0
  263. package/dist/types/components/editor/PropertyInspector/usePropertyUndo.d.ts +9 -0
  264. package/dist/types/components/feedback/Dialog/Dialog.d.ts +25 -0
  265. package/dist/types/components/feedback/Dialog/Dialog.types.d.ts +55 -0
  266. package/dist/types/components/feedback/Dialog/DialogBody.d.ts +16 -0
  267. package/dist/types/components/feedback/Dialog/DialogClose.d.ts +21 -0
  268. package/dist/types/components/feedback/Dialog/DialogFooter.d.ts +17 -0
  269. package/dist/types/components/feedback/Dialog/DialogHeader.d.ts +17 -0
  270. package/dist/types/components/feedback/Toast/Toast.types.d.ts +39 -0
  271. package/dist/types/components/feedback/Toast/ToastProvider.d.ts +19 -0
  272. package/dist/types/components/feedback/Toast/useToast.d.ts +22 -0
  273. package/dist/types/components/form/FormHelperText.d.ts +321 -0
  274. package/dist/types/components/form/FormLabel.d.ts +331 -0
  275. package/dist/types/components/form/InputWrapper.d.ts +346 -0
  276. package/dist/types/components/layout/Accordion/Accordion.d.ts +23 -0
  277. package/dist/types/components/layout/Accordion/Accordion.types.d.ts +109 -0
  278. package/dist/types/components/layout/Accordion/AccordionContent.d.ts +6 -0
  279. package/dist/types/components/layout/Accordion/AccordionItem.d.ts +6 -0
  280. package/dist/types/components/layout/Accordion/AccordionTrigger.d.ts +6 -0
  281. package/dist/types/components/layout/Flex/Flex.d.ts +215 -0
  282. package/dist/types/components/layout/Grid/Grid.d.ts +113 -0
  283. package/dist/types/components/layout/PanelSurface/PanelSurface.d.ts +1153 -0
  284. package/dist/types/components/layout/PanelSurface/PanelSurface.types.d.ts +64 -0
  285. package/dist/types/components/layout/ScrollArea/ScrollArea.d.ts +6 -0
  286. package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts +93 -0
  287. package/dist/types/components/layout/Spacer/Spacer.d.ts +329 -0
  288. package/dist/types/components/layout/SplitPane/SplitPane.d.ts +21 -0
  289. package/dist/types/components/layout/SplitPane/SplitPane.types.d.ts +87 -0
  290. package/dist/types/components/layout/SplitPane/SplitPanePanel.d.ts +20 -0
  291. package/dist/types/components/layout/Stack/Stack.d.ts +166 -0
  292. package/dist/types/components/navigation/ContextMenu/ContextMenu.d.ts +6 -0
  293. package/dist/types/components/navigation/ContextMenu/ContextMenu.types.d.ts +74 -0
  294. package/dist/types/components/navigation/ContextMenu/useContextMenuTarget.d.ts +5 -0
  295. package/dist/types/components/navigation/Menu/Menu.d.ts +42 -0
  296. package/dist/types/components/navigation/Menu/Menu.types.d.ts +94 -0
  297. package/dist/types/components/navigation/Menu/useMenu.d.ts +16 -0
  298. package/dist/types/components/navigation/Tabs/Tab.d.ts +6 -0
  299. package/dist/types/components/navigation/Tabs/TabList.d.ts +6 -0
  300. package/dist/types/components/navigation/Tabs/TabPanel.d.ts +6 -0
  301. package/dist/types/components/navigation/Tabs/Tabs.d.ts +23 -0
  302. package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +117 -0
  303. package/dist/types/components/primitives/Button/Button.d.ts +392 -0
  304. package/dist/types/components/primitives/Checkbox/Checkbox.d.ts +20 -0
  305. package/dist/types/components/primitives/Checkbox/Checkbox.types.d.ts +156 -0
  306. package/dist/types/components/primitives/Checkbox/CheckboxGroup.d.ts +25 -0
  307. package/dist/types/components/primitives/Collapsible/Collapsible.d.ts +6 -0
  308. package/dist/types/components/primitives/Collapsible/Collapsible.types.d.ts +28 -0
  309. package/dist/types/components/primitives/Icon/Icon.d.ts +40 -0
  310. package/dist/types/components/primitives/IconButton/IconButton.d.ts +354 -0
  311. package/dist/types/components/primitives/Input/Input.d.ts +134 -0
  312. package/dist/types/components/primitives/Paper/Paper.d.ts +419 -0
  313. package/dist/types/components/primitives/Popover/Popover.d.ts +25 -0
  314. package/dist/types/components/primitives/Popover/Popover.types.d.ts +99 -0
  315. package/dist/types/components/primitives/Popover/PopoverClose.d.ts +6 -0
  316. package/dist/types/components/primitives/Popover/PopoverContent.d.ts +6 -0
  317. package/dist/types/components/primitives/Popover/PopoverTrigger.d.ts +10 -0
  318. package/dist/types/components/primitives/Switch/Switch.d.ts +78 -0
  319. package/dist/types/components/primitives/Text/Text.d.ts +442 -0
  320. package/dist/types/components/primitives/Tooltip/Tooltip.d.ts +175 -0
  321. package/dist/types/components/primitives/Tooltip/types.d.ts +82 -0
  322. package/dist/types/components/shell/AppShell/AppShell.d.ts +1437 -0
  323. package/dist/types/components/shell/AppShell/AppShell.types.d.ts +48 -0
  324. package/dist/types/components/shell/FloatingPanel/FloatingPanel.d.ts +7 -0
  325. package/dist/types/components/shell/FloatingPanel/FloatingPanel.types.d.ts +61 -0
  326. package/dist/types/components/shell/MenuBar/MenuBar.d.ts +1441 -0
  327. package/dist/types/components/shell/MenuBar/MenuBar.types.d.ts +48 -0
  328. package/dist/types/components/shell/StatusBar/StatusBar.d.ts +868 -0
  329. package/dist/types/components/shell/StatusBar/StatusBar.types.d.ts +40 -0
  330. package/dist/types/components/shell/Toolbar/Toolbar.d.ts +1728 -0
  331. package/dist/types/components/shell/Toolbar/Toolbar.types.d.ts +59 -0
  332. package/dist/types/index.d.ts +101 -0
  333. package/dist/types/palettes.d.ts +3 -0
  334. package/dist/types/theme/ThemeProvider.d.ts +11 -0
  335. package/dist/types/theme/createTheme.d.ts +6 -0
  336. package/dist/types/theme/tokens.d.ts +147 -0
  337. package/dist/types/theme/types.d.ts +7 -0
  338. package/dist/types/types/common.d.ts +24 -0
  339. package/dist/types/types/utilities.d.ts +72 -0
  340. package/dist/types/utils/cn.d.ts +3 -0
  341. package/package.json +23 -7
  342. package/dist/index.d.ts +0 -12
  343. package/dist/index.esm.js +0 -13962
  344. package/dist/index.esm.js.map +0 -1
  345. package/dist/index.js +0 -14048
  346. package/dist/index.js.map +0 -1
@@ -0,0 +1,98 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useState, useCallback, useMemo, createContext, useContext } from 'react';
3
+ import styled from '@emotion/styled';
4
+ import { processCss } from '../../../utils/styledUtils.js';
5
+ import { ScrollArea } from '../../layout/ScrollArea/ScrollArea.js';
6
+
7
+ // --- Context ---
8
+ const PropertyPanelContext =
9
+ /*#__PURE__*/ createContext(null);
10
+ /**
11
+ * Returns the PropertyPanel context value, or null if not inside a PropertyPanel.
12
+ * Child components use this to inherit size and search query from the panel.
13
+ */
14
+ function usePropertyPanelContext() {
15
+ return useContext(PropertyPanelContext);
16
+ }
17
+ const SEARCH_SIZE_MAP = {
18
+ sm: { height: 20, fontKey: 'md', paddingKey: 'sm' },
19
+ md: { height: 24, fontKey: 'md', paddingKey: 'md' },
20
+ lg: { height: 28, fontKey: 'lg', paddingKey: 'md' },
21
+ };
22
+ const StyledPanelRoot = styled.div `
23
+ display: flex;
24
+ flex-direction: column;
25
+ height: 100%;
26
+ background: ${props => props.theme.colors.background.primary};
27
+ color: ${props => props.theme.colors.text.primary};
28
+ font-family: ${props => props.theme.typography.fontFamily.sans};
29
+
30
+ ${props => processCss(props.$css, props.theme)}
31
+ `;
32
+ const StyledPanelHeader = styled.div `
33
+ flex-shrink: 0;
34
+ border-bottom: 1px solid ${props => props.theme.colors.border.default};
35
+ `;
36
+ const StyledSearchWrapper = styled.div `
37
+ padding: ${props => props.theme.spacing.sm}px
38
+ ${props => props.theme.spacing.md}px;
39
+ `;
40
+ const StyledSearchInput = styled.input `
41
+ width: 100%;
42
+ box-sizing: border-box;
43
+ border: 1px solid ${props => props.theme.colors.border.default};
44
+ border-radius: ${props => props.theme.borderRadius.md}px;
45
+ background: ${props => props.theme.colors.surface.default};
46
+ color: ${props => props.theme.colors.text.primary};
47
+ height: ${props => SEARCH_SIZE_MAP[props.$size].height}px;
48
+ font-size: ${props => props.theme.typography.fontSize[SEARCH_SIZE_MAP[props.$size].fontKey]}px;
49
+ padding: 0
50
+ ${props => props.theme.spacing[SEARCH_SIZE_MAP[props.$size].paddingKey]}px;
51
+ font-family: inherit;
52
+ outline: none;
53
+ transition:
54
+ border-color ${props => props.theme.transitions.fast},
55
+ box-shadow ${props => props.theme.transitions.fast};
56
+
57
+ &:focus {
58
+ border-color: ${props => props.theme.colors.border.focus};
59
+ box-shadow: ${props => props.theme.shadows.focus};
60
+ }
61
+
62
+ &::placeholder {
63
+ color: ${props => props.theme.colors.text.muted};
64
+ }
65
+ `;
66
+ const StyledPanelContent = styled.div `
67
+ flex: 1;
68
+ min-height: 0;
69
+ padding: ${props => props.$contentTopSpacing ?? props.theme.spacing.sm}px
70
+ ${props => props.theme.spacing.md}px
71
+ ${props => props.$contentBottomSpacing ?? props.theme.spacing.md}px;
72
+ box-sizing: border-box;
73
+ `;
74
+ const StyledPanelFooter = styled.div `
75
+ flex-shrink: 0;
76
+ border-top: 1px solid ${props => props.theme.colors.border.default};
77
+ `;
78
+ // --- Component ---
79
+ const PropertyPanel = ({ children, header, footer, size = 'md', maxHeight, searchable = false, searchPlaceholder = 'Search properties...', onSearchChange, contentTopSpacing, contentBottomSpacing, css, className, style, testId, ref, ...rest }) => {
80
+ const [searchQuery, setSearchQuery] = useState('');
81
+ const handleSearchChange = useCallback((e) => {
82
+ const query = e.target.value;
83
+ setSearchQuery(query);
84
+ onSearchChange?.(query);
85
+ }, [onSearchChange]);
86
+ const contextValue = useMemo(() => ({
87
+ size,
88
+ searchQuery: searchQuery.toLowerCase(),
89
+ }), [size, searchQuery]);
90
+ const hasHeader = header != null || searchable;
91
+ const hasFooter = footer != null;
92
+ const content = (jsx(StyledPanelContent, { "$contentTopSpacing": contentTopSpacing, "$contentBottomSpacing": contentBottomSpacing, children: children }));
93
+ return (jsx(PropertyPanelContext.Provider, { value: contextValue, children: jsxs(StyledPanelRoot, { ref: ref, role: "region", "aria-label": "Properties", "$css": css, className: className, style: style, "data-testid": testId, ...rest, children: [hasHeader && (jsxs(StyledPanelHeader, { children: [header, searchable && (jsx(StyledSearchWrapper, { children: jsx(StyledSearchInput, { type: "search", role: "searchbox", "aria-label": "Search properties", placeholder: searchPlaceholder, value: searchQuery, onChange: handleSearchChange, "$size": size }) }))] })), maxHeight != null ? (jsx(ScrollArea, { maxHeight: maxHeight, direction: "vertical", scrollbarVisibility: "auto", fadeMask: true, children: content })) : (content), hasFooter && jsx(StyledPanelFooter, { children: footer })] }) }));
94
+ };
95
+ PropertyPanel.displayName = 'PropertyPanel';
96
+
97
+ export { PropertyPanel, PropertyPanelContext, usePropertyPanelContext };
98
+ //# sourceMappingURL=PropertyPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyPanel.js","sources":["../../../../../../src/components/editor/PropertyInspector/PropertyPanel.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { useCallback } from 'react';
3
+ import styled from '@emotion/styled';
4
+ import { Tooltip } from '../../primitives/Tooltip/Tooltip.js';
5
+ import { processCss } from '../../../utils/styledUtils.js';
6
+ import { usePropertyPanelContext } from './PropertyPanel.js';
7
+
8
+ const ROW_SIZE_MAP = {
9
+ sm: {
10
+ minHeight: 22,
11
+ paddingVKey: 'xs',
12
+ paddingHKey: 'sm',
13
+ fontKey: 'md',
14
+ resetIconSize: 10,
15
+ },
16
+ md: {
17
+ minHeight: 26,
18
+ paddingVKey: 'xs',
19
+ paddingHKey: 'md',
20
+ fontKey: 'md',
21
+ resetIconSize: 12,
22
+ },
23
+ lg: {
24
+ minHeight: 30,
25
+ paddingVKey: 'sm',
26
+ paddingHKey: 'lg',
27
+ fontKey: 'lg',
28
+ resetIconSize: 14,
29
+ },
30
+ };
31
+ // --- Reset icon ---
32
+ const ResetIcon = ({ size }) => (jsxs("svg", { width: size, height: size, viewBox: "0 0 12 12", fill: "none", "aria-hidden": "true", children: [jsx("path", { d: "M2 4.5h6.5a2 2 0 0 1 0 4H6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M4 2.5L2 4.5L4 6.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })] }));
33
+ // --- Styled ---
34
+ const RESET_BUTTON_CLASS = 'property-row-reset';
35
+ const StyledRowRoot = styled.div `
36
+ display: ${props => props.$visible ? (props.$fullWidth ? 'flex' : 'flex') : 'none'};
37
+ flex-direction: ${props => (props.$fullWidth ? 'column' : 'row')};
38
+ align-items: ${props => (props.$fullWidth ? 'stretch' : 'center')};
39
+ position: relative;
40
+ min-height: ${props => ROW_SIZE_MAP[props.$size].minHeight}px;
41
+ padding: 2px 8px;
42
+ opacity: ${props => (props.$disabled ? 0.5 : 1)};
43
+ pointer-events: ${props => (props.$disabled ? 'none' : 'auto')};
44
+ transition: background ${props => props.theme.transitions.fast};
45
+
46
+ &:hover {
47
+ background: ${props => props.theme.colors.surface.hover};
48
+ }
49
+
50
+ &:hover .${RESET_BUTTON_CLASS} {
51
+ opacity: 1;
52
+ }
53
+
54
+ ${props => processCss(props.$css, props.theme)}
55
+ `;
56
+ const StyledRowLabel = styled.div `
57
+ flex: 0 0 ${props => props.$splitRatio}%;
58
+ box-sizing: border-box;
59
+ min-width: 0;
60
+ display: flex;
61
+ align-items: center;
62
+ font-size: ${props => props.theme.typography.fontSize[ROW_SIZE_MAP[props.$size].fontKey]}px;
63
+ color: ${props => props.theme.colors.text.secondary};
64
+ font-weight: ${props => props.$modified
65
+ ? props.theme.typography.fontWeight.medium
66
+ : props.theme.typography.fontWeight.normal};
67
+ overflow: hidden;
68
+ text-overflow: ellipsis;
69
+ white-space: nowrap;
70
+ user-select: none;
71
+ padding-right: ${props => props.theme.spacing.md}px;
72
+ `;
73
+ const StyledFullWidthLabel = styled.div `
74
+ display: flex;
75
+ align-items: center;
76
+ font-size: ${props => props.theme.typography.fontSize[ROW_SIZE_MAP[props.$size].fontKey]}px;
77
+ color: ${props => props.theme.colors.text.secondary};
78
+ font-weight: ${props => props.$modified
79
+ ? props.theme.typography.fontWeight.medium
80
+ : props.theme.typography.fontWeight.normal};
81
+ margin-bottom: ${props => props.theme.spacing.xs}px;
82
+ user-select: none;
83
+ `;
84
+ const StyledModifiedDot = styled.span `
85
+ width: 4px;
86
+ height: 4px;
87
+ border-radius: 50%;
88
+ background: ${props => props.theme.colors.accent.primary};
89
+ margin-right: ${props => props.theme.spacing.xs}px;
90
+ flex-shrink: 0;
91
+ `;
92
+ const StyledRowControl = styled.div `
93
+ flex: 0 0 ${props => props.$splitRatio}%;
94
+ box-sizing: border-box;
95
+ display: flex;
96
+ align-items: center;
97
+ min-width: 0;
98
+ padding-right: ${props => props.theme.spacing.xs}px;
99
+ `;
100
+ const StyledFullWidthControl = styled.div `
101
+ display: flex;
102
+ align-items: stretch;
103
+ width: 100%;
104
+ flex: 1 1 auto;
105
+ min-width: 0;
106
+ padding-right: ${props => props.theme.spacing.xs}px;
107
+ `;
108
+ const StyledResetButton = styled.span `
109
+ position: absolute;
110
+ right: ${props => props.theme.spacing.xs}px;
111
+ top: 50%;
112
+ transform: translateY(-50%);
113
+ opacity: 0;
114
+ cursor: pointer;
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: center;
118
+ width: 16px;
119
+ height: 16px;
120
+ border-radius: ${props => props.theme.borderRadius.sm}px;
121
+ color: ${props => props.theme.colors.text.muted};
122
+ transition:
123
+ opacity ${props => props.theme.transitions.fast},
124
+ color ${props => props.theme.transitions.fast},
125
+ background ${props => props.theme.transitions.fast};
126
+
127
+ &:hover {
128
+ color: ${props => props.theme.colors.text.primary};
129
+ background: ${props => props.theme.colors.surface.active};
130
+ }
131
+ `;
132
+ // --- Component ---
133
+ const PropertyRow = ({ label, tooltip, children, fullWidth = false, splitRatio = [40, 60], modified = false, disabled = false, visible = true, size: sizeProp, action, onLabelContextMenu, onReset, css, className, style, testId, ref, ...rest }) => {
134
+ const panelCtx = usePropertyPanelContext();
135
+ const size = sizeProp ?? panelCtx?.size ?? 'md';
136
+ const sizeConfig = ROW_SIZE_MAP[size];
137
+ const handleResetClick = useCallback((e) => {
138
+ e.stopPropagation();
139
+ onReset?.();
140
+ }, [onReset]);
141
+ const modifiedDot = modified ? (jsx(StyledModifiedDot, { "aria-label": "Modified", "data-testid": "modified-dot" })) : null;
142
+ const labelText = jsx("span", { children: label });
143
+ const labelElement = tooltip ? (jsx(Tooltip, { title: tooltip, children: jsxs("span", { style: { display: 'contents' }, children: [modifiedDot, labelText] }) })) : (jsxs(Fragment, { children: [modifiedDot, labelText] }));
144
+ return (jsxs(StyledRowRoot, { ref: ref, "$disabled": disabled, "$visible": visible, "$fullWidth": fullWidth, "$size": size, "$css": css, className: className, style: style, "data-testid": testId, ...rest, children: [fullWidth ? (jsxs(Fragment, { children: [jsx(StyledFullWidthLabel, { "$modified": modified, "$size": size, onContextMenu: onLabelContextMenu, children: labelElement }), jsx(StyledFullWidthControl, { children: children })] })) : (jsxs(Fragment, { children: [jsx(StyledRowLabel, { "$splitRatio": splitRatio[0], "$modified": modified, "$size": size, onContextMenu: onLabelContextMenu, children: labelElement }), jsx(StyledRowControl, { "$splitRatio": splitRatio[1], children: children })] })), action, onReset && (jsx(StyledResetButton, { className: RESET_BUTTON_CLASS, role: "button", tabIndex: 0, "aria-label": "Reset to default", onClick: handleResetClick, onKeyDown: (e) => {
145
+ if (e.key === 'Enter' || e.key === ' ') {
146
+ e.preventDefault();
147
+ onReset();
148
+ }
149
+ }, "data-testid": "reset-button", children: jsx(ResetIcon, { size: sizeConfig.resetIconSize }) }))] }));
150
+ };
151
+ PropertyRow.displayName = 'PropertyRow';
152
+
153
+ export { PropertyRow };
154
+ //# sourceMappingURL=PropertyRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyRow.js","sources":["../../../../../../src/components/editor/PropertyInspector/PropertyRow.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useId, useState, useCallback } from 'react';
3
+ import styled from '@emotion/styled';
4
+ import { usePropertyPanelContext } from './PropertyPanel.js';
5
+
6
+ const TRIGGER_SIZE_MAP = {
7
+ sm: { height: 24, paddingKey: 'sm', fontKey: 'md', chevronSize: 10 },
8
+ md: { height: 28, paddingKey: 'md', fontKey: 'md', chevronSize: 12 },
9
+ lg: { height: 32, paddingKey: 'lg', fontKey: 'lg', chevronSize: 14 },
10
+ };
11
+ // --- Chevron icon ---
12
+ const ChevronRightIcon = ({ size }) => (jsx("svg", { width: size, height: size, viewBox: "0 0 12 12", fill: "none", "aria-hidden": "true", children: jsx("path", { d: "M4.5 3L7.5 6L4.5 9", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
13
+ // --- Styled ---
14
+ const StyledSectionRoot = styled.div `
15
+ display: flex;
16
+ flex-direction: column;
17
+ background: ${props => props.theme.colors.background.secondary};
18
+ border: 1px solid ${props => props.theme.colors.border.default};
19
+ border-radius: ${props => props.theme.borderRadius.md}px;
20
+ overflow: hidden;
21
+
22
+ & + & {
23
+ margin-top: ${props => props.theme.spacing.sm}px;
24
+ }
25
+ `;
26
+ const StyledSectionTrigger = styled.button `
27
+ /* Reset */
28
+ margin: 0;
29
+ border: none;
30
+ font-family: inherit;
31
+ outline: none;
32
+ user-select: none;
33
+ width: 100%;
34
+ text-align: left;
35
+
36
+ /* Layout */
37
+ display: flex;
38
+ align-items: center;
39
+ gap: ${props => props.theme.spacing.sm}px;
40
+
41
+ /* Sizing */
42
+ height: ${props => TRIGGER_SIZE_MAP[props.$size].height}px;
43
+ padding: 0
44
+ ${props => props.theme.spacing[TRIGGER_SIZE_MAP[props.$size].paddingKey]}px;
45
+ font-size: ${props => props.theme.typography.fontSize[TRIGGER_SIZE_MAP[props.$size].fontKey]}px;
46
+ font-weight: ${props => props.theme.typography.fontWeight.medium};
47
+
48
+ /* Colors */
49
+ background: ${props => props.theme.colors.surface.default};
50
+ color: ${props => props.theme.colors.text.primary};
51
+ border-bottom: ${props => props.$expanded
52
+ ? `1px solid ${props.theme.colors.border.default}`
53
+ : 'none'};
54
+ cursor: ${props => (props.$disabled ? 'not-allowed' : 'pointer')};
55
+ opacity: ${props => (props.$disabled ? 0.5 : 1)};
56
+ transition: background ${props => props.theme.transitions.fast};
57
+
58
+ &:hover:not(:disabled) {
59
+ background: ${props => props.theme.colors.surface.hover};
60
+ }
61
+
62
+ &:focus-visible {
63
+ box-shadow: ${props => props.theme.shadows.focus};
64
+ z-index: 1;
65
+ }
66
+ `;
67
+ const StyledChevron = styled.span `
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ flex-shrink: 0;
72
+ transition: transform ${props => props.theme.transitions.fast};
73
+ transform: rotate(${props => (props.$expanded ? '90deg' : '0deg')});
74
+ color: ${props => props.theme.colors.text.muted};
75
+
76
+ svg {
77
+ width: ${props => props.$size}px;
78
+ height: ${props => props.$size}px;
79
+ }
80
+ `;
81
+ const StyledIconArea = styled.span `
82
+ display: flex;
83
+ align-items: center;
84
+ flex-shrink: 0;
85
+ `;
86
+ const StyledSectionLabel = styled.span `
87
+ flex: 1;
88
+ overflow: hidden;
89
+ text-overflow: ellipsis;
90
+ white-space: nowrap;
91
+ `;
92
+ const StyledActionsArea = styled.span `
93
+ display: flex;
94
+ align-items: center;
95
+ margin-left: auto;
96
+ gap: ${props => props.theme.spacing.xs}px;
97
+ `;
98
+ const StyledContentWrapper = styled.div `
99
+ display: grid;
100
+ grid-template-rows: ${props => (props.$expanded ? '1fr' : '0fr')};
101
+ transition: grid-template-rows ${props => props.theme.transitions.normal};
102
+ `;
103
+ const StyledContentInner = styled.div `
104
+ overflow: hidden;
105
+ min-height: 0;
106
+ `;
107
+ // --- Component ---
108
+ const PropertySection = ({ title, icon, actions, expanded: expandedProp, defaultExpanded = true, onExpandedChange, keepMounted = false, disabled = false, size: sizeProp, indicator, onContextMenu, children, className, style, css, testId, ref, ...rest }) => {
109
+ const autoId = useId();
110
+ const triggerId = `property-section-${autoId}-trigger`;
111
+ const contentId = `property-section-${autoId}-content`;
112
+ const panelCtx = usePropertyPanelContext();
113
+ const size = sizeProp ?? panelCtx?.size ?? 'md';
114
+ const sizeConfig = TRIGGER_SIZE_MAP[size];
115
+ const [internalExpanded, setInternalExpanded] = useState(defaultExpanded);
116
+ const isControlled = expandedProp !== undefined;
117
+ const resolvedExpanded = isControlled ? expandedProp : internalExpanded;
118
+ const handleToggle = useCallback(() => {
119
+ if (disabled)
120
+ return;
121
+ const nextExpanded = !resolvedExpanded;
122
+ if (!isControlled) {
123
+ setInternalExpanded(nextExpanded);
124
+ }
125
+ onExpandedChange?.(nextExpanded);
126
+ }, [disabled, resolvedExpanded, isControlled, onExpandedChange]);
127
+ const handleActionsClick = useCallback((e) => {
128
+ e.stopPropagation();
129
+ }, []);
130
+ const showIndicator = indicator !== null;
131
+ return (jsxs(StyledSectionRoot, { ref: ref, className: className, style: style, "data-testid": testId, ...rest, children: [jsxs(StyledSectionTrigger, { type: "button", id: triggerId, "aria-expanded": resolvedExpanded, "aria-controls": contentId, "aria-disabled": disabled || undefined, disabled: disabled, onClick: handleToggle, onContextMenu: onContextMenu, "$size": size, "$disabled": disabled, "$expanded": resolvedExpanded, "$css": css, children: [showIndicator && (jsx(StyledChevron, { "$expanded": resolvedExpanded, "$size": sizeConfig.chevronSize, children: indicator ?? jsx(ChevronRightIcon, { size: sizeConfig.chevronSize }) })), icon && jsx(StyledIconArea, { children: icon }), jsx(StyledSectionLabel, { children: title }), actions && (jsx(StyledActionsArea, { onClick: handleActionsClick, children: actions }))] }), (resolvedExpanded || keepMounted) && (jsx(StyledContentWrapper, { "$expanded": resolvedExpanded, role: "region", id: contentId, "aria-labelledby": triggerId, hidden: !resolvedExpanded || undefined, children: jsx(StyledContentInner, { children: children }) }))] }));
132
+ };
133
+ PropertySection.displayName = 'PropertySection';
134
+
135
+ export { PropertySection };
136
+ //# sourceMappingURL=PropertySection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertySection.js","sources":["../../../../../../src/components/editor/PropertyInspector/PropertySection.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { useReducer, useCallback } from 'react';
2
+
3
+ function undoReducer(state, action) {
4
+ switch (action.type) {
5
+ case 'RECORD': {
6
+ const newStack = [...state.undoStack, action.entry];
7
+ if (newStack.length > action.maxHistory) {
8
+ newStack.shift();
9
+ }
10
+ return {
11
+ undoStack: newStack,
12
+ redoStack: [],
13
+ };
14
+ }
15
+ case 'UNDO': {
16
+ if (state.undoStack.length === 0)
17
+ return state;
18
+ const entry = state.undoStack[state.undoStack.length - 1];
19
+ return {
20
+ undoStack: state.undoStack.slice(0, -1),
21
+ redoStack: [...state.redoStack, entry],
22
+ };
23
+ }
24
+ case 'REDO': {
25
+ if (state.redoStack.length === 0)
26
+ return state;
27
+ const entry = state.redoStack[state.redoStack.length - 1];
28
+ return {
29
+ undoStack: [...state.undoStack, entry],
30
+ redoStack: state.redoStack.slice(0, -1),
31
+ };
32
+ }
33
+ case 'CLEAR':
34
+ return { undoStack: [], redoStack: [] };
35
+ default:
36
+ return state;
37
+ }
38
+ }
39
+ // --- Hook ---
40
+ /**
41
+ * Lightweight undo/redo stack for property changes.
42
+ * Records entries with property identifiers and values for precise undo control.
43
+ */
44
+ function usePropertyUndo(options) {
45
+ const maxHistory = options?.maxHistory ?? 50;
46
+ const [state, dispatch] = useReducer((undoReducer), {
47
+ undoStack: [],
48
+ redoStack: [],
49
+ });
50
+ const record = useCallback((entry) => {
51
+ dispatch({
52
+ type: 'RECORD',
53
+ entry: { ...entry, timestamp: Date.now() },
54
+ maxHistory,
55
+ });
56
+ }, [maxHistory]);
57
+ const undo = useCallback(() => {
58
+ if (state.undoStack.length === 0)
59
+ return null;
60
+ const entry = state.undoStack[state.undoStack.length - 1];
61
+ dispatch({ type: 'UNDO' });
62
+ return entry;
63
+ }, [state.undoStack]);
64
+ const redo = useCallback(() => {
65
+ if (state.redoStack.length === 0)
66
+ return null;
67
+ const entry = state.redoStack[state.redoStack.length - 1];
68
+ dispatch({ type: 'REDO' });
69
+ return entry;
70
+ }, [state.redoStack]);
71
+ const clear = useCallback(() => {
72
+ dispatch({ type: 'CLEAR' });
73
+ }, []);
74
+ return {
75
+ record,
76
+ undo,
77
+ redo,
78
+ canUndo: state.undoStack.length > 0,
79
+ canRedo: state.redoStack.length > 0,
80
+ history: state.undoStack,
81
+ clear,
82
+ };
83
+ }
84
+
85
+ export { usePropertyUndo };
86
+ //# sourceMappingURL=usePropertyUndo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePropertyUndo.js","sources":["../../../../../../src/components/editor/PropertyInspector/usePropertyUndo.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useId, useRef, useCallback, createContext, useContext } from 'react';
3
+ import { createPortal } from 'react-dom';
4
+ import { StyledOverlay, StyledDialogPanel } from './Dialog.styled.js';
5
+ import { useDialogAnimation } from './useDialogAnimation.js';
6
+ import { useFocusTrap } from './useFocusTrap.js';
7
+
8
+ // --- Context ---
9
+ const DialogContext = /*#__PURE__*/ createContext(null);
10
+ function useDialogContext() {
11
+ const ctx = useContext(DialogContext);
12
+ if (!ctx) {
13
+ throw new Error('Dialog sub-components must be used within a <Dialog> component');
14
+ }
15
+ return ctx;
16
+ }
17
+ // --- Component ---
18
+ /**
19
+ * Dialog component for modal overlays in editor interfaces.
20
+ *
21
+ * Renders an accessible modal dialog with overlay, focus trap,
22
+ * and keyboard support. Compound component pattern: use with
23
+ * DialogHeader, DialogBody, DialogFooter, and DialogClose.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * <Dialog open={isOpen} onClose={() => setIsOpen(false)} title="Confirm">
28
+ * <DialogHeader>Confirm Action</DialogHeader>
29
+ * <DialogBody>Are you sure?</DialogBody>
30
+ * <DialogFooter align="right">
31
+ * <Button onClick={() => setIsOpen(false)}>Cancel</Button>
32
+ * <Button variant="filled">Confirm</Button>
33
+ * </DialogFooter>
34
+ * </Dialog>
35
+ * ```
36
+ */
37
+ const Dialog = ({ open, onClose, size = 'md', title, description, closeOnOverlayClick = true, closeOnEscape = true, showOverlay = true, trapFocus = true, initialFocusRef, portal = true, children, className, style, css, testId, id, ref, ...rest }) => {
38
+ const autoId = useId();
39
+ const titleId = `dialog-title-${autoId}`;
40
+ const descriptionId = `dialog-desc-${autoId}`;
41
+ const panelRef = useRef(null);
42
+ const { mounted, closing } = useDialogAnimation({
43
+ open,
44
+ panelRef,
45
+ initialFocusRef,
46
+ });
47
+ const handleFocusTrap = useFocusTrap({
48
+ containerRef: panelRef,
49
+ enabled: trapFocus,
50
+ });
51
+ const handleKeyDown = useCallback((e) => {
52
+ // Escape handler — inline instead of global document listener
53
+ if (closeOnEscape && e.key === 'Escape') {
54
+ e.stopPropagation();
55
+ onClose();
56
+ return;
57
+ }
58
+ // Focus trap
59
+ handleFocusTrap(e);
60
+ }, [closeOnEscape, onClose, handleFocusTrap]);
61
+ const handleOverlayClick = useCallback((e) => {
62
+ if (closeOnOverlayClick && e.target === e.currentTarget) {
63
+ onClose();
64
+ }
65
+ }, [closeOnOverlayClick, onClose]);
66
+ if (!mounted)
67
+ return null;
68
+ const contextValue = {
69
+ onClose,
70
+ titleId,
71
+ descriptionId,
72
+ };
73
+ const dialogContent = (jsxs(DialogContext.Provider, { value: contextValue, children: [showOverlay && (jsx(StyledOverlay, { "$closing": closing, onClick: handleOverlayClick, "data-testid": testId ? `${testId}-overlay` : undefined })), jsxs(StyledDialogPanel, { ref: (node) => {
74
+ panelRef.current =
75
+ node;
76
+ if (typeof ref === 'function') {
77
+ ref(node);
78
+ }
79
+ else if (ref) {
80
+ ref.current =
81
+ node;
82
+ }
83
+ }, role: "dialog", "aria-modal": "true", "aria-labelledby": title ? titleId : undefined, "aria-describedby": description ? descriptionId : undefined, tabIndex: -1, "$size": size, "$closing": closing, "$css": css, className: className, style: style, id: id, "data-testid": testId, onKeyDown: handleKeyDown, ...rest, children: [title && (jsx("span", { id: titleId, style: { display: 'none' }, children: title })), description && (jsx("span", { id: descriptionId, style: { display: 'none' }, children: description })), children] })] }));
84
+ if (portal) {
85
+ return createPortal(dialogContent, document.body);
86
+ }
87
+ return dialogContent;
88
+ };
89
+ Dialog.displayName = 'Dialog';
90
+
91
+ export { Dialog, useDialogContext };
92
+ //# sourceMappingURL=Dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog.js","sources":["../../../../../../src/components/feedback/Dialog/Dialog.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}