@zaly/tui 0.0.11 → 0.0.12

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 (180) hide show
  1. package/assets/schemas/theme.schema.json +351 -36
  2. package/assets/themes/ayu-dark.json +2 -21
  3. package/assets/themes/catppuccin-frappe.json +2 -21
  4. package/assets/themes/catppuccin-latte.json +2 -21
  5. package/assets/themes/catppuccin-macchiato.json +2 -21
  6. package/assets/themes/catppuccin-mocha.json +2 -21
  7. package/assets/themes/dracula-soft.json +2 -21
  8. package/assets/themes/dracula.json +2 -21
  9. package/assets/themes/everforest-dark.json +2 -21
  10. package/assets/themes/everforest-light.json +2 -21
  11. package/assets/themes/github-dark.json +2 -21
  12. package/assets/themes/github-light.json +2 -21
  13. package/assets/themes/gruvbox-dark-medium.json +2 -21
  14. package/assets/themes/kanagawa-dragon.json +2 -21
  15. package/assets/themes/kanagawa-wave.json +2 -21
  16. package/assets/themes/material-theme-palenight.json +2 -21
  17. package/assets/themes/min-dark.json +2 -18
  18. package/assets/themes/min-light.json +2 -18
  19. package/assets/themes/monokai.json +2 -21
  20. package/assets/themes/night-owl.json +2 -21
  21. package/assets/themes/nord.json +2 -18
  22. package/assets/themes/one-dark-pro.json +2 -21
  23. package/assets/themes/one-light.json +2 -20
  24. package/assets/themes/poimandres.json +2 -21
  25. package/assets/themes/rose-pine.json +2 -18
  26. package/assets/themes/solarized-dark.json +2 -21
  27. package/assets/themes/solarized-light.json +2 -21
  28. package/assets/themes/synthwave-84.json +2 -21
  29. package/assets/themes/tokyonight-day.json +4 -5
  30. package/assets/themes/tokyonight-moon.json +3 -4
  31. package/assets/themes/tokyonight-night.json +3 -4
  32. package/assets/themes/tokyonight-storm.json +3 -4
  33. package/assets/themes/vesper.json +2 -17
  34. package/assets/themes/vitesse-dark.json +2 -21
  35. package/assets/themes/vitesse-light.json +2 -21
  36. package/dist/{actions-DFboj3g5.d.mts → actions-Dc4D4uSf.d.mts} +4 -4
  37. package/dist/{actions-DFboj3g5.d.mts.map → actions-Dc4D4uSf.d.mts.map} +1 -1
  38. package/dist/{ansi-Clq0ozyA.mjs → ansi-DZlXaItJ.mjs} +37 -2
  39. package/dist/ansi-DZlXaItJ.mjs.map +1 -0
  40. package/dist/ansi.d.mts +3 -1
  41. package/dist/ansi.d.mts.map +1 -1
  42. package/dist/ansi.mjs +1 -1
  43. package/dist/{autocomplete-CxzetPOo.d.mts → autocomplete-StW1QJZJ.d.mts} +4 -4
  44. package/dist/{autocomplete-CxzetPOo.d.mts.map → autocomplete-StW1QJZJ.d.mts.map} +1 -1
  45. package/dist/{box-DLEcEvDH.mjs → box-BkP4MF82.mjs} +2 -2
  46. package/dist/box-BkP4MF82.mjs.map +1 -0
  47. package/dist/{builder-DC9byAmK.mjs → builder-1z5ewEWK.mjs} +4 -4
  48. package/dist/builder-1z5ewEWK.mjs.map +1 -0
  49. package/dist/{callbacks-D132G8dy.mjs → callbacks-BwWTCqPJ.mjs} +3 -3
  50. package/dist/{callbacks-D132G8dy.mjs.map → callbacks-BwWTCqPJ.mjs.map} +1 -1
  51. package/dist/{ctx-8Nuf5BrN.mjs → ctx-B7BmPUCD.mjs} +3 -3
  52. package/dist/{ctx-8Nuf5BrN.mjs.map → ctx-B7BmPUCD.mjs.map} +1 -1
  53. package/dist/ctx-D_JgJ8Eo.mjs +1 -0
  54. package/dist/{divider-l0-JPEIm.mjs → divider-TSx9NhI_.mjs} +2 -2
  55. package/dist/divider-TSx9NhI_.mjs.map +1 -0
  56. package/dist/{files-BUsa-RVl.d.mts → files-7DUYSeNc.d.mts} +3 -3
  57. package/dist/{files-BUsa-RVl.d.mts.map → files-7DUYSeNc.d.mts.map} +1 -1
  58. package/dist/{github-D89A3F9U.d.mts → github-C1KfXk98.d.mts} +3 -3
  59. package/dist/{github-D89A3F9U.d.mts.map → github-C1KfXk98.d.mts.map} +1 -1
  60. package/dist/github-Cy2hfWJ7.mjs.map +1 -1
  61. package/dist/{image-34bU73bW.d.mts → image-VaT7AN-S.d.mts} +2 -2
  62. package/dist/{image-34bU73bW.d.mts.map → image-VaT7AN-S.d.mts.map} +1 -1
  63. package/dist/image.d.mts +1 -1
  64. package/dist/index.d.mts +3 -3
  65. package/dist/index.mjs +4 -4
  66. package/dist/{input-Dylds_sI.d.mts → input-BAYux7qo.d.mts} +3 -3
  67. package/dist/{input-Dylds_sI.d.mts.map → input-BAYux7qo.d.mts.map} +1 -1
  68. package/dist/{input-D7fQEUdt.mjs → input-BGTTujDN.mjs} +16 -11
  69. package/dist/input-BGTTujDN.mjs.map +1 -0
  70. package/dist/{inspect-DPLRum7L.d.mts → inspect-CfNydMgO.d.mts} +11 -15
  71. package/dist/inspect-CfNydMgO.d.mts.map +1 -0
  72. package/dist/{inspect-CcgiZ_F9.mjs → inspect-jG_W4njH.mjs} +2 -2
  73. package/dist/{inspect-CcgiZ_F9.mjs.map → inspect-jG_W4njH.mjs.map} +1 -1
  74. package/dist/{log-Dy_QnPZF.mjs → log-ByKlM4iI.mjs} +5 -5
  75. package/dist/log-ByKlM4iI.mjs.map +1 -0
  76. package/dist/{logger-DvuX9DPS.mjs → logger-DSQb0sLP.mjs} +3 -3
  77. package/dist/{logger-DvuX9DPS.mjs.map → logger-DSQb0sLP.mjs.map} +1 -1
  78. package/dist/{markdown-BGPa7UzD.mjs → markdown-CwRmWuU6.mjs} +5 -5
  79. package/dist/{markdown-BGPa7UzD.mjs.map → markdown-CwRmWuU6.mjs.map} +1 -1
  80. package/dist/markdown.d.mts +1 -1
  81. package/dist/markdown.mjs +1 -1
  82. package/dist/{overlay-9WXYiGgW.mjs → overlay-BnvOKtGT.mjs} +2 -2
  83. package/dist/{overlay-9WXYiGgW.mjs.map → overlay-BnvOKtGT.mjs.map} +1 -1
  84. package/dist/{picker-JL8lZfRH.d.mts → picker-DQs_IW77.d.mts} +5 -5
  85. package/dist/{picker-JL8lZfRH.d.mts.map → picker-DQs_IW77.d.mts.map} +1 -1
  86. package/dist/{picker-BqHINl_a.mjs → picker-Dh5IUrTk.mjs} +2 -2
  87. package/dist/{picker-BqHINl_a.mjs.map → picker-Dh5IUrTk.mjs.map} +1 -1
  88. package/dist/{queries-Cvalgu6P.d.mts → queries-BDX8mcl5.d.mts} +26 -10
  89. package/dist/queries-BDX8mcl5.d.mts.map +1 -0
  90. package/dist/{registry-3hLzS4ks.mjs → registry-D-suU3g0.mjs} +15 -20
  91. package/dist/registry-D-suU3g0.mjs.map +1 -0
  92. package/dist/{render-f7M2856V.mjs → render-DEIUNLkh.mjs} +2 -2
  93. package/dist/{render-f7M2856V.mjs.map → render-DEIUNLkh.mjs.map} +1 -1
  94. package/dist/renderer-DhqbEVVR.mjs +1 -0
  95. package/dist/{renderer-DesbRwjQ.mjs → renderer-MQue4Da5.mjs} +2 -2
  96. package/dist/{renderer-DesbRwjQ.mjs.map → renderer-MQue4Da5.mjs.map} +1 -1
  97. package/dist/{renderer-V6AGjbyf.mjs → renderer-zDNlAovy.mjs} +66 -15
  98. package/dist/renderer-zDNlAovy.mjs.map +1 -0
  99. package/dist/{select-zGd5pbiB.d.mts → select-J2KtwxyK.d.mts} +3 -3
  100. package/dist/{select-zGd5pbiB.d.mts.map → select-J2KtwxyK.d.mts.map} +1 -1
  101. package/dist/services/logger.d.mts +1 -1
  102. package/dist/services/logger.mjs +1 -1
  103. package/dist/services/notifier.d.mts +1 -1
  104. package/dist/services/notifier.mjs +2 -2
  105. package/dist/services/picker.d.mts +5 -5
  106. package/dist/services/picker.mjs +6 -6
  107. package/dist/services/prompt.d.mts +4 -4
  108. package/dist/services/prompt.mjs +5 -5
  109. package/dist/shiki/server.mjs +1 -1
  110. package/dist/style.d.mts +2 -2
  111. package/dist/style.mjs +3 -3
  112. package/dist/{text-BefiXAFW.d.mts → text-CCYs9RB2.d.mts} +3 -3
  113. package/dist/{text-BefiXAFW.d.mts.map → text-CCYs9RB2.d.mts.map} +1 -1
  114. package/dist/{text-CRZD9KTN.mjs → text-CkQ7Irmt.mjs} +2 -2
  115. package/dist/{text-CRZD9KTN.mjs.map → text-CkQ7Irmt.mjs.map} +1 -1
  116. package/dist/{text-BLz1tRoC.mjs → text-XvPfweeg.mjs} +2 -2
  117. package/dist/text-XvPfweeg.mjs.map +1 -0
  118. package/dist/text.d.mts +1 -1
  119. package/dist/text.mjs +1 -1
  120. package/dist/{theme.config-BKXX_noZ.mjs → theme.config-B3Yx--C2.mjs} +12 -20
  121. package/dist/theme.config-B3Yx--C2.mjs.map +1 -0
  122. package/dist/themes.d.mts +1 -1
  123. package/dist/themes.mjs +1 -1
  124. package/dist/{tree-CArtDRec.d.mts → tree-DJl5W_B7.d.mts} +3 -3
  125. package/dist/{tree-CArtDRec.d.mts.map → tree-DJl5W_B7.d.mts.map} +1 -1
  126. package/dist/{types-C0EOLZDc.d.mts → types-D2EYlzmK.d.mts} +10 -18
  127. package/dist/types-D2EYlzmK.d.mts.map +1 -0
  128. package/dist/{widget-DtJU2-BJ.d.mts → widget-DPqBbB57.d.mts} +2 -2
  129. package/dist/{widget-DtJU2-BJ.d.mts.map → widget-DPqBbB57.d.mts.map} +1 -1
  130. package/dist/widgets/autocomplete.d.mts +1 -1
  131. package/dist/widgets/autocomplete.mjs +2 -2
  132. package/dist/widgets/box.d.mts +1 -1
  133. package/dist/widgets/box.mjs +1 -1
  134. package/dist/widgets/code.d.mts +2 -2
  135. package/dist/widgets/code.mjs +4 -4
  136. package/dist/widgets/completions/actions.d.mts +1 -1
  137. package/dist/widgets/completions/files.d.mts +1 -1
  138. package/dist/widgets/completions/github.d.mts +1 -1
  139. package/dist/widgets/completions/index.d.mts +3 -3
  140. package/dist/widgets/diff.d.mts +2 -2
  141. package/dist/widgets/diff.mjs +2 -2
  142. package/dist/widgets/divider.d.mts +3 -3
  143. package/dist/widgets/divider.mjs +1 -1
  144. package/dist/widgets/image.d.mts +1 -1
  145. package/dist/widgets/image.mjs +1 -1
  146. package/dist/widgets/input.d.mts +1 -1
  147. package/dist/widgets/input.mjs +1 -1
  148. package/dist/widgets/log.d.mts +1 -1
  149. package/dist/widgets/log.mjs +1 -1
  150. package/dist/widgets/markdown.d.mts +4 -4
  151. package/dist/widgets/markdown.mjs +1 -1
  152. package/dist/widgets/overlay.d.mts +1 -1
  153. package/dist/widgets/overlay.mjs +1 -1
  154. package/dist/widgets/picker.d.mts +1 -1
  155. package/dist/widgets/picker.mjs +1 -1
  156. package/dist/widgets/progress.d.mts +4 -4
  157. package/dist/widgets/progress.mjs.map +1 -1
  158. package/dist/widgets/select.d.mts +1 -1
  159. package/dist/widgets/show.d.mts +1 -1
  160. package/dist/widgets/spinner.d.mts +2 -2
  161. package/dist/widgets/text.d.mts +1 -1
  162. package/dist/widgets/text.mjs +1 -1
  163. package/dist/widgets/tree.d.mts +1 -1
  164. package/dist/widgets/widget.d.mts +1 -1
  165. package/package.json +2 -2
  166. package/dist/ansi-Clq0ozyA.mjs.map +0 -1
  167. package/dist/box-DLEcEvDH.mjs.map +0 -1
  168. package/dist/builder-DC9byAmK.mjs.map +0 -1
  169. package/dist/ctx-k0wTqeql.mjs +0 -1
  170. package/dist/divider-l0-JPEIm.mjs.map +0 -1
  171. package/dist/input-D7fQEUdt.mjs.map +0 -1
  172. package/dist/inspect-DPLRum7L.d.mts.map +0 -1
  173. package/dist/log-Dy_QnPZF.mjs.map +0 -1
  174. package/dist/queries-Cvalgu6P.d.mts.map +0 -1
  175. package/dist/registry-3hLzS4ks.mjs.map +0 -1
  176. package/dist/renderer-BSMOuiLM.mjs +0 -1
  177. package/dist/renderer-V6AGjbyf.mjs.map +0 -1
  178. package/dist/text-BLz1tRoC.mjs.map +0 -1
  179. package/dist/theme.config-BKXX_noZ.mjs.map +0 -1
  180. package/dist/types-C0EOLZDc.d.mts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"text-BefiXAFW.d.mts","names":[],"sources":["../src/layout/text.ts"],"mappings":";;;KAeY;iBAKI,WACd,cACA;EACE,OAAO;EACP;EACA,QAAQ;;EAER;;;;EAIA;;iBAmDY,WAAW,WAAW;iBAsBtB,YACd,yBACA;EACE;EACA;EACA;EACA;EACA;EACA,iBAAiB,cAAc;EAC/B,QAAQ;;iBA0DI,WAAW,cAAc;EAAQ,OAAO;IAAkB;iBAS1D,WAAW;iBAUX,WAAW"}
