Files
web/packages/design-system/lib/components/ChipButton/variants.ts
Rasmus Langvad d0546926a9 Merged in fix/3697-prettier-configs (pull request #3396)
fix(SW-3691): Setup one prettier config for whole repo

* Setup prettierrc in root and remove other configs


Approved-by: Joakim Jäderberg
Approved-by: Linus Flood
2026-01-07 12:45:50 +00:00

120 lines
2.8 KiB
TypeScript

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<T>(config: T) {
return deepmerge(chipConfig, config)
}