vibespot 0.5.2 → 0.7.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.
package/ui/styles.css CHANGED
@@ -46,6 +46,58 @@
46
46
  --topbar-h: 56px;
47
47
  --statusbar-h: 28px;
48
48
  --rail-w: 48px;
49
+
50
+ /* Shadows & overlays (theme-aware) */
51
+ --shadow-sm: 0 4px 16px rgba(0,0,0,0.3);
52
+ --shadow-lg: 0 16px 48px rgba(0,0,0,0.5);
53
+ --shadow-xl: 0 20px 60px rgba(0,0,0,0.6);
54
+ --overlay-bg: rgba(0,0,0,0.6);
55
+ --scrollbar-thumb: rgba(255,255,255,0.08);
56
+ --scrollbar-hover: rgba(255,255,255,0.14);
57
+ --bg-deep: #0a0a0a;
58
+ --bg-code: rgba(0,0,0,0.3);
59
+ --bg-code-block: rgba(0,0,0,0.4);
60
+ --text-on-accent: #fff;
61
+ --topbar-bg: rgba(12,10,9,0.85);
62
+ --chrome-dot: rgba(255,255,255,0.08);
63
+ --title-gradient: linear-gradient(135deg, #ffffff, #a5a3b3);
64
+ }
65
+
66
+ /* ---------------------------------------------------------------- Light Mode */
67
+ [data-theme="light"] {
68
+ --bg: #faf9f7;
69
+ --bg-panel: rgba(0,0,0,0.02);
70
+ --bg-panel-solid: #f3f2f0;
71
+ --bg-input: rgba(0,0,0,0.03);
72
+ --bg-hover: rgba(0,0,0,0.05);
73
+ --bg-active: rgba(0,0,0,0.07);
74
+ --border: rgba(0,0,0,0.08);
75
+ --border-hover: rgba(0,0,0,0.15);
76
+ --text: #1a1a1a;
77
+ --text-dim: rgba(0,0,0,0.55);
78
+ --text-muted: rgba(0,0,0,0.3);
79
+ --accent: #d4552e;
80
+ --accent-hover: #c04a25;
81
+ --accent-dim: rgba(212,85,46,0.12);
82
+ --accent-glow: rgba(212,85,46,0.2);
83
+ --accent-tint: rgba(212,85,46,0.05);
84
+ --accent-gradient: linear-gradient(135deg, #d4552e, #e8714f);
85
+ --success: #16a34a;
86
+ --warning: #d97706;
87
+ --error: #dc2626;
88
+ --shadow-sm: 0 4px 16px rgba(0,0,0,0.08);
89
+ --shadow-lg: 0 16px 48px rgba(0,0,0,0.12);
90
+ --shadow-xl: 0 20px 60px rgba(0,0,0,0.15);
91
+ --overlay-bg: rgba(0,0,0,0.3);
92
+ --scrollbar-thumb: rgba(0,0,0,0.12);
93
+ --scrollbar-hover: rgba(0,0,0,0.2);
94
+ --bg-deep: #f0efed;
95
+ --bg-code: rgba(0,0,0,0.05);
96
+ --bg-code-block: rgba(0,0,0,0.06);
97
+ --text-on-accent: #fff;
98
+ --topbar-bg: rgba(250,249,247,0.85);
99
+ --chrome-dot: rgba(0,0,0,0.1);
100
+ --title-gradient: linear-gradient(135deg, #1a1a1a, #6b6878);
49
101
  }
50
102
 
51
103
  * { margin: 0; padding: 0; box-sizing: border-box; }
@@ -79,8 +131,8 @@ body { display: flex; }
79
131
  /* ---------------------------------------------------------------- Scrollbar */
80
132
  ::-webkit-scrollbar { width: 6px; }
81
133
  ::-webkit-scrollbar-track { background: transparent; }
82
- ::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.08); border-radius: var(--radius-pill); }
83
- ::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.14); }
134
+ ::-webkit-scrollbar-thumb { background: var(--scrollbar-thumb); border-radius: var(--radius-pill); }
135
+ ::-webkit-scrollbar-thumb:hover { background: var(--scrollbar-hover); }
84
136
 
