clay-server 2.10.0 → 2.11.0-beta.10

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.
@@ -23,7 +23,7 @@
23
23
  display: flex;
24
24
  align-items: center;
25
25
  justify-content: space-between;
26
- margin-bottom: 12px;
26
+ padding: 8px 16px;
27
27
  }
28
28
 
29
29
  .admin-section-header h3 {
@@ -49,6 +49,11 @@
49
49
  transition: opacity 0.15s;
50
50
  }
51
51
 
52
+ .admin-action-btn svg {
53
+ width: 14px;
54
+ height: 14px;
55
+ }
56
+
52
57
  .admin-action-btn:hover {
53
58
  opacity: 0.9;
54
59
  }
@@ -64,7 +69,7 @@
64
69
  display: flex;
65
70
  align-items: center;
66
71
  justify-content: space-between;
67
- padding: 10px 12px;
72
+ padding: 10px 16px;
68
73
  border-radius: 10px;
69
74
  transition: background 0.1s;
70
75
  }
@@ -124,6 +129,11 @@
124
129
  transition: color 0.15s, background 0.15s;
125
130
  }
126
131
 
132
+ .admin-remove-btn svg {
133
+ width: 16px;
134
+ height: 16px;
135
+ }
136
+
127
137
  .admin-remove-btn:hover {
128
138
  color: #e5534b;
129
139
  background: rgba(229, 83, 75, 0.1);
@@ -140,7 +150,7 @@
140
150
  display: flex;
141
151
  align-items: center;
142
152
  justify-content: space-between;
143
- padding: 10px 12px;
153
+ padding: 10px 16px;
144
154
  border-radius: 10px;
145
155
  }
146
156
 
@@ -178,6 +188,11 @@
178
188
  align-items: center;
179
189
  }
180
190
 
191
+ .admin-copy-link-btn svg {
192
+ width: 14px;
193
+ height: 14px;
194
+ }
195
+
181
196
  .admin-copy-link-btn:hover {
182
197
  color: var(--accent);
183
198
  background: var(--accent-8);
@@ -200,6 +215,11 @@
200
215
  align-items: center;
201
216
  }
202
217
 
218
+ .admin-revoke-btn svg {
219
+ width: 14px;
220
+ height: 14px;
221
+ }
222
+
203
223
  .admin-revoke-btn:hover {
204
224
  color: #ef4444;
205
225
  background: rgba(239, 68, 68, 0.1);
@@ -216,7 +236,7 @@
216
236
  display: flex;
217
237
  align-items: center;
218
238
  justify-content: space-between;
219
- padding: 10px 12px;
239
+ padding: 10px 16px;
220
240
  border-radius: 10px;
221
241
  }
222
242
 
@@ -247,6 +267,7 @@
247
267
  gap: 8px;
248
268
  }
249
269
 
270
+ .admin-owner-select,
250
271
  .admin-vis-select {
251
272
  background: var(--bg-alt);
252
273
  border: 1px solid var(--border);
@@ -258,6 +279,11 @@
258
279
  font-family: inherit;
259
280
  }
260
281
 
282
+ .admin-owner-select {
283
+ max-width: 140px;
284
+ }
285
+
286
+ .admin-owner-select:focus,
261
287
  .admin-vis-select:focus {
262
288
  border-color: var(--accent);
263
289
  outline: none;
@@ -274,6 +300,11 @@
274
300
  align-items: center;
275
301
  }
276
302
 
303
+ .admin-manage-users-btn svg {
304
+ width: 16px;
305
+ height: 16px;
306
+ }
307
+
277
308
  .admin-manage-users-btn:hover {
278
309
  color: var(--accent);
279
310
  background: var(--accent-8);
@@ -327,6 +358,11 @@
327
358
  display: flex;
328
359
  }
329
360
 
361
+ .admin-modal-close svg {
362
+ width: 16px;
363
+ height: 16px;
364
+ }
365
+
330
366
  .admin-modal-close:hover {
331
367
  color: var(--text);
332
368
  }
