@virentia/inspector 0.1.2

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.
@@ -0,0 +1,354 @@
1
+ @import "@mantine/core/styles.css";
2
+ @import "@xyflow/react/dist/style.css";
3
+
4
+ :root {
5
+ color-scheme: dark;
6
+ font-family:
7
+ Inter,
8
+ ui-sans-serif,
9
+ system-ui,
10
+ -apple-system,
11
+ BlinkMacSystemFont,
12
+ "Segoe UI",
13
+ sans-serif;
14
+ background: var(--mantine-color-dark-9);
15
+ }
16
+
17
+ * {
18
+ box-sizing: border-box;
19
+ }
20
+
21
+ body {
22
+ margin: 0;
23
+ min-width: 320px;
24
+ background: var(--mantine-color-dark-9);
25
+ }
26
+
27
+ #root {
28
+ min-height: 100vh;
29
+ }
30
+
31
+ .virentia-inspector {
32
+ --virentia-accent: var(--mantine-color-green-5);
33
+ --virentia-accent-soft: rgba(64, 192, 87, 0.22);
34
+
35
+ min-height: 100vh;
36
+ background: var(--mantine-color-dark-9);
37
+ color: var(--mantine-color-dark-0);
38
+ }
39
+
40
+ .virentia-inspector__shell {
41
+ display: grid;
42
+ grid-template-columns:
43
+ minmax(0, 1fr)
44
+ minmax(210px, var(--virentia-right-panel-width, 300px));
45
+ min-height: 100vh;
46
+ }
47
+
48
+ .virentia-inspector__drawer {
49
+ position: relative;
50
+ min-width: 0;
51
+ border-left: 1px solid var(--mantine-color-dark-5);
52
+ background: var(--mantine-color-dark-8);
53
+ }
54
+
55
+ .virentia-inspector__resize-handle {
56
+ position: absolute;
57
+ top: 0;
58
+ bottom: 0;
59
+ z-index: 10;
60
+ width: 8px;
61
+ min-width: 0;
62
+ padding: 0;
63
+ border: 0;
64
+ border-radius: 0;
65
+ background: transparent;
66
+ cursor: ew-resize;
67
+ }
68
+
69
+ .virentia-inspector__resize-handle--right {
70
+ left: -4px;
71
+ }
72
+
73
+ .virentia-inspector__resize-handle::after {
74
+ position: absolute;
75
+ top: 10px;
76
+ bottom: 10px;
77
+ left: 3px;
78
+ width: 1px;
79
+ background: transparent;
80
+ content: "";
81
+ transition: background-color 120ms ease;
82
+ }
83
+
84
+ .virentia-inspector__resize-handle:hover::after,
85
+ .virentia-inspector__resize-handle:active::after {
86
+ background: var(--mantine-color-dark-3);
87
+ }
88
+
89
+ .virentia-inspector__main {
90
+ min-width: 0;
91
+ display: flex;
92
+ flex-direction: column;
93
+ }
94
+
95
+ .virentia-inspector__topbar {
96
+ min-height: 44px;
97
+ border-bottom: 1px solid var(--mantine-color-dark-5);
98
+ background: var(--mantine-color-dark-8);
99
+ display: flex;
100
+ align-items: center;
101
+ justify-content: space-between;
102
+ gap: 10px;
103
+ padding: 0 12px;
104
+ }
105
+
106
+ .virentia-inspector__flow {
107
+ flex: 1;
108
+ min-height: 0;
109
+ }
110
+
111
+ .virentia-inspector__flow .react-flow__node {
112
+ min-width: 0;
113
+ padding: 0;
114
+ border: 0;
115
+ background: transparent;
116
+ color: var(--mantine-color-dark-0);
117
+ font-size: 12px;
118
+ box-shadow: none;
119
+ }
120
+
121
+ .virentia-inspector__flow-node {
122
+ position: relative;
123
+ width: 150px;
124
+ border: 1px solid var(--mantine-color-dark-5);
125
+ border-radius: 6px;
126
+ background: var(--mantine-color-dark-7);
127
+ box-shadow: 0 8px 18px rgba(0, 0, 0, 0.22);
128
+ color: var(--mantine-color-dark-0);
129
+ padding: 7px 9px;
130
+ }
131
+
132
+ .virentia-inspector__flow .react-flow__node.selected .virentia-inspector__flow-node {
133
+ border-color: var(--virentia-accent);
134
+ box-shadow: 0 0 0 2px var(--virentia-accent-soft);
135
+ }
136
+
137
+ .virentia-inspector__flow .react-flow__node.is-dimmed .virentia-inspector__flow-node {
138
+ opacity: 0.28;
139
+ filter: grayscale(1);
140
+ }
141
+
142
+ .virentia-inspector__flow .react-flow__node.is-breakpoint .virentia-inspector__flow-node {
143
+ border-color: var(--mantine-color-red-5);
144
+ box-shadow: 0 0 0 2px rgba(250, 82, 82, 0.22);
145
+ }
146
+
147
+ .virentia-inspector__handle {
148
+ width: 8px;
149
+ height: 8px;
150
+ border: 1px solid var(--mantine-color-dark-1);
151
+ background: var(--mantine-color-dark-4);
152
+ }
153
+
154
+ .virentia-inspector__flow .react-flow__node.selected .virentia-inspector__handle {
155
+ border-color: var(--mantine-color-green-2);
156
+ background: var(--virentia-accent);
157
+ }
158
+
159
+ .virentia-inspector__node-label {
160
+ display: flex;
161
+ flex-direction: column;
162
+ gap: 2px;
163
+ }
164
+
165
+ .virentia-inspector__node-name {
166
+ font-weight: 650;
167
+ line-height: 1.2;
168
+ overflow-wrap: anywhere;
169
+ }
170
+
171
+ .virentia-inspector__node-type {
172
+ color: var(--mantine-color-dark-2);
173
+ font-size: 11px;
174
+ }
175
+
176
+ .virentia-inspector__timeline-row {
177
+ border-bottom: 1px solid var(--mantine-color-dark-6);
178
+ padding: 7px 0;
179
+ }
180
+
181
+ .virentia-inspector__payload {
182
+ color: var(--mantine-color-dark-1);
183
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
184
+ font-size: 11px;
185
+ line-height: 1.4;
186
+ overflow-wrap: anywhere;
187
+ }
188
+
189
+ .virentia-inspector__context-menu {
190
+ position: fixed;
191
+ z-index: 80;
192
+ min-width: 148px;
193
+ overflow: hidden;
194
+ border-radius: 6px;
195
+ background: var(--mantine-color-dark-8);
196
+ }
197
+
198
+ .virentia-inspector__context-menu-item {
199
+ display: flex;
200
+ align-items: center;
201
+ gap: 7px;
202
+ width: 100%;
203
+ border: 0;
204
+ background: transparent;
205
+ color: var(--mantine-color-dark-0);
206
+ cursor: pointer;
207
+ font: inherit;
208
+ font-size: 12px;
209
+ line-height: 1.2;
210
+ padding: 6px 8px;
211
+ text-align: left;
212
+ }
213
+
214
+ .virentia-inspector__context-menu-item::before {
215
+ flex: 0 0 auto;
216
+ width: 6px;
217
+ height: 6px;
218
+ border-radius: 999px;
219
+ background: var(--virentia-accent);
220
+ content: "";
221
+ }
222
+
223
+ .virentia-inspector__context-menu-item:hover {
224
+ background: var(--mantine-color-dark-7);
225
+ }
226
+
227
+ .virentia-inspector__modal-content {
228
+ background: var(--mantine-color-dark-8);
229
+ }
230
+
231
+ .virentia-inspector__modal-header {
232
+ min-height: 0;
233
+ padding: 12px 14px 8px;
234
+ }
235
+
236
+ .virentia-inspector__modal-title {
237
+ font-size: 15px;
238
+ font-weight: 750;
239
+ line-height: 1.25;
240
+ }
241
+
242
+ .virentia-inspector__modal-body {
243
+ padding: 0 14px 14px;
244
+ font-size: 12px;
245
+ }
246
+
247
+ .virentia-inspector__modal-body .mantine-Input-label {
248
+ margin-bottom: 4px;
249
+ font-size: 11px;
250
+ font-weight: 650;
251
+ }
252
+
253
+ .virentia-inspector__modal-body .mantine-Textarea-input {
254
+ font-size: 11px;
255
+ line-height: 1.4;
256
+ }
257
+
258
+ .virentia-inspector__modal-section {
259
+ border-color: var(--mantine-color-dark-5);
260
+ border-radius: 6px;
261
+ background: var(--mantine-color-dark-7);
262
+ padding: 9px 10px;
263
+ }
264
+
265
+ .virentia-inspector__bottom-toolbar {
266
+ position: fixed;
267
+ right: 24px;
268
+ bottom: 20px;
269
+ left: 24px;
270
+ z-index: 70;
271
+ display: flex;
272
+ align-items: center;
273
+ justify-content: space-between;
274
+ gap: 16px;
275
+ border: 1px solid var(--mantine-color-dark-5);
276
+ border-radius: 6px;
277
+ background: rgba(31, 31, 31, 0.96);
278
+ box-shadow: 0 14px 28px rgba(0, 0, 0, 0.34);
279
+ padding: 10px 12px;
280
+ }
281
+
282
+ .virentia-inspector .react-flow {
283
+ background: var(--mantine-color-dark-9);
284
+ }
285
+
286
+ .virentia-inspector .react-flow__background {
287
+ background-color: var(--mantine-color-dark-9);
288
+ }
289
+
290
+ .virentia-inspector .react-flow__controls {
291
+ box-shadow: 0 8px 18px rgba(0, 0, 0, 0.28);
292
+ }
293
+
294
+ .virentia-inspector .react-flow__controls-button {
295
+ border-bottom-color: var(--mantine-color-dark-5);
296
+ background: var(--mantine-color-dark-8);
297
+ color: var(--mantine-color-dark-1);
298
+ }
299
+
300
+ .virentia-inspector .react-flow__controls-button:hover {
301
+ background: var(--mantine-color-dark-7);
302
+ }
303
+
304
+ .virentia-inspector .react-flow__controls-button svg {
305
+ fill: var(--mantine-color-dark-1);
306
+ }
307
+
308
+ .virentia-inspector .react-flow__minimap {
309
+ border: 1px solid var(--mantine-color-dark-5);
310
+ border-radius: 6px;
311
+ background: var(--mantine-color-dark-8);
312
+ }
313
+
314
+ .virentia-inspector .react-flow__attribution {
315
+ display: none;
316
+ }
317
+
318
+ @media (max-width: 980px) {
319
+ .virentia-inspector__shell {
320
+ grid-template-columns: minmax(0, 1fr);
321
+ }
322
+
323
+ .virentia-inspector__drawer {
324
+ border-left: 0;
325
+ border-top: 1px solid var(--mantine-color-dark-5);
326
+ }
327
+
328
+ .virentia-inspector__resize-handle {
329
+ display: none;
330
+ }
331
+ }
332
+
333
+ @media (max-width: 760px) {
334
+ .virentia-inspector__shell {
335
+ grid-template-columns: 1fr;
336
+ }
337
+
338
+ .virentia-inspector__drawer {
339
+ border: 0;
340
+ border-bottom: 1px solid var(--mantine-color-dark-5);
341
+ }
342
+
343
+ .virentia-inspector__main {
344
+ min-height: 65vh;
345
+ }
346
+
347
+ .virentia-inspector__bottom-toolbar {
348
+ right: 10px;
349
+ bottom: 10px;
350
+ left: 10px;
351
+ align-items: flex-start;
352
+ flex-direction: column;
353
+ }
354
+ }
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@virentia/inspector",
3
+ "version": "0.1.2",
4
+ "description": "Virentia devtools inspector UI",
5
+ "keywords": [],
6
+ "homepage": "https://movpushmov.dev/virentia/inspector/",
7
+ "bugs": {
8
+ "url": "https://github.com/movpushmov/virentia/issues"
9
+ },
10
+ "license": "MIT",
11
+ "author": "movpushmov",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/movpushmov/virentia.git",
15
+ "directory": "packages/inspector"
16
+ },
17
+ "bin": {
18
+ "virentia-inspector": "./bin/virentia-inspector.mjs"
19
+ },
20
+ "files": [
21
+ "bin",
22
+ "dist"
23
+ ],
24
+ "type": "module",
25
+ "main": "./dist/index.cjs",
26
+ "module": "./dist/index.mjs",
27
+ "types": "./dist/index.d.mts",
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.mts",
31
+ "import": "./dist/index.mjs",
32
+ "require": "./dist/index.cjs"
33
+ },
34
+ "./styles.css": "./dist/styles.css"
35
+ },
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
39
+ "dependencies": {
40
+ "@mantine/core": "^9.1.1",
41
+ "@mantine/hooks": "^9.1.1",
42
+ "@xyflow/react": "^12.10.2",
43
+ "@virentia/core": "0.2.0",
44
+ "@virentia/react": "0.2.0"
45
+ },
46
+ "devDependencies": {
47
+ "@types/node": "^25.6.1",
48
+ "@types/react": "^19.2.14",
49
+ "@types/react-dom": "^19.2.3",
50
+ "react": "^19.2.1",
51
+ "react-dom": "^19.2.1",
52
+ "vite": "^8.0.12"
53
+ },
54
+ "peerDependencies": {
55
+ "react": ">=18",
56
+ "react-dom": ">=18"
57
+ },
58
+ "scripts": {
59
+ "build": "tsdown && cp lib/client/shared/ui/public/styles.css dist/styles.css && vite build",
60
+ "dev": "vite",
61
+ "preview": "vite preview"
62
+ }
63
+ }