feat: release design system engine, studio and component contracts

This commit is contained in:
Clintchiz committed 2026-10-19 13:09:03 +05:30
1 parent ff1065fb27
commit 3943b946d6
693 files changed
+175546 -3894

No files matched your search

@@ -22,7 +22,7 @@ const reference = JSON.parse(
};
const manifest = JSON.parse(readFileSync(join(root, "showcase-manifest.json"), "utf8")) as {
removed: string[];
blocks: Array<{name: string; slug: string; path: string}>;
blocks: Array<{ name: string; slug: string; path: string }>;
componentCount: number;
categoryCount: number;
totalDemoCount: number;
@@ -71,17 +71,28 @@ test("showcase configures local Lucide icon generation", () => {
});
test("showcase manifest matches the generated UI reference", () => {
expect(manifest.componentCount + manifest.blocks.length + manifest.removed.length).toBe(reference.count);
expect(manifest.removed).toEqual(["AuthForm", "AuthSplitLayout", "PortalDashboard", "PublicPageShell"]);
expect(manifest.blocks.some(block => block.name === "Hero")).toBe(true);
expect(manifest.blocks.some(block => block.name === "CTASection")).toBe(true);
expect(manifest.componentCount + manifest.blocks.length + manifest.removed.length).toBe(
reference.count,
);
expect(manifest.removed).toEqual([
"AuthForm",
"AuthSplitLayout",
"PortalDashboard",
"PublicPageShell",
]);
expect(manifest.blocks.some((block) => block.name === "Hero")).toBe(true);
expect(manifest.blocks.some((block) => block.name === "CTASection")).toBe(true);
expect(manifest.components).toHaveLength(manifest.componentCount);
expect(manifest.totalDemoCount).toBeGreaterThanOrEqual(manifest.componentCount * 2);
expect(new Set(manifest.components.map((component) => component.slug)).size).toBe(
manifest.componentCount,
);
for (const component of reference.components.filter(entry => !manifest.removed.includes(entry.name) && !manifest.blocks.some(block => block.name === entry.name))) {
for (const component of reference.components.filter(
(entry) =>
!manifest.removed.includes(entry.name) &&
!manifest.blocks.some((block) => block.name === entry.name),
)) {
const documented = manifest.components.find((entry) => entry.name === component.name);
expect(documented).toBeTruthy();
expect(documented?.mount).toBe(component.mount);
@@ -120,12 +131,14 @@ test("category pages preview every UI component exactly once", () => {
.map((file) => readFileSync(join(pagesDir, file), "utf8"))
.join("\n");
const invalidPreviews = reference.components.filter(entry => manifest.components.some(component => component.name === entry.name)).flatMap((component) => {
const count = mountCount(categoryPages, component.mount);
return count === 1
? []
: [{ name: component.name, mount: component.mount, category: component.category, count }];
});
const invalidPreviews = reference.components
.filter((entry) => manifest.components.some((component) => component.name === entry.name))
.flatMap((component) => {
const count = mountCount(categoryPages, component.mount);
return count === 1
? []
: [{ name: component.name, mount: component.mount, category: component.category, count }];
});
expect(invalidPreviews).toEqual([]);
});