@tpitre/story-ui 2.2.0 → 2.3.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 (188) hide show
  1. package/.env.sample +82 -11
  2. package/README.md +89 -0
  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 +26 -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 +120 -2
  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 +8 -1
  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 +160 -76
  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/mcpRemote.d.ts +14 -0
  35. package/dist/mcp-server/routes/mcpRemote.d.ts.map +1 -0
  36. package/dist/mcp-server/routes/mcpRemote.js +489 -0
  37. package/dist/mcp-server/routes/memoryStories.d.ts +26 -0
  38. package/dist/mcp-server/routes/memoryStories.d.ts.map +1 -0
  39. package/dist/mcp-server/routes/providers.d.ts +89 -0
  40. package/dist/mcp-server/routes/providers.d.ts.map +1 -0
  41. package/dist/mcp-server/routes/providers.js +369 -0
  42. package/dist/mcp-server/routes/storySync.d.ts +26 -0
  43. package/dist/mcp-server/routes/storySync.d.ts.map +1 -0
  44. package/dist/mcp-server/routes/streamTypes.d.ts +110 -0
  45. package/dist/mcp-server/routes/streamTypes.d.ts.map +1 -0
  46. package/dist/mcp-server/routes/streamTypes.js +18 -0
  47. package/dist/mcp-server/sessionManager.d.ts +50 -0
  48. package/dist/mcp-server/sessionManager.d.ts.map +1 -0
  49. package/dist/story-generator/componentBlacklist.d.ts +21 -0
  50. package/dist/story-generator/componentBlacklist.d.ts.map +1 -0
  51. package/dist/story-generator/componentDiscovery.d.ts +28 -0
  52. package/dist/story-generator/componentDiscovery.d.ts.map +1 -0
  53. package/dist/story-generator/componentRegistryGenerator.d.ts +49 -0
  54. package/dist/story-generator/componentRegistryGenerator.d.ts.map +1 -0
  55. package/dist/story-generator/componentRegistryGenerator.js +205 -0
  56. package/dist/story-generator/configLoader.d.ts +33 -0
  57. package/dist/story-generator/configLoader.d.ts.map +1 -0
  58. package/dist/story-generator/considerationsLoader.d.ts +32 -0
  59. package/dist/story-generator/considerationsLoader.d.ts.map +1 -0
  60. package/dist/story-generator/documentation-sources.d.ts +28 -0
  61. package/dist/story-generator/documentation-sources.d.ts.map +1 -0
  62. package/dist/story-generator/documentationLoader.d.ts +64 -0
  63. package/dist/story-generator/documentationLoader.d.ts.map +1 -0
  64. package/dist/story-generator/dynamicPackageDiscovery.d.ts +97 -0
  65. package/dist/story-generator/dynamicPackageDiscovery.d.ts.map +1 -0
  66. package/dist/story-generator/enhancedComponentDiscovery.d.ts +125 -0
  67. package/dist/story-generator/enhancedComponentDiscovery.d.ts.map +1 -0
  68. package/dist/story-generator/enhancedComponentDiscovery.js +111 -11
  69. package/dist/story-generator/framework-adapters/angular-adapter.d.ts +40 -0
  70. package/dist/story-generator/framework-adapters/angular-adapter.d.ts.map +1 -0
  71. package/dist/story-generator/framework-adapters/angular-adapter.js +427 -0
  72. package/dist/story-generator/framework-adapters/base-adapter.d.ts +75 -0
  73. package/dist/story-generator/framework-adapters/base-adapter.d.ts.map +1 -0
  74. package/dist/story-generator/framework-adapters/base-adapter.js +147 -0
  75. package/dist/story-generator/framework-adapters/framework-detector.d.ts +55 -0
  76. package/dist/story-generator/framework-adapters/framework-detector.d.ts.map +1 -0
  77. package/dist/story-generator/framework-adapters/framework-detector.js +323 -0
  78. package/dist/story-generator/framework-adapters/index.d.ts +97 -0
  79. package/dist/story-generator/framework-adapters/index.d.ts.map +1 -0
  80. package/dist/story-generator/framework-adapters/index.js +198 -0
  81. package/dist/story-generator/framework-adapters/react-adapter.d.ts +40 -0
  82. package/dist/story-generator/framework-adapters/react-adapter.d.ts.map +1 -0
  83. package/dist/story-generator/framework-adapters/react-adapter.js +316 -0
  84. package/dist/story-generator/framework-adapters/svelte-adapter.d.ts +40 -0
  85. package/dist/story-generator/framework-adapters/svelte-adapter.d.ts.map +1 -0
  86. package/dist/story-generator/framework-adapters/svelte-adapter.js +372 -0
  87. package/dist/story-generator/framework-adapters/types.d.ts +182 -0
  88. package/dist/story-generator/framework-adapters/types.d.ts.map +1 -0
  89. package/dist/story-generator/framework-adapters/types.js +8 -0
  90. package/dist/story-generator/framework-adapters/vue-adapter.d.ts +36 -0
  91. package/dist/story-generator/framework-adapters/vue-adapter.d.ts.map +1 -0
  92. package/dist/story-generator/framework-adapters/vue-adapter.js +336 -0
  93. package/dist/story-generator/framework-adapters/web-components-adapter.d.ts +54 -0
  94. package/dist/story-generator/framework-adapters/web-components-adapter.d.ts.map +1 -0
  95. package/dist/story-generator/framework-adapters/web-components-adapter.js +387 -0
  96. package/dist/story-generator/generateStory.d.ts +7 -0
  97. package/dist/story-generator/generateStory.d.ts.map +1 -0
  98. package/dist/story-generator/gitignoreManager.d.ts +50 -0
  99. package/dist/story-generator/gitignoreManager.d.ts.map +1 -0
  100. package/dist/story-generator/imageProcessor.d.ts +80 -0
  101. package/dist/story-generator/imageProcessor.d.ts.map +1 -0
  102. package/dist/story-generator/imageProcessor.js +391 -0
  103. package/dist/story-generator/inMemoryStoryService.d.ts +89 -0
  104. package/dist/story-generator/inMemoryStoryService.d.ts.map +1 -0
  105. package/dist/story-generator/llm-providers/base-provider.d.ts +36 -0
  106. package/dist/story-generator/llm-providers/base-provider.d.ts.map +1 -0
  107. package/dist/story-generator/llm-providers/base-provider.js +135 -0
  108. package/dist/story-generator/llm-providers/claude-provider.d.ts +23 -0
  109. package/dist/story-generator/llm-providers/claude-provider.d.ts.map +1 -0
  110. package/dist/story-generator/llm-providers/claude-provider.js +414 -0
  111. package/dist/story-generator/llm-providers/gemini-provider.d.ts +24 -0
  112. package/dist/story-generator/llm-providers/gemini-provider.d.ts.map +1 -0
  113. package/dist/story-generator/llm-providers/gemini-provider.js +406 -0
  114. package/dist/story-generator/llm-providers/index.d.ts +63 -0
  115. package/dist/story-generator/llm-providers/index.d.ts.map +1 -0
  116. package/dist/story-generator/llm-providers/index.js +169 -0
  117. package/dist/story-generator/llm-providers/openai-provider.d.ts +24 -0
  118. package/dist/story-generator/llm-providers/openai-provider.d.ts.map +1 -0
  119. package/dist/story-generator/llm-providers/openai-provider.js +458 -0
  120. package/dist/story-generator/llm-providers/settings-manager.d.ts +75 -0
  121. package/dist/story-generator/llm-providers/settings-manager.d.ts.map +1 -0
  122. package/dist/story-generator/llm-providers/settings-manager.js +173 -0
  123. package/dist/story-generator/llm-providers/story-llm-service.d.ts +79 -0
  124. package/dist/story-generator/llm-providers/story-llm-service.d.ts.map +1 -0
  125. package/dist/story-generator/llm-providers/story-llm-service.js +240 -0
  126. package/dist/story-generator/llm-providers/types.d.ts +153 -0
  127. package/dist/story-generator/llm-providers/types.d.ts.map +1 -0
  128. package/dist/story-generator/llm-providers/types.js +8 -0
  129. package/dist/story-generator/logger.d.ts +14 -0
  130. package/dist/story-generator/logger.d.ts.map +1 -0
  131. package/dist/story-generator/logger.js +96 -29
  132. package/dist/story-generator/postProcessStory.d.ts +6 -0
  133. package/dist/story-generator/postProcessStory.d.ts.map +1 -0
  134. package/dist/story-generator/productionGitignoreManager.d.ts +91 -0
  135. package/dist/story-generator/productionGitignoreManager.d.ts.map +1 -0
  136. package/dist/story-generator/promptGenerator.d.ts +48 -0
  137. package/dist/story-generator/promptGenerator.d.ts.map +1 -0
  138. package/dist/story-generator/promptGenerator.js +186 -1
  139. package/dist/story-generator/storyHistory.d.ts +44 -0
  140. package/dist/story-generator/storyHistory.d.ts.map +1 -0
  141. package/dist/story-generator/storySync.d.ts +68 -0
  142. package/dist/story-generator/storySync.d.ts.map +1 -0
  143. package/dist/story-generator/storyTracker.d.ts +48 -0
  144. package/dist/story-generator/storyTracker.d.ts.map +1 -0
  145. package/dist/story-generator/storyValidator.d.ts +6 -0
  146. package/dist/story-generator/storyValidator.d.ts.map +1 -0
  147. package/dist/story-generator/universalDesignSystemAdapter.d.ts +68 -0
  148. package/dist/story-generator/universalDesignSystemAdapter.d.ts.map +1 -0
  149. package/dist/story-generator/universalDesignSystemAdapter.js +138 -1
  150. package/dist/story-generator/urlRedirectService.d.ts +21 -0
  151. package/dist/story-generator/urlRedirectService.d.ts.map +1 -0
  152. package/dist/story-generator/validateStory.d.ts +19 -0
  153. package/dist/story-generator/validateStory.d.ts.map +1 -0
  154. package/dist/story-generator/validateStory.js +6 -2
  155. package/dist/story-generator/visionPrompts.d.ts +88 -0
  156. package/dist/story-generator/visionPrompts.d.ts.map +1 -0
  157. package/dist/story-generator/visionPrompts.js +462 -0
  158. package/dist/story-ui.config.d.ts +78 -0
  159. package/dist/story-ui.config.d.ts.map +1 -0
  160. package/dist/templates/StoryUI/StoryUIPanel.d.ts +4 -0
  161. package/dist/templates/StoryUI/StoryUIPanel.d.ts.map +1 -0
  162. package/dist/templates/StoryUI/StoryUIPanel.js +1874 -0
  163. package/dist/templates/StoryUI/StoryUIPanel.stories.d.ts +18 -0
  164. package/dist/templates/StoryUI/StoryUIPanel.stories.d.ts.map +1 -0
  165. package/dist/templates/StoryUI/StoryUIPanel.stories.js +37 -0
  166. package/dist/templates/StoryUI/index.d.ts +3 -0
  167. package/dist/templates/StoryUI/index.d.ts.map +1 -0
  168. package/dist/templates/StoryUI/index.js +2 -0
  169. package/package.json +17 -3
  170. package/templates/StoryUI/StoryUIPanel.tsx +1960 -384
  171. package/templates/StoryUI/index.tsx +1 -1
  172. package/templates/StoryUI/manager.tsx +264 -0
  173. package/templates/production-app/.env.example +11 -0
  174. package/templates/production-app/index.html +66 -0
  175. package/templates/production-app/package.json +30 -0
  176. package/templates/production-app/public/favicon.svg +5 -0
  177. package/templates/production-app/src/App.tsx +1560 -0
  178. package/templates/production-app/src/LivePreviewRenderer.tsx +420 -0
  179. package/templates/production-app/src/componentRegistry.ts +315 -0
  180. package/templates/production-app/src/considerations.ts +16 -0
  181. package/templates/production-app/src/index.css +284 -0
  182. package/templates/production-app/src/main.tsx +25 -0
  183. package/templates/production-app/tsconfig.json +32 -0
  184. package/templates/production-app/tsconfig.node.json +11 -0
  185. package/templates/production-app/vite.config.ts +83 -0
  186. package/templates/react-import-rule.json +2 -2
  187. package/dist/index.js +0 -12
  188. package/dist/story-ui.config.loader.js +0 -205
