@snowcone-app/canvas 0.1.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 (370) hide show
  1. package/LICENSE.txt +70 -0
  2. package/README.md +357 -0
  3. package/dist/CanvasStateV1-D5GzvmnY.cjs +65 -0
  4. package/dist/CanvasStateV1-D5GzvmnY.cjs.map +1 -0
  5. package/dist/CanvasStateV1-ejb4d_LM.js +3692 -0
  6. package/dist/CanvasStateV1-ejb4d_LM.js.map +1 -0
  7. package/dist/ElementFactory-B7UOaJSD.cjs +23865 -0
  8. package/dist/ElementFactory-B7UOaJSD.cjs.map +1 -0
  9. package/dist/ElementFactory-uJTXU-nP.js +29615 -0
  10. package/dist/ElementFactory-uJTXU-nP.js.map +1 -0
  11. package/dist/HybridHistoryManager-BV6XV0nD.js +8048 -0
  12. package/dist/HybridHistoryManager-BV6XV0nD.js.map +1 -0
  13. package/dist/HybridHistoryManager-BXD93pp8.cjs +8 -0
  14. package/dist/HybridHistoryManager-BXD93pp8.cjs.map +1 -0
  15. package/dist/ImportManager-BYwuK6n4.cjs +2 -0
  16. package/dist/ImportManager-BYwuK6n4.cjs.map +1 -0
  17. package/dist/ImportManager-CxiaRg1N.js +222 -0
  18. package/dist/ImportManager-CxiaRg1N.js.map +1 -0
  19. package/dist/ThemeContext-4mJ_y0Me.cjs +2 -0
  20. package/dist/ThemeContext-4mJ_y0Me.cjs.map +1 -0
  21. package/dist/ThemeContext-H0Z-MqqR.js +1077 -0
  22. package/dist/ThemeContext-H0Z-MqqR.js.map +1 -0
  23. package/dist/advanced.d.ts +2 -0
  24. package/dist/advanced.js +48 -0
  25. package/dist/advanced.js.map +1 -0
  26. package/dist/advanced.mjs +15679 -0
  27. package/dist/advanced.mjs.map +1 -0
  28. package/dist/api/advanced.d.ts +110 -0
  29. package/dist/api/internals.d.ts +39 -0
  30. package/dist/api/stable.d.ts +44 -0
  31. package/dist/api/testing.d.ts +25 -0
  32. package/dist/browser-module-D0gHY9rY.cjs +9 -0
  33. package/dist/browser-module-D0gHY9rY.cjs.map +1 -0
  34. package/dist/browser-module-DFvKXBUE.js +15474 -0
  35. package/dist/browser-module-DFvKXBUE.js.map +1 -0
  36. package/dist/components/ArtboardDistressPanel.d.ts +7 -0
  37. package/dist/components/ArtboardImageMaskPanel.d.ts +7 -0
  38. package/dist/components/ArtboardPropertiesToolbar.d.ts +19 -0
  39. package/dist/components/ArtboardToolbar.d.ts +10 -0
  40. package/dist/components/BackButton.d.ts +7 -0
  41. package/dist/components/BackgroundPickerDropdown.d.ts +11 -0
  42. package/dist/components/BackgroundSwitcher.d.ts +7 -0
  43. package/dist/components/CanvasA11yFallback.d.ts +62 -0
  44. package/dist/components/CanvasEditor/CanvasRendererComponent.d.ts +51 -0
  45. package/dist/components/CanvasEditor/handlers/cropModeHandlers.d.ts +114 -0
  46. package/dist/components/CanvasEditor/handlers/groupChildHandlers.d.ts +65 -0
  47. package/dist/components/CanvasEditor/handlers/index.d.ts +10 -0
  48. package/dist/components/CanvasEditor/handlers/multiSelectionHandlers.d.ts +86 -0
  49. package/dist/components/CanvasEditor/hooks/buildSpreadClipShape.d.ts +20 -0
  50. package/dist/components/CanvasEditor/hooks/index.d.ts +24 -0
  51. package/dist/components/CanvasEditor/hooks/useActiveChild.d.ts +23 -0
  52. package/dist/components/CanvasEditor/hooks/useAnimatedFocusRect.d.ts +17 -0
  53. package/dist/components/CanvasEditor/hooks/useCanvasInteraction.d.ts +284 -0
  54. package/dist/components/CanvasEditor/hooks/useCanvasLayout.d.ts +50 -0
  55. package/dist/components/CanvasEditor/hooks/useCanvasRenderLoop.d.ts +140 -0
  56. package/dist/components/CanvasEditor/hooks/useCropMode.d.ts +4 -0
  57. package/dist/components/CanvasEditor/hooks/useHoverState.d.ts +9 -0
  58. package/dist/components/CanvasEditor/hooks/useInteractionState.d.ts +23 -0
  59. package/dist/components/CanvasEditor/hooks/useKeyboardHandlers.d.ts +16 -0
  60. package/dist/components/CanvasEditor/hooks/useMarqueeSelection.d.ts +22 -0
  61. package/dist/components/CanvasEditor/hooks/useMultiSelection.d.ts +5 -0
  62. package/dist/components/CanvasEditor/hooks/usePenTool.d.ts +10 -0
  63. package/dist/components/CanvasEditor/hooks/useRenderState.d.ts +31 -0
  64. package/dist/components/CanvasEditor/hooks/useSnapAndSpacing.d.ts +42 -0
  65. package/dist/components/CanvasEditor/hooks/useTextEditing.d.ts +56 -0
  66. package/dist/components/CanvasEditor/hooks/useTextEditingHandlers.d.ts +75 -0
  67. package/dist/components/CanvasEditor/renderers/hoverRenderer.d.ts +12 -0
  68. package/dist/components/CanvasEditor/renderers/index.d.ts +10 -0
  69. package/dist/components/CanvasEditor/renderers/marqueeRenderer.d.ts +21 -0
  70. package/dist/components/CanvasEditor/renderers/multiSelectionRenderer.d.ts +52 -0
  71. package/dist/components/CanvasEditor/renderers/renderingConstants.d.ts +59 -0
  72. package/dist/components/CanvasEditor/types/index.d.ts +11 -0
  73. package/dist/components/CanvasEditor.d.ts +102 -0
  74. package/dist/components/ColorPickerDropdown.d.ts +29 -0
  75. package/dist/components/CompositingPanel.d.ts +8 -0
  76. package/dist/components/ContextualToolbars.d.ts +150 -0
  77. package/dist/components/CropPanel.d.ts +20 -0
  78. package/dist/components/DistressPanel.d.ts +7 -0
  79. package/dist/components/DocsPage.d.ts +6 -0
  80. package/dist/components/Drawer.d.ts +39 -0
  81. package/dist/components/EffectsPanel.d.ts +14 -0
  82. package/dist/components/ExportTestPanel.d.ts +16 -0
  83. package/dist/components/FontBrowserDrawer.d.ts +20 -0
  84. package/dist/components/FontSizeDropdown.d.ts +12 -0
  85. package/dist/components/GlyphBrowserDrawer.d.ts +13 -0
  86. package/dist/components/GlyphPicker.d.ts +14 -0
  87. package/dist/components/IconMatchTest.d.ts +3 -0
  88. package/dist/components/IconSizeTest.d.ts +3 -0
  89. package/dist/components/ImageBrowserDrawer.d.ts +27 -0
  90. package/dist/components/ImageToolbar.d.ts +47 -0
  91. package/dist/components/LayerEffects.d.ts +11 -0
  92. package/dist/components/LayerLeadingChip.d.ts +9 -0
  93. package/dist/components/LayersPanel.d.ts +30 -0
  94. package/dist/components/MaskItem.d.ts +12 -0
  95. package/dist/components/MasksPanel.d.ts +7 -0
  96. package/dist/components/MonotypeDemoPage.d.ts +2 -0
  97. package/dist/components/MoreMenu.d.ts +15 -0
  98. package/dist/components/OpenTypeFeaturesPanel.d.ts +12 -0
  99. package/dist/components/PathToolbar.d.ts +10 -0
  100. package/dist/components/PenToolDemo.d.ts +3 -0
  101. package/dist/components/ProgressiveBlur.d.ts +25 -0
  102. package/dist/components/RotationHandle.d.ts +47 -0
  103. package/dist/components/SaveLoadMenu.d.ts +15 -0
  104. package/dist/components/ShapeToolbar.d.ts +71 -0
  105. package/dist/components/ShapeTypeDrawer.d.ts +10 -0
  106. package/dist/components/StrokePanel.d.ts +7 -0
  107. package/dist/components/TailwindDemo.d.ts +3 -0
  108. package/dist/components/TextEffectsDropdown.d.ts +14 -0
  109. package/dist/components/TextToolbar.d.ts +47 -0
  110. package/dist/components/TextTypeDrawer.d.ts +8 -0
  111. package/dist/components/ThemeToggle.d.ts +2 -0
  112. package/dist/components/TransformControlPanel.d.ts +12 -0
  113. package/dist/components/VisualGuideOverlay.d.ts +156 -0
  114. package/dist/components/embed/ArtboardTabs.d.ts +74 -0
  115. package/dist/components/embed/Canvas.d.ts +72 -0
  116. package/dist/components/embed/EffectsPanel.d.ts +76 -0
  117. package/dist/components/embed/ErrorBoundary.d.ts +34 -0
  118. package/dist/components/embed/ExportPanel.d.ts +51 -0
  119. package/dist/components/embed/GlyphPanel.d.ts +70 -0
  120. package/dist/components/embed/ImagePanel.d.ts +58 -0
  121. package/dist/components/embed/LayersPanel.d.ts +13 -0
  122. package/dist/components/embed/LoadingStates.d.ts +32 -0
  123. package/dist/components/embed/MenuButton.d.ts +47 -0
  124. package/dist/components/embed/SnowconeCanvas.d.ts +844 -0
  125. package/dist/components/embed/ZoomControls.d.ts +16 -0
  126. package/dist/components/embed/index.d.ts +129 -0
  127. package/dist/components/embed/primitives/index.d.ts +42 -0
  128. package/dist/components/embed/ui/index.d.ts +52 -0
  129. package/dist/components/embed/utils/index.d.ts +31 -0
  130. package/dist/components/embedded/ArtboardEmbed.d.ts +70 -0
  131. package/dist/components/embedded/MerchifyThemeWrapper.d.ts +30 -0
  132. package/dist/components/embedded/ProductPreviewCard.d.ts +8 -0
  133. package/dist/components/embedded/index.d.ts +7 -0
  134. package/dist/components/primitives/ButtonGroup.d.ts +27 -0
  135. package/dist/components/primitives/ControlGroup.d.ts +15 -0
  136. package/dist/components/primitives/Dropdown.d.ts +27 -0
  137. package/dist/components/primitives/DropdownMenu.d.ts +9 -0
  138. package/dist/components/primitives/MenuItem.d.ts +13 -0
  139. package/dist/components/primitives/Panel.d.ts +25 -0
  140. package/dist/components/primitives/SecondaryToolbar.d.ts +9 -0
  141. package/dist/components/primitives/Switch.d.ts +10 -0
  142. package/dist/components/primitives/Toggle.d.ts +17 -0
  143. package/dist/components/primitives/index.d.ts +22 -0
  144. package/dist/components/stories/utils/MockEditorProvider.d.ts +32 -0
  145. package/dist/components/stories/utils/QACanvasCard.d.ts +41 -0
  146. package/dist/components/stories/utils/VisualQACard.d.ts +24 -0
  147. package/dist/components/stories/utils/element-factories.d.ts +188 -0
  148. package/dist/components/stories/utils/spec-to-elements.d.ts +74 -0
  149. package/dist/components/stories/utils/themeDecorator.d.ts +45 -0
  150. package/dist/components/stories/utils/unified-test-cases.d.ts +27 -0
  151. package/dist/components/text-toolbar/BoldButton.d.ts +5 -0
  152. package/dist/components/text-toolbar/FontColorButton.d.ts +6 -0
  153. package/dist/components/text-toolbar/FontSizeGroup.d.ts +5 -0
  154. package/dist/components/text-toolbar/ItalicButton.d.ts +5 -0
  155. package/dist/components/text-toolbar/TextAlignButton.d.ts +5 -0
  156. package/dist/components/text-toolbar/TextMoreMenu.d.ts +7 -0
  157. package/dist/components/text-toolbar/UnderlineButton.d.ts +5 -0
  158. package/dist/components/text-toolbar/UppercaseButton.d.ts +5 -0
  159. package/dist/components/text-toolbar/index.d.ts +25 -0
  160. package/dist/components/toolbars/EmbeddedToolbarLayout.d.ts +49 -0
  161. package/dist/components/toolbars/ExpandedPanelIcon.d.ts +13 -0
  162. package/dist/components/toolbars/FloatingPanels.d.ts +23 -0
  163. package/dist/components/toolbars/GroupElementToolbar.d.ts +35 -0
  164. package/dist/components/toolbars/SecondaryPanels.d.ts +125 -0
  165. package/dist/components/toolbars/index.d.ts +18 -0
  166. package/dist/components/toolbars/shared/ColorPanelWrapper.d.ts +9 -0
  167. package/dist/components/toolbars/shared/SecondaryPanelWrapper.d.ts +9 -0
  168. package/dist/components/ui/PresetCarousel.d.ts +21 -0
  169. package/dist/components/ui/SecondaryPanel.d.ts +28 -0
  170. package/dist/components/ui/SliderRow.d.ts +30 -0
  171. package/dist/components/ui/collapsed-toolbar-header.d.ts +14 -0
  172. package/dist/components/ui/custom-icons.d.ts +25 -0
  173. package/dist/components/ui/icons.d.ts +100 -0
  174. package/dist/components/ui/index.d.ts +48 -0
  175. package/dist/components/ui/normalized-icon.d.ts +63 -0
  176. package/dist/components/ui/toolbar-button.d.ts +24 -0
  177. package/dist/compose-Bo108juW.cjs +33 -0
  178. package/dist/compose-Bo108juW.cjs.map +1 -0
  179. package/dist/compose-DQ1FZS3O.js +7690 -0
  180. package/dist/compose-DQ1FZS3O.js.map +1 -0
  181. package/dist/constants.d.ts +121 -0
  182. package/dist/contexts/CommandContext.d.ts +87 -0
  183. package/dist/contexts/EditorContext.d.ts +190 -0
  184. package/dist/contexts/ElementsContext.d.ts +104 -0
  185. package/dist/contexts/HistoryContext.d.ts +60 -0
  186. package/dist/contexts/KitContext.d.ts +50 -0
  187. package/dist/contexts/SelectionContext.d.ts +51 -0
  188. package/dist/contexts/ThemeContext.d.ts +55 -0
  189. package/dist/contexts/ToolStateContext.d.ts +60 -0
  190. package/dist/contexts/ViewportContext.d.ts +87 -0
  191. package/dist/core/AlignmentSnapSystem.d.ts +270 -0
  192. package/dist/core/ArtboardElement.d.ts +106 -0
  193. package/dist/core/ArtboardManager.d.ts +130 -0
  194. package/dist/core/ArtboardRenderer.d.ts +97 -0
  195. package/dist/core/BaseElement.d.ts +94 -0
  196. package/dist/core/CanvasRenderer.d.ts +237 -0
  197. package/dist/core/CommandHistory.d.ts +173 -0
  198. package/dist/core/CoordinateTransform.d.ts +69 -0
  199. package/dist/core/CropModeController.d.ts +90 -0
  200. package/dist/core/EditModeRenderer.d.ts +51 -0
  201. package/dist/core/ElementFactory.d.ts +73 -0
  202. package/dist/core/ElementStore.d.ts +69 -0
  203. package/dist/core/EventBus.d.ts +163 -0
  204. package/dist/core/GeometryUtils.d.ts +247 -0
  205. package/dist/core/GroupElement.d.ts +134 -0
  206. package/dist/core/HoverRenderer.d.ts +103 -0
  207. package/dist/core/HybridHistoryManager.d.ts +137 -0
  208. package/dist/core/ImageCache.d.ts +63 -0
  209. package/dist/core/ImageElement.d.ts +226 -0
  210. package/dist/core/ImageLoadEvents.d.ts +23 -0
  211. package/dist/core/InteractionFeedbackRenderer.d.ts +15 -0
  212. package/dist/core/InteractionStateMachine.d.ts +199 -0
  213. package/dist/core/PathElement.d.ts +84 -0
  214. package/dist/core/PenToolManager.d.ts +112 -0
  215. package/dist/core/PinchHandler.d.ts +32 -0
  216. package/dist/core/ResizeHandler.d.ts +51 -0
  217. package/dist/core/ResizePipeline.d.ts +83 -0
  218. package/dist/core/ResizeUtils.d.ts +17 -0
  219. package/dist/core/RotationAnchorResolver.d.ts +60 -0
  220. package/dist/core/RotationUtils.d.ts +28 -0
  221. package/dist/core/SelectionRenderer.d.ts +24 -0
  222. package/dist/core/ShapeElement.d.ts +121 -0
  223. package/dist/core/SpacingSystem.d.ts +73 -0
  224. package/dist/core/SpatialGrid.d.ts +53 -0
  225. package/dist/core/TextElement.d.ts +80 -0
  226. package/dist/core/TextMetrics.d.ts +117 -0
  227. package/dist/core/Transform.d.ts +158 -0
  228. package/dist/core/TransformConverter.d.ts +16 -0
  229. package/dist/core/TransformHandles.d.ts +55 -0
  230. package/dist/core/artboardReducer.d.ts +46 -0
  231. package/dist/effects/DistressGenerator.d.ts +26 -0
  232. package/dist/effects/DistressTextureCache.d.ts +49 -0
  233. package/dist/effects/distress-presets.d.ts +86 -0
  234. package/dist/effects/distress-textures.d.ts +34 -0
  235. package/dist/effects/distress-utils.d.ts +39 -0
  236. package/dist/effects/mask-presets.d.ts +36 -0
  237. package/dist/fonts/google-fonts.d.ts +48 -0
  238. package/dist/google-fonts.json +1 -0
  239. package/dist/hooks/index.d.ts +42 -0
  240. package/dist/hooks/useArtboards.d.ts +71 -0
  241. package/dist/hooks/useAutoExport.d.ts +66 -0
  242. package/dist/hooks/useBreakpoint.d.ts +53 -0
  243. package/dist/hooks/useCanvasEvents.d.ts +8 -0
  244. package/dist/hooks/useCanvasReady.d.ts +22 -0
  245. package/dist/hooks/useClickOutside.d.ts +3 -0
  246. package/dist/hooks/useCommandHistory.d.ts +39 -0
  247. package/dist/hooks/useCommands.d.ts +47 -0
  248. package/dist/hooks/useContentReady.d.ts +18 -0
  249. package/dist/hooks/useElementById.d.ts +20 -0
  250. package/dist/hooks/useElementByName.d.ts +10 -0
  251. package/dist/hooks/useElementProperties.d.ts +29 -0
  252. package/dist/hooks/useExport.d.ts +89 -0
  253. package/dist/hooks/useImageBinding.d.ts +34 -0
  254. package/dist/hooks/useKeyboardShortcuts.d.ts +13 -0
  255. package/dist/hooks/useLayerDndKit.d.ts +24 -0
  256. package/dist/hooks/useLayerDragDrop.d.ts +58 -0
  257. package/dist/hooks/useLayerPreview.d.ts +31 -0
  258. package/dist/hooks/useLayerSelection.d.ts +76 -0
  259. package/dist/hooks/useLayers.d.ts +91 -0
  260. package/dist/hooks/usePerformance.d.ts +48 -0
  261. package/dist/hooks/useProjectLoader.d.ts +64 -0
  262. package/dist/hooks/useSelectedElement.d.ts +17 -0
  263. package/dist/hooks/useTextBinding.d.ts +26 -0
  264. package/dist/hooks/useTextToolbar.d.ts +61 -0
  265. package/dist/hooks/useViewport.d.ts +46 -0
  266. package/dist/icons/icon-data.d.ts +2 -0
  267. package/dist/icons/registry.d.ts +28 -0
  268. package/dist/index.d.ts +6 -0
  269. package/dist/index.js +2 -0
  270. package/dist/index.js.map +1 -0
  271. package/dist/index.mjs +1138 -0
  272. package/dist/index.mjs.map +1 -0
  273. package/dist/internals.d.ts +2 -0
  274. package/dist/internals.js +2 -0
  275. package/dist/internals.js.map +1 -0
  276. package/dist/internals.mjs +219 -0
  277. package/dist/internals.mjs.map +1 -0
  278. package/dist/kits/compose.d.ts +69 -0
  279. package/dist/kits/index.d.ts +21 -0
  280. package/dist/kits/presets.d.ts +40 -0
  281. package/dist/kits/registry.d.ts +33 -0
  282. package/dist/kits/sections.d.ts +119 -0
  283. package/dist/kits/serialization.d.ts +78 -0
  284. package/dist/kits/types.d.ts +129 -0
  285. package/dist/kits/validation.d.ts +36 -0
  286. package/dist/lib/utils.d.ts +2 -0
  287. package/dist/plugins/ElementTypePlugin.d.ts +90 -0
  288. package/dist/presets/artboard-color-presets.d.ts +22 -0
  289. package/dist/presets/tshirt-presets.d.ts +60 -0
  290. package/dist/rendering/CompositingRenderer.d.ts +33 -0
  291. package/dist/rendering/DistressTextureRenderer.d.ts +39 -0
  292. package/dist/rendering/ElementRenderUtils.d.ts +17 -0
  293. package/dist/rendering/MaskRenderer.d.ts +41 -0
  294. package/dist/rendering/PieceGuideRenderer.d.ts +177 -0
  295. package/dist/rendering/StrokeRenderer.d.ts +24 -0
  296. package/dist/rendering/canvas-renderer.d.ts +18 -0
  297. package/dist/rendering/element-serializer.d.ts +143 -0
  298. package/dist/rendering/image-renderer.d.ts +6 -0
  299. package/dist/rendering/knockout-utils.d.ts +48 -0
  300. package/dist/rendering/mask-utils.d.ts +65 -0
  301. package/dist/rendering/renderer-types.d.ts +79 -0
  302. package/dist/rendering/rich-text-renderer.d.ts +43 -0
  303. package/dist/rendering/serialize-for-server.d.ts +45 -0
  304. package/dist/rendering/shape-renderer.d.ts +6 -0
  305. package/dist/rendering/stroke-utils.d.ts +18 -0
  306. package/dist/rendering/text-renderer.d.ts +71 -0
  307. package/dist/rendering/transform-renderer.d.ts +33 -0
  308. package/dist/services/AutoExportManager.d.ts +107 -0
  309. package/dist/services/falApi.d.ts +63 -0
  310. package/dist/services/nounProjectApi.d.ts +90 -0
  311. package/dist/services/recraftApi.d.ts +65 -0
  312. package/dist/services/runwareApi.d.ts +69 -0
  313. package/dist/state/CanvasStateV1.d.ts +373 -0
  314. package/dist/state/index.d.ts +10 -0
  315. package/dist/style.css +1 -0
  316. package/dist/taco-reference-cropped.jpg +0 -0
  317. package/dist/testing/MockEditorProvider.d.ts +49 -0
  318. package/dist/testing/index.d.ts +25 -0
  319. package/dist/testing/utils.d.ts +128 -0
  320. package/dist/testing.d.ts +2 -0
  321. package/dist/testing.js +2 -0
  322. package/dist/testing.js.map +1 -0
  323. package/dist/testing.mjs +140 -0
  324. package/dist/testing.mjs.map +1 -0
  325. package/dist/textures/glass-frame.svg +32 -0
  326. package/dist/theme.d.ts +99 -0
  327. package/dist/themes/index.d.ts +23 -0
  328. package/dist/transforms/ArchTransform.d.ts +14 -0
  329. package/dist/transforms/AscendTransform.d.ts +14 -0
  330. package/dist/transforms/CircleTransform.d.ts +51 -0
  331. package/dist/transforms/CustomTransform.d.ts +81 -0
  332. package/dist/transforms/FlagTransform.d.ts +14 -0
  333. package/dist/transforms/LeanTransform.d.ts +14 -0
  334. package/dist/transforms/WaveTransform.d.ts +16 -0
  335. package/dist/transforms/defaults.d.ts +33 -0
  336. package/dist/transforms/index.d.ts +10 -0
  337. package/dist/transforms/registry.d.ts +51 -0
  338. package/dist/types/capabilities.d.ts +50 -0
  339. package/dist/types/guards.d.ts +31 -0
  340. package/dist/types/index.d.ts +765 -0
  341. package/dist/types/public.d.ts +31 -0
  342. package/dist/types/react.d.ts +132 -0
  343. package/dist/utils/ArtworkPlacement.d.ts +97 -0
  344. package/dist/utils/ElementPreviewRenderer.d.ts +19 -0
  345. package/dist/utils/ExportManager.d.ts +208 -0
  346. package/dist/utils/FontAnalyzer.d.ts +137 -0
  347. package/dist/utils/GlyphRenderer.d.ts +55 -0
  348. package/dist/utils/GoogleFontsService.d.ts +37 -0
  349. package/dist/utils/ImageLoader.d.ts +124 -0
  350. package/dist/utils/ImportManager.d.ts +72 -0
  351. package/dist/utils/MonotypeCategoryMapping.d.ts +36 -0
  352. package/dist/utils/MonotypeService.d.ts +148 -0
  353. package/dist/utils/PerformanceMonitor.d.ts +54 -0
  354. package/dist/utils/TextureManager.d.ts +60 -0
  355. package/dist/utils/UnifiedFontService.d.ts +117 -0
  356. package/dist/utils/WorkerExportManager.d.ts +185 -0
  357. package/dist/utils/clickProtection.d.ts +39 -0
  358. package/dist/utils/cn.d.ts +4 -0
  359. package/dist/utils/colorConversion.d.ts +101 -0
  360. package/dist/utils/documentColors.d.ts +108 -0
  361. package/dist/utils/featureApplied.d.ts +14 -0
  362. package/dist/utils/google-fonts-loader.d.ts +67 -0
  363. package/dist/utils/logger.d.ts +66 -0
  364. package/dist/utils/selectionPreservation.d.ts +42 -0
  365. package/dist/utils/textCursorUtils.d.ts +39 -0
  366. package/dist/utils/textUtils.d.ts +11 -0
  367. package/dist/workers/export-protocol.d.ts +119 -0
  368. package/dist/workers/export-worker.bundle.string.d.ts +2 -0
  369. package/dist/workers/export-worker.d.ts +5 -0
  370. package/package.json +201 -0
