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