@tutti-os/workbench-surface 0.0.1 → 0.0.3

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.
@@ -660,7 +660,7 @@
660
660
  2
661
661
  );
662
662
  --desktop-dock-indicator-offset: -5.4px;
663
- --desktop-dock-left-viewport-size: 104px;
663
+ --desktop-dock-left-viewport-size: 124px;
664
664
  --desktop-dock-safe-inline: 64px;
665
665
  --desktop-dock-viewport-size: 88px;
666
666
  position: relative;
@@ -1074,16 +1074,53 @@
1074
1074
 
1075
1075
  .desktop-dock__slot[data-presence="entering"],
1076
1076
  .desktop-dock__separator[data-presence="entering"] {
1077
- animation: desktop-dock-presence-enter 300ms cubic-bezier(0.16, 1, 0.3, 1)
1077
+ animation: desktop-dock-presence-enter 600ms cubic-bezier(0.16, 1, 0.3, 1)
1078
1078
  both;
1079
1079
  }
1080
1080
 
1081
1081
  .desktop-dock__slot--minimized[data-presence="entering"] {
1082
1082
  min-width: 0;
1083
- animation: desktop-dock-minimized-slot-expand 360ms
1083
+ animation: desktop-dock-minimized-slot-expand 720ms
1084
1084
  cubic-bezier(0.16, 1, 0.3, 1) both;
1085
1085
  }
1086
1086
 
1087
+ .desktop-dock__slot--minimized[data-promoted-from-stack="true"][data-presence="entering"] {
1088
+ animation: none;
1089
+ }
1090
+
1091
+ .desktop-dock__slot--minimized[data-promoted-from-stack="true"][data-presence="entering"]
1092
+ .desktop-dock__minimized-preview {
1093
+ animation: none;
1094
+ }
1095
+
1096
+ .desktop-dock[data-dock-placement="left"]
1097
+ .desktop-dock__slot--minimized[data-promoted-from-stack="true"][data-presence="entering"] {
1098
+ animation: none;
1099
+ }
1100
+
1101
+ .desktop-dock[data-dock-placement="left"]
1102
+ .desktop-dock__slot--minimized[data-promoted-from-stack="true"][data-presence="entering"]
1103
+ .desktop-dock__minimized-preview {
1104
+ animation: none;
1105
+ }
1106
+
1107
+ .desktop-dock__slot--minimized[data-stack-dispatching="true"]
1108
+ .desktop-dock__minimized-stack-icon
1109
+ .desktop-dock__minimized-stack-layer--0:not(
1110
+ .desktop-dock__minimized-stack-layer-back
1111
+ ) {
1112
+ animation: none;
1113
+ }
1114
+
1115
+ .desktop-dock[data-dock-placement="left"]
1116
+ .desktop-dock__slot--minimized[data-stack-dispatching="true"]
1117
+ .desktop-dock__minimized-stack-icon
1118
+ .desktop-dock__minimized-stack-layer--0:not(
1119
+ .desktop-dock__minimized-stack-layer-back
1120
+ ) {
1121
+ animation: none;
1122
+ }
1123
+
1087
1124
  .desktop-dock[data-dock-placement="left"]
1088
1125
  .desktop-dock__slot--minimized[data-presence="entering"] {
1089
1126
  min-height: 0;
@@ -1094,7 +1131,7 @@
1094
1131
  .desktop-dock__minimized-preview,
1095
1132
  .desktop-dock__slot--minimized[data-presence="entering"]
1096
1133
  .desktop-dock__minimized-stack-icon {
1097
- animation: desktop-dock-minimized-icon-appear 320ms
1134
+ animation: desktop-dock-minimized-icon-appear 640ms
1098
1135
  cubic-bezier(0.16, 1, 0.3, 1) both;
1099
1136
  }
1100
1137
 
@@ -1109,14 +1146,14 @@
1109
1146
 
1110
1147
  .desktop-dock__slot[data-presence="exiting"],
1111
1148
  .desktop-dock__separator[data-presence="exiting"] {
1112
- animation: desktop-dock-presence-exit 300ms cubic-bezier(0.7, 0, 0.84, 0) both;
1149
+ animation: desktop-dock-presence-exit 600ms cubic-bezier(0.7, 0, 0.84, 0) both;
1113
1150
  pointer-events: none;
1114
1151
  }
1115
1152
 
1116
1153
  .desktop-dock__slot--minimized[data-collapsing="true"],
1117
1154
  .desktop-dock__slot--minimized[data-presence="exiting"] {
1118
1155
  min-width: 0;
1119
- animation: desktop-dock-minimized-slot-collapse 360ms
1156
+ animation: desktop-dock-minimized-slot-collapse 720ms
1120
1157
  cubic-bezier(0.4, 0, 0.2, 1) both;
1121
1158
  pointer-events: none;
1122
1159
  }
@@ -1142,7 +1179,7 @@
1142
1179
  .desktop-dock__minimized-preview,
1143
1180
  .desktop-dock__slot--minimized[data-presence="exiting"]
1144
1181
  .desktop-dock__minimized-stack-icon {
1145
- animation: desktop-dock-minimized-icon-disappear 320ms
1182
+ animation: desktop-dock-minimized-icon-disappear 640ms
1146
1183
  cubic-bezier(0.4, 0, 0.2, 1) both;
1147
1184
  }
1148
1185
 
@@ -1402,19 +1439,22 @@
1402
1439
  background: var(--workbench-foreground);
1403
1440
  }
