import { cva } from "class-variance-authority" import { deepmerge } from "deepmerge-ts" import styles from "./button.module.css" export const config = { variants: { variant: { Primary: styles["variant-primary"], Secondary: styles["variant-secondary"], Tertiary: styles["variant-tertiary"], Text: styles["variant-text"], }, color: { Primary: styles["color-primary"], Inverted: styles["color-inverted"], }, size: { sm: styles["size-sm"], md: styles["size-md"], lg: styles["size-lg"], }, wrapping: { true: undefined, false: styles["no-wrapping"], }, fullWidth: { true: styles["full-width"], false: undefined, }, }, defaultVariants: { variant: "Primary", color: "Primary", size: "lg", wrapping: true, }, } as const const buttonConfig = { variants: { ...config.variants, }, defaultVariants: { ...config.defaultVariants, }, } as const export const variants = cva(styles.button, buttonConfig) export function withButton(config: T) { return deepmerge(buttonConfig, config) }