Skip to content

Commit dd2fc5d

Browse files
authored
Merge pull request #145 from GCWing/gcwing-btw-aux-panel
feat(web-ui): move side questions into an auxiliary panel
2 parents 5f7965f + 9430fb3 commit dd2fc5d

29 files changed

Lines changed: 1668 additions & 395 deletions

src/web-ui/src/app/components/NavPanel/MainNav.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,7 @@ const MainNav: React.FC<MainNavProps> = ({
606606
aria-expanded={workspaceMenuOpen}
607607
onClick={toggleWorkspaceMenu}
608608
>
609-
<FolderOpen size={13} />
609+
<Plus size={13} />
610610
</button>
611611
</div>
612612
) : undefined}

src/web-ui/src/app/components/NavPanel/sections/sessions/SessionsSection.scss

Lines changed: 123 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,25 +92,45 @@
9292
}
9393

9494
&.is-child {
95-
height: 24px;
95+
min-height: 24px;
9696
font-size: 12px;
97-
padding-left: calc(#{$size-gap-1} + 14px);
97+
padding-left: calc(#{$size-gap-1} + 18px);
9898
position: relative;
9999

100100
&::before {
101+
content: '';
102+
position: absolute;
103+
left: 10px;
104+
top: 0;
105+
width: 1px;
106+
height: 50%;
107+
background: color-mix(in srgb, var(--border-subtle) 88%, transparent);
108+
opacity: 0.95;
109+
}
110+
111+
&::after {
101112
content: '';
102113
position: absolute;
103114
left: 10px;
104115
top: 50%;
105-
width: 10px;
116+
width: 12px;
106117
height: 1px;
107-
background: var(--border-subtle);
108-
opacity: 0.9;
118+
background: color-mix(in srgb, var(--border-subtle) 92%, transparent);
119+
opacity: 0.95;
109120
transform: translateY(-50%);
110121
}
111122

112123
.bitfun-nav-panel__inline-item-icon {
113-
opacity: 0.55;
124+
opacity: 0.72;
125+
}
126+
}
127+
128+
&.is-btw-child {
129+
background: color-mix(in srgb, var(--element-bg-soft) 38%, transparent);
130+
131+
&:hover,
132+
&.is-active {
133+
background: color-mix(in srgb, var(--element-bg-soft) 74%, transparent);
114134
}
115135
}
116136
}
@@ -136,13 +156,60 @@
136156
}
137157
}
138158

159+
&__inline-item-main {
160+
flex: 1;
161+
min-width: 0;
162+
display: flex;
163+
align-items: center;
164+
gap: 6px;
165+
}
166+
139167
&__inline-item-label {
140168
flex: 1;
169+
min-width: 0;
141170
overflow: hidden;
142171
text-overflow: ellipsis;
143172
white-space: nowrap;
144173
}
145174

175+
&__inline-item-btw-badge {
176+
flex: 0 0 auto;
177+
display: inline-flex;
178+
align-items: center;
179+
height: 12px;
180+
padding: 0 4px;
181+
border: 1px solid color-mix(in srgb, var(--border-subtle) 85%, transparent);
182+
border-radius: 999px;
183+
background: color-mix(in srgb, var(--element-bg-soft) 42%, transparent);
184+
color: var(--color-text-muted);
185+
font-size: 9px;
186+
font-weight: 500;
187+
letter-spacing: 0.02em;
188+
opacity: 0.78;
189+
}
190+
191+
&__inline-item-tooltip {
192+
display: flex;
193+
flex-direction: column;
194+
gap: 2px;
195+
max-width: 260px;
196+
}
197+
198+
&__inline-item-tooltip-title {
199+
font-size: 12px;
200+
font-weight: 600;
201+
color: var(--color-text-primary);
202+
line-height: 1.4;
203+
word-break: break-word;
204+
}
205+
206+
&__inline-item-tooltip-meta {
207+
font-size: 11px;
208+
color: var(--color-text-secondary);
209+
line-height: 1.4;
210+
word-break: break-word;
211+
}
212+
146213
&__inline-item-actions {
147214
display: none;
148215
align-items: center;
@@ -170,12 +237,60 @@
170237
transition: color $motion-fast $easing-standard,
171238
background $motion-fast $easing-standard;
172239

173-
&:hover {
240+
&:hover,
241+
&.is-open {
174242
color: var(--color-text-primary);
175243
background: color-mix(in srgb, var(--color-text-primary) 10%, transparent);
176244
}
245+
}
246+
247+
&__inline-item-menu-popover {
248+
position: fixed;
249+
width: max-content;
250+
min-width: 140px;
251+
max-width: min(220px, calc(100vw - 24px));
252+
padding: $size-gap-1 0;
253+
border-radius: $size-radius-base;
254+
background: var(--color-bg-elevated, #1e1e22);
255+
border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
256+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
257+
z-index: 10000;
258+
transform-origin: top left;
259+
animation: bitfun-footer-menu-in $motion-fast $easing-decelerate forwards;
260+
}
261+
262+
&__inline-item-menu-item {
263+
display: flex;
264+
align-items: center;
265+
gap: $size-gap-2;
266+
width: 100%;
267+
min-height: 28px;
268+
padding: 0 $size-gap-2;
269+
border: none;
270+
background: transparent;
271+
color: var(--color-text-secondary);
272+
font-size: $font-size-sm;
273+
font-weight: 400;
274+
cursor: pointer;
275+
text-align: left;
276+
white-space: nowrap;
277+
transition: color $motion-fast $easing-standard,
278+
background $motion-fast $easing-standard;
279+
280+
svg {
281+
flex-shrink: 0;
282+
opacity: 0.7;
283+
transition: opacity $motion-fast $easing-standard;
284+
}
285+
286+
&:hover:not(:disabled) {
287+
color: var(--color-text-primary);
288+
background: var(--element-bg-soft);
289+
290+
svg { opacity: 1; }
291+
}
177292

178-
&.delete:hover {
293+
&.is-danger:hover:not(:disabled) {
179294
color: var(--color-error, #ef4444);
180295
background: color-mix(in srgb, var(--color-error, #ef4444) 10%, transparent);
181296
}

0 commit comments

Comments
 (0)