@mdxui/terminal 2.0.0

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 (191) hide show
  1. package/README.md +571 -0
  2. package/dist/ansi-css-Sk5mWtdK.d.ts +119 -0
  3. package/dist/ansi-css-V6JIHGsM.d.ts +119 -0
  4. package/dist/ansi-css-_3eSEU9d.d.ts +119 -0
  5. package/dist/chunk-3EFDH7PK.js +5235 -0
  6. package/dist/chunk-3RG5ZIWI.js +10 -0
  7. package/dist/chunk-3X5IR6WE.js +884 -0
  8. package/dist/chunk-4FV5ZDCE.js +5236 -0
  9. package/dist/chunk-4OVMSF2J.js +243 -0
  10. package/dist/chunk-63FEETIS.js +4048 -0
  11. package/dist/chunk-B43KP7XJ.js +884 -0
  12. package/dist/chunk-BMTJXWUV.js +655 -0
  13. package/dist/chunk-C3SVH4N7.js +882 -0
  14. package/dist/chunk-EVWR7Y47.js +874 -0
  15. package/dist/chunk-F6A5VWUC.js +1285 -0
  16. package/dist/chunk-FD7KW7GE.js +882 -0
  17. package/dist/chunk-GBQ6UD6I.js +655 -0
  18. package/dist/chunk-GMDD3M6U.js +5227 -0
  19. package/dist/chunk-JBHRXOXM.js +1058 -0
  20. package/dist/chunk-JFOO3EYO.js +1182 -0
  21. package/dist/chunk-JQ5H3WXL.js +1291 -0
  22. package/dist/chunk-JQD5NASE.js +234 -0
  23. package/dist/chunk-KRHJP5R7.js +592 -0
  24. package/dist/chunk-KWF6WVJE.js +962 -0
  25. package/dist/chunk-LHYQVN3H.js +1038 -0
  26. package/dist/chunk-M3TLQLGC.js +1032 -0
  27. package/dist/chunk-MVW4Q5OP.js +240 -0
  28. package/dist/chunk-NXCZSWLU.js +1294 -0
  29. package/dist/chunk-O25TNRO6.js +607 -0
  30. package/dist/chunk-PNECDA2I.js +884 -0
  31. package/dist/chunk-QIHWRLJR.js +962 -0
  32. package/dist/chunk-QW5YMQ7K.js +882 -0
  33. package/dist/chunk-R5U7XKVJ.js +16 -0
  34. package/dist/chunk-RP2MVQLR.js +962 -0
  35. package/dist/chunk-TP6RXGXA.js +1087 -0
  36. package/dist/chunk-TQQSTITZ.js +655 -0
  37. package/dist/chunk-X24GWXQV.js +1281 -0
  38. package/dist/components/index.d.ts +802 -0
  39. package/dist/components/index.js +149 -0
  40. package/dist/data/index.d.ts +2554 -0
  41. package/dist/data/index.js +51 -0
  42. package/dist/forms/index.d.ts +1596 -0
  43. package/dist/forms/index.js +464 -0
  44. package/dist/index-CQRFZntR.d.ts +867 -0
  45. package/dist/index.d.ts +579 -0
  46. package/dist/index.js +786 -0
  47. package/dist/interactive-D0JkWosD.d.ts +217 -0
  48. package/dist/keyboard/index.d.ts +2 -0
  49. package/dist/keyboard/index.js +43 -0
  50. package/dist/renderers/index.d.ts +546 -0
  51. package/dist/renderers/index.js +2157 -0
  52. package/dist/storybook/index.d.ts +396 -0
  53. package/dist/storybook/index.js +641 -0
  54. package/dist/theme/index.d.ts +1339 -0
  55. package/dist/theme/index.js +123 -0
  56. package/dist/types-Bxu5PAgA.d.ts +710 -0
  57. package/dist/types-CIlop5Ji.d.ts +701 -0
  58. package/dist/types-Ca8p_p5X.d.ts +710 -0
  59. package/package.json +90 -0
  60. package/src/__tests__/components/data/card.test.ts +458 -0
  61. package/src/__tests__/components/data/list.test.ts +473 -0
  62. package/src/__tests__/components/data/metrics.test.ts +541 -0
  63. package/src/__tests__/components/data/table.test.ts +448 -0
  64. package/src/__tests__/components/input/field.test.ts +555 -0
  65. package/src/__tests__/components/input/form.test.ts +870 -0
  66. package/src/__tests__/components/input/search.test.ts +1238 -0
  67. package/src/__tests__/components/input/select.test.ts +658 -0
  68. package/src/__tests__/components/navigation/breadcrumb.test.ts +923 -0
  69. package/src/__tests__/components/navigation/command-palette.test.ts +1095 -0
  70. package/src/__tests__/components/navigation/sidebar.test.ts +1018 -0
  71. package/src/__tests__/components/navigation/tabs.test.ts +995 -0
  72. package/src/__tests__/components.test.tsx +1197 -0
  73. package/src/__tests__/core/compiler.test.ts +986 -0
  74. package/src/__tests__/core/parser.test.ts +785 -0
  75. package/src/__tests__/core/tier-switcher.test.ts +1103 -0
  76. package/src/__tests__/core/types.test.ts +1398 -0
  77. package/src/__tests__/data/collections.test.ts +1337 -0
  78. package/src/__tests__/data/db.test.ts +1265 -0
  79. package/src/__tests__/data/reactive.test.ts +1010 -0
  80. package/src/__tests__/data/sync.test.ts +1614 -0
  81. package/src/__tests__/errors.test.ts +660 -0
  82. package/src/__tests__/forms/integration.test.ts +444 -0
  83. package/src/__tests__/integration.test.ts +905 -0
  84. package/src/__tests__/keyboard.test.ts +1791 -0
  85. package/src/__tests__/renderer.test.ts +489 -0
  86. package/src/__tests__/renderers/ansi-css.test.ts +948 -0
  87. package/src/__tests__/renderers/ansi.test.ts +1366 -0
  88. package/src/__tests__/renderers/ascii.test.ts +1360 -0
  89. package/src/__tests__/renderers/interactive.test.ts +2353 -0
  90. package/src/__tests__/renderers/markdown.test.ts +1483 -0
  91. package/src/__tests__/renderers/text.test.ts +1369 -0
  92. package/src/__tests__/renderers/unicode.test.ts +1307 -0
  93. package/src/__tests__/theme.test.ts +639 -0
  94. package/src/__tests__/utils/assertions.ts +685 -0
  95. package/src/__tests__/utils/index.ts +115 -0
  96. package/src/__tests__/utils/test-renderer.ts +381 -0
  97. package/src/__tests__/utils/utils.test.ts +560 -0
  98. package/src/components/containers/card.ts +56 -0
  99. package/src/components/containers/dialog.ts +53 -0
  100. package/src/components/containers/index.ts +9 -0
  101. package/src/components/containers/panel.ts +59 -0
  102. package/src/components/feedback/badge.ts +40 -0
  103. package/src/components/feedback/index.ts +8 -0
  104. package/src/components/feedback/spinner.ts +23 -0
  105. package/src/components/helpers.ts +81 -0
  106. package/src/components/index.ts +153 -0
  107. package/src/components/layout/breadcrumb.ts +31 -0
  108. package/src/components/layout/index.ts +10 -0
  109. package/src/components/layout/list.ts +29 -0
  110. package/src/components/layout/sidebar.ts +79 -0
  111. package/src/components/layout/table.ts +62 -0
  112. package/src/components/primitives/box.ts +95 -0
  113. package/src/components/primitives/button.ts +54 -0
  114. package/src/components/primitives/index.ts +11 -0
  115. package/src/components/primitives/input.ts +88 -0
  116. package/src/components/primitives/select.ts +97 -0
  117. package/src/components/primitives/text.ts +60 -0
  118. package/src/components/render.ts +155 -0
  119. package/src/components/templates/app.ts +43 -0
  120. package/src/components/templates/index.ts +8 -0
  121. package/src/components/templates/site.ts +54 -0
  122. package/src/components/types.ts +777 -0
  123. package/src/core/compiler.ts +718 -0
  124. package/src/core/parser.ts +127 -0
  125. package/src/core/tier-switcher.ts +607 -0
  126. package/src/core/types.ts +672 -0
  127. package/src/data/collection.ts +316 -0
  128. package/src/data/collections.ts +50 -0
  129. package/src/data/context.tsx +174 -0
  130. package/src/data/db.ts +127 -0
  131. package/src/data/hooks.ts +532 -0
  132. package/src/data/index.ts +138 -0
  133. package/src/data/reactive.ts +1225 -0
  134. package/src/data/saas-collections.ts +375 -0
  135. package/src/data/sync.ts +1213 -0
  136. package/src/data/types.ts +660 -0
  137. package/src/forms/converters.ts +512 -0
  138. package/src/forms/index.ts +133 -0
  139. package/src/forms/schemas.ts +403 -0
  140. package/src/forms/types.ts +476 -0
  141. package/src/index.ts +542 -0
  142. package/src/keyboard/focus.ts +748 -0
  143. package/src/keyboard/index.ts +96 -0
  144. package/src/keyboard/integration.ts +371 -0
  145. package/src/keyboard/manager.ts +377 -0
  146. package/src/keyboard/presets.ts +90 -0
  147. package/src/renderers/ansi-css.ts +576 -0
  148. package/src/renderers/ansi.ts +802 -0
  149. package/src/renderers/ascii.ts +680 -0
  150. package/src/renderers/breadcrumb.ts +480 -0
  151. package/src/renderers/command-palette.ts +802 -0
  152. package/src/renderers/components/field.ts +210 -0
  153. package/src/renderers/components/form.ts +327 -0
  154. package/src/renderers/components/index.ts +21 -0
  155. package/src/renderers/components/search.ts +449 -0
  156. package/src/renderers/components/select.ts +222 -0
  157. package/src/renderers/index.ts +101 -0
  158. package/src/renderers/interactive/component-handlers.ts +622 -0
  159. package/src/renderers/interactive/cursor-manager.ts +147 -0
  160. package/src/renderers/interactive/focus-manager.ts +279 -0
  161. package/src/renderers/interactive/index.ts +661 -0
  162. package/src/renderers/interactive/input-handler.ts +164 -0
  163. package/src/renderers/interactive/keyboard-handler.ts +212 -0
  164. package/src/renderers/interactive/mouse-handler.ts +167 -0
  165. package/src/renderers/interactive/state-manager.ts +109 -0
  166. package/src/renderers/interactive/types.ts +338 -0
  167. package/src/renderers/interactive-string.ts +299 -0
  168. package/src/renderers/interactive.ts +59 -0
  169. package/src/renderers/markdown.ts +950 -0
  170. package/src/renderers/sidebar.ts +549 -0
  171. package/src/renderers/tabs.ts +682 -0
  172. package/src/renderers/text.ts +791 -0
  173. package/src/renderers/unicode.ts +917 -0
  174. package/src/renderers/utils.ts +942 -0
  175. package/src/router/adapters.ts +383 -0
  176. package/src/router/types.ts +140 -0
  177. package/src/router/utils.ts +452 -0
  178. package/src/schemas.ts +205 -0
  179. package/src/storybook/index.ts +91 -0
  180. package/src/storybook/interactive-decorator.tsx +659 -0
  181. package/src/storybook/keyboard-simulator.ts +501 -0
  182. package/src/theme/ansi-codes.ts +80 -0
  183. package/src/theme/box-drawing.ts +132 -0
  184. package/src/theme/color-convert.ts +254 -0
  185. package/src/theme/color-support.ts +321 -0
  186. package/src/theme/index.ts +134 -0
  187. package/src/theme/strip-ansi.ts +50 -0
  188. package/src/theme/tailwind-map.ts +469 -0
  189. package/src/theme/text-styles.ts +206 -0
  190. package/src/theme/theme-system.ts +568 -0
  191. package/src/types.ts +103 -0
