@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,217 @@
1
+ /**
2
+ * @mdxui/terminal Interactive Renderer
3
+ *
4
+ * The Interactive renderer is the highest-capability tier providing:
5
+ * - Full TUI with keyboard navigation
6
+ * - Focus management and Tab cycling
7
+ * - Mouse click support
8
+ * - Cursor positioning
9
+ * - Real-time updates
10
+ * - Input field handling
11
+ * - Component state management
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ /**
16
+ * Configuration options for creating an interactive renderer
17
+ */
18
+ interface InteractiveRendererConfig {
19
+ /** Terminal width in columns */
20
+ width?: number;
21
+ /** Terminal height in rows */
22
+ height?: number;
23
+ /** Enable mouse support */
24
+ useMouse?: boolean;
25
+ /** Use alternate screen buffer */
26
+ useAlternateScreen?: boolean;
27
+ /** Wrap focus at boundaries */
28
+ wrapFocus?: boolean;
29
+ /** Enable vim-style key bindings */
30
+ vimBindings?: boolean;
31
+ /** Timeout for key sequences in ms */
32
+ sequenceTimeout?: number;
33
+ /** Target frames per second */
34
+ targetFps?: number;
35
+ }
36
+ /**
37
+ * Focusable element options
38
+ */
39
+ interface FocusableOptions {
40
+ /** Tab order index */
41
+ tabIndex: number;
42
+ /** Focus group */
43
+ group?: string;
44
+ /** Callback when focused */
45
+ onFocus?: (event: {
46
+ id: string;
47
+ }) => void;
48
+ /** Callback when blurred */
49
+ onBlur?: (event: {
50
+ id: string;
51
+ }) => void;
52
+ /** Callback when activated */
53
+ onActivate?: (event: {
54
+ id: string;
55
+ }) => void;
56
+ /** Callback when toggled */
57
+ onToggle?: (event: {
58
+ id: string;
59
+ }) => void;
60
+ /** Whether element is disabled */
61
+ disabled?: boolean;
62
+ /** Column position for grid navigation */
63
+ column?: number;
64
+ /** Cursor position for input elements */
65
+ cursorPosition?: {
66
+ x: number;
67
+ y: number;
68
+ };
69
+ /** Whether to show cursor when focused */
70
+ showCursor?: boolean;
71
+ }
72
+ /**
73
+ * Clickable area options
74
+ */
75
+ interface ClickableOptions {
76
+ /** X position */
77
+ x: number;
78
+ /** Y position */
79
+ y: number;
80
+ /** Width */
81
+ width: number;
82
+ /** Height */
83
+ height: number;
84
+ /** Z-index for layering */
85
+ zIndex?: number;
86
+ /** Whether clicking focuses the element */
87
+ focusable?: boolean;
88
+ /** Click handler */
89
+ onClick?: (event: {
90
+ x: number;
91
+ y: number;
92
+ id: string;
93
+ }) => void;
94
+ /** Double-click handler */
95
+ onDoubleClick?: () => void;
96
+ /** Right-click handler */
97
+ onRightClick?: () => void;
98
+ }
99
+ /**
100
+ * Input registration options
101
+ */
102
+ interface InputOptions {
103
+ /** Current value */
104
+ value: string;
105
+ /** Placeholder text */
106
+ placeholder?: string;
107
+ /** Input mask */
108
+ mask?: string;
109
+ /** Maximum length */
110
+ maxLength?: number;
111
+ /** Validation function */
112
+ validate?: (value: string) => boolean;
113
+ /** Whether multiline */
114
+ multiline?: boolean;
115
+ /** Current cursor index */
116
+ cursorIndex?: number;
117
+ /** Change handler */
118
+ onChange?: (value: string) => void;
119
+ /** Submit handler */
120
+ onSubmit?: (value: string) => void;
121
+ }
122
+ /**
123
+ * Component registration options
124
+ */
125
+ interface ComponentOptions {
126
+ /** Component type */
127
+ type: string;
128
+ /** Additional options */
129
+ [key: string]: unknown;
130
+ }
131
+ /**
132
+ * Interactive renderer interface
133
+ */
134
+ interface InteractiveRenderer {
135
+ width: number;
136
+ height: number;
137
+ start(): void;
138
+ stop(): void;
139
+ destroy(): void;
140
+ requestRender(): void;
141
+ focusNext(): void;
142
+ focusPrev(): void;
143
+ focusById(id: string): void;
144
+ getFocusedId(): string | null;
145
+ getFocusableIds(): string[];
146
+ registerFocusable(id: string, options: FocusableOptions): void;
147
+ unregisterFocusable(id: string): void;
148
+ setActiveGroup(group: string): void;
149
+ pushFocusTrap(group: string): void;
150
+ popFocusTrap(): void;
151
+ onKeyPress(key: string, handler: () => boolean | void, options?: {
152
+ priority?: number;
153
+ }): void;
154
+ offKeyPress(key: string, handler: () => boolean | void): void;
155
+ emitKey(key: string): void;
156
+ onKeySequence(sequence: string, handler: () => void): void;
157
+ getPendingSequence(): string;
158
+ onSearchMode(handler: () => void): void;
159
+ onCancel(handler: () => void): void;
160
+ getMode(): string;
161
+ onClick(handler: (event: {
162
+ x: number;
163
+ y: number;
164
+ }) => void): void;
165
+ offClick(handler: (event: {
166
+ x: number;
167
+ y: number;
168
+ }) => void): void;
169
+ emitClick(x: number, y: number, options?: {
170
+ clickCount?: number;
171
+ button?: string;
172
+ }): void;
173
+ registerClickable(id: string, options: ClickableOptions): void;
174
+ unregisterClickable(id: string): void;
175
+ getClickableAreas(): Array<{
176
+ id: string;
177
+ } & ClickableOptions>;
178
+ onScroll(handler: (event: {
179
+ deltaY: number;
180
+ }) => void): void;
181
+ emitScroll(x: number, y: number, options: {
182
+ deltaY: number;
183
+ }): void;
184
+ setCursorPosition(x: number, y: number): void;
185
+ getCursorPosition(): {
186
+ x: number;
187
+ y: number;
188
+ };
189
+ showCursor(): void;
190
+ hideCursor(): void;
191
+ isCursorVisible(): boolean;
192
+ setCursorStyle(style: 'block' | 'underline' | 'bar'): void;
193
+ getCursorStyle(): string;
194
+ setCursorBlink(blink: boolean): void;
195
+ isCursorBlinking(): boolean;
196
+ updateCursorPosition(id: string, position: {
197
+ x: number;
198
+ y: number;
199
+ }): void;
200
+ setState(key: string, value: unknown): void;
201
+ getState(key: string): unknown;
202
+ subscribe(key: string, subscriber: (newValue: unknown, oldValue: unknown) => void): () => void;
203
+ onRender(handler: () => void): void;
204
+ getTargetFps(): number;
205
+ registerInput(id: string, options: InputOptions): void;
206
+ getInputCursorIndex(id: string): number;
207
+ registerComponent(id: string, options: ComponentOptions): void;
208
+ unregisterComponent(id: string): void;
209
+ getComponent(id: string): ComponentOptions | undefined;
210
+ updateComponent(id: string, updates: Partial<ComponentOptions>): void;
211
+ }
212
+ /**
213
+ * Creates an interactive renderer instance.
214
+ */
215
+ declare function createInteractiveRenderer(config?: InteractiveRendererConfig): Promise<InteractiveRenderer>;
216
+
217
+ export { type ClickableOptions as C, type FocusableOptions as F, type InteractiveRenderer as I, type InteractiveRendererConfig as a, type InputOptions as b, createInteractiveRenderer as c, type ComponentOptions as d };
@@ -0,0 +1,2 @@
1
+ export { h as ARROW_BINDINGS, A as ActionContext, c as ActionHandler, y as AttachKeyboardOptions, C as COMMON_BINDINGS, D as DetachKeyboard, E as EMACS_BINDINGS, r as FocusContext, k as FocusManagerState, x as FocusProvider, q as FocusProviderProps, F as FocusableElement, f as KEY, b as KeyBindings, K as KeyModifiers, a as KeyboardAction, e as KeyboardManager, d as KeyboardManagerOptions, N as NormalizedKey, O as OpenTUIKeyEvent, R as ReadlineKey, j as UseFocusOptions, U as UseKeyboardOptions, i as UseKeyboardResult, o as UseNavigableGridOptions, p as UseNavigableGridResult, l as UseNavigableListOptions, n as UseNavigableListResult, V as VIM_BINDINGS, G as attachKeyboardManager, g as createKeyboardManager, I as createOpenTUIKeyHandler, B as keyToBindingString, m as matchKey, H as normalizeOpenTUIKey, z as normalizeReadlineKey, s as useFocus, t as useFocusManager, u as useKeyboard, w as useNavigableGrid, v as useNavigableList } from '../index-CQRFZntR.js';
2
+ import 'react';
@@ -0,0 +1,43 @@
1
+ import {
2
+ ARROW_BINDINGS,
3
+ COMMON_BINDINGS,
4
+ EMACS_BINDINGS,
5
+ FocusContext,
6
+ FocusProvider,
7
+ KEY,
8
+ VIM_BINDINGS,
9
+ attachKeyboardManager,
10
+ createKeyboardManager,
11
+ createOpenTUIKeyHandler,
12
+ keyToBindingString,
13
+ matchKey,
14
+ normalizeOpenTUIKey,
15
+ normalizeReadlineKey,
16
+ useFocus,
17
+ useFocusManager,
18
+ useKeyboard,
19
+ useNavigableGrid,
20
+ useNavigableList
21
+ } from "../chunk-GBQ6UD6I.js";
22
+ import "../chunk-3RG5ZIWI.js";
23
+ export {
24
+ ARROW_BINDINGS,
25
+ COMMON_BINDINGS,
26
+ EMACS_BINDINGS,
27
+ FocusContext,
28
+ FocusProvider,
29
+ KEY,
30
+ VIM_BINDINGS,
31
+ attachKeyboardManager,
32
+ createKeyboardManager,
33
+ createOpenTUIKeyHandler,
34
+ keyToBindingString,
35
+ matchKey,
36
+ normalizeOpenTUIKey,
37
+ normalizeReadlineKey,
38
+ useFocus,
39
+ useFocusManager,
40
+ useKeyboard,
41
+ useNavigableGrid,
42
+ useNavigableList
43
+ };