@tutti-os/workbench-surface 0.0.45 → 0.0.47

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.
@@ -14,6 +14,7 @@
14
14
  }
15
15
 
16
16
  .workbench-surface {
17
+ --workbench-chrome-active-foreground: var(--foreground);
17
18
  --workbench-chrome-inset-x: 0px;
18
19
  --workbench-chrome-inset-y: 0px;
19
20
  --workbench-mission-control-ease: cubic-bezier(0.22, 1, 0.36, 1);
@@ -34,6 +35,13 @@
34
35
  isolation: isolate;
35
36
  }
36
37
 
38
+ .workbench-surface[data-mission-control-phase="entering"],
39
+ .workbench-surface[data-mission-control-phase="open"],
40
+ .workbench-surface[data-presentation-mode="mission-control"] {
41
+ --workbench-chrome-active-foreground: var(--white-stationary);
42
+ --workbench-chrome-foreground: var(--white-stationary);
43
+ }
44
+
37
45
  .workbench-surface__wallpaper {
38
46
  position: absolute;
39
47
  inset: 0;
@@ -217,6 +225,12 @@
217
225
  user-select: auto;
218
226
  }
219
227
 
228
+ .workbench-window__header--custom:has(
229
+ [data-workbench-custom-header-border="none"]
230
+ ) {
231
+ border-bottom-color: transparent;
232
+ }
233
+
220
234
  .workbench-window__header--custom:active {
221
235
  cursor: default;
222
236
  }
@@ -497,60 +511,24 @@
497
511
  transform var(--workbench-mission-control-scale-duration)
498
512
  var(--workbench-mission-control-ease);
499
513
  will-change: opacity, transform;
500
- background:
501
- radial-gradient(
502
- 110% 92% at 50% -4%,
503
- rgb(255 255 255 / 0.14) 0%,
504
- transparent 56%
505
- ),
506
- linear-gradient(
507
- 180deg,
508
- color-mix(
509
- in srgb,
510
- var(--workbench-surface-background) 54%,
511
- rgb(255 255 255 / 10%)
512
- )
513
- 0%,
514
- color-mix(in srgb, var(--workbench-window-bg) 82%, var(--workbench-panel))
515
- 100%
516
- );
517
- box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.14);
514
+ background: rgb(0 0 0 / 60%);
515
+ box-shadow: none;
518
516
  }
519
517
 
520
518
  .workbench-mission-control-backdrop::before {
521
519
  position: absolute;
522
520
  inset: 0;
523
- background:
524
- linear-gradient(135deg, rgb(255 255 255 / 0.06), transparent 34%),
525
- radial-gradient(
526
- 92% 84% at 18% 18%,
527
- color-mix(in srgb, var(--workbench-panel) 22%, transparent) 0%,
528
- transparent 48%
529
- ),
530
- radial-gradient(
531
- 68% 54% at 82% 10%,
532
- rgb(255 255 255 / 0.07),
533
- transparent 44%
534
- ),
535
- repeating-linear-gradient(
536
- 180deg,
537
- rgb(255 255 255 / 0.018) 0,
538
- rgb(255 255 255 / 0.018) 1px,
539
- transparent 1px,
540
- transparent 4px
541
- );
521
+ background: none;
542
522
  content: "";
543
- opacity: 0.92;
523
+ opacity: 0;
544
524
  }
545
525
 
546
526
  .workbench-mission-control-backdrop::after {
547
527
  position: absolute;
548
528
  inset: 0;
549
- background:
550
- linear-gradient(180deg, rgb(255 255 255 / 0.045), transparent 26%),
551
- linear-gradient(0deg, rgb(255 255 255 / 0.025), transparent 36%);
529
+ background: none;
552
530
  content: "";
553
- opacity: 0.76;
531
+ opacity: 0;
554
532
  }
555
533
 
556
534
  .workbench-mission-control-backdrop[data-phase="entering"],
@@ -87,6 +87,35 @@ test("mission control overlay lets layout controls sit above dialog overlays", (
87
87
  );
88
88
  });
89
89
 
90
+ test("mission control backdrop uses the shared dark scrim value", () => {
91
+ const css = readFileSync(resolve("src/styles/workbench.css"), "utf8");
92
+
93
+ assert.match(
94
+ css,
95
+ /\.workbench-surface\s*{[^}]*--workbench-chrome-active-foreground:\s*var\(--foreground\);/s
96
+ );
97
+ assert.match(
98
+ css,
99
+ /\.workbench-surface\[data-mission-control-phase="entering"\],[\s\S]*?\.workbench-surface\[data-presentation-mode="mission-control"\]\s*{[^}]*--workbench-chrome-active-foreground:\s*var\(--white-stationary\);[^}]*--workbench-chrome-foreground:\s*var\(--white-stationary\);/s
100
+ );
101
+ assert.match(
102
+ css,
103
+ /\.workbench-mission-control-backdrop\s*{[^}]*background:\s*rgb\(0 0 0 \/ 60%\);[^}]*box-shadow:\s*none;/s
104
+ );
105
+ assert.match(
106
+ css,
107
+ /\.workbench-mission-control-backdrop::before\s*{[^}]*background:\s*none;[^}]*opacity:\s*0;/s
108
+ );
109
+ assert.match(
110
+ css,
111
+ /\.workbench-mission-control-backdrop::after\s*{[^}]*background:\s*none;[^}]*opacity:\s*0;/s
112
+ );
113
+ assert.doesNotMatch(
114
+ css,
115
+ /\.workbench-mission-control-backdrop\s*{[^}]*var\(--workbench-surface-background\)/s
116
+ );
117
+ });
118
+
90
119
  test("dialog popover node layer sits above dialog overlays and remains clickable", () => {
91
120
  const css = readFileSync(resolve("src/styles/workbench.css"), "utf8");
92
121
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tutti-os/workbench-surface",
3
- "version": "0.0.45",
3
+ "version": "0.0.47",
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.45",
38
- "@tutti-os/ui-react-hooks": "0.0.45",
39
- "@tutti-os/workbench-snapshot": "0.0.45",
40
- "@tutti-os/ui-system": "0.0.45"
37
+ "@tutti-os/ui-i18n-runtime": "0.0.47",
38
+ "@tutti-os/ui-react-hooks": "0.0.47",
39
+ "@tutti-os/workbench-snapshot": "0.0.47",
40
+ "@tutti-os/ui-system": "0.0.47"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "react": "^19.1.0",