import { designs, intents, shapes, sizes } from './constants'; type Picks = PickedItems extends [ infer Head, ...infer Rest ] ? Rest extends (keyof T)[] ? Head extends keyof T ? Picks> : Acc : Acc : Acc; type Size = (typeof sizes)[number]; type SizeLookup = Record; type Intent = (typeof intents)[number]; type IntentLookup = Record; type Design = (typeof designs)[number]; type DesignLookup = Record; type Shape = (typeof shapes)[number]; type ShapeLookup = Record; interface VariantLookup { design: DesignLookup; intent: IntentLookup; shape: ShapeLookup; size: SizeLookup; } export type { Size, SizeLookup, Intent, IntentLookup, Design, DesignLookup, Shape, ShapeLookup, Picks, VariantLookup, };