@rozenite/vite-plugin 1.8.1 → 1.9.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 (52) hide show
  1. package/dist/bundle-dts.d.ts +1 -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-host/App.d.ts +3 -0
  5. package/dist/dev-host/App.d.ts.map +1 -0
  6. package/dist/dev-host/components/DispatchForm.d.ts +13 -0
  7. package/dist/dev-host/components/DispatchForm.d.ts.map +1 -0
  8. package/dist/dev-host/components/MessageDetailsPane.d.ts +18 -0
  9. package/dist/dev-host/components/MessageDetailsPane.d.ts.map +1 -0
  10. package/dist/dev-host/components/MessageLogPane.d.ts +10 -0
  11. package/dist/dev-host/components/MessageLogPane.d.ts.map +1 -0
  12. package/dist/dev-host/components/MessagePayloadDetail.d.ts +6 -0
  13. package/dist/dev-host/components/MessagePayloadDetail.d.ts.map +1 -0
  14. package/dist/dev-host/components/PanelTabs.d.ts +9 -0
  15. package/dist/dev-host/components/PanelTabs.d.ts.map +1 -0
  16. package/dist/dev-host/components/ResizeHandle.d.ts +12 -0
  17. package/dist/dev-host/components/ResizeHandle.d.ts.map +1 -0
  18. package/dist/dev-host/components/icons.d.ts +3 -0
  19. package/dist/dev-host/components/icons.d.ts.map +1 -0
  20. package/dist/dev-host/components/ui/ScrollArea.d.ts +6 -0
  21. package/dist/dev-host/components/ui/ScrollArea.d.ts.map +1 -0
  22. package/dist/dev-host/components/ui/Tabs.d.ts +5 -0
  23. package/dist/dev-host/components/ui/Tabs.d.ts.map +1 -0
  24. package/dist/dev-host/constants.d.ts +28 -0
  25. package/dist/dev-host/constants.d.ts.map +1 -0
  26. package/dist/dev-host/index.d.ts +1 -0
  27. package/dist/dev-host/index.d.ts.map +1 -0
  28. package/dist/dev-host/types.d.ts +29 -0
  29. package/dist/dev-host/types.d.ts.map +1 -0
  30. package/dist/dev-host/utils.d.ts +13 -0
  31. package/dist/dev-host/utils.d.ts.map +1 -0
  32. package/dist/index.cjs +101 -12
  33. package/dist/index.js +101 -12
  34. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  35. package/package.json +14 -3
  36. package/src/dev-host/App.tsx +403 -0
  37. package/src/dev-host/components/DispatchForm.tsx +87 -0
  38. package/src/dev-host/components/MessageDetailsPane.tsx +108 -0
  39. package/src/dev-host/components/MessageLogPane.tsx +84 -0
  40. package/src/dev-host/components/MessagePayloadDetail.tsx +32 -0
  41. package/src/dev-host/components/PanelTabs.tsx +22 -0
  42. package/src/dev-host/components/ResizeHandle.tsx +33 -0
  43. package/src/dev-host/components/icons.tsx +27 -0
  44. package/src/dev-host/components/ui/ScrollArea.tsx +46 -0
  45. package/src/dev-host/components/ui/Tabs.tsx +33 -0
  46. package/src/dev-host/constants.ts +29 -0
  47. package/src/dev-host/dev-host.html +11 -0
  48. package/src/dev-host/index.tsx +19 -0
  49. package/src/dev-host/styles.css +631 -0
  50. package/src/dev-host/types.ts +33 -0
  51. package/src/dev-host/utils.ts +96 -0
  52. package/templates/panel.ejs +1 -1
