|
|
@@ -8,6 +8,12 @@
|
|
|
min-height: 0;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding-right: 12px;
|
|
|
+}
|
|
|
+
|
|
|
+.root.rail {
|
|
|
+ padding-right: 0;
|
|
|
}
|
|
|
|
|
|
.iconButton {
|
|
|
@@ -167,9 +173,14 @@
|
|
|
min-height: 0;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
+ margin-right: -12px;
|
|
|
overflow: hidden;
|
|
|
}
|
|
|
|
|
|
+.rail .listArea {
|
|
|
+ margin-right: 0;
|
|
|
+}
|
|
|
+
|
|
|
/* Relative for the bottom fade overlay. */
|
|
|
.treeBody {
|
|
|
flex: 1;
|
|
|
@@ -202,27 +213,28 @@
|
|
|
|
|
|
/* List: the only scrolling region. Block, not a flex column: as flex items
|
|
|
the 54/34 rows would shrink under content overflow; block children keep
|
|
|
- their design heights and the 4px rhythm rides margins instead of gap. */
|
|
|
+ their design heights do not shrink under content overflow. Its right
|
|
|
+ padding is the sole gap between row backgrounds and the sidebar edge; the
|
|
|
+ outer seats move their clip boundary out so they add no hidden inset. */
|
|
|
.list {
|
|
|
+ --dsh-session-list-edge-inset: 12px;
|
|
|
+ --dsh-session-list-scrollbar-width: 8px;
|
|
|
flex: 1;
|
|
|
min-height: 0;
|
|
|
overflow-y: auto;
|
|
|
+ padding-right: var(--dsh-session-list-edge-inset);
|
|
|
padding-bottom: 12px;
|
|
|
- /* Row trailing content (the relative time, and the hover action buttons
|
|
|
- that replace it) sits flush against the row's 8px right padding, so an
|
|
|
- overlaid scrollbar covers it. Reserving the gutter keeps the bar beside
|
|
|
- the rows instead of on top of them; `stable` holds the reservation when
|
|
|
- the list is short enough not to scroll, so expanding a group does not
|
|
|
- shift every row left. */
|
|
|
scrollbar-gutter: stable;
|
|
|
}
|
|
|
|
|
|
-.list > [role='treeitem'] + [role='treeitem'] {
|
|
|
- margin-top: 4px;
|
|
|
+.list::-webkit-scrollbar {
|
|
|
+ width: var(--dsh-session-list-scrollbar-width);
|
|
|
}
|
|
|
|
|
|
-.searchTree > [role='treeitem'] + [role='treeitem'] {
|
|
|
- margin-top: 4px;
|
|
|
+.list > [role='treeitem'] + [role='treeitem'],
|
|
|
+.searchTree > [role='treeitem'] + [role='treeitem'],
|
|
|
+.groupSection > * + * {
|
|
|
+ margin-top: 2px;
|
|
|
}
|
|
|
|
|
|
.searchStatus,
|
|
|
@@ -237,22 +249,11 @@
|
|
|
color: var(--dsw-alias-label-secondary);
|
|
|
}
|
|
|
|
|
|
-/* One workspace section: header row + expanded session run. Rows inside
|
|
|
- keep the former flat-list 4px gap as sibling margins; the inter-group
|
|
|
- breathing room (figma 133:7661 batch separator, 20px after an expanded
|
|
|
- run) rides the NEXT section's top margin so the last group adds none. */
|
|
|
-.groupSection > * + * {
|
|
|
- margin-top: 4px;
|
|
|
-}
|
|
|
-
|
|
|
+/* One workspace section: header row + a compact expanded session run. */
|
|
|
.groupSection + .groupSection {
|
|
|
margin-top: 4px;
|
|
|
}
|
|
|
|
|
|
-.groupSection:has([aria-expanded='true']) + .groupSection {
|
|
|
- margin-top: 20px;
|
|
|
-}
|
|
|
-
|
|
|
.empty {
|
|
|
padding: 16px 12px;
|
|
|
color: var(--dsw-alias-label-tertiary);
|