@tutti-os/workbench-surface 0.0.16 → 0.0.18

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.
@@ -244,8 +244,8 @@
244
244
  transform: translateY(0);
245
245
  pointer-events: auto;
246
246
  transition:
247
- opacity 0.16s ease 0.5s,
248
- transform 0.2s cubic-bezier(0.4, 0, 0.2, 1) 0.5s;
247
+ opacity 0.16s ease,
248
+ transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
249
249
  }
250
250
 
251
251
  .workbench-window[data-display-mode="fullscreen"]:has(
@@ -268,7 +268,7 @@
268
268
  right: 0;
269
269
  left: 0;
270
270
  z-index: 2;
271
- height: 8px;
271
+ height: 16px;
272
272
  pointer-events: auto;
273
273
  }
274
274
 
@@ -739,6 +739,7 @@
739
739
  --desktop-dock-scroll-button-z-index: 120;
740
740
  --desktop-dock-scroll-fade-size: 48px;
741
741
  --desktop-dock-tooltip-gap: 32px;
742
+ --desktop-dock-hover-panel-gap: 12px;
742
743
  position: relative;
743
744
  z-index: 1;
744
745
  display: block;
@@ -1562,6 +1563,40 @@
1562
1563
  background: color-mix(in srgb, var(--background-panel) 70%, black 4%);
1563
1564
  }
1564
1565
 
1566
+ .desktop-dock__minimized-preview--component {
1567
+ align-items: stretch;
1568
+ justify-content: stretch;
1569
+ gap: 0;
1570
+ padding: 0;
1571
+ background: var(--background-panel);
1572
+ }
1573
+
1574
+ .desktop-dock__minimized-preview--component > * {
1575
+ width: 100%;
1576
+ height: 100%;
1577
+ min-width: 0;
1578
+ min-height: 0;
1579
+ }
1580
+
1581
+ .desktop-dock__minimized-preview-freeze-source {
1582
+ position: absolute;
1583
+ inset: 0;
1584
+ visibility: hidden;
1585
+ pointer-events: none;
1586
+ }
1587
+
1588
+ .desktop-dock__minimized-preview-frozen-content {
1589
+ display: block;
1590
+ overflow: hidden;
1591
+ }
1592
+
1593
+ .desktop-dock__minimized-preview-frozen-content > * {
1594
+ width: 100%;
1595
+ height: 100%;
1596
+ min-width: 0;
1597
+ min-height: 0;
1598
+ }
1599
+
1565
1600
  .desktop-dock__minimized-preview-line {
1566
1601
  display: block;
1567
1602
  width: 74%;
@@ -1729,11 +1764,56 @@
1729
1764
  color: var(--text-primary);
1730
1765
  opacity: 1;
1731
1766
  pointer-events: auto;
1767
+ transform: translateX(-50%)
1768
+ translateY(calc(-100% - var(--desktop-dock-hover-panel-gap, 12px)));
1769
+ transition:
1770
+ opacity 0.12s ease,
1771
+ transform 0.12s ease;
1772
+ }
1773
+
1774
+ .desktop-dock__label-tooltip {
1775
+ position: absolute;
1776
+ top: var(--desktop-dock-label-tooltip-anchor-top);
1777
+ left: calc(
1778
+ var(--desktop-dock-label-tooltip-anchor-left) +
1779
+ var(--desktop-dock-label-tooltip-anchor-width) / 2
1780
+ );
1781
+ z-index: var(--workbench-z-dock-tooltip);
1782
+ box-sizing: border-box;
1783
+ width: max-content;
1784
+ max-width: min(220px, calc(100vw - 32px));
1785
+ overflow: hidden;
1786
+ padding: 7px 10px;
1787
+ border: 1px solid var(--border-1);
1788
+ border-radius: 8px;
1789
+ background: var(--background-fronted);
1790
+ box-shadow: 0 12px 30px var(--shadow-elevated);
1791
+ color: var(--text-primary);
1792
+ font-size: 13px;
1793
+ font-weight: 700;
1794
+ line-height: 1.3;
1795
+ opacity: 1;
1796
+ pointer-events: none;
1797
+ text-overflow: ellipsis;
1732
1798
  transform: translateX(-50%)
1733
1799
  translateY(calc(-100% - var(--desktop-dock-tooltip-gap, 32px)));
1734
1800
  transition:
1735
1801
  opacity 0.12s ease,
1736
1802
  transform 0.12s ease;
1803
+ white-space: nowrap;
1804
+ }
1805
+
1806
+ .desktop-dock__label-tooltip[data-dock-placement="left"] {
1807
+ top: calc(
1808
+ var(--desktop-dock-label-tooltip-anchor-top) +
1809
+ var(--desktop-dock-label-tooltip-anchor-height) / 2
1810
+ );
1811
+ left: calc(
1812
+ var(--desktop-dock-label-tooltip-anchor-left) +
1813
+ var(--desktop-dock-label-tooltip-anchor-width) +
1814
+ var(--desktop-dock-tooltip-gap, 32px)
1815
+ );
1816
+ transform: translateY(-50%);
1737
1817
  }
1738
1818
 
1739
1819
  .desktop-dock__hover-panel[data-dock-placement="left"] {
@@ -1744,7 +1824,7 @@
1744
1824
  left: calc(
1745
1825
  var(--desktop-dock-hover-panel-anchor-left) +
1746
1826
  var(--desktop-dock-hover-panel-anchor-width) +
1747
- var(--desktop-dock-tooltip-gap, 32px)
1827
+ var(--desktop-dock-hover-panel-gap, 12px)
1748
1828
  );
1749
1829
  transform: translateY(-50%);
1750
1830
  }
