claude-code-kanban 4.21.0 → 4.22.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/lib/file-url.js +36 -0
- package/package.json +1 -1
- package/public/app.js +980 -127
- package/public/style.css +399 -39
- package/server.js +202 -85
package/public/style.css
CHANGED
|
@@ -29,6 +29,22 @@
|
|
|
29
29
|
--team-dim: rgba(96, 165, 250, 0.18);
|
|
30
30
|
--plan: #86a886;
|
|
31
31
|
--plan-dim: rgba(134, 168, 134, 0.18);
|
|
32
|
+
--ansi-black: var(--text-muted);
|
|
33
|
+
--ansi-red: #e06c66;
|
|
34
|
+
--ansi-green: #3ecf8e;
|
|
35
|
+
--ansi-yellow: #e0b04a;
|
|
36
|
+
--ansi-blue: #60a5fa;
|
|
37
|
+
--ansi-magenta: #c98ce0;
|
|
38
|
+
--ansi-cyan: #4dc9c9;
|
|
39
|
+
--ansi-white: var(--text-secondary);
|
|
40
|
+
--ansi-bright-black: var(--text-tertiary);
|
|
41
|
+
--ansi-bright-red: #ff8a84;
|
|
42
|
+
--ansi-bright-green: #5ee3a8;
|
|
43
|
+
--ansi-bright-yellow: #f0c56a;
|
|
44
|
+
--ansi-bright-blue: #8bbdfb;
|
|
45
|
+
--ansi-bright-magenta: #e0a8f0;
|
|
46
|
+
--ansi-bright-cyan: #7ddede;
|
|
47
|
+
--ansi-bright-white: var(--text-primary);
|
|
32
48
|
--mono: 'IBM Plex Mono', monospace;
|
|
33
49
|
--serif: 'Playfair Display', serif;
|
|
34
50
|
--card-gap: 7px;
|
|
@@ -623,7 +639,12 @@ body::before {
|
|
|
623
639
|
text-overflow: ellipsis;
|
|
624
640
|
}
|
|
625
641
|
|
|
642
|
+
/* inline-flex so only the text takes the click — a full-width row would swallow clicks
|
|
643
|
+
meant for the card itself */
|
|
626
644
|
.session-goal {
|
|
645
|
+
display: inline-flex;
|
|
646
|
+
align-items: baseline;
|
|
647
|
+
max-width: 100%;
|
|
627
648
|
font-size: 10px;
|
|
628
649
|
margin-top: var(--card-gap-tight);
|
|
629
650
|
white-space: nowrap;
|
|
@@ -635,8 +656,13 @@ body::before {
|
|
|
635
656
|
.session-goal .session-goal-icon {
|
|
636
657
|
margin-right: 3px;
|
|
637
658
|
font-weight: 700;
|
|
659
|
+
flex-shrink: 0;
|
|
660
|
+
}
|
|
661
|
+
.session-goal .session-goal-text {
|
|
662
|
+
overflow: hidden;
|
|
663
|
+
text-overflow: ellipsis;
|
|
638
664
|
}
|
|
639
|
-
.session-goal:hover {
|
|
665
|
+
.session-goal:hover .session-goal-text {
|
|
640
666
|
text-decoration: underline;
|
|
641
667
|
text-underline-offset: 2px;
|
|
642
668
|
}
|
|
@@ -2299,16 +2325,18 @@ body::before {
|
|
|
2299
2325
|
align-items: center;
|
|
2300
2326
|
margin-bottom: 16px;
|
|
2301
2327
|
}
|
|
2302
|
-
|
|
2328
|
+
/* Shared hover-reveal icon-button group, also used by the linked-doc rows. Each host
|
|
2329
|
+
supplies its own reveal trigger — the base only sets the resting opacity. */
|
|
2330
|
+
.row-actions {
|
|
2303
2331
|
display: flex;
|
|
2304
2332
|
gap: 4px;
|
|
2305
2333
|
opacity: 0.3;
|
|
2306
2334
|
transition: opacity 0.15s ease;
|
|
2307
2335
|
}
|
|
2308
|
-
.info-grid:hover .
|
|
2336
|
+
.info-grid:hover .row-actions {
|
|
2309
2337
|
opacity: 1;
|
|
2310
2338
|
}
|
|
2311
|
-
.
|
|
2339
|
+
.row-actions button {
|
|
2312
2340
|
display: inline-flex;
|
|
2313
2341
|
align-items: center;
|
|
2314
2342
|
justify-content: center;
|
|
@@ -2325,18 +2353,18 @@ body::before {
|
|
|
2325
2353
|
border-color 0.1s ease,
|
|
2326
2354
|
color 0.1s ease;
|
|
2327
2355
|
}
|
|
2328
|
-
.
|
|
2356
|
+
.row-actions button:hover {
|
|
2329
2357
|
background: var(--bg-hover);
|
|
2330
2358
|
border-color: var(--accent);
|
|
2331
2359
|
color: var(--accent-text);
|
|
2332
2360
|
}
|
|
2333
|
-
.
|
|
2361
|
+
.row-actions button svg {
|
|
2334
2362
|
width: 12px;
|
|
2335
2363
|
height: 12px;
|
|
2336
2364
|
display: block;
|
|
2337
2365
|
}
|
|
2338
2366
|
@media (hover: none) {
|
|
2339
|
-
.
|
|
2367
|
+
.row-actions {
|
|
2340
2368
|
opacity: 1;
|
|
2341
2369
|
}
|
|
2342
2370
|
}
|
|
@@ -3735,36 +3763,29 @@ body::before {
|
|
|
3735
3763
|
min-width: 0;
|
|
3736
3764
|
}
|
|
3737
3765
|
|
|
3738
|
-
/*
|
|
3739
|
-
|
|
3740
|
-
.
|
|
3766
|
+
/* Rides on the shared .row-actions group; only the reveal trigger differs — per row
|
|
3767
|
+
here, per grid in the session info. margin-left:auto pins the group to the same
|
|
3768
|
+
right edge however long the names in between are. */
|
|
3769
|
+
.linked-doc-actions {
|
|
3741
3770
|
margin-left: auto;
|
|
3742
3771
|
align-self: center;
|
|
3743
3772
|
flex-shrink: 0;
|
|
3744
|
-
width: 16px;
|
|
3745
|
-
height: 16px;
|
|
3746
|
-
display: inline-flex;
|
|
3747
|
-
align-items: center;
|
|
3748
|
-
justify-content: center;
|
|
3749
|
-
padding: 0;
|
|
3750
|
-
background: none;
|
|
3751
|
-
border: none;
|
|
3752
|
-
border-radius: 3px;
|
|
3753
|
-
color: var(--text-muted);
|
|
3754
|
-
font-family: var(--mono);
|
|
3755
|
-
font-size: 14px;
|
|
3756
|
-
line-height: 1;
|
|
3757
|
-
cursor: pointer;
|
|
3758
|
-
opacity: 0.45;
|
|
3759
|
-
transition: all 0.15s ease;
|
|
3760
3773
|
}
|
|
3761
3774
|
|
|
3762
|
-
.linked-doc-item:hover .linked-doc-
|
|
3775
|
+
.linked-doc-item:hover .linked-doc-actions {
|
|
3763
3776
|
opacity: 1;
|
|
3764
3777
|
}
|
|
3765
3778
|
|
|
3766
|
-
.
|
|
3779
|
+
/* The × is a glyph, not an svg, so .row-actions button svg does not size it. */
|
|
3780
|
+
.linked-doc-remove {
|
|
3781
|
+
font-family: var(--mono);
|
|
3782
|
+
font-size: 15px;
|
|
3783
|
+
line-height: 1;
|
|
3784
|
+
}
|
|
3785
|
+
|
|
3786
|
+
.linked-doc-actions .linked-doc-remove:hover {
|
|
3767
3787
|
background: var(--danger-dim);
|
|
3788
|
+
border-color: var(--danger);
|
|
3768
3789
|
color: var(--danger);
|
|
3769
3790
|
}
|
|
3770
3791
|
|
|
@@ -3876,6 +3897,136 @@ body::before {
|
|
|
3876
3897
|
|
|
3877
3898
|
/* #endregion */
|
|
3878
3899
|
|
|
3900
|
+
/* #region ANSI */
|
|
3901
|
+
|
|
3902
|
+
/* SGR colours from terminal output, consumed by every pane that renders it.
|
|
3903
|
+
The palette itself lives with the other colour tokens in VARIABLES /
|
|
3904
|
+
LIGHT_THEME / MEDIA_QUERIES, so it flips with the theme like everything else. */
|
|
3905
|
+
.ansi-fg-black {
|
|
3906
|
+
color: var(--ansi-black);
|
|
3907
|
+
}
|
|
3908
|
+
.ansi-fg-red {
|
|
3909
|
+
color: var(--ansi-red);
|
|
3910
|
+
}
|
|
3911
|
+
.ansi-fg-green {
|
|
3912
|
+
color: var(--ansi-green);
|
|
3913
|
+
}
|
|
3914
|
+
.ansi-fg-yellow {
|
|
3915
|
+
color: var(--ansi-yellow);
|
|
3916
|
+
}
|
|
3917
|
+
.ansi-fg-blue {
|
|
3918
|
+
color: var(--ansi-blue);
|
|
3919
|
+
}
|
|
3920
|
+
.ansi-fg-magenta {
|
|
3921
|
+
color: var(--ansi-magenta);
|
|
3922
|
+
}
|
|
3923
|
+
.ansi-fg-cyan {
|
|
3924
|
+
color: var(--ansi-cyan);
|
|
3925
|
+
}
|
|
3926
|
+
.ansi-fg-white {
|
|
3927
|
+
color: var(--ansi-white);
|
|
3928
|
+
}
|
|
3929
|
+
.ansi-fg-bright-black {
|
|
3930
|
+
color: var(--ansi-bright-black);
|
|
3931
|
+
}
|
|
3932
|
+
.ansi-fg-bright-red {
|
|
3933
|
+
color: var(--ansi-bright-red);
|
|
3934
|
+
}
|
|
3935
|
+
.ansi-fg-bright-green {
|
|
3936
|
+
color: var(--ansi-bright-green);
|
|
3937
|
+
}
|
|
3938
|
+
.ansi-fg-bright-yellow {
|
|
3939
|
+
color: var(--ansi-bright-yellow);
|
|
3940
|
+
}
|
|
3941
|
+
.ansi-fg-bright-blue {
|
|
3942
|
+
color: var(--ansi-bright-blue);
|
|
3943
|
+
}
|
|
3944
|
+
.ansi-fg-bright-magenta {
|
|
3945
|
+
color: var(--ansi-bright-magenta);
|
|
3946
|
+
}
|
|
3947
|
+
.ansi-fg-bright-cyan {
|
|
3948
|
+
color: var(--ansi-bright-cyan);
|
|
3949
|
+
}
|
|
3950
|
+
.ansi-fg-bright-white {
|
|
3951
|
+
color: var(--ansi-bright-white);
|
|
3952
|
+
}
|
|
3953
|
+
.ansi-bg-black {
|
|
3954
|
+
background: var(--ansi-black);
|
|
3955
|
+
}
|
|
3956
|
+
.ansi-bg-red {
|
|
3957
|
+
background: var(--ansi-red);
|
|
3958
|
+
}
|
|
3959
|
+
.ansi-bg-green {
|
|
3960
|
+
background: var(--ansi-green);
|
|
3961
|
+
}
|
|
3962
|
+
.ansi-bg-yellow {
|
|
3963
|
+
background: var(--ansi-yellow);
|
|
3964
|
+
}
|
|
3965
|
+
.ansi-bg-blue {
|
|
3966
|
+
background: var(--ansi-blue);
|
|
3967
|
+
}
|
|
3968
|
+
.ansi-bg-magenta {
|
|
3969
|
+
background: var(--ansi-magenta);
|
|
3970
|
+
}
|
|
3971
|
+
.ansi-bg-cyan {
|
|
3972
|
+
background: var(--ansi-cyan);
|
|
3973
|
+
}
|
|
3974
|
+
.ansi-bg-white {
|
|
3975
|
+
background: var(--ansi-white);
|
|
3976
|
+
}
|
|
3977
|
+
.ansi-bg-bright-black {
|
|
3978
|
+
background: var(--ansi-bright-black);
|
|
3979
|
+
}
|
|
3980
|
+
.ansi-bg-bright-red {
|
|
3981
|
+
background: var(--ansi-bright-red);
|
|
3982
|
+
}
|
|
3983
|
+
.ansi-bg-bright-green {
|
|
3984
|
+
background: var(--ansi-bright-green);
|
|
3985
|
+
}
|
|
3986
|
+
.ansi-bg-bright-yellow {
|
|
3987
|
+
background: var(--ansi-bright-yellow);
|
|
3988
|
+
}
|
|
3989
|
+
.ansi-bg-bright-blue {
|
|
3990
|
+
background: var(--ansi-bright-blue);
|
|
3991
|
+
}
|
|
3992
|
+
.ansi-bg-bright-magenta {
|
|
3993
|
+
background: var(--ansi-bright-magenta);
|
|
3994
|
+
}
|
|
3995
|
+
.ansi-bg-bright-cyan {
|
|
3996
|
+
background: var(--ansi-bright-cyan);
|
|
3997
|
+
}
|
|
3998
|
+
.ansi-bg-bright-white {
|
|
3999
|
+
background: var(--ansi-bright-white);
|
|
4000
|
+
}
|
|
4001
|
+
.ansi-bg {
|
|
4002
|
+
padding: 0 1px;
|
|
4003
|
+
border-radius: 2px;
|
|
4004
|
+
}
|
|
4005
|
+
.ansi-inverse {
|
|
4006
|
+
background: var(--text-primary);
|
|
4007
|
+
color: var(--bg-deep);
|
|
4008
|
+
}
|
|
4009
|
+
.ansi-bold {
|
|
4010
|
+
font-weight: 700;
|
|
4011
|
+
}
|
|
4012
|
+
.ansi-dim {
|
|
4013
|
+
opacity: 0.65;
|
|
4014
|
+
}
|
|
4015
|
+
.ansi-italic {
|
|
4016
|
+
font-style: italic;
|
|
4017
|
+
}
|
|
4018
|
+
.ansi-underline {
|
|
4019
|
+
text-decoration: underline;
|
|
4020
|
+
}
|
|
4021
|
+
.ansi-strike {
|
|
4022
|
+
text-decoration: line-through;
|
|
4023
|
+
}
|
|
4024
|
+
.ansi-underline.ansi-strike {
|
|
4025
|
+
text-decoration: underline line-through;
|
|
4026
|
+
}
|
|
4027
|
+
|
|
4028
|
+
/* #endregion */
|
|
4029
|
+
|
|
3879
4030
|
/* #region LIGHT_THEME */
|
|
3880
4031
|
body.light {
|
|
3881
4032
|
--bg-deep: #e8e6e3;
|
|
@@ -3898,6 +4049,18 @@ body.light {
|
|
|
3898
4049
|
--danger: #c0392b;
|
|
3899
4050
|
--danger-dim: rgba(192, 57, 43, 0.15);
|
|
3900
4051
|
--plan: #5a7a5a;
|
|
4052
|
+
--ansi-red: #c0392b;
|
|
4053
|
+
--ansi-green: #1a8a5a;
|
|
4054
|
+
--ansi-yellow: #a8791a;
|
|
4055
|
+
--ansi-blue: #2b6cb0;
|
|
4056
|
+
--ansi-magenta: #8e44ad;
|
|
4057
|
+
--ansi-cyan: #1a7a7a;
|
|
4058
|
+
--ansi-bright-red: #e05548;
|
|
4059
|
+
--ansi-bright-green: #25a86f;
|
|
4060
|
+
--ansi-bright-yellow: #c2921f;
|
|
4061
|
+
--ansi-bright-blue: #3b82d6;
|
|
4062
|
+
--ansi-bright-magenta: #a855c9;
|
|
4063
|
+
--ansi-bright-cyan: #2a9a9a;
|
|
3901
4064
|
--plan-dim: rgba(90, 122, 90, 0.15);
|
|
3902
4065
|
}
|
|
3903
4066
|
|
|
@@ -4827,6 +4990,14 @@ select.form-input option:checked {
|
|
|
4827
4990
|
transition: all 0.15s;
|
|
4828
4991
|
}
|
|
4829
4992
|
|
|
4993
|
+
/* Icon buttons sit beside text ones here, and copyWithFeedback swaps the glyph for a
|
|
4994
|
+
checkmark, so both svgs need a size or the button jumps on click. */
|
|
4995
|
+
.storage-item-actions button svg {
|
|
4996
|
+
width: 12px;
|
|
4997
|
+
height: 12px;
|
|
4998
|
+
display: block;
|
|
4999
|
+
}
|
|
5000
|
+
|
|
4830
5001
|
.storage-item-actions button:hover {
|
|
4831
5002
|
background: var(--bg-hover);
|
|
4832
5003
|
color: var(--text-primary);
|
|
@@ -4915,6 +5086,18 @@ select.form-input option:checked {
|
|
|
4915
5086
|
--danger: #c0392b;
|
|
4916
5087
|
--danger-dim: rgba(192, 57, 43, 0.15);
|
|
4917
5088
|
--plan: #5a7a5a;
|
|
5089
|
+
--ansi-red: #c0392b;
|
|
5090
|
+
--ansi-green: #1a8a5a;
|
|
5091
|
+
--ansi-yellow: #a8791a;
|
|
5092
|
+
--ansi-blue: #2b6cb0;
|
|
5093
|
+
--ansi-magenta: #8e44ad;
|
|
5094
|
+
--ansi-cyan: #1a7a7a;
|
|
5095
|
+
--ansi-bright-red: #e05548;
|
|
5096
|
+
--ansi-bright-green: #25a86f;
|
|
5097
|
+
--ansi-bright-yellow: #c2921f;
|
|
5098
|
+
--ansi-bright-blue: #3b82d6;
|
|
5099
|
+
--ansi-bright-magenta: #a855c9;
|
|
5100
|
+
--ansi-bright-cyan: #2a9a9a;
|
|
4918
5101
|
--plan-dim: rgba(90, 122, 90, 0.15);
|
|
4919
5102
|
}
|
|
4920
5103
|
|
|
@@ -5048,23 +5231,29 @@ pre.mermaid svg {
|
|
|
5048
5231
|
border-radius: 4px;
|
|
5049
5232
|
}
|
|
5050
5233
|
|
|
5051
|
-
.project-group-header .group-chevron
|
|
5234
|
+
.project-group-header .group-chevron,
|
|
5235
|
+
.session-group-header .group-chevron {
|
|
5052
5236
|
transition: transform 0.15s ease;
|
|
5053
5237
|
flex-shrink: 0;
|
|
5054
5238
|
display: block;
|
|
5055
5239
|
}
|
|
5056
5240
|
|
|
5057
|
-
.project-group-header.collapsed .group-chevron
|
|
5241
|
+
.project-group-header.collapsed .group-chevron,
|
|
5242
|
+
.session-group-header.collapsed .group-chevron {
|
|
5058
5243
|
transform: rotate(-90deg);
|
|
5059
5244
|
}
|
|
5060
5245
|
|
|
5061
|
-
.project-group-header .group-name
|
|
5062
|
-
|
|
5246
|
+
.project-group-header .group-name,
|
|
5247
|
+
.session-group-header .group-name {
|
|
5063
5248
|
overflow: hidden;
|
|
5064
5249
|
text-overflow: ellipsis;
|
|
5065
5250
|
white-space: nowrap;
|
|
5066
5251
|
}
|
|
5067
5252
|
|
|
5253
|
+
.project-group-header .group-name {
|
|
5254
|
+
flex: 1;
|
|
5255
|
+
}
|
|
5256
|
+
|
|
5068
5257
|
.project-view-btn {
|
|
5069
5258
|
color: var(--text-muted);
|
|
5070
5259
|
cursor: pointer;
|
|
@@ -5179,24 +5368,30 @@ pre.mermaid svg {
|
|
|
5179
5368
|
letter-spacing: 0.3px;
|
|
5180
5369
|
}
|
|
5181
5370
|
|
|
5182
|
-
.pinned-ungroup-btn
|
|
5183
|
-
|
|
5184
|
-
font-size: 14px;
|
|
5185
|
-
line-height: 1;
|
|
5371
|
+
.pinned-ungroup-btn,
|
|
5372
|
+
.sg-action {
|
|
5186
5373
|
color: var(--text-muted);
|
|
5187
5374
|
cursor: pointer;
|
|
5188
|
-
|
|
5375
|
+
line-height: 1;
|
|
5189
5376
|
opacity: 0;
|
|
5190
5377
|
transition:
|
|
5191
5378
|
opacity 0.15s,
|
|
5192
5379
|
color 0.15s;
|
|
5193
5380
|
}
|
|
5194
5381
|
|
|
5195
|
-
.pinned-
|
|
5382
|
+
.pinned-ungroup-btn {
|
|
5383
|
+
margin-left: auto;
|
|
5384
|
+
font-size: 14px;
|
|
5385
|
+
padding: 0 2px;
|
|
5386
|
+
}
|
|
5387
|
+
|
|
5388
|
+
.pinned-sub-header:hover .pinned-ungroup-btn,
|
|
5389
|
+
.session-group-header:hover .sg-action {
|
|
5196
5390
|
opacity: 1;
|
|
5197
5391
|
}
|
|
5198
5392
|
|
|
5199
|
-
.pinned-ungroup-btn:hover
|
|
5393
|
+
.pinned-ungroup-btn:hover,
|
|
5394
|
+
.sg-action:hover {
|
|
5200
5395
|
color: var(--accent);
|
|
5201
5396
|
}
|
|
5202
5397
|
|
|
@@ -5294,3 +5489,168 @@ pre.mermaid svg {
|
|
|
5294
5489
|
border: 1px solid var(--text-muted);
|
|
5295
5490
|
}
|
|
5296
5491
|
/* #endregion */
|
|
5492
|
+
|
|
5493
|
+
/* #region SESSION_GROUPS */
|
|
5494
|
+
.sg-section-label {
|
|
5495
|
+
padding: 10px 10px 2px;
|
|
5496
|
+
margin-top: 10px;
|
|
5497
|
+
font-size: 10px;
|
|
5498
|
+
font-weight: 600;
|
|
5499
|
+
letter-spacing: 0.6px;
|
|
5500
|
+
text-transform: uppercase;
|
|
5501
|
+
color: var(--text-muted);
|
|
5502
|
+
user-select: none;
|
|
5503
|
+
}
|
|
5504
|
+
|
|
5505
|
+
.sg-section-label:first-child {
|
|
5506
|
+
margin-top: 0;
|
|
5507
|
+
}
|
|
5508
|
+
|
|
5509
|
+
.session-group-header {
|
|
5510
|
+
display: flex;
|
|
5511
|
+
align-items: center;
|
|
5512
|
+
gap: 6px;
|
|
5513
|
+
padding: 7px 10px;
|
|
5514
|
+
margin-top: 2px;
|
|
5515
|
+
cursor: pointer;
|
|
5516
|
+
user-select: none;
|
|
5517
|
+
font-size: 11px;
|
|
5518
|
+
font-weight: 600;
|
|
5519
|
+
color: var(--text-primary);
|
|
5520
|
+
border-radius: 4px;
|
|
5521
|
+
background: transparent;
|
|
5522
|
+
}
|
|
5523
|
+
|
|
5524
|
+
.session-group-header:hover {
|
|
5525
|
+
background: var(--bg-hover);
|
|
5526
|
+
}
|
|
5527
|
+
|
|
5528
|
+
.session-group-header.kb-selected {
|
|
5529
|
+
outline: 1px solid var(--accent);
|
|
5530
|
+
outline-offset: -1px;
|
|
5531
|
+
}
|
|
5532
|
+
|
|
5533
|
+
.sg-sub-label {
|
|
5534
|
+
padding: 8px 10px 2px 8px;
|
|
5535
|
+
font-size: 10px;
|
|
5536
|
+
font-weight: 600;
|
|
5537
|
+
letter-spacing: 0.5px;
|
|
5538
|
+
text-transform: uppercase;
|
|
5539
|
+
color: var(--text-muted);
|
|
5540
|
+
user-select: none;
|
|
5541
|
+
}
|
|
5542
|
+
|
|
5543
|
+
.sg-name-input {
|
|
5544
|
+
flex: 1;
|
|
5545
|
+
min-width: 0;
|
|
5546
|
+
padding: 1px 4px;
|
|
5547
|
+
font: inherit;
|
|
5548
|
+
color: var(--text-primary);
|
|
5549
|
+
background: var(--bg-deep);
|
|
5550
|
+
border: 1px solid var(--accent);
|
|
5551
|
+
border-radius: 3px;
|
|
5552
|
+
outline: none;
|
|
5553
|
+
}
|
|
5554
|
+
|
|
5555
|
+
.sg-action.sg-rename {
|
|
5556
|
+
margin-left: auto;
|
|
5557
|
+
display: flex;
|
|
5558
|
+
align-items: center;
|
|
5559
|
+
}
|
|
5560
|
+
|
|
5561
|
+
.sg-action.sg-delete {
|
|
5562
|
+
font-size: 15px;
|
|
5563
|
+
padding: 0 2px;
|
|
5564
|
+
}
|
|
5565
|
+
|
|
5566
|
+
.session-group-sessions {
|
|
5567
|
+
display: block;
|
|
5568
|
+
margin-left: 6px;
|
|
5569
|
+
}
|
|
5570
|
+
|
|
5571
|
+
.session-group-sessions.collapsed {
|
|
5572
|
+
display: none;
|
|
5573
|
+
}
|
|
5574
|
+
|
|
5575
|
+
.sg-empty {
|
|
5576
|
+
padding: 10px 8px;
|
|
5577
|
+
font-size: 11px;
|
|
5578
|
+
color: var(--text-muted);
|
|
5579
|
+
border: 1px dashed var(--border);
|
|
5580
|
+
border-radius: 4px;
|
|
5581
|
+
margin: 4px 2px;
|
|
5582
|
+
text-align: center;
|
|
5583
|
+
}
|
|
5584
|
+
|
|
5585
|
+
.project-group-header.sg-nested {
|
|
5586
|
+
margin-top: 4px;
|
|
5587
|
+
padding-top: 4px;
|
|
5588
|
+
}
|
|
5589
|
+
|
|
5590
|
+
/* Drag feedback */
|
|
5591
|
+
.session-item.sg-dragging,
|
|
5592
|
+
.project-group-header.sg-dragging,
|
|
5593
|
+
.session-group-header.sg-dragging {
|
|
5594
|
+
opacity: 0.45;
|
|
5595
|
+
}
|
|
5596
|
+
|
|
5597
|
+
.sg-drop-over {
|
|
5598
|
+
outline: 1px dashed var(--accent);
|
|
5599
|
+
outline-offset: -1px;
|
|
5600
|
+
background: var(--accent-dim);
|
|
5601
|
+
}
|
|
5602
|
+
|
|
5603
|
+
.sessions-list.sg-dragging-active .sg-ungroup-zone {
|
|
5604
|
+
border: 1px dashed var(--accent);
|
|
5605
|
+
border-radius: 4px;
|
|
5606
|
+
color: var(--text-primary);
|
|
5607
|
+
}
|
|
5608
|
+
|
|
5609
|
+
/* Move-to-group menu (right-click / long-press) */
|
|
5610
|
+
.sg-menu {
|
|
5611
|
+
position: fixed;
|
|
5612
|
+
z-index: 3000;
|
|
5613
|
+
min-width: 180px;
|
|
5614
|
+
max-width: 260px;
|
|
5615
|
+
padding: 4px;
|
|
5616
|
+
background: var(--bg-elevated);
|
|
5617
|
+
border: 1px solid var(--border);
|
|
5618
|
+
border-radius: 6px;
|
|
5619
|
+
box-shadow: 0 8px 24px rgb(0 0 0 / 35%);
|
|
5620
|
+
display: flex;
|
|
5621
|
+
flex-direction: column;
|
|
5622
|
+
gap: 1px;
|
|
5623
|
+
}
|
|
5624
|
+
|
|
5625
|
+
.sg-menu-label {
|
|
5626
|
+
padding: 6px 8px 4px;
|
|
5627
|
+
font-size: 10px;
|
|
5628
|
+
text-transform: uppercase;
|
|
5629
|
+
letter-spacing: 0.5px;
|
|
5630
|
+
color: var(--text-muted);
|
|
5631
|
+
}
|
|
5632
|
+
|
|
5633
|
+
.sg-menu-item {
|
|
5634
|
+
display: flex;
|
|
5635
|
+
align-items: center;
|
|
5636
|
+
gap: 6px;
|
|
5637
|
+
width: 100%;
|
|
5638
|
+
padding: 6px 8px;
|
|
5639
|
+
border: none;
|
|
5640
|
+
background: none;
|
|
5641
|
+
border-radius: 4px;
|
|
5642
|
+
font: inherit;
|
|
5643
|
+
font-size: 12px;
|
|
5644
|
+
color: var(--text-primary);
|
|
5645
|
+
text-align: left;
|
|
5646
|
+
cursor: pointer;
|
|
5647
|
+
}
|
|
5648
|
+
|
|
5649
|
+
.sg-menu-item:hover {
|
|
5650
|
+
background: var(--bg-hover);
|
|
5651
|
+
}
|
|
5652
|
+
|
|
5653
|
+
.sg-menu-remove {
|
|
5654
|
+
color: var(--text-secondary);
|
|
5655
|
+
}
|
|
5656
|
+
/* #endregion */
|