@@ -0,0 +1,631 @@
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
+ }
23
+
24
+ button,
25
+ input,
26
+ textarea,
27
+ select {
28
+ font: inherit;
29
+ }
30
+
31
+ .rz-shell {
32
+ display: flex;
33
+ height: 100dvh;
34
+ flex-direction: column;
35
+ overflow: hidden;
36
+ background: #000000;
37
+ }
38
+
39
+ .rz-topbar {
40
+ display: flex;
41
+ align-items: center;
42
+ min-height: 36px;
43
+ padding: 4px 10px;
44
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
45
+ overflow: hidden;
46
+ background: #0a0a0a;
47
+ }
48
+
49
+ .rz-workspace {
50
+ flex: 1;
51
+ min-height: 0;
52
+ display: grid;
53
+ grid-template-rows: minmax(0, 1fr) 12px minmax(180px, var(--rz-devtools-height, 288px));
54
+ overflow: hidden;
55
+ }
56
+
57
+ .rz-card {
58
+ min-height: 0;
59
+ overflow: hidden;
60
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
61
+ }
62
+
63
+ .rz-card:first-child {
64
+ border-top: 0;
65
+ }
66
+
67
+ .rz-iframe {
68
+ display: block;
69
+ width: 100%;
70
+ height: 100%;
71
+ border: 0;
72
+ background: #ffffff;
73
+ }
74
+
75
+ .rz-iframe[data-resizing='true'] {
76
+ pointer-events: none;
77
+ }
78
+
79
+ .rz-devtools {
80
+ display: grid;
81
+ min-height: 0;
82
+ grid-template-columns: minmax(0, 1fr) var(--rz-command-splitter-width, 6px) minmax(260px, var(--rz-command-width, 320px));
83
+ }
84
+
85
+ .rz-log-workspace {
86
+ display: grid;
87
+ min-height: 0;
88
+ grid-template-columns: minmax(0, 1fr) var(--rz-details-splitter-width, 0px) var(--rz-details-width, 0px);
89
+ }
90
+
91
+ .rz-resize-handle {
92
+ position: relative;
93
+ cursor: row-resize;
94
+ background: #0a0a0a;
95
+ user-select: none;
96
+ touch-action: none;
97
+ }
98
+
99
+ .rz-resize-handle::before {
100
+ content: '';
101
+ position: absolute;
102
+ top: 50%;
103
+ left: 50%;
104
+ width: 72px;
105
+ height: 2px;
106
+ border-radius: 999px;
107
+ background: rgba(255, 255, 255, 0.2);
108
+ transform: translate(-50%, -50%);
109
+ }
110
+
111
+ .rz-resize-handle::after {
112
+ content: '';
113
+ position: absolute;
114
+ inset: 0;
115
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
116
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
117
+ }
118
+
119
+ .rz-resize-handle[data-dragging='true']::before,
120
+ .rz-resize-handle:hover::before {
121
+ background: #ffffff;
122
+ }
123
+
124
+ .rz-column-resize-handle {
125
+ position: relative;
126
+ width: 6px;
127
+ min-width: 6px;
128
+ cursor: col-resize;
129
+ background: transparent;
130
+ user-select: none;
131
+ touch-action: none;
132
+ }
133
+
134
+ .rz-column-resize-handle::after {
135
+ content: '';
136
+ position: absolute;
137
+ inset: 0;
138
+ border-left: 1px solid transparent;
139
+ }
140
+
141
+ .rz-column-resize-handle[data-dragging='true']::after,
142
+ .rz-column-resize-handle:hover::after {
143
+ border-left-color: rgba(255, 255, 255, 0.22);
144
+ }
145
+
146
+ .rz-pane {
147
+ display: flex;
148
+ flex-direction: column;
149
+ min-height: 0;
150
+ overflow: hidden;
151
+ }
152
+
153
+ .rz-pane + .rz-pane {
154
+ border-left: 1px solid rgba(255, 255, 255, 0.08);
155
+ }
156
+
157
+ .rz-pane[data-hidden='true'],
158
+ .rz-column-resize-handle[data-hidden='true'] {
159
+ display: none;
160
+ }
161
+
162
+ .rz-tabs-root {
163
+ width: 100%;
164
+ min-width: 0;
165
+ }
166
+
167
+ .rz-tabs-list {
168
+ display: inline-flex;
169
+ min-height: 26px;
170
+ max-width: 100%;
171
+ align-items: center;
172
+ gap: 2px;
173
+ overflow: auto hidden;
174
+ border: 1px solid rgba(255, 255, 255, 0.08);
175
+ border-radius: 4px;
176
+ background: rgba(255, 255, 255, 0.04);
177
+ padding: 2px;
178
+ scrollbar-width: none;
179
+ }
180
+
181
+ .rz-tabs-list::-webkit-scrollbar {
182
+ display: none;
183
+ }
184
+
185
+ .rz-tabs-trigger {
186
+ display: inline-flex;
187
+ align-items: center;
188
+ justify-content: center;
189
+ white-space: nowrap;
190
+ border: 0;
191
+ border-radius: 2px;
192
+ background: transparent;
193
+ min-height: 22px;
194
+ padding: 3px 9px;
195
+ color: rgba(255, 255, 255, 0.6);
196
+ font-size: 12px;
197
+ font-weight: 500;
198
+ line-height: 1.2;
199
+ letter-spacing: 0;
200
+ transition: background-color 120ms ease, color 120ms ease;
201
+ }
202
+
203
+ .rz-tabs-trigger:hover {
204
+ color: #ffffff;
205
+ }
206
+
207
+ .rz-tabs-trigger[data-state='active'] {
208
+ background: #ffffff;
209
+ color: #000000;
210
+ }
211
+
212
+ .rz-tabs-trigger:focus-visible,
213
+ .rz-input:focus-visible,
214
+ .rz-textarea:focus-visible,
215
+ .rz-sidebar-close:focus-visible {
216
+ outline: 2px solid rgba(130, 50, 255, 0.95);
217
+ outline-offset: -2px;
218
+ }
219
+
220
+ .rz-scroll-area {
221
+ position: relative;
222
+ height: 100%;
223
+ width: 100%;
224
+ overflow: hidden;
225
+ }
226
+
227
+ .rz-scroll-viewport {
228
+ height: 100%;
229
+ width: 100%;
230
+ }
231
+
232
+ .rz-scrollbar {
233
+ display: flex;
234
+ user-select: none;
235
+ touch-action: none;
236
+ padding: 3px;
237
+ }
238
+
239
+ .rz-scrollbar[data-orientation='vertical'] {
240
+ width: 12px;
241
+ }
242
+
243
+ .rz-scrollbar-thumb {
244
+ position: relative;
245
+ flex: 1;
246
+ border-radius: 999px;
247
+ background: rgba(255, 255, 255, 0.18);
248
+ }
249
+
250
+ .rz-message-list {
251
+ min-width: 100%;
252
+ font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
253
+ }
254
+
255
+ .rz-log-pane {
256
+ display: grid;
257
+ grid-template-rows: auto minmax(0, 1fr);
258
+ min-height: 0;
259
+ background: #050505;
260
+ }
261
+
262
+ .rz-message-list-header,
263
+ .rz-message-row {
264
+ display: grid;
265
+ grid-template-columns: 40px 168px minmax(120px, 180px) minmax(0, 1fr);
266
+ gap: 0;
267
+ align-items: center;
268
+ }
269
+
270
+ .rz-message-list-header {
271
+ position: sticky;
272
+ top: 0;
273
+ z-index: 1;
274
+ background: #0a0a0a;
275
+ color: rgba(255, 255, 255, 0.4);
276
+ font-size: 11px;
277
+ line-height: 16px;
278
+ letter-spacing: 0.06em;
279
+ text-transform: uppercase;
280
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
281
+ }
282
+
283
+ .rz-message-header-cell,
284
+ .rz-message-cell {
285
+ min-width: 0;
286
+ padding: 8px 12px;
287
+ }
288
+
289
+ .rz-message-header-cell:first-child,
290
+ .rz-message-cell:first-child {
291
+ text-align: center;
292
+ }
293
+
294
+ .rz-message-header-cell + .rz-message-header-cell,
295
+ .rz-message-cell + .rz-message-cell {
296
+ border-left: 1px solid rgba(255, 255, 255, 0.04);
297
+ }
298
+
299
+ .rz-message-row {
300
+ width: 100%;
301
+ border: 0;
302
+ background: transparent;
303
+ color: inherit;
304
+ text-align: left;
305
+ padding: 0;
306
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
307
+ cursor: pointer;
308
+ transition: background-color 120ms ease, box-shadow 120ms ease;
309
+ }
310
+
311
+ .rz-message-row:last-child {
312
+ border-bottom: 0;
313
+ }
314
+
315
+ .rz-message-row:hover {
316
+ background: rgba(255, 255, 255, 0.035);
317
+ }
318
+
319
+ .rz-message-row[data-selected='true'] {
320
+ background: rgba(59, 130, 246, 0.14);
321
+ box-shadow: inset 2px 0 0 #4da3ff;
322
+ }
323
+
324
+ .rz-message-direction {
325
+ display: flex;
326
+ align-items: center;
327
+ justify-content: center;
328
+ color: rgba(255, 255, 255, 0.7);
329
+ font-size: 12px;
330
+ line-height: 18px;
331
+ }
332
+
333
+ .rz-message-arrow {
334
+ display: inline-flex;
335
+ width: 16px;
336
+ justify-content: center;
337
+ font-size: 14px;
338
+ font-weight: 700;
339
+ }
340
+
341
+ .rz-message-dir-in .rz-message-arrow {
342
+ color: #22c55e;
343
+ }
344
+
345
+ .rz-message-dir-out .rz-message-arrow {
346
+ color: #f59e0b;
347
+ }
348
+
349
+ .rz-message-type {
350
+ overflow: hidden;
351
+ text-overflow: ellipsis;
352
+ white-space: nowrap;
353
+ color: rgba(255, 255, 255, 0.92);
354
+ font-size: 12px;
355
+ font-weight: 500;
356
+ line-height: 18px;
357
+ }
358
+
359
+ .rz-message-date {
360
+ overflow: hidden;
361
+ text-overflow: ellipsis;
362
+ white-space: nowrap;
363
+ color: rgba(255, 255, 255, 0.52);
364
+ font-size: 12px;
365
+ line-height: 18px;
366
+ }
367
+
368
+ .rz-message-preview {
369
+ margin: 0;
370
+ overflow: hidden;
371
+ text-overflow: ellipsis;
372
+ white-space: nowrap;
373
+ color: rgba(255, 255, 255, 0.52);
374
+ font-size: 12px;
375
+ line-height: 18px;
376
+ }
377
+
378
+ .rz-sidebar {
379
+ display: grid;
380
+ grid-template-rows: auto minmax(0, 1fr);
381
+ min-height: 0;
382
+ background: #050505;
383
+ flex-grow: 1;
384
+ }
385
+
386
+ .rz-message-detail {
387
+ display: flex;
388
+ flex-direction: column;
389
+ gap: 16px;
390
+ padding: 16px;
391
+ min-height: 100%;
392
+ }
393
+
394
+ .rz-sidebar-header {
395
+ display: flex;
396
+ align-items: center;
397
+ justify-content: space-between;
398
+ gap: 12px;
399
+ min-height: 53px;
400
+ padding: 12px 16px;
401
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
402
+ background: rgba(255, 255, 255, 0.02);
403
+ }
404
+
405
+ .rz-sidebar-scroll {
406
+ min-height: 0;
407
+ }
408
+
409
+ .rz-sidebar-scroll > .rz-scroll-viewport > * {
410
+ min-height: 100%;
411
+ }
412
+
413
+ .rz-sidebar-title {
414
+ color: rgba(255, 255, 255, 0.88);
415
+ font-size: 12px;
416
+ font-weight: 600;
417
+ line-height: 18px;
418
+ letter-spacing: 0.04em;
419
+ text-transform: uppercase;
420
+ font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
421
+ }
422
+
423
+ .rz-header-actions {
424
+ display: flex;
425
+ align-items: center;
426
+ gap: 8px;
427
+ }
428
+
429
+ .rz-sidebar-close {
430
+ display: inline-flex;
431
+ align-items: center;
432
+ justify-content: center;
433
+ width: 28px;
434
+ height: 28px;
435
+ border: 0;
436
+ border-radius: 4px;
437
+ background: transparent;
438
+ color: rgba(255, 255, 255, 0.56);
439
+ cursor: pointer;
440
+ }
441
+
442
+ .rz-sidebar-close:hover {
443
+ background: rgba(255, 255, 255, 0.06);
444
+ color: #ffffff;
445
+ }
446
+
447
+ .rz-sidebar-close:disabled {
448
+ cursor: default;
449
+ opacity: 0.4;
450
+ }
451
+
452
+ .rz-sidebar-close:disabled:hover {
453
+ background: transparent;
454
+ color: rgba(255, 255, 255, 0.56);
455
+ }
456
+
457
+ .rz-sidebar-action-primary {
458
+ background: #ffffff;
459
+ color: #000000;
460
+ }
461
+
462
+ .rz-sidebar-action-primary:hover {
463
+ background: rgba(255, 255, 255, 0.88);
464
+ color: #000000;
465
+ }
466
+
467
+ .rz-sidebar-action-primary:disabled:hover {
468
+ background: #ffffff;
469
+ color: #000000;
470
+ }
471
+
472
+ .rz-detail-section {
473
+ display: grid;
474
+ gap: 8px;
475
+ min-width: 0;
476
+ }
477
+
478
+ .rz-detail-section:last-child {
479
+ flex: 1;
480
+ min-height: 0;
481
+ }
482
+
483
+ .rz-detail-value {
484
+ min-width: 0;
485
+ border: 1px solid rgba(255, 255, 255, 0.08);
486
+ border-radius: 4px;
487
+ background: rgba(255, 255, 255, 0.03);
488
+ padding: 10px 12px;
489
+ color: rgba(255, 255, 255, 0.9);
490
+ font-size: 13px;
491
+ line-height: 1.5;
492
+ letter-spacing: -0.02em;
493
+ }
494
+
495
+ .rz-detail-mono {
496
+ font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
497
+ font-size: 12px;
498
+ line-height: 1.5;
499
+ }
500
+
501
+ .rz-detail-payload {
502
+ display: flex;
503
+ flex: 1;
504
+ overflow: auto;
505
+ min-height: 0;
506
+ border: 1px solid rgba(255, 255, 255, 0.08);
507
+ border-radius: 4px;
508
+ background: rgba(255, 255, 255, 0.03);
509
+ padding: 12px;
510
+ }
511
+
512
+ .rz-detail-pre {
513
+ margin: 0;
514
+ white-space: pre-wrap;
515
+ word-break: break-word;
516
+ }
517
+
518
+ .rz-detail-json-tree {
519
+ font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
520
+ font-size: 12px;
521
+ line-height: 1.5;
522
+ }
523
+
524
+ .rz-detail-json-tree ul,
525
+ .rz-detail-json-tree li,
526
+ .rz-detail-json-tree label,
527
+ .rz-detail-json-tree span {
528
+ font-size: inherit;
529
+ }
530
+
531
+ .rz-command-form {
532
+ display: flex;
533
+ flex-direction: column;
534
+ gap: 12px;
535
+ padding: 16px;
536
+ min-height: 100%;
537
+ }
538
+
539
+ .rz-field {
540
+ display: grid;
541
+ gap: 6px;
542
+ }
543
+
544
+ .rz-label {
545
+ color: rgba(255, 255, 255, 0.6);
546
+ font-size: 12px;
547
+ line-height: 20px;
548
+ letter-spacing: -0.04em;
549
+ font-family: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
550
+ }
551
+
552
+ .rz-input,
553
+ .rz-textarea {
554
+ width: 100%;
555
+ border: 1px solid rgba(255, 255, 255, 0.08);
556
+ border-radius: 4px;
557
+ background: rgba(255, 255, 255, 0.04);
558
+ color: #ffffff;
559
+ padding: 10px 12px;
560
+ font-size: 14px;
561
+ line-height: 1.5;
562
+ letter-spacing: -0.02em;
563
+ }
564
+
565
+ .rz-textarea {
566
+ min-height: 112px;
567
+ resize: none;
568
+ }
569
+
570
+ .rz-button-row {
571
+ display: flex;
572
+ justify-content: flex-end;
573
+ gap: 8px;
574
+ margin-top: auto;
575
+ }
576
+
577
+ .rz-empty-state {
578
+ display: flex;
579
+ height: 100%;
580
+ align-items: center;
581
+ justify-content: center;
582
+ color: rgba(255, 255, 255, 0.7);
583
+ padding: 24px;
584
+ text-align: center;
585
+ font-size: 16px;
586
+ line-height: 1.5;
587
+ letter-spacing: -0.02em;
588
+ }
589
+
590
+ @media (max-width: 960px) {
591
+ .rz-topbar {
592
+ padding-left: 8px;
593
+ padding-right: 8px;
594
+ }
595
+
596
+ .rz-workspace {
597
+ grid-template-rows: minmax(0, 1fr) 12px minmax(180px, var(--rz-devtools-height, 272px));
598
+ }
599
+
600
+ .rz-devtools {
601
+ grid-template-columns: minmax(0, 1fr);
602
+ grid-template-rows: minmax(0, 1fr) var(--rz-command-splitter-width, 6px) minmax(240px, var(--rz-command-width, 320px));
603
+ }
604
+
605
+ .rz-log-workspace {
606
+ grid-template-columns: minmax(0, 1fr);
607
+ grid-template-rows: minmax(0, 1fr) var(--rz-details-splitter-width, 0px) var(--rz-details-width, 0px);
608
+ }
609
+
610
+ .rz-pane + .rz-pane {
611
+ border-left: 0;
612
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
613
+ }
614
+
615
+ .rz-column-resize-handle {
616
+ width: 100%;
617
+ min-width: 0;
618
+ min-height: 6px;
619
+ cursor: row-resize;
620
+ }
621
+
622
+ .rz-column-resize-handle::after {
623
+ border-left: 0;
624
+ border-top: 1px solid transparent;
625
+ }
626
+
627
+ .rz-column-resize-handle[data-dragging='true']::after,
628
+ .rz-column-resize-handle:hover::after {
629
+ border-top-color: rgba(255, 255, 255, 0.22);
630
+ }
631
+ }
@@ -0,0 +1,33 @@
1
+ export type DevHostPanelEntry = {
2
+ label: string;
3
+ source: string;
4
+ };
5
+
6
+ export type DevHostState = {
7
+ packageName: string;
8
+ packageDescription: string;
9
+ panels: DevHostPanelEntry[];
10
+ };
11
+
12
+ export type MessageEntry = {
13
+ id: string;
14
+ direction: 'in' | 'out';
15
+ date: string;
16
+ type: string;
17
+ payload: unknown;
18
+ };
19
+
20
+ export type PluginMessage = {
21
+ pluginId: string;
22
+ type: string;
23
+ payload: unknown;
24
+ };
25
+
26
+ export type ResizeHandleId = 'devtools-height' | 'command-width' | 'details-width';
27
+
28
+ export type ResizeSession = {
29
+ handleId: ResizeHandleId;
30
+ pointerId: number;
31
+ element: HTMLElement;
32
+ onMove: (event: PointerEvent) => void;
33
+ };