@@ -0,0 +1,1087 @@
1
+ // src/theme/index.ts
2
+ var ANSI = {
3
+ // Reset
4
+ reset: "\x1B[0m",
5
+ // Styles
6
+ bold: "\x1B[1m",
7
+ dim: "\x1B[2m",
8
+ italic: "\x1B[3m",
9
+ underline: "\x1B[4m",
10
+ inverse: "\x1B[7m",
11
+ strikethrough: "\x1B[9m",
12
+ // Foreground colors (basic)
13
+ black: "\x1B[30m",
14
+ red: "\x1B[31m",
15
+ green: "\x1B[32m",
16
+ yellow: "\x1B[33m",
17
+ blue: "\x1B[34m",
18
+ magenta: "\x1B[35m",
19
+ cyan: "\x1B[36m",
20
+ white: "\x1B[37m",
21
+ // Bright foreground colors
22
+ brightBlack: "\x1B[90m",
23
+ brightRed: "\x1B[91m",
24
+ brightGreen: "\x1B[92m",
25
+ brightYellow: "\x1B[93m",
26
+ brightBlue: "\x1B[94m",
27
+ brightMagenta: "\x1B[95m",
28
+ brightCyan: "\x1B[96m",
29
+ brightWhite: "\x1B[97m",
30
+ // Background colors
31
+ bgBlack: "\x1B[40m",
32
+ bgRed: "\x1B[41m",
33
+ bgGreen: "\x1B[42m",
34
+ bgYellow: "\x1B[43m",
35
+ bgBlue: "\x1B[44m",
36
+ bgMagenta: "\x1B[45m",
37
+ bgCyan: "\x1B[46m",
38
+ bgWhite: "\x1B[47m"
39
+ };
40
+ var TAILWIND_COLORS = {
41
+ gray: {
42
+ "50": "#f9fafb",
43
+ "100": "#f3f4f6",
44
+ "200": "#e5e7eb",
45
+ "300": "#d1d5db",
46
+ "400": "#9ca3af",
47
+ "500": "#6b7280",
48
+ "600": "#4b5563",
49
+ "700": "#374151",
50
+ "800": "#1f2937",
51
+ "900": "#111827",
52
+ "950": "#030712"
53
+ },
54
+ slate: {
55
+ "50": "#f8fafc",
56
+ "100": "#f1f5f9",
57
+ "200": "#e2e8f0",
58
+ "300": "#cbd5e1",
59
+ "400": "#94a3b8",
60
+ "500": "#64748b",
61
+ "600": "#475569",
62
+ "700": "#334155",
63
+ "800": "#1e293b",
64
+ "900": "#0f172a",
65
+ "950": "#020617"
66
+ },
67
+ zinc: {
68
+ "50": "#fafafa",
69
+ "100": "#f4f4f5",
70
+ "200": "#e4e4e7",
71
+ "300": "#d4d4d8",
72
+ "400": "#a1a1aa",
73
+ "500": "#71717a",
74
+ "600": "#52525b",
75
+ "700": "#3f3f46",
76
+ "800": "#27272a",
77
+ "900": "#18181b",
78
+ "950": "#09090b"
79
+ },
80
+ neutral: {
81
+ "50": "#fafafa",
82
+ "100": "#f5f5f5",
83
+ "200": "#e5e5e5",
84
+ "300": "#d4d4d4",
85
+ "400": "#a3a3a3",
86
+ "500": "#737373",
87
+ "600": "#525252",
88
+ "700": "#404040",
89
+ "800": "#262626",
90
+ "900": "#171717",
91
+ "950": "#0a0a0a"
92
+ },
93
+ stone: {
94
+ "50": "#fafaf9",
95
+ "100": "#f5f5f4",
96
+ "200": "#e7e5e4",
97
+ "300": "#d6d3d1",
98
+ "400": "#a8a29e",
99
+ "500": "#78716c",
100
+ "600": "#57534e",
101
+ "700": "#44403c",
102
+ "800": "#292524",
103
+ "900": "#1c1917",
104
+ "950": "#0c0a09"
105
+ },
106
+ red: {
107
+ "50": "#fef2f2",
108
+ "100": "#fee2e2",
109
+ "200": "#fecaca",
110
+ "300": "#fca5a5",
111
+ "400": "#f87171",
112
+ "500": "#ef4444",
113
+ "600": "#dc2626",
114
+ "700": "#b91c1c",
115
+ "800": "#991b1b",
116
+ "900": "#7f1d1d",
117
+ "950": "#450a0a"
118
+ },
119
+ orange: {
120
+ "50": "#fff7ed",
121
+ "100": "#ffedd5",
122
+ "200": "#fed7aa",
123
+ "300": "#fdba74",
124
+ "400": "#fb923c",
125
+ "500": "#f97316",
126
+ "600": "#ea580c",
127
+ "700": "#c2410c",
128
+ "800": "#9a3412",
129
+ "900": "#7c2d12",
130
+ "950": "#431407"
131
+ },
132
+ amber: {
133
+ "50": "#fffbeb",
134
+ "100": "#fef3c7",
135
+ "200": "#fde68a",
136
+ "300": "#fcd34d",
137
+ "400": "#fbbf24",
138
+ "500": "#f59e0b",
139
+ "600": "#d97706",
140
+ "700": "#b45309",
141
+ "800": "#92400e",
142
+ "900": "#78350f",
143
+ "950": "#451a03"
144
+ },
145
+ yellow: {
146
+ "50": "#fefce8",
147
+ "100": "#fef9c3",
148
+ "200": "#fef08a",
149
+ "300": "#fde047",
150
+ "400": "#facc15",
151
+ "500": "#eab308",
152
+ "600": "#ca8a04",
153
+ "700": "#a16207",
154
+ "800": "#854d0e",
155
+ "900": "#713f12",
156
+ "950": "#422006"
157
+ },
158
+ lime: {
159
+ "50": "#f7fee7",
160
+ "100": "#ecfccb",
161
+ "200": "#d9f99d",
162
+ "300": "#bef264",
163
+ "400": "#a3e635",
164
+ "500": "#84cc16",
165
+ "600": "#65a30d",
166
+ "700": "#4d7c0f",
167
+ "800": "#3f6212",
168
+ "900": "#365314",
169
+ "950": "#1a2e05"
170
+ },
171
+ green: {
172
+ "50": "#f0fdf4",
173
+ "100": "#dcfce7",
174
+ "200": "#bbf7d0",
175
+ "300": "#86efac",
176
+ "400": "#4ade80",
177
+ "500": "#22c55e",
178
+ "600": "#16a34a",
179
+ "700": "#15803d",
180
+ "800": "#166534",
181
+ "900": "#14532d",
182
+ "950": "#052e16"
183
+ },
184
+ emerald: {
185
+ "50": "#ecfdf5",
186
+ "100": "#d1fae5",
187
+ "200": "#a7f3d0",
188
+ "300": "#6ee7b7",
189
+ "400": "#34d399",
190
+ "500": "#10b981",
191
+ "600": "#059669",
192
+ "700": "#047857",
193
+ "800": "#065f46",
194
+ "900": "#064e3b",
195
+ "950": "#022c22"
196
+ },
197
+ teal: {
198
+ "50": "#f0fdfa",
199
+ "100": "#ccfbf1",
200
+ "200": "#99f6e4",
201
+ "300": "#5eead4",
202
+ "400": "#2dd4bf",
203
+ "500": "#14b8a6",
204
+ "600": "#0d9488",
205
+ "700": "#0f766e",
206
+ "800": "#115e59",
207
+ "900": "#134e4a",
208
+ "950": "#042f2e"
209
+ },
210
+ cyan: {
211
+ "50": "#ecfeff",
212
+ "100": "#cffafe",
213
+ "200": "#a5f3fc",
214
+ "300": "#67e8f9",
215
+ "400": "#22d3ee",
216
+ "500": "#06b6d4",
217
+ "600": "#0891b2",
218
+ "700": "#0e7490",
219
+ "800": "#155e75",
220
+ "900": "#164e63",
221
+ "950": "#083344"
222
+ },
223
+ sky: {
224
+ "50": "#f0f9ff",
225
+ "100": "#e0f2fe",
226
+ "200": "#bae6fd",
227
+ "300": "#7dd3fc",
228
+ "400": "#38bdf8",
229
+ "500": "#0ea5e9",
230
+ "600": "#0284c7",
231
+ "700": "#0369a1",
232
+ "800": "#075985",
233
+ "900": "#0c4a6e",
234
+ "950": "#082f49"
235
+ },
236
+ blue: {
237
+ "50": "#eff6ff",
238
+ "100": "#dbeafe",
239
+ "200": "#bfdbfe",
240
+ "300": "#93c5fd",
241
+ "400": "#60a5fa",
242
+ "500": "#3b82f6",
243
+ "600": "#2563eb",
244
+ "700": "#1d4ed8",
245
+ "800": "#1e40af",
246
+ "900": "#1e3a8a",
247
+ "950": "#172554"
248
+ },
249
+ indigo: {
250
+ "50": "#eef2ff",
251
+ "100": "#e0e7ff",
252
+ "200": "#c7d2fe",
253
+ "300": "#a5b4fc",
254
+ "400": "#818cf8",
255
+ "500": "#6366f1",
256
+ "600": "#4f46e5",
257
+ "700": "#4338ca",
258
+ "800": "#3730a3",
259
+ "900": "#312e81",
260
+ "950": "#1e1b4b"
261
+ },
262
+ violet: {
263
+ "50": "#f5f3ff",
264
+ "100": "#ede9fe",
265
+ "200": "#ddd6fe",
266
+ "300": "#c4b5fd",
267
+ "400": "#a78bfa",
268
+ "500": "#8b5cf6",
269
+ "600": "#7c3aed",
270
+ "700": "#6d28d9",
271
+ "800": "#5b21b6",
272
+ "900": "#4c1d95",
273
+ "950": "#2e1065"
274
+ },
275
+ purple: {
276
+ "50": "#faf5ff",
277
+ "100": "#f3e8ff",
278
+ "200": "#e9d5ff",
279
+ "300": "#d8b4fe",
280
+ "400": "#c084fc",
281
+ "500": "#a855f7",
282
+ "600": "#9333ea",
283
+ "700": "#7e22ce",
284
+ "800": "#6b21a8",
285
+ "900": "#581c87",
286
+ "950": "#3b0764"
287
+ },
288
+ fuchsia: {
289
+ "50": "#fdf4ff",
290
+ "100": "#fae8ff",
291
+ "200": "#f5d0fe",
292
+ "300": "#f0abfc",
293
+ "400": "#e879f9",
294
+ "500": "#d946ef",
295
+ "600": "#c026d3",
296
+ "700": "#a21caf",
297
+ "800": "#86198f",
298
+ "900": "#701a75",
299
+ "950": "#4a044e"
300
+ },
301
+ pink: {
302
+ "50": "#fdf2f8",
303
+ "100": "#fce7f3",
304
+ "200": "#fbcfe8",
305
+ "300": "#f9a8d4",
306
+ "400": "#f472b6",
307
+ "500": "#ec4899",
308
+ "600": "#db2777",
309
+ "700": "#be185d",
310
+ "800": "#9d174d",
311
+ "900": "#831843",
312
+ "950": "#500724"
313
+ },
314
+ rose: {
315
+ "50": "#fff1f2",
316
+ "100": "#ffe4e6",
317
+ "200": "#fecdd3",
318
+ "300": "#fda4af",
319
+ "400": "#fb7185",
320
+ "500": "#f43f5e",
321
+ "600": "#e11d48",
322
+ "700": "#be123c",
323
+ "800": "#9f1239",
324
+ "900": "#881337",
325
+ "950": "#4c0519"
326
+ }
327
+ };
328
+ var TAILWIND_TO_ANSI_256 = {
329
+ "blue-500": 33,
330
+ // #3b82f6 - bright blue
331
+ "red-600": 160,
332
+ // #dc2626 - dark red
333
+ "green-400": 71,
334
+ // #4ade80 - light green
335
+ "yellow-500": 220,
336
+ // #eab308 - golden yellow
337
+ "purple-600": 128,
338
+ // #9333ea - purple
339
+ "gray-800": 238
340
+ // #1f2937 - dark gray (grayscale)
341
+ };
342
+ function rgbToAnsi256(r, g, b) {
343
+ if (r === 0 && g === 0 && b === 0) {
344
+ return 0;
345
+ }
346
+ if (r === 255 && g === 255 && b === 255) {
347
+ return 15;
348
+ }
349
+ if (Math.abs(r - g) < 10 && Math.abs(g - b) < 10 && Math.abs(r - b) < 10) {
350
+ const avg = (r + g + b) / 3;
351
+ if (avg < 8) return 0;
352
+ if (avg > 248) return 15;
353
+ const grayIndex = Math.round((avg - 8) / 10);
354
+ return Math.min(255, Math.max(232, 232 + grayIndex));
355
+ }
356
+ const toColorCubeIndex = (v) => {
357
+ if (v < 48) return 0;
358
+ if (v < 115) return 1;
359
+ return Math.min(5, Math.floor((v - 35) / 40));
360
+ };
361
+ const ri = toColorCubeIndex(r);
362
+ const gi = toColorCubeIndex(g);
363
+ const bi = toColorCubeIndex(b);
364
+ return 16 + 36 * ri + 6 * gi + bi;
365
+ }
366
+ function hexToRgb(hex2) {
367
+ if (!hex2 || typeof hex2 !== "string") {
368
+ return { r: 0, g: 0, b: 0 };
369
+ }
370
+ hex2 = hex2.replace(/^#/, "");
371
+ if (hex2.length === 0) {
372
+ return { r: 0, g: 0, b: 0 };
373
+ }
374
+ if (hex2.length === 3) {
375
+ hex2 = hex2.split("").map((c) => c + c).join("");
376
+ }
377
+ if (!/^[0-9a-fA-F]{6}$/.test(hex2)) {
378
+ return { r: 0, g: 0, b: 0 };
379
+ }
380
+ const num = parseInt(hex2, 16);
381
+ return {
382
+ r: num >> 16 & 255,
383
+ g: num >> 8 & 255,
384
+ b: num & 255
385
+ };
386
+ }
387
+ function rgbToAnsi(r, g, b, opts) {
388
+ const code = rgbToAnsi256(r, g, b);
389
+ const prefix = opts?.background ? "48" : "38";
390
+ return `\x1B[${prefix};5;${code}m`;
391
+ }
392
+ function hexToAnsi(hex2, opts) {
393
+ const { r, g, b } = hexToRgb(hex2);
394
+ return rgbToAnsi(r, g, b, opts);
395
+ }
396
+ function tailwindToAnsi(className) {
397
+ if (className === "font-bold") return ANSI.bold;
398
+ if (className === "italic") return ANSI.italic;
399
+ if (className === "underline") return ANSI.underline;
400
+ if (className === "line-through") return ANSI.strikethrough;
401
+ if (className === "text-white") return "\x1B[38;5;15m";
402
+ if (className === "text-black") return "\x1B[38;5;0m";
403
+ const textMatch = className.match(/^text-(\w+)-(\d+)$/);
404
+ const bgMatch = className.match(/^bg-(\w+)-(\d+)$/);
405
+ if (textMatch) {
406
+ const [, color, shade] = textMatch;
407
+ const colorKey = `${color}-${shade}`;
408
+ if (TAILWIND_TO_ANSI_256[colorKey]) {
409
+ return `\x1B[38;5;${TAILWIND_TO_ANSI_256[colorKey]}m`;
410
+ }
411
+ if (TAILWIND_COLORS[color]?.[shade]) {
412
+ return hexToAnsi(TAILWIND_COLORS[color][shade]);
413
+ }
414
+ }
415
+ if (bgMatch) {
416
+ const [, color, shade] = bgMatch;
417
+ const colorKey = `${color}-${shade}`;
418
+ if (TAILWIND_TO_ANSI_256[colorKey]) {
419
+ return `\x1B[48;5;${TAILWIND_TO_ANSI_256[colorKey]}m`;
420
+ }
421
+ if (TAILWIND_COLORS[color]?.[shade]) {
422
+ return hexToAnsi(TAILWIND_COLORS[color][shade], { background: true });
423
+ }
424
+ }
425
+ return "";
426
+ }
427
+ var darkThemeColors = {
428
+ primary: "\x1B[38;5;33m",
429
+ // Blue
430
+ secondary: "\x1B[38;5;39m",
431
+ // Lighter blue
432
+ accent: "\x1B[38;5;200m",
433
+ // Magenta/Pink
434
+ muted: "\x1B[38;5;243m",
435
+ // Gray
436
+ success: "\x1B[38;5;71m",
437
+ // Green
438
+ warning: "\x1B[38;5;220m",
439
+ // Yellow
440
+ error: "\x1B[38;5;160m",
441
+ // Red
442
+ info: "\x1B[38;5;33m",
443
+ // Blue
444
+ border: "\x1B[38;5;240m",
445
+ // Dark gray
446
+ background: "\x1B[48;5;234m",
447
+ // Very dark gray
448
+ foreground: "\x1B[38;5;252m",
449
+ // Light gray
450
+ selection: "\x1B[48;5;24m",
451
+ // Dark blue background
452
+ focus: "\x1B[48;5;33m"
453
+ // Blue background
454
+ };
455
+ var lightThemeColors = {
456
+ primary: "\x1B[38;5;25m",
457
+ // Darker blue for light mode
458
+ secondary: "\x1B[38;5;31m",
459
+ // Darker cyan
460
+ accent: "\x1B[38;5;127m",
461
+ // Darker magenta
462
+ muted: "\x1B[38;5;245m",
463
+ // Medium gray
464
+ success: "\x1B[38;5;28m",
465
+ // Darker green
466
+ warning: "\x1B[38;5;172m",
467
+ // Darker yellow/orange
468
+ error: "\x1B[38;5;124m",
469
+ // Darker red
470
+ info: "\x1B[38;5;25m",
471
+ // Darker blue
472
+ border: "\x1B[38;5;250m",
473
+ // Light gray
474
+ background: "\x1B[48;5;255m",
475
+ // White
476
+ foreground: "\x1B[38;5;235m",
477
+ // Dark gray
478
+ selection: "\x1B[48;5;153m",
479
+ // Light blue background
480
+ focus: "\x1B[48;5;33m"
481
+ // Blue background
482
+ };
483
+ function createTerminalTheme(options) {
484
+ const mode = options.mode || "dark";
485
+ const baseColors = mode === "dark" ? darkThemeColors : lightThemeColors;
486
+ return {
487
+ mode,
488
+ colors: {
489
+ ...baseColors,
490
+ ...options.colors
491
+ }
492
+ };
493
+ }
494
+ function getThemeColor(theme, key, fallback) {
495
+ const color = theme.colors[key];
496
+ if (color !== void 0) {
497
+ return color;
498
+ }
499
+ if (fallback !== void 0) {
500
+ return fallback;
501
+ }
502
+ throw new Error(`Unknown theme color key: ${key}`);
503
+ }
504
+ function detectColorSupport() {
505
+ if (process.env.NO_COLOR) {
506
+ return "none";
507
+ }
508
+ if (process.env.FORCE_COLOR) {
509
+ const level = parseInt(process.env.FORCE_COLOR, 10);
510
+ if (level === 0) return "none";
511
+ if (level === 1) return "16";
512
+ if (level === 2) return "256";
513
+ if (level >= 3) return "truecolor";
514
+ }
515
+ const colorTerm = process.env.COLORTERM;
516
+ if (colorTerm === "truecolor" || colorTerm === "24bit") {
517
+ return "truecolor";
518
+ }
519
+ const term = process.env.TERM || "";
520
+ if (term === "dumb") {
521
+ return "none";
522
+ }
523
+ if (term.includes("256color")) {
524
+ return "256";
525
+ }
526
+ if (term.includes("color") || term.includes("xterm") || term.includes("vt100")) {
527
+ return "16";
528
+ }
529
+ return "256";
530
+ }
531
+ var CSS_VAR_TO_THEME_KEY = {
532
+ "--primary": "primary",
533
+ "--secondary": "secondary",
534
+ "--accent": "accent",
535
+ "--muted": "muted",
536
+ "--muted-foreground": "muted",
537
+ "--success": "success",
538
+ "--warning": "warning",
539
+ "--error": "error",
540
+ "--destructive": "error",
541
+ "--info": "info",
542
+ "--border": "border",
543
+ "--background": "background",
544
+ "--foreground": "foreground",
545
+ "--selection": "selection",
546
+ "--focus": "focus"
547
+ };
548
+ function cssVarToAnsi(cssVar, theme) {
549
+ const key = CSS_VAR_TO_THEME_KEY[cssVar];
550
+ if (key && theme.colors[key]) {
551
+ return theme.colors[key];
552
+ }
553
+ return "";
554
+ }
555
+ function ansi256To16(code) {
556
+ if (code < 8) {
557
+ return 30 + code;
558
+ }
559
+ if (code < 16) {
560
+ return 90 + (code - 8);
561
+ }
562
+ let r, g, b;
563
+ if (code >= 232) {
564
+ const gray = (code - 232) * 10 + 8;
565
+ r = g = b = gray;
566
+ } else {
567
+ const cubeIndex = code - 16;
568
+ r = Math.floor(cubeIndex / 36) * 51;
569
+ g = Math.floor(cubeIndex % 36 / 6) * 51;
570
+ b = cubeIndex % 6 * 51;
571
+ }
572
+ const basicColors = [
573
+ { r: 0, g: 0, b: 0, code: 30 },
574
+ // black
575
+ { r: 170, g: 0, b: 0, code: 31 },
576
+ // red
577
+ { r: 0, g: 170, b: 0, code: 32 },
578
+ // green
579
+ { r: 170, g: 170, b: 0, code: 33 },
580
+ // yellow
581
+ { r: 0, g: 0, b: 170, code: 34 },
582
+ // blue
583
+ { r: 170, g: 0, b: 170, code: 35 },
584
+ // magenta
585
+ { r: 0, g: 170, b: 170, code: 36 },
586
+ // cyan
587
+ { r: 170, g: 170, b: 170, code: 37 },
588
+ // white
589
+ { r: 85, g: 85, b: 85, code: 90 },
590
+ // bright black
591
+ { r: 255, g: 85, b: 85, code: 91 },
592
+ // bright red
593
+ { r: 85, g: 255, b: 85, code: 92 },
594
+ // bright green
595
+ { r: 255, g: 255, b: 85, code: 93 },
596
+ // bright yellow
597
+ { r: 85, g: 85, b: 255, code: 94 },
598
+ // bright blue
599
+ { r: 255, g: 85, b: 255, code: 95 },
600
+ // bright magenta
601
+ { r: 85, g: 255, b: 255, code: 96 },
602
+ // bright cyan
603
+ { r: 255, g: 255, b: 255, code: 97 }
604
+ // bright white
605
+ ];
606
+ let minDist = Infinity;
607
+ let closestCode = 37;
608
+ for (const bc of basicColors) {
609
+ const dist = Math.sqrt(
610
+ Math.pow(r - bc.r, 2) + Math.pow(g - bc.g, 2) + Math.pow(b - bc.b, 2)
611
+ );
612
+ if (dist < minDist) {
613
+ minDist = dist;
614
+ closestCode = bc.code;
615
+ }
616
+ }
617
+ return closestCode;
618
+ }
619
+ function parseAnsiCode(ansi) {
620
+ const fg256Match = ansi.match(/\x1b\[38;5;(\d+)m/);
621
+ if (fg256Match) {
622
+ return { type: "fg", format: "256", code: parseInt(fg256Match[1], 10) };
623
+ }
624
+ const bg256Match = ansi.match(/\x1b\[48;5;(\d+)m/);
625
+ if (bg256Match) {
626
+ return { type: "bg", format: "256", code: parseInt(bg256Match[1], 10) };
627
+ }
628
+ const fgTrueMatch = ansi.match(/\x1b\[38;2;(\d+);(\d+);(\d+)m/);
629
+ if (fgTrueMatch) {
630
+ return {
631
+ type: "fg",
632
+ format: "truecolor",
633
+ rgb: {
634
+ r: parseInt(fgTrueMatch[1], 10),
635
+ g: parseInt(fgTrueMatch[2], 10),
636
+ b: parseInt(fgTrueMatch[3], 10)
637
+ }
638
+ };
639
+ }
640
+ const bgTrueMatch = ansi.match(/\x1b\[48;2;(\d+);(\d+);(\d+)m/);
641
+ if (bgTrueMatch) {
642
+ return {
643
+ type: "bg",
644
+ format: "truecolor",
645
+ rgb: {
646
+ r: parseInt(bgTrueMatch[1], 10),
647
+ g: parseInt(bgTrueMatch[2], 10),
648
+ b: parseInt(bgTrueMatch[3], 10)
649
+ }
650
+ };
651
+ }
652
+ const basicMatch = ansi.match(/\x1b\[(\d+)m/);
653
+ if (basicMatch) {
654
+ const code = parseInt(basicMatch[1], 10);
655
+ if (code >= 30 && code <= 37) {
656
+ return { type: "fg", format: "16", code };
657
+ }
658
+ if (code >= 90 && code <= 97) {
659
+ return { type: "fg", format: "16", code };
660
+ }
661
+ if (code >= 40 && code <= 47) {
662
+ return { type: "bg", format: "16", code };
663
+ }
664
+ if (code >= 100 && code <= 107) {
665
+ return { type: "bg", format: "16", code };
666
+ }
667
+ return { type: "style", format: "16", code };
668
+ }
669
+ return null;
670
+ }
671
+ function degradeColor(ansi, support) {
672
+ if (support === "none") {
673
+ return "";
674
+ }
675
+ if (support === "truecolor") {
676
+ return ansi;
677
+ }
678
+ const parsed = parseAnsiCode(ansi);
679
+ if (!parsed) {
680
+ return ansi;
681
+ }
682
+ if (support === "256") {
683
+ if (parsed.format === "truecolor" && parsed.rgb) {
684
+ const code = rgbToAnsi256(parsed.rgb.r, parsed.rgb.g, parsed.rgb.b);
685
+ const prefix = parsed.type === "bg" ? "48" : "38";
686
+ return `\x1B[${prefix};5;${code}m`;
687
+ }
688
+ return ansi;
689
+ }
690
+ if (support === "16") {
691
+ if (parsed.format === "16") {
692
+ return ansi;
693
+ }
694
+ let code256;
695
+ if (parsed.format === "truecolor" && parsed.rgb) {
696
+ code256 = rgbToAnsi256(parsed.rgb.r, parsed.rgb.g, parsed.rgb.b);
697
+ } else if (parsed.code !== void 0) {
698
+ code256 = parsed.code;
699
+ } else {
700
+ return ansi;
701
+ }
702
+ const code16 = ansi256To16(code256);
703
+ return `\x1B[${code16}m`;
704
+ }
705
+ return ansi;
706
+ }
707
+ function applyThemeStyles(text, theme, styleKey) {
708
+ const color = theme.colors[styleKey];
709
+ if (!color) {
710
+ return text;
711
+ }
712
+ return `${color}${text}${ANSI.reset}`;
713
+ }
714
+ var defaultTheme = {
715
+ primary: ANSI.cyan,
716
+ secondary: ANSI.blue,
717
+ accent: ANSI.magenta,
718
+ muted: ANSI.brightBlack,
719
+ success: ANSI.green,
720
+ warning: ANSI.yellow,
721
+ error: ANSI.red,
722
+ info: ANSI.blue,
723
+ border: ANSI.brightBlack,
724
+ background: "",
725
+ foreground: ANSI.white,
726
+ selection: ANSI.bgBlue,
727
+ focus: ANSI.bgCyan,
728
+ typography: {
729
+ headingWeight: "bold",
730
+ bodyWeight: "normal",
731
+ codeFont: "monospace"
732
+ },
733
+ spacing: {
734
+ xs: 1,
735
+ sm: 2,
736
+ md: 4,
737
+ lg: 8,
738
+ xl: 16
739
+ }
740
+ };
741
+ var colors = {
742
+ primary: ANSI.cyan,
743
+ secondary: ANSI.blue,
744
+ accent: ANSI.magenta,
745
+ muted: ANSI.brightBlack,
746
+ success: ANSI.green,
747
+ warning: ANSI.yellow,
748
+ error: ANSI.red,
749
+ info: ANSI.blue
750
+ };
751
+ var themeTokens = {
752
+ primary: "primary",
753
+ secondary: "secondary",
754
+ accent: "accent",
755
+ muted: "muted",
756
+ success: "success",
757
+ warning: "warning",
758
+ error: "error",
759
+ info: "info"
760
+ };
761
+ var darkTheme = {
762
+ ...defaultTheme,
763
+ background: ANSI.bgBlack,
764
+ foreground: ANSI.brightWhite
765
+ };
766
+ var lightTheme = {
767
+ ...defaultTheme,
768
+ background: ANSI.bgWhite,
769
+ foreground: ANSI.black
770
+ };
771
+ var highContrastTheme = {
772
+ ...defaultTheme,
773
+ foreground: ANSI.brightWhite,
774
+ background: ANSI.bgBlack,
775
+ primary: ANSI.brightCyan,
776
+ secondary: ANSI.brightBlue
777
+ };
778
+ var themePresets = {
779
+ default: defaultTheme,
780
+ dark: darkTheme,
781
+ light: lightTheme,
782
+ highContrast: highContrastTheme
783
+ };
784
+ function ansi256(n) {
785
+ return `\x1B[38;5;${n}m`;
786
+ }
787
+ function ansi256Bg(n) {
788
+ return `\x1B[48;5;${n}m`;
789
+ }
790
+ function rgb(r, g, b) {
791
+ return `\x1B[38;2;${r};${g};${b}m`;
792
+ }
793
+ function rgbBg(r, g, b) {
794
+ return `\x1B[48;2;${r};${g};${b}m`;
795
+ }
796
+ function hex(color) {
797
+ const { r, g, b } = hexToRgb(color);
798
+ return rgb(r, g, b);
799
+ }
800
+ function hexBg(color) {
801
+ const { r, g, b } = hexToRgb(color);
802
+ return rgbBg(r, g, b);
803
+ }
804
+ function detectColorScheme() {
805
+ if (typeof process !== "undefined") {
806
+ const colorBg = process.env?.COLORFGBG;
807
+ if (colorBg) {
808
+ const parts = colorBg.split(";");
809
+ if (parts.length >= 2) {
810
+ const bg2 = parseInt(parts[1], 10);
811
+ if (bg2 > 7 && bg2 < 16) {
812
+ return "light";
813
+ }
814
+ }
815
+ }
816
+ }
817
+ return "dark";
818
+ }
819
+ function fg(colorName, text) {
820
+ const colorCode = colors[colorName] || defaultTheme[colorName] || colorName;
821
+ return `${colorCode}${text}${ANSI.reset}`;
822
+ }
823
+ function bg(colorName, text) {
824
+ const bgMap = {
825
+ primary: ANSI.bgCyan,
826
+ secondary: ANSI.bgBlue,
827
+ accent: ANSI.bgMagenta,
828
+ muted: ANSI.bgBlack,
829
+ success: ANSI.bgGreen,
830
+ warning: ANSI.bgYellow,
831
+ error: ANSI.bgRed,
832
+ info: ANSI.bgBlue
833
+ };
834
+ const colorCode = bgMap[colorName] || colorName;
835
+ return `${colorCode}${text}${ANSI.reset}`;
836
+ }
837
+ function bold(text) {
838
+ return `${ANSI.bold}${text}${ANSI.reset}`;
839
+ }
840
+ function dim(text) {
841
+ return `${ANSI.dim}${text}${ANSI.reset}`;
842
+ }
843
+ function italic(text) {
844
+ return `${ANSI.italic}${text}${ANSI.reset}`;
845
+ }
846
+ function underline(text) {
847
+ return `${ANSI.underline}${text}${ANSI.reset}`;
848
+ }
849
+ function strikethrough(text) {
850
+ return `${ANSI.strikethrough}${text}${ANSI.reset}`;
851
+ }
852
+ function style(text, modifiers) {
853
+ const modifierMap = {
854
+ bold: ANSI.bold,
855
+ dim: ANSI.dim,
856
+ italic: ANSI.italic,
857
+ underline: ANSI.underline,
858
+ strikethrough: ANSI.strikethrough,
859
+ black: ANSI.black,
860
+ red: ANSI.red,
861
+ green: ANSI.green,
862
+ yellow: ANSI.yellow,
863
+ blue: ANSI.blue,
864
+ magenta: ANSI.magenta,
865
+ cyan: ANSI.cyan,
866
+ white: ANSI.white,
867
+ brightBlack: ANSI.brightBlack,
868
+ brightRed: ANSI.brightRed,
869
+ brightGreen: ANSI.brightGreen,
870
+ brightYellow: ANSI.brightYellow,
871
+ brightBlue: ANSI.brightBlue,
872
+ brightMagenta: ANSI.brightMagenta,
873
+ brightCyan: ANSI.brightCyan,
874
+ brightWhite: ANSI.brightWhite
875
+ };
876
+ const codes = modifiers.map((m) => modifierMap[m] || "").filter(Boolean);
877
+ if (codes.length === 0) return text;
878
+ return `${codes.join("")}${text}${ANSI.reset}`;
879
+ }
880
+ function stripAnsi(text) {
881
+ if (!text || typeof text !== "string") {
882
+ return "";
883
+ }
884
+ return text.replace(/\x1b\[[0-9;]*m/g, "");
885
+ }
886
+ function visibleLength(text) {
887
+ return stripAnsi(text).length;
888
+ }
889
+ function isValidAnsiColor(color) {
890
+ if (color === "") return true;
891
+ return /^\x1b\[\d+(;\d+)*m$/.test(color);
892
+ }
893
+ function deepMerge(target, source) {
894
+ const result = { ...target };
895
+ for (const key of Object.keys(source)) {
896
+ const sourceValue = source[key];
897
+ const targetValue = target[key];
898
+ if (sourceValue !== void 0) {
899
+ if (typeof sourceValue === "object" && sourceValue !== null && !Array.isArray(sourceValue) && typeof targetValue === "object" && targetValue !== null && !Array.isArray(targetValue)) {
900
+ result[key] = deepMerge(
901
+ targetValue,
902
+ sourceValue
903
+ );
904
+ } else {
905
+ result[key] = sourceValue;
906
+ }
907
+ }
908
+ }
909
+ return result;
910
+ }
911
+ function createTheme(partial) {
912
+ const colorKeys = [
913
+ "primary",
914
+ "secondary",
915
+ "accent",
916
+ "muted",
917
+ "success",
918
+ "warning",
919
+ "error",
920
+ "info",
921
+ "border",
922
+ "background",
923
+ "foreground",
924
+ "selection",
925
+ "focus"
926
+ ];
927
+ for (const key of colorKeys) {
928
+ const value = partial[key];
929
+ if (value !== void 0 && typeof value === "string" && !isValidAnsiColor(value)) {
930
+ throw new Error(`Invalid color value for ${key}: ${value}`);
931
+ }
932
+ }
933
+ return deepMerge(defaultTheme, partial);
934
+ }
935
+ function extendTheme(base, overrides) {
936
+ return deepMerge(base, overrides);
937
+ }
938
+ function composeThemes(...themes) {
939
+ return themes.reduce((acc, theme) => deepMerge(acc, theme), {});
940
+ }
941
+ function createThemeVariant(base, _name, overrides) {
942
+ return extendTheme(base, overrides);
943
+ }
944
+ function adaptColor(color, level) {
945
+ return degradeColor(color, level);
946
+ }
947
+ var legacyTailwindToAnsi = {
948
+ // Text colors
949
+ "text-primary": ANSI.cyan,
950
+ "text-secondary": ANSI.blue,
951
+ "text-muted": ANSI.brightBlack,
952
+ "text-success": ANSI.green,
953
+ "text-warning": ANSI.yellow,
954
+ "text-error": ANSI.red,
955
+ "text-destructive": ANSI.red,
956
+ // Font styles
957
+ "font-bold": ANSI.bold,
958
+ "font-medium": ANSI.bold,
959
+ italic: ANSI.italic,
960
+ underline: ANSI.underline,
961
+ // Background colors
962
+ "bg-primary": ANSI.bgCyan,
963
+ "bg-secondary": ANSI.bgBlue,
964
+ "bg-muted": ANSI.bgBlack,
965
+ "bg-destructive": ANSI.bgRed
966
+ };
967
+ function tailwindToTerminal(classes) {
968
+ if (!classes || typeof classes !== "string") {
969
+ return "";
970
+ }
971
+ const parts = classes.split(" ").filter(Boolean);
972
+ const ansiCodes = [];
973
+ for (const cls of parts) {
974
+ if (legacyTailwindToAnsi[cls]) {
975
+ ansiCodes.push(legacyTailwindToAnsi[cls]);
976
+ }
977
+ }
978
+ return ansiCodes.join("");
979
+ }
980
+ function styled(text, ...codes) {
981
+ if (text == null) return "";
982
+ if (codes.length === 0) return String(text);
983
+ const validCodes = codes.filter((c) => c && typeof c === "string");
984
+ if (validCodes.length === 0) return String(text);
985
+ return `${validCodes.join("")}${text}${ANSI.reset}`;
986
+ }
987
+ var boxChars = {
988
+ single: {
989
+ topLeft: "\u250C",
990
+ topRight: "\u2510",
991
+ bottomLeft: "\u2514",
992
+ bottomRight: "\u2518",
993
+ horizontal: "\u2500",
994
+ vertical: "\u2502",
995
+ teeLeft: "\u251C",
996
+ teeRight: "\u2524",
997
+ teeTop: "\u252C",
998
+ teeBottom: "\u2534",
999
+ cross: "\u253C"
1000
+ },
1001
+ double: {
1002
+ topLeft: "\u2554",
1003
+ topRight: "\u2557",
1004
+ bottomLeft: "\u255A",
1005
+ bottomRight: "\u255D",
1006
+ horizontal: "\u2550",
1007
+ vertical: "\u2551",
1008
+ teeLeft: "\u2560",
1009
+ teeRight: "\u2563",
1010
+ teeTop: "\u2566",
1011
+ teeBottom: "\u2569",
1012
+ cross: "\u256C"
1013
+ },
1014
+ rounded: {
1015
+ topLeft: "\u256D",
1016
+ topRight: "\u256E",
1017
+ bottomLeft: "\u2570",
1018
+ bottomRight: "\u256F",
1019
+ horizontal: "\u2500",
1020
+ vertical: "\u2502",
1021
+ teeLeft: "\u251C",
1022
+ teeRight: "\u2524",
1023
+ teeTop: "\u252C",
1024
+ teeBottom: "\u2534",
1025
+ cross: "\u253C"
1026
+ }
1027
+ };
1028
+ function drawBox(width, height, style2 = "single") {
1029
+ if (width < 2) width = 2;
1030
+ if (height < 2) height = 2;
1031
+ width = Math.floor(width);
1032
+ height = Math.floor(height);
1033
+ const chars = boxChars[style2];
1034
+ const lines = [];
1035
+ lines.push(chars.topLeft + chars.horizontal.repeat(Math.max(0, width - 2)) + chars.topRight);
1036
+ for (let i = 0; i < height - 2; i++) {
1037
+ lines.push(chars.vertical + " ".repeat(Math.max(0, width - 2)) + chars.vertical);
1038
+ }
1039
+ lines.push(chars.bottomLeft + chars.horizontal.repeat(Math.max(0, width - 2)) + chars.bottomRight);
1040
+ return lines;
1041
+ }
1042
+
1043
+ export {
1044
+ ANSI,
1045
+ rgbToAnsi,
1046
+ hexToAnsi,
1047
+ tailwindToAnsi,
1048
+ createTerminalTheme,
1049
+ getThemeColor,
1050
+ detectColorSupport,
1051
+ cssVarToAnsi,
1052
+ degradeColor,
1053
+ applyThemeStyles,
1054
+ defaultTheme,
1055
+ colors,
1056
+ themeTokens,
1057
+ darkTheme,
1058
+ lightTheme,
1059
+ highContrastTheme,
1060
+ themePresets,
1061
+ ansi256,
1062
+ ansi256Bg,
1063
+ rgb,
1064
+ rgbBg,
1065
+ hex,
1066
+ hexBg,
1067
+ detectColorScheme,
1068
+ fg,
1069
+ bg,
1070
+ bold,
1071
+ dim,
1072
+ italic,
1073
+ underline,
1074
+ strikethrough,
1075
+ style,
1076
+ stripAnsi,
1077
+ visibleLength,
1078
+ createTheme,
1079
+ extendTheme,
1080
+ composeThemes,
1081
+ createThemeVariant,
1082
+ adaptColor,
1083
+ tailwindToTerminal,
1084
+ styled,
1085
+ boxChars,
1086
+ drawBox
1087
+ };