silvery 0.18.2 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/{animation-DhINOJk8.mjs → animation-Cn64yepo.mjs} +1 -1
  2. package/dist/{animation-DhINOJk8.mjs.map → animation-Cn64yepo.mjs.map} +1 -1
  3. package/dist/{ansi-C6Qs1Wn2.mjs → ansi-CLOitHKx.mjs} +1 -1
  4. package/dist/ansi-CLOitHKx.mjs.map +1 -0
  5. package/dist/{ansi-CsjnZtAw.d.mts → ansi-Cc33mW54.d.mts} +1 -1
  6. package/dist/{ansi-CsjnZtAw.d.mts.map → ansi-Cc33mW54.d.mts.map} +1 -1
  7. package/dist/{chunk-BSw8zbkd.mjs → chunk-Vs_PY4HZ.mjs} +1 -1
  8. package/dist/cli-BKp0YtBD.mjs +4 -0
  9. package/dist/{context-BjWgrikx.mjs → context-BU5LkkIy.mjs} +8 -7
  10. package/dist/context-BU5LkkIy.mjs.map +1 -0
  11. package/dist/devtools-9QY4teqI.mjs +2 -0
  12. package/dist/{devtools-CeO9X_uv.mjs → devtools-DxkSLXDA.mjs} +4 -5
  13. package/dist/devtools-DxkSLXDA.mjs.map +1 -0
  14. package/dist/{eta-BnQSZcWf.mjs → eta-Bb3RH3wh.mjs} +1 -1
  15. package/dist/{eta-BnQSZcWf.mjs.map → eta-Bb3RH3wh.mjs.map} +1 -1
  16. package/dist/{flexily-zero-adapter-BOM0cl8R.mjs → flexily-zero-adapter-BlQa46nr.mjs} +21 -64
  17. package/dist/flexily-zero-adapter-BlQa46nr.mjs.map +1 -0
  18. package/dist/{flexily-zero-adapter-V8R3HQtK.mjs → flexily-zero-adapter-CMxXhdOL.mjs} +1 -1
  19. package/dist/{image-B0zMbVUr.mjs → image-CTII5QWI.mjs} +3 -3
  20. package/dist/image-CTII5QWI.mjs.map +1 -0
  21. package/dist/{index-Bh3U1K09.d.mts → index-BXslOebb.d.mts} +547 -137
  22. package/dist/index-BXslOebb.d.mts.map +1 -0
  23. package/dist/{index-C4vrhbud.d.mts → index-BnA7mNpo.d.mts} +1 -1
  24. package/dist/{index-C4vrhbud.d.mts.map → index-BnA7mNpo.d.mts.map} +1 -1
  25. package/dist/index-D3saHouR.d.mts +1392 -0
  26. package/dist/index-D3saHouR.d.mts.map +1 -0
  27. package/dist/index.d.mts +5 -33
  28. package/dist/index.d.mts.map +1 -1
  29. package/dist/index.mjs +13 -13
  30. package/dist/{layout-engine--drvrWjD.mjs → layout-engine-B6Cdz1yZ.mjs} +1 -1
  31. package/dist/{layout-engine-Dr3cY5U4.mjs → layout-engine-ClUgv6jB.mjs} +3 -3
  32. package/dist/{layout-engine-Dr3cY5U4.mjs.map → layout-engine-ClUgv6jB.mjs.map} +1 -1
  33. package/dist/{multi-progress-CcdqJFlf.mjs → multi-progress-Bq9Oi_WI.mjs} +3 -3
  34. package/dist/{multi-progress-CcdqJFlf.mjs.map → multi-progress-Bq9Oi_WI.mjs.map} +1 -1
  35. package/dist/{multi-progress-DQ-uUzLf.d.mts → multi-progress-DAQC7eap.d.mts} +2 -2
  36. package/dist/{multi-progress-DQ-uUzLf.d.mts.map → multi-progress-DAQC7eap.d.mts.map} +1 -1
  37. package/dist/{node-CP5WChgr.mjs → node-BeWlnCPY.mjs} +4 -4
  38. package/dist/node-BeWlnCPY.mjs.map +1 -0
  39. package/dist/{progress-bar-IrUjkLfU.mjs → progress-bar-CXE5Qfkd.mjs} +4 -4
  40. package/dist/progress-bar-CXE5Qfkd.mjs.map +1 -0
  41. package/dist/reconciler-Cwgm8hRR.mjs +8459 -0
  42. package/dist/reconciler-Cwgm8hRR.mjs.map +1 -0
  43. package/dist/{render-string-BwLG7rIX.mjs → render-string-0mN37DLf.mjs} +1 -1
  44. package/dist/{render-string-DVfgc8xr.mjs → render-string-X-CxpTdZ.mjs} +935 -136
  45. package/dist/render-string-X-CxpTdZ.mjs.map +1 -0
  46. package/dist/runtime.d.mts +2 -2
  47. package/dist/runtime.mjs +3 -3
  48. package/dist/{spinner-BRkaJI0N.d.mts → spinner-CGo34vyR.d.mts} +2 -2
  49. package/dist/{spinner-BRkaJI0N.d.mts.map → spinner-CGo34vyR.d.mts.map} +1 -1
  50. package/dist/{spinner-BmldKx0M.mjs → spinner-CeOmcuw_.mjs} +3 -3
  51. package/dist/spinner-CeOmcuw_.mjs.map +1 -0
  52. package/dist/src-B5GjfG7g.mjs +4305 -0
  53. package/dist/src-B5GjfG7g.mjs.map +1 -0
  54. package/dist/{src-CJPXf3fC.mjs → src-Bd7ezSgG.mjs} +7560 -6474
  55. package/dist/src-Bd7ezSgG.mjs.map +1 -0
  56. package/dist/{src-D8kLrQBT.mjs → src-CChwjk0Z.mjs} +8 -86
  57. package/dist/src-CChwjk0Z.mjs.map +1 -0
  58. package/dist/{src-D_BS-as7.mjs → src-NCKb8kE5.mjs} +777 -776
  59. package/dist/src-NCKb8kE5.mjs.map +1 -0
  60. package/dist/theme.d.mts +2 -130
  61. package/dist/theme.mjs +3 -8
  62. package/dist/{types-B4A8Ebba.d.mts → types-BH_v3iMT.d.mts} +1 -1
  63. package/dist/{types-B4A8Ebba.d.mts.map → types-BH_v3iMT.d.mts.map} +1 -1
  64. package/dist/{types-e4dpfbSa.mjs → types-Bk2yw9Qj.mjs} +3 -3
  65. package/dist/types-Bk2yw9Qj.mjs.map +1 -0
  66. package/dist/ui/animation.d.mts +1 -1
  67. package/dist/ui/animation.mjs +1 -1
  68. package/dist/ui/ansi.d.mts +1 -1
  69. package/dist/ui/ansi.mjs +1 -1
  70. package/dist/ui/cli.d.mts +3 -3
  71. package/dist/ui/cli.mjs +5 -5
  72. package/dist/ui/display.d.mts +1 -1
  73. package/dist/ui/display.mjs.map +1 -1
  74. package/dist/ui/image.d.mts +1 -1
  75. package/dist/ui/image.mjs +1 -1
  76. package/dist/ui/input.d.mts +1 -1
  77. package/dist/ui/input.d.mts.map +1 -1
  78. package/dist/ui/input.mjs +2 -4
  79. package/dist/ui/input.mjs.map +1 -1
  80. package/dist/ui/progress.d.mts +3 -3
  81. package/dist/ui/progress.d.mts.map +1 -1
  82. package/dist/ui/progress.mjs +3 -3
  83. package/dist/ui/progress.mjs.map +1 -1
  84. package/dist/ui/react.d.mts +1 -1
  85. package/dist/ui/react.d.mts.map +1 -1
  86. package/dist/ui/react.mjs +2 -2
  87. package/dist/ui/react.mjs.map +1 -1
  88. package/dist/ui/utils.mjs +1 -1
  89. package/dist/ui/wrappers.d.mts +2 -2
  90. package/dist/ui/wrappers.mjs +1 -1
  91. package/dist/ui.d.mts +5 -5
  92. package/dist/ui.mjs +6 -6
  93. package/dist/{useLatest-6xqnGIU6.d.mts → useLatest-Bg2x4bfP.d.mts} +1 -1
  94. package/dist/{useLatest-6xqnGIU6.d.mts.map → useLatest-Bg2x4bfP.d.mts.map} +1 -1
  95. package/dist/{with-text-input-lUh9gYAG.d.mts → with-text-input-CRfoiFFG.d.mts} +3 -3
  96. package/dist/with-text-input-CRfoiFFG.d.mts.map +1 -0
  97. package/dist/{wrappers-JrEYTuKA.mjs → wrappers-UTADQkSY.mjs} +4 -4
  98. package/dist/wrappers-UTADQkSY.mjs.map +1 -0
  99. package/dist/{yoga-adapter-Bc8XT9cN.mjs → yoga-adapter-8oRGRw8V.mjs} +2 -2
  100. package/dist/{yoga-adapter-Bc8XT9cN.mjs.map → yoga-adapter-8oRGRw8V.mjs.map} +1 -1
  101. package/dist/yoga-adapter-D_CcxSt5.mjs +2 -0
  102. package/package.json +3 -3
  103. package/dist/UPNG-DvKjM6wE.mjs +0 -5076
  104. package/dist/UPNG-DvKjM6wE.mjs.map +0 -1
  105. package/dist/__vite-browser-external-2447137e-DPKHHqQK.mjs +0 -6
  106. package/dist/__vite-browser-external-2447137e-DPKHHqQK.mjs.map +0 -1
  107. package/dist/ansi-C6Qs1Wn2.mjs.map +0 -1
  108. package/dist/apng-CvSlLBtc.mjs +0 -3
  109. package/dist/apng-DFFVOItr.mjs +0 -70
  110. package/dist/apng-DFFVOItr.mjs.map +0 -1
  111. package/dist/assets/resvgjs.darwin-arm64-BtufyGW1.node +0 -0
  112. package/dist/backend-DU0Y938U.mjs +0 -13396
  113. package/dist/backend-DU0Y938U.mjs.map +0 -1
  114. package/dist/backends-BihMKFY_.mjs +0 -1181
  115. package/dist/backends-BihMKFY_.mjs.map +0 -1
  116. package/dist/backends-Dk_5G_gC.mjs +0 -3
  117. package/dist/cli-GwJ0S2In.mjs +0 -4
  118. package/dist/context-BjWgrikx.mjs.map +0 -1
  119. package/dist/derive-O_Kb1Bk_.d.mts +0 -28
  120. package/dist/derive-O_Kb1Bk_.d.mts.map +0 -1
  121. package/dist/devtools-CeO9X_uv.mjs.map +0 -1
  122. package/dist/devtools-nX4tj6OH.mjs +0 -2
  123. package/dist/flexily-zero-adapter-BOM0cl8R.mjs.map +0 -1
  124. package/dist/gif-B9Uq4qZA.mjs +0 -73
  125. package/dist/gif-B9Uq4qZA.mjs.map +0 -1
  126. package/dist/gif-BdrLRBmM.mjs +0 -3
  127. package/dist/gifenc-DfhOb4xr.mjs +0 -730
  128. package/dist/gifenc-DfhOb4xr.mjs.map +0 -1
  129. package/dist/image-B0zMbVUr.mjs.map +0 -1
  130. package/dist/index-Bh3U1K09.d.mts.map +0 -1
  131. package/dist/index-dehZ18K-.d.mts +0 -679
  132. package/dist/index-dehZ18K-.d.mts.map +0 -1
  133. package/dist/key-mapping-7k2ufK2b.mjs +0 -3
  134. package/dist/key-mapping-WLUmxjx1.mjs +0 -132
  135. package/dist/key-mapping-WLUmxjx1.mjs.map +0 -1
  136. package/dist/node-CP5WChgr.mjs.map +0 -1
  137. package/dist/progress-bar-IrUjkLfU.mjs.map +0 -1
  138. package/dist/reconciler-B8uxQxaU.mjs +0 -16482
  139. package/dist/reconciler-B8uxQxaU.mjs.map +0 -1
  140. package/dist/render-string-DVfgc8xr.mjs.map +0 -1
  141. package/dist/resvg-js-Cwipz-_J.mjs +0 -203
  142. package/dist/resvg-js-Cwipz-_J.mjs.map +0 -1
  143. package/dist/spinner-BmldKx0M.mjs.map +0 -1
  144. package/dist/src-C0sOQW-t.mjs +0 -3866
  145. package/dist/src-C0sOQW-t.mjs.map +0 -1
  146. package/dist/src-CJPXf3fC.mjs.map +0 -1
  147. package/dist/src-D8kLrQBT.mjs.map +0 -1
  148. package/dist/src-D_BS-as7.mjs.map +0 -1
  149. package/dist/theme.d.mts.map +0 -1
  150. package/dist/theme.mjs.map +0 -1
  151. package/dist/types-e4dpfbSa.mjs.map +0 -1
  152. package/dist/with-text-input-lUh9gYAG.d.mts.map +0 -1
  153. package/dist/wrapper-CE6GQ27z.mjs +0 -3527
  154. package/dist/wrapper-CE6GQ27z.mjs.map +0 -1
  155. package/dist/wrappers-JrEYTuKA.mjs.map +0 -1
  156. package/dist/yoga-adapter-B8LZpQcE.mjs +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src-B5GjfG7g.mjs","names":["_ansi16DarkTheme","_ansi16LightTheme","deriveTheme","isDarkColor","importBase16Internal","deriveTheme","deriveTheme","_detectTheme"],"sources":["../packages/theme/src/generate.ts","../packages/theme/src/import/types.ts","../packages/theme/src/import/base16.ts","../packages/theme/src/sterling/contrast.ts","../packages/theme/src/sterling/derive.ts","../packages/theme/src/sterling/inline.ts","../packages/theme/src/schemes/catppuccin.ts","../packages/theme/src/schemes/nord.ts","../packages/theme/src/schemes/dracula.ts","../packages/theme/src/schemes/solarized.ts","../packages/theme/src/schemes/tokyo-night.ts","../packages/theme/src/schemes/one-dark.ts","../packages/theme/src/schemes/gruvbox.ts","../packages/theme/src/schemes/rose-pine.ts","../packages/theme/src/schemes/kanagawa.ts","../packages/theme/src/schemes/everforest.ts","../packages/theme/src/schemes/monokai.ts","../packages/theme/src/schemes/snazzy.ts","../packages/theme/src/schemes/material.ts","../packages/theme/src/schemes/palenight.ts","../packages/theme/src/schemes/ayu.ts","../packages/theme/src/schemes/nightfox.ts","../packages/theme/src/schemes/horizon.ts","../packages/theme/src/schemes/moonfly.ts","../packages/theme/src/schemes/nightfly.ts","../packages/theme/src/schemes/oxocarbon.ts","../packages/theme/src/schemes/sonokai.ts","../packages/theme/src/schemes/edge.ts","../packages/theme/src/schemes/modus.ts","../packages/theme/src/schemes/github.ts","../packages/theme/src/schemes/cobalt2.ts","../packages/theme/src/schemes/synthwave.ts","../packages/theme/src/schemes/tomorrow-night.ts","../packages/theme/src/schemes/zenburn.ts","../packages/theme/src/schemes/ubuntu.ts","../packages/theme/src/schemes/tango.ts","../packages/theme/src/schemes/cyberpunk.ts","../packages/theme/src/schemes/vscode.ts","../packages/theme/src/schemes/one-light.ts","../packages/theme/src/schemes/night-owl.ts","../packages/theme/src/schemes/shades-of-purple.ts","../packages/theme/src/schemes/homebrew.ts","../packages/theme/src/schemes/neon.ts","../packages/theme/src/schemes/challenger-deep.ts","../packages/theme/src/schemes/doom-one.ts","../packages/theme/src/schemes/mariana.ts","../packages/theme/src/schemes/darcula.ts","../packages/theme/src/schemes/espresso.ts","../packages/theme/src/schemes/iceberg.ts","../packages/theme/src/schemes/serendipity.ts","../packages/theme/src/schemes/twilight.ts","../packages/theme/src/schemes/breeze.ts","../packages/theme/src/schemes/andromeda.ts","../packages/theme/src/schemes/relaxed.ts","../packages/theme/src/schemes/silvery.ts","../packages/theme/src/schemes/classics.ts","../packages/theme/src/schemes/index.ts","../packages/theme/src/generators.ts","../packages/theme/src/builder.ts","../packages/theme/src/auto-generate.ts","../packages/theme/src/validate.ts","../packages/theme/src/validate-theme.ts","../packages/theme/src/alias.ts","../packages/theme/src/sterling/flat-tokens.ts","../packages/theme/src/css.ts","../packages/theme/src/export/base16.ts","../packages/theme/src/detect.ts","../packages/theme/src/sterling/defaults.ts","../packages/theme/src/sterling/define.ts","../packages/theme/src/sterling/sterling.ts","../packages/theme/src/sterling/index.ts","../packages/theme/src/theme.ts"],"sourcesContent":["/**\n * ANSI 16 theme generation — derives a complete Theme from a primary color + dark/light.\n *\n * All token values are hex strings. Terminal rendering quantizes hex to 4-bit\n * ANSI codes at paint time when colorLevel === \"basic\".\n */\n\nimport type { AnsiPrimary, Theme } from \"@silvery/ansi\"\nimport { deriveFields, DEFAULT_VARIANTS, ANSI16_SLOT_HEX } from \"@silvery/ansi\"\n\n// Re-export for consumers that import DEFAULT_VARIANTS from here.\nexport { DEFAULT_VARIANTS }\n\n/**\n * Resolve an ANSI16 slot name (e.g. \"yellow\", \"blueBright\") to its canonical\n * hex value. Falls back to the input string if not found (e.g., already hex).\n */\nfunction slotHex(name: string): string {\n return ANSI16_SLOT_HEX[name] ?? name\n}\n\n/**\n * Generate a complete ANSI 16 theme from a primary color + dark/light preference.\n *\n * All token values are hex strings (e.g. \"#808000\" for yellow).\n * Terminal rendering quantizes these to 4-bit ANSI codes at paint time\n * when colorLevel === \"basic\".\n */\nexport function generateTheme(primary: AnsiPrimary, dark: boolean): Theme {\n const primaryHex = slotHex(primary)\n const fgHex = slotHex(dark ? \"whiteBright\" : \"black\")\n const accentHex = primaryHex // generate.ts: accent = primary (single-color generator)\n const selectionbgHex = primaryHex\n const surfacebgHex = slotHex(dark ? \"black\" : \"white\")\n\n // Categorical ring — computed from dark flag alone (no ColorScheme available)\n const ring = {\n red: slotHex(dark ? \"redBright\" : \"red\"),\n orange: slotHex(dark ? \"redBright\" : \"red\"), // no orange slot in ANSI 16\n yellow: slotHex(\"yellow\"),\n green: slotHex(dark ? \"greenBright\" : \"green\"),\n teal: slotHex(\"cyan\"), // canonical: cyan (not cyanBright — aligned to deriveAnsi16Theme)\n blue: slotHex(dark ? \"blueBright\" : \"blue\"),\n purple: slotHex(\"magenta\"),\n pink: slotHex(dark ? \"magentaBright\" : \"magenta\"),\n }\n\n const derived = deriveFields({\n primary: primaryHex,\n accent: accentHex,\n fg: fgHex,\n selectionbg: selectionbgHex,\n surfacebg: surfacebgHex,\n ring,\n })\n\n return {\n name: `${dark ? \"dark\" : \"light\"}-${primary}`,\n\n // ── Root pair ─────────────────────────────────────────────────\n bg: \"\",\n fg: fgHex,\n\n // ── Surface pairs (base = text, *bg = background) ──────────\n muted: slotHex(dark ? \"white\" : \"blackBright\"),\n mutedbg: slotHex(dark ? \"black\" : \"white\"),\n surface: slotHex(dark ? \"whiteBright\" : \"black\"),\n surfacebg: surfacebgHex,\n popover: slotHex(dark ? \"whiteBright\" : \"black\"),\n popoverbg: slotHex(dark ? \"blackBright\" : \"white\"),\n inverse: slotHex(dark ? \"black\" : \"whiteBright\"),\n inversebg: slotHex(dark ? \"whiteBright\" : \"black\"),\n cursor: slotHex(\"black\"),\n cursorbg: primaryHex,\n selection: slotHex(\"black\"),\n selectionbg: primaryHex,\n\n // ── Accent pairs (base = area bg, *fg = text on area) ──────\n primary: primaryHex,\n primaryfg: slotHex(\"black\"),\n secondary: primaryHex,\n secondaryfg: slotHex(\"black\"),\n accent: primaryHex,\n accentfg: slotHex(\"black\"),\n error: slotHex(dark ? \"redBright\" : \"red\"),\n errorfg: slotHex(\"black\"),\n warning: primaryHex,\n warningfg: slotHex(\"black\"),\n success: slotHex(dark ? \"greenBright\" : \"green\"),\n successfg: slotHex(\"black\"),\n info: slotHex(dark ? \"cyanBright\" : \"cyan\"),\n infofg: slotHex(\"black\"),\n\n // ── Standalone ───────────────────────────────────────────────\n border: slotHex(\"gray\"),\n inputborder: slotHex(\"gray\"),\n focusborder: slotHex(dark ? \"blueBright\" : \"blue\"),\n link: slotHex(\"blueBright\"),\n disabledfg: slotHex(\"gray\"),\n\n // ── Palette ──────────────────────────────────────────────────\n palette: [\n slotHex(\"black\"),\n slotHex(\"red\"),\n slotHex(\"green\"),\n slotHex(\"yellow\"),\n slotHex(\"blue\"),\n slotHex(\"magenta\"),\n slotHex(\"cyan\"),\n slotHex(\"white\"),\n slotHex(\"blackBright\"),\n slotHex(\"redBright\"),\n slotHex(\"greenBright\"),\n slotHex(\"yellowBright\"),\n slotHex(\"blueBright\"),\n slotHex(\"magentaBright\"),\n slotHex(\"cyanBright\"),\n slotHex(\"whiteBright\"),\n ],\n\n // ── Derived fields (brand, ring, state variants, variants) ───\n ...derived,\n }\n}\n","/**\n * Base16 scheme type — the 16-color format used by hundreds of community themes.\n *\n * @see https://github.com/chriskempson/base16\n */\n\n/** A parsed Base16 color scheme. All hex values are WITHOUT `#` prefix. */\nexport interface Base16Scheme {\n scheme: string\n author: string\n base00: string\n base01: string\n base02: string\n base03: string\n base04: string\n base05: string\n base06: string\n base07: string\n base08: string\n base09: string\n base0A: string\n base0B: string\n base0C: string\n base0D: string\n base0E: string\n base0F: string\n}\n\n/** All Base16 color keys in order. */\nexport const BASE16_KEYS = [\n \"base00\",\n \"base01\",\n \"base02\",\n \"base03\",\n \"base04\",\n \"base05\",\n \"base06\",\n \"base07\",\n \"base08\",\n \"base09\",\n \"base0A\",\n \"base0B\",\n \"base0C\",\n \"base0D\",\n \"base0E\",\n \"base0F\",\n] as const\n","/**\n * Import Base16 YAML/JSON schemes into ColorScheme format.\n *\n * Base16 defines 16 colors (base00–base0F). We map them to ColorScheme's\n * 22 colors, deriving bright variants and special colors.\n *\n * @see https://github.com/chriskempson/base16\n */\n\nimport { darken, brighten, hexToRgb } from \"@silvery/color\"\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport type { Base16Scheme } from \"./types\"\nimport { BASE16_KEYS } from \"./types\"\n\n// ============================================================================\n// YAML Parser (minimal — Base16 YAML is just `key: \"value\"` lines)\n// ============================================================================\n\n/**\n * Parse Base16 YAML into a Base16Scheme object.\n * Handles both quoted and unquoted values, comments, and blank lines.\n */\nfunction parseBase16Yaml(yaml: string): Base16Scheme {\n const result: Record<string, string> = {}\n\n for (const raw of yaml.split(\"\\n\")) {\n const line = raw.trim()\n if (!line || line.startsWith(\"#\")) continue\n\n const colonIdx = line.indexOf(\":\")\n if (colonIdx === -1) continue\n\n const key = line.slice(0, colonIdx).trim()\n let value = line.slice(colonIdx + 1).trim()\n\n // Strip surrounding quotes (single or double)\n if (\n (value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\"))\n ) {\n value = value.slice(1, -1)\n }\n\n // Strip inline comments (only after unquoted values)\n const commentIdx = value.indexOf(\"#\")\n if (commentIdx > 0) {\n value = value.slice(0, commentIdx).trim()\n }\n\n result[key] = value\n }\n\n // Validate required fields\n if (!result.scheme) {\n throw new Error(\"Base16 YAML missing required field: scheme\")\n }\n\n for (const key of BASE16_KEYS) {\n if (!result[key]) {\n throw new Error(`Base16 YAML missing required color: ${key}`)\n }\n // Validate hex format (6 hex chars, no # prefix)\n if (!/^[0-9a-fA-F]{6}$/.test(result[key]!)) {\n throw new Error(\n `Base16 color ${key} must be a 6-digit hex string without '#', got: \"${result[key]}\"`,\n )\n }\n }\n\n return result as unknown as Base16Scheme\n}\n\n// ============================================================================\n// Luminance Detection\n// ============================================================================\n\n/** Compute relative luminance (WCAG 2.0) from a hex color with `#` prefix. */\nfunction luminance(hex: string): number {\n const rgb = hexToRgb(hex)\n if (!rgb) return 0\n const [r, g, b] = rgb.map((c) => {\n const s = c / 255\n return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4)\n })\n return 0.2126 * r! + 0.7152 * g! + 0.0722 * b!\n}\n\n// ============================================================================\n// Import\n// ============================================================================\n\n/** Normalize a bare hex string to `#RRGGBB` (uppercase). */\nfunction hex(bare: string): string {\n return `#${bare.toUpperCase()}`\n}\n\n/**\n * Import a Base16 YAML (or JSON) scheme into a ColorScheme.\n *\n * Mapping:\n * base00 → background, base01 → brightBlack, base02 → selectionBackground,\n * base03 → white (muted fg), base05 → foreground/brightWhite,\n * base08 → red, base09 → brightRed, base0A → yellow,\n * base0B → green, base0C → cyan, base0D → blue, base0E → magenta,\n * base0F → brightMagenta.\n *\n * Bright color variants are derived by brightening normals.\n * `dark` is inferred from base00 luminance.\n */\nexport function importBase16(yamlOrJson: string): ColorScheme {\n const scheme = parseBase16Yaml(yamlOrJson)\n return base16ToColorScheme(scheme)\n}\n\n/** Convert a parsed Base16Scheme to ColorScheme. */\nexport function base16ToColorScheme(scheme: Base16Scheme): ColorScheme {\n const bg = hex(scheme.base00)\n const fg = hex(scheme.base05)\n const isDark = luminance(bg) < 0.179\n\n const black = isDark ? darken(bg, 0.15) : brighten(bg, 0.15)\n const red = hex(scheme.base08)\n const green = hex(scheme.base0B)\n const yellow = hex(scheme.base0A)\n const blue = hex(scheme.base0D)\n const magenta = hex(scheme.base0E)\n const cyan = hex(scheme.base0C)\n\n return {\n name: scheme.scheme,\n dark: isDark,\n black,\n red,\n green,\n yellow,\n blue,\n magenta,\n cyan,\n white: hex(scheme.base03),\n brightBlack: hex(scheme.base01),\n brightRed: hex(scheme.base09),\n brightGreen: brighten(green, 0.15),\n brightYellow: brighten(yellow, 0.15),\n brightBlue: brighten(blue, 0.15),\n brightMagenta: hex(scheme.base0F),\n brightCyan: brighten(cyan, 0.15),\n brightWhite: fg,\n foreground: fg,\n background: bg,\n cursorColor: fg,\n cursorText: bg,\n selectionBackground: hex(scheme.base02),\n selectionForeground: fg,\n }\n}\n","/**\n * Sterling contrast guardrails — D3 from sterling-preflight.md.\n *\n * Two modes:\n * - `strict` — throw when a core role pair fails WCAG AA 4.5:1.\n * Used by the catalog test (all 84 shipped schemes must pass).\n * - `auto-lift` — adjust OKLCH lightness until AA passes (±0.04L increments\n * up to ~0.20L). Logs at debug; silent by default. Used for user schemes\n * at runtime.\n *\n * Pinned tokens (per-role overrides supplied by scheme authors) are excluded\n * from auto-lift and from strict-mode enforcement — the author accepts the\n * contrast consequence of pinning.\n */\n\nimport { checkContrast, ensureContrast } from \"@silvery/color\"\n\n/** WCAG AA threshold for normal text. */\nexport const WCAG_AA = 4.5\n\n/**\n * Per-step L shift used in the design-system.md §Derivation guardrails:\n * \"adjust via OKLCH lightness shifts (±0.04L increments, up to ~0.20L)\"\n * These constants are kept for documentation/testing; `autoLift` itself\n * uses `ensureContrast` from @silvery/color which binary-searches the\n * minimum L shift that achieves the target.\n */\nexport const LIFT_STEP = 0.04\nexport const LIFT_MAX = 0.2\n\nexport interface ContrastViolation {\n readonly token: string\n readonly fg: string\n readonly bg: string\n readonly ratio: number\n readonly target: number\n}\n\nexport class ContrastError extends Error {\n readonly violations: readonly ContrastViolation[]\n constructor(violations: readonly ContrastViolation[]) {\n const summary = violations\n .slice(0, 5)\n .map((v) => `${v.token}: ${v.ratio.toFixed(2)} < ${v.target} (fg=${v.fg}, bg=${v.bg})`)\n .join(\"; \")\n const extra = violations.length > 5 ? ` (+${violations.length - 5} more)` : \"\"\n super(`Sterling contrast: ${violations.length} violation(s): ${summary}${extra}`)\n this.name = \"ContrastError\"\n this.violations = violations\n }\n}\n\n/**\n * Verify `fg` on `bg` meets `target` ratio. Returns `null` when already\n * passing; otherwise returns a ContrastViolation.\n */\nexport function checkAA(\n token: string,\n fg: string,\n bg: string,\n target = WCAG_AA,\n): ContrastViolation | null {\n const r = checkContrast(fg, bg)\n if (!r) return null // non-hex input — skip rather than error\n if (r.ratio >= target) return null\n return { token, fg, bg, ratio: r.ratio, target }\n}\n\n/**\n * Auto-lift `fg` against `bg` until the `target` contrast ratio is met,\n * via OKLCH L shifts (hue + chroma preserved). Light bg → darken;\n * dark bg → lighten.\n *\n * Implementation note: binary-searches the minimum L shift achieving the\n * target. Falls back to a best-effort value if the target is unreachable\n * (e.g., yellow against white can never hit 4.5:1 at any lightness while\n * preserving yellow hue; the result is the darkest in-gamut yellow).\n */\nexport function autoLift(\n fg: string,\n bg: string,\n target = WCAG_AA,\n): { value: string; lifted: boolean } {\n const current = checkContrast(fg, bg)\n if (!current) return { value: fg, lifted: false }\n if (current.ratio >= target) return { value: fg, lifted: false }\n\n // ensureContrast() in @silvery/color binary-searches OKLCH L for the\n // minimum shift that hits the target (and returns best-effort otherwise).\n const adjusted = ensureContrast(fg, bg, target)\n const lifted = adjusted !== fg\n return { value: adjusted, lifted }\n}\n","/**\n * Sterling derivation — preservative OKLCH rules over a 22-color ColorScheme.\n *\n * Implements design-system.md §\"Derivation rules\" with guardrails from D3.\n * Produces the nested `Roles` shape. `flatten.ts` projects the flat keys.\n *\n * Derivation is:\n * 1. `scheme.primary` (or fallback) → accent.fg / accent.bg / info.fg\n * 2. status roles from `scheme.red / yellow / green / primary`\n * 3. Adaptive OKLCH hover/active L-shift (direction = base-L, not scheme.dark):\n * baseL > 0.6 → darken (hover −0.04L, active −0.08L)\n * baseL ≤ 0.6 → brighten (hover +0.04L, active +0.08L)\n * At L extremes (target L > 0.9 or < 0.1) chroma is proportionally\n * reduced so the color pushes toward gray instead of collapsing to\n * white/black — fixes the Frappe yellow/light-accent whiteout.\n * 4. `fgOn` picked for WCAG AA against role's `bg` (prefers scheme bg/fg)\n * 5. surface ramp via OKLCH blend\n * 6. contrast guardrail: strict throws, auto-lift adjusts\n *\n * Per-hue delta adaptation: yellows (H ∈ [80, 110]) get ±0.06L / ±0.10L,\n * low-chroma schemes (C < 0.05) get ±0.06L / ±0.10L. Everything else uses\n * the standard ±0.04L / ±0.08L.\n *\n * Pinned tokens (via `DeriveOptions.pins`) bypass both the rule and\n * auto-lift; they're written verbatim onto the Theme.\n */\n\nimport { blend, hexToOklch, oklchToHex, relativeLuminance } from \"@silvery/color\"\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport type {\n AccentRole,\n BorderRole,\n CategoricalHues,\n CursorRole,\n DeepPartial,\n DeriveOptions,\n DerivationStep,\n InteractiveRole,\n MutedRole,\n Roles,\n SurfaceRole,\n Theme,\n Variant,\n} from \"./types.ts\"\nimport { WCAG_AA, autoLift, checkAA, ContrastError, type ContrastViolation } from \"./contrast.ts\"\n\n/**\n * Default typography variants — token-based, works across any Sterling theme.\n * Consumed by `<Text variant=\"h1\">` via the theme's `variants` record.\n *\n * Keys use Sterling flat-token names in their color slots (`$fg-accent`,\n * `$fg-muted`, `$bg-muted`) so the defaults resolve against every Sterling-\n * derived Theme without further wiring.\n */\nexport const DEFAULT_VARIANTS: Record<string, Variant> = {\n h1: { color: \"$fg-accent\", bold: true },\n h2: { color: \"$fg-accent\", bold: true },\n h3: { bold: true },\n body: {},\n \"body-muted\": { color: \"$fg-muted\" },\n \"fine-print\": { color: \"$fg-muted\", dim: true },\n strong: { bold: true },\n em: { italic: true },\n link: { color: \"$fg-accent\", underlineStyle: \"single\" },\n key: { color: \"$fg-accent\", bold: true },\n code: { backgroundColor: \"$bg-muted\" },\n kbd: { backgroundColor: \"$bg-muted\", color: \"$fg-accent\", bold: true },\n}\n\n/**\n * Build the 16-slot ANSI palette from a ColorScheme. Indexed `$color0` …\n * `$color15` by the framework's token resolver.\n */\nfunction buildPalette(scheme: ColorScheme): readonly string[] {\n return [\n scheme.black,\n scheme.red,\n scheme.green,\n scheme.yellow,\n scheme.blue,\n scheme.magenta,\n scheme.cyan,\n scheme.white,\n scheme.brightBlack,\n scheme.brightRed,\n scheme.brightGreen,\n scheme.brightYellow,\n scheme.brightBlue,\n scheme.brightMagenta,\n scheme.brightCyan,\n scheme.brightWhite,\n ]\n}\n\n/**\n * Derive the 8-hue categorical ring from a ColorScheme. Mirrors the legacy\n * derive.ts logic — blends scheme hues for the missing Sterling slots\n * (orange from red+yellow, teal from green+cyan, pink from magenta+red).\n */\nfunction buildCategoricalHues(scheme: ColorScheme): CategoricalHues {\n const dark = scheme.dark ?? true\n return {\n red: scheme.red,\n orange: blend(scheme.red, scheme.yellow, 0.5),\n yellow: scheme.yellow,\n green: scheme.green,\n teal: blend(scheme.green, scheme.cyan, 0.5),\n blue: dark ? scheme.brightBlue : scheme.blue,\n purple: scheme.magenta,\n pink: blend(scheme.magenta, scheme.red, 0.5),\n }\n}\n\n// ── Hue / chroma helpers ───────────────────────────────────────────────────\n\nfunction isYellowish(hex: string): boolean {\n const o = hexToOklch(hex)\n if (!o) return false\n // OKLCH yellow ~ H in [80, 120]\n return o.H >= 80 && o.H <= 120\n}\n\nfunction isLowChroma(hex: string): boolean {\n const o = hexToOklch(hex)\n if (!o) return false\n return o.C < 0.05\n}\n\n/** Compute state-shift deltas for a given base color. Wider for yellows + low-chroma. */\nfunction stateDeltas(base: string): { hover: number; active: number } {\n if (isYellowish(base) || isLowChroma(base)) return { hover: 0.06, active: 0.1 }\n return { hover: 0.04, active: 0.08 }\n}\n\n// ── L-shift primitives (adaptive, chroma-preserving) ──────────────────────\n\n/**\n * Adaptive L-shift: direction follows the token's own luminance, NOT\n * scheme.dark. High-L tokens (yellows, light accents) darken; low-L tokens\n * brighten. Uniform handling — yields a reliable \"more active than hover\"\n * relationship no matter what hue/lightness the base is.\n *\n * Chroma preservation at L extremes: when the target L pushes past 0.9\n * (approaching white) or below 0.1 (approaching black), chroma is scaled\n * down proportionally so the color drifts toward gray rather than\n * collapsing to #FFFFFF or #000000. This preserves perceptual differences\n * between the base / hover / active states even on intrinsically-bright\n * tokens (catppuccin-frappe yellow, light blue accents, etc.).\n *\n * Returns the original hex unchanged when OKLCH parsing fails.\n */\nfunction shiftL(hex: string, amount: number): string {\n const o = hexToOklch(hex)\n if (!o) return hex\n const direction = o.L > 0.6 ? -1 : +1\n const targetL = clamp01(o.L + direction * amount)\n\n // Chroma-preservation at L extremes:\n // |L − 0.5| × 2 ∈ [0, 1] — 0 at mid-gray, 1 at L=0 or L=1.\n // Below L=0.9 / above L=0.1 the factor is (1 − 0) = 1 (no dampening).\n // As L saturates, chroma collapses toward 0 → pushes toward gray, not\n // toward white/black.\n let nextC = o.C\n if (targetL > 0.9 || targetL < 0.1) {\n const distanceFromMid = Math.abs(targetL - 0.5) * 2 // 0..1\n // At L=0.9 or L=0.1, distance=0.8 → factor=0.2. At L=1/L=0 → factor=0.\n // Chroma linearly collapses between the 0.9/0.1 boundary and the endpoint.\n const factor = clamp01(1 - distanceFromMid)\n nextC = o.C * factor\n }\n\n return oklchToHex({ L: targetL, C: nextC, H: o.H })\n}\n\nfunction clamp01(x: number): number {\n return x < 0 ? 0 : x > 1 ? 1 : x\n}\n\n/** Label the direction the adaptive L-shift took, for trace rule strings. */\nfunction shiftLabel(hex: string): \"darken\" | \"brighten\" {\n const o = hexToOklch(hex)\n if (!o) return \"brighten\"\n return o.L > 0.6 ? \"darken\" : \"brighten\"\n}\n\n// ── Mode inference ─────────────────────────────────────────────────────────\n\nfunction inferMode(scheme: ColorScheme, explicit?: \"light\" | \"dark\"): \"light\" | \"dark\" {\n if (explicit) return explicit\n if (typeof scheme.dark === \"boolean\") return scheme.dark ? \"dark\" : \"light\"\n const lum = relativeLuminance(scheme.background)\n return lum !== null && lum < 0.5 ? \"dark\" : \"light\"\n}\n\n// ── fgOn picker ────────────────────────────────────────────────────────────\n\n/**\n * Pick a foreground color to draw on a filled `bg` of a role. Prefers\n * `scheme.background` if it beats AA against the role bg (i.e. the role bg\n * is bright enough that using dark text reads); otherwise `scheme.foreground`;\n * otherwise falls back to white/black by bg luminance.\n */\nfunction pickFgOn(roleBg: string, scheme: ColorScheme): string {\n const candidates = [scheme.foreground, scheme.background, \"#FFFFFF\", \"#000000\"]\n let best = candidates[0]!\n let bestRatio = 0\n for (const c of candidates) {\n const r = checkAA(\"fgOn\", c, roleBg) // null means passes\n if (r === null) return c\n // r.ratio is the current ratio — if below AA, keep hunting\n if (r.ratio > bestRatio) {\n best = c\n bestRatio = r.ratio\n }\n }\n return best\n}\n\n// ── Pins resolution ────────────────────────────────────────────────────────\n\n/**\n * Resolve a pin for a token path. Accepts both nested (`\"accent.hover.bg\"`)\n * and flat (`\"bg-accent-hover\"`) forms. Returns the pinned hex or undefined.\n */\nfunction pin(\n pins: Readonly<Record<string, string>> | undefined,\n nested: string,\n flat: string,\n): string | undefined {\n if (!pins) return undefined\n return pins[nested] ?? pins[flat]\n}\n\n/**\n * Shared guard: handles pin → rule → contrast check → auto-lift → record.\n * `target` defaults to WCAG_AA (4.5); callers use 3.0 for \"muted\" tokens\n * that are deemphasized by design.\n */\nfunction guardTarget(\n nestedPath: string,\n flatPath: string,\n rule: string,\n inputs: string[],\n value: string,\n against: string | undefined,\n target: number,\n contrast: \"strict\" | \"auto-lift\",\n pins: Readonly<Record<string, string>> | undefined,\n trace: DerivationStep[],\n violations: ContrastViolation[],\n): string {\n const pinned = pin(pins, nestedPath, flatPath)\n if (pinned !== undefined) {\n trace.push({\n token: nestedPath,\n rule: \"pinned by scheme author\",\n inputs: [pinned],\n output: pinned,\n pinned: true,\n })\n return pinned\n }\n if (against === undefined) {\n trace.push({ token: nestedPath, rule, inputs, output: value })\n return value\n }\n const v = checkAA(nestedPath, value, against, target)\n if (v === null) {\n trace.push({ token: nestedPath, rule, inputs, output: value })\n return value\n }\n // Both modes apply auto-lift. The difference is failure handling:\n // - strict: residual violations (lift couldn't reach target) → record, caller throws\n // - auto-lift: residual violations → silent (caller continues)\n const lifted = autoLift(value, against, target)\n const finalValue = lifted.value\n const residual = checkAA(nestedPath, finalValue, against, target)\n if (residual !== null) {\n // Couldn't fully resolve — record a violation. In strict mode, the\n // caller will throw a ContrastError; in auto-lift mode it's metadata.\n violations.push(residual)\n }\n trace.push({\n token: nestedPath,\n rule: lifted.lifted ? `${rule} + auto-lift` : rule,\n inputs,\n output: finalValue,\n ...(lifted.lifted ? { liftedFrom: value } : {}),\n })\n return finalValue\n}\n\n// ── Main derivation ────────────────────────────────────────────────────────\n\n/**\n * Derive a Theme's nested roles from a ColorScheme. Guardrails applied.\n */\nexport function deriveRoles(\n scheme: ColorScheme,\n opts: DeriveOptions,\n): {\n roles: Roles\n mode: \"light\" | \"dark\"\n trace: DerivationStep[]\n violations: ContrastViolation[]\n} {\n const mode = inferMode(scheme, opts.mode)\n const contrast = opts.contrast ?? \"auto-lift\"\n const pins = opts.pins\n const trace: DerivationStep[] = []\n const violations: ContrastViolation[] = []\n\n // Primary seed\n const primary = scheme.primary ?? (mode === \"dark\" ? scheme.brightBlue : scheme.blue)\n const bg = scheme.background\n const fg = scheme.foreground\n\n // Shared function: guard one leaf token through pins + contrast.\n function guard(\n nestedPath: string,\n flatPath: string,\n rule: string,\n inputs: string[],\n value: string,\n against?: string,\n target = WCAG_AA,\n ): string {\n return guardTarget(\n nestedPath,\n flatPath,\n rule,\n inputs,\n value,\n against,\n target,\n contrast,\n pins,\n trace,\n violations,\n )\n }\n\n // ── Accent ───────────────────────────────────────────────────────────────\n const accentBase = guard(\"accent.fg\", \"fg-accent\", \"scheme.primary\", [primary], primary, bg)\n const accentBg = guard(\"accent.bg\", \"bg-accent\", \"scheme.primary\", [primary], primary)\n const deltaA = stateDeltas(accentBg)\n const bgDir = shiftLabel(accentBg)\n const accentHoverBg = guard(\n \"accent.hover.bg\",\n \"bg-accent-hover\",\n `OKLCH ${bgDir} ${deltaA.hover}L on accent.bg`,\n [accentBg],\n shiftL(accentBg, deltaA.hover),\n )\n const accentActiveBg = guard(\n \"accent.active.bg\",\n \"bg-accent-active\",\n `OKLCH ${bgDir} ${deltaA.active}L on accent.bg`,\n [accentBg],\n shiftL(accentBg, deltaA.active),\n )\n const accentFgOn = guard(\n \"accent.fgOn\",\n \"fg-on-accent\",\n \"contrast-pick(scheme.fg/bg/BW)\",\n [accentBg],\n pickFgOn(accentBg, scheme),\n accentBg,\n )\n const accentBorder = guard(\"accent.border\", \"border-accent\", \"= accent.bg\", [accentBg], accentBg)\n // Accent is the canonical link-like role — retains fg.hover / fg.active\n // for interactive text treatments (link hover, clickable accent text).\n const fgDir = shiftLabel(accentBase)\n const accentHoverFg = guard(\n \"accent.hover.fg\",\n \"fg-accent-hover\",\n `OKLCH ${fgDir} ${deltaA.hover}L on accent.fg`,\n [accentBase],\n shiftL(accentBase, deltaA.hover),\n bg,\n )\n const accentActiveFg = guard(\n \"accent.active.fg\",\n \"fg-accent-active\",\n `OKLCH ${fgDir} ${deltaA.active}L on accent.fg`,\n [accentBase],\n shiftL(accentBase, deltaA.active),\n bg,\n )\n\n const accent: AccentRole = {\n fg: accentBase,\n bg: accentBg,\n fgOn: accentFgOn,\n border: accentBorder,\n hover: { fg: accentHoverFg, bg: accentHoverBg },\n active: { fg: accentActiveFg, bg: accentActiveBg },\n }\n\n // ── Info — independent derivation, same seed as accent (D2) ──────────────\n const infoSeed = primary\n const info = buildInteractive(\"info\", infoSeed, scheme, opts, trace, violations)\n\n // ── Success / Warning / Error ────────────────────────────────────────────\n const success = buildInteractive(\"success\", scheme.green, scheme, opts, trace, violations)\n const warning = buildInteractive(\"warning\", scheme.yellow, scheme, opts, trace, violations)\n const error = buildInteractive(\"error\", scheme.red, scheme, opts, trace, violations)\n\n // ── Muted ────────────────────────────────────────────────────────────────\n // Muted is a DEEMPHASIZED role by design — it must NOT hit AA-normal (4.5:1)\n // against bg, or it's no longer muted. We enforce only a 3:1 floor\n // (AA-Large / UI), which is the accessibility minimum for non-body text.\n // Blend at 0.4 toward bg (less muted than 0.5 midpoint) so schemes with\n // low fg/bg contrast still clear the 3:1 floor.\n const mutedFg = guard(\n \"muted.fg\",\n \"fg-muted\",\n \"blend(fg, bg, 0.4)\",\n [fg, bg],\n blend(fg, bg, 0.4),\n bg,\n 3.0,\n )\n const mutedBg = guard(\n \"muted.bg\",\n \"bg-muted\",\n \"blend(bg, fg, 0.08)\",\n [bg, fg],\n blend(bg, fg, 0.08),\n )\n const muted: MutedRole = { fg: mutedFg, bg: mutedBg }\n\n // ── Surface ──────────────────────────────────────────────────────────────\n const surfaceDefault = guard(\n \"surface.default\",\n \"bg-surface-default\",\n \"scheme.background\",\n [bg],\n bg,\n )\n const surfaceSubtle = guard(\n \"surface.subtle\",\n \"bg-surface-subtle\",\n \"blend(bg, fg, 0.05)\",\n [bg, fg],\n blend(bg, fg, 0.05),\n )\n const surfaceRaised = guard(\n \"surface.raised\",\n \"bg-surface-raised\",\n \"blend(bg, fg, 0.08)\",\n [bg, fg],\n blend(bg, fg, 0.08),\n )\n const surfaceOverlay = guard(\n \"surface.overlay\",\n \"bg-surface-overlay\",\n \"blend(bg, fg, 0.12)\",\n [bg, fg],\n blend(bg, fg, 0.12),\n )\n const surfaceHover = guard(\n \"surface.hover\",\n \"bg-surface-hover\",\n \"blend(bg, fg, 0.10)\",\n [bg, fg],\n blend(bg, fg, 0.1),\n )\n const surface: SurfaceRole = {\n default: surfaceDefault,\n subtle: surfaceSubtle,\n raised: surfaceRaised,\n overlay: surfaceOverlay,\n hover: surfaceHover,\n }\n\n // ── Border ───────────────────────────────────────────────────────────────\n const borderDefault = guard(\n \"border.default\",\n \"border-default\",\n \"blend(bg, fg, 0.18)\",\n [bg, fg],\n blend(bg, fg, 0.18),\n )\n const borderFocus = guard(\"border.focus\", \"border-focus\", \"= accent.bg\", [accentBg], accentBg, bg)\n const borderMuted = guard(\n \"border.muted\",\n \"border-muted\",\n \"blend(bg, fg, 0.10)\",\n [bg, fg],\n blend(bg, fg, 0.1),\n )\n const border: BorderRole = { default: borderDefault, focus: borderFocus, muted: borderMuted }\n\n // ── Cursor ───────────────────────────────────────────────────────────────\n const cursor: CursorRole = {\n fg: guard(\n \"cursor.fg\",\n \"fg-cursor\",\n \"scheme.cursorText\",\n [scheme.cursorText],\n scheme.cursorText,\n ),\n bg: guard(\n \"cursor.bg\",\n \"bg-cursor\",\n \"scheme.cursorColor\",\n [scheme.cursorColor],\n scheme.cursorColor,\n ),\n }\n\n const roles: Roles = { accent, info, success, warning, error, muted, surface, border, cursor }\n\n return { roles, mode, trace, violations }\n}\n\n// ── Interactive role builder (shared across info/success/warning/error) ────\n\nfunction buildInteractive(\n name: \"info\" | \"success\" | \"warning\" | \"error\",\n seed: string,\n scheme: ColorScheme,\n opts: DeriveOptions,\n trace: DerivationStep[],\n violations: ContrastViolation[],\n): InteractiveRole {\n const pins = opts.pins\n const contrast = opts.contrast ?? \"auto-lift\"\n const bg = scheme.background\n\n const guard = (\n nestedPath: string,\n flatPath: string,\n rule: string,\n inputs: string[],\n value: string,\n against?: string,\n target = WCAG_AA,\n ): string =>\n guardTarget(\n nestedPath,\n flatPath,\n rule,\n inputs,\n value,\n against,\n target,\n contrast,\n pins,\n trace,\n violations,\n )\n\n const fg = guard(`${name}.fg`, `fg-${name}`, seedRule(name), [seed], seed, bg)\n const roleBg = guard(`${name}.bg`, `bg-${name}`, seedRule(name), [seed], seed)\n const delta = stateDeltas(roleBg)\n const bgDir = shiftLabel(roleBg)\n\n const fgOn = guard(\n `${name}.fgOn`,\n `fg-on-${name}`,\n \"contrast-pick(scheme.fg/bg/BW)\",\n [roleBg],\n pickFgOn(roleBg, scheme),\n roleBg,\n )\n // Status roles: ONLY bg state variants. Text doesn't hover — fg-error\n // is \"this is an error\", not an interactive link. Removing fg.hover /\n // fg.active prevents the algorithmic over-generation of illegible\n // variants on high-L seeds (see catppuccin-frappe warning whiteout).\n const hoverBg = guard(\n `${name}.hover.bg`,\n `bg-${name}-hover`,\n `OKLCH ${bgDir} ${delta.hover}L`,\n [roleBg],\n shiftL(roleBg, delta.hover),\n )\n const activeBg = guard(\n `${name}.active.bg`,\n `bg-${name}-active`,\n `OKLCH ${bgDir} ${delta.active}L`,\n [roleBg],\n shiftL(roleBg, delta.active),\n )\n\n return {\n fg,\n bg: roleBg,\n fgOn,\n hover: { bg: hoverBg },\n active: { bg: activeBg },\n }\n}\n\nfunction seedRule(name: string): string {\n switch (name) {\n case \"info\":\n return \"scheme.primary (info mirrors accent's seed, derived independently)\"\n case \"success\":\n return \"scheme.green\"\n case \"warning\":\n return \"scheme.yellow\"\n case \"error\":\n return \"scheme.red\"\n case \"accent\":\n return \"scheme.primary\"\n default:\n return `scheme.${name}`\n }\n}\n\n// ── Full-theme derivation ──────────────────────────────────────────────────\n\n/**\n * Derive a full Theme (pre-flatten) from a ColorScheme. Throws `ContrastError`\n * in strict mode if any role pair fails WCAG AA. Callers typically wrap this\n * with `flatten()` (from `flatten.ts`) to get the user-facing Theme.\n *\n * Returned Theme is NOT frozen and DOES NOT contain flat keys yet.\n */\nexport function deriveTheme(\n scheme: ColorScheme,\n opts: DeriveOptions = {},\n): Omit<Theme, keyof import(\"./types.ts\").FlatTokens> {\n const { roles, mode, trace, violations } = deriveRoles(scheme, opts)\n\n if ((opts.contrast ?? \"auto-lift\") === \"strict\" && violations.length > 0) {\n throw new ContrastError(violations)\n }\n\n const partial = {\n ...roles,\n ...buildCategoricalHues(scheme),\n name: scheme.name,\n mode,\n variants: DEFAULT_VARIANTS,\n palette: buildPalette(scheme),\n ...(opts.trace ? { derivationTrace: trace } : {}),\n }\n return partial as Omit<Theme, keyof import(\"./types.ts\").FlatTokens>\n}\n\n// ── Apply partial overrides ────────────────────────────────────────────────\n\n/**\n * Merge a DeepPartial<Theme> onto an existing Theme (for `sterling.theme()`).\n * Nested role objects are spread deeply; flat keys are replaced if present.\n */\nexport function mergePartial(base: Theme, patch: DeepPartial<Theme> | undefined): Theme {\n if (!patch) return base\n const out: any = { ...base }\n for (const [k, v] of Object.entries(patch)) {\n if (v === undefined) continue\n const cur = (base as any)[k]\n if (cur && typeof cur === \"object\" && typeof v === \"object\" && !Array.isArray(v)) {\n out[k] = { ...cur, ...(v as object) }\n // Second-level deep (for hover/active under roles)\n for (const [k2, v2] of Object.entries(v as object)) {\n if (\n v2 &&\n typeof v2 === \"object\" &&\n !Array.isArray(v2) &&\n cur[k2] &&\n typeof cur[k2] === \"object\"\n ) {\n out[k][k2] = { ...cur[k2], ...(v2 as object) }\n }\n }\n } else {\n out[k] = v\n }\n }\n return out as Theme\n}\n","/**\n * Sterling flat-token inlining — internal helper that merges Sterling flat\n * tokens onto a legacy Theme. Replaces the removed public `augmentWithSterlingFlat`.\n *\n * Public consumers don't call this directly. It's invoked implicitly at theme\n * construction by:\n * - packages/theme/src/schemes/index.ts (every shipped default theme)\n * - packages/ag-term/src/pipeline/state.ts (pipeline fallback theme)\n *\n * Behavior mirrors the old `augmentWithSterlingFlat` exactly:\n * - Preserves every legacy Theme field unchanged\n * - Writes Sterling flat tokens (`bg-accent`, `fg-on-accent`, `border-focus`, …)\n * only when the key isn't already present as a string\n * - Not frozen (legacy consumers expect mutability in a few corners)\n *\n * A ColorScheme can be supplied for full fidelity. When omitted, Sterling\n * derives from a ColorScheme reconstructed from the theme's own palette —\n * lossy for ANSI slot colors but sufficient for Sterling's 6-slot surface.\n *\n * This file is NOT exported from the `@silvery/theme` barrel.\n */\n\nimport type { ColorScheme, Theme as LegacyTheme } from \"@silvery/ansi\"\nimport { deriveRoles } from \"./derive.ts\"\nimport type { FlatToken } from \"./types.ts\"\n\n/**\n * Legacy Theme + Sterling flat tokens on the same object. Kept as a local\n * type alias; the public barrel no longer re-exports this shape.\n */\nexport type InlinedTheme = LegacyTheme & { [K in FlatToken]: string }\n\n/**\n * Build a ColorScheme-shaped input from a legacy Theme when the original\n * scheme isn't available (hand-crafted themes, picker round-trips).\n */\nfunction schemeFromLegacy(theme: LegacyTheme): ColorScheme {\n const palette = theme.palette ?? []\n return {\n name: theme.name,\n dark: isDark(theme.bg),\n primary: theme.primary,\n black: palette[0] ?? \"#000000\",\n red: palette[1] ?? theme.error,\n green: palette[2] ?? theme.success,\n yellow: palette[3] ?? theme.warning,\n blue: palette[4] ?? theme.primary,\n magenta: palette[5] ?? theme.accent,\n cyan: palette[6] ?? theme.info,\n white: palette[7] ?? theme.fg,\n brightBlack: palette[8] ?? theme.muted,\n brightRed: palette[9] ?? theme.error,\n brightGreen: palette[10] ?? theme.success,\n brightYellow: palette[11] ?? theme.warning,\n brightBlue: palette[12] ?? theme.primary,\n brightMagenta: palette[13] ?? theme.accent,\n brightCyan: palette[14] ?? theme.info,\n brightWhite: palette[15] ?? theme.fg,\n foreground: theme.fg,\n background: theme.bg,\n cursorColor: theme.cursorbg,\n cursorText: theme.cursor,\n selectionBackground: theme.selectionbg,\n selectionForeground: theme.selection,\n }\n}\n\n/**\n * Quick luminance check — matches relativeLuminance threshold (0.5). Avoids\n * pulling in @silvery/color for a single boolean.\n */\nfunction isDark(hex: string): boolean {\n const m = /^#?([0-9a-f]{6})$/i.exec(hex)\n if (!m?.[1]) return true\n const n = parseInt(m[1], 16)\n const r = (n >> 16) & 0xff\n const g = (n >> 8) & 0xff\n const b = n & 0xff\n // Rec. 709 luma approximation (sufficient for this threshold).\n const luma = (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255\n return luma < 0.5\n}\n\n/**\n * Write Sterling flat tokens onto a legacy Theme in-place and return the\n * augmented object. Mirrors the old `augmentWithSterlingFlat` semantics:\n * only sets a key if it's not already a string on the theme.\n *\n * When `scheme` is provided, Sterling derives directly from it (full fidelity).\n * Otherwise a scheme is reconstructed from the theme's palette (lossy on ANSI\n * slots but fine for Sterling's derivation surface).\n */\nexport function inlineSterlingTokens(theme: LegacyTheme, scheme?: ColorScheme): InlinedTheme {\n const src = scheme ?? schemeFromLegacy(theme)\n const { roles } = deriveRoles(src, { contrast: \"auto-lift\" })\n\n const out: Record<string, unknown> = { ...theme }\n\n const setIfAbsent = (key: string, value: string): void => {\n if (!(key in out) || typeof out[key] !== \"string\") {\n out[key] = value\n }\n }\n\n // Accent — link-like interactive text: both fg and bg state variants\n const accent = roles.accent\n if (accent) {\n setIfAbsent(\"fg-accent\", accent.fg)\n setIfAbsent(\"bg-accent\", accent.bg)\n setIfAbsent(\"fg-on-accent\", accent.fgOn)\n for (const state of [\"hover\", \"active\"] as const) {\n const s = accent[state]\n if (!s) continue\n setIfAbsent(`fg-accent-${state}`, s.fg)\n setIfAbsent(`bg-accent-${state}`, s.bg)\n }\n }\n\n // Status roles — only bg state variants (text doesn't hover)\n for (const role of [\"info\", \"success\", \"warning\", \"error\"] as const) {\n const r = roles[role]\n if (!r) continue\n setIfAbsent(`fg-${role}`, r.fg)\n setIfAbsent(`bg-${role}`, r.bg)\n setIfAbsent(`fg-on-${role}`, r.fgOn)\n for (const state of [\"hover\", \"active\"] as const) {\n const s = (r as { hover?: { bg: string }; active?: { bg: string } })[state]\n if (!s) continue\n setIfAbsent(`bg-${role}-${state}`, s.bg)\n }\n }\n\n // Accent border\n if (roles.accent && \"border\" in roles.accent) {\n setIfAbsent(\"border-accent\", roles.accent.border)\n }\n\n // Surface levels\n const surf = roles.surface\n if (surf) {\n setIfAbsent(\"bg-surface-default\", surf.default)\n setIfAbsent(\"bg-surface-subtle\", surf.subtle)\n setIfAbsent(\"bg-surface-raised\", surf.raised)\n setIfAbsent(\"bg-surface-overlay\", surf.overlay)\n setIfAbsent(\"bg-surface-hover\", surf.hover)\n }\n\n const b = roles.border\n if (b) {\n setIfAbsent(\"border-default\", b.default)\n setIfAbsent(\"border-focus\", b.focus)\n setIfAbsent(\"border-muted\", b.muted)\n }\n\n const c = roles.cursor\n if (c) {\n setIfAbsent(\"fg-cursor\", c.fg)\n setIfAbsent(\"bg-cursor\", c.bg)\n }\n\n const m = roles.muted\n if (m) {\n setIfAbsent(\"fg-muted\", m.fg)\n setIfAbsent(\"bg-muted\", m.bg)\n }\n\n return out as unknown as InlinedTheme\n}\n","/**\n * Catppuccin palettes — the most popular 4-flavor theme system.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Catppuccin Mocha — the classic dark variant. */\nexport const catppuccinMocha: ColorScheme = {\n name: \"catppuccin-mocha\",\n dark: true,\n black: \"#11111B\",\n red: \"#F38BA8\",\n green: \"#A6E3A1\",\n yellow: \"#F9E2AF\",\n blue: \"#89B4FA\",\n magenta: \"#CBA6F7\",\n cyan: \"#94E2D5\",\n white: \"#A6ADC8\",\n brightBlack: \"#313244\",\n brightRed: \"#FAB387\",\n brightGreen: brighten(\"#A6E3A1\", 0.15),\n brightYellow: brighten(\"#F9E2AF\", 0.15),\n brightBlue: brighten(\"#89B4FA\", 0.15),\n brightMagenta: \"#F5C2E7\",\n brightCyan: brighten(\"#94E2D5\", 0.15),\n brightWhite: \"#CDD6F4\",\n foreground: \"#CDD6F4\",\n background: \"#1E1E2E\",\n cursorColor: \"#CDD6F4\",\n cursorText: \"#1E1E2E\",\n selectionBackground: \"#6C7086\",\n selectionForeground: \"#CDD6F4\",\n}\n\n/** Catppuccin Frappe — muted dark variant. */\nexport const catppuccinFrappe: ColorScheme = {\n name: \"catppuccin-frappe\",\n dark: true,\n black: \"#232634\",\n red: \"#E78284\",\n green: \"#A6D189\",\n yellow: \"#E5C890\",\n blue: \"#8CAAEE\",\n magenta: \"#CA9EE6\",\n cyan: \"#81C8BE\",\n white: \"#A5ADCE\",\n brightBlack: \"#414559\",\n brightRed: \"#EF9F76\",\n brightGreen: brighten(\"#A6D189\", 0.15),\n brightYellow: brighten(\"#E5C890\", 0.15),\n brightBlue: brighten(\"#8CAAEE\", 0.15),\n brightMagenta: \"#F4B8E4\",\n brightCyan: brighten(\"#81C8BE\", 0.15),\n brightWhite: \"#C6D0F5\",\n foreground: \"#C6D0F5\",\n background: \"#303446\",\n cursorColor: \"#C6D0F5\",\n cursorText: \"#303446\",\n selectionBackground: \"#737994\",\n selectionForeground: \"#C6D0F5\",\n}\n\n/** Catppuccin Macchiato — warm dark variant. */\nexport const catppuccinMacchiato: ColorScheme = {\n name: \"catppuccin-macchiato\",\n dark: true,\n black: \"#181926\",\n red: \"#ED8796\",\n green: \"#A6DA95\",\n yellow: \"#EED49F\",\n blue: \"#8AADF4\",\n magenta: \"#C6A0F6\",\n cyan: \"#8BD5CA\",\n white: \"#A5ADCB\",\n brightBlack: \"#363A4F\",\n brightRed: \"#F5A97F\",\n brightGreen: brighten(\"#A6DA95\", 0.15),\n brightYellow: brighten(\"#EED49F\", 0.15),\n brightBlue: brighten(\"#8AADF4\", 0.15),\n brightMagenta: \"#F5BDE6\",\n brightCyan: brighten(\"#8BD5CA\", 0.15),\n brightWhite: \"#CAD3F5\",\n foreground: \"#CAD3F5\",\n background: \"#24273A\",\n cursorColor: \"#CAD3F5\",\n cursorText: \"#24273A\",\n selectionBackground: \"#6E738D\",\n selectionForeground: \"#CAD3F5\",\n}\n\n/** Catppuccin Latte — the light variant. */\nexport const catppuccinLatte: ColorScheme = {\n name: \"catppuccin-latte\",\n dark: false,\n black: \"#DCE0E8\",\n red: \"#D20F39\",\n green: \"#40A02B\",\n yellow: \"#DF8E1D\",\n blue: \"#1E66F5\",\n magenta: \"#8839EF\",\n cyan: \"#179299\",\n white: \"#6C6F85\",\n brightBlack: \"#CCD0DA\",\n brightRed: \"#FE640B\",\n brightGreen: brighten(\"#40A02B\", 0.15),\n brightYellow: brighten(\"#DF8E1D\", 0.15),\n brightBlue: brighten(\"#1E66F5\", 0.15),\n brightMagenta: \"#EA76CB\",\n brightCyan: brighten(\"#179299\", 0.15),\n brightWhite: \"#4C4F69\",\n foreground: \"#4C4F69\",\n background: \"#EFF1F5\",\n cursorColor: \"#4C4F69\",\n cursorText: \"#EFF1F5\",\n selectionBackground: \"#9CA0B0\",\n selectionForeground: \"#4C4F69\",\n}\n","/**\n * Nord palette — Arctic, north-bluish clean.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Nord — the classic dark arctic theme. */\nexport const nord: ColorScheme = {\n name: \"nord\",\n dark: true,\n black: \"#2E3440\",\n red: \"#BF616A\",\n green: \"#A3BE8C\",\n yellow: \"#EBCB8B\",\n blue: \"#5E81AC\",\n magenta: \"#B48EAD\",\n cyan: \"#8FBCBB\",\n white: \"#D8DEE9\",\n brightBlack: \"#3B4252\",\n brightRed: \"#D08770\",\n brightGreen: brighten(\"#A3BE8C\", 0.15),\n brightYellow: brighten(\"#EBCB8B\", 0.15),\n brightBlue: brighten(\"#5E81AC\", 0.15),\n brightMagenta: \"#B48EAD\",\n brightCyan: brighten(\"#8FBCBB\", 0.15),\n brightWhite: \"#ECEFF4\",\n foreground: \"#ECEFF4\",\n background: \"#2E3440\",\n cursorColor: \"#ECEFF4\",\n cursorText: \"#2E3440\",\n selectionBackground: \"#4C566A\",\n selectionForeground: \"#ECEFF4\",\n}\n","/**\n * Dracula palette — dark theme with vibrant accents.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Dracula — vibrant dark theme. */\nexport const dracula: ColorScheme = {\n name: \"dracula\",\n dark: true,\n black: \"#21222C\",\n red: \"#FF5555\",\n green: \"#50FA7B\",\n yellow: \"#F1FA8C\",\n blue: \"#BD93F9\",\n magenta: \"#BD93F9\",\n cyan: \"#8BE9FD\",\n white: \"#6272A4\",\n brightBlack: \"#44475A\",\n brightRed: \"#FFB86C\",\n brightGreen: brighten(\"#50FA7B\", 0.15),\n brightYellow: brighten(\"#F1FA8C\", 0.15),\n brightBlue: brighten(\"#BD93F9\", 0.15),\n brightMagenta: \"#FF79C6\",\n brightCyan: brighten(\"#8BE9FD\", 0.15),\n brightWhite: \"#F8F8F2\",\n foreground: \"#F8F8F2\",\n background: \"#282A36\",\n cursorColor: \"#F8F8F2\",\n cursorText: \"#282A36\",\n selectionBackground: \"#6272A4\",\n selectionForeground: \"#F8F8F2\",\n}\n","/**\n * Solarized palettes — precision colors for machines and people.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Solarized Dark — Ethan Schoonover's classic dark variant. */\nexport const solarizedDark: ColorScheme = {\n name: \"solarized-dark\",\n dark: true,\n black: \"#002B36\",\n red: \"#DC322F\",\n green: \"#859900\",\n yellow: \"#B58900\",\n blue: \"#268BD2\",\n magenta: \"#6C71C4\",\n cyan: \"#2AA198\",\n white: \"#839496\",\n brightBlack: \"#586E75\",\n brightRed: \"#CB4B16\",\n brightGreen: brighten(\"#859900\", 0.15),\n brightYellow: brighten(\"#B58900\", 0.15),\n brightBlue: brighten(\"#268BD2\", 0.15),\n brightMagenta: \"#D33682\",\n brightCyan: brighten(\"#2AA198\", 0.15),\n brightWhite: \"#FDF6E3\",\n foreground: \"#FDF6E3\",\n background: \"#073642\",\n cursorColor: \"#FDF6E3\",\n cursorText: \"#073642\",\n selectionBackground: \"#657B83\",\n selectionForeground: \"#FDF6E3\",\n}\n\n/** Solarized Light — Ethan Schoonover's classic light variant. */\nexport const solarizedLight: ColorScheme = {\n name: \"solarized-light\",\n dark: false,\n black: \"#FDF6E3\",\n red: \"#DC322F\",\n green: \"#859900\",\n yellow: \"#B58900\",\n blue: \"#268BD2\",\n magenta: \"#6C71C4\",\n cyan: \"#2AA198\",\n white: \"#657B83\",\n brightBlack: \"#DDD6C1\",\n brightRed: \"#CB4B16\",\n brightGreen: brighten(\"#859900\", 0.15),\n brightYellow: brighten(\"#B58900\", 0.15),\n brightBlue: brighten(\"#268BD2\", 0.15),\n brightMagenta: \"#D33682\",\n brightCyan: brighten(\"#2AA198\", 0.15),\n brightWhite: \"#073642\",\n foreground: \"#073642\",\n background: \"#EEE8D5\",\n cursorColor: \"#073642\",\n cursorText: \"#EEE8D5\",\n selectionBackground: \"#93A1A1\",\n selectionForeground: \"#073642\",\n}\n","/**\n * Tokyo Night palette — a clean dark theme inspired by Tokyo city lights.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Tokyo Night — the default dark variant. */\nexport const tokyoNight: ColorScheme = {\n name: \"tokyo-night\",\n dark: true,\n black: \"#1A1B26\",\n red: \"#F7768E\",\n green: \"#9ECE6A\",\n yellow: \"#E0AF68\",\n blue: \"#7AA2F7\",\n magenta: \"#BB9AF7\",\n cyan: \"#73DACA\",\n white: \"#A9B1D6\",\n brightBlack: \"#292E42\",\n brightRed: \"#FF9E64\",\n brightGreen: brighten(\"#9ECE6A\", 0.15),\n brightYellow: brighten(\"#E0AF68\", 0.15),\n brightBlue: brighten(\"#7AA2F7\", 0.15),\n brightMagenta: \"#FF007C\",\n brightCyan: brighten(\"#73DACA\", 0.15),\n brightWhite: \"#C0CAF5\",\n foreground: \"#C0CAF5\",\n background: \"#24283B\",\n cursorColor: \"#C0CAF5\",\n cursorText: \"#24283B\",\n selectionBackground: \"#545C7E\",\n selectionForeground: \"#C0CAF5\",\n}\n\n/** Tokyo Night Storm — slightly lighter background. */\nexport const tokyoNightStorm: ColorScheme = {\n name: \"tokyo-night-storm\",\n dark: true,\n black: \"#1F2335\",\n red: \"#F7768E\",\n green: \"#9ECE6A\",\n yellow: \"#E0AF68\",\n blue: \"#7AA2F7\",\n magenta: \"#BB9AF7\",\n cyan: \"#73DACA\",\n white: \"#A9B1D6\",\n brightBlack: \"#292E42\",\n brightRed: \"#FF9E64\",\n brightGreen: brighten(\"#9ECE6A\", 0.15),\n brightYellow: brighten(\"#E0AF68\", 0.15),\n brightBlue: brighten(\"#7AA2F7\", 0.15),\n brightMagenta: \"#FF007C\",\n brightCyan: brighten(\"#73DACA\", 0.15),\n brightWhite: \"#C0CAF5\",\n foreground: \"#C0CAF5\",\n background: \"#24283B\",\n cursorColor: \"#C0CAF5\",\n cursorText: \"#24283B\",\n selectionBackground: \"#545C7E\",\n selectionForeground: \"#C0CAF5\",\n}\n\n/** Tokyo Night Day — the light variant. */\nexport const tokyoNightDay: ColorScheme = {\n name: \"tokyo-night-day\",\n dark: false,\n black: \"#E1E2E7\",\n red: \"#F52A65\",\n green: \"#587539\",\n yellow: \"#8C6C3E\",\n blue: \"#2E7DE9\",\n magenta: \"#9854F1\",\n cyan: \"#118C74\",\n white: \"#6172B0\",\n brightBlack: \"#C4C5CB\",\n brightRed: \"#B15C00\",\n brightGreen: brighten(\"#587539\", 0.15),\n brightYellow: brighten(\"#8C6C3E\", 0.15),\n brightBlue: brighten(\"#2E7DE9\", 0.15),\n brightMagenta: \"#F52A65\",\n brightCyan: brighten(\"#118C74\", 0.15),\n brightWhite: \"#3760BF\",\n foreground: \"#3760BF\",\n background: \"#D5D6DB\",\n cursorColor: \"#3760BF\",\n cursorText: \"#D5D6DB\",\n selectionBackground: \"#9699A3\",\n selectionForeground: \"#3760BF\",\n}\n","/**\n * One Dark palette — Atom's iconic dark theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** One Dark — the classic Atom editor theme. */\nexport const oneDark: ColorScheme = {\n name: \"one-dark\",\n dark: true,\n black: \"#21252B\",\n red: \"#E06C75\",\n green: \"#98C379\",\n yellow: \"#E5C07B\",\n blue: \"#61AFEF\",\n magenta: \"#C678DD\",\n cyan: \"#56B6C2\",\n white: \"#ABB2BF\",\n brightBlack: \"#2C313A\",\n brightRed: \"#D19A66\",\n brightGreen: brighten(\"#98C379\", 0.15),\n brightYellow: brighten(\"#E5C07B\", 0.15),\n brightBlue: brighten(\"#61AFEF\", 0.15),\n brightMagenta: \"#E06C75\",\n brightCyan: brighten(\"#56B6C2\", 0.15),\n brightWhite: \"#ABB2BF\",\n foreground: \"#ABB2BF\",\n background: \"#282C34\",\n cursorColor: \"#ABB2BF\",\n cursorText: \"#282C34\",\n selectionBackground: \"#5C6370\",\n selectionForeground: \"#ABB2BF\",\n}\n","/**\n * Gruvbox palettes — retro groove color scheme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Gruvbox Dark — warm retro dark theme. */\nexport const gruvboxDark: ColorScheme = {\n name: \"gruvbox-dark\",\n dark: true,\n black: \"#1D2021\",\n red: \"#FB4934\",\n green: \"#B8BB26\",\n yellow: \"#FABD2F\",\n blue: \"#83A598\",\n magenta: \"#D3869B\",\n cyan: \"#8EC07C\",\n white: \"#BDAE93\",\n brightBlack: \"#3C3836\",\n brightRed: \"#FE8019\",\n brightGreen: brighten(\"#B8BB26\", 0.15),\n brightYellow: brighten(\"#FABD2F\", 0.15),\n brightBlue: brighten(\"#83A598\", 0.15),\n brightMagenta: \"#D3869B\",\n brightCyan: brighten(\"#8EC07C\", 0.15),\n brightWhite: \"#EBDBB2\",\n foreground: \"#EBDBB2\",\n background: \"#282828\",\n cursorColor: \"#EBDBB2\",\n cursorText: \"#282828\",\n selectionBackground: \"#665C54\",\n selectionForeground: \"#EBDBB2\",\n}\n\n/** Gruvbox Light — warm retro light theme. */\nexport const gruvboxLight: ColorScheme = {\n name: \"gruvbox-light\",\n dark: false,\n black: \"#F9F5D7\",\n red: \"#CC241D\",\n green: \"#98971A\",\n yellow: \"#D79921\",\n blue: \"#458588\",\n magenta: \"#B16286\",\n cyan: \"#689D6A\",\n white: \"#665C54\",\n brightBlack: \"#EBDBB2\",\n brightRed: \"#D65D0E\",\n brightGreen: brighten(\"#98971A\", 0.15),\n brightYellow: brighten(\"#D79921\", 0.15),\n brightBlue: brighten(\"#458588\", 0.15),\n brightMagenta: \"#B16286\",\n brightCyan: brighten(\"#689D6A\", 0.15),\n brightWhite: \"#3C3836\",\n foreground: \"#3C3836\",\n background: \"#FBF1C7\",\n cursorColor: \"#3C3836\",\n cursorText: \"#FBF1C7\",\n selectionBackground: \"#A89984\",\n selectionForeground: \"#3C3836\",\n}\n","/**\n * Rosé Pine palettes — all natural pine, faux fur and a bit of soho vibes.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Rosé Pine — the main dark variant. */\nexport const rosePine: ColorScheme = {\n name: \"rose-pine\",\n dark: true,\n black: \"#191724\",\n red: \"#EB6F92\",\n green: \"#31748F\",\n yellow: \"#F6C177\",\n blue: \"#3E8FB0\",\n magenta: \"#C4A7E7\",\n cyan: \"#9CCFD8\",\n white: \"#908CAA\",\n brightBlack: \"#26233A\",\n brightRed: \"#EA9A97\",\n brightGreen: brighten(\"#31748F\", 0.15),\n brightYellow: brighten(\"#F6C177\", 0.15),\n brightBlue: brighten(\"#3E8FB0\", 0.15),\n brightMagenta: \"#EBBCBA\",\n brightCyan: brighten(\"#9CCFD8\", 0.15),\n brightWhite: \"#E0DEF4\",\n foreground: \"#E0DEF4\",\n background: \"#1F1D2E\",\n cursorColor: \"#E0DEF4\",\n cursorText: \"#1F1D2E\",\n selectionBackground: \"#6E6A86\",\n selectionForeground: \"#E0DEF4\",\n}\n\n/** Rosé Pine Moon — slightly lighter dark variant. */\nexport const rosePineMoon: ColorScheme = {\n name: \"rose-pine-moon\",\n dark: true,\n black: \"#232136\",\n red: \"#EB6F92\",\n green: \"#3E8FB0\",\n yellow: \"#F6C177\",\n blue: \"#3E8FB0\",\n magenta: \"#C4A7E7\",\n cyan: \"#9CCFD8\",\n white: \"#908CAA\",\n brightBlack: \"#393552\",\n brightRed: \"#EA9A97\",\n brightGreen: brighten(\"#3E8FB0\", 0.15),\n brightYellow: brighten(\"#F6C177\", 0.15),\n brightBlue: brighten(\"#3E8FB0\", 0.15),\n brightMagenta: \"#EA9A97\",\n brightCyan: brighten(\"#9CCFD8\", 0.15),\n brightWhite: \"#E0DEF4\",\n foreground: \"#E0DEF4\",\n background: \"#2A273F\",\n cursorColor: \"#E0DEF4\",\n cursorText: \"#2A273F\",\n selectionBackground: \"#6E6A86\",\n selectionForeground: \"#E0DEF4\",\n}\n\n/** Rosé Pine Dawn — the light variant. */\nexport const rosePineDawn: ColorScheme = {\n name: \"rose-pine-dawn\",\n dark: false,\n black: \"#FAF4ED\",\n red: \"#B4637A\",\n green: \"#286983\",\n yellow: \"#EA9D34\",\n blue: \"#286983\",\n magenta: \"#907AA9\",\n cyan: \"#56949F\",\n white: \"#797593\",\n brightBlack: \"#F2E9E1\",\n brightRed: \"#D7827E\",\n brightGreen: brighten(\"#286983\", 0.15),\n brightYellow: brighten(\"#EA9D34\", 0.15),\n brightBlue: brighten(\"#286983\", 0.15),\n brightMagenta: \"#D7827E\",\n brightCyan: brighten(\"#56949F\", 0.15),\n brightWhite: \"#575279\",\n foreground: \"#575279\",\n background: \"#FFFAF3\",\n cursorColor: \"#575279\",\n cursorText: \"#FFFAF3\",\n selectionBackground: \"#9893A5\",\n selectionForeground: \"#575279\",\n}\n","/**\n * Kanagawa palettes — inspired by Katsushika Hokusai's famous paintings.\n * Source: https://github.com/rebelot/kanagawa.nvim (palette.lua)\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Kanagawa Wave — the default dark variant, inspired by \"The Great Wave off Kanagawa\". */\nexport const kanagawaWave: ColorScheme = {\n name: \"kanagawa-wave\",\n dark: true,\n black: \"#16161D\", // sumiInk0\n red: \"#C34043\", // autumnRed\n green: \"#98BB6C\", // springGreen\n yellow: \"#E6C384\", // carpYellow\n blue: \"#7E9CD8\", // crystalBlue\n magenta: \"#957FB8\", // oniViolet\n cyan: \"#6A9589\", // waveAqua1\n white: \"#727169\", // fujiGray\n brightBlack: \"#2A2A37\", // sumiInk4\n brightRed: \"#FFA066\", // surimiOrange\n brightGreen: brighten(\"#98BB6C\", 0.15),\n brightYellow: brighten(\"#E6C384\", 0.15),\n brightBlue: brighten(\"#7E9CD8\", 0.15),\n brightMagenta: \"#D27E99\", // sakuraPink\n brightCyan: brighten(\"#6A9589\", 0.15),\n brightWhite: \"#DCD7BA\", // fujiWhite\n foreground: \"#DCD7BA\", // fujiWhite\n background: \"#1F1F28\", // sumiInk3\n cursorColor: \"#DCD7BA\", // fujiWhite\n cursorText: \"#1F1F28\", // sumiInk3\n selectionBackground: \"#54546D\", // sumiInk6\n selectionForeground: \"#DCD7BA\", // fujiWhite\n}\n\n/** Kanagawa Dragon — a muted, earthy dark variant. */\nexport const kanagawaDragon: ColorScheme = {\n name: \"kanagawa-dragon\",\n dark: true,\n black: \"#0d0c0c\", // dragonBlack0\n red: \"#c4746e\", // dragonRed\n green: \"#87a987\", // dragonGreen\n yellow: \"#c4b28a\", // dragonYellow\n blue: \"#8ba4b0\", // dragonBlue2\n magenta: \"#8992a7\", // dragonViolet\n cyan: \"#8ea4a2\", // dragonAqua\n white: \"#737c73\", // dragonAsh\n brightBlack: \"#282727\", // dragonBlack4\n brightRed: \"#b6927b\", // dragonOrange\n brightGreen: brighten(\"#87a987\", 0.15),\n brightYellow: brighten(\"#c4b28a\", 0.15),\n brightBlue: brighten(\"#8ba4b0\", 0.15),\n brightMagenta: \"#a292a3\", // dragonPink\n brightCyan: brighten(\"#8ea4a2\", 0.15),\n brightWhite: \"#c5c9c5\", // dragonWhite\n foreground: \"#c5c9c5\", // dragonWhite\n background: \"#181616\", // dragonBlack3\n cursorColor: \"#c5c9c5\", // dragonWhite\n cursorText: \"#181616\", // dragonBlack3\n selectionBackground: \"#625e5a\", // dragonBlack6\n selectionForeground: \"#c5c9c5\", // dragonWhite\n}\n\n/** Kanagawa Lotus — the light variant, inspired by lotus flowers. */\nexport const kanagawaLotus: ColorScheme = {\n name: \"kanagawa-lotus\",\n dark: false,\n black: \"#e5ddb0\", // lotusWhite2\n red: \"#c84053\", // lotusRed\n green: \"#6f894e\", // lotusGreen\n yellow: \"#de9800\", // lotusYellow3\n blue: \"#4d699b\", // lotusBlue4\n magenta: \"#624c83\", // lotusViolet4\n cyan: \"#597b75\", // lotusAqua\n white: \"#716e61\", // lotusGray2\n brightBlack: \"#dcd5ac\", // lotusWhite1\n brightRed: \"#cc6d00\", // lotusOrange\n brightGreen: brighten(\"#6f894e\", 0.15),\n brightYellow: brighten(\"#de9800\", 0.15),\n brightBlue: brighten(\"#4d699b\", 0.15),\n brightMagenta: \"#b35b79\", // lotusPink\n brightCyan: brighten(\"#597b75\", 0.15),\n brightWhite: \"#545464\", // lotusInk1\n foreground: \"#545464\", // lotusInk1\n background: \"#f2ecbc\", // lotusWhite3\n cursorColor: \"#545464\", // lotusInk1\n cursorText: \"#f2ecbc\", // lotusWhite3\n selectionBackground: \"#8a8980\", // lotusGray3\n selectionForeground: \"#545464\", // lotusInk1\n}\n","/**\n * Everforest palettes — a green-toned comfortable color scheme.\n * Source: https://github.com/sainnhe/everforest (medium background variants)\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Everforest Dark — warm green-based dark theme (medium background). */\nexport const everforestDark: ColorScheme = {\n name: \"everforest-dark\",\n dark: true,\n black: \"#232a2e\", // bg_dim\n red: \"#e67e80\",\n green: \"#a7c080\",\n yellow: \"#dbbc7f\",\n blue: \"#7fbbb3\",\n magenta: \"#d699b6\",\n cyan: \"#83c092\", // aqua\n white: \"#859289\", // grey1\n brightBlack: \"#343f44\", // bg1\n brightRed: \"#e69875\",\n brightGreen: brighten(\"#a7c080\", 0.15),\n brightYellow: brighten(\"#dbbc7f\", 0.15),\n brightBlue: brighten(\"#7fbbb3\", 0.15),\n brightMagenta: \"#e67e80\", // everforest has no distinct pink; reuse red\n brightCyan: brighten(\"#83c092\", 0.15),\n brightWhite: \"#d3c6aa\", // fg\n foreground: \"#d3c6aa\", // fg\n background: \"#2d353b\", // bg0\n cursorColor: \"#d3c6aa\", // fg\n cursorText: \"#2d353b\", // bg0\n selectionBackground: \"#4f585e\", // bg4\n selectionForeground: \"#d3c6aa\", // fg\n}\n\n/** Everforest Light — warm green-based light theme (medium background). */\nexport const everforestLight: ColorScheme = {\n name: \"everforest-light\",\n dark: false,\n black: \"#efebd4\", // bg_dim\n red: \"#f85552\",\n green: \"#8da101\",\n yellow: \"#dfa000\",\n blue: \"#3a94c5\",\n magenta: \"#df69ba\",\n cyan: \"#35a77c\", // aqua\n white: \"#939f91\", // grey1\n brightBlack: \"#f4f0d9\", // bg1\n brightRed: \"#f57d26\",\n brightGreen: brighten(\"#8da101\", 0.15),\n brightYellow: brighten(\"#dfa000\", 0.15),\n brightBlue: brighten(\"#3a94c5\", 0.15),\n brightMagenta: \"#f85552\", // everforest has no distinct pink; reuse red\n brightCyan: brighten(\"#35a77c\", 0.15),\n brightWhite: \"#5c6a72\", // fg\n foreground: \"#5c6a72\", // fg\n background: \"#fdf6e3\", // bg0\n cursorColor: \"#5c6a72\", // fg\n cursorText: \"#fdf6e3\", // bg0\n selectionBackground: \"#e0dcc7\", // bg4\n selectionForeground: \"#5c6a72\", // fg\n}\n","/**\n * Monokai palettes — the iconic syntax highlighting theme.\n * Classic source: Sublime Text default (Wimer Hazenberg, 2006)\n * Pro source: https://monokai.pro/ (default \"Pro\" filter)\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Monokai Classic — the original Sublime Text Monokai colors. */\nexport const monokai: ColorScheme = {\n name: \"monokai\",\n dark: true,\n black: \"#1a1a1a\", // darker than bg\n red: \"#F92672\", // keywords/pink-red\n green: \"#A6E22E\", // functions\n yellow: \"#E6DB74\", // strings\n blue: \"#66D9EF\", // classic Monokai has no distinct blue; cyan doubles\n magenta: \"#AE81FF\", // numbers/constants\n cyan: \"#66D9EF\", // types/builtins (cyan)\n white: \"#a59f85\", // muted text (between comments and fg)\n brightBlack: \"#3e3d32\", // line highlight\n brightRed: \"#FD971F\", // parameters/constants\n brightGreen: brighten(\"#A6E22E\", 0.15),\n brightYellow: brighten(\"#E6DB74\", 0.15),\n brightBlue: brighten(\"#66D9EF\", 0.15),\n brightMagenta: \"#F92672\", // classic Monokai pink == red\n brightCyan: brighten(\"#66D9EF\", 0.15),\n brightWhite: \"#F8F8F2\", // foreground\n foreground: \"#F8F8F2\", // foreground\n background: \"#272822\", // classic Monokai background\n cursorColor: \"#F8F8F2\", // foreground\n cursorText: \"#272822\", // classic Monokai background\n selectionBackground: \"#75715E\", // comments\n selectionForeground: \"#F8F8F2\", // foreground\n}\n\n/** Monokai Pro — the modern, refined Monokai with balanced colors. */\nexport const monokaiPro: ColorScheme = {\n name: \"monokai-pro\",\n dark: true,\n black: \"#221f22\", // darker than base\n red: \"#ff6188\", // keywords\n green: \"#a9dc76\", // functions\n yellow: \"#ffd866\", // strings/types\n blue: \"#78dce8\", // Pro shares cyan as blue\n magenta: \"#ab9df2\", // decorative/numbers\n cyan: \"#78dce8\", // cyan — support/builtins\n white: \"#939293\", // secondary text\n brightBlack: \"#403e41\", // raised surfaces\n brightRed: \"#fc9867\", // constants/parameters\n brightGreen: brighten(\"#a9dc76\", 0.15),\n brightYellow: brighten(\"#ffd866\", 0.15),\n brightBlue: brighten(\"#78dce8\", 0.15),\n brightMagenta: \"#ff6188\", // Pro pink == red\n brightCyan: brighten(\"#78dce8\", 0.15),\n brightWhite: \"#fcfcfa\", // foreground\n foreground: \"#fcfcfa\", // foreground\n background: \"#2d2a2e\", // editor background\n cursorColor: \"#fcfcfa\", // foreground\n cursorText: \"#2d2a2e\", // editor background\n selectionBackground: \"#727072\", // borders/muted chrome\n selectionForeground: \"#fcfcfa\", // foreground\n}\n","/**\n * Snazzy palette — elegant dark theme with vivid colors.\n * Source: https://github.com/sindresorhus/hyper-snazzy\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Snazzy — clean dark theme by Sindre Sorhus. */\nexport const snazzy: ColorScheme = {\n name: \"snazzy\",\n dark: true,\n black: \"#222430\", // border color (deepest)\n red: \"#ff5c57\",\n green: \"#5af78e\",\n yellow: \"#f3f99d\",\n blue: \"#57c7ff\",\n magenta: \"#b267e6\", // interpolated purple (between magenta and blue)\n cyan: \"#9aedfe\", // cyan\n white: \"#97979b\", // cursor/secondary text\n brightBlack: \"#34353e\", // slightly raised (interpolated)\n brightRed: \"#ff9f43\", // snazzy bright orange (warm interpolation)\n brightGreen: brighten(\"#5af78e\", 0.15),\n brightYellow: brighten(\"#f3f99d\", 0.15),\n brightBlue: brighten(\"#57c7ff\", 0.15),\n brightMagenta: \"#ff6ac1\", // magenta\n brightCyan: brighten(\"#9aedfe\", 0.15),\n brightWhite: \"#eff0eb\", // foreground\n foreground: \"#eff0eb\", // foreground\n background: \"#282a36\", // background\n cursorColor: \"#eff0eb\", // foreground\n cursorText: \"#282a36\", // background\n selectionBackground: \"#686868\", // light black / muted chrome\n selectionForeground: \"#eff0eb\", // foreground\n}\n","/**\n * Material Theme palettes — material design-inspired editor theme.\n * Source: https://github.com/kaicataldo/material.vim (material.vim)\n * Reference: https://material-theme.com/docs/reference/color-palette/\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Material Darker — the deep dark Material variant. */\nexport const materialDark: ColorScheme = {\n name: \"material-dark\",\n dark: true,\n black: \"#171717\", // line_highlight (deepest)\n red: \"#ff5370\",\n green: \"#c3e88d\",\n yellow: \"#ffcb6b\",\n blue: \"#82aaff\",\n magenta: \"#c792ea\",\n cyan: \"#89ddff\", // cyan\n white: \"#545454\", // comments\n brightBlack: \"#2c2c2c\", // selection\n brightRed: \"#f78c6c\",\n brightGreen: brighten(\"#c3e88d\", 0.15),\n brightYellow: brighten(\"#ffcb6b\", 0.15),\n brightBlue: brighten(\"#82aaff\", 0.15),\n brightMagenta: \"#f07178\",\n brightCyan: brighten(\"#89ddff\", 0.15),\n brightWhite: \"#eeffff\", // foreground\n foreground: \"#eeffff\", // foreground\n background: \"#212121\", // background\n cursorColor: \"#eeffff\", // foreground\n cursorText: \"#212121\", // background\n selectionBackground: \"#424242\", // guides/line_numbers\n selectionForeground: \"#eeffff\", // foreground\n}\n\n/** Material Lighter — the light Material variant. */\nexport const materialLight: ColorScheme = {\n name: \"material-light\",\n dark: false,\n black: \"#ecf0f1\", // line_highlight\n red: \"#e53935\",\n green: \"#91b859\",\n yellow: \"#ffb62c\",\n blue: \"#6182b8\",\n magenta: \"#7c4dff\",\n cyan: \"#39adb5\", // cyan\n white: \"#90a4ae\", // comments/fg\n brightBlack: \"#ebf4f3\", // selection\n brightRed: \"#f76d47\",\n brightGreen: brighten(\"#91b859\", 0.15),\n brightYellow: brighten(\"#ffb62c\", 0.15),\n brightBlue: brighten(\"#6182b8\", 0.15),\n brightMagenta: \"#ff5370\",\n brightCyan: brighten(\"#39adb5\", 0.15),\n brightWhite: \"#546E7A\", // foreground (darker than comments for light theme)\n foreground: \"#546E7A\", // foreground (darker than comments for light theme)\n background: \"#fafafa\", // background\n cursorColor: \"#546E7A\", // foreground\n cursorText: \"#fafafa\", // background\n selectionBackground: \"#cfd8dc\", // line_numbers\n selectionForeground: \"#546E7A\", // foreground\n}\n","/**\n * Palenight palette — Material Palenight variant.\n * Source: https://github.com/kaicataldo/material.vim (palenight style)\n * Reference: https://github.com/JonathanSpeek/palenight-iterm2\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Palenight — the soft, purple-tinted Material dark variant. */\nexport const palenight: ColorScheme = {\n name: \"palenight\",\n dark: true,\n black: \"#1c1f2b\", // line_highlight (deepest)\n red: \"#f07178\",\n green: \"#c3e88d\",\n yellow: \"#ffcb6b\",\n blue: \"#82aaff\",\n magenta: \"#c792ea\",\n cyan: \"#89ddff\", // cyan\n white: \"#676e95\", // comments\n brightBlack: \"#343b51\", // selection\n brightRed: \"#f78c6c\",\n brightGreen: brighten(\"#c3e88d\", 0.15),\n brightYellow: brighten(\"#ffcb6b\", 0.15),\n brightBlue: brighten(\"#82aaff\", 0.15),\n brightMagenta: \"#ff5370\",\n brightCyan: brighten(\"#89ddff\", 0.15),\n brightWhite: \"#a6accd\", // foreground\n foreground: \"#a6accd\", // foreground\n background: \"#292d3e\", // background\n cursorColor: \"#a6accd\", // foreground\n cursorText: \"#292d3e\", // background\n selectionBackground: \"#4e5579\", // guides/invisibles\n selectionForeground: \"#a6accd\", // foreground\n}\n","/**\n * Ayu palettes — warm, modern theme in three variants.\n * Source: https://github.com/ayu-theme/ayu-colors\n * Reference: https://github.com/Shatur/neovim-ayu\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Ayu Dark — deep dark variant with warm accents. */\nexport const ayuDark: ColorScheme = {\n name: \"ayu-dark\",\n dark: true,\n black: \"#05070A\",\n red: \"#D95757\",\n green: \"#AAD94C\",\n yellow: \"#E6B450\",\n blue: \"#59C2FF\",\n magenta: \"#D2A6FF\",\n cyan: \"#95E6CB\",\n white: \"#636A72\",\n brightBlack: \"#11151C\",\n brightRed: \"#F29668\",\n brightGreen: brighten(\"#AAD94C\", 0.15),\n brightYellow: brighten(\"#E6B450\", 0.15),\n brightBlue: brighten(\"#59C2FF\", 0.15),\n brightMagenta: \"#F07178\",\n brightCyan: brighten(\"#95E6CB\", 0.15),\n brightWhite: \"#BFBDB6\",\n foreground: \"#BFBDB6\",\n background: \"#0B0E14\",\n cursorColor: \"#BFBDB6\",\n cursorText: \"#0B0E14\",\n selectionBackground: \"#565B66\",\n selectionForeground: \"#BFBDB6\",\n}\n\n/** Ayu Mirage — balanced dark variant with softer contrast. */\nexport const ayuMirage: ColorScheme = {\n name: \"ayu-mirage\",\n dark: true,\n black: \"#101521\",\n red: \"#FF6666\",\n green: \"#D5FF80\",\n yellow: \"#FFCC66\",\n blue: \"#73D0FF\",\n magenta: \"#DFBFFF\",\n cyan: \"#95E6CB\",\n white: \"#6C7A8B\",\n brightBlack: \"#171B24\",\n brightRed: \"#F29E74\",\n brightGreen: brighten(\"#D5FF80\", 0.15),\n brightYellow: brighten(\"#FFCC66\", 0.15),\n brightBlue: brighten(\"#73D0FF\", 0.15),\n brightMagenta: \"#F28779\",\n brightCyan: brighten(\"#95E6CB\", 0.15),\n brightWhite: \"#CCCAC2\",\n foreground: \"#CCCAC2\",\n background: \"#1F2430\",\n cursorColor: \"#CCCAC2\",\n cursorText: \"#1F2430\",\n selectionBackground: \"#707A8C\",\n selectionForeground: \"#CCCAC2\",\n}\n\n/** Ayu Light — clean light variant. */\nexport const ayuLight: ColorScheme = {\n name: \"ayu-light\",\n dark: false,\n black: \"#E7EAED\",\n red: \"#E65050\",\n green: \"#86B300\",\n yellow: \"#FFAA33\",\n blue: \"#399EE6\",\n magenta: \"#A37ACC\",\n cyan: \"#4CBF99\",\n white: \"#ABADB1\",\n brightBlack: \"#F3F4F5\",\n brightRed: \"#ED9366\",\n brightGreen: brighten(\"#86B300\", 0.15),\n brightYellow: brighten(\"#FFAA33\", 0.15),\n brightBlue: brighten(\"#399EE6\", 0.15),\n brightMagenta: \"#F07171\",\n brightCyan: brighten(\"#4CBF99\", 0.15),\n brightWhite: \"#5C6166\",\n foreground: \"#5C6166\",\n background: \"#F8F9FA\",\n cursorColor: \"#5C6166\",\n cursorText: \"#F8F9FA\",\n selectionBackground: \"#8A9199\",\n selectionForeground: \"#5C6166\",\n}\n","/**\n * Nightfox palettes — rich, vibrant themes for Neovim.\n * Source: https://github.com/EdenEast/nightfox.nvim\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Nightfox — dark blue-toned variant. */\nexport const nightfox: ColorScheme = {\n name: \"nightfox\",\n dark: true,\n black: \"#131A24\",\n red: \"#C94F6D\",\n green: \"#81B29A\",\n yellow: \"#DBC074\",\n blue: \"#719CD6\",\n magenta: \"#9D79D6\",\n cyan: \"#63CDCF\",\n white: \"#71839B\",\n brightBlack: \"#212E3F\",\n brightRed: \"#F4A261\",\n brightGreen: brighten(\"#81B29A\", 0.15),\n brightYellow: brighten(\"#DBC074\", 0.15),\n brightBlue: brighten(\"#719CD6\", 0.15),\n brightMagenta: \"#D67AD2\",\n brightCyan: brighten(\"#63CDCF\", 0.15),\n brightWhite: \"#CDCECF\",\n foreground: \"#CDCECF\",\n background: \"#192330\",\n cursorColor: \"#CDCECF\",\n cursorText: \"#192330\",\n selectionBackground: \"#39506D\",\n selectionForeground: \"#CDCECF\",\n}\n\n/** Dawnfox — warm light variant inspired by Rose Pine Dawn. */\nexport const dawnfox: ColorScheme = {\n name: \"dawnfox\",\n dark: false,\n black: \"#EBE5DF\",\n red: \"#B4637A\",\n green: \"#618774\",\n yellow: \"#EA9D34\",\n blue: \"#286983\",\n magenta: \"#907AA9\",\n cyan: \"#56949F\",\n white: \"#A8A3B3\",\n brightBlack: \"#EBE0DF\",\n brightRed: \"#D7827E\",\n brightGreen: brighten(\"#618774\", 0.15),\n brightYellow: brighten(\"#EA9D34\", 0.15),\n brightBlue: brighten(\"#286983\", 0.15),\n brightMagenta: \"#D685AF\",\n brightCyan: brighten(\"#56949F\", 0.15),\n brightWhite: \"#575279\",\n foreground: \"#575279\",\n background: \"#FAF4ED\",\n cursorColor: \"#575279\",\n cursorText: \"#FAF4ED\",\n selectionBackground: \"#BDBFC9\",\n selectionForeground: \"#575279\",\n}\n","/**\n * Horizon palette — beautifully warm theme.\n * Source: https://github.com/jolaleye/horizon-theme-vscode\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Horizon — warm dark variant with vivid accents. */\nexport const horizon: ColorScheme = {\n name: \"horizon\",\n dark: true,\n black: \"#16161C\",\n red: \"#E95678\",\n green: \"#29D398\",\n yellow: \"#FAC29A\",\n blue: \"#26BBD9\",\n magenta: \"#B877DB\",\n cyan: \"#59E1E3\",\n white: \"#6C6F93\",\n brightBlack: \"#232530\",\n brightRed: \"#FAB795\",\n brightGreen: brighten(\"#29D398\", 0.15),\n brightYellow: brighten(\"#FAC29A\", 0.15),\n brightBlue: brighten(\"#26BBD9\", 0.15),\n brightMagenta: \"#EE64AC\",\n brightCyan: brighten(\"#59E1E3\", 0.15),\n brightWhite: \"#D5D8DA\",\n foreground: \"#D5D8DA\",\n background: \"#1C1E26\",\n cursorColor: \"#D5D8DA\",\n cursorText: \"#1C1E26\",\n selectionBackground: \"#2E303E\",\n selectionForeground: \"#D5D8DA\",\n}\n","/**\n * Moonfly palette — dark charcoal theme with pastel accents.\n * Source: https://github.com/bluz71/vim-moonfly-colors\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Moonfly — dark charcoal theme. */\nexport const moonfly: ColorScheme = {\n name: \"moonfly\",\n dark: true,\n black: \"#121212\",\n red: \"#FF5D5D\",\n green: \"#8CC85F\",\n yellow: \"#E3C78A\",\n blue: \"#80A0FF\",\n magenta: \"#AE81FF\",\n cyan: \"#79DAC8\",\n white: \"#808080\",\n brightBlack: \"#1C1C1C\",\n brightRed: \"#DE935F\",\n brightGreen: brighten(\"#8CC85F\", 0.15),\n brightYellow: brighten(\"#E3C78A\", 0.15),\n brightBlue: brighten(\"#80A0FF\", 0.15),\n brightMagenta: \"#FF5189\",\n brightCyan: brighten(\"#79DAC8\", 0.15),\n brightWhite: \"#C6C6C6\",\n foreground: \"#C6C6C6\",\n background: \"#080808\",\n cursorColor: \"#C6C6C6\",\n cursorText: \"#080808\",\n selectionBackground: \"#323437\",\n selectionForeground: \"#C6C6C6\",\n}\n","/**\n * Nightfly palette — dark midnight-blue theme with neon accents.\n * Source: https://github.com/bluz71/vim-nightfly-colors\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Nightfly — midnight-blue dark theme. */\nexport const nightfly: ColorScheme = {\n name: \"nightfly\",\n dark: true,\n black: \"#081E2F\",\n red: \"#FC514E\",\n green: \"#A1CD5E\",\n yellow: \"#E3D18A\",\n blue: \"#82AAFF\",\n magenta: \"#C792EA\",\n cyan: \"#7FDBCA\",\n white: \"#7C8F8F\",\n brightBlack: \"#0E293F\",\n brightRed: \"#F78C6C\",\n brightGreen: brighten(\"#A1CD5E\", 0.15),\n brightYellow: brighten(\"#E3D18A\", 0.15),\n brightBlue: brighten(\"#82AAFF\", 0.15),\n brightMagenta: \"#FF5874\",\n brightCyan: brighten(\"#7FDBCA\", 0.15),\n brightWhite: \"#C3CCDC\",\n foreground: \"#C3CCDC\",\n background: \"#011627\",\n cursorColor: \"#C3CCDC\",\n cursorText: \"#011627\",\n selectionBackground: \"#2C3043\",\n selectionForeground: \"#C3CCDC\",\n}\n","/**\n * Oxocarbon palettes — IBM Carbon Design-inspired theme.\n * Source: https://github.com/nyoom-engineering/oxocarbon.nvim\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Oxocarbon Dark — IBM Carbon-inspired dark variant. */\nexport const oxocarbonDark: ColorScheme = {\n name: \"oxocarbon-dark\",\n dark: true,\n black: \"#131313\",\n red: \"#EE5396\",\n green: \"#42BE65\",\n yellow: \"#82CFFF\",\n blue: \"#78A9FF\",\n magenta: \"#BE95FF\",\n cyan: \"#08BDBA\",\n white: \"#5C5C5C\",\n brightBlack: \"#2A2A2A\",\n brightRed: \"#FF7EB6\",\n brightGreen: brighten(\"#42BE65\", 0.15),\n brightYellow: brighten(\"#82CFFF\", 0.15),\n brightBlue: brighten(\"#78A9FF\", 0.15),\n brightMagenta: \"#FF7EB6\",\n brightCyan: brighten(\"#08BDBA\", 0.15),\n brightWhite: \"#F3F3F3\",\n foreground: \"#F3F3F3\",\n background: \"#161616\",\n cursorColor: \"#F3F3F3\",\n cursorText: \"#161616\",\n selectionBackground: \"#404040\",\n selectionForeground: \"#F3F3F3\",\n}\n\n/** Oxocarbon Light — IBM Carbon-inspired light variant. */\nexport const oxocarbonLight: ColorScheme = {\n name: \"oxocarbon-light\",\n dark: false,\n black: \"#F3F3F3\",\n red: \"#EE5396\",\n green: \"#42BE65\",\n yellow: \"#FFAB91\",\n blue: \"#0F62FE\",\n magenta: \"#BE95FF\",\n cyan: \"#08BDBA\",\n white: \"#90A4AE\",\n brightBlack: \"#D5D5D5\",\n brightRed: \"#FF6F00\",\n brightGreen: brighten(\"#42BE65\", 0.15),\n brightYellow: brighten(\"#FFAB91\", 0.15),\n brightBlue: brighten(\"#0F62FE\", 0.15),\n brightMagenta: \"#FF7EB6\",\n brightCyan: brighten(\"#08BDBA\", 0.15),\n brightWhite: \"#37474F\",\n foreground: \"#37474F\",\n background: \"#FFFFFF\",\n cursorColor: \"#37474F\",\n cursorText: \"#FFFFFF\",\n selectionBackground: \"#525252\",\n selectionForeground: \"#37474F\",\n}\n","/**\n * Sonokai palette — high-contrast vivid theme (Monokai Pro-inspired).\n * Source: https://github.com/sainnhe/sonokai (default style)\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Sonokai — vivid dark theme with Monokai-inspired accents. */\nexport const sonokai: ColorScheme = {\n name: \"sonokai\",\n dark: true,\n black: \"#181819\",\n red: \"#FC5D7C\",\n green: \"#9ED072\",\n yellow: \"#E7C664\",\n blue: \"#76CCE0\",\n magenta: \"#B39DF3\",\n cyan: \"#76CCE0\",\n white: \"#7F8490\",\n brightBlack: \"#33353F\",\n brightRed: \"#F39660\",\n brightGreen: brighten(\"#9ED072\", 0.15),\n brightYellow: brighten(\"#E7C664\", 0.15),\n brightBlue: brighten(\"#76CCE0\", 0.15),\n brightMagenta: \"#FC5D7C\",\n brightCyan: brighten(\"#76CCE0\", 0.15),\n brightWhite: \"#E2E2E3\",\n foreground: \"#E2E2E3\",\n background: \"#2C2E34\",\n cursorColor: \"#E2E2E3\",\n cursorText: \"#2C2E34\",\n selectionBackground: \"#414550\",\n selectionForeground: \"#E2E2E3\",\n}\n","/**\n * Edge palettes — clean, modern theme by sainnhe.\n * Source: https://github.com/sainnhe/edge (default style)\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Edge Dark — clean dark variant with balanced accents. */\nexport const edgeDark: ColorScheme = {\n name: \"edge-dark\",\n dark: true,\n black: \"#202023\",\n red: \"#EC7279\",\n green: \"#A0C980\",\n yellow: \"#DEB974\",\n blue: \"#6CB6EB\",\n magenta: \"#D38AEA\",\n cyan: \"#5DBBC1\",\n white: \"#758094\",\n brightBlack: \"#33353F\",\n brightRed: \"#DEB974\",\n brightGreen: brighten(\"#A0C980\", 0.15),\n brightYellow: brighten(\"#DEB974\", 0.15),\n brightBlue: brighten(\"#6CB6EB\", 0.15),\n brightMagenta: \"#EC7279\",\n brightCyan: brighten(\"#5DBBC1\", 0.15),\n brightWhite: \"#C5CDD9\",\n foreground: \"#C5CDD9\",\n background: \"#2C2E34\",\n cursorColor: \"#C5CDD9\",\n cursorText: \"#2C2E34\",\n selectionBackground: \"#414550\",\n selectionForeground: \"#C5CDD9\",\n}\n\n/** Edge Light — clean, readable light variant. */\nexport const edgeLight: ColorScheme = {\n name: \"edge-light\",\n dark: false,\n black: \"#DDE2E7\",\n red: \"#D05858\",\n green: \"#608E32\",\n yellow: \"#BE7E05\",\n blue: \"#5079BE\",\n magenta: \"#B05CCC\",\n cyan: \"#3A8B84\",\n white: \"#8790A0\",\n brightBlack: \"#EEF1F4\",\n brightRed: \"#BE7E05\",\n brightGreen: brighten(\"#608E32\", 0.15),\n brightYellow: brighten(\"#BE7E05\", 0.15),\n brightBlue: brighten(\"#5079BE\", 0.15),\n brightMagenta: \"#D05858\",\n brightCyan: brighten(\"#3A8B84\", 0.15),\n brightWhite: \"#4B505B\",\n foreground: \"#4B505B\",\n background: \"#FAFAFA\",\n cursorColor: \"#4B505B\",\n cursorText: \"#FAFAFA\",\n selectionBackground: \"#DDE2E7\",\n selectionForeground: \"#4B505B\",\n}\n","/**\n * Modus palettes — GNU Emacs themes conforming to WCAG AAA contrast.\n * Source: https://github.com/protesilaos/modus-themes\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport { brighten } from \"@silvery/color\"\n\n/** Modus Vivendi — elegant dark theme with maximum legibility. */\nexport const modusVivendi: ColorScheme = {\n name: \"modus-vivendi\",\n dark: true,\n black: \"#000000\",\n red: \"#FF5F59\",\n green: \"#44BC44\",\n yellow: \"#D0BC00\",\n blue: \"#2FAFFF\",\n magenta: \"#B6A0FF\",\n cyan: \"#00D3D0\",\n white: \"#989898\",\n brightBlack: \"#1E1E1E\",\n brightRed: \"#FEC43F\",\n brightGreen: brighten(\"#44BC44\", 0.15),\n brightYellow: brighten(\"#D0BC00\", 0.15),\n brightBlue: brighten(\"#2FAFFF\", 0.15),\n brightMagenta: \"#FEACD0\",\n brightCyan: brighten(\"#00D3D0\", 0.15),\n brightWhite: \"#FFFFFF\",\n foreground: \"#FFFFFF\",\n background: \"#000000\",\n cursorColor: \"#FFFFFF\",\n cursorText: \"#000000\",\n selectionBackground: \"#535353\",\n selectionForeground: \"#FFFFFF\",\n}\n\n/** Modus Operandi — elegant light theme with maximum legibility. */\nexport const modusOperandi: ColorScheme = {\n name: \"modus-operandi\",\n dark: false,\n black: \"#E0E0E0\",\n red: \"#A60000\",\n green: \"#006800\",\n yellow: \"#6F5500\",\n blue: \"#0031A9\",\n magenta: \"#531AB6\",\n cyan: \"#005E8B\",\n white: \"#595959\",\n brightBlack: \"#F2F2F2\",\n brightRed: \"#884900\",\n brightGreen: brighten(\"#006800\", 0.15),\n brightYellow: brighten(\"#6F5500\", 0.15),\n brightBlue: brighten(\"#0031A9\", 0.15),\n brightMagenta: \"#721045\",\n brightCyan: brighten(\"#005E8B\", 0.15),\n brightWhite: \"#000000\",\n foreground: \"#000000\",\n background: \"#FFFFFF\",\n cursorColor: \"#000000\",\n cursorText: \"#FFFFFF\",\n selectionBackground: \"#9F9F9F\",\n selectionForeground: \"#000000\",\n}\n","/**\n * GitHub palettes — GitHub's terminal color schemes.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** GitHub Dark — GitHub's dark terminal theme. */\nexport const githubDark: ColorScheme = {\n name: \"github-dark\",\n dark: true,\n black: \"#000000\",\n red: \"#f78166\",\n green: \"#56d364\",\n yellow: \"#e3b341\",\n blue: \"#6ca4f8\",\n magenta: \"#db61a2\",\n cyan: \"#2b7489\",\n white: \"#ffffff\",\n brightBlack: \"#4d4d4d\",\n brightRed: \"#f78166\",\n brightGreen: \"#56d364\",\n brightYellow: \"#e3b341\",\n brightBlue: \"#6ca4f8\",\n brightMagenta: \"#db61a2\",\n brightCyan: \"#2b7489\",\n brightWhite: \"#ffffff\",\n foreground: \"#8b949e\",\n background: \"#101216\",\n cursorColor: \"#c9d1d9\",\n cursorText: \"#101216\",\n selectionBackground: \"#3b5070\",\n selectionForeground: \"#c9d1d9\",\n}\n\n/** GitHub Light — GitHub's light terminal theme. */\nexport const githubLight: ColorScheme = {\n name: \"github-light\",\n dark: false,\n black: \"#3e3e3e\",\n red: \"#970b16\",\n green: \"#07962a\",\n yellow: \"#f8eec7\",\n blue: \"#003e8a\",\n magenta: \"#e94691\",\n cyan: \"#89d1ec\",\n white: \"#ffffff\",\n brightBlack: \"#666666\",\n brightRed: \"#de0000\",\n brightGreen: \"#87d5a2\",\n brightYellow: \"#f1d007\",\n brightBlue: \"#2e6cba\",\n brightMagenta: \"#ffa29f\",\n brightCyan: \"#1cfafe\",\n brightWhite: \"#ffffff\",\n foreground: \"#3e3e3e\",\n background: \"#f4f4f4\",\n cursorColor: \"#3f3f3f\",\n cursorText: \"#f4f4f4\",\n selectionBackground: \"#a9c1e2\",\n selectionForeground: \"#3e3e3e\",\n}\n","/**\n * Cobalt2 palette — Wes Bos's vibrant dark theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Cobalt2 — vibrant dark blue theme by Wes Bos. */\nexport const cobalt2: ColorScheme = {\n name: \"cobalt2\",\n dark: true,\n black: \"#000000\",\n red: \"#ff0000\",\n green: \"#38de21\",\n yellow: \"#ffe50a\",\n blue: \"#1460d2\",\n magenta: \"#ff005d\",\n cyan: \"#00bbbb\",\n white: \"#bbbbbb\",\n brightBlack: \"#555555\",\n brightRed: \"#f40e17\",\n brightGreen: \"#3bd01d\",\n brightYellow: \"#edc809\",\n brightBlue: \"#5555ff\",\n brightMagenta: \"#ff55ff\",\n brightCyan: \"#6ae3fa\",\n brightWhite: \"#ffffff\",\n foreground: \"#ffffff\",\n background: \"#132738\",\n cursorColor: \"#f0cc09\",\n cursorText: \"#132738\",\n selectionBackground: \"#18354f\",\n selectionForeground: \"#ffffff\",\n}\n","/**\n * Synthwave palettes — retro neon themes.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Synthwave — classic retro terminal neon. */\nexport const synthwave: ColorScheme = {\n name: \"synthwave\",\n dark: true,\n black: \"#000000\",\n red: \"#f6188f\",\n green: \"#1ebb2b\",\n yellow: \"#fdf834\",\n blue: \"#2186ec\",\n magenta: \"#f85a21\",\n cyan: \"#12c3e2\",\n white: \"#ffffff\",\n brightBlack: \"#000000\",\n brightRed: \"#f841a0\",\n brightGreen: \"#25c141\",\n brightYellow: \"#fdf454\",\n brightBlue: \"#2f9ded\",\n brightMagenta: \"#f97137\",\n brightCyan: \"#19cde6\",\n brightWhite: \"#ffffff\",\n foreground: \"#dad9c7\",\n background: \"#000000\",\n cursorColor: \"#19cde6\",\n cursorText: \"#000000\",\n selectionBackground: \"#19cde6\",\n selectionForeground: \"#000000\",\n}\n\n/** Synthwave '84 — the neon VS Code theme. */\nexport const synthwave84: ColorScheme = {\n name: \"synthwave-84\",\n dark: true,\n black: \"#fefefe\",\n red: \"#f97e72\",\n green: \"#72f1b8\",\n yellow: \"#fede5d\",\n blue: \"#6d77b3\",\n magenta: \"#c792ea\",\n cyan: \"#f772e0\",\n white: \"#fefefe\",\n brightBlack: \"#fefefe\",\n brightRed: \"#f88414\",\n brightGreen: \"#72f1b8\",\n brightYellow: \"#fff951\",\n brightBlue: \"#36f9f6\",\n brightMagenta: \"#e1acff\",\n brightCyan: \"#f92aad\",\n brightWhite: \"#fefefe\",\n foreground: \"#f0eff1\",\n background: \"#2a2139\",\n cursorColor: \"#72f1b8\",\n cursorText: \"#2a2139\",\n selectionBackground: \"#181521\",\n selectionForeground: \"#f0eff1\",\n}\n","/**\n * Tomorrow Night palettes — Chris Kempson's classic theme family.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Tomorrow Night — the original dark variant. */\nexport const tomorrowNight: ColorScheme = {\n name: \"tomorrow-night\",\n dark: true,\n black: \"#282a2e\",\n red: \"#cc6666\",\n green: \"#b5bd68\",\n yellow: \"#f0c674\",\n blue: \"#81a2be\",\n magenta: \"#b294bb\",\n cyan: \"#8abeb7\",\n white: \"#e0e0e0\",\n brightBlack: \"#373b41\",\n brightRed: \"#cc6666\",\n brightGreen: \"#b5bd68\",\n brightYellow: \"#f0c674\",\n brightBlue: \"#81a2be\",\n brightMagenta: \"#b294bb\",\n brightCyan: \"#8abeb7\",\n brightWhite: \"#ffffff\",\n foreground: \"#c5c8c6\",\n background: \"#1d1f21\",\n cursorColor: \"#c5c8c6\",\n cursorText: \"#1d1f21\",\n selectionBackground: \"#373b41\",\n selectionForeground: \"#c5c8c6\",\n}\n\n/** Tomorrow Night Blue — deep blue variant. */\nexport const tomorrowNightBlue: ColorScheme = {\n name: \"tomorrow-night-blue\",\n dark: true,\n black: \"#000000\",\n red: \"#ff9da4\",\n green: \"#d1f1a9\",\n yellow: \"#ffeead\",\n blue: \"#bbdaff\",\n magenta: \"#ebbbff\",\n cyan: \"#99ffff\",\n white: \"#ffffff\",\n brightBlack: \"#000000\",\n brightRed: \"#ff9da4\",\n brightGreen: \"#d1f1a9\",\n brightYellow: \"#ffeead\",\n brightBlue: \"#bbdaff\",\n brightMagenta: \"#ebbbff\",\n brightCyan: \"#99ffff\",\n brightWhite: \"#ffffff\",\n foreground: \"#ffffff\",\n background: \"#002451\",\n cursorColor: \"#ffffff\",\n cursorText: \"#002451\",\n selectionBackground: \"#003f8e\",\n selectionForeground: \"#ffffff\",\n}\n\n/** Tomorrow Night Eighties — muted retro variant. */\nexport const tomorrowNightEighties: ColorScheme = {\n name: \"tomorrow-night-eighties\",\n dark: true,\n black: \"#393939\",\n red: \"#f2777a\",\n green: \"#99cc99\",\n yellow: \"#ffcc66\",\n blue: \"#6699cc\",\n magenta: \"#cc99cc\",\n cyan: \"#66cccc\",\n white: \"#e0e0e0\",\n brightBlack: \"#515151\",\n brightRed: \"#f2777a\",\n brightGreen: \"#99cc99\",\n brightYellow: \"#ffcc66\",\n brightBlue: \"#6699cc\",\n brightMagenta: \"#cc99cc\",\n brightCyan: \"#66cccc\",\n brightWhite: \"#ffffff\",\n foreground: \"#cccccc\",\n background: \"#2d2d2d\",\n cursorColor: \"#cccccc\",\n cursorText: \"#2d2d2d\",\n selectionBackground: \"#515151\",\n selectionForeground: \"#cccccc\",\n}\n","/**\n * Zenburn palette — the classic low-contrast vim theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Zenburn — Jani Nurminen's low-contrast dark theme. */\nexport const zenburn: ColorScheme = {\n name: \"zenburn\",\n dark: true,\n black: \"#4d4d4d\",\n red: \"#705050\",\n green: \"#60b48a\",\n yellow: \"#f0dfaf\",\n blue: \"#506070\",\n magenta: \"#dc8cc3\",\n cyan: \"#8cd0d3\",\n white: \"#dcdccc\",\n brightBlack: \"#709080\",\n brightRed: \"#dca3a3\",\n brightGreen: \"#c3bf9f\",\n brightYellow: \"#e0cf9f\",\n brightBlue: \"#94bff3\",\n brightMagenta: \"#ec93d3\",\n brightCyan: \"#93e0e3\",\n brightWhite: \"#ffffff\",\n foreground: \"#dcdccc\",\n background: \"#3f3f3f\",\n cursorColor: \"#73635a\",\n cursorText: \"#3f3f3f\",\n selectionBackground: \"#21322f\",\n selectionForeground: \"#dcdccc\",\n}\n","/**\n * Ubuntu palette — the default Ubuntu terminal theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Ubuntu — the iconic purple terminal from Ubuntu Linux. */\nexport const ubuntu: ColorScheme = {\n name: \"ubuntu\",\n dark: true,\n black: \"#2e3436\",\n red: \"#cc0000\",\n green: \"#4e9a06\",\n yellow: \"#c4a000\",\n blue: \"#3465a4\",\n magenta: \"#75507b\",\n cyan: \"#06989a\",\n white: \"#d3d7cf\",\n brightBlack: \"#555753\",\n brightRed: \"#ef2929\",\n brightGreen: \"#8ae234\",\n brightYellow: \"#fce94f\",\n brightBlue: \"#729fcf\",\n brightMagenta: \"#ad7fa8\",\n brightCyan: \"#34e2e2\",\n brightWhite: \"#eeeeec\",\n foreground: \"#eeeeec\",\n background: \"#300a24\",\n cursorColor: \"#bbbbbb\",\n cursorText: \"#300a24\",\n selectionBackground: \"#b5d5ff\",\n selectionForeground: \"#300a24\",\n}\n","/**\n * Tango palettes — GNOME terminal defaults based on the Tango icon palette.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Tango Dark — GNOME terminal's classic dark Tango theme. */\nexport const tangoDark: ColorScheme = {\n name: \"tango-dark\",\n dark: true,\n black: \"#000000\",\n red: \"#cc0000\",\n green: \"#4e9a06\",\n yellow: \"#c4a000\",\n blue: \"#3465a4\",\n magenta: \"#75507b\",\n cyan: \"#06989a\",\n white: \"#d3d7cf\",\n brightBlack: \"#555753\",\n brightRed: \"#ef2929\",\n brightGreen: \"#8ae234\",\n brightYellow: \"#fce94f\",\n brightBlue: \"#729fcf\",\n brightMagenta: \"#ad7fa8\",\n brightCyan: \"#34e2e2\",\n brightWhite: \"#eeeeec\",\n foreground: \"#ffffff\",\n background: \"#000000\",\n cursorColor: \"#ffffff\",\n cursorText: \"#000000\",\n selectionBackground: \"#b5d5ff\",\n selectionForeground: \"#000000\",\n}\n\n/** Tango Light — GNOME terminal's light Tango variant. */\nexport const tangoLight: ColorScheme = {\n name: \"tango-light\",\n dark: false,\n black: \"#000000\",\n red: \"#cc0000\",\n green: \"#4e9a06\",\n yellow: \"#c4a000\",\n blue: \"#3465a4\",\n magenta: \"#75507b\",\n cyan: \"#06989a\",\n white: \"#d3d7cf\",\n brightBlack: \"#555753\",\n brightRed: \"#ef2929\",\n brightGreen: \"#8ae234\",\n brightYellow: \"#fce94f\",\n brightBlue: \"#729fcf\",\n brightMagenta: \"#ad7fa8\",\n brightCyan: \"#34e2e2\",\n brightWhite: \"#eeeeec\",\n foreground: \"#000000\",\n background: \"#ffffff\",\n cursorColor: \"#000000\",\n cursorText: \"#ffffff\",\n selectionBackground: \"#b5d5ff\",\n selectionForeground: \"#000000\",\n}\n","/**\n * Cyberpunk palette — neon-drenched futuristic theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Cyberpunk — neon colors on deep purple. */\nexport const cyberpunk: ColorScheme = {\n name: \"cyberpunk\",\n dark: true,\n black: \"#000000\",\n red: \"#ff7092\",\n green: \"#00fbac\",\n yellow: \"#fffa6a\",\n blue: \"#00bfff\",\n magenta: \"#df95ff\",\n cyan: \"#86cbfe\",\n white: \"#ffffff\",\n brightBlack: \"#000000\",\n brightRed: \"#ff8aa4\",\n brightGreen: \"#21f6bc\",\n brightYellow: \"#fff787\",\n brightBlue: \"#1bccfd\",\n brightMagenta: \"#e6aefe\",\n brightCyan: \"#99d6fc\",\n brightWhite: \"#ffffff\",\n foreground: \"#e5e5e5\",\n background: \"#332a57\",\n cursorColor: \"#21f6bc\",\n cursorText: \"#332a57\",\n selectionBackground: \"#c1deff\",\n selectionForeground: \"#332a57\",\n}\n","/**\n * VS Code palettes — Visual Studio Code's built-in terminal themes.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** VS Code Dark+ — the default VS Code dark terminal theme. */\nexport const vscodeDark: ColorScheme = {\n name: \"vscode-dark\",\n dark: true,\n black: \"#000000\",\n red: \"#cd3131\",\n green: \"#0dbc79\",\n yellow: \"#e5e510\",\n blue: \"#2472c8\",\n magenta: \"#bc3fbc\",\n cyan: \"#11a8cd\",\n white: \"#e5e5e5\",\n brightBlack: \"#666666\",\n brightRed: \"#f14c4c\",\n brightGreen: \"#23d18b\",\n brightYellow: \"#f5f543\",\n brightBlue: \"#3b8eea\",\n brightMagenta: \"#d670d6\",\n brightCyan: \"#29b8db\",\n brightWhite: \"#e5e5e5\",\n foreground: \"#cccccc\",\n background: \"#1e1e1e\",\n cursorColor: \"#ffffff\",\n cursorText: \"#1e1e1e\",\n selectionBackground: \"#3a3d41\",\n selectionForeground: \"#cccccc\",\n}\n","/**\n * One Light palette — Atom's iconic light theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** One Light — the classic Atom editor light theme. */\nexport const oneLight: ColorScheme = {\n name: \"one-light\",\n dark: false,\n black: \"#000000\",\n red: \"#de3e35\",\n green: \"#3f953a\",\n yellow: \"#d2b67c\",\n blue: \"#2f5af3\",\n magenta: \"#950095\",\n cyan: \"#3f953a\",\n white: \"#bbbbbb\",\n brightBlack: \"#000000\",\n brightRed: \"#de3e35\",\n brightGreen: \"#3f953a\",\n brightYellow: \"#d2b67c\",\n brightBlue: \"#2f5af3\",\n brightMagenta: \"#a00095\",\n brightCyan: \"#3f953a\",\n brightWhite: \"#ffffff\",\n foreground: \"#2a2c33\",\n background: \"#f9f9f9\",\n cursorColor: \"#bbbbbb\",\n cursorText: \"#f9f9f9\",\n selectionBackground: \"#ededed\",\n selectionForeground: \"#2a2c33\",\n}\n\n/** One Half Dark — sonph's One-inspired dark theme. */\nexport const oneHalfDark: ColorScheme = {\n name: \"one-half-dark\",\n dark: true,\n black: \"#282c34\",\n red: \"#e06c75\",\n green: \"#98c379\",\n yellow: \"#e5c07b\",\n blue: \"#61afef\",\n magenta: \"#c678dd\",\n cyan: \"#56b6c2\",\n white: \"#dcdfe4\",\n brightBlack: \"#282c34\",\n brightRed: \"#e06c75\",\n brightGreen: \"#98c379\",\n brightYellow: \"#e5c07b\",\n brightBlue: \"#61afef\",\n brightMagenta: \"#c678dd\",\n brightCyan: \"#56b6c2\",\n brightWhite: \"#dcdfe4\",\n foreground: \"#dcdfe4\",\n background: \"#282c34\",\n cursorColor: \"#a3b3cc\",\n cursorText: \"#282c34\",\n selectionBackground: \"#474e5d\",\n selectionForeground: \"#dcdfe4\",\n}\n\n/** One Half Light — sonph's One-inspired light theme. */\nexport const oneHalfLight: ColorScheme = {\n name: \"one-half-light\",\n dark: false,\n black: \"#383a42\",\n red: \"#e45649\",\n green: \"#50a14f\",\n yellow: \"#c18401\",\n blue: \"#0184bc\",\n magenta: \"#a626a4\",\n cyan: \"#0997b3\",\n white: \"#fafafa\",\n brightBlack: \"#4f525e\",\n brightRed: \"#e06c75\",\n brightGreen: \"#98c379\",\n brightYellow: \"#e5c07b\",\n brightBlue: \"#61afef\",\n brightMagenta: \"#c678dd\",\n brightCyan: \"#56b6c2\",\n brightWhite: \"#ffffff\",\n foreground: \"#383a42\",\n background: \"#fafafa\",\n cursorColor: \"#bfceff\",\n cursorText: \"#fafafa\",\n selectionBackground: \"#bfceff\",\n selectionForeground: \"#383a42\",\n}\n","/**\n * Night Owl palette — Sarah Drasner's popular VS Code theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Night Owl Light — the light variant by Sarah Drasner. */\nexport const nightOwlLight: ColorScheme = {\n name: \"night-owl-light\",\n dark: false,\n black: \"#011627\",\n red: \"#d3423e\",\n green: \"#2aa298\",\n yellow: \"#daaa01\",\n blue: \"#4876d6\",\n magenta: \"#403f53\",\n cyan: \"#08916a\",\n white: \"#7a8181\",\n brightBlack: \"#7a8181\",\n brightRed: \"#f76e6e\",\n brightGreen: \"#49d0c5\",\n brightYellow: \"#dac26b\",\n brightBlue: \"#5ca7e4\",\n brightMagenta: \"#697098\",\n brightCyan: \"#00c990\",\n brightWhite: \"#989fb1\",\n foreground: \"#403f53\",\n background: \"#ffffff\",\n cursorColor: \"#403f53\",\n cursorText: \"#ffffff\",\n selectionBackground: \"#f2f2f2\",\n selectionForeground: \"#403f53\",\n}\n","/**\n * Shades of Purple palette — Ahmad Awais's vibrant purple theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Shades of Purple — vivid purple-based dark theme. */\nexport const shadesOfPurple: ColorScheme = {\n name: \"shades-of-purple\",\n dark: true,\n black: \"#000000\",\n red: \"#d90429\",\n green: \"#3ad900\",\n yellow: \"#ffe700\",\n blue: \"#6943ff\",\n magenta: \"#ff2c70\",\n cyan: \"#00c5c7\",\n white: \"#c7c7c7\",\n brightBlack: \"#686868\",\n brightRed: \"#f92a1c\",\n brightGreen: \"#43d426\",\n brightYellow: \"#f1d000\",\n brightBlue: \"#6871ff\",\n brightMagenta: \"#ff77ff\",\n brightCyan: \"#79e8fb\",\n brightWhite: \"#ffffff\",\n foreground: \"#ffffff\",\n background: \"#1e1d40\",\n cursorColor: \"#fad000\",\n cursorText: \"#1e1d40\",\n selectionBackground: \"#b362ff\",\n selectionForeground: \"#ffffff\",\n}\n","/**\n * Homebrew palette — classic green-on-black terminal.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Homebrew — the classic green phosphor terminal look. */\nexport const homebrew: ColorScheme = {\n name: \"homebrew\",\n dark: true,\n black: \"#000000\",\n red: \"#990000\",\n green: \"#00a600\",\n yellow: \"#999900\",\n blue: \"#0000b2\",\n magenta: \"#b200b2\",\n cyan: \"#00a6b2\",\n white: \"#bfbfbf\",\n brightBlack: \"#666666\",\n brightRed: \"#e50000\",\n brightGreen: \"#00d900\",\n brightYellow: \"#e5e500\",\n brightBlue: \"#0000ff\",\n brightMagenta: \"#e500e5\",\n brightCyan: \"#00e5e5\",\n brightWhite: \"#e5e5e5\",\n foreground: \"#00ff00\",\n background: \"#000000\",\n cursorColor: \"#23ff18\",\n cursorText: \"#000000\",\n selectionBackground: \"#083905\",\n selectionForeground: \"#00ff00\",\n}\n","/**\n * Neon palette — high-saturation neon glow theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Neon — electric high-contrast neon colors. */\nexport const neon: ColorScheme = {\n name: \"neon\",\n dark: true,\n black: \"#000000\",\n red: \"#ff3045\",\n green: \"#5ffa74\",\n yellow: \"#fffc7e\",\n blue: \"#0208cb\",\n magenta: \"#f924e7\",\n cyan: \"#00fffc\",\n white: \"#c7c7c7\",\n brightBlack: \"#686868\",\n brightRed: \"#ff5a5a\",\n brightGreen: \"#75ff88\",\n brightYellow: \"#fffd96\",\n brightBlue: \"#3c40cb\",\n brightMagenta: \"#f15be5\",\n brightCyan: \"#88fffe\",\n brightWhite: \"#ffffff\",\n foreground: \"#00fffc\",\n background: \"#14161a\",\n cursorColor: \"#c7c7c7\",\n cursorText: \"#14161a\",\n selectionBackground: \"#0013ff\",\n selectionForeground: \"#ffffff\",\n}\n","/**\n * Challenger Deep palette — a dark, space-inspired theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Challenger Deep — dreamy purple-blue dark theme. */\nexport const challengerDeep: ColorScheme = {\n name: \"challenger-deep\",\n dark: true,\n black: \"#141228\",\n red: \"#ff5458\",\n green: \"#62d196\",\n yellow: \"#ffb378\",\n blue: \"#65b2ff\",\n magenta: \"#906cff\",\n cyan: \"#63f2f1\",\n white: \"#a6b3cc\",\n brightBlack: \"#565575\",\n brightRed: \"#ff8080\",\n brightGreen: \"#95ffa4\",\n brightYellow: \"#ffe9aa\",\n brightBlue: \"#91ddff\",\n brightMagenta: \"#c991e1\",\n brightCyan: \"#aaffe4\",\n brightWhite: \"#cbe3e7\",\n foreground: \"#cbe1e7\",\n background: \"#1e1c31\",\n cursorColor: \"#fbfcfc\",\n cursorText: \"#1e1c31\",\n selectionBackground: \"#cbe1e7\",\n selectionForeground: \"#1e1c31\",\n}\n","/**\n * Doom One palette — Emacs Doom's default dark theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Doom One — Henrik Lissner's Emacs Doom default theme. */\nexport const doomOne: ColorScheme = {\n name: \"doom-one\",\n dark: true,\n black: \"#000000\",\n red: \"#ff6c6b\",\n green: \"#98be65\",\n yellow: \"#ecbe7b\",\n blue: \"#a9a1e1\",\n magenta: \"#c678dd\",\n cyan: \"#51afef\",\n white: \"#bbc2cf\",\n brightBlack: \"#000000\",\n brightRed: \"#ff6655\",\n brightGreen: \"#99bb66\",\n brightYellow: \"#ecbe7b\",\n brightBlue: \"#a9a1e1\",\n brightMagenta: \"#c678dd\",\n brightCyan: \"#51afef\",\n brightWhite: \"#bfbfbf\",\n foreground: \"#bbc2cf\",\n background: \"#282c34\",\n cursorColor: \"#51afef\",\n cursorText: \"#282c34\",\n selectionBackground: \"#42444b\",\n selectionForeground: \"#bbc2cf\",\n}\n","/**\n * Mariana palette — Sublime Text's default dark theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Mariana — Sublime Text's oceanic dark theme. */\nexport const mariana: ColorScheme = {\n name: \"mariana\",\n dark: true,\n black: \"#000000\",\n red: \"#ec5f66\",\n green: \"#99c794\",\n yellow: \"#f9ae58\",\n blue: \"#6699cc\",\n magenta: \"#c695c6\",\n cyan: \"#5fb4b4\",\n white: \"#f7f7f7\",\n brightBlack: \"#333333\",\n brightRed: \"#f97b58\",\n brightGreen: \"#acd1a8\",\n brightYellow: \"#fac761\",\n brightBlue: \"#85add6\",\n brightMagenta: \"#d8b6d8\",\n brightCyan: \"#82c4c4\",\n brightWhite: \"#ffffff\",\n foreground: \"#d8dee9\",\n background: \"#343d46\",\n cursorColor: \"#fcbb6a\",\n cursorText: \"#343d46\",\n selectionBackground: \"#4e5a65\",\n selectionForeground: \"#d8dee9\",\n}\n","/**\n * Darcula palette — JetBrains' iconic dark theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Darcula — the JetBrains IDE dark theme. */\nexport const darcula: ColorScheme = {\n name: \"darcula\",\n dark: true,\n black: \"#000000\",\n red: \"#fa5355\",\n green: \"#126e00\",\n yellow: \"#c2c300\",\n blue: \"#4581eb\",\n magenta: \"#fa54ff\",\n cyan: \"#33c2c1\",\n white: \"#adadad\",\n brightBlack: \"#555555\",\n brightRed: \"#fb7172\",\n brightGreen: \"#67ff4f\",\n brightYellow: \"#ffff00\",\n brightBlue: \"#6d9df1\",\n brightMagenta: \"#fb82ff\",\n brightCyan: \"#60d3d1\",\n brightWhite: \"#eeeeee\",\n foreground: \"#adadad\",\n background: \"#202020\",\n cursorColor: \"#ffffff\",\n cursorText: \"#202020\",\n selectionBackground: \"#1a3272\",\n selectionForeground: \"#adadad\",\n}\n","/**\n * Espresso palette — the warm coffee-inspired dark theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Espresso — warm, balanced dark theme. */\nexport const espresso: ColorScheme = {\n name: \"espresso\",\n dark: true,\n black: \"#353535\",\n red: \"#d25252\",\n green: \"#a5c261\",\n yellow: \"#ffc66d\",\n blue: \"#6c99bb\",\n magenta: \"#d197d9\",\n cyan: \"#bed6ff\",\n white: \"#eeeeec\",\n brightBlack: \"#535353\",\n brightRed: \"#f00c0c\",\n brightGreen: \"#c2e075\",\n brightYellow: \"#e1e48b\",\n brightBlue: \"#8ab7d9\",\n brightMagenta: \"#efb5f7\",\n brightCyan: \"#dcf4ff\",\n brightWhite: \"#ffffff\",\n foreground: \"#ffffff\",\n background: \"#323232\",\n cursorColor: \"#d6d6d6\",\n cursorText: \"#323232\",\n selectionBackground: \"#5b5b5b\",\n selectionForeground: \"#ffffff\",\n}\n","/**\n * Iceberg palettes — cocopon's blue-tinged theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Iceberg Dark — cool blue dark theme. */\nexport const icebergDark: ColorScheme = {\n name: \"iceberg-dark\",\n dark: true,\n black: \"#1e2132\",\n red: \"#e27878\",\n green: \"#b4be82\",\n yellow: \"#e2a478\",\n blue: \"#84a0c6\",\n magenta: \"#a093c7\",\n cyan: \"#89b8c2\",\n white: \"#c6c8d1\",\n brightBlack: \"#6b7089\",\n brightRed: \"#e98989\",\n brightGreen: \"#c0ca8e\",\n brightYellow: \"#e9b189\",\n brightBlue: \"#91acd1\",\n brightMagenta: \"#ada0d3\",\n brightCyan: \"#95c4ce\",\n brightWhite: \"#d2d4de\",\n foreground: \"#c6c8d1\",\n background: \"#161821\",\n cursorColor: \"#c6c8d1\",\n cursorText: \"#161821\",\n selectionBackground: \"#c6c8d1\",\n selectionForeground: \"#161821\",\n}\n\n/** Iceberg Light — cool blue light theme. */\nexport const icebergLight: ColorScheme = {\n name: \"iceberg-light\",\n dark: false,\n black: \"#dcdfe7\",\n red: \"#cc517a\",\n green: \"#668e3d\",\n yellow: \"#c57339\",\n blue: \"#2d539e\",\n magenta: \"#7759b4\",\n cyan: \"#3f83a6\",\n white: \"#33374c\",\n brightBlack: \"#8389a3\",\n brightRed: \"#cc3768\",\n brightGreen: \"#598030\",\n brightYellow: \"#b6662d\",\n brightBlue: \"#22478e\",\n brightMagenta: \"#6845ad\",\n brightCyan: \"#327698\",\n brightWhite: \"#262a3f\",\n foreground: \"#33374c\",\n background: \"#e8e9ec\",\n cursorColor: \"#33374c\",\n cursorText: \"#e8e9ec\",\n selectionBackground: \"#33374c\",\n selectionForeground: \"#e8e9ec\",\n}\n","/**\n * Serendipity palettes — Michael Andreuzza's elegant themes.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Serendipity Midnight — deep dark variant. */\nexport const serendipityMidnight: ColorScheme = {\n name: \"serendipity-midnight\",\n dark: true,\n black: \"#232534\",\n red: \"#ee8679\",\n green: \"#9ccfd8\",\n yellow: \"#f8d2c9\",\n blue: \"#5ba2d0\",\n magenta: \"#a78bfa\",\n cyan: \"#94b8ff\",\n white: \"#dee0ef\",\n brightBlack: \"#8d8f9e\",\n brightRed: \"#ee8679\",\n brightGreen: \"#9ccfd8\",\n brightYellow: \"#f8d2c9\",\n brightBlue: \"#5ba2d0\",\n brightMagenta: \"#a78bfa\",\n brightCyan: \"#94b8ff\",\n brightWhite: \"#dee0ef\",\n foreground: \"#dee0ef\",\n background: \"#1c1e2d\",\n cursorColor: \"#6b6d7c\",\n cursorText: \"#1c1e2d\",\n selectionBackground: \"#2c2e3d\",\n selectionForeground: \"#dee0ef\",\n}\n\n/** Serendipity Morning — warm light variant. */\nexport const serendipityMorning: ColorScheme = {\n name: \"serendipity-morning\",\n dark: false,\n black: \"#f2e9de\",\n red: \"#d26a5d\",\n green: \"#77aab3\",\n yellow: \"#c8a299\",\n blue: \"#3788be\",\n magenta: \"#886cdb\",\n cyan: \"#7397de\",\n white: \"#575279\",\n brightBlack: \"#6e6a86\",\n brightRed: \"#d26a5d\",\n brightGreen: \"#77aab3\",\n brightYellow: \"#c8a299\",\n brightBlue: \"#3788be\",\n brightMagenta: \"#886cdb\",\n brightCyan: \"#7397de\",\n brightWhite: \"#575279\",\n foreground: \"#575279\",\n background: \"#fffaf3\",\n cursorColor: \"#9893a5\",\n cursorText: \"#fffaf3\",\n selectionBackground: \"#f4efea\",\n selectionForeground: \"#575279\",\n}\n","/**\n * Twilight palette — the warm, muted classic.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Twilight — warm earthy dark theme. */\nexport const twilight: ColorScheme = {\n name: \"twilight\",\n dark: true,\n black: \"#141414\",\n red: \"#c06d44\",\n green: \"#afb97a\",\n yellow: \"#c2a86c\",\n blue: \"#44474a\",\n magenta: \"#b4be7c\",\n cyan: \"#778385\",\n white: \"#ffffd4\",\n brightBlack: \"#262626\",\n brightRed: \"#de7c4c\",\n brightGreen: \"#ccd88c\",\n brightYellow: \"#e2c47e\",\n brightBlue: \"#5a5e62\",\n brightMagenta: \"#d0dc8e\",\n brightCyan: \"#8a989b\",\n brightWhite: \"#ffffd4\",\n foreground: \"#ffffd4\",\n background: \"#141414\",\n cursorColor: \"#ffffff\",\n cursorText: \"#141414\",\n selectionBackground: \"#313131\",\n selectionForeground: \"#ffffd4\",\n}\n","/**\n * Breeze palette — KDE's default terminal theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Breeze — KDE Plasma's clean dark theme. */\nexport const breeze: ColorScheme = {\n name: \"breeze\",\n dark: true,\n black: \"#31363b\",\n red: \"#ed1515\",\n green: \"#11d116\",\n yellow: \"#f67400\",\n blue: \"#1d99f3\",\n magenta: \"#9b59b6\",\n cyan: \"#1abc9c\",\n white: \"#eff0f1\",\n brightBlack: \"#7f8c8d\",\n brightRed: \"#c0392b\",\n brightGreen: \"#1cdc9a\",\n brightYellow: \"#fdbc4b\",\n brightBlue: \"#3daee9\",\n brightMagenta: \"#8e44ad\",\n brightCyan: \"#16a085\",\n brightWhite: \"#fcfcfc\",\n foreground: \"#eff0f1\",\n background: \"#31363b\",\n cursorColor: \"#eff0f1\",\n cursorText: \"#31363b\",\n selectionBackground: \"#eff0f1\",\n selectionForeground: \"#31363b\",\n}\n","/**\n * Andromeda palette — EliverLara's VS Code theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Andromeda — rich dark theme with balanced colors. */\nexport const andromeda: ColorScheme = {\n name: \"andromeda\",\n dark: true,\n black: \"#000000\",\n red: \"#cd3131\",\n green: \"#05bc79\",\n yellow: \"#e5e512\",\n blue: \"#2472c8\",\n magenta: \"#bc3fbc\",\n cyan: \"#0fa8cd\",\n white: \"#e5e5e5\",\n brightBlack: \"#666666\",\n brightRed: \"#cd3131\",\n brightGreen: \"#05bc79\",\n brightYellow: \"#e5e512\",\n brightBlue: \"#2472c8\",\n brightMagenta: \"#bc3fbc\",\n brightCyan: \"#0fa8cd\",\n brightWhite: \"#e5e5e5\",\n foreground: \"#e5e5e5\",\n background: \"#262a33\",\n cursorColor: \"#f8f8f0\",\n cursorText: \"#262a33\",\n selectionBackground: \"#5a5c62\",\n selectionForeground: \"#e5e5e5\",\n}\n","/**\n * Relaxed palette — a calm, muted dark theme.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Relaxed — low-contrast muted dark theme. */\nexport const relaxed: ColorScheme = {\n name: \"relaxed\",\n dark: true,\n black: \"#151515\",\n red: \"#bc5653\",\n green: \"#909d63\",\n yellow: \"#ebc17a\",\n blue: \"#6a8799\",\n magenta: \"#b06698\",\n cyan: \"#c9dfff\",\n white: \"#d9d9d9\",\n brightBlack: \"#636363\",\n brightRed: \"#bc5653\",\n brightGreen: \"#a0ac77\",\n brightYellow: \"#ebc17a\",\n brightBlue: \"#7eaac7\",\n brightMagenta: \"#b06698\",\n brightCyan: \"#acbbd0\",\n brightWhite: \"#f7f7f7\",\n foreground: \"#d9d9d9\",\n background: \"#353a44\",\n cursorColor: \"#d9d9d9\",\n cursorText: \"#353a44\",\n selectionBackground: \"#6a7985\",\n selectionForeground: \"#d9d9d9\",\n}\n","/**\n * Silvery's signature color schemes.\n *\n * `silvery-dark` is the default when no terminal theme is detected and the\n * background is dark; `silvery-light` is the light counterpart. Designed\n * around a cool, low-saturation palette with a silver accent — legible on\n * every terminal we test, plays well with the 38+ third-party schemes we\n * ship alongside it.\n *\n * Attribution: Bjørn Stabell (silvery project). License: MIT.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Silvery Dark — the flagship dark scheme. Cool, low-saturation, silver accent. */\nexport const silveryDark: ColorScheme = {\n name: \"silvery-dark\",\n dark: true,\n primary: \"#9FB7C9\", // silver-blue\n black: \"#1A1D23\",\n red: \"#D28078\",\n green: \"#9FB8A3\",\n yellow: \"#C79A58\",\n blue: \"#7A9BC0\",\n magenta: \"#B498BD\",\n cyan: \"#88B8C0\",\n white: \"#B8BEC9\",\n brightBlack: \"#3A3F4A\",\n brightRed: \"#E09389\",\n brightGreen: \"#B5CCB9\",\n brightYellow: \"#D8B074\",\n brightBlue: \"#9FB7C9\",\n brightMagenta: \"#CCB3D4\",\n brightCyan: \"#A0CBD4\",\n brightWhite: \"#E4E8EF\",\n foreground: \"#D8DCE3\",\n background: \"#1E2128\",\n cursorColor: \"#9FB7C9\",\n cursorText: \"#1E2128\",\n selectionBackground: \"#3A4350\",\n selectionForeground: \"#E4E8EF\",\n}\n\n/** Silvery Light — companion light scheme. High legibility, subtle tint. */\nexport const silveryLight: ColorScheme = {\n name: \"silvery-light\",\n dark: false,\n primary: \"#4A6580\", // darker silver-blue for light bg\n black: \"#2C3038\",\n red: \"#B4614A\",\n green: \"#5C7D60\",\n yellow: \"#9A7030\",\n blue: \"#4A6B94\",\n magenta: \"#845D92\",\n cyan: \"#4A8894\",\n white: \"#6A7080\",\n brightBlack: \"#454A55\",\n brightRed: \"#C07760\",\n brightGreen: \"#759378\",\n brightYellow: \"#B48845\",\n brightBlue: \"#5F7FA4\",\n brightMagenta: \"#96759E\",\n brightCyan: \"#5F9CA4\",\n brightWhite: \"#2C3038\",\n foreground: \"#2C3038\",\n background: \"#F5F6F8\",\n cursorColor: \"#4A6580\",\n cursorText: \"#F5F6F8\",\n selectionBackground: \"#D8DCE3\",\n selectionForeground: \"#2C3038\",\n}\n","/**\n * Classic terminal default schemes — useful for fingerprint matching against\n * users still on stock terminal configurations.\n *\n * Each scheme reflects the OUT-OF-THE-BOX defaults of a major terminal. They\n * are NOT aesthetic recommendations — they're anchor points for\n * `fingerprintMatch` to identify \"this user hasn't changed their terminal\n * theme.\" Apps can then choose to style accordingly (or offer to set a nicer\n * scheme).\n *\n * Attribution: sourced from public terminal documentation + defaults repos.\n * License: values are factual defaults, not copyrightable.\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Classic IBM VGA 16-color palette (circa 1987). The OG 16 colors. */\nexport const vga: ColorScheme = {\n name: \"vga\",\n dark: true,\n black: \"#000000\",\n red: \"#AA0000\",\n green: \"#00AA00\",\n yellow: \"#AA5500\",\n blue: \"#0000AA\",\n magenta: \"#AA00AA\",\n cyan: \"#00AAAA\",\n white: \"#AAAAAA\",\n brightBlack: \"#555555\",\n brightRed: \"#FF5555\",\n brightGreen: \"#55FF55\",\n brightYellow: \"#FFFF55\",\n brightBlue: \"#5555FF\",\n brightMagenta: \"#FF55FF\",\n brightCyan: \"#55FFFF\",\n brightWhite: \"#FFFFFF\",\n foreground: \"#AAAAAA\",\n background: \"#000000\",\n cursorColor: \"#FFFFFF\",\n cursorText: \"#000000\",\n selectionBackground: \"#888888\",\n selectionForeground: \"#000000\",\n}\n\n/** xterm's default palette (X Consortium). The reference terminal defaults. */\nexport const xtermDefault: ColorScheme = {\n name: \"xterm-default\",\n dark: true,\n black: \"#000000\",\n red: \"#CD0000\",\n green: \"#00CD00\",\n yellow: \"#CDCD00\",\n blue: \"#0000EE\",\n magenta: \"#CD00CD\",\n cyan: \"#00CDCD\",\n white: \"#E5E5E5\",\n brightBlack: \"#7F7F7F\",\n brightRed: \"#FF0000\",\n brightGreen: \"#00FF00\",\n brightYellow: \"#FFFF00\",\n brightBlue: \"#5C5CFF\",\n brightMagenta: \"#FF00FF\",\n brightCyan: \"#00FFFF\",\n brightWhite: \"#FFFFFF\",\n foreground: \"#E5E5E5\",\n background: \"#000000\",\n cursorColor: \"#E5E5E5\",\n cursorText: \"#000000\",\n selectionBackground: \"#555555\",\n selectionForeground: \"#E5E5E5\",\n}\n\n/** Apple Terminal.app \"Basic\" profile. */\nexport const appleTerminalBasic: ColorScheme = {\n name: \"apple-terminal-basic\",\n dark: false,\n black: \"#000000\",\n red: \"#990000\",\n green: \"#00A600\",\n yellow: \"#999900\",\n blue: \"#0000B2\",\n magenta: \"#B200B2\",\n cyan: \"#00A6B2\",\n white: \"#BFBFBF\",\n brightBlack: \"#666666\",\n brightRed: \"#E50000\",\n brightGreen: \"#00D900\",\n brightYellow: \"#E5E500\",\n brightBlue: \"#0000FF\",\n brightMagenta: \"#E500E5\",\n brightCyan: \"#00E5E5\",\n brightWhite: \"#E5E5E5\",\n foreground: \"#000000\",\n background: \"#FFFFFF\",\n cursorColor: \"#000000\",\n cursorText: \"#FFFFFF\",\n selectionBackground: \"#B5D5FF\",\n selectionForeground: \"#000000\",\n}\n\n/** Windows Terminal (Campbell scheme — the default profile on Windows 10/11). */\nexport const windowsTerminalCampbell: ColorScheme = {\n name: \"windows-terminal-campbell\",\n dark: true,\n black: \"#0C0C0C\",\n red: \"#C50F1F\",\n green: \"#13A10E\",\n yellow: \"#C19C00\",\n blue: \"#0037DA\",\n magenta: \"#881798\",\n cyan: \"#3A96DD\",\n white: \"#CCCCCC\",\n brightBlack: \"#767676\",\n brightRed: \"#E74856\",\n brightGreen: \"#16C60C\",\n brightYellow: \"#F9F1A5\",\n brightBlue: \"#3B78FF\",\n brightMagenta: \"#B4009E\",\n brightCyan: \"#61D6D6\",\n brightWhite: \"#F2F2F2\",\n foreground: \"#CCCCCC\",\n background: \"#0C0C0C\",\n cursorColor: \"#FFFFFF\",\n cursorText: \"#0C0C0C\",\n selectionBackground: \"#FFFFFF\",\n selectionForeground: \"#0C0C0C\",\n}\n\n/** GNOME Terminal (Tango variant — the default on many Linux distros). */\nexport const gnomeTerminalTango: ColorScheme = {\n name: \"gnome-terminal-tango\",\n dark: true,\n black: \"#2E3436\",\n red: \"#CC0000\",\n green: \"#4E9A06\",\n yellow: \"#C4A000\",\n blue: \"#3465A4\",\n magenta: \"#75507B\",\n cyan: \"#06989A\",\n white: \"#D3D7CF\",\n brightBlack: \"#555753\",\n brightRed: \"#EF2929\",\n brightGreen: \"#8AE234\",\n brightYellow: \"#FCE94F\",\n brightBlue: \"#729FCF\",\n brightMagenta: \"#AD7FA8\",\n brightCyan: \"#34E2E2\",\n brightWhite: \"#EEEEEC\",\n foreground: \"#D3D7CF\",\n background: \"#300A24\",\n cursorColor: \"#D3D7CF\",\n cursorText: \"#300A24\",\n selectionBackground: \"#555753\",\n selectionForeground: \"#D3D7CF\",\n}\n","/**\n * Built-in themes and palette registry.\n *\n * Exports:\n * - Pre-derived Theme objects (ansi16Dark, ansi16Light, defaultDark, defaultLight)\n * - ColorScheme definitions from popular theme systems (70+ palettes)\n * - Registry functions (getThemeByName, getSchemeByName)\n */\n\nimport {\n deriveTheme,\n ansi16DarkTheme as _ansi16DarkTheme,\n ansi16LightTheme as _ansi16LightTheme,\n} from \"@silvery/ansi\"\nimport type { Theme, ColorScheme } from \"@silvery/ansi\"\nimport { inlineSterlingTokens } from \"../sterling/inline.ts\"\n\n// ── Re-export all palette definitions ──────────────────────────────\nexport {\n catppuccinMocha,\n catppuccinFrappe,\n catppuccinMacchiato,\n catppuccinLatte,\n} from \"./catppuccin\"\nexport { nord } from \"./nord\"\nexport { dracula } from \"./dracula\"\nexport { solarizedDark, solarizedLight } from \"./solarized\"\nexport { tokyoNight, tokyoNightStorm, tokyoNightDay } from \"./tokyo-night\"\nexport { oneDark } from \"./one-dark\"\nexport { gruvboxDark, gruvboxLight } from \"./gruvbox\"\nexport { rosePine, rosePineMoon, rosePineDawn } from \"./rose-pine\"\nexport { kanagawaWave, kanagawaDragon, kanagawaLotus } from \"./kanagawa\"\nexport { everforestDark, everforestLight } from \"./everforest\"\nexport { monokai, monokaiPro } from \"./monokai\"\nexport { snazzy } from \"./snazzy\"\nexport { materialDark, materialLight } from \"./material\"\nexport { palenight } from \"./palenight\"\nexport { ayuDark, ayuMirage, ayuLight } from \"./ayu\"\nexport { nightfox, dawnfox } from \"./nightfox\"\nexport { horizon } from \"./horizon\"\nexport { moonfly } from \"./moonfly\"\nexport { nightfly } from \"./nightfly\"\nexport { oxocarbonDark, oxocarbonLight } from \"./oxocarbon\"\nexport { sonokai } from \"./sonokai\"\nexport { edgeDark, edgeLight } from \"./edge\"\nexport { modusVivendi, modusOperandi } from \"./modus\"\n// New palettes\nexport { githubDark, githubLight } from \"./github\"\nexport { cobalt2 } from \"./cobalt2\"\nexport { synthwave, synthwave84 } from \"./synthwave\"\nexport { tomorrowNight, tomorrowNightBlue, tomorrowNightEighties } from \"./tomorrow-night\"\nexport { zenburn } from \"./zenburn\"\nexport { ubuntu } from \"./ubuntu\"\nexport { tangoDark, tangoLight } from \"./tango\"\nexport { cyberpunk } from \"./cyberpunk\"\nexport { vscodeDark } from \"./vscode\"\nexport { oneLight, oneHalfDark, oneHalfLight } from \"./one-light\"\nexport { nightOwlLight } from \"./night-owl\"\nexport { shadesOfPurple } from \"./shades-of-purple\"\nexport { homebrew } from \"./homebrew\"\nexport { neon } from \"./neon\"\nexport { challengerDeep } from \"./challenger-deep\"\nexport { doomOne } from \"./doom-one\"\nexport { mariana } from \"./mariana\"\nexport { darcula } from \"./darcula\"\nexport { espresso } from \"./espresso\"\nexport { icebergDark, icebergLight } from \"./iceberg\"\nexport { serendipityMidnight, serendipityMorning } from \"./serendipity\"\nexport { twilight } from \"./twilight\"\nexport { breeze } from \"./breeze\"\nexport { andromeda } from \"./andromeda\"\nexport { relaxed } from \"./relaxed\"\nexport { silveryDark, silveryLight } from \"./silvery\"\nexport {\n vga,\n xtermDefault,\n appleTerminalBasic,\n windowsTerminalCampbell,\n gnomeTerminalTango,\n} from \"./classics\"\n\n// ── Import for registry ────────────────────────────────────────────\nimport {\n catppuccinMocha,\n catppuccinFrappe,\n catppuccinMacchiato,\n catppuccinLatte,\n} from \"./catppuccin\"\nimport { nord } from \"./nord\"\nimport { dracula } from \"./dracula\"\nimport { solarizedDark, solarizedLight } from \"./solarized\"\nimport { tokyoNight, tokyoNightStorm, tokyoNightDay } from \"./tokyo-night\"\nimport { oneDark } from \"./one-dark\"\nimport { gruvboxDark, gruvboxLight } from \"./gruvbox\"\nimport { rosePine, rosePineMoon, rosePineDawn } from \"./rose-pine\"\nimport { kanagawaWave, kanagawaDragon, kanagawaLotus } from \"./kanagawa\"\nimport { everforestDark, everforestLight } from \"./everforest\"\nimport { monokai, monokaiPro } from \"./monokai\"\nimport { snazzy } from \"./snazzy\"\nimport { materialDark, materialLight } from \"./material\"\nimport { palenight } from \"./palenight\"\nimport { ayuDark, ayuMirage, ayuLight } from \"./ayu\"\nimport { nightfox, dawnfox } from \"./nightfox\"\nimport { horizon } from \"./horizon\"\nimport { moonfly } from \"./moonfly\"\nimport { nightfly } from \"./nightfly\"\nimport { oxocarbonDark, oxocarbonLight } from \"./oxocarbon\"\nimport { sonokai } from \"./sonokai\"\nimport { edgeDark, edgeLight } from \"./edge\"\nimport { modusVivendi, modusOperandi } from \"./modus\"\n// New palettes\nimport { githubDark, githubLight } from \"./github\"\nimport { cobalt2 } from \"./cobalt2\"\nimport { synthwave, synthwave84 } from \"./synthwave\"\nimport { tomorrowNight, tomorrowNightBlue, tomorrowNightEighties } from \"./tomorrow-night\"\nimport { zenburn } from \"./zenburn\"\nimport { ubuntu } from \"./ubuntu\"\nimport { tangoDark, tangoLight } from \"./tango\"\nimport { cyberpunk } from \"./cyberpunk\"\nimport { vscodeDark } from \"./vscode\"\nimport { oneLight, oneHalfDark, oneHalfLight } from \"./one-light\"\nimport { nightOwlLight } from \"./night-owl\"\nimport { shadesOfPurple } from \"./shades-of-purple\"\nimport { homebrew } from \"./homebrew\"\nimport { neon } from \"./neon\"\nimport { challengerDeep } from \"./challenger-deep\"\nimport { doomOne } from \"./doom-one\"\nimport { mariana } from \"./mariana\"\nimport { darcula } from \"./darcula\"\nimport { espresso } from \"./espresso\"\nimport { icebergDark, icebergLight } from \"./iceberg\"\nimport { serendipityMidnight, serendipityMorning } from \"./serendipity\"\nimport { twilight } from \"./twilight\"\nimport { breeze } from \"./breeze\"\nimport { andromeda } from \"./andromeda\"\nimport { relaxed } from \"./relaxed\"\nimport { silveryDark, silveryLight } from \"./silvery\"\nimport {\n vga,\n xtermDefault,\n appleTerminalBasic,\n windowsTerminalCampbell,\n gnomeTerminalTango,\n} from \"./classics\"\n\n// ============================================================================\n// ANSI 16 Themes (derived from default dark/light schemes — hex-valued)\n// ============================================================================\n\n/**\n * Dark ANSI 16 theme — hex-valued, derived from the default dark scheme.\n * All token values are hex strings (no ANSI slot names).\n * Terminal rendering quantizes hex to 4-bit ANSI codes when colorLevel === \"basic\".\n *\n * Sterling flat tokens (`bg-surface-subtle`, `fg-on-accent`, `border-focus`, …)\n * are baked in at construction — consumers can read either legacy fields or\n * Sterling flat keys off the same Theme object.\n */\nexport const ansi16DarkTheme: Theme = inlineSterlingTokens(_ansi16DarkTheme)\n\n/**\n * Light ANSI 16 theme — hex-valued, derived from the default light scheme.\n * All token values are hex strings (no ANSI slot names).\n * Terminal rendering quantizes hex to 4-bit ANSI codes when colorLevel === \"basic\".\n *\n * Sterling flat tokens baked in at construction.\n */\nexport const ansi16LightTheme: Theme = inlineSterlingTokens(_ansi16LightTheme)\n\n// ============================================================================\n// Default Truecolor Themes (derived from Nord palette)\n// ============================================================================\n\n/** Dark truecolor theme — derived from Nord. Sterling flat tokens baked in. */\nexport const defaultDarkTheme: Theme = inlineSterlingTokens(deriveTheme(nord), nord)\n\n/** Light truecolor theme — derived from Catppuccin Latte. Sterling flat tokens baked in. */\nexport const defaultLightTheme: Theme = inlineSterlingTokens(\n deriveTheme(catppuccinLatte),\n catppuccinLatte,\n)\n\n// ============================================================================\n// Registry\n// ============================================================================\n\n/** All built-in ColorScheme definitions (70+ palettes). */\nexport const builtinPalettes: Record<string, ColorScheme> = {\n // Catppuccin\n \"catppuccin-mocha\": catppuccinMocha,\n \"catppuccin-frappe\": catppuccinFrappe,\n \"catppuccin-macchiato\": catppuccinMacchiato,\n \"catppuccin-latte\": catppuccinLatte,\n // Nord\n nord: nord,\n // Dracula\n dracula: dracula,\n // Solarized\n \"solarized-dark\": solarizedDark,\n \"solarized-light\": solarizedLight,\n // Tokyo Night\n \"tokyo-night\": tokyoNight,\n \"tokyo-night-storm\": tokyoNightStorm,\n \"tokyo-night-day\": tokyoNightDay,\n // One Dark\n \"one-dark\": oneDark,\n // Gruvbox\n \"gruvbox-dark\": gruvboxDark,\n \"gruvbox-light\": gruvboxLight,\n // Rose Pine\n \"rose-pine\": rosePine,\n \"rose-pine-moon\": rosePineMoon,\n \"rose-pine-dawn\": rosePineDawn,\n // Kanagawa\n \"kanagawa-wave\": kanagawaWave,\n \"kanagawa-dragon\": kanagawaDragon,\n \"kanagawa-lotus\": kanagawaLotus,\n // Everforest\n \"everforest-dark\": everforestDark,\n \"everforest-light\": everforestLight,\n // Monokai\n monokai: monokai,\n \"monokai-pro\": monokaiPro,\n // Snazzy\n snazzy: snazzy,\n // Material\n \"material-dark\": materialDark,\n \"material-light\": materialLight,\n // Palenight\n palenight: palenight,\n // Ayu\n \"ayu-dark\": ayuDark,\n \"ayu-mirage\": ayuMirage,\n \"ayu-light\": ayuLight,\n // Nightfox\n nightfox: nightfox,\n dawnfox: dawnfox,\n // Horizon\n horizon: horizon,\n // Moonfly\n moonfly: moonfly,\n // Nightfly\n nightfly: nightfly,\n // Oxocarbon\n \"oxocarbon-dark\": oxocarbonDark,\n \"oxocarbon-light\": oxocarbonLight,\n // Sonokai\n sonokai: sonokai,\n // Edge\n \"edge-dark\": edgeDark,\n \"edge-light\": edgeLight,\n // Modus\n \"modus-vivendi\": modusVivendi,\n \"modus-operandi\": modusOperandi,\n // GitHub\n \"github-dark\": githubDark,\n \"github-light\": githubLight,\n // Cobalt2\n cobalt2: cobalt2,\n // Synthwave\n synthwave: synthwave,\n \"synthwave-84\": synthwave84,\n // Tomorrow Night\n \"tomorrow-night\": tomorrowNight,\n \"tomorrow-night-blue\": tomorrowNightBlue,\n \"tomorrow-night-eighties\": tomorrowNightEighties,\n // Zenburn\n zenburn: zenburn,\n // Ubuntu\n ubuntu: ubuntu,\n // Tango\n \"tango-dark\": tangoDark,\n \"tango-light\": tangoLight,\n // Cyberpunk\n cyberpunk: cyberpunk,\n // VS Code\n \"vscode-dark\": vscodeDark,\n // One Light / One Half\n \"one-light\": oneLight,\n \"one-half-dark\": oneHalfDark,\n \"one-half-light\": oneHalfLight,\n // Night Owl\n \"night-owl-light\": nightOwlLight,\n // Shades of Purple\n \"shades-of-purple\": shadesOfPurple,\n // Homebrew\n homebrew: homebrew,\n // Neon\n neon: neon,\n // Challenger Deep\n \"challenger-deep\": challengerDeep,\n // Doom One\n \"doom-one\": doomOne,\n // Mariana\n mariana: mariana,\n // Darcula (JetBrains)\n darcula: darcula,\n // Espresso\n espresso: espresso,\n // Iceberg\n \"iceberg-dark\": icebergDark,\n \"iceberg-light\": icebergLight,\n // Serendipity\n \"serendipity-midnight\": serendipityMidnight,\n \"serendipity-morning\": serendipityMorning,\n // Twilight\n twilight: twilight,\n // Breeze (KDE)\n breeze: breeze,\n // Andromeda\n andromeda: andromeda,\n // Relaxed\n relaxed: relaxed,\n // Silvery signatures (defaults)\n \"silvery-dark\": silveryDark,\n \"silvery-light\": silveryLight,\n // Classic terminal defaults (anchor points for fingerprint matching)\n vga: vga,\n \"xterm-default\": xtermDefault,\n \"apple-terminal-basic\": appleTerminalBasic,\n \"windows-terminal-campbell\": windowsTerminalCampbell,\n \"gnome-terminal-tango\": gnomeTerminalTango,\n}\n\n/** All built-in themes, indexed by name (includes backward-compat aliases). */\nexport const builtinThemes: Record<string, Theme> = {\n // ANSI 16\n \"dark-ansi16\": ansi16DarkTheme,\n \"light-ansi16\": ansi16LightTheme,\n // Truecolor defaults\n \"dark-truecolor\": defaultDarkTheme,\n \"light-truecolor\": defaultLightTheme,\n // Old names as aliases\n dark: defaultDarkTheme,\n light: defaultLightTheme,\n \"ansi16-dark\": ansi16DarkTheme,\n \"ansi16-light\": ansi16LightTheme,\n}\n\n/** Resolve a theme by name. Defaults to dark-ansi16. */\nexport function getThemeByName(name?: string): Theme {\n if (!name) return ansi16DarkTheme\n // Check pre-built themes first\n const builtin = builtinThemes[name]\n if (builtin) return builtin\n // Check palettes (derive on first access) — bake Sterling flat tokens in\n // so `$fg-accent` / `$bg-surface-subtle` / etc. resolve the same way the\n // default themes do.\n const palette = builtinPalettes[name]\n if (palette) return inlineSterlingTokens(deriveTheme(palette), palette)\n return ansi16DarkTheme\n}\n\n/** Resolve a palette by name. Returns undefined if not found. */\nexport function getSchemeByName(name: string): ColorScheme | undefined {\n return builtinPalettes[name]\n}\n","/**\n * Palette generators — produce a ColorScheme from various inputs.\n *\n * All generators return a complete ColorScheme (22 fields).\n */\n\nimport { hexToOklch, oklchToHex, brighten, darken, blend, relativeLuminance } from \"@silvery/color\"\nimport { importBase16 as importBase16Internal } from \"./import/base16\"\nimport { getSchemeByName } from \"./schemes/index\"\nimport type { ColorScheme, HueName } from \"@silvery/ansi\"\n\n// ============================================================================\n// Luminance\n// ============================================================================\n\nfunction isDarkColor(hex: string): boolean {\n const L = relativeLuminance(hex)\n return L === null ? true : L < 0.5\n}\n\n// ============================================================================\n// Accent Generation\n// ============================================================================\n\n/**\n * Target hues for each accent slot, in OKLCH degrees.\n * OKLCH hues differ from HSL — red ≈ 29, green ≈ 142, blue ≈ 264. Calibrated\n * per Ottosson's reference ramps for perceptually-uniform accent generation.\n */\nconst targetHues: Record<HueName, number> = {\n red: 29,\n orange: 55,\n yellow: 90,\n green: 142,\n teal: 195,\n blue: 240,\n purple: 305,\n pink: 350,\n}\n\n/** Find which hue slot the primary color best matches by OKLCH hue angle proximity. */\nexport function assignPrimaryToSlot(primary: string): HueName {\n const o = hexToOklch(primary)\n if (!o) return \"blue\"\n const h = o.H\n const slots: [number, number, HueName][] = [\n [0, 15, \"red\"],\n [15, 42, \"orange\"],\n [42, 75, \"yellow\"],\n [75, 170, \"green\"],\n [170, 210, \"teal\"],\n [210, 275, \"blue\"],\n [275, 330, \"purple\"],\n [330, 360, \"pink\"],\n ]\n for (const [lo, hi, name] of slots) {\n if (h >= lo && h < hi) return name\n }\n // Fallback: red band wraps around 0 — anything >345 or <15 is red.\n return \"red\"\n}\n\n/** Generate 8 accent hues from a primary, placing it in its natural slot. */\nfunction generateAccentsFromPrimary(primary: string): Record<HueName, string> {\n const o = hexToOklch(primary)\n if (!o) {\n return {\n red: \"#BF616A\",\n orange: \"#D08770\",\n yellow: \"#EBCB8B\",\n green: \"#A3BE8C\",\n teal: \"#88C0D0\",\n blue: \"#5E81AC\",\n purple: \"#B48EAD\",\n pink: \"#D4879C\",\n }\n }\n const slot = assignPrimaryToSlot(primary)\n const result = {} as Record<HueName, string>\n for (const [name, targetH] of Object.entries(targetHues) as [HueName, number][]) {\n // Hue rotation in OKLCH preserves L + C so all accents have equal\n // perceived lightness and colorfulness — the defining property of a\n // visually-balanced accent ramp.\n result[name] = name === slot ? primary : oklchToHex({ L: o.L, C: o.C, H: targetH })\n }\n return result\n}\n\n// ============================================================================\n// fromBase16 — Base16 YAML → ColorScheme\n// ============================================================================\n\n/**\n * Generate a ColorScheme from a Base16 YAML scheme.\n *\n * Maps base00–base0F to ANSI palette colors, derives special colors.\n */\nexport function fromBase16(yamlOrJson: string): ColorScheme {\n return importBase16Internal(yamlOrJson)\n}\n\n// ============================================================================\n// fromColors — Generate full palette from 1-3 hex colors\n// ============================================================================\n\ninterface FromColorsOptions {\n /** Background color (infers dark/light). */\n background?: string\n /** Foreground/text color. Generated if omitted. */\n foreground?: string\n /** Primary accent color. Generated if omitted. */\n primary?: string\n /** Force dark mode. */\n dark?: boolean\n /** Theme name. */\n name?: string\n}\n\n/**\n * Generate a full ColorScheme from 1-3 hex colors.\n *\n * At minimum, provide `background` or `primary`. Missing colors are\n * generated via surface ramp (from bg) and hue rotation (from primary).\n */\nexport function fromColors(opts: FromColorsOptions): ColorScheme {\n const dark = opts.dark ?? (opts.background ? isDarkColor(opts.background) : true)\n const step = dark ? brighten : darken\n\n // Generate background if not provided\n const bg = opts.background ?? (dark ? \"#2E3440\" : \"#FFFFFF\")\n const fg = opts.foreground ?? step(bg, 0.85)\n\n // Generate accents from primary or defaults\n const accents = opts.primary\n ? generateAccentsFromPrimary(opts.primary)\n : {\n red: \"#BF616A\",\n orange: \"#D08770\",\n yellow: \"#EBCB8B\",\n green: \"#A3BE8C\",\n teal: \"#88C0D0\",\n blue: \"#5E81AC\",\n purple: \"#B48EAD\",\n pink: \"#D4879C\",\n }\n\n // Surface ramp for grayscale ANSI colors\n const black = dark ? darken(bg, 0.05) : darken(bg, 0.1)\n const white = dark ? blend(fg, bg, 0.3) : blend(bg, fg, 0.3)\n const brightBlack = step(bg, 0.15)\n const brightWhite = dark ? fg : brighten(fg, 0.1)\n\n return {\n name: opts.name ?? (dark ? \"generated-dark\" : \"generated-light\"),\n dark,\n primary: opts.primary,\n black,\n red: accents.red,\n green: accents.green,\n yellow: accents.yellow,\n blue: accents.blue,\n magenta: accents.purple,\n cyan: accents.teal,\n white,\n brightBlack,\n brightRed: accents.orange,\n brightGreen: brighten(accents.green, 0.15),\n brightYellow: brighten(accents.yellow, 0.15),\n brightBlue: brighten(accents.blue, 0.15),\n brightMagenta: accents.pink,\n brightCyan: brighten(accents.teal, 0.15),\n brightWhite,\n foreground: fg,\n background: bg,\n cursorColor: fg,\n cursorText: bg,\n selectionBackground: blend(bg, accents.blue, 0.3),\n selectionForeground: fg,\n }\n}\n\n// ============================================================================\n// fromPreset — Look up a built-in ColorScheme by name\n// ============================================================================\n\n/**\n * Look up a built-in palette by name.\n *\n * @returns The ColorScheme, or undefined if not found.\n */\nexport function fromPreset(name: string): ColorScheme | undefined {\n return getSchemeByName(name)\n}\n\n// ============================================================================\n// ThemePalette → ColorScheme conversion (migration helper)\n// ============================================================================\n\n/** Old ThemePalette shape for migration. */\ninterface OldThemePalette {\n name: string\n dark: boolean\n crust: string\n base: string\n surface: string\n overlay: string\n subtext: string\n text: string\n red: string\n orange: string\n yellow: string\n green: string\n teal: string\n blue: string\n purple: string\n pink: string\n}\n\n/**\n * Convert an old ThemePalette to a ColorScheme.\n *\n * Mapping:\n * black = crust, red/green/yellow/blue = direct, magenta = purple,\n * cyan = teal, white = subtext, brightBlack = surface,\n * brightRed = orange, bright{green,yellow,blue,cyan} = brighten(normal),\n * brightMagenta = pink, brightWhite = text,\n * foreground = text, background = base,\n * cursor = text/base, selection = overlay/text.\n */\nexport function themePaletteToColorScheme(p: OldThemePalette): ColorScheme {\n return {\n name: p.name,\n dark: p.dark,\n black: p.crust,\n red: p.red,\n green: p.green,\n yellow: p.yellow,\n blue: p.blue,\n magenta: p.purple,\n cyan: p.teal,\n white: p.subtext,\n brightBlack: p.surface,\n brightRed: p.orange,\n brightGreen: brighten(p.green, 0.15),\n brightYellow: brighten(p.yellow, 0.15),\n brightBlue: brighten(p.blue, 0.15),\n brightMagenta: p.pink,\n brightCyan: brighten(p.teal, 0.15),\n brightWhite: p.text,\n foreground: p.text,\n background: p.base,\n cursorColor: p.text,\n cursorText: p.base,\n selectionBackground: p.overlay,\n selectionForeground: p.text,\n }\n}\n","/**\n * Chainable theme builder — create themes from minimal input.\n *\n * @example\n * ```typescript\n * // Just a background color\n * const theme = createTheme().bg('#2E3440').build()\n *\n * // Primary + explicit dark mode\n * const theme = createTheme().primary('#EBCB8B').dark().build()\n *\n * // Three-color input (dark/light inferred from bg luminance)\n * const theme = createTheme()\n * .bg('#2E3440').fg('#ECEFF4').primary('#EBCB8B').build()\n *\n * // Preset with override\n * const theme = createTheme().preset('nord').primary('#A3BE8C').build()\n * ```\n */\n\nimport { hexToRgb } from \"@silvery/color\"\nimport { deriveTheme } from \"@silvery/ansi\"\nimport { fromColors, assignPrimaryToSlot } from \"./generators\"\nimport { getSchemeByName } from \"./schemes/index\"\nimport type { Theme, ColorScheme, HueName } from \"@silvery/ansi\"\n\n// ============================================================================\n// Luminance\n// ============================================================================\n\nfunction isDarkColor(hex: string): boolean {\n const rgb = hexToRgb(hex)\n if (!rgb) return true\n return (rgb[0] + rgb[1] + rgb[2]) / (255 * 3) < 0.5\n}\n\n// ============================================================================\n// Builder\n// ============================================================================\n\ninterface ThemeBuilderState {\n dark?: boolean\n bgColor?: string\n fgColor?: string\n primaryColor?: string\n colors: Partial<ColorScheme>\n presetPalette?: ColorScheme\n}\n\nexport interface ThemeBuilder {\n /** Set background color. */\n bg(color: string): ThemeBuilder\n /** Set foreground color. */\n fg(color: string): ThemeBuilder\n /** Set primary accent color. */\n primary(color: string): ThemeBuilder\n /** Alias for `.primary()`. */\n accent(color: string): ThemeBuilder\n /** Force dark mode. */\n dark(): ThemeBuilder\n /** Force light mode. */\n light(): ThemeBuilder\n /** Set any palette color by name. */\n color(name: keyof Omit<ColorScheme, \"name\" | \"dark\">, value: string): ThemeBuilder\n /** Set full palette at once. */\n palette(p: ColorScheme): ThemeBuilder\n /** Load a built-in palette by name. */\n preset(name: string): ThemeBuilder\n /** Derive the final Theme from accumulated state. */\n build(): Theme\n}\n\n/** Create a chainable theme builder. */\nexport function createTheme(): ThemeBuilder {\n const state: ThemeBuilderState = { colors: {} }\n\n const builder: ThemeBuilder = {\n bg(color) {\n state.bgColor = color\n return builder\n },\n fg(color) {\n state.fgColor = color\n return builder\n },\n primary(color) {\n state.primaryColor = color\n return builder\n },\n accent(color) {\n return builder.primary(color)\n },\n dark() {\n state.dark = true\n return builder\n },\n light() {\n state.dark = false\n return builder\n },\n color(name, value) {\n ;(state.colors as Record<string, string>)[name] = value\n return builder\n },\n palette(p) {\n state.presetPalette = p\n return builder\n },\n preset(name) {\n const p = getSchemeByName(name)\n if (p) state.presetPalette = p\n return builder\n },\n\n build(): Theme {\n const isDark = state.dark ?? (state.bgColor ? isDarkColor(state.bgColor) : true)\n\n let palette: ColorScheme\n\n if (state.presetPalette) {\n // Start from preset, apply overrides\n palette = { ...state.presetPalette }\n if (state.bgColor) palette.background = state.bgColor\n if (state.fgColor) palette.foreground = state.fgColor\n if (state.primaryColor) {\n // Set semantic primary seed so deriveTheme() uses it\n palette.primary = state.primaryColor\n // Also place in the appropriate ANSI slot for accent derivation\n const slot = assignPrimaryToSlot(state.primaryColor)\n const ansiName = hueToAnsiField(slot)\n ;(palette as unknown as Record<string, string>)[ansiName] = state.primaryColor\n }\n palette.dark = isDark\n } else {\n // Generate from minimal input\n palette = fromColors({\n background: state.bgColor,\n foreground: state.fgColor,\n primary: state.primaryColor,\n dark: isDark,\n })\n }\n\n // Apply explicit color overrides\n for (const [key, val] of Object.entries(state.colors)) {\n if (val !== undefined && typeof val === \"string\")\n (palette as unknown as Record<string, string>)[key] = val\n }\n\n return deriveTheme(palette)\n },\n }\n\n return builder\n}\n\n/** Map a HueName to the corresponding ColorScheme field. */\nfunction hueToAnsiField(hue: HueName): keyof ColorScheme {\n const map: Record<HueName, keyof ColorScheme> = {\n red: \"red\",\n orange: \"brightRed\",\n yellow: \"yellow\",\n green: \"green\",\n teal: \"cyan\",\n blue: \"blue\",\n purple: \"magenta\",\n pink: \"brightMagenta\",\n }\n return map[hue]\n}\n\n// ============================================================================\n// Convenience Functions\n// ============================================================================\n\n/**\n * Quick theme from a primary color or color name.\n *\n * @example\n * ```typescript\n * quickTheme('#EBCB8B', 'dark') // yellow primary, dark mode\n * quickTheme('blue') // blue primary, default dark\n * ```\n */\nexport function quickTheme(primaryOrHex: string, mode?: \"dark\" | \"light\"): Theme {\n const b = createTheme()\n if (primaryOrHex.startsWith(\"#\")) {\n b.primary(primaryOrHex)\n } else {\n const namedColors: Record<string, string> = {\n red: \"#BF616A\",\n orange: \"#D08770\",\n yellow: \"#EBCB8B\",\n green: \"#A3BE8C\",\n teal: \"#88C0D0\",\n cyan: \"#88C0D0\",\n blue: \"#5E81AC\",\n purple: \"#B48EAD\",\n pink: \"#D4879C\",\n magenta: \"#B48EAD\",\n white: \"#ECEFF4\",\n }\n b.primary(namedColors[primaryOrHex] ?? \"#5E81AC\")\n }\n if (mode === \"dark\") b.dark()\n else if (mode === \"light\") b.light()\n return b.build()\n}\n\n/**\n * Create a theme from a built-in preset name.\n *\n * @example\n * ```typescript\n * presetTheme('catppuccin-mocha')\n * presetTheme('nord')\n * ```\n */\nexport function presetTheme(name: string): Theme {\n return createTheme().preset(name).build()\n}\n","/**\n * Auto-generate themes — create a complete Theme from a single primary color.\n *\n * Uses OKLCH color manipulation to derive complementary and analogous colors\n * for the full palette from one input color. OKLCH preserves perceived\n * lightness and chroma across hue rotations, so accent ramps look balanced.\n */\n\nimport { hexToOklch, oklchToHex, blend } from \"@silvery/color\"\nimport { fromColors } from \"./generators\"\nimport { deriveTheme } from \"@silvery/ansi\"\nimport type { Theme } from \"@silvery/ansi\"\n\n/** Standard OKLCH hue positions for semantic accents (degrees).\n * OKLCH hues differ from HSL: red≈29, orange≈55, yellow≈90, green≈142,\n * teal≈195, blue≈240, purple≈305, pink≈350. Calibrated against Ottosson's\n * reference ramps. */\nconst HUE = {\n red: 29,\n orangeBright: 55,\n yellow: 90,\n green: 142,\n cyan: 195,\n blue: 240,\n magenta: 310,\n pinkBright: 350,\n} as const\n\n/**\n * Generate a complete Theme from a single primary color.\n *\n * Derives a full ColorScheme using OKLCH color manipulation:\n * - Background/foreground from lightness endpoints using the primary's hue\n * - Complementary and analogous accent colors from hue rotation\n * - Surface ramp from bg lightness offsets\n * - Status colors (error, warning, success, info) from standard hue positions\n *\n * @param primaryColor - A hex color string (e.g. \"#5E81AC\")\n * @param mode - \"dark\" or \"light\" theme mode\n * @returns A complete Theme with all 33 semantic tokens\n *\n * @example\n * ```typescript\n * const theme = autoGenerateTheme(\"#5E81AC\", \"dark\")\n * // Generates a full dark theme with blue as the primary accent\n *\n * const light = autoGenerateTheme(\"#E06C75\", \"light\")\n * // Generates a full light theme with red/rose as the primary accent\n * ```\n */\nexport function autoGenerateTheme(primaryColor: string, mode: \"dark\" | \"light\"): Theme {\n const o = hexToOklch(primaryColor)\n if (!o) {\n // Fallback: use default colors if input is not valid hex\n const palette = fromColors({ dark: mode === \"dark\" })\n return deriveTheme(palette)\n }\n\n const dark = mode === \"dark\"\n\n // Background and foreground — use the primary's hue at low chroma for subtle\n // tinting, OKLCH L endpoints calibrated perceptually.\n const bgL = dark ? 0.22 : 0.96\n const fgL = dark ? 0.9 : 0.2\n const bgC = Math.min(o.C, 0.03) // keep bg chroma low — it's a neutral\n const bg = oklchToHex({ L: bgL, C: bgC, H: o.H })\n const fg = oklchToHex({ L: fgL, C: bgC * 0.5, H: o.H })\n\n // Accent ring — same L and C as primary, different H. Preserves perceived\n // weight across the ramp so no one color pops more than another.\n const accentL = dark ? 0.72 : 0.52\n const accentC = Math.max(o.C, 0.1) // ensure accents are vivid enough\n const accent = (h: number) => oklchToHex({ L: accentL, C: accentC, H: h })\n\n const red = accent(HUE.red)\n const green = accent(HUE.green)\n const yellow = accent(HUE.yellow)\n const blue = accent(HUE.blue)\n const magenta = accent(HUE.magenta)\n const cyan = accent(HUE.cyan)\n\n // Bright variants — shift L by ±0.08 in the appropriate direction.\n const brightL = accentL + (dark ? 0.1 : -0.1)\n const brightAccent = (h: number) => oklchToHex({ L: brightL, C: accentC, H: h })\n\n const brightRed = brightAccent(HUE.orangeBright)\n const brightGreen = brightAccent(HUE.green)\n const brightYellow = brightAccent(HUE.yellow)\n const brightBlue = brightAccent(HUE.blue)\n const brightMagenta = brightAccent(HUE.pinkBright)\n const brightCyan = brightAccent(HUE.cyan)\n\n // Surface ramp — neutral grays at the bg's hue\n const black = oklchToHex({ L: dark ? bgL * 0.7 : bgL * 0.92, C: bgC, H: o.H })\n const white = oklchToHex({ L: dark ? 0.6 : 0.35, C: bgC * 0.3, H: o.H })\n const brightBlack = oklchToHex({ L: dark ? bgL + 0.1 : bgL - 0.08, C: bgC, H: o.H })\n const brightWhite = dark ? fg : oklchToHex({ L: fgL - 0.05, C: bgC * 0.5, H: o.H })\n\n const palette = {\n name: `generated-${mode}`,\n dark,\n primary: primaryColor,\n black,\n red,\n green,\n yellow,\n blue,\n magenta,\n cyan,\n white,\n brightBlack,\n brightRed,\n brightGreen,\n brightYellow,\n brightBlue,\n brightMagenta,\n brightCyan,\n brightWhite,\n foreground: fg,\n background: bg,\n cursorColor: fg,\n cursorText: bg,\n selectionBackground: blend(bg, primaryColor, 0.3),\n selectionForeground: fg,\n }\n\n // Primary seed is on the palette — deriveTheme() uses it directly,\n // ensuring contrast and deriving secondary/accent consistently.\n return deriveTheme(palette)\n}\n","/**\n * Palette validation — checks ColorScheme fields and contrast.\n */\n\nimport { hexToRgb } from \"@silvery/color\"\nimport { COLOR_SCHEME_FIELDS, type ColorScheme } from \"@silvery/ansi\"\n\n/** Validation result from validateColorScheme(). */\nexport interface ValidationResult {\n valid: boolean\n errors: string[]\n warnings: string[]\n}\n\n/**\n * Validate a ColorScheme.\n *\n * Checks:\n * - All 22 color fields are present and non-empty hex strings\n * - Warns on low-contrast foreground/background combinations\n */\nexport function validateColorScheme(p: ColorScheme): ValidationResult {\n const errors: string[] = []\n const warnings: string[] = []\n\n // Required color fields\n for (const field of COLOR_SCHEME_FIELDS) {\n const val = p[field]\n if (!val || typeof val !== \"string\") {\n errors.push(`${field} is required and must be a non-empty string`)\n }\n }\n\n // Contrast warnings (only for hex colors)\n if (p.foreground && p.background) {\n const fgRgb = hexToRgb(p.foreground)\n const bgRgb = hexToRgb(p.background)\n if (fgRgb && bgRgb) {\n const fgSum = fgRgb[0] + fgRgb[1] + fgRgb[2]\n const bgSum = bgRgb[0] + bgRgb[1] + bgRgb[2]\n const fgIsLight = fgSum > 384\n const bgIsLight = bgSum > 384\n if (fgIsLight === bgIsLight) {\n warnings.push(\n `Low contrast: foreground (${p.foreground}) and background (${p.background}) have similar lightness`,\n )\n }\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n }\n}\n","/**\n * Theme validation — checks that all required semantic tokens are present.\n *\n * Complements validateColorScheme() which validates the lower-level\n * ColorScheme. This validates the derived Theme object.\n */\n\n/** All 33 required semantic token keys on Theme (excludes `name` and `palette`). */\nexport const THEME_TOKEN_KEYS: readonly string[] = [\n // Root pair\n \"bg\",\n \"fg\",\n // 6 surface pairs (base = text, *bg = background)\n \"muted\",\n \"mutedbg\",\n \"surface\",\n \"surfacebg\",\n \"popover\",\n \"popoverbg\",\n \"inverse\",\n \"inversebg\",\n \"cursor\",\n \"cursorbg\",\n \"selection\",\n \"selectionbg\",\n // 7 accent pairs (base = area bg, *fg = text on area)\n \"primary\",\n \"primaryfg\",\n \"secondary\",\n \"secondaryfg\",\n \"accent\",\n \"accentfg\",\n \"error\",\n \"errorfg\",\n \"warning\",\n \"warningfg\",\n \"success\",\n \"successfg\",\n \"info\",\n \"infofg\",\n // 5 standalone tokens\n \"border\",\n \"inputborder\",\n \"focusborder\",\n \"link\",\n \"disabledfg\",\n] as const\n\n/** Result of theme validation. */\nexport interface ThemeValidationResult {\n /** Whether the theme has all required tokens. */\n valid: boolean\n /** Token keys that are required but missing or empty. */\n missing: string[]\n /** Token keys that exist on the object but are not recognized theme tokens. */\n extra: string[]\n}\n\n/** All recognized keys on Theme (tokens + metadata). */\nconst ALL_KNOWN_KEYS = new Set([...THEME_TOKEN_KEYS, \"name\", \"palette\"])\n\n/**\n * Validate a Theme object — check that all required tokens are present.\n *\n * @param theme - The theme object to validate\n * @returns Validation result with missing and extra token lists\n *\n * @example\n * ```typescript\n * const result = validateTheme(myTheme)\n * if (!result.valid) {\n * console.log(\"Missing tokens:\", result.missing)\n * }\n * ```\n */\nexport function validateTheme(theme: Record<string, unknown>): ThemeValidationResult {\n const missing: string[] = []\n const extra: string[] = []\n\n // Check for missing or empty required tokens\n for (const key of THEME_TOKEN_KEYS) {\n const val = theme[key]\n if (val === undefined || val === null || val === \"\") {\n missing.push(key)\n }\n }\n\n // Check for unrecognized keys (exclude prototype properties)\n for (const key of Object.keys(theme)) {\n if (!ALL_KNOWN_KEYS.has(key)) {\n extra.push(key)\n }\n }\n\n return {\n valid: missing.length === 0,\n missing,\n extra,\n }\n}\n","/**\n * Token aliasing — resolve token values that reference other tokens.\n *\n * Supports alias chains (e.g. $button -> $primary -> #EBCB8B) with a\n * depth limit to prevent infinite loops from circular references.\n */\n\nimport type { Theme } from \"@silvery/ansi\"\n\n/** Maximum depth for alias chain resolution before treating as circular. */\nconst MAX_ALIAS_DEPTH = 10\n\n/**\n * Resolve all token aliases in a theme.\n *\n * Token values that start with `$` are treated as references to other tokens.\n * Alias chains are followed until a concrete (non-$) value is reached.\n * Circular references are detected via a depth limit and left unresolved.\n *\n * @param theme - A theme-like object where values may reference other tokens via `$name`\n * @returns A new object with all aliases resolved to concrete values\n *\n * @example\n * ```typescript\n * const themed = resolveAliases({\n * ...baseTheme,\n * button: \"$primary\", // resolves to the value of 'primary'\n * buttonHover: \"$button\", // chain: buttonHover -> button -> primary -> hex\n * })\n * ```\n */\nexport function resolveAliases(theme: Record<string, string>): Record<string, string> {\n const result: Record<string, string> = {}\n\n for (const key of Object.keys(theme)) {\n result[key] = resolveAlias(key, theme, 0)\n }\n\n return result\n}\n\n/**\n * Resolve a single token's alias chain.\n *\n * @param key - The token key to resolve\n * @param tokens - The full token map\n * @param depth - Current recursion depth (for loop detection)\n * @returns The resolved concrete value, or the raw alias string if unresolvable\n */\nfunction resolveAlias(key: string, tokens: Record<string, string>, depth: number): string {\n if (depth >= MAX_ALIAS_DEPTH) return tokens[key] ?? \"\"\n\n const value = tokens[key]\n if (value === undefined) return \"\"\n\n // Not an alias — return the concrete value\n if (!value.startsWith(\"$\")) return value\n\n // Strip the `$` prefix and look up the referenced token\n const refKey = value.slice(1)\n if (!(refKey in tokens)) return value // Unknown reference, return as-is\n\n return resolveAlias(refKey, tokens, depth + 1)\n}\n\n/**\n * Resolve a single alias value against a Theme.\n *\n * Useful for resolving individual values without processing the entire theme.\n *\n * @param value - The value to resolve (may be \"$tokenName\" or a concrete value)\n * @param theme - The theme to resolve against\n * @returns The resolved concrete value\n */\nexport function resolveTokenAlias(value: string, theme: Theme): string {\n if (!value.startsWith(\"$\")) return value\n\n const seen = new Set<string>()\n let current = value\n\n for (let i = 0; i < MAX_ALIAS_DEPTH; i++) {\n if (!current.startsWith(\"$\")) return current\n\n const key = current.slice(1) as keyof Theme\n if (seen.has(key)) return current // Circular reference\n seen.add(key)\n\n const resolved = theme[key]\n if (typeof resolved !== \"string\") return current\n current = resolved\n }\n\n return current\n}\n","/**\n * Canonical list of flat hyphen-keys Sterling emits. Mirrors the `FlatToken`\n * string-literal union in `types.ts`. Surfaced in `sterling.shape.flatTokens`\n * for tooling (docs, storybook, CSS export).\n *\n * The list is maintained here (not derived from a walk over a sample Theme)\n * so that type exports, runtime iteration, and doc generation all read the\n * same source. Keep this list in sync with {@link FlatToken} in `types.ts`\n * and the `defaultFlattenRule` behaviour in `@silvery/ansi`.\n */\n\nimport type { FlatToken } from \"./types.ts\"\n\nexport const STERLING_FLAT_TOKENS: readonly FlatToken[] = [\n // Surface\n \"bg-surface-default\",\n \"bg-surface-subtle\",\n \"bg-surface-raised\",\n \"bg-surface-overlay\",\n \"bg-surface-hover\",\n // Border\n \"border-default\",\n \"border-focus\",\n \"border-muted\",\n // Cursor\n \"fg-cursor\",\n \"bg-cursor\",\n // Muted\n \"fg-muted\",\n \"bg-muted\",\n // Accent — link-like interactive text, keeps fg state variants\n \"fg-accent\",\n \"bg-accent\",\n \"fg-on-accent\",\n \"fg-accent-hover\",\n \"bg-accent-hover\",\n \"fg-accent-active\",\n \"bg-accent-active\",\n \"border-accent\",\n // Info — status role; bg state only\n \"fg-info\",\n \"bg-info\",\n \"fg-on-info\",\n \"bg-info-hover\",\n \"bg-info-active\",\n // Success — status role; bg state only\n \"fg-success\",\n \"bg-success\",\n \"fg-on-success\",\n \"bg-success-hover\",\n \"bg-success-active\",\n // Warning — status role; bg state only\n \"fg-warning\",\n \"bg-warning\",\n \"fg-on-warning\",\n \"bg-warning-hover\",\n \"bg-warning-active\",\n // Error — status role; bg state only\n \"fg-error\",\n \"bg-error\",\n \"fg-on-error\",\n \"bg-error-hover\",\n \"bg-error-active\",\n]\n","/**\n * CSS variables export — convert theme tokens to CSS custom properties.\n *\n * Emits Sterling flat tokens (`--fg-accent`, `--bg-surface-subtle`,\n * `--border-focus`, …) as 1:1 CSS custom properties. The flat-token\n * grammar is the canonical web-facing surface — see\n * `hub/silvery/design/v10-terminal/design-system.md` §\"Flat — the\n * user-facing form\".\n *\n * Every shipped Theme has Sterling flat keys baked on at construction\n * (via `inlineSterlingTokens` in `./schemes/index.ts`) so this walk\n * produces a complete export without needing a separate derivation pass.\n */\n\nimport type { Theme } from \"@silvery/ansi\"\nimport { STERLING_FLAT_TOKENS } from \"./sterling/flat-tokens.ts\"\n\n/**\n * Convert a Theme to CSS custom properties.\n *\n * Token names mirror Sterling's flat grammar with a `--` prefix:\n * - `bg-surface-default` → `--bg-surface-default`\n * - `fg-accent` → `--fg-accent`\n * - `border-focus` → `--border-focus`\n * - Palette entries: `--color0` through `--color15`\n *\n * @param theme - The theme to convert (Sterling flat tokens must be populated)\n * @returns A record mapping CSS custom property names to color values\n *\n * @example\n * ```typescript\n * const vars = themeToCSSVars(myTheme)\n * // { \"--bg-surface-default\": \"#1E1E2E\", \"--fg-accent\": \"#F9E2AF\", ... }\n *\n * // Apply to an element:\n * Object.assign(element.style, vars)\n * ```\n */\nexport function themeToCSSVars(theme: Theme): Record<string, string> {\n const vars: Record<string, string> = {}\n\n // Sterling flat tokens — channel-role-state grammar.\n const flat = theme as unknown as Record<string, string | undefined>\n for (const key of STERLING_FLAT_TOKENS) {\n const value = flat[key]\n if (typeof value === \"string\") {\n vars[`--${key}`] = value\n }\n }\n\n // Palette colors — raw ANSI slots for app-level category coloring.\n if (theme.palette) {\n for (let i = 0; i < theme.palette.length; i++) {\n vars[`--color${i}`] = theme.palette[i]!\n }\n }\n\n return vars\n}\n","/**\n * Export ColorScheme to Base16 YAML format.\n *\n * Maps ColorScheme fields to base00–base0F. For fields that\n * ColorScheme doesn't store directly (base04/base06/base07),\n * we interpolate between neighboring values.\n *\n * @see https://github.com/chriskempson/base16\n */\n\nimport { blend } from \"@silvery/color\"\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/** Strip `#` prefix from a hex color string and uppercase. */\nfunction stripHash(hex: string): string {\n const bare = hex.startsWith(\"#\") ? hex.slice(1) : hex\n return bare.toUpperCase()\n}\n\n/**\n * Export a ColorScheme to Base16 YAML format.\n *\n * Mapping:\n * background → base00, brightBlack → base01, selectionBackground → base02,\n * white → base03, (interpolated) → base04, foreground → base05,\n * (interpolated) → base06, (interpolated) → base07,\n * red → base08, brightRed → base09, yellow → base0A, green → base0B,\n * cyan → base0C, blue → base0D, magenta → base0E, brightMagenta → base0F.\n */\nexport function exportBase16(palette: ColorScheme): string {\n const dark = palette.dark ?? true\n\n // base04: between white (base03/muted fg) and foreground (base05)\n const base04 = blend(palette.white, palette.foreground, 0.33)\n\n // base06: light foreground — between fg and the inverse extreme\n const base06 = dark\n ? blend(palette.foreground, \"#FFFFFF\", 0.15)\n : blend(palette.foreground, \"#000000\", 0.15)\n\n // base07: lightest background — use black (the deepest bg extreme)\n const base07 = palette.black\n\n const lines = [\n `scheme: \"${palette.name ?? \"exported\"}\"`,\n `author: \"\"`,\n `base00: \"${stripHash(palette.background)}\"`,\n `base01: \"${stripHash(palette.brightBlack)}\"`,\n `base02: \"${stripHash(palette.selectionBackground)}\"`,\n `base03: \"${stripHash(palette.white)}\"`,\n `base04: \"${stripHash(base04)}\"`,\n `base05: \"${stripHash(palette.foreground)}\"`,\n `base06: \"${stripHash(base06)}\"`,\n `base07: \"${stripHash(base07)}\"`,\n `base08: \"${stripHash(palette.red)}\"`,\n `base09: \"${stripHash(palette.brightRed)}\"`,\n `base0A: \"${stripHash(palette.yellow)}\"`,\n `base0B: \"${stripHash(palette.green)}\"`,\n `base0C: \"${stripHash(palette.cyan)}\"`,\n `base0D: \"${stripHash(palette.blue)}\"`,\n `base0E: \"${stripHash(palette.magenta)}\"`,\n `base0F: \"${stripHash(palette.brightMagenta)}\"`,\n ]\n\n return lines.join(\"\\n\") + \"\\n\"\n}\n","/**\n * Terminal palette auto-detection — Sterling-aware wrapper around\n * `@silvery/ansi`'s `detectTheme`.\n *\n * `@silvery/ansi`'s `detectTheme` returns a legacy `Theme` without Sterling\n * flat tokens (`border-default`, `fg-muted`, `bg-surface-default`, …). Tokens\n * like `\"$border-default\"` would resolve to `undefined` and fall through to\n * `parseColor → null`, which paints as the terminal's default foreground\n * (usually white-on-dark) — the canonical \"borders look white\" bug.\n *\n * This wrapper runs the detected / fallback theme through `inlineSterlingTokens`\n * so every shipped Theme is guaranteed to expose Sterling flat keys. This is\n * the canonical source of `detectTheme` for any consumer that uses Sterling\n * tokens (components, km-tui, silvery itself). The `@silvery/ansi` re-export\n * remains for callers that only touch the legacy Theme shape.\n *\n * To use Nord/Catppuccin as fallback palettes (richer than the built-in\n * defaults), pass them via options:\n *\n * @example\n * ```ts\n * import { detectTheme } from \"@silvery/theme\"\n * import { nord, catppuccinLatte } from \"@silvery/theme/schemes\"\n *\n * const theme = await detectTheme({ fallbackDark: nord, fallbackLight: catppuccinLatte })\n * ```\n */\n\nimport {\n detectTheme as _detectTheme,\n detectTerminalScheme,\n type DetectThemeOptions,\n type Theme,\n} from \"@silvery/ansi\"\nimport { inlineSterlingTokens } from \"./sterling/inline.ts\"\n\nexport type { DetectedScheme, DetectThemeOptions } from \"@silvery/ansi\"\nexport { detectTerminalScheme }\n\n/**\n * Detect the terminal's palette and return a Sterling-aware Theme.\n *\n * Identical to `@silvery/ansi`'s `detectTheme` but every returned theme has\n * Sterling flat tokens baked in via `inlineSterlingTokens`.\n */\nexport async function detectTheme(opts: DetectThemeOptions = {}): Promise<Theme> {\n const theme = await _detectTheme(opts)\n return inlineSterlingTokens(theme)\n}\n","/**\n * Sterling built-in defaults — no input required. Returns a light or dark\n * Theme from a neutral baseline scheme (derived from Nord for dark, Catppuccin\n * Latte for light — the same defaults the existing builtinThemes use).\n */\n\nimport type { ColorScheme } from \"@silvery/ansi\"\n\n/**\n * A hand-tuned neutral dark scheme — not a copy of any catalog palette, but\n * close to Nord/Dracula territory. Used only when the caller asks for a\n * \"raw default\" (no scheme at all).\n */\nconst darkBaseline: ColorScheme = {\n name: \"sterling-dark\",\n dark: true,\n primary: \"#7FB4CA\",\n black: \"#1E1E2E\",\n red: \"#E06C75\",\n green: \"#98C379\",\n yellow: \"#E5C07B\",\n blue: \"#61AFEF\",\n magenta: \"#C678DD\",\n cyan: \"#56B6C2\",\n white: \"#ABB2BF\",\n brightBlack: \"#5C6370\",\n brightRed: \"#E06C75\",\n brightGreen: \"#98C379\",\n brightYellow: \"#E5C07B\",\n brightBlue: \"#61AFEF\",\n brightMagenta: \"#C678DD\",\n brightCyan: \"#56B6C2\",\n brightWhite: \"#FFFFFF\",\n foreground: \"#E4E4E7\",\n background: \"#16181D\",\n cursorColor: \"#E4E4E7\",\n cursorText: \"#16181D\",\n selectionBackground: \"#3E4452\",\n selectionForeground: \"#E4E4E7\",\n}\n\nconst lightBaseline: ColorScheme = {\n name: \"sterling-light\",\n dark: false,\n primary: \"#1F6FEB\",\n black: \"#24292F\",\n red: \"#CF222E\",\n green: \"#1A7F37\",\n yellow: \"#9A6700\",\n blue: \"#0969DA\",\n magenta: \"#8250DF\",\n cyan: \"#1B7C83\",\n white: \"#6E7781\",\n brightBlack: \"#57606A\",\n brightRed: \"#A40E26\",\n brightGreen: \"#2DA44E\",\n brightYellow: \"#BF8700\",\n brightBlue: \"#218BFF\",\n brightMagenta: \"#A475F9\",\n brightCyan: \"#3192AA\",\n brightWhite: \"#8C959F\",\n foreground: \"#1F2328\",\n background: \"#FFFFFF\",\n cursorColor: \"#1F2328\",\n cursorText: \"#FFFFFF\",\n selectionBackground: \"#DDF4FF\",\n selectionForeground: \"#1F2328\",\n}\n\nexport function defaultScheme(mode: \"light\" | \"dark\" = \"dark\"): ColorScheme {\n return mode === \"dark\" ? darkBaseline : lightBaseline\n}\n","/**\n * `defineDesignSystem` — wrap a DesignSystem so its derivations auto-apply\n * `bakeFlat` per the `flatten` flag.\n *\n * This makes flat-projection-on-same-object a FRAMEWORK feature, not a\n * Sterling-specific one. Any `DesignSystem` whose Theme is a nested POJO of\n * hex-string leaves gets `theme.accent.bg` AND `theme[\"bg-accent\"]` access\n * without reimplementing the walk.\n *\n * ```ts\n * export const sterling = defineDesignSystem({\n * name: \"sterling\",\n * shape: STERLING_SHAPE,\n * flatten: true, // ← opt in to default channel-role-state rule\n * defaults(mode) { return derive(...) },\n * theme(partial) { return derive(...) },\n * deriveFromScheme(scheme) { return derive(...) },\n * // … etc. Return VALUES without flat keys; defineDesignSystem bakes them.\n * })\n * ```\n *\n * Contract:\n * - `flatten: true` → apply `bakeFlat(theme)` with `defaultFlattenRule`\n * - `flatten: <fn>` → apply `bakeFlat(theme, <fn>)`\n * - `flatten: false` / omitted → pass-through (identity)\n *\n * All derivation methods (`defaults`, `theme`, `deriveFromScheme`,\n * `deriveFromColor`, `deriveFromPair`, `deriveFromSchemeWithBrand`) are\n * wrapped; their return values go through the flatten filter before\n * reaching the caller. `deriveFromPair` returns `{ light, dark }` —\n * both are flattened.\n */\n\nimport { bakeFlat, type FlattenRule } from \"@silvery/ansi\"\nimport type { DesignSystem, Theme } from \"./types.ts\"\n\ntype FlattenFn = (theme: Theme) => Theme\n\nfunction resolveFlatten(flatten: DesignSystem[\"flatten\"]): FlattenFn {\n if (flatten === false || flatten === undefined) {\n return (t) => t\n }\n if (typeof flatten === \"function\") {\n const rule = flatten as FlattenRule\n return (t) => bakeFlat(t, rule)\n }\n // `true` → default channel-role-state rule\n return (t) => bakeFlat(t)\n}\n\n/**\n * Wrap a DesignSystem so every derivation method auto-applies `bakeFlat`\n * per the `flatten` flag. Pass your raw system (one that returns nested\n * themes) and this returns a user-facing system whose outputs have flat\n * keys populated.\n */\nexport function defineDesignSystem(def: DesignSystem): DesignSystem {\n const flatten = resolveFlatten(def.flatten)\n\n return {\n name: def.name,\n shape: def.shape,\n flatten: def.flatten,\n\n defaults: (mode) => flatten(def.defaults(mode)),\n theme: (partial, opts) => flatten(def.theme(partial, opts)),\n deriveFromScheme: (scheme, opts) => flatten(def.deriveFromScheme(scheme, opts)),\n deriveFromColor: (color, opts) => flatten(def.deriveFromColor(color, opts)),\n deriveFromPair: (light, dark, opts) => {\n const pair = def.deriveFromPair(light, dark, opts)\n return { light: flatten(pair.light), dark: flatten(pair.dark) }\n },\n deriveFromSchemeWithBrand: (scheme, brand, opts) =>\n flatten(def.deriveFromSchemeWithBrand(scheme, brand, opts)),\n }\n}\n","/**\n * Sterling — silvery's canonical DesignSystem.\n *\n * This is the default system shipped from `@silvery/theme`. It implements\n * the `DesignSystem` contract from `types.ts` and serves as the reference\n * for alternative systems (`@silvery/design-material`, `-primer`, etc.).\n *\n * The flat-projection (`theme[\"bg-accent\"]` as a sibling of `theme.accent.bg`\n * on the same object) is NOT Sterling-specific — it's a framework feature.\n * Sterling opts in via `flatten: true` in {@link defineDesignSystem}, which\n * auto-applies `bakeFlat` (from `@silvery/ansi`) to every derivation's\n * output. The default rule is channel-role-state (`fg-accent`, `bg-accent-hover`,\n * `fg-on-error`, `bg-surface-subtle`, `border-focus`, …) — exactly what\n * Sterling's pre-generalization `populateFlat` produced.\n *\n * All derivation functions return a frozen Theme with both nested roles\n * AND flat hyphen keys populated — the user-facing `$fg-accent` syntax\n * resolves against the flat keys, while programmatic access uses nested.\n */\n\nimport { blend } from \"@silvery/color\"\nimport type { ColorScheme } from \"@silvery/ansi\"\nimport type { DeepPartial, DeriveOptions, DesignSystem, Theme, ThemeShape } from \"./types.ts\"\nimport { deriveTheme, mergePartial } from \"./derive.ts\"\nimport { STERLING_FLAT_TOKENS } from \"./flat-tokens.ts\"\nimport { defaultScheme } from \"./defaults.ts\"\nimport { defineDesignSystem } from \"./define.ts\"\n\nconst STERLING_SHAPE: ThemeShape = {\n flatTokens: STERLING_FLAT_TOKENS,\n roles: [\"accent\", \"info\", \"success\", \"warning\", \"error\", \"muted\", \"surface\", \"border\", \"cursor\"],\n states: [\"hover\", \"active\"],\n}\n\n/**\n * Internal: build a nested Theme (no flat keys). `defineDesignSystem` applies\n * `bakeFlat` afterwards — the inner derivation stays flat-agnostic.\n */\nfunction buildRawTheme(scheme: ColorScheme, opts: DeriveOptions = {}): Theme {\n // `deriveTheme` returns Omit<Theme, keyof FlatTokens> — a nested-only theme.\n // Cast to Theme; `bakeFlat` (applied by the wrapper) will fill in flat keys.\n return deriveTheme(scheme, opts) as unknown as Theme\n}\n\n/**\n * Apply a brand overlay to a ColorScheme — overrides `primary` and relevant\n * ANSI hue slots with the brand color. Keeps the rest of the scheme intact.\n * Per Appendix F: brand is a theme INPUT, not a public token sibling of accent.\n */\nfunction applyBrand(scheme: ColorScheme, brand: string): ColorScheme {\n return {\n ...scheme,\n primary: brand,\n }\n}\n\n/**\n * Raw Sterling — returns nested-only Themes. `defineDesignSystem` wraps this\n * with auto-`bakeFlat` (per `flatten: true`) to produce the user-facing\n * system with flat keys.\n */\nconst rawSterling: DesignSystem = {\n name: \"sterling\",\n shape: STERLING_SHAPE,\n flatten: true,\n\n defaults(mode: \"light\" | \"dark\" = \"dark\"): Theme {\n return buildRawTheme(defaultScheme(mode), { contrast: \"auto-lift\" })\n },\n\n theme(partial?: DeepPartial<Theme>, opts: DeriveOptions = {}): Theme {\n const mode = opts.mode ?? \"dark\"\n const base = buildRawTheme(defaultScheme(mode), {\n ...opts,\n contrast: opts.contrast ?? \"auto-lift\",\n })\n if (!partial) return base\n // Merge partial over base (both nested-only). `bakeFlat` (applied by the\n // wrapper) will compute fresh flat keys from the merged nested form.\n return mergePartial(base, partial)\n },\n\n deriveFromScheme(scheme: ColorScheme, opts: DeriveOptions = {}): Theme {\n return buildRawTheme(scheme, opts)\n },\n\n deriveFromColor(color: string, opts: DeriveOptions & { mode?: \"light\" | \"dark\" } = {}): Theme {\n const mode = opts.mode ?? \"dark\"\n const base = defaultScheme(mode)\n // Seed hue drives primary; keep background/foreground neutrals from the baseline.\n const scheme: ColorScheme = {\n ...base,\n name: `seed:${color}`,\n primary: color,\n blue: color,\n brightBlue: blend(color, \"#ffffff\", 0.15),\n }\n return buildRawTheme(scheme, opts)\n },\n\n deriveFromPair(\n light: ColorScheme,\n dark: ColorScheme,\n opts: DeriveOptions = {},\n ): {\n light: Theme\n dark: Theme\n } {\n return {\n light: buildRawTheme(light, { ...opts, mode: \"light\" }),\n dark: buildRawTheme(dark, { ...opts, mode: \"dark\" }),\n }\n },\n\n deriveFromSchemeWithBrand(scheme: ColorScheme, brand: string, opts: DeriveOptions = {}): Theme {\n return buildRawTheme(applyBrand(scheme, brand), opts)\n },\n}\n\n/**\n * Sterling — the user-facing DesignSystem. `defineDesignSystem` wraps\n * `rawSterling` with auto-`bakeFlat` (per `flatten: true`), so every\n * returned Theme has both nested roles AND flat hyphen keys populated.\n */\nexport const sterling: DesignSystem = defineDesignSystem(rawSterling)\n","/**\n * Sterling — silvery's canonical design system.\n *\n * @example\n * ```ts\n * import { sterling, nord } from \"@silvery/theme\"\n *\n * const theme = sterling.deriveFromScheme(nord)\n * theme.accent.bg // \"#88C0D0\"\n * theme[\"bg-accent\"] // \"#88C0D0\" — same reference\n * theme[\"bg-accent-hover\"] // OKLCH +0.04L on accent.bg\n * ```\n *\n * Phase 2a: lives under @silvery/theme/sterling. Will move to @silvery/design\n * in Phase 3b.\n */\n\nexport type {\n AccentRole,\n BorderRole,\n ColorScheme,\n ContrastMode,\n CursorRole,\n DeepPartial,\n DerivationStep,\n DerivationTrace,\n DeriveOptions,\n DesignSystem,\n FlatToken,\n FlatTokens,\n InteractiveRole,\n MutedRole,\n Roles,\n StatePair,\n SurfaceRole,\n Theme,\n ThemeShape,\n} from \"./types.ts\"\n\nexport { sterling } from \"./sterling.ts\"\nexport { defineDesignSystem } from \"./define.ts\"\nexport { deriveTheme, deriveRoles, mergePartial } from \"./derive.ts\"\nexport { STERLING_FLAT_TOKENS } from \"./flat-tokens.ts\"\nexport { defaultScheme } from \"./defaults.ts\"\nexport { WCAG_AA, autoLift, checkAA, ContrastError, type ContrastViolation } from \"./contrast.ts\"\n\n// Re-export the generic flat-projection helper for Sterling users who want\n// it directly (e.g. to bake their own one-off Theme). This is the same\n// function `defineDesignSystem({ flatten: true })` applies under the hood.\nexport { bakeFlat, defaultFlattenRule } from \"@silvery/ansi\"\nexport type { FlattenRule } from \"@silvery/ansi\"\n","/**\n * @silvery/theme — Color scheme catalog for silvery.\n *\n * 84 built-in color schemes (the \"inspiration library\") for any platform.\n * Theme derivation and color utilities live in `@silvery/ansi` and `@silvery/color`.\n *\n * Two-layer architecture:\n * Layer 1: ColorScheme (22 terminal colors — universal pivot format)\n * Layer 2: Theme (33 semantic tokens — what UI apps consume, via @silvery/ansi deriveTheme)\n *\n * Pipeline: builtinPalettes → deriveTheme() → Theme\n *\n * @example\n * ```typescript\n * import { catppuccinMocha } from \"@silvery/theme\"\n * import { deriveTheme } from \"@silvery/ansi\"\n *\n * const theme = deriveTheme(catppuccinMocha)\n * ```\n *\n * @packageDocumentation\n */\n\n// Core types (ColorScheme lives here; Theme lives in @silvery/ansi)\nexport type { ColorScheme } from \"@silvery/ansi\"\nexport { COLOR_SCHEME_FIELDS } from \"@silvery/ansi\"\n\n// ANSI 16 theme generation (produces Theme from primary color, no ColorScheme needed)\nexport { generateTheme } from \"./generate\"\n\n// Palette generators (fromColors, fromPreset, assignPrimaryToSlot also in @silvery/ansi)\nexport { fromBase16, fromColors, fromPreset, assignPrimaryToSlot } from \"./generators\"\n\n// Builder API (convenience wrappers that use preset schemes from this package)\nexport { createTheme, quickTheme, presetTheme } from \"./builder\"\n\n// Auto-generate (also in @silvery/ansi; kept here for convenience)\nexport { autoGenerateTheme } from \"./auto-generate\"\n\n// Validation\nexport { validateColorScheme } from \"./validate\"\nexport type { ValidationResult } from \"./validate\"\nexport { validateTheme, THEME_TOKEN_KEYS } from \"./validate-theme\"\nexport type { ThemeValidationResult } from \"./validate-theme\"\n\n// Token aliasing\nexport { resolveAliases, resolveTokenAlias } from \"./alias\"\n\n// CSS variables export\nexport { themeToCSSVars } from \"./css\"\n\n// Base16 import/export\nexport { importBase16 } from \"./import/base16\"\nexport { exportBase16 } from \"./export/base16\"\nexport type { Base16Scheme } from \"./import/types\"\n\n// Built-in themes (pre-derived)\nexport {\n ansi16DarkTheme,\n ansi16LightTheme,\n defaultDarkTheme,\n defaultLightTheme,\n builtinThemes,\n getThemeByName,\n} from \"./schemes/index\"\n\n// Terminal detection — Sterling-aware wrapper (runs @silvery/ansi's detectTheme\n// through inlineSterlingTokens so `$border-default` etc. always resolve).\nexport { detectTheme, detectTerminalScheme } from \"./detect\"\nexport type { DetectedScheme, DetectThemeOptions } from \"./detect\"\n\n// Sterling — silvery's canonical design system.\n// See packages/theme/src/sterling/ and hub/silvery/design/v10-terminal/design-system.md.\n//\n// Sterling flat tokens (`bg-accent`, `fg-on-accent`, `border-focus`, …) are\n// baked into every shipped Theme at construction (see ./schemes/index.ts).\n// Consumers read flat keys directly off the Theme — no explicit augment call\n// is needed or available.\nexport { sterling } from \"./sterling/index\"\nexport {\n deriveTheme as sterlingDeriveTheme,\n deriveRoles as sterlingDeriveRoles,\n defaultScheme as sterlingDefaultScheme,\n defineDesignSystem,\n STERLING_FLAT_TOKENS,\n WCAG_AA,\n autoLift as sterlingAutoLift,\n checkAA as sterlingCheckAA,\n ContrastError as SterlingContrastError,\n // Generic flat-projection helper — re-exported from @silvery/ansi so every\n // DesignSystem (Sterling included) can bake its own Theme on demand.\n bakeFlat,\n defaultFlattenRule,\n} from \"./sterling/index\"\nexport type {\n AccentRole,\n BorderRole,\n ContrastMode as SterlingContrastMode,\n ContrastViolation as SterlingContrastViolation,\n CursorRole,\n DeepPartial as SterlingDeepPartial,\n DerivationStep as SterlingDerivationStep,\n DerivationTrace as SterlingDerivationTrace,\n DeriveOptions as SterlingDeriveOptions,\n DesignSystem,\n FlatToken as SterlingFlatToken,\n FlatTokens as SterlingFlatTokens,\n FlattenRule,\n InteractiveRole,\n MutedRole,\n Roles as SterlingRoles,\n StatePair,\n SurfaceRole,\n Theme as SterlingTheme,\n ThemeShape,\n} from \"./sterling/index\"\n\n// Built-in schemes (84 color schemes — see packages/theme/src/schemes/)\nexport {\n builtinPalettes,\n getSchemeByName,\n catppuccinMocha,\n catppuccinFrappe,\n catppuccinMacchiato,\n catppuccinLatte,\n nord,\n dracula,\n oneDark,\n solarizedDark,\n solarizedLight,\n gruvboxDark,\n gruvboxLight,\n tokyoNight,\n tokyoNightStorm,\n tokyoNightDay,\n rosePine,\n rosePineMoon,\n rosePineDawn,\n kanagawaWave,\n kanagawaDragon,\n kanagawaLotus,\n everforestDark,\n everforestLight,\n nightfox,\n dawnfox,\n monokai,\n monokaiPro,\n snazzy,\n materialDark,\n materialLight,\n palenight,\n ayuDark,\n ayuMirage,\n ayuLight,\n horizon,\n moonfly,\n nightfly,\n oxocarbonDark,\n oxocarbonLight,\n sonokai,\n edgeDark,\n edgeLight,\n modusVivendi,\n modusOperandi,\n} from \"./schemes/index\"\n"],"mappings":"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"}