@floegence/floe-webapp-core 0.53.3 → 0.54.0

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.
Files changed (32) hide show
  1. package/dist/components/ui/InfiniteCanvas.js +111 -100
  2. package/dist/components/ui/SurfaceAnchoredLayer.d.ts +10 -0
  3. package/dist/components/ui/SurfaceAnchoredLayer.js +89 -0
  4. package/dist/components/ui/index.d.ts +1 -0
  5. package/dist/components/workbench/WorkbenchCanvas.d.ts +1 -1
  6. package/dist/components/workbench/WorkbenchCanvas.js +26 -24
  7. package/dist/components/workbench/WorkbenchCanvasField.d.ts +1 -1
  8. package/dist/components/workbench/WorkbenchCanvasField.js +46 -42
  9. package/dist/components/workbench/WorkbenchLayerObjects.d.ts +9 -1
  10. package/dist/components/workbench/WorkbenchLayerObjects.js +896 -707
  11. package/dist/components/workbench/WorkbenchSurface.d.ts +2 -0
  12. package/dist/components/workbench/WorkbenchSurface.js +442 -420
  13. package/dist/components/workbench/index.d.ts +1 -0
  14. package/dist/components/workbench/types.d.ts +6 -3
  15. package/dist/components/workbench/useWorkbenchModel.js +53 -53
  16. package/dist/components/workbench/workbenchCompositionMessages.d.ts +62 -0
  17. package/dist/components/workbench/workbenchCompositionMessages.js +67 -0
  18. package/dist/components/workbench/workbenchHelpers.js +19 -6
  19. package/dist/components/workbench/workbenchOptions.d.ts +4 -4
  20. package/dist/components/workbench/workbenchOptions.js +18 -16
  21. package/dist/full.js +182 -180
  22. package/dist/input-focus.css +39 -5
  23. package/dist/styles/themes/presets.js +5 -5
  24. package/dist/styles.css +1 -1
  25. package/dist/surface.css +16 -3
  26. package/dist/themes/shell-presets.generated.css +6 -6
  27. package/dist/ui.css +4 -23
  28. package/dist/ui.js +86 -84
  29. package/dist/workbench-themes.css +60 -0
  30. package/dist/workbench.css +332 -524
  31. package/dist/workbench.js +24 -22
  32. package/package.json +1 -1
package/dist/surface.css CHANGED
@@ -287,10 +287,14 @@
287
287
  & [data-floe-surface-part='choice'][data-floe-selected='true'] {
288
288
  background-color: var(--accent);
289
289
  }
