/** * Shared factory builders for compiled-fragment tests. */ import type { CompiledFragment, CompiledBlock } from "./compiled-types/index.js"; export function makeCompiledFragment( overrides: Partial = {}, ): CompiledFragment { return { filePath: "src/components/Button/Button.fragment.tsx", meta: { name: "Button", description: "A clickable button element", category: "actions", status: "stable", tags: ["interactive"], ...overrides.meta, }, usage: { when: ["Triggering an action", "Submitting a form"], whenNot: ["Navigating to another page"], ...overrides.usage, }, props: overrides.props ?? { variant: { type: "enum", values: ["primary", "secondary", "ghost"], default: "primary", description: "Visual style variant", }, size: { type: "enum", values: ["sm", "md", "lg"], default: "md", description: "Button size", }, disabled: { type: "boolean", default: false, description: "Whether the button is disabled", }, }, variants: overrides.variants ?? [ { name: "Primary", description: "Default primary button", code: "" }, { name: "Secondary", description: "Secondary variant", code: '' }, ], relations: overrides.relations, contract: overrides.contract, ai: overrides.ai, _generated: overrides._generated, }; } export function makeCompiledBlock( overrides: Partial = {}, ): CompiledBlock { return { filePath: "src/blocks/LoginForm.block.ts", name: "Login Form", description: "A standard login form with email and password fields", category: "authentication", components: ["Input", "Button"], code: '
\n \n \n \n
', tags: ["auth", "form"], ...overrides, }; }