@tpitre/story-ui 2.6.1 → 2.7.1

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 (295) hide show
  1. package/README.md +36 -37
  2. package/dist/cli/deploy.d.ts +4 -3
  3. package/dist/cli/deploy.d.ts.map +1 -1
  4. package/dist/cli/deploy.js +542 -46
  5. package/dist/cli/index.js +17 -14
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/cli/setup.d.ts.map +1 -1
  8. package/dist/cli/setup.js +4 -110
  9. package/dist/cli/setup.js.map +1 -0
  10. package/dist/cloudflare-edge/src/mcp-session.js +462 -0
  11. package/dist/cloudflare-edge/src/types.js +4 -0
  12. package/dist/cloudflare-edge/src/worker.js +106 -0
  13. package/dist/cloudflare-pages/vite.config.js +14 -0
  14. package/dist/index.d.ts +13 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +12 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/mcp-server/index.js.map +1 -0
  19. package/dist/mcp-server/mcp-stdio-server.js.map +1 -0
  20. package/dist/mcp-server/routes/claude.js.map +1 -0
  21. package/dist/mcp-server/routes/components.js.map +1 -0
  22. package/dist/mcp-server/routes/generateStory.js.map +1 -0
  23. package/dist/mcp-server/routes/hybridStories.js.map +1 -0
  24. package/dist/mcp-server/routes/memoryStories.js.map +1 -0
  25. package/dist/mcp-server/routes/storySync.js.map +1 -0
  26. package/dist/mcp-server/routes/updateStory.js +246 -0
  27. package/dist/mcp-server/sessionManager.js.map +1 -0
  28. package/dist/playground/components/AIAssistant/AIAssistant.d.ts +6 -0
  29. package/dist/playground/components/AIAssistant/AIAssistant.d.ts.map +1 -0
  30. package/dist/playground/components/AIAssistant/AIAssistant.js +109 -0
  31. package/dist/playground/components/AIAssistant/AIAssistant.js.map +1 -0
  32. package/dist/playground/components/AIAssistant/AIAssistant.module.css +166 -0
  33. package/dist/playground/components/Canvas/Canvas.d.ts +9 -0
  34. package/dist/playground/components/Canvas/Canvas.d.ts.map +1 -0
  35. package/dist/playground/components/Canvas/Canvas.js +58 -0
  36. package/dist/playground/components/Canvas/Canvas.js.map +1 -0
  37. package/dist/playground/components/Canvas/Canvas.module.css +189 -0
  38. package/dist/playground/components/Canvas/CanvasWithDnd.d.ts +9 -0
  39. package/dist/playground/components/Canvas/CanvasWithDnd.d.ts.map +1 -0
  40. package/dist/playground/components/Canvas/CanvasWithDnd.js +158 -0
  41. package/dist/playground/components/Canvas/CanvasWithDnd.js.map +1 -0
  42. package/dist/playground/components/Canvas/ComponentRenderer.d.ts +15 -0
  43. package/dist/playground/components/Canvas/ComponentRenderer.d.ts.map +1 -0
  44. package/dist/playground/components/Canvas/ComponentRenderer.js +177 -0
  45. package/dist/playground/components/Canvas/ComponentRenderer.js.map +1 -0
  46. package/dist/playground/components/Canvas/DraggableComponent.d.ts +15 -0
  47. package/dist/playground/components/Canvas/DraggableComponent.d.ts.map +1 -0
  48. package/dist/playground/components/Canvas/DraggableComponent.js +49 -0
  49. package/dist/playground/components/Canvas/DraggableComponent.js.map +1 -0
  50. package/dist/playground/components/Canvas/index.d.ts +9 -0
  51. package/dist/playground/components/Canvas/index.d.ts.map +1 -0
  52. package/dist/playground/components/Canvas/index.js +5 -0
  53. package/dist/playground/components/Canvas/index.js.map +1 -0
  54. package/dist/playground/components/CodeView/CodeView.d.ts +12 -0
  55. package/dist/playground/components/CodeView/CodeView.d.ts.map +1 -0
  56. package/dist/playground/components/CodeView/CodeView.js +77 -0
  57. package/dist/playground/components/CodeView/CodeView.js.map +1 -0
  58. package/dist/playground/components/CodeView/CodeView.module.css +178 -0
  59. package/dist/playground/components/ComponentPalette/ComponentPalette.d.ts +17 -0
  60. package/dist/playground/components/ComponentPalette/ComponentPalette.d.ts.map +1 -0
  61. package/dist/playground/components/ComponentPalette/ComponentPalette.js +138 -0
  62. package/dist/playground/components/ComponentPalette/ComponentPalette.js.map +1 -0
  63. package/dist/playground/components/ComponentPalette/ComponentPalette.module.css +217 -0
  64. package/dist/playground/components/ComponentPalette/index.d.ts +3 -0
  65. package/dist/playground/components/ComponentPalette/index.d.ts.map +1 -0
  66. package/dist/playground/components/ComponentPalette/index.js +2 -0
  67. package/dist/playground/components/ComponentPalette/index.js.map +1 -0
  68. package/dist/playground/components/DropZone/DropZone.d.ts +17 -0
  69. package/dist/playground/components/DropZone/DropZone.d.ts.map +1 -0
  70. package/dist/playground/components/DropZone/DropZone.js +73 -0
  71. package/dist/playground/components/DropZone/DropZone.js.map +1 -0
  72. package/dist/playground/components/DropZone/DropZone.module.css +86 -0
  73. package/dist/playground/components/ExportDialog/ExportDialog.d.ts +10 -0
  74. package/dist/playground/components/ExportDialog/ExportDialog.d.ts.map +1 -0
  75. package/dist/playground/components/ExportDialog/ExportDialog.js +57 -0
  76. package/dist/playground/components/ExportDialog/ExportDialog.js.map +1 -0
  77. package/dist/playground/components/ExportDialog/ExportDialog.module.css +328 -0
  78. package/dist/playground/components/LayoutHelpers/LayoutHelpers.d.ts +134 -0
  79. package/dist/playground/components/LayoutHelpers/LayoutHelpers.d.ts.map +1 -0
  80. package/dist/playground/components/LayoutHelpers/LayoutHelpers.js +254 -0
  81. package/dist/playground/components/LayoutHelpers/LayoutHelpers.js.map +1 -0
  82. package/dist/playground/components/LayoutHelpers/index.d.ts +3 -0
  83. package/dist/playground/components/LayoutHelpers/index.d.ts.map +1 -0
  84. package/dist/playground/components/LayoutHelpers/index.js +2 -0
  85. package/dist/playground/components/LayoutHelpers/index.js.map +1 -0
  86. package/dist/playground/components/Playground/Playground.d.ts +10 -0
  87. package/dist/playground/components/Playground/Playground.d.ts.map +1 -0
  88. package/dist/playground/components/Playground/Playground.js +128 -0
  89. package/dist/playground/components/Playground/Playground.js.map +1 -0
  90. package/dist/playground/components/Playground/Playground.module.css +308 -0
  91. package/dist/playground/components/PropertiesPanel/PropertiesPanel.d.ts +10 -0
  92. package/dist/playground/components/PropertiesPanel/PropertiesPanel.d.ts.map +1 -0
  93. package/dist/playground/components/PropertiesPanel/PropertiesPanel.js +150 -0
  94. package/dist/playground/components/PropertiesPanel/PropertiesPanel.js.map +1 -0
  95. package/dist/playground/components/PropertiesPanel/PropertiesPanel.module.css +155 -0
  96. package/dist/playground/components/PropertiesPanel/index.d.ts +3 -0
  97. package/dist/playground/components/PropertiesPanel/index.d.ts.map +1 -0
  98. package/dist/playground/components/PropertiesPanel/index.js +2 -0
  99. package/dist/playground/components/PropertiesPanel/index.js.map +1 -0
  100. package/dist/playground/components/PropertyEditors/BooleanEditor.d.ts +12 -0
  101. package/dist/playground/components/PropertyEditors/BooleanEditor.d.ts.map +1 -0
  102. package/dist/playground/components/PropertyEditors/BooleanEditor.js +14 -0
  103. package/dist/playground/components/PropertyEditors/BooleanEditor.js.map +1 -0
  104. package/dist/playground/components/PropertyEditors/ColorEditor.d.ts +12 -0
  105. package/dist/playground/components/PropertyEditors/ColorEditor.d.ts.map +1 -0
  106. package/dist/playground/components/PropertyEditors/ColorEditor.js +62 -0
  107. package/dist/playground/components/PropertyEditors/ColorEditor.js.map +1 -0
  108. package/dist/playground/components/PropertyEditors/IconEditor.d.ts +12 -0
  109. package/dist/playground/components/PropertyEditors/IconEditor.d.ts.map +1 -0
  110. package/dist/playground/components/PropertyEditors/IconEditor.js +123 -0
  111. package/dist/playground/components/PropertyEditors/IconEditor.js.map +1 -0
  112. package/dist/playground/components/PropertyEditors/NumberEditor.d.ts +15 -0
  113. package/dist/playground/components/PropertyEditors/NumberEditor.d.ts.map +1 -0
  114. package/dist/playground/components/PropertyEditors/NumberEditor.js +46 -0
  115. package/dist/playground/components/PropertyEditors/NumberEditor.js.map +1 -0
  116. package/dist/playground/components/PropertyEditors/PropertyEditors.module.css +432 -0
  117. package/dist/playground/components/PropertyEditors/SelectEditor.d.ts +19 -0
  118. package/dist/playground/components/PropertyEditors/SelectEditor.d.ts.map +1 -0
  119. package/dist/playground/components/PropertyEditors/SelectEditor.js +17 -0
  120. package/dist/playground/components/PropertyEditors/SelectEditor.js.map +1 -0
  121. package/dist/playground/components/PropertyEditors/SpacingEditor.d.ts +19 -0
  122. package/dist/playground/components/PropertyEditors/SpacingEditor.d.ts.map +1 -0
  123. package/dist/playground/components/PropertyEditors/SpacingEditor.js +162 -0
  124. package/dist/playground/components/PropertyEditors/SpacingEditor.js.map +1 -0
  125. package/dist/playground/components/PropertyEditors/SpacingEditor.module.css +214 -0
  126. package/dist/playground/components/PropertyEditors/TextEditor.d.ts +14 -0
  127. package/dist/playground/components/PropertyEditors/TextEditor.d.ts.map +1 -0
  128. package/dist/playground/components/PropertyEditors/TextEditor.js +38 -0
  129. package/dist/playground/components/PropertyEditors/TextEditor.js.map +1 -0
  130. package/dist/playground/components/PropertyEditors/TokenEditor.d.ts +23 -0
  131. package/dist/playground/components/PropertyEditors/TokenEditor.d.ts.map +1 -0
  132. package/dist/playground/components/PropertyEditors/TokenEditor.js +50 -0
  133. package/dist/playground/components/PropertyEditors/TokenEditor.js.map +1 -0
  134. package/dist/playground/components/PropertyEditors/index.d.ts +20 -0
  135. package/dist/playground/components/PropertyEditors/index.d.ts.map +1 -0
  136. package/dist/playground/components/PropertyEditors/index.js +12 -0
  137. package/dist/playground/components/PropertyEditors/index.js.map +1 -0
  138. package/dist/playground/components/TreeView/TreeView.d.ts +10 -0
  139. package/dist/playground/components/TreeView/TreeView.d.ts.map +1 -0
  140. package/dist/playground/components/TreeView/TreeView.js +146 -0
  141. package/dist/playground/components/TreeView/TreeView.js.map +1 -0
  142. package/dist/playground/components/TreeView/TreeView.module.css +214 -0
  143. package/dist/playground/components/TreeView/index.d.ts +3 -0
  144. package/dist/playground/components/TreeView/index.d.ts.map +1 -0
  145. package/dist/playground/components/TreeView/index.js +2 -0
  146. package/dist/playground/components/TreeView/index.js.map +1 -0
  147. package/dist/playground/config/propertyDefinitions.d.ts +73 -0
  148. package/dist/playground/config/propertyDefinitions.d.ts.map +1 -0
  149. package/dist/playground/config/propertyDefinitions.js +809 -0
  150. package/dist/playground/config/propertyDefinitions.js.map +1 -0
  151. package/dist/playground/hooks/useKeyboardShortcuts.d.ts +38 -0
  152. package/dist/playground/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  153. package/dist/playground/hooks/useKeyboardShortcuts.js +191 -0
  154. package/dist/playground/hooks/useKeyboardShortcuts.js.map +1 -0
  155. package/dist/playground/index.d.ts +21 -0
  156. package/dist/playground/index.d.ts.map +1 -0
  157. package/dist/playground/index.js +23 -0
  158. package/dist/playground/index.js.map +1 -0
  159. package/dist/playground/services/CodeGenerator.d.ts +73 -0
  160. package/dist/playground/services/CodeGenerator.d.ts.map +1 -0
  161. package/dist/playground/services/CodeGenerator.js +359 -0
  162. package/dist/playground/services/CodeGenerator.js.map +1 -0
  163. package/dist/playground/services/DragDropManager.d.ts +95 -0
  164. package/dist/playground/services/DragDropManager.d.ts.map +1 -0
  165. package/dist/playground/services/DragDropManager.js +408 -0
  166. package/dist/playground/services/DragDropManager.js.map +1 -0
  167. package/dist/playground/services/StoryParser.d.ts +73 -0
  168. package/dist/playground/services/StoryParser.d.ts.map +1 -0
  169. package/dist/playground/services/StoryParser.js +419 -0
  170. package/dist/playground/services/StoryParser.js.map +1 -0
  171. package/dist/playground/store/playgroundStore.d.ts +86 -0
  172. package/dist/playground/store/playgroundStore.d.ts.map +1 -0
  173. package/dist/playground/store/playgroundStore.js +337 -0
  174. package/dist/playground/store/playgroundStore.js.map +1 -0
  175. package/dist/playground/stories/PlaygroundDragDrop.stories.d.ts +13 -0
  176. package/dist/playground/stories/PlaygroundDragDrop.stories.d.ts.map +1 -0
  177. package/dist/playground/stories/PlaygroundDragDrop.stories.js +227 -0
  178. package/dist/playground/stories/PlaygroundDragDrop.stories.js.map +1 -0
  179. package/dist/playground/stories/PlaygroundPhase4.stories.d.ts +13 -0
  180. package/dist/playground/stories/PlaygroundPhase4.stories.d.ts.map +1 -0
  181. package/dist/playground/stories/PlaygroundPhase4.stories.js +334 -0
  182. package/dist/playground/stories/PlaygroundPhase4.stories.js.map +1 -0
  183. package/dist/playground/stories/PlaygroundPhase5.stories.d.ts +14 -0
  184. package/dist/playground/stories/PlaygroundPhase5.stories.d.ts.map +1 -0
  185. package/dist/playground/stories/PlaygroundPhase5.stories.js +512 -0
  186. package/dist/playground/stories/PlaygroundPhase5.stories.js.map +1 -0
  187. package/dist/playground/stories/PlaygroundProperties.stories.d.ts +13 -0
  188. package/dist/playground/stories/PlaygroundProperties.stories.d.ts.map +1 -0
  189. package/dist/playground/stories/PlaygroundProperties.stories.js +342 -0
  190. package/dist/playground/stories/PlaygroundProperties.stories.js.map +1 -0
  191. package/dist/playground/types/index.d.ts +251 -0
  192. package/dist/playground/types/index.d.ts.map +1 -0
  193. package/dist/playground/types/index.js +5 -0
  194. package/dist/playground/types/index.js.map +1 -0
  195. package/dist/scripts/verify-framework-adapters.js +105 -0
  196. package/dist/story-generator/componentBlacklist.js.map +1 -0
  197. package/dist/story-generator/componentDiscovery.js.map +1 -0
  198. package/dist/story-generator/configLoader.js.map +1 -0
  199. package/dist/story-generator/considerationsLoader.js.map +1 -0
  200. package/dist/story-generator/documentation-sources.js.map +1 -0
  201. package/dist/story-generator/documentationLoader.js.map +1 -0
  202. package/dist/story-generator/dynamicPackageDiscovery.js.map +1 -0
  203. package/dist/story-generator/enhancedComponentDiscovery.d.ts.map +1 -1
  204. package/dist/story-generator/enhancedComponentDiscovery.js +4 -6
  205. package/dist/story-generator/enhancedComponentDiscovery.js.map +1 -0
  206. package/dist/story-generator/generateStory.js.map +1 -0
  207. package/dist/story-generator/gitignoreManager.js.map +1 -0
  208. package/dist/story-generator/inMemoryStoryService.js.map +1 -0
  209. package/dist/story-generator/llm-providers/settings-manager.js +4 -4
  210. package/dist/story-generator/logger.js.map +1 -0
  211. package/dist/story-generator/postProcessStory.js.map +1 -0
  212. package/dist/story-generator/productionGitignoreManager.d.ts.map +1 -1
  213. package/dist/story-generator/productionGitignoreManager.js +6 -0
  214. package/dist/story-generator/productionGitignoreManager.js.map +1 -0
  215. package/dist/story-generator/promptGenerator.js.map +1 -0
  216. package/dist/story-generator/providerPresets.d.ts +54 -0
  217. package/dist/story-generator/providerPresets.d.ts.map +1 -0
  218. package/dist/story-generator/providerPresets.js +214 -0
  219. package/dist/story-generator/storyHistory.js.map +1 -0
  220. package/dist/story-generator/storySync.js.map +1 -0
  221. package/dist/story-generator/storyTracker.js.map +1 -0
  222. package/dist/story-generator/storyValidator.js.map +1 -0
  223. package/dist/story-generator/test_validation.d.ts +2 -0
  224. package/dist/story-generator/test_validation.d.ts.map +1 -0
  225. package/dist/story-generator/test_validation.js +51 -0
  226. package/dist/story-generator/universalDesignSystemAdapter.js.map +1 -0
  227. package/dist/story-generator/urlRedirectService.js.map +1 -0
  228. package/dist/story-generator/validateStory.js.map +1 -0
  229. package/dist/story-ui.config.js.map +1 -0
  230. package/dist/story-ui.config.loader.d.ts +36 -0
  231. package/dist/story-ui.config.loader.d.ts.map +1 -0
  232. package/dist/story-ui.config.loader.js +205 -0
  233. package/dist/story-ui.config.loader.js.map +1 -0
  234. package/dist/temp/package/templates/StoryUI/StoryUIPanel.js +807 -0
  235. package/dist/temp/package/templates/StoryUI/StoryUIPanel.stories.js +37 -0
  236. package/dist/temp/package/templates/StoryUI/index.js +2 -0
  237. package/dist/templates/StoryUI/StoryUIPanel.js.map +1 -0
  238. package/dist/templates/StoryUI/StoryUIPanel.stories.js.map +1 -0
  239. package/dist/templates/StoryUI/index.js.map +1 -0
  240. package/dist/templates/StoryUI/manager.d.ts +14 -0
  241. package/dist/templates/StoryUI/manager.d.ts.map +1 -0
  242. package/dist/templates/production-app/src/App.d.ts +10 -0
  243. package/dist/templates/production-app/src/App.d.ts.map +1 -0
  244. package/dist/templates/production-app/src/App.js +653 -0
  245. package/dist/templates/production-app/src/LivePreviewRenderer.d.ts +24 -0
  246. package/dist/templates/production-app/src/LivePreviewRenderer.d.ts.map +1 -0
  247. package/dist/templates/production-app/src/LivePreviewRenderer.js +199 -0
  248. package/dist/templates/production-app/src/componentRegistry.d.ts +20 -0
  249. package/dist/templates/production-app/src/componentRegistry.d.ts.map +1 -0
  250. package/dist/templates/production-app/src/componentRegistry.js +316 -0
  251. package/dist/templates/production-app/src/main.d.ts +9 -0
  252. package/dist/templates/production-app/src/main.d.ts.map +1 -0
  253. package/dist/templates/production-app/src/main.js +18 -0
  254. package/dist/templates/production-app/vite.config.d.ts +3 -0
  255. package/dist/templates/production-app/vite.config.d.ts.map +1 -0
  256. package/dist/templates/production-app/vite.config.js +71 -0
  257. package/dist/test-storybooks/angular-material-storybook/src/main.js +66 -0
  258. package/dist/test-storybooks/chakra-storybook/vite.config.js +6 -0
  259. package/dist/test-storybooks/mantine-storybook/vite.config.js +93 -0
  260. package/dist/test-storybooks/web-components-shoelace/vite.config.js +9 -0
  261. package/dist/tsconfig.tsbuildinfo +1 -0
  262. package/dist/visual-builder/components/Canvas/Canvas.js +70 -0
  263. package/dist/visual-builder/components/Canvas/ComponentRenderer.js +545 -0
  264. package/dist/visual-builder/components/CodeExporter/CodeExporter.js +25 -0
  265. package/dist/visual-builder/components/CodeExporter/codeGenerator.js +99 -0
  266. package/dist/visual-builder/components/ComponentPalette/ComponentPalette.js +8 -0
  267. package/dist/visual-builder/components/ComponentPalette/ComponentPaletteItem.js +51 -0
  268. package/dist/visual-builder/components/EmbeddedVisualBuilder.js +107 -0
  269. package/dist/visual-builder/components/PropertyEditor/PropertyEditor.js +16 -0
  270. package/dist/visual-builder/components/PropertyEditor/PropertyForm.js +88 -0
  271. package/dist/visual-builder/components/PropertyEditor/SpacingControl.js +145 -0
  272. package/dist/visual-builder/components/PropertyEditor/SpacingEditor.js +32 -0
  273. package/dist/visual-builder/components/StoryManager/SaveOnlyManager.js +94 -0
  274. package/dist/visual-builder/components/StoryManager/StoryManager.js +68 -0
  275. package/dist/visual-builder/components/StoryManager/index.js +1 -0
  276. package/dist/visual-builder/components/VisualBuilder.js +256 -0
  277. package/dist/visual-builder/config/componentRegistry.js +1758 -0
  278. package/dist/visual-builder/decorators/VisualBuilderDecorator.js +184 -0
  279. package/dist/visual-builder/example-integration.js +59 -0
  280. package/dist/visual-builder/example.js +23 -0
  281. package/dist/visual-builder/hooks/useDragAndDrop.js +137 -0
  282. package/dist/visual-builder/hooks/useSelection.js +27 -0
  283. package/dist/visual-builder/index.js +7 -0
  284. package/dist/visual-builder/store/visualBuilderStore.js +305 -0
  285. package/dist/visual-builder/types/index.js +1 -0
  286. package/dist/visual-builder/utils/__tests__/storyFileUpdater.test.js +145 -0
  287. package/dist/visual-builder/utils/aiParser.js +336 -0
  288. package/dist/visual-builder/utils/componentTreeUtils.js +111 -0
  289. package/dist/visual-builder/utils/parserValidation.js +122 -0
  290. package/dist/visual-builder/utils/storyFileManager.js +73 -0
  291. package/dist/visual-builder/utils/storyFileUpdater.js +326 -0
  292. package/dist/visual-builder/utils/storyNameExtraction.test.js +211 -0
  293. package/dist/visual-builder/utils/storyPersistence.js +180 -0
  294. package/dist/visual-builder/utils/storyToBuilder.js +813 -0
  295. package/package.json +1 -1