@@ -0,0 +1,83 @@
1
+ import { defineConfig, loadEnv } from 'vite';
2
+ import react from '@vitejs/plugin-react';
3
+ import path from 'path';
4
+
5
+ // https://vitejs.dev/config/
6
+ export default defineConfig(({ mode }) => {
7
+ // Load env file based on mode
8
+ const env = loadEnv(mode, process.cwd(), '');
9
+
10
+ return {
11
+ plugins: [react()],
12
+
13
+ // Define environment variables to expose to the client
14
+ define: {
15
+ // Backend API URL - required for production
16
+ 'import.meta.env.VITE_BACKEND_URL': JSON.stringify(
17
+ env.VITE_BACKEND_URL || 'http://localhost:4001'
18
+ ),
19
+ // App title customization
20
+ 'import.meta.env.VITE_APP_TITLE': JSON.stringify(
21
+ env.VITE_APP_TITLE || 'Story UI'
22
+ ),
23
+ },
24
+
25
+ // Resolve aliases for cleaner imports
26
+ resolve: {
27
+ alias: {
28
+ '@': path.resolve(__dirname, './src'),
29
+ '@components': path.resolve(__dirname, './src/components'),
30
+ },
31
+ },
32
+
33
+ // Server configuration for development
34
+ server: {
35
+ port: 5173,
36
+ strictPort: false,
37
+ host: true, // Listen on all addresses
38
+ // Proxy API requests to backend in development
39
+ proxy: {
40
+ '/mcp': {
41
+ target: env.VITE_BACKEND_URL || 'http://localhost:4001',
42
+ changeOrigin: true,
43
+ },
44
+ '/story-ui': {
45
+ target: env.VITE_BACKEND_URL || 'http://localhost:4001',
46
+ changeOrigin: true,
47
+ },
48
+ },
49
+ },
50
+
51
+ // Build configuration
52
+ build: {
53
+ outDir: 'dist',
54
+ sourcemap: mode === 'development',
55
+ // Optimize chunk size
56
+ rollupOptions: {
57
+ output: {
58
+ manualChunks: {
59
+ // Split vendor chunks for better caching
60
+ 'vendor-react': ['react', 'react-dom'],
61
+ 'vendor-babel': ['@babel/standalone'],
62
+ },
63
+ },
64
+ },
65
+ // Target modern browsers
66
+ target: 'es2020',
67
+ // Minification
68
+ minify: 'esbuild',
69
+ },
70
+
71
+ // Optimize dependencies
72
+ optimizeDeps: {
73
+ include: ['react', 'react-dom', '@babel/standalone'],
74
+ },
75
+
76
+ // Preview server configuration (for testing production build locally)
77
+ preview: {
78
+ port: 4173,
79
+ strictPort: false,
80
+ host: true,
81
+ },
82
+ };
83
+ });
@@ -13,11 +13,11 @@
13
13
  "correct": [
14
14
  "import React from 'react';",
15
15
  "import type { Meta, StoryObj } from '@storybook/react-webpack5';",
16
- "import { Button, Card } from 'antd';"
16
+ "import { Button, Card } from 'your-component-library';"
17
17
  ],
