@mks2508/mks-ui 0.4.0 → 0.5.1

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 (129) hide show
  1. package/dist/index.css +129 -0
  2. package/dist/react-ui/blocks/Terminal/TerminalDisplay.d.ts +46 -0
  3. package/dist/react-ui/blocks/Terminal/TerminalDisplay.d.ts.map +1 -0
  4. package/dist/react-ui/blocks/Terminal/TerminalDisplay.js +175 -0
  5. package/dist/react-ui/blocks/Terminal/TerminalDisplay.styles.d.ts +21 -0
  6. package/dist/react-ui/blocks/Terminal/TerminalDisplay.styles.d.ts.map +1 -0
  7. package/dist/react-ui/blocks/Terminal/TerminalDisplay.styles.js +31 -0
  8. package/dist/react-ui/blocks/Terminal/TerminalDisplay.types.d.ts +56 -0
  9. package/dist/react-ui/blocks/Terminal/TerminalDisplay.types.d.ts.map +1 -0
  10. package/dist/react-ui/blocks/Terminal/chrome.d.ts +14 -0
  11. package/dist/react-ui/blocks/Terminal/chrome.d.ts.map +1 -0
  12. package/dist/react-ui/blocks/Terminal/chrome.js +6 -0
  13. package/dist/react-ui/blocks/Terminal/components/LogLineBadges.d.ts +5 -5
  14. package/dist/react-ui/blocks/Terminal/components/LogLineBadges.d.ts.map +1 -1
  15. package/dist/react-ui/blocks/Terminal/display.d.ts +20 -0
  16. package/dist/react-ui/blocks/Terminal/display.d.ts.map +1 -0
  17. package/dist/react-ui/blocks/Terminal/display.js +9 -0
  18. package/dist/react-ui/blocks/Terminal/index.d.ts +4 -0
  19. package/dist/react-ui/blocks/Terminal/index.d.ts.map +1 -1
  20. package/dist/react-ui/blocks/Terminal/index.js +4 -1
  21. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.d.ts +7 -6
  22. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.d.ts.map +1 -1
  23. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.js +51 -30
  24. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.d.ts +35 -0
  25. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.d.ts.map +1 -0
  26. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.js +57 -0
  27. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.d.ts +7 -2
  28. package/dist/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.d.ts.map +1 -1
  29. package/dist/react-ui/primitives/AutoHeight/index.d.ts +1 -1
  30. package/dist/react-ui/primitives/CountingNumber/index.d.ts +1 -1
  31. package/dist/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.d.ts.map +1 -1
  32. package/dist/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.js +2 -0
  33. package/dist/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.d.ts.map +1 -1
  34. package/dist/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.js +2 -0
  35. package/dist/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.d.ts.map +1 -1
  36. package/dist/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.js +2 -0
  37. package/dist/react-ui/primitives/waapi/Morph/useMorph.d.ts.map +1 -1
  38. package/dist/react-ui/primitives/waapi/Morph/useMorph.js +2 -0
  39. package/dist/react-ui/primitives/waapi/Reorder/useReorder.d.ts.map +1 -1
  40. package/dist/react-ui/primitives/waapi/Reorder/useReorder.js +2 -0
  41. package/dist/react-ui/primitives/waapi/Reorder/useReorderPresence.d.ts.map +1 -1
  42. package/dist/react-ui/primitives/waapi/Reorder/useReorderPresence.js +2 -0
  43. package/dist/react-ui/primitives/waapi/SlidingNumber/SlidingNumber.styles.d.ts +1 -1
  44. package/dist/react-ui/primitives/waapi/SlidingText/SlidingText.styles.d.ts +1 -1
  45. package/dist/react-ui/primitives/waapi/core/useAnimationOrchestrator.d.ts.map +1 -1
  46. package/dist/react-ui/primitives/waapi/core/useAnimationOrchestrator.js +2 -0
  47. package/dist/react-ui/primitives/waapi/core/useElementRegistry.d.ts.map +1 -1
  48. package/dist/react-ui/primitives/waapi/core/useElementRegistry.js +2 -0
  49. package/dist/react-ui/primitives/waapi/core/useFLIPAnimation.d.ts.map +1 -1
  50. package/dist/react-ui/primitives/waapi/core/useFLIPAnimation.js +2 -0
  51. package/dist/react-ui/primitives/waapi/core/usePositionCapture.d.ts.map +1 -1
  52. package/dist/react-ui/primitives/waapi/core/usePositionCapture.js +2 -0
  53. package/dist/react-ui/ui/Accordion/Accordion.styles.d.ts +1 -1
  54. package/dist/react-ui/ui/Accordion/Accordion.types.d.ts +1 -1
  55. package/dist/react-ui/ui/AlertDialog/AlertDialog.styles.d.ts +1 -1
  56. package/dist/react-ui/ui/AlertDialog/AlertDialog.types.d.ts +1 -1
  57. package/dist/react-ui/ui/Badge/Badge.styles.d.ts +1 -1
  58. package/dist/react-ui/ui/Badge/Badge.types.d.ts +1 -1
  59. package/dist/react-ui/ui/Button/Button.styles.d.ts +1 -1
  60. package/dist/react-ui/ui/Button/Button.types.d.ts +1 -1
  61. package/dist/react-ui/ui/Card/Card.styles.d.ts +1 -1
  62. package/dist/react-ui/ui/Card/Card.types.d.ts +1 -1
  63. package/dist/react-ui/ui/Checkbox/Checkbox.styles.d.ts +1 -1
  64. package/dist/react-ui/ui/Checkbox/Checkbox.types.d.ts +1 -1
  65. package/dist/react-ui/ui/Combobox/Combobox.styles.d.ts +1 -1
  66. package/dist/react-ui/ui/Combobox/Combobox.types.d.ts +1 -1
  67. package/dist/react-ui/ui/CornerBracket/CornerBracket.styles.d.ts +1 -1
  68. package/dist/react-ui/ui/CornerBracket/CornerBracket.types.d.ts +1 -1
  69. package/dist/react-ui/ui/DataCard/DataCard.styles.d.ts +1 -1
  70. package/dist/react-ui/ui/DataCard/DataCard.types.d.ts +1 -1
  71. package/dist/react-ui/ui/DataCard/index.d.ts +1 -1
  72. package/dist/react-ui/ui/Dialog/Dialog.styles.d.ts +1 -1
  73. package/dist/react-ui/ui/Dialog/Dialog.types.d.ts +1 -1
  74. package/dist/react-ui/ui/DropdownMenu/DropdownMenu.styles.d.ts +1 -1
  75. package/dist/react-ui/ui/DropdownMenu/DropdownMenu.types.d.ts +1 -1
  76. package/dist/react-ui/ui/Field/Field.styles.d.ts +1 -1
  77. package/dist/react-ui/ui/Field/Field.types.d.ts +1 -1
  78. package/dist/react-ui/ui/Input/Input.styles.d.ts +1 -1
  79. package/dist/react-ui/ui/Input/Input.types.d.ts +1 -1
  80. package/dist/react-ui/ui/InputGroup/InputGroup.styles.d.ts +1 -1
  81. package/dist/react-ui/ui/InputGroup/InputGroup.types.d.ts +1 -1
  82. package/dist/react-ui/ui/InputGroup/index.d.ts.map +1 -1
  83. package/dist/react-ui/ui/InputGroup/index.js +2 -0
  84. package/dist/react-ui/ui/Label/Label.styles.d.ts +1 -1
  85. package/dist/react-ui/ui/Label/Label.types.d.ts +1 -1
  86. package/dist/react-ui/ui/Menu/Menu.styles.d.ts +1 -1
  87. package/dist/react-ui/ui/Menu/Menu.types.d.ts +2 -2
  88. package/dist/react-ui/ui/Popover/Popover.styles.d.ts +1 -1
  89. package/dist/react-ui/ui/Popover/Popover.types.d.ts +1 -1
  90. package/dist/react-ui/ui/Progress/Progress.styles.d.ts +1 -1
  91. package/dist/react-ui/ui/Progress/Progress.types.d.ts +2 -2
  92. package/dist/react-ui/ui/Select/Select.styles.d.ts +1 -1
  93. package/dist/react-ui/ui/Select/Select.types.d.ts +1 -1
  94. package/dist/react-ui/ui/Separator/Separator.styles.d.ts +1 -1
  95. package/dist/react-ui/ui/Separator/Separator.types.d.ts +1 -1
  96. package/dist/react-ui/ui/Switch/Switch.styles.d.ts +1 -1
  97. package/dist/react-ui/ui/Switch/Switch.types.d.ts +1 -1
  98. package/dist/react-ui/ui/Tabs/Tabs.styles.d.ts +1 -1
  99. package/dist/react-ui/ui/Tabs/Tabs.types.d.ts +3 -3
  100. package/dist/react-ui/ui/TextFlow/TextFlow.styles.d.ts +1 -1
  101. package/dist/react-ui/ui/Textarea/Textarea.styles.d.ts +1 -1
  102. package/dist/react-ui/ui/Textarea/Textarea.types.d.ts +1 -1
  103. package/dist/react-ui/ui/Tooltip/Tooltip.styles.d.ts +1 -1
  104. package/dist/react-ui/ui/Tooltip/Tooltip.types.d.ts +1 -1
  105. package/package.json +41 -34
  106. package/src/css.d.ts +6 -0
  107. package/src/react-ui/blocks/Terminal/TerminalDisplay.styles.ts +38 -0
  108. package/src/react-ui/blocks/Terminal/TerminalDisplay.tsx +254 -0
  109. package/src/react-ui/blocks/Terminal/TerminalDisplay.types.ts +73 -0
  110. package/src/react-ui/blocks/Terminal/chrome.ts +25 -0
  111. package/src/react-ui/blocks/Terminal/display.ts +46 -0
  112. package/src/react-ui/blocks/Terminal/index.ts +8 -0
  113. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.styles.ts +75 -0
  114. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.tsx +69 -40
  115. package/src/react-ui/blocks/Terminal/panel/TerminalPanelChrome.types.ts +8 -2
  116. package/src/react-ui/primitives/waapi/Morph/techniques/useCSSGridMorph.ts +1 -0
  117. package/src/react-ui/primitives/waapi/Morph/techniques/useFLIPClipPath.ts +1 -0
  118. package/src/react-ui/primitives/waapi/Morph/techniques/useViewTransitions.ts +1 -0
  119. package/src/react-ui/primitives/waapi/Morph/useMorph.ts +1 -0
  120. package/src/react-ui/primitives/waapi/Reorder/useReorder.ts +1 -0
  121. package/src/react-ui/primitives/waapi/Reorder/useReorderPresence.ts +1 -0
  122. package/src/react-ui/primitives/waapi/core/useAnimationOrchestrator.ts +1 -0
  123. package/src/react-ui/primitives/waapi/core/useElementRegistry.ts +1 -0
  124. package/src/react-ui/primitives/waapi/core/useFLIPAnimation.ts +1 -0
  125. package/src/react-ui/primitives/waapi/core/usePositionCapture.ts +1 -0
  126. package/src/react-ui/ui/Accordion/index.tsx +3 -3
  127. package/src/react-ui/ui/InputGroup/index.tsx +2 -0
  128. /package/dist/react-ui/blocks/Terminal/panel/{terminal-filter-dropdown.module-Bovc57nm.css → terminal-filter-dropdown.module-CNVWCefU.css} +0 -0
  129. /package/dist/react-ui/blocks/Terminal/panel/{terminal-session-tabs.module-QyxHO7cN.css → terminal-session-tabs.module-cmyJ11jP.css} +0 -0
