@tpitre/story-ui 2.5.0 → 2.6.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.
package/README.md CHANGED
@@ -1,170 +1,264 @@
1
- # Story UI šŸŽØ
1
+ # Story UI
2
2
 
3
- *AI-powered Storybook story generator for any React component library*
3
+ *AI-powered Storybook story generator for any JavaScript framework*
4
4
 
5
5
  [![npm version](https://badge.fury.io/js/%40tpitre%2Fstory-ui.svg)](https://badge.fury.io/js/%40tpitre%2Fstory-ui)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
7
 
8
- Story UI revolutionizes component documentation by automatically generating Storybook stories through AI-powered conversations. Simply chat with the AI about your components and watch as comprehensive stories are created in real-time.
9
-
10
- ## ✨ Features
11
-
12
- ### šŸŽÆ Core Features
13
- - **AI-Powered Story Generation**: Chat with AI to create comprehensive Storybook stories
14
- - **Intelligent Iteration Support**: Modify existing stories without losing your work
15
- - **Multi-Component Library Support**: Works with any React component library
16
- - **Real-time Story Updates**: See your stories appear in Storybook instantly
17
- - **Intelligent Component Discovery**: Automatically finds and analyzes your components
18
- - **TypeScript Support**: Full TypeScript integration with type-aware story generation
19
-
20
- ### šŸ†• Version 3.0 Features
21
- - **Multi-Provider LLM Support**: Choose between Claude, OpenAI, or Gemini
22
- - **Production Deployment**: Deploy as a standalone web app with Railway or Cloudflare
23
- - **Post-Generation Validation**: Automatic syntax validation with error detection
24
- - **Children Props Preservation**: Intelligent handling of `children: 'text'` in args
25
- - **Image/Vision Support**: Attach screenshots for visual component requests
26
- - **In-Memory Storage**: Production mode without file system writes
27
- - **REST API**: Full CRUD operations for story management
28
- - **Design System Agnosticism**: Core code is framework-independent
29
-
30
- ### šŸ“š Documentation System (New!)
31
- - **Auto-Generated Structure**: `npx story-ui init` creates a `story-ui-docs/` directory template
32
- - **Directory-Based Documentation**: Organize design system docs in a structured directory
33
- - **Multiple Format Support**: Markdown, JSON, HTML, and text files
34
- - **Legacy Support**: Still supports single `story-ui-considerations.md` file
35
- - **Auto-Discovery**: Automatically finds and loads documentation to enhance AI story generation
36
-
37
- ### šŸŽØ Advanced Features
38
- - **Memory-Persistent Stories**: Stories are remembered across sessions
39
- - **Git Integration**: Automatic gitignore management for generated files
40
- - **Production Mode**: Clean deployment without generated stories
41
- - **Auto Port Detection**: Automatically finds available ports
42
- - **Hot Reload Integration**: Stories update automatically as you chat
43
- - **MCP Server Integration**: Use Story UI directly from Claude Desktop or other MCP clients
44
-
45
- ## šŸš€ Quick Start
8
+ Story UI revolutionizes component documentation by automatically generating Storybook stories through AI-powered conversations. Works with **any framework** (React, Vue, Angular, Svelte, Web Components) and **any LLM provider** (Claude, OpenAI, Gemini).
9
+
10
+ ## Why Story UI?
11
+
12
+ - **Framework Agnostic**: Works with React, Vue, Angular, Svelte, and Web Components
13
+ - **Multi-Provider AI**: Choose between Claude (Anthropic), GPT-4 (OpenAI), or Gemini (Google)
14
+ - **Design System Aware**: Learns your component library and generates appropriate code
15
+ - **Production Ready**: Deploy as a standalone web app with full MCP integration
16
+ - **Zero Lock-in**: Use any component library - Mantine, Vuetify, Angular Material, Shoelace, or your own
17
+
18
+ ---
19
+
20
+ ## Quick Start
46
21
 
47
22
  ```bash
48
23
  # Install Story UI
49
24
  npm install -D @tpitre/story-ui
50
25
 
51
- # Initialize Story UI in your project
26
+ # Initialize in your project
52
27
  npx story-ui init
53
28
 
54
- # Start generating stories (Story UI will pick 4001 or the next free port)
29
+ # Start generating stories
55
30
  npm run story-ui
56
-
57
- # Need a custom port? Just pass the flag:
58
- npm run story-ui -- --port 4005
59
31
  ```
60
32
 
61
- Story UI will automatically:
62
- - āœ… Discover your components
63
- - āœ… Set up the chat interface
64
- - āœ… Create a `story-ui-docs/` directory structure for your design system documentation
65
- - āœ… Generate stories as you type
66
- - āœ… Load your design system documentation to enhance AI generation
33
+ Story UI will guide you through:
34
+ 1. Selecting your JavaScript framework
35
+ 2. Choosing a design system (or using your own)
36
+ 3. Configuring your preferred AI provider
37
+ 4. Setting up component discovery
38
+
39
+ ---
40
+
41
+ ## Features
67
42
 
68
- ## šŸ“š How It Works
43
+ ### Core Capabilities
44
+ - **AI-Powered Story Generation**: Describe what you want in natural language
45
+ - **Intelligent Iteration**: Modify existing stories without losing your work
46
+ - **Real-time Preview**: See generated stories instantly in Storybook
47
+ - **TypeScript Support**: Full type-aware story generation
48
+ - **Vision Support**: Attach screenshots for visual component requests
69
49
 
70
- Story UI uses advanced AI to understand your component library and generate appropriate stories:
50
+ ### Multi-Framework Support
71
51
 
72
- 1. **Component Discovery**: Story UI scans your codebase for available components
73
- 2. **Documentation Loading**: Reads your design system documentation (if available)
74
- 3. **AI Generation**: Claude generates stories using discovered components
75
- 4. **Iteration Support**: Previous code is preserved when modifying stories
76
- 5. **Hot Reload**: Stories appear instantly in your Storybook
52
+ | Framework | Design Systems | Status |
53
+ |-----------|---------------|--------|
54
+ | React | Mantine, Chakra UI, MUI, Ant Design, ShadCN, Custom | Fully Supported |
55
+ | Vue | Vuetify, Element Plus, PrimeVue, Quasar, Custom | Fully Supported |
56
+ | Angular | Angular Material, PrimeNG, NG-ZORRO, Custom | Fully Supported |
57
+ | Svelte | Skeleton, Custom | Fully Supported |
58
+ | Web Components | Shoelace, Lit, Custom | Fully Supported |
77
59
 
78
- ## šŸŽÆ Configuration
60
+ ### Multi-Provider LLM Support
61
+
62
+ | Provider | Models | Best For |
63
+ |----------|--------|----------|
64
+ | **Claude** (Anthropic) | Opus 4.5, Sonnet 4.5, Haiku 4.5 | Complex reasoning, code quality |
65
+ | **GPT-5** (OpenAI) | GPT-5.1, GPT-5 Mini, GPT-5 Nano | Versatility, speed |
66
+ | **Gemini** (Google) | Gemini 3 Pro, Gemini 2.5 Pro, Gemini 2.5 Flash | Fast generation, cost efficiency |
67
+
68
+ ### Production Deployment
69
+ - **Cloudflare Workers**: Edge-deployed API proxy
70
+ - **Cloudflare Pages**: Static frontend hosting
71
+ - **Railway**: Full Node.js backend (alternative)
72
+ - **MCP Integration**: Connect AI clients directly to production
73
+
74
+ ---
75
+
76
+ ## Installation Options
77
+
78
+ ### Option 1: Interactive Setup (Recommended)
79
+
80
+ ```bash
81
+ npx story-ui init
82
+ ```
79
83
 
80
- ### Basic Configuration (`story-ui.config.js`)
84
+ The interactive installer will ask:
85
+
86
+ 1. **Framework Selection**
87
+ ```
88
+ ? Which JavaScript framework are you using?
89
+ > React
90
+ Vue
91
+ Angular
92
+ Svelte
93
+ Web Components
94
+ ```
95
+
96
+ 2. **Design System Selection** (varies by framework)
97
+ ```
98
+ # For React:
99
+ ? Choose a design system:
100
+ > ShadCN/UI
101
+ Mantine
102
+ Chakra UI
103
+ Ant Design
104
+ Custom
105
+
106
+ # For Vue:
107
+ ? Choose a design system:
108
+ > Vuetify
109
+ Element Plus
110
+ PrimeVue
111
+ Quasar
112
+ Custom
113
+
114
+ # For Angular:
115
+ ? Choose a design system:
116
+ > Angular Material
117
+ PrimeNG
118
+ NG-ZORRO
119
+ Custom
120
+ ```
121
+
122
+ 3. **AI Provider Selection**
123
+ ```
124
+ ? Which AI provider do you prefer?
125
+ > Claude (Anthropic) - Recommended
126
+ OpenAI (GPT-5)
127
+ Google Gemini
128
+
129
+ ? Enter your API key:
130
+ ```
131
+
132
+ ### Option 2: Manual Configuration
133
+
134
+ Create `story-ui.config.js` in your project root:
81
135
 
82
136
  ```javascript
83
137
  export default {
138
+ // Framework: 'react' | 'vue' | 'angular' | 'svelte' | 'web-components'
139
+ framework: 'react',
140
+
84
141
  // Component library import path
85
- importPath: 'your-component-library',
142
+ importPath: '@mantine/core',
86
143
 
87
- // Path to your local components (for custom libraries)
144
+ // Path to custom components
88
145
  componentsPath: './src/components',
89
146
 
90
147
  // Generated stories location
91
148
  generatedStoriesPath: './src/stories/generated/',
92
149
 
150
+ // LLM provider configuration
151
+ llmProvider: 'claude', // 'claude' | 'openai' | 'gemini'
152
+
93
153
  // Story configuration
94
154
  storyPrefix: 'Generated/',
95
- defaultAuthor: 'Story UI AI',
96
-
97
- // Layout rules for multi-column layouts
98
- layoutRules: {
99
- multiColumnWrapper: 'div',
100
- columnComponent: 'div',
101
- containerComponent: 'div'
102
- }
155
+ defaultAuthor: 'Story UI AI'
103
156
  };
104
157
  ```
105
158
 
106
- ## 🌟 Officially Supported Design Systems
107
-
108
- Story UI provides guided installation and automatic configuration for the following design systems:
109
-
110
- | Design System | Package | Auto Install | Pre-configured |
111
- |--------------|---------|--------------|----------------|
112
- | Ant Design | `antd` | āœ… Yes | āœ… Yes |
113
- | Mantine | `@mantine/core` | āœ… Yes | āœ… Yes |
114
- | Chakra UI | `@chakra-ui/react` | āœ… Yes | āœ… Yes |
115
- | Custom | Any React library | āŒ Manual | āœ… Configurable |
116
-
117
- When you run `npx story-ui init`, you can choose to automatically install and configure these design systems with optimized layout rules and component mappings.
159
+ ---
118
160
 
119
- ## šŸ“± Examples
161
+ ## Usage
120
162
 
121
- ### Simple Component Story
163
+ ### Basic Story Generation
122
164
 
165
+ Start the Story UI server:
166
+ ```bash
167
+ npm run story-ui
123
168
  ```
124
- You: "Create a button story with different variants"
125
169
 
126
- AI: "I'll create a comprehensive Button story with all available variants..."
170
+ Then describe what you want:
171
+ ```
172
+ You: "Create a product card with image, title, price, and add to cart button"
127
173
  ```
128
174
 
129
- Result:
175
+ Story UI generates:
130
176
  ```tsx
131
- export const AllVariants = {
177
+ export const ProductCard = {
132
178
  render: () => (
133
- <div style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>
134
- <Button variant="primary">Primary</Button>
135
- <Button variant="secondary">Secondary</Button>
136
- <Button variant="tertiary">Tertiary</Button>
137
- <Button variant="plain">Plain</Button>
138
- </div>
179
+ <Card shadow="sm" padding="lg" radius="md" withBorder>
180
+ <Card.Section>
181
+ <Image src="https://example.com/product.jpg" height={160} alt="Product" />
182
+ </Card.Section>
183
+ <Group justify="space-between" mt="md" mb="xs">
184
+ <Text fw={500}>Product Name</Text>
185
+ <Badge color="pink">On Sale</Badge>
186
+ </Group>
187
+ <Text size="sm" c="dimmed">$29.99</Text>
188
+ <Button color="blue" fullWidth mt="md" radius="md">
189
+ Add to Cart
190
+ </Button>
191
+ </Card>
139
192
  )
140
193
  };
141
194
  ```
142
195
 
143
- ### Complex Layout Story
196
+ ### Iterating on Stories
144
197
 
198
+ Continue the conversation to refine:
145
199
  ```
146
- You: "Create a product card with image, title, price, and add to cart button"
200
+ You: "Make the button green and add a quantity selector"
201
+ ```
202
+
203
+ Story UI modifies only what you requested, preserving the rest.
147
204
 
148
- AI: "I'll create a product card using your design system components..."
205
+ ### Using with Different Frameworks
206
+
207
+ **Vue Example:**
208
+ ```
209
+ You: "Create a user profile card with avatar, name, and edit button"
149
210
  ```
150
211
 
151
- ### Iterating on Existing Stories
212
+ Generates Vue template:
213
+ ```vue
214
+ <template>
215
+ <v-card class="mx-auto" max-width="400">
216
+ <v-card-item>
217
+ <v-avatar size="80">
218
+ <v-img src="https://example.com/avatar.jpg" alt="User" />
219
+ </v-avatar>
220
+ <v-card-title>John Doe</v-card-title>
221
+ <v-card-subtitle>Software Engineer</v-card-subtitle>
222
+ </v-card-item>
223
+ <v-card-actions>
224
+ <v-btn color="primary" variant="outlined">Edit Profile</v-btn>
225
+ </v-card-actions>
226
+ </v-card>
227
+ </template>
228
+ ```
152
229
 
230
+ **Angular Example:**
231
+ ```
232
+ You: "Create a data table with sorting and pagination"
153
233
  ```
154
- You: "Make the buttons full width"
155
234
 
156
- AI: "I'll modify the existing story to make the buttons full width..."
235
+ Generates Angular component:
236
+ ```typescript
237
+ @Component({
238
+ selector: 'app-data-table',
239
+ template: `
240
+ <mat-table [dataSource]="dataSource" matSort>
241
+ <ng-container matColumnDef="name">
242
+ <mat-header-cell *matHeaderCellDef mat-sort-header>Name</mat-header-cell>
243
+ <mat-cell *matCellDef="let element">{{element.name}}</mat-cell>
244
+ </ng-container>
245
+ <!-- Additional columns -->
246
+ </mat-table>
247
+ <mat-paginator [pageSizeOptions]="[5, 10, 25]" showFirstLastButtons />
248
+ `
249
+ })
250
+ export class DataTableComponent { }
157
251
  ```
158
252
 
159
- The AI will preserve your existing code and only modify what you requested!
253
+ ---
160
254
 
161
- ## šŸ¤– MCP Server Integration
255
+ ## MCP Server Integration
162
256
 
163
- Story UI can be used as a Model Context Protocol (MCP) server, allowing you to generate stories directly from Claude Desktop or other MCP-compatible clients.
257
+ Story UI includes a Model Context Protocol (MCP) server, allowing direct integration with AI clients like Claude Desktop.
164
258
 
165
- ### Quick Setup for Claude Desktop
259
+ ### Local MCP Setup
166
260
 
167
- 1. Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
261
+ Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
168
262
 
169
263
  ```json
170
264
  {
@@ -173,190 +267,233 @@ Story UI can be used as a Model Context Protocol (MCP) server, allowing you to g
173
267
  "command": "npx",
174
268
  "args": ["@tpitre/story-ui", "mcp"],
175
269
  "env": {
176
- "CLAUDE_API_KEY": "your-claude-api-key-here"
270
+ "ANTHROPIC_API_KEY": "your-api-key"
177
271
  }
178
272
  }
179
273
  }
180
274
  }
181
275
  ```
182
276
 
183
- 2. Start the Story UI HTTP server in your project:
277
+ Then start the Story UI HTTP server:
184
278
  ```bash
185
- story-ui start
279
+ npx story-ui start
280
+ ```
281
+
282
+ ### Production MCP Setup
283
+
284
+ Connect Claude Desktop to your deployed Story UI instance:
285
+
286
+ ```json
287
+ {
288
+ "mcpServers": {
289
+ "story-ui-production": {
290
+ "command": "npx",
291
+ "args": ["mcp-remote", "https://your-worker.workers.dev/mcp"],
292
+ "env": {}
293
+ }
294
+ }
295
+ }
186
296
  ```
187
297
 
188
- 3. Restart Claude Desktop
298
+ This allows you to generate stories in your production environment directly from Claude Desktop, with all your design system configurations loaded.
189
299
 
190
- Now you can generate stories directly in Claude Desktop! Just ask:
191
- - "Use Story UI to create a hero section with a title and CTA button"
300
+ ### Available MCP Commands
301
+
302
+ Once connected, you can use these commands in Claude Desktop:
303
+ - "Use Story UI to create a hero section with a CTA button"
192
304
  - "List all available components in Story UI"
305
+ - "Generate a dashboard layout with sidebar navigation"
193
306
  - "Show me the stories I've generated"
194
307
 
195
- For detailed MCP setup instructions, see [docs/MCP_INTEGRATION.md](docs/MCP_INTEGRATION.md).
308
+ ---
196
309
 
197
- ## šŸ“– Documentation Support
310
+ ## Production Deployment
198
311
 
199
- ### Directory-Based Documentation (Recommended)
312
+ Story UI v3 can be deployed as a standalone web application accessible from anywhere.
200
313
 
201
- Create a `story-ui-docs/` directory in your project root:
314
+ ### Architecture
202
315
 
203
316
  ```
204
- story-ui-docs/
205
- ā”œā”€ā”€ README.md # Overview and getting started
206
- ā”œā”€ā”€ guidelines/
207
- │ ā”œā”€ā”€ accessibility.md # Accessibility guidelines
208
- │ ā”œā”€ā”€ responsive-design.md # Responsive design rules
209
- │ └── brand-guidelines.md # Brand usage
210
- ā”œā”€ā”€ tokens/
211
- │ ā”œā”€ā”€ colors.json # Color tokens
212
- │ ā”œā”€ā”€ spacing.md # Spacing system
213
- │ └── typography.json # Typography tokens
214
- ā”œā”€ā”€ components/
215
- │ ā”œā”€ā”€ button.md # Button documentation
216
- │ └── forms.md # Form component docs
217
- └── patterns/
218
- ā”œā”€ā”€ layouts.md # Layout patterns
219
- └── data-tables.md # Table patterns
317
+ ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
318
+ │ Cloudflare Pages │
319
+ │ (Your Frontend App) │
320
+ │ ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚
321
+ │ │ - Chat Interface ││
322
+ │ │ - Live Component Preview ││
323
+ │ │ - Syntax Highlighted Code View ││
324
+ │ │ - Provider/Model Selection ││
325
+ │ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚
326
+ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
327
+ │
328
+ ā–¼
329
+ ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
330
+ │ Cloudflare Workers Edge │
331
+ │ ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”ā”‚
332
+ │ │ - /story-ui/providers → Available providers/models ││
333
+ │ │ - /story-ui/claude → Claude API proxy ││
334
+ │ │ - /story-ui/openai → OpenAI API proxy ││
335
+ │ │ - /story-ui/gemini → Gemini API proxy ││
336
+ │ │ - /mcp → MCP JSON-RPC endpoint ││
337
+ │ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ā”‚
338
+ ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
220
339
  ```
221
340
 
222
- Story UI will automatically discover and use this documentation to generate better stories.
341
+ ### Deploy to Cloudflare
223
342
 
224
- ### Legacy Single-File Documentation
343
+ **1. Deploy the Edge Worker (Backend)**
225
344
 
226
- You can still use a single `story-ui-considerations.md` file in your project root for simpler setups.
227
-
228
- ## šŸ”§ Advanced Features
345
+ ```bash
346
+ cd cloudflare-edge
347
+ wrangler deploy
229
348
 
230
- ### Story Version History
349
+ # Set your API keys as secrets
350
+ wrangler secret put ANTHROPIC_API_KEY
351
+ wrangler secret put OPENAI_API_KEY # optional
352
+ wrangler secret put GEMINI_API_KEY # optional
353
+ ```
231
354
 
232
- Every generated story is tracked with version history:
233
- - Each iteration is saved with a timestamp
234
- - Previous versions are linked for easy tracking
235
- - History is stored in `.story-ui-history/` (git-ignored)
355
+ **2. Deploy the Frontend**
236
356
 
237
- ### Component Validation
357
+ ```bash
358
+ cd templates/production-app
359
+ npm install
360
+ npm run build
361
+ wrangler pages deploy dist --project-name=your-app-name
362
+ ```
238
363
 
239
- All generated stories are validated to ensure:
240
- - āœ… Only existing components are imported
241
- - āœ… Props match component interfaces
242
- - āœ… Import paths are correct
243
- - āœ… TypeScript types are valid
364
+ **3. Configure Environment**
244
365
 
245
- ### Production Mode
366
+ Update the frontend to point to your worker URL in the configuration.
246
367
 
247
- In production environments, Story UI operates in memory-only mode:
248
- - No files are written to disk
249
- - Stories are served from memory
250
- - Clean deployment without generated files
368
+ ### Alternative: Railway Backend
251
369
 
252
- ## šŸš€ CLI Commands
370
+ For a full Node.js environment:
253
371
 
254
372
  ```bash
255
- # Initialize Story UI in a new project
256
- npx story-ui init
257
-
258
- # Start the Story UI server
259
- npx story-ui start
260
-
261
- # Start on a specific port
262
- npx story-ui start --port 4005
373
+ cd mcp-server
374
+ railway up
263
375
 
264
- # Use a specific config file
265
- npx story-ui start --config custom-config.js
376
+ # Set environment variables in Railway dashboard:
377
+ # - ANTHROPIC_API_KEY
378
+ # - OPENAI_API_KEY (optional)
379
+ # - GEMINI_API_KEY (optional)
266
380
  ```
267
381
 
268
- ## 🚢 Production Deployment
382
+ ---
269
383
 
270
- Story UI v3 can be deployed as a standalone web application with multiple backend options.
384
+ ## Design System Documentation
271
385
 
272
- ### Prerequisites
386
+ Story UI can learn your design system conventions to generate better stories.
273
387
 
274
- Install the required CLI tools:
388
+ ### Directory-Based Documentation (Recommended)
275
389
 
276
- ```bash
277
- # Railway CLI (for backend deployment)
278
- npm install -g @railway/cli
279
- railway login
390
+ Create a `story-ui-docs/` directory:
280
391
 
281
- # Wrangler (for Cloudflare Workers - optional)
282
- npm install -g wrangler
283
- wrangler login
392
+ ```
393
+ story-ui-docs/
394
+ ā”œā”€ā”€ README.md # Overview
395
+ ā”œā”€ā”€ guidelines/
396
+ │ ā”œā”€ā”€ accessibility.md # A11y guidelines
397
+ │ ā”œā”€ā”€ responsive-design.md # Responsive rules
398
+ │ └── brand-guidelines.md # Brand usage
399
+ ā”œā”€ā”€ tokens/
400
+ │ ā”œā”€ā”€ colors.json # Color tokens
401
+ │ ā”œā”€ā”€ spacing.md # Spacing system
402
+ │ └── typography.json # Typography
403
+ ā”œā”€ā”€ components/
404
+ │ ā”œā”€ā”€ button.md # Button documentation
405
+ │ └── forms.md # Form patterns
406
+ └── patterns/
407
+ ā”œā”€ā”€ layouts.md # Layout patterns
408
+ └── data-tables.md # Table patterns
284
409
  ```
285
410
 
286
- ### Option 1: Railway Backend (Recommended)
411
+ ### Single-File Documentation
287
412
 
288
- Deploy the backend to Railway for a fully managed Node.js environment:
413
+ For simpler setups, use `story-ui-considerations.md`:
289
414
 
290
- ```bash
291
- # From the project root
292
- cd mcp-server
293
- railway up
415
+ ```markdown
416
+ # Design System Considerations
294
417
 
295
- # Set environment variables in Railway dashboard:
296
- # - ANTHROPIC_API_KEY (required for Claude)
297
- # - OPENAI_API_KEY (optional for OpenAI)
298
- # - GEMINI_API_KEY (optional for Gemini)
418
+ ## Color Usage
419
+ - Primary actions: blue.6
420
+ - Destructive actions: red.6
421
+ - Success states: green.6
422
+
423
+ ## Component Preferences
424
+ - Use Button with variant="filled" for primary actions
425
+ - Use Card with shadow="sm" for content containers
299
426
  ```
300
427
 
301
- ### Option 2: Cloudflare Workers Edge
428
+ ---
302
429
 
303
- Deploy an edge proxy to Cloudflare Workers:
430
+ ## CLI Reference
304
431
 
305
432
  ```bash
306
- # From the project root
307
- cd cloudflare-edge
308
- wrangler deploy
433
+ # Initialize Story UI
434
+ npx story-ui init
309
435
 
310
- # Set secrets:
311
- wrangler secret put ANTHROPIC_API_KEY
312
- wrangler secret put OPENAI_API_KEY # optional
313
- wrangler secret put GEMINI_API_KEY # optional
436
+ # Start the development server
437
+ npx story-ui start
438
+ npx story-ui start --port 4005
439
+
440
+ # Deploy to production
441
+ npx story-ui deploy
442
+
443
+ # Run MCP server
444
+ npx story-ui mcp
314
445
  ```
315
446
 
316
- ### Frontend Deployment
447
+ ---
448
+
449
+ ## API Reference
317
450
 
318
- Deploy the chat UI to Cloudflare Pages:
451
+ ### REST Endpoints
319
452
 
320
- ```bash
321
- cd test-storybooks/mantine-storybook/.story-ui-build
322
- npm run build
323
- wrangler pages deploy dist --project-name=story-ui-app
453
+ | Method | Endpoint | Description |
454
+ |--------|----------|-------------|
455
+ | `GET` | `/story-ui/providers` | List available LLM providers and models |
456
+ | `POST` | `/story-ui/claude` | Generate with Claude |
457
+ | `POST` | `/story-ui/openai` | Generate with OpenAI |
458
+ | `POST` | `/story-ui/gemini` | Generate with Gemini |
459
+ | `GET` | `/story-ui/considerations` | Get design system context |
460
+
461
+ ### Request Format
462
+
463
+ ```typescript
464
+ {
465
+ prompt: string; // User's request
466
+ model?: string; // Specific model to use
467
+ previousCode?: string; // For iterations
468
+ history?: Message[]; // Conversation history
469
+ imageData?: string; // Base64 image for vision
470
+ }
324
471
  ```
325
472
 
326
- ### Environment Variables
473
+ ---
327
474
 
328
- | Variable | Required | Description |
329
- |----------|----------|-------------|
330
- | `ANTHROPIC_API_KEY` | Yes | Claude API key from Anthropic |
331
- | `OPENAI_API_KEY` | No | OpenAI API key for GPT models |
332
- | `GEMINI_API_KEY` | No | Google Gemini API key |
333
- | `DEFAULT_MODEL` | No | Default LLM model to use |
475
+ ## Upgrading from v2
334
476
 
335
- ### REST API Endpoints
477
+ Story UI v3 is backwards compatible with v2 configurations. However, to take advantage of new features:
336
478
 
337
- The backend provides these endpoints:
479
+ 1. **Multi-Provider Support**: Add `llmProvider` to your config
480
+ 2. **Framework Detection**: Add `framework` to your config for non-React projects
481
+ 3. **Production Deployment**: Use `npx story-ui deploy` for one-command deployment
338
482
 
339
- | Method | Endpoint | Description |
340
- |--------|----------|-------------|
341
- | `GET` | `/story-ui/providers` | List available LLM providers |
342
- | `POST` | `/story-ui/generate` | Generate a new story |
343
- | `GET` | `/story-ui/stories` | List all stories |
344
- | `GET` | `/story-ui/stories/:id` | Get a specific story |
345
- | `DELETE` | `/story-ui/stories/:id` | Delete a story |
483
+ No breaking changes - existing stories and configurations will continue to work.
346
484
 
347
- ## šŸ¤ Contributing
485
+ ---
486
+
487
+ ## Contributing
348
488
 
349
- We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
489
+ We welcome contributions! See our [Contributing Guide](CONTRIBUTING.md).
350
490
 
351
491
  ### Development Setup
352
492
 
353
493
  ```bash
354
- # Clone and install
355
494
  git clone https://github.com/southleft/story-ui.git
356
495
  cd story-ui
357
496
  npm install
358
-
359
- # Build and link for development
360
497
  npm run build
361
498
  npm link
362
499
 
@@ -365,17 +502,22 @@ cd your-project
365
502
  npm link @tpitre/story-ui
366
503
  ```
367
504
 
368
- ## šŸ“„ License
505
+ ---
506
+
507
+ ## License
369
508
 
370
509
  MIT Ā© [Story UI Contributors](LICENSE)
371
510
 
372
- ## šŸ”— Links
511
+ ---
512
+
513
+ ## Links
373
514
 
374
515
  - [GitHub Repository](https://github.com/southleft/story-ui)
375
516
  - [NPM Package](https://www.npmjs.com/package/@tpitre/story-ui)
376
517
  - [Issues & Support](https://github.com/southleft/story-ui/issues)
518
+ - [MCP Integration Guide](docs/MCP_INTEGRATION.md)
519
+ - [Deployment Guide](DEPLOYMENT.md)
377
520
 
378
521
  ---
379
522
 
380
- *Story UI - Making component documentation delightful, one conversation at a time.* ✨
381
-
523
+ *Story UI - Making component documentation delightful, one conversation at a time.*
@@ -4,6 +4,7 @@
4
4
  export declare function cleanupDefaultStorybookComponents(): void;
5
5
  export interface SetupOptions {
6
6
  designSystem?: string;
7
+ llmProvider?: 'claude' | 'openai' | 'gemini';
7
8
  yes?: boolean;
8
9
  skipInstall?: boolean;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../cli/setup.ts"],"names":[],"mappings":"AAkCA;;GAEG;AACH,wBAAgB,iCAAiC,SA8ChD;AAuWD,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,iBAsvB5D"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../cli/setup.ts"],"names":[],"mappings":"AAkCA;;GAEG;AACH,wBAAgB,iCAAiC,SA8ChD;AAiYD,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,iBA2wB5D"}
package/dist/cli/setup.js CHANGED
@@ -189,6 +189,30 @@ export default preview;
189
189
  fs.writeFileSync(previewTsxPath, previewContent);
190
190
  console.log(chalk.green(`āœ… Created .storybook/preview.tsx with ${designSystem} provider setup`));
191
191
  }
192
+ // LLM Provider configurations - synced with production (cloudflare-edge/src/worker.ts)
193
+ const LLM_PROVIDERS = {
194
+ claude: {
195
+ name: 'Claude (Anthropic)',
196
+ envKey: 'ANTHROPIC_API_KEY',
197
+ models: ['claude-opus-4-5-20251101', 'claude-sonnet-4-5-20250929', 'claude-haiku-4-5-20251001'],
198
+ docsUrl: 'https://console.anthropic.com/',
199
+ description: 'Recommended - Best for complex reasoning and code quality'
200
+ },
201
+ openai: {
202
+ name: 'OpenAI (GPT-5)',
203
+ envKey: 'OPENAI_API_KEY',
204
+ models: ['gpt-5.1', 'gpt-5-mini', 'gpt-5-nano'],
205
+ docsUrl: 'https://platform.openai.com/api-keys',
206
+ description: 'Versatile and fast'
207
+ },
208
+ gemini: {
209
+ name: 'Google Gemini',
210
+ envKey: 'GEMINI_API_KEY',
211
+ models: ['gemini-3-pro-preview', 'gemini-2.5-pro', 'gemini-2.5-flash'],
212
+ docsUrl: 'https://aistudio.google.com/app/apikey',
213
+ description: 'Cost-effective with good performance'
214
+ }
215
+ };
192
216
  // Design system installation configurations (organized by framework)
193
217
  const DESIGN_SYSTEM_CONFIGS = {
194
218
  // React design systems
@@ -483,6 +507,7 @@ export async function setupCommand(options = {}) {
483
507
  }
484
508
  }
485
509
  // Build design system choices based on detected framework
510
+ // Simplified to show only the most popular option per framework
486
511
  const getDesignSystemChoices = () => {
487
512
  const baseChoice = { name: 'šŸ¤– Auto-detect from package.json', value: 'auto' };
488
513
  const customChoice = { name: 'šŸ”§ Custom/Other', value: 'custom' };
@@ -490,43 +515,32 @@ export async function setupCommand(options = {}) {
490
515
  case 'angular':
491
516
  return [
492
517
  baseChoice,
493
- { name: 'šŸ…°ļø Angular Material (@angular/material)', value: 'angular-material' },
494
- { name: 'šŸŽØ PrimeNG (primeng)', value: 'primeng' },
495
- { name: '🌈 NG-ZORRO (ng-zorro-antd)', value: 'ng-zorro' },
518
+ { name: 'šŸ…°ļø Angular Material (@angular/material) - Most Popular', value: 'angular-material' },
496
519
  customChoice
497
520
  ];
498
521
  case 'vue':
499
522
  return [
500
523
  baseChoice,
501
- { name: 'šŸƒ PrimeVue (primevue)', value: 'primevue' },
502
- { name: 'šŸŽÆ Vuetify (vuetify)', value: 'vuetify' },
503
- { name: 'šŸ”® Element Plus (element-plus)', value: 'element-plus' },
524
+ { name: 'šŸŽÆ Vuetify (vuetify) - Most Popular', value: 'vuetify' },
504
525
  customChoice
505
526
  ];
506
527
  case 'svelte':
507
528
  return [
508
529
  baseChoice,
509
- { name: '🟠 Skeleton UI (skeleton)', value: 'skeleton-ui' },
510
- { name: '🌸 Svelte Material UI (svelte-material-ui)', value: 'smui' },
530
+ { name: '🟠 Skeleton UI (@skeletonlabs/skeleton) - Most Popular', value: 'skeleton-ui' },
511
531
  customChoice
512
532
  ];
513
533
  case 'web-components':
514
534
  return [
515
535
  baseChoice,
516
- { name: 'šŸ‘Ÿ Shoelace (@shoelace-style/shoelace)', value: 'shoelace' },
517
- { name: 'šŸ”„ Lit (@lit/element)', value: 'lit' },
518
- { name: '🌟 Vaadin (@vaadin)', value: 'vaadin' },
536
+ { name: 'šŸ‘Ÿ Shoelace (@shoelace-style/shoelace) - Most Popular', value: 'shoelace' },
519
537
  customChoice
520
538
  ];
521
539
  case 'react':
522
540
  default:
523
541
  return [
524
542
  baseChoice,
525
- { name: '🐜 Ant Design (antd) - Automatic Install & Configure', value: 'antd' },
526
- { name: 'šŸŽÆ Mantine (@mantine/core) - Automatic Install & Configure', value: 'mantine' },
527
- { name: '⚔ Chakra UI (@chakra-ui/react) - Automatic Install & Configure', value: 'chakra' },
528
- { name: 'šŸŽØ Material UI (@mui/material)', value: 'mui' },
529
- { name: '✨ shadcn/ui (Tailwind + Radix) - Automatic Install & Configure', value: 'shadcn' },
543
+ { name: 'šŸŽÆ Mantine (@mantine/core) - Most Popular', value: 'mantine' },
530
544
  customChoice
531
545
  ];
532
546
  }
@@ -544,14 +558,17 @@ export async function setupCommand(options = {}) {
544
558
  console.log(chalk.yellow(`Valid options: ${validSystems.join(', ')}`));
545
559
  process.exit(1);
546
560
  }
561
+ const llmProvider = options.llmProvider || 'claude';
547
562
  answers = {
548
563
  designSystem,
549
564
  installDesignSystem: !options.skipInstall && Object.keys(DESIGN_SYSTEM_CONFIGS).includes(designSystem),
550
565
  generatedStoriesPath: './src/stories/generated/',
566
+ llmProvider,
551
567
  mcpPort,
552
568
  hasApiKey: false,
553
569
  };
554
570
  console.log(chalk.blue(`šŸ“¦ Design system: ${designSystem}`));
571
+ console.log(chalk.blue(`šŸ¤– AI Provider: ${LLM_PROVIDERS[llmProvider]?.name || llmProvider}`));
555
572
  console.log(chalk.blue(`šŸ“ Generated stories: ${answers.generatedStoriesPath}`));
556
573
  console.log(chalk.blue(`šŸ”Œ MCP port: ${mcpPort}`));
557
574
  if (options.skipInstall) {
@@ -623,16 +640,33 @@ export async function setupCommand(options = {}) {
623
640
  return available ? true : `Port ${value} is already in use`;
624
641
  }
625
642
  },
643
+ {
644
+ type: 'list',
645
+ name: 'llmProvider',
646
+ message: 'Which AI provider would you like to use?',
647
+ choices: [
648
+ { name: `${chalk.green('Claude (Anthropic)')} - ${chalk.gray('Recommended for complex reasoning and code quality')}`, value: 'claude' },
649
+ { name: `${chalk.blue('OpenAI (GPT-5)')} - ${chalk.gray('Versatile and fast')}`, value: 'openai' },
650
+ { name: `${chalk.yellow('Google Gemini')} - ${chalk.gray('Cost-effective with good performance')}`, value: 'gemini' }
651
+ ],
652
+ default: 'claude'
653
+ },
626
654
  {
627
655
  type: 'confirm',
628
656
  name: 'hasApiKey',
629
- message: 'Do you have a Claude API key? (You can add it later)',
657
+ message: (promptAnswers) => {
658
+ const provider = LLM_PROVIDERS[promptAnswers.llmProvider];
659
+ return `Do you have a ${provider?.name || 'provider'} API key? (You can add it later)`;
660
+ },
630
661
  default: false
631
662
  },
632
663
  {
633
664
  type: 'password',
634
665
  name: 'apiKey',
635
- message: 'Enter your Claude API key:',
666
+ message: (promptAnswers) => {
667
+ const provider = LLM_PROVIDERS[promptAnswers.llmProvider];
668
+ return `Enter your ${provider?.name || 'provider'} API key:`;
669
+ },
636
670
  when: (promptAnswers) => promptAnswers.hasApiKey,
637
671
  validate: (input) => input.trim() ? true : 'API key is required'
638
672
  }
@@ -906,6 +940,7 @@ Material UI (MUI) is a React component library implementing Material Design.
906
940
  config.defaultAuthor = 'Story UI AI';
907
941
  config.componentFramework = componentFramework; // react, angular, vue, svelte, or web-components
908
942
  config.storybookFramework = storybookFramework; // e.g., @storybook/react-vite, @storybook/angular
943
+ config.llmProvider = answers.llmProvider || 'claude'; // claude, openai, or gemini
909
944
  // Create configuration file
910
945
  const configContent = `module.exports = ${JSON.stringify(config, null, 2)};`;
911
946
  const configPath = path.join(process.cwd(), 'story-ui.config.js');
@@ -972,23 +1007,32 @@ Material UI (MUI) is a React component library implementing Material Design.
972
1007
  console.log(chalk.green('āœ… Created story-ui-docs/ directory structure'));
973
1008
  console.log(chalk.gray(' Add your design system documentation to enhance AI story generation'));
974
1009
  }
975
- // Create .env file from template
976
- const envSamplePath = path.resolve(__dirname, '../../.env.sample');
1010
+ // Create .env file with provider-specific configuration
977
1011
  const envPath = path.join(process.cwd(), '.env');
1012
+ const selectedProvider = answers.llmProvider || 'claude';
1013
+ const providerConfig = LLM_PROVIDERS[selectedProvider];
978
1014
  if (!fs.existsSync(envPath)) {
979
- if (fs.existsSync(envSamplePath)) {
980
- let envContent = fs.readFileSync(envSamplePath, 'utf-8');
981
- // If user provided API key, update the template
982
- if (answers.apiKey) {
983
- envContent = envContent.replace('your-claude-api-key-here', answers.apiKey);
984
- }
985
- // Update the VITE_STORY_UI_PORT with the chosen port
986
- if (answers.mcpPort) {
987
- envContent = envContent.replace('VITE_STORY_UI_PORT=4001', `VITE_STORY_UI_PORT=${answers.mcpPort}`);
988
- }
989
- fs.writeFileSync(envPath, envContent);
990
- console.log(chalk.green(`āœ… Created .env file${answers.apiKey ? ' with your API key' : ''}`));
991
- }
1015
+ // Generate .env content based on selected provider
1016
+ let envContent = `# Story UI Configuration
1017
+ # Generated by: npx story-ui init
1018
+
1019
+ # LLM Provider: ${providerConfig?.name || selectedProvider}
1020
+ LLM_PROVIDER=${selectedProvider}
1021
+
1022
+ # API Key for ${providerConfig?.name || selectedProvider}
1023
+ # Get your key from: ${providerConfig?.docsUrl || 'your provider dashboard'}
1024
+ ${providerConfig?.envKey || 'API_KEY'}=${answers.apiKey || 'your-api-key-here'}
1025
+
1026
+ # Story UI MCP Server Port
1027
+ VITE_STORY_UI_PORT=${answers.mcpPort || '4001'}
1028
+
1029
+ # Optional: Add additional provider keys if you want to switch providers later
1030
+ # ANTHROPIC_API_KEY=your-anthropic-key
1031
+ # OPENAI_API_KEY=your-openai-key
1032
+ # GEMINI_API_KEY=your-gemini-key
1033
+ `;
1034
+ fs.writeFileSync(envPath, envContent);
1035
+ console.log(chalk.green(`āœ… Created .env file for ${providerConfig?.name || selectedProvider}${answers.apiKey ? ' with your API key' : ''}`));
992
1036
  }
993
1037
  else {
994
1038
  console.log(chalk.yellow('āš ļø .env file already exists, skipping'));
@@ -1077,11 +1121,13 @@ Material UI (MUI) is a React component library implementing Material Design.
1077
1121
  console.log(`šŸ“¦ Import path: ${chalk.cyan(config.importPath)}`);
1078
1122
  }
1079
1123
  if (!answers.apiKey) {
1080
- console.log(chalk.yellow('\nāš ļø Don\'t forget to add your Claude API key to .env file!'));
1081
- console.log(' Get your key from: https://console.anthropic.com/');
1124
+ const provider = LLM_PROVIDERS[answers.llmProvider] || LLM_PROVIDERS.claude;
1125
+ console.log(chalk.yellow(`\nāš ļø Don't forget to add your ${provider.name} API key to .env file!`));
1126
+ console.log(` Get your key from: ${provider.docsUrl}`);
1082
1127
  }
1128
+ const providerName = LLM_PROVIDERS[answers.llmProvider]?.name || 'your LLM provider';
1083
1129
  console.log('\nšŸš€ Next steps:');
1084
- console.log('1. ' + (answers.apiKey ? 'Start' : 'Add your Claude API key to .env, then start') + ' Story UI: npm run story-ui');
1130
+ console.log('1. ' + (answers.apiKey ? 'Start' : `Add your ${providerName} API key to .env, then start`) + ' Story UI: npm run story-ui');
1085
1131
  console.log('2. Start Storybook: npm run storybook');
1086
1132
  console.log('3. Navigate to "Story UI > Story Generator" in your Storybook sidebar');
1087
1133
  console.log('4. Start generating UI with natural language prompts!');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tpitre/story-ui",
3
- "version": "2.5.0",
3
+ "version": "2.6.1",
4
4
  "description": "AI-powered Storybook story generator with dynamic component discovery",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",