290
- & [data-floe-choice-variant='button'][data-floe-selected='true'] {
291
- color: var(--foreground);
290
+ /* Compact choices need a clear selected face, independent of material.
291
+ * Large choice cards retain their native dot/checkmark and quiet tint. */
292
+ & [data-floe-choice-variant='button'][data-floe-selected='true'],
293
+ & [data-floe-surface-part='segment'][aria-checked='true'] {
294
+ background-color: var(--primary);
295
+ color: var(--primary-foreground);
296
+ --floe-surface-decoration: 0 0 transparent;
292
297
  }
293
- & [data-floe-surface-part='segment'][aria-checked='true'],
294
298
  & [data-floe-surface-part='tab'][aria-selected='true'] {
295
299
  background-color: var(--accent);
296
300
  color: var(--foreground);
@@ -493,6 +497,15 @@
493
497
  border-color: var(--wb-accent);
494
498
  }
495
499
  @media (forced-colors: active) {
500
+ .floe-segmented-control__item[aria-checked='true'],
501
+ [data-floe-choice-variant='button'][data-floe-selected='true'] {
502
+ forced-color-adjust: none;
503
+ background-color: Highlight;
504
+ border-color: Highlight;
505
+ color: HighlightText;
506
+ box-shadow: none;
507
+ transition: none;
508
+ }
496
509
  [data-floe-surface-style='soft-neumorphic'] [data-floe-surface] {
497
510
  --floe-surface-decoration: 0 0 transparent;
498
511
  }
@@ -1499,8 +1499,8 @@
1499
1499
  --floe-window-shadow: 0 1px 3px rgb(0 0 0 / 30%), 0 12px 28px -8px rgb(0 0 0 / 32%);
1500
1500
  --background: #1c1c1e;
1501
1501
  --foreground: #f2f2f7;
1502
- --primary: #0070e0;
1503
- --primary-foreground: #ffffff;
1502
+ --primary: #0a84ff;
1503
+ --primary-foreground: #101012;
1504
1504
  --secondary: #3a3a3c;
1505
1505
  --secondary-foreground: #f2f2f7;
1506
1506
  --muted: #3a3a3c;
@@ -1535,8 +1535,8 @@
1535
1535
  --highlight-block-tip-accent: #71c8c0;
1536
1536
  --sidebar: #242426;
1537
1537
  --sidebar-foreground: #f2f2f7;
1538
- --sidebar-primary: #0070e0;
1539
- --sidebar-primary-foreground: #ffffff;
1538
+ --sidebar-primary: #0a84ff;
1539
+ --sidebar-primary-foreground: #101012;
1540
1540
  --sidebar-accent: #3a3a3c;
1541
1541
  --sidebar-accent-foreground: #f2f2f7;
1542
1542
  --sidebar-border: #38383a;
@@ -1544,8 +1544,8 @@
1544
1544
  --activity-bar: #242426;
1545
1545
  --activity-bar-foreground: #aeaeb2;
1546
1546
  --activity-bar-foreground-active: #f2f2f7;
1547
- --activity-bar-badge: #0070e0;
1548
- --activity-bar-badge-foreground: #ffffff;
1547
+ --activity-bar-badge: #0a84ff;
1548
+ --activity-bar-badge-foreground: #101012;
1549
1549
  --terminal-background: #141416;
1550
1550
  --terminal-foreground: #e5e5ea;
1551
1551
  --chart-1: #2dd4d4;
package/dist/ui.css CHANGED
@@ -762,16 +762,10 @@
762
762
  --segmented-control-item-color: var(--muted-foreground);
763
763
  --segmented-control-item-hover-bg: color-mix(in srgb, var(--background) 74%, var(--muted) 26%);
764
764
  --segmented-control-item-hover-color: var(--foreground);
765
- --segmented-control-item-active-bg: color-mix(in srgb, var(--background) 96%, white 4%);
766
- --segmented-control-item-active-border: color-mix(
767
- in srgb,
768
- var(--border) 70%,
769
- var(--foreground) 30%
770
- );
771
- --segmented-control-item-active-color: var(--foreground);
772
- --segmented-control-item-active-shadow:
773
- inset 0 1px 0 color-mix(in srgb, white 55%, transparent),
774
- 0 1px 2px color-mix(in srgb, black 10%, transparent);
765
+ --segmented-control-item-active-bg: var(--primary);
766
+ --segmented-control-item-active-border: var(--primary);
767
+ --segmented-control-item-active-color: var(--primary-foreground);
768
+ --segmented-control-item-active-shadow: none;
775
769
 
776
770
  background-color: var(--segmented-control-bg);
777
771
  border-color: var(--segmented-control-border);
@@ -785,19 +779,6 @@
785
779
  var(--foreground) 8%,
786
780
  var(--background) 92%
787
781
  );
788
- --segmented-control-item-active-bg: color-mix(
789
- in srgb,
790
- var(--foreground) 14%,
791
- var(--background) 86%
792
- );
793
- --segmented-control-item-active-border: color-mix(
794
- in srgb,
795
- var(--foreground) 28%,
796
- var(--border) 72%
797
- );
798
- --segmented-control-item-active-shadow:
799
- inset 0 1px 0 color-mix(in srgb, white 12%, transparent),
800
- 0 1px 2px color-mix(in srgb, black 30%, transparent);
801
782
  }
802
783
 
