import { ComponentTokens } from '../types'; import { ComponentThemeContract } from './create-component-theme-contract'; export type ComponentThemeTokens = T extends object ? { [P in keyof T]: ComponentThemeTokens } : string; export type ComponentTheme< TName extends string = string, TContractTokens extends ComponentTokens = ComponentTokens, > = { name: TName; tokens: ComponentThemeTokens; }; export function createComponentTheme< TName extends string = string, TContractTokens extends ComponentTokens = ComponentTokens, >( contract: ComponentThemeContract, tokens: ComponentThemeTokens, ): ComponentTheme { return { name: contract.name, tokens, }; }