package/dist/index.css ADDED
@@ -0,0 +1,129 @@
1
+ @import "tailwindcss";
2
+ @import "tw-animate-css";
3
+ @import "shadcn/tailwind.css";
4
+ @import "@fontsource-variable/geist-mono";
5
+
6
+ @custom-variant dark (&:is(.dark *));
7
+
8
+ :root {
9
+ --background: oklch(1 0 0);
10
+ --foreground: oklch(0.145 0 0);
11
+ --card: oklch(1 0 0);
12
+ --card-foreground: oklch(0.145 0 0);
13
+ --popover: oklch(1 0 0);
14
+ --popover-foreground: oklch(0.145 0 0);
15
+ --primary: oklch(0.577 0.245 27.325);
16
+ --primary-foreground: oklch(0.971 0.013 17.38);
17
+ --secondary: oklch(0.967 0.001 286.375);
18
+ --secondary-foreground: oklch(0.21 0.006 285.885);
19
+ --muted: oklch(0.97 0 0);
20
+ --muted-foreground: oklch(0.556 0 0);
21
+ --accent: oklch(0.97 0 0);
22
+ --accent-foreground: oklch(0.205 0 0);
23
+ --destructive: oklch(0.58 0.22 27);
24
+ --border: oklch(0.922 0 0);
25
+ --input: oklch(0.922 0 0);
26
+ --ring: oklch(0.708 0 0);
27
+ --chart-1: oklch(0.808 0.114 19.571);
28
+ --chart-2: oklch(0.637 0.237 25.331);
29
+ --chart-3: oklch(0.577 0.245 27.325);
30
+ --chart-4: oklch(0.505 0.213 27.518);
31
+ --chart-5: oklch(0.444 0.177 26.899);
32
+ --radius: 0.625rem;
33
+ --sidebar: oklch(0.985 0 0);
34
+ --sidebar-foreground: oklch(0.145 0 0);
35
+ --sidebar-primary: oklch(0.577 0.245 27.325);
36
+ --sidebar-primary-foreground: oklch(0.971 0.013 17.38);
37
+ --sidebar-accent: oklch(0.97 0 0);
38
+ --sidebar-accent-foreground: oklch(0.205 0 0);
39
+ --sidebar-border: oklch(0.922 0 0);
40
+ --sidebar-ring: oklch(0.708 0 0);
41
+ }
42
+
43
+ .dark {
44
+ --background: oklch(0.145 0 0);
45
+ --foreground: oklch(0.985 0 0);
46
+ --card: oklch(0.205 0 0);
47
+ --card-foreground: oklch(0.985 0 0);
48
+ --popover: oklch(0.205 0 0);
49
+ --popover-foreground: oklch(0.985 0 0);
50
+ --primary: oklch(0.637 0.237 25.331);
51
+ --primary-foreground: oklch(0.971 0.013 17.38);
52
+ --secondary: oklch(0.274 0.006 286.033);
53
+ --secondary-foreground: oklch(0.985 0 0);
54
+ --muted: oklch(0.269 0 0);
55
+ --muted-foreground: oklch(0.708 0 0);
56
+ --accent: oklch(0.371 0 0);
57
+ --accent-foreground: oklch(0.985 0 0);
58
+ --destructive: oklch(0.704 0.191 22.216);
59
+ --border: oklch(1 0 0 / 10%);
60
+ --input: oklch(1 0 0 / 15%);
61
+ --ring: oklch(0.556 0 0);
62
+ --chart-1: oklch(0.808 0.114 19.571);
63
+ --chart-2: oklch(0.637 0.237 25.331);
64
+ --chart-3: oklch(0.577 0.245 27.325);
65
+ --chart-4: oklch(0.505 0.213 27.518);
66
+ --chart-5: oklch(0.444 0.177 26.899);
67
+ --sidebar: oklch(0.205 0 0);
68
+ --sidebar-foreground: oklch(0.985 0 0);
69
+ --sidebar-primary: oklch(0.637 0.237 25.331);
70
+ --sidebar-primary-foreground: oklch(0.971 0.013 17.38);
71
+ --sidebar-accent: oklch(0.269 0 0);
72
+ --sidebar-accent-foreground: oklch(0.985 0 0);
73
+ --sidebar-border: oklch(1 0 0 / 10%);
74
+ --sidebar-ring: oklch(0.556 0 0);
75
+ }
76
+
77
+ @theme inline {
78
+ --font-mono: 'Geist Mono Variable', monospace;
79
+ --color-sidebar-ring: var(--sidebar-ring);
80
+ --color-sidebar-border: var(--sidebar-border);
81
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
82
+ --color-sidebar-accent: var(--sidebar-accent);
83
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
84
+ --color-sidebar-primary: var(--sidebar-primary);
85
+ --color-sidebar-foreground: var(--sidebar-foreground);
86
+ --color-sidebar: var(--sidebar);
87
+ --color-chart-5: var(--chart-5);
88
+ --color-chart-4: var(--chart-4);
89
+ --color-chart-3: var(--chart-3);
90
+ --color-chart-2: var(--chart-2);
91
+ --color-chart-1: var(--chart-1);
92
+ --color-ring: var(--ring);
93
+ --color-input: var(--input);
94
+ --color-border: var(--border);
95
+ --color-destructive: var(--destructive);
96
+ --color-accent-foreground: var(--accent-foreground);
97
+ --color-accent: var(--accent);
98
+ --color-muted-foreground: var(--muted-foreground);
99
+ --color-muted: var(--muted);
100
+ --color-secondary-foreground: var(--secondary-foreground);
101
+ --color-secondary: var(--secondary);
102
+ --color-primary-foreground: var(--primary-foreground);
103
+ --color-primary: var(--primary);
104
+ --color-popover-foreground: var(--popover-foreground);
105
+ --color-popover: var(--popover);
106
+ --color-card-foreground: var(--card-foreground);
107
+ --color-card: var(--card);
108
+ --color-foreground: var(--foreground);
109
+ --color-background: var(--background);
110
+ --radius-sm: calc(var(--radius) - 4px);
111
+ --radius-md: calc(var(--radius) - 2px);
112
+ --radius-lg: var(--radius);
113
+ --radius-xl: calc(var(--radius) + 4px);
114
+ --radius-2xl: calc(var(--radius) + 8px);
115
+ --radius-3xl: calc(var(--radius) + 12px);
116
+ --radius-4xl: calc(var(--radius) + 16px);
117
+ }
118
+
119
+ @layer base {
120
+ * {
121
+ @apply border-border outline-ring/50;
122
+ }
123
+ body {
124
+ @apply font-sans bg-background text-foreground;
125
+ }
126
+ html {
127
+ @apply font-sans;
128
+ }
129
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * TerminalDisplay — Readonly GPU-rendered terminal for ANSI content.
3
+ *
4
+ * Uses restty directly (not xterm) for GPU-accelerated rendering of
5
+ * ANSI-formatted text without PTY connection. Content is written via
6
+ * `restty.sendInput(data, "pty")` which feeds text to the WASM terminal
7
+ * engine for parsing and rendering.
8
+ *
9
+ * Optionally wrapped in TerminalPanelChrome glassmorphism shell.
10
+ *
11
+ * @module components/devenv/terminal/TerminalDisplay
12
+ */
13
+ import type { ITerminalDisplayProps, ITerminalDisplayRef } from './TerminalDisplay.types';
14
+ /**
15
+ * TerminalDisplay — Readonly restty terminal for displaying ANSI content.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * <TerminalDisplay
20
+ * content={"\x1b[31mError:\x1b[0m Something failed"}
21
+ * title="Error Output"
22
+ * variant="error"
23
+ * fontSize={12}
24
+ * />
25
+ * ```
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * // Without chrome shell
30
+ * <TerminalDisplay
31
+ * content={ansiOutput}
32
+ * chrome={false}
33
+ * minHeight={100}
34
+ * />
35
+ * ```
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * // With imperative handle
40
+ * const ref = useRef<ITerminalDisplayRef>(null);
41
+ * ref.current?.write("Additional output\r\n");
42
+ * ref.current?.clear();
43
+ * ```
44
+ */
45
+ export declare const TerminalDisplay: import("react").ForwardRefExoticComponent<ITerminalDisplayProps & import("react").RefAttributes<ITerminalDisplayRef>>;
46
+ //# sourceMappingURL=TerminalDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalDisplay.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/blocks/Terminal/TerminalDisplay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAM1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,eAAe,uHA8L3B,CAAC"}
@@ -0,0 +1,175 @@
1
+ 'use client';
2
+
3
+ import { cn } from "../../lib/utils.js";
4
+ import { TerminalPanelChrome } from "./panel/TerminalPanelChrome.js";
5
+ import { getSynthwaveGhosttyTheme, xtermThemeToGhostty } from "./Terminal.theme.restty.js";
6
+ import { terminalDisplayStyles, terminalDisplayVariants } from "./TerminalDisplay.styles.js";
7
+ import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from "react";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+
10
+ //#region src/react-ui/blocks/Terminal/TerminalDisplay.tsx
11
+ /**
12
+ * TerminalDisplay — Readonly GPU-rendered terminal for ANSI content.
13
+ *
14
+ * Uses restty directly (not xterm) for GPU-accelerated rendering of
15
+ * ANSI-formatted text without PTY connection. Content is written via
16
+ * `restty.sendInput(data, "pty")` which feeds text to the WASM terminal
17
+ * engine for parsing and rendering.
18
+ *
19
+ * Optionally wrapped in TerminalPanelChrome glassmorphism shell.
20
+ *
21
+ * @module components/devenv/terminal/TerminalDisplay
22
+ */
23
+ /**
24
+ * TerminalDisplay — Readonly restty terminal for displaying ANSI content.
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * <TerminalDisplay
29
+ * content={"\x1b[31mError:\x1b[0m Something failed"}
30
+ * title="Error Output"
31
+ * variant="error"
32
+ * fontSize={12}
33
+ * />
34
+ * ```
35
+ *
36
+ * @example
37
+ * ```tsx
38
+ * // Without chrome shell
39
+ * <TerminalDisplay
40
+ * content={ansiOutput}
41
+ * chrome={false}
42
+ * minHeight={100}
43
+ * />
44
+ * ```
45
+ *
46
+ * @example
47
+ * ```tsx
48
+ * // With imperative handle
49
+ * const ref = useRef<ITerminalDisplayRef>(null);
50
+ * ref.current?.write("Additional output\r\n");
51
+ * ref.current?.clear();
52
+ * ```
53
+ */
54
+ const TerminalDisplay = forwardRef(({ content, title = "Output", variant = "default", chrome = true, fontSize = 13, minHeight = 200, theme, resttyThemeName, gpuRenderer = "auto", slots, className, emptyText, onReady }, ref) => {
55
+ const containerRef = useRef(null);
56
+ const resttyRef = useRef(null);
57
+ const [isReady, setIsReady] = useState(false);
58
+ const callbacksRef = useRef({ onReady });
59
+ callbacksRef.current = { onReady };
60
+ const contentRef = useRef(content);
61
+ contentRef.current = content;
62
+ /**
63
+ * Initialize restty on mount.
64
+ * Dynamic import for SSR safety and code-splitting.
65
+ */
66
+ useEffect(() => {
67
+ if (!containerRef.current) return;
68
+ let destroyed = false;
69
+ const init = async () => {
70
+ const { Restty: ResttyClass, getBuiltinTheme } = await import("restty");
71
+ if (destroyed || !containerRef.current) return;
72
+ const restty = new ResttyClass({
73
+ root: containerRef.current,
74
+ appOptions: {
75
+ renderer: gpuRenderer,
76
+ fontSize,
77
+ autoResize: true
78
+ },
79
+ fontSources: [{
80
+ type: "local",
81
+ matchers: [
82
+ "jetbrains mono",
83
+ "fira code",
84
+ "sf mono",
85
+ "cascadia code",
86
+ "meslo"
87
+ ]
88
+ }],
89
+ createInitialPane: true,
90
+ shortcuts: false,
91
+ defaultContextMenu: false
92
+ });
93
+ resttyRef.current = restty;
94
+ if (resttyThemeName) {
95
+ const builtinTheme = getBuiltinTheme(resttyThemeName);
96
+ if (builtinTheme) restty.applyTheme(builtinTheme);
97
+ } else if (theme) restty.applyTheme(xtermThemeToGhostty(theme));
98
+ else restty.applyTheme(getSynthwaveGhosttyTheme());
99
+ const waitForWasm = () => {
100
+ if (destroyed) return;
101
+ const panes = restty.panes();
102
+ if (panes && panes.length > 0) {
103
+ if (contentRef.current) restty.sendInput(contentRef.current, "pty");
104
+ setIsReady(true);
105
+ callbacksRef.current.onReady?.(restty);
106
+ } else requestAnimationFrame(waitForWasm);
107
+ };
108
+ requestAnimationFrame(waitForWasm);
109
+ };
110
+ init().catch(() => {});
111
+ return () => {
112
+ destroyed = true;
113
+ resttyRef.current?.destroy();
114
+ resttyRef.current = null;
115
+ setIsReady(false);
116
+ };
117
+ }, []);
118
+ /**
119
+ * Re-write content when it changes after initialization.
120
+ */
121
+ useEffect(() => {
122
+ if (!isReady || !resttyRef.current) return;
123
+ resttyRef.current.clearScreen();
124
+ if (content) resttyRef.current.sendInput(content, "pty");
125
+ }, [content, isReady]);
126
+ /**
127
+ * Handle fontSize changes after initialization.
128
+ */
129
+ useEffect(() => {
130
+ if (!isReady || !resttyRef.current) return;
131
+ resttyRef.current.setFontSize(fontSize);
132
+ }, [fontSize, isReady]);
133
+ /**
134
+ * Expose imperative handle.
135
+ */
136
+ useImperativeHandle(ref, () => ({
137
+ getRestty: () => resttyRef.current,
138
+ clear: () => resttyRef.current?.clearScreen(),
139
+ write: (data) => resttyRef.current?.sendInput(data, "pty")
140
+ }));
141
+ /** Map variant to chrome variant */
142
+ const chromeVariant = variant === "error" ? "error" : "default";
143
+ const chromeSize = variant === "compact" ? "compact" : "default";
144
+ /** The terminal content area */
145
+ const terminalElement = /* @__PURE__ */ jsxs("div", {
146
+ className: cn(terminalDisplayVariants({ variant }), slots?.root, className),
147
+ style: { minHeight: `${minHeight}px` },
148
+ children: [!content && emptyText && /* @__PURE__ */ jsx("div", {
149
+ className: cn(terminalDisplayStyles.emptyState, slots?.emptyState),
150
+ style: { minHeight: `${minHeight}px` },
151
+ children: emptyText
152
+ }), /* @__PURE__ */ jsx("div", {
153
+ ref: containerRef,
154
+ className: cn(terminalDisplayStyles.terminal, slots?.terminal),
155
+ style: {
156
+ minHeight: `${minHeight}px`,
157
+ display: !content && emptyText ? "none" : void 0
158
+ }
159
+ })]
160
+ });
161
+ if (!chrome) return terminalElement;
162
+ return /* @__PURE__ */ jsx(TerminalPanelChrome, {
163
+ containerName: title,
164
+ isConnected: isReady,
165
+ variant: chromeVariant,
166
+ size: chromeSize,
167
+ slots: { root: slots?.chrome },
168
+ className,
169
+ children: terminalElement
170
+ });
171
+ });
172
+ TerminalDisplay.displayName = "TerminalDisplay";
173
+
174
+ //#endregion
175
+ export { TerminalDisplay };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * TerminalDisplay style definitions.
3
+ *
4
+ * @module components/devenv/terminal/TerminalDisplay.styles
5
+ */
6
+ import { type VariantProps } from 'class-variance-authority';
7
+ import type { StyleSlots } from '../../../core/types';
8
+ import type { TerminalDisplaySlot } from './TerminalDisplay.types';
9
+ /**
10
+ * Default style slots for TerminalDisplay regions.
11
+ */
12
+ export declare const terminalDisplayStyles: StyleSlots<TerminalDisplaySlot>;
13
+ /**
14
+ * CVA variants for the display root.
15
+ */
16
+ export declare const terminalDisplayVariants: (props?: ({
17
+ variant?: "default" | "compact" | "error" | null | undefined;
18
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
19
+ /** Extracted variant props type */
20
+ export type TerminalDisplayVariantProps = VariantProps<typeof terminalDisplayVariants>;
21
+ //# sourceMappingURL=TerminalDisplay.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalDisplay.styles.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/blocks/Terminal/TerminalDisplay.styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,UAAU,CAAC,mBAAmB,CAKjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB;;8EAWlC,CAAC;AAEH,mCAAmC;AACnC,MAAM,MAAM,2BAA2B,GAAG,YAAY,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { cva } from "class-variance-authority";
2
+
3
+ //#region src/react-ui/blocks/Terminal/TerminalDisplay.styles.ts
4
+ /**
5
+ * TerminalDisplay style definitions.
6
+ *
7
+ * @module components/devenv/terminal/TerminalDisplay.styles
8
+ */
9
+ /**
10
+ * Default style slots for TerminalDisplay regions.
11
+ */
12
+ const terminalDisplayStyles = {
13
+ root: "relative overflow-hidden",
14
+ chrome: "",
15
+ terminal: "w-full h-full pointer-events-none",
16
+ emptyState: "flex items-center justify-center text-sm text-muted-foreground/50 font-mono"
17
+ };
18
+ /**
19
+ * CVA variants for the display root.
20
+ */
21
+ const terminalDisplayVariants = cva(terminalDisplayStyles.root, {
22
+ variants: { variant: {
23
+ default: "",
24
+ compact: "",
25
+ error: ""
26
+ } },
27
+ defaultVariants: { variant: "default" }
28
+ });
29
+
30
+ //#endregion
31
+ export { terminalDisplayStyles, terminalDisplayVariants };
@@ -0,0 +1,56 @@
1
+ /**
2
+ * TerminalDisplay component types.
3
+ *
4
+ * Readonly GPU-rendered terminal for displaying ANSI-formatted text
5
+ * without PTY connection, using restty.
6
+ *
7
+ * @module components/devenv/terminal/TerminalDisplay.types
8
+ */
9
+ import type { SlotOverrides } from '../../../core/types';
10
+ import type { Restty } from 'restty';
11
+ import type { ITerminalTheme } from './Terminal.types';
12
+ /** Slot names for TerminalDisplay sub-regions */
13
+ export type TerminalDisplaySlot = 'root' | 'chrome' | 'terminal' | 'emptyState';
14
+ /**
15
+ * Props for TerminalDisplay component.
16
+ */
17
+ export interface ITerminalDisplayProps {
18
+ /** ANSI-formatted string content to display */
19
+ content: string;
20
+ /** Title shown in the chrome header */
21
+ title?: string;
22
+ /** Visual variant — 'error' uses red accent line */
23
+ variant?: 'default' | 'compact' | 'error';
24
+ /** Whether to show the glassmorphism chrome shell (default: true) */
25
+ chrome?: boolean;
26
+ /** Font size in CSS pixels (default: 13) */
27
+ fontSize?: number;
28
+ /** Minimum height in CSS pixels (default: 200) */
29
+ minHeight?: number;
30
+ /** Terminal theme in xterm.js format (auto-converted to Ghostty) */
31
+ theme?: ITerminalTheme;
32
+ /** Restty built-in theme name from the 458-theme catalog */
33
+ resttyThemeName?: string;
34
+ /** GPU renderer preference (default: 'auto') */
35
+ gpuRenderer?: 'auto' | 'webgpu' | 'webgl2';
36
+ /** Slot class overrides for each visual region */
37
+ slots?: SlotOverrides<TerminalDisplaySlot>;
38
+ /** Custom class name on root element */
39
+ className?: string;
40
+ /** Placeholder text when content is empty */
41
+ emptyText?: string;
42
+ /** Callback when restty instance is ready */
43
+ onReady?: (restty: Restty) => void;
44
+ }
45
+ /**
46
+ * Imperative handle for TerminalDisplay.
47
+ */
48
+ export interface ITerminalDisplayRef {
49
+ /** Get the underlying Restty instance */
50
+ getRestty: () => Restty | null;
51
+ /** Clear the terminal display */
52
+ clear: () => void;
53
+ /** Write additional ANSI content (appends) */
54
+ write: (data: string) => void;
55
+ }
56
+ //# sourceMappingURL=TerminalDisplay.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerminalDisplay.types.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/blocks/Terminal/TerminalDisplay.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,iDAAiD;AACjD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAEhB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oDAAoD;IACpD,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAE1C,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,cAAc,CAAC;IAEvB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAE3C,kDAAkD;IAClD,KAAK,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAE3C,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,SAAS,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAE/B,iCAAiC;IACjC,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,8CAA8C;IAC9C,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Terminal Chrome — lightweight barrel export.
3
+ *
4
+ * Exports only the glassmorphism shell components (no restty, no xterm).
5
+ * Use `@mks2508/mks-ui/react/blocks/Terminal/chrome` for zero terminal deps.
6
+ *
7
+ * @module @mks2508/mks-ui/react/blocks/Terminal/chrome
8
+ */
9
+ export { TerminalPanelChrome, NOISE_TEXTURE_SVG, terminalScrollStyles } from './panel/TerminalPanelChrome';
10
+ export { TerminalPanelHeader } from './panel/TerminalPanelHeader';
11
+ export { TerminalPanelFooter } from './panel/TerminalPanelFooter';
12
+ export { terminalChromeStyles, terminalChromeVariants, ACCENT_GRADIENTS, type TerminalChromeSlot, type TerminalChromeVariantProps, } from './panel/TerminalPanelChrome.styles';
13
+ export type { ITerminalPanelChromeProps } from './panel/TerminalPanelChrome.types';
14
+ //# sourceMappingURL=chrome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/blocks/Terminal/chrome.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,GAChC,MAAM,oCAAoC,CAAC;AAG5C,YAAY,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ACCENT_GRADIENTS, terminalChromeStyles, terminalChromeVariants } from "./panel/TerminalPanelChrome.styles.js";
2
+ import { TerminalPanelHeader } from "./panel/TerminalPanelHeader.js";
3
+ import { NOISE_TEXTURE_SVG, TerminalPanelChrome, terminalScrollStyles } from "./panel/TerminalPanelChrome.js";
4
+ import { TerminalPanelFooter } from "./panel/TerminalPanelFooter.js";
5
+
6
+ export { ACCENT_GRADIENTS, NOISE_TEXTURE_SVG, TerminalPanelChrome, TerminalPanelFooter, TerminalPanelHeader, terminalChromeStyles, terminalChromeVariants, terminalScrollStyles };
@@ -31,7 +31,7 @@ export interface ILevelBadgeProps {
31
31
  * // Renders: [INFO] with blue background
32
32
  * ```
33
33
  */
34
- export declare const LevelBadge: import("react").NamedExoticComponent<ILevelBadgeProps>;
34
+ export declare const LevelBadge: import("react").MemoExoticComponent<({ level, className }: ILevelBadgeProps) => React.JSX.Element>;
35
35
  /**
36
36
  * Props for TimestampBadge component.
37
37
  */
@@ -53,7 +53,7 @@ export interface ITimestampBadgeProps {
53
53
  * // Renders: 22:41:03 in gray
54
54
  * ```
55
55
  */
56
- export declare const TimestampBadge: import("react").NamedExoticComponent<ITimestampBadgeProps>;
56
+ export declare const TimestampBadge: import("react").MemoExoticComponent<({ timestamp, className }: ITimestampBadgeProps) => React.JSX.Element>;
57
57
  /**
58
58
  * Props for TagBadge component.
59
59
  */
@@ -75,7 +75,7 @@ export interface ITagBadgeProps {
75
75
  * // Renders: [WORKSPACEMAN...] in cyan
76
76
  * ```
77
77
  */
78
- export declare const TagBadge: import("react").NamedExoticComponent<ITagBadgeProps>;
78
+ export declare const TagBadge: import("react").MemoExoticComponent<({ tag, className }: ITagBadgeProps) => React.JSX.Element>;
79
79
  /**
80
80
  * Props for TagBadges component.
81
81
  */
@@ -96,7 +96,7 @@ export interface ITagBadgesProps {
96
96
  * // Renders: [API][ROUTES] with spacing
97
97
  * ```
98
98
  */
99
- export declare const TagBadges: import("react").NamedExoticComponent<ITagBadgesProps>;
99
+ export declare const TagBadges: import("react").MemoExoticComponent<({ tags, className }: ITagBadgesProps) => React.JSX.Element | null>;
100
100
  /**
101
101
  * Props for ContentTypeBadge component.
102
102
  */
@@ -126,7 +126,7 @@ export interface IContentTypeBadgeProps {
126
126
  * // Renders: [JSON] in emerald
127
127
  * ```
128
128
  */
129
- export declare const ContentTypeBadge: import("react").NamedExoticComponent<IContentTypeBadgeProps>;
129
+ export declare const ContentTypeBadge: import("react").MemoExoticComponent<({ contentType, httpMethod, className, }: IContentTypeBadgeProps) => React.JSX.Element | null>;
130
130
  /**
131
131
  * Props for LogLineContainer component.
132
132
  */
@@ -1 +1 @@
1
- {"version":3,"file":"LogLineBadges.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/components/LogLineBadges.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAkB1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,wDAYrB,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,4DAiBzB,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,sDAenB,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,uDAUpB,CAAC;AA4BH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,oCAAoC;IACpC,WAAW,EAAE,YAAY,CAAC;IAC1B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,gBAAgB,8DAsB3B,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,4BAA4B;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,UAAU,EACV,cAAsB,EACtB,SAAS,EACT,QAAQ,GACT,EAAE,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiB5C"}
1
+ {"version":3,"file":"LogLineBadges.d.ts","sourceRoot":"","sources":["../../../../../src/react-ui/blocks/Terminal/components/LogLineBadges.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAkB1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,6DAAkD,gBAAgB,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAY3G,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,iEAA0D,oBAAoB,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiB3H,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,2DAA8C,cAAc,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAenG,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,4DAAgD,eAAe,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAU9G,CAAC;AA4BH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,oCAAoC;IACpC,WAAW,EAAE,YAAY,CAAC;IAC1B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,gBAAgB,gFAI1B,sBAAsB,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAkBlD,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,4BAA4B;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,UAAU,EACV,cAAsB,EACtB,SAAS,EACT,QAAQ,GACT,EAAE,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiB5C"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Terminal Display — lightweight barrel export.
3
+ *
4
+ * Exports the readonly TerminalDisplay component + restty wrapper + chrome.
5
+ * Depends on restty only (not xterm, not shiki, not xterm addons).
6
+ * Use `@mks2508/mks-ui/react/blocks/Terminal/display` for minimal deps.
7
+ *
8
+ * @module @mks2508/mks-ui/react/blocks/Terminal/display
9
+ */
10
+ export { TerminalDisplay } from './TerminalDisplay';
11
+ export { terminalDisplayStyles, terminalDisplayVariants, type TerminalDisplayVariantProps, } from './TerminalDisplay.styles';
12
+ export type { ITerminalDisplayProps, ITerminalDisplayRef, TerminalDisplaySlot, } from './TerminalDisplay.types';
13
+ export { TerminalRestty } from './TerminalRestty';
14
+ export type { ITerminalResttyProps, ITerminalResttyRef } from './TerminalRestty';
15
+ export { TerminalPanelChrome, NOISE_TEXTURE_SVG, terminalScrollStyles } from './panel/TerminalPanelChrome';
16
+ export type { ITerminalPanelChromeProps } from './panel/TerminalPanelChrome.types';
17
+ export { terminalChromeStyles, terminalChromeVariants, ACCENT_GRADIENTS, type TerminalChromeSlot, } from './panel/TerminalPanelChrome.styles';
18
+ export { SYNTHWAVE_TERMINAL_THEME, getTerminalTheme } from './Terminal.theme';
19
+ export { hexToResttyColor, xtermThemeToGhostty, getSynthwaveGhosttyTheme, type IResttyThemeColor, type IResttyGhosttyTheme, } from './Terminal.theme.restty';
20
+ //# sourceMappingURL=display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/blocks/Terminal/display.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,2BAA2B,GACjC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGjF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC3G,YAAY,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,kBAAkB,GACxB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { SYNTHWAVE_TERMINAL_THEME, getTerminalTheme } from "./Terminal.theme.js";
2
+ import { ACCENT_GRADIENTS, terminalChromeStyles, terminalChromeVariants } from "./panel/TerminalPanelChrome.styles.js";
3
+ import { NOISE_TEXTURE_SVG, TerminalPanelChrome, terminalScrollStyles } from "./panel/TerminalPanelChrome.js";
4
+ import { getSynthwaveGhosttyTheme, hexToResttyColor, xtermThemeToGhostty } from "./Terminal.theme.restty.js";
5
+ import { TerminalRestty } from "./TerminalRestty.js";
6
+ import { terminalDisplayStyles, terminalDisplayVariants } from "./TerminalDisplay.styles.js";
7
+ import { TerminalDisplay } from "./TerminalDisplay.js";
8
+
9
+ export { ACCENT_GRADIENTS, NOISE_TEXTURE_SVG, SYNTHWAVE_TERMINAL_THEME, TerminalDisplay, TerminalPanelChrome, TerminalRestty, getSynthwaveGhosttyTheme, getTerminalTheme, hexToResttyColor, terminalChromeStyles, terminalChromeVariants, terminalDisplayStyles, terminalDisplayVariants, terminalScrollStyles, xtermThemeToGhostty };
@@ -36,4 +36,8 @@ export type { ITerminalThemeSelectorProps } from './panel/TerminalThemeSelector'
36
36
  export type { ITerminalLogsPanelProps, ITerminalLogsPanelRef, ITerminalPanelHeaderProps, ITerminalPanelToolbarProps, ITerminalPanelFooterProps, ILevelFilterButton, TTerminalAction, } from './panel/TerminalLogsPanel.types';
37
37
  export type { ILogLinesViewerProps } from './panel/LogLinesViewer';
38
38
  export type { TLogLevelFilter } from './parsing/LogParser.types';
39
+ export { TerminalDisplay } from './TerminalDisplay';
40
+ export type { ITerminalDisplayProps, ITerminalDisplayRef, TerminalDisplaySlot } from './TerminalDisplay.types';
41
+ export { terminalDisplayStyles, terminalDisplayVariants, type TerminalDisplayVariantProps } from './TerminalDisplay.styles';
42
+ export { terminalChromeStyles, terminalChromeVariants, ACCENT_GRADIENTS, type TerminalChromeSlot, type TerminalChromeVariantProps } from './panel/TerminalPanelChrome.styles';
39
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/blocks/Terminal/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG1E,cAAc,WAAW,CAAC;AAG1B,cAAc,cAAc,CAAC;AAG7B,OAAO,EACL,oBAAoB,EACpB,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,GAChC,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtG,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAG9E,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,qBAAqB,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG3F,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,4BAA4B,EAC5B,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AACnF,YAAY,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAC3H,YAAY,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACjF,YAAY,EACV,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react-ui/blocks/Terminal/index.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ import "./components/index.js";
20
20
  import { useTerminalWebSocket } from "./hooks/useTerminalWebSocket.js";
21
21
  import { useTerminalSettings } from "./hooks/useTerminalSettings.js";
22
22
  import "./hooks/index.js";
23
+ import { ACCENT_GRADIENTS, terminalChromeStyles, terminalChromeVariants } from "./panel/TerminalPanelChrome.styles.js";
23
24
  import { TerminalPanelHeader } from "./panel/TerminalPanelHeader.js";
24
25
  import { NOISE_TEXTURE_SVG, TerminalPanelChrome, terminalScrollStyles } from "./panel/TerminalPanelChrome.js";
25
26
  import { TerminalPanelFooter } from "./panel/TerminalPanelFooter.js";
@@ -34,5 +35,7 @@ import { TerminalInteractivePanelRestty } from "./panel/TerminalInteractivePanel
34
35
  import { ResttyAdapter } from "./ResttyAdapter.js";
35
36
  import { createTerminalAdapter, createTerminalAdapterForRenderer } from "./Terminal.adapter.js";
36
37
  import { XTermAdapter } from "./XTermAdapter.js";
38
+ import { terminalDisplayStyles, terminalDisplayVariants } from "./TerminalDisplay.styles.js";
39
+ import { TerminalDisplay } from "./TerminalDisplay.js";
37
40
 
38
- export { ANSI_COLOR_MAP, ANSI_INTRODUCERS, ANSI_MODIFIERS, ANSI_PATTERNS, AnsiColorMapper, AnsiParser, BadgeFormatter, ContentTypeBadge, HighlightedJson, HttpLogParser, LOG_LEVEL_ANSI_COLORS, LevelBadge, LogLevelDetector, LogLineContainer, LogLinesViewer, LogParserService, MultilineAggregator, NOISE_TEXTURE_SVG, PersistentLogBuffer, ResttyAdapter, SGR_CODES, SYNTHWAVE_ANSI_COLORS, SYNTHWAVE_TERMINAL_THEME, SpecializedSyntaxHighlighter, SyntaxHighlightedText, SyntaxHighlighter, TABLE_CHARS, TableParser, TagBadge, TagBadges, TerminalInteractivePanel, TerminalInteractivePanelRestty, TerminalLogBadge, TerminalLogsPanel, TerminalPanel, TerminalPanelChrome, TerminalPanelFooter, TerminalPanelHeader, TerminalRestty, TerminalSettingsPopover, TerminalThemeSelector, TimestampBadge, XTermAdapter, XTermWrapper, clearHighlightCache, createPersistentLogBuffer, createTableParser, createTerminalAdapter, createTerminalAdapterForRenderer, getSynthwaveGhosttyTheme, getTerminalTheme, hexToResttyColor, terminalScrollStyles, useTerminalSearch, useTerminalSettings, useTerminalWebSocket, xtermThemeToGhostty };
41
+ export { ACCENT_GRADIENTS, ANSI_COLOR_MAP, ANSI_INTRODUCERS, ANSI_MODIFIERS, ANSI_PATTERNS, AnsiColorMapper, AnsiParser, BadgeFormatter, ContentTypeBadge, HighlightedJson, HttpLogParser, LOG_LEVEL_ANSI_COLORS, LevelBadge, LogLevelDetector, LogLineContainer, LogLinesViewer, LogParserService, MultilineAggregator, NOISE_TEXTURE_SVG, PersistentLogBuffer, ResttyAdapter, SGR_CODES, SYNTHWAVE_ANSI_COLORS, SYNTHWAVE_TERMINAL_THEME, SpecializedSyntaxHighlighter, SyntaxHighlightedText, SyntaxHighlighter, TABLE_CHARS, TableParser, TagBadge, TagBadges, TerminalDisplay, TerminalInteractivePanel, TerminalInteractivePanelRestty, TerminalLogBadge, TerminalLogsPanel, TerminalPanel, TerminalPanelChrome, TerminalPanelFooter, TerminalPanelHeader, TerminalRestty, TerminalSettingsPopover, TerminalThemeSelector, TimestampBadge, XTermAdapter, XTermWrapper, clearHighlightCache, createPersistentLogBuffer, createTableParser, createTerminalAdapter, createTerminalAdapterForRenderer, getSynthwaveGhosttyTheme, getTerminalTheme, hexToResttyColor, terminalChromeStyles, terminalChromeVariants, terminalDisplayStyles, terminalDisplayVariants, terminalScrollStyles, useTerminalSearch, useTerminalSettings, useTerminalWebSocket, xtermThemeToGhostty };