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 +1 -1
- package/vds-core-template/scan.mjs +35 -0
package/package.json
CHANGED
|
@@ -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");
|