import { ComplexStyleRule } from '@vanilla-extract/css'; import { BaseToken } from '../types'; import { Vars } from '../vars.css'; type StyleFn = (key: string, value: string) => ComplexStyleRule; export function createVariantFromToken< TToken extends Vars[BaseToken], TVariant extends Record = Record, >(token: TToken, styleFn: StyleFn): TVariant { const variant: Record = {}; for (const [key, value] of Object.entries(token)) { variant[key] = styleFn(key, value); } return variant as TVariant; }