@tpitre/story-ui 3.3.0 → 3.4.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 (281) hide show
  1. package/dist/cli/index.js +0 -0
  2. package/dist/cli/index.js.map +1 -0
  3. package/dist/cli/setup.js.map +1 -0
  4. package/dist/cloudflare-edge/src/mcp-session.js +462 -0
  5. package/dist/cloudflare-edge/src/types.js +4 -0
  6. package/dist/cloudflare-edge/src/worker.js +106 -0
  7. package/dist/cloudflare-pages/vite.config.js +14 -0
  8. package/dist/index.d.ts +13 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +12 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/mcp-server/index.js.map +1 -0
  13. package/dist/mcp-server/mcp-stdio-server.js.map +1 -0
  14. package/dist/mcp-server/routes/claude.js.map +1 -0
  15. package/dist/mcp-server/routes/components.js.map +1 -0
  16. package/dist/mcp-server/routes/generateStory.js.map +1 -0
  17. package/dist/mcp-server/routes/hybridStories.d.ts +18 -0
  18. package/dist/mcp-server/routes/hybridStories.d.ts.map +1 -0
  19. package/dist/mcp-server/routes/hybridStories.js +216 -0
  20. package/dist/mcp-server/routes/hybridStories.js.map +1 -0
  21. package/dist/mcp-server/routes/memoryStories.d.ts +26 -0
  22. package/dist/mcp-server/routes/memoryStories.d.ts.map +1 -0
  23. package/dist/mcp-server/routes/memoryStories.js +158 -0
  24. package/dist/mcp-server/routes/memoryStories.js.map +1 -0
  25. package/dist/mcp-server/routes/storySync.d.ts +26 -0
  26. package/dist/mcp-server/routes/storySync.d.ts.map +1 -0
  27. package/dist/mcp-server/routes/storySync.js +147 -0
  28. package/dist/mcp-server/routes/storySync.js.map +1 -0
  29. package/dist/mcp-server/routes/updateStory.js +246 -0
  30. package/dist/mcp-server/sessionManager.d.ts +50 -0
  31. package/dist/mcp-server/sessionManager.d.ts.map +1 -0
  32. package/dist/mcp-server/sessionManager.js +125 -0
  33. package/dist/mcp-server/sessionManager.js.map +1 -0
  34. package/dist/playground/components/AIAssistant/AIAssistant.d.ts +6 -0
  35. package/dist/playground/components/AIAssistant/AIAssistant.d.ts.map +1 -0
  36. package/dist/playground/components/AIAssistant/AIAssistant.js +109 -0
  37. package/dist/playground/components/AIAssistant/AIAssistant.js.map +1 -0
  38. package/dist/playground/components/AIAssistant/AIAssistant.module.css +166 -0
  39. package/dist/playground/components/Canvas/Canvas.d.ts +9 -0
  40. package/dist/playground/components/Canvas/Canvas.d.ts.map +1 -0
  41. package/dist/playground/components/Canvas/Canvas.js +58 -0
  42. package/dist/playground/components/Canvas/Canvas.js.map +1 -0
  43. package/dist/playground/components/Canvas/Canvas.module.css +189 -0
  44. package/dist/playground/components/Canvas/CanvasWithDnd.d.ts +9 -0
  45. package/dist/playground/components/Canvas/CanvasWithDnd.d.ts.map +1 -0
  46. package/dist/playground/components/Canvas/CanvasWithDnd.js +158 -0
  47. package/dist/playground/components/Canvas/CanvasWithDnd.js.map +1 -0
  48. package/dist/playground/components/Canvas/ComponentRenderer.d.ts +15 -0
  49. package/dist/playground/components/Canvas/ComponentRenderer.d.ts.map +1 -0
  50. package/dist/playground/components/Canvas/ComponentRenderer.js +177 -0
  51. package/dist/playground/components/Canvas/ComponentRenderer.js.map +1 -0
  52. package/dist/playground/components/Canvas/DraggableComponent.d.ts +15 -0
  53. package/dist/playground/components/Canvas/DraggableComponent.d.ts.map +1 -0
  54. package/dist/playground/components/Canvas/DraggableComponent.js +49 -0
  55. package/dist/playground/components/Canvas/DraggableComponent.js.map +1 -0
  56. package/dist/playground/components/Canvas/index.d.ts +9 -0
  57. package/dist/playground/components/Canvas/index.d.ts.map +1 -0
  58. package/dist/playground/components/Canvas/index.js +5 -0
  59. package/dist/playground/components/Canvas/index.js.map +1 -0
  60. package/dist/playground/components/CodeView/CodeView.d.ts +12 -0
  61. package/dist/playground/components/CodeView/CodeView.d.ts.map +1 -0
  62. package/dist/playground/components/CodeView/CodeView.js +77 -0
  63. package/dist/playground/components/CodeView/CodeView.js.map +1 -0
  64. package/dist/playground/components/CodeView/CodeView.module.css +178 -0
  65. package/dist/playground/components/ComponentPalette/ComponentPalette.d.ts +17 -0
  66. package/dist/playground/components/ComponentPalette/ComponentPalette.d.ts.map +1 -0
  67. package/dist/playground/components/ComponentPalette/ComponentPalette.js +138 -0
  68. package/dist/playground/components/ComponentPalette/ComponentPalette.js.map +1 -0
  69. package/dist/playground/components/ComponentPalette/ComponentPalette.module.css +217 -0
  70. package/dist/playground/components/ComponentPalette/index.d.ts +3 -0
  71. package/dist/playground/components/ComponentPalette/index.d.ts.map +1 -0
  72. package/dist/playground/components/ComponentPalette/index.js +2 -0
  73. package/dist/playground/components/ComponentPalette/index.js.map +1 -0
  74. package/dist/playground/components/DropZone/DropZone.d.ts +17 -0
  75. package/dist/playground/components/DropZone/DropZone.d.ts.map +1 -0
  76. package/dist/playground/components/DropZone/DropZone.js +73 -0
  77. package/dist/playground/components/DropZone/DropZone.js.map +1 -0
  78. package/dist/playground/components/DropZone/DropZone.module.css +86 -0
  79. package/dist/playground/components/ExportDialog/ExportDialog.d.ts +10 -0
  80. package/dist/playground/components/ExportDialog/ExportDialog.d.ts.map +1 -0
  81. package/dist/playground/components/ExportDialog/ExportDialog.js +57 -0
  82. package/dist/playground/components/ExportDialog/ExportDialog.js.map +1 -0
  83. package/dist/playground/components/ExportDialog/ExportDialog.module.css +328 -0
  84. package/dist/playground/components/LayoutHelpers/LayoutHelpers.d.ts +134 -0
  85. package/dist/playground/components/LayoutHelpers/LayoutHelpers.d.ts.map +1 -0
  86. package/dist/playground/components/LayoutHelpers/LayoutHelpers.js +254 -0
  87. package/dist/playground/components/LayoutHelpers/LayoutHelpers.js.map +1 -0
  88. package/dist/playground/components/LayoutHelpers/index.d.ts +3 -0
  89. package/dist/playground/components/LayoutHelpers/index.d.ts.map +1 -0
  90. package/dist/playground/components/LayoutHelpers/index.js +2 -0
  91. package/dist/playground/components/LayoutHelpers/index.js.map +1 -0
  92. package/dist/playground/components/Playground/Playground.d.ts +10 -0
  93. package/dist/playground/components/Playground/Playground.d.ts.map +1 -0
  94. package/dist/playground/components/Playground/Playground.js +128 -0
  95. package/dist/playground/components/Playground/Playground.js.map +1 -0
  96. package/dist/playground/components/Playground/Playground.module.css +308 -0
  97. package/dist/playground/components/PropertiesPanel/PropertiesPanel.d.ts +10 -0
  98. package/dist/playground/components/PropertiesPanel/PropertiesPanel.d.ts.map +1 -0
  99. package/dist/playground/components/PropertiesPanel/PropertiesPanel.js +150 -0
  100. package/dist/playground/components/PropertiesPanel/PropertiesPanel.js.map +1 -0
  101. package/dist/playground/components/PropertiesPanel/PropertiesPanel.module.css +155 -0
  102. package/dist/playground/components/PropertiesPanel/index.d.ts +3 -0
  103. package/dist/playground/components/PropertiesPanel/index.d.ts.map +1 -0
  104. package/dist/playground/components/PropertiesPanel/index.js +2 -0
  105. package/dist/playground/components/PropertiesPanel/index.js.map +1 -0
  106. package/dist/playground/components/PropertyEditors/BooleanEditor.d.ts +12 -0
  107. package/dist/playground/components/PropertyEditors/BooleanEditor.d.ts.map +1 -0
  108. package/dist/playground/components/PropertyEditors/BooleanEditor.js +14 -0
  109. package/dist/playground/components/PropertyEditors/BooleanEditor.js.map +1 -0
  110. package/dist/playground/components/PropertyEditors/ColorEditor.d.ts +12 -0
  111. package/dist/playground/components/PropertyEditors/ColorEditor.d.ts.map +1 -0
  112. package/dist/playground/components/PropertyEditors/ColorEditor.js +62 -0
  113. package/dist/playground/components/PropertyEditors/ColorEditor.js.map +1 -0
  114. package/dist/playground/components/PropertyEditors/IconEditor.d.ts +12 -0
  115. package/dist/playground/components/PropertyEditors/IconEditor.d.ts.map +1 -0
  116. package/dist/playground/components/PropertyEditors/IconEditor.js +123 -0
  117. package/dist/playground/components/PropertyEditors/IconEditor.js.map +1 -0
  118. package/dist/playground/components/PropertyEditors/NumberEditor.d.ts +15 -0
  119. package/dist/playground/components/PropertyEditors/NumberEditor.d.ts.map +1 -0
  120. package/dist/playground/components/PropertyEditors/NumberEditor.js +46 -0
  121. package/dist/playground/components/PropertyEditors/NumberEditor.js.map +1 -0
  122. package/dist/playground/components/PropertyEditors/PropertyEditors.module.css +432 -0
  123. package/dist/playground/components/PropertyEditors/SelectEditor.d.ts +19 -0
  124. package/dist/playground/components/PropertyEditors/SelectEditor.d.ts.map +1 -0
  125. package/dist/playground/components/PropertyEditors/SelectEditor.js +17 -0
  126. package/dist/playground/components/PropertyEditors/SelectEditor.js.map +1 -0
  127. package/dist/playground/components/PropertyEditors/SpacingEditor.d.ts +19 -0
  128. package/dist/playground/components/PropertyEditors/SpacingEditor.d.ts.map +1 -0
  129. package/dist/playground/components/PropertyEditors/SpacingEditor.js +162 -0
  130. package/dist/playground/components/PropertyEditors/SpacingEditor.js.map +1 -0
  131. package/dist/playground/components/PropertyEditors/SpacingEditor.module.css +214 -0
  132. package/dist/playground/components/PropertyEditors/TextEditor.d.ts +14 -0
  133. package/dist/playground/components/PropertyEditors/TextEditor.d.ts.map +1 -0
  134. package/dist/playground/components/PropertyEditors/TextEditor.js +38 -0
  135. package/dist/playground/components/PropertyEditors/TextEditor.js.map +1 -0
  136. package/dist/playground/components/PropertyEditors/TokenEditor.d.ts +23 -0
  137. package/dist/playground/components/PropertyEditors/TokenEditor.d.ts.map +1 -0
  138. package/dist/playground/components/PropertyEditors/TokenEditor.js +50 -0
  139. package/dist/playground/components/PropertyEditors/TokenEditor.js.map +1 -0
  140. package/dist/playground/components/PropertyEditors/index.d.ts +20 -0
  141. package/dist/playground/components/PropertyEditors/index.d.ts.map +1 -0
  142. package/dist/playground/components/PropertyEditors/index.js +12 -0
  143. package/dist/playground/components/PropertyEditors/index.js.map +1 -0
  144. package/dist/playground/components/TreeView/TreeView.d.ts +10 -0
  145. package/dist/playground/components/TreeView/TreeView.d.ts.map +1 -0
  146. package/dist/playground/components/TreeView/TreeView.js +146 -0
  147. package/dist/playground/components/TreeView/TreeView.js.map +1 -0
  148. package/dist/playground/components/TreeView/TreeView.module.css +214 -0
  149. package/dist/playground/components/TreeView/index.d.ts +3 -0
  150. package/dist/playground/components/TreeView/index.d.ts.map +1 -0
  151. package/dist/playground/components/TreeView/index.js +2 -0
  152. package/dist/playground/components/TreeView/index.js.map +1 -0
  153. package/dist/playground/config/propertyDefinitions.d.ts +73 -0
  154. package/dist/playground/config/propertyDefinitions.d.ts.map +1 -0
  155. package/dist/playground/config/propertyDefinitions.js +809 -0
  156. package/dist/playground/config/propertyDefinitions.js.map +1 -0
  157. package/dist/playground/hooks/useKeyboardShortcuts.d.ts +38 -0
  158. package/dist/playground/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  159. package/dist/playground/hooks/useKeyboardShortcuts.js +191 -0
  160. package/dist/playground/hooks/useKeyboardShortcuts.js.map +1 -0
  161. package/dist/playground/index.d.ts +21 -0
  162. package/dist/playground/index.d.ts.map +1 -0
  163. package/dist/playground/index.js +23 -0
  164. package/dist/playground/index.js.map +1 -0
  165. package/dist/playground/services/CodeGenerator.d.ts +73 -0
  166. package/dist/playground/services/CodeGenerator.d.ts.map +1 -0
  167. package/dist/playground/services/CodeGenerator.js +359 -0
  168. package/dist/playground/services/CodeGenerator.js.map +1 -0
  169. package/dist/playground/services/DragDropManager.d.ts +95 -0
  170. package/dist/playground/services/DragDropManager.d.ts.map +1 -0
  171. package/dist/playground/services/DragDropManager.js +408 -0
  172. package/dist/playground/services/DragDropManager.js.map +1 -0
  173. package/dist/playground/services/StoryParser.d.ts +73 -0
  174. package/dist/playground/services/StoryParser.d.ts.map +1 -0
  175. package/dist/playground/services/StoryParser.js +419 -0
  176. package/dist/playground/services/StoryParser.js.map +1 -0
  177. package/dist/playground/store/playgroundStore.d.ts +86 -0
  178. package/dist/playground/store/playgroundStore.d.ts.map +1 -0
  179. package/dist/playground/store/playgroundStore.js +337 -0
  180. package/dist/playground/store/playgroundStore.js.map +1 -0
  181. package/dist/playground/stories/PlaygroundDragDrop.stories.d.ts +13 -0
  182. package/dist/playground/stories/PlaygroundDragDrop.stories.d.ts.map +1 -0
  183. package/dist/playground/stories/PlaygroundDragDrop.stories.js +227 -0
  184. package/dist/playground/stories/PlaygroundDragDrop.stories.js.map +1 -0
  185. package/dist/playground/stories/PlaygroundPhase4.stories.d.ts +13 -0
  186. package/dist/playground/stories/PlaygroundPhase4.stories.d.ts.map +1 -0
  187. package/dist/playground/stories/PlaygroundPhase4.stories.js +334 -0
  188. package/dist/playground/stories/PlaygroundPhase4.stories.js.map +1 -0
  189. package/dist/playground/stories/PlaygroundPhase5.stories.d.ts +14 -0
  190. package/dist/playground/stories/PlaygroundPhase5.stories.d.ts.map +1 -0
  191. package/dist/playground/stories/PlaygroundPhase5.stories.js +512 -0
  192. package/dist/playground/stories/PlaygroundPhase5.stories.js.map +1 -0
  193. package/dist/playground/stories/PlaygroundProperties.stories.d.ts +13 -0
  194. package/dist/playground/stories/PlaygroundProperties.stories.d.ts.map +1 -0
  195. package/dist/playground/stories/PlaygroundProperties.stories.js +342 -0
  196. package/dist/playground/stories/PlaygroundProperties.stories.js.map +1 -0
  197. package/dist/playground/types/index.d.ts +251 -0
  198. package/dist/playground/types/index.d.ts.map +1 -0
  199. package/dist/playground/types/index.js +5 -0
  200. package/dist/playground/types/index.js.map +1 -0
  201. package/dist/scripts/verify-framework-adapters.js +105 -0
  202. package/dist/story-generator/componentBlacklist.js.map +1 -0
  203. package/dist/story-generator/componentDiscovery.js.map +1 -0
  204. package/dist/story-generator/configLoader.js.map +1 -0
  205. package/dist/story-generator/considerationsLoader.js.map +1 -0
  206. package/dist/story-generator/documentation-sources.js.map +1 -0
  207. package/dist/story-generator/documentationLoader.js.map +1 -0
  208. package/dist/story-generator/dynamicPackageDiscovery.js.map +1 -0
  209. package/dist/story-generator/enhancedComponentDiscovery.js.map +1 -0
  210. package/dist/story-generator/generateStory.js.map +1 -0
  211. package/dist/story-generator/gitignoreManager.js.map +1 -0
  212. package/dist/story-generator/inMemoryStoryService.d.ts +89 -0
  213. package/dist/story-generator/inMemoryStoryService.d.ts.map +1 -0
  214. package/dist/story-generator/inMemoryStoryService.js +128 -0
  215. package/dist/story-generator/inMemoryStoryService.js.map +1 -0
  216. package/dist/story-generator/logger.js.map +1 -0
  217. package/dist/story-generator/postProcessStory.js.map +1 -0
  218. package/dist/story-generator/postgresStoryService.d.ts +56 -0
  219. package/dist/story-generator/postgresStoryService.d.ts.map +1 -0
  220. package/dist/story-generator/postgresStoryService.js +240 -0
  221. package/dist/story-generator/productionGitignoreManager.d.ts +91 -0
  222. package/dist/story-generator/productionGitignoreManager.d.ts.map +1 -0
  223. package/dist/story-generator/productionGitignoreManager.js +340 -0
  224. package/dist/story-generator/productionGitignoreManager.js.map +1 -0
  225. package/dist/story-generator/promptGenerator.js.map +1 -0
  226. package/dist/story-generator/providerPresets.d.ts +54 -0
  227. package/dist/story-generator/providerPresets.d.ts.map +1 -0
  228. package/dist/story-generator/providerPresets.js +214 -0
  229. package/dist/story-generator/storyHistory.js.map +1 -0
  230. package/dist/story-generator/storyServiceFactory.d.ts +22 -0
  231. package/dist/story-generator/storyServiceFactory.d.ts.map +1 -0
  232. package/dist/story-generator/storyServiceFactory.js +97 -0
  233. package/dist/story-generator/storyServiceInterface.d.ts +85 -0
  234. package/dist/story-generator/storyServiceInterface.d.ts.map +1 -0
  235. package/dist/story-generator/storyServiceInterface.js +5 -0
  236. package/dist/story-generator/storySync.d.ts +68 -0
  237. package/dist/story-generator/storySync.d.ts.map +1 -0
  238. package/dist/story-generator/storySync.js +201 -0
  239. package/dist/story-generator/storySync.js.map +1 -0
  240. package/dist/story-generator/storyTracker.js.map +1 -0
  241. package/dist/story-generator/storyValidator.js.map +1 -0
  242. package/dist/story-generator/test_validation.d.ts +2 -0
  243. package/dist/story-generator/test_validation.d.ts.map +1 -0
  244. package/dist/story-generator/test_validation.js +51 -0
  245. package/dist/story-generator/universalDesignSystemAdapter.js.map +1 -0
  246. package/dist/story-generator/urlRedirectService.js.map +1 -0
  247. package/dist/story-generator/validateStory.js.map +1 -0
  248. package/dist/story-ui.config.js.map +1 -0
  249. package/dist/story-ui.config.loader.d.ts +36 -0
  250. package/dist/story-ui.config.loader.d.ts.map +1 -0
  251. package/dist/story-ui.config.loader.js +205 -0
  252. package/dist/story-ui.config.loader.js.map +1 -0
  253. package/dist/temp/package/templates/StoryUI/StoryUIPanel.js +807 -0
  254. package/dist/temp/package/templates/StoryUI/StoryUIPanel.stories.js +37 -0
  255. package/dist/temp/package/templates/StoryUI/index.js +2 -0
  256. package/dist/templates/StoryUI/StoryUIPanel.js.map +1 -0
  257. package/dist/templates/StoryUI/StoryUIPanel.stories.js.map +1 -0
  258. package/dist/templates/StoryUI/index.js.map +1 -0
  259. package/dist/templates/StoryUI/manager.d.ts +14 -0
  260. package/dist/templates/StoryUI/manager.d.ts.map +1 -0
  261. package/dist/templates/production-app/src/App.d.ts +10 -0
  262. package/dist/templates/production-app/src/App.d.ts.map +1 -0
  263. package/dist/templates/production-app/src/App.js +653 -0
  264. package/dist/templates/production-app/src/LivePreviewRenderer.d.ts +24 -0
  265. package/dist/templates/production-app/src/LivePreviewRenderer.d.ts.map +1 -0
  266. package/dist/templates/production-app/src/LivePreviewRenderer.js +199 -0
  267. package/dist/templates/production-app/src/componentRegistry.d.ts +20 -0
  268. package/dist/templates/production-app/src/componentRegistry.d.ts.map +1 -0
  269. package/dist/templates/production-app/src/componentRegistry.js +316 -0
  270. package/dist/templates/production-app/src/main.d.ts +9 -0
  271. package/dist/templates/production-app/src/main.d.ts.map +1 -0
  272. package/dist/templates/production-app/src/main.js +18 -0
  273. package/dist/templates/production-app/vite.config.d.ts +3 -0
  274. package/dist/templates/production-app/vite.config.d.ts.map +1 -0
  275. package/dist/templates/production-app/vite.config.js +71 -0
  276. package/dist/test-storybooks/angular-material-storybook/src/main.js +66 -0
  277. package/dist/test-storybooks/chakra-storybook/vite.config.js +6 -0
  278. package/dist/test-storybooks/mantine-storybook/vite.config.js +93 -0
  279. package/dist/test-storybooks/web-components-shoelace/vite.config.js +9 -0
  280. package/dist/tsconfig.tsbuildinfo +1 -0
  281. package/package.json +1 -1
