@decido/ui 0.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 (95) hide show
  1. package/.eslintrc.cjs +10 -0
  2. package/.turbo/turbo-build.log +13 -0
  3. package/.turbo/turbo-lint.log +54 -0
  4. package/dist/components/DebugPanel.d.ts +3 -0
  5. package/dist/components/DebugPanel.js +195 -0
  6. package/dist/components/DebugPanelManager.d.ts +3 -0
  7. package/dist/components/DebugPanelManager.js +20 -0
  8. package/dist/components/DecidoButton.d.ts +11 -0
  9. package/dist/components/DecidoButton.js +15 -0
  10. package/dist/components/LoginView.d.ts +6 -0
  11. package/dist/components/LoginView.js +36 -0
  12. package/dist/components/WelcomeView.d.ts +6 -0
  13. package/dist/components/WelcomeView.js +16 -0
  14. package/dist/components/base/BaseComponent.d.ts +12 -0
  15. package/dist/components/base/BaseComponent.js +43 -0
  16. package/dist/components/base/BaseComponentBacjup.d.ts +12 -0
  17. package/dist/components/base/BaseComponentBacjup.js +43 -0
  18. package/dist/components/base/BaseComponentLit.d.ts +9 -0
  19. package/dist/components/base/BaseComponentLit.js +30 -0
  20. package/dist/components/base/shared-styles.d.ts +4 -0
  21. package/dist/components/base/shared-styles.js +18 -0
  22. package/dist/components/index.d.ts +6 -0
  23. package/dist/components/index.js +7 -0
  24. package/dist/components/landing/index.d.ts +11 -0
  25. package/dist/components/landing/index.js +11 -0
  26. package/dist/components/landing/landing-button.d.ts +9 -0
  27. package/dist/components/landing/landing-button.js +5 -0
  28. package/dist/components/landing/landing-card.d.ts +6 -0
  29. package/dist/components/landing/landing-card.js +5 -0
  30. package/dist/components/landing/landing-cta.d.ts +10 -0
  31. package/dist/components/landing/landing-cta.js +5 -0
  32. package/dist/components/landing/landing-feature-card.d.ts +35 -0
  33. package/dist/components/landing/landing-feature-card.js +35 -0
  34. package/dist/components/landing/landing-footer.d.ts +18 -0
  35. package/dist/components/landing/landing-footer.js +7 -0
  36. package/dist/components/landing/landing-header.d.ts +21 -0
  37. package/dist/components/landing/landing-header.js +7 -0
  38. package/dist/components/landing/landing-hero.d.ts +22 -0
  39. package/dist/components/landing/landing-hero.js +10 -0
  40. package/dist/components/landing/landing-page.d.ts +3 -0
  41. package/dist/components/landing/landing-page.js +34 -0
  42. package/dist/components/landing/landing-section.d.ts +14 -0
  43. package/dist/components/landing/landing-section.js +8 -0
  44. package/dist/components/landing/landing-testimonial-card.d.ts +11 -0
  45. package/dist/components/landing/landing-testimonial-card.js +9 -0
  46. package/dist/components/landing/landing-waitlist.d.ts +27 -0
  47. package/dist/components/landing/landing-waitlist.js +18 -0
  48. package/dist/components/theming/ColorPicker.d.ts +8 -0
  49. package/dist/components/theming/ColorPicker.js +19 -0
  50. package/dist/components/theming/ThemePanel.d.ts +5 -0
  51. package/dist/components/theming/ThemePanel.js +12 -0
  52. package/dist/index.d.ts +13 -0
  53. package/dist/index.js +19 -0
  54. package/dist/utils/counter.d.ts +1 -0
  55. package/dist/utils/counter.js +9 -0
  56. package/eslint.config.js +11 -0
  57. package/package.json +47 -0
  58. package/src/components/DebugPanel.tsx +347 -0
  59. package/src/components/DebugPanelManager.tsx +40 -0
  60. package/src/components/DecidoButton.tsx +43 -0
  61. package/src/components/LoginView.tsx +85 -0
  62. package/src/components/WelcomeView.tsx +47 -0
  63. package/src/components/base/landing.css +477 -0
  64. package/src/components/base/shared-styles.ts +21 -0
  65. package/src/components/index.ts +7 -0
  66. package/src/components/landing/index.tsx +11 -0
  67. package/src/components/landing/landing-button.tsx +26 -0
  68. package/src/components/landing/landing-card.tsx +15 -0
  69. package/src/components/landing/landing-cta.tsx +42 -0
  70. package/src/components/landing/landing-feature-card.tsx +149 -0
  71. package/src/components/landing/landing-footer.tsx +66 -0
  72. package/src/components/landing/landing-header.tsx +55 -0
  73. package/src/components/landing/landing-hero.tsx +94 -0
  74. package/src/components/landing/landing-page.tsx +143 -0
  75. package/src/components/landing/landing-section.tsx +42 -0
  76. package/src/components/landing/landing-testimonial-card.tsx +50 -0
  77. package/src/components/landing/landing-waitlist.tsx +115 -0
  78. package/src/components/theming/ColorPicker.tsx +40 -0
  79. package/src/components/theming/ThemePanel.tsx +43 -0
  80. package/src/css/base.css +483 -0
  81. package/src/css/components.css +309 -0
  82. package/src/css/debug-panel.css +1368 -0
  83. package/src/css/layout.css +289 -0
  84. package/src/css/login-view.css +45 -0
  85. package/src/css/style.css +20 -0
  86. package/src/css/welcome-view.css +56 -0
  87. package/src/css/workbench.css +383 -0
  88. package/src/globals.d.ts +8 -0
  89. package/src/index.ts +24 -0
  90. package/src/utils/counter.d.ts.map +1 -0
  91. package/src/utils/counter.js +9 -0
  92. package/src/utils/counter.ts +9 -0
  93. package/src/vite-env.d.ts +1 -0
  94. package/tailwind.config.js +7 -0
  95. package/tsconfig.json +35 -0
