anentrypoint-design 0.0.207 → 0.0.208
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/app-shell.css +124 -12
- package/dist/247420.css +124 -12
- package/dist/247420.js +14 -14
- package/package.json +1 -1
- package/src/components/files.js +162 -27
- package/src/components.js +1 -1
package/app-shell.css
CHANGED
|
@@ -503,10 +503,10 @@ body.canvas-host { background: transparent !important; }
|
|
|
503
503
|
============================================================ */
|
|
504
504
|
.panel {
|
|
505
505
|
background: var(--panel-1, var(--bg-2));
|
|
506
|
-
border
|
|
506
|
+
border: var(--bw-hair) solid var(--rule);
|
|
507
|
+
border-radius: var(--r-2);
|
|
507
508
|
margin: 0 0 var(--space-5);
|
|
508
509
|
padding: var(--space-3);
|
|
509
|
-
box-shadow: var(--panel-shadow);
|
|
510
510
|
position: relative;
|
|
511
511
|
}
|
|
512
512
|
.panel.panel-inline { background: var(--bg-2); padding: var(--space-3) var(--space-3); }
|
|
@@ -895,10 +895,10 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
895
895
|
gap: 3px;
|
|
896
896
|
}
|
|
897
897
|
.ds-file-row {
|
|
898
|
-
|
|
899
|
-
gap: 10px; padding: 10px 12px;
|
|
898
|
+
gap: 8px; padding: 10px 12px;
|
|
900
899
|
font-size: var(--fs-xs);
|
|
901
900
|
}
|
|
901
|
+
.ds-file-open { gap: 10px; }
|
|
902
902
|
/* On mobile, fold meta under the title and keep actions inline. */
|
|
903
903
|
.ds-file-row .ds-file-meta { font-size: var(--fs-micro); }
|
|
904
904
|
.ds-file-row .ds-file-actions { opacity: 1; }
|
|
@@ -906,6 +906,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
906
906
|
reachable by touch (cohesion sweep). */
|
|
907
907
|
.ds-file-act, .ds-file-sort-btn, .ds-crumb-seg { min-height: 44px; }
|
|
908
908
|
.ds-file-filter-input { min-height: 44px; }
|
|
909
|
+
.ds-file-check, .ds-file-selectall, .ds-density-btn { min-height: 44px; min-width: 44px; }
|
|
909
910
|
|
|
910
911
|
/* Chat */
|
|
911
912
|
.chat-stack { max-width: 100%; min-width: 0; }
|
|
@@ -1132,10 +1133,13 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1132
1133
|
@keyframes ds-skel-shimmer { 100% { transform: translateX(100%); } }
|
|
1133
1134
|
@media (prefers-reduced-motion: reduce) { .ds-skel::after { animation: none; } }
|
|
1134
1135
|
|
|
1135
|
-
/* File row — linear layout (icon · title · meta · actions)
|
|
1136
|
+
/* File row — linear layout (checkbox? · open-button[code · icon · title · meta] · actions).
|
|
1137
|
+
The row is a flex strip; the open <button> is the stretching member and lays
|
|
1138
|
+
out the entry's own columns. It needs a full reset (UA button chrome off)
|
|
1139
|
+
because FileRow wraps the row content in a real button for native keyboard
|
|
1140
|
+
semantics. */
|
|
1136
1141
|
.ds-file-row {
|
|
1137
|
-
display:
|
|
1138
|
-
gap: 14px; align-items: center;
|
|
1142
|
+
display: flex; align-items: center; gap: 10px;
|
|
1139
1143
|
padding: 11px 16px; background: var(--bg);
|
|
1140
1144
|
border: var(--bw-hair) solid transparent;
|
|
1141
1145
|
border-radius: var(--r-2); color: var(--fg);
|
|
@@ -1144,6 +1148,14 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1144
1148
|
border-color var(--dur-snap) var(--ease),
|
|
1145
1149
|
transform var(--dur-snap) var(--ease);
|
|
1146
1150
|
}
|
|
1151
|
+
.ds-file-open {
|
|
1152
|
+
display: flex; align-items: center; gap: 14px;
|
|
1153
|
+
flex: 1 1 auto; min-width: 0;
|
|
1154
|
+
background: none; border: 0; padding: 0; margin: 0;
|
|
1155
|
+
color: inherit; font: inherit; text-align: left; cursor: pointer;
|
|
1156
|
+
}
|
|
1157
|
+
.ds-file-open[disabled] { cursor: default; }
|
|
1158
|
+
.ds-file-open:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--r-1); }
|
|
1147
1159
|
.ds-file-row:hover {
|
|
1148
1160
|
background: var(--bg-2);
|
|
1149
1161
|
border-color: var(--rule);
|
|
@@ -1165,7 +1177,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1165
1177
|
.ds-file-row .title {
|
|
1166
1178
|
font-weight: 500; font-size: var(--fs-sm);
|
|
1167
1179
|
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
1168
|
-
min-width: 0;
|
|
1180
|
+
min-width: 0; flex: 1 1 auto;
|
|
1169
1181
|
}
|
|
1170
1182
|
.ds-file-row .code {
|
|
1171
1183
|
font-family: var(--ff-mono); font-size: var(--fs-micro);
|
|
@@ -1207,6 +1219,99 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1207
1219
|
.ds-file-act:hover { background: var(--bg-3); color: var(--fg); }
|
|
1208
1220
|
.ds-file-act-warn:hover { background: color-mix(in oklab, var(--warn) 18%, var(--bg)); color: var(--warn); }
|
|
1209
1221
|
|
|
1222
|
+
/* Multi-select — per-row checkbox, header tri-state, bulk action strip. */
|
|
1223
|
+
.ds-file-check {
|
|
1224
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
1225
|
+
min-width: 28px; height: 28px; padding: 0 4px;
|
|
1226
|
+
background: transparent; border: 0; border-radius: var(--r-1);
|
|
1227
|
+
font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-3);
|
|
1228
|
+
cursor: pointer;
|
|
1229
|
+
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
1230
|
+
}
|
|
1231
|
+
.ds-file-check:hover { background: var(--bg-3); color: var(--fg); }
|
|
1232
|
+
.ds-file-check.is-marked { color: var(--accent); }
|
|
1233
|
+
.ds-file-check:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1234
|
+
.ds-file-check[disabled] { opacity: 0.4; cursor: default; }
|
|
1235
|
+
.ds-file-row.is-marked { background: var(--accent-tint); border-color: var(--accent); }
|
|
1236
|
+
.ds-file-selectall {
|
|
1237
|
+
display: inline-flex; align-items: center; gap: var(--space-1);
|
|
1238
|
+
font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-2);
|
|
1239
|
+
cursor: pointer; background: none; border: none;
|
|
1240
|
+
padding: var(--space-1); border-radius: var(--r-1);
|
|
1241
|
+
}
|
|
1242
|
+
.ds-file-selectall:hover { background: var(--bg-2); color: var(--fg); }
|
|
1243
|
+
.ds-file-selectall:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1244
|
+
.ds-file-controls { display: flex; align-items: center; gap: var(--space-2); padding: 0 var(--space-2) var(--space-1); flex-wrap: wrap; }
|
|
1245
|
+
.ds-file-controls .spread { flex: 1 1 auto; }
|
|
1246
|
+
.ds-file-controls .ds-file-sort { padding: 0; }
|
|
1247
|
+
.ds-bulkbar {
|
|
1248
|
+
display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap;
|
|
1249
|
+
padding: var(--space-1) var(--space-2);
|
|
1250
|
+
background: var(--bg-2); border: var(--bw-hair) solid var(--rule); border-radius: var(--r-2);
|
|
1251
|
+
}
|
|
1252
|
+
.ds-bulkbar-count { font-size: var(--fs-tiny); color: var(--fg-2); }
|
|
1253
|
+
|
|
1254
|
+
/* Density picker — list / compact / thumbnails. */
|
|
1255
|
+
.ds-density {
|
|
1256
|
+
display: inline-flex; gap: 2px; padding: 2px;
|
|
1257
|
+
background: var(--bg-2); border: var(--bw-hair) solid var(--rule); border-radius: var(--r-1);
|
|
1258
|
+
}
|
|
1259
|
+
.ds-density-btn {
|
|
1260
|
+
font-size: var(--fs-tiny); color: var(--fg-2);
|
|
1261
|
+
background: none; border: none; cursor: pointer;
|
|
1262
|
+
padding: 2px var(--space-2); border-radius: calc(var(--r-1) - 2px);
|
|
1263
|
+
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
1264
|
+
}
|
|
1265
|
+
.ds-density-btn:hover { color: var(--fg); }
|
|
1266
|
+
.ds-density-btn.active { background: var(--accent-tint); color: var(--accent); }
|
|
1267
|
+
.ds-density-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1268
|
+
|
|
1269
|
+
/* Compact density — tighter rows for long listings. */
|
|
1270
|
+
.ds-file-grid[data-density="compact"] { gap: 2px; }
|
|
1271
|
+
.ds-file-grid[data-density="compact"] .ds-file-row { padding: 5px 12px; gap: 10px; }
|
|
1272
|
+
.ds-file-grid[data-density="compact"] .ds-file-row .title { font-size: var(--fs-xs); }
|
|
1273
|
+
.ds-file-grid[data-density="compact"] .ds-file-row .ds-file-meta { font-size: var(--fs-micro); }
|
|
1274
|
+
.ds-file-grid[data-density="compact"] .ds-file-icon { width: 20px; height: 20px; font-size: 13px; }
|
|
1275
|
+
|
|
1276
|
+
/* Thumbnail density — tile grid; image entries carry a real lazy thumbnail. */
|
|
1277
|
+
.ds-file-grid-thumb {
|
|
1278
|
+
display: grid; grid-template-columns: repeat(auto-fill, minmax(132px, 1fr));
|
|
1279
|
+
gap: var(--space-3); align-items: start;
|
|
1280
|
+
}
|
|
1281
|
+
.ds-file-cell {
|
|
1282
|
+
position: relative;
|
|
1283
|
+
background: var(--bg); border: var(--bw-hair) solid var(--rule); border-radius: var(--r-2);
|
|
1284
|
+
overflow: hidden;
|
|
1285
|
+
transition: border-color var(--dur-snap) var(--ease), background var(--dur-snap) var(--ease);
|
|
1286
|
+
}
|
|
1287
|
+
.ds-file-cell:hover { border-color: var(--fg-3); }
|
|
1288
|
+
.ds-file-cell.active { border-color: var(--accent); background: var(--accent-tint); }
|
|
1289
|
+
.ds-file-cell.is-marked { border-color: var(--accent); background: var(--accent-tint); }
|
|
1290
|
+
.ds-file-cell.is-locked { opacity: 0.6; }
|
|
1291
|
+
.ds-file-cell-open {
|
|
1292
|
+
display: flex; flex-direction: column; align-items: stretch; gap: var(--space-1);
|
|
1293
|
+
width: 100%; padding: var(--space-1); margin: 0;
|
|
1294
|
+
background: none; border: none; cursor: pointer; color: var(--fg);
|
|
1295
|
+
}
|
|
1296
|
+
.ds-file-cell-open[disabled] { cursor: default; }
|
|
1297
|
+
.ds-file-cell-open:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; border-radius: var(--r-2); }
|
|
1298
|
+
.ds-file-cell-media {
|
|
1299
|
+
display: flex; align-items: center; justify-content: center;
|
|
1300
|
+
width: 100%; aspect-ratio: 4 / 3;
|
|
1301
|
+
background: var(--bg-2); border-radius: var(--r-1); overflow: hidden;
|
|
1302
|
+
}
|
|
1303
|
+
.ds-file-cell-media .ds-file-icon { width: 34px; height: 34px; font-size: 24px; }
|
|
1304
|
+
.ds-file-cell-thumb { width: 100%; height: 100%; object-fit: cover; }
|
|
1305
|
+
.ds-file-cell-name {
|
|
1306
|
+
font-size: var(--fs-tiny); text-align: left;
|
|
1307
|
+
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
1308
|
+
}
|
|
1309
|
+
.ds-file-cell-meta { font-family: var(--ff-mono); font-size: var(--fs-micro); color: var(--fg-3); text-align: left; }
|
|
1310
|
+
.ds-file-cell-check {
|
|
1311
|
+
position: absolute; top: 4px; left: 4px; z-index: 1;
|
|
1312
|
+
background: color-mix(in oklab, var(--bg) 78%, transparent);
|
|
1313
|
+
}
|
|
1314
|
+
|
|
1210
1315
|
/* Card mode — opt-in via data-columns; switches the list to a grid. */
|
|
1211
1316
|
.ds-file-grid[data-columns] { display: grid; gap: var(--space-3); }
|
|
1212
1317
|
.ds-file-grid[data-columns="1"] { grid-template-columns: 1fr; }
|
|
@@ -1589,7 +1694,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1589
1694
|
.ds-segmented .ds-seg-btn:hover { color: var(--fg); }
|
|
1590
1695
|
.ds-segmented .ds-seg-btn.is-on {
|
|
1591
1696
|
background: var(--bg); color: var(--fg);
|
|
1592
|
-
box-shadow: var(--
|
|
1697
|
+
box-shadow: inset 0 0 0 var(--bw-hair, 1px) var(--rule);
|
|
1593
1698
|
}
|
|
1594
1699
|
.ds-theme-toggle.btn {
|
|
1595
1700
|
font-family: var(--ff-mono); font-size: var(--fs-xs);
|
|
@@ -1795,7 +1900,6 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1795
1900
|
.chat-msg:hover .chat-image,
|
|
1796
1901
|
.chat-image:hover {
|
|
1797
1902
|
border-color: color-mix(in oklab, var(--accent) 35%, transparent);
|
|
1798
|
-
box-shadow: 0 4px 16px color-mix(in oklab, var(--fg) 12%, transparent);
|
|
1799
1903
|
}
|
|
1800
1904
|
.chat-image img { display: block; width: 100%; height: auto; max-height: 360px; object-fit: cover; }
|
|
1801
1905
|
.chat-image .cap,
|
|
@@ -1836,7 +1940,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1836
1940
|
border-radius: 12px; overflow: hidden; max-width: min(100%, 480px);
|
|
1837
1941
|
transition: box-shadow 0.12s ease, border-color 0.12s ease;
|
|
1838
1942
|
}
|
|
1839
|
-
.chat-msg:hover .chat-pdf { border-color: color-mix(in oklab, var(--accent) 30%, transparent);
|
|
1943
|
+
.chat-msg:hover .chat-pdf { border-color: color-mix(in oklab, var(--accent) 30%, transparent); }
|
|
1840
1944
|
.chat-pdf-head {
|
|
1841
1945
|
display: flex; align-items: center; gap: 10px; padding: 10px 14px;
|
|
1842
1946
|
background: color-mix(in oklab, var(--fg) 5%, var(--bg-2));
|
|
@@ -1864,7 +1968,6 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1864
1968
|
.chat-link:hover {
|
|
1865
1969
|
background: var(--bg-3);
|
|
1866
1970
|
border-color: color-mix(in oklab, var(--accent) 40%, transparent);
|
|
1867
|
-
box-shadow: 0 2px 12px color-mix(in oklab, var(--fg) 8%, transparent);
|
|
1868
1971
|
}
|
|
1869
1972
|
.chat-link:not(:has(.thumb)):not(:has(img)) { grid-template-columns: 1fr; }
|
|
1870
1973
|
.chat-link .thumb,
|
|
@@ -2986,6 +3089,15 @@ input[type="password"]:not(:placeholder-shown) + .input-clear {
|
|
|
2986
3089
|
.ws-shell.ws-sessions-open .ws-scrim, .ws-shell.ws-pane-open .ws-scrim { opacity: 1; pointer-events: auto; }
|
|
2987
3090
|
/* The mobile drawer-toggle affordances live in the crumb bar. */
|
|
2988
3091
|
.ws-drawer-toggle { display: inline-flex; }
|
|
3092
|
+
/* The Crumb's narrow collapse elsewhere keys on the .app @container, which
|
|
3093
|
+
does not exist inside WorkspaceShell - mirror it here so the crumb bar
|
|
3094
|
+
cannot overflow a narrow viewport (trail hides, leaf ellipsizes, the
|
|
3095
|
+
right cluster wraps under instead of pushing past the edge). */
|
|
3096
|
+
.ws-crumb { padding-top: 6px; padding-bottom: 6px; }
|
|
3097
|
+
.ws-crumb .app-crumb { flex-wrap: wrap; min-width: 0; }
|
|
3098
|
+
.ws-crumb .app-crumb > .sep, .ws-crumb .app-crumb > span:not(.crumb-right):not(.leaf) { display: none; }
|
|
3099
|
+
.ws-crumb .app-crumb .leaf { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
|
|
3100
|
+
.ws-crumb .app-crumb .crumb-right { margin-left: 0; flex-wrap: wrap; min-width: 0; display: inline-flex; }
|
|
2989
3101
|
}
|
|
2990
3102
|
/* Drawer toggles are mobile-only chrome; hidden on the desktop grid. */
|
|
2991
3103
|
.ws-drawer-toggle { display: none; align-items: center; justify-content: center; width: 40px; height: 40px; border: none; background: none; color: var(--fg-2); cursor: pointer; border-radius: var(--r-1); }
|
package/dist/247420.css
CHANGED
|
@@ -904,10 +904,10 @@
|
|
|
904
904
|
============================================================ */
|
|
905
905
|
.ds-247420 .panel {
|
|
906
906
|
background: var(--panel-1, var(--bg-2));
|
|
907
|
-
border
|
|
907
|
+
border: var(--bw-hair) solid var(--rule);
|
|
908
|
+
border-radius: var(--r-2);
|
|
908
909
|
margin: 0 0 var(--space-5);
|
|
909
910
|
padding: var(--space-3);
|
|
910
|
-
box-shadow: var(--panel-shadow);
|
|
911
911
|
position: relative;
|
|
912
912
|
}
|
|
913
913
|
.ds-247420 .panel.panel-inline { background: var(--bg-2); padding: var(--space-3) var(--space-3); }
|
|
@@ -1296,10 +1296,10 @@
|
|
|
1296
1296
|
gap: 3px;
|
|
1297
1297
|
}
|
|
1298
1298
|
.ds-247420 .ds-file-row {
|
|
1299
|
-
|
|
1300
|
-
gap: 10px; padding: 10px 12px;
|
|
1299
|
+
gap: 8px; padding: 10px 12px;
|
|
1301
1300
|
font-size: var(--fs-xs);
|
|
1302
1301
|
}
|
|
1302
|
+
.ds-247420 .ds-file-open { gap: 10px; }
|
|
1303
1303
|
/* On mobile, fold meta under the title and keep actions inline. */
|
|
1304
1304
|
.ds-247420 .ds-file-row .ds-file-meta { font-size: var(--fs-micro); }
|
|
1305
1305
|
.ds-247420 .ds-file-row .ds-file-actions { opacity: 1; }
|
|
@@ -1307,6 +1307,7 @@
|
|
|
1307
1307
|
reachable by touch (cohesion sweep). */
|
|
1308
1308
|
.ds-247420 .ds-file-act, .ds-247420 .ds-file-sort-btn, .ds-247420 .ds-crumb-seg { min-height: 44px; }
|
|
1309
1309
|
.ds-247420 .ds-file-filter-input { min-height: 44px; }
|
|
1310
|
+
.ds-247420 .ds-file-check, .ds-247420 .ds-file-selectall, .ds-247420 .ds-density-btn { min-height: 44px; min-width: 44px; }
|
|
1310
1311
|
|
|
1311
1312
|
/* Chat */
|
|
1312
1313
|
.ds-247420 .chat-stack { max-width: 100%; min-width: 0; }
|
|
@@ -1533,10 +1534,13 @@
|
|
|
1533
1534
|
@keyframes ds-skel-shimmer { 100% { transform: translateX(100%); } }
|
|
1534
1535
|
@media (prefers-reduced-motion: reduce) { .ds-247420 .ds-skel::after { animation: none; } }
|
|
1535
1536
|
|
|
1536
|
-
/* File row — linear layout (icon · title · meta · actions)
|
|
1537
|
+
/* File row — linear layout (checkbox? · open-button[code · icon · title · meta] · actions).
|
|
1538
|
+
The row is a flex strip; the open <button> is the stretching member and lays
|
|
1539
|
+
out the entry's own columns. It needs a full reset (UA button chrome off)
|
|
1540
|
+
because FileRow wraps the row content in a real button for native keyboard
|
|
1541
|
+
semantics. */
|
|
1537
1542
|
.ds-247420 .ds-file-row {
|
|
1538
|
-
display:
|
|
1539
|
-
gap: 14px; align-items: center;
|
|
1543
|
+
display: flex; align-items: center; gap: 10px;
|
|
1540
1544
|
padding: 11px 16px; background: var(--bg);
|
|
1541
1545
|
border: var(--bw-hair) solid transparent;
|
|
1542
1546
|
border-radius: var(--r-2); color: var(--fg);
|
|
@@ -1545,6 +1549,14 @@
|
|
|
1545
1549
|
border-color var(--dur-snap) var(--ease),
|
|
1546
1550
|
transform var(--dur-snap) var(--ease);
|
|
1547
1551
|
}
|
|
1552
|
+
.ds-247420 .ds-file-open {
|
|
1553
|
+
display: flex; align-items: center; gap: 14px;
|
|
1554
|
+
flex: 1 1 auto; min-width: 0;
|
|
1555
|
+
background: none; border: 0; padding: 0; margin: 0;
|
|
1556
|
+
color: inherit; font: inherit; text-align: left; cursor: pointer;
|
|
1557
|
+
}
|
|
1558
|
+
.ds-247420 .ds-file-open[disabled] { cursor: default; }
|
|
1559
|
+
.ds-247420 .ds-file-open:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--r-1); }
|
|
1548
1560
|
.ds-247420 .ds-file-row:hover {
|
|
1549
1561
|
background: var(--bg-2);
|
|
1550
1562
|
border-color: var(--rule);
|
|
@@ -1566,7 +1578,7 @@
|
|
|
1566
1578
|
.ds-247420 .ds-file-row .title {
|
|
1567
1579
|
font-weight: 500; font-size: var(--fs-sm);
|
|
1568
1580
|
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
1569
|
-
min-width: 0;
|
|
1581
|
+
min-width: 0; flex: 1 1 auto;
|
|
1570
1582
|
}
|
|
1571
1583
|
.ds-247420 .ds-file-row .code {
|
|
1572
1584
|
font-family: var(--ff-mono); font-size: var(--fs-micro);
|
|
@@ -1608,6 +1620,99 @@
|
|
|
1608
1620
|
.ds-247420 .ds-file-act:hover { background: var(--bg-3); color: var(--fg); }
|
|
1609
1621
|
.ds-247420 .ds-file-act-warn:hover { background: color-mix(in oklab, var(--warn) 18%, var(--bg)); color: var(--warn); }
|
|
1610
1622
|
|
|
1623
|
+
/* Multi-select — per-row checkbox, header tri-state, bulk action strip. */
|
|
1624
|
+
.ds-247420 .ds-file-check {
|
|
1625
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
1626
|
+
min-width: 28px; height: 28px; padding: 0 4px;
|
|
1627
|
+
background: transparent; border: 0; border-radius: var(--r-1);
|
|
1628
|
+
font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-3);
|
|
1629
|
+
cursor: pointer;
|
|
1630
|
+
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
1631
|
+
}
|
|
1632
|
+
.ds-247420 .ds-file-check:hover { background: var(--bg-3); color: var(--fg); }
|
|
1633
|
+
.ds-247420 .ds-file-check.is-marked { color: var(--accent); }
|
|
1634
|
+
.ds-247420 .ds-file-check:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1635
|
+
.ds-247420 .ds-file-check[disabled] { opacity: 0.4; cursor: default; }
|
|
1636
|
+
.ds-247420 .ds-file-row.is-marked { background: var(--accent-tint); border-color: var(--accent); }
|
|
1637
|
+
.ds-247420 .ds-file-selectall {
|
|
1638
|
+
display: inline-flex; align-items: center; gap: var(--space-1);
|
|
1639
|
+
font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-2);
|
|
1640
|
+
cursor: pointer; background: none; border: none;
|
|
1641
|
+
padding: var(--space-1); border-radius: var(--r-1);
|
|
1642
|
+
}
|
|
1643
|
+
.ds-247420 .ds-file-selectall:hover { background: var(--bg-2); color: var(--fg); }
|
|
1644
|
+
.ds-247420 .ds-file-selectall:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1645
|
+
.ds-247420 .ds-file-controls { display: flex; align-items: center; gap: var(--space-2); padding: 0 var(--space-2) var(--space-1); flex-wrap: wrap; }
|
|
1646
|
+
.ds-247420 .ds-file-controls .spread { flex: 1 1 auto; }
|
|
1647
|
+
.ds-247420 .ds-file-controls .ds-file-sort { padding: 0; }
|
|
1648
|
+
.ds-247420 .ds-bulkbar {
|
|
1649
|
+
display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap;
|
|
1650
|
+
padding: var(--space-1) var(--space-2);
|
|
1651
|
+
background: var(--bg-2); border: var(--bw-hair) solid var(--rule); border-radius: var(--r-2);
|
|
1652
|
+
}
|
|
1653
|
+
.ds-247420 .ds-bulkbar-count { font-size: var(--fs-tiny); color: var(--fg-2); }
|
|
1654
|
+
|
|
1655
|
+
/* Density picker — list / compact / thumbnails. */
|
|
1656
|
+
.ds-247420 .ds-density {
|
|
1657
|
+
display: inline-flex; gap: 2px; padding: 2px;
|
|
1658
|
+
background: var(--bg-2); border: var(--bw-hair) solid var(--rule); border-radius: var(--r-1);
|
|
1659
|
+
}
|
|
1660
|
+
.ds-247420 .ds-density-btn {
|
|
1661
|
+
font-size: var(--fs-tiny); color: var(--fg-2);
|
|
1662
|
+
background: none; border: none; cursor: pointer;
|
|
1663
|
+
padding: 2px var(--space-2); border-radius: calc(var(--r-1) - 2px);
|
|
1664
|
+
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
1665
|
+
}
|
|
1666
|
+
.ds-247420 .ds-density-btn:hover { color: var(--fg); }
|
|
1667
|
+
.ds-247420 .ds-density-btn.active { background: var(--accent-tint); color: var(--accent); }
|
|
1668
|
+
.ds-247420 .ds-density-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1669
|
+
|
|
1670
|
+
/* Compact density — tighter rows for long listings. */
|
|
1671
|
+
.ds-247420 .ds-file-grid[data-density="compact"] { gap: 2px; }
|
|
1672
|
+
.ds-247420 .ds-file-grid[data-density="compact"] .ds-file-row { padding: 5px 12px; gap: 10px; }
|
|
1673
|
+
.ds-247420 .ds-file-grid[data-density="compact"] .ds-file-row .title { font-size: var(--fs-xs); }
|
|
1674
|
+
.ds-247420 .ds-file-grid[data-density="compact"] .ds-file-row .ds-file-meta { font-size: var(--fs-micro); }
|
|
1675
|
+
.ds-247420 .ds-file-grid[data-density="compact"] .ds-file-icon { width: 20px; height: 20px; font-size: 13px; }
|
|
1676
|
+
|
|
1677
|
+
/* Thumbnail density — tile grid; image entries carry a real lazy thumbnail. */
|
|
1678
|
+
.ds-247420 .ds-file-grid-thumb {
|
|
1679
|
+
display: grid; grid-template-columns: repeat(auto-fill, minmax(132px, 1fr));
|
|
1680
|
+
gap: var(--space-3); align-items: start;
|
|
1681
|
+
}
|
|
1682
|
+
.ds-247420 .ds-file-cell {
|
|
1683
|
+
position: relative;
|
|
1684
|
+
background: var(--bg); border: var(--bw-hair) solid var(--rule); border-radius: var(--r-2);
|
|
1685
|
+
overflow: hidden;
|
|
1686
|
+
transition: border-color var(--dur-snap) var(--ease), background var(--dur-snap) var(--ease);
|
|
1687
|
+
}
|
|
1688
|
+
.ds-247420 .ds-file-cell:hover { border-color: var(--fg-3); }
|
|
1689
|
+
.ds-247420 .ds-file-cell.active { border-color: var(--accent); background: var(--accent-tint); }
|
|
1690
|
+
.ds-247420 .ds-file-cell.is-marked { border-color: var(--accent); background: var(--accent-tint); }
|
|
1691
|
+
.ds-247420 .ds-file-cell.is-locked { opacity: 0.6; }
|
|
1692
|
+
.ds-247420 .ds-file-cell-open {
|
|
1693
|
+
display: flex; flex-direction: column; align-items: stretch; gap: var(--space-1);
|
|
1694
|
+
width: 100%; padding: var(--space-1); margin: 0;
|
|
1695
|
+
background: none; border: none; cursor: pointer; color: var(--fg);
|
|
1696
|
+
}
|
|
1697
|
+
.ds-247420 .ds-file-cell-open[disabled] { cursor: default; }
|
|
1698
|
+
.ds-247420 .ds-file-cell-open:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; border-radius: var(--r-2); }
|
|
1699
|
+
.ds-247420 .ds-file-cell-media {
|
|
1700
|
+
display: flex; align-items: center; justify-content: center;
|
|
1701
|
+
width: 100%; aspect-ratio: 4 / 3;
|
|
1702
|
+
background: var(--bg-2); border-radius: var(--r-1); overflow: hidden;
|
|
1703
|
+
}
|
|
1704
|
+
.ds-247420 .ds-file-cell-media .ds-file-icon { width: 34px; height: 34px; font-size: 24px; }
|
|
1705
|
+
.ds-247420 .ds-file-cell-thumb { width: 100%; height: 100%; object-fit: cover; }
|
|
1706
|
+
.ds-247420 .ds-file-cell-name {
|
|
1707
|
+
font-size: var(--fs-tiny); text-align: left;
|
|
1708
|
+
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
1709
|
+
}
|
|
1710
|
+
.ds-247420 .ds-file-cell-meta { font-family: var(--ff-mono); font-size: var(--fs-micro); color: var(--fg-3); text-align: left; }
|
|
1711
|
+
.ds-247420 .ds-file-cell-check {
|
|
1712
|
+
position: absolute; top: 4px; left: 4px; z-index: 1;
|
|
1713
|
+
background: color-mix(in oklab, var(--bg) 78%, transparent);
|
|
1714
|
+
}
|
|
1715
|
+
|
|
1611
1716
|
/* Card mode — opt-in via data-columns; switches the list to a grid. */
|
|
1612
1717
|
.ds-247420 .ds-file-grid[data-columns] { display: grid; gap: var(--space-3); }
|
|
1613
1718
|
.ds-247420 .ds-file-grid[data-columns="1"] { grid-template-columns: 1fr; }
|
|
@@ -1990,7 +2095,7 @@
|
|
|
1990
2095
|
.ds-247420 .ds-segmented .ds-seg-btn:hover { color: var(--fg); }
|
|
1991
2096
|
.ds-247420 .ds-segmented .ds-seg-btn.is-on {
|
|
1992
2097
|
background: var(--bg); color: var(--fg);
|
|
1993
|
-
box-shadow: var(--
|
|
2098
|
+
box-shadow: inset 0 0 0 var(--bw-hair, 1px) var(--rule);
|
|
1994
2099
|
}
|
|
1995
2100
|
.ds-247420 .ds-theme-toggle.btn {
|
|
1996
2101
|
font-family: var(--ff-mono); font-size: var(--fs-xs);
|
|
@@ -2196,7 +2301,6 @@
|
|
|
2196
2301
|
.ds-247420 .chat-msg:hover .chat-image,
|
|
2197
2302
|
.ds-247420 .chat-image:hover {
|
|
2198
2303
|
border-color: color-mix(in oklab, var(--accent) 35%, transparent);
|
|
2199
|
-
box-shadow: 0 4px 16px color-mix(in oklab, var(--fg) 12%, transparent);
|
|
2200
2304
|
}
|
|
2201
2305
|
.ds-247420 .chat-image img { display: block; width: 100%; height: auto; max-height: 360px; object-fit: cover; }
|
|
2202
2306
|
.ds-247420 .chat-image .cap,
|
|
@@ -2237,7 +2341,7 @@
|
|
|
2237
2341
|
border-radius: 12px; overflow: hidden; max-width: min(100%, 480px);
|
|
2238
2342
|
transition: box-shadow 0.12s ease, border-color 0.12s ease;
|
|
2239
2343
|
}
|
|
2240
|
-
.ds-247420 .chat-msg:hover .chat-pdf { border-color: color-mix(in oklab, var(--accent) 30%, transparent);
|
|
2344
|
+
.ds-247420 .chat-msg:hover .chat-pdf { border-color: color-mix(in oklab, var(--accent) 30%, transparent); }
|
|
2241
2345
|
.ds-247420 .chat-pdf-head {
|
|
2242
2346
|
display: flex; align-items: center; gap: 10px; padding: 10px 14px;
|
|
2243
2347
|
background: color-mix(in oklab, var(--fg) 5%, var(--bg-2));
|
|
@@ -2265,7 +2369,6 @@
|
|
|
2265
2369
|
.ds-247420 .chat-link:hover {
|
|
2266
2370
|
background: var(--bg-3);
|
|
2267
2371
|
border-color: color-mix(in oklab, var(--accent) 40%, transparent);
|
|
2268
|
-
box-shadow: 0 2px 12px color-mix(in oklab, var(--fg) 8%, transparent);
|
|
2269
2372
|
}
|
|
2270
2373
|
.ds-247420 .chat-link:not(:has(.thumb)):not(:has(img)) { grid-template-columns: 1fr; }
|
|
2271
2374
|
.ds-247420 .chat-link .thumb,
|
|
@@ -3378,6 +3481,15 @@
|
|
|
3378
3481
|
.ds-247420 .ws-shell.ws-sessions-open .ws-scrim, .ds-247420 .ws-shell.ws-pane-open .ws-scrim { opacity: 1; pointer-events: auto; }
|
|
3379
3482
|
/* The mobile drawer-toggle affordances live in the crumb bar. */
|
|
3380
3483
|
.ds-247420 .ws-drawer-toggle { display: inline-flex; }
|
|
3484
|
+
/* The Crumb's narrow collapse elsewhere keys on the .app @container, which
|
|
3485
|
+
does not exist inside WorkspaceShell - mirror it here so the crumb bar
|
|
3486
|
+
cannot overflow a narrow viewport (trail hides, leaf ellipsizes, the
|
|
3487
|
+
right cluster wraps under instead of pushing past the edge). */
|
|
3488
|
+
.ds-247420 .ws-crumb { padding-top: 6px; padding-bottom: 6px; }
|
|
3489
|
+
.ds-247420 .ws-crumb .app-crumb { flex-wrap: wrap; min-width: 0; }
|
|
3490
|
+
.ds-247420 .ws-crumb .app-crumb > .sep, .ds-247420 .ws-crumb .app-crumb > span:not(.crumb-right):not(.leaf) { display: none; }
|
|
3491
|
+
.ds-247420 .ws-crumb .app-crumb .leaf { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
|
|
3492
|
+
.ds-247420 .ws-crumb .app-crumb .crumb-right { margin-left: 0; flex-wrap: wrap; min-width: 0; display: inline-flex; }
|
|
3381
3493
|
}
|
|
3382
3494
|
/* Drawer toggles are mobile-only chrome; hidden on the desktop grid. */
|
|
3383
3495
|
.ds-247420 .ws-drawer-toggle { display: none; align-items: center; justify-content: center; width: 40px; height: 40px; border: none; background: none; color: var(--fg-2); cursor: pointer; border-radius: var(--r-1); }
|