@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,359 @@
1
+ /**
2
+ * CodeGenerator - Generates clean story code from visual edits
3
+ */
4
+ export class CodeGenerator {
5
+ constructor(options = {}) {
6
+ this.options = {
7
+ framework: 'react',
8
+ includeImports: true,
9
+ includeHelpers: true,
10
+ prettier: true,
11
+ indentSize: 2,
12
+ useTypeScript: true,
13
+ ...options
14
+ };
15
+ this.imports = new Set();
16
+ this.helperImports = new Set();
17
+ this.componentMap = new Map();
18
+ }
19
+ /**
20
+ * Generate story code from components
21
+ */
22
+ generateStoryCode(components, rootId, storyName = 'Generated') {
23
+ this.componentMap = components;
24
+ this.imports.clear();
25
+ this.helperImports.clear();
26
+ const root = components.get(rootId);
27
+ if (!root) {
28
+ throw new Error('Root component not found');
29
+ }
30
+ // Analyze components to determine imports
31
+ this.analyzeImports(root);
32
+ // Generate the story code
33
+ const parts = [];
34
+ // Add imports
35
+ if (this.options.includeImports) {
36
+ parts.push(this.generateImports());
37
+ }
38
+ // Add story metadata
39
+ parts.push(this.generateStoryMeta(storyName));
40
+ // Add the story component
41
+ parts.push(this.generateStoryComponent(root, storyName));
42
+ return parts.filter(Boolean).join('\n\n');
43
+ }
44
+ /**
45
+ * Generate JSX code for a component tree
46
+ */
47
+ generateComponentCode(component, indent = 0) {
48
+ const indentStr = this.getIndent(indent);
49
+ const props = this.generateProps(component);
50
+ const hasChildren = component.children && component.children.length > 0;
51
+ const hasTextContent = component.textContent !== undefined && component.textContent !== '';
52
+ // Handle layout helpers specially
53
+ if (component.isHelper) {
54
+ return this.generateHelperCode(component, indent);
55
+ }
56
+ // Determine component name
57
+ const componentName = this.getComponentName(component.type);
58
+ // Build opening tag
59
+ let code = `${indentStr}<${componentName}`;
60
+ if (props) {
61
+ code += props.includes('\n')
62
+ ? `\n${this.getIndent(indent + 1)}${props}\n${indentStr}`
63
+ : ` ${props}`;
64
+ }
65
+ // Self-closing tag if no children
66
+ if (!hasChildren && !hasTextContent) {
67
+ code += ' />';
68
+ return code;
69
+ }
70
+ code += '>';
71
+ // Add text content
72
+ if (hasTextContent) {
73
+ code += component.textContent;
74
+ }
75
+ // Add children
76
+ if (hasChildren) {
77
+ if (hasTextContent) {
78
+ code += '\n';
79
+ }
80
+ else {
81
+ code += '\n';
82
+ }
83
+ const childrenCode = component.children
84
+ .map(childId => {
85
+ const childComponent = this.componentMap.get(childId);
86
+ return childComponent ? this.generateComponentCode(childComponent, indent + 1) : '';
87
+ })
88
+ .filter(Boolean)
89
+ .join('\n');
90
+ code += childrenCode;
91
+ code += `\n${indentStr}`;
92
+ }
93
+ // Closing tag
94
+ code += `</${componentName}>`;
95
+ return code;
96
+ }
97
+ /**
98
+ * Generate props string for a component
99
+ */
100
+ generateProps(component) {
101
+ const props = [];
102
+ // Add style prop if present
103
+ if (component.style && Object.keys(component.style).length > 0) {
104
+ const styleStr = this.generateStyleProp(component.style);
105
+ props.push(`style=${styleStr}`);
106
+ }
107
+ // Add other props
108
+ if (component.props) {
109
+ Object.entries(component.props).forEach(([key, value]) => {
110
+ if (key === 'style')
111
+ return; // Already handled
112
+ const propStr = this.generatePropValue(key, value);
113
+ if (propStr) {
114
+ props.push(propStr);
115
+ }
116
+ });
117
+ }
118
+ return props.join(' ');
119
+ }
120
+ /**
121
+ * Generate style prop object
122
+ */
123
+ generateStyleProp(style) {
124
+ const entries = Object.entries(style)
125
+ .filter(([_, value]) => value !== undefined && value !== '')
126
+ .map(([key, value]) => {
127
+ const formattedKey = key;
128
+ const formattedValue = typeof value === 'string' && !value.match(/^\d+$/)
129
+ ? `'${value}'`
130
+ : value;
131
+ return `${formattedKey}: ${formattedValue}`;
132
+ });
133
+ if (entries.length === 0)
134
+ return '{}';
135
+ if (entries.length === 1) {
136
+ return `{ ${entries[0]} }`;
137
+ }
138
+ return `{\n${entries.map(e => ` ${e}`).join(',\n')}\n }`;
139
+ }
140
+ /**
141
+ * Generate prop value string
142
+ */
143
+ generatePropValue(key, value) {
144
+ if (value === undefined || value === null)
145
+ return '';
146
+ // Boolean props
147
+ if (typeof value === 'boolean') {
148
+ return value ? key : `${key}={false}`;
149
+ }
150
+ // String props
151
+ if (typeof value === 'string') {
152
+ return `${key}="${value}"`;
153
+ }
154
+ // Number props
155
+ if (typeof value === 'number') {
156
+ return `${key}={${value}}`;
157
+ }
158
+ // Object/Array props
159
+ if (typeof value === 'object') {
160
+ const jsonStr = JSON.stringify(value, null, 2);
161
+ return `${key}={${jsonStr}}`;
162
+ }
163
+ return '';
164
+ }
165
+ /**
166
+ * Generate code for layout helpers
167
+ */
168
+ generateHelperCode(component, indent) {
169
+ const indentStr = this.getIndent(indent);
170
+ const helperName = component.type;
171
+ // Track helper import
172
+ this.helperImports.add(helperName);
173
+ // Generate props specific to helpers
174
+ const props = [];
175
+ // Extract spacing props from style
176
+ if (component.style) {
177
+ const { padding, paddingTop, paddingRight, paddingBottom, paddingLeft, margin, marginTop, marginRight, marginBottom, marginLeft, ...otherStyles } = component.style;
178
+ // Add spacing props
179
+ if (padding !== undefined)
180
+ props.push(`p="${padding}"`);
181
+ if (paddingTop !== undefined)
182
+ props.push(`pt="${paddingTop}"`);
183
+ if (paddingRight !== undefined)
184
+ props.push(`pr="${paddingRight}"`);
185
+ if (paddingBottom !== undefined)
186
+ props.push(`pb="${paddingBottom}"`);
187
+ if (paddingLeft !== undefined)
188
+ props.push(`pl="${paddingLeft}"`);
189
+ if (margin !== undefined)
190
+ props.push(`m="${margin}"`);
191
+ if (marginTop !== undefined)
192
+ props.push(`mt="${marginTop}"`);
193
+ if (marginRight !== undefined)
194
+ props.push(`mr="${marginRight}"`);
195
+ if (marginBottom !== undefined)
196
+ props.push(`mb="${marginBottom}"`);
197
+ if (marginLeft !== undefined)
198
+ props.push(`ml="${marginLeft}"`);
199
+ // Add layout props for Flex/Stack/Grid
200
+ if (helperName === 'Flex' || helperName === 'Stack' || helperName === 'HStack') {
201
+ if (otherStyles.gap)
202
+ props.push(`gap="${otherStyles.gap}"`);
203
+ if (otherStyles.flexDirection)
204
+ props.push(`direction="${otherStyles.flexDirection}"`);
205
+ if (otherStyles.justifyContent) {
206
+ const justify = otherStyles.justifyContent.replace('flex-', '').replace('space-', '');
207
+ props.push(`justify="${justify}"`);
208
+ }
209
+ if (otherStyles.alignItems) {
210
+ const align = otherStyles.alignItems.replace('flex-', '');
211
+ props.push(`align="${align}"`);
212
+ }
213
+ }
214
+ if (helperName === 'Grid') {
215
+ if (otherStyles.gridTemplateColumns) {
216
+ const cols = otherStyles.gridTemplateColumns.match(/repeat\((\d+)/)?.[1] || otherStyles.gridTemplateColumns;
217
+ props.push(`columns={${cols}}`);
218
+ }
219
+ if (otherStyles.gap)
220
+ props.push(`gap="${otherStyles.gap}"`);
221
+ }
222
+ // Add remaining styles
223
+ const remainingStyles = Object.entries(otherStyles)
224
+ .filter(([key]) => !['gap', 'flexDirection', 'justifyContent', 'alignItems', 'gridTemplateColumns'].includes(key));
225
+ if (remainingStyles.length > 0) {
226
+ const styleObj = Object.fromEntries(remainingStyles);
227
+ props.push(`style=${this.generateStyleProp(styleObj)}`);
228
+ }
229
+ }
230
+ const hasChildren = component.children && component.children.length > 0;
231
+ const propsStr = props.join(' ');
232
+ if (!hasChildren) {
233
+ return `${indentStr}<${helperName}${propsStr ? ' ' + propsStr : ''} />`;
234
+ }
235
+ let code = `${indentStr}<${helperName}${propsStr ? ' ' + propsStr : ''}>`;
236
+ code += '\n';
237
+ const childrenCode = component.children
238
+ .map(childId => {
239
+ const childComponent = this.componentMap.get(childId);
240
+ return childComponent ? this.generateComponentCode(childComponent, indent + 1) : '';
241
+ })
242
+ .filter(Boolean)
243
+ .join('\n');
244
+ code += childrenCode;
245
+ code += `\n${indentStr}</${helperName}>`;
246
+ return code;
247
+ }
248
+ /**
249
+ * Analyze component tree to determine imports
250
+ */
251
+ analyzeImports(component) {
252
+ // Add component to imports
253
+ if (!component.isHelper) {
254
+ this.imports.add(component.type);
255
+ }
256
+ else {
257
+ this.helperImports.add(component.type);
258
+ }
259
+ // Recursively analyze children
260
+ if (component.children) {
261
+ component.children.forEach(childId => {
262
+ const childComponent = this.componentMap.get(childId);
263
+ if (childComponent) {
264
+ this.analyzeImports(childComponent);
265
+ }
266
+ });
267
+ }
268
+ }
269
+ /**
270
+ * Generate import statements
271
+ */
272
+ generateImports() {
273
+ const importLines = [];
274
+ // React import
275
+ importLines.push("import React from 'react';");
276
+ // Helper imports (if any)
277
+ if (this.helperImports.size > 0 && this.options.includeHelpers) {
278
+ const helpers = Array.from(this.helperImports).sort();
279
+ importLines.push(`import { ${helpers.join(', ')} } from '../components/LayoutHelpers';`);
280
+ }
281
+ // Component imports (grouped by type)
282
+ const componentImports = Array.from(this.imports).sort();
283
+ if (componentImports.length > 0) {
284
+ // Group by common patterns
285
+ const designSystemImports = componentImports.filter(c => ['Button', 'Input', 'Select', 'Card', 'Badge', 'Avatar'].includes(c));
286
+ const layoutImports = componentImports.filter(c => ['Container', 'Box', 'Flex', 'Grid'].includes(c) && !this.helperImports.has(c));
287
+ const textImports = componentImports.filter(c => ['Text', 'Heading', 'Image'].includes(c));
288
+ if (designSystemImports.length > 0) {
289
+ importLines.push(`// Design system components`);
290
+ importLines.push(`import { ${designSystemImports.join(', ')} } from '@your-design-system/react';`);
291
+ }
292
+ if (layoutImports.length > 0) {
293
+ importLines.push(`// Layout components`);
294
+ importLines.push(`import { ${layoutImports.join(', ')} } from '@your-design-system/layout';`);
295
+ }
296
+ if (textImports.length > 0) {
297
+ importLines.push(`// Typography components`);
298
+ importLines.push(`import { ${textImports.join(', ')} } from '@your-design-system/typography';`);
299
+ }
300
+ }
301
+ return importLines.join('\n');
302
+ }
303
+ /**
304
+ * Generate story metadata
305
+ */
306
+ generateStoryMeta(storyName) {
307
+ return `export default {
308
+ title: 'Generated/${storyName}',
309
+ parameters: {
310
+ layout: 'fullscreen',
311
+ },
312
+ };`;
313
+ }
314
+ /**
315
+ * Generate story component
316
+ */
317
+ generateStoryComponent(root, storyName) {
318
+ const componentCode = this.generateComponentCode(root, 1);
319
+ return `export const ${this.toPascalCase(storyName)} = () => (
320
+ ${componentCode}
321
+ );`;
322
+ }
323
+ /**
324
+ * Get component name (handle special cases)
325
+ */
326
+ getComponentName(type) {
327
+ // Map common HTML elements
328
+ const htmlMap = {
329
+ 'Container': 'div',
330
+ 'Text': 'p',
331
+ 'Heading': 'h2',
332
+ 'Image': 'img',
333
+ 'List': 'ul',
334
+ 'ListItem': 'li',
335
+ 'Link': 'a'
336
+ };
337
+ // Check if it's a helper
338
+ if (this.helperImports.has(type)) {
339
+ return type;
340
+ }
341
+ // Return mapped HTML element or original type
342
+ return htmlMap[type] || type;
343
+ }
344
+ /**
345
+ * Get indent string
346
+ */
347
+ getIndent(level) {
348
+ return ' '.repeat(this.options.indentSize * level);
349
+ }
350
+ /**
351
+ * Convert string to PascalCase
352
+ */
353
+ toPascalCase(str) {
354
+ return str
355
+ .replace(/[-_\s]+(.)?/g, (_, c) => c ? c.toUpperCase() : '')
356
+ .replace(/^./, c => c.toUpperCase());
357
+ }
358
+ }
359
+ //# sourceMappingURL=CodeGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeGenerator.js","sourceRoot":"","sources":["../../../playground/services/CodeGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * DragDropManager - Manages drag and drop operations in the playground
3
+ */
4
+ import type { DraggedItem, DropZone, DropResult } from '../types';
5
+ export interface DragDropValidation {
6
+ canDrop: boolean;
7
+ reason?: string;
8
+ targetZone?: DropZone;
9
+ }
10
+ export declare class DragDropManager {
11
+ private store;
12
+ private activeDropZone;
13
+ constructor(store: any);
14
+ /**
15
+ * Start a drag operation
16
+ */
17
+ startDrag(item: DraggedItem, event?: DragEvent): void;
18
+ /**
19
+ * Update drag position and find active drop zone
20
+ */
21
+ updateDrag(event: DragEvent): void;
22
+ /**
23
+ * End drag operation and perform drop if valid
24
+ */
25
+ endDrag(overId?: string): DropResult | null;
26
+ /**
27
+ * Cancel drag operation
28
+ */
29
+ cancelDrag(): void;
30
+ /**
31
+ * Register a drop zone
32
+ */
33
+ registerDropZone(zone: DropZone): void;
34
+ /**
35
+ * Unregister a drop zone
36
+ */
37
+ unregisterDropZone(id: string): void;
38
+ /**
39
+ * Update drop zone properties
40
+ */
41
+ updateDropZone(id: string, updates: Partial<DropZone>): void;
42
+ /**
43
+ * Check if item can be dropped in zone
44
+ */
45
+ canDrop(item: DraggedItem, zone: DropZone): boolean;
46
+ /**
47
+ * Validate drop operation
48
+ */
49
+ validateDrop(item: DraggedItem, zone: DropZone): DragDropValidation;
50
+ /**
51
+ * Get drop zone at screen coordinates
52
+ */
53
+ getDropZoneAtPoint(x: number, y: number): DropZone | null;
54
+ /**
55
+ * Get all active drop zones
56
+ */
57
+ getActiveDropZones(): DropZone[];
58
+ /**
59
+ * Get nearest drop zone to coordinates
60
+ */
61
+ getNearestDropZone(x: number, y: number): DropZone | null;
62
+ /**
63
+ * Get insertion index for drop position
64
+ */
65
+ getInsertionIndex(zone: DropZone, y: number): number;
66
+ /**
67
+ * Perform the drop operation
68
+ */
69
+ private performDrop;
70
+ /**
71
+ * Get default props for component type
72
+ */
73
+ private getDefaultProps;
74
+ /**
75
+ * Clean up after drag operation
76
+ */
77
+ private cleanupDrag;
78
+ /**
79
+ * Update drop zone DOM rectangles
80
+ */
81
+ private updateDropZoneRects;
82
+ /**
83
+ * Check if point is inside rectangle
84
+ */
85
+ private pointInRect;
86
+ /**
87
+ * Check if one component is a descendant of another
88
+ */
89
+ private isDescendant;
90
+ /**
91
+ * Generate unique component ID
92
+ */
93
+ private generateComponentId;
94
+ }
95
+ //# sourceMappingURL=DragDropManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DragDropManager.d.ts","sourceRoot":"","sources":["../../../playground/services/DragDropManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,UAAU,EAEX,MAAM,UAAU,CAAC;AAGlB,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,cAAc,CAAyB;gBAEnC,KAAK,EAAE,GAAG;IAItB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI;IAsBrD;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IA4ClC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAwB3C;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAItC;;OAEG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI;IAI5D;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO;IAoCnD;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAG,kBAAkB;IAwCnE;;OAEG;IACH,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IA4BzD;;OAEG;IACH,kBAAkB,IAAI,QAAQ,EAAE;IAIhC;;OAEG;IACH,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAoBzD;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IA2CpD;;OAEG;IACH,OAAO,CAAC,WAAW;IA0CnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,WAAW;IAwBnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8B3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAG5B"}