18
18
  "incorrect": [
19
19
  "import type { Meta, StoryObj } from '@storybook/react-webpack5';",
20
- "import { Button, Card } from 'antd';",
20
+ "import { Button, Card } from 'your-component-library';",
21
21
  "// Missing React import!"
22
22
  ]
23
23
  }
package/dist/index.js DELETED
@@ -1,12 +0,0 @@
1
- // Main exports for Story UI package
2
- export * from './story-ui.config.js';
3
- export * from './story-ui.config.loader.js';
4
- export * from './story-generator/componentDiscovery.js';
5
- export * from './story-generator/promptGenerator.js';
6
- export { createStoryUIConfig, DEFAULT_CONFIG, GENERIC_CONFIG_TEMPLATE } from './story-ui.config.js';
7
- export { configLoader, loadStoryUIConfig } from './story-ui.config.loader.js';
8
- export { discoverComponents, discoverComponentsFromDirectory, discoverComponentsFromCustomElements, discoverComponentsFromPackage } from './story-generator/componentDiscovery.js';
9
- export { generatePrompt, buildClaudePrompt } from './story-generator/promptGenerator.js';
10
- export { ProductionGitignoreManager, setupProductionGitignore } from './story-generator/productionGitignoreManager.js';
11
- export { InMemoryStoryService, getInMemoryStoryService } from './story-generator/inMemoryStoryService.js';
12
- export { StorySyncService, getStorySyncService } from './story-generator/storySync.js';
@@ -1,205 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { createStoryUIConfig, GENERIC_CONFIG_TEMPLATE } from './story-ui.config.js';
4
- /**
5
- * Loads Story UI configuration from various sources
6
- */
7
- export class StoryUIConfigLoader {
8
- constructor() {
9
- this.config = null;
10
- }
11
- static getInstance() {
12
- if (!StoryUIConfigLoader.instance) {
13
- StoryUIConfigLoader.instance = new StoryUIConfigLoader();
14
- }
15
- return StoryUIConfigLoader.instance;
16
- }
17
- /**
18
- * Load configuration from a file
19
- */
20
- async loadFromFile(configPath) {
21
- if (!fs.existsSync(configPath)) {
22
- throw new Error(`Configuration file not found: ${configPath}`);
23
- }
24
- try {
25
- // Support both .js and .json config files
26
- let userConfig;
27
- if (configPath.endsWith('.json')) {
28
- const configContent = fs.readFileSync(configPath, 'utf-8');
29
- userConfig = JSON.parse(configContent);
30
- }
31
- else {
32
- // Dynamic import for .js/.ts files
33
- const configModule = await import(configPath);
34
- userConfig = configModule.default || configModule.config || configModule;
35
- }
36
- this.config = createStoryUIConfig(userConfig);
37
- return this.config;
38
- }
39
- catch (error) {
40
- throw new Error(`Failed to load configuration from ${configPath}: ${error}`);
41
- }
42
- }
43
- /**
44
- * Load configuration from package.json
45
- */
46
- loadFromPackageJson(packagePath = process.cwd()) {
47
- const packageJsonPath = path.join(packagePath, 'package.json');
48
- if (!fs.existsSync(packageJsonPath)) {
49
- throw new Error(`package.json not found at ${packageJsonPath}`);
50
- }
51
- try {
52
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
53
- const storyUIConfig = packageJson.storyUI || {};
54
- // Auto-detect common paths if not specified
55
- if (!storyUIConfig.generatedStoriesPath) {
56
- const possiblePaths = [
57
- path.join(packagePath, 'src/stories/generated'),
58
- path.join(packagePath, 'stories/generated'),
59
- path.join(packagePath, '.storybook/generated'),
60
- path.join(packagePath, 'src/components/generated')
61
- ];
62
- for (const possiblePath of possiblePaths) {
63
- if (fs.existsSync(path.dirname(possiblePath))) {
64
- storyUIConfig.generatedStoriesPath = possiblePath;
65
- break;
66
- }
67
- }
68
- }
69
- // Auto-detect components path
70
- if (!storyUIConfig.componentsPath) {
71
- const possiblePaths = [
72
- path.join(packagePath, 'src/components'),
73
- path.join(packagePath, 'lib/components'),
74
- path.join(packagePath, 'components'),
75
- path.join(packagePath, 'src')
76
- ];
77
- for (const possiblePath of possiblePaths) {
78
- if (fs.existsSync(possiblePath)) {
79
- storyUIConfig.componentsPath = possiblePath;
80
- break;
81
- }
82
- }
83
- }
84
- // Auto-detect import path from package name
85
- if (!storyUIConfig.importPath && packageJson.name) {
86
- storyUIConfig.importPath = packageJson.name;
87
- }
88
- this.config = createStoryUIConfig(storyUIConfig);
89
- return this.config;
90
- }
91
- catch (error) {
92
- throw new Error(`Failed to load configuration from package.json: ${error}`);
93
- }
94
- }
95
- /**
96
- * Auto-detect configuration from project structure
97
- */
98
- autoDetectConfig(projectPath = process.cwd()) {
99
- const config = { ...GENERIC_CONFIG_TEMPLATE };
100
- // Try to detect from package.json first
101
- try {
102
- return this.loadFromPackageJson(projectPath);
103
- }
104
- catch (error) {
105
- console.warn('Could not load from package.json, using auto-detection');
106
- }
107
- // Auto-detect paths
108
- const possibleComponentPaths = [
109
- path.join(projectPath, 'src/components'),
110
- path.join(projectPath, 'lib/components'),
111
- path.join(projectPath, 'components'),
112
- path.join(projectPath, 'src')
113
- ];
114
- for (const possiblePath of possibleComponentPaths) {
115
- if (fs.existsSync(possiblePath)) {
116
- config.componentsPath = possiblePath;
117
- break;
118
- }
119
- }
120
- // Set generated stories path
121
- config.generatedStoriesPath = path.join(projectPath, 'src/stories/generated');
122
- // Try to detect component prefix from existing components
123
- if (config.componentsPath) {
124
- const componentDirs = fs.readdirSync(config.componentsPath, { withFileTypes: true })
125
- .filter(d => d.isDirectory())
126
- .map(d => d.name)
127
- .slice(0, 5); // Check first 5 components
128
- // Look for common prefixes
129
- const prefixes = ['UI', 'App', 'My', 'Custom'];
130
- for (const prefix of prefixes) {
131
- if (componentDirs.some(name => name.startsWith(prefix))) {
132
- config.componentPrefix = prefix;
133
- break;
134
- }
135
- }
136
- }
137
- this.config = createStoryUIConfig(config);
138
- return this.config;
139
- }
140
- /**
141
- * Get current configuration
142
- */
143
- getConfig() {
144
- return this.config;
145
- }
146
- /**
147
- * Set configuration directly
148
- */
149
- setConfig(config) {
150
- this.config = config;
151
- }
152
- /**
153
- * Generate a sample configuration file
154
- */
155
- generateSampleConfig(outputPath, type = 'json') {
156
- const sampleConfig = {
157
- generatedStoriesPath: './src/stories/generated',
158
- componentsPath: './src/components',
159
- storyPrefix: 'Generated/',
160
- defaultAuthor: 'Story UI AI',
161
- importPath: 'your-component-library',
162
- componentPrefix: 'UI',
163
- layoutRules: {
164
- multiColumnWrapper: 'div',
165
- columnComponent: 'div',
166
- layoutExamples: {
167
- twoColumn: `<div style={{display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '1rem'}}>
168
- <div>Column 1 content</div>
169
- <div>Column 2 content</div>
170
- </div>`,
171
- threeColumn: `<div style={{display: 'grid', gridTemplateColumns: '1fr 1fr 1fr', gap: '1rem'}}>
172
- <div>Column 1 content</div>
173
- <div>Column 2 content</div>
174
- <div>Column 3 content</div>
175
- </div>`
176
- },
177
- prohibitedElements: []
178
- }
179
- };
180
- if (type === 'json') {
181
- fs.writeFileSync(outputPath, JSON.stringify(sampleConfig, null, 2));
182
- }
183
- else {
184
- const jsContent = `export default ${JSON.stringify(sampleConfig, null, 2)};`;
185
- fs.writeFileSync(outputPath, jsContent);
186
- }
187
- console.log(`Sample configuration written to: ${outputPath}`);
188
- }
189
- }
190
- // Convenience functions
191
- export const configLoader = StoryUIConfigLoader.getInstance();
192
- export function loadStoryUIConfig(configPath) {
193
- if (configPath) {
194
- return configLoader.loadFromFile(configPath);
195
- }
196
- else {
197
- // Try auto-detection
198
- try {
199
- return Promise.resolve(configLoader.loadFromPackageJson());
200
- }
201
- catch {
202
- return Promise.resolve(configLoader.autoDetectConfig());
203
- }
204
- }
205
- }