{"version":3,"file":"ThemeProvider-Bjsmf4Yl.cjs","names":[],"sources":["../src/components/ThemeProvider/swatches.ts","../src/components/ThemeProvider/defaultTheme.ts","../src/components/ThemeProvider/utils.ts","../src/components/ThemeProvider/ThemeProvider.tsx"],"sourcesContent":["type SwatchScale = {\n  25: string;\n  50: string;\n  100: string;\n  200: string;\n  300: string;\n  400: string;\n  500: string;\n  600: string;\n  700: string;\n  800: string;\n  900: string;\n  925: string;\n  950: string;\n  1000: string;\n};\n\n// Values copied from design-system color-swatches.css.\nconst BASE_SWATCHES = {\n  neutral: {\n    25: \"oklch(0.994 0 89.876 / 1)\",\n    50: \"oklch(0.985 0 89.876 / 1)\",\n    100: \"oklch(0.97 0 89.876 / 1)\",\n    200: \"oklch(0.922 0 89.876 / 1)\",\n    300: \"oklch(0.87 0 89.876 / 1)\",\n    400: \"oklch(0.715 0 89.876 / 1)\",\n    500: \"oklch(0.556 0 89.876 / 1)\",\n    600: \"oklch(0.439 0 89.876 / 1)\",\n    700: \"oklch(0.371 0 89.876 / 1)\",\n    800: \"oklch(0.269 0 89.876 / 1)\",\n    900: \"oklch(0.205 0 0 / 1)\",\n    925: \"oklch(0.173 0 0 / 1)\",\n    950: \"oklch(0.145 0 0 / 1)\",\n    1000: \"oklch(0.097 0 0 / 1)\",\n  },\n  slate: {\n    25: \"oklch(0.994 0.002 247.839 / 1)\",\n    50: \"oklch(0.984 0.003 247.858 / 1)\",\n    100: \"oklch(0.968 0.007 247.896 / 1)\",\n    200: \"oklch(0.929 0.013 255.508 / 1)\",\n    300: \"oklch(0.869 0.02 252.894 / 1)\",\n    400: \"oklch(0.711 0.035 256.788 / 1)\",\n    500: \"oklch(0.554 0.041 257.417 / 1)\",\n    600: \"oklch(0.446 0.037 257.281 / 1)\",\n    700: \"oklch(0.372 0.039 257.287 / 1)\",\n    800: \"oklch(0.279 0.037 260.031 / 1)\",\n    900: \"oklch(0.208 0.04 265.755 / 1)\",\n    925: \"oklch(0.166 0.029 267.188 / 1)\",\n    950: \"oklch(0.129 0.041 264.695 / 1)\",\n    1000: \"oklch(0.091 0.029 268.957 / 1)\",\n  },\n  gray: {\n    25: \"oklch(0.991 0.001 286.376 / 1)\",\n    50: \"oklch(0.985 0.002 247.839 / 1)\",\n    100: \"oklch(0.967 0.003 264.542 / 1)\",\n    200: \"oklch(0.928 0.006 264.531 / 1)\",\n    300: \"oklch(0.872 0.009 258.338 / 1)\",\n    400: \"oklch(0.714 0.019 261.325 / 1)\",\n    500: \"oklch(0.551 0.023 264.364 / 1)\",\n    600: \"oklch(0.446 0.026 256.802 / 1)\",\n    700: \"oklch(0.373 0.031 259.733 / 1)\",\n    800: \"oklch(0.278 0.03 256.848 / 1)\",\n    900: \"oklch(0.21 0.032 264.665 / 1)\",\n    925: \"oklch(0.171 0.028 267.356 / 1)\",\n    950: \"oklch(0.13 0.027 261.692 / 1)\",\n    1000: \"oklch(0.089 0.024 267.878 / 1)\",\n  },\n  zinc: {\n    25: \"oklch(0.994 0 89.876 / 1)\",\n    50: \"oklch(0.985 0 89.876 / 1)\",\n    100: \"oklch(0.967 0.001 286.375 / 1)\",\n    200: \"oklch(0.92 0.004 286.32 / 1)\",\n    300: \"oklch(0.871 0.005 286.286 / 1)\",\n    400: \"oklch(0.712 0.013 286.067 / 1)\",\n    500: \"oklch(0.552 0.014 285.938 / 1)\",\n    600: \"oklch(0.442 0.015 285.786 / 1)\",\n    700: \"oklch(0.37 0.012 285.805 / 1)\",\n    800: \"oklch(0.274 0.005 286.033 / 1)\",\n    900: \"oklch(0.21 0.006 285.885 / 1)\",\n    925: \"oklch(0.179 0.004 285.981 / 1)\",\n    950: \"oklch(0.141 0.004 285.823 / 1)\",\n    1000: \"oklch(0.108 0.004 285.762 / 1)\",\n  },\n  stone: {\n    25: \"oklch(0.994 0.001 106.423 / 1)\",\n    50: \"oklch(0.985 0.001 106.423 / 1)\",\n    100: \"oklch(0.97 0.001 106.424 / 1)\",\n    200: \"oklch(0.923 0.003 48.717 / 1)\",\n    300: \"oklch(0.869 0.004 56.366 / 1)\",\n    400: \"oklch(0.716 0.009 56.259 / 1)\",\n    500: \"oklch(0.553 0.012 58.071 / 1)\",\n    600: \"oklch(0.444 0.01 73.639 / 1)\",\n    700: \"oklch(0.374 0.009 67.558 / 1)\",\n    800: \"oklch(0.268 0.006 34.298 / 1)\",\n    900: \"oklch(0.216 0.006 56.043 / 1)\",\n    925: \"oklch(0.184 0.005 67.497 / 1)\",\n    950: \"oklch(0.147 0.004 49.25 / 1)\",\n    1000: \"oklch(0.108 0.005 71.346 / 1)\",\n  },\n  blue: {\n    25: \"oklch(0.986 0.007 247.894 / 1)\",\n    50: \"oklch(0.97 0.014 254.604 / 1)\",\n    100: \"oklch(0.932 0.032 255.585 / 1)\",\n    200: \"oklch(0.882 0.057 254.128 / 1)\",\n    300: \"oklch(0.809 0.096 251.813 / 1)\",\n    400: \"oklch(0.714 0.143 254.624 / 1)\",\n    500: \"oklch(0.623 0.188 259.815 / 1)\",\n    600: \"oklch(0.546 0.215 262.881 / 1)\",\n    700: \"oklch(0.488 0.217 264.376 / 1)\",\n    800: \"oklch(0.424 0.181 265.638 / 1)\",\n    900: \"oklch(0.379 0.138 265.522 / 1)\",\n    925: \"oklch(0.328 0.111 266.206 / 1)\",\n    950: \"oklch(0.282 0.087 267.935 / 1)\",\n    1000: \"oklch(0.217 0.066 266.921 / 1)\",\n  },\n  sky: {\n    25: \"oklch(0.991 0.006 223.454 / 1)\",\n    50: \"oklch(0.977 0.012 236.62 / 1)\",\n    100: \"oklch(0.951 0.025 236.824 / 1)\",\n    200: \"oklch(0.901 0.055 230.902 / 1)\",\n    300: \"oklch(0.828 0.101 230.318 / 1)\",\n    400: \"oklch(0.754 0.139 232.661 / 1)\",\n    500: \"oklch(0.685 0.148 237.323 / 1)\",\n    600: \"oklch(0.588 0.139 241.966 / 1)\",\n    700: \"oklch(0.5 0.119 242.749 / 1)\",\n    800: \"oklch(0.443 0.1 240.79 / 1)\",\n    900: \"oklch(0.391 0.085 240.876 / 1)\",\n    925: \"oklch(0.339 0.07 239.068 / 1)\",\n    950: \"oklch(0.293 0.063 243.157 / 1)\",\n    1000: \"oklch(0.212 0.042 240.144 / 1)\",\n  },\n  cyan: {\n    25: \"oklch(0.991 0.009 205.897 / 1)\",\n    50: \"oklch(0.984 0.019 200.873 / 1)\",\n    100: \"oklch(0.956 0.044 203.388 / 1)\",\n    200: \"oklch(0.917 0.077 205.041 / 1)\",\n    300: \"oklch(0.865 0.115 207.078 / 1)\",\n    400: \"oklch(0.797 0.134 211.53 / 1)\",\n    500: \"oklch(0.715 0.126 215.221 / 1)\",\n    600: \"oklch(0.609 0.111 221.723 / 1)\",\n    700: \"oklch(0.52 0.094 223.128 / 1)\",\n    800: \"oklch(0.45 0.077 224.283 / 1)\",\n    900: \"oklch(0.398 0.066 227.392 / 1)\",\n    925: \"oklch(0.345 0.057 226.509 / 1)\",\n    950: \"oklch(0.302 0.054 229.695 / 1)\",\n    1000: \"oklch(0.217 0.037 227.615 / 1)\",\n  },\n  teal: {\n    25: \"oklch(0.992 0.007 174.385 / 1)\",\n    50: \"oklch(0.984 0.014 180.72 / 1)\",\n    100: \"oklch(0.953 0.05 180.801 / 1)\",\n    200: \"oklch(0.91 0.093 180.426 / 1)\",\n    300: \"oklch(0.855 0.125 181.071 / 1)\",\n    400: \"oklch(0.785 0.133 181.912 / 1)\",\n    500: \"oklch(0.704 0.123 182.503 / 1)\",\n    600: \"oklch(0.6 0.104 184.704 / 1)\",\n    700: \"oklch(0.511 0.086 186.391 / 1)\",\n    800: \"oklch(0.437 0.071 188.216 / 1)\",\n    900: \"oklch(0.386 0.059 188.416 / 1)\",\n    925: \"oklch(0.335 0.051 189.115 / 1)\",\n    950: \"oklch(0.277 0.045 192.524 / 1)\",\n    1000: \"oklch(0.206 0.033 191.443 / 1)\",\n  },\n  emerald: {\n    25: \"oklch(0.99 0.01 164.879 / 1)\",\n    50: \"oklch(0.979 0.021 166.113 / 1)\",\n    100: \"oklch(0.95 0.051 163.051 / 1)\",\n    200: \"oklch(0.905 0.089 164.15 / 1)\",\n    300: \"oklch(0.845 0.13 164.978 / 1)\",\n    400: \"oklch(0.773 0.153 163.223 / 1)\",\n    500: \"oklch(0.696 0.149 162.48 / 1)\",\n    600: \"oklch(0.596 0.127 163.225 / 1)\",\n    700: \"oklch(0.508 0.105 165.612 / 1)\",\n    800: \"oklch(0.432 0.086 166.913 / 1)\",\n    900: \"oklch(0.378 0.073 168.94 / 1)\",\n    925: \"oklch(0.325 0.062 169.847 / 1)\",\n    950: \"oklch(0.262 0.049 172.552 / 1)\",\n    1000: \"oklch(0.188 0.033 177.113 / 1)\",\n  },\n  lime: {\n    25: \"oklch(0.993 0.018 120.67 / 1)\",\n    50: \"oklch(0.986 0.031 120.757 / 1)\",\n    100: \"oklch(0.967 0.066 122.328 / 1)\",\n    200: \"oklch(0.938 0.122 124.321 / 1)\",\n    300: \"oklch(0.897 0.179 126.665 / 1)\",\n    400: \"oklch(0.849 0.207 128.85 / 1)\",\n    500: \"oklch(0.768 0.204 130.85 / 1)\",\n    600: \"oklch(0.648 0.175 131.684 / 1)\",\n    700: \"oklch(0.532 0.141 131.589 / 1)\",\n    800: \"oklch(0.453 0.113 130.933 / 1)\",\n    900: \"oklch(0.405 0.096 131.063 / 1)\",\n    925: \"oklch(0.341 0.079 131.173 / 1)\",\n    950: \"oklch(0.274 0.069 132.109 / 1)\",\n    1000: \"oklch(0.192 0.046 130.171 / 1)\",\n  },\n  amber: {\n    25: \"oklch(0.993 0.012 96.417 / 1)\",\n    50: \"oklch(0.987 0.021 95.277 / 1)\",\n    100: \"oklch(0.962 0.058 95.617 / 1)\",\n    200: \"oklch(0.924 0.115 95.746 / 1)\",\n    300: \"oklch(0.879 0.153 91.605 / 1)\",\n    400: \"oklch(0.837 0.164 84.429 / 1)\",\n    500: \"oklch(0.769 0.165 70.08 / 1)\",\n    600: \"oklch(0.666 0.157 58.318 / 1)\",\n    700: \"oklch(0.555 0.146 48.998 / 1)\",\n    800: \"oklch(0.473 0.125 46.201 / 1)\",\n    900: \"oklch(0.414 0.105 45.904 / 1)\",\n    925: \"oklch(0.35 0.087 45.765 / 1)\",\n    950: \"oklch(0.279 0.074 45.635 / 1)\",\n    1000: \"oklch(0.206 0.05 48.704 / 1)\",\n  },\n  orange: {\n    25: \"oklch(0.987 0.01 72.664 / 1)\",\n    50: \"oklch(0.98 0.016 73.684 / 1)\",\n    100: \"oklch(0.954 0.037 75.164 / 1)\",\n    200: \"oklch(0.901 0.073 70.697 / 1)\",\n    300: \"oklch(0.837 0.117 66.29 / 1)\",\n    400: \"oklch(0.758 0.159 55.934 / 1)\",\n    500: \"oklch(0.705 0.187 47.604 / 1)\",\n    600: \"oklch(0.646 0.194 41.116 / 1)\",\n    700: \"oklch(0.553 0.174 38.402 / 1)\",\n    800: \"oklch(0.47 0.143 37.304 / 1)\",\n    900: \"oklch(0.408 0.116 38.172 / 1)\",\n    925: \"oklch(0.342 0.096 37.716 / 1)\",\n    950: \"oklch(0.266 0.076 36.259 / 1)\",\n    1000: \"oklch(0.197 0.051 37.083 / 1)\",\n  },\n  green: {\n    25: \"oklch(0.989 0.012 153.679 / 1)\",\n    50: \"oklch(0.982 0.018 155.826 / 1)\",\n    100: \"oklch(0.962 0.043 156.743 / 1)\",\n    200: \"oklch(0.925 0.081 155.995 / 1)\",\n    300: \"oklch(0.871 0.136 154.449 / 1)\",\n    400: \"oklch(0.8 0.182 151.711 / 1)\",\n    500: \"oklch(0.723 0.192 149.579 / 1)\",\n    600: \"oklch(0.627 0.17 149.214 / 1)\",\n    700: \"oklch(0.527 0.137 150.069 / 1)\",\n    800: \"oklch(0.448 0.108 151.328 / 1)\",\n    900: \"oklch(0.393 0.09 152.535 / 1)\",\n    925: \"oklch(0.337 0.076 152.793 / 1)\",\n    950: \"oklch(0.266 0.063 152.934 / 1)\",\n    1000: \"oklch(0.19 0.041 156.904 / 1)\",\n  },\n  yellow: {\n    25: \"oklch(0.995 0.013 102.007 / 1)\",\n    50: \"oklch(0.987 0.026 102.212 / 1)\",\n    100: \"oklch(0.973 0.069 103.193 / 1)\",\n    200: \"oklch(0.945 0.124 101.54 / 1)\",\n    300: \"oklch(0.905 0.166 98.111 / 1)\",\n    400: \"oklch(0.861 0.173 91.936 / 1)\",\n    500: \"oklch(0.795 0.162 86.047 / 1)\",\n    600: \"oklch(0.681 0.142 75.834 / 1)\",\n    700: \"oklch(0.554 0.121 66.442 / 1)\",\n    800: \"oklch(0.476 0.103 61.907 / 1)\",\n    900: \"oklch(0.421 0.09 57.708 / 1)\",\n    925: \"oklch(0.357 0.075 57.491 / 1)\",\n    950: \"oklch(0.286 0.064 53.813 / 1)\",\n    1000: \"oklch(0.209 0.044 56.227 / 1)\",\n  },\n  red: {\n    25: \"oklch(0.982 0.009 17.303 / 1)\",\n    50: \"oklch(0.971 0.013 17.38 / 1)\",\n    100: \"oklch(0.936 0.031 17.717 / 1)\",\n    200: \"oklch(0.885 0.059 18.334 / 1)\",\n    300: \"oklch(0.808 0.103 19.571 / 1)\",\n    400: \"oklch(0.711 0.166 22.216 / 1)\",\n    500: \"oklch(0.637 0.208 25.331 / 1)\",\n    600: \"oklch(0.577 0.215 27.325 / 1)\",\n    700: \"oklch(0.505 0.19 27.518 / 1)\",\n    800: \"oklch(0.444 0.161 26.899 / 1)\",\n    900: \"oklch(0.396 0.133 25.723 / 1)\",\n    925: \"oklch(0.332 0.111 25.625 / 1)\",\n    950: \"oklch(0.258 0.089 26.042 / 1)\",\n    1000: \"oklch(0.184 0.058 25.017 / 1)\",\n  },\n  purple: {\n    25: \"oklch(0.987 0.009 314.783 / 1)\",\n    50: \"oklch(0.977 0.014 308.299 / 1)\",\n    100: \"oklch(0.946 0.033 307.174 / 1)\",\n    200: \"oklch(0.902 0.06 306.703 / 1)\",\n    300: \"oklch(0.827 0.108 306.383 / 1)\",\n    400: \"oklch(0.722 0.177 305.504 / 1)\",\n    500: \"oklch(0.627 0.233 303.9 / 1)\",\n    600: \"oklch(0.558 0.252 302.321 / 1)\",\n    700: \"oklch(0.496 0.237 301.924 / 1)\",\n    800: \"oklch(0.438 0.198 303.724 / 1)\",\n    900: \"oklch(0.381 0.166 304.987 / 1)\",\n    925: \"oklch(0.325 0.142 305.38 / 1)\",\n    950: \"oklch(0.291 0.143 302.717 / 1)\",\n    1000: \"oklch(0.205 0.098 304.68 / 1)\",\n  },\n  violet: {\n    25: \"oklch(0.98 0.011 297.63 / 1)\",\n    50: \"oklch(0.969 0.016 293.756 / 1)\",\n    100: \"oklch(0.943 0.028 294.588 / 1)\",\n    200: \"oklch(0.894 0.055 293.283 / 1)\",\n    300: \"oklch(0.811 0.101 293.571 / 1)\",\n    400: \"oklch(0.709 0.159 293.541 / 1)\",\n    500: \"oklch(0.606 0.219 292.717 / 1)\",\n    600: \"oklch(0.541 0.247 293.009 / 1)\",\n    700: \"oklch(0.491 0.241 292.581 / 1)\",\n    800: \"oklch(0.432 0.211 292.759 / 1)\",\n    900: \"oklch(0.38 0.178 293.745 / 1)\",\n    925: \"oklch(0.324 0.151 293.976 / 1)\",\n    950: \"oklch(0.283 0.135 291.089 / 1)\",\n    1000: \"oklch(0.203 0.088 292.692 / 1)\",\n  },\n  fuchsia: {\n    25: \"oklch(0.984 0.012 329.558 / 1)\",\n    50: \"oklch(0.977 0.017 320.058 / 1)\",\n    100: \"oklch(0.952 0.036 318.852 / 1)\",\n    200: \"oklch(0.903 0.073 319.62 / 1)\",\n    300: \"oklch(0.833 0.132 321.434 / 1)\",\n    400: \"oklch(0.748 0.207 322.16 / 1)\",\n    500: \"oklch(0.667 0.259 322.15 / 1)\",\n    600: \"oklch(0.591 0.257 322.896 / 1)\",\n    700: \"oklch(0.518 0.226 323.949 / 1)\",\n    800: \"oklch(0.452 0.192 324.591 / 1)\",\n    900: \"oklch(0.401 0.16 325.612 / 1)\",\n    925: \"oklch(0.341 0.135 326.232 / 1)\",\n    950: \"oklch(0.293 0.131 325.661 / 1)\",\n    1000: \"oklch(0.208 0.091 326.186 / 1)\",\n  },\n  pink: {\n    25: \"oklch(0.986 0.009 341.798 / 1)\",\n    50: \"oklch(0.971 0.014 343.198 / 1)\",\n    100: \"oklch(0.948 0.028 342.258 / 1)\",\n    200: \"oklch(0.899 0.059 343.231 / 1)\",\n    300: \"oklch(0.823 0.11 346.018 / 1)\",\n    400: \"oklch(0.725 0.175 349.761 / 1)\",\n    500: \"oklch(0.656 0.212 354.308 / 1)\",\n    600: \"oklch(0.592 0.218 0.584 / 1)\",\n    700: \"oklch(0.525 0.199 3.958 / 1)\",\n    800: \"oklch(0.459 0.17 3.815 / 1)\",\n    900: \"oklch(0.408 0.144 2.432 / 1)\",\n    925: \"oklch(0.347 0.124 2.558 / 1)\",\n    950: \"oklch(0.284 0.105 3.907 / 1)\",\n    1000: \"oklch(0.201 0.073 1.239 / 1)\",\n  },\n} as const satisfies Record<string, SwatchScale>;\n\ntype SwatchName = keyof typeof BASE_SWATCHES;\ntype SwatchShade = keyof SwatchScale;\n\n/** Absolute black in oklch format. */\nexport const black = \"oklch(0 0 0 / 1)\";\n/** Absolute white in oklch format. */\nexport const white = \"oklch(1 0 89.876 / 1)\";\n\n/**\n * Return a copy of an oklch color string with its alpha channel replaced.\n *\n * @param color - An oklch color string with `/ 1` alpha (e.g. `\"oklch(0.5 0.1 260 / 1)\"`)\n * @param alpha - New alpha value between 0 and 1\n * @returns The color string with the updated alpha\n *\n * @example\n * ```ts\n * withAlpha(\"oklch(0.5 0.1 260 / 1)\", 0.5)\n * // => \"oklch(0.5 0.1 260 / 0.5)\"\n * ```\n */\nexport const withAlpha = (color: string, alpha: number): string =>\n  color.replace(/\\s\\/\\s(?:1|1\\.0)\\)$/, ` / ${alpha})`);\n\nconst STANDARD_ALPHA_STEPS = [\n  0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1,\n] as const;\nconst LEGACY_BLACK_WHITE_ALPHA_STEPS = [0, 0.16, 0.24, 0.32, 0.96] as const;\nconst SWATCH_SHADES: SwatchShade[] = [\n  25, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 925, 950, 1000,\n];\n\nconst toAlphaSuffix = (alpha: number): string =>\n  `a${Math.round(alpha * 100)\n    .toString()\n    .padStart(2, \"0\")}`;\n\nconst buildAlphaSwatches = (): Record<string, string> => {\n  const map: Record<string, string> = {};\n\n  for (const alpha of STANDARD_ALPHA_STEPS) {\n    map[`black-${toAlphaSuffix(alpha)}`] = withAlpha(black, alpha);\n    map[`white-${toAlphaSuffix(alpha)}`] = withAlpha(white, alpha);\n  }\n  for (const alpha of LEGACY_BLACK_WHITE_ALPHA_STEPS) {\n    map[`black-${toAlphaSuffix(alpha)}`] = withAlpha(black, alpha);\n    map[`white-${toAlphaSuffix(alpha)}`] = withAlpha(white, alpha);\n  }\n\n  for (const family of Object.keys(BASE_SWATCHES) as SwatchName[]) {\n    const baseShade =\n      family === \"neutral\" ||\n      family === \"slate\" ||\n      family === \"gray\" ||\n      family === \"zinc\" ||\n      family === \"stone\"\n        ? 1000\n        : 600;\n    const base = BASE_SWATCHES[family][baseShade];\n    for (const alpha of STANDARD_ALPHA_STEPS) {\n      map[`${family}-${baseShade}-${toAlphaSuffix(alpha)}`] = withAlpha(base, alpha);\n    }\n  }\n\n  return map;\n};\n\nconst buildBaseTokenMap = (): Record<string, string> => {\n  const map: Record<string, string> = {\n    black,\n    white,\n  };\n\n  for (const family of Object.keys(BASE_SWATCHES) as SwatchName[]) {\n    for (const shade of SWATCH_SHADES) {\n      map[`${family}-${shade}`] = BASE_SWATCHES[family][shade];\n    }\n  }\n\n  return map;\n};\n\nconst SWATCH_TOKENS: Record<string, string> = {\n  ...buildBaseTokenMap(),\n  ...buildAlphaSwatches(),\n};\n\n/** Swatch families suitable for neutral/background usage (low chroma). */\nexport type NeutralSwatchName = \"neutral\" | \"slate\" | \"gray\" | \"zinc\" | \"stone\";\n/** Swatch families that can serve as brand/accent color (excludes semantic-only families). */\nexport type BrandSwatchName = Exclude<SwatchName, \"green\" | \"yellow\" | \"red\">;\n\n/**\n * Look up a raw oklch color value by swatch family name and shade.\n *\n * @param name  - One of the 20 swatch families (e.g. `\"blue\"`, `\"neutral\"`)\n * @param shade - Shade step from 25 (lightest) to 1000 (darkest)\n * @returns The oklch color string\n *\n * @example\n * ```ts\n * swatch(\"blue\", 600) // => \"oklch(0.546 0.215 262.881 / 1)\"\n * ```\n */\nexport const swatch = (name: SwatchName, shade: SwatchShade): string => BASE_SWATCHES[name][shade];\n\n/**\n * Resolve a flat token key (e.g. `\"blue-600\"`, `\"black-a50\"`) to its oklch\n * color value. Returns `\"\"` for unknown tokens.\n */\nexport const swatchToken = (token: string): string => SWATCH_TOKENS[token] ?? \"\";\n\n/** The complete flat map of all swatch tokens (base shades + alpha variants). */\nexport const swatchTokens = SWATCH_TOKENS;\n","import { black, BrandSwatchName, NeutralSwatchName, swatch, white, withAlpha } from \"./swatches\";\nimport { ColorTheme, EffectTheme, LayoutTheme, Theme, TypographyTheme } from \"./types\";\n\ntype ThemeMode = \"light\" | \"dark\";\n\ntype ThemeSwatchSelectors = {\n  neutralSwatch: NeutralSwatchName;\n  brandSwatch: BrandSwatchName;\n};\n\nconst LIGHT_SWATCHES: ThemeSwatchSelectors = {\n  neutralSwatch: \"neutral\",\n  brandSwatch: \"neutral\",\n};\n\nconst DARK_SWATCHES: ThemeSwatchSelectors = {\n  neutralSwatch: \"neutral\",\n  brandSwatch: \"neutral\",\n};\n\nconst SEMANTIC_SWATCHES = {\n  info: \"blue\",\n  success: \"green\",\n  alert: \"yellow\",\n  danger: \"red\",\n  purple: \"purple\",\n  pink: \"pink\",\n} as const;\n\nconst getBrandBaseShade = (brandSwatch: BrandSwatchName): 600 | 1000 =>\n  brandSwatch === \"neutral\" ||\n  brandSwatch === \"slate\" ||\n  brandSwatch === \"gray\" ||\n  brandSwatch === \"zinc\" ||\n  brandSwatch === \"stone\"\n    ? 1000\n    : 600;\n\nconst AA_LARGE_CONTRAST_THRESHOLD = 3;\n\nconst clamp01 = (value: number): number => Math.min(1, Math.max(0, value));\n\nconst parseOklch = (value: string): { l: number; c: number; h: number } | null => {\n  const match = value.match(\n    /^oklch\\(\\s*([+-]?\\d*\\.?\\d+)\\s+([+-]?\\d*\\.?\\d+)\\s+([+-]?\\d*\\.?\\d+)(?:\\s*\\/\\s*[+-]?\\d*\\.?\\d+)?\\s*\\)$/i,\n  );\n  if (!match) {\n    return null;\n  }\n\n  return {\n    l: Number(match[1]),\n    c: Number(match[2]),\n    h: Number(match[3]),\n  };\n};\n\nconst relativeLuminanceFromOklch = (oklchValue: string): number => {\n  const parsed = parseOklch(oklchValue);\n  if (!parsed) {\n    return 0;\n  }\n\n  const hRadians = (parsed.h * Math.PI) / 180;\n  const a = parsed.c * Math.cos(hRadians);\n  const b = parsed.c * Math.sin(hRadians);\n\n  const lPrime = parsed.l + 0.3963377774 * a + 0.2158037573 * b;\n  const mPrime = parsed.l - 0.1055613458 * a - 0.0638541728 * b;\n  const sPrime = parsed.l - 0.0894841775 * a - 1.291485548 * b;\n\n  const l = lPrime ** 3;\n  const m = mPrime ** 3;\n  const s = sPrime ** 3;\n\n  const rLinear = clamp01(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s);\n  const gLinear = clamp01(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s);\n  const bLinear = clamp01(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s);\n\n  return 0.2126 * rLinear + 0.7152 * gLinear + 0.0722 * bLinear;\n};\n\nconst contrastRatio = (foreground: string, background: string): number => {\n  const luminance1 = relativeLuminanceFromOklch(foreground);\n  const luminance2 = relativeLuminanceFromOklch(background);\n  const lighter = Math.max(luminance1, luminance2);\n  const darker = Math.min(luminance1, luminance2);\n  return (lighter + 0.05) / (darker + 0.05);\n};\n\nconst pickAccentTextFromNeutral = ({\n  neutralSwatch,\n  accentBackground,\n}: {\n  neutralSwatch: NeutralSwatchName;\n  accentBackground: string;\n}): string => {\n  const neutral25 = swatch(neutralSwatch, 25);\n  const neutral1000 = swatch(neutralSwatch, 1000);\n\n  const ratio25 = contrastRatio(neutral25, accentBackground);\n  const ratio1000 = contrastRatio(neutral1000, accentBackground);\n\n  const pass25 = ratio25 >= AA_LARGE_CONTRAST_THRESHOLD;\n  const pass1000 = ratio1000 >= AA_LARGE_CONTRAST_THRESHOLD;\n\n  if (pass25 && pass1000) {\n    return neutral25;\n  }\n  if (pass25) {\n    return neutral25;\n  }\n  if (pass1000) {\n    return neutral1000;\n  }\n  return neutral25;\n};\n\nconst createColorTheme = ({\n  mode,\n  neutralSwatch,\n  brandSwatch,\n}: ThemeSwatchSelectors & { mode: ThemeMode }) => {\n  const isDark = mode === \"dark\";\n  const neutral = neutralSwatch;\n  const brandBase = getBrandBaseShade(brandSwatch);\n  const brandSolid =\n    brandSwatch === \"neutral\"\n      ? isDark\n        ? swatch(neutral, 25)\n        : swatch(neutral, 1000)\n      : swatch(brandSwatch, brandBase);\n\n  const overlayBase = isDark ? swatch(neutral, 25) : swatch(neutral, 1000);\n  const neutralPrimary = isDark ? swatch(neutral, 50) : swatch(neutral, 1000);\n  const neutralSecondary = withAlpha(neutralPrimary, 0.5);\n  const neutralTertiary = withAlpha(neutralPrimary, 0.2);\n\n  const accentText =\n    brandSwatch === \"neutral\"\n      ? isDark\n        ? swatch(neutral, 1000)\n        : swatch(neutral, 25)\n      : pickAccentTextFromNeutral({\n          neutralSwatch: neutral,\n          accentBackground: brandSolid,\n        });\n  const accentTextSecondary = withAlpha(accentText, 0.5);\n  const accentTextTertiary = withAlpha(accentText, 0.2);\n\n  const infoSwatch = SEMANTIC_SWATCHES.info;\n  const successSwatch = SEMANTIC_SWATCHES.success;\n  const alertSwatch = SEMANTIC_SWATCHES.alert;\n  const dangerSwatch = SEMANTIC_SWATCHES.danger;\n  const purpleSwatch = SEMANTIC_SWATCHES.purple;\n  const pinkSwatch = SEMANTIC_SWATCHES.pink;\n\n  const colorTheme: ColorTheme = {\n    // Surface\n    background: isDark ? swatch(neutral, 950) : swatch(neutral, 100),\n    foreground: isDark ? swatch(neutral, 900) : swatch(neutral, 25),\n    popoverBackground: isDark ? swatch(neutral, 900) : swatch(neutral, 25),\n    sunkLight: withAlpha(overlayBase, 0.02),\n    sunk: withAlpha(overlayBase, 0.04),\n    sunkDeep: withAlpha(overlayBase, 0.08),\n    elevatedLight: withAlpha(overlayBase, 0.04),\n    elevated: withAlpha(overlayBase, 0.08),\n    elevatedStrong: withAlpha(overlayBase, 0.16),\n    elevatedIntense: withAlpha(overlayBase, 0.32),\n    overlay: isDark ? withAlpha(black, 0.6) : withAlpha(black, 0.4),\n    highlightSubtle: withAlpha(overlayBase, 0.02),\n    highlight: withAlpha(overlayBase, 0.04),\n    highlightStrong: withAlpha(overlayBase, 0.08),\n    highlightIntense: withAlpha(overlayBase, isDark ? 0.3 : 0.32),\n    invertedBackground: isDark ? swatch(neutral, 25) : swatch(neutral, 1000),\n    infoBackground: withAlpha(swatch(infoSwatch, 500), 0.12),\n    successBackground: withAlpha(swatch(successSwatch, 600), 0.12),\n    alertBackground: withAlpha(swatch(alertSwatch, 500), 0.16),\n    dangerBackground: withAlpha(swatch(dangerSwatch, 600), 0.12),\n    purpleBackground: withAlpha(swatch(purpleSwatch, 500), 0.12),\n    pinkBackground: withAlpha(swatch(pinkSwatch, 600), 0.12),\n\n    // Text / Neutral\n    textNeutralPrimary: neutralPrimary,\n    textNeutralSecondary: neutralSecondary,\n    textNeutralTertiary: neutralTertiary,\n    textNeutralLink: neutralPrimary,\n\n    // Text / Brand\n    textBrand: brandSolid,\n    textWhite: white,\n    textBlack: black,\n\n    // Text / Accent\n    textAccentPrimary: accentText,\n    textAccentSecondary: accentTextSecondary,\n    textAccentTertiary: accentTextTertiary,\n\n    // Text / Success\n    textSuccessPrimary: isDark ? swatch(successSwatch, 300) : swatch(successSwatch, 800),\n    textSuccessInverted: swatch(successSwatch, 100),\n\n    // Text / Alert\n    textAlertPrimary: isDark ? swatch(alertSwatch, 300) : swatch(alertSwatch, 800),\n    textAlertInverted: swatch(alertSwatch, 100),\n\n    // Text / Danger\n    textDangerPrimary: isDark ? swatch(dangerSwatch, 300) : swatch(dangerSwatch, 700),\n    textDangerSecondary: isDark ? swatch(dangerSwatch, 200) : swatch(dangerSwatch, 400),\n    textDangerTertiary: isDark ? swatch(dangerSwatch, 100) : swatch(dangerSwatch, 300),\n\n    // Text / Danger / Inverted\n    textDangerInvertedPrimary: swatch(dangerSwatch, 25),\n    textDangerInvertedSecondary: withAlpha(swatch(dangerSwatch, 25), 0.5),\n    textDangerInvertedTertiary: withAlpha(swatch(dangerSwatch, 25), 0.3),\n\n    // Text / Info\n    textInfoPrimary: isDark ? swatch(infoSwatch, 300) : swatch(infoSwatch, 800),\n    textInfoInverted: swatch(infoSwatch, 100),\n\n    // Text / Pink\n    textPinkPrimary: isDark ? swatch(pinkSwatch, 300) : swatch(pinkSwatch, 800),\n    textPinkInverted: swatch(pinkSwatch, 100),\n\n    // Text / Purple\n    textPurplePrimary: isDark ? swatch(purpleSwatch, 300) : swatch(purpleSwatch, 800),\n    textPurpleInverted: swatch(purpleSwatch, 100),\n\n    // Interactive / Brand\n    interactiveAccentDefault: brandSolid,\n    interactiveAccentHover: withAlpha(brandSolid, 0.8),\n    interactiveAccentDisabled: withAlpha(brandSolid, 0.4),\n    interactiveAccentPressed: brandSolid,\n\n    // Interactive / Destructive\n    interactiveDestructiveDefault: withAlpha(swatch(dangerSwatch, 600), 0.02),\n    interactiveDestructiveHover: withAlpha(swatch(dangerSwatch, 600), 0.08),\n    interactiveDestructiveDisabled: withAlpha(swatch(dangerSwatch, 600), 0.02),\n    interactiveDestructivePressed: withAlpha(swatch(dangerSwatch, 600), 0.1),\n\n    // Interactive / Destructive / Accent\n    interactiveDestructiveAccentDefault: swatch(dangerSwatch, 600),\n    interactiveDestructiveAccentHover: swatch(dangerSwatch, 500),\n    interactiveDestructiveAccentPressed: swatch(dangerSwatch, 700),\n    interactiveDestructiveAccentDisabled: withAlpha(swatch(dangerSwatch, 600), 0.4),\n\n    // Chat\n    chatUserResponseBg: withAlpha(brandSolid, 0.08),\n    chatUserResponseText: neutralPrimary,\n\n    // Border\n    borderDefault: withAlpha(overlayBase, isDark ? 0.06 : 0.06),\n    borderInteractive: withAlpha(overlayBase, isDark ? 0.12 : 0.12),\n    borderInteractiveEmphasis: withAlpha(overlayBase, isDark ? 0.4 : 0.3),\n    borderInteractiveSelected: isDark ? swatch(neutral, 50) : swatch(neutral, 1000),\n    borderAccent: withAlpha(brandSolid, isDark ? 0.2 : 0.08),\n    borderAccentEmphasis: withAlpha(brandSolid, isDark ? 0.4 : 0.3),\n    borderInfo: withAlpha(swatch(infoSwatch, 500), 0.08),\n    borderInfoEmphasis: swatch(infoSwatch, 600),\n    borderAlert: withAlpha(swatch(alertSwatch, 400), 0.08),\n    borderAlertEmphasis: swatch(alertSwatch, 600),\n    borderSuccess: withAlpha(swatch(successSwatch, 600), 0.08),\n    borderSuccessEmphasis: swatch(successSwatch, 600),\n    borderDanger: withAlpha(swatch(dangerSwatch, 600), 0.08),\n    borderDangerEmphasis: swatch(dangerSwatch, 600),\n  };\n\n  return colorTheme;\n};\n\n// ---------------------------------------------------------------------------\n// Light/Dark color theme from selected swatch layers.\n// ---------------------------------------------------------------------------\nconst lightColorTheme = createColorTheme({ mode: \"light\", ...LIGHT_SWATCHES });\nconst darkColorTheme = createColorTheme({ mode: \"dark\", ...DARK_SWATCHES });\n\n// ---------------------------------------------------------------------------\n// Layout – resolved from spacing.css + border-radius.css (same light/dark)\n// ---------------------------------------------------------------------------\nconst SPACE_BASE = 2;\nconst RADIUS_BASE = 2;\n\nconst toPx = (base: number, multiplier: number): string => {\n  const value = base * multiplier;\n  if (value === 0) {\n    return \"0\";\n  }\n  return `${value}px`;\n};\n\nconst layoutTheme: LayoutTheme = {\n  space000: toPx(SPACE_BASE, 0),\n  space3xs: toPx(SPACE_BASE, 1),\n  space2xs: toPx(SPACE_BASE, 2),\n  spaceXs: toPx(SPACE_BASE, 3),\n  spaceS: toPx(SPACE_BASE, 4),\n  spaceSM: toPx(SPACE_BASE, 5),\n  spaceM: toPx(SPACE_BASE, 6),\n  spaceML: toPx(SPACE_BASE, 8),\n  spaceL: toPx(SPACE_BASE, 9),\n  spaceXl: toPx(SPACE_BASE, 12),\n  space2xl: toPx(SPACE_BASE, 18),\n  space3xl: toPx(SPACE_BASE, 24),\n\n  radiusNone: toPx(RADIUS_BASE, 0),\n  radius3xs: toPx(RADIUS_BASE, 0.5),\n  radius2xs: toPx(RADIUS_BASE, 1),\n  radiusXs: toPx(RADIUS_BASE, 2),\n  radiusS: toPx(RADIUS_BASE, 3),\n  radiusM: toPx(RADIUS_BASE, 4),\n  radiusL: toPx(RADIUS_BASE, 5),\n  radiusXl: toPx(RADIUS_BASE, 6),\n  radius2xl: toPx(RADIUS_BASE, 7),\n  radius3xl: toPx(RADIUS_BASE, 8),\n  radius4xl: toPx(RADIUS_BASE, 10),\n  radius5xl: toPx(RADIUS_BASE, 12),\n  radius6xl: toPx(RADIUS_BASE, 14),\n  radius7xl: toPx(RADIUS_BASE, 16),\n  radius8xl: toPx(RADIUS_BASE, 20),\n  radius9xl: toPx(RADIUS_BASE, 24),\n  radiusFull: \"9999px\",\n};\n\n// ---------------------------------------------------------------------------\n// Typography – resolved from typography.css\n// ---------------------------------------------------------------------------\n\nconst FONT_BODY = '\"Inter\", sans-serif';\nconst FONT_CODE = '\"SFMono-Regular\", Menlo, monospace';\nconst FONT_HEADING = '\"Inter\", sans-serif';\nconst FONT_LABEL = '\"Inter\", sans-serif';\nconst FONT_NUMBERS = '\"Inter\", sans-serif';\n\nconst typographyTheme: TypographyTheme = {\n  fontBody: FONT_BODY,\n  fontCode: FONT_CODE,\n  fontHeading: FONT_HEADING,\n  fontLabel: FONT_LABEL,\n  fontNumbers: FONT_NUMBERS,\n\n  fontSize2xs: \"10px\",\n  fontSizeXs: \"12px\",\n  fontSizeSm: \"14px\",\n  fontSizeMd: \"16px\",\n  fontSizeLg: \"18px\",\n  fontSizeXl: \"20px\",\n  fontSize2xl: \"24px\",\n  fontSize3xl: \"28px\",\n  fontSize4xl: \"32px\",\n  fontSize5xl: \"36px\",\n\n  fontWeightRegular: \"400\",\n  fontWeightMedium: \"500\",\n  fontWeightBold: \"600\",\n  fontWeightHeavy: \"700\",\n\n  lineHeightBody: \"1.5\",\n  lineHeightHeading: \"1.25\",\n  lineHeightHeadingLarge: \"1.1\",\n  lineHeightLabel: \"1.25\",\n  lineHeightCode: \"1.5\",\n\n  letterSpacingNormal: \"0\",\n  letterSpacingTight: \"-0.1px\",\n  letterSpacingTighter: \"-0.2px\",\n\n  // Body\n  textBodyXs: `400 12px/1.5 ${FONT_BODY}`,\n  textBodyXsLetterSpacing: \"0\",\n  textBodyXsHeavy: `500 12px/1.5 ${FONT_BODY}`,\n  textBodyXsHeavyLetterSpacing: \"0\",\n  textBodySm: `400 14px/1.5 ${FONT_BODY}`,\n  textBodySmLetterSpacing: \"0\",\n  textBodySmHeavy: `500 14px/1.5 ${FONT_BODY}`,\n  textBodySmHeavyLetterSpacing: \"0\",\n  textBodyDefault: `400 16px/1.5 ${FONT_BODY}`,\n  textBodyDefaultLetterSpacing: \"0\",\n  textBodyDefaultHeavy: `500 16px/1.5 ${FONT_BODY}`,\n  textBodyDefaultHeavyLetterSpacing: \"0\",\n  textBodyLg: `400 18px/1.5 ${FONT_BODY}`,\n  textBodyLgLetterSpacing: \"0\",\n  textBodyLgHeavy: `500 18px/1.5 ${FONT_BODY}`,\n  textBodyLgHeavyLetterSpacing: \"0\",\n\n  // Heading\n  textHeadingXs: `600 16px/1.25 ${FONT_HEADING}`,\n  textHeadingXsLetterSpacing: \"0\",\n  textHeadingSm: `600 18px/1.25 ${FONT_HEADING}`,\n  textHeadingSmLetterSpacing: \"0\",\n  textHeadingMd: `600 24px/1.1 ${FONT_HEADING}`,\n  textHeadingMdLetterSpacing: \"0\",\n  textHeadingLg: `600 28px/1.1 ${FONT_HEADING}`,\n  textHeadingLgLetterSpacing: \"-0.1px\",\n  textHeadingXl: `700 32px/1.1 ${FONT_HEADING}`,\n  textHeadingXlLetterSpacing: \"-0.1px\",\n\n  // Label\n  textLabelXs: `400 12px/1.25 ${FONT_LABEL}`,\n  textLabelXsLetterSpacing: \"0\",\n  textLabelXsHeavy: `500 12px/1.25 ${FONT_LABEL}`,\n  textLabelXsHeavyLetterSpacing: \"0\",\n  textLabelSm: `400 14px/1.25 ${FONT_LABEL}`,\n  textLabelSmLetterSpacing: \"0\",\n  textLabelSmHeavy: `500 14px/1.25 ${FONT_LABEL}`,\n  textLabelSmHeavyLetterSpacing: \"0\",\n  textLabelDefault: `400 16px/1.25 ${FONT_LABEL}`,\n  textLabelDefaultLetterSpacing: \"0\",\n  textLabelDefaultHeavy: `500 16px/1.25 ${FONT_LABEL}`,\n  textLabelDefaultHeavyLetterSpacing: \"0\",\n  textLabelLg: `400 18px/1.25 ${FONT_LABEL}`,\n  textLabelLgLetterSpacing: \"0\",\n  textLabelLgHeavy: `500 18px/1.25 ${FONT_LABEL}`,\n  textLabelLgHeavyLetterSpacing: \"0\",\n\n  // Numbers\n  textNumbersXs: `400 12px/1.5 ${FONT_NUMBERS}`,\n  textNumbersXsLetterSpacing: \"0\",\n  textNumbersXsHeavy: `500 12px/1.5 ${FONT_NUMBERS}`,\n  textNumbersXsHeavyLetterSpacing: \"0\",\n  textNumbersSm: `400 14px/1.5 ${FONT_NUMBERS}`,\n  textNumbersSmLetterSpacing: \"0\",\n  textNumbersSmHeavy: `500 14px/1.5 ${FONT_NUMBERS}`,\n  textNumbersSmHeavyLetterSpacing: \"0\",\n  textNumbersDefault: `400 16px/1.5 ${FONT_NUMBERS}`,\n  textNumbersDefaultLetterSpacing: \"0\",\n  textNumbersDefaultHeavy: `500 16px/1.5 ${FONT_NUMBERS}`,\n  textNumbersDefaultHeavyLetterSpacing: \"0\",\n  textNumbersLg: `400 18px/1.5 ${FONT_NUMBERS}`,\n  textNumbersLgLetterSpacing: \"0\",\n  textNumbersLgHeavy: `500 18px/1.5 ${FONT_NUMBERS}`,\n  textNumbersLgHeavyLetterSpacing: \"0\",\n  textNumbersHeadingSm: `600 18px/1.25 ${FONT_NUMBERS}`,\n  textNumbersHeadingSmLetterSpacing: \"0\",\n  textNumbersHeadingMd: `600 24px/1.1 ${FONT_NUMBERS}`,\n  textNumbersHeadingMdLetterSpacing: \"0\",\n  textNumbersHeadingLg: `600 28px/1.1 ${FONT_NUMBERS}`,\n  textNumbersHeadingLgLetterSpacing: \"0\",\n  textNumbersHeadingXl: `600 32px/1.1 ${FONT_NUMBERS}`,\n  textNumbersHeadingXlLetterSpacing: \"0\",\n\n  // Code\n  textCodeSm: `400 12px/1.5 ${FONT_CODE}`,\n  textCodeSmLetterSpacing: \"0\",\n  textCodeSmHeavy: `700 12px/1.5 ${FONT_CODE}`,\n  textCodeSmHeavyLetterSpacing: \"0\",\n  textCodeDefault: `400 14px/1.5 ${FONT_CODE}`,\n  textCodeDefaultLetterSpacing: \"0\",\n  textCodeDefaultHeavy: `700 14px/1.5 ${FONT_CODE}`,\n  textCodeDefaultHeavyLetterSpacing: \"0\",\n};\n\n// ---------------------------------------------------------------------------\n// Effects – resolved from shadows.css (light values)\n// ---------------------------------------------------------------------------\nconst lightEffectTheme: EffectTheme = {\n  shadow0: \"none\",\n  shadowS: \"0 1px 3px -2px oklch(0 0 0 / 0.02), 0 2px 5px -2px oklch(0 0 0 / 0.04)\",\n  shadowM: \"0 4px 6px -2px oklch(0 0 0 / 0.025), 0 2px 2px -2px oklch(0 0 0 / 0.05)\",\n  shadowL: \"0 4px 4px -2px oklch(0 0 0 / 0.05), 0 4px 8px -2px oklch(0 0 0 / 0.04)\",\n  shadowXl: \"0 8px 16px -4px oklch(0 0 0 / 0.08), 0 16px 32px -6px oklch(0 0 0 / 0.12)\",\n  shadow2xl: \"0 12px 24px -6px oklch(0 0 0 / 0.12), 0 24px 48px -8px oklch(0 0 0 / 0.16)\",\n  shadow3xl: \"0 16px 32px -8px oklch(0 0 0 / 0.16), 0 32px 64px -12px oklch(0 0 0 / 0.22)\",\n};\n\n// ---------------------------------------------------------------------------\n// Effects – resolved from shadows.css (dark values)\n// ---------------------------------------------------------------------------\nconst darkEffectTheme: EffectTheme = {\n  shadow0: \"none\",\n  shadowS: \"0 1px 3px -2px oklch(0 0 0 / 0.06), 0 2px 5px -2px oklch(0 0 0 / 0.10)\",\n  shadowM: \"0 4px 6px -2px oklch(0 0 0 / 0.08), 0 2px 2px -2px oklch(0 0 0 / 0.12)\",\n  shadowL: \"0 4px 4px -2px oklch(0 0 0 / 0.12), 0 4px 8px -2px oklch(0 0 0 / 0.10)\",\n  shadowXl: \"0 8px 16px -4px oklch(0 0 0 / 0.16), 0 16px 32px -6px oklch(0 0 0 / 0.20)\",\n  shadow2xl: \"0 12px 24px -6px oklch(0 0 0 / 0.20), 0 24px 48px -8px oklch(0 0 0 / 0.24)\",\n  shadow3xl: \"0 16px 32px -8px oklch(0 0 0 / 0.24), 0 32px 64px -12px oklch(0 0 0 / 0.28)\",\n};\n\n// ---------------------------------------------------------------------------\n// Exported default themes\n// ---------------------------------------------------------------------------\n/**\n * The built-in light theme. Combines the neutral-swatch light color palette,\n * shared layout and typography tokens, and light-mode shadow values.\n *\n * Used as the base when `ThemeProvider` is rendered with `mode=\"light\"`.\n */\nexport const defaultLightTheme: Theme = Object.freeze({\n  ...lightColorTheme,\n  ...layoutTheme,\n  ...typographyTheme,\n  ...lightEffectTheme,\n});\n\n/**\n * The built-in dark theme. Uses the neutral-swatch dark color palette with\n * inverted surface lightness, higher shadow opacity, and shared layout /\n * typography tokens.\n *\n * Used as the base when `ThemeProvider` is rendered with `mode=\"dark\"`.\n */\nexport const defaultDarkTheme: Theme = Object.freeze({\n  ...darkColorTheme,\n  ...layoutTheme,\n  ...typographyTheme,\n  ...darkEffectTheme,\n});\n","import { defaultLightTheme } from \"./defaultTheme\";\nimport { Theme } from \"./types\";\n\n/**\n * Convert a camel case string to a kebab case string.\n * @param str - The string to convert.\n * @returns A kebab case string.\n */\nexport function camelToKebab(str: string): string {\n  return str\n    .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n    .replace(/([A-Z])([A-Z])/g, \"$1-$2\")\n    .replace(/([a-z])(\\d)/g, \"$1-$2\")\n    .toLowerCase();\n}\n\n/**\n * Convert a theme object to a string of CSS variables.\n * @param theme - The theme object to convert.\n * @param prefix - The prefix to use for the CSS variables.\n * @returns A string of CSS variables.\n */\nexport function themeToCssVars(theme: Record<string, unknown>, prefix = \"openui\"): string {\n  return Object.entries(theme)\n    .filter(([, v]) => typeof v === \"string\")\n    .map(([key, value]) => `--${prefix}-${camelToKebab(key)}: ${value as string};`)\n    .join(\"\\n          \");\n}\n\nfunction levenshteinDistance(a: string, b: string): number {\n  const m = a.length;\n  const n = b.length;\n  const prev: number[] = Array(n + 1).fill(0) as number[];\n  const curr: number[] = Array(n + 1).fill(0) as number[];\n  for (let j = 0; j <= n; j++) prev[j] = j;\n  for (let i = 1; i <= m; i++) {\n    curr[0] = i;\n    for (let j = 1; j <= n; j++) {\n      curr[j] =\n        a[i - 1] === b[j - 1] ? prev[j - 1]! : 1 + Math.min(prev[j]!, curr[j - 1]!, prev[j - 1]!);\n    }\n    for (let j = 0; j <= n; j++) prev[j] = curr[j]!;\n  }\n  return prev[n]!;\n}\n\nconst _warnedKeys = new Set<string>();\n\n/**\n * Validate a partial theme object in development and return it as-is.\n *\n * Works for both light and dark overrides — call it once per theme object:\n *\n * ```tsx\n * <ThemeProvider\n *   lightTheme={createTheme({ interactiveAccentDefault: \"oklch(0.6 0.2 260)\" })}\n *   darkTheme={createTheme({ interactiveAccentDefault: \"oklch(0.4 0.2 260)\" })}\n * />\n * ```\n *\n * In non-production builds this checks every key against the known theme keys\n * and emits a `console.warn` with a \"did you mean …?\" suggestion for typos.\n * In production the validation code is stripped by bundlers.\n *\n * @param theme - A partial {@link Theme} to validate (light or dark overrides).\n * @returns The same `theme` object, unmodified.\n */\nexport function createTheme(theme: Theme): Theme {\n  if (typeof process !== \"undefined\" && process.env?.[\"NODE_ENV\"] !== \"production\") {\n    const knownKeys = Object.keys(defaultLightTheme);\n    for (const key of Object.keys(theme)) {\n      if (knownKeys.includes(key) || _warnedKeys.has(key)) continue;\n      _warnedKeys.add(key);\n\n      let suggestion = \"\";\n      let bestDist = Infinity;\n      for (const known of knownKeys) {\n        const dist = levenshteinDistance(key, known);\n        if (dist < bestDist) {\n          bestDist = dist;\n          suggestion = known;\n        }\n      }\n      const hint = bestDist <= 3 ? ` Did you mean \"${suggestion}\"?` : \"\";\n      console.warn(`[OpenUI] Unknown theme key \"${key}\".${hint}`);\n    }\n  }\n  return theme;\n}\n","import React, { createContext, useContext, useId, useInsertionEffect, useMemo } from \"react\";\nimport { defaultDarkTheme, defaultLightTheme } from \"./defaultTheme\";\nimport { Theme, ThemeMode } from \"./types\";\nimport { themeToCssVars } from \"./utils\";\n\n/**\n * Props for the {@link ThemeProvider} component.\n */\nexport type ThemeProps = {\n  /** Active color scheme. @default \"light\" */\n  mode?: ThemeMode;\n  /** Application content rendered inside the theme context. */\n  children?: React.ReactNode;\n  /**\n   * Partial overrides for **light** mode, merged onto the built-in light\n   * defaults.  Omitted keys fall back to the built-in defaults.\n   * Preferred over the deprecated `theme` prop.\n   */\n  lightTheme?: Theme;\n  /**\n   * Partial overrides for **dark** mode, merged onto the built-in dark\n   * defaults.  When omitted, `lightTheme` overrides are applied to both modes\n   * so a single set of brand customizations \"just works\".\n   */\n  darkTheme?: Theme;\n  /**\n   * @deprecated Use `lightTheme` instead. Kept for backward compatibility;\n   * mapped to `lightTheme` internally. If both `theme` and `lightTheme` are\n   * provided, `lightTheme` wins.\n   */\n  theme?: Theme;\n  /**\n   * CSS selector where `--openui-*` custom properties are injected.\n   * Change this when mounting multiple independent theme scopes.\n   * @default \"body\"\n   */\n  cssSelector?: string;\n};\n\ntype ThemeContextType = {\n  theme: Theme;\n  mode: ThemeMode;\n  portalThemeClassName: string;\n};\n\n/**\n * React context that carries the resolved theme, active mode, and a CSS class\n * name for portals. Consumed via {@link useTheme}.\n */\nexport const ThemeContext = createContext<ThemeContextType>({\n  theme: defaultLightTheme,\n  mode: \"light\",\n  portalThemeClassName: \"\",\n});\n\n/**\n * Access the current theme, mode, and portal class name from the nearest\n * {@link ThemeProvider}.\n *\n * @returns An object with:\n *  - `theme` – the fully resolved {@link Theme} object\n *  - `mode` – `\"light\"` or `\"dark\"`\n *  - `portalThemeClassName` – a unique CSS class name to apply on portal\n *     containers so they inherit the same `--openui-*` custom properties\n *\n * Falls back to the default light theme when no provider is present.\n *\n * @example\n * ```tsx\n * const { theme, mode, portalThemeClassName } = useTheme();\n * ```\n */\nexport const useTheme = () => useContext(ThemeContext);\n\nconst themes = {\n  light: defaultLightTheme,\n  dark: defaultDarkTheme,\n} as const;\n\n// ---------------------------------------------------------------------------\n// Internal context for nesting detection\n// ---------------------------------------------------------------------------\nconst OPENUI_THEME_SENTINEL = Symbol(\"openui-theme-provider\");\n\ntype InternalContextType = {\n  [OPENUI_THEME_SENTINEL]: true;\n  theme: Theme;\n  mode: ThemeMode;\n  portalThemeClassName: string;\n};\n\nconst InternalContext = createContext<InternalContextType | null>(null);\n\n// ---------------------------------------------------------------------------\n// Dev-mode warning deduplication\n// ---------------------------------------------------------------------------\nconst _devWarned = new Set<string>();\n\nfunction warnOnce(key: string, message: string) {\n  if (_devWarned.has(key)) return;\n  _devWarned.add(key);\n  console.warn(message);\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\nfunction cssSafeId(id: string): string {\n  return id.replace(/[^a-zA-Z0-9-_]/g, \"\");\n}\n\nconst _knownThemeKeys = new Set(Object.keys(defaultLightTheme));\n\nfunction validateThemeObject(themeObj: Theme, propName: string) {\n  for (const [key, value] of Object.entries(themeObj)) {\n    if (value !== undefined && typeof value !== \"string\" && !Array.isArray(value)) {\n      warnOnce(\n        `non-string:${propName}:${key}`,\n        `[OpenUI] ${propName} key \"${key}\" has a non-string value (${typeof value}). All theme values should be strings.`,\n      );\n    }\n    if (!_knownThemeKeys.has(key)) {\n      warnOnce(\n        `unknown-key:${propName}:${key}`,\n        `[OpenUI] ${propName} contains unknown key \"${key}\". It will be ignored. Use createTheme() for typo detection with suggestions.`,\n      );\n    }\n  }\n}\n\n/**\n * Injects the OpenUI design-token CSS custom properties (`--openui-*`) into the\n * DOM and provides theme context to all descendant components.\n *\n * Supports automatic scoping when nested inside another ThemeProvider: the inner\n * provider wraps its children in a `<div>` with `display: contents` and injects\n * a scoped style rule instead of targeting `body`.\n *\n * @example\n * ```tsx\n * <ThemeProvider\n *   mode=\"dark\"\n *   lightTheme={createTheme({ interactiveAccentDefault: \"oklch(0.6 0.2 260)\" })}\n * >\n *   <App />\n * </ThemeProvider>\n * ```\n */\n\nexport const ThemeProvider = ({\n  mode = \"light\",\n  children,\n  lightTheme,\n  darkTheme,\n  theme: deprecatedTheme,\n  cssSelector = \"body\",\n}: ThemeProps) => {\n  const id = cssSafeId(useId());\n  const parent = useContext(InternalContext);\n  const isNested = parent != null;\n  const effectiveCssSelector = cssSelector || \"body\";\n  const hasExplicitSelector = effectiveCssSelector !== \"body\";\n\n  // Resolve the deprecated `theme` prop → `lightTheme` takes precedence\n  const userLightTheme = lightTheme ?? deprecatedTheme ?? {};\n  const userDarkTheme = darkTheme;\n\n  // ---------------------------------------------------------------------------\n  // Dev-mode warnings\n  // ---------------------------------------------------------------------------\n  if (typeof process !== \"undefined\" && process.env?.[\"NODE_ENV\"] !== \"production\") {\n    if (deprecatedTheme !== undefined && lightTheme !== undefined) {\n      warnOnce(\n        \"theme+lightTheme\",\n        '[OpenUI] Both \"theme\" and \"lightTheme\" were passed to ThemeProvider. \"lightTheme\" takes precedence. Remove the deprecated \"theme\" prop.',\n      );\n    }\n\n    if (deprecatedTheme !== undefined && lightTheme === undefined) {\n      warnOnce(\n        \"deprecated-theme\",\n        '[OpenUI] The \"theme\" prop on ThemeProvider is deprecated. Use \"lightTheme\" instead.',\n      );\n    }\n\n    validateThemeObject(userLightTheme, \"lightTheme\");\n    if (userDarkTheme) {\n      validateThemeObject(userDarkTheme, \"darkTheme\");\n    }\n\n    // if (isNested && !hasExplicitSelector) {\n    //   warnOnce(\n    //     \"nested-global\",\n    //     '[OpenUI] A nested ThemeProvider is targeting \"body\". The inner provider will auto-scope to avoid overwriting the parent. Pass an explicit cssSelector to opt out.',\n    //   );\n    // }\n  }\n\n  // ---------------------------------------------------------------------------\n  // Theme resolution\n  // ---------------------------------------------------------------------------\n  const resolvedLightTheme = useMemo(\n    () => ({ ...themes.light, ...userLightTheme }),\n    [userLightTheme],\n  );\n\n  const resolvedDarkTheme = useMemo(() => {\n    const overrides = userDarkTheme ?? userLightTheme;\n    return { ...themes.dark, ...overrides };\n  }, [userDarkTheme, userLightTheme]);\n\n  const activeTheme = mode === \"light\" ? resolvedLightTheme : resolvedDarkTheme;\n  const cssVarsString = useMemo(() => themeToCssVars(activeTheme), [activeTheme]);\n\n  const portalClassName = `openui-theme-portal-${id}`;\n  const scopedClassName = `openui-theme-${id}`;\n\n  const contextValue = useMemo<ThemeContextType>(\n    () => ({ theme: activeTheme, mode, portalThemeClassName: portalClassName }),\n    [activeTheme, mode, portalClassName],\n  );\n\n  const internalValue = useMemo<InternalContextType>(\n    () => ({\n      [OPENUI_THEME_SENTINEL]: true as const,\n      theme: activeTheme,\n      mode,\n      portalThemeClassName: portalClassName,\n    }),\n    [activeTheme, mode, portalClassName],\n  );\n\n  // ---------------------------------------------------------------------------\n  // Style injection via useInsertionEffect (Step 4)\n  // ---------------------------------------------------------------------------\n  const useAutoScope = isNested && !hasExplicitSelector;\n  const styleSelector = useAutoScope ? `.${scopedClassName}` : effectiveCssSelector;\n\n  // Intentionally unlayered — must override component styles in both modes,\n  // including when consumers opt into layered-components.css (@layer openui),\n  // so runtime theming always wins. See README \"Styling integration\" before changing.\n  useInsertionEffect(() => {\n    const style = document.createElement(\"style\");\n    style.setAttribute(\"data-openui-theme\", id);\n    style.textContent = `${styleSelector}, .${portalClassName} { ${cssVarsString} }`;\n    document.head.appendChild(style);\n    return () => style.remove();\n  }, [cssVarsString, styleSelector, portalClassName, id]);\n\n  // ---------------------------------------------------------------------------\n  // Render\n  // ---------------------------------------------------------------------------\n  return (\n    <InternalContext.Provider value={internalValue}>\n      <ThemeContext.Provider value={contextValue}>\n        {useAutoScope ? (\n          <div className={scopedClassName} style={{ display: \"contents\" }}>\n            {children}\n          </div>\n        ) : (\n          children\n        )}\n      </ThemeContext.Provider>\n    </InternalContext.Provider>\n  );\n};\n"],"mappings":"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"}