@@ -0,0 +1,1758 @@
1
+ // Mantine spacing tokens
2
+ const SPACING_OPTIONS = ['0', 'xs', 'sm', 'md', 'lg', 'xl', 'auto'];
3
+ // Common spacing properties for all components
4
+ export const SPACING_PROPERTIES = [
5
+ // Margin properties
6
+ {
7
+ name: 'm',
8
+ type: 'select',
9
+ defaultValue: undefined,
10
+ options: SPACING_OPTIONS,
11
+ description: 'Margin on all sides',
12
+ category: 'spacing'
13
+ },
14
+ {
15
+ name: 'mt',
16
+ type: 'select',
17
+ defaultValue: undefined,
18
+ options: SPACING_OPTIONS,
19
+ description: 'Margin top',
20
+ category: 'spacing'
21
+ },
22
+ {
23
+ name: 'mr',
24
+ type: 'select',
25
+ defaultValue: undefined,
26
+ options: SPACING_OPTIONS,
27
+ description: 'Margin right',
28
+ category: 'spacing'
29
+ },
30
+ {
31
+ name: 'mb',
32
+ type: 'select',
33
+ defaultValue: undefined,
34
+ options: SPACING_OPTIONS,
35
+ description: 'Margin bottom',
36
+ category: 'spacing'
37
+ },
38
+ {
39
+ name: 'ml',
40
+ type: 'select',
41
+ defaultValue: undefined,
42
+ options: SPACING_OPTIONS,
43
+ description: 'Margin left',
44
+ category: 'spacing'
45
+ },
46
+ {
47
+ name: 'mx',
48
+ type: 'select',
49
+ defaultValue: undefined,
50
+ options: SPACING_OPTIONS,
51
+ description: 'Margin horizontal (left and right)',
52
+ category: 'spacing'
53
+ },
54
+ {
55
+ name: 'my',
56
+ type: 'select',
57
+ defaultValue: undefined,
58
+ options: SPACING_OPTIONS,
59
+ description: 'Margin vertical (top and bottom)',
60
+ category: 'spacing'
61
+ },
62
+ // Padding properties
63
+ {
64
+ name: 'p',
65
+ type: 'select',
66
+ defaultValue: undefined,
67
+ options: SPACING_OPTIONS,
68
+ description: 'Padding on all sides',
69
+ category: 'spacing'
70
+ },
71
+ {
72
+ name: 'pt',
73
+ type: 'select',
74
+ defaultValue: undefined,
75
+ options: SPACING_OPTIONS,
76
+ description: 'Padding top',
77
+ category: 'spacing'
78
+ },
79
+ {
80
+ name: 'pr',
81
+ type: 'select',
82
+ defaultValue: undefined,
83
+ options: SPACING_OPTIONS,
84
+ description: 'Padding right',
85
+ category: 'spacing'
86
+ },
87
+ {
88
+ name: 'pb',
89
+ type: 'select',
90
+ defaultValue: undefined,
91
+ options: SPACING_OPTIONS,
92
+ description: 'Padding bottom',
93
+ category: 'spacing'
94
+ },
95
+ {
96
+ name: 'pl',
97
+ type: 'select',
98
+ defaultValue: undefined,
99
+ options: SPACING_OPTIONS,
100
+ description: 'Padding left',
101
+ category: 'spacing'
102
+ },
103
+ {
104
+ name: 'px',
105
+ type: 'select',
106
+ defaultValue: undefined,
107
+ options: SPACING_OPTIONS,
108
+ description: 'Padding horizontal (left and right)',
109
+ category: 'spacing'
110
+ },
111
+ {
112
+ name: 'py',
113
+ type: 'select',
114
+ defaultValue: undefined,
115
+ options: SPACING_OPTIONS,
116
+ description: 'Padding vertical (top and bottom)',
117
+ category: 'spacing'
118
+ }
119
+ ];
120
+ // Helper function to add spacing properties to a component
121
+ const addSpacingProperties = (properties) => {
122
+ return [...properties, ...SPACING_PROPERTIES];
123
+ };
124
+ export const MANTINE_COMPONENTS = [
125
+ {
126
+ type: 'Button',
127
+ displayName: 'Button',
128
+ category: 'Inputs',
129
+ defaultProps: {
130
+ variant: 'filled',
131
+ size: 'sm',
132
+ children: 'Click me'
133
+ },
134
+ properties: addSpacingProperties([
135
+ {
136
+ name: 'children',
137
+ type: 'string',
138
+ defaultValue: 'Click me',
139
+ description: 'Button text content',
140
+ category: 'content'
141
+ },
142
+ {
143
+ name: 'variant',
144
+ type: 'select',
145
+ defaultValue: 'filled',
146
+ options: ['filled', 'outline', 'light', 'default', 'subtle'],
147
+ description: 'Button visual style',
148
+ category: 'appearance'
149
+ },
150
+ {
151
+ name: 'size',
152
+ type: 'select',
153
+ defaultValue: 'sm',
154
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
155
+ description: 'Button size',
156
+ category: 'appearance'
157
+ },
158
+ {
159
+ name: 'color',
160
+ type: 'select',
161
+ defaultValue: 'blue',
162
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
163
+ description: 'Button color theme',
164
+ category: 'appearance'
165
+ },
166
+ {
167
+ name: 'disabled',
168
+ type: 'boolean',
169
+ defaultValue: false,
170
+ description: 'Disable button interaction',
171
+ category: 'behavior'
172
+ },
173
+ {
174
+ name: 'fullWidth',
175
+ type: 'boolean',
176
+ defaultValue: false,
177
+ description: 'Make button full width',
178
+ category: 'appearance'
179
+ }
180
+ ])
181
+ },
182
+ {
183
+ type: 'TextInput',
184
+ displayName: 'Text Input',
185
+ category: 'Inputs',
186
+ defaultProps: {
187
+ placeholder: 'Enter text...',
188
+ size: 'sm'
189
+ },
190
+ properties: addSpacingProperties([
191
+ {
192
+ name: 'placeholder',
193
+ type: 'string',
194
+ defaultValue: 'Enter text...',
195
+ description: 'Placeholder text',
196
+ category: 'content'
197
+ },
198
+ {
199
+ name: 'label',
200
+ type: 'string',
201
+ defaultValue: '',
202
+ description: 'Input label',
203
+ category: 'content'
204
+ },
205
+ {
206
+ name: 'size',
207
+ type: 'select',
208
+ defaultValue: 'sm',
209
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
210
+ description: 'Input size',
211
+ category: 'appearance'
212
+ },
213
+ {
214
+ name: 'disabled',
215
+ type: 'boolean',
216
+ defaultValue: false,
217
+ description: 'Disable input',
218
+ category: 'behavior'
219
+ }
220
+ ])
221
+ },
222
+ {
223
+ type: 'Text',
224
+ displayName: 'Text',
225
+ category: 'Typography',
226
+ defaultProps: {
227
+ children: 'Sample text',
228
+ size: 'sm'
229
+ },
230
+ properties: addSpacingProperties([
231
+ {
232
+ name: 'children',
233
+ type: 'string',
234
+ defaultValue: 'Sample text',
235
+ description: 'Text content',
236
+ category: 'content'
237
+ },
238
+ {
239
+ name: 'size',
240
+ type: 'select',
241
+ defaultValue: 'sm',
242
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
243
+ description: 'Text size',
244
+ category: 'appearance'
245
+ },
246
+ {
247
+ name: 'weight',
248
+ type: 'select',
249
+ defaultValue: 'normal',
250
+ options: ['normal', 'bold', 'lighter'],
251
+ description: 'Font weight',
252
+ category: 'appearance'
253
+ },
254
+ {
255
+ name: 'color',
256
+ type: 'string',
257
+ defaultValue: '',
258
+ description: 'Text color',
259
+ category: 'appearance'
260
+ }
261
+ ])
262
+ },
263
+ {
264
+ type: 'Title',
265
+ displayName: 'Title',
266
+ category: 'Typography',
267
+ defaultProps: {
268
+ children: 'Page Title',
269
+ order: 1
270
+ },
271
+ properties: addSpacingProperties([
272
+ {
273
+ name: 'children',
274
+ type: 'string',
275
+ defaultValue: 'Page Title',
276
+ description: 'Title text',
277
+ category: 'content'
278
+ },
279
+ {
280
+ name: 'order',
281
+ type: 'select',
282
+ defaultValue: 1,
283
+ options: ['1', '2', '3', '4', '5', '6'],
284
+ description: 'Heading level (h1-h6)',
285
+ category: 'appearance'
286
+ },
287
+ {
288
+ name: 'color',
289
+ type: 'string',
290
+ defaultValue: '',
291
+ description: 'Title color',
292
+ category: 'appearance'
293
+ }
294
+ ])
295
+ },
296
+ {
297
+ type: 'Container',
298
+ displayName: 'Container',
299
+ category: 'Layout',
300
+ defaultProps: {
301
+ size: 'md',
302
+ children: []
303
+ },
304
+ properties: addSpacingProperties([
305
+ {
306
+ name: 'size',
307
+ type: 'select',
308
+ defaultValue: 'md',
309
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
310
+ description: 'Container max width',
311
+ category: 'appearance'
312
+ },
313
+ {
314
+ name: 'fluid',
315
+ type: 'boolean',
316
+ defaultValue: false,
317
+ description: 'Full width container',
318
+ category: 'behavior'
319
+ }
320
+ ])
321
+ },
322
+ {
323
+ type: 'Group',
324
+ displayName: 'Group',
325
+ category: 'Layout',
326
+ defaultProps: {
327
+ justify: 'flex-start',
328
+ align: 'center',
329
+ children: []
330
+ },
331
+ properties: addSpacingProperties([
332
+ {
333
+ name: 'justify',
334
+ type: 'select',
335
+ defaultValue: 'flex-start',
336
+ options: ['flex-start', 'center', 'flex-end', 'space-between', 'space-around'],
337
+ description: 'Horizontal alignment',
338
+ category: 'appearance'
339
+ },
340
+ {
341
+ name: 'align',
342
+ type: 'select',
343
+ defaultValue: 'center',
344
+ options: ['flex-start', 'center', 'flex-end', 'stretch'],
345
+ description: 'Vertical alignment',
346
+ category: 'appearance'
347
+ },
348
+ {
349
+ name: 'gap',
350
+ type: 'select',
351
+ defaultValue: 'md',
352
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
353
+ description: 'Gap between items',
354
+ category: 'spacing'
355
+ }
356
+ ])
357
+ },
358
+ {
359
+ type: 'Stack',
360
+ displayName: 'Stack',
361
+ category: 'Layout',
362
+ defaultProps: {
363
+ gap: 'md',
364
+ children: []
365
+ },
366
+ properties: addSpacingProperties([
367
+ {
368
+ name: 'gap',
369
+ type: 'select',
370
+ defaultValue: 'md',
371
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
372
+ description: 'Gap between items',
373
+ category: 'spacing'
374
+ },
375
+ {
376
+ name: 'align',
377
+ type: 'select',
378
+ defaultValue: 'stretch',
379
+ options: ['flex-start', 'center', 'flex-end', 'stretch'],
380
+ description: 'Horizontal alignment',
381
+ category: 'appearance'
382
+ }
383
+ ])
384
+ },
385
+ {
386
+ type: 'Card',
387
+ displayName: 'Card',
388
+ category: 'Layout',
389
+ defaultProps: {
390
+ shadow: 'sm',
391
+ padding: 'lg',
392
+ radius: 'md',
393
+ withBorder: true,
394
+ children: []
395
+ },
396
+ properties: addSpacingProperties([
397
+ {
398
+ name: 'shadow',
399
+ type: 'select',
400
+ defaultValue: 'sm',
401
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
402
+ description: 'Card shadow',
403
+ category: 'appearance'
404
+ },
405
+ {
406
+ name: 'padding',
407
+ type: 'select',
408
+ defaultValue: 'lg',
409
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
410
+ description: 'Card padding',
411
+ category: 'spacing'
412
+ },
413
+ {
414
+ name: 'radius',
415
+ type: 'select',
416
+ defaultValue: 'md',
417
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
418
+ description: 'Border radius',
419
+ category: 'appearance'
420
+ },
421
+ {
422
+ name: 'withBorder',
423
+ type: 'boolean',
424
+ defaultValue: true,
425
+ description: 'Show border',
426
+ category: 'appearance'
427
+ }
428
+ ])
429
+ },
430
+ {
431
+ type: 'CardSection',
432
+ displayName: 'Card Section',
433
+ category: 'Layout',
434
+ defaultProps: {
435
+ children: []
436
+ },
437
+ properties: addSpacingProperties([
438
+ {
439
+ name: 'withBorder',
440
+ type: 'boolean',
441
+ defaultValue: false,
442
+ description: 'Show border around section',
443
+ category: 'appearance'
444
+ },
445
+ {
446
+ name: 'inheritPadding',
447
+ type: 'boolean',
448
+ defaultValue: false,
449
+ description: 'Inherit card padding',
450
+ category: 'appearance'
451
+ }
452
+ ])
453
+ },
454
+ {
455
+ type: 'Badge',
456
+ displayName: 'Badge',
457
+ category: 'Display',
458
+ defaultProps: {
459
+ children: 'New',
460
+ variant: 'filled',
461
+ color: 'blue',
462
+ size: 'sm'
463
+ },
464
+ properties: addSpacingProperties([
465
+ {
466
+ name: 'children',
467
+ type: 'string',
468
+ defaultValue: 'New',
469
+ description: 'Badge text content',
470
+ category: 'content'
471
+ },
472
+ {
473
+ name: 'variant',
474
+ type: 'select',
475
+ defaultValue: 'filled',
476
+ options: ['filled', 'light', 'outline', 'dot'],
477
+ description: 'Badge variant',
478
+ category: 'appearance'
479
+ },
480
+ {
481
+ name: 'color',
482
+ type: 'select',
483
+ defaultValue: 'blue',
484
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
485
+ description: 'Badge color',
486
+ category: 'appearance'
487
+ },
488
+ {
489
+ name: 'size',
490
+ type: 'select',
491
+ defaultValue: 'sm',
492
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
493
+ description: 'Badge size',
494
+ category: 'appearance'
495
+ }
496
+ ])
497
+ },
498
+ {
499
+ type: 'Anchor',
500
+ displayName: 'Link',
501
+ category: 'Navigation',
502
+ defaultProps: {
503
+ children: 'Link text',
504
+ href: '#',
505
+ size: 'sm'
506
+ },
507
+ properties: addSpacingProperties([
508
+ {
509
+ name: 'children',
510
+ type: 'string',
511
+ defaultValue: 'Link text',
512
+ description: 'Link text content',
513
+ category: 'content'
514
+ },
515
+ {
516
+ name: 'href',
517
+ type: 'string',
518
+ defaultValue: '#',
519
+ description: 'Link URL',
520
+ category: 'behavior'
521
+ },
522
+ {
523
+ name: 'size',
524
+ type: 'select',
525
+ defaultValue: 'sm',
526
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
527
+ description: 'Link size',
528
+ category: 'appearance'
529
+ },
530
+ {
531
+ name: 'underline',
532
+ type: 'select',
533
+ defaultValue: 'hover',
534
+ options: ['always', 'hover', 'never'],
535
+ description: 'Underline style',
536
+ category: 'appearance'
537
+ }
538
+ ])
539
+ },
540
+ {
541
+ type: 'Image',
542
+ displayName: 'Image',
543
+ category: 'Media',
544
+ defaultProps: {
545
+ src: 'https://images.unsplash.com/photo-1511216335778-7cb8f49fa7a3?w=400&h=300&fit=crop',
546
+ alt: 'Sample image',
547
+ radius: 'sm',
548
+ aspectRatio: '16:9',
549
+ fit: 'cover'
550
+ },
551
+ properties: addSpacingProperties([
552
+ {
553
+ name: 'src',
554
+ type: 'string',
555
+ defaultValue: 'https://images.unsplash.com/photo-1511216335778-7cb8f49fa7a3?w=400&h=300&fit=crop',
556
+ description: 'Image source URL',
557
+ category: 'content'
558
+ },
559
+ {
560
+ name: 'alt',
561
+ type: 'string',
562
+ defaultValue: 'Sample image',
563
+ description: 'Image alt text',
564
+ category: 'content'
565
+ },
566
+ {
567
+ name: 'radius',
568
+ type: 'select',
569
+ defaultValue: 'sm',
570
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
571
+ description: 'Image border radius',
572
+ category: 'appearance'
573
+ },
574
+ {
575
+ name: 'aspectRatio',
576
+ type: 'select',
577
+ defaultValue: '16:9',
578
+ options: ['16:9', '4:3', '1:1', '3:2', '21:9'],
579
+ description: 'Image aspect ratio',
580
+ category: 'appearance'
581
+ },
582
+ {
583
+ name: 'fit',
584
+ type: 'select',
585
+ defaultValue: 'cover',
586
+ options: ['contain', 'cover', 'fill', 'none', 'scale-down'],
587
+ description: 'How the image fits within its container',
588
+ category: 'appearance'
589
+ }
590
+ ])
591
+ },
592
+ {
593
+ type: 'Divider',
594
+ displayName: 'Divider',
595
+ category: 'Layout',
596
+ defaultProps: {
597
+ size: 'xs',
598
+ orientation: 'horizontal'
599
+ },
600
+ properties: addSpacingProperties([
601
+ {
602
+ name: 'size',
603
+ type: 'select',
604
+ defaultValue: 'xs',
605
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
606
+ description: 'Divider thickness',
607
+ category: 'appearance'
608
+ },
609
+ {
610
+ name: 'orientation',
611
+ type: 'select',
612
+ defaultValue: 'horizontal',
613
+ options: ['horizontal', 'vertical'],
614
+ description: 'Divider orientation',
615
+ category: 'appearance'
616
+ },
617
+ {
618
+ name: 'label',
619
+ type: 'string',
620
+ defaultValue: '',
621
+ description: 'Divider label (optional)',
622
+ category: 'content'
623
+ },
624
+ {
625
+ name: 'labelPosition',
626
+ type: 'select',
627
+ defaultValue: 'center',
628
+ options: ['left', 'center', 'right'],
629
+ description: 'Label position',
630
+ category: 'appearance'
631
+ }
632
+ ])
633
+ },
634
+ {
635
+ type: 'Paper',
636
+ displayName: 'Paper',
637
+ category: 'Layout',
638
+ defaultProps: {
639
+ shadow: 'xs',
640
+ radius: 'md',
641
+ p: 'md',
642
+ withBorder: false,
643
+ children: []
644
+ },
645
+ properties: addSpacingProperties([
646
+ {
647
+ name: 'shadow',
648
+ type: 'select',
649
+ defaultValue: 'xs',
650
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
651
+ description: 'Paper shadow',
652
+ category: 'appearance'
653
+ },
654
+ {
655
+ name: 'radius',
656
+ type: 'select',
657
+ defaultValue: 'md',
658
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
659
+ description: 'Border radius',
660
+ category: 'appearance'
661
+ },
662
+ {
663
+ name: 'p',
664
+ type: 'select',
665
+ defaultValue: 'md',
666
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
667
+ description: 'Padding',
668
+ category: 'spacing'
669
+ },
670
+ {
671
+ name: 'withBorder',
672
+ type: 'boolean',
673
+ defaultValue: false,
674
+ description: 'Show border',
675
+ category: 'appearance'
676
+ }
677
+ ])
678
+ },
679
+ {
680
+ type: 'Alert',
681
+ displayName: 'Alert',
682
+ category: 'Feedback',
683
+ defaultProps: {
684
+ title: 'Alert title',
685
+ children: 'This is an alert message',
686
+ color: 'blue',
687
+ variant: 'light'
688
+ },
689
+ properties: addSpacingProperties([
690
+ {
691
+ name: 'title',
692
+ type: 'string',
693
+ defaultValue: 'Alert title',
694
+ description: 'Alert title',
695
+ category: 'content'
696
+ },
697
+ {
698
+ name: 'children',
699
+ type: 'string',
700
+ defaultValue: 'This is an alert message',
701
+ description: 'Alert message content',
702
+ category: 'content'
703
+ },
704
+ {
705
+ name: 'color',
706
+ type: 'select',
707
+ defaultValue: 'blue',
708
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
709
+ description: 'Alert color',
710
+ category: 'appearance'
711
+ },
712
+ {
713
+ name: 'variant',
714
+ type: 'select',
715
+ defaultValue: 'light',
716
+ options: ['filled', 'light', 'outline'],
717
+ description: 'Alert variant',
718
+ category: 'appearance'
719
+ }
720
+ ])
721
+ },
722
+ // Additional Input Components
723
+ {
724
+ type: 'PasswordInput',
725
+ displayName: 'Password Input',
726
+ category: 'Inputs',
727
+ defaultProps: {
728
+ placeholder: 'Enter password...',
729
+ size: 'sm'
730
+ },
731
+ properties: addSpacingProperties([
732
+ {
733
+ name: 'placeholder',
734
+ type: 'string',
735
+ defaultValue: 'Enter password...',
736
+ description: 'Placeholder text',
737
+ category: 'content'
738
+ },
739
+ {
740
+ name: 'label',
741
+ type: 'string',
742
+ defaultValue: '',
743
+ description: 'Input label',
744
+ category: 'content'
745
+ },
746
+ {
747
+ name: 'size',
748
+ type: 'select',
749
+ defaultValue: 'sm',
750
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
751
+ description: 'Input size',
752
+ category: 'appearance'
753
+ },
754
+ {
755
+ name: 'visible',
756
+ type: 'boolean',
757
+ defaultValue: false,
758
+ description: 'Show password',
759
+ category: 'behavior'
760
+ },
761
+ {
762
+ name: 'disabled',
763
+ type: 'boolean',
764
+ defaultValue: false,
765
+ description: 'Disable input',
766
+ category: 'behavior'
767
+ }
768
+ ])
769
+ },
770
+ {
771
+ type: 'Textarea',
772
+ displayName: 'Textarea',
773
+ category: 'Inputs',
774
+ defaultProps: {
775
+ placeholder: 'Enter text...',
776
+ size: 'sm',
777
+ rows: 4
778
+ },
779
+ properties: addSpacingProperties([
780
+ {
781
+ name: 'placeholder',
782
+ type: 'string',
783
+ defaultValue: 'Enter text...',
784
+ description: 'Placeholder text',
785
+ category: 'content'
786
+ },
787
+ {
788
+ name: 'label',
789
+ type: 'string',
790
+ defaultValue: '',
791
+ description: 'Input label',
792
+ category: 'content'
793
+ },
794
+ {
795
+ name: 'size',
796
+ type: 'select',
797
+ defaultValue: 'sm',
798
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
799
+ description: 'Input size',
800
+ category: 'appearance'
801
+ },
802
+ {
803
+ name: 'rows',
804
+ type: 'number',
805
+ defaultValue: 4,
806
+ description: 'Number of rows',
807
+ category: 'appearance'
808
+ },
809
+ {
810
+ name: 'autosize',
811
+ type: 'boolean',
812
+ defaultValue: false,
813
+ description: 'Auto resize height',
814
+ category: 'behavior'
815
+ },
816
+ {
817
+ name: 'disabled',
818
+ type: 'boolean',
819
+ defaultValue: false,
820
+ description: 'Disable input',
821
+ category: 'behavior'
822
+ }
823
+ ])
824
+ },
825
+ {
826
+ type: 'Select',
827
+ displayName: 'Select',
828
+ category: 'Inputs',
829
+ defaultProps: {
830
+ placeholder: 'Select option...',
831
+ size: 'sm',
832
+ data: ['Option 1', 'Option 2', 'Option 3']
833
+ },
834
+ properties: addSpacingProperties([
835
+ {
836
+ name: 'placeholder',
837
+ type: 'string',
838
+ defaultValue: 'Select option...',
839
+ description: 'Placeholder text',
840
+ category: 'content'
841
+ },
842
+ {
843
+ name: 'label',
844
+ type: 'string',
845
+ defaultValue: '',
846
+ description: 'Input label',
847
+ category: 'content'
848
+ },
849
+ {
850
+ name: 'size',
851
+ type: 'select',
852
+ defaultValue: 'sm',
853
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
854
+ description: 'Input size',
855
+ category: 'appearance'
856
+ },
857
+ {
858
+ name: 'searchable',
859
+ type: 'boolean',
860
+ defaultValue: false,
861
+ description: 'Enable search',
862
+ category: 'behavior'
863
+ },
864
+ {
865
+ name: 'clearable',
866
+ type: 'boolean',
867
+ defaultValue: false,
868
+ description: 'Show clear button',
869
+ category: 'behavior'
870
+ },
871
+ {
872
+ name: 'disabled',
873
+ type: 'boolean',
874
+ defaultValue: false,
875
+ description: 'Disable input',
876
+ category: 'behavior'
877
+ }
878
+ ])
879
+ },
880
+ {
881
+ type: 'MultiSelect',
882
+ displayName: 'Multi Select',
883
+ category: 'Inputs',
884
+ defaultProps: {
885
+ placeholder: 'Select options...',
886
+ size: 'sm',
887
+ data: ['Option 1', 'Option 2', 'Option 3']
888
+ },
889
+ properties: addSpacingProperties([
890
+ {
891
+ name: 'placeholder',
892
+ type: 'string',
893
+ defaultValue: 'Select options...',
894
+ description: 'Placeholder text',
895
+ category: 'content'
896
+ },
897
+ {
898
+ name: 'label',
899
+ type: 'string',
900
+ defaultValue: '',
901
+ description: 'Input label',
902
+ category: 'content'
903
+ },
904
+ {
905
+ name: 'size',
906
+ type: 'select',
907
+ defaultValue: 'sm',
908
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
909
+ description: 'Input size',
910
+ category: 'appearance'
911
+ },
912
+ {
913
+ name: 'searchable',
914
+ type: 'boolean',
915
+ defaultValue: true,
916
+ description: 'Enable search',
917
+ category: 'behavior'
918
+ },
919
+ {
920
+ name: 'clearable',
921
+ type: 'boolean',
922
+ defaultValue: true,
923
+ description: 'Show clear button',
924
+ category: 'behavior'
925
+ },
926
+ {
927
+ name: 'disabled',
928
+ type: 'boolean',
929
+ defaultValue: false,
930
+ description: 'Disable input',
931
+ category: 'behavior'
932
+ }
933
+ ])
934
+ },
935
+ {
936
+ type: 'NumberInput',
937
+ displayName: 'Number Input',
938
+ category: 'Inputs',
939
+ defaultProps: {
940
+ placeholder: 'Enter number...',
941
+ size: 'sm'
942
+ },
943
+ properties: addSpacingProperties([
944
+ {
945
+ name: 'placeholder',
946
+ type: 'string',
947
+ defaultValue: 'Enter number...',
948
+ description: 'Placeholder text',
949
+ category: 'content'
950
+ },
951
+ {
952
+ name: 'label',
953
+ type: 'string',
954
+ defaultValue: '',
955
+ description: 'Input label',
956
+ category: 'content'
957
+ },
958
+ {
959
+ name: 'size',
960
+ type: 'select',
961
+ defaultValue: 'sm',
962
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
963
+ description: 'Input size',
964
+ category: 'appearance'
965
+ },
966
+ {
967
+ name: 'min',
968
+ type: 'number',
969
+ defaultValue: undefined,
970
+ description: 'Minimum value',
971
+ category: 'behavior'
972
+ },
973
+ {
974
+ name: 'max',
975
+ type: 'number',
976
+ defaultValue: undefined,
977
+ description: 'Maximum value',
978
+ category: 'behavior'
979
+ },
980
+ {
981
+ name: 'step',
982
+ type: 'number',
983
+ defaultValue: 1,
984
+ description: 'Step value',
985
+ category: 'behavior'
986
+ },
987
+ {
988
+ name: 'disabled',
989
+ type: 'boolean',
990
+ defaultValue: false,
991
+ description: 'Disable input',
992
+ category: 'behavior'
993
+ }
994
+ ])
995
+ },
996
+ {
997
+ type: 'Checkbox',
998
+ displayName: 'Checkbox',
999
+ category: 'Inputs',
1000
+ defaultProps: {
1001
+ label: 'Checkbox label',
1002
+ size: 'sm'
1003
+ },
1004
+ properties: addSpacingProperties([
1005
+ {
1006
+ name: 'label',
1007
+ type: 'string',
1008
+ defaultValue: 'Checkbox label',
1009
+ description: 'Checkbox label',
1010
+ category: 'content'
1011
+ },
1012
+ {
1013
+ name: 'size',
1014
+ type: 'select',
1015
+ defaultValue: 'sm',
1016
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
1017
+ description: 'Checkbox size',
1018
+ category: 'appearance'
1019
+ },
1020
+ {
1021
+ name: 'color',
1022
+ type: 'select',
1023
+ defaultValue: 'blue',
1024
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
1025
+ description: 'Checkbox color',
1026
+ category: 'appearance'
1027
+ },
1028
+ {
1029
+ name: 'indeterminate',
1030
+ type: 'boolean',
1031
+ defaultValue: false,
1032
+ description: 'Indeterminate state',
1033
+ category: 'behavior'
1034
+ },
1035
+ {
1036
+ name: 'disabled',
1037
+ type: 'boolean',
1038
+ defaultValue: false,
1039
+ description: 'Disable checkbox',
1040
+ category: 'behavior'
1041
+ }
1042
+ ])
1043
+ },
1044
+ {
1045
+ type: 'Radio',
1046
+ displayName: 'Radio',
1047
+ category: 'Inputs',
1048
+ defaultProps: {
1049
+ label: 'Radio label',
1050
+ size: 'sm'
1051
+ },
1052
+ properties: addSpacingProperties([
1053
+ {
1054
+ name: 'label',
1055
+ type: 'string',
1056
+ defaultValue: 'Radio label',
1057
+ description: 'Radio label',
1058
+ category: 'content'
1059
+ },
1060
+ {
1061
+ name: 'size',
1062
+ type: 'select',
1063
+ defaultValue: 'sm',
1064
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
1065
+ description: 'Radio size',
1066
+ category: 'appearance'
1067
+ },
1068
+ {
1069
+ name: 'color',
1070
+ type: 'select',
1071
+ defaultValue: 'blue',
1072
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
1073
+ description: 'Radio color',
1074
+ category: 'appearance'
1075
+ },
1076
+ {
1077
+ name: 'disabled',
1078
+ type: 'boolean',
1079
+ defaultValue: false,
1080
+ description: 'Disable radio',
1081
+ category: 'behavior'
1082
+ }
1083
+ ])
1084
+ },
1085
+ {
1086
+ type: 'Switch',
1087
+ displayName: 'Switch',
1088
+ category: 'Inputs',
1089
+ defaultProps: {
1090
+ label: 'Switch label',
1091
+ size: 'sm'
1092
+ },
1093
+ properties: addSpacingProperties([
1094
+ {
1095
+ name: 'label',
1096
+ type: 'string',
1097
+ defaultValue: 'Switch label',
1098
+ description: 'Switch label',
1099
+ category: 'content'
1100
+ },
1101
+ {
1102
+ name: 'size',
1103
+ type: 'select',
1104
+ defaultValue: 'sm',
1105
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
1106
+ description: 'Switch size',
1107
+ category: 'appearance'
1108
+ },
1109
+ {
1110
+ name: 'color',
1111
+ type: 'select',
1112
+ defaultValue: 'blue',
1113
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
1114
+ description: 'Switch color',
1115
+ category: 'appearance'
1116
+ },
1117
+ {
1118
+ name: 'disabled',
1119
+ type: 'boolean',
1120
+ defaultValue: false,
1121
+ description: 'Disable switch',
1122
+ category: 'behavior'
1123
+ }
1124
+ ])
1125
+ },
1126
+ // Layout Components
1127
+ {
1128
+ type: 'Box',
1129
+ displayName: 'Box',
1130
+ category: 'Layout',
1131
+ defaultProps: {
1132
+ children: []
1133
+ },
1134
+ properties: addSpacingProperties([
1135
+ {
1136
+ name: 'bg',
1137
+ type: 'string',
1138
+ defaultValue: '',
1139
+ description: 'Background color',
1140
+ category: 'appearance'
1141
+ },
1142
+ {
1143
+ name: 'c',
1144
+ type: 'string',
1145
+ defaultValue: '',
1146
+ description: 'Text color',
1147
+ category: 'appearance'
1148
+ }
1149
+ ])
1150
+ },
1151
+ {
1152
+ type: 'Flex',
1153
+ displayName: 'Flex',
1154
+ category: 'Layout',
1155
+ defaultProps: {
1156
+ direction: 'row',
1157
+ justify: 'flex-start',
1158
+ align: 'stretch',
1159
+ children: []
1160
+ },
1161
+ properties: addSpacingProperties([
1162
+ {
1163
+ name: 'direction',
1164
+ type: 'select',
1165
+ defaultValue: 'row',
1166
+ options: ['row', 'column', 'row-reverse', 'column-reverse'],
1167
+ description: 'Flex direction',
1168
+ category: 'appearance'
1169
+ },
1170
+ {
1171
+ name: 'justify',
1172
+ type: 'select',
1173
+ defaultValue: 'flex-start',
1174
+ options: ['flex-start', 'center', 'flex-end', 'space-between', 'space-around', 'space-evenly'],
1175
+ description: 'Justify content',
1176
+ category: 'appearance'
1177
+ },
1178
+ {
1179
+ name: 'align',
1180
+ type: 'select',
1181
+ defaultValue: 'stretch',
1182
+ options: ['stretch', 'flex-start', 'center', 'flex-end', 'baseline'],
1183
+ description: 'Align items',
1184
+ category: 'appearance'
1185
+ },
1186
+ {
1187
+ name: 'wrap',
1188
+ type: 'select',
1189
+ defaultValue: 'nowrap',
1190
+ options: ['nowrap', 'wrap', 'wrap-reverse'],
1191
+ description: 'Flex wrap',
1192
+ category: 'appearance'
1193
+ },
1194
+ {
1195
+ name: 'gap',
1196
+ type: 'select',
1197
+ defaultValue: undefined,
1198
+ options: SPACING_OPTIONS,
1199
+ description: 'Gap between items',
1200
+ category: 'spacing'
1201
+ }
1202
+ ])
1203
+ },
1204
+ {
1205
+ type: 'Grid',
1206
+ displayName: 'Grid',
1207
+ category: 'Layout',
1208
+ defaultProps: {
1209
+ children: []
1210
+ },
1211
+ properties: addSpacingProperties([
1212
+ {
1213
+ name: 'columns',
1214
+ type: 'number',
1215
+ defaultValue: 12,
1216
+ description: 'Number of columns',
1217
+ category: 'appearance'
1218
+ },
1219
+ {
1220
+ name: 'gutter',
1221
+ type: 'select',
1222
+ defaultValue: 'md',
1223
+ options: SPACING_OPTIONS,
1224
+ description: 'Gutter size',
1225
+ category: 'spacing'
1226
+ },
1227
+ {
1228
+ name: 'grow',
1229
+ type: 'boolean',
1230
+ defaultValue: false,
1231
+ description: 'Allow columns to grow',
1232
+ category: 'behavior'
1233
+ }
1234
+ ])
1235
+ },
1236
+ {
1237
+ type: 'GridCol',
1238
+ displayName: 'Grid Column',
1239
+ category: 'Layout',
1240
+ defaultProps: {
1241
+ span: 12,
1242
+ children: []
1243
+ },
1244
+ properties: addSpacingProperties([
1245
+ {
1246
+ name: 'span',
1247
+ type: 'number',
1248
+ defaultValue: 12,
1249
+ description: 'Column span',
1250
+ category: 'appearance'
1251
+ },
1252
+ {
1253
+ name: 'offset',
1254
+ type: 'number',
1255
+ defaultValue: 0,
1256
+ description: 'Column offset',
1257
+ category: 'appearance'
1258
+ }
1259
+ ])
1260
+ },
1261
+ {
1262
+ type: 'SimpleGrid',
1263
+ displayName: 'Simple Grid',
1264
+ category: 'Layout',
1265
+ defaultProps: {
1266
+ cols: 2,
1267
+ children: []
1268
+ },
1269
+ properties: addSpacingProperties([
1270
+ {
1271
+ name: 'cols',
1272
+ type: 'number',
1273
+ defaultValue: 2,
1274
+ description: 'Number of columns',
1275
+ category: 'appearance'
1276
+ },
1277
+ {
1278
+ name: 'spacing',
1279
+ type: 'select',
1280
+ defaultValue: 'md',
1281
+ options: SPACING_OPTIONS,
1282
+ description: 'Spacing between items',
1283
+ category: 'spacing'
1284
+ },
1285
+ {
1286
+ name: 'verticalSpacing',
1287
+ type: 'select',
1288
+ defaultValue: undefined,
1289
+ options: SPACING_OPTIONS,
1290
+ description: 'Vertical spacing',
1291
+ category: 'spacing'
1292
+ }
1293
+ ])
1294
+ },
1295
+ // Typography Components
1296
+ {
1297
+ type: 'Code',
1298
+ displayName: 'Code',
1299
+ category: 'Typography',
1300
+ defaultProps: {
1301
+ children: 'console.log("Hello world")'
1302
+ },
1303
+ properties: addSpacingProperties([
1304
+ {
1305
+ name: 'children',
1306
+ type: 'string',
1307
+ defaultValue: 'console.log("Hello world")',
1308
+ description: 'Code content',
1309
+ category: 'content'
1310
+ },
1311
+ {
1312
+ name: 'color',
1313
+ type: 'select',
1314
+ defaultValue: 'blue',
1315
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
1316
+ description: 'Code color',
1317
+ category: 'appearance'
1318
+ },
1319
+ {
1320
+ name: 'block',
1321
+ type: 'boolean',
1322
+ defaultValue: false,
1323
+ description: 'Display as block',
1324
+ category: 'appearance'
1325
+ }
1326
+ ])
1327
+ },
1328
+ {
1329
+ type: 'Mark',
1330
+ displayName: 'Highlight',
1331
+ category: 'Typography',
1332
+ defaultProps: {
1333
+ children: 'Highlighted text'
1334
+ },
1335
+ properties: addSpacingProperties([
1336
+ {
1337
+ name: 'children',
1338
+ type: 'string',
1339
+ defaultValue: 'Highlighted text',
1340
+ description: 'Text to highlight',
1341
+ category: 'content'
1342
+ },
1343
+ {
1344
+ name: 'color',
1345
+ type: 'select',
1346
+ defaultValue: 'yellow',
1347
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
1348
+ description: 'Highlight color',
1349
+ category: 'appearance'
1350
+ }
1351
+ ])
1352
+ },
1353
+ {
1354
+ type: 'Blockquote',
1355
+ displayName: 'Blockquote',
1356
+ category: 'Typography',
1357
+ defaultProps: {
1358
+ children: 'This is a blockquote',
1359
+ cite: '- Author'
1360
+ },
1361
+ properties: addSpacingProperties([
1362
+ {
1363
+ name: 'children',
1364
+ type: 'string',
1365
+ defaultValue: 'This is a blockquote',
1366
+ description: 'Quote content',
1367
+ category: 'content'
1368
+ },
1369
+ {
1370
+ name: 'cite',
1371
+ type: 'string',
1372
+ defaultValue: '- Author',
1373
+ description: 'Citation',
1374
+ category: 'content'
1375
+ },
1376
+ {
1377
+ name: 'color',
1378
+ type: 'select',
1379
+ defaultValue: 'blue',
1380
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
1381
+ description: 'Quote color',
1382
+ category: 'appearance'
1383
+ }
1384
+ ])
1385
+ },
1386
+ // Display Components
1387
+ {
1388
+ type: 'Avatar',
1389
+ displayName: 'Avatar',
1390
+ category: 'Display',
1391
+ defaultProps: {
1392
+ size: 'md',
1393
+ radius: 'xl'
1394
+ },
1395
+ properties: addSpacingProperties([
1396
+ {
1397
+ name: 'src',
1398
+ type: 'string',
1399
+ defaultValue: '',
1400
+ description: 'Avatar image URL',
1401
+ category: 'content'
1402
+ },
1403
+ {
1404
+ name: 'alt',
1405
+ type: 'string',
1406
+ defaultValue: '',
1407
+ description: 'Alt text',
1408
+ category: 'content'
1409
+ },
1410
+ {
1411
+ name: 'size',
1412
+ type: 'select',
1413
+ defaultValue: 'md',
1414
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
1415
+ description: 'Avatar size',
1416
+ category: 'appearance'
1417
+ },
1418
+ {
1419
+ name: 'radius',
1420
+ type: 'select',
1421
+ defaultValue: 'xl',
1422
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
1423
+ description: 'Border radius',
1424
+ category: 'appearance'
1425
+ },
1426
+ {
1427
+ name: 'color',
1428
+ type: 'select',
1429
+ defaultValue: 'blue',
1430
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
1431
+ description: 'Avatar color',
1432
+ category: 'appearance'
1433
+ }
1434
+ ])
1435
+ },
1436
+ {
1437
+ type: 'Indicator',
1438
+ displayName: 'Indicator',
1439
+ category: 'Display',
1440
+ defaultProps: {
1441
+ children: 'Content with indicator',
1442
+ label: '5'
1443
+ },
1444
+ properties: addSpacingProperties([
1445
+ {
1446
+ name: 'children',
1447
+ type: 'string',
1448
+ defaultValue: 'Content with indicator',
1449
+ description: 'Content to wrap',
1450
+ category: 'content'
1451
+ },
1452
+ {
1453
+ name: 'label',
1454
+ type: 'string',
1455
+ defaultValue: '5',
1456
+ description: 'Indicator label',
1457
+ category: 'content'
1458
+ },
1459
+ {
1460
+ name: 'size',
1461
+ type: 'select',
1462
+ defaultValue: 'md',
1463
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
1464
+ description: 'Indicator size',
1465
+ category: 'appearance'
1466
+ },
1467
+ {
1468
+ name: 'color',
1469
+ type: 'select',
1470
+ defaultValue: 'red',
1471
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
1472
+ description: 'Indicator color',
1473
+ category: 'appearance'
1474
+ },
1475
+ {
1476
+ name: 'position',
1477
+ type: 'select',
1478
+ defaultValue: 'top-end',
1479
+ options: ['top-start', 'top-end', 'bottom-start', 'bottom-end'],
1480
+ description: 'Indicator position',
1481
+ category: 'appearance'
1482
+ }
1483
+ ])
1484
+ },
1485
+ // Navigation Components
1486
+ {
1487
+ type: 'Breadcrumbs',
1488
+ displayName: 'Breadcrumbs',
1489
+ category: 'Navigation',
1490
+ defaultProps: {
1491
+ children: ['Home', 'Products', 'Current Page']
1492
+ },
1493
+ properties: addSpacingProperties([
1494
+ {
1495
+ name: 'separator',
1496
+ type: 'string',
1497
+ defaultValue: '/',
1498
+ description: 'Separator character',
1499
+ category: 'appearance'
1500
+ }
1501
+ ])
1502
+ },
1503
+ {
1504
+ type: 'Tabs',
1505
+ displayName: 'Tabs',
1506
+ category: 'Navigation',
1507
+ defaultProps: {
1508
+ defaultValue: 'tab1',
1509
+ children: []
1510
+ },
1511
+ properties: addSpacingProperties([
1512
+ {
1513
+ name: 'variant',
1514
+ type: 'select',
1515
+ defaultValue: 'default',
1516
+ options: ['default', 'outline', 'pills'],
1517
+ description: 'Tabs variant',
1518
+ category: 'appearance'
1519
+ },
1520
+ {
1521
+ name: 'color',
1522
+ type: 'select',
1523
+ defaultValue: 'blue',
1524
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
1525
+ description: 'Tabs color',
1526
+ category: 'appearance'
1527
+ },
1528
+ {
1529
+ name: 'orientation',
1530
+ type: 'select',
1531
+ defaultValue: 'horizontal',
1532
+ options: ['horizontal', 'vertical'],
1533
+ description: 'Tabs orientation',
1534
+ category: 'appearance'
1535
+ }
1536
+ ])
1537
+ },
1538
+ // Feedback Components
1539
+ {
1540
+ type: 'Loader',
1541
+ displayName: 'Loader',
1542
+ category: 'Feedback',
1543
+ defaultProps: {
1544
+ size: 'md'
1545
+ },
1546
+ properties: addSpacingProperties([
1547
+ {
1548
+ name: 'size',
1549
+ type: 'select',
1550
+ defaultValue: 'md',
1551
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
1552
+ description: 'Loader size',
1553
+ category: 'appearance'
1554
+ },
1555
+ {
1556
+ name: 'color',
1557
+ type: 'select',
1558
+ defaultValue: 'blue',
1559
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
1560
+ description: 'Loader color',
1561
+ category: 'appearance'
1562
+ },
1563
+ {
1564
+ name: 'variant',
1565
+ type: 'select',
1566
+ defaultValue: 'oval',
1567
+ options: ['oval', 'bars', 'dots'],
1568
+ description: 'Loader variant',
1569
+ category: 'appearance'
1570
+ }
1571
+ ])
1572
+ },
1573
+ {
1574
+ type: 'Progress',
1575
+ displayName: 'Progress',
1576
+ category: 'Feedback',
1577
+ defaultProps: {
1578
+ value: 50,
1579
+ size: 'md'
1580
+ },
1581
+ properties: addSpacingProperties([
1582
+ {
1583
+ name: 'value',
1584
+ type: 'number',
1585
+ defaultValue: 50,
1586
+ description: 'Progress value (0-100)',
1587
+ category: 'content'
1588
+ },
1589
+ {
1590
+ name: 'size',
1591
+ type: 'select',
1592
+ defaultValue: 'md',
1593
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
1594
+ description: 'Progress size',
1595
+ category: 'appearance'
1596
+ },
1597
+ {
1598
+ name: 'color',
1599
+ type: 'select',
1600
+ defaultValue: 'blue',
1601
+ options: ['blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
1602
+ description: 'Progress color',
1603
+ category: 'appearance'
1604
+ },
1605
+ {
1606
+ name: 'radius',
1607
+ type: 'select',
1608
+ defaultValue: 'sm',
1609
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
1610
+ description: 'Border radius',
1611
+ category: 'appearance'
1612
+ },
1613
+ {
1614
+ name: 'striped',
1615
+ type: 'boolean',
1616
+ defaultValue: false,
1617
+ description: 'Striped appearance',
1618
+ category: 'appearance'
1619
+ },
1620
+ {
1621
+ name: 'animated',
1622
+ type: 'boolean',
1623
+ defaultValue: false,
1624
+ description: 'Animated stripes',
1625
+ category: 'appearance'
1626
+ }
1627
+ ])
1628
+ },
1629
+ {
1630
+ type: 'RingProgress',
1631
+ displayName: 'Ring Progress',
1632
+ category: 'Feedback',
1633
+ defaultProps: {
1634
+ size: 120,
1635
+ thickness: 12,
1636
+ sections: [{ value: 40, color: 'blue' }]
1637
+ },
1638
+ properties: addSpacingProperties([
1639
+ {
1640
+ name: 'size',
1641
+ type: 'number',
1642
+ defaultValue: 120,
1643
+ description: 'Ring size in pixels',
1644
+ category: 'appearance'
1645
+ },
1646
+ {
1647
+ name: 'thickness',
1648
+ type: 'number',
1649
+ defaultValue: 12,
1650
+ description: 'Ring thickness',
1651
+ category: 'appearance'
1652
+ },
1653
+ {
1654
+ name: 'label',
1655
+ type: 'string',
1656
+ defaultValue: '',
1657
+ description: 'Center label',
1658
+ category: 'content'
1659
+ }
1660
+ ])
1661
+ },
1662
+ // Overlay Components
1663
+ {
1664
+ type: 'Tooltip',
1665
+ displayName: 'Tooltip',
1666
+ category: 'Overlays',
1667
+ defaultProps: {
1668
+ label: 'Tooltip content',
1669
+ children: 'Hover me'
1670
+ },
1671
+ properties: addSpacingProperties([
1672
+ {
1673
+ name: 'label',
1674
+ type: 'string',
1675
+ defaultValue: 'Tooltip content',
1676
+ description: 'Tooltip text',
1677
+ category: 'content'
1678
+ },
1679
+ {
1680
+ name: 'children',
1681
+ type: 'string',
1682
+ defaultValue: 'Hover me',
1683
+ description: 'Element to wrap',
1684
+ category: 'content'
1685
+ },
1686
+ {
1687
+ name: 'position',
1688
+ type: 'select',
1689
+ defaultValue: 'top',
1690
+ options: ['top', 'bottom', 'left', 'right'],
1691
+ description: 'Tooltip position',
1692
+ category: 'appearance'
1693
+ },
1694
+ {
1695
+ name: 'color',
1696
+ type: 'select',
1697
+ defaultValue: 'dark',
1698
+ options: ['dark', 'blue', 'red', 'green', 'yellow', 'orange', 'purple', 'pink', 'gray'],
1699
+ description: 'Tooltip color',
1700
+ category: 'appearance'
1701
+ }
1702
+ ])
1703
+ },
1704
+ {
1705
+ type: 'Popover',
1706
+ displayName: 'Popover',
1707
+ category: 'Overlays',
1708
+ defaultProps: {
1709
+ children: 'Click me'
1710
+ },
1711
+ properties: addSpacingProperties([
1712
+ {
1713
+ name: 'children',
1714
+ type: 'string',
1715
+ defaultValue: 'Click me',
1716
+ description: 'Trigger element',
1717
+ category: 'content'
1718
+ },
1719
+ {
1720
+ name: 'position',
1721
+ type: 'select',
1722
+ defaultValue: 'bottom',
1723
+ options: ['top', 'bottom', 'left', 'right'],
1724
+ description: 'Popover position',
1725
+ category: 'appearance'
1726
+ },
1727
+ {
1728
+ name: 'width',
1729
+ type: 'number',
1730
+ defaultValue: 260,
1731
+ description: 'Popover width',
1732
+ category: 'appearance'
1733
+ },
1734
+ {
1735
+ name: 'shadow',
1736
+ type: 'select',
1737
+ defaultValue: 'md',
1738
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
1739
+ description: 'Popover shadow',
1740
+ category: 'appearance'
1741
+ }
1742
+ ])
1743
+ }
1744
+ ];
1745
+ export const getComponentConfig = (type) => {
1746
+ return MANTINE_COMPONENTS.find(comp => comp.type === type);
1747
+ };
1748
+ export const getComponentsByCategory = () => {
1749
+ return MANTINE_COMPONENTS.reduce((acc, component) => {
1750
+ if (!acc[component.category]) {
1751
+ acc[component.category] = [];
1752
+ }
1753
+ acc[component.category].push(component);
1754
+ return acc;
1755
+ }, {});
1756
+ };
1757
+ // List of container components that can accept children
1758
+ export const CONTAINER_COMPONENTS = ['Container', 'Group', 'Stack', 'Card', 'CardSection', 'Paper', 'Box', 'Flex', 'Grid', 'GridCol', 'SimpleGrid', 'Tabs', 'Indicator', 'Tooltip', 'Popover'];