@@ -0,0 +1,1368 @@
1
+ /* Debug Panel Container */
2
+ .debug-panel-container {
3
+ position: fixed;
4
+ top: 0;
5
+ left: 0;
6
+ right: 0;
7
+ bottom: 0;
8
+ pointer-events: none;
9
+ z-index: 9999;
10
+ font-family: 'JetBrains Mono', 'Fira Code', 'Monaco', 'Consolas', monospace;
11
+ }
12
+
13
+ /* Theme Variables */
14
+ .debug-panel-container.theme-dark {
15
+ --bg-primary: #0f172a;
16
+ --bg-secondary: #1e293b;
17
+ --bg-tertiary: #334155;
18
+ --border-primary: #475569;
19
+ --text-primary: #e2e8f0;
20
+ --text-secondary: #94a3b8;
21
+ --text-muted: #64748b;
22
+ --accent-primary: #8b5cf6;
23
+ --accent-secondary: #c4b5fd;
24
+ --success: #22c55e;
25
+ --warning: #fbbf24;
26
+ --error: #ef4444;
27
+ --shadow: rgba(0, 0, 0, 0.4);
28
+ }
29
+
30
+ .debug-panel-container.theme-light {
31
+ --bg-primary: #ffffff;
32
+ --bg-secondary: #f8fafc;
33
+ --bg-tertiary: #e2e8f0;
34
+ --border-primary: #cbd5e1;
35
+ --text-primary: #1e293b;
36
+ --text-secondary: #475569;
37
+ --text-muted: #64748b;
38
+ --accent-primary: #8b5cf6;
39
+ --accent-secondary: #c4b5fd;
40
+ --success: #22c55e;
41
+ --warning: #fbbf24;
42
+ --error: #ef4444;
43
+ --shadow: rgba(0, 0, 0, 0.1);
44
+ }
45
+
46
+ /* Individual Debug Panel */
47
+ .debug-panel {
48
+ position: absolute;
49
+ /* background: linear-gradient(135deg, var(--bg-primary) 0%, var(--bg-secondary) 100%); */
50
+ border: 1px solid var(--border-primary);
51
+ border-radius: 8px;
52
+ color: var(--text-primary);
53
+ box-shadow: 0 20px 40px var(--shadow);
54
+ backdrop-filter: blur(5px);
55
+ pointer-events: auto;
56
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
57
+ display: flex;
58
+ flex-direction: column;
59
+ min-width: 300px;
60
+ min-height: 45px;
61
+ font-size: 13px;
62
+ line-height: 1.4;
63
+ }
64
+
65
+ .debug-panel.dragging {
66
+ transform: rotate(2deg);
67
+ box-shadow: 0 25px 50px rgba(0, 0, 0, 0.6);
68
+ z-index: 10000 !important;
69
+ }
70
+
71
+ .debug-panel.resizing {
72
+ transition: none;
73
+ }
74
+
75
+ .debug-panel.minimized {
76
+ height: 40px !important;
77
+ overflow: hidden;
78
+ }
79
+
80
+ .debug-panel.minimized .debug-tabs,
81
+ .debug-panel.minimized .debug-content-wrapper {
82
+ display: none;
83
+ }
84
+
85
+ /* Enhanced Header */
86
+ .debug-header {
87
+ display: flex;
88
+ justify-content: space-between;
89
+ align-items: center;
90
+ background: linear-gradient(90deg, var(--bg-secondary) 0%, var(--bg-tertiary) 100%);
91
+ padding: 8px 16px;
92
+ border-bottom: 1px solid var(--border-primary);
93
+ cursor: grab;
94
+ user-select: none;
95
+ border-radius: 8px 8px 0 0;
96
+ }
97
+
98
+ .debug-header:active {
99
+ cursor: grabbing;
100
+ }
101
+
102
+ .debug-header-title {
103
+ display: flex;
104
+ align-items: center;
105
+ gap: 8px;
106
+ font-weight: 600;
107
+ font-size: 14px;
108
+ }
109
+
110
+ .panel-id {
111
+ background: rgba(139, 92, 246, 0.2);
112
+ color: var(--accent-secondary);
113
+ padding: 2px 6px;
114
+ border-radius: 3px;
115
+ font-size: 10px;
116
+ font-weight: normal;
117
+ }
118
+
119
+ .debug-logo {
120
+ font-size: 18px;
121
+ animation: pulse 2s infinite;
122
+ }
123
+
124
+ .debug-version {
125
+ background: var(--accent-primary);
126
+ color: white;
127
+ padding: 2px 6px;
128
+ border-radius: 4px;
129
+ font-size: 10px;
130
+ font-weight: bold;
131
+ }
132
+
133
+ .debug-controls {
134
+ display: flex;
135
+ align-items: center;
136
+ gap: 4px;
137
+ }
138
+
139
+ .control-btn {
140
+ background: rgba(148, 163, 184, 0.1);
141
+ border: 1px solid rgba(148, 163, 184, 0.2);
142
+ color: var(--text-secondary);
143
+ padding: 6px 8px;
144
+ border-radius: 4px;
145
+ cursor: pointer;
146
+ transition: all 0.2s ease;
147
+ font-size: 12px;
148
+ }
149
+
150
+ .control-btn:hover {
151
+ background: rgba(148, 163, 184, 0.2);
152
+ color: var(--text-primary);
153
+ transform: translateY(-1px);
154
+ }
155
+
156
+ .close-btn:hover {
157
+ background: var(--error);
158
+ color: white;
159
+ }
160
+
161
+ /* Resize Handles */
162
+ .resize-handles {
163
+ position: absolute;
164
+ top: 0;
165
+ left: 0;
166
+ right: 0;
167
+ bottom: 0;
168
+ pointer-events: none;
169
+ }
170
+
171
+ .resize-handle {
172
+ position: absolute;
173
+ pointer-events: auto;
174
+ background: transparent;
175
+ }
176
+
177
+ .resize-handle-n { top: -3px; left: 8px; right: 8px; height: 6px; cursor: ns-resize; }
178
+ .resize-handle-s { bottom: -3px; left: 8px; right: 8px; height: 6px; cursor: ns-resize; }
179
+ .resize-handle-e { top: 8px; right: -3px; bottom: 8px; width: 6px; cursor: ew-resize; }
180
+ .resize-handle-w { top: 8px; left: -3px; bottom: 8px; width: 6px; cursor: ew-resize; }
181
+ .resize-handle-ne { top: -3px; right: -3px; width: 12px; height: 12px; cursor: nesw-resize; }
182
+ .resize-handle-nw { top: -3px; left: -3px; width: 12px; height: 12px; cursor: nwse-resize; }
183
+ .resize-handle-se { bottom: -3px; right: -3px; width: 12px; height: 12px; cursor: nwse-resize; }
184
+ .resize-handle-sw { bottom: -3px; left: -3px; width: 12px; height: 12px; cursor: nesw-resize; }
185
+
186
+ .debug-panel:hover .resize-handle::after {
187
+ content: '';
188
+ position: absolute;
189
+ background: rgba(139, 92, 246, 0.3);
190
+ border-radius: 2px;
191
+ }
192
+
193
+ .resize-handle-n::after,
194
+ .resize-handle-s::after {
195
+ top: 2px;
196
+ left: 0;
197
+ right: 0;
198
+ height: 2px;
199
+ }
200
+
201
+ .resize-handle-e::after,
202
+ .resize-handle-w::after {
203
+ top: 0;
204
+ bottom: 0;
205
+ left: 2px;
206
+ width: 2px;
207
+ }
208
+
209
+ .resize-handle-ne::after,
210
+ .resize-handle-nw::after,
211
+ .resize-handle-se::after,
212
+ .resize-handle-sw::after {
213
+ top: 3px;
214
+ left: 3px;
215
+ width: 6px;
216
+ height: 6px;
217
+ }
218
+
219
+ /* Enhanced Tabs */
220
+ .debug-tabs {
221
+ display: flex;
222
+ background: var(--bg-secondary);
223
+ border-bottom: 1px solid var(--border-primary);
224
+ overflow-x: auto;
225
+ scrollbar-width: none;
226
+ -ms-overflow-style: none;
227
+ }
228
+
229
+ .debug-tabs::-webkit-scrollbar {
230
+ display: none;
231
+ }
232
+
233
+ .debug-tab {
234
+ display: flex;
235
+ align-items: center;
236
+ gap: 6px;
237
+ padding: 8px 12px;
238
+ background: none;
239
+ border: none;
240
+ color: var(--text-secondary);
241
+ cursor: pointer;
242
+ transition: all 0.2s ease;
243
+ border-bottom: 2px solid transparent;
244
+ white-space: nowrap;
245
+ font-size: 11px;
246
+ min-width: fit-content;
247
+ }
248
+
249
+ .debug-tab:hover {
250
+ background: rgba(148, 163, 184, 0.1);
251
+ color: var(--text-primary);
252
+ }
253
+
254
+ .debug-tab.active {
255
+ color: var(--accent-primary);
256
+ background: rgba(139, 92, 246, 0.1);
257
+ border-bottom-color: var(--accent-primary);
258
+ }
259
+
260
+ .debug-tab i {
261
+ font-size: 12px;
262
+ }
263
+
264
+ /* Content Wrapper */
265
+ .debug-content-wrapper {
266
+ flex: 1;
267
+ position: relative;
268
+ overflow: hidden;
269
+ min-height: 0;
270
+ }
271
+
272
+ .debug-panel-content {
273
+ position: absolute;
274
+ top: 0;
275
+ left: 0;
276
+ right: 0;
277
+ bottom: 0;
278
+ display: none;
279
+ flex-direction: column;
280
+ overflow: hidden;
281
+ }
282
+
283
+ .debug-panel-content.active {
284
+ display: flex;
285
+ }
286
+
287
+ /* Panel Headers */
288
+ .panel-header {
289
+ display: flex;
290
+ justify-content: space-between;
291
+ align-items: center;
292
+ padding: 12px 16px;
293
+ background: rgba(30, 41, 59, 0.5);
294
+ border-bottom: 1px solid var(--border-primary);
295
+ }
296
+
297
+ .panel-header h4 {
298
+ margin: 0;
299
+ font-size: 14px;
300
+ font-weight: 600;
301
+ color: var(--text-primary);
302
+ }
303
+
304
+ .header-controls {
305
+ display: flex;
306
+ gap: 8px;
307
+ align-items: center;
308
+ }
309
+
310
+ .scroll-content {
311
+ flex: 1;
312
+ overflow-y: auto;
313
+ padding: 8px;
314
+ }
315
+
316
+ /* Custom Scrollbar */
317
+ .scroll-content::-webkit-scrollbar {
318
+ width: 6px;
319
+ height: 6px;
320
+ }
321
+
322
+ .scroll-content::-webkit-scrollbar-track {
323
+ background: rgba(51, 65, 85, 0.3);
324
+ border-radius: 3px;
325
+ }
326
+
327
+ .scroll-content::-webkit-scrollbar-thumb {
328
+ background: linear-gradient(180deg, var(--text-muted) 0%, var(--border-primary) 100%);
329
+ border-radius: 3px;
330
+ }
331
+
332
+ .scroll-content::-webkit-scrollbar-thumb:hover {
333
+ background: linear-gradient(180deg, var(--text-secondary) 0%, var(--text-muted) 100%);
334
+ }
335
+
336
+ .scroll-content::-webkit-scrollbar-corner {
337
+ background: transparent;
338
+ }
339
+
340
+ /* State Editing */
341
+ .editable-value-wrapper {
342
+ display: inline-flex;
343
+ align-items: center;
344
+ gap: 4px;
345
+ position: relative;
346
+ }
347
+
348
+ .tree-value.editable {
349
+ cursor: text;
350
+ padding: 2px 4px;
351
+ border-radius: 3px;
352
+ border: 1px solid transparent;
353
+ transition: all 0.2s ease;
354
+ }
355
+
356
+ .tree-value.editable:hover {
357
+ background: rgba(139, 92, 246, 0.1);
358
+ border-color: rgba(139, 92, 246, 0.3);
359
+ }
360
+
361
+ .tree-value.editing {
362
+ background: rgba(139, 92, 246, 0.2);
363
+ border-color: var(--accent-primary);
364
+ outline: none;
365
+ }
366
+
367
+ .tree-value.edit-success {
368
+ background: rgba(34, 197, 94, 0.2);
369
+ border-color: var(--success);
370
+ }
371
+
372
+ .tree-value.edit-error {
373
+ background: rgba(239, 68, 68, 0.2);
374
+ border-color: var(--error);
375
+ }
376
+
377
+ .edit-value-btn {
378
+ opacity: 0;
379
+ background: rgba(139, 92, 246, 0.8);
380
+ border: none;
381
+ color: white;
382
+ padding: 2px 4px;
383
+ border-radius: 2px;
384
+ cursor: pointer;
385
+ font-size: 10px;
386
+ transition: opacity 0.2s ease;
387
+ }
388
+
389
+ .editable-value-wrapper:hover .edit-value-btn {
390
+ opacity: 1;
391
+ }
392
+
393
+ .edit-controls {
394
+ display: flex;
395
+ gap: 4px;
396
+ margin-top: 4px;
397
+ position: absolute;
398
+ top: 100%;
399
+ left: 0;
400
+ z-index: 10;
401
+ }
402
+
403
+ .tree-toggle-btn {
404
+ background: none;
405
+ border: none;
406
+ color: var(--text-muted);
407
+ cursor: pointer;
408
+ padding: 0;
409
+ margin-right: 4px;
410
+ font-size: 10px;
411
+ transition: color 0.2s ease;
412
+ }
413
+
414
+ .tree-toggle-btn:hover {
415
+ color: var(--accent-primary);
416
+ }
417
+
418
+ /* State Tree */
419
+ .state-tree-container {
420
+ padding: 16px;
421
+ height: calc(100% - 60px);
422
+ overflow: auto;
423
+ }
424
+
425
+ .tree-node {
426
+ margin-left: 20px;
427
+ position: relative;
428
+ }
429
+
430
+ .tree-node-content {
431
+ padding: 3px 0;
432
+ cursor: pointer;
433
+ border-radius: 3px;
434
+ padding: 2px 4px;
435
+ }
436
+
437
+ .tree-node-content:hover {
438
+ background: rgba(148, 163, 184, 0.1);
439
+ }
440
+
441
+ .tree-node.collapsible > .tree-node-content::before {
442
+ content: "▶";
443
+ position: absolute;
444
+ left: -16px;
445
+ color: var(--text-muted);
446
+ font-size: 10px;
447
+ transition: transform 0.2s ease;
448
+ top: 5px;
449
+ }
450
+
451
+ .tree-node.expanded > .tree-node-content::before {
452
+ transform: rotate(90deg);
453
+ }
454
+
455
+ .tree-key {
456
+ color: #60a5fa;
457
+ font-weight: 500;
458
+ }
459
+
460
+ .tree-value {
461
+ color: var(--text-primary);
462
+ }
463
+
464
+ .tree-value-string {
465
+ color: var(--warning);
466
+ }
467
+
468
+ .tree-value-number {
469
+ color: #34d399;
470
+ }
471
+
472
+ .tree-value-boolean {
473
+ color: #a78bfa;
474
+ }
475
+
476
+ .tree-value-null {
477
+ color: var(--text-secondary);
478
+ }
479
+
480
+ .tree-value-object {
481
+ color: var(--text-muted);
482
+ font-style: italic;
483
+ }
484
+
485
+ .tree-child-container {
486
+ border-left: 1px solid var(--border-primary);
487
+ margin-left: 8px;
488
+ }
489
+
490
+ .tree-child-container.hidden {
491
+ display: none;
492
+ }
493
+
494
+ /* Log Entries */
495
+ .log-entry {
496
+ display: flex;
497
+ align-items: flex-start;
498
+ gap: 10px;
499
+ padding: 8px 12px;
500
+ margin-bottom: 2px;
501
+ border-radius: 4px;
502
+ transition: all 0.2s ease;
503
+ font-size: 12px;
504
+ line-height: 1.5;
505
+ animation: fadeIn 0.3s ease;
506
+ }
507
+
508
+ .log-entry:hover {
509
+ background: rgba(148, 163, 184, 0.05);
510
+ }
511
+
512
+ .log-entry.log-level-warn {
513
+ background: rgba(251, 191, 36, 0.1);
514
+ border-left: 3px solid var(--warning);
515
+ }
516
+
517
+ .log-entry.log-level-error {
518
+ background: rgba(239, 68, 68, 0.1);
519
+ border-left: 3px solid var(--error);
520
+ }
521
+
522
+ .log-entry.network-entry.error {
523
+ background: rgba(239, 68, 68, 0.1);
524
+ border-left: 3px solid var(--error);
525
+ }
526
+
527
+ .log-entry.network-entry.warning {
528
+ background: rgba(251, 191, 36, 0.1);
529
+ border-left: 3px solid var(--warning);
530
+ }
531
+
532
+ .log-entry.network-entry.success {
533
+ background: rgba(34, 197, 94, 0.1);
534
+ border-left: 3px solid var(--success);
535
+ }
536
+
537
+ .log-time {
538
+ color: var(--text-muted);
539
+ font-size: 11px;
540
+ white-space: nowrap;
541
+ font-weight: 500;
542
+ }
543
+
544
+ .log-type-icon {
545
+ font-size: 14px;
546
+ width: 20px;
547
+ text-align: center;
548
+ }
549
+
550
+ .log-content {
551
+ flex: 1;
552
+ min-width: 0;
553
+ }
554
+
555
+ .log-message {
556
+ word-break: break-word;
557
+ color: var(--text-primary);
558
+ }
559
+
560
+ .log-object {
561
+ background: var(--bg-tertiary);
562
+ border: 1px solid var(--border-primary);
563
+ border-radius: 4px;
564
+ padding: 8px;
565
+ margin: 4px 0;
566
+ font-size: 11px;
567
+ overflow-x: auto;
568
+ }
569
+
570
+ .log-stack {
571
+ color: var(--text-secondary);
572
+ font-size: 11px;
573
+ margin-top: 4px;
574
+ white-space: pre-wrap;
575
+ background: rgba(51, 65, 85, 0.3);
576
+ padding: 4px 8px;
577
+ border-radius: 3px;
578
+ }
579
+
580
+ /* Network Specific */
581
+ .network-status {
582
+ padding: 2px 6px;
583
+ border-radius: 3px;
584
+ font-weight: bold;
585
+ font-size: 11px;
586
+ min-width: 40px;
587
+ text-align: center;
588
+ }
589
+
590
+ .network-status.status-2xx {
591
+ background: var(--success);
592
+ color: white;
593
+ }
594
+
595
+ .network-status.status-3xx {
596
+ background: var(--warning);
597
+ color: var(--bg-primary);
598
+ }
599
+
600
+ .network-status.status-4xx,
601
+ .network-status.status-5xx {
602
+ background: var(--error);
603
+ color: white;
604
+ }
605
+
606
+ .network-method {
607
+ padding: 2px 6px;
608
+ border-radius: 3px;
609
+ font-weight: bold;
610
+ font-size: 11px;
611
+ min-width: 50px;
612
+ text-align: center;
613
+ }
614
+
615
+ .network-method.method-get {
616
+ background: #3b82f6;
617
+ color: white;
618
+ }
619
+
620
+ .network-method.method-post {
621
+ background: var(--success);
622
+ color: white;
623
+ }
624
+
625
+ .network-method.method-put {
626
+ background: #f59e0b;
627
+ color: white;
628
+ }
629
+
630
+ .network-method.method-delete {
631
+ background: var(--error);
632
+ color: white;
633
+ }
634
+
635
+ .network-duration {
636
+ color: var(--text-muted);
637
+ font-size: 11px;
638
+ min-width: 50px;
639
+ }
640
+
641
+ .network-url {
642
+ flex: 1;
643
+ color: var(--text-primary);
644
+ word-break: break-all;
645
+ }
646
+
647
+ .network-error {
648
+ color: #fca5a5;
649
+ font-size: 11px;
650
+ margin-top: 2px;
651
+ }
652
+
653
+ /* Filters */
654
+ .debug-filter-bar,
655
+ .console-filters,
656
+ .network-filters {
657
+ display: flex;
658
+ align-items: center;
659
+ gap: 12px;
660
+ padding: 8px 16px;
661
+ background: var(--bg-secondary);
662
+ border-bottom: 1px solid var(--border-primary);
663
+ flex-wrap: wrap;
664
+ }
665
+
666
+ .filter-label {
667
+ display: flex;
668
+ align-items: center;
669
+ gap: 6px;
670
+ padding: 4px 8px;
671
+ border-radius: 4px;
672
+ cursor: pointer;
673
+ transition: all 0.2s ease;
674
+ border: 1px solid transparent;
675
+ font-size: 11px;
676
+ }
677
+
678
+ .filter-label:hover {
679
+ background: rgba(148, 163, 184, 0.1);
680
+ }
681
+
682
+ .filter-label.active {
683
+ background: rgba(139, 92, 246, 0.2);
684
+ border-color: var(--accent-primary);
685
+ }
686
+
687
+ .filter-label input[type="checkbox"] {
688
+ margin: 0;
689
+ }
690
+
691
+ .filter-input {
692
+ background: var(--bg-tertiary);
693
+ border: 1px solid var(--border-primary);
694
+ color: var(--text-primary);
695
+ padding: 6px 12px;
696
+ border-radius: 4px;
697
+ font-size: 12px;
698
+ flex: 1;
699
+ min-width: 200px;
700
+ }
701
+
702
+ .filter-input::placeholder {
703
+ color: var(--text-muted);
704
+ }
705
+
706
+ .filter-input:focus {
707
+ outline: none;
708
+ border-color: var(--accent-primary);
709
+ box-shadow: 0 0 0 2px rgba(139, 92, 246, 0.2);
710
+ }
711
+
712
+ /* Events */
713
+ .event-form {
714
+ display: flex;
715
+ gap: 8px;
716
+ padding: 12px 16px;
717
+ background: var(--bg-secondary);
718
+ border-bottom: 1px solid var(--border-primary);
719
+ }
720
+
721
+ .event-select,
722
+ .event-input {
723
+ background: var(--bg-tertiary);
724
+ border: 1px solid var(--border-primary);
725
+ color: var(--text-primary);
726
+ padding: 6px 12px;
727
+ border-radius: 4px;
728
+ font-size: 12px;
729
+ }
730
+
731
+ .event-select {
732
+ min-width: 200px;
733
+ }
734
+
735
+ .event-input {
736
+ flex: 1;
737
+ }
738
+
739
+ .event-entry {
740
+ border-left: 3px solid var(--accent-primary);
741
+ }
742
+
743
+ .event-entry.event-emitted {
744
+ background: rgba(139, 92, 246, 0.1);
745
+ }
746
+
747
+ .event-entry.event-received {
748
+ background: rgba(34, 197, 94, 0.1);
749
+ border-left-color: var(--success);
750
+ }
751
+
752
+ .event-direction {
753
+ font-size: 14px;
754
+ width: 20px;
755
+ text-align: center;
756
+ }
757
+
758
+ .event-name {
759
+ color: #60a5fa;
760
+ font-weight: bold;
761
+ min-width: 120px;
762
+ }
763
+
764
+ .event-data {
765
+ font-size: 11px;
766
+ color: var(--text-secondary);
767
+ background: var(--bg-tertiary);
768
+ padding: 4px 8px;
769
+ border-radius: 3px;
770
+ margin-top: 4px;
771
+ white-space: pre-wrap;
772
+ }
773
+
774
+ /* Performance */
775
+ .performance-stats {
776
+ display: grid;
777
+ grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
778
+ gap: 12px;
779
+ padding: 16px;
780
+ background: rgba(30, 41, 59, 0.3);
781
+ border-bottom: 1px solid var(--border-primary);
782
+ }
783
+
784
+ .stat-card {
785
+ background: var(--bg-tertiary);
786
+ border: 1px solid var(--border-primary);
787
+ border-radius: 6px;
788
+ padding: 12px;
789
+ text-align: center;
790
+ }
791
+
792
+ .stat-value {
793
+ font-size: 20px;
794
+ font-weight: bold;
795
+ color: var(--accent-primary);
796
+ margin-bottom: 4px;
797
+ }
798
+
799
+ .stat-label {
800
+ font-size: 11px;
801
+ color: var(--text-muted);
802
+ text-transform: uppercase;
803
+ letter-spacing: 0.5px;
804
+ }
805
+
806
+ .performance-entry {
807
+ border-left: 3px solid #06b6d4;
808
+ }
809
+
810
+ .performance-type {
811
+ padding: 2px 6px;
812
+ border-radius: 3px;
813
+ font-size: 10px;
814
+ font-weight: bold;
815
+ text-transform: uppercase;
816
+ }
817
+
818
+ .performance-type.type-navigation {
819
+ background: #3b82f6;
820
+ color: white;
821
+ }
822
+
823
+ .performance-type.type-resource {
824
+ background: var(--success);
825
+ color: white;
826
+ }
827
+
828
+ .performance-type.type-measure {
829
+ background: #f59e0b;
830
+ color: white;
831
+ }
832
+
833
+ .performance-type.type-mark {
834
+ background: var(--accent-primary);
835
+ color: white;
836
+ }
837
+
838
+ .performance-duration {
839
+ color: var(--text-muted);
840
+ font-size: 11px;
841
+ min-width: 60px;
842
+ }
843
+
844
+ .performance-name {
845
+ flex: 1;
846
+ color: var(--text-primary);
847
+ word-break: break-all;
848
+ }
849
+
850
+ /* History */
851
+ .history-entry {
852
+ background: var(--bg-tertiary);
853
+ border: 1px solid var(--border-primary);
854
+ border-radius: 6px;
855
+ margin-bottom: 8px;
856
+ overflow: hidden;
857
+ }
858
+
859
+ .history-header {
860
+ display: flex;
861
+ justify-content: space-between;
862
+ align-items: center;
863
+ padding: 8px 12px;
864
+ background: var(--bg-secondary);
865
+ border-bottom: 1px solid var(--border-primary);
866
+ }
867
+
868
+ .history-time {
869
+ color: var(--text-muted);
870
+ font-size: 11px;
871
+ }
872
+
873
+ .history-action {
874
+ color: #60a5fa;
875
+ font-weight: 500;
876
+ flex: 1;
877
+ margin-left: 12px;
878
+ }
879
+
880
+ .time-travel-btn {
881
+ background: var(--accent-primary);
882
+ color: white;
883
+ border: none;
884
+ padding: 4px 8px;
885
+ border-radius: 3px;
886
+ cursor: pointer;
887
+ font-size: 11px;
888
+ transition: all 0.2s ease;
889
+ }
890
+
891
+ .time-travel-btn:hover {
892
+ background: #7c3aed;
893
+ transform: translateY(-1px);
894
+ }
895
+
896
+ .history-details {
897
+ border: none;
898
+ }
899
+
900
+ .history-details summary {
901
+ padding: 8px 12px;
902
+ cursor: pointer;
903
+ color: var(--text-secondary);
904
+ font-size: 12px;
905
+ }
906
+
907
+ .history-details summary:hover {
908
+ background: rgba(148, 163, 184, 0.1);
909
+ }
910
+
911
+ .history-snapshot {
912
+ padding: 12px;
913
+ background: var(--bg-primary);
914
+ border-top: 1px solid var(--border-primary);
915
+ font-size: 11px;
916
+ white-space: pre-wrap;
917
+ overflow-x: auto;
918
+ }
919
+
920
+ /* Layout Panel */
921
+ .layout-panel {
922
+ position: absolute;
923
+ top: 0;
924
+ left: 0;
925
+ right: 0;
926
+ bottom: 0;
927
+ background: linear-gradient(135deg, var(--bg-primary) 0%, var(--bg-secondary) 100%);
928
+ z-index: 5;
929
+ border-radius: 0 0 8px 8px;
930
+ transform: translateY(0);
931
+ transition: transform 0.3s ease;
932
+ }
933
+
934
+ .layout-panel.hidden {
935
+ transform: translateY(-100%);
936
+ }
937
+
938
+ .layout-header {
939
+ display: flex;
940
+ justify-content: space-between;
941
+ align-items: center;
942
+ padding: 16px;
943
+ border-bottom: 1px solid var(--border-primary);
944
+ }
945
+
946
+ .layout-header h3 {
947
+ margin: 0;
948
+ color: var(--text-primary);
949
+ font-size: 16px;
950
+ }
951
+
952
+ .layout-content {
953
+ padding: 20px;
954
+ overflow-y: auto;
955
+ height: calc(100% - 80px);
956
+ }
957
+
958
+ .layout-presets h4 {
959
+ margin: 0 0 12px 0;
960
+ color: var(--text-secondary);
961
+ font-size: 14px;
962
+ }
963
+
964
+ .preset-grid {
965
+ display: grid;
966
+ grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
967
+ gap: 12px;
968
+ margin-bottom: 20px;
969
+ }
970
+
971
+ .preset-btn {
972
+ background: var(--bg-tertiary);
973
+ border: 1px solid var(--border-primary);
974
+ border-radius: 6px;
975
+ padding: 12px 8px;
976
+ cursor: pointer;
977
+ transition: all 0.2s ease;
978
+ color: var(--text-primary);
979
+ display: flex;
980
+ flex-direction: column;
981
+ align-items: center;
982
+ gap: 8px;
983
+ }
984
+
985
+ .preset-btn:hover {
986
+ background: rgba(139, 92, 246, 0.2);
987
+ border-color: var(--accent-primary);
988
+ }
989
+
990
+ .preset-visual {
991
+ width: 40px;
992
+ height: 30px;
993
+ border: 2px solid currentColor;
994
+ border-radius: 3px;
995
+ position: relative;
996
+ }
997
+
998
+ .preset-visual.single::after {
999
+ content: '';
1000
+ position: absolute;
1001
+ top: 3px;
1002
+ left: 3px;
1003
+ right: 3px;
1004
+ bottom: 3px;
1005
+ background: currentColor;
1006
+ opacity: 0.3;
1007
+ border-radius: 1px;
1008
+ }
1009
+
1010
+ .preset-visual.split-h::after {
1011
+ content: '';
1012
+ position: absolute;
1013
+ top: 3px;
1014
+ left: 3px;
1015
+ right: 20px;
1016
+ bottom: 3px;
1017
+ background: currentColor;
1018
+ opacity: 0.3;
1019
+ border-radius: 1px;
1020
+ }
1021
+
1022
+ .preset-visual.split-h::before {
1023
+ content: '';
1024
+ position: absolute;
1025
+ top: 3px;
1026
+ right: 3px;
1027
+ left: 20px;
1028
+ bottom: 3px;
1029
+ background: currentColor;
1030
+ opacity: 0.5;
1031
+ border-radius: 1px;
1032
+ }
1033
+
1034
+ .preset-visual.split-v::after {
1035
+ content: '';
1036
+ position: absolute;
1037
+ top: 3px;
1038
+ left: 3px;
1039
+ right: 3px;
1040
+ bottom: 15px;
1041
+ background: currentColor;
1042
+ opacity: 0.3;
1043
+ border-radius: 1px;
1044
+ }
1045
+
1046
+ .preset-visual.split-v::before {
1047
+ content: '';
1048
+ position: absolute;
1049
+ bottom: 3px;
1050
+ left: 3px;
1051
+ right: 3px;
1052
+ top: 15px;
1053
+ background: currentColor;
1054
+ opacity: 0.5;
1055
+ border-radius: 1px;
1056
+ }
1057
+
1058
+ .preset-visual.grid::after {
1059
+ content: '';
1060
+ position: absolute;
1061
+ top: 3px;
1062
+ left: 3px;
1063
+ right: 20px;
1064
+ bottom: 15px;
1065
+ background: currentColor;
1066
+ opacity: 0.3;
1067
+ border-radius: 1px;
1068
+ }
1069
+
1070
+ .preset-visual.grid::before {
1071
+ content: '';
1072
+ position: absolute;
1073
+ top: 3px;
1074
+ right: 3px;
1075
+ left: 20px;
1076
+ bottom: 15px;
1077
+ background: currentColor;
1078
+ opacity: 0.4;
1079
+ border-radius: 1px;
1080
+ }
1081
+
1082
+ .preset-btn span {
1083
+ font-size: 11px;
1084
+ font-weight: 500;
1085
+ }
1086
+
1087
+ .panel-actions {
1088
+ display: flex;
1089
+ flex-wrap: wrap;
1090
+ gap: 8px;
1091
+ padding-top: 16px;
1092
+ border-top: 1px solid var(--border-primary);
1093
+ }
1094
+
1095
+ /* Settings Panel */
1096
+ .settings-panel {
1097
+ position: absolute;
1098
+ top: 0;
1099
+ left: 0;
1100
+ right: 0;
1101
+ bottom: 0;
1102
+ background: linear-gradient(135deg, var(--bg-primary) 0%, var(--bg-secondary) 100%);
1103
+ z-index: 5;
1104
+ border-radius: 0 0 8px 8px;
1105
+ transform: translateY(0);
1106
+ transition: transform 0.3s ease;
1107
+ }
1108
+
1109
+ .settings-panel.hidden {
1110
+ transform: translateY(-100%);
1111
+ }
1112
+
1113
+ .settings-header {
1114
+ display: flex;
1115
+ justify-content: space-between;
1116
+ align-items: center;
1117
+ padding: 16px;
1118
+ border-bottom: 1px solid var(--border-primary);
1119
+ }
1120
+
1121
+ .settings-header h3 {
1122
+ margin: 0;
1123
+ color: var(--text-primary);
1124
+ font-size: 16px;
1125
+ }
1126
+
1127
+ .settings-content {
1128
+ padding: 20px;
1129
+ overflow-y: auto;
1130
+ height: calc(100% - 80px);
1131
+ }
1132
+
1133
+ .setting-group {
1134
+ margin-bottom: 16px;
1135
+ padding-bottom: 16px;
1136
+ border-bottom: 1px solid var(--border-primary);
1137
+ }
1138
+
1139
+ .setting-group:last-child {
1140
+ border-bottom: none;
1141
+ }
1142
+
1143
+ .setting-group label {
1144
+ display: flex;
1145
+ align-items: center;
1146
+ gap: 8px;
1147
+ color: var(--text-primary);
1148
+ font-size: 14px;
1149
+ cursor: pointer;
1150
+ margin-bottom: 8px;
1151
+ }
1152
+
1153
+ .setting-group input[type="number"],
1154
+ .setting-group input[type="text"],
1155
+ .setting-group select {
1156
+ background: var(--bg-tertiary);
1157
+ border: 1px solid var(--border-primary);
1158
+ color: var(--text-primary);
1159
+ padding: 8px 12px;
1160
+ border-radius: 4px;
1161
+ font-size: 12px;
1162
+ width: 100%;
1163
+ max-width: 200px;
1164
+ }
1165
+
1166
+ /* Toggle Labels */
1167
+ .toggle-label {
1168
+ display: flex;
1169
+ align-items: center;
1170
+ gap: 6px;
1171
+ color: var(--text-primary);
1172
+ font-size: 12px;
1173
+ cursor: pointer;
1174
+ padding: 4px 8px;
1175
+ border-radius: 4px;
1176
+ transition: background 0.2s ease;
1177
+ }
1178
+
1179
+ .toggle-label:hover {
1180
+ background: rgba(148, 163, 184, 0.1);
1181
+ }
1182
+
1183
+ .toggle-label input[type="checkbox"] {
1184
+ margin: 0;
1185
+ }
1186
+
1187
+ /* Buttons */
1188
+ .btn {
1189
+ padding: 6px 12px;
1190
+ border: none;
1191
+ border-radius: 4px;
1192
+ cursor: pointer;
1193
+ font-size: 11px;
1194
+ font-weight: 500;
1195
+ transition: all 0.2s ease;
1196
+ display: inline-flex;
1197
+ align-items: center;
1198
+ gap: 4px;
1199
+ }
1200
+
1201
+ .btn-primary {
1202
+ background: var(--accent-primary);
1203
+ color: white;
1204
+ }
1205
+
1206
+ .btn-primary:hover {
1207
+ background: #7c3aed;
1208
+ transform: translateY(-1px);
1209
+ }
1210
+
1211
+ .btn-secondary {
1212
+ background: var(--bg-tertiary);
1213
+ color: var(--text-primary);
1214
+ border: 1px solid var(--border-primary);
1215
+ }
1216
+
1217
+ .btn-secondary:hover {
1218
+ background: rgba(100, 116, 139, 0.8);
1219
+ transform: translateY(-1px);
1220
+ }
1221
+
1222
+ .btn-danger {
1223
+ background: var(--error);
1224
+ color: white;
1225
+ }
1226
+
1227
+ .btn-danger:hover {
1228
+ background: #dc2626;
1229
+ transform: translateY(-1px);
1230
+ }
1231
+
1232
+ /* Utilities */
1233
+ .error {
1234
+ color: #fca5a5;
1235
+ background: rgba(239, 68, 68, 0.1);
1236
+ padding: 8px 12px;
1237
+ border-radius: 4px;
1238
+ border-left: 3px solid var(--error);
1239
+ }
1240
+
1241
+ .placeholder {
1242
+ color: var(--text-muted);
1243
+ text-align: center;
1244
+ padding: 40px 20px;
1245
+ font-style: italic;
1246
+ }
1247
+
1248
+ .panel-loading {
1249
+ display: flex;
1250
+ align-items: center;
1251
+ justify-content: center;
1252
+ gap: 8px;
1253
+ height: 100%;
1254
+ color: var(--text-muted);
1255
+ }
1256
+
1257
+ /* Animations */
1258
+ @keyframes pulse {
1259
+ 0%, 100% {
1260
+ opacity: 1;
1261
+ }
1262
+ 50% {
1263
+ opacity: 0.7;
1264
+ }
1265
+ }
1266
+
1267
+ @keyframes slideIn {
1268
+ from {
1269
+ opacity: 0;
1270
+ transform: translateY(-20px);
1271
+ }
1272
+ to {
1273
+ opacity: 1;
1274
+ transform: translateY(0);
1275
+ }
1276
+ }
1277
+
1278
+ .debug-panel {
1279
+ animation: slideIn 0.3s ease;
1280
+ }
1281
+
1282
+ @keyframes fadeIn {
1283
+ from {
1284
+ opacity: 0;
1285
+ transform: translateY(10px);
1286
+ }
1287
+ to {
1288
+ opacity: 1;
1289
+ transform: translateY(0);
1290
+ }
1291
+ }
1292
+
1293
+ /* Responsive Design */
1294
+ @media (max-width: 768px) {
1295
+ .debug-panel {
1296
+ min-width: 280px;
1297
+ font-size: 12px;
1298
+ }
1299
+
1300
+ .debug-tab span {
1301
+ display: none;
1302
+ }
1303
+
1304
+ .debug-controls {
1305
+ gap: 2px;
1306
+ }
1307
+
1308
+ .control-btn {
1309
+ padding: 4px 6px;
1310
+ font-size: 11px;
1311
+ }
1312
+
1313
+ .preset-grid {
1314
+ grid-template-columns: repeat(2, 1fr);
1315
+ }
1316
+
1317
+ .performance-stats {
1318
+ grid-template-columns: 1fr;
1319
+ }
1320
+
1321
+ .panel-actions {
1322
+ flex-direction: column;
1323
+ }
1324
+
1325
+ .debug-header-title {
1326
+ gap: 4px;
1327
+ }
1328
+
1329
+ .panel-id {
1330
+ display: none;
1331
+ }
1332
+ }
1333
+
1334
+ /* Print styles */
1335
+ @media print {
1336
+ .debug-panel-container {
1337
+ display: none;
1338
+ }
1339
+ }
1340
+
1341
+ /* High contrast mode */
1342
+ @media (prefers-contrast: high) {
1343
+ .debug-panel {
1344
+ border-width: 2px;
1345
+ }
1346
+
1347
+ .control-btn {
1348
+ border-width: 2px;
1349
+ }
1350
+
1351
+ .log-entry {
1352
+ border-width: 2px;
1353
+ }
1354
+ }
1355
+
1356
+ /* Reduced motion */
1357
+ @media (prefers-reduced-motion: reduce) {
1358
+ .debug-panel,
1359
+ .debug-tab,
1360
+ .control-btn,
1361
+ .log-entry {
1362
+ transition: none;
1363
+ }
1364
+
1365
+ .debug-logo {
1366
+ animation: none;
1367
+ }
1368
+ }