1404
1441
 
1405
- .desktop-dock__slot[data-attention-active="true"] .desktop-dock__icon-shell {
1442
+ .desktop-dock__slot[data-attention-active="true"] .desktop-dock__icon-content {
1406
1443
  animation: desktop-dock-bounce-translate 0.6s ease;
1407
1444
  }
1408
1445
 
1409
- .desktop-dock__slot[data-bouncing="true"] .desktop-dock__icon-shell,
1446
+ .desktop-dock__slot[data-bouncing="true"] .desktop-dock__icon-content,
1410
1447
  .desktop-dock__slot[data-bouncing="true"] .desktop-dock__minimized-preview,
1411
1448
  .desktop-dock__slot[data-bouncing="true"] .desktop-dock__minimized-stack-icon {
1412
1449
  animation: desktop-dock-bounce-translate 0.6s ease;
1413
1450
  }
1414
1451
 
1452
+ .desktop-dock[data-dock-placement="left"]
1453
+ .desktop-dock__slot[data-attention-active="true"]
1454
+ .desktop-dock__icon-content,
1415
1455
  .desktop-dock[data-dock-placement="left"]
1416
1456
  .desktop-dock__slot[data-bouncing="true"]
1417
- .desktop-dock__icon-shell,
1457
+ .desktop-dock__icon-content,
1418
1458
  .desktop-dock[data-dock-placement="left"]
1419
1459
  .desktop-dock__slot[data-bouncing="true"]
1420
1460
  .desktop-dock__minimized-preview,
@@ -1515,6 +1555,13 @@
1515
1555
  z-index: var(--desktop-dock-stack-layer-z, 1);
1516
1556
  }
1517
1557
 