85
137
  /* ---------------------------------------------------------------- Selection */
86
138
  ::selection { background: var(--accent-glow); }
@@ -123,7 +175,7 @@ body { display: flex; }
123
175
  font-weight: 700;
124
176
  letter-spacing: -0.03em;
125
177
  margin-bottom: 6px;
126
- background: linear-gradient(135deg, #ffffff, #a5a3b3);
178
+ background: var(--title-gradient);
127
179
  -webkit-background-clip: text;
128
180
  -webkit-text-fill-color: transparent;
129
181
  background-clip: text;
@@ -301,6 +353,67 @@ body { display: flex; }
301
353
  margin: 0 auto;
302
354
  }
303
355
 
356
+ .dashboard__theme-heading {
357
+ font-size: 28px;
358
+ font-weight: 700;
359
+ color: var(--text);
360
+ margin: 0 0 24px 0;
361
+ letter-spacing: -0.5px;
362
+ cursor: default;
363
+ }
364
+
365
+ .dashboard__theme-heading--editing {
366
+ border: 1px solid var(--accent);
367
+ border-radius: var(--radius);
368
+ padding: 2px 8px;
369
+ outline: none;
370
+ cursor: text;
371
+ }
372
+
373
+ .dashboard__theme-path {
374
+ display: flex;
375
+ align-items: center;
376
+ gap: 8px;
377
+ margin: -16px 0 24px 0;
378
+ color: var(--text-muted);
379
+ font-size: 13px;
380
+ font-family: "SF Mono", "Fira Code", "Fira Mono", monospace;
381
+ }
382
+
383
+ .dashboard__theme-path-text {
384
+ overflow: hidden;
385
+ text-overflow: ellipsis;
386
+ white-space: nowrap;
387
+ user-select: all;
388
+ cursor: text;
389
+ }
390
+
391
+ .dashboard__download-btn {
392
+ display: inline-flex;
393
+ align-items: center;
394
+ gap: 4px;
395
+ margin-left: auto;
396
+ padding: 4px 10px;
397
+ background: var(--surface-2);
398
+ color: var(--text-muted);
399
+ border: 1px solid var(--border);
400
+ border-radius: var(--radius);
401
+ font-size: 12px;
402
+ cursor: pointer;
403
+ white-space: nowrap;
404
+ transition: color 0.15s, border-color 0.15s;
405
+ }
406
+
407
+ .dashboard__download-btn:hover {
408
+ color: var(--text);
409
+ border-color: var(--text-muted);
410
+ }
411
+
412
+ .dashboard__download-btn:disabled {
413
+ opacity: 0.5;
414
+ cursor: default;
415
+ }
416
+
304
417
  .dashboard__section {
305
418
  margin-bottom: 36px;
306
419
  }
@@ -423,6 +536,17 @@ body { display: flex; }
423
536
  white-space: nowrap;
424
537
  overflow: hidden;
425
538
  text-overflow: ellipsis;
539
+ cursor: default;
540
+ }
541
+
542
+ .dashboard__template-label--editing {
543
+ background: var(--bg);
544
+ border: 1px solid var(--accent);
545
+ border-radius: 3px;
546
+ padding: 0 4px;
547
+ outline: none;
548
+ overflow: visible;
549
+ cursor: text;
426
550
  }
427
551
 
428
552
  .dashboard__template-meta {
@@ -535,7 +659,7 @@ body { display: flex; }
535
659
  width: 100%;
536
660
  height: 320px;
537
661
  border: none;
538
- background: #0f0f14;
662
+ background: var(--bg-deep);
539
663
  }
540
664
 
541
665
  /* Brand asset upload */
@@ -620,7 +744,7 @@ body { display: flex; }
620
744
  align-items: center;
621
745
  justify-content: space-between;
622
746
  padding: 0 16px;
623
- background: rgba(12,10,9,0.85);
747
+ background: var(--topbar-bg);
624
748
  backdrop-filter: blur(12px);
625
749
  -webkit-backdrop-filter: blur(12px);
626
750
  border-bottom: 1px solid var(--border);
@@ -649,11 +773,7 @@ body { display: flex; }
649
773
  justify-content: center;
