@tpitre/story-ui 2.1.5 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/.env.sample +82 -11
  2. package/README.md +130 -4
  3. package/dist/cli/deploy.d.ts +17 -0
  4. package/dist/cli/deploy.d.ts.map +1 -0
  5. package/dist/cli/deploy.js +696 -0
  6. package/dist/cli/index.d.ts +3 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +55 -2
  9. package/dist/cli/setup.d.ts +11 -0
  10. package/dist/cli/setup.d.ts.map +1 -0
  11. package/dist/cli/setup.js +437 -110
  12. package/dist/mcp-server/index.d.ts +2 -0
  13. package/dist/mcp-server/index.d.ts.map +1 -0
  14. package/dist/mcp-server/index.js +138 -6
  15. package/dist/mcp-server/mcp-stdio-server.d.ts +3 -0
  16. package/dist/mcp-server/mcp-stdio-server.d.ts.map +1 -0
  17. package/dist/mcp-server/mcp-stdio-server.js +638 -0
  18. package/dist/mcp-server/routes/claude.d.ts +3 -0
  19. package/dist/mcp-server/routes/claude.d.ts.map +1 -0
  20. package/dist/mcp-server/routes/claude.js +60 -23
  21. package/dist/mcp-server/routes/components.d.ts +4 -0
  22. package/dist/mcp-server/routes/components.d.ts.map +1 -0
  23. package/dist/mcp-server/routes/frameworks.d.ts +38 -0
  24. package/dist/mcp-server/routes/frameworks.d.ts.map +1 -0
  25. package/dist/mcp-server/routes/frameworks.js +183 -0
  26. package/dist/mcp-server/routes/generateStory.d.ts +3 -0
  27. package/dist/mcp-server/routes/generateStory.d.ts.map +1 -0
  28. package/dist/mcp-server/routes/generateStory.js +274 -115
  29. package/dist/mcp-server/routes/generateStoryStream.d.ts +12 -0
  30. package/dist/mcp-server/routes/generateStoryStream.d.ts.map +1 -0
  31. package/dist/mcp-server/routes/generateStoryStream.js +947 -0
  32. package/dist/mcp-server/routes/hybridStories.d.ts +18 -0
  33. package/dist/mcp-server/routes/hybridStories.d.ts.map +1 -0
  34. package/dist/mcp-server/routes/hybridStories.js +214 -0
  35. package/dist/mcp-server/routes/mcpRemote.d.ts +14 -0
  36. package/dist/mcp-server/routes/mcpRemote.d.ts.map +1 -0
  37. package/dist/mcp-server/routes/mcpRemote.js +489 -0
  38. package/dist/mcp-server/routes/memoryStories.d.ts +26 -0
  39. package/dist/mcp-server/routes/memoryStories.d.ts.map +1 -0
  40. package/dist/mcp-server/routes/memoryStories.js +13 -7
  41. package/dist/mcp-server/routes/providers.d.ts +89 -0
  42. package/dist/mcp-server/routes/providers.d.ts.map +1 -0
  43. package/dist/mcp-server/routes/providers.js +369 -0
  44. package/dist/mcp-server/routes/storySync.d.ts +26 -0
  45. package/dist/mcp-server/routes/storySync.d.ts.map +1 -0
  46. package/dist/mcp-server/routes/streamTypes.d.ts +110 -0
  47. package/dist/mcp-server/routes/streamTypes.d.ts.map +1 -0
  48. package/dist/mcp-server/routes/streamTypes.js +18 -0
  49. package/dist/mcp-server/sessionManager.d.ts +50 -0
  50. package/dist/mcp-server/sessionManager.d.ts.map +1 -0
  51. package/dist/mcp-server/sessionManager.js +125 -0
  52. package/dist/story-generator/componentBlacklist.d.ts +21 -0
  53. package/dist/story-generator/componentBlacklist.d.ts.map +1 -0
  54. package/dist/story-generator/componentBlacklist.js +4 -0
  55. package/dist/story-generator/componentDiscovery.d.ts +28 -0
  56. package/dist/story-generator/componentDiscovery.d.ts.map +1 -0
  57. package/dist/story-generator/componentRegistryGenerator.d.ts +49 -0
  58. package/dist/story-generator/componentRegistryGenerator.d.ts.map +1 -0
  59. package/dist/story-generator/componentRegistryGenerator.js +205 -0
  60. package/dist/story-generator/configLoader.d.ts +33 -0
  61. package/dist/story-generator/configLoader.d.ts.map +1 -0
  62. package/dist/story-generator/configLoader.js +8 -1
  63. package/dist/story-generator/considerationsLoader.d.ts +32 -0
  64. package/dist/story-generator/considerationsLoader.d.ts.map +1 -0
  65. package/dist/story-generator/considerationsLoader.js +2 -1
  66. package/dist/story-generator/documentation-sources.d.ts +28 -0
  67. package/dist/story-generator/documentation-sources.d.ts.map +1 -0
  68. package/dist/story-generator/documentationLoader.d.ts +64 -0
  69. package/dist/story-generator/documentationLoader.d.ts.map +1 -0
  70. package/dist/story-generator/documentationLoader.js +4 -3
  71. package/dist/story-generator/dynamicPackageDiscovery.d.ts +97 -0
  72. package/dist/story-generator/dynamicPackageDiscovery.d.ts.map +1 -0
  73. package/dist/story-generator/dynamicPackageDiscovery.js +31 -22
  74. package/dist/story-generator/enhancedComponentDiscovery.d.ts +125 -0
  75. package/dist/story-generator/enhancedComponentDiscovery.d.ts.map +1 -0
  76. package/dist/story-generator/enhancedComponentDiscovery.js +162 -21
  77. package/dist/story-generator/framework-adapters/angular-adapter.d.ts +40 -0
  78. package/dist/story-generator/framework-adapters/angular-adapter.d.ts.map +1 -0
  79. package/dist/story-generator/framework-adapters/angular-adapter.js +427 -0
  80. package/dist/story-generator/framework-adapters/base-adapter.d.ts +75 -0
  81. package/dist/story-generator/framework-adapters/base-adapter.d.ts.map +1 -0
  82. package/dist/story-generator/framework-adapters/base-adapter.js +147 -0
  83. package/dist/story-generator/framework-adapters/framework-detector.d.ts +55 -0
  84. package/dist/story-generator/framework-adapters/framework-detector.d.ts.map +1 -0
  85. package/dist/story-generator/framework-adapters/framework-detector.js +323 -0
  86. package/dist/story-generator/framework-adapters/index.d.ts +97 -0
  87. package/dist/story-generator/framework-adapters/index.d.ts.map +1 -0
  88. package/dist/story-generator/framework-adapters/index.js +198 -0
  89. package/dist/story-generator/framework-adapters/react-adapter.d.ts +40 -0
  90. package/dist/story-generator/framework-adapters/react-adapter.d.ts.map +1 -0
  91. package/dist/story-generator/framework-adapters/react-adapter.js +316 -0
  92. package/dist/story-generator/framework-adapters/svelte-adapter.d.ts +40 -0
  93. package/dist/story-generator/framework-adapters/svelte-adapter.d.ts.map +1 -0
  94. package/dist/story-generator/framework-adapters/svelte-adapter.js +372 -0
  95. package/dist/story-generator/framework-adapters/types.d.ts +182 -0
  96. package/dist/story-generator/framework-adapters/types.d.ts.map +1 -0
  97. package/dist/story-generator/framework-adapters/types.js +8 -0
  98. package/dist/story-generator/framework-adapters/vue-adapter.d.ts +36 -0
  99. package/dist/story-generator/framework-adapters/vue-adapter.d.ts.map +1 -0
  100. package/dist/story-generator/framework-adapters/vue-adapter.js +336 -0
  101. package/dist/story-generator/framework-adapters/web-components-adapter.d.ts +54 -0
  102. package/dist/story-generator/framework-adapters/web-components-adapter.d.ts.map +1 -0
  103. package/dist/story-generator/framework-adapters/web-components-adapter.js +387 -0
  104. package/dist/story-generator/generateStory.d.ts +7 -0
  105. package/dist/story-generator/generateStory.d.ts.map +1 -0
  106. package/dist/story-generator/gitignoreManager.d.ts +50 -0
  107. package/dist/story-generator/gitignoreManager.d.ts.map +1 -0
  108. package/dist/story-generator/gitignoreManager.js +7 -6
  109. package/dist/story-generator/imageProcessor.d.ts +80 -0
  110. package/dist/story-generator/imageProcessor.d.ts.map +1 -0
  111. package/dist/story-generator/imageProcessor.js +391 -0
  112. package/dist/story-generator/inMemoryStoryService.d.ts +89 -0
  113. package/dist/story-generator/inMemoryStoryService.d.ts.map +1 -0
  114. package/dist/story-generator/llm-providers/base-provider.d.ts +36 -0
  115. package/dist/story-generator/llm-providers/base-provider.d.ts.map +1 -0
  116. package/dist/story-generator/llm-providers/base-provider.js +135 -0
  117. package/dist/story-generator/llm-providers/claude-provider.d.ts +23 -0
  118. package/dist/story-generator/llm-providers/claude-provider.d.ts.map +1 -0
  119. package/dist/story-generator/llm-providers/claude-provider.js +414 -0
  120. package/dist/story-generator/llm-providers/gemini-provider.d.ts +24 -0
  121. package/dist/story-generator/llm-providers/gemini-provider.d.ts.map +1 -0
  122. package/dist/story-generator/llm-providers/gemini-provider.js +406 -0
  123. package/dist/story-generator/llm-providers/index.d.ts +63 -0
  124. package/dist/story-generator/llm-providers/index.d.ts.map +1 -0
  125. package/dist/story-generator/llm-providers/index.js +169 -0
  126. package/dist/story-generator/llm-providers/openai-provider.d.ts +24 -0
  127. package/dist/story-generator/llm-providers/openai-provider.d.ts.map +1 -0
  128. package/dist/story-generator/llm-providers/openai-provider.js +458 -0
  129. package/dist/story-generator/llm-providers/settings-manager.d.ts +75 -0
  130. package/dist/story-generator/llm-providers/settings-manager.d.ts.map +1 -0
  131. package/dist/story-generator/llm-providers/settings-manager.js +173 -0
  132. package/dist/story-generator/llm-providers/story-llm-service.d.ts +79 -0
  133. package/dist/story-generator/llm-providers/story-llm-service.d.ts.map +1 -0
  134. package/dist/story-generator/llm-providers/story-llm-service.js +240 -0
  135. package/dist/story-generator/llm-providers/types.d.ts +153 -0
  136. package/dist/story-generator/llm-providers/types.d.ts.map +1 -0
  137. package/dist/story-generator/llm-providers/types.js +8 -0
  138. package/dist/story-generator/logger.d.ts +14 -0
  139. package/dist/story-generator/logger.d.ts.map +1 -0
  140. package/dist/story-generator/logger.js +119 -0
  141. package/dist/story-generator/postProcessStory.d.ts +6 -0
  142. package/dist/story-generator/postProcessStory.d.ts.map +1 -0
  143. package/dist/story-generator/postProcessStory.js +8 -7
  144. package/dist/story-generator/productionGitignoreManager.d.ts +91 -0
  145. package/dist/story-generator/productionGitignoreManager.d.ts.map +1 -0
  146. package/dist/story-generator/productionGitignoreManager.js +11 -10
  147. package/dist/story-generator/promptGenerator.d.ts +48 -0
  148. package/dist/story-generator/promptGenerator.d.ts.map +1 -0
  149. package/dist/story-generator/promptGenerator.js +186 -1
  150. package/dist/story-generator/storyHistory.d.ts +44 -0
  151. package/dist/story-generator/storyHistory.d.ts.map +1 -0
  152. package/dist/story-generator/storySync.d.ts +68 -0
  153. package/dist/story-generator/storySync.d.ts.map +1 -0
  154. package/dist/story-generator/storyTracker.d.ts +48 -0
  155. package/dist/story-generator/storyTracker.d.ts.map +1 -0
  156. package/dist/story-generator/storyTracker.js +2 -1
  157. package/dist/story-generator/storyValidator.d.ts +6 -0
  158. package/dist/story-generator/storyValidator.d.ts.map +1 -0
  159. package/dist/story-generator/universalDesignSystemAdapter.d.ts +68 -0
  160. package/dist/story-generator/universalDesignSystemAdapter.d.ts.map +1 -0
  161. package/dist/story-generator/universalDesignSystemAdapter.js +141 -3
  162. package/dist/story-generator/urlRedirectService.d.ts +21 -0
  163. package/dist/story-generator/urlRedirectService.d.ts.map +1 -0
  164. package/dist/story-generator/urlRedirectService.js +140 -0
  165. package/dist/story-generator/validateStory.d.ts +19 -0
  166. package/dist/story-generator/validateStory.d.ts.map +1 -0
  167. package/dist/story-generator/validateStory.js +6 -2
  168. package/dist/story-generator/visionPrompts.d.ts +88 -0
  169. package/dist/story-generator/visionPrompts.d.ts.map +1 -0
  170. package/dist/story-generator/visionPrompts.js +462 -0
  171. package/dist/story-ui.config.d.ts +78 -0
  172. package/dist/story-ui.config.d.ts.map +1 -0
  173. package/dist/templates/StoryUI/StoryUIPanel.d.ts +4 -0
  174. package/dist/templates/StoryUI/StoryUIPanel.d.ts.map +1 -0
  175. package/dist/templates/StoryUI/StoryUIPanel.js +1874 -0
  176. package/dist/templates/StoryUI/StoryUIPanel.stories.d.ts +18 -0
  177. package/dist/templates/StoryUI/StoryUIPanel.stories.d.ts.map +1 -0
  178. package/dist/templates/StoryUI/StoryUIPanel.stories.js +37 -0
  179. package/dist/templates/StoryUI/index.d.ts +3 -0
  180. package/dist/templates/StoryUI/index.d.ts.map +1 -0
  181. package/dist/templates/StoryUI/index.js +2 -0
  182. package/package.json +35 -4
  183. package/templates/StoryUI/StoryUIPanel.tsx +1973 -388
  184. package/templates/StoryUI/index.tsx +1 -1
  185. package/templates/StoryUI/manager.tsx +264 -0
  186. package/templates/mcp-config-claude.json +11 -0
  187. package/templates/mcp-example.md +76 -0
  188. package/templates/production-app/.env.example +11 -0
  189. package/templates/production-app/index.html +66 -0
  190. package/templates/production-app/package.json +30 -0
  191. package/templates/production-app/public/favicon.svg +5 -0
  192. package/templates/production-app/src/App.tsx +1157 -0
  193. package/templates/production-app/src/LivePreviewRenderer.tsx +420 -0
  194. package/templates/production-app/src/componentRegistry.ts +315 -0
  195. package/templates/production-app/src/considerations.ts +16 -0
  196. package/templates/production-app/src/index.css +284 -0
  197. package/templates/production-app/src/main.tsx +25 -0
  198. package/templates/production-app/tsconfig.json +32 -0
  199. package/templates/production-app/tsconfig.node.json +11 -0
  200. package/templates/production-app/vite.config.ts +83 -0
  201. package/templates/react-import-rule.json +2 -2
  202. package/dist/index.js +0 -12
  203. package/dist/story-ui.config.loader.js +0 -205
