vibe-design-system 2.8.42 → 2.8.43

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe-design-system",
3
- "version": "2.8.42",
3
+ "version": "2.8.43",
4
4
  "description": "Auto-generate design systems for vibe coding projects",
5
5
  "homepage": "https://vibedesign.tech",
6
6
  "repository": {
@@ -449,6 +449,9 @@ function extractBrandAssets() {
449
449
  const assets = [];
450
450
  const dirs = [
451
451
  path.join(PROJECT_ROOT, "public"),
452
+ path.join(PROJECT_ROOT, "client", "public"),
453
+ path.join(PROJECT_ROOT, "frontend", "public"),
454
+ path.join(PROJECT_ROOT, "web", "public"),
452
455
  path.join(PROJECT_ROOT, "src", "assets"),
453
456
  path.join(PROJECT_ROOT, "src", "images"),
454
457
  path.join(PROJECT_ROOT, "client", "src", "assets"),
@@ -466,6 +469,38 @@ function extractBrandAssets() {
466
469
  assets.push({ path: filePath, name: baseName, type });
467
470
  }
468
471
  }
472
+ // Detect inline/component-based logos (SVG in JSX, brand components, text-gradient brand names)
473
+ const logoKeywordRe = /(?:logo|brand|emblem)\s*[=:]/i;
474
+ const svgLogoRe = /<svg[^>]*(?:logo|brand|emblem)/i;
475
+ const brandTextRe = /text-gradient[^"]*"[^>]*>([^<]+)</;
476
+ const headerSidebarRe = /(?:header|sidebar|navbar|nav|topbar|layout)/i;
477
+ const allTsx = getAllTsxJsxInDir(SRC_DIR);
478
+ for (const rel of allTsx) {
479
+ try {
480
+ const content = fs.readFileSync(path.join(SRC_DIR, rel), "utf-8");
481
+ let brandName = null;
482
+ // Direct logo/brand keyword in code
483
+ if (logoKeywordRe.test(content) || svgLogoRe.test(content)) {
484
+ const m = content.match(brandTextRe);
485
+ brandName = m ? m[1].trim() : path.basename(rel, path.extname(rel));
486
+ }
487
+ // Brand name via text-gradient in header/sidebar/navbar components
488
+ if (!brandName && headerSidebarRe.test(rel)) {
489
+ const m = content.match(brandTextRe);
490
+ if (m) brandName = m[1].trim();
491
+ }
492
+ if (brandName && brandName.length > 1 && brandName.length < 30) {
493
+ assets.push({
494
+ type: "logo",
495
+ path: path.relative(PROJECT_ROOT, path.join(SRC_DIR, rel)).replace(/\\/g, "/"),
496
+ name: brandName,
497
+ inline: true,
498
+ description: `Inline logo in ${rel}`,
499
+ });
500
+ }
501
+ } catch (_) {}
502
+ }
503
+
469
504
  // Fallback: if no branded assets found by keyword, include all image files from SRC_DIR/assets
470
505
  if (assets.length === 0 || assets.every((r) => r.type === "asset")) {
471
506
  const assetsDir = path.join(SRC_DIR, "assets");