@@ -0,0 +1,16 @@
1
+ import { default as React } from 'react';
2
+ export interface ZoomControlsProps {
3
+ /** CSS class name for the container */
4
+ className?: string;
5
+ /** Position of the controls */
6
+ position?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';
7
+ /** Whether to show the fit-to-screen button */
8
+ showFitButton?: boolean;
9
+ /** Whether to show the reset button */
10
+ showResetButton?: boolean;
11
+ }
12
+ /**
13
+ * Floating zoom controls for interactive canvas mode
14
+ */
15
+ export declare const ZoomControls: React.FC<ZoomControlsProps>;
16
+ export default ZoomControls;
@@ -0,0 +1,129 @@
1
+ /**
2
+ * @snowcone-app/canvas - Composable canvas editor for merchandise design
3
+ *
4
+ * Provides a full-featured canvas editor with text transforms, image manipulation,
5
+ * layer effects, multi-artboard workflow, and Web Worker export. Designed for
6
+ * embedding in e-commerce apps (Shopify, Next.js, etc.).
7
+ *
8
+ * @example Basic usage
9
+ * ```tsx
10
+ * import { SnowconeCanvas } from '@snowcone-app/canvas';
11
+ * import '@snowcone-app/canvas/style.css';
12
+ *
13
+ * function App() {
14
+ * return <SnowconeCanvas width={800} height={800} />;
15
+ * }
16
+ * ```
17
+ *
18
+ * @example Composable layout with hooks
19
+ * ```tsx
20
+ * import {
21
+ * EditorProvider,
22
+ * Canvas,
23
+ * useEditor,
24
+ * useArtboards,
25
+ * useLayers,
26
+ * useExport,
27
+ * LayersPanel,
28
+ * ArtboardTabs,
29
+ * } from '@snowcone-app/canvas';
30
+ * import '@snowcone-app/canvas/style.css';
31
+ *
32
+ * function CustomEditor() {
33
+ * return (
34
+ * <EditorProvider>
35
+ * <ArtboardTabs />
36
+ * <Canvas style={{ width: '100%' }} />
37
+ * <LayersPanel />
38
+ * </EditorProvider>
39
+ * );
40
+ * }
41
+ * ```
42
+ *
43
+ * @packageDocumentation
44
+ */
45
+ export { SnowconeCanvas, SnowconeCanvas as default } from './SnowconeCanvas.js';
46
+ export type { SnowconeCanvasProps, ArtboardConfig, CanvasState, ClipShape, AlignmentPoint, ExportStatusEvent } from './SnowconeCanvas.js';
47
+ export { EditorProvider, useEditor } from '../../contexts/EditorContext.js';
48
+ export type { EditorContextValue, EditorProviderProps, EditorElement, PanOffset, ExpandedPanelType } from '../../contexts/EditorContext.js';
49
+ export { useViewportContext } from '../../contexts/ViewportContext.js';
50
+ export type { ViewportContextValue, ViewportProviderProps } from '../../contexts/ViewportContext.js';
51
+ export { useSelectionContext } from '../../contexts/SelectionContext.js';
52
+ export type { SelectionContextValue, SelectionProviderProps } from '../../contexts/SelectionContext.js';
53
+ export { useHistoryContext } from '../../contexts/HistoryContext.js';
54
+ export type { HistoryContextValue, HistoryProviderProps } from '../../contexts/HistoryContext.js';
55
+ export { useToolStateContext } from '../../contexts/ToolStateContext.js';
56
+ export type { ToolStateContextValue, ToolStateProviderProps } from '../../contexts/ToolStateContext.js';
57
+ export { ElementStore } from '../../core/ElementStore.js';
58
+ export type { StoreElement } from '../../core/ElementStore.js';
59
+ export { ThemeProvider, useTheme } from '../../contexts/ThemeContext.js';
60
+ export type { Theme } from '../../contexts/ThemeContext.js';
61
+ export { COMPACT_CUSTOMIZER, PRO_STUDIO, EMBED_ONLY, KIT_PRESETS, resolveKit, extendKit, createKit, validateKit, registerSection, getSection, getSectionIds, unregisterSection, registerBuiltinSections, registerBuiltinSectionsSync, serializeKit, loadKitFromJSON, } from '../../kits/index.js';
62
+ export type { KitDefinition, KitPresetId, RuntimeTheme, KitValidationResult, SectionConfig, KitJSON } from '../../kits/index.js';
63
+ export { KitProvider, useKit, useCapabilities } from '../../contexts/KitContext.js';
64
+ export type { KitContextValue, KitProviderProps } from '../../contexts/KitContext.js';
65
+ export { ALL_CAPABILITIES, MINIMAL_CAPABILITIES } from '../../types/capabilities.js';
66
+ export type { EditorCapabilities, ElementType, EffectType, PanelType, ToolType } from '../../types/capabilities.js';
67
+ export * from '../../types/public.js';
68
+ export { Canvas } from './Canvas.js';
69
+ export type { CanvasProps } from './Canvas.js';
70
+ export { MenuButton } from './MenuButton.js';
71
+ export type { MenuButtonProps } from './MenuButton.js';
72
+ export { ContextualToolbars } from '../ContextualToolbars.js';
73
+ export type { ContextualToolbarsProps } from '../ContextualToolbars.js';
74
+ export { CropPanel } from '../CropPanel.js';
75
+ export type { CropPanelProps } from '../CropPanel.js';
76
+ export { LayersPanel } from './LayersPanel.js';
77
+ export type { LayersPanelProps } from './LayersPanel.js';
78
+ export { ArtboardTabs } from './ArtboardTabs.js';
79
+ export type { ArtboardTabsProps } from './ArtboardTabs.js';
80
+ export { ExportPanel } from './ExportPanel.js';
81
+ export type { ExportPanelProps } from './ExportPanel.js';
82
+ export { ImagePanel } from './ImagePanel.js';
83
+ export type { ImagePanelProps } from './ImagePanel.js';
84
+ export { EffectsPanel } from './EffectsPanel.js';
85
+ export type { EffectsPanelProps } from './EffectsPanel.js';
86
+ export { GlyphPanel } from './GlyphPanel.js';
87
+ export type { GlyphPanelProps } from './GlyphPanel.js';
88
+ export { ZoomControls } from './ZoomControls.js';
89
+ export type { ZoomControlsProps } from './ZoomControls.js';
90
+ export * from './primitives/index.js';
91
+ export * from './ui/index.js';
92
+ export { useTextToolbar } from '../../hooks/useTextToolbar.js';
93
+ export type { UseTextToolbarOptions, UseTextToolbarReturn } from '../../hooks/useTextToolbar.js';
94
+ export { TextToolbar } from '../TextToolbar.js';
95
+ export type { TextToolbarProps } from '../TextToolbar.js';
96
+ export * from '../text-toolbar/index.js';
97
+ export { useArtboards } from '../../hooks/useArtboards.js';
98
+ export type { ArtboardInfo, UseArtboardsReturn } from '../../hooks/useArtboards.js';
99
+ export { useLayers } from '../../hooks/useLayers.js';
100
+ export type { LayerInfo, UseLayersOptions, UseLayersReturn } from '../../hooks/useLayers.js';
101
+ export { useExport } from '../../hooks/useExport.js';
102
+ export type { ExportProgress, ContinuousExportOptions, UseExportReturn } from '../../hooks/useExport.js';
103
+ export { useAutoExport } from '../../hooks/useAutoExport.js';
104
+ export type { UseAutoExportOptions, UseAutoExportReturn } from '../../hooks/useAutoExport.js';
105
+ export { AutoExportManager, DEFAULT_AUTO_EXPORT_CONFIG } from '../../services/AutoExportManager.js';
106
+ export type { AutoExportConfig, AutoExportStats } from '../../services/AutoExportManager.js';
107
+ export { useProjectLoader } from '../../hooks/useProjectLoader.js';
108
+ export type { ProjectTemplate, ProjectMetadata, UseProjectLoaderReturn } from '../../hooks/useProjectLoader.js';
109
+ export { useCommands } from '../../hooks/useCommands.js';
110
+ export type { UseCommandsReturn } from '../../hooks/useCommands.js';
111
+ export { useBreakpoint } from '../../hooks/useBreakpoint.js';
112
+ export type { BreakpointConfig, Breakpoint, UseBreakpointReturn } from '../../hooks/useBreakpoint.js';
113
+ export { usePerformance } from '../../hooks/usePerformance.js';
114
+ export type { PerformanceMetrics, UsePerformanceReturn } from '../../hooks/usePerformance.js';
115
+ export { useSelectedElement } from '../../hooks/useSelectedElement.js';
116
+ export { useElementById } from '../../hooks/useElementById.js';
117
+ export { useCanvasReady } from '../../hooks/useCanvasReady.js';
118
+ export { useViewport } from '../../hooks/useViewport.js';
119
+ export type { UseViewportReturn } from '../../hooks/useViewport.js';
120
+ export * as testing from '../../testing/index.js';
121
+ export { ErrorBoundary } from './ErrorBoundary.js';
122
+ export type { ErrorBoundaryProps } from './ErrorBoundary.js';
123
+ export { CanvasSkeleton, LayersPanelSkeleton, ToolbarSkeleton, Spinner } from './LoadingStates.js';
124
+ export type { CanvasSkeletonProps, LayersPanelSkeletonProps, ToolbarSkeletonProps } from './LoadingStates.js';
125
+ export * as utils from './utils/index.js';
126
+ export { shouldPreserveSelection, preserveSelectionProps, PRESERVE_SELECTION_ATTR, } from '../../utils/selectionPreservation.js';
127
+ export { clearImageBitmapCache, removeFromImageBitmapCache, clearRegisteredBitmapKeys, unregisterElementBitmaps, DEFAULT_MAX_BITMAP_DIMENSION, } from '../../rendering/element-serializer.js';
128
+ export { WorkerExportManager, getSharedWorkerExportManager, terminateSharedWorkerExportManager, } from '../../utils/WorkerExportManager.js';
129
+ export type { WorkerExportResult, WorkerBlobExportResult } from '../../utils/WorkerExportManager.js';
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Primitive Components - Low-level reusable UI components
3
+ * These are the foundational components for building custom UIs
4
+ *
5
+ * Use these to build custom toolbars, panels, and controls that match
6
+ * the design system used internally by Snowcone Canvas.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * import { Button, Slider } from '../ui';
11
+ * import { Dropdown } from '@snowcone-app/canvas/embed';
12
+ *
13
+ * function CustomToolbar() {
14
+ * return (
15
+ * <div>
16
+ * <Button onClick={handleAdd}>Add Text</Button>
17
+ * <Slider min={0} max={100} value={[50]} onValueChange={handleChange} />
18
+ * </div>
19
+ * );
20
+ * }
21
+ * ```
22
+ */
23
+ export { default as Dropdown } from '../../primitives/Dropdown';
24
+ export type { DropdownProps } from '../../primitives/Dropdown';
25
+ export { default as DropdownMenu } from '../../primitives/DropdownMenu';
26
+ export type { DropdownMenuProps } from '../../primitives/DropdownMenu';
27
+ export { default as MenuItem } from '../../primitives/MenuItem';
28
+ export type { MenuItemProps } from '../../primitives/MenuItem';
29
+ export { default as Panel } from '../../primitives/Panel';
30
+ export type { PanelProps } from '../../primitives/Panel';
31
+ export { default as Toggle } from '../../primitives/Toggle';
32
+ export type { ToggleProps } from '../../primitives/Toggle';
33
+ export { default as Switch } from '../../primitives/Switch';
34
+ export type { SwitchProps } from '../../primitives/Switch';
35
+ export { default as ButtonGroup } from '../../primitives/ButtonGroup';
36
+ export type { ButtonGroupProps, ButtonGroupOption } from '../../primitives/ButtonGroup';
37
+ export { default as ControlGroup } from '../../primitives/ControlGroup';
38
+ export type { ControlGroupProps } from '../../primitives/ControlGroup';
39
+ export { default as SecondaryToolbar } from '../../primitives/SecondaryToolbar';
40
+ export type { SecondaryToolbarProps } from '../../primitives/SecondaryToolbar';
41
+ export { Surface, useSurface, surfaceVariants } from '../../ui';
42
+ export type { SurfaceProps } from '../../ui';
@@ -0,0 +1,52 @@
1
+ /**
2
+ * UI Components - Specialized components for design editor features
3
+ * These are higher-level components built on primitives, providing
4
+ * common design editor functionality like font selection, color picking, etc.
5
+ *
6
+ * Use these to quickly build custom toolbars without reinventing the wheel.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * import { FontFamilyDropdown, ColorPickerDropdown } from '@snowcone-app/canvas/embed';
11
+ * import { useEditor } from '@snowcone-app/canvas/embed';
12
+ *
13
+ * function CustomTextToolbar() {
14
+ * const { selectedElement, handleElementUpdate } = useEditor();
15
+ *
16
+ * return (
17
+ * <div>
18
+ * <FontFamilyDropdown
19
+ * value={selectedElement?.fontFamily}
20
+ * onChange={(font) => {
21
+ * const updated = selectedElement.clone();
22
+ * updated.fontFamily = font;
23
+ * handleElementUpdate(updated);
24
+ * }}
25
+ * />
26
+ * <ColorPickerDropdown
27
+ * value={selectedElement?.fontColor}
28
+ * onChange={(color) => {
29
+ * const updated = selectedElement.clone();
30
+ * updated.fontColor = color;
31
+ * handleElementUpdate(updated);
32
+ * }}
33
+ * />
34
+ * </div>
35
+ * );
36
+ * }
37
+ * ```
38
+ */
39
+ export { default as FontBrowserDrawer } from '../../FontBrowserDrawer';
40
+ export type { FontBrowserDrawerProps } from '../../FontBrowserDrawer';
41
+ export { default as FontSizeDropdown } from '../../FontSizeDropdown';
42
+ export type { FontSizeDropdownProps } from '../../FontSizeDropdown';
43
+ export { default as ColorPickerDropdown } from '../../ColorPickerDropdown';
44
+ export type { ColorPickerDropdownProps } from '../../ColorPickerDropdown';
45
+ export { default as BackgroundPickerDropdown } from '../../BackgroundPickerDropdown';
46
+ export type { BackgroundPickerDropdownProps } from '../../BackgroundPickerDropdown';
47
+ export { default as TransformControlPanel } from '../../TransformControlPanel';
48
+ export { default as ImageToolbar } from '../../ImageToolbar';
49
+ export { default as ShapeToolbar } from '../../ShapeToolbar';
50
+ export { default as PathToolbar } from '../../PathToolbar';
51
+ export { default as ArtboardPropertiesToolbar } from '../../ArtboardPropertiesToolbar';
52
+ export { default as MoreMenu } from '../../MoreMenu';
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Core Utilities - Advanced utilities for extending functionality
3
+ * These are internal utilities exposed for advanced use cases
4
+ *
5
+ * @example
6
+ * ```tsx
7
+ * import { utils } from '@snowcone-app/canvas/embed';
8
+ *
9
+ * // Custom export with watermark
10
+ * async function exportWithWatermark(artboard, elements) {
11
+ * const dataUrl = await utils.ExportManager.exportArtboardToImage(
12
+ * artboard,
13
+ * elements,
14
+ * canvas,
15
+ * { scale: 3 }
16
+ * );
17
+ *
18
+ * // Add watermark to dataUrl
19
+ * return addWatermark(dataUrl);
20
+ * }
21
+ * ```
22
+ */
23
+ export { ExportManager } from '../../../utils/ExportManager';
24
+ export { WorkerExportManager } from '../../../utils/WorkerExportManager';
25
+ export { ImportManager } from '../../../utils/ImportManager';
26
+ export { generateElementPreview } from '../../../utils/ElementPreviewRenderer';
27
+ export { FontAnalyzer } from '../../../utils/FontAnalyzer';
28
+ export { fetchAllGoogleFonts, getAllGoogleFonts, isFontsLoaded, searchGoogleFonts, filterGoogleFontsByCategory, mapGoogleCategory } from '../../../utils/GoogleFontsService';
29
+ export type { GoogleFontMetadata } from '../../../utils/GoogleFontsService';
30
+ export { TextureManager } from '../../../utils/TextureManager';
31
+ export { buildFontFeatureSettings, applyOpenTypeFeaturestoContext, renderTextWithOpenTypeFeatures, renderTextWithOpenTypeFeaturesSync, renderTextWithGlyphOverrides, renderTextWithGlyphOverridesSync, measureTextWithGlyphOverrides } from '../../../utils/GlyphRenderer';
@@ -0,0 +1,70 @@
1
+ import { default as React } from 'react';
2
+ import { TextElement } from '../../core/TextElement.js';
3
+ import { ImageElement } from '../../core/ImageElement.js';
4
+ import { GroupElement } from '../../core/GroupElement.js';
5
+ import { ShapeElement } from '../../core/ShapeElement.js';
6
+ import { PathElement } from '../../core/PathElement.js';
7
+ import { ArtboardElement } from '../../core/ArtboardElement.js';
8
+ import { ArtboardManager } from '../../core/ArtboardManager.js';
9
+ /** Union type for all canvas element types */
10
+ type CanvasElement = TextElement | ImageElement | GroupElement | ShapeElement | PathElement;
11
+ export interface ArtboardEmbedProps {
12
+ /** Elements to render */
13
+ elements: CanvasElement[];
14
+ /** Artboards in the canvas */
15
+ artboards: ArtboardElement[];
16
+ /** Artboard manager instance */
17
+ artboardManager: ArtboardManager;
18
+ /** Selected element ID */
19
+ selectedId: string | null;
20
+ /** Multi-selection IDs */
21
+ multiSelection: string[];
22
+ /** Callback when element is updated */
23
+ onElementUpdate: (element: CanvasElement) => void;
24
+ /** Set elements state */
25
+ setElements: React.Dispatch<React.SetStateAction<CanvasElement[]>>;
26
+ /** Execute element update command */
27
+ executeElementUpdate: (oldElement: CanvasElement | undefined, newElement: CanvasElement) => void;
28
+ /** Callback when selection changes */
29
+ onSelectionChange: (id: string | null) => void;
30
+ /** Callback when multi-selection changes */
31
+ onMultiSelectionChange: (ids: string[]) => void;
32
+ /** Callback when active child changes */
33
+ onActiveChildChange?: (child: CanvasElement | null) => void;
34
+ /** Callback when text selection changes */
35
+ onTextSelectionChange?: () => void;
36
+ /** Callback when hover state changes */
37
+ onHoverChange?: (elementId: string | null) => void;
38
+ /** Callback when rotation state changes */
39
+ onRotationStateChange?: (isRotating: boolean) => void;
40
+ /** Callback when entering crop mode on an image element */
41
+ onCropModeEnter?: () => void;
42
+ /** Whether to hide interaction handles */
43
+ hideHandles?: boolean;
44
+ /** Container class name for styling */
45
+ className?: string;
46
+ /** Container style */
47
+ style?: React.CSSProperties;
48
+ }
49
+ /**
50
+ * ArtboardEmbed - Fit-to-container embedded editor
51
+ *
52
+ * Automatically calculates zoom to fit the artboard exactly in the container
53
+ * with NO gray margins visible.
54
+ *
55
+ * Example:
56
+ * ```tsx
57
+ * <div style={{ width: '400px', height: '400px' }}>
58
+ * <ArtboardEmbed
59
+ * elements={elements}
60
+ * artboards={artboards}
61
+ * artboardManager={artboardManager}
62
+ * selectedId={selectedId}
63
+ * onSelectionChange={setSelectedId}
64
+ * // ... other props
65
+ * />
66
+ * </div>
67
+ * ```
68
+ */
69
+ export declare const ArtboardEmbed: React.FC<ArtboardEmbedProps>;
70
+ export {};
@@ -0,0 +1,30 @@
1
+ import { default as React } from 'react';
2
+ export type SnowconeThemeColor = 'default' | 'axis' | 'indigo' | 'ocean' | 'sunset' | 'lime';
3
+ export type SnowconeThemeMode = 'light' | 'dark' | 'system';
4
+ interface SnowconeThemeWrapperProps {
5
+ /**
6
+ * The accent color theme to apply.
7
+ * @default 'default'
8
+ */
9
+ color?: SnowconeThemeColor;
10
+ /**
11
+ * The mode to apply (light, dark, or system).
12
+ * If 'system', it will respect the user's OS preference.
13
+ * @default 'system'
14
+ */
15
+ mode?: SnowconeThemeMode;
16
+ /**
17
+ * The content to be themed (usually the EditorProvider and Canvas).
18
+ */
19
+ children: React.ReactNode;
20
+ /**
21
+ * Optional class name for the wrapper div.
22
+ */
23
+ className?: string;
24
+ /**
25
+ * Optional style overrides.
26
+ */
27
+ style?: React.CSSProperties;
28
+ }
29
+ export declare const SnowconeThemeWrapper: React.FC<SnowconeThemeWrapperProps>;
30
+ export {};
@@ -0,0 +1,8 @@
1
+ import { default as React } from 'react';
2
+ export type ThemeName = 'default' | 'indigo' | 'ocean' | 'sunset';
3
+ export type ThemeMode = 'light' | 'dark' | 'system';
4
+ export type ThemeVariant = 'default-light' | 'default-dark' | 'indigo-light' | 'indigo-dark' | 'ocean-light' | 'ocean-dark' | 'sunset-light' | 'sunset-dark';
5
+ export interface ProductPreviewCardProps {
6
+ initialTheme?: ThemeVariant;
7
+ }
8
+ export declare const ProductPreviewCard: React.FC<ProductPreviewCardProps>;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Embedded Components - Composable artboard views for various layouts
3
+ *
4
+ * - ArtboardEmbed: Fit-to-container interactive editor (no gray margins)
5
+ * - More variants coming soon (read-only viewer, compact editor, etc.)
6
+ */
7
+ export { ArtboardEmbed, type ArtboardEmbedProps } from './ArtboardEmbed.js';
@@ -0,0 +1,27 @@
1
+ import { default as React } from 'react';
2
+ export interface ButtonGroupOption<T = string> {
3
+ /** Option value */
4
+ value: T;
5
+ /** Display label */
6
+ label: string;
7
+ /** Optional icon */
8
+ icon?: React.ReactNode;
9
+ /** Optional tooltip */
10
+ tooltip?: string;
11
+ /** Disabled state */
12
+ disabled?: boolean;
13
+ }
14
+ export interface ButtonGroupProps<T = string> {
15
+ /** Available options */
16
+ options: ButtonGroupOption<T>[];
17
+ /** Current value */
18
+ value: T;
19
+ /** Callback when value changes */
20
+ onChange: (value: T) => void;
21
+ /** Full width buttons */
22
+ fullWidth?: boolean;
23
+ /** Additional CSS classes */
24
+ className?: string;
25
+ }
26
+ export declare function ButtonGroup<T = string>({ options, value, onChange, fullWidth, className, }: ButtonGroupProps<T>): import("react/jsx-runtime").JSX.Element;
27
+ export default ButtonGroup;
@@ -0,0 +1,15 @@
1
+ import { default as React } from 'react';
2
+ export interface ControlGroupProps {
3
+ /** Label text */
4
+ label: string;
5
+ /** Optional label suffix (e.g., value display "50px") */
6
+ labelSuffix?: React.ReactNode;
7
+ /** Control element(s) */
8
+ children: React.ReactNode;
9
+ /** Inline layout (label and control side-by-side) */
10
+ inline?: boolean;
11
+ /** Additional CSS classes */
12
+ className?: string;
13
+ }
14
+ export declare const ControlGroup: React.FC<ControlGroupProps>;
15
+ export default ControlGroup;
@@ -0,0 +1,27 @@
1
+ import { default as React, ReactNode } from 'react';
2
+ type DropdownPosition = 'top' | 'bottom' | 'left' | 'right';
3
+ type DropdownAlign = 'start' | 'center' | 'end';
4
+ export interface DropdownProps {
5
+ /** Trigger element that opens the dropdown when clicked */
6
+ trigger: ReactNode;
7
+ /** Dropdown content */
8
+ children: ReactNode;
9
+ /** Whether the dropdown is currently open */
10
+ isOpen: boolean;
11
+ /** Callback when dropdown open state changes */
12
+ onToggle: (open: boolean) => void;
13
+ /** Position relative to trigger (default: bottom) */
14
+ position?: DropdownPosition;
15
+ /** Alignment along the position axis (default: start) */
16
+ align?: DropdownAlign;
17
+ /** Distance from trigger in pixels (default: 8) */
18
+ offset?: number;
19
+ /** Protect canvas from clicks when opening (default: true) */
20
+ protectClick?: boolean;
21
+ /** Additional CSS classes for container */
22
+ className?: string;
23
+ /** Additional CSS classes for content */
24
+ contentClassName?: string;
25
+ }
26
+ declare const Dropdown: React.FC<DropdownProps>;
27
+ export default Dropdown;
@@ -0,0 +1,9 @@
1
+ import { default as React, ReactNode } from 'react';
2
+ export interface DropdownMenuProps {
3
+ children: ReactNode;
4
+ className?: string;
5
+ minWidth?: string;
6
+ maxHeight?: string;
7
+ }
8
+ declare const DropdownMenu: React.FC<DropdownMenuProps>;
9
+ export default DropdownMenu;
@@ -0,0 +1,13 @@
1
+ import { default as React } from 'react';
2
+ export interface MenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
3
+ icon?: React.ReactNode;
4
+ label: string;
5
+ shortcut?: string;
6
+ active?: boolean;
7
+ disabled?: boolean;
8
+ onClick?: () => void;
9
+ className?: string;
10
+ children?: React.ReactNode;
11
+ }
12
+ declare const MenuItem: React.FC<MenuItemProps>;
13
+ export default MenuItem;
@@ -0,0 +1,25 @@
1
+ import { default as React } from 'react';
2
+ export interface PanelProps {
3
+ /** Panel title */
4
+ title: string;
5
+ /** Panel icon (optional) */
6
+ icon?: React.ReactNode;
7
+ /** Panel content */
8
+ children: React.ReactNode;
9
+ /** Enable toggle functionality (checkbox to enable/disable) */
10
+ enableable?: boolean;
11
+ /** Enabled state (only used if enableable=true) */
12
+ enabled?: boolean;
13
+ /** Callback when enabled state changes */
14
+ onEnabledChange?: (enabled: boolean) => void;
15
+ /** Enable expand/collapse functionality */
16
+ collapsible?: boolean;
17
+ /** Expanded state (only used if collapsible=true or enableable=true) */
18
+ expanded?: boolean;
19
+ /** Callback when expanded state changes */
20
+ onExpandChange?: (expanded: boolean) => void;
21
+ /** Additional CSS classes */
22
+ className?: string;
23
+ }
24
+ export declare const Panel: React.FC<PanelProps>;
25
+ export default Panel;
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ export interface SecondaryToolbarProps {
3
+ isOpen: boolean;
4
+ onToggle: (open: boolean) => void;
5
+ trigger?: React.ReactNode;
6
+ children: React.ReactNode;
7
+ }
8
+ declare const SecondaryToolbar: React.FC<SecondaryToolbarProps>;
9
+ export default SecondaryToolbar;
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+ export interface SwitchProps {
3
+ checked: boolean;
4
+ onChange: (checked: boolean) => void;
5
+ label?: string;
6
+ disabled?: boolean;
7
+ className?: string;
8
+ }
9
+ declare const Switch: React.FC<SwitchProps>;
10
+ export default Switch;
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+ export interface ToggleProps {
3
+ /** Label text */
4
+ label: string;
5
+ /** Optional icon */
6
+ icon?: React.ReactNode;
7
+ /** Checked state */
8
+ checked: boolean;
9
+ /** Callback when checked state changes */
10
+ onChange: (checked: boolean) => void;
11
+ /** Disabled state */
12
+ disabled?: boolean;
13
+ /** Additional CSS classes */
14
+ className?: string;
15
+ }
16
+ export declare const Toggle: React.FC<ToggleProps>;
17
+ export default Toggle;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Primitives - Reusable component library
3
+ * These are the foundational components used throughout the app
4
+ */
5
+ export { default as Dropdown } from './Dropdown';
6
+ export type { DropdownProps } from './Dropdown';
7
+ export { default as DropdownMenu } from './DropdownMenu';
8
+ export type { DropdownMenuProps } from './DropdownMenu';
9
+ export { default as MenuItem } from './MenuItem';
10
+ export type { MenuItemProps } from './MenuItem';
11
+ export { default as Panel } from './Panel';
12
+ export type { PanelProps } from './Panel';
13
+ export { default as ControlGroup } from './ControlGroup';
14
+ export type { ControlGroupProps } from './ControlGroup';
15
+ export { default as ButtonGroup } from './ButtonGroup';
16
+ export type { ButtonGroupProps, ButtonGroupOption } from './ButtonGroup';
17
+ export { default as Toggle } from './Toggle';
18
+ export type { ToggleProps } from './Toggle';
19
+ export { default as Switch } from './Switch';
20
+ export type { SwitchProps } from './Switch';
21
+ export { default as SecondaryToolbar } from './SecondaryToolbar';
22
+ export type { SecondaryToolbarProps } from './SecondaryToolbar';
@@ -0,0 +1,32 @@
1
+ import { default as React } from 'react';
2
+ import { EditorElement } from '../../embed/index';
3
+ import { ShapeElement } from '../../../core/ShapeElement';
4
+ /**
5
+ * Default triangle shape that helps visualize canvas bounds in stories.
6
+ * Positioned at center (500, 500) with a semi-transparent gray fill.
7
+ */
8
+ export declare const createDefaultTriangle: () => ShapeElement;
9
+ export interface MockEditorProviderProps {
10
+ children: React.ReactNode;
11
+ initialElements?: EditorElement[];
12
+ initialSelection?: string | null;
13
+ /** If true, skips adding the default triangle marker. Default: false */
14
+ hideDefaultMarker?: boolean;
15
+ /** Configuration for the default artboard created on mount. */
16
+ initialArtboardConfig?: {
17
+ name?: string;
18
+ x?: number;
19
+ y?: number;
20
+ width?: number;
21
+ height?: number;
22
+ backgroundColor?: string;
23
+ };
24
+ }
25
+ /**
26
+ * A wrapper around EditorProvider that allows pre-populating data
27
+ * for testing and stories.
28
+ *
29
+ * By default, includes a semi-transparent triangle marker at the canvas center
30
+ * to help visualize canvas bounds. Pass `hideDefaultMarker={true}` to disable.
31
+ */
32
+ export declare const MockEditorProvider: React.FC<MockEditorProviderProps>;