@@ -1752,9 +1832,9 @@
1752
1832
  .desktop-dock__hover-panel::before {
1753
1833
  position: absolute;
1754
1834
  right: 0;
1755
- bottom: calc(-1 * var(--desktop-dock-tooltip-gap, 32px));
1835
+ bottom: calc(-1 * var(--desktop-dock-hover-panel-gap, 12px));
1756
1836
  left: 0;
1757
- height: var(--desktop-dock-tooltip-gap, 32px);
1837
+ height: var(--desktop-dock-hover-panel-gap, 12px);
1758
1838
  content: "";
1759
1839
  }
1760
1840
 
@@ -1762,8 +1842,8 @@
1762
1842
  top: 0;
1763
1843
  right: auto;
1764
1844
  bottom: 0;
1765
- left: calc(-1 * var(--desktop-dock-tooltip-gap, 32px));
1766
- width: var(--desktop-dock-tooltip-gap, 32px);
1845
+ left: calc(-1 * var(--desktop-dock-hover-panel-gap, 12px));
1846
+ width: var(--desktop-dock-hover-panel-gap, 12px);
1767
1847
  height: auto;
1768
1848
  }
1769
1849
 
@@ -2714,7 +2794,7 @@ body[data-desktop-dock-minimized-stack-open="true"] .desktop-dock {
2714
2794
 
2715
2795
  animation: workspace-launchpad-hover-panel-enter 160ms
2716
2796
  cubic-bezier(0.16, 1, 0.3, 1) both;
2717
- bottom: calc(100% + var(--desktop-dock-tooltip-gap, 32px));
2797
+ bottom: calc(100% + var(--desktop-dock-tooltip-gap, 12px));
2718
2798
  left: 50%;
2719
2799
  right: auto;
2720
2800
  top: auto;
@@ -29,7 +29,7 @@ test("left dock placement owns vertical frame and popup placement styles", () =>
29
29
  );
30
30
  assert.match(
31
31
  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-tooltip-gap, 32px\)\s*\);/s
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-hover-panel-gap, 12px\)\s*\);/s
33
33
  );
34
34
  assert.match(
35
35
  css,
@@ -111,7 +111,27 @@ test("dock overflow keeps scroll controls viewport-bound", () => {
111
111
  );
112
112
  assert.match(
113
113
  css,
114
- /\.desktop-dock__hover-panel\s*{[^}]*top:\s*var\(--desktop-dock-hover-panel-anchor-top\);[^}]*pointer-events:\s*auto;/s
114
+ /\.desktop-dock\s*{[^}]*--desktop-dock-tooltip-gap:\s*32px;/s
115
+ );
116
+ assert.match(
117
+ css,
118
+ /\.desktop-dock\s*{[^}]*--desktop-dock-hover-panel-gap:\s*12px;/s
119
+ );
120
+ assert.match(
121
+ css,
122
+ /\.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
123
+ );
124
+ assert.match(
125
+ css,
126
+ /\.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
127
+ );
128
+ assert.match(
129
+ css,
130
+ /\.desktop-dock__label-tooltip\s*{[^}]*width:\s*max-content;[^}]*overflow:\s*hidden;[^}]*text-overflow:\s*ellipsis;[^}]*white-space:\s*nowrap;/s
131
+ );
132
+ assert.match(
133
+ css,
134
+ /\.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
115
135
  );
116
136
  assert.match(
117
137
  css,
@@ -161,6 +181,22 @@ test("dock overflow keeps scroll controls viewport-bound", () => {
161
181
  css,
162
182
  /\.desktop-dock\[data-dock-placement="left"\]\s+\.desktop-dock__minimized-preview\s*{[^}]*transform-origin:\s*left center;/s
163
183
  );
184
+ assert.match(
185
+ css,
186
+ /\.desktop-dock__minimized-preview--component\s*{[^}]*padding:\s*0;[^}]*background:\s*var\(--background-panel\);/s
187
+ );
188
+ assert.match(
189
+ css,
190
+ /\.desktop-dock__minimized-preview--component > \*\s*{[^}]*width:\s*100%;[^}]*height:\s*100%;/s
191
+ );
192
+ assert.match(
193
+ css,
194
+ /\.desktop-dock__minimized-preview-freeze-source\s*{[^}]*visibility:\s*hidden;[^}]*pointer-events:\s*none;/s
195
+ );
196
+ assert.match(
197
+ css,
198
+ /\.desktop-dock__minimized-preview-frozen-content\s*{[^}]*display:\s*block;[^}]*overflow:\s*hidden;/s
199
+ );
164
200
  assert.match(css, /\.desktop-dock__slot\s*{[^}]*flex:\s*0 0 auto;/s);
165
201
  assert.match(
166
202
  css,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tutti-os/workbench-surface",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
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.16",
38
- "@tutti-os/ui-react-hooks": "0.0.16",
39
- "@tutti-os/workbench-snapshot": "0.0.16",
40
- "@tutti-os/ui-system": "0.0.16"
37
+ "@tutti-os/ui-i18n-runtime": "0.0.18",
38
+ "@tutti-os/ui-react-hooks": "0.0.18",
39
+ "@tutti-os/workbench-snapshot": "0.0.18",
40
+ "@tutti-os/ui-system": "0.0.18"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "react": "^19.1.0",