// Button types type Buttons = { base: ButtonBase; light: ButtonTheme; dark: ButtonTheme; }; interface ButtonTheme extends ButtonProps { variants: ButtonVariants; } type ButtonVariants = { outlined: ButtonProps; text: ButtonProps; marketing: { styles: ButtonStyles; states?: ButtonStates; }; }; type ButtonStates = { hover?: ButtonStyles; active?: ButtonStyles; loading?: ButtonStyles; disabled?: ButtonStyles; }; type ButtonStyles = { backgroundColor?: string; fontSize?: string; lineHeight?: string; fontWeight?: string; color?: string; padding?: string; height?: string; borderRadius?: string; border?: string; borderColor?: string; boxSizing?: 'border-box' | 'content-box'; cursor?: 'pointer' | 'default' | 'not-allowed' | 'wait'; }; type ButtonProps = { styles: ButtonStyles; states: ButtonStates; }; type ButtonBase = { styles: ButtonStyles; states: ButtonStates; variantStyles: { mini: { fontSize: string; lineHeight: string; padding: string; height: string; }; large: { lineHeight: string; padding: string; }; }; }; // Typography types type TypographyStyles = { fontFamily: string; fontSize: string; fontWeight?: string; lineHeight: string; letterSpacing?: string; color: string; }; // Button Constants type interface ButtonConstants { light: ThemeConstants; dark: ThemeConstants; } interface ThemeConstants { background: string; button: Button; outlinedButton: OutlinedButton; themeButton: ThemeButton; } interface Button { bgColor: BgColor; fontColor: FontColor; } interface BgColor { default?: string; hover: string; active?: string; disabled?: string; } interface FontColor { default: string; hover: string; active: string; disabled: string; } interface OutlinedButton { fontColor: FontColor; } interface ThemeButton { bgColor: BgColor; fontColor: FontColor; } // Pill types type Pill = { styles: { fontFamily: string; borderRadius: string; padding: string; fontSize: string; fontWeight: string; lineHeight: string; color: string; }; variants: PillVariants; }; type PillVariants = { recommended: PillVariant; optional: PillVariant; modified: PillVariant; waived: PillVariant; }; type PillVariant = { backgroundColor: string; }; // Link types interface LinkStates { hover: { color: string; textDecorationColor: string; backgroundColor: string; }; active: { color: string; backgroundColor: string; }; disabled: { color: string; cursor: 'not-allowed'; textDecoration: string; backgroundColor: string; }; } interface LinkBase { styles: { fontFamily: string; fontSize: string; padding: string; letterSpacing: string; textDecoration: string; fontWeight: string; }; states: { hover: { textDecoration: string; textUnderlineOffset: string; textDecorationThickness: string; }; }; } interface LinkVariant { styles: { color: string; backgroundColor: string }; states: LinkStates; } interface Link { base: LinkBase; light: LinkVariant; dark: LinkVariant; } interface Breakpoints { base: string; small: string; medium: string; large: string; xlarge: string; } interface ColorWeights { '50': string; '100': string; '200': string; '300': string; '400': string; '500': string; '600': string; '700': string; '800': string; '900': string; } type NayyaPalette = { isabelline: ColorWeights; cobalt: ColorWeights; sinbad: ColorWeights; navajo: ColorWeights; vermillion: ColorWeights; watermelon: ColorWeights; }; type AdpPalette = { koala: ColorWeights; navy: ColorWeights; green: ColorWeights; amber: ColorWeights; brown: ColorWeights; red: ColorWeights; }; type Palette = NayyaPalette | AdpPalette; type Margin = { margin: string; }; interface Typography { super1: TypographyStyles; super2: TypographyStyles; super3: TypographyStyles; h1: TypographyStyles; h2: TypographyStyles; h3: TypographyStyles; h4: TypographyStyles; h5: TypographyStyles; finePrint: TypographyStyles; body1: TypographyStyles; body2: TypographyStyles; body3: TypographyStyles; label1: TypographyStyles; label2: TypographyStyles; label3: TypographyStyles; label4: TypographyStyles; bodyFont: string; headerFont: string; body1Spacing: Margin; body2Spacing: Margin; body3Spacing: Margin; } interface SurveyNavColors { link: string; activeLink: string; visitedLink: string; } interface SpendCardColors { spendAmount: string; spendBar: string; border: string; } interface HighlightsColors { border: string; } interface CoverageSpendColors { spendCard: SpendCardColors; highlights: HighlightsColors; } interface Links { default: string; hover: string; active: string; disabled: string; } interface LogoLoaderColors { borderColor: string; spinnerColor: string; } interface GenericColors { supportive: string; } interface DynamicColors { surveyNav: SurveyNavColors; coverageSpend: CoverageSpendColors; generics: GenericColors; links: Links; logoLoader: LogoLoaderColors; } interface Theme { id: string; typography: Typography; palette: Palette; buttons: Buttons; pill: Pill; link: Link; breakpoints: Breakpoints; dynamicColors: DynamicColors; } interface AdpTheme extends Theme { palette: AdpPalette; } interface NayyaTheme extends Theme { palette: NayyaPalette; } export { AdpPalette, AdpTheme, BgColor, Breakpoints, Button, ButtonBase, ButtonConstants, ButtonProps, ButtonStates, ButtonStyles, ButtonTheme, ButtonVariants, Buttons, CoverageSpendColors, DynamicColors, FontColor, GenericColors, HighlightsColors, Link, LinkBase, LinkStates, LinkVariant, Links, LogoLoaderColors, Margin, NayyaPalette, NayyaTheme, OutlinedButton, Palette, Pill, PillVariant, PillVariants, SpendCardColors, SurveyNavColors, Theme, ThemeButton, ThemeConstants, Typography, TypographyStyles };