type Position = 'image-right' | 'image-left' | 'image-top' | 'image-bottom'; type TextAndImageCombination = [Position]; type ImageWidth = 'width-half' | 'width-one-third' | 'width-one-fourth'; type ImagePadding = 'padding'; type ImageOverlay = 'dark-overlay'; type ImageCombination = [ImageWidth, ImagePadding?, ImageOverlay?] | [ImagePadding, ImageWidth?, ImageOverlay?] | [ImageOverlay, ImageWidth?, ImagePadding?] | [ImageWidth, ImageOverlay, ImagePadding?] | [ImagePadding, ImageOverlay, ImageWidth?] | [ImageOverlay, ImagePadding, ImageWidth?]; type TextPosition = 'vertical-align-center'; type TextInnerPadding = 'padding'; type TextAndImageModifierConfig = { 'c-text-and-image': TextAndImageCombination; 'c-text-and-image__image': ImageCombination; 'c-text-and-image__text': [TextPosition]; 'c-text-and-image__text-inner': [TextInnerPadding]; }; export type TextAndImageModifier = { [P in keyof TextAndImageModifierConfig]: { prefix: P; modifiers: TextAndImageModifierConfig[P]; }; }[keyof TextAndImageModifierConfig]; export type ModifierItems = TextAndImageModifier[] | TextAndImageCombination; export {};