{"version":3,"file":"style.mjs","sources":["../../../src/utils/style.ts"],"sourcesContent":["import type {\n  BetaFlattenAllToken,\n  BetaSemanticColor,\n} from '~/src/types/beta-tokens'\nimport type { FlattenAllToken, SemanticColor } from '~/src/types/tokens'\n\nimport { isNil, isString } from './type'\n\n/**\n * Convert a number to a string with `px` suffix.\n * If the value is `0`, it will return `0` instead of `0px`.\n */\nexport function px<Value extends number>(value?: Value) {\n  if (isNil(value)) {\n    return undefined\n  }\n  if (value !== 0) {\n    return `${value}px` as const\n  }\n  return value as 0\n}\n\n/**\n * Convert a number or string to a string with `px` suffix.\n * If the value is `0`, it will return `0` instead of `0px`.\n */\nexport function cssDimension<Value extends number | string>(value?: Value) {\n  if (isNil(value)) {\n    return undefined\n  }\n  if (isString(value)) {\n    return value\n  }\n  if (value !== 0) {\n    return `${value}px` as const\n  }\n  return value as 0\n}\n\n/**\n * Generates a CSS variable string with the given property name.\n */\nexport function cssVar<PropertyName extends string | undefined>(\n  propertyName: PropertyName\n) {\n  /* eslint-disable no-nested-ternary */\n  return !isNil(propertyName) ? (`var(--${propertyName})` as const) : undefined\n  /* eslint-enable no-nested-ternary */\n}\n\n/**\n * Wrapper function for `cssVar` to handle tokens specifically.\n * It generates a CSS variable string for a given design token.\n */\nexport function tokenCssVar<\n  PropertyName extends\n    | FlattenAllToken\n    | Exclude<BetaFlattenAllToken, BetaSemanticColor>\n    | undefined,\n>(propertyName: PropertyName) {\n  return cssVar(propertyName)\n}\n\n/**\n * Wrapper function for `cssVar` to handle beta semantic color tokens specifically.\n * It generates a CSS variable string for a given beta semantic color token.\n * (e.g. `text-neutral` -> `var(--color-text-neutral)`).\n */\nexport function colorTokenCssVar<\n  PropertyName extends SemanticColor | BetaSemanticColor | undefined,\n>(propertyName: PropertyName) {\n  if (!propertyName) {\n    return undefined\n  }\n\n  const betaColorTokenPrefixes = [\n    'text',\n    'icon',\n    'fill',\n    'border',\n    'surface',\n    'dim',\n    'state',\n    'elevation',\n  ]\n\n  /** @todo @timo Remove this condition in the next major release. */\n  if (\n    !betaColorTokenPrefixes.some((prefix) => propertyName.startsWith(prefix))\n  ) {\n    return cssVar(`${propertyName}`)\n  }\n\n  return cssVar(`color-${propertyName}`)\n}\n\n/**\n * Formats a given URL string into a CSS `url()` function format.\n */\nexport function cssUrl(url?: string) {\n  return isNil(url) ? undefined : `url(${url})`\n}\n"],"names":["px","value","isNil","undefined","cssDimension","isString","cssVar","propertyName","colorTokenCssVar","betaColorTokenPrefixes","some","prefix","startsWith","cssUrl","url"],"mappings":";;AAQA;AACA;AACA;AACA;AACO,SAASA,EAAEA,CAAuBC,KAAa,EAAE;AACtD,EAAA,IAAIC,KAAK,CAACD,KAAK,CAAC,EAAE;AAChB,IAAA,OAAOE,SAAS;AAClB;EACA,IAAIF,KAAK,KAAK,CAAC,EAAE;IACf,OAAO,CAAA,EAAGA,KAAK,CAAI,EAAA,CAAA;AACrB;AACA,EAAA,OAAOA,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACO,SAASG,YAAYA,CAAgCH,KAAa,EAAE;AACzE,EAAA,IAAIC,KAAK,CAACD,KAAK,CAAC,EAAE;AAChB,IAAA,OAAOE,SAAS;AAClB;AACA,EAAA,IAAIE,QAAQ,CAACJ,KAAK,CAAC,EAAE;AACnB,IAAA,OAAOA,KAAK;AACd;EACA,IAAIA,KAAK,KAAK,CAAC,EAAE;IACf,OAAO,CAAA,EAAGA,KAAK,CAAI,EAAA,CAAA;AACrB;AACA,EAAA,OAAOA,KAAK;AACd;;AAEA;AACA;AACA;AACO,SAASK,MAAMA,CACpBC,YAA0B,EAC1B;AACA;EACA,OAAO,CAACL,KAAK,CAACK,YAAY,CAAC,GAAI,CAASA,MAAAA,EAAAA,YAAY,CAAG,CAAA,CAAA,GAAaJ,SAAS;AAC7E;AACF;;AAeA;AACA;AACA;AACA;AACA;AACO,SAASK,gBAAgBA,CAE9BD,YAA0B,EAAE;EAC5B,IAAI,CAACA,YAAY,EAAE;AACjB,IAAA,OAAOJ,SAAS;AAClB;AAEA,EAAA,MAAMM,sBAAsB,GAAG,CAC7B,MAAM,EACN,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,OAAO,EACP,WAAW,CACZ;;AAED;AACA,EAAA,IACE,CAACA,sBAAsB,CAACC,IAAI,CAAEC,MAAM,IAAKJ,YAAY,CAACK,UAAU,CAACD,MAAM,CAAC,CAAC,EACzE;AACA,IAAA,OAAOL,MAAM,CAAC,CAAGC,EAAAA,YAAY,EAAE,CAAC;AAClC;AAEA,EAAA,OAAOD,MAAM,CAAC,CAASC,MAAAA,EAAAA,YAAY,EAAE,CAAC;AACxC;;AAEA;AACA;AACA;AACO,SAASM,MAAMA,CAACC,GAAY,EAAE;EACnC,OAAOZ,KAAK,CAACY,GAAG,CAAC,GAAGX,SAAS,GAAG,CAAOW,IAAAA,EAAAA,GAAG,CAAG,CAAA,CAAA;AAC/C;;;;"}