import { readFileSync } from "node:fs"; import { COMPONENT_CONTRACTS, type DesignSystem } from "../../design-system/src/index.ts"; import { renderComponent } from "../../test/src/index.ts"; import { resolveThemeConfig, renderThemeCss } from "../../styles/src/theme.ts"; import { renderDocument } from "../../ssr/src/index.ts"; import { uiCss } from "../src/registry.ts"; // SSR baseline gallery. Provider regions and empty collection states intentionally keep their defaults. export async function catalogFixtureDocument(system: DesignSystem, mode: string, page: number) { const entries = Object.entries(COMPONENT_CONTRACTS).slice(page * 16, (page + 1) * 16); const cards = await Promise.all( entries.map(async ([name, contract]) => { const body = await renderComponent(readFileSync(contract.source, "utf8"), {}); return `

${name}

${body}
`; }), ); const theme = resolveThemeConfig({ designSystem: { system }, default: mode }); const query = `system=${system.id}&mode=${mode}`; return renderDocument({ meta: { title: `${system.name} — Catalog ${page + 1}` }, htmlAttrs: ` data-theme="${mode}"`, body: `

Component catalog

Default server-rendered states. Interactive core preview: open.

${cards.join("")}
`, extraHead: ``, componentRecipeCss: theme.recipeCss, }); }