@@ -442,18 +478,18 @@
442
478
 
443
479
  /* --- SMTP Configuration Form --- */
444
480
  .admin-smtp-form {
445
- padding: 4px 0;
481
+ padding: 8px 0;
446
482
  }
447
483
 
448
484
  .admin-smtp-status {
449
485
  display: flex;
450
486
  align-items: center;
451
487
  gap: 8px;
452
- padding: 12px 16px;
488
+ padding: 10px 16px;
453
489
  border-radius: 8px;
454
490
  font-size: 13px;
455
491
  font-weight: 500;
456
- margin-bottom: 16px;
492
+ margin: 0 16px 16px;
457
493
  }
458
494
 
459
495
  .admin-smtp-status svg {
@@ -480,7 +516,7 @@
480
516
  margin-bottom: 16px;
481
517
  }
482
518
 
483
- .admin-smtp-row label {
519
+ .admin-smtp-row > label:not(.admin-smtp-toggle) {
484
520
  display: block;
485
521
  font-size: 12px;
486
522
  font-weight: 600;
@@ -516,17 +552,27 @@
516
552
  .admin-smtp-toggle {
517
553
  display: flex;
518
554
  align-items: center;
519
- gap: 8px;
555
+ gap: 10px;
520
556
  font-size: 13px;
557
+ font-weight: 400;
558
+ text-transform: none;
559
+ letter-spacing: normal;
521
560
  color: var(--text);
522
561
  cursor: pointer;
523
- padding-top: 4px;
562
+ margin-top: 6px;
524
563
  }
525
564
 
526
565
  .admin-smtp-toggle input[type="checkbox"] {
527
566
  accent-color: var(--accent);
528
567
  width: 16px;
529
568
  height: 16px;
569
+ flex-shrink: 0;
570
+ }
571
+
572
+ .admin-smtp-row-otp {
573
+ margin-top: 4px;
574
+ padding-top: 12px;
575
+ border-top: 1px solid var(--border);
530
576
  }
531
577
 
532
578
  .admin-smtp-actions {
@@ -561,6 +607,49 @@
561
607
  color: var(--accent);
562
608
  }
563
609
 
610
+ /* --- Temp PIN display (admin-created user credentials) --- */
611
+ .admin-temp-pin-box {
612
+ background: var(--bg-alt);
613
+ border: 1px solid var(--border);
614
+ border-radius: 10px;
615
+ padding: 12px 16px;
616
+ margin-top: 12px;
617
+ }
618
+
619
+ .admin-temp-pin-row {
620
+ display: flex;
621
+ align-items: center;
622
+ justify-content: space-between;
623
+ padding: 6px 0;
624
+ }
625
+
626
+ .admin-temp-pin-row + .admin-temp-pin-row {
627
+ border-top: 1px solid var(--border);
628
+ }
629
+
630
+ .admin-temp-pin-label {
631
+ font-size: 12px;
632
+ font-weight: 600;
633
+ color: var(--text-muted);
634
+ text-transform: uppercase;
635
+ letter-spacing: 0.3px;
636
+ }
637
+
638
+ .admin-temp-pin-value {
639
+ font-size: 14px;
640
+ color: var(--text);
641
+ background: var(--bg);
642
+ padding: 4px 10px;
643
+ border-radius: 6px;
644
+ }
645
+
646
+ .admin-temp-pin-highlight {
647
+ font-size: 18px;
648
+ font-weight: 700;
649
+ letter-spacing: 3px;
650
+ color: var(--accent);
651
+ }
652
+
564
653
  /* --- Session visibility indicator --- */
565
654
  .session-private-icon {
566
655
  display: inline-flex;
@@ -268,6 +268,28 @@
268
268
  }
269
269
  .ps-text-input:focus { border-color: var(--accent); }
270
270
 
271
+ /* Profile: owner row */
272
+ .ps-owner-row {
273
+ display: flex;
274
+ align-items: center;
275
+ gap: 8px;
276
+ }
277
+
278
+ .ps-transfer-form {
279
+ margin-top: 8px;
280
+ }
281
+
282
+ .ps-select {
283
+ width: 100%;
284
+ padding: 6px 10px;
285
+ border: 1px solid var(--border);
286
+ border-radius: 6px;
287
+ background: var(--bg);
288
+ color: var(--text);
289
+ font-size: 13px;
290
+ margin-bottom: 8px;
291
+ }
292
+
271
293
  /* Profile: icon row */
272
294
  .ps-icon-row {
273
295
  display: flex;
@@ -3,13 +3,14 @@
3
3
  ========================================================================== */
4
4
 
5
5
  #icon-strip {
6
+ position: relative;
6
7
  width: 72px;
7
8
  flex-shrink: 0;
8
9
  background: var(--sidebar-bg);
9
10
  display: flex;
10
11
  flex-direction: column;
11
12
  align-items: center;
12
- padding: 0 0 58px;
13
+ padding: 0 0 80px;
13
14
  overflow: hidden;
14
15
  z-index: 2;
15
16
  }
@@ -114,6 +115,7 @@
114
115
  /* --- Scrollable project list area --- */
115
116
  .icon-strip-projects {
116
117
  width: 100%;
118
+ min-height: 0;
117
119
  overflow-y: auto;
118
120
  overflow-x: hidden;
119
121
  display: flex;
@@ -605,6 +607,165 @@
605
607
  height: 22px;
606
608
  }
607
609
 
610
+ /* --- User avatars (circle, above my-avatar at bottom) --- */
611
+ .icon-strip-users {
612
+ position: absolute;
613
+ bottom: 74px; /* above user-island (58px + 8px bottom + 8px gap) */
614
+ left: 50%;
615
+ transform: translateX(-50%);
616
+ width: 56px;
617
+ display: flex;
618
+ flex-direction: column;
619
+ align-items: center;
620
+ gap: 0;
621
+ padding: 6px 0;
622
+ background: var(--bg-alt);
623
+ border-radius: 8px;
624
+ }
625
+
626
+ .icon-strip-users.hidden {
627
+ display: none;
628
+ }
629
+
630
+ /* "Invite" mini button at bottom of user strip */
631
+ .icon-strip-invite {
632
+ position: relative;
633
+ width: 40px;
634
+ height: 32px;
635
+ border-radius: 10px;
636
+ background: transparent;
637
+ border: none;
638
+ display: flex;
639
+ align-items: center;
640
+ justify-content: center;
641
+ cursor: pointer;
642
+ flex-shrink: 0;
643
+ color: var(--text-dimmer);
644
+ transition: color 0.2s, background 0.2s;
645
+ }
646
+
647
+ .icon-strip-invite:hover {
648
+ color: var(--accent);
649
+ background: rgba(var(--overlay-rgb), 0.08);
650
+ }
651
+
652
+ .icon-strip-invite .lucide {
653
+ width: 16px;
654
+ height: 16px;
655
+ }
656
+
657
+ .icon-strip-user {
658
+ position: relative;
659
+ width: 42px;
660
+ height: 42px;
661
+ border-radius: 0;
662
+ background: transparent;
663
+ display: flex;
664
+ align-items: center;
665
+ justify-content: center;
666
+ cursor: pointer;
667
+ flex-shrink: 0;
668
+ }
669
+
670
+ .icon-strip-user-avatar {
671
+ width: 34px;
672
+ height: 34px;
673
+ border-radius: 50%;
674
+ object-fit: cover;
675
+ transition: opacity 0.2s ease, transform 0.2s ease;
676
+ opacity: 0.7;
677
+ }
678
+
679
+ .icon-strip-user:hover .icon-strip-user-avatar {
680
+ opacity: 1;
681
+ transform: scale(1.08);
682
+ }
683
+
684
+ .icon-strip-user.active .icon-strip-user-avatar {
685
+ opacity: 1;
686
+ box-shadow: 0 0 0 2px var(--accent);
687
+ }
688
+
689
+ /* Online status dot (bottom-right on avatar, like project blink dot) */
690
+ .icon-strip-user-online {
691
+ position: absolute;
692
+ bottom: 5px;
693
+ right: 5px;
694
+ width: 10px;
695
+ height: 10px;
696
+ border-radius: 50%;
697
+ background: var(--text-dimmer);
698
+ border: 2px solid var(--sidebar-bg);
699
+ opacity: 1;
700
+ transition: opacity 0.2s, background 0.3s;
701
+ }
702
+
703
+ .icon-strip-user.online .icon-strip-user-online {
704
+ background: var(--success);
705
+ }
706
+
707
+ /* DM unread badge */
708
+ .icon-strip-user-badge {
709
+ position: absolute;
710
+ top: -2px;
711
+ right: -2px;
712
+ min-width: 18px;
713
+ height: 18px;
714
+ border-radius: 9px;
715
+ background: #e74c3c;
716
+ color: #fff;
717
+ font-size: 11px;
718
+ font-weight: 700;
719
+ display: none;
720
+ align-items: center;
721
+ justify-content: center;
722
+ padding: 0 5px;
723
+ line-height: 18px;
724
+ text-align: center;
725
+ box-shadow: 0 0 0 2px var(--bg);
726
+ z-index: 2;
727
+ }
728
+
729
+ .icon-strip-user-badge.has-unread {
730
+ display: flex;
731
+ }
732
+
733
+ /* Pill for user icons */
734
+ .icon-strip-user:hover .icon-strip-pill {
735
+ opacity: 1;
736
+ height: 20px;
737
+ }
738
+
739
+ .icon-strip-user.active .icon-strip-pill {
740
+ opacity: 1;
741
+ height: 32px;
742
+ }
743
+
744
+ /* DM mode: keep same position (user-island gone but layout stays) */
745
+
746
+ /* --- My avatar at bottom of icon strip (always present, behind user-island) --- */
747
+ /* Positioned to align exactly with user-island avatar (left:8px + padding:6px + 18px center = 32px from left edge of layout-body) */
748
+ /* icon-strip is 72px wide, so 32px from left = left offset within icon-strip */
749
+ .icon-strip-me {
750
+ position: absolute;
751
+ bottom: 19px; /* vertically center with user-island (bottom:8px + height:58px/2 - 16px) */
752
+ left: 32px;
753
+ transform: translateX(-50%);
754
+ display: flex;
755
+ align-items: center;
756
+ justify-content: center;
757
+ width: 32px;
758
+ height: 32px;
759
+ z-index: 1; /* below user-island z-index: 15 */
760
+ }
761
+
762
+ .icon-strip-me-avatar {
763
+ width: 32px;
764
+ height: 32px;
765
+ border-radius: 50%;
766
+ object-fit: cover;
767
+ }
768
+
608
769
  /* --- Per-project presence avatars --- */
609
770
  /* --- Mobile: hide icon strip --- */
610
771
  @media (max-width: 768px) {
@@ -617,6 +617,29 @@
617
617
  background: var(--accent);
618
618
  }
619
619
 
620
+ .config-budget-row {
621
+ padding: 4px 14px 8px;
622
+ display: flex;
623
+ align-items: center;
624
+ gap: 8px;
625
+ }
626
+
627
+ .config-budget-label {
628
+ font-size: 11px;
629
+ color: var(--text-muted);
630
+ white-space: nowrap;
631
+ }
632
+
633
+ .config-budget-input {
634
+ width: 80px;
635
+ padding: 4px 6px;
636
+ border: 1px solid var(--border);
637
+ border-radius: 4px;
638
+ background: var(--bg);
639
+ color: var(--text);
640
+ font-size: 11px;
641
+ }
642
+
620
643
  /* --- Info panels container --- */
621
644
  #info-panels {
622
645
  position: fixed;