1558
+ .desktop-dock:not([data-dock-pointer-active="true"])
1559
+ .desktop-dock__minimized-stack-layer {
1560
+ transition:
1561
+ transform 520ms cubic-bezier(0.16, 1, 0.3, 1),
1562
+ opacity 320ms cubic-bezier(0.16, 1, 0.3, 1);
1563
+ }
1564
+
1518
1565
  .desktop-dock[data-dock-placement="left"] .desktop-dock__minimized-stack-layer {
1519
1566
  transform: translate(
1520
1567
  var(--desktop-dock-stack-layer-x, 0),
@@ -2084,6 +2131,90 @@ body[data-desktop-dock-minimized-stack-open="true"] .desktop-dock {
2084
2131
  }
2085
2132
  }
2086
2133
 
2134
+ @keyframes desktop-dock-minimized-slot-promote {
2135
+ from {
2136
+ width: 0;
2137
+ height: var(--desktop-dock-size);
2138
+ margin-inline: calc(var(--desktop-dock-gap) / -2);
2139
+ opacity: 0;
2140
+ }
2141
+
2142
+ to {
2143
+ width: var(--desktop-dock-size);
2144
+ height: var(--desktop-dock-size);
2145
+ margin-inline: 0;
2146
+ opacity: 1;
2147
+ }
2148
+ }
2149
+
2150
+ @keyframes desktop-dock-minimized-slot-promote-left {
2151
+ from {
2152
+ width: var(--desktop-dock-size);
2153
+ height: 0;
2154
+ margin-block: calc(var(--desktop-dock-gap) / -2);
2155
+ opacity: 0;
2156
+ }
2157
+
2158
+ to {
2159
+ width: var(--desktop-dock-size);
2160
+ height: var(--desktop-dock-size);
2161
+ margin-block: 0;
2162
+ opacity: 1;
2163
+ }
2164
+ }
2165
+
2166
+ @keyframes desktop-dock-minimized-preview-promote {
2167
+ from {
2168
+ opacity: 0;
2169
+ translate: 28px 10px;
2170
+ scale: 0.88;
2171
+ }
2172
+
2173
+ to {
2174
+ opacity: 1;
2175
+ translate: 0 0;
2176
+ scale: 1;
2177
+ }
2178
+ }
2179
+
2180
+ @keyframes desktop-dock-minimized-preview-promote-left {
2181
+ from {
2182
+ opacity: 0;
2183
+ translate: 8px 28px;
2184
+ scale: 0.88;
2185
+ }
2186
+
2187
+ to {
2188
+ opacity: 1;
2189
+ translate: 0 0;
2190
+ scale: 1;
2191
+ }
2192
+ }
2193
+
2194
+ @keyframes desktop-dock-stack-layer-reveal {
2195
+ from {
2196
+ transform: translate(18px, 10px) scale(0.9);
2197
+ opacity: 0;
2198
+ }
2199
+
2200
+ to {
2201
+ transform: translate(0, 0) scale(1);
2202
+ opacity: 1;
2203
+ }
2204
+ }
2205
+
2206
+ @keyframes desktop-dock-stack-layer-reveal-left {
2207
+ from {
2208
+ transform: translate(8px, 18px) scale(0.9);
2209
+ opacity: 0;
2210
+ }
2211
+
2212
+ to {
2213
+ transform: translate(0, 0) scale(1);
2214
+ opacity: 1;
2215
+ }
2216
+ }
2217
+
2087
2218
  @keyframes desktop-dock-minimized-icon-appear {
2088
2219
  from {
2089
2220
  opacity: 0;
@@ -87,7 +87,7 @@ test("dock overflow keeps scroll controls viewport-bound", () => {
87
87
  );
88
88
  assert.match(
89
89
  css,
90
- /\.desktop-dock-plate\s*{[^}]*--desktop-dock-left-viewport-size:\s*104px;/s
90
+ /\.desktop-dock-plate\s*{[^}]*--desktop-dock-left-viewport-size:\s*124px;/s
91
91
  );
92
92
  assert.match(
93
93
  css,
@@ -191,6 +191,14 @@ test("dock overflow keeps scroll controls viewport-bound", () => {
191
191
  /\.desktop-dock\[data-dock-hover-panel-open="true"\]\s+\.desktop-dock__items\s*{[^}]*mask-image:\s*none;/s
192
192
  );
193
193
  assert.match(css, /@keyframes desktop-dock-bounce-translate/s);
194
+ assert.match(
195
+ css,
196
+ /\.desktop-dock__slot\[data-bouncing="true"\]\s+\.desktop-dock__icon-content,/s
197
+ );
198
+ assert.doesNotMatch(
199
+ css,
200
+ /\.desktop-dock__slot\[data-bouncing="true"\]\s+\.desktop-dock__icon-shell,/s
201
+ );
194
202
  assert.match(
195
203
  css,
196
204
  /\.desktop-dock:not\(\[data-dock-pointer-active="true"\]\)\s+\.desktop-dock__btn\[data-interactive="true"\]:active\s*{[^}]*transform:\s*translateY\(-1px\) scale\(0\.99\);/s
@@ -205,7 +213,19 @@ test("dock overflow keeps scroll controls viewport-bound", () => {
205
213
  );
206
214
  assert.match(
207
215
  css,
208
- /\.desktop-dock__slot--minimized\[data-presence="entering"\]\s*{[^}]*animation:\s*desktop-dock-minimized-slot-expand 360ms/s
216
+ /\.desktop-dock__slot--minimized\[data-presence="entering"\]\s*{[^}]*animation:\s*desktop-dock-minimized-slot-expand 720ms/s
217
+ );
218
+ assert.match(
219
+ css,
220
+ /\.desktop-dock__slot--minimized\[data-promoted-from-stack="true"\]\[data-presence="entering"\]\s*{[^}]*animation:\s*none;/s
221
+ );
222
+ assert.match(
223
+ css,
224
+ /@keyframes desktop-dock-minimized-preview-promote\s*{[\s\S]*?translate:\s*28px 10px;/s
225
+ );
226
+ assert.match(
227
+ css,
228
+ /\.desktop-dock:not\(\[data-dock-pointer-active="true"\]\)\s+\.desktop-dock__minimized-stack-layer\s*{[^}]*transition:[^}]*transform 520ms/s
209
229
  );
210
230
  assert.match(
211
231
  css,
@@ -217,7 +237,7 @@ test("dock overflow keeps scroll controls viewport-bound", () => {
217
237
  );
218
238
  assert.match(
219
239
  css,
220
- /\.desktop-dock__slot--minimized\[data-collapsing="true"\],[\s\S]*?\.desktop-dock__slot--minimized\[data-presence="exiting"\]\s*{[^}]*animation:\s*desktop-dock-minimized-slot-collapse 360ms[^}]*pointer-events:\s*none;/s
240
+ /\.desktop-dock__slot--minimized\[data-collapsing="true"\],[\s\S]*?\.desktop-dock__slot--minimized\[data-presence="exiting"\]\s*{[^}]*animation:\s*desktop-dock-minimized-slot-collapse 720ms[^}]*pointer-events:\s*none;/s
221
241
  );
222
242
  assert.match(
223
243
  css,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tutti-os/workbench-surface",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
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.1",
38
- "@tutti-os/ui-react-hooks": "0.0.1",
39
- "@tutti-os/workbench-snapshot": "0.0.1",
40
- "@tutti-os/ui-system": "0.0.1"
37
+ "@tutti-os/ui-i18n-runtime": "0.0.3",
38
+ "@tutti-os/ui-react-hooks": "0.0.3",
39
+ "@tutti-os/workbench-snapshot": "0.0.3",
40
+ "@tutti-os/ui-system": "0.0.3"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "react": "^19.1.0",