@rozenite/vite-plugin 1.13.0 → 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 (56) hide show
  1. package/README.md +12 -0
  2. package/dist/bundle-dts.d.ts.map +1 -1
  3. package/dist/client-plugin.d.ts.map +1 -1
  4. package/dist/dev-config-module.d.ts.map +1 -1
  5. package/dist/dev-host/assets/index-DU3zXL2c.css +1 -0
  6. package/dist/dev-host/assets/index-Xsb6uYhI.js +13 -0
  7. package/dist/dev-host/index.html +3 -3
  8. package/dist/dev-host/manifest.json +2 -2
  9. package/dist/index.cjs +24 -8
  10. package/dist/index.d.ts +9 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +24 -8
  13. package/dist/react-native-plugin.d.ts.map +1 -1
  14. package/dist/sdk-plugin.d.ts.map +1 -1
  15. package/dist/server-plugin.d.ts.map +1 -1
  16. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  17. package/package.json +9 -10
  18. package/src/bundle-dts.ts +7 -6
  19. package/src/client-plugin.ts +8 -6
  20. package/src/dev-config-module.ts +4 -1
  21. package/src/dev-host/App.tsx +219 -413
  22. package/src/dev-host/components/DispatchForm.tsx +108 -122
  23. package/src/dev-host/components/FlowList.tsx +81 -101
  24. package/src/dev-host/components/MessageDetailsPane.tsx +56 -83
  25. package/src/dev-host/components/MessageLogPane.tsx +84 -66
  26. package/src/dev-host/components/PanelTabs.tsx +29 -10
  27. package/src/dev-host/config.ts +6 -2
  28. package/src/dev-host/constants.ts +0 -19
  29. package/src/dev-host/flow-runtime.ts +33 -12
  30. package/src/dev-host/index.html +1 -1
  31. package/src/dev-host/main.tsx +1 -10
  32. package/src/dev-host/server.ts +9 -3
  33. package/src/dev-host/styles.css +162 -830
  34. package/src/dev-host/types.ts +5 -10
  35. package/src/dev-host/utils.ts +9 -6
  36. package/src/dev-host/vite.config.mts +2 -0
  37. package/src/index.ts +15 -5
  38. package/src/load-config.ts +4 -4
  39. package/src/package-json.ts +1 -1
  40. package/src/react-native-plugin.ts +3 -0
  41. package/src/sdk-plugin.ts +3 -0
  42. package/src/server-plugin.ts +3 -0
  43. package/src/utils.ts +1 -1
  44. package/dist/dev-host/assets/index-CkxvBMpp.css +0 -1
  45. package/dist/dev-host/assets/index-cNKHRwej.js +0 -11
  46. package/src/dev-host/components/MessagePayloadDetail.tsx +0 -32
  47. package/src/dev-host/components/ResizeHandle.tsx +0 -33
  48. package/src/dev-host/components/icons.tsx +0 -79
  49. package/src/dev-host/components/ui/Button.tsx +0 -91
  50. package/src/dev-host/components/ui/DropdownMenu.tsx +0 -84
  51. package/src/dev-host/components/ui/IconButton.tsx +0 -41
  52. package/src/dev-host/components/ui/Input.tsx +0 -73
  53. package/src/dev-host/components/ui/ScrollArea.tsx +0 -20
  54. package/src/dev-host/components/ui/Tabs.tsx +0 -166
  55. package/src/dev-host/components/ui/Textarea.tsx +0 -79
  56. package/src/dev-host/components/ui/ToggleGroup.tsx +0 -120
@@ -1,969 +1,301 @@
1
- :root {
2
- color-scheme: dark;
3
- font-family: "Switzer Variable", Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
4
- background: #000000;
5
- color: #ffffff;
6
- }
7
-
8
- * {
9
- box-sizing: border-box;
10
- }
11
-
12
- html,
13
- body,
14
- #root {
15
- height: 100%;
16
- margin: 0;
17
- }
18
-
19
- body {
20
- overflow: hidden;
21
- background: #000000;
22
- }
1
+ @import '@rozenite/ui/styles.css';
2
+
3
+ /*
4
+ * The dev host is built from the vite-plugin package, while the shared
5
+ * stylesheet is owned by @rozenite/ui. Include its source explicitly so
6
+ * Tailwind emits the utilities used inside shared components (PluginShell,
7
+ * PluginHeader, and Split) as well as the ones used by the host itself.
8
+ */
9
+ @source '../../../ui/src';
10
+
11
+ @layer base {
12
+ html,
13
+ body,
14
+ #root {
15
+ height: 100%;
16
+ margin: 0;
17
+ }
23
18
 
24
- button,
25
- input,
26
- textarea,
27
- select {
28
- font: inherit;
19
+ body {
20
+ overflow: hidden;
21
+ }
29
22
  }
30
23
 
