@tutti-os/workbench-surface 0.0.17 → 0.0.19
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/dist/{chunk-64XVF4I6.js → chunk-B5MSA47V.js} +19 -1
- package/dist/chunk-B5MSA47V.js.map +1 -0
- package/dist/i18n/index.d.ts +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +30 -7
- package/dist/index.js +1328 -193
- package/dist/index.js.map +1 -1
- package/dist/styles/workbench.css +163 -22
- package/dist/styles/workbenchStyle.test.ts +85 -3
- package/dist/{workbenchHostI18n-5xMPPBkf.d.ts → workbenchHostI18n-YFXDkIA1.d.ts} +1 -1
- package/package.json +5 -5
- package/dist/chunk-64XVF4I6.js.map +0 -1
|
@@ -129,6 +129,12 @@
|
|
|
129
129
|
backface-visibility: hidden;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
+
.workbench-window-shell[data-presentation-visibility="hidden"] {
|
|
133
|
+
visibility: hidden;
|
|
134
|
+
opacity: 0;
|
|
135
|
+
pointer-events: none;
|
|
136
|
+
}
|
|
137
|
+
|
|
132
138
|
.workbench-window-shell[data-presentation-mode="mission-control"]
|
|
133
139
|
.workbench-window-shell__content {
|
|
134
140
|
pointer-events: none;
|
|
@@ -244,8 +250,8 @@
|
|
|
244
250
|
transform: translateY(0);
|
|
245
251
|
pointer-events: auto;
|
|
246
252
|
transition:
|
|
247
|
-
opacity 0.16s ease
|
|
248
|
-
transform 0.2s cubic-bezier(0.4, 0, 0.2, 1)
|
|
253
|
+
opacity 0.16s ease,
|
|
254
|
+
transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
249
255
|
}
|
|
250
256
|
|
|
251
257
|
.workbench-window[data-display-mode="fullscreen"]:has(
|
|
@@ -268,7 +274,7 @@
|
|
|
268
274
|
right: 0;
|
|
269
275
|
left: 0;
|
|
270
276
|
z-index: 2;
|
|
271
|
-
height:
|
|
277
|
+
height: 16px;
|
|
272
278
|
pointer-events: auto;
|
|
273
279
|
}
|
|
274
280
|
|
|
@@ -739,6 +745,7 @@
|
|
|
739
745
|
--desktop-dock-scroll-button-z-index: 120;
|
|
740
746
|
--desktop-dock-scroll-fade-size: 48px;
|
|
741
747
|
--desktop-dock-tooltip-gap: 32px;
|
|
748
|
+
--desktop-dock-hover-panel-gap: 12px;
|
|
742
749
|
position: relative;
|
|
743
750
|
z-index: 1;
|
|
744
751
|
display: block;
|
|
@@ -1172,12 +1179,33 @@
|
|
|
1172
1179
|
animation-name: desktop-dock-minimized-icon-appear-left;
|
|
1173
1180
|
}
|
|
1174
1181
|
|
|
1175
|
-
.desktop-dock__slot[data-presence="exiting"]
|
|
1182
|
+
.desktop-dock__slot[data-presence="exiting"] {
|
|
1183
|
+
min-width: 0;
|
|
1184
|
+
animation: desktop-dock-slot-collapse 600ms cubic-bezier(0.4, 0, 0.2, 1) both;
|
|
1185
|
+
pointer-events: none;
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
.desktop-dock[data-dock-placement="left"]
|
|
1189
|
+
.desktop-dock__slot[data-presence="exiting"] {
|
|
1190
|
+
min-height: 0;
|
|
1191
|
+
animation-name: desktop-dock-slot-collapse-left;
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
.desktop-dock__slot[data-presence="exiting"] .desktop-dock__icon-shell {
|
|
1195
|
+
animation: desktop-dock-presence-exit 420ms cubic-bezier(0.4, 0, 0.2, 1) both;
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1176
1198
|
.desktop-dock__separator[data-presence="exiting"] {
|
|
1177
|
-
animation: desktop-dock-
|
|
1199
|
+
animation: desktop-dock-separator-collapse 600ms cubic-bezier(0.4, 0, 0.2, 1)
|
|
1200
|
+
both;
|
|
1178
1201
|
pointer-events: none;
|
|
1179
1202
|
}
|
|
1180
1203
|
|
|
1204
|
+
.desktop-dock[data-dock-placement="left"]
|
|
1205
|
+
.desktop-dock__separator[data-presence="exiting"] {
|
|
1206
|
+
animation-name: desktop-dock-separator-collapse-left;
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1181
1209
|
.desktop-dock__slot--minimized[data-collapsing="true"],
|
|
1182
1210
|
.desktop-dock__slot--minimized[data-presence="exiting"] {
|
|
1183
1211
|
min-width: 0;
|
|
@@ -1194,6 +1222,11 @@
|
|
|
1194
1222
|
animation-name: desktop-dock-minimized-slot-collapse-left;
|
|
1195
1223
|
}
|
|
1196
1224
|
|
|
1225
|
+
.desktop-dock__slot--minimized[data-presence="exiting"]
|
|
1226
|
+
.desktop-dock__icon-shell {
|
|
1227
|
+
animation: none;
|
|
1228
|
+
}
|
|
1229
|
+
|
|
1197
1230
|
.desktop-dock__slot--minimized[data-collapsing="true"]::before,
|
|
1198
1231
|
.desktop-dock__slot--minimized[data-presence="exiting"]::before {
|
|
1199
1232
|
opacity: 0;
|
|
@@ -1254,17 +1287,31 @@
|
|
|
1254
1287
|
|
|
1255
1288
|
.desktop-dock__slot[data-node-state="open"]::before,
|
|
1256
1289
|
.desktop-dock__slot[data-node-state="minimized"]::before {
|
|
1290
|
+
--desktop-dock-indicator-color: var(--text-tertiary);
|
|
1257
1291
|
position: absolute;
|
|
1258
|
-
bottom: var(--desktop-dock-indicator-offset);
|
|
1292
|
+
bottom: calc(var(--desktop-dock-indicator-offset) - 2px);
|
|
1259
1293
|
left: 50%;
|
|
1260
|
-
width:
|
|
1261
|
-
height:
|
|
1294
|
+
width: 5px;
|
|
1295
|
+
height: 5px;
|
|
1262
1296
|
border-radius: 999px;
|
|
1263
|
-
background: var(--
|
|
1297
|
+
background: var(--desktop-dock-indicator-color);
|
|
1298
|
+
box-shadow: 0 0 0 0.5px rgb(0 0 0 / 12%);
|
|
1264
1299
|
content: "";
|
|
1265
1300
|
transform: translateX(-50%);
|
|
1266
1301
|
}
|
|
1267
1302
|
|
|
1303
|
+
.desktop-dock__slot[data-node-state="open"][data-wallpaper-tone="dark"]::before,
|
|
1304
|
+
.desktop-dock__slot[data-node-state="minimized"][data-wallpaper-tone="dark"]::before {
|
|
1305
|
+
--desktop-dock-indicator-color: rgb(255 255 255 / 78%);
|
|
1306
|
+
box-shadow: 0 0 0 0.5px rgb(0 0 0 / 42%);
|
|
1307
|
+
}
|
|
1308
|
+
|
|
1309
|
+
.desktop-dock__slot[data-node-state="open"][data-wallpaper-tone="light"]::before,
|
|
1310
|
+
.desktop-dock__slot[data-node-state="minimized"][data-wallpaper-tone="light"]::before {
|
|
1311
|
+
--desktop-dock-indicator-color: rgb(0 0 0 / 46%);
|
|
1312
|
+
box-shadow: 0 0 0 0.5px rgb(255 255 255 / 58%);
|
|
1313
|
+
}
|
|
1314
|
+
|
|
1268
1315
|
.desktop-dock[data-dock-placement="left"]
|
|
1269
1316
|
.desktop-dock__slot[data-node-state="open"]::before,
|
|
1270
1317
|
.desktop-dock[data-dock-placement="left"]
|
|
@@ -1272,12 +1319,12 @@
|
|
|
1272
1319
|
top: 50%;
|
|
1273
1320
|
right: auto;
|
|
1274
1321
|
bottom: auto;
|
|
1275
|
-
left: var(--desktop-dock-indicator-offset);
|
|
1322
|
+
left: calc(var(--desktop-dock-indicator-offset) - 2px);
|
|
1276
1323
|
transform: translateY(-50%);
|
|
1277
1324
|
}
|
|
1278
1325
|
|
|
1279
1326
|
.desktop-dock__slot[data-node-state="minimized"]::before {
|
|
1280
|
-
|
|
1327
|
+
opacity: 0.72;
|
|
1281
1328
|
}
|
|
1282
1329
|
|
|
1283
1330
|
.desktop-dock__btn {
|
|
@@ -1562,6 +1609,40 @@
|
|
|
1562
1609
|
background: color-mix(in srgb, var(--background-panel) 70%, black 4%);
|
|
1563
1610
|
}
|
|
1564
1611
|
|
|
1612
|
+
.desktop-dock__minimized-preview--component {
|
|
1613
|
+
align-items: stretch;
|
|
1614
|
+
justify-content: stretch;
|
|
1615
|
+
gap: 0;
|
|
1616
|
+
padding: 0;
|
|
1617
|
+
background: var(--background-panel);
|
|
1618
|
+
}
|
|
1619
|
+
|
|
1620
|
+
.desktop-dock__minimized-preview--component > * {
|
|
1621
|
+
width: 100%;
|
|
1622
|
+
height: 100%;
|
|
1623
|
+
min-width: 0;
|
|
1624
|
+
min-height: 0;
|
|
1625
|
+
}
|
|
1626
|
+
|
|
1627
|
+
.desktop-dock__minimized-preview-freeze-source {
|
|
1628
|
+
position: absolute;
|
|
1629
|
+
inset: 0;
|
|
1630
|
+
visibility: hidden;
|
|
1631
|
+
pointer-events: none;
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
.desktop-dock__minimized-preview-frozen-content {
|
|
1635
|
+
display: block;
|
|
1636
|
+
overflow: hidden;
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1639
|
+
.desktop-dock__minimized-preview-frozen-content > * {
|
|
1640
|
+
width: 100%;
|
|
1641
|
+
height: 100%;
|
|
1642
|
+
min-width: 0;
|
|
1643
|
+
min-height: 0;
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1565
1646
|
.desktop-dock__minimized-preview-line {
|
|
1566
1647
|
display: block;
|
|
1567
1648
|
width: 74%;
|
|
@@ -1730,7 +1811,7 @@
|
|
|
1730
1811
|
opacity: 1;
|
|
1731
1812
|
pointer-events: auto;
|
|
1732
1813
|
transform: translateX(-50%)
|
|
1733
|
-
translateY(calc(-100% - var(--desktop-dock-
|
|
1814
|
+
translateY(calc(-100% - var(--desktop-dock-hover-panel-gap, 12px)));
|
|
1734
1815
|
transition:
|
|
1735
1816
|
opacity 0.12s ease,
|
|
1736
1817
|
transform 0.12s ease;
|
|
@@ -1744,7 +1825,10 @@
|
|
|
1744
1825
|
var(--desktop-dock-label-tooltip-anchor-width) / 2
|
|
1745
1826
|
);
|
|
1746
1827
|
z-index: var(--workbench-z-dock-tooltip);
|
|
1747
|
-
|
|
1828
|
+
box-sizing: border-box;
|
|
1829
|
+
width: max-content;
|
|
1830
|
+
max-width: min(220px, calc(100vw - 32px));
|
|
1831
|
+
overflow: hidden;
|
|
1748
1832
|
padding: 7px 10px;
|
|
1749
1833
|
border: 1px solid var(--border-1);
|
|
1750
1834
|
border-radius: 8px;
|
|
@@ -1755,13 +1839,14 @@
|
|
|
1755
1839
|
font-weight: 700;
|
|
1756
1840
|
line-height: 1.3;
|
|
1757
1841
|
opacity: 1;
|
|
1758
|
-
overflow-wrap: anywhere;
|
|
1759
1842
|
pointer-events: none;
|
|
1843
|
+
text-overflow: ellipsis;
|
|
1760
1844
|
transform: translateX(-50%)
|
|
1761
1845
|
translateY(calc(-100% - var(--desktop-dock-tooltip-gap, 32px)));
|
|
1762
1846
|
transition:
|
|
1763
1847
|
opacity 0.12s ease,
|
|
1764
1848
|
transform 0.12s ease;
|
|
1849
|
+
white-space: nowrap;
|
|
1765
1850
|
}
|
|
1766
1851
|
|
|
1767
1852
|
.desktop-dock__label-tooltip[data-dock-placement="left"] {
|
|
@@ -1785,7 +1870,7 @@
|
|
|
1785
1870
|
left: calc(
|
|
1786
1871
|
var(--desktop-dock-hover-panel-anchor-left) +
|
|
1787
1872
|
var(--desktop-dock-hover-panel-anchor-width) +
|
|
1788
|
-
var(--desktop-dock-
|
|
1873
|
+
var(--desktop-dock-hover-panel-gap, 12px)
|
|
1789
1874
|
);
|
|
1790
1875
|
transform: translateY(-50%);
|
|
1791
1876
|
}
|
|
@@ -1793,9 +1878,9 @@
|
|
|
1793
1878
|
.desktop-dock__hover-panel::before {
|
|
1794
1879
|
position: absolute;
|
|
1795
1880
|
right: 0;
|
|
1796
|
-
bottom: calc(-1 * var(--desktop-dock-
|
|
1881
|
+
bottom: calc(-1 * var(--desktop-dock-hover-panel-gap, 12px));
|
|
1797
1882
|
left: 0;
|
|
1798
|
-
height: var(--desktop-dock-
|
|
1883
|
+
height: var(--desktop-dock-hover-panel-gap, 12px);
|
|
1799
1884
|
content: "";
|
|
1800
1885
|
}
|
|
1801
1886
|
|
|
@@ -1803,8 +1888,8 @@
|
|
|
1803
1888
|
top: 0;
|
|
1804
1889
|
right: auto;
|
|
1805
1890
|
bottom: 0;
|
|
1806
|
-
left: calc(-1 * var(--desktop-dock-
|
|
1807
|
-
width: var(--desktop-dock-
|
|
1891
|
+
left: calc(-1 * var(--desktop-dock-hover-panel-gap, 12px));
|
|
1892
|
+
width: var(--desktop-dock-hover-panel-gap, 12px);
|
|
1808
1893
|
height: auto;
|
|
1809
1894
|
}
|
|
1810
1895
|
|
|
@@ -2162,6 +2247,62 @@ body[data-desktop-dock-minimized-stack-open="true"] .desktop-dock {
|
|
|
2162
2247
|
}
|
|
2163
2248
|
}
|
|
2164
2249
|
|
|
2250
|
+
@keyframes desktop-dock-slot-collapse {
|
|
2251
|
+
from {
|
|
2252
|
+
width: var(--desktop-dock-size);
|
|
2253
|
+
height: var(--desktop-dock-size);
|
|
2254
|
+
margin-inline: 0;
|
|
2255
|
+
}
|
|
2256
|
+
|
|
2257
|
+
to {
|
|
2258
|
+
width: 0;
|
|
2259
|
+
height: var(--desktop-dock-size);
|
|
2260
|
+
margin-inline: calc(var(--desktop-dock-gap) / -2);
|
|
2261
|
+
}
|
|
2262
|
+
}
|
|
2263
|
+
|
|
2264
|
+
@keyframes desktop-dock-slot-collapse-left {
|
|
2265
|
+
from {
|
|
2266
|
+
width: var(--desktop-dock-size);
|
|
2267
|
+
height: var(--desktop-dock-size);
|
|
2268
|
+
margin-block: 0;
|
|
2269
|
+
}
|
|
2270
|
+
|
|
2271
|
+
to {
|
|
2272
|
+
width: var(--desktop-dock-size);
|
|
2273
|
+
height: 0;
|
|
2274
|
+
margin-block: calc(var(--desktop-dock-gap) / -2);
|
|
2275
|
+
}
|
|
2276
|
+
}
|
|
2277
|
+
|
|
2278
|
+
@keyframes desktop-dock-separator-collapse {
|
|
2279
|
+
from {
|
|
2280
|
+
width: 1px;
|
|
2281
|
+
margin-inline: 4px;
|
|
2282
|
+
opacity: 1;
|
|
2283
|
+
}
|
|
2284
|
+
|
|
2285
|
+
to {
|
|
2286
|
+
width: 0;
|
|
2287
|
+
margin-inline: calc(var(--desktop-dock-gap) / -2);
|
|
2288
|
+
opacity: 0;
|
|
2289
|
+
}
|
|
2290
|
+
}
|
|
2291
|
+
|
|
2292
|
+
@keyframes desktop-dock-separator-collapse-left {
|
|
2293
|
+
from {
|
|
2294
|
+
height: 1px;
|
|
2295
|
+
margin-block: 4px;
|
|
2296
|
+
opacity: 1;
|
|
2297
|
+
}
|
|
2298
|
+
|
|
2299
|
+
to {
|
|
2300
|
+
height: 0;
|
|
2301
|
+
margin-block: calc(var(--desktop-dock-gap) / -2);
|
|
2302
|
+
opacity: 0;
|
|
2303
|
+
}
|
|
2304
|
+
}
|
|
2305
|
+
|
|
2165
2306
|
@keyframes desktop-dock-minimized-slot-expand {
|
|
2166
2307
|
from {
|
|
2167
2308
|
width: 0;
|
|
@@ -2372,7 +2513,7 @@ body[data-desktop-dock-minimized-stack-open="true"] .desktop-dock {
|
|
|
2372
2513
|
translate: 0 0;
|
|
2373
2514
|
}
|
|
2374
2515
|
45% {
|
|
2375
|
-
translate: 0 -
|
|
2516
|
+
translate: 0 -14px;
|
|
2376
2517
|
}
|
|
2377
2518
|
}
|
|
2378
2519
|
|
|
@@ -2382,7 +2523,7 @@ body[data-desktop-dock-minimized-stack-open="true"] .desktop-dock {
|
|
|
2382
2523
|
translate: 0 0;
|
|
2383
2524
|
}
|
|
2384
2525
|
45% {
|
|
2385
|
-
translate:
|
|
2526
|
+
translate: 14px 0;
|
|
2386
2527
|
}
|
|
2387
2528
|
}
|
|
2388
2529
|
|
|
@@ -2755,7 +2896,7 @@ body[data-desktop-dock-minimized-stack-open="true"] .desktop-dock {
|
|
|
2755
2896
|
|
|
2756
2897
|
animation: workspace-launchpad-hover-panel-enter 160ms
|
|
2757
2898
|
cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
2758
|
-
bottom: calc(100% + var(--desktop-dock-tooltip-gap,
|
|
2899
|
+
bottom: calc(100% + var(--desktop-dock-tooltip-gap, 12px));
|
|
2759
2900
|
left: 50%;
|
|
2760
2901
|
right: auto;
|
|
2761
2902
|
top: auto;
|
|
@@ -12,6 +12,44 @@ test("floating window bodies do not reserve a right-side content margin", () =>
|
|
|
12
12
|
);
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
+
test("mission control hidden presentation windows are invisible and inert", () => {
|
|
16
|
+
const css = readFileSync(resolve("src/styles/workbench.css"), "utf8");
|
|
17
|
+
|
|
18
|
+
assert.match(
|
|
19
|
+
css,
|
|
20
|
+
/\.workbench-window-shell\[data-presentation-visibility="hidden"\]\s*{[^}]*visibility:\s*hidden;[^}]*opacity:\s*0;[^}]*pointer-events:\s*none;/s
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test("dock retained entry removal animates width and icon exit", () => {
|
|
25
|
+
const css = readFileSync(resolve("src/styles/workbench.css"), "utf8");
|
|
26
|
+
|
|
27
|
+
assert.match(
|
|
28
|
+
css,
|
|
29
|
+
/\.desktop-dock-plate\s*{[^}]*transition:\s*width 220ms cubic-bezier\(0\.22, 1, 0\.36, 1\);/s
|
|
30
|
+
);
|
|
31
|
+
assert.match(
|
|
32
|
+
css,
|
|
33
|
+
/\.desktop-dock\[data-dock-placement="left"\]\s*{[^}]*transition:\s*height 600ms cubic-bezier\(0\.16, 1, 0\.3, 1\);/s
|
|
34
|
+
);
|
|
35
|
+
assert.match(
|
|
36
|
+
css,
|
|
37
|
+
/\.desktop-dock__slot\[data-presence="exiting"\]\s*{[^}]*animation:\s*desktop-dock-slot-collapse 600ms cubic-bezier\(0\.4, 0, 0\.2, 1\)[^}]*both;/s
|
|
38
|
+
);
|
|
39
|
+
assert.match(
|
|
40
|
+
css,
|
|
41
|
+
/\.desktop-dock__slot\[data-presence="exiting"\]\s+\.desktop-dock__icon-shell\s*{[^}]*animation:\s*desktop-dock-presence-exit 420ms cubic-bezier\(0\.4, 0, 0\.2, 1\)[^}]*both;/s
|
|
42
|
+
);
|
|
43
|
+
assert.match(
|
|
44
|
+
css,
|
|
45
|
+
/\.desktop-dock__separator\[data-presence="exiting"\]\s*{[^}]*animation:\s*desktop-dock-separator-collapse 600ms/s
|
|
46
|
+
);
|
|
47
|
+
assert.match(css, /@keyframes desktop-dock-slot-collapse/);
|
|
48
|
+
assert.match(css, /@keyframes desktop-dock-slot-collapse-left/);
|
|
49
|
+
assert.match(css, /@keyframes desktop-dock-separator-collapse/);
|
|
50
|
+
assert.match(css, /@keyframes desktop-dock-separator-collapse-left/);
|
|
51
|
+
});
|
|
52
|
+
|
|
15
53
|
test("left dock placement owns vertical frame and popup placement styles", () => {
|
|
16
54
|
const css = readFileSync(resolve("src/styles/workbench.css"), "utf8");
|
|
17
55
|
|
|
@@ -29,7 +67,7 @@ test("left dock placement owns vertical frame and popup placement styles", () =>
|
|
|
29
67
|
);
|
|
30
68
|
assert.match(
|
|
31
69
|
css,
|
|
32
|
-
/\.desktop-dock__hover-panel\[data-dock-placement="left"\]\s*{[^}]*left:\s*calc\(\s*var\(--desktop-dock-hover-panel-anchor-left\)\s*\+\s*var\(--desktop-dock-hover-panel-anchor-width\)\s*\+\s*var\(--desktop-dock-
|
|
70
|
+
/\.desktop-dock__hover-panel\[data-dock-placement="left"\]\s*{[^}]*left:\s*calc\(\s*var\(--desktop-dock-hover-panel-anchor-left\)\s*\+\s*var\(--desktop-dock-hover-panel-anchor-width\)\s*\+\s*var\(--desktop-dock-hover-panel-gap, 12px\)\s*\);/s
|
|
33
71
|
);
|
|
34
72
|
assert.match(
|
|
35
73
|
css,
|
|
@@ -62,7 +100,19 @@ test("left dock placement owns vertical frame and popup placement styles", () =>
|
|
|
62
100
|
assert.doesNotMatch(css, /desktop-dock-left-stack-card-fan-in/);
|
|
63
101
|
assert.match(
|
|
64
102
|
css,
|
|
65
|
-
/\.desktop-dock\[data-dock-placement="left"\]\s+\.desktop-dock__slot\[data-node-state="open"\]::before,[\s\S]*?\.desktop-dock\[data-dock-placement="left"\]\s+\.desktop-dock__slot\[data-node-state="minimized"\]::before\s*{[^}]*right:\s*auto;[^}]*left:\s*var\(--desktop-dock-indicator-offset\);/s
|
|
103
|
+
/\.desktop-dock\[data-dock-placement="left"\]\s+\.desktop-dock__slot\[data-node-state="open"\]::before,[\s\S]*?\.desktop-dock\[data-dock-placement="left"\]\s+\.desktop-dock__slot\[data-node-state="minimized"\]::before\s*{[^}]*right:\s*auto;[^}]*left:\s*calc\(var\(--desktop-dock-indicator-offset\) - 2px\);/s
|
|
104
|
+
);
|
|
105
|
+
assert.match(
|
|
106
|
+
css,
|
|
107
|
+
/\.desktop-dock__slot\[data-node-state="open"\]::before,[\s\S]*?\.desktop-dock__slot\[data-node-state="minimized"\]::before\s*{[^}]*--desktop-dock-indicator-color:\s*var\(--text-tertiary\);[^}]*bottom:\s*calc\(var\(--desktop-dock-indicator-offset\) - 2px\);[^}]*width:\s*5px;[^}]*height:\s*5px;[^}]*background:\s*var\(--desktop-dock-indicator-color\);[^}]*box-shadow:\s*0 0 0 0\.5px rgb\(0 0 0 \/ 12%\);/s
|
|
108
|
+
);
|
|
109
|
+
assert.match(
|
|
110
|
+
css,
|
|
111
|
+
/\.desktop-dock__slot\[data-node-state="open"\]\[data-wallpaper-tone="dark"\]::before,[\s\S]*?\.desktop-dock__slot\[data-node-state="minimized"\]\[data-wallpaper-tone="dark"\]::before\s*{[^}]*--desktop-dock-indicator-color:\s*rgb\(255 255 255 \/ 78%\);[^}]*box-shadow:\s*0 0 0 0\.5px rgb\(0 0 0 \/ 42%\);/s
|
|
112
|
+
);
|
|
113
|
+
assert.match(
|
|
114
|
+
css,
|
|
115
|
+
/\.desktop-dock__slot\[data-node-state="open"\]\[data-wallpaper-tone="light"\]::before,[\s\S]*?\.desktop-dock__slot\[data-node-state="minimized"\]\[data-wallpaper-tone="light"\]::before\s*{[^}]*--desktop-dock-indicator-color:\s*rgb\(0 0 0 \/ 46%\);[^}]*box-shadow:\s*0 0 0 0\.5px rgb\(255 255 255 \/ 58%\);/s
|
|
66
116
|
);
|
|
67
117
|
});
|
|
68
118
|
|
|
@@ -115,12 +165,20 @@ test("dock overflow keeps scroll controls viewport-bound", () => {
|
|
|
115
165
|
);
|
|
116
166
|
assert.match(
|
|
117
167
|
css,
|
|
118
|
-
/\.desktop-
|
|
168
|
+
/\.desktop-dock\s*{[^}]*--desktop-dock-hover-panel-gap:\s*12px;/s
|
|
169
|
+
);
|
|
170
|
+
assert.match(
|
|
171
|
+
css,
|
|
172
|
+
/\.desktop-dock__hover-panel\s*{[^}]*top:\s*var\(--desktop-dock-hover-panel-anchor-top\);[^}]*pointer-events:\s*auto;[^}]*var\(--desktop-dock-hover-panel-gap, 12px\)/s
|
|
119
173
|
);
|
|
120
174
|
assert.match(
|
|
121
175
|
css,
|
|
122
176
|
/\.desktop-dock__label-tooltip\s*{[^}]*top:\s*var\(--desktop-dock-label-tooltip-anchor-top\);[^}]*pointer-events:\s*none;[^}]*var\(--desktop-dock-tooltip-gap, 32px\)/s
|
|
123
177
|
);
|
|
178
|
+
assert.match(
|
|
179
|
+
css,
|
|
180
|
+
/\.desktop-dock__label-tooltip\s*{[^}]*width:\s*max-content;[^}]*overflow:\s*hidden;[^}]*text-overflow:\s*ellipsis;[^}]*white-space:\s*nowrap;/s
|
|
181
|
+
);
|
|
124
182
|
assert.match(
|
|
125
183
|
css,
|
|
126
184
|
/\.desktop-dock__label-tooltip\[data-dock-placement="left"\]\s*{[^}]*left:\s*calc\(\s*var\(--desktop-dock-label-tooltip-anchor-left\)\s*\+\s*var\(--desktop-dock-label-tooltip-anchor-width\)\s*\+\s*var\(--desktop-dock-tooltip-gap, 32px\)\s*\);/s
|
|
@@ -173,6 +231,22 @@ test("dock overflow keeps scroll controls viewport-bound", () => {
|
|
|
173
231
|
css,
|
|
174
232
|
/\.desktop-dock\[data-dock-placement="left"\]\s+\.desktop-dock__minimized-preview\s*{[^}]*transform-origin:\s*left center;/s
|
|
175
233
|
);
|
|
234
|
+
assert.match(
|
|
235
|
+
css,
|
|
236
|
+
/\.desktop-dock__minimized-preview--component\s*{[^}]*padding:\s*0;[^}]*background:\s*var\(--background-panel\);/s
|
|
237
|
+
);
|
|
238
|
+
assert.match(
|
|
239
|
+
css,
|
|
240
|
+
/\.desktop-dock__minimized-preview--component > \*\s*{[^}]*width:\s*100%;[^}]*height:\s*100%;/s
|
|
241
|
+
);
|
|
242
|
+
assert.match(
|
|
243
|
+
css,
|
|
244
|
+
/\.desktop-dock__minimized-preview-freeze-source\s*{[^}]*visibility:\s*hidden;[^}]*pointer-events:\s*none;/s
|
|
245
|
+
);
|
|
246
|
+
assert.match(
|
|
247
|
+
css,
|
|
248
|
+
/\.desktop-dock__minimized-preview-frozen-content\s*{[^}]*display:\s*block;[^}]*overflow:\s*hidden;/s
|
|
249
|
+
);
|
|
176
250
|
assert.match(css, /\.desktop-dock__slot\s*{[^}]*flex:\s*0 0 auto;/s);
|
|
177
251
|
assert.match(
|
|
178
252
|
css,
|
|
@@ -223,6 +297,14 @@ test("dock overflow keeps scroll controls viewport-bound", () => {
|
|
|
223
297
|
/\.desktop-dock\[data-dock-hover-panel-open="true"\]\s+\.desktop-dock__items\s*{[^}]*mask-image:\s*none;/s
|
|
224
298
|
);
|
|
225
299
|
assert.match(css, /@keyframes desktop-dock-bounce-translate/s);
|
|
300
|
+
assert.match(
|
|
301
|
+
css,
|
|
302
|
+
/@keyframes desktop-dock-bounce-translate\s*{[\s\S]*?45%\s*{[^}]*translate:\s*0 -14px;/s
|
|
303
|
+
);
|
|
304
|
+
assert.match(
|
|
305
|
+
css,
|
|
306
|
+
/@keyframes desktop-dock-bounce-translate-left\s*{[\s\S]*?45%\s*{[^}]*translate:\s*14px 0;/s
|
|
307
|
+
);
|
|
226
308
|
assert.match(
|
|
227
309
|
css,
|
|
228
310
|
/\.desktop-dock__slot\[data-bouncing="true"\]\s+\.desktop-dock__icon-content,/s
|
|
@@ -12,7 +12,7 @@ declare const workbenchWindowChromeI18nResources: Record<WorkbenchWindowChromeI1
|
|
|
12
12
|
declare function createWorkbenchWindowChromeI18nRuntime(runtime: I18nRuntime<string> | undefined): WorkbenchWindowChromeI18nRuntime;
|
|
13
13
|
|
|
14
14
|
declare const workbenchHostI18nNamespace = "workbenchHost";
|
|
15
|
-
type WorkbenchHostI18nKey = "actions.close" | "actions.minimize" | "closeWindow" | "dockLabel" | "launch" | "minimizedWindows" | "newWindow" | "scrollDockDown" | "scrollDockLeft" | "scrollDockRight" | "scrollDockUp" | "windowStatus.active" | "windowStatus.minimized" | "windowStatus.open";
|
|
15
|
+
type WorkbenchHostI18nKey = "actions.close" | "actions.minimize" | "closeWindow" | "dockContextMenu.fullscreen" | "dockContextMenu.hide" | "dockContextMenu.keepInDock" | "dockContextMenu.open" | "dockContextMenu.quit" | "dockContextMenu.removeFromDock" | "dockContextMenu.showAllWindows" | "dockLabel" | "launch" | "minimizedWindows" | "newWindow" | "scrollDockDown" | "scrollDockLeft" | "scrollDockRight" | "scrollDockUp" | "windowStatus.active" | "windowStatus.minimized" | "windowStatus.open";
|
|
16
16
|
type WorkbenchHostI18nRuntime = I18nRuntime<WorkbenchHostI18nKey>;
|
|
17
17
|
declare const workbenchHostI18nResources: {
|
|
18
18
|
readonly en: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tutti-os/workbench-surface",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.19",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
"@tutti-os/config-tsconfig": "0.0.0"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@tutti-os/ui-i18n-runtime": "0.0.
|
|
38
|
-
"@tutti-os/ui-react-hooks": "0.0.
|
|
39
|
-
"@tutti-os/workbench-snapshot": "0.0.
|
|
40
|
-
"@tutti-os/ui-system": "0.0.
|
|
37
|
+
"@tutti-os/ui-i18n-runtime": "0.0.19",
|
|
38
|
+
"@tutti-os/ui-react-hooks": "0.0.19",
|
|
39
|
+
"@tutti-os/workbench-snapshot": "0.0.19",
|
|
40
|
+
"@tutti-os/ui-system": "0.0.19"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
43
|
"react": "^19.1.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/react/workbenchWindowI18n.ts","../src/mission-control/workbenchMissionControlI18n.ts","../src/host/workbenchHostI18n.ts"],"sourcesContent":["import {\n createScopedLocaleObjectsI18nModuleManifest,\n createI18nRuntime,\n createScopedI18nRuntime,\n type I18nDictionary,\n type I18nRuntime\n} from \"@tutti-os/ui-i18n-runtime\";\n\ntype WorkbenchWindowChromeI18nLocale = \"en\" | \"zh-CN\";\nexport const workbenchWindowChromeI18nNamespace = \"workbenchWindowChrome\";\nexport const tuttiI18nModule = createScopedLocaleObjectsI18nModuleManifest({\n localeObjectByLocale: {\n en: \"workbenchWindowChromeEn\",\n \"zh-CN\": \"workbenchWindowChromeZhCN\"\n },\n name: \"workbench-window-chrome\",\n namespace: \"workbenchWindowChrome\",\n sourceRoot: \"packages/workbench/surface/src\"\n});\n\nconst workbenchWindowChromeEn = {\n enterFullscreen: \"Full Screen\",\n exitFullscreen: \"Exit Full Screen\"\n} as const satisfies I18nDictionary;\n\nconst workbenchWindowChromeZhCN = {\n enterFullscreen: \"全屏\",\n exitFullscreen: \"取消全屏\"\n} as const satisfies I18nDictionary;\n\nexport type WorkbenchWindowChromeI18nKey = keyof typeof workbenchWindowChromeEn;\n\nexport type WorkbenchWindowChromeI18nRuntime =\n I18nRuntime<WorkbenchWindowChromeI18nKey>;\n\nconst workbenchWindowChromeDefaults: Record<\n WorkbenchWindowChromeI18nLocale,\n I18nDictionary\n> = {\n en: workbenchWindowChromeEn,\n \"zh-CN\": workbenchWindowChromeZhCN\n};\n\nexport const workbenchWindowChromeI18nResources: Record<\n WorkbenchWindowChromeI18nLocale,\n I18nDictionary\n> = {\n en: {\n [workbenchWindowChromeI18nNamespace]: workbenchWindowChromeDefaults.en\n },\n \"zh-CN\": {\n [workbenchWindowChromeI18nNamespace]: workbenchWindowChromeDefaults[\"zh-CN\"]\n }\n};\n\nconst defaultWorkbenchWindowChromeI18n = createI18nRuntime({\n dictionaries: [workbenchWindowChromeI18nResources.en]\n});\n\nexport function createWorkbenchWindowChromeI18nRuntime(\n runtime: I18nRuntime<string> | undefined\n): WorkbenchWindowChromeI18nRuntime {\n return createScopedI18nRuntime<WorkbenchWindowChromeI18nKey>(\n runtime ?? defaultWorkbenchWindowChromeI18n,\n workbenchWindowChromeI18nNamespace\n );\n}\n","import {\n createScopedLocaleObjectsI18nModuleManifest,\n createI18nRuntime,\n createScopedI18nRuntime,\n type I18nDictionary,\n type I18nRuntime\n} from \"@tutti-os/ui-i18n-runtime\";\n\ntype WorkbenchMissionControlI18nLocale = \"en\" | \"zh-CN\";\n\nexport const workbenchMissionControlI18nNamespace = \"workbenchMissionControl\";\n\nexport const tuttiI18nModule = createScopedLocaleObjectsI18nModuleManifest({\n localeObjectByLocale: {\n en: \"workbenchMissionControlEn\",\n \"zh-CN\": \"workbenchMissionControlZhCN\"\n },\n name: \"workbench-mission-control\",\n namespace: \"workbenchMissionControl\",\n sourceRoot: \"packages/workbench/surface/src\"\n});\n\nconst workbenchMissionControlEn = {\n layoutSelectionHint: \"Select multiple windows to arrange\",\n noAvailableLayout: \"No layout fits the selected windows\",\n presets: {\n balanced: \"Balanced layout\",\n column: \"Vertical equal layout\",\n row: \"Horizontal equal layout\"\n }\n} as const satisfies I18nDictionary;\n\nconst workbenchMissionControlZhCN = {\n layoutSelectionHint: \"请选择多个你要整理布局的窗口\",\n noAvailableLayout: \"当前没有可用布局\",\n presets: {\n balanced: \"智能均衡布局\",\n column: \"垂直等分布局\",\n row: \"水平等分布局\"\n }\n} as const satisfies I18nDictionary;\n\nexport type WorkbenchMissionControlI18nKey =\n | \"layoutSelectionHint\"\n | \"noAvailableLayout\"\n | \"presets.balanced\"\n | \"presets.column\"\n | \"presets.row\";\n\nexport type WorkbenchMissionControlI18nRuntime =\n I18nRuntime<WorkbenchMissionControlI18nKey>;\n\nconst workbenchMissionControlDefaults: Record<\n WorkbenchMissionControlI18nLocale,\n I18nDictionary\n> = {\n en: workbenchMissionControlEn,\n \"zh-CN\": workbenchMissionControlZhCN\n};\n\nexport const workbenchMissionControlI18nResources: Record<\n WorkbenchMissionControlI18nLocale,\n I18nDictionary\n> = {\n en: {\n [workbenchMissionControlI18nNamespace]: workbenchMissionControlDefaults.en\n },\n \"zh-CN\": {\n [workbenchMissionControlI18nNamespace]:\n workbenchMissionControlDefaults[\"zh-CN\"]\n }\n};\n\nconst defaultWorkbenchMissionControlI18n = createI18nRuntime({\n dictionaries: [workbenchMissionControlI18nResources.en]\n});\n\nexport function createWorkbenchMissionControlI18nRuntime(\n runtime: I18nRuntime<string> | undefined\n): WorkbenchMissionControlI18nRuntime {\n return createScopedI18nRuntime<WorkbenchMissionControlI18nKey>(\n runtime ?? defaultWorkbenchMissionControlI18n,\n workbenchMissionControlI18nNamespace\n );\n}\n","import {\n createScopedLocaleObjectsI18nModuleManifest,\n createI18nRuntime,\n createScopedI18nRuntime,\n type I18nDictionary,\n type I18nRuntime\n} from \"@tutti-os/ui-i18n-runtime\";\n\ntype WorkbenchHostI18nLocale = \"en\" | \"zh-CN\";\nexport const workbenchHostI18nNamespace = \"workbenchHost\";\nexport const tuttiI18nModule = createScopedLocaleObjectsI18nModuleManifest({\n localeObjectByLocale: {\n en: \"workbenchHostEn\",\n \"zh-CN\": \"workbenchHostZhCN\"\n },\n name: \"workbench-host\",\n namespace: \"workbenchHost\",\n sourceRoot: \"packages/workbench/surface/src\"\n});\n\nconst workbenchHostEn = {\n actions: {\n close: \"Close\",\n minimize: \"Minimize\"\n },\n closeWindow: \"Close {{title}}\",\n dockLabel: \"Workbench dock\",\n launch: \"Open {{title}}\",\n minimizedWindows: \"Minimized windows\",\n newWindow: \"New window\",\n scrollDockDown: \"Scroll dock down\",\n scrollDockLeft: \"Scroll dock left\",\n scrollDockRight: \"Scroll dock right\",\n scrollDockUp: \"Scroll dock up\",\n windowStatus: {\n active: \"Active\",\n minimized: \"Minimized\",\n open: \"Open\"\n }\n} as const satisfies I18nDictionary;\n\nconst workbenchHostZhCN = {\n actions: {\n close: \"关闭\",\n minimize: \"最小化\"\n },\n closeWindow: \"关闭 {{title}}\",\n dockLabel: \"工作台程序坞\",\n launch: \"打开 {{title}}\",\n minimizedWindows: \"已最小化窗口\",\n newWindow: \"新建窗口\",\n scrollDockDown: \"向下滚动程序坞\",\n scrollDockLeft: \"向左滚动程序坞\",\n scrollDockRight: \"向右滚动程序坞\",\n scrollDockUp: \"向上滚动程序坞\",\n windowStatus: {\n active: \"当前窗口\",\n minimized: \"已最小化\",\n open: \"已打开\"\n }\n} as const satisfies I18nDictionary;\n\nexport type WorkbenchHostI18nKey =\n | \"actions.close\"\n | \"actions.minimize\"\n | \"closeWindow\"\n | \"dockLabel\"\n | \"launch\"\n | \"minimizedWindows\"\n | \"newWindow\"\n | \"scrollDockDown\"\n | \"scrollDockLeft\"\n | \"scrollDockRight\"\n | \"scrollDockUp\"\n | \"windowStatus.active\"\n | \"windowStatus.minimized\"\n | \"windowStatus.open\";\n\nexport type WorkbenchHostI18nRuntime = I18nRuntime<WorkbenchHostI18nKey>;\n\nconst workbenchHostDefaults: Record<WorkbenchHostI18nLocale, I18nDictionary> = {\n en: workbenchHostEn,\n \"zh-CN\": workbenchHostZhCN\n};\n\nexport const workbenchHostI18nResources = {\n en: {\n [workbenchHostI18nNamespace]: workbenchHostDefaults.en\n },\n \"zh-CN\": {\n [workbenchHostI18nNamespace]: workbenchHostDefaults[\"zh-CN\"]\n }\n} as const satisfies Record<WorkbenchHostI18nLocale, I18nDictionary>;\n\nconst defaultWorkbenchHostI18n = createI18nRuntime({\n dictionaries: [workbenchHostI18nResources.en]\n});\n\nexport function createWorkbenchHostI18nRuntime(\n runtime: I18nRuntime<string> | undefined\n): WorkbenchHostI18nRuntime {\n return createScopedI18nRuntime<WorkbenchHostI18nKey>(\n runtime ?? defaultWorkbenchHostI18n,\n workbenchHostI18nNamespace\n );\n}\n"],"mappings":"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","names":["createScopedLocaleObjectsI18nModuleManifest","createI18nRuntime","createScopedI18nRuntime","tuttiI18nModule","createScopedLocaleObjectsI18nModuleManifest","createI18nRuntime","createScopedI18nRuntime","tuttiI18nModule"]}
|