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,37 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import styled from '@emotion/styled';
3
+ import { useAccordionContext, useAccordionItemContext } from './Accordion.js';
4
+
5
+ const CONTENT_SIZE_MAP = {
6
+ sm: { paddingVKey: 'sm', paddingHKey: 'md' },
7
+ md: { paddingVKey: 'md', paddingHKey: 'lg' },
8
+ lg: { paddingVKey: 'lg', paddingHKey: 'xl' },
9
+ };
10
+ const StyledContentWrapper = styled.div `
11
+ display: grid;
12
+ grid-template-rows: ${props => (props.$expanded ? '1fr' : '0fr')};
13
+ transition: grid-template-rows ${props => props.theme.transitions.normal};
14
+ `;
15
+ const StyledContentInner = styled.div `
16
+ overflow: hidden;
17
+ min-height: 0;
18
+ `;
19
+ const StyledContentBody = styled.div `
20
+ padding: ${props => props.theme.spacing[CONTENT_SIZE_MAP[props.$size].paddingVKey]}px
21
+ ${props => props.theme.spacing[CONTENT_SIZE_MAP[props.$size].paddingHKey]}px;
22
+ `;
23
+ // --- Component ---
24
+ const AccordionContent = ({ children, keepMounted = false, className, style, testId, ref, ...rest }) => {
25
+ const { size, accordionId } = useAccordionContext();
26
+ const { value, isExpanded } = useAccordionItemContext();
27
+ const triggerId = `accordion-${accordionId}-trigger-${value}`;
28
+ const contentId = `accordion-${accordionId}-content-${value}`;
29
+ if (!isExpanded && !keepMounted) {
30
+ return null;
31
+ }
32
+ return (jsx(StyledContentWrapper, { "$expanded": isExpanded, role: "region", id: contentId, "aria-labelledby": triggerId, hidden: !isExpanded || undefined, children: jsx(StyledContentInner, { children: jsx(StyledContentBody, { ref: ref, "$size": size, className: className, style: style, "data-testid": testId, ...rest, children: children }) }) }));
33
+ };
34
+ AccordionContent.displayName = 'AccordionContent';
35
+
36
+ export { AccordionContent };
37
+ //# sourceMappingURL=AccordionContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionContent.js","sources":["../../../../../../src/components/layout/Accordion/AccordionContent.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;AAaA,MAAM,gBAAgB,GAA6C;IACjE,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;IAC5C,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;IAC5C,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;CAC7C;AAQD,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAA2B;;AAE1C,sBAAA,EAAA,KAAK,KAAK,KAAK,CAAC,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC,CAAA;mCAC/B,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAA;CACzE;AAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGpC;AAMD,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAwB;AAC/C,WAAA,EAAA,KAAK,IACZ,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAA;AAC9D,IAAA,EAAA,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAA;CAC5E;AAED;AAEa,MAAA,gBAAgB,GAAoC,CAAC,EAChE,QAAQ,EACR,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,KAAK,EACL,MAAM,EACN,GAAG,EACH,GAAG,IAAI,EACR,KAAI;IACH,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,mBAAmB,EAAE;IACnD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,uBAAuB,EAAE;AAEvD,IAAA,MAAM,SAAS,GAAG,CAAA,UAAA,EAAa,WAAW,CAAY,SAAA,EAAA,KAAK,EAAE;AAC7D,IAAA,MAAM,SAAS,GAAG,CAAA,UAAA,EAAa,WAAW,CAAY,SAAA,EAAA,KAAK,EAAE;AAE7D,IAAA,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,OAAO,IAAI;;IAGb,QACEA,GAAC,CAAA,oBAAoB,EACR,EAAA,WAAA,EAAA,UAAU,EACrB,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,SAAS,EACI,iBAAA,EAAA,SAAS,EAC1B,MAAM,EAAE,CAAC,UAAU,IAAI,SAAS,EAEhC,QAAA,EAAAA,GAAA,CAAC,kBAAkB,EAAA,EAAA,QAAA,EACjBA,IAAC,iBAAiB,EAAA,EAChB,GAAG,EAAE,GAAG,EAAA,OAAA,EACD,IAAI,EACX,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EAAA,aAAA,EACC,MAAM,EAAA,GACf,IAAI,EAAA,QAAA,EAEP,QAAQ,EACS,CAAA,EAAA,CACD,EACA,CAAA;AAE3B;AAEA,gBAAgB,CAAC,WAAW,GAAG,kBAAkB;;;;"}
@@ -0,0 +1,24 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import styled from '@emotion/styled';
3
+ import { useAccordionContext, AccordionItemContext } from './Accordion.js';
4
+
5
+ // --- Styled ---
6
+ const StyledAccordionItem = styled.div `
7
+ display: flex;
8
+ flex-direction: column;
9
+ `;
10
+ // --- Component ---
11
+ const AccordionItem = ({ value, disabled = false, children, className, style, testId, ref, ...rest }) => {
12
+ const { expandedItems } = useAccordionContext();
13
+ const isExpanded = expandedItems.includes(value);
14
+ const itemContext = {
15
+ value,
16
+ isExpanded,
17
+ isDisabled: disabled,
18
+ };
19
+ return (jsx(AccordionItemContext.Provider, { value: itemContext, children: jsx(StyledAccordionItem, { ref: ref, className: className, style: style, "data-testid": testId, ...rest, children: children }) }));
20
+ };
21
+ AccordionItem.displayName = 'AccordionItem';
22
+
23
+ export { AccordionItem };
24
+ //# sourceMappingURL=AccordionItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionItem.js","sources":["../../../../../../src/components/layout/Accordion/AccordionItem.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;AAQA;AAEA,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGrC;AAED;AAEa,MAAA,aAAa,GAAiC,CAAC,EAC1D,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,GAAG,EACH,GAAG,IAAI,EACR,KAAI;AACH,IAAA,MAAM,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE;IAC/C,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;AAEhD,IAAA,MAAM,WAAW,GAA8B;QAC7C,KAAK;QACL,UAAU;AACV,QAAA,UAAU,EAAE,QAAQ;KACrB;AAED,IAAA,QACEA,GAAA,CAAC,oBAAoB,CAAC,QAAQ,EAAC,EAAA,KAAK,EAAE,WAAW,EAC/C,QAAA,EAAAA,GAAA,CAAC,mBAAmB,EAAA,EAClB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EAAA,aAAA,EACC,MAAM,EAAA,GACf,IAAI,EAEP,QAAA,EAAA,QAAQ,EACW,CAAA,EAAA,CACQ;AAEpC;AAEA,aAAa,CAAC,WAAW,GAAG,eAAe;;;;"}
@@ -0,0 +1,123 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useCallback } from 'react';
3
+ import styled from '@emotion/styled';
4
+ import { useAccordionContext, useAccordionItemContext } from './Accordion.js';
5
+
6
+ const TRIGGER_SIZE_MAP = {
7
+ sm: { height: 28, paddingKey: 'md', fontKey: 'xs', chevronSize: 10 },
8
+ md: { height: 32, paddingKey: 'lg', fontKey: 'sm', chevronSize: 12 },
9
+ lg: { height: 38, paddingKey: 'xl', fontKey: 'md', chevronSize: 14 },
10
+ };
11
+ const StyledTriggerButton = styled.button `
12
+ /* Reset */
13
+ margin: 0;
14
+ border: none;
15
+ font-family: inherit;
16
+ outline: none;
17
+ cursor: ${props => (props.$disabled ? 'not-allowed' : 'pointer')};
18
+ user-select: none;
19
+ width: 100%;
20
+ text-align: left;
21
+
22
+ /* Layout */
23
+ display: flex;
24
+ align-items: center;
25
+ gap: ${props => props.theme.spacing.sm}px;
26
+
27
+ /* Sizing */
28
+ height: ${props => TRIGGER_SIZE_MAP[props.$size].height}px;
29
+ padding: 0
30
+ ${props => props.theme.spacing[TRIGGER_SIZE_MAP[props.$size].paddingKey]}px;
31
+ font-size: ${props => props.theme.typography.fontSize[TRIGGER_SIZE_MAP[props.$size].fontKey]}px;
32
+ font-weight: ${props => props.theme.typography.fontWeight.medium};
33
+ color: ${props => props.theme.colors.text.primary};
34
+ transition: background ${props => props.theme.transitions.fast};
35
+
36
+ /* Disabled */
37
+ opacity: ${props => (props.$disabled ? 0.5 : 1)};
38
+
39
+ /* Variant styles */
40
+ ${props => {
41
+ const { colors } = props.theme;
42
+ switch (props.$variant) {
43
+ case 'ghost':
44
+ return `
45
+ background: transparent;
46
+ border-bottom: 1px solid ${colors.border.default};
47
+ &:hover:not(:disabled) {
48
+ background: ${colors.surface.hover};
49
+ }
50
+ `;
51
+ case 'filled':
52
+ return `
53
+ background: ${colors.background.tertiary};
54
+ &:hover:not(:disabled) {
55
+ background: ${colors.surface.hover};
56
+ }
57
+ `;
58
+ default:
59
+ return `
60
+ background: ${colors.surface.default};
61
+ border-bottom: 1px solid ${colors.border.default};
62
+ &:hover:not(:disabled) {
63
+ background: ${colors.surface.hover};
64
+ }
65
+ `;
66
+ }
67
+ }}
68
+
69
+ /* Focus visible */
70
+ &:focus-visible {
71
+ box-shadow: ${props => props.theme.shadows.focus};
72
+ z-index: 1;
73
+ }
74
+ `;
75
+ const StyledChevron = styled.span `
76
+ display: flex;
77
+ align-items: center;
78
+ justify-content: center;
79
+ flex-shrink: 0;
80
+ transition: transform ${props => props.theme.transitions.fast};
81
+ transform: rotate(${props => (props.$expanded ? '90deg' : '0deg')});
82
+ color: ${props => props.theme.colors.text.muted};
83
+
84
+ svg {
85
+ width: ${props => props.$size}px;
86
+ height: ${props => props.$size}px;
87
+ }
88
+ `;
89
+ const StyledActionsArea = styled.span `
90
+ display: flex;
91
+ align-items: center;
92
+ margin-left: auto;
93
+ gap: ${props => props.theme.spacing.xs}px;
94
+ `;
95
+ const StyledIconArea = styled.span `
96
+ display: flex;
97
+ align-items: center;
98
+ flex-shrink: 0;
99
+ `;
100
+ // --- Chevron icon ---
101
+ 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" }) }));
102
+ // --- Component ---
103
+ const AccordionTrigger = ({ children, icon, actions, indicator, className, style, testId, ref, ...rest }) => {
104
+ const { toggleItem, variant, size, accordionId } = useAccordionContext();
105
+ const { value, isExpanded, isDisabled } = useAccordionItemContext();
106
+ const sizeConfig = TRIGGER_SIZE_MAP[size];
107
+ const triggerId = `accordion-${accordionId}-trigger-${value}`;
108
+ const contentId = `accordion-${accordionId}-content-${value}`;
109
+ const handleClick = useCallback(() => {
110
+ if (!isDisabled) {
111
+ toggleItem(value);
112
+ }
113
+ }, [isDisabled, toggleItem, value]);
114
+ const handleActionsClick = useCallback((e) => {
115
+ e.stopPropagation();
116
+ }, []);
117
+ const showIndicator = indicator !== null;
118
+ return (jsxs(StyledTriggerButton, { ref: ref, type: "button", id: triggerId, "aria-expanded": isExpanded, "aria-controls": contentId, "aria-disabled": isDisabled || undefined, disabled: isDisabled, onClick: handleClick, "$variant": variant, "$size": size, "$expanded": isExpanded, "$disabled": isDisabled, className: className, style: style, "data-testid": testId, ...rest, children: [showIndicator && (jsx(StyledChevron, { "$expanded": isExpanded, "$size": sizeConfig.chevronSize, children: indicator ?? jsx(ChevronRightIcon, { size: sizeConfig.chevronSize }) })), icon && jsx(StyledIconArea, { children: icon }), jsx("span", { children: children }), actions && (jsx(StyledActionsArea, { onClick: handleActionsClick, children: actions }))] }));
119
+ };
120
+ AccordionTrigger.displayName = 'AccordionTrigger';
121
+
122
+ export { AccordionTrigger };
123
+ //# sourceMappingURL=AccordionTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionTrigger.js","sources":["../../../../../../src/components/layout/Accordion/AccordionTrigger.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import styled from '@emotion/styled';
3
+ import { processCss } from '../../../utils/styledUtils.js';
4
+
5
+ /**
6
+ * Calculate gap value based on spacing multiplier and theme
7
+ */
8
+ const getGapValue = (gap, theme, customGap) => {
9
+ if (customGap !== undefined) {
10
+ return typeof customGap === 'number' ? `${customGap}px` : customGap;
11
+ }
12
+ return `${gap * theme.spacing.sm}px`;
13
+ };
14
+ const StyledFlex = styled.div `
15
+ /* Base flex container */
16
+ display: flex;
17
+ box-sizing: border-box;
18
+
19
+ /* Flex properties */
20
+ flex-direction: ${props => props.$direction};
21
+ flex-wrap: ${props => props.$wrap};
22
+ justify-content: ${props => props.$justify};
23
+ align-items: ${props => props.$align};
24
+ align-content: ${props => props.$alignContent};
25
+
26
+ /* Gap between items */
27
+ gap: ${props => getGapValue(props.$gap, props.theme, props.$customGap)};
28
+
29
+ /* Flex item properties (when this Flex is inside another flex container) */
30
+ flex-grow: ${props => props.$grow};
31
+ flex-shrink: ${props => props.$shrink};
32
+ flex-basis: ${props => typeof props.$basis === 'number' ? `${props.$basis}px` : props.$basis};
33
+
34
+ /* Size control */
35
+ ${props => props.$fullWidth && 'width: 100%;'}
36
+ ${props => props.$fullHeight && 'height: 100%;'}
37
+
38
+ ${props => props.$minHeight &&
39
+ `min-height: ${typeof props.$minHeight === 'number'
40
+ ? `${props.$minHeight}px`
41
+ : props.$minHeight};`}
42
+
43
+ ${props => props.$maxWidth &&
44
+ `max-width: ${typeof props.$maxWidth === 'number'
45
+ ? `${props.$maxWidth}px`
46
+ : props.$maxWidth};`}
47
+
48
+ /* Responsive direction changes */
49
+ ${props => props.$sm &&
50
+ `
51
+ @media (min-width: 576px) {
52
+ flex-direction: ${props.$sm};
53
+ }
54
+ `}
55
+
56
+ ${props => props.$md &&
57
+ `
58
+ @media (min-width: 768px) {
59
+ flex-direction: ${props.$md};
60
+ }
61
+ `}
62
+
63
+ ${props => props.$lg &&
64
+ `
65
+ @media (min-width: 992px) {
66
+ flex-direction: ${props.$lg};
67
+ }
68
+ `}
69
+
70
+ ${props => props.$xl &&
71
+ `
72
+ @media (min-width: 1200px) {
73
+ flex-direction: ${props.$xl};
74
+ }
75
+ `}
76
+
77
+ /* Custom CSS */
78
+ ${props => processCss(props.$css, props.theme)}
79
+ `;
80
+ /**
81
+ * A comprehensive flexbox component providing full control over flex properties.
82
+ *
83
+ * More powerful than Stack for complex layouts requiring precise flexbox control.
84
+ * Supports all flexbox properties, responsive direction changes, and flexible sizing.
85
+ * Perfect for complex layouts, navigation bars, form layouts, and sophisticated arrangements.
86
+ *
87
+ * @example
88
+ * ```tsx
89
+ * // Basic horizontal flex
90
+ * <Flex justify="space-between" align="center">
91
+ * <div>Left content</div>
92
+ * <div>Right content</div>
93
+ * </Flex>
94
+ *
95
+ * // Vertical stack with gap
96
+ * <Flex direction="column" gap={3}>
97
+ * <Card>Item 1</Card>
98
+ * <Card>Item 2</Card>
99
+ * <Card>Item 3</Card>
100
+ * </Flex>
101
+ *
102
+ * // Responsive navigation
103
+ * <Flex
104
+ * direction="column"
105
+ * md="row"
106
+ * justify="space-between"
107
+ * align="center"
108
+ * gap={2}
109
+ * >
110
+ * <Logo />
111
+ * <Navigation />
112
+ * <UserMenu />
113
+ * </Flex>
114
+ *
115
+ * // Flexible form layout
116
+ * <Flex direction="column" gap={2} maxWidth="400px">
117
+ * <Input label="Email" />
118
+ * <Input label="Password" />
119
+ * <Flex justify="space-between" gap={2}>
120
+ * <Button fullWidth variant="ghost">Cancel</Button>
121
+ * <Button fullWidth variant="filled">Login</Button>
122
+ * </Flex>
123
+ * </Flex>
124
+ *
125
+ * // Card grid with wrapping
126
+ * <Flex wrap="wrap" gap={3} justify="center">
127
+ * <Card basis="300px">Card 1</Card>
128
+ * <Card basis="300px">Card 2</Card>
129
+ * <Card basis="300px">Card 3</Card>
130
+ * </Flex>
131
+ *
132
+ * // Complex layout with nesting
133
+ * <Flex direction="column" fullHeight>
134
+ * <Header />
135
+ * <Flex grow={1}>
136
+ * <Sidebar basis="200px" />
137
+ * <MainContent grow={1} />
138
+ * </Flex>
139
+ * <Footer />
140
+ * </Flex>
141
+ * ```
142
+ */
143
+ const Flex = ({ children, direction = 'row', sm, md, lg, xl, wrap = 'nowrap', justify = 'flex-start', align = 'stretch', alignContent = 'stretch', gap = 0, customGap, grow = 0, shrink = 1, basis = 'auto', fullWidth = false, fullHeight = false, minHeight, maxWidth, className, testId, css, style, ref, ...htmlProps }) => {
144
+ return (jsx(StyledFlex, { ref: ref, className: className, "$direction": direction, "$sm": sm, "$md": md, "$lg": lg, "$xl": xl, "$wrap": wrap, "$justify": justify, "$align": align, "$alignContent": alignContent, "$gap": gap, "$customGap": customGap, "$grow": grow, "$shrink": shrink, "$basis": basis, "$fullWidth": fullWidth, "$fullHeight": fullHeight, "$minHeight": minHeight, "$maxWidth": maxWidth, "$css": css, "data-testid": testId, style: style, ...htmlProps, children: children }));
145
+ };
146
+ Flex.displayName = 'Flex';
147
+
148
+ export { Flex };
149
+ //# sourceMappingURL=Flex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flex.js","sources":["../../../../../../src/components/layout/Flex/Flex.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import styled from '@emotion/styled';
3
+ import { processCss } from '../../../utils/styledUtils.js';
4
+
5
+ /**
6
+ * Calculate gap value based on spacing multiplier and theme
7
+ */
8
+ const getGapValue = (spacing, theme, customGap) => {
9
+ if (customGap !== undefined) {
10
+ return typeof customGap === 'number' ? `${customGap}px` : customGap;
11
+ }
12
+ return `${spacing * theme.spacing.sm}px`;
13
+ };
14
+ const StyledGrid = styled.div `
15
+ /* Container styles - creates CSS Grid layout */
16
+ ${props => props.$container &&
17
+ `
18
+ display: grid;
19
+ grid-template-columns: repeat(${props.$columns}, 1fr);
20
+ width: 100%;
21
+ box-sizing: border-box;
22
+ gap: ${getGapValue(props.$spacing ?? 2, props.theme, props.$gap)};
23
+ `}
24
+
25
+ /* Item styles - defines how this grid item behaves */
26
+ ${props => !props.$container &&
27
+ props.$size &&
28
+ `
29
+ grid-column: span ${props.$size === 'auto' ? 'auto' : props.$size};
30
+ `}
31
+
32
+ /* Responsive grid item sizes */
33
+ ${props => !props.$container &&
34
+ `
35
+ /* Base size */
36
+ ${props.$size && `grid-column: span ${props.$size === 'auto' ? 'auto' : props.$size};`}
37
+
38
+ /* Extra small screens and up */
39
+ ${props.$xs &&
40
+ `
41
+ grid-column: span ${props.$xs === 'auto' ? 'auto' : props.$xs};
42
+ `}
43
+
44
+ /* Small screens and up (576px) */
45
+ @media (min-width: 576px) {
46
+ ${props.$sm && `grid-column: span ${props.$sm === 'auto' ? 'auto' : props.$sm};`}
47
+ }
48
+
49
+ /* Medium screens and up (768px) */
50
+ @media (min-width: 768px) {
51
+ ${props.$md && `grid-column: span ${props.$md === 'auto' ? 'auto' : props.$md};`}
52
+ }
53
+
54
+ /* Large screens and up (992px) */
55
+ @media (min-width: 992px) {
56
+ ${props.$lg && `grid-column: span ${props.$lg === 'auto' ? 'auto' : props.$lg};`}
57
+ }
58
+
59
+ /* Extra large screens and up (1200px) */
60
+ @media (min-width: 1200px) {
61
+ ${props.$xl && `grid-column: span ${props.$xl === 'auto' ? 'auto' : props.$xl};`}
62
+ }
63
+ `}
64
+
65
+ /* Ensure proper box sizing for all grid items */
66
+ box-sizing: border-box;
67
+
68
+ /* Custom CSS */
69
+ ${props => processCss(props.$css, props.theme)}
70
+ `;
71
+ /**
72
+ * A flexible 12-column grid system component for creating responsive layouts.
73
+ *
74
+ * Supports both container and item modes. Container grids create the grid layout,
75
+ * while item grids define how much space each child should occupy.
76
+ * Built on CSS Grid for modern, flexible layouts.
77
+ *
78
+ * @example
79
+ * ```tsx
80
+ * // Basic two-column layout
81
+ * <Grid container spacing="md">
82
+ * <Grid size={6}>Left content</Grid>
83
+ * <Grid size={6}>Right content</Grid>
84
+ * </Grid>
85
+ *
86
+ * // Responsive three-column layout
87
+ * <Grid container spacing="lg">
88
+ * <Grid xs={12} sm={6} md={4}>Card 1</Grid>
89
+ * <Grid xs={12} sm={6} md={4}>Card 2</Grid>
90
+ * <Grid xs={12} sm={12} md={4}>Card 3</Grid>
91
+ * </Grid>
92
+ *
93
+ * // Nested grids
94
+ * <Grid container spacing="md">
95
+ * <Grid size={8}>
96
+ * <Grid container spacing="sm">
97
+ * <Grid size={6}>Nested left</Grid>
98
+ * <Grid size={6}>Nested right</Grid>
99
+ * </Grid>
100
+ * </Grid>
101
+ * <Grid size={4}>Sidebar</Grid>
102
+ * </Grid>
103
+ *
104
+ * // Custom gap
105
+ * <Grid container gap="2rem">
106
+ * <Grid size={4}>Item 1</Grid>
107
+ * <Grid size={4}>Item 2</Grid>
108
+ * <Grid size={4}>Item 3</Grid>
109
+ * </Grid>
110
+ * ```
111
+ */
112
+ const Grid = ({ children, container = false, size, xs, sm, md, lg, xl, spacing = 2, columns = 12, gap, className, testId, css, style, ref, ...htmlProps }) => {
113
+ return (jsx(StyledGrid, { ref: ref, className: className, "$container": container, "$size": size, "$xs": xs, "$sm": sm, "$md": md, "$lg": lg, "$xl": xl, "$spacing": spacing, "$columns": columns, "$gap": gap, "$css": css, "data-testid": testId, style: style, ...htmlProps, children: children }));
114
+ };
115
+ Grid.displayName = 'Grid';
116
+
117
+ export { Grid };
118
+ //# sourceMappingURL=Grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.js","sources":["../../../../../../src/components/layout/Grid/Grid.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useMemo, createContext, useContext } from 'react';
3
+ import styled from '@emotion/styled';
4
+ import { processCss } from '../../../utils/styledUtils.js';
5
+
6
+ const PanelSurfaceContext =
7
+ /*#__PURE__*/ createContext({
8
+ size: 'md',
9
+ });
10
+ const usePanelSurface = () => useContext(PanelSurfaceContext);
11
+ const HEADER_SIZE_MAP = {
12
+ sm: { minHeight: 24, paddingKey: 'sm', fontKey: 'xs' },
13
+ md: { minHeight: 28, paddingKey: 'md', fontKey: 'sm' },
14
+ lg: { minHeight: 32, paddingKey: 'lg', fontKey: 'md' },
15
+ };
16
+ const StyledRoot = styled.div `
17
+ display: flex;
18
+ flex-direction: column;
19
+ width: 100%;
20
+ height: 100%;
21
+ min-width: 0;
22
+ min-height: 0;
23
+ box-sizing: border-box;
24
+ overflow: hidden;
25
+ background: ${({ $background, theme }) => $background ?? theme.colors.background.secondary};
26
+ color: ${({ theme }) => theme.colors.text.primary};
27
+ border: ${({ $bordered, theme }) => $bordered ? `1px solid ${theme.colors.border.default}` : 'none'};
28
+ border-radius: ${({ theme }) => theme.borderRadius.md}px;
29
+
30
+ ${({ $css, theme }) => processCss($css, theme)}
31
+ `;
32
+ const StyledHeader = styled.div `
33
+ display: flex;
34
+ align-items: center;
35
+ justify-content: space-between;
36
+ min-height: ${({ $size }) => HEADER_SIZE_MAP[$size].minHeight}px;
37
+ padding: 0
38
+ ${({ $size, theme }) => theme.spacing[HEADER_SIZE_MAP[$size].paddingKey]}px;
39
+ background: ${({ theme }) => theme.colors.background.secondary};
40
+ color: ${({ theme }) => theme.colors.text.secondary};
41
+ font-size: ${({ $size, theme }) => theme.typography.fontSize[HEADER_SIZE_MAP[$size].fontKey]}px;
42
+ font-weight: ${({ theme }) => theme.typography.fontWeight.medium};
43
+ border-bottom: 1px solid ${({ theme }) => theme.colors.border.default};
44
+ flex-shrink: 0;
45
+ user-select: none;
46
+
47
+ ${({ $css, theme }) => processCss($css, theme)}
48
+ `;
49
+ const StyledHeaderActions = styled.div `
50
+ display: inline-flex;
51
+ align-items: center;
52
+ gap: ${({ theme }) => theme.spacing.xs}px;
53
+ margin-left: ${({ theme }) => theme.spacing.md}px;
54
+ `;
55
+ const StyledBody = styled.div `
56
+ flex: 1 1 auto;
57
+ min-width: 0;
58
+ min-height: 0;
59
+ box-sizing: border-box;
60
+ overflow: ${({ $scroll }) => ($scroll ? 'auto' : 'hidden')};
61
+ padding: ${({ $padding }) => $padding};
62
+
63
+ ${({ $css, theme }) => processCss($css, theme)}
64
+ `;
65
+ const StyledFooter = styled.div `
66
+ display: flex;
67
+ align-items: center;
68
+ min-height: ${({ $size }) => HEADER_SIZE_MAP[$size].minHeight}px;
69
+ padding: 0
70
+ ${({ $size, theme }) => theme.spacing[HEADER_SIZE_MAP[$size].paddingKey]}px;
71
+ border-top: 1px solid ${({ theme }) => theme.colors.border.default};
72
+ background: ${({ theme }) => theme.colors.background.secondary};
73
+ color: ${({ theme }) => theme.colors.text.secondary};
74
+ font-size: ${({ $size, theme }) => theme.typography.fontSize[HEADER_SIZE_MAP[$size].fontKey]}px;
75
+ flex-shrink: 0;
76
+
77
+ ${({ $css, theme }) => processCss($css, theme)}
78
+ `;
79
+ const PanelSurfaceHeader = ({ children, actions, className, style, testId, css, ref, ...rest }) => {
80
+ const { size } = usePanelSurface();
81
+ return (jsxs(StyledHeader, { ref: ref, className: className, style: style, "data-testid": testId, "$size": size, "$css": css, ...rest, children: [jsx("span", { children: children }), actions ? jsx(StyledHeaderActions, { children: actions }) : null] }));
82
+ };
83
+ PanelSurfaceHeader.displayName = 'PanelSurface.Header';
84
+ const PanelSurfaceBody = ({ children, scroll = false, padding = 0, className, style, testId, css, ref, ...rest }) => {
85
+ const resolvedPadding = typeof padding === 'number' ? `${padding}px` : String(padding);
86
+ return (jsx(StyledBody, { ref: ref, className: className, style: style, "data-testid": testId, "$scroll": scroll, "$padding": resolvedPadding, "$css": css, ...rest, children: children }));
87
+ };
88
+ PanelSurfaceBody.displayName = 'PanelSurface.Body';
89
+ const PanelSurfaceFooter = ({ children, className, style, testId, css, ref, ...rest }) => {
90
+ const { size } = usePanelSurface();
91
+ return (jsx(StyledFooter, { ref: ref, className: className, style: style, "data-testid": testId, "$size": size, "$css": css, ...rest, children: children }));
92
+ };
93
+ PanelSurfaceFooter.displayName = 'PanelSurface.Footer';
94
+ const PanelSurfaceRoot = ({ children, size = 'md', bordered = true, background, className, style, testId, css, ref, ...rest }) => {
95
+ const contextValue = useMemo(() => ({ size }), [size]);
96
+ return (jsx(PanelSurfaceContext.Provider, { value: contextValue, children: jsx(StyledRoot, { ref: ref, className: className, style: style, "data-testid": testId, "$bordered": bordered, "$background": background, "$css": css, ...rest, children: children }) }));
97
+ };
98
+ PanelSurfaceRoot.displayName = 'PanelSurface';
99
+ const PanelSurface = /*#__PURE__*/ Object.assign(PanelSurfaceRoot, {
100
+ Header: PanelSurfaceHeader,
101
+ Body: PanelSurfaceBody,
102
+ Footer: PanelSurfaceFooter,
103
+ });
104
+
105
+ export { PanelSurface };
106
+ //# sourceMappingURL=PanelSurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelSurface.js","sources":["../../../../../../src/components/layout/PanelSurface/PanelSurface.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}