@@ -1,6 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  import { DynamicPackageDiscovery } from './dynamicPackageDiscovery.js';
4
+ import { logger } from './logger.js';
4
5
  export class EnhancedComponentDiscovery {
5
6
  constructor(config) {
6
7
  this.discoveredComponents = new Map();
@@ -12,10 +13,10 @@ export class EnhancedComponentDiscovery {
12
13
  * Priority: 1. Dynamic Discovery 2. Static Lists 3. Manual Config
13
14
  */
14
15
  async discoverAll() {
15
- console.log('🔍 Starting comprehensive component discovery...');
16
+ logger.log('🔍 Starting comprehensive component discovery...');
16
17
  // Step 1: Discover from all sources
17
18
  const sources = this.identifySources();
18
- console.log(`📁 Found ${sources.length} discovery sources:`, sources.map(s => `${s.type}:${s.path}`));
19
+ logger.log(`📁 Found ${sources.length} discovery sources:`, sources.map(s => `${s.type}:${s.path}`));
19
20
  for (const source of sources) {
20
21
  try {
21
22
  switch (source.type) {
@@ -42,7 +43,7 @@ export class EnhancedComponentDiscovery {
42
43
  // Step 3: Resolve component conflicts and apply prioritization
43
44
  this.resolveComponentConflicts();
44
45
  const finalComponents = Array.from(this.discoveredComponents.values());
45
- console.log(`✅ Discovery complete: ${finalComponents.length} components found`);
46
+ logger.log(`✅ Discovery complete: ${finalComponents.length} components found`);
46
47
  // Log summary by source type
47
48
  this.logDiscoverySummary(finalComponents);
48
49
  return finalComponents;
@@ -64,7 +65,7 @@ export class EnhancedComponentDiscovery {
64
65
  // Resolve conflicts using priority system
65
66
  for (const [name, componentList] of conflicts) {
66
67
  if (componentList.length > 1) {
67
- console.log(`⚠️ Resolving conflict for component "${name}" (${componentList.length} versions found)`);
68
+ logger.log(`⚠️ Resolving conflict for component "${name}" (${componentList.length} versions found)`);
68
69
  // Priority order: local > manual config > npm
69
70
  const prioritized = componentList.sort((a, b) => {
70
71
  const getPriority = (comp) => {
@@ -82,7 +83,7 @@ export class EnhancedComponentDiscovery {
82
83
  for (const loser of losers) {
83
84
  this.discoveredComponents.delete(loser.name);
84
85
  }
85
- console.log(`✅ Kept ${winner.source.type} version of "${name}" from ${winner.source.path}`);
86
+ logger.log(`✅ Kept ${winner.source.type} version of "${name}" from ${winner.source.path}`);
86
87
  }
87
88
  }
88
89
  }
@@ -97,7 +98,7 @@ export class EnhancedComponentDiscovery {
97
98
  acc[sourceType]++;
98
99
  return acc;
99
100
  }, {});
100
- console.log('📊 Component discovery summary:', summary);
101
+ logger.log('📊 Component discovery summary:', summary);
101
102
  }
102
103
  /**
103
104
  * Get the project root directory from the config
@@ -259,17 +260,9 @@ export class EnhancedComponentDiscovery {
259
260
  // Determine the project root from the generated stories path
260
261
  const projectRoot = this.getProjectRoot();
261
262
  const packagePath = path.join(projectRoot, 'node_modules', source.path);
262
- if (!fs.existsSync(packagePath)) {
263
- console.warn(`Package ${source.path} not found in node_modules at ${packagePath}`);
264
- return;
265
- }
266
- console.log(`🔍 Dynamically discovering components from ${source.path}...`);
267
- // Use dynamic discovery to get real exports
268
- const dynamicDiscovery = new DynamicPackageDiscovery(source.path, projectRoot);
269
- const packageExports = await dynamicDiscovery.getRealPackageExports();
270
- if (!packageExports) {
271
- console.log(`📋 ${source.path}: Using static component list (design system detected)`);
272
- // Fallback to predefined components if dynamic discovery fails
263
+ // Helper function to load known components as fallback
264
+ const loadFallbackComponents = () => {
265
+ logger.log(`📋 ${source.path}: Using static component list (design system detected)`);
273
266
  const knownComponents = this.getKnownDesignSystemComponents(source.path);
274
267
  if (knownComponents.length > 0) {
275
268
  for (const comp of knownComponents) {
@@ -280,13 +273,28 @@ export class EnhancedComponentDiscovery {
280
273
  category: comp.category || this.categorizeComponent(comp.name || '', comp.description || '')
281
274
  });
282
275
  }
276
+ logger.log(`✅ Loaded ${knownComponents.length} known components for ${source.path}`);
283
277
  }
278
+ };
279
+ if (!fs.existsSync(packagePath)) {
280
+ console.warn(`Package ${source.path} not found in node_modules at ${packagePath}`);
281
+ // Use fallback component list when package is not installed (e.g., in production)
282
+ loadFallbackComponents();
283
+ return;
284
+ }
285
+ logger.log(`🔍 Dynamically discovering components from ${source.path}...`);
286
+ // Use dynamic discovery to get real exports
287
+ const dynamicDiscovery = new DynamicPackageDiscovery(source.path, projectRoot);
288
+ const packageExports = await dynamicDiscovery.getRealPackageExports();
289
+ if (!packageExports) {
290
+ // Fallback to predefined components if dynamic discovery fails
291
+ loadFallbackComponents();
284
292
  return;
285
293
  }
286
294
  // Process the real components found in the package
287
295
  const realComponents = packageExports.components.filter(comp => comp.isComponent);
288
296
  console.log(`✅ Found ${realComponents.length} real components in ${source.path} v${packageExports.packageVersion}`);
289
- console.log(`📦 Available components: ${realComponents.map(c => c.name).join(', ')}`);
297
+ logger.log(`📦 Available components: ${realComponents.map(c => c.name).join(', ')}`);
290
298
  for (const realComp of realComponents) {
291
299
  // Get enhanced metadata from predefined list if available
292
300
  const knownComponents = this.getKnownDesignSystemComponents(source.path);
@@ -309,11 +317,144 @@ export class EnhancedComponentDiscovery {
309
317
  }
310
318
  /**
311
319
  * Get known components for popular design systems
312
- * Returns empty array to rely on dynamic discovery
320
+ * Returns a fallback list when dynamic discovery fails
313
321
  */
314
322
  getKnownDesignSystemComponents(packageName) {
315
- // Return empty array to rely purely on dynamic component discovery
316
- // This ensures we test the actual package scanning capabilities
323
+ // Chakra UI fallback components
324
+ if (packageName === '@chakra-ui/react') {
325
+ const basicComponents = [
326
+ // Layout
327
+ 'Box', 'Flex', 'Grid', 'Stack', 'HStack', 'VStack', 'Container', 'Center', 'Square', 'Circle',
328
+ 'SimpleGrid', 'Wrap', 'WrapItem', 'AspectRatio', 'Spacer', 'Divider',
329
+ // Typography
330
+ 'Text', 'Heading', 'Badge', 'Code', 'Kbd', 'Mark',
331
+ // Forms
332
+ 'Button', 'IconButton', 'Input', 'InputGroup', 'InputLeftElement', 'InputRightElement',
333
+ 'Textarea', 'Select', 'Checkbox', 'Radio', 'RadioGroup', 'Switch', 'Slider',
334
+ 'FormControl', 'FormLabel', 'FormHelperText', 'FormErrorMessage',
335
+ // Feedback
336
+ 'Alert', 'AlertIcon', 'AlertTitle', 'AlertDescription', 'Progress', 'Skeleton', 'Spinner',
337
+ 'Toast', 'useToast', 'CircularProgress', 'CircularProgressLabel',
338
+ // Data Display
339
+ 'Avatar', 'AvatarGroup', 'Card', 'CardHeader', 'CardBody', 'CardFooter',
340
+ 'Image', 'Badge', 'Stat', 'StatLabel', 'StatNumber', 'StatHelpText', 'StatArrow',
341
+ 'Table', 'Thead', 'Tbody', 'Tfoot', 'Tr', 'Th', 'Td', 'TableCaption',
342
+ // Navigation
343
+ 'Breadcrumb', 'BreadcrumbItem', 'BreadcrumbLink', 'Link', 'LinkBox', 'LinkOverlay',
344
+ 'Tabs', 'TabList', 'TabPanels', 'Tab', 'TabPanel',
345
+ // Overlay
346
+ 'Modal', 'ModalOverlay', 'ModalContent', 'ModalHeader', 'ModalFooter', 'ModalBody', 'ModalCloseButton',
347
+ 'Drawer', 'DrawerBody', 'DrawerFooter', 'DrawerHeader', 'DrawerOverlay', 'DrawerContent', 'DrawerCloseButton',
348
+ 'Menu', 'MenuButton', 'MenuList', 'MenuItem', 'MenuItemOption', 'MenuGroup', 'MenuOptionGroup', 'MenuDivider',
349
+ 'Popover', 'PopoverTrigger', 'PopoverContent', 'PopoverHeader', 'PopoverBody', 'PopoverFooter', 'PopoverArrow', 'PopoverCloseButton',
350
+ 'Tooltip', 'AlertDialog', 'AlertDialogBody', 'AlertDialogFooter', 'AlertDialogHeader', 'AlertDialogContent', 'AlertDialogOverlay',
351
+ // Disclosure
352
+ 'Accordion', 'AccordionItem', 'AccordionButton', 'AccordionPanel', 'AccordionIcon',
353
+ 'VisuallyHidden', 'Show', 'Hide', 'Collapse',
354
+ // Media
355
+ 'Icon', 'CloseButton'
356
+ ];
357
+ return basicComponents.map(name => ({
358
+ name,
359
+ description: `${name} component from Chakra UI`,
360
+ category: this.categorizeComponent(name, '')
361
+ }));
362
+ }
363
+ // Mantine fallback components
364
+ if (packageName === '@mantine/core') {
365
+ const mantineComponents = [
366
+ // Layout
367
+ 'Container', 'SimpleGrid', 'Grid', 'Group', 'Stack', 'Flex', 'Center', 'Space', 'Divider',
368
+ 'AspectRatio', 'Box', 'AppShell', 'MediaQuery', 'Paper',
369
+ // Typography
370
+ 'Text', 'Title', 'Anchor', 'Blockquote', 'Code', 'Highlight', 'Mark', 'List',
371
+ // Buttons & Actions
372
+ 'Button', 'ActionIcon', 'CopyButton', 'FileButton', 'UnstyledButton', 'CloseButton',
373
+ // Inputs
374
+ 'TextInput', 'NumberInput', 'PasswordInput', 'Textarea', 'Select', 'MultiSelect',
375
+ 'Autocomplete', 'Checkbox', 'Switch', 'Radio', 'Slider', 'RangeSlider', 'Rating',
376
+ 'SegmentedControl', 'ColorInput', 'ColorPicker', 'FileInput', 'JsonInput', 'PinInput',
377
+ 'Chip', 'TransferList', 'NativeSelect',
378
+ // Navigation
379
+ 'Anchor', 'Breadcrumbs', 'Burger', 'NavLink', 'Pagination', 'Stepper', 'Tabs',
380
+ // Data Display
381
+ 'Accordion', 'Avatar', 'Badge', 'Card', 'Image', 'BackgroundImage', 'Indicator',
382
+ 'Kbd', 'Spoiler', 'Table', 'ThemeIcon', 'Timeline', 'ColorSwatch',
383
+ // Overlays
384
+ 'Dialog', 'Drawer', 'Modal', 'LoadingOverlay', 'Popover', 'Tooltip', 'Menu',
385
+ 'HoverCard', 'Affix', 'Overlay',
386
+ // Feedback
387
+ 'Alert', 'Loader', 'Notification', 'Progress', 'RingProgress', 'Skeleton',
388
+ // Misc
389
+ 'Portal', 'Transition', 'ScrollArea', 'FocusTrap', 'Input', 'InputWrapper',
390
+ // Dates (from @mantine/dates)
391
+ 'Calendar', 'DateInput', 'DatePicker', 'DateTimePicker', 'MonthPicker', 'YearPicker'
392
+ ];
393
+ return mantineComponents.map(name => ({
394
+ name,
395
+ description: `${name} component from Mantine`,
396
+ category: this.categorizeComponent(name, '')
397
+ }));
398
+ }
399
+ // Material UI fallback components
400
+ if (packageName === '@mui/material') {
401
+ const muiComponents = [
402
+ // Inputs
403
+ 'Autocomplete', 'Button', 'ButtonGroup', 'Checkbox', 'Fab', 'Radio', 'RadioGroup',
404
+ 'Rating', 'Select', 'Slider', 'Switch', 'TextField', 'ToggleButton', 'ToggleButtonGroup',
405
+ // Data Display
406
+ 'Avatar', 'AvatarGroup', 'Badge', 'Chip', 'Divider', 'Icon', 'List', 'ListItem',
407
+ 'ListItemText', 'ListItemIcon', 'ListItemButton', 'Table', 'TableBody', 'TableCell',
408
+ 'TableContainer', 'TableHead', 'TableRow', 'Tooltip', 'Typography',
409
+ // Feedback
410
+ 'Alert', 'AlertTitle', 'Backdrop', 'CircularProgress', 'Dialog', 'DialogActions',
411
+ 'DialogContent', 'DialogContentText', 'DialogTitle', 'LinearProgress', 'Skeleton', 'Snackbar',
412
+ // Surfaces
413
+ 'Accordion', 'AccordionActions', 'AccordionDetails', 'AccordionSummary', 'AppBar',
414
+ 'Card', 'CardActions', 'CardContent', 'CardHeader', 'CardMedia', 'Paper', 'Toolbar',
415
+ // Navigation
416
+ 'BottomNavigation', 'BottomNavigationAction', 'Breadcrumbs', 'Drawer', 'Link',
417
+ 'Menu', 'MenuItem', 'MenuList', 'Pagination', 'SpeedDial', 'SpeedDialAction',
418
+ 'SpeedDialIcon', 'Stepper', 'Step', 'StepLabel', 'Tabs', 'Tab',
419
+ // Layout
420
+ 'Box', 'Container', 'Grid', 'Stack', 'ImageList', 'ImageListItem',
421
+ // Utils
422
+ 'ClickAwayListener', 'Modal', 'NoSsr', 'Popover', 'Popper', 'Portal', 'Collapse', 'Fade', 'Grow', 'Slide', 'Zoom'
423
+ ];
424
+ return muiComponents.map(name => ({
425
+ name,
426
+ description: `${name} component from Material UI`,
427
+ category: this.categorizeComponent(name, '')
428
+ }));
429
+ }
430
+ // Ant Design fallback components
431
+ if (packageName === 'antd') {
432
+ const antdComponents = [
433
+ // General
434
+ 'Button', 'FloatButton', 'Icon', 'Typography', 'Text', 'Title', 'Paragraph', 'Link',
435
+ // Layout
436
+ 'Divider', 'Flex', 'Grid', 'Row', 'Col', 'Layout', 'Header', 'Footer', 'Sider', 'Content', 'Space',
437
+ // Navigation
438
+ 'Anchor', 'Breadcrumb', 'Dropdown', 'Menu', 'Pagination', 'Steps',
439
+ // Data Entry
440
+ 'AutoComplete', 'Cascader', 'Checkbox', 'ColorPicker', 'DatePicker', 'Form',
441
+ 'Input', 'InputNumber', 'Mentions', 'Radio', 'Rate', 'Select', 'Slider',
442
+ 'Switch', 'TimePicker', 'Transfer', 'TreeSelect', 'Upload',
443
+ // Data Display
444
+ 'Avatar', 'Badge', 'Calendar', 'Card', 'Carousel', 'Collapse', 'Descriptions',
445
+ 'Empty', 'Image', 'List', 'Popover', 'QRCode', 'Segmented', 'Statistic',
446
+ 'Table', 'Tabs', 'Tag', 'Timeline', 'Tooltip', 'Tour', 'Tree',
447
+ // Feedback
448
+ 'Alert', 'Drawer', 'Message', 'Modal', 'Notification', 'Popconfirm', 'Progress',
449
+ 'Result', 'Skeleton', 'Spin', 'Watermark'
450
+ ];
451
+ return antdComponents.map(name => ({
452
+ name,
453
+ description: `${name} component from Ant Design`,
454
+ category: this.categorizeComponent(name, '')
455
+ }));
456
+ }
457
+ // Default: return empty array
317
458
  return [];
318
459
  }
319
460
  /**
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Angular Framework Adapter
3
+ *
4
+ * Generates Storybook stories for Angular components.
5
+ * Supports standalone components and module-based components.
6
+ */
7
+ import { FrameworkType, StoryFramework, StoryGenerationOptions } from './types.js';
8
+ import { BaseFrameworkAdapter } from './base-adapter.js';
9
+ import { StoryUIConfig } from '../../story-ui.config.js';
10
+ import { DiscoveredComponent } from '../componentDiscovery.js';
11
+ export declare class AngularAdapter extends BaseFrameworkAdapter {
12
+ readonly type: FrameworkType;
13
+ readonly name = "Angular";
14
+ readonly supportedStoryFrameworks: StoryFramework[];
15
+ readonly defaultExtension = ".stories.ts";
16
+ generateSystemPrompt(config: StoryUIConfig, options?: StoryGenerationOptions): string;
17
+ generateExamples(config: StoryUIConfig): string;
18
+ generateSampleStory(config: StoryUIConfig, components: DiscoveredComponent[]): string;
19
+ getStoryTemplate(options?: StoryGenerationOptions): string;
20
+ /**
21
+ * Convert PascalCase to kebab-case for selectors
22
+ */
23
+ private toKebabCase;
24
+ /**
25
+ * Post-process Angular stories
26
+ */
27
+ postProcess(storyContent: string): string;
28
+ /**
29
+ * Validate Angular story
30
+ */
31
+ validate(storyContent: string): {
32
+ valid: boolean;
33
+ errors: string[];
34
+ };
35
+ }
36
+ /**
37
+ * Factory function
38
+ */
39
+ export declare function createAngularAdapter(): AngularAdapter;
40
+ //# sourceMappingURL=angular-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-adapter.d.ts","sourceRoot":"","sources":["../../../story-generator/framework-adapters/angular-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,cAAc,EACd,sBAAsB,EACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,qBAAa,cAAe,SAAQ,oBAAoB;IACtD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAa;IACzC,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,wBAAwB,EAAE,cAAc,EAAE,CAGjD;IACF,QAAQ,CAAC,gBAAgB,iBAAiB;IAE1C,oBAAoB,CAClB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,MAAM;IA0HT,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM;IA+J/C,mBAAmB,CACjB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,mBAAmB,EAAE,GAChC,MAAM;IAqDT,gBAAgB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,MAAM;IA4B1D;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAkBzC;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CA2BrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}