import { cva } from 'class-variance-authority' import { deepmerge } from 'deepmerge-ts' import styles from './chip-button.module.css' import { config as typographyConfig } from '../Typography/variants' const variantKeys = { variant: { Default: 'Default', Outlined: 'Outlined', FilterRounded: 'FilterRounded', }, style: { Medium: 'Medium', Large: 'Large', }, typography: { Bold: 'Body/Supporting text (caption)/smBold', Regular: 'Body/Supporting text (caption)/smRegular', }, } as const export const config = { variants: { variant: { [variantKeys.variant.Default]: styles.Default, [variantKeys.variant.Outlined]: styles.Outlined, [variantKeys.variant.FilterRounded]: styles.FilterRounded, }, selected: { true: '', false: '', }, size: { [variantKeys.style.Medium]: '', [variantKeys.style.Large]: '', }, }, compoundVariants: [ { variant: variantKeys.variant.Default, className: [ typographyConfig.variants.variant[ 'Body/Supporting text (caption)/smBold' ], ], }, { variant: variantKeys.variant.Outlined, className: [ typographyConfig.variants.variant[ 'Body/Supporting text (caption)/smBold' ], ], }, { variant: variantKeys.variant.FilterRounded, size: variantKeys.style.Medium, selected: true, className: [ typographyConfig.variants.variant[ 'Body/Supporting text (caption)/smRegular' ], styles.selected, styles.medium, ], }, { variant: variantKeys.variant.FilterRounded, size: variantKeys.style.Medium, selected: false, className: [ typographyConfig.variants.variant[ 'Body/Supporting text (caption)/smRegular' ], styles.medium, ], }, { variant: variantKeys.variant.FilterRounded, size: variantKeys.style.Large, selected: true, className: [ typographyConfig.variants.variant[ 'Body/Supporting text (caption)/smRegular' ], styles.selected, styles.large, ], }, { variant: variantKeys.variant.FilterRounded, size: variantKeys.style.Large, selected: false, className: [ typographyConfig.variants.variant[ 'Body/Supporting text (caption)/smRegular' ], styles.large, ], }, ], defaultVariants: { variant: variantKeys.variant.Default, }, } export const variants = cva(styles.chip, config) const chipConfig = { variants: { ...config.variants, }, defaultVariants: config.defaultVariants, } as const export function withChipButton(config: T) { return deepmerge(chipConfig, config) }