650
774
  background: var(--accent-gradient);
651
775
  border-radius: 8px;
652
- color: #fff;
653
- font-family: var(--font-display);
654
- font-weight: 700;
655
- font-size: 16px;
656
- line-height: 1;
776
+ color: var(--text-on-accent);
657
777
  }
658
778
 
659
779
  .topbar__brand-name {
@@ -674,6 +794,15 @@ body { display: flex; }
674
794
  overflow: hidden;
675
795
  text-overflow: ellipsis;
676
796
  max-width: 180px;
797
+ cursor: default;
798
+ }
799
+
800
+ .topbar__project-pill--editing {
801
+ border-color: var(--accent);
802
+ color: var(--text);
803
+ outline: none;
804
+ overflow: visible;
805
+ cursor: text;
677
806
  }
678
807
 
679
808
  .topbar__center {
@@ -724,7 +853,7 @@ body { display: flex; }
724
853
 
725
854
  .btn--primary {
726
855
  background: var(--accent-gradient);
727
- color: white;
856
+ color: var(--text-on-accent);
728
857
  font-weight: 600;
729
858
  }
730
859
  .btn--primary:hover { filter: brightness(1.1); }
@@ -751,7 +880,7 @@ body { display: flex; }
751
880
 
752
881
  .btn--danger {
753
882
  background: var(--error);
754
- color: #fff;
883
+ color: var(--text-on-accent);
755
884
  border: 1px solid var(--error);
756
885
  }
757
886
  .btn--danger:hover {
@@ -762,7 +891,7 @@ body { display: flex; }
762
891
  .confirm-overlay {
763
892
  position: fixed;
764
893
  inset: 0;
765
- background: rgba(0,0,0,0.6);
894
+ background: var(--overlay-bg);
766
895
  z-index: 9999;
767
896
  display: flex;
768
897
  align-items: center;
@@ -776,7 +905,7 @@ body { display: flex; }
776
905
  padding: 24px;
777
906
  width: 360px;
778
907
  max-width: 90vw;
779
- box-shadow: 0 16px 48px rgba(0,0,0,0.5);
908
+ box-shadow: var(--shadow-lg);
780
909
  }
781
910
  .confirm-dialog__title {
782
911
  font-size: 16px;
@@ -853,7 +982,7 @@ body { display: flex; }
853
982
  }
854
983
  .confirm-dialog__toggle-switch input:checked + .confirm-dialog__toggle-slider::before {
855
984
  transform: translateX(16px);
856
- background: white;
985
+ background: var(--text-on-accent);
857
986
  }
858
987
  .confirm-dialog__toggle-label {
859
988
  font-size: 13px;
@@ -963,7 +1092,7 @@ body { display: flex; }
963
1092
  flex: 1;
964
1093
  display: flex;
965
1094
  position: relative;
966
- background: #111;
1095
+ background: var(--bg-deep);
967
1096
  }
968
1097
 
969
1098
  .resize-handle {
@@ -1262,7 +1391,7 @@ body { display: flex; }
1262
1391
  /* Drag-and-drop animation */
1263
1392
  .module-item--dragging {
1264
1393
  opacity: 0.85;
1265
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
1394
+ box-shadow: var(--shadow-sm);
1266
1395
  z-index: 100;
1267
1396
  position: relative;
1268
1397
  background: var(--bg-panel-solid);
@@ -1405,18 +1534,10 @@ body { display: flex; }
1405
1534
  to { opacity: 1; transform: translateY(0); }
1406
1535
  }
1407
1536
 
1408
- .chat-msg--user {
1409
- flex-direction: row-reverse;
1410
- }
1411
-
1412
- .chat-msg--user .chat-msg__header {
1413
- flex-direction: row-reverse;
1414
- }
1415
-
1416
1537
  .chat-msg--user .chat-msg__bubble {
1417
1538
  background: var(--accent-gradient);
1418
- color: white;
1419
- border-radius: 16px 4px 16px 16px;
1539
+ color: var(--text-on-accent);
1540
+ border-radius: 4px 16px 16px 16px;
1420
1541
  max-width: 85%;
1421
1542
  }
1422
1543
 
@@ -1444,7 +1565,7 @@ body { display: flex; }
1444
1565
  }
1445
1566
  .chat-msg__avatar--user {
1446
1567
  background: var(--accent-gradient);
1447
- color: white;
1568
+ color: var(--text-on-accent);
1448
1569
  }
1449
1570
  .chat-msg__avatar--ai {
1450
1571
  background: var(--accent-dim);
@@ -1460,11 +1581,6 @@ body { display: flex; }
1460
1581
 
1461
1582
  .chat-msg--user .chat-msg__content {
1462
1583
  flex: 0 1 auto;
1463
- text-align: right;
1464
- }
1465
-
1466
- .chat-msg--user .chat-msg__meta {
1467
- text-align: right;
1468
1584
  }
1469
1585
 
1470
1586
  /* Header (sender + time) */
@@ -1493,22 +1609,6 @@ body { display: flex; }
1493
1609
  word-wrap: break-word;
1494
1610
  }
1495
1611
 
1496
- /* Streaming cursor */
1497
- .chat-msg--streaming .chat-msg__bubble::after {
1498
- content: "";
1499
- display: inline-block;
1500
- width: 6px;
1501
- height: 14px;
1502
- background: var(--accent);
1503
- border-radius: 1px;
1504
- margin-left: 2px;
1505
- vertical-align: text-bottom;
1506
- animation: cursorBlink 0.8s ease infinite;
1507
- }
1508
- @keyframes cursorBlink {
1509
- 0%, 100% { opacity: 1; }
1510
- 50% { opacity: 0.2; }
1511
- }
1512
1612
 
1513
1613
  .chat-msg__bubble p { margin-bottom: 8px; }
1514
1614
  .chat-msg__bubble p:last-child { margin-bottom: 0; }
@@ -1516,13 +1616,13 @@ body { display: flex; }
1516
1616
  .chat-msg__bubble code {
1517
1617
  font-family: var(--font-mono);
1518
1618
  font-size: 12px;
1519
- background: rgba(0,0,0,0.3);
1619
+ background: var(--bg-code);
1520
1620
  padding: 1px 5px;
1521
1621
  border-radius: 3px;
1522
1622
  }
1523
1623
 
1524
1624
  .chat-msg__bubble pre {
1525
- background: rgba(0,0,0,0.4);
1625
+ background: var(--bg-code-block);
1526
1626
  padding: 10px;
1527
1627
  border-radius: var(--radius-sm);
1528
1628
  overflow-x: auto;
@@ -1651,7 +1751,7 @@ body { display: flex; }
1651
1751
  background: var(--accent-gradient);
1652
1752
  border: none;
1653
1753
  border-radius: 8px;
1654
- color: white;
1754
+ color: var(--text-on-accent);
1655
1755
  cursor: pointer;
1656
1756
  transition: filter 0.15s;
1657
1757
  flex-shrink: 0;
@@ -1675,11 +1775,11 @@ body { display: flex; }
1675
1775
  flex: 1;
1676
1776
  display: flex;
1677
1777
  flex-direction: column;
1678
- background: #0a0a0a;
1778
+ background: var(--bg-deep);
1679
1779
  border: 1px solid var(--border);
1680
1780
  border-radius: 12px;
1681
1781
  overflow: hidden;
1682
- box-shadow: 0 20px 60px rgba(0,0,0,0.5);
1782
+ box-shadow: var(--shadow-xl);
1683
1783
  transition: max-width 0.3s ease;
1684
1784
  }
1685
1785
 
@@ -1689,7 +1789,7 @@ body { display: flex; }
1689
1789
  align-items: center;
1690
1790
  gap: 12px;
1691
1791
  padding: 0 14px;
1692
- background: rgba(255,255,255,0.03);
1792
+ background: var(--bg-panel);
1693
1793
  border-bottom: 1px solid var(--border);
1694
1794
  flex-shrink: 0;
1695
1795
  }
@@ -1703,7 +1803,7 @@ body { display: flex; }
1703
1803
  width: 10px;
1704
1804
  height: 10px;
1705
1805
  border-radius: 50%;
1706
- background: rgba(255,255,255,0.08);
1806
+ background: var(--chrome-dot);
1707
1807
  }
