docs(ui): publish complete component catalog

This commit is contained in:
2026-07-19 23:21:33 +05:30
parent b190bbf41c
commit 45f2820871
975 changed files with 49638 additions and 294 deletions
+32
View File
@@ -60,6 +60,38 @@ test("every package page contains installation, guide, and complete API sections
}
});
test("UI components have a dedicated catalog and complete detail pages", () => {
const reference = JSON.parse(
readFileSync(join(root, "node_modules", "@wrnexus", "ui", "component-reference.json"), "utf8"),
) as { count: number; components: Array<{ name: string; props: unknown[] }> };
const catalog = readFileSync(join(root, "app", "pages", "components.wrn"), "utf8");
const details = readdirSync(join(root, "app", "pages", "components")).filter((file) =>
file.endsWith(".wrn"),
);
expect(catalog).toContain(`@wrnexus/ui · ${reference.count} components`);
expect(catalog.match(/class="component-card"/g)).toHaveLength(reference.count);
expect(details).toHaveLength(reference.count);
const button = readFileSync(join(root, "app", "pages", "components", "button.wrn"), "utf8");
expect(button).toContain("Props and attributes");
expect(button).toContain("Requirement");
expect(button).toContain("Default");
expect(button).toContain('id="usage"');
expect(button).toContain('id="source"');
const uiPackage = readFileSync(join(packagePages, "ui.wrn"), "utf8");
expect(uiPackage).toContain('href="/components"');
expect(uiPackage).not.toContain("All 901 UI components and props");
});
test("primary navigation exposes the component catalog", () => {
for (const file of [
join(root, "app", "pages", "index.wrn"),
join(root, "app", "pages", "getting-started.wrn"),
join(root, "app", "pages", "packages", "core.wrn"),
]) {
expect(readFileSync(file, "utf8")).toContain('<a href="/components">Components</a>');
}
});
test("every package page shows multiple named usage examples", () => {
for (const name of expected) {
const source = readFileSync(join(packagePages, `${name}.wrn`), "utf8");