diff --git a/packages/fabric/core/variant/constructor.ts b/packages/fabric/core/variant/constructor.ts new file mode 100644 index 0000000..984e97e --- /dev/null +++ b/packages/fabric/core/variant/constructor.ts @@ -0,0 +1,14 @@ +import type { TaggedVariant, VariantTag } from "./variant.ts"; + +export function variantConstructor< + const T extends TaggedVariant, +>( + tag: T[VariantTag], +) { + return >(options: TOpts) => { + return { + _tag: tag, + ...options, + } as const; + }; +} diff --git a/packages/fabric/core/variant/index.ts b/packages/fabric/core/variant/index.ts index dd17902..f206fb5 100644 --- a/packages/fabric/core/variant/index.ts +++ b/packages/fabric/core/variant/index.ts @@ -1,2 +1,3 @@ +export * from "./constructor.ts"; export * from "./match.ts"; export * from "./variant.ts";