{"version":3,"sources":["../../src/utils/index.ts","../../src/utils/create-radii.ts","../../src/utils/create-variables.ts"],"sourcesContent":["export { createRadii } from './create-radii'\nexport { createVariables } from './create-variables'\n","import { Match } from 'effect'\n\nexport type Radii = (typeof borderRadii)[number]\nexport const borderRadii = ['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl'] as const\n\nexport const createRadii = (radii: Radii) =>\n  Match.value(radii).pipe(\n    Match.when('xs', () => ({\n      l1: { value: '{radii.2xs}' },\n      l2: { value: '{radii.xs}' },\n      l3: { value: '{radii.sm}' },\n    })),\n    Match.when('sm', () => ({\n      l1: { value: '{radii.xs}' },\n      l2: { value: '{radii.sm}' },\n      l3: { value: '{radii.md}' },\n    })),\n    Match.when('md', () => ({\n      l1: { value: '{radii.sm}' },\n      l2: { value: '{radii.md}' },\n      l3: { value: '{radii.lg}' },\n    })),\n    Match.when('lg', () => ({\n      l1: { value: '{radii.md}' },\n      l2: { value: '{radii.lg}' },\n      l3: { value: '{radii.xl}' },\n    })),\n    Match.when('xl', () => ({\n      l1: { value: '{radii.lg}' },\n      l2: { value: '{radii.xl}' },\n      l3: { value: '{radii.2xl}' },\n    })),\n    Match.when('2xl', () => ({\n      l1: { value: '{radii.xl}' },\n      l2: { value: '{radii.2xl}' },\n      l3: { value: '{radii.3xl}' },\n    })),\n    Match.orElse(() => ({\n      l1: { value: '{radii.none}' },\n      l2: { value: '{radii.none}' },\n      l3: { value: '{radii.none}' },\n    })),\n  )\n","import type { ColorPalette } from '../options'\n\nexport const createVariables = (color: ColorPalette): string => {\n  const tokens = createTokens(color)\n  const semanticTokens = createSemanticTokens(color)\n\n  const baseVariables = `\n  :where(:root, :host) {\n    ${tokens.join('\\n    ')}\n    \n    --colors-color-palette-default: var(--colors-${color.name}-default);\n    --colors-color-palette-emphasized: var(--colors-${color.name}-emphasized);\n    --colors-color-palette-fg: var(--colors-${color.name}-fg);\n    --colors-color-palette-text: var(--colors-${color.name}-text);\n  }\n  `\n\n  const lightTheme = `\n  :where(:root, .light) {\n    ${\n      // biome-ignore lint/complexity/useLiteralKeys: <explanation>\n      semanticTokens['light'].join('\\n    ')\n    }\n  }\n  `\n\n  const darkTheme = `\n  .dark {\n    ${\n      // biome-ignore lint/complexity/useLiteralKeys: <explanation>\n      semanticTokens['dark'].join('\\n    ')\n    }\n  }\n  `\n\n  return `@layer tokens {${baseVariables}${lightTheme}${darkTheme}\n}`\n}\n\nconst createTokens = (color: ColorPalette) => {\n  const { name, tokens } = color\n\n  return Object.entries(tokens ?? {}).flatMap(([condition, value]) =>\n    Object.entries(value).map(([key, { value }]) => {\n      return `--colors-${name}-${condition}-${key}: ${value};`\n    }),\n  )\n}\n\nconst createSemanticTokens = (color: ColorPalette) => {\n  const { name, semanticTokens } = color\n  const tokensByCondition: Record<string, string[]> = {}\n\n  Object.entries(semanticTokens ?? {}).forEach(([shade, { value }]) => {\n    Object.entries(value).forEach(([key, value]) => {\n      const condition = key.replace('_', '')\n      if (!tokensByCondition[condition]) {\n        tokensByCondition[condition] = []\n      }\n      tokensByCondition[condition].push(`--colors-${name}-${shade}: ${convert(value)};`)\n    })\n  })\n  return tokensByCondition\n}\n\nconst convert = (value: string): string => {\n  return value.replaceAll('.', '-').replace('{', 'var(--').replace('}', ')')\n}\n"],"mappings":"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","names":["value"]}