803
784
  .floe-segmented-control__item {
package/dist/ui.js CHANGED
@@ -1,61 +1,62 @@
1
- import { AffixInput as e, Input as t, NumberInput as a, Textarea as i } from "./components/ui/Input.js";
2
- import { AnimatedBorderCard as c, Card as T, CardContent as l, CardDescription as m, CardFooter as p, CardHeader as C, CardTitle as f, Interactive3DCard as s, MorphCard as E, NeonCard as S } from "./components/ui/Card.js";
1
+ import { AffixInput as o, Input as t, NumberInput as a, Textarea as i } from "./components/ui/Input.js";
2
+ import { AnimatedBorderCard as c, Card as T, CardContent as l, CardDescription as m, CardFooter as p, CardHeader as f, CardTitle as C, Interactive3DCard as s, MorphCard as E, NeonCard as S } from "./components/ui/Card.js";
3
3
  import { AreaChart as A, DataBarChart as R, DataPieChart as x, LineChart as u, MonitoringChart as d } from "./components/ui/Charts.js";
4
- import { Button as g } from "./components/ui/Button.js";
5
- import { CANVAS_WHEEL_INTERACTIVE_ATTR as P, DEFAULT_CANVAS_WHEEL_INTERACTIVE_SELECTOR as I, DEFAULT_LOCAL_INTERACTION_SURFACE_SELECTOR as O, DEFAULT_WORKBENCH_TEXT_SELECTION_SURFACE_SELECTOR as W, DEFAULT_WORKBENCH_WIDGET_ACTIVATION_SURFACE_SELECTOR as D, DEFAULT_WORKBENCH_WIDGET_SHELL_SELECTOR as N, LOCAL_INTERACTION_SURFACE_ATTR as v, WORKBENCH_TEXT_SELECTION_SURFACE_ATTR as h, WORKBENCH_WIDGET_ACTIVATION_SURFACE_ATTR as k, WORKBENCH_WIDGET_SHELL_ATTR as B, isLocalInteractionSurfaceTarget as U, resolveSurfaceInteractionTargetRole as b, resolveSurfaceWheelRouting as H, resolveWorkbenchWidgetEventOwnership as M, resolveWorkbenchWidgetLocalTypingTarget as w, resolveWorkbenchWidgetTextSelectionTarget as y, shouldActivateWorkbenchWidgetLocalTarget as G } from "./components/ui/localInteractionSurface.js";
4
+ import { Button as L } from "./components/ui/Button.js";
5
+ import { CANVAS_WHEEL_INTERACTIVE_ATTR as P, DEFAULT_CANVAS_WHEEL_INTERACTIVE_SELECTOR as I, DEFAULT_LOCAL_INTERACTION_SURFACE_SELECTOR as O, DEFAULT_WORKBENCH_TEXT_SELECTION_SURFACE_SELECTOR as W, DEFAULT_WORKBENCH_WIDGET_ACTIVATION_SURFACE_SELECTOR as D, DEFAULT_WORKBENCH_WIDGET_SHELL_SELECTOR as N, LOCAL_INTERACTION_SURFACE_ATTR as h, WORKBENCH_TEXT_SELECTION_SURFACE_ATTR as v, WORKBENCH_WIDGET_ACTIVATION_SURFACE_ATTR as k, WORKBENCH_WIDGET_SHELL_ATTR as B, isLocalInteractionSurfaceTarget as U, resolveSurfaceInteractionTargetRole as b, resolveSurfaceWheelRouting as H, resolveWorkbenchWidgetEventOwnership as M, resolveWorkbenchWidgetLocalTypingTarget as y, resolveWorkbenchWidgetTextSelectionTarget as w, shouldActivateWorkbenchWidgetLocalTarget as G } from "./components/ui/localInteractionSurface.js";
6
6
  import { Checkbox as V, CheckboxGroup as z, CheckboxList as j } from "./components/ui/Checkbox.js";
7
7
  import { CircularProgress as Y, LinearProgress as Q, SegmentedProgress as Z, StepsProgress as q } from "./components/ui/Progress.js";
8
8
  import { CommandPalette as $ } from "./components/ui/CommandPalette.js";
9
- import { ConfirmDialog as or, Dialog as er } from "./components/ui/Dialog.js";
10
- import { DIALOG_SURFACE_BOUNDARY_ATTR as ar, DIALOG_SURFACE_HOST_ATTR as ir, SURFACE_PORTAL_HOST_ATTR as nr, SURFACE_PORTAL_LAYER_ATTR as cr, __resetSurfacePortalScopeForTests as Tr, ensureSurfacePortalInteractionTracking as lr, isSurfacePortalMode as mr, projectSurfacePortalPosition as pr, projectSurfacePortalRect as Cr, resolveSurfacePortalBoundaryRect as fr, resolveSurfacePortalHost as sr, resolveSurfacePortalMount as Er, resolveSurfacePortalMountRect as Sr } from "./components/ui/dialogSurfaceScope.js";
9
+ import { ConfirmDialog as er, Dialog as or } from "./components/ui/Dialog.js";
10
+ import { DIALOG_SURFACE_BOUNDARY_ATTR as ar, DIALOG_SURFACE_HOST_ATTR as ir, SURFACE_PORTAL_HOST_ATTR as nr, SURFACE_PORTAL_LAYER_ATTR as cr, __resetSurfacePortalScopeForTests as Tr, ensureSurfacePortalInteractionTracking as lr, isSurfacePortalMode as mr, projectSurfacePortalPosition as pr, projectSurfacePortalRect as fr, resolveSurfacePortalBoundaryRect as Cr, resolveSurfacePortalHost as sr, resolveSurfacePortalMount as Er, resolveSurfacePortalMountRect as Sr } from "./components/ui/dialogSurfaceScope.js";
11
11
  import { DialogPlacementProvider as Ar } from "./components/ui/DialogPlacementContext.js";
12
12
  import { DirectoryInput as xr } from "./components/ui/DirectoryInput.js";
13
13
  import { DirectoryPicker as dr } from "./components/ui/DirectoryPicker.js";
14
- import { Dropdown as gr, Select as Lr } from "./components/ui/Dropdown.js";
15
- import { ErrorBlock as Ir, HighlightBlock as Or, InfoBlock as Wr, NoteBlock as Dr, SuccessBlock as Nr, TipBlock as vr, WarningBlock as hr } from "./components/ui/HighlightBlock.js";
14
+ import { Dropdown as Lr, Select as gr } from "./components/ui/Dropdown.js";
15
+ import { ErrorBlock as Ir, HighlightBlock as Or, InfoBlock as Wr, NoteBlock as Dr, SuccessBlock as Nr, TipBlock as hr, WarningBlock as vr } from "./components/ui/HighlightBlock.js";
16
16
  import { FileOpenPicker as Br, normalizeFileOpenSelection as Ur, updateFileOpenSelection as br } from "./components/ui/FileOpenPicker.js";
17
17
  import { FileSavePicker as Mr } from "./components/ui/FileSavePicker.js";
18
- import { FloatingWindow as yr } from "./components/ui/FloatingWindow.js";
18
+ import { FloatingWindow as wr } from "./components/ui/FloatingWindow.js";
19
19
  import { Form as Kr, FormActions as Vr, FormControl as zr, FormDescription as jr, FormDivider as Xr, FormField as Yr, FormLabel as Qr, FormMessage as Zr, FormRow as qr, FormSection as Jr, useFormSubmitting as $r } from "./components/ui/Form.js";
20
- import { InfiniteCanvas as oo } from "./components/ui/InfiniteCanvas.js";
21
- import { MENU_ITEM_SELECTOR as to, focusMenuItem as ao, getMenuItems as io, handleMenuKeyboardNavigation as no, moveMenuFocus as co } from "./components/ui/menuUtils.js";
22
- import { MobileKeyboard as lo } from "./components/ui/MobileKeyboard.js";
23
- import { Pagination as po } from "./components/ui/Pagination.js";
24
- import { PickerNavigationError as fo, createFilesystemPickerDataSource as so, formatPickerPath as Eo, parsePickerPath as So } from "./components/ui/picker/PickerNavigation.js";
25
- import { ProcessingIndicator as Ao } from "./components/ui/ProcessingIndicator.js";
26
- import { QuoteBlock as xo } from "./components/ui/QuoteBlock.js";
27
- import { RadioGroup as Fo, RadioList as go, RadioOption as Lo } from "./components/ui/Radio.js";
28
- import { SegmentedControl as Io } from "./components/ui/SegmentedControl.js";
29
- import { Stepper as Wo, Wizard as Do, useWizard as No } from "./components/ui/Stepper.js";
30
- import { SurfaceFloatingLayer as ho } from "./components/ui/SurfaceFloatingLayer.js";
31
- import { SurfaceFloatingPanel as Bo } from "./components/ui/SurfaceFloatingPanel.js";
32
- import { Switch as bo } from "./components/ui/Switch.js";
33
- import { TabPanel as Mo, Tabs as wo } from "./components/ui/Tabs.js";
34
- import { Tag as Go } from "./components/ui/Tag.js";
35
- import { Tooltip as Vo } from "./components/ui/Tooltip.js";
36
- import { clientToCanvasLocal as jo, clientToCanvasWorld as Xo, createViewportFromZoomAnchor as Yo, isPointInsideCanvasRect as Qo, localToCanvasWorld as Zo } from "./components/ui/canvasGeometry.js";
37
- import { createFloatingPresence as Jo } from "./components/ui/floatingPresence.js";
38
- import { intersectSurfaceRects as re } from "./components/ui/surfaceFloatingBoundary.js";
39
- import { resolveFloatingWindowViewport as ee } from "./components/ui/floatingWindowGeometry.js";
40
- import { startPointerSession as ae } from "./components/ui/pointerSession.js";
20
+ import { InfiniteCanvas as ee } from "./components/ui/InfiniteCanvas.js";
21
+ import { MENU_ITEM_SELECTOR as te, focusMenuItem as ae, getMenuItems as ie, handleMenuKeyboardNavigation as ne, moveMenuFocus as ce } from "./components/ui/menuUtils.js";
22
+ import { MobileKeyboard as le } from "./components/ui/MobileKeyboard.js";
23
+ import { Pagination as pe } from "./components/ui/Pagination.js";
24
+ import { PickerNavigationError as Ce, createFilesystemPickerDataSource as se, formatPickerPath as Ee, parsePickerPath as Se } from "./components/ui/picker/PickerNavigation.js";
25
+ import { ProcessingIndicator as Ae } from "./components/ui/ProcessingIndicator.js";
26
+ import { QuoteBlock as xe } from "./components/ui/QuoteBlock.js";
27
+ import { RadioGroup as de, RadioList as Fe, RadioOption as Le } from "./components/ui/Radio.js";
28
+ import { SegmentedControl as Pe } from "./components/ui/SegmentedControl.js";
29
+ import { Stepper as Oe, Wizard as We, useWizard as De } from "./components/ui/Stepper.js";
30
+ import { SurfaceAnchoredLayer as he } from "./components/ui/SurfaceAnchoredLayer.js";
31
+ import { SurfaceFloatingLayer as ke } from "./components/ui/SurfaceFloatingLayer.js";
32
+ import { SurfaceFloatingPanel as Ue } from "./components/ui/SurfaceFloatingPanel.js";
33
+ import { Switch as He } from "./components/ui/Switch.js";
34
+ import { TabPanel as ye, Tabs as we } from "./components/ui/Tabs.js";
35
+ import { Tag as Ke } from "./components/ui/Tag.js";
36
+ import { Tooltip as ze } from "./components/ui/Tooltip.js";
37
+ import { clientToCanvasLocal as Xe, clientToCanvasWorld as Ye, createViewportFromZoomAnchor as Qe, isPointInsideCanvasRect as Ze, localToCanvasWorld as qe } from "./components/ui/canvasGeometry.js";
38
+ import { createFloatingPresence as $e } from "./components/ui/floatingPresence.js";
39
+ import { intersectSurfaceRects as eo } from "./components/ui/surfaceFloatingBoundary.js";
40
+ import { resolveFloatingWindowViewport as to } from "./components/ui/floatingWindowGeometry.js";
41
+ import { startPointerSession as io } from "./components/ui/pointerSession.js";
41
42
  export {
42
- e as AffixInput,
43
+ o as AffixInput,
43
44
  c as AnimatedBorderCard,
44
45
  A as AreaChart,
45
- g as Button,
46
+ L as Button,
46
47
  P as CANVAS_WHEEL_INTERACTIVE_ATTR,
47
48
  T as Card,
48
49
  l as CardContent,
49
50
  m as CardDescription,
50
51
  p as CardFooter,
51
- C as CardHeader,
52
- f as CardTitle,
52
+ f as CardHeader,
53
+ C as CardTitle,
53
54
  V as Checkbox,
54
55
  z as CheckboxGroup,
55
56
  j as CheckboxList,
56
57
  Y as CircularProgress,
57
58
  $ as CommandPalette,
58
- or as ConfirmDialog,
59
+ er as ConfirmDialog,
59
60
  I as DEFAULT_CANVAS_WHEEL_INTERACTIVE_SELECTOR,
60
61
  O as DEFAULT_LOCAL_INTERACTION_SURFACE_SELECTOR,
61
62
  W as DEFAULT_WORKBENCH_TEXT_SELECTION_SURFACE_SELECTOR,
@@ -65,15 +66,15 @@ export {
65
66
  ir as DIALOG_SURFACE_HOST_ATTR,
66
67
  R as DataBarChart,
67
68
  x as DataPieChart,
68
- er as Dialog,
69
+ or as Dialog,
69
70
  Ar as DialogPlacementProvider,
70
71
  xr as DirectoryInput,
71
72
  dr as DirectoryPicker,
72
- gr as Dropdown,
73
+ Lr as Dropdown,
73
74
  Ir as ErrorBlock,
74
75
  Br as FileOpenPicker,
75
76
  Mr as FileSavePicker,
76
- yr as FloatingWindow,
77
+ wr as FloatingWindow,
77
78
  Kr as Form,
78
79
  Vr as FormActions,
79
80
  zr as FormControl,
@@ -85,83 +86,84 @@ export {
85
86
  qr as FormRow,
86
87
  Jr as FormSection,
87
88
  Or as HighlightBlock,
88
- oo as InfiniteCanvas,
89
+ ee as InfiniteCanvas,
89
90
  Wr as InfoBlock,
90
91
  t as Input,
91
92
  s as Interactive3DCard,
92
- v as LOCAL_INTERACTION_SURFACE_ATTR,
93
+ h as LOCAL_INTERACTION_SURFACE_ATTR,
93
94
  u as LineChart,
94
95
  Q as LinearProgress,
95
- to as MENU_ITEM_SELECTOR,
96
- lo as MobileKeyboard,
96
+ te as MENU_ITEM_SELECTOR,
97
+ le as MobileKeyboard,
97
98
  d as MonitoringChart,
98
99
  E as MorphCard,
99
100
  S as NeonCard,
100
101
  Dr as NoteBlock,
101
102
  a as NumberInput,
102
- po as Pagination,
103
- fo as PickerNavigationError,
104
- Ao as ProcessingIndicator,
105
- xo as QuoteBlock,
106
- Fo as RadioGroup,
107
- go as RadioList,
108
- Lo as RadioOption,
103
+ pe as Pagination,
104
+ Ce as PickerNavigationError,
105
+ Ae as ProcessingIndicator,
106
+ xe as QuoteBlock,
107
+ de as RadioGroup,
108
+ Fe as RadioList,
109
+ Le as RadioOption,
109
110
  nr as SURFACE_PORTAL_HOST_ATTR,
110
111
  cr as SURFACE_PORTAL_LAYER_ATTR,
111
- Io as SegmentedControl,
112
+ Pe as SegmentedControl,
112
113
  Z as SegmentedProgress,
113
- Lr as Select,
114
- Wo as Stepper,
114
+ gr as Select,
115
+ Oe as Stepper,
115
116
  q as StepsProgress,
116
117
  Nr as SuccessBlock,
117
- ho as SurfaceFloatingLayer,
118
- Bo as SurfaceFloatingPanel,
119
- bo as Switch,
120
- Mo as TabPanel,
121
- wo as Tabs,
122
- Go as Tag,
118
+ he as SurfaceAnchoredLayer,
119
+ ke as SurfaceFloatingLayer,
120
+ Ue as SurfaceFloatingPanel,
121
+ He as Switch,
122
+ ye as TabPanel,
123
+ we as Tabs,
124
+ Ke as Tag,
123
125
  i as Textarea,
124
- vr as TipBlock,
125
- Vo as Tooltip,
126
- h as WORKBENCH_TEXT_SELECTION_SURFACE_ATTR,
126
+ hr as TipBlock,
127
+ ze as Tooltip,
128
+ v as WORKBENCH_TEXT_SELECTION_SURFACE_ATTR,
127
129
  k as WORKBENCH_WIDGET_ACTIVATION_SURFACE_ATTR,
128
130
  B as WORKBENCH_WIDGET_SHELL_ATTR,
129
- hr as WarningBlock,
130
- Do as Wizard,
131
+ vr as WarningBlock,
132
+ We as Wizard,
131
133
  Tr as __resetSurfacePortalScopeForTests,
132
- jo as clientToCanvasLocal,
133
- Xo as clientToCanvasWorld,
134
- so as createFilesystemPickerDataSource,
135
- Jo as createFloatingPresence,
136
- Yo as createViewportFromZoomAnchor,
134
+ Xe as clientToCanvasLocal,
135
+ Ye as clientToCanvasWorld,
136
+ se as createFilesystemPickerDataSource,
137
+ $e as createFloatingPresence,
138
+ Qe as createViewportFromZoomAnchor,
137
139
  lr as ensureSurfacePortalInteractionTracking,
138
- ao as focusMenuItem,
139
- Eo as formatPickerPath,
140
- io as getMenuItems,
141
- no as handleMenuKeyboardNavigation,
142
- re as intersectSurfaceRects,
140
+ ae as focusMenuItem,
141
+ Ee as formatPickerPath,
142
+ ie as getMenuItems,
143
+ ne as handleMenuKeyboardNavigation,
144
+ eo as intersectSurfaceRects,
143
145
  U as isLocalInteractionSurfaceTarget,
144
- Qo as isPointInsideCanvasRect,
146
+ Ze as isPointInsideCanvasRect,
145
147
  mr as isSurfacePortalMode,
146
- Zo as localToCanvasWorld,
147
- co as moveMenuFocus,
148
+ qe as localToCanvasWorld,
149
+ ce as moveMenuFocus,
148
150
  Ur as normalizeFileOpenSelection,
149
- So as parsePickerPath,
151
+ Se as parsePickerPath,
150
152
  pr as projectSurfacePortalPosition,
151
- Cr as projectSurfacePortalRect,
152
- ee as resolveFloatingWindowViewport,
153
+ fr as projectSurfacePortalRect,
154
+ to as resolveFloatingWindowViewport,
153
155
  b as resolveSurfaceInteractionTargetRole,
154
- fr as resolveSurfacePortalBoundaryRect,
156
+ Cr as resolveSurfacePortalBoundaryRect,
155
157
  sr as resolveSurfacePortalHost,
156
158
  Er as resolveSurfacePortalMount,
157
159
  Sr as resolveSurfacePortalMountRect,
158
160
  H as resolveSurfaceWheelRouting,
159
161
  M as resolveWorkbenchWidgetEventOwnership,
160
- w as resolveWorkbenchWidgetLocalTypingTarget,
161
- y as resolveWorkbenchWidgetTextSelectionTarget,
162
+ y as resolveWorkbenchWidgetLocalTypingTarget,
163
+ w as resolveWorkbenchWidgetTextSelectionTarget,
162
164
  G as shouldActivateWorkbenchWidgetLocalTarget,
163
- ae as startPointerSession,
165
+ io as startPointerSession,
164
166
  br as updateFileOpenSelection,
165
167
  $r as useFormSubmitting,
166
- No as useWizard
168
+ De as useWizard
167
169
  };
@@ -1113,3 +1113,63 @@
1113
1113
  box-shadow: 0 0 18px var(--wb-accent-ring);
1114
1114
  }
1115
1115
  }
1116
+
1117
+ /* Shared matte surfaces keep all appearance variants legible in every shell palette. */
1118
+ @layer components {
1119
+ .workbench-surface[data-workbench-theme] {
1120
+ --wb-canvas: oklch(from var(--background) clamp(0.78, calc(l - 0.085), 0.91) c h);
1121
+ --wb-window: var(--card);
1122
+ --wb-window-edge: oklch(from var(--wb-window) calc(l - 0.19) calc(c * 0.25) h);
1123
+ --wb-window-active: oklch(from var(--wb-window) calc(l - 0.36) calc(c * 0.25) h);
1124
+ --wb-window-title: color-mix(in oklab, var(--wb-window) 97%, var(--foreground));
1125
+ --wb-window-shadow: 0 6px 16px -8px rgb(0 0 0 / 22%);
1126
+ --wb-text: var(--foreground);
1127
+ }
1128
+ html.dark .workbench-surface[data-workbench-theme] {
1129
+ --wb-canvas: oklch(from var(--background) clamp(0.175, calc(l - 0.08), 0.28) c h);
1130
+ --wb-window: color-mix(in oklab, var(--background) 94%, var(--foreground));
1131
+ --wb-window-title: color-mix(in oklab, var(--wb-window) 94%, var(--foreground));
1132
+ --wb-window-edge: oklch(from var(--wb-window) calc(l + 0.075) calc(c * 0.25) h);
1133
+ --wb-window-active: oklch(from var(--wb-window) calc(l + 0.17) calc(c * 0.25) h);
1134
+ --wb-window-shadow: 0 6px 16px -8px rgb(0 0 0 / 48%);
1135
+ }
1136
+ .workbench-surface[data-workbench-theme] .workbench-canvas {
1137
+ background: var(--wb-canvas);
1138
+ }
1139
+ .workbench-surface[data-workbench-theme] .workbench-widget {
1140
+ background: var(--wb-window);
1141
+ border-color: var(--wb-window-edge);
1142
+ box-shadow: var(--wb-window-shadow);
1143
+ backdrop-filter: none;
1144
+ -webkit-backdrop-filter: none;
1145
+ }
1146
+ .workbench-surface[data-workbench-theme] .workbench-widget:hover {
1147
+ border-color: var(--wb-window-edge);
1148
+ box-shadow: var(--wb-window-shadow);
1149
+ }
1150
+ .workbench-surface[data-workbench-theme]
1151
+ .workbench-widget:is(.is-selected, .is-dragging, .is-resizing) {
1152
+ border-color: var(--wb-window-active);
1153
+ box-shadow: var(--wb-window-shadow);
1154
+ }
1155
+ .workbench-surface[data-workbench-theme] .workbench-widget__header {
1156
+ background: var(--wb-window-title);
1157
+ border-bottom: 1px solid var(--wb-window-edge);
1158
+ color: var(--foreground);
1159
+ }
1160
+ .workbench-surface[data-workbench-theme] .workbench-widget__body {
1161
+ background: var(--wb-window);
1162
+ }
1163
+ .workbench-surface[data-workbench-theme] .workbench-widget__title {
1164
+ color: var(--foreground);
1165
+ }
1166
+ .workbench-surface[data-workbench-theme] .workbench-widget__title-area svg {
1167
+ color: var(--foreground);
1168
+ }
1169
+ html[data-floe-shell-theme='hc-light'] .workbench-surface[data-workbench-theme] {
1170
+ --wb-window-edge: var(--foreground);
1171
+ --wb-window-active: var(--foreground);
1172
+ --wb-canvas: var(--muted);
1173
+ --wb-window-shadow: none;
1174
+ }
1175
+ }