31
- .rz-shell {
32
- display: flex;
24
+ .dev-host {
33
25
  height: 100dvh;
34
- flex-direction: column;
35
26
  overflow: hidden;
36
- background: #000000;
37
27
  }
38
28
 
39
- .rz-topbar {
40
- display: flex;
41
- align-items: center;
42
- justify-content: space-between;
43
- gap: 16px;
44
- min-height: 52px;
45
- padding: 10px 14px;
46
- border-bottom: 1px solid rgba(255, 255, 255, 0.08);
47
- overflow: hidden;
48
- background: #0a0a0a;
49
- }
50
-
51
- .rz-topbar-brand {
52
- display: inline-flex;
53
- align-items: center;
54
- flex: 0 0 auto;
29
+ .dev-host-body {
30
+ min-height: 0;
31
+ overflow: hidden !important;
55
32
  }
56
33
 
57
- .rz-topbar-brand svg {
58
- display: block;
59
- width: auto;
60
- height: 20px;
34
+ .dev-host-header {
35
+ min-height: 3.25rem;
61
36
  }
62
37
 
63
- .rz-topbar-panel-picker {
38
+ .dev-host-header-title {
64
39
  display: flex;
65
- align-items: center;
66
40
  min-width: 0;
67
- justify-content: flex-end;
68
- }
69
-
70
- .rz-workspace {
71
- flex: 1;
72
- min-height: 0;
73
- display: grid;
74
- grid-template-rows: minmax(0, 1fr) 12px minmax(180px, var(--rz-devtools-height, 288px));
75
- overflow: hidden;
41
+ flex-direction: column;
42
+ gap: 0.125rem;
76
43
  }
77
44
 
78
- .rz-card {
79
- min-height: 0;
45
+ .dev-host-header-subtitle {
46
+ max-width: 30rem;
80
47
  overflow: hidden;
81
- border-top: 1px solid rgba(255, 255, 255, 0.08);
82
- }
83
-
84
- .rz-card:first-child {
85
- border-top: 0;
86
- }
87
-
88
- .rz-iframe {
89
- display: block;
90
- width: 100%;
91
- height: 100%;
92
- border: 0;
93
- background: #ffffff;
48
+ text-overflow: ellipsis;
49
+ white-space: nowrap;
94
50
  }
95
51
 
96
- .rz-iframe[data-resizing='true'] {
97
- pointer-events: none;
52
+ .dev-host-panel-select {
53
+ width: min(16rem, 32vw);
98
54
  }
99
55
 
100
- .rz-devtools {
101
- display: grid;
56
+ .dev-host-main-split {
102
57
  min-height: 0;
103
- grid-template-columns: minmax(0, 1fr) var(--rz-command-splitter-width, 6px) minmax(260px, var(--rz-command-width, 320px));
58
+ flex: 1;
104
59
  }
105
60
 
106
- .rz-devtools-mobile {
107
- display: flex;
108
- min-height: 0;
61
+ .dev-host-preview {
109
62
  height: 100%;
110
- width: 100%;
111
- overflow: hidden;
112
- }
113
-
114
- .rz-log-workspace {
115
- display: grid;
116
- min-height: 0;
117
- position: relative;
118
- grid-template-columns: minmax(0, 1fr) var(--rz-details-splitter-width, 0px) var(--rz-details-width, 0px);
119
- }
120
-
121
- .rz-resize-handle {
122
- position: relative;
123
- cursor: row-resize;
124
- background: #0a0a0a;
125
- user-select: none;
126
- touch-action: none;
127
- }
128
-
129
- .rz-resize-handle::before {
130
- content: '';
131
- position: absolute;
132
- top: 50%;
133
- left: 50%;
134
- width: 72px;
135
- height: 2px;
136
- border-radius: 999px;
137
- background: rgba(255, 255, 255, 0.2);
138
- transform: translate(-50%, -50%);
139
- }
140
-
141
- .rz-resize-handle::after {
142
- content: '';
143
- position: absolute;
144
- inset: 0;
145
- border-top: 1px solid rgba(255, 255, 255, 0.08);
146
- border-bottom: 1px solid rgba(255, 255, 255, 0.08);
147
- }
148
-
149
- .rz-resize-handle[data-dragging='true']::before,
150
- .rz-resize-handle:hover::before {
151
- background: #ffffff;
152
- }
153
-
154
- .rz-column-resize-handle {
155
63
  position: relative;
156
- width: 6px;
157
- min-width: 6px;
158
- cursor: col-resize;
159
- background: #0a0a0a;
160
- user-select: none;
161
- touch-action: none;
162
- }
163
-
164
- .rz-column-resize-handle::before {
165
- content: '';
166
- position: absolute;
167
- top: 50%;
168
- left: 50%;
169
- width: 2px;
170
- height: 72px;
171
- border-radius: 999px;
172
- background: rgba(255, 255, 255, 0.2);
173
- transform: translate(-50%, -50%);
174
- }
175
-
176
- .rz-column-resize-handle::after {
177
- content: '';
178
- position: absolute;
179
- inset: 0;
180
- border-left: 1px solid rgba(255, 255, 255, 0.08);
181
- border-right: 1px solid rgba(255, 255, 255, 0.08);
182
- }
183
-
184
- .rz-column-resize-handle[data-dragging='true']::before,
185
- .rz-column-resize-handle:hover::before {
186
- background: #ffffff;
187
- }
188
-
189
- .rz-column-resize-handle[data-dragging='true']::after,
190
- .rz-column-resize-handle:hover::after {
191
- border-left-color: rgba(255, 255, 255, 0.08);
192
- border-right-color: rgba(255, 255, 255, 0.08);
193
- }
194
-
195
- .rz-pane {
196
- display: flex;
197
- flex-direction: column;
198
64
  min-height: 0;
199
65
  overflow: hidden;
66
+ background: var(--background);
200
67
  }
201
68
 
202
- .rz-pane + .rz-pane {
203
- border-left: 1px solid rgba(255, 255, 255, 0.08);
204
- }
205
-
206
- .rz-pane[data-hidden='true'],
207
- .rz-column-resize-handle[data-hidden='true'] {
208
- display: none;
209
- }
210
-
211
- .rz-devtools-mobile-tabs {
212
- display: grid;
213
- grid-template-rows: auto minmax(0, 1fr);
214
- gap: 8px;
215
- min-height: 0;
69
+ .dev-host-iframe {
70
+ display: block;
216
71
  height: 100%;
217
72
  width: 100%;
218
- padding-top: 8px;
219
- }
220
-
221
- .rz-devtools-mobile-toggle {
222
- display: flex;
223
- align-items: flex-start;
224
- padding: 0 8px;
225
- }
226
-
227
- .rz-devtools-mobile-panel {
228
- display: flex;
229
- min-height: 0;
230
- width: 100%;
231
- overflow: hidden;
232
- }
233
-
234
- .rz-devtools-mobile-panel > .rz-pane {
235
- flex: 1;
236
- width: 100%;
237
- }
238
-
239
- .rz-tabs-root {
240
- width: 100%;
241
- min-width: 0;
242
- }
243
-
244
- .rz-tabs-list {
245
- display: inline-flex;
246
- min-height: 26px;
247
- max-width: 100%;
248
- align-items: center;
249
- gap: 2px;
250
- overflow: auto hidden;
251
- border: 1px solid rgba(255, 255, 255, 0.08);
252
- border-radius: 4px;
253
- background: rgba(255, 255, 255, 0.04);
254
- padding: 2px;
255
- scrollbar-width: none;
256
- }
257
-
258
- .rz-tabs-list::-webkit-scrollbar {
259
- display: none;
260
- }
261
-
262
- .rz-tabs-trigger {
263
- display: inline-flex;
264
- align-items: center;
265
- justify-content: center;
266
- white-space: nowrap;
267
73
  border: 0;
268
- border-radius: 2px;
269
- background: transparent;
270
- min-height: 22px;
271
- padding: 3px 9px;
272
- color: rgba(255, 255, 255, 0.6);
273
- font-size: 12px;
274
- font-weight: 500;
275
- line-height: 1.2;
276
- letter-spacing: 0;
277
- transition: background-color 120ms ease, color 120ms ease;
278
- }
279
-
280
- .rz-tabs-trigger:hover {
281
- color: #ffffff;
74
+ background: var(--background);
282
75
  }
283
76
 
284
- .rz-tabs-trigger[data-state='active'] {
285
- background: #ffffff;
286
- color: #000000;
287
- }
288
-
289
- .rz-tabs-trigger:focus-visible,
290
- .rz-input:focus-visible,
291
- .rz-textarea:focus-visible,
292
- .rz-sidebar-close:focus-visible {
293
- outline: 2px solid rgba(130, 50, 255, 0.95);
294
- outline-offset: -2px;
295
- }
296
-
297
- .rz-scroll-area {
298
- position: relative;
77
+ .dev-host-devtools {
299
78
  height: 100%;
300
- width: 100%;
301
- overflow: hidden;
302
- }
303
-
304
- .rz-scroll-viewport {
305
- height: 100%;
306
- width: 100%;
307
- overflow-y: auto;
308
- overflow-x: hidden;
309
- scrollbar-width: thin;
310
- scrollbar-color: rgba(255, 255, 255, 0.18) transparent;
311
- }
312
-
313
- .rz-scroll-viewport::-webkit-scrollbar {
314
- width: 12px;
315
- }
316
-
317
- .rz-scroll-viewport::-webkit-scrollbar-track {
318
- background: transparent;
319
- }
320
-
321
- .rz-scroll-viewport::-webkit-scrollbar-thumb {
322
- border: 3px solid transparent;
323
- border-radius: 999px;
324
- background: rgba(255, 255, 255, 0.18);
325
- background-clip: padding-box;
326
- }
327
-
328
- .rz-message-list {
329
- min-width: 100%;
330
- font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
331
- }
332
-
333
- .rz-log-pane {
334
- display: grid;
335
- grid-template-rows: auto minmax(0, 1fr);
336
79
  min-height: 0;
337
- background: #050505;
338
- }
339
-
340
- .rz-message-list-header,
341
- .rz-message-row {
342
- display: grid;
343
- grid-template-columns: 40px 168px minmax(120px, 180px) minmax(0, 1fr);
344
- gap: 0;
345
- align-items: center;
346
- }
347
-
348
- .rz-message-list-header {
349
- position: sticky;
350
- top: 0;
351
- z-index: 1;
352
- background: #0a0a0a;
353
- color: rgba(255, 255, 255, 0.4);
354
- font-size: 11px;
355
- line-height: 16px;
356
- letter-spacing: 0.06em;
357
- text-transform: uppercase;
358
- border-bottom: 1px solid rgba(255, 255, 255, 0.08);
359
- }
360
-
361
- .rz-message-header-cell,
362
- .rz-message-cell {
363
- min-width: 0;
364
- padding: 8px 12px;
365
- }
366
-
367
- .rz-message-header-cell:first-child,
368
- .rz-message-cell:first-child {
369
- text-align: center;
370
- }
371
-
372
- .rz-message-header-cell + .rz-message-header-cell,
373
- .rz-message-cell + .rz-message-cell {
374
- border-left: 1px solid rgba(255, 255, 255, 0.04);
375
- }
376
-
377
- .rz-message-row {
378
- width: 100%;
379
- border: 0;
380
- background: transparent;
381
- color: inherit;
382
- text-align: left;
383
- padding: 0;
384
- border-bottom: 1px solid rgba(255, 255, 255, 0.06);
385
- cursor: pointer;
386
- transition: background-color 120ms ease, box-shadow 120ms ease;
387
- }
388
-
389
- .rz-message-row:last-child {
390
- border-bottom: 0;
391
- }
392
-
393
- .rz-message-row:hover {
394
- background: rgba(255, 255, 255, 0.035);
395
- }
396
-
397
- .rz-message-row[data-selected='true'] {
398
- background: rgba(59, 130, 246, 0.14);
399
- box-shadow: inset 2px 0 0 #4da3ff;
400
- }
401
-
402
- .rz-message-direction {
403
- display: flex;
404
- align-items: center;
405
- justify-content: center;
406
- color: rgba(255, 255, 255, 0.7);
407
- font-size: 12px;
408
- line-height: 18px;
409
- }
410
-
411
- .rz-message-arrow {
412
- display: inline-flex;
413
- width: 16px;
414
- justify-content: center;
415
- font-size: 14px;
416
- font-weight: 700;
417
- }
418
-
419
- .rz-message-dir-in .rz-message-arrow {
420
- color: #22c55e;
421
- }
422
-
423
- .rz-message-dir-out .rz-message-arrow {
424
- color: #f59e0b;
425
- }
426
-
427
- .rz-message-type {
428
- overflow: hidden;
429
- text-overflow: ellipsis;
430
- white-space: nowrap;
431
- color: rgba(255, 255, 255, 0.92);
432
- font-size: 12px;
433
- font-weight: 500;
434
- line-height: 18px;
435
- }
436
-
437
- .rz-message-date {
438
- overflow: hidden;
439
- text-overflow: ellipsis;
440
- white-space: nowrap;
441
- color: rgba(255, 255, 255, 0.52);
442
- font-size: 12px;
443
- line-height: 18px;
444
- }
445
-
446
- .rz-message-preview {
447
- margin: 0;
448
80
  overflow: hidden;
449
- text-overflow: ellipsis;
450
- white-space: nowrap;
451
- color: rgba(255, 255, 255, 0.52);
452
- font-size: 12px;
453
- line-height: 18px;
454
81
  }
455
82
 
456
- .rz-sidebar {
457
- display: grid;
458
- grid-template-rows: auto minmax(0, 1fr);
459
- min-height: 0;
460
- background: #050505;
461
- flex-grow: 1;
462
- }
463
-
464
- .rz-message-detail {
83
+ .dev-host-pane {
465
84
  display: flex;
85
+ height: 100%;
86
+ min-height: 0;
87
+ flex: 1;
466
88
  flex-direction: column;
467
- gap: 16px;
468
- padding: 16px;
469
- min-height: 100%;
89
+ overflow: hidden;
90
+ background: var(--background);
470
91
  }
471
92
 
472
- .rz-sidebar-header {
93
+ .dev-host-pane-header {
473
94
  display: flex;
95
+ min-height: 2.75rem;
96
+ flex-shrink: 0;
474
97
  align-items: center;
475
98
  justify-content: space-between;
476
- gap: 12px;
477
- min-height: 53px;
478
- padding: 12px 16px;
479
- border-bottom: 1px solid rgba(255, 255, 255, 0.08);
480
- background: rgba(255, 255, 255, 0.02);
99
+ gap: 0.75rem;
100
+ border-bottom: 1px solid var(--border);
101
+ background: var(--card);
102
+ padding: 0.625rem 0.875rem;
481
103
  }
482
104
 
483
- .rz-sidebar-scroll {
484
- min-height: 0;
485
- }
486
-
487
- .rz-sidebar-scroll > .rz-scroll-viewport > * {
488
- min-height: 100%;
489
- }
490
-
491
- .rz-sidebar-title {
492
- color: rgba(255, 255, 255, 0.88);
493
- font-size: 12px;
105
+ .dev-host-pane-title {
106
+ color: var(--foreground);
107
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
108
+ font-size: 0.6875rem;
494
109
  font-weight: 600;
495
- line-height: 18px;
496
- letter-spacing: 0.04em;
110
+ letter-spacing: 0.06em;
497
111
  text-transform: uppercase;
498
- font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
499
112
  }
500
113
 
501
- .rz-header-actions {
114
+ .dev-host-pane-actions {
502
115
  display: flex;
503
116
  align-items: center;
504
- gap: 8px;
505
- }
506
-
507
- .rz-sidebar-close {
508
- display: inline-flex;
509
- align-items: center;
510
- justify-content: center;
511
- width: 28px;
512
- height: 28px;
513
- border: 0;
514
- border-radius: 4px;
515
- background: transparent;
516
- color: rgba(255, 255, 255, 0.56);
517
- cursor: pointer;
518
- }
519
-
520
- .rz-sidebar-close:hover {
521
- background: rgba(255, 255, 255, 0.06);
522
- color: #ffffff;
117
+ gap: 0.25rem;
523
118
  }
524
119
 
525
- .rz-sidebar-close:disabled {
526
- cursor: default;
527
- opacity: 0.4;
528
- }
529
-
530
- .rz-sidebar-close:disabled:hover {
531
- background: transparent;
532
- color: rgba(255, 255, 255, 0.56);
533
- }
534
-
535
- .rz-sidebar-action-primary {
536
- background: #ffffff;
537
- color: #000000;
538
- }
539
-
540
- .rz-sidebar-action-primary:hover {
541
- background: rgba(255, 255, 255, 0.88);
542
- color: #000000;
543
- }
544
-
545
- .rz-sidebar-action-primary:disabled:hover {
546
- background: #ffffff;
547
- color: #000000;
548
- }
549
-
550
- .rz-detail-section {
551
- display: grid;
552
- align-content: start;
553
- gap: 8px;
554
- min-width: 0;
120
+ .dev-host-scroll {
121
+ min-height: 0;
122
+ flex: 1;
555
123
  }
556
124
 
557
- .rz-detail-section:last-child {
125
+ .dev-host-message-table {
126
+ min-width: 42rem;
127
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
558
128
  }
559
129
 
560
- .rz-detail-value {
561
- min-width: 0;
562
- border: 1px solid rgba(255, 255, 255, 0.08);
563
- border-radius: 4px;
564
- background: rgba(255, 255, 255, 0.03);
565
- padding: 10px 12px;
566
- color: rgba(255, 255, 255, 0.9);
567
- font-size: 13px;
568
- line-height: 1.5;
569
- letter-spacing: -0.02em;
130
+ .dev-host-direction-in {
131
+ color: #22c55e;
570
132
  }
571
133
 
572
- .rz-detail-mono {
573
- font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
574
- font-size: 12px;
575
- line-height: 1.5;
134
+ .dev-host-direction-out {
135
+ color: #f59e0b;
576
136
  }
577
137
 
578
- .rz-detail-payload {
138
+ .dev-host-form,
139
+ .dev-host-flow-list,
140
+ .dev-host-details {
579
141
  display: flex;
580
- border: 1px solid rgba(255, 255, 255, 0.08);
581
- border-radius: 4px;
582
- background: rgba(255, 255, 255, 0.03);
583
- padding: 12px;
142
+ min-height: 0;
143
+ flex-direction: column;
144
+ gap: 1rem;
145
+ padding: 1rem;
584
146
  }
585
147
 
586
- .rz-detail-pre {
587
- margin: 0;
588
- white-space: pre-wrap;
589
- word-break: break-word;
148
+ .dev-host-form {
149
+ flex: 1;
590
150
  }
591
151
 
592
- .rz-detail-json-tree {
593
- font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
594
- font-size: 12px;
595
- line-height: 1.5;
152
+ .dev-host-field {
153
+ display: grid;
154
+ gap: 0.375rem;
596
155
  }
597
156
 
598
- .rz-detail-json-tree ul,
599
- .rz-detail-json-tree li,
600
- .rz-detail-json-tree label,
601
- .rz-detail-json-tree span {
602
- font-size: inherit;
157
+ .dev-host-label {
158
+ color: var(--muted-foreground);
159
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
160
+ font-size: 0.75rem;
603
161
  }
604
162
 
605
- .rz-command-form {
163
+ .dev-host-actions {
606
164
  display: flex;
607
- flex-direction: column;
608
- gap: 12px;
609
- padding: 16px;
610
- min-height: 100%;
611
- }
612
-
613
- .rz-action-tabs {
614
- min-height: 100%;
165
+ justify-content: flex-end;
166
+ gap: 0.5rem;
167
+ margin-top: auto;
615
168
  }
616
169
 
617
- .rz-action-tabs-header {
170
+ .dev-host-tabs-header {
618
171
  display: flex;
619
172
  align-items: center;
620
173
  justify-content: space-between;
621
- gap: 12px;
174
+ gap: 0.75rem;
175
+ padding: 0.75rem 1rem 0;
622
176
  }
623
177
 
624
- .rz-action-tab-panel {
178
+ .dev-host-tab-panel {
625
179
  min-height: 0;
180
+ flex: 1;
181
+ overflow: auto;
626
182
  }
627
183
 
628
- .rz-action-form {
629
- display: flex;
630
- flex-direction: column;
631
- gap: 12px;
632
- min-height: 100%;
633
- }
634
-
635
- .rz-field {
636
- display: grid;
637
- gap: 6px;
638
- }
639
-
640
- .rz-template-list {
641
- display: flex;
642
- flex-wrap: wrap;
643
- gap: 8px;
644
- }
645
-
646
- .rz-preset-menu {
647
- position: relative;
648
- }
649
-
650
- .rz-preset-icon-button {
651
- display: flex;
652
- align-items: center;
653
- justify-content: center;
654
- width: 28px;
655
- height: 28px;
656
- padding: 0;
657
- border: 1px solid rgba(255, 255, 255, 0.08);
658
- border-radius: 6px;
659
- background: rgba(255, 255, 255, 0.04);
660
- color: rgba(255, 255, 255, 0.88);
661
- cursor: pointer;
662
- flex-shrink: 0;
663
- }
664
-
665
- .rz-preset-icon-button:hover {
666
- background: rgba(255, 255, 255, 0.08);
667
- color: #ffffff;
668
- }
669
-
670
- .rz-baseui-preset-menu {
671
- min-width: 220px;
672
- max-width: min(320px, calc(100vw - 24px));
673
- }
674
-
675
- .rz-template-button {
676
- border: 1px solid rgba(255, 255, 255, 0.08);
677
- border-radius: 999px;
678
- background: rgba(255, 255, 255, 0.04);
679
- color: rgba(255, 255, 255, 0.86);
680
- padding: 6px 10px;
681
- font-size: 12px;
682
- line-height: 1.4;
683
- cursor: pointer;
684
- }
685
-
686
- .rz-template-button:hover {
687
- background: rgba(255, 255, 255, 0.1);
688
- color: #ffffff;
689
- }
690
-
691
- .rz-template-button:focus-visible {
692
- outline: 2px solid rgba(130, 50, 255, 0.95);
693
- outline-offset: 1px;
694
- }
695
-
696
- .rz-template-button:disabled {
697
- cursor: default;
698
- opacity: 0.4;
699
- }
700
-
701
- .rz-template-button[data-active='true'] {
702
- background: rgba(130, 50, 255, 0.18);
703
- border-color: rgba(130, 50, 255, 0.5);
704
- color: #ffffff;
705
- }
706
-
707
- .rz-flow-panel {
708
- display: grid;
709
- gap: 16px;
710
- }
711
-
712
- .rz-flow-list {
713
- display: grid;
714
- gap: 8px;
184
+ .dev-host-flow-list {
185
+ padding-top: 0.75rem;
715
186
  }
716
187
 
717
- .rz-flow-list-button {
188
+ .dev-host-flow-button {
718
189
  display: flex;
190
+ width: 100%;
719
191
  align-items: center;
720
192
  justify-content: space-between;
721
- gap: 12px;
722
- width: 100%;
723
- border: 1px solid rgba(255, 255, 255, 0.08);
724
- border-radius: 8px;
725
- background: rgba(255, 255, 255, 0.03);
726
- color: rgba(255, 255, 255, 0.88);
727
- padding: 10px 12px;
193
+ gap: 0.75rem;
728
194
  text-align: left;
729
- cursor: pointer;
730
195
  }
731
196
 
732
- .rz-flow-list-button:hover {
733
- background: rgba(255, 255, 255, 0.06);
734
- color: #ffffff;
735
- }
736
-
737
- .rz-flow-list-button:focus-visible {
738
- outline: 2px solid rgba(130, 50, 255, 0.95);
739
- outline-offset: 1px;
740
- }
741
-
742
- .rz-flow-list-button:disabled {
743
- cursor: default;
744
- opacity: 0.4;
745
- }
746
-
747
- .rz-flow-list-button[data-active='true'] {
748
- background: rgba(130, 50, 255, 0.14);
749
- border-color: rgba(130, 50, 255, 0.45);
750
- }
751
-
752
- .rz-flow-list-name {
197
+ .dev-host-flow-name,
198
+ .dev-host-flow-title {
753
199
  display: inline-flex;
754
200
  align-items: center;
755
- gap: 6px;
756
- font-size: 13px;
757
- line-height: 1.4;
201
+ gap: 0.375rem;
758
202
  }
759
203
 
760
- .rz-flow-list-badge,
761
- .rz-flow-state-badge {
762
- display: inline-flex;
763
- align-items: center;
764
- justify-content: center;
765
- min-height: 18px;
766
- padding: 0 6px;
767
- border-radius: 999px;
768
- background: rgba(130, 50, 255, 0.16);
769
- color: #c9a9ff;
770
- font-size: 10px;
771
- line-height: 1;
772
- font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
773
- text-transform: uppercase;
774
- }
775
-
776
- .rz-flow-list-action {
777
- color: rgba(255, 255, 255, 0.56);
778
- font-size: 11px;
779
- line-height: 1.4;
780
- font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
781
- text-transform: uppercase;
782
- }
783
-
784
- .rz-flow-empty-state {
785
- border: 1px dashed rgba(255, 255, 255, 0.12);
786
- border-radius: 8px;
787
- padding: 12px;
788
- color: rgba(255, 255, 255, 0.6);
789
- font-size: 13px;
790
- line-height: 1.5;
791
- }
792
-
793
- .rz-flow-runs {
204
+ .dev-host-flow-runs {
794
205
  display: grid;
795
- gap: 12px;
206
+ gap: 0.75rem;
796
207
  }
797
208
 
798
- .rz-flow-state {
209
+ .dev-host-flow-state {
799
210
  display: grid;
800
- gap: 8px;
801
- padding: 12px;
802
- border: 1px solid rgba(255, 255, 255, 0.08);
803
- border-radius: 8px;
804
- background: rgba(255, 255, 255, 0.03);
211
+ gap: 0.5rem;
212
+ border: 1px solid var(--border);
213
+ border-radius: var(--radius-md);
214
+ padding: 0.75rem;
805
215
  }
806
216
 
807
- .rz-flow-state[data-status='running'] {
808
- border-color: rgba(130, 50, 255, 0.45);
217
+ .dev-host-flow-state[data-status='running'] {
218
+ border-color: var(--primary);
809
219
  }
810
220
 
811
- .rz-flow-state[data-status='failed'] {
812
- border-color: rgba(255, 120, 120, 0.4);
221
+ .dev-host-flow-state[data-status='failed'] {
222
+ border-color: var(--destructive);
813
223
  }
814
224
 
815
- .rz-flow-state-header {
225
+ .dev-host-flow-state-header {
816
226
  display: flex;
817
227
  align-items: center;
818
228
  justify-content: space-between;
819
- gap: 8px;
820
- }
821
-
822
- .rz-flow-state-title {
823
- display: inline-flex;
824
- align-items: center;
825
- gap: 6px;
826
- color: rgba(255, 255, 255, 0.9);
827
- font-size: 13px;
828
- line-height: 1.4;
829
- }
830
-
831
- .rz-flow-state-status {
832
- color: rgba(255, 255, 255, 0.6);
833
- font-size: 12px;
834
- line-height: 1.4;
835
- font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
836
- text-transform: uppercase;
837
- }
838
-
839
- .rz-flow-state-error,
840
- .rz-flow-state-result {
841
- margin: 0;
842
- border-radius: 4px;
843
- background: rgba(255, 255, 255, 0.04);
844
- padding: 10px 12px;
845
- color: rgba(255, 255, 255, 0.84);
846
- font-size: 12px;
229
+ gap: 0.5rem;
230
+ }
231
+
232
+ .dev-host-flow-state-result,
233
+ .dev-host-flow-state-error,
234
+ .dev-host-detail-value,
235
+ .dev-host-detail-payload {
236
+ overflow: auto;
237
+ border: 1px solid var(--border);
238
+ border-radius: var(--radius-sm);
239
+ background: var(--muted);
240
+ padding: 0.625rem 0.75rem;
241
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
242
+ font-size: 0.75rem;
847
243
  line-height: 1.5;
848
244
  white-space: pre-wrap;
849
245
  word-break: break-word;
850
246
  }
851
247
 
852
- .rz-flow-state-error {
853
- color: #ffb4b4;
248
+ .dev-host-flow-state-error {
249
+ color: var(--destructive);
854
250
  }
855
251
 
856
- .rz-flow-stop-button {
857
- flex-shrink: 0;
252
+ .dev-host-detail-section {
253
+ display: grid;
254
+ gap: 0.375rem;
858
255
  }
859
256
 
860
- .rz-label {
861
- color: rgba(255, 255, 255, 0.6);
862
- font-size: 12px;
863
- line-height: 20px;
864
- letter-spacing: -0.04em;
865
- font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
257
+ .dev-host-detail-payload {
258
+ min-height: 4rem;
866
259
  }
867
260
 
868
- .rz-input,
869
- .rz-textarea {
870
- width: 100%;
871
- border: 1px solid rgba(255, 255, 255, 0.08);
872
- border-radius: 4px;
873
- background: rgba(255, 255, 255, 0.04);
874
- color: #ffffff;
875
- padding: 10px 12px;
876
- font-size: 14px;
877
- line-height: 1.5;
878
- letter-spacing: -0.02em;
261
+ .dev-host-mobile-tabs {
262
+ height: 100%;
263
+ min-height: 0;
264
+ display: flex;
265
+ flex: 1;
266
+ flex-direction: column;
879
267
  }
880
268
 
881
- .rz-textarea {
882
- min-height: 112px;
883
- resize: none;
269
+ .dev-host-mobile-tab-list {
270
+ flex-shrink: 0;
271
+ padding: 0.5rem 0.75rem 0;
884
272
  }
885
273
 
886
- .rz-button-row {
274
+ .dev-host-mobile-tab-panel {
275
+ min-height: 0;
887
276
  display: flex;
888
- justify-content: flex-end;
889
- gap: 8px;
890
- margin-top: auto;
277
+ flex: 1;
278
+ flex-direction: column;
891
279
  }
892
280
 
893
- .rz-empty-state {
281
+ .dev-host-mobile-tab-panel > .dev-host-pane {
894
282
  display: flex;
895
- height: 100%;
896
- align-items: center;
897
- justify-content: center;
898
- color: rgba(255, 255, 255, 0.7);
899
- padding: 24px;
900
- text-align: center;
901
- font-size: 16px;
902
- line-height: 1.5;
903
- letter-spacing: -0.02em;
904
283
  }
905
284
 
906
285
  @media (max-width: 960px) {
907
- .rz-topbar {
908
- padding-left: 8px;
909
- padding-right: 8px;
286
+ .dev-host-header {
287
+ padding-inline: 0.75rem;
910
288
  }
911
289
 
912
- .rz-topbar-brand svg {
913
- height: 18px;
914
- }
915
-
916
- .rz-topbar-panel-picker {
917
- overflow: hidden;
290
+ .dev-host-header-subtitle {
291
+ display: none;
918
292
  }
919
293
 
920
- .rz-workspace {
921
- grid-template-rows: minmax(0, 1fr) 12px minmax(180px, var(--rz-devtools-height, 272px));
922
- }
923
-
924
- .rz-devtools-mobile-tabs {
925
- padding-top: 8px;
926
- }
927
-
928
- .rz-column-resize-handle {
929
- width: 100%;
930
- min-width: 0;
931
- min-height: 6px;
932
- cursor: row-resize;
933
- }
934
-
935
- .rz-column-resize-handle::before {
936
- width: 72px;
937
- height: 2px;
938
- }
939
-
940
- .rz-column-resize-handle::after {
941
- border-left: 0;
942
- border-right: 0;
943
- border-top: 1px solid rgba(255, 255, 255, 0.08);
944
- border-bottom: 1px solid rgba(255, 255, 255, 0.08);
945
- }
946
-
947
- .rz-column-resize-handle[data-dragging='true']::after,
948
- .rz-column-resize-handle:hover::after {
949
- border-top-color: rgba(255, 255, 255, 0.08);
950
- border-bottom-color: rgba(255, 255, 255, 0.08);
951
- }
952
-
953
- .rz-action-tabs-header {
954
- flex-wrap: wrap;
955
- align-items: flex-start;
956
- }
957
- }
958
-
959
- @media (max-width: 640px) {
960
- .rz-message-list-header,
961
- .rz-message-row {
962
- grid-template-columns: 36px 136px minmax(92px, 136px) minmax(0, 1fr);
294
+ .dev-host-panel-select {
295
+ width: min(12rem, 42vw);
963
296
  }
964
297
 
965
- .rz-message-header-cell,
966
- .rz-message-cell {
967
- padding: 8px 10px;
298
+ .dev-host-message-table {
299
+ min-width: 36rem;
968
300
  }
969
301
  }