1
+ {"version":3,"file":"text-CCYs9RB2.d.mts","names":[],"sources":["../src/layout/text.ts"],"mappings":";;;KAeY;iBAKI,WACd,cACA;EACE,OAAO;EACP;EACA,QAAQ;;EAER;;;;EAIA;;iBAmDY,WAAW,WAAW;iBAsBtB,YACd,yBACA;EACE;EACA;EACA;EACA;EACA;EACA,iBAAiB,cAAc;EAC/B,QAAQ;;iBA0DI,WAAW,cAAc;EAAQ,OAAO;IAAkB;iBAS1D,WAAW;iBAUX,WAAW"}
@@ -1,4 +1,4 @@
1
- import { c as styleAnsi, n as ansiBg } from "./ansi-Clq0ozyA.mjs";
1
+ import { l as styleAnsi, n as ansiBg } from "./ansi-DZlXaItJ.mjs";
2
2
  import { clamp } from "@zaly/shared";
3
3
  import { hasAnsi, sliceAnsi, splitAnsi, stringWidth, stripAnsi, truncateAnsi, wrapAnsi } from "@zaly/shared/ansi";
4
4
  //#region src/layout/text.ts
@@ -109,4 +109,4 @@ function capitalize(s) {
109
109
  //#endregion
110
110
  export { formatLines as a, expandTabs as i, capitalize as n, formatText as o, countLines as r, calcLayout as t };
111
111
 
112
- //# sourceMappingURL=text-CRZD9KTN.mjs.map
112
+ //# sourceMappingURL=text-CkQ7Irmt.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-CRZD9KTN.mjs","names":[],"sources":["../src/layout/text.ts"],"sourcesContent":["import type { Layout } from \"../core/state.ts\"\nimport type { StyleBuilder } from \"../style/builder.ts\"\n\nimport { clamp } from \"@zaly/shared\"\nimport {\n hasAnsi,\n sliceAnsi,\n splitAnsi,\n stringWidth,\n stripAnsi,\n truncateAnsi,\n wrapAnsi,\n} from \"@zaly/shared/ansi\"\nimport { ansiBg, styleAnsi } from \"../style/ansi.ts\"\n\nexport type WrapMode = \"word\" | \"char\" | \"none\"\n\nconst ELLIPSIS = \"…\"\nconst TAB_WIDTH = 4\n\nexport function formatText(\n text: string,\n opts: {\n wrap?: WrapMode\n width: number\n style?: StyleBuilder\n /** When wrapping, preserve the indentation of the original text. */\n indent?: boolean\n /** When wrapping ANSI-styled text, pad wrapped fragments to `width`\n * using the background color active at the fragment's last cell.\n * Natural lines that already fit are left unchanged. */\n wrapBg?: boolean\n }\n): string[] {\n const mode = opts.wrap ?? \"word\"\n const lines = splitAnsi(expandTabs(text))\n const ret: string[] = []\n if (mode === \"none\") ret.push(...lines)\n else {\n for (const line of lines) {\n const sw = stringWidth(line)\n\n // Fast path for short lines that don't need wrapping\n if (sw <= opts.width) {\n ret.push(line)\n continue\n }\n\n const stripped = stripAnsi(line)\n\n // Long line that ends in (ansi) whitespace, so just strip\n if (stripped.slice(opts.width).trim() === \"\") {\n ret.push(sliceAnsi(line, 0, opts.width))\n continue\n }\n\n const indentWidth = opts.indent ? stringWidth(stripped.match(/^\\s*/)?.[0] ?? \"\") : 0\n const indent = indentWidth > 0 ? sliceAnsi(line, 0, indentWidth) : \"\"\n const bare = indent ? sliceAnsi(line, indentWidth) : line\n const wrapped = splitAnsi(wrapAnsi(bare, opts.width - indentWidth, { mode }))\n\n // * strip single leading space from wrapped lines after the first\n // * preserve indentation when enabled\n // * pad wrapped lines with bg color if padding is enabled and the line is short\n for (let r = 0; r < wrapped.length; r++) {\n let row = r > 0 && wrapped[r].startsWith(\" \") ? wrapped[r].slice(1) : wrapped[r]\n if (row === \"\" && r > 0 && r < wrapped.length - 1) continue\n if (indent) row = `${indent}${row}`\n if (opts.wrapBg) {\n const rowWidth = stringWidth(row)\n const bg = rowWidth > 0 ? ansiBg(row, rowWidth - 1) : undefined\n if (bg && rowWidth < opts.width) {\n row = `${row}${styleAnsi(\" \".repeat(opts.width - rowWidth), { bg })}`\n }\n }\n ret.push(row)\n }\n }\n }\n return ret.map((line) => (opts.style ? opts.style(line) : line))\n}\n\nexport function expandTabs(s: string, tabSize = TAB_WIDTH): string {\n if (!s.includes(\"\\t\")) return s\n const plain = hasAnsi(s) ? stripAnsi(s) : s\n const spaces: string[] = []\n let col = 0\n\n for (const ch of plain) {\n if (ch === \"\\t\") {\n const n = tabSize - (col % tabSize)\n spaces.push(\" \".repeat(n))\n col += n\n } else if (ch === \"\\n\" || ch === \"\\r\") {\n col = 0\n } else {\n col += stringWidth(ch)\n }\n }\n\n let i = 0\n return s.replaceAll(\"\\t\", () => spaces[i++] ?? \" \".repeat(tabSize))\n}\n\nexport function formatLines(\n text: string | string[],\n opts: {\n numbered?: boolean\n numberOffset?: number\n maxLineLength?: number\n offset?: number\n limit?: number\n more?: false | ((more: number, msg: string) => string)\n style?: StyleBuilder\n } = {}\n): string[] {\n const lines = (typeof text === \"string\" ? splitAnsi(text) : text).map((line) => expandTabs(line))\n const offset = clamp(opts.offset ?? 0, 0, lines.length - 1)\n const limit = clamp(opts.limit ?? lines.length, 1, lines.length - offset)\n const ellipsis = opts.style?.(ELLIPSIS) ?? ELLIPSIS\n let slice = lines\n .slice(offset, offset + limit)\n .map((line) => (opts.maxLineLength ? truncateAnsi(line, opts.maxLineLength, ellipsis) : line))\n\n const numberOffset = opts.numberOffset ?? offset + 1\n const gutterWidth = String(numberOffset + slice.length - 1).length + 2\n\n if (opts.numbered) {\n slice = slice.map((line, i) => {\n const n = numberOffset + i\n const lineo = `${String(n).padStart(gutterWidth - 2)} │`\n return `${opts.style?.(lineo) ?? lineo} ${line}`\n })\n }\n\n if (slice.length < lines.length && opts.more !== false) {\n const moreN = lines.length - slice.length\n let more = `+${moreN} more line${moreN > 1 ? \"s\" : \"\"}`\n more = opts.more?.(moreN, more) ?? more\n if (opts.numbered) {\n const moreGutter = `${\"…\".padStart(gutterWidth - 2)} │`\n slice.push(`${opts.style?.(moreGutter) ?? moreGutter} ${opts.style?.(more) ?? more}`)\n } else slice.push(opts.style?.(more) ?? more)\n }\n\n return slice\n}\n\nfunction maxContent(text: string): number {\n return text.split(\"\\n\").reduce((m, line) => Math.max(m, stringWidth(line)), 0)\n}\n\nfunction minContent(text: string, mode: WrapMode): number | undefined {\n switch (mode) {\n case \"none\": {\n return\n } // can't break, same as max\n case \"char\": {\n return 1\n } // can break anywhere → 1cell floor\n case \"word\": {\n // longest unbreakable run\n return text.split(/\\s+/).reduce((m, word) => Math.max(m, stringWidth(word)), 0)\n }\n default: {\n mode satisfies never // future modes get caught at type-check time\n return undefined\n }\n }\n}\n\nexport function calcLayout(text: string, opts: { wrap?: WrapMode } = {}): Layout {\n text = expandTabs(text)\n const width = maxContent(text)\n return {\n minWidth: minContent(text, opts.wrap ?? \"word\") ?? width,\n width,\n }\n}\n\nexport function countLines(text: string): number {\n let count = 0\n let pos = text.indexOf(\"\\n\")\n while (pos !== -1) {\n count++\n pos = text.indexOf(\"\\n\", pos + 1)\n }\n return count\n}\n\nexport function capitalize(s: string): string {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n"],"mappings":";;;;AAiBA,MAAM,WAAW;AACjB,MAAM,YAAY;AAElB,SAAgB,WACd,MACA,MAWU;CACV,MAAM,OAAO,KAAK,QAAQ;CAC1B,MAAM,QAAQ,UAAU,WAAW,IAAI,CAAC;CACxC,MAAM,MAAgB,CAAC;CACvB,IAAI,SAAS,QAAQ,IAAI,KAAK,GAAG,KAAK;MAEpC,KAAK,MAAM,QAAQ,OAAO;EAIxB,IAHW,YAAY,IAGlB,KAAK,KAAK,OAAO;GACpB,IAAI,KAAK,IAAI;GACb;EACF;EAEA,MAAM,WAAW,UAAU,IAAI;EAG/B,IAAI,SAAS,MAAM,KAAK,KAAK,CAAC,CAAC,KAAK,MAAM,IAAI;GAC5C,IAAI,KAAK,UAAU,MAAM,GAAG,KAAK,KAAK,CAAC;GACvC;EACF;EAEA,MAAM,cAAc,KAAK,SAAS,YAAY,SAAS,MAAM,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI;EACnF,MAAM,SAAS,cAAc,IAAI,UAAU,MAAM,GAAG,WAAW,IAAI;EACnE,MAAM,OAAO,SAAS,UAAU,MAAM,WAAW,IAAI;EACrD,MAAM,UAAU,UAAU,SAAS,MAAM,KAAK,QAAQ,aAAa,EAAE,KAAK,CAAC,CAAC;EAK5E,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;GACvC,IAAI,MAAM,IAAI,KAAK,QAAQ,EAAE,CAAC,WAAW,GAAG,IAAI,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,QAAQ;GAC9E,IAAI,QAAQ,MAAM,IAAI,KAAK,IAAI,QAAQ,SAAS,GAAG;GACnD,IAAI,QAAQ,MAAM,GAAG,SAAS;GAC9B,IAAI,KAAK,QAAQ;IACf,MAAM,WAAW,YAAY,GAAG;IAChC,MAAM,KAAK,WAAW,IAAI,OAAO,KAAK,WAAW,CAAC,IAAI,KAAA;IACtD,IAAI,MAAM,WAAW,KAAK,OACxB,MAAM,GAAG,MAAM,UAAU,IAAI,OAAO,KAAK,QAAQ,QAAQ,GAAG,EAAE,GAAG,CAAC;GAEtE;GACA,IAAI,KAAK,GAAG;EACd;CACF;CAEF,OAAO,IAAI,KAAK,SAAU,KAAK,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAK;AACjE;AAEA,SAAgB,WAAW,GAAW,UAAU,WAAmB;CACjE,IAAI,CAAC,EAAE,SAAS,GAAI,GAAG,OAAO;CAC9B,MAAM,QAAQ,QAAQ,CAAC,IAAI,UAAU,CAAC,IAAI;CAC1C,MAAM,SAAmB,CAAC;CAC1B,IAAI,MAAM;CAEV,KAAK,MAAM,MAAM,OACf,IAAI,OAAO,KAAM;EACf,MAAM,IAAI,UAAW,MAAM;EAC3B,OAAO,KAAK,IAAI,OAAO,CAAC,CAAC;EACzB,OAAO;CACT,OAAO,IAAI,OAAO,QAAQ,OAAO,MAC/B,MAAM;MAEN,OAAO,YAAY,EAAE;CAIzB,IAAI,IAAI;CACR,OAAO,EAAE,WAAW,WAAY,OAAO,QAAQ,IAAI,OAAO,OAAO,CAAC;AACpE;AAEA,SAAgB,YACd,MACA,OAQI,CAAC,GACK;CACV,MAAM,SAAS,OAAO,SAAS,WAAW,UAAU,IAAI,IAAI,KAAA,CAAM,KAAK,SAAS,WAAW,IAAI,CAAC;CAChG,MAAM,SAAS,MAAM,KAAK,UAAU,GAAG,GAAG,MAAM,SAAS,CAAC;CAC1D,MAAM,QAAQ,MAAM,KAAK,SAAS,MAAM,QAAQ,GAAG,MAAM,SAAS,MAAM;CACxE,MAAM,WAAW,KAAK,QAAQ,QAAQ,KAAK;CAC3C,IAAI,QAAQ,MACT,MAAM,QAAQ,SAAS,KAAK,CAAC,CAC7B,KAAK,SAAU,KAAK,gBAAgB,aAAa,MAAM,KAAK,eAAe,QAAQ,IAAI,IAAK;CAE/F,MAAM,eAAe,KAAK,gBAAgB,SAAS;CACnD,MAAM,cAAc,OAAO,eAAe,MAAM,SAAS,CAAC,CAAC,CAAC,SAAS;CAErE,IAAI,KAAK,UACP,QAAQ,MAAM,KAAK,MAAM,MAAM;EAC7B,MAAM,IAAI,eAAe;EACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,cAAc,CAAC,EAAE;EACrD,OAAO,GAAG,KAAK,QAAQ,KAAK,KAAK,MAAM,GAAG;CAC5C,CAAC;CAGH,IAAI,MAAM,SAAS,MAAM,UAAU,KAAK,SAAS,OAAO;EACtD,MAAM,QAAQ,MAAM,SAAS,MAAM;EACnC,IAAI,OAAO,IAAI,MAAM,YAAY,QAAQ,IAAI,MAAM;EACnD,OAAO,KAAK,OAAO,OAAO,IAAI,KAAK;EACnC,IAAI,KAAK,UAAU;GACjB,MAAM,aAAa,GAAG,IAAI,SAAS,cAAc,CAAC,EAAE;GACpD,MAAM,KAAK,GAAG,KAAK,QAAQ,UAAU,KAAK,WAAW,GAAG,KAAK,QAAQ,IAAI,KAAK,MAAM;EACtF,OAAO,MAAM,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI;CAC9C;CAEA,OAAO;AACT;AAEA,SAAS,WAAW,MAAsB;CACxC,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC,QAAQ,GAAG,SAAS,KAAK,IAAI,GAAG,YAAY,IAAI,CAAC,GAAG,CAAC;AAC/E;AAEA,SAAS,WAAW,MAAc,MAAoC;CACpE,QAAQ,MAAR;EACE,KAAK,QACH;EAEF,KAAK,QACH,OAAO;EAET,KAAK,QAEH,OAAO,KAAK,MAAM,KAAK,CAAC,CAAC,QAAQ,GAAG,SAAS,KAAK,IAAI,GAAG,YAAY,IAAI,CAAC,GAAG,CAAC;EAEhF,SAEE;CAEJ;AACF;AAEA,SAAgB,WAAW,MAAc,OAA4B,CAAC,GAAW;CAC/E,OAAO,WAAW,IAAI;CACtB,MAAM,QAAQ,WAAW,IAAI;CAC7B,OAAO;EACL,UAAU,WAAW,MAAM,KAAK,QAAQ,MAAM,KAAK;EACnD;CACF;AACF;AAEA,SAAgB,WAAW,MAAsB;CAC/C,IAAI,QAAQ;CACZ,IAAI,MAAM,KAAK,QAAQ,IAAI;CAC3B,OAAO,QAAQ,IAAI;EACjB;EACA,MAAM,KAAK,QAAQ,MAAM,MAAM,CAAC;CAClC;CACA,OAAO;AACT;AAEA,SAAgB,WAAW,GAAmB;CAC5C,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,MAAM,CAAC;AAC9C"}
1
+ {"version":3,"file":"text-CkQ7Irmt.mjs","names":[],"sources":["../src/layout/text.ts"],"sourcesContent":["import type { Layout } from \"../core/state.ts\"\nimport type { StyleBuilder } from \"../style/builder.ts\"\n\nimport { clamp } from \"@zaly/shared\"\nimport {\n hasAnsi,\n sliceAnsi,\n splitAnsi,\n stringWidth,\n stripAnsi,\n truncateAnsi,\n wrapAnsi,\n} from \"@zaly/shared/ansi\"\nimport { ansiBg, styleAnsi } from \"../style/ansi.ts\"\n\nexport type WrapMode = \"word\" | \"char\" | \"none\"\n\nconst ELLIPSIS = \"…\"\nconst TAB_WIDTH = 4\n\nexport function formatText(\n text: string,\n opts: {\n wrap?: WrapMode\n width: number\n style?: StyleBuilder\n /** When wrapping, preserve the indentation of the original text. */\n indent?: boolean\n /** When wrapping ANSI-styled text, pad wrapped fragments to `width`\n * using the background color active at the fragment's last cell.\n * Natural lines that already fit are left unchanged. */\n wrapBg?: boolean\n }\n): string[] {\n const mode = opts.wrap ?? \"word\"\n const lines = splitAnsi(expandTabs(text))\n const ret: string[] = []\n if (mode === \"none\") ret.push(...lines)\n else {\n for (const line of lines) {\n const sw = stringWidth(line)\n\n // Fast path for short lines that don't need wrapping\n if (sw <= opts.width) {\n ret.push(line)\n continue\n }\n\n const stripped = stripAnsi(line)\n\n // Long line that ends in (ansi) whitespace, so just strip\n if (stripped.slice(opts.width).trim() === \"\") {\n ret.push(sliceAnsi(line, 0, opts.width))\n continue\n }\n\n const indentWidth = opts.indent ? stringWidth(stripped.match(/^\\s*/)?.[0] ?? \"\") : 0\n const indent = indentWidth > 0 ? sliceAnsi(line, 0, indentWidth) : \"\"\n const bare = indent ? sliceAnsi(line, indentWidth) : line\n const wrapped = splitAnsi(wrapAnsi(bare, opts.width - indentWidth, { mode }))\n\n // * strip single leading space from wrapped lines after the first\n // * preserve indentation when enabled\n // * pad wrapped lines with bg color if padding is enabled and the line is short\n for (let r = 0; r < wrapped.length; r++) {\n let row = r > 0 && wrapped[r].startsWith(\" \") ? wrapped[r].slice(1) : wrapped[r]\n if (row === \"\" && r > 0 && r < wrapped.length - 1) continue\n if (indent) row = `${indent}${row}`\n if (opts.wrapBg) {\n const rowWidth = stringWidth(row)\n const bg = rowWidth > 0 ? ansiBg(row, rowWidth - 1) : undefined\n if (bg && rowWidth < opts.width) {\n row = `${row}${styleAnsi(\" \".repeat(opts.width - rowWidth), { bg })}`\n }\n }\n ret.push(row)\n }\n }\n }\n return ret.map((line) => (opts.style ? opts.style(line) : line))\n}\n\nexport function expandTabs(s: string, tabSize = TAB_WIDTH): string {\n if (!s.includes(\"\\t\")) return s\n const plain = hasAnsi(s) ? stripAnsi(s) : s\n const spaces: string[] = []\n let col = 0\n\n for (const ch of plain) {\n if (ch === \"\\t\") {\n const n = tabSize - (col % tabSize)\n spaces.push(\" \".repeat(n))\n col += n\n } else if (ch === \"\\n\" || ch === \"\\r\") {\n col = 0\n } else {\n col += stringWidth(ch)\n }\n }\n\n let i = 0\n return s.replaceAll(\"\\t\", () => spaces[i++] ?? \" \".repeat(tabSize))\n}\n\nexport function formatLines(\n text: string | string[],\n opts: {\n numbered?: boolean\n numberOffset?: number\n maxLineLength?: number\n offset?: number\n limit?: number\n more?: false | ((more: number, msg: string) => string)\n style?: StyleBuilder\n } = {}\n): string[] {\n const lines = (typeof text === \"string\" ? splitAnsi(text) : text).map((line) => expandTabs(line))\n const offset = clamp(opts.offset ?? 0, 0, lines.length - 1)\n const limit = clamp(opts.limit ?? lines.length, 1, lines.length - offset)\n const ellipsis = opts.style?.(ELLIPSIS) ?? ELLIPSIS\n let slice = lines\n .slice(offset, offset + limit)\n .map((line) => (opts.maxLineLength ? truncateAnsi(line, opts.maxLineLength, ellipsis) : line))\n\n const numberOffset = opts.numberOffset ?? offset + 1\n const gutterWidth = String(numberOffset + slice.length - 1).length + 2\n\n if (opts.numbered) {\n slice = slice.map((line, i) => {\n const n = numberOffset + i\n const lineo = `${String(n).padStart(gutterWidth - 2)} │`\n return `${opts.style?.(lineo) ?? lineo} ${line}`\n })\n }\n\n if (slice.length < lines.length && opts.more !== false) {\n const moreN = lines.length - slice.length\n let more = `+${moreN} more line${moreN > 1 ? \"s\" : \"\"}`\n more = opts.more?.(moreN, more) ?? more\n if (opts.numbered) {\n const moreGutter = `${\"…\".padStart(gutterWidth - 2)} │`\n slice.push(`${opts.style?.(moreGutter) ?? moreGutter} ${opts.style?.(more) ?? more}`)\n } else slice.push(opts.style?.(more) ?? more)\n }\n\n return slice\n}\n\nfunction maxContent(text: string): number {\n return text.split(\"\\n\").reduce((m, line) => Math.max(m, stringWidth(line)), 0)\n}\n\nfunction minContent(text: string, mode: WrapMode): number | undefined {\n switch (mode) {\n case \"none\": {\n return\n } // can't break, same as max\n case \"char\": {\n return 1\n } // can break anywhere → 1cell floor\n case \"word\": {\n // longest unbreakable run\n return text.split(/\\s+/).reduce((m, word) => Math.max(m, stringWidth(word)), 0)\n }\n default: {\n mode satisfies never // future modes get caught at type-check time\n return undefined\n }\n }\n}\n\nexport function calcLayout(text: string, opts: { wrap?: WrapMode } = {}): Layout {\n text = expandTabs(text)\n const width = maxContent(text)\n return {\n minWidth: minContent(text, opts.wrap ?? \"word\") ?? width,\n width,\n }\n}\n\nexport function countLines(text: string): number {\n let count = 0\n let pos = text.indexOf(\"\\n\")\n while (pos !== -1) {\n count++\n pos = text.indexOf(\"\\n\", pos + 1)\n }\n return count\n}\n\nexport function capitalize(s: string): string {\n return s.charAt(0).toUpperCase() + s.slice(1)\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { S as unwrap } from "./reactive-f7NpAi69.mjs";
2
2
  import { t as Node } from "./node-BZ7f6HzU.mjs";
3
- import { o as formatText, t as calcLayout } from "./text-CRZD9KTN.mjs";
3
+ import { o as formatText, t as calcLayout } from "./text-CkQ7Irmt.mjs";
4
4
  //#region src/widgets/text.ts
5
5
  var Text = class extends Node {
6
6
  async _render(ctx) {
@@ -30,4 +30,4 @@ function text(first, style) {
30
30
  //#endregion
31
31
  export { text as n, textContent as r, Text as t };
32
32
 
33
- //# sourceMappingURL=text-BLz1tRoC.mjs.map
33
+ //# sourceMappingURL=text-XvPfweeg.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-XvPfweeg.mjs","names":[],"sources":["../src/widgets/text.ts"],"sourcesContent":["import type { MaybePromise } from \"@zaly/shared\"\nimport type { RenderCtx } from \"../core/ctx.ts\"\nimport type { Reactive } from \"../core/reactive.ts\"\nimport type { State } from \"../core/state.ts\"\nimport type { Style } from \"../style/types.ts\"\n\nimport { Node } from \"../core/node.ts\"\nimport { unwrap } from \"../core/reactive.ts\"\nimport { calcLayout, formatText } from \"../layout/text.ts\"\n\n/**\n * Text content — three forms, resolved at render time:\n *\n * 1. Plain string — static content.\n * 2. Reactive accessor (`signal()` / `memo()`) — re-reads on each\n * render and subscribes the node so signal writes invalidate.\n * 3. `(ctx) => string` — computed from the render context. Use this\n * for inline-styled spans via `ctx.style`.\n *\n * Branded accessors are picked up via `isAccessor`; any other function\n * is treated as the ctx-aware form. Plain strings pass through.\n *\n * ```ts\n * text(\"hello\")\n * text(name) // signal accessor\n * text(({ style }) => style.ok(`✓ ${count}`)) // ctx-aware\n * ```\n */\nexport type TextContent = Reactive<string> | ((ctx: RenderCtx) => MaybePromise<Reactive<string>>)\n\nexport interface TextStyle extends Style<false> {\n content: TextContent\n wrap?: \"word\" | \"char\" | \"none\"\n}\n\nexport class Text extends Node<TextStyle> {\n protected async _render(ctx: RenderCtx): Promise<string[]> {\n const content = await textContent(this.state.content, ctx)\n return formatText(content, {\n style: ctx.style.add(this.state),\n width: ctx.width,\n wrap: this.state.wrap,\n })\n }\n\n override async layout(ctx: RenderCtx) {\n return calcLayout(await textContent(this.state.content, ctx), { wrap: this.state.wrap })\n }\n}\n\nexport function textContent(content: TextContent, ctx: RenderCtx): Promise<string>\nexport function textContent(content: TextContent | undefined, ctx: RenderCtx): Promise<undefined>\nexport async function textContent(\n content: TextContent | undefined,\n ctx: RenderCtx\n): Promise<string | undefined> {\n if (content === undefined) return\n const raw = unwrap(content)\n return unwrap(typeof raw === \"string\" ? raw : await raw(ctx))\n}\n\n/**\n * Factory for `Text`. Content can be a plain string or a `(ctx) => string`\n * function that's called at render time — use the function form when you\n * want inline-styled spans via `ctx.style`.\n *\n * ```ts\n * text(\"hello\")\n * text(\"hello\", { fg: \"primary\", bold: true })\n * text({ content: \"hello\", fg: \"primary\" })\n * text(({ style }) => `ok: ${style.ok(\"yes\")}`)\n * ```\n */\nexport function text(content: TextContent, style?: Omit<State<TextStyle>, \"content\">): Text\nexport function text(style: State<TextStyle>): Text\nexport function text(\n first: TextContent | State<TextStyle>,\n style?: Omit<State<TextStyle>, \"content\">\n): Text {\n // TextContent: string | function (incl. reactive accessor) | …\n // TextStyle: plain object with a `content` field.\n // The TextStyle branch is picked only when `first` is a non-function\n // object — accessors are functions, so they go through the content path.\n if (typeof first === \"string\" || typeof first === \"function\") {\n return new Text({ content: first, ...style })\n }\n return new Text(first)\n}\n"],"mappings":";;;;AAmCA,IAAa,OAAb,cAA0B,KAAgB;CACxC,MAAgB,QAAQ,KAAmC;EACzD,MAAM,UAAU,MAAM,YAAY,KAAK,MAAM,SAAS,GAAG;EACzD,OAAO,WAAW,SAAS;GACzB,OAAO,IAAI,MAAM,IAAI,KAAK,KAAK;GAC/B,OAAO,IAAI;GACX,MAAM,KAAK,MAAM;EACnB,CAAC;CACH;CAEA,MAAe,OAAO,KAAgB;EACpC,OAAO,WAAW,MAAM,YAAY,KAAK,MAAM,SAAS,GAAG,GAAG,EAAE,MAAM,KAAK,MAAM,KAAK,CAAC;CACzF;AACF;AAIA,eAAsB,YACpB,SACA,KAC6B;CAC7B,IAAI,YAAY,KAAA,GAAW;CAC3B,MAAM,MAAM,OAAO,OAAO;CAC1B,OAAO,OAAO,OAAO,QAAQ,WAAW,MAAM,MAAM,IAAI,GAAG,CAAC;AAC9D;AAgBA,SAAgB,KACd,OACA,OACM;CAKN,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAChD,OAAO,IAAI,KAAK;EAAE,SAAS;EAAO,GAAG;CAAM,CAAC;CAE9C,OAAO,IAAI,KAAK,KAAK;AACvB"}
package/dist/text.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as expandTabs, i as countLines, n as calcLayout, o as formatLines, r as capitalize, s as formatText, t as WrapMode } from "./text-BefiXAFW.mjs";
1
+ import { a as expandTabs, i as countLines, n as calcLayout, o as formatLines, r as capitalize, s as formatText, t as WrapMode } from "./text-CCYs9RB2.mjs";
2
2
  export { WrapMode, calcLayout, capitalize, countLines, expandTabs, formatLines, formatText };
package/dist/text.mjs CHANGED
@@ -1 +1 @@
1
- export { t as calcLayout, n as capitalize, r as countLines, i as expandTabs, a as formatLines, o as formatText } from "./text-CRZD9KTN.mjs";
1
+ export { t as calcLayout, n as capitalize, r as countLines, i as expandTabs, a as formatLines, o as formatText } from "./text-CkQ7Irmt.mjs";
@@ -117,6 +117,7 @@ const __typia_transform__accessExpressionAsString = _accessExpressionAsString;
117
117
  const toBaseColor = (() => {
118
118
  const _iv0 = /* @__PURE__ */ new Set([
119
119
  "accent",
120
+ "bg",
120
121
  "black",
121
122
  "blue",
122
123
  "border",
@@ -143,12 +144,12 @@ const toBaseColor = (() => {
143
144
  "diffTitle",
144
145
  "divider",
145
146
  "error",
147
+ "fg",
146
148
  "gray",
147
149
  "green",
148
150
  "grey",
149
151
  "gutter",
150
152
  "highlight",
151
- "id",
152
153
  "info",
153
154
  "inherit",
154
155
  "magenta",
@@ -184,8 +185,6 @@ const toBaseColor = (() => {
184
185
  "quiet",
185
186
  "red",
186
187
  "selection",
187
- "shiki",
188
- "subtle",
189
188
  "success",
190
189
  "syntaxBoolean",
191
190
  "syntaxBracket",
@@ -196,7 +195,6 @@ const toBaseColor = (() => {
196
195
  "syntaxNumber",
197
196
  "syntaxSpecial",
198
197
  "syntaxString",
199
- "text",
200
198
  "title",
201
199
  "ui",
202
200
  "warn",
@@ -205,6 +203,7 @@ const toBaseColor = (() => {
205
203
  ]);
206
204
  const _av0 = /* @__PURE__ */ new Set([
207
205
  "accent",
206
+ "bg",
208
207
  "black",
209
208
  "blue",
210
209
  "border",
@@ -231,12 +230,12 @@ const toBaseColor = (() => {
231
230
  "diffTitle",
232
231
  "divider",
233
232
  "error",
233
+ "fg",
234
234
  "gray",
235
235
  "green",
236
236
  "grey",
237
237
  "gutter",
238
238
  "highlight",
239
- "id",
240
239
  "info",
241
240
  "inherit",
242
241
  "magenta",
@@ -272,8 +271,6 @@ const toBaseColor = (() => {
272
271
  "quiet",
273
272
  "red",
274
273
  "selection",
275
- "shiki",
276
- "subtle",
277
274
  "success",
278
275
  "syntaxBoolean",
279
276
  "syntaxBracket",
@@ -284,14 +281,13 @@ const toBaseColor = (() => {
284
281
  "syntaxNumber",
285
282
  "syntaxSpecial",
286
283
  "syntaxString",
287
- "text",
288
284
  "title",
289
285
  "ui",
290
286
  "warn",
291
287
  "white",
292
288
  "yellow"
293
289
  ]);
294
- const _ae0 = "(\"accent\" | \"black\" | \"blue\" | \"border\" | \"borderTitle\" | \"brightBlack\" | \"brightBlue\" | \"brightCyan\" | \"brightGray\" | \"brightGreen\" | \"brightGrey\" | \"brightMagenta\" | \"brightRed\" | \"brightWhite\" | \"brightYellow\" | \"code\" | \"codeTitle\" | \"comment\" | \"cyan\" | \"delim\" | \"diffAdd\" | \"diffContext\" | \"diffDel\" | \"diffLine\" | \"diffTitle\" | \"divider\" | \"error\" | \"gray\" | \"green\" | \"grey\" | \"gutter\" | \"highlight\" | \"id\" | \"info\" | \"inherit\" | \"magenta\" | \"mdBold\" | \"mdCode\" | \"mdCodeBlock\" | \"mdCodeBlockTitle\" | \"mdHeading\" | \"mdHeading1\" | \"mdHeading2\" | \"mdHeading3\" | \"mdHeading4\" | \"mdHeading5\" | \"mdHeading6\" | \"mdHr\" | \"mdItalic\" | \"mdLink\" | \"mdListBullet\" | \"mdListChecked\" | \"mdListUnchecked\" | \"mdQuote\" | \"mdStrikethrough\" | \"mdTable\" | \"mdTableHeader\" | \"muted\" | \"name\" | \"optionActive\" | \"optionDesc\" | \"optionName\" | \"overlay\" | \"primary\" | \"prompt\" | \"quiet\" | \"red\" | \"selection\" | \"shiki\" | \"subtle\" | \"success\" | \"syntaxBoolean\" | \"syntaxBracket\" | \"syntaxConstant\" | \"syntaxDelimiter\" | \"syntaxField\" | \"syntaxFunction\" | \"syntaxNumber\" | \"syntaxSpecial\" | \"syntaxString\" | \"text\" | \"title\" | \"ui\" | \"warn\" | \"white\" | \"yellow\" | `#${string}`)";
290
+ const _ae0 = "(\"accent\" | \"bg\" | \"black\" | \"blue\" | \"border\" | \"borderTitle\" | \"brightBlack\" | \"brightBlue\" | \"brightCyan\" | \"brightGray\" | \"brightGreen\" | \"brightGrey\" | \"brightMagenta\" | \"brightRed\" | \"brightWhite\" | \"brightYellow\" | \"code\" | \"codeTitle\" | \"comment\" | \"cyan\" | \"delim\" | \"diffAdd\" | \"diffContext\" | \"diffDel\" | \"diffLine\" | \"diffTitle\" | \"divider\" | \"error\" | \"fg\" | \"gray\" | \"green\" | \"grey\" | \"gutter\" | \"highlight\" | \"info\" | \"inherit\" | \"magenta\" | \"mdBold\" | \"mdCode\" | \"mdCodeBlock\" | \"mdCodeBlockTitle\" | \"mdHeading\" | \"mdHeading1\" | \"mdHeading2\" | \"mdHeading3\" | \"mdHeading4\" | \"mdHeading5\" | \"mdHeading6\" | \"mdHr\" | \"mdItalic\" | \"mdLink\" | \"mdListBullet\" | \"mdListChecked\" | \"mdListUnchecked\" | \"mdQuote\" | \"mdStrikethrough\" | \"mdTable\" | \"mdTableHeader\" | \"muted\" | \"name\" | \"optionActive\" | \"optionDesc\" | \"optionName\" | \"overlay\" | \"primary\" | \"prompt\" | \"quiet\" | \"red\" | \"selection\" | \"success\" | \"syntaxBoolean\" | \"syntaxBracket\" | \"syntaxConstant\" | \"syntaxDelimiter\" | \"syntaxField\" | \"syntaxFunction\" | \"syntaxNumber\" | \"syntaxSpecial\" | \"syntaxString\" | \"title\" | \"ui\" | \"warn\" | \"white\" | \"yellow\" | `#${string}`)";
295
291
  const __is = (input) => null !== input && void 0 !== input && (true === _iv0.has(input) || "string" === typeof input && RegExp(/^#(.*)/).test(input));
296
292
  let _errorFactory;
297
293
  return (input, errorFactory) => {
@@ -320,6 +316,7 @@ const toBaseColor = (() => {
320
316
  const toLightnessColor = (() => {
321
317
  const _iv0 = /* @__PURE__ */ new Set([
322
318
  "accent",
319
+ "bg",
323
320
  "border",
324
321
  "borderTitle",
325
322
  "code",
@@ -333,9 +330,9 @@ const toLightnessColor = (() => {
333
330
  "diffTitle",
334
331
  "divider",
335
332
  "error",
333
+ "fg",
336
334
  "gutter",
337
335
  "highlight",
338
- "id",
339
336
  "info",
340
337
  "mdBold",
341
338
  "mdCode",
@@ -368,8 +365,6 @@ const toLightnessColor = (() => {
368
365
  "prompt",
369
366
  "quiet",
370
367
  "selection",
371
- "shiki",
372
- "subtle",
373
368
  "success",
374
369
  "syntaxBoolean",
375
370
  "syntaxBracket",
@@ -380,13 +375,13 @@ const toLightnessColor = (() => {
380
375
  "syntaxNumber",
381
376
  "syntaxSpecial",
382
377
  "syntaxString",
383
- "text",
384
378
  "title",
385
379
  "ui",
386
380
  "warn"
387
381
  ]);
388
382
  const _av0 = /* @__PURE__ */ new Set([
389
383
  "accent",
384
+ "bg",
390
385
  "border",
391
386
  "borderTitle",
392
387
  "code",
@@ -400,9 +395,9 @@ const toLightnessColor = (() => {
400
395
  "diffTitle",
401
396
  "divider",
402
397
  "error",
398
+ "fg",
403
399
  "gutter",
404
400
  "highlight",
405
- "id",
406
401
  "info",
407
402
  "mdBold",
408
403
  "mdCode",
@@ -435,8 +430,6 @@ const toLightnessColor = (() => {
435
430
  "prompt",
436
431
  "quiet",
437
432
  "selection",
438
- "shiki",
439
- "subtle",
440
433
  "success",
441
434
  "syntaxBoolean",
442
435
  "syntaxBracket",
@@ -447,12 +440,11 @@ const toLightnessColor = (() => {
447
440
  "syntaxNumber",
448
441
  "syntaxSpecial",
449
442
  "syntaxString",
450
- "text",
451
443
  "title",
452
444
  "ui",
453
445
  "warn"
454
446
  ]);
455
- const _ae0 = "(\"accent\" | \"border\" | \"borderTitle\" | \"code\" | \"codeTitle\" | \"comment\" | \"delim\" | \"diffAdd\" | \"diffContext\" | \"diffDel\" | \"diffLine\" | \"diffTitle\" | \"divider\" | \"error\" | \"gutter\" | \"highlight\" | \"id\" | \"info\" | \"mdBold\" | \"mdCode\" | \"mdCodeBlock\" | \"mdCodeBlockTitle\" | \"mdHeading\" | \"mdHeading1\" | \"mdHeading2\" | \"mdHeading3\" | \"mdHeading4\" | \"mdHeading5\" | \"mdHeading6\" | \"mdHr\" | \"mdItalic\" | \"mdLink\" | \"mdListBullet\" | \"mdListChecked\" | \"mdListUnchecked\" | \"mdQuote\" | \"mdStrikethrough\" | \"mdTable\" | \"mdTableHeader\" | \"muted\" | \"name\" | \"optionActive\" | \"optionDesc\" | \"optionName\" | \"overlay\" | \"primary\" | \"prompt\" | \"quiet\" | \"selection\" | \"shiki\" | \"subtle\" | \"success\" | \"syntaxBoolean\" | \"syntaxBracket\" | \"syntaxConstant\" | \"syntaxDelimiter\" | \"syntaxField\" | \"syntaxFunction\" | \"syntaxNumber\" | \"syntaxSpecial\" | \"syntaxString\" | \"text\" | \"title\" | \"ui\" | \"warn\" | `#${string}`)";
447
+ const _ae0 = "(\"accent\" | \"bg\" | \"border\" | \"borderTitle\" | \"code\" | \"codeTitle\" | \"comment\" | \"delim\" | \"diffAdd\" | \"diffContext\" | \"diffDel\" | \"diffLine\" | \"diffTitle\" | \"divider\" | \"error\" | \"fg\" | \"gutter\" | \"highlight\" | \"info\" | \"mdBold\" | \"mdCode\" | \"mdCodeBlock\" | \"mdCodeBlockTitle\" | \"mdHeading\" | \"mdHeading1\" | \"mdHeading2\" | \"mdHeading3\" | \"mdHeading4\" | \"mdHeading5\" | \"mdHeading6\" | \"mdHr\" | \"mdItalic\" | \"mdLink\" | \"mdListBullet\" | \"mdListChecked\" | \"mdListUnchecked\" | \"mdQuote\" | \"mdStrikethrough\" | \"mdTable\" | \"mdTableHeader\" | \"muted\" | \"name\" | \"optionActive\" | \"optionDesc\" | \"optionName\" | \"overlay\" | \"primary\" | \"prompt\" | \"quiet\" | \"selection\" | \"success\" | \"syntaxBoolean\" | \"syntaxBracket\" | \"syntaxConstant\" | \"syntaxDelimiter\" | \"syntaxField\" | \"syntaxFunction\" | \"syntaxNumber\" | \"syntaxSpecial\" | \"syntaxString\" | \"title\" | \"ui\" | \"warn\" | `#${string}`)";
456
448
  const __is = (input) => null !== input && void 0 !== input && (true === _iv0.has(input) || "string" === typeof input && RegExp(/^#(.*)/).test(input));
457
449
  let _errorFactory;
458
450
  return (input, errorFactory) => {
@@ -544,7 +536,7 @@ const toStyle = (() => {
544
536
  };
545
537
  })();
546
538
  const isColorKey = (() => {
547
- return (input) => "accent" === input || "error" === input || "info" === input || "primary" === input || "success" === input || "text" === input || "warn" === input;
539
+ return (input) => "accent" === input || "bg" === input || "error" === input || "fg" === input || "info" === input || "primary" === input || "success" === input || "warn" === input;
548
540
  })();
549
541
  function toColor(value) {
550
542
  if (typeof value !== "string") return toBaseColor(value);
@@ -860,4 +852,4 @@ function validateTheme(input) {
860
852
  //#endregion
861
853
  export { validateTheme };
862
854
 
863
- //# sourceMappingURL=theme.config-BKXX_noZ.mjs.map
855
+ //# sourceMappingURL=theme.config-B3Yx--C2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.config-B3Yx--C2.mjs","names":["_accessExpressionAsString_1._accessExpressionAsString","_assertGuard_1._assertGuard"],"sources":["../../../node_modules/.bun/typia@15.1.0+367f7514c87f1df1/node_modules/typia/lib/TypeGuardError.mjs","../../../node_modules/.bun/typia@15.1.0+367f7514c87f1df1/node_modules/typia/lib/internal/_assertGuard.mjs","../../../node_modules/.bun/typia@15.1.0+367f7514c87f1df1/node_modules/typia/lib/internal/_accessExpressionAsString.mjs","../src/schemas/gen/theme.config.ts"],"sourcesContent":["//#region src/TypeGuardError.ts\n/**\n* Error thrown when type assertion fails.\n*\n* Thrown by {@link assert}, {@link assertGuard}, and other assert-family\n* functions when input doesn't match expected type `T`. Contains detailed\n* information about the first assertion failure:\n*\n* - `method`: Which typia function threw (e.g., `\"typia.assert\"`)\n* - `path`: Property path where error occurred (e.g., `\"input.user.age\"`)\n* - `expected`: Expected type string (e.g., `\"number & ExclusiveMinimum<19>\"`)\n* - `value`: Actual value that failed validation\n*\n* @template T Expected type (for type safety)\n*/\nvar TypeGuardError = class extends Error {\n\t/**\n\t* Creates a new TypeGuardError instance.\n\t*\n\t* @param props Error properties\n\t*/\n\tconstructor(props) {\n\t\tsuper(props.message || `Error on ${props.method}(): invalid type${props.path ? ` on ${props.path}` : \"\"}, expect to be ${props.expected}`);\n\t\tconst proto = new.target.prototype;\n\t\tif (Object.setPrototypeOf) Object.setPrototypeOf(this, proto);\n\t\telse this.__proto__ = proto;\n\t\tthis.name = \"TypeGuardError\";\n\t\tthis.method = props.method;\n\t\tthis.path = props.path;\n\t\tthis.expected = props.expected;\n\t\tthis.value = props.value;\n\t\tif (props.description || props.value === void 0) this.description = props.description ?? [\n\t\t\t\"The value at this path is `undefined`.\",\n\t\t\t\"\",\n\t\t\t`Please fill the \\`${props.expected}\\` typed value next time.`\n\t\t].join(\"\\n\");\n\t}\n};\n//#endregion\nexport { TypeGuardError };\n\n//# sourceMappingURL=TypeGuardError.mjs.map","import { TypeGuardError } from \"../TypeGuardError.mjs\";\n//#region src/internal/_assertGuard.ts\n/**\n* Report an assertion failure.\n*\n* When `exceptionable` is true it throws the error that `factory` makes, or a\n* TypeGuardError when `factory` is not a function; otherwise it returns false\n* so a union probe can try the next branch.\n*\n* @evidence contracts/common.md#principled-implementation When the call is exceptionable it throws an error built by the caller's factory if one is a function, and a TypeGuardError otherwise, and when it is not exceptionable it returns false so a union probe can try another branch without throwing. The factory is tested for callability because a pointwise call such as `rows.map(assertUser)` passes the element index in that position, which a bare truthiness test would call.\n* @evidence contracts/common.md#clear-and-simple-design One function with a boolean guard and one factory branch.\n* @evidence contracts/common.md#prohibited-implementation-shortcuts A non-callable argument falls back to the default error and is not retried or wrapped; the comment explains that a create-time factory overridden by the argument cannot be recovered here.\n* @evidence contracts/common.md#meaningful-documentation The doc states the two outcomes and the factory rule; the inline comment records the pointwise hand-off failure.\n*/\nconst _assertGuard = (exceptionable, props, factory) => {\n\tif (exceptionable === true) {\n\t\tif (typeof factory === \"function\") throw factory(props);\n\t\tthrow new TypeGuardError(props);\n\t}\n\treturn false;\n};\n//#endregion\nexport { _assertGuard };\n\n//# sourceMappingURL=_assertGuard.mjs.map","//#region src/internal/_accessExpressionAsString.ts\n/**\n* Write a property access on a key as source text.\n*\n* A key that is a legal ASCII identifier and not a reserved word becomes\n* `.key`, and any other key becomes `[\"key\"]` with a JSON string literal.\n*\n* @evidence contracts/common.md#principled-implementation A key that is a legal ASCII identifier and not a reserved word is written as a dot access, and every other key as a bracket access with a JSON string literal, which is a valid JavaScript string literal for any key, so the emitted access expression is correct for every property name. The reserved list is conservative for dot access, which is legal after a dot, so it can only cause an extra bracket form; the strict-mode future reserved words are not in the list.\n* @evidence contracts/common.md#clear-and-simple-design One function with two private helpers, the identifier test and the reserved set.\n* @evidence contracts/common.md#prohibited-implementation-shortcuts The decision is purely lexical and no property name is special-cased.\n* @evidence contracts/common.md#meaningful-documentation The doc states the dot and bracket forms and why bracket access is always safe.\n*/\nconst _accessExpressionAsString = (str) => variable(str) ? `.${str}` : `[${JSON.stringify(str)}]`;\nconst variable = (str) => reserved(str) === false && /^[a-zA-Z_$][a-zA-Z_$0-9]*$/g.test(str);\nconst reserved = (str) => RESERVED.has(str);\nconst RESERVED = /* @__PURE__ */ new Set([\n\t\"break\",\n\t\"case\",\n\t\"catch\",\n\t\"class\",\n\t\"const\",\n\t\"continue\",\n\t\"debugger\",\n\t\"default\",\n\t\"delete\",\n\t\"do\",\n\t\"else\",\n\t\"enum\",\n\t\"export\",\n\t\"extends\",\n\t\"false\",\n\t\"finally\",\n\t\"for\",\n\t\"function\",\n\t\"if\",\n\t\"import\",\n\t\"in\",\n\t\"instanceof\",\n\t\"new\",\n\t\"null\",\n\t\"return\",\n\t\"super\",\n\t\"switch\",\n\t\"this\",\n\t\"throw\",\n\t\"true\",\n\t\"try\",\n\t\"typeof\",\n\t\"var\",\n\t\"void\",\n\t\"while\",\n\t\"with\"\n]);\n//#endregion\nexport { _accessExpressionAsString };\n\n//# sourceMappingURL=_accessExpressionAsString.mjs.map","import * as _assertGuard_1 from \"typia/lib/internal/_assertGuard\";\nimport * as _accessExpressionAsString_1 from \"typia/lib/internal/_accessExpressionAsString\";\nconst __typia_transform__accessExpressionAsString = _accessExpressionAsString_1._accessExpressionAsString;\n// oxlint-disable import/no-named-as-default-member\nimport type { ShikiTheme } from \"../../shiki/types.ts\";\nimport type { AnsiColorName, BrightAnsiColorName, Color, HexColor, Style, ThemeKey, } from \"../../style/types.ts\";\nimport type { Theme } from \"../../themes/types.ts\";\ntype UserStyle = Omit<Style, \"fg\" | \"bg\" | \"style\"> & {\n fg?: string;\n bg?: string;\n};\ntype UserTheme = {\n $schema?: string;\n shiki?: ShikiTheme;\n id: string;\n name?: string;\n} & Record<string, string | UserStyle>;\ntype ColorKeys<T> = {\n [K in keyof T]-?: [\n T[K]\n ] extends [\n Color\n ] ? K : never;\n}[keyof T];\nconst toBaseColor = (() => {\n const _iv0 = new Set([\"accent\", \"bg\", \"black\", \"blue\", \"border\", \"borderTitle\", \"brightBlack\", \"brightBlue\", \"brightCyan\", \"brightGray\", \"brightGreen\", \"brightGrey\", \"brightMagenta\", \"brightRed\", \"brightWhite\", \"brightYellow\", \"code\", \"codeTitle\", \"comment\", \"cyan\", \"delim\", \"diffAdd\", \"diffContext\", \"diffDel\", \"diffLine\", \"diffTitle\", \"divider\", \"error\", \"fg\", \"gray\", \"green\", \"grey\", \"gutter\", \"highlight\", \"info\", \"inherit\", \"magenta\", \"mdBold\", \"mdCode\", \"mdCodeBlock\", \"mdCodeBlockTitle\", \"mdHeading\", \"mdHeading1\", \"mdHeading2\", \"mdHeading3\", \"mdHeading4\", \"mdHeading5\", \"mdHeading6\", \"mdHr\", \"mdItalic\", \"mdLink\", \"mdListBullet\", \"mdListChecked\", \"mdListUnchecked\", \"mdQuote\", \"mdStrikethrough\", \"mdTable\", \"mdTableHeader\", \"muted\", \"name\", \"optionActive\", \"optionDesc\", \"optionName\", \"overlay\", \"primary\", \"prompt\", \"quiet\", \"red\", \"selection\", \"success\", \"syntaxBoolean\", \"syntaxBracket\", \"syntaxConstant\", \"syntaxDelimiter\", \"syntaxField\", \"syntaxFunction\", \"syntaxNumber\", \"syntaxSpecial\", \"syntaxString\", \"title\", \"ui\", \"warn\", \"white\", \"yellow\"]);\n const _av0 = new Set([\"accent\", \"bg\", \"black\", \"blue\", \"border\", \"borderTitle\", \"brightBlack\", \"brightBlue\", \"brightCyan\", \"brightGray\", \"brightGreen\", \"brightGrey\", \"brightMagenta\", \"brightRed\", \"brightWhite\", \"brightYellow\", \"code\", \"codeTitle\", \"comment\", \"cyan\", \"delim\", \"diffAdd\", \"diffContext\", \"diffDel\", \"diffLine\", \"diffTitle\", \"divider\", \"error\", \"fg\", \"gray\", \"green\", \"grey\", \"gutter\", \"highlight\", \"info\", \"inherit\", \"magenta\", \"mdBold\", \"mdCode\", \"mdCodeBlock\", \"mdCodeBlockTitle\", \"mdHeading\", \"mdHeading1\", \"mdHeading2\", \"mdHeading3\", \"mdHeading4\", \"mdHeading5\", \"mdHeading6\", \"mdHr\", \"mdItalic\", \"mdLink\", \"mdListBullet\", \"mdListChecked\", \"mdListUnchecked\", \"mdQuote\", \"mdStrikethrough\", \"mdTable\", \"mdTableHeader\", \"muted\", \"name\", \"optionActive\", \"optionDesc\", \"optionName\", \"overlay\", \"primary\", \"prompt\", \"quiet\", \"red\", \"selection\", \"success\", \"syntaxBoolean\", \"syntaxBracket\", \"syntaxConstant\", \"syntaxDelimiter\", \"syntaxField\", \"syntaxFunction\", \"syntaxNumber\", \"syntaxSpecial\", \"syntaxString\", \"title\", \"ui\", \"warn\", \"white\", \"yellow\"]);\n const _ae0 = \"(\\\"accent\\\" | \\\"bg\\\" | \\\"black\\\" | \\\"blue\\\" | \\\"border\\\" | \\\"borderTitle\\\" | \\\"brightBlack\\\" | \\\"brightBlue\\\" | \\\"brightCyan\\\" | \\\"brightGray\\\" | \\\"brightGreen\\\" | \\\"brightGrey\\\" | \\\"brightMagenta\\\" | \\\"brightRed\\\" | \\\"brightWhite\\\" | \\\"brightYellow\\\" | \\\"code\\\" | \\\"codeTitle\\\" | \\\"comment\\\" | \\\"cyan\\\" | \\\"delim\\\" | \\\"diffAdd\\\" | \\\"diffContext\\\" | \\\"diffDel\\\" | \\\"diffLine\\\" | \\\"diffTitle\\\" | \\\"divider\\\" | \\\"error\\\" | \\\"fg\\\" | \\\"gray\\\" | \\\"green\\\" | \\\"grey\\\" | \\\"gutter\\\" | \\\"highlight\\\" | \\\"info\\\" | \\\"inherit\\\" | \\\"magenta\\\" | \\\"mdBold\\\" | \\\"mdCode\\\" | \\\"mdCodeBlock\\\" | \\\"mdCodeBlockTitle\\\" | \\\"mdHeading\\\" | \\\"mdHeading1\\\" | \\\"mdHeading2\\\" | \\\"mdHeading3\\\" | \\\"mdHeading4\\\" | \\\"mdHeading5\\\" | \\\"mdHeading6\\\" | \\\"mdHr\\\" | \\\"mdItalic\\\" | \\\"mdLink\\\" | \\\"mdListBullet\\\" | \\\"mdListChecked\\\" | \\\"mdListUnchecked\\\" | \\\"mdQuote\\\" | \\\"mdStrikethrough\\\" | \\\"mdTable\\\" | \\\"mdTableHeader\\\" | \\\"muted\\\" | \\\"name\\\" | \\\"optionActive\\\" | \\\"optionDesc\\\" | \\\"optionName\\\" | \\\"overlay\\\" | \\\"primary\\\" | \\\"prompt\\\" | \\\"quiet\\\" | \\\"red\\\" | \\\"selection\\\" | \\\"success\\\" | \\\"syntaxBoolean\\\" | \\\"syntaxBracket\\\" | \\\"syntaxConstant\\\" | \\\"syntaxDelimiter\\\" | \\\"syntaxField\\\" | \\\"syntaxFunction\\\" | \\\"syntaxNumber\\\" | \\\"syntaxSpecial\\\" | \\\"syntaxString\\\" | \\\"title\\\" | \\\"ui\\\" | \\\"warn\\\" | \\\"white\\\" | \\\"yellow\\\" | `#${string}`)\";\n const __is = (input: any): input is HexColor | AnsiColorName | BrightAnsiColorName | ThemeKey | \"inherit\" => null !== input && undefined !== input && (true === _iv0.has(input) || \"string\" === typeof input && RegExp(/^#(.*)/).test(input));\n let _errorFactory: any;\n return (input: any, errorFactory?: (p: import(\"typia\").TypeGuardError.IProps) => Error): HexColor | AnsiColorName | BrightAnsiColorName | ThemeKey | \"inherit\" => {\n if (false === __is(input)) {\n _errorFactory = errorFactory;\n ((input: any, _path: string, _exceptionable: boolean = true) => (null !== input || _assertGuard_1._assertGuard(true, {\n method: \"typia.createAssert\",\n path: _path + \"\",\n expected: _ae0,\n value: input\n }, _errorFactory)) && (undefined !== input || _assertGuard_1._assertGuard(true, {\n method: \"typia.createAssert\",\n path: _path + \"\",\n expected: _ae0,\n value: input\n }, _errorFactory)) && (true === _av0.has(input) || \"string\" === typeof input && RegExp(/^#(.*)/).test(input) || _assertGuard_1._assertGuard(true, {\n method: \"typia.createAssert\",\n path: _path + \"\",\n expected: _ae0,\n value: input\n }, _errorFactory)))(input, \"$input\", true);\n }\n return input;\n };\n})();\nconst toLightnessColor = (() => {\n const _iv0 = new Set([\"accent\", \"bg\", \"border\", \"borderTitle\", \"code\", \"codeTitle\", \"comment\", \"delim\", \"diffAdd\", \"diffContext\", \"diffDel\", \"diffLine\", \"diffTitle\", \"divider\", \"error\", \"fg\", \"gutter\", \"highlight\", \"info\", \"mdBold\", \"mdCode\", \"mdCodeBlock\", \"mdCodeBlockTitle\", \"mdHeading\", \"mdHeading1\", \"mdHeading2\", \"mdHeading3\", \"mdHeading4\", \"mdHeading5\", \"mdHeading6\", \"mdHr\", \"mdItalic\", \"mdLink\", \"mdListBullet\", \"mdListChecked\", \"mdListUnchecked\", \"mdQuote\", \"mdStrikethrough\", \"mdTable\", \"mdTableHeader\", \"muted\", \"name\", \"optionActive\", \"optionDesc\", \"optionName\", \"overlay\", \"primary\", \"prompt\", \"quiet\", \"selection\", \"success\", \"syntaxBoolean\", \"syntaxBracket\", \"syntaxConstant\", \"syntaxDelimiter\", \"syntaxField\", \"syntaxFunction\", \"syntaxNumber\", \"syntaxSpecial\", \"syntaxString\", \"title\", \"ui\", \"warn\"]);\n const _av0 = new Set([\"accent\", \"bg\", \"border\", \"borderTitle\", \"code\", \"codeTitle\", \"comment\", \"delim\", \"diffAdd\", \"diffContext\", \"diffDel\", \"diffLine\", \"diffTitle\", \"divider\", \"error\", \"fg\", \"gutter\", \"highlight\", \"info\", \"mdBold\", \"mdCode\", \"mdCodeBlock\", \"mdCodeBlockTitle\", \"mdHeading\", \"mdHeading1\", \"mdHeading2\", \"mdHeading3\", \"mdHeading4\", \"mdHeading5\", \"mdHeading6\", \"mdHr\", \"mdItalic\", \"mdLink\", \"mdListBullet\", \"mdListChecked\", \"mdListUnchecked\", \"mdQuote\", \"mdStrikethrough\", \"mdTable\", \"mdTableHeader\", \"muted\", \"name\", \"optionActive\", \"optionDesc\", \"optionName\", \"overlay\", \"primary\", \"prompt\", \"quiet\", \"selection\", \"success\", \"syntaxBoolean\", \"syntaxBracket\", \"syntaxConstant\", \"syntaxDelimiter\", \"syntaxField\", \"syntaxFunction\", \"syntaxNumber\", \"syntaxSpecial\", \"syntaxString\", \"title\", \"ui\", \"warn\"]);\n const _ae0 = \"(\\\"accent\\\" | \\\"bg\\\" | \\\"border\\\" | \\\"borderTitle\\\" | \\\"code\\\" | \\\"codeTitle\\\" | \\\"comment\\\" | \\\"delim\\\" | \\\"diffAdd\\\" | \\\"diffContext\\\" | \\\"diffDel\\\" | \\\"diffLine\\\" | \\\"diffTitle\\\" | \\\"divider\\\" | \\\"error\\\" | \\\"fg\\\" | \\\"gutter\\\" | \\\"highlight\\\" | \\\"info\\\" | \\\"mdBold\\\" | \\\"mdCode\\\" | \\\"mdCodeBlock\\\" | \\\"mdCodeBlockTitle\\\" | \\\"mdHeading\\\" | \\\"mdHeading1\\\" | \\\"mdHeading2\\\" | \\\"mdHeading3\\\" | \\\"mdHeading4\\\" | \\\"mdHeading5\\\" | \\\"mdHeading6\\\" | \\\"mdHr\\\" | \\\"mdItalic\\\" | \\\"mdLink\\\" | \\\"mdListBullet\\\" | \\\"mdListChecked\\\" | \\\"mdListUnchecked\\\" | \\\"mdQuote\\\" | \\\"mdStrikethrough\\\" | \\\"mdTable\\\" | \\\"mdTableHeader\\\" | \\\"muted\\\" | \\\"name\\\" | \\\"optionActive\\\" | \\\"optionDesc\\\" | \\\"optionName\\\" | \\\"overlay\\\" | \\\"primary\\\" | \\\"prompt\\\" | \\\"quiet\\\" | \\\"selection\\\" | \\\"success\\\" | \\\"syntaxBoolean\\\" | \\\"syntaxBracket\\\" | \\\"syntaxConstant\\\" | \\\"syntaxDelimiter\\\" | \\\"syntaxField\\\" | \\\"syntaxFunction\\\" | \\\"syntaxNumber\\\" | \\\"syntaxSpecial\\\" | \\\"syntaxString\\\" | \\\"title\\\" | \\\"ui\\\" | \\\"warn\\\" | `#${string}`)\";\n const __is = (input: any): input is HexColor | ThemeKey => null !== input && undefined !== input && (true === _iv0.has(input) || \"string\" === typeof input && RegExp(/^#(.*)/).test(input));\n let _errorFactory: any;\n return (input: any, errorFactory?: (p: import(\"typia\").TypeGuardError.IProps) => Error): HexColor | ThemeKey => {\n if (false === __is(input)) {\n _errorFactory = errorFactory;\n ((input: any, _path: string, _exceptionable: boolean = true) => (null !== input || _assertGuard_1._assertGuard(true, {\n method: \"typia.createAssert\",\n path: _path + \"\",\n expected: _ae0,\n value: input\n }, _errorFactory)) && (undefined !== input || _assertGuard_1._assertGuard(true, {\n method: \"typia.createAssert\",\n path: _path + \"\",\n expected: _ae0,\n value: input\n }, _errorFactory)) && (true === _av0.has(input) || \"string\" === typeof input && RegExp(/^#(.*)/).test(input) || _assertGuard_1._assertGuard(true, {\n method: \"typia.createAssert\",\n path: _path + \"\",\n expected: _ae0,\n value: input\n }, _errorFactory)))(input, \"$input\", true);\n }\n return input;\n };\n})();\nconst toStyle = (() => {\n const _ao0 = (input: any, _path: string, _exceptionable: boolean = true): boolean => _ao1(input, _path, true && _exceptionable) && ((undefined === input.fg || \"string\" === typeof input.fg || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssert\",\n path: _path + \".fg\",\n expected: \"(string | undefined)\",\n value: input.fg\n }, _errorFactory)) && (undefined === input.bg || \"string\" === typeof input.bg || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssert\",\n path: _path + \".bg\",\n expected: \"(string | undefined)\",\n value: input.bg\n }, _errorFactory)));\n const _ao1 = (input: any, _path: string, _exceptionable: boolean = true): boolean => (undefined === input.bold || \"boolean\" === typeof input.bold || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssert\",\n path: _path + \".bold\",\n expected: \"(boolean | undefined)\",\n value: input.bold\n }, _errorFactory)) && (undefined === input.dim || \"boolean\" === typeof input.dim || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssert\",\n path: _path + \".dim\",\n expected: \"(boolean | undefined)\",\n value: input.dim\n }, _errorFactory)) && (undefined === input.italic || \"boolean\" === typeof input.italic || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssert\",\n path: _path + \".italic\",\n expected: \"(boolean | undefined)\",\n value: input.italic\n }, _errorFactory)) && (undefined === input.underline || \"boolean\" === typeof input.underline || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssert\",\n path: _path + \".underline\",\n expected: \"(boolean | undefined)\",\n value: input.underline\n }, _errorFactory)) && (undefined === input.inverse || \"boolean\" === typeof input.inverse || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssert\",\n path: _path + \".inverse\",\n expected: \"(boolean | undefined)\",\n value: input.inverse\n }, _errorFactory)) && (undefined === input.strikethrough || \"boolean\" === typeof input.strikethrough || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssert\",\n path: _path + \".strikethrough\",\n expected: \"(boolean | undefined)\",\n value: input.strikethrough\n }, _errorFactory));\n const _io0 = (input: any): boolean => _io1(input) && ((undefined === input.fg || \"string\" === typeof input.fg) && (undefined === input.bg || \"string\" === typeof input.bg));\n const _io1 = (input: any): boolean => (undefined === input.bold || \"boolean\" === typeof input.bold) && (undefined === input.dim || \"boolean\" === typeof input.dim) && (undefined === input.italic || \"boolean\" === typeof input.italic) && (undefined === input.underline || \"boolean\" === typeof input.underline) && (undefined === input.inverse || \"boolean\" === typeof input.inverse) && (undefined === input.strikethrough || \"boolean\" === typeof input.strikethrough);\n const __is = (input: any): input is UserStyle => \"object\" === typeof input && null !== input && false === Array.isArray(input) && _io0(input);\n let _errorFactory: any;\n return (input: any, errorFactory?: (p: import(\"typia\").TypeGuardError.IProps) => Error): UserStyle => {\n if (false === __is(input)) {\n _errorFactory = errorFactory;\n ((input: any, _path: string, _exceptionable: boolean = true) => (\"object\" === typeof input && null !== input && false === Array.isArray(input) || _assertGuard_1._assertGuard(true, {\n method: \"typia.createAssert\",\n path: _path + \"\",\n expected: \"UserStyle\",\n value: input\n }, _errorFactory)) && _ao0(input, _path + \"\", true) || _assertGuard_1._assertGuard(true, {\n method: \"typia.createAssert\",\n path: _path + \"\",\n expected: \"UserStyle\",\n value: input\n }, _errorFactory))(input, \"$input\", true);\n }\n return input;\n };\n})();\nconst isColorKey = (() => {\n return (input: any): input is ColorKeys<Theme> => \"accent\" === input || \"bg\" === input || \"error\" === input || \"fg\" === input || \"info\" === input || \"primary\" === input || \"success\" === input || \"warn\" === input;\n})();\nfunction toColor(value: unknown) {\n if (typeof value !== \"string\")\n return toBaseColor(value); // will throw\n const color = value.replace(/[+-]\\d+/, \"\");\n if (value.match(/[+-]\\d+/))\n toLightnessColor(color);\n return toBaseColor(color);\n}\nconst validator = (() => {\n const _iv0 = new Set([\"andromeeda\", \"aurora-x\", \"ayu-dark\", \"ayu-light\", \"ayu-mirage\", \"catppuccin-frappe\", \"catppuccin-latte\", \"catppuccin-macchiato\", \"catppuccin-mocha\", \"dark-plus\", \"dracula\", \"dracula-soft\", \"everforest-dark\", \"everforest-light\", \"github-dark\", \"github-dark-default\", \"github-dark-dimmed\", \"github-dark-high-contrast\", \"github-light\", \"github-light-default\", \"github-light-high-contrast\", \"gruvbox-dark-hard\", \"gruvbox-dark-medium\", \"gruvbox-dark-soft\", \"gruvbox-light-hard\", \"gruvbox-light-medium\", \"gruvbox-light-soft\", \"horizon\", \"horizon-bright\", \"houston\", \"kanagawa-dragon\", \"kanagawa-lotus\", \"kanagawa-wave\", \"laserwave\", \"light-plus\", \"material-theme\", \"material-theme-darker\", \"material-theme-lighter\", \"material-theme-ocean\", \"material-theme-palenight\", \"min-dark\", \"min-light\", \"monokai\", \"night-owl\", \"night-owl-light\", \"nord\", \"one-dark-pro\", \"one-light\", \"plastic\", \"poimandres\", \"red\", \"rose-pine\", \"rose-pine-dawn\", \"rose-pine-moon\", \"slack-dark\", \"slack-ochin\", \"snazzy-light\", \"solarized-dark\", \"solarized-light\", \"synthwave-84\", \"tokyo-night\", \"vesper\", \"vitesse-black\", \"vitesse-dark\", \"vitesse-light\"]);\n const _av0 = new Set([\"andromeeda\", \"aurora-x\", \"ayu-dark\", \"ayu-light\", \"ayu-mirage\", \"catppuccin-frappe\", \"catppuccin-latte\", \"catppuccin-macchiato\", \"catppuccin-mocha\", \"dark-plus\", \"dracula\", \"dracula-soft\", \"everforest-dark\", \"everforest-light\", \"github-dark\", \"github-dark-default\", \"github-dark-dimmed\", \"github-dark-high-contrast\", \"github-light\", \"github-light-default\", \"github-light-high-contrast\", \"gruvbox-dark-hard\", \"gruvbox-dark-medium\", \"gruvbox-dark-soft\", \"gruvbox-light-hard\", \"gruvbox-light-medium\", \"gruvbox-light-soft\", \"horizon\", \"horizon-bright\", \"houston\", \"kanagawa-dragon\", \"kanagawa-lotus\", \"kanagawa-wave\", \"laserwave\", \"light-plus\", \"material-theme\", \"material-theme-darker\", \"material-theme-lighter\", \"material-theme-ocean\", \"material-theme-palenight\", \"min-dark\", \"min-light\", \"monokai\", \"night-owl\", \"night-owl-light\", \"nord\", \"one-dark-pro\", \"one-light\", \"plastic\", \"poimandres\", \"red\", \"rose-pine\", \"rose-pine-dawn\", \"rose-pine-moon\", \"slack-dark\", \"slack-ochin\", \"snazzy-light\", \"solarized-dark\", \"solarized-light\", \"synthwave-84\", \"tokyo-night\", \"vesper\", \"vitesse-black\", \"vitesse-dark\", \"vitesse-light\"]);\n const _ae0 = \"(\\\"andromeeda\\\" | \\\"aurora-x\\\" | \\\"ayu-dark\\\" | \\\"ayu-light\\\" | \\\"ayu-mirage\\\" | \\\"catppuccin-frappe\\\" | \\\"catppuccin-latte\\\" | \\\"catppuccin-macchiato\\\" | \\\"catppuccin-mocha\\\" | \\\"dark-plus\\\" | \\\"dracula\\\" | \\\"dracula-soft\\\" | \\\"everforest-dark\\\" | \\\"everforest-light\\\" | \\\"github-dark\\\" | \\\"github-dark-default\\\" | \\\"github-dark-dimmed\\\" | \\\"github-dark-high-contrast\\\" | \\\"github-light\\\" | \\\"github-light-default\\\" | \\\"github-light-high-contrast\\\" | \\\"gruvbox-dark-hard\\\" | \\\"gruvbox-dark-medium\\\" | \\\"gruvbox-dark-soft\\\" | \\\"gruvbox-light-hard\\\" | \\\"gruvbox-light-medium\\\" | \\\"gruvbox-light-soft\\\" | \\\"horizon\\\" | \\\"horizon-bright\\\" | \\\"houston\\\" | \\\"kanagawa-dragon\\\" | \\\"kanagawa-lotus\\\" | \\\"kanagawa-wave\\\" | \\\"laserwave\\\" | \\\"light-plus\\\" | \\\"material-theme\\\" | \\\"material-theme-darker\\\" | \\\"material-theme-lighter\\\" | \\\"material-theme-ocean\\\" | \\\"material-theme-palenight\\\" | \\\"min-dark\\\" | \\\"min-light\\\" | \\\"monokai\\\" | \\\"night-owl\\\" | \\\"night-owl-light\\\" | \\\"nord\\\" | \\\"one-dark-pro\\\" | \\\"one-light\\\" | \\\"plastic\\\" | \\\"poimandres\\\" | \\\"red\\\" | \\\"rose-pine\\\" | \\\"rose-pine-dawn\\\" | \\\"rose-pine-moon\\\" | \\\"slack-dark\\\" | \\\"slack-ochin\\\" | \\\"snazzy-light\\\" | \\\"solarized-dark\\\" | \\\"solarized-light\\\" | \\\"synthwave-84\\\" | \\\"tokyo-night\\\" | \\\"vesper\\\" | \\\"vitesse-black\\\" | \\\"vitesse-dark\\\" | \\\"vitesse-light\\\" | undefined)\";\n const _ao0 = (input: any, _path: string, _exceptionable: boolean = true): boolean => (undefined === input.$schema || \"string\" === typeof input.$schema || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + \".$schema\",\n expected: \"(string | undefined)\",\n value: input.$schema\n }, _errorFactory)) && (undefined === input.shiki || true === _av0.has(input.shiki) || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + \".shiki\",\n expected: _ae0,\n value: input.shiki\n }, _errorFactory)) && (undefined === input.id || \"string\" === typeof input.id || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + \".id\",\n expected: \"(string | undefined)\",\n value: input.id\n }, _errorFactory)) && (undefined === input.name || \"string\" === typeof input.name || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + \".name\",\n expected: \"(string | undefined)\",\n value: input.name\n }, _errorFactory)) && (false === _exceptionable || Object.keys(input).every((key: any) => {\n if ([\"$schema\", \"shiki\", \"id\", \"name\"].some((prop: any) => key === prop))\n return true;\n const value = input[key];\n if (undefined === value)\n return true;\n return (null !== value || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + __typia_transform__accessExpressionAsString(key),\n expected: \"(UserStyle | string | undefined)\",\n value: value\n }, _errorFactory)) && (undefined === value || \"string\" === typeof value || (\"object\" === typeof value && null !== value && false === Array.isArray(value) || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + __typia_transform__accessExpressionAsString(key),\n expected: \"(UserStyle | string | undefined)\",\n value: value\n }, _errorFactory)) && _ao1(value, _path + __typia_transform__accessExpressionAsString(key), true && _exceptionable) || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + __typia_transform__accessExpressionAsString(key),\n expected: \"(UserStyle | string | undefined)\",\n value: value\n }, _errorFactory));\n }));\n const _ao1 = (input: any, _path: string, _exceptionable: boolean = true): boolean => (undefined === input.bold || \"boolean\" === typeof input.bold || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + \".bold\",\n expected: \"(boolean | undefined)\",\n value: input.bold\n }, _errorFactory)) && (undefined === input.dim || \"boolean\" === typeof input.dim || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + \".dim\",\n expected: \"(boolean | undefined)\",\n value: input.dim\n }, _errorFactory)) && (undefined === input.italic || \"boolean\" === typeof input.italic || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + \".italic\",\n expected: \"(boolean | undefined)\",\n value: input.italic\n }, _errorFactory)) && (undefined === input.underline || \"boolean\" === typeof input.underline || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + \".underline\",\n expected: \"(boolean | undefined)\",\n value: input.underline\n }, _errorFactory)) && (undefined === input.inverse || \"boolean\" === typeof input.inverse || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + \".inverse\",\n expected: \"(boolean | undefined)\",\n value: input.inverse\n }, _errorFactory)) && (undefined === input.strikethrough || \"boolean\" === typeof input.strikethrough || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + \".strikethrough\",\n expected: \"(boolean | undefined)\",\n value: input.strikethrough\n }, _errorFactory)) && (undefined === input.fg || \"string\" === typeof input.fg || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + \".fg\",\n expected: \"(string | undefined)\",\n value: input.fg\n }, _errorFactory)) && (undefined === input.bg || \"string\" === typeof input.bg || _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + \".bg\",\n expected: \"(string | undefined)\",\n value: input.bg\n }, _errorFactory)) && (0 === Object.keys(input).length || (false === _exceptionable || Object.keys(input).every((key: any) => {\n if ([\"bold\", \"dim\", \"italic\", \"underline\", \"inverse\", \"strikethrough\", \"fg\", \"bg\"].some((prop: any) => key === prop))\n return true;\n const value = input[key];\n if (undefined === value)\n return true;\n return _assertGuard_1._assertGuard(_exceptionable, {\n method: \"typia.createAssertEquals\",\n path: _path + _accessExpressionAsString_1._accessExpressionAsString(key),\n expected: \"undefined\",\n value: value\n }, _errorFactory);\n })));\n const _io0 = (input: any, _exceptionable: boolean = true): boolean => (undefined === input.$schema || \"string\" === typeof input.$schema) && (undefined === input.shiki || true === _iv0.has(input.shiki)) && (undefined === input.id || \"string\" === typeof input.id) && (undefined === input.name || \"string\" === typeof input.name) && Object.keys(input).every((key: any) => {\n if ([\"$schema\", \"shiki\", \"id\", \"name\"].some((prop: any) => key === prop))\n return true;\n const value = input[key];\n if (undefined === value)\n return true;\n return null !== value && (undefined === value || \"string\" === typeof value || \"object\" === typeof value && null !== value && false === Array.isArray(value) && _io1(value, true && _exceptionable));\n });\n const _io1 = (input: any, _exceptionable: boolean = true): boolean => (undefined === input.bold || \"boolean\" === typeof input.bold) && (undefined === input.dim || \"boolean\" === typeof input.dim) && (undefined === input.italic || \"boolean\" === typeof input.italic) && (undefined === input.underline || \"boolean\" === typeof input.underline) && (undefined === input.inverse || \"boolean\" === typeof input.inverse) && (undefined === input.strikethrough || \"boolean\" === typeof input.strikethrough) && (undefined === input.fg || \"string\" === typeof input.fg) && (undefined === input.bg || \"string\" === typeof input.bg) && (0 === Object.keys(input).length || Object.keys(input).every((key: any) => {\n if ([\"bold\", \"dim\", \"italic\", \"underline\", \"inverse\", \"strikethrough\", \"fg\", \"bg\"].some((prop: any) => key === prop))\n return true;\n const value = input[key];\n if (undefined === value)\n return true;\n return false;\n }));\n const __is = (input: any, _exceptionable: boolean = true): input is Partial<UserTheme> => \"object\" === typeof input && null !== input && false === Array.isArray(input) && _io0(input, true);\n let _errorFactory: any;\n return (input: any, errorFactory?: (p: import(\"typia\").TypeGuardError.IProps) => Error): Partial<UserTheme> => {\n if (false === __is(input)) {\n _errorFactory = errorFactory;\n ((input: any, _path: string, _exceptionable: boolean = true) => (\"object\" === typeof input && null !== input && false === Array.isArray(input) || _assertGuard_1._assertGuard(true, {\n method: \"typia.createAssertEquals\",\n path: _path + \"\",\n expected: \"Partial<UserTheme>\",\n value: input\n }, _errorFactory)) && _ao0(input, _path + \"\", true) || _assertGuard_1._assertGuard(true, {\n method: \"typia.createAssertEquals\",\n path: _path + \"\",\n expected: \"Partial<UserTheme>\",\n value: input\n }, _errorFactory))(input, \"$input\", true);\n }\n return input;\n };\n})();\nconst skipSlots = new Set([\"$schema\", \"shiki\", \"id\", \"name\"]);\nexport function validateTheme(input: unknown): Partial<UserTheme> {\n const out = validator(input);\n for (const [slot, value] of Object.entries(out)) {\n if (skipSlots.has(slot) || value === undefined)\n continue;\n if (typeof value === \"string\" && toColor(value))\n continue;\n if (isColorKey(slot))\n toColor(value);\n const style = toStyle(value);\n if (style.fg !== undefined)\n toColor(style.fg);\n if (style.bg !== undefined)\n toColor(style.bg);\n }\n return out as unknown as Partial<Theme> & {\n $schema?: string;\n };\n}\n"],"ignoreList":[0,1,2],"mappings":"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"}
package/dist/themes.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { t as Theme } from "./types-C0EOLZDc.mjs";
1
+ import { t as Theme } from "./types-D2EYlzmK.mjs";
2
2
  //#region src/themes/builtin.d.ts
3
3
  /**
4
4
  * Async loader map for every built-in theme. Each entry returns the
package/dist/themes.mjs CHANGED
@@ -1 +1 @@
1
- export { t as defaultTheme, n as loadTheme, r as themeRegistry } from "./registry-3hLzS4ks.mjs";
1
+ export { t as defaultTheme, n as loadTheme, r as themeRegistry } from "./registry-D-suU3g0.mjs";
@@ -1,5 +1,5 @@
1
- import { nt as Reactive } from "./queries-Cvalgu6P.mjs";
2
- import { i as Select, o as SelectState, t as Option } from "./select-zGd5pbiB.mjs";
1
+ import { nt as Reactive } from "./queries-BDX8mcl5.mjs";
2
+ import { i as Select, o as SelectState, t as Option } from "./select-J2KtwxyK.mjs";
3
3
  //#region src/widgets/tree.d.ts
4
4
  type TreeItem<T extends Option = Option> = T & {
5
5
  children?: TreeItem<T>[];
@@ -20,4 +20,4 @@ declare const tree: <T extends TreeItem>(props: TreeProps<T>) => Select<T> & {
20
20
  };
21
21
  //#endregion
22
22
  export { tree as i, TreeNode as n, TreeProps as r, TreeItem as t };
23
- //# sourceMappingURL=tree-CArtDRec.d.mts.map
23
+ //# sourceMappingURL=tree-DJl5W_B7.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree-CArtDRec.d.mts","names":[],"sources":["../src/widgets/tree.ts"],"mappings":";;;KAQY,SAAS,UAAU,SAAS,UAAU;EAChD,WAAW,SAAS;EACpB;;KAGU,UAAU,UAAU,WAAW,YAAY,KAAK,YAAY;EACtE,MAAM,SAAS;;EAEf;EACA,SAAS,MAAM,MAAM;;KAUX,SAAS,UAAU;EAC7B;EACA,SAAS;;cA0BE,OACV,UAAU,UAAQ,OAAS,UAAU,OAAK,OAAO;EAAO,OAAO,SAAS"}
1
+ {"version":3,"file":"tree-DJl5W_B7.d.mts","names":[],"sources":["../src/widgets/tree.ts"],"mappings":";;;KAQY,SAAS,UAAU,SAAS,UAAU;EAChD,WAAW,SAAS;EACpB;;KAGU,UAAU,UAAU,WAAW,YAAY,KAAK,YAAY;EACtE,MAAM,SAAS;;EAEf;EACA,SAAS,MAAM,MAAM;;KAUX,SAAS,UAAU;EAC7B;EACA,SAAS;;cA0BE,OACV,UAAU,UAAQ,OAAS,UAAU,OAAK,OAAO;EAAO,OAAO,SAAS"}
@@ -48,7 +48,7 @@ type AnsiColor = AnsiColorName | BrightAnsiColorName | HexColor | "inherit";
48
48
  * (any case; runtime validates). Alpha is native to the hex form, so
49
49
  * there is no separate `/<alpha>` suffix for hex. */
50
50
  type HexColor = `#${string}`;
51
- type ThemeKey = keyof Theme;
51
+ type ThemeKey = Exclude<keyof Theme, "shiki" | "$schema" | "id">;
52
52
  /**
53
53
  * A color value. Accepted forms:
54
54
  * - `#rgb` / `#rrggbb` hex
@@ -61,7 +61,7 @@ type ThemeKey = keyof Theme;
61
61
  * (extracting the channel when needed), then `variant(base, step)`
62
62
  * shifts it along the OKLCH tonal scale.
63
63
  */
64
- type Color = HexColor | AnsiColorName | BrightAnsiColorName | ThemeKey | "inherit" | `${HexColor | ThemeKey}-${ColorLightness}` | `${HexColor | ThemeKey}+${ColorLightness}`;
64
+ type Color<Ansi extends boolean = true> = HexColor | (Ansi extends true ? AnsiColorName : never) | (Ansi extends true ? BrightAnsiColorName : never) | ThemeKey | "inherit" | `${HexColor | ThemeKey}-${ColorLightness}` | `${HexColor | ThemeKey}+${ColorLightness}`;
65
65
  interface AnsiStyle {
66
66
  fg?: AnsiColor;
67
67
  bg?: AnsiColor;
@@ -76,12 +76,12 @@ interface AnsiStyle {
76
76
  * Pure styling — no layout or lifecycle fields. Widget state interfaces
77
77
  * extend `StyleState` to pick up the `visible` base-state bits alongside
78
78
  * these style fields. */
79
- type Style = Omit<AnsiStyle, "fg" | "bg"> & {
80
- fg?: Color;
81
- bg?: Color;
82
- style?: AnyStyle;
79
+ type Style<Ansi extends boolean = true> = Omit<AnsiStyle, "fg" | "bg"> & {
80
+ fg?: Color<Ansi>;
81
+ bg?: Color<Ansi>;
82
+ style?: AnyStyle<Ansi>;
83
83
  };
84
- type AnyStyle = Style | Color;
84
+ type AnyStyle<Ansi extends boolean = false> = Style<Ansi> | Color<Ansi>;
85
85
  //#endregion
86
86
  //#region src/themes/types.d.ts
87
87
  /**
@@ -115,15 +115,12 @@ type Theme = {
115
115
  * aligns with the TUI palette. Leave unset for themes without a
116
116
  * Shiki counterpart. */
117
117
  shiki?: ShikiTheme;
118
+ fg: Color;
119
+ bg: Color;
118
120
  /** Brand / primary accent. */
119
121
  primary: Color;
120
122
  /** Secondary accent — distinct hue from `primary`. */
121
123
  accent: Color;
122
- /** Default text color used by themed blocks (markdown content, code,
123
- * quotes) that compose `fg: "text"` into their style. Defaults to
124
- * `"inherit"` (terminal fg). Set explicitly when a theme wants
125
- * themed text inside its tinted regions. */
126
- text: Color;
127
124
  /** Secondary text — first tier of the quietness ladder
128
125
  * (`muted` → `quiet` → `comment`). Slightly faded but readable;
129
126
  * good for timestamps, captions, less-prominent labels. */
@@ -138,11 +135,6 @@ type Theme = {
138
135
  title: ThemeValue;
139
136
  /** Structural separators — borders, dividers, gutter lines. */
140
137
  delim: ThemeValue;
141
- /** Structural neutral — applied as fg for borders, dividers, and the
142
- * gutter; as bg for subtly-tinted surfaces. Never used for
143
- * de-emphasized text; that's the `muted` / `quiet` / `comment`
144
- * tier. */
145
- subtle: ThemeValue;
146
138
  /** Default UI surface. Bottom of the stack. */
147
139
  ui: ThemeValue;
148
140
  /** Popup / modal surface. One tier above `ui`. */
@@ -214,4 +206,4 @@ type Theme = {
214
206
  };
215
207
  //#endregion
216
208
  export { ShikiRequest as _, AnsiStyle as a, ShikiWorkerMessage as b, Color as c, RGB as d, Style as f, ShikiOpts as g, ShikiLanguage as h, AnsiColorName as i, ColorLightness as l, ShikiJob as m, ThemeValue as n, AnyStyle as o, ThemeKey as p, AnsiColor as r, BrightAnsiColorName as s, Theme as t, HexColor as u, ShikiResult as v, ShikiWorkerRequest as x, ShikiTheme as y };
217
- //# sourceMappingURL=types-C0EOLZDc.d.mts.map
209
+ //# sourceMappingURL=types-D2EYlzmK.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-D2EYlzmK.d.mts","names":[],"sources":["../src/shiki/types.ts","../src/style/types.ts","../src/themes/types.ts"],"mappings":";;KAEY,aAAa;KACb,gBAAgB;KAEhB;EACV;EACA;EACA;EACA,QAAQ;EACR,SAAS;;KAGC,qBAAqB,KAAK;EACpC;EACA,MAAM;EACN;;KAGU,WAAW,qBACrB,kBAAkB,QAAQ,cAAc;EACtC;;KAGQ;EACV;EACA;EACA;EACA;;KAGU;EAAuB;KAAmB;EAAgB;;KAE1D;EACV,QAAQ;EACR,SAAS;;;;KCjCC,OAAO,WAAW,WAAW;;;;KAK7B;;KAGA;;KAaA,+BAA+B,WAAW;KAE1C,YAAY,gBAAgB,sBAAsB;;;;KAKlD;KACA,WAAW,cAAc;;;;;;;;;;;;;KAczB,MAAM,+BACd,YACC,oBAAoB,0BACpB,oBAAoB,+BACrB,0BAEG,WAAW,YAAY,sBACvB,WAAW,YAAY;UAEb;EACf,KAAK;EACL,KAAK;EACL;EACA;EACA;EACA;EACA;EACA;;;;;;KAOU,MAAM,+BAA+B,KAAK;EACpD,KAAK,MAAM;EACX,KAAK,MAAM;EACX,QAAQ,SAAS;;KAGP,SAAS,gCAAgC,MAAM,QAAQ,MAAM;;;;;;;;;KClE7D,aAAa,QAAQ;;;;;;;;;;;;;;;;;KAkBrB;EACV;EACA;;;;;EAKA,QAAQ;EAIR,IAAI;EACJ,IAAI;;EAEJ,SAAS;;EAET,QAAQ;;;;EAOR,OAAO;;;EAGP,OAAO;;;EAGP,SAAS;;EAET,OAAO;;EAEP,OAAO;;EAKP,IAAI;;EAEJ,SAAS;;;;EAIT,WAAW;;EAKX,SAAS;;EAET,WAAW;;EAEX,QAAQ;;EAER,QAAQ;;EAER,QAAQ;;;EAGR,aAAa;;EAKb,MAAM;;EAEN,WAAW;EAIX,SAAS;EACT,MAAM;EACN,MAAM;EACN,OAAO;EAGP,eAAe;EACf,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,eAAe;EACf,cAAc;EAId,QAAQ;EACR,QAAQ;EACR,aAAa;EACb,kBAAkB;EAClB,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,YAAY;EACZ,WAAW;EACX,MAAM;EACN,UAAU;EACV,QAAQ;EACR,cAAc;EACd,eAAe;EACf,iBAAiB;EACjB,SAAS;EACT,iBAAiB;EACjB,SAAS;EACT,eAAe;EAIf,YAAY;EACZ,YAAY;;EAEZ,cAAc;EAId,SAAS;EACT,aAAa;EACb,SAAS;EACT,UAAU;EACV,WAAW"}
@@ -1,4 +1,4 @@
1
- import { p as Node } from "./queries-Cvalgu6P.mjs";
1
+ import { p as Node } from "./queries-BDX8mcl5.mjs";
2
2
  //#region src/widgets/widget.d.ts
3
3
  type Props = Record<string, unknown>;
4
4
  /**
@@ -46,4 +46,4 @@ type Widget<A extends unknown[] = never[], N extends Node = Node> = (...args: A)
46
46
  declare function widget<T extends Widget>(fn: T): T;
47
47
  //#endregion
48
48
  export { Widget as n, widget as r, Props as t };
49
- //# sourceMappingURL=widget-DtJU2-BJ.d.mts.map
49
+ //# sourceMappingURL=widget-DPqBbB57.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget-DtJU2-BJ.d.mts","names":[],"sources":["../src/widgets/widget.ts"],"mappings":";;KAIY,QAAQ;;;;;;;;;;;KAYR,OAAO,+BAA+B,UAAU,OAAO,YAAY,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkC3E,OAAO,UAAU,QAAQ,IAAI,IAAI"}
1
+ {"version":3,"file":"widget-DPqBbB57.d.mts","names":[],"sources":["../src/widgets/widget.ts"],"mappings":";;KAIY,QAAQ;;;;;;;;;;;KAYR,OAAO,+BAA+B,UAAU,OAAO,YAAY,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkC3E,OAAO,UAAU,QAAQ,IAAI,IAAI"}
@@ -1,2 +1,2 @@
1
- import { a as AutocompleteState, i as AutocompleteOptions, n as Autocomplete, o as CompletionSource, r as AutocompleteEvents, s as autocomplete, t as AcceptFn } from "../autocomplete-CxzetPOo.mjs";
1
+ import { a as AutocompleteState, i as AutocompleteOptions, n as Autocomplete, o as CompletionSource, r as AutocompleteEvents, s as autocomplete, t as AcceptFn } from "../autocomplete-StW1QJZJ.mjs";
2
2
  export { AcceptFn, Autocomplete, AutocompleteEvents, AutocompleteOptions, AutocompleteState, CompletionSource, autocomplete };
@@ -1,7 +1,7 @@
1
1
  import { S as unwrap, f as effect, h as memo, y as signal } from "../reactive-f7NpAi69.mjs";
2
2
  import { t as Node } from "../node-BZ7f6HzU.mjs";
3
- import { t as picker } from "../picker-BqHINl_a.mjs";
4
- import { t as Input } from "../input-D7fQEUdt.mjs";
3
+ import { t as picker } from "../picker-Dh5IUrTk.mjs";
4
+ import { t as Input } from "../input-BGTTujDN.mjs";
5
5
  //#region src/widgets/autocomplete.ts
6
6
  /**
7
7
  * Autocomplete popup bound to an `Input`. Watches the input's value and
@@ -1,2 +1,2 @@
1
- import { B as Padding, R as Box, V as box, z as BoxStyle } from "../queries-Cvalgu6P.mjs";
1
+ import { B as Padding, R as Box, V as box, z as BoxStyle } from "../queries-BDX8mcl5.mjs";
2
2
  export { Box, BoxStyle, Padding, box };
@@ -1 +1 @@
1
- export { t as Box, n as box } from "../box-DLEcEvDH.mjs";
1
+ export { t as Box, n as box } from "../box-BkP4MF82.mjs";
@@ -1,5 +1,5 @@
1
- import { R as Box, X as State, nt as Reactive } from "../queries-Cvalgu6P.mjs";
2
- import { o as AnyStyle } from "../types-C0EOLZDc.mjs";
1
+ import { R as Box, X as State, nt as Reactive } from "../queries-BDX8mcl5.mjs";
2
+ import { o as AnyStyle } from "../types-D2EYlzmK.mjs";
3
3
  //#region src/widgets/code.d.ts
4
4
  export interface CodeState {
5
5
  /** Source to render. Plain string or reactive accessor — pass a
@@ -1,8 +1,8 @@
1
1
  import { S as unwrap, h as memo, r as createAsync, w as useContext } from "../reactive-f7NpAi69.mjs";
2
- import { n as box } from "../box-DLEcEvDH.mjs";
3
- import { a as formatLines } from "../text-CRZD9KTN.mjs";
4
- import { n as text } from "../text-BLz1tRoC.mjs";
5
- import { t as RenderContext } from "../render-f7M2856V.mjs";
2
+ import { n as box } from "../box-BkP4MF82.mjs";
3
+ import { a as formatLines } from "../text-CkQ7Irmt.mjs";
4
+ import { n as text } from "../text-XvPfweeg.mjs";
5
+ import { t as RenderContext } from "../render-DEIUNLkh.mjs";
6
6
  import { t as codeToAnsi } from "../shiki--ASSYv4_.mjs";
7
7
  import { t as widget } from "../widget-BkMwhY2p.mjs";
8
8
  import { t as show } from "../show-DR2x1YFc.mjs";
@@ -1,2 +1,2 @@
1
- import { n as ActionsSourceOptions, r as actionsSource, t as ActionCompletionItem } from "../../actions-DFboj3g5.mjs";
1
+ import { n as ActionsSourceOptions, r as actionsSource, t as ActionCompletionItem } from "../../actions-Dc4D4uSf.mjs";
2
2
  export { ActionCompletionItem, ActionsSourceOptions, actionsSource };
@@ -1,2 +1,2 @@
1
- import { n as filesSource, t as FilesSourceOptions } from "../../files-BUsa-RVl.mjs";
1
+ import { n as filesSource, t as FilesSourceOptions } from "../../files-7DUYSeNc.mjs";
2
2
  export { FilesSourceOptions, filesSource };
@@ -1,2 +1,2 @@
1
- import { a as githubSource, i as GithubState, n as GithubItem, r as GithubSourceOptions, t as GithubFetcher } from "../../github-D89A3F9U.mjs";
1
+ import { a as githubSource, i as GithubState, n as GithubItem, r as GithubSourceOptions, t as GithubFetcher } from "../../github-C1KfXk98.mjs";
2
2
  export { GithubFetcher, GithubItem, GithubSourceOptions, GithubState, githubSource };