@tpitre/story-ui 4.16.1 → 4.16.3

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.
@@ -880,13 +880,15 @@ app.listen(PORT, () => {
880
880
  console.error(`MCP server running on port ${PORT}`);
881
881
  console.error(`Stories will be generated to: ${config.generatedStoriesPath}`);
882
882
  // Ensure voice-canvas scratchpad story file exists before client polling starts.
883
- // If it's missing, the first canvas generate creates it, triggering a false-positive
884
- // "externally generated story" detection which reloads the page and kills Voice Canvas.
885
- try {
886
- ensureVoiceCanvasStory(config.generatedStoriesPath || './src/stories/generated/');
887
- }
888
- catch (err) {
889
- console.error('[voice-canvas] Could not pre-create story template:', err);
883
+ // Only for React projects voice-canvas.stories.tsx imports react-live which
884
+ // breaks non-React Storybook builds (Vue, Angular, Svelte, Web Components).
885
+ if (!config.componentFramework || config.componentFramework === 'react') {
886
+ try {
887
+ ensureVoiceCanvasStory(config.generatedStoriesPath || './src/stories/generated/');
888
+ }
889
+ catch (err) {
890
+ console.error('[voice-canvas] Could not pre-create story template:', err);
891
+ }
890
892
  }
891
893
  // Initialize manifest manager (loads file, migrates from StoryTracker, reconciles)
892
894
  setTimeout(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"dynamicPackageDiscovery.d.ts","sourceRoot":"","sources":["../../story-generator/dynamicPackageDiscovery.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,MAAM,EAAE,WAAW,GAAE,MAAsB,EAAE,SAAS,GAAE,MAAgB;IAMjG;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA0H7D;;OAEG;YACW,cAAc;IAiD5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2BzB;;OAEG;IACH,OAAO,CAAC,eAAe;IA4BvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAyB/B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IASlC;;OAEG;IACH,OAAO,CAAC,aAAa;IA6BrB;;OAEG;IACG,0BAA0B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAYrD;;OAEG;IACG,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC9D,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC;IAyBF;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IAyFpC;;;;OAIG;IACH,OAAO,CAAC,8BAA8B;IAwDtC;;;;OAIG;IACH,OAAO,CAAC,iCAAiC;IAyDzC;;;;OAIG;IACH,OAAO,CAAC,kCAAkC;IA0E1C;;;;;OAKG;IACH,OAAO,CAAC,iCAAiC;IAqFzC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAiDnC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAoCpC;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAyBrC;;OAEG;IACH,OAAO,CAAC,iCAAiC;CA+B1C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAEzG;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGvG"}
1
+ {"version":3,"file":"dynamicPackageDiscovery.d.ts","sourceRoot":"","sources":["../../story-generator/dynamicPackageDiscovery.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,MAAM,EAAE,WAAW,GAAE,MAAsB,EAAE,SAAS,GAAE,MAAgB;IAMjG;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA0H7D;;OAEG;YACW,cAAc;IAiD5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2BzB;;OAEG;IACH,OAAO,CAAC,eAAe;IA4BvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAyB/B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IASlC;;OAEG;IACH,OAAO,CAAC,aAAa;IA6BrB;;OAEG;IACG,0BAA0B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAYrD;;OAEG;IACG,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC9D,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC;IAyBF;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;;;;;OAMG;IACH,OAAO,CAAC,4BAA4B;IAyFpC;;;;OAIG;IACH,OAAO,CAAC,8BAA8B;IA6EtC;;;;OAIG;IACH,OAAO,CAAC,iCAAiC;IAyDzC;;;;OAIG;IACH,OAAO,CAAC,kCAAkC;IA0E1C;;;;;OAKG;IACH,OAAO,CAAC,iCAAiC;IAqFzC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAiDnC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAoCpC;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAyBrC;;OAEG;IACH,OAAO,CAAC,iCAAiC;CA+B1C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAEzG;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGvG"}
@@ -472,16 +472,34 @@ export class DynamicPackageDiscovery {
472
472
  // export * from "./ComponentName/index.js" or export * from "./ComponentName/index.mjs"
473
473
  const reExportRegex = /export\s+\*\s+from\s+["']\.\/([^/]+)\/index(?:\.m?js)?["']/g;
474
474
  let match;
475
+ const componentsDir = path.dirname(componentsIndexPath);
475
476
  while ((match = reExportRegex.exec(content)) !== null) {
476
477
  const componentDir = match[1];
477
- // Component name is the directory name
478
+ // Resolve actual named exports from each subdirectory's index.d.ts
479
+ // This prevents directory names (e.g. "VGrid") from being treated as
480
+ // components when the directory actually re-exports different names
481
+ // (e.g. VContainer, VCol, VRow, VSpacer).
482
+ const subdirTypings = path.join(componentsDir, componentDir, 'index.d.ts');
483
+ if (fs.existsSync(subdirTypings)) {
484
+ try {
485
+ const realExports = this.extractComponentsFromTypings(fs.readFileSync(subdirTypings, 'utf-8'));
486
+ if (realExports.length > 0) {
487
+ for (const name of realExports) {
488
+ exports[name] = () => { };
489
+ exports[name].displayName = name;
490
+ exports[name].__componentPath = `${this.packageName}/${path.relative(packagePath, componentsDir)}/${componentDir}`;
491
+ }
492
+ continue; // Skip the directory-name fallback below
493
+ }
494
+ }
495
+ catch { /* fall through to directory-name fallback */ }
496
+ }
497
+ // Fallback: use directory name when we can't resolve actual exports
478
498
  if (this.isComponentName(componentDir)) {
479
499
  exports[componentDir] = () => { };
480
500
  exports[componentDir].displayName = componentDir;
481
- // GENERIC: Use relative path from package, not hardcoded design system name
482
- const relativePath = path.relative(packagePath, componentsIndexPath);
483
- const componentsDir = path.dirname(relativePath);
484
- exports[componentDir].__componentPath = `${this.packageName}/${componentsDir}/${componentDir}`;
501
+ const relPath = path.relative(packagePath, componentsIndexPath);
502
+ exports[componentDir].__componentPath = `${this.packageName}/${path.dirname(relPath)}/${componentDir}`;
485
503
  }
486
504
  }
487
505
  logger.log(`✅ Vue Framework: Found ${Object.keys(exports).length} components from ${path.basename(componentsIndexPath)}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tpitre/story-ui",
3
- "version": "4.16.1",
3
+ "version": "4.16.3",
4
4
  "description": "AI-powered Storybook story generator with dynamic component discovery",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",