@@ -0,0 +1,432 @@
1
+ /* Shared styles for property editors */
2
+
3
+ .propertyEditor {
4
+ display: flex;
5
+ flex-direction: column;
6
+ gap: 6px;
7
+ margin-bottom: 12px;
8
+ font-family: inherit;
9
+ }
10
+
11
+ .label {
12
+ font-size: 12px;
13
+ font-weight: 500;
14
+ color: #374151;
15
+ font-family: inherit;
16
+ }
17
+
18
+ .description {
19
+ font-size: 11px;
20
+ color: #6b7280;
21
+ margin-top: 2px;
22
+ }
23
+
24
+ /* Text Input */
25
+ .input {
26
+ width: 100%;
27
+ padding: 6px 10px;
28
+ background: white;
29
+ border: 1px solid #e5e7eb;
30
+ border-radius: 6px;
31
+ font-size: 13px;
32
+ font-family: inherit;
33
+ color: #374151;
34
+ outline: none;
35
+ transition: all 0.2s;
36
+ }
37
+
38
+ .input:hover {
39
+ border-color: #d1d5db;
40
+ }
41
+
42
+ .input:focus {
43
+ border-color: #3b82f6;
44
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
45
+ }
46
+
47
+ .input:disabled {
48
+ background: #f3f4f6;
49
+ color: #9ca3af;
50
+ cursor: not-allowed;
51
+ }
52
+
53
+ /* Textarea */
54
+ .textarea {
55
+ width: 100%;
56
+ padding: 6px 10px;
57
+ background: white;
58
+ border: 1px solid #e5e7eb;
59
+ border-radius: 6px;
60
+ font-size: 13px;
61
+ font-family: inherit;
62
+ color: #374151;
63
+ outline: none;
64
+ resize: vertical;
65
+ min-height: 60px;
66
+ transition: all 0.2s;
67
+ }
68
+
69
+ .textarea:hover {
70
+ border-color: #d1d5db;
71
+ }
72
+
73
+ .textarea:focus {
74
+ border-color: #3b82f6;
75
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
76
+ }
77
+
78
+ /* Select */
79
+ .select {
80
+ width: 100%;
81
+ padding: 6px 10px;
82
+ background: white;
83
+ border: 1px solid #e5e7eb;
84
+ border-radius: 6px;
85
+ font-size: 13px;
86
+ font-family: inherit;
87
+ color: #374151;
88
+ cursor: pointer;
89
+ outline: none;
90
+ transition: all 0.2s;
91
+ }
92
+
93
+ .select:hover {
94
+ border-color: #d1d5db;
95
+ }
96
+
97
+ .select:focus {
98
+ border-color: #3b82f6;
99
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
100
+ }
101
+
102
+ /* Number Input */
103
+ .numberInput {
104
+ display: flex;
105
+ align-items: center;
106
+ gap: 4px;
107
+ }
108
+
109
+ .numberInput .input {
110
+ flex: 1;
111
+ text-align: center;
112
+ }
113
+
114
+ .stepButton {
115
+ width: 28px;
116
+ height: 28px;
117
+ padding: 0;
118
+ background: white;
119
+ border: 1px solid #e5e7eb;
120
+ border-radius: 6px;
121
+ font-size: 16px;
122
+ color: #6b7280;
123
+ cursor: pointer;
124
+ display: flex;
125
+ align-items: center;
126
+ justify-content: center;
127
+ transition: all 0.2s;
128
+ }
129
+
130
+ .stepButton:hover {
131
+ background: #f3f4f6;
132
+ border-color: #d1d5db;
133
+ color: #374151;
134
+ }
135
+
136
+ .stepButton:active {
137
+ background: #e5e7eb;
138
+ }
139
+
140
+ .unit {
141
+ padding: 0 8px;
142
+ font-size: 12px;
143
+ color: #6b7280;
144
+ }
145
+
146
+ /* Boolean Toggle */
147
+ .booleanEditor {
148
+ display: flex;
149
+ align-items: center;
150
+ gap: 12px;
151
+ }
152
+
153
+ .booleanLabel {
154
+ display: flex;
155
+ flex-direction: column;
156
+ gap: 2px;
157
+ }
158
+
159
+ .toggle {
160
+ position: relative;
161
+ width: 44px;
162
+ height: 24px;
163
+ background: #e5e7eb;
164
+ border: none;
165
+ border-radius: 12px;
166
+ cursor: pointer;
167
+ transition: all 0.2s;
168
+ padding: 2px;
169
+ }
170
+
171
+ .toggle:hover {
172
+ background: #d1d5db;
173
+ }
174
+
175
+ .toggle.toggleOn {
176
+ background: #3b82f6;
177
+ }
178
+
179
+ .toggle.toggleOn:hover {
180
+ background: #2563eb;
181
+ }
182
+
183
+ .toggleThumb {
184
+ position: absolute;
185
+ top: 2px;
186
+ left: 2px;
187
+ width: 20px;
188
+ height: 20px;
189
+ background: white;
190
+ border-radius: 10px;
191
+ transition: transform 0.2s;
192
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
193
+ }
194
+
195
+ .toggleOn .toggleThumb {
196
+ transform: translateX(20px);
197
+ }
198
+
199
+ /* Color Editor */
200
+ .colorEditor {
201
+ display: flex;
202
+ flex-direction: column;
203
+ gap: 8px;
204
+ }
205
+
206
+ .colorInputWrapper {
207
+ display: flex;
208
+ align-items: center;
209
+ gap: 8px;
210
+ }
211
+
212
+ .colorSwatch {
213
+ width: 32px;
214
+ height: 32px;
215
+ border-radius: 6px;
216
+ border: 1px solid #e5e7eb;
217
+ cursor: pointer;
218
+ transition: all 0.2s;
219
+ }
220
+
221
+ .colorSwatch:hover {
222
+ border-color: #d1d5db;
223
+ transform: scale(1.05);
224
+ }
225
+
226
+ .colorPicker {
227
+ width: 32px;
228
+ height: 32px;
229
+ border: none;
230
+ border-radius: 6px;
231
+ cursor: pointer;
232
+ background: transparent;
233
+ }
234
+
235
+ .colorPresets {
236
+ display: grid;
237
+ grid-template-columns: repeat(5, 1fr);
238
+ gap: 6px;
239
+ padding: 8px;
240
+ background: white;
241
+ border: 1px solid #e5e7eb;
242
+ border-radius: 6px;
243
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
244
+ }
245
+
246
+ .colorPreset {
247
+ width: 28px;
248
+ height: 28px;
249
+ border: 1px solid #e5e7eb;
250
+ border-radius: 4px;
251
+ cursor: pointer;
252
+ transition: all 0.2s;
253
+ }
254
+
255
+ .colorPreset:hover {
256
+ transform: scale(1.1);
257
+ border-color: #d1d5db;
258
+ }
259
+
260
+ /* Token Editor */
261
+ .tokenEditor {
262
+ display: flex;
263
+ flex-direction: column;
264
+ gap: 12px;
265
+ }
266
+
267
+ .tokenGrid {
268
+ display: grid;
269
+ grid-template-columns: repeat(auto-fit, minmax(60px, 1fr));
270
+ gap: 6px;
271
+ }
272
+
273
+ .tokenButton {
274
+ display: flex;
275
+ flex-direction: column;
276
+ align-items: center;
277
+ gap: 4px;
278
+ padding: 8px 6px;
279
+ background: white;
280
+ border: 1px solid #e5e7eb;
281
+ border-radius: 6px;
282
+ cursor: pointer;
283
+ transition: all 0.2s;
284
+ font-size: 11px;
285
+ color: #374151;
286
+ }
287
+
288
+ .tokenButton:hover {
289
+ background: #f9fafb;
290
+ border-color: #d1d5db;
291
+ }
292
+
293
+ .tokenButton.tokenSelected {
294
+ background: #eff6ff;
295
+ border-color: #3b82f6;
296
+ color: #1d4ed8;
297
+ }
298
+
299
+ .tokenLabel {
300
+ font-weight: 500;
301
+ text-align: center;
302
+ line-height: 1.2;
303
+ }
304
+
305
+ .tokenDescription {
306
+ font-size: 10px;
307
+ color: #6b7280;
308
+ text-align: center;
309
+ }
310
+
311
+ .tokenSelected .tokenDescription {
312
+ color: #1d4ed8;
313
+ }
314
+
315
+ .tokenPreview {
316
+ display: block;
317
+ background: #3b82f6;
318
+ border-radius: 1px;
319
+ }
320
+
321
+ .customTokenInput {
322
+ display: flex;
323
+ align-items: center;
324
+ gap: 8px;
325
+ padding-top: 8px;
326
+ border-top: 1px solid #e5e7eb;
327
+ }
328
+
329
+ .selectedToken {
330
+ display: flex;
331
+ align-items: center;
332
+ gap: 8px;
333
+ padding: 6px 8px;
334
+ background: #f3f4f6;
335
+ border-radius: 6px;
336
+ font-size: 12px;
337
+ }
338
+
339
+ .selectedLabel {
340
+ font-weight: 500;
341
+ color: #6b7280;
342
+ }
343
+
344
+ .selectedValue {
345
+ color: #374151;
346
+ }
347
+
348
+ /* MUI Component Overrides */
349
+ .propertyEditor .MuiFormControl-root {
350
+ margin-bottom: 0;
351
+ }
352
+
353
+ .propertyEditor .MuiInputLabel-root {
354
+ font-size: 12px;
355
+ font-family: inherit;
356
+ }
357
+
358
+ .propertyEditor .MuiInputBase-input {
359
+ font-size: 13px;
360
+ font-family: inherit;
361
+ }
362
+
363
+ .propertyEditor .MuiFormControlLabel-label {
364
+ font-size: 13px;
365
+ font-family: inherit;
366
+ }
367
+
368
+ .propertyEditor .MuiSwitch-root {
369
+ margin-left: 0;
370
+ }
371
+
372
+ .propertyEditor .MuiIconButton-root {
373
+ padding: 4px;
374
+ }
375
+
376
+ /* Enhanced Boolean Editor */
377
+ .booleanEditor .MuiFormGroup-root {
378
+ margin: 0;
379
+ }
380
+
381
+ .booleanEditor .MuiFormControlLabel-root {
382
+ margin: 0;
383
+ gap: 8px;
384
+ }
385
+
386
+ /* Enhanced Select Editor */
387
+ .propertyEditor .MuiSelect-select {
388
+ font-size: 13px;
389
+ padding: 8px 12px;
390
+ }
391
+
392
+ .propertyEditor .MuiMenuItem-root {
393
+ font-size: 13px;
394
+ min-height: 32px;
395
+ }
396
+
397
+ /* Enhanced Number Editor */
398
+ .propertyEditor .MuiTextField-root {
399
+ margin: 0;
400
+ }
401
+
402
+ /* Enhanced Color Editor */
403
+ .colorEditor .MuiPopover-paper {
404
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
405
+ border-radius: 8px;
406
+ }
407
+
408
+ /* Enhanced Icon Editor */
409
+ .iconEditor .MuiGrid-item {
410
+ padding: 2px;
411
+ }
412
+
413
+ .iconEditor .MuiChip-root {
414
+ font-size: 12px;
415
+ }
416
+
417
+ /* Responsive adjustments */
418
+ @media (max-width: 768px) {
419
+ .tokenGrid {
420
+ grid-template-columns: repeat(auto-fit, minmax(50px, 1fr));
421
+ }
422
+
423
+ .tokenButton {
424
+ padding: 6px 4px;
425
+ font-size: 10px;
426
+ }
427
+
428
+ .iconEditor .MuiPopover-paper {
429
+ width: 90vw !important;
430
+ max-width: 350px;
431
+ }
432
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * SelectEditor - Dropdown selector for enum properties using MUI Select
3
+ */
4
+ import React from 'react';
5
+ export interface SelectOption {
6
+ label: string;
7
+ value: string | number;
8
+ icon?: string;
9
+ disabled?: boolean;
10
+ }
11
+ export interface SelectEditorProps {
12
+ value?: string | number;
13
+ onChange: (value: string | number) => void;
14
+ options: SelectOption[];
15
+ label?: string;
16
+ placeholder?: string;
17
+ }
18
+ export declare const SelectEditor: React.FC<SelectEditorProps>;
19
+ //# sourceMappingURL=SelectEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectEditor.d.ts","sourceRoot":"","sources":["../../../../playground/components/PropertyEditors/SelectEditor.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA4CpD,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * SelectEditor - Dropdown selector for enum properties using MUI Select
4
+ */
5
+ import { useCallback } from 'react';
6
+ import { Select, MenuItem, FormControl, InputLabel } from '@mui/material';
7
+ import styles from './PropertyEditors.module.css';
8
+ export const SelectEditor = ({ value, onChange, options, label, placeholder = 'Select...' }) => {
9
+ const handleChange = useCallback((e) => {
10
+ const newValue = e.target.value;
11
+ // Try to parse as number if it looks like one
12
+ const numValue = Number(newValue);
13
+ onChange(!isNaN(numValue) && newValue !== '' ? numValue : newValue);
14
+ }, [onChange]);
15
+ return (_jsx("div", { className: styles.propertyEditor, children: _jsxs(FormControl, { fullWidth: true, size: "small", children: [label && _jsx(InputLabel, { sx: { fontSize: '12px' }, children: label }), _jsxs(Select, { value: value ?? '', onChange: handleChange, displayEmpty: !label, sx: { fontSize: '13px' }, children: [!label && (_jsx(MenuItem, { value: "", disabled: true, children: _jsx("em", { children: placeholder }) })), options.map((option) => (_jsxs(MenuItem, { value: option.value, disabled: option.disabled, sx: { fontSize: '13px' }, children: [option.icon && `${option.icon} `, option.label] }, option.value)))] })] }) }));
16
+ };
17
+ //# sourceMappingURL=SelectEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectEditor.js","sourceRoot":"","sources":["../../../../playground/components/PropertyEditors/SelectEditor.tsx"],"names":[],"mappings":";AAAA;;GAEG;AAEH,OAAc,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAqB,MAAM,eAAe,CAAC;AAC7F,OAAO,MAAM,MAAM,8BAA8B,CAAC;AAiBlD,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACxD,KAAK,EACL,QAAQ,EACR,OAAO,EACP,KAAK,EACL,WAAW,GAAG,WAAW,EAC1B,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAqC,EAAE,EAAE;QACzE,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAChC,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,cAAK,SAAS,EAAE,MAAM,CAAC,cAAc,YACnC,MAAC,WAAW,IAAC,SAAS,QAAC,IAAI,EAAC,OAAO,aAChC,KAAK,IAAI,KAAC,UAAU,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAG,KAAK,GAAc,EACpE,MAAC,MAAM,IACL,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,CAAC,KAAK,EACpB,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAEvB,CAAC,KAAK,IAAI,CACT,KAAC,QAAQ,IAAC,KAAK,EAAC,EAAE,EAAC,QAAQ,kBACzB,uBAAK,WAAW,GAAM,GACb,CACZ,EACA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,MAAC,QAAQ,IAEP,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAEvB,MAAM,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,EAChC,MAAM,CAAC,KAAK,KANR,MAAM,CAAC,KAAK,CAOR,CACZ,CAAC,IACK,IACG,GACV,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * SpacingEditor - Visual editor for margin and padding with linked/unlinked modes
3
+ */
4
+ import React from 'react';
5
+ export interface SpacingValue {
6
+ top: string | number;
7
+ right: string | number;
8
+ bottom: string | number;
9
+ left: string | number;
10
+ }
11
+ export interface SpacingEditorProps {
12
+ value?: SpacingValue | string | number;
13
+ onChange: (value: SpacingValue | string) => void;
14
+ property: 'margin' | 'padding';
15
+ units?: string[];
16
+ label?: string;
17
+ }
18
+ export declare const SpacingEditor: React.FC<SpacingEditorProps>;
19
+ //# sourceMappingURL=SpacingEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpacingEditor.d.ts","sourceRoot":"","sources":["../../../../playground/components/PropertyEditors/SpacingEditor.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAC;AAGhE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;IACvC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,KAAK,IAAI,CAAC;IACjD,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAuDD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+OtD,CAAC"}
@@ -0,0 +1,162 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * SpacingEditor - Visual editor for margin and padding with linked/unlinked modes
4
+ */
5
+ import { useState, useCallback, useEffect } from 'react';
6
+ import styles from './SpacingEditor.module.css';
7
+ const DEFAULT_UNITS = ['px', 'rem', 'em', '%', 'auto'];
8
+ const parseSpacingValue = (value) => {
9
+ if (!value) {
10
+ return { top: 0, right: 0, bottom: 0, left: 0 };
11
+ }
12
+ if (typeof value === 'object') {
13
+ return value;
14
+ }
15
+ if (typeof value === 'number') {
16
+ return { top: value, right: value, bottom: value, left: value };
17
+ }
18
+ // Parse string values like "10px", "10px 20px", "10px 20px 30px", "10px 20px 30px 40px"
19
+ const parts = value.toString().trim().split(/\s+/);
20
+ switch (parts.length) {
21
+ case 1:
22
+ const val = parts[0];
23
+ return { top: val, right: val, bottom: val, left: val };
24
+ case 2:
25
+ return { top: parts[0], right: parts[1], bottom: parts[0], left: parts[1] };
26
+ case 3:
27
+ return { top: parts[0], right: parts[1], bottom: parts[2], left: parts[1] };
28
+ case 4:
29
+ return { top: parts[0], right: parts[1], bottom: parts[2], left: parts[3] };
30
+ default:
31
+ return { top: 0, right: 0, bottom: 0, left: 0 };
32
+ }
33
+ };
34
+ const extractUnit = (value) => {
35
+ if (typeof value === 'number') {
36
+ return { value, unit: 'px' };
37
+ }
38
+ if (value === 'auto') {
39
+ return { value: 0, unit: 'auto' };
40
+ }
41
+ const match = value.toString().match(/^(-?\d*\.?\d+)(.*)$/);
42
+ if (match) {
43
+ return {
44
+ value: parseFloat(match[1]) || 0,
45
+ unit: match[2] || 'px'
46
+ };
47
+ }
48
+ return { value: 0, unit: 'px' };
49
+ };
50
+ export const SpacingEditor = ({ value, onChange, property, units = DEFAULT_UNITS, label }) => {
51
+ const parsedValue = parseSpacingValue(value);
52
+ const [linked, setLinked] = useState(parsedValue.top === parsedValue.right &&
53
+ parsedValue.top === parsedValue.bottom &&
54
+ parsedValue.top === parsedValue.left);
55
+ const [currentUnit, setCurrentUnit] = useState(() => {
56
+ const { unit } = extractUnit(parsedValue.top);
57
+ return unit;
58
+ });
59
+ const [localValues, setLocalValues] = useState(() => {
60
+ return {
61
+ top: extractUnit(parsedValue.top).value,
62
+ right: extractUnit(parsedValue.right).value,
63
+ bottom: extractUnit(parsedValue.bottom).value,
64
+ left: extractUnit(parsedValue.left).value
65
+ };
66
+ });
67
+ useEffect(() => {
68
+ const parsed = parseSpacingValue(value);
69
+ setLocalValues({
70
+ top: extractUnit(parsed.top).value,
71
+ right: extractUnit(parsed.right).value,
72
+ bottom: extractUnit(parsed.bottom).value,
73
+ left: extractUnit(parsed.left).value
74
+ });
75
+ }, [value]);
76
+ const formatValue = (val, unit) => {
77
+ if (unit === 'auto')
78
+ return 'auto';
79
+ if (val === 0 && unit !== '%')
80
+ return '0';
81
+ return `${val}${unit}`;
82
+ };
83
+ const handleValueChange = useCallback((side, newValue) => {
84
+ const numValue = parseFloat(newValue) || 0;
85
+ let updatedValues;
86
+ if (linked) {
87
+ updatedValues = {
88
+ top: numValue,
89
+ right: numValue,
90
+ bottom: numValue,
91
+ left: numValue
92
+ };
93
+ }
94
+ else {
95
+ updatedValues = {
96
+ ...localValues,
97
+ [side]: numValue
98
+ };
99
+ }
100
+ setLocalValues(updatedValues);
101
+ // Format the output
102
+ const formatted = {
103
+ top: formatValue(updatedValues.top, currentUnit),
104
+ right: formatValue(updatedValues.right, currentUnit),
105
+ bottom: formatValue(updatedValues.bottom, currentUnit),
106
+ left: formatValue(updatedValues.left, currentUnit)
107
+ };
108
+ // Optimize output string
109
+ if (formatted.top === formatted.right && formatted.top === formatted.bottom && formatted.top === formatted.left) {
110
+ onChange(formatted.top);
111
+ }
112
+ else if (formatted.top === formatted.bottom && formatted.left === formatted.right) {
113
+ onChange(`${formatted.top} ${formatted.right}`);
114
+ }
115
+ else if (formatted.left === formatted.right) {
116
+ onChange(`${formatted.top} ${formatted.right} ${formatted.bottom}`);
117
+ }
118
+ else {
119
+ onChange(`${formatted.top} ${formatted.right} ${formatted.bottom} ${formatted.left}`);
120
+ }
121
+ }, [linked, localValues, currentUnit, onChange]);
122
+ const handleUnitChange = useCallback((newUnit) => {
123
+ setCurrentUnit(newUnit);
124
+ const formatted = {
125
+ top: formatValue(localValues.top, newUnit),
126
+ right: formatValue(localValues.right, newUnit),
127
+ bottom: formatValue(localValues.bottom, newUnit),
128
+ left: formatValue(localValues.left, newUnit)
129
+ };
130
+ // Optimize output string
131
+ if (formatted.top === formatted.right && formatted.top === formatted.bottom && formatted.top === formatted.left) {
132
+ onChange(formatted.top);
133
+ }
134
+ else if (formatted.top === formatted.bottom && formatted.left === formatted.right) {
135
+ onChange(`${formatted.top} ${formatted.right}`);
136
+ }
137
+ else if (formatted.left === formatted.right) {
138
+ onChange(`${formatted.top} ${formatted.right} ${formatted.bottom}`);
139
+ }
140
+ else {
141
+ onChange(`${formatted.top} ${formatted.right} ${formatted.bottom} ${formatted.left}`);
142
+ }
143
+ }, [localValues, onChange]);
144
+ const toggleLinked = useCallback(() => {
145
+ const newLinked = !linked;
146
+ setLinked(newLinked);
147
+ if (newLinked) {
148
+ // Use top value for all when linking
149
+ const topValue = localValues.top;
150
+ const updatedValues = {
151
+ top: topValue,
152
+ right: topValue,
153
+ bottom: topValue,
154
+ left: topValue
155
+ };
156
+ setLocalValues(updatedValues);
157
+ onChange(formatValue(topValue, currentUnit));
158
+ }
159
+ }, [linked, localValues, currentUnit, onChange]);
160
+ return (_jsxs("div", { className: styles.spacingEditor, children: [label && (_jsxs("div", { className: styles.header, children: [_jsx("label", { className: styles.label, children: label }), _jsxs("div", { className: styles.controls, children: [_jsx("button", { className: `${styles.linkButton} ${linked ? styles.linked : ''}`, onClick: toggleLinked, title: linked ? 'Unlink values' : 'Link values', children: linked ? '🔗' : '🔗' }), _jsx("select", { className: styles.unitSelect, value: currentUnit, onChange: (e) => handleUnitChange(e.target.value), children: units.map(unit => (_jsx("option", { value: unit, children: unit }, unit))) })] })] })), _jsx("div", { className: styles.visualEditor, children: _jsxs("div", { className: styles.boxModel, children: [_jsx("input", { type: "number", className: `${styles.input} ${styles.inputTop}`, value: localValues.top, onChange: (e) => handleValueChange('top', e.target.value), placeholder: "0", disabled: currentUnit === 'auto' }), _jsx("input", { type: "number", className: `${styles.input} ${styles.inputRight}`, value: localValues.right, onChange: (e) => handleValueChange('right', e.target.value), placeholder: "0", disabled: currentUnit === 'auto' || linked }), _jsx("input", { type: "number", className: `${styles.input} ${styles.inputBottom}`, value: localValues.bottom, onChange: (e) => handleValueChange('bottom', e.target.value), placeholder: "0", disabled: currentUnit === 'auto' || linked }), _jsx("input", { type: "number", className: `${styles.input} ${styles.inputLeft}`, value: localValues.left, onChange: (e) => handleValueChange('left', e.target.value), placeholder: "0", disabled: currentUnit === 'auto' || linked }), _jsx("div", { className: styles.centerBox, children: _jsx("span", { className: styles.propertyName, children: property }) })] }) }), _jsxs("div", { className: styles.presets, children: [_jsx("button", { className: styles.preset, onClick: () => onChange('0'), title: "Reset to 0", children: "None" }), _jsx("button", { className: styles.preset, onClick: () => onChange('8px'), title: "Small (8px)", children: "S" }), _jsx("button", { className: styles.preset, onClick: () => onChange('16px'), title: "Medium (16px)", children: "M" }), _jsx("button", { className: styles.preset, onClick: () => onChange('24px'), title: "Large (24px)", children: "L" }), _jsx("button", { className: styles.preset, onClick: () => onChange('32px'), title: "Extra Large (32px)", children: "XL" })] })] }));
161
+ };
162
+ //# sourceMappingURL=SpacingEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpacingEditor.js","sourceRoot":"","sources":["../../../../playground/components/PropertyEditors/SpacingEditor.tsx"],"names":[],"mappings":"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"}