1708
1808
 
1709
1809
  .browser-chrome__url {
@@ -1842,7 +1942,7 @@ body { display: flex; }
1842
1942
  .settings-overlay {
1843
1943
  position: fixed;
1844
1944
  inset: 0;
1845
- background: rgba(0,0,0,0.7);
1945
+ background: var(--overlay-bg);
1846
1946
  z-index: 500;
1847
1947
  display: flex;
1848
1948
  align-items: center;
@@ -1864,7 +1964,7 @@ body { display: flex; }
1864
1964
  border-radius: var(--radius-lg);
1865
1965
  display: flex;
1866
1966
  flex-direction: column;
1867
- box-shadow: 0 20px 60px rgba(0,0,0,0.6);
1967
+ box-shadow: var(--shadow-xl);
1868
1968
  }
1869
1969
 
1870
1970
  .settings__header {
@@ -2070,7 +2170,7 @@ body { display: flex; }
2070
2170
  .settings__btn--primary {
2071
2171
  background: var(--accent);
2072
2172
  border-color: var(--accent);
2073
- color: #fff;
2173
+ color: var(--text-on-accent);
2074
2174
  }
2075
2175
  .settings__btn--primary:hover { filter: brightness(1.1); }
2076
2176
  .settings__btn--small {
@@ -2082,8 +2182,8 @@ body { display: flex; }
2082
2182
  color: #ef4444;
2083
2183
  }
2084
2184
  .settings__btn--danger:hover {
2085
- background: #ef4444;
2086
- color: #fff;
2185
+ background: var(--error);
2186
+ color: var(--text-on-accent);
2087
2187
  }
2088
2188
  .settings__btn:disabled { opacity: 0.4; cursor: not-allowed; }
2089
2189
  .settings__card-actions {
@@ -2243,12 +2343,12 @@ body { display: flex; }
2243
2343
  .walkthrough__step-dot.active {
2244
2344
  background: var(--accent);
2245
2345
  border-color: var(--accent);
2246
- color: #fff;
2346
+ color: var(--text-on-accent);
2247
2347
  }
2248
2348
  .walkthrough__step-dot.done {
2249
2349
  background: var(--success);
2250
2350
  border-color: var(--success);
2251
- color: #fff;
2351
+ color: var(--text-on-accent);
2252
2352
  }
2253
2353
 
2254
2354
  .walkthrough__step-line {
@@ -2318,7 +2418,7 @@ body { display: flex; }
2318
2418
  text-transform: uppercase;
2319
2419
  letter-spacing: 0.05em;
2320
2420
  background: var(--accent);
2321
- color: #fff;
2421
+ color: var(--text-on-accent);
2322
2422
  padding: 2px 7px;
2323
2423
  border-radius: var(--radius-pill);
2324
2424
  }
@@ -2376,7 +2476,7 @@ body { display: flex; }
2376
2476
  align-items: center;
2377
2477
  gap: 12px;
2378
2478
  padding: 0 16px;
2379
- background: rgba(12,10,9,0.85);
2479
+ background: var(--topbar-bg);
2380
2480
  backdrop-filter: blur(12px);
2381
2481
  -webkit-backdrop-filter: blur(12px);
2382
2482
  border-bottom: 1px solid var(--border);
@@ -2442,6 +2542,20 @@ body { display: flex; }
2442
2542
  padding: 8px;
2443
2543
  }
2444
2544
 
2545
+ .history__toggle {
2546
+ text-align: center;
2547
+ padding: 8px 16px 4px;
2548
+ }
2549
+
2550
+ .history__toggle-btn {
2551
+ background: none;
2552
+ border: none;
2553
+ color: var(--accent);
2554
+ font-size: 12px;
2555
+ cursor: pointer;
2556
+ text-decoration: underline;
2557
+ }
2558
+
2445
2559
  .history__loading,
2446
2560
  .history__empty {
2447
2561
  color: var(--text-dim);
@@ -2602,7 +2716,7 @@ body { display: flex; }
2602
2716
  .upload-action-btn--primary {
2603
2717
  background: var(--accent);
2604
2718
  border-color: var(--accent);
2605
- color: #fff;
2719
+ color: var(--text-on-accent);
2606
2720
  }
2607
2721
 
2608
2722
  .upload-spinner {
@@ -2636,7 +2750,7 @@ body { display: flex; }
2636
2750
  padding: 40px 32px 32px;
2637
2751
  width: 420px;
2638
2752
  max-width: 90vw;
2639
- box-shadow: 0 20px 60px rgba(0,0,0,0.6);
2753
+ box-shadow: var(--shadow-xl);
2640
2754
  text-align: center;
2641
2755
  animation: deployPopIn 0.3s ease;
2642
2756
  }
@@ -2653,7 +2767,7 @@ body { display: flex; }
2653
2767
  font-size: 22px;
2654
2768
  font-weight: 700;
2655
2769
  margin-bottom: 6px;
2656
- background: linear-gradient(135deg, #fff, #a5a3b3);
2770
+ background: var(--title-gradient);
2657
2771
  -webkit-background-clip: text;
2658
2772
  -webkit-text-fill-color: transparent;
2659
2773
  background-clip: text;
@@ -2763,17 +2877,18 @@ body { display: flex; }
2763
2877
  }
2764
2878
 
2765
2879
  .project-rail__footer {
2766
- display: none;
2880
+ display: flex;
2881
+ flex-direction: column;
2882
+ gap: 4px;
2767
2883
  margin-top: auto;
2768
2884
  border-top: 1px solid var(--border);
2769
2885
  padding: 8px;
2770
2886
  flex-shrink: 0;
2887
+ align-items: center;
2771
2888
  }
2772
2889
 
2773
2890
  .project-rail--expanded .project-rail__footer {
2774
- display: flex;
2775
- flex-direction: column;
2776
- gap: 4px;
2891
+ align-items: stretch;
2777
2892
  }
2778
2893
 
2779
2894
  .project-rail__settings-btn {
@@ -2852,7 +2967,7 @@ body { display: flex; }
2852
2967
 
2853
2968
  .project-rail__item--active {
2854
2969
  background: var(--accent-gradient);
2855
- color: white;
2970
+ color: var(--text-on-accent);
2856
2971
  border-radius: 30%;
2857
2972
  }
2858
2973
 
@@ -2887,7 +3002,7 @@ body { display: flex; }
2887
3002
 
2888
3003
  .project-rail__item--active .project-rail__item-bubble {
2889
3004
  background: rgba(255,255,255,0.2);
2890
- color: white;
3005
+ color: var(--text-on-accent);
2891
3006
  }
2892
3007
 
2893
3008
  .project-rail__item-info {
@@ -2909,6 +3024,17 @@ body { display: flex; }
2909
3024
  overflow: hidden;
2910
3025
  text-overflow: ellipsis;
2911
3026
  color: var(--text);
3027
+ cursor: default;
3028
+ }
3029
+
3030
+ .project-rail__item-name--editing {
3031
+ background: var(--bg);
3032
+ border: 1px solid var(--accent);
3033
+ border-radius: 3px;
3034
+ padding: 0 4px;
3035
+ outline: none;
3036
+ overflow: visible;
3037
+ cursor: text;
2912
3038
  }
2913
3039
 
2914
3040
  .project-rail__item-meta {
@@ -3060,7 +3186,7 @@ body { display: flex; }
3060
3186
 
3061
3187
  .brand-asset-toggle__switch input:checked + .brand-asset-toggle__slider::before {
3062
3188
  transform: translateX(16px);
3063
- background: white;
3189
+ background: var(--text-on-accent);
3064
3190
  }
3065
3191
 
3066
3192
  .brand-asset-toggle__label {
@@ -3109,3 +3235,10 @@ body { display: flex; }
3109
3235
  .brand-asset-toggle__tooltip:hover::after {
3110
3236
  opacity: 1;
3111
3237
  }
3238
+
3239
+ /* ================================================================
3240
+ THEME TOGGLE (light/dark)
3241
+ ================================================================ */
3242
+ .theme-toggle__icon--light { display: none; }
3243
+ [data-theme="light"] .theme-toggle__icon--dark { display: none; }
3244
+ [data-theme="light"] .theme-toggle__icon--light { display: block; }