@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,240 @@
1
+ // src/theme/ansi-codes.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
+ // Bright background colors
40
+ bgBrightBlack: "\x1B[100m",
41
+ bgBrightRed: "\x1B[101m",
42
+ bgBrightGreen: "\x1B[102m",
43
+ bgBrightYellow: "\x1B[103m",
44
+ bgBrightBlue: "\x1B[104m",
45
+ bgBrightMagenta: "\x1B[105m",
46
+ bgBrightCyan: "\x1B[106m",
47
+ bgBrightWhite: "\x1B[107m"
48
+ };
49
+
50
+ // src/schemas.ts
51
+ import { z } from "zod";
52
+ var HexColorSchema = z.string().regex(
53
+ /^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,
54
+ "Invalid hex color format. Expected #RGB, RGB, #RRGGBB, or RRGGBB"
55
+ );
56
+ var RgbComponentSchema = z.number().int("RGB component must be an integer").min(0, "RGB component must be >= 0").max(255, "RGB component must be <= 255");
57
+ var RgbColorSchema = z.object({
58
+ r: RgbComponentSchema,
59
+ g: RgbComponentSchema,
60
+ b: RgbComponentSchema
61
+ });
62
+ var Ansi256CodeSchema = z.number().int("ANSI 256 code must be an integer").min(0, "ANSI 256 code must be >= 0").max(255, "ANSI 256 code must be <= 255");
63
+ var AnsiEscapeSchema = z.string().refine(
64
+ (val) => {
65
+ if (val === "") return true;
66
+ return /^\x1b\[\d+(;\d+)*m$/.test(val);
67
+ },
68
+ {
69
+ message: "Invalid ANSI escape sequence"
70
+ }
71
+ );
72
+ var ThemeModeSchema = z.enum(["dark", "light"]);
73
+ var TerminalThemeColorsSchema = z.object({
74
+ primary: AnsiEscapeSchema,
75
+ secondary: AnsiEscapeSchema,
76
+ accent: AnsiEscapeSchema,
77
+ muted: AnsiEscapeSchema,
78
+ success: AnsiEscapeSchema,
79
+ warning: AnsiEscapeSchema,
80
+ error: AnsiEscapeSchema,
81
+ info: AnsiEscapeSchema,
82
+ border: AnsiEscapeSchema,
83
+ background: AnsiEscapeSchema,
84
+ foreground: AnsiEscapeSchema,
85
+ selection: AnsiEscapeSchema,
86
+ focus: AnsiEscapeSchema
87
+ });
88
+ var CreateTerminalThemeOptionsSchema = z.object({
89
+ mode: ThemeModeSchema.optional(),
90
+ colors: TerminalThemeColorsSchema.partial().optional()
91
+ });
92
+ var LegacyTerminalThemeSchema = z.object({
93
+ primary: AnsiEscapeSchema,
94
+ secondary: AnsiEscapeSchema,
95
+ accent: AnsiEscapeSchema,
96
+ muted: AnsiEscapeSchema,
97
+ success: AnsiEscapeSchema,
98
+ warning: AnsiEscapeSchema,
99
+ error: AnsiEscapeSchema,
100
+ info: AnsiEscapeSchema,
101
+ border: AnsiEscapeSchema,
102
+ background: AnsiEscapeSchema,
103
+ foreground: AnsiEscapeSchema,
104
+ selection: AnsiEscapeSchema,
105
+ focus: AnsiEscapeSchema
106
+ });
107
+ var TypographyOptionsSchema = z.object({
108
+ headingWeight: z.string(),
109
+ bodyWeight: z.string(),
110
+ codeFont: z.string()
111
+ });
112
+ var SpacingOptionsSchema = z.object({
113
+ xs: z.number(),
114
+ sm: z.number(),
115
+ md: z.number(),
116
+ lg: z.number(),
117
+ xl: z.number()
118
+ });
119
+ var LegacyTerminalThemeWithExtrasSchema = LegacyTerminalThemeSchema.extend({
120
+ typography: TypographyOptionsSchema.optional(),
121
+ spacing: SpacingOptionsSchema.optional()
122
+ });
123
+ var CreateThemeInputSchema = LegacyTerminalThemeWithExtrasSchema.partial();
124
+ var RgbToAnsiOptionsSchema = z.object({
125
+ background: z.boolean().optional()
126
+ });
127
+ var ColorSupportSchema = z.enum(["none", "16", "256", "truecolor"]);
128
+
129
+ // src/theme/color-convert.ts
130
+ function rgbToAnsi256(r, g, b) {
131
+ if (r === 0 && g === 0 && b === 0) {
132
+ return 0;
133
+ }
134
+ if (r === 255 && g === 255 && b === 255) {
135
+ return 15;
136
+ }
137
+ if (Math.abs(r - g) < 10 && Math.abs(g - b) < 10 && Math.abs(r - b) < 10) {
138
+ const avg = (r + g + b) / 3;
139
+ if (avg < 8) return 0;
140
+ if (avg > 248) return 15;
141
+ const grayIndex = Math.round((avg - 8) / 10);
142
+ return Math.min(255, Math.max(232, 232 + grayIndex));
143
+ }
144
+ const toColorCubeIndex = (v) => {
145
+ if (v < 48) return 0;
146
+ if (v < 115) return 1;
147
+ return Math.min(5, Math.floor((v - 35) / 40));
148
+ };
149
+ const ri = toColorCubeIndex(r);
150
+ const gi = toColorCubeIndex(g);
151
+ const bi = toColorCubeIndex(b);
152
+ return 16 + 36 * ri + 6 * gi + bi;
153
+ }
154
+ function hexToRgb(hex2) {
155
+ if (!hex2 || typeof hex2 !== "string") {
156
+ return { r: 0, g: 0, b: 0 };
157
+ }
158
+ hex2 = hex2.replace(/^#/, "");
159
+ if (hex2.length === 0) {
160
+ return { r: 0, g: 0, b: 0 };
161
+ }
162
+ if (hex2.length === 3) {
163
+ hex2 = hex2.split("").map((c) => c + c).join("");
164
+ }
165
+ if (!/^[0-9a-fA-F]{6}$/.test(hex2)) {
166
+ return { r: 0, g: 0, b: 0 };
167
+ }
168
+ const num = parseInt(hex2, 16);
169
+ return {
170
+ r: num >> 16 & 255,
171
+ g: num >> 8 & 255,
172
+ b: num & 255
173
+ };
174
+ }
175
+ function rgbToAnsi(r, g, b, opts) {
176
+ const code = rgbToAnsi256(r, g, b);
177
+ const prefix = opts?.background ? "48" : "38";
178
+ return `\x1B[${prefix};5;${code}m`;
179
+ }
180
+ function hexToAnsi(hex2, opts) {
181
+ const { r, g, b } = hexToRgb(hex2);
182
+ return rgbToAnsi(r, g, b, opts);
183
+ }
184
+ function ansi256(n) {
185
+ Ansi256CodeSchema.parse(n);
186
+ return `\x1B[38;5;${n}m`;
187
+ }
188
+ function ansi256Bg(n) {
189
+ Ansi256CodeSchema.parse(n);
190
+ return `\x1B[48;5;${n}m`;
191
+ }
192
+ function rgb(r, g, b) {
193
+ RgbComponentSchema.parse(r);
194
+ RgbComponentSchema.parse(g);
195
+ RgbComponentSchema.parse(b);
196
+ return `\x1B[38;2;${r};${g};${b}m`;
197
+ }
198
+ function rgbBg(r, g, b) {
199
+ RgbComponentSchema.parse(r);
200
+ RgbComponentSchema.parse(g);
201
+ RgbComponentSchema.parse(b);
202
+ return `\x1B[48;2;${r};${g};${b}m`;
203
+ }
204
+ function hex(color) {
205
+ HexColorSchema.parse(color);
206
+ const { r, g, b } = hexToRgb(color);
207
+ return `\x1B[38;2;${r};${g};${b}m`;
208
+ }
209
+ function hexBg(color) {
210
+ HexColorSchema.parse(color);
211
+ const { r, g, b } = hexToRgb(color);
212
+ return `\x1B[48;2;${r};${g};${b}m`;
213
+ }
214
+
215
+ export {
216
+ ANSI,
217
+ HexColorSchema,
218
+ RgbComponentSchema,
219
+ RgbColorSchema,
220
+ Ansi256CodeSchema,
221
+ AnsiEscapeSchema,
222
+ ThemeModeSchema,
223
+ TerminalThemeColorsSchema,
224
+ CreateTerminalThemeOptionsSchema,
225
+ LegacyTerminalThemeSchema,
226
+ LegacyTerminalThemeWithExtrasSchema,
227
+ CreateThemeInputSchema,
228
+ RgbToAnsiOptionsSchema,
229
+ ColorSupportSchema,
230
+ rgbToAnsi256,
231
+ hexToRgb,
232
+ rgbToAnsi,
233
+ hexToAnsi,
234
+ ansi256,
235
+ ansi256Bg,
236
+ rgb,
237
+ rgbBg,
238
+ hex,
239
+ hexBg
240
+ };