@floegence/floe-webapp-core 0.41.4 → 0.42.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.
@@ -102,6 +102,11 @@
102
102
  --wb-vib-shadow:
103
103
  0 1px 0 rgba(255, 255, 255, 0.66) inset, 0 12px 40px -14px rgba(22, 28, 45, 0.26),
104
104
  0 4px 10px -6px rgba(22, 28, 45, 0.12);
105
+ --wb-dock-material-background: rgba(255, 255, 255, 0.56);
106
+ --wb-dock-material-border: rgba(255, 255, 255, 0.46);
107
+ --wb-dock-material-border-top: var(--wb-dock-material-border);
108
+ --wb-dock-material-shadow: var(--wb-vib-shadow);
109
+ --wb-dock-material-filter: blur(36px) saturate(180%);
105
110
  --wb-accent: #3478f6;
106
111
  --wb-accent-strong: #1e6ae8;
107
112
  --wb-accent-soft: rgba(52, 120, 246, 0.14);
@@ -154,6 +159,8 @@
154
159
  --wb-vib-shadow:
155
160
  0 1px 0 rgba(255, 255, 255, 0.08) inset, 0 20px 60px -14px rgba(0, 0, 0, 0.72),
156
161
  0 6px 14px -6px rgba(0, 0, 0, 0.46);
162
+ --wb-dock-material-background: rgba(36, 36, 40, 0.5);
163
+ --wb-dock-material-border: rgba(255, 255, 255, 0.1);
157
164
  --wb-accent: #5a9bff;
158
165
  --wb-accent-strong: #86b7ff;
159
166
  --wb-accent-soft: rgba(90, 155, 255, 0.16);
@@ -243,8 +250,7 @@
243
250
  }
244
251
 
245
252
  .workbench-surface[data-workbench-theme='vibrancy'] .workbench-hud,
246
- .workbench-surface[data-workbench-theme='vibrancy'] .workbench-lock-button,
247
- .workbench-surface[data-workbench-theme='vibrancy'] .workbench-dock {
253
+ .workbench-surface[data-workbench-theme='vibrancy'] .workbench-lock-button {
248
254
  background: rgba(255, 255, 255, 0.56);
249
255
  border-color: rgba(255, 255, 255, 0.46);
250
256
  box-shadow: var(--wb-vib-shadow);
@@ -253,8 +259,7 @@
253
259
  }
254
260
 
255
261
  html.dark .workbench-surface[data-workbench-theme='vibrancy'] .workbench-hud,
256
- html.dark .workbench-surface[data-workbench-theme='vibrancy'] .workbench-lock-button,
257
- html.dark .workbench-surface[data-workbench-theme='vibrancy'] .workbench-dock {
262
+ html.dark .workbench-surface[data-workbench-theme='vibrancy'] .workbench-lock-button {
258
263
  background: rgba(36, 36, 40, 0.5);
259
264
  border-color: rgba(255, 255, 255, 0.1);
260
265
  }
@@ -300,6 +305,11 @@
300
305
  --wb-mica-divider: rgba(17, 24, 39, 0.08);
301
306
  --wb-mica-shadow:
302
307
  0 1px 0 rgba(255, 255, 255, 0.64) inset, 0 16px 42px -18px rgba(31, 41, 55, 0.28);
308
+ --wb-dock-material-background: color-mix(in srgb, var(--wb-mica-widget) 92%, transparent);
309
+ --wb-dock-material-border: var(--wb-mica-border);
310
+ --wb-dock-material-border-top: var(--wb-dock-material-border);
311
+ --wb-dock-material-shadow: 0 -12px 34px -22px rgba(17, 24, 39, 0.28);
312
+ --wb-dock-material-filter: blur(56px) saturate(180%);
303
313
  --wb-accent: #0078d4;
304
314
  --wb-accent-strong: #005fae;
305
315
  --wb-accent-soft: rgba(0, 120, 212, 0.12);
@@ -433,8 +443,7 @@
433
443
  width: 42px;
434
444
  }
435
445
 
436
- .workbench-surface[data-workbench-theme='mica']
437
- .workbench-widget__window-control--close:hover,
446
+ .workbench-surface[data-workbench-theme='mica'] .workbench-widget__window-control--close:hover,
438
447
  .workbench-surface[data-workbench-theme='mica']
439
448
  .workbench-widget__window-control--close:focus-visible {
440
449
  background: #c42b1c;
@@ -460,11 +469,6 @@
460
469
  border-bottom: 0;
461
470
  border-left: 0;
462
471
  border-radius: 0;
463
- background: color-mix(in srgb, var(--wb-mica-widget) 92%, transparent);
464
- border-color: var(--wb-mica-border);
465
- box-shadow: 0 -12px 34px -22px rgba(17, 24, 39, 0.28);
466
- backdrop-filter: blur(56px) saturate(180%);
467
- -webkit-backdrop-filter: blur(56px) saturate(180%);
468
472
  }
469
473
 
470
474
  .workbench-surface[data-workbench-theme='mica'] .workbench-dock__tile {
@@ -507,6 +511,11 @@
507
511
  --wb-mid-border-strong: rgba(16, 16, 26, 0.14);
508
512
  --wb-mid-divider: rgba(16, 16, 26, 0.06);
509
513
  --wb-mid-shadow: 0 1px 2px rgba(16, 16, 26, 0.05), 0 10px 26px -14px rgba(16, 16, 26, 0.18);
514
+ --wb-dock-material-background: var(--wb-mid-widget);
515
+ --wb-dock-material-border: var(--wb-mid-border);
516
+ --wb-dock-material-border-top: var(--wb-dock-material-border);
517
+ --wb-dock-material-shadow: var(--wb-mid-shadow);
518
+ --wb-dock-material-filter: none;
510
519
  --wb-accent: #5e6ad2;
511
520
  --wb-accent-strong: #4c55a8;
512
521
  --wb-accent-soft: rgba(94, 106, 210, 0.1);
@@ -641,8 +650,7 @@
641
650
  }
642
651
 
643
652
  .workbench-surface[data-workbench-theme='midnight'] .workbench-hud,
644
- .workbench-surface[data-workbench-theme='midnight'] .workbench-lock-button,
645
- .workbench-surface[data-workbench-theme='midnight'] .workbench-dock {
653
+ .workbench-surface[data-workbench-theme='midnight'] .workbench-lock-button {
646
654
  background: var(--wb-mid-widget);
647
655
  border-color: var(--wb-mid-border);
648
656
  box-shadow: var(--wb-mid-shadow);
@@ -706,6 +714,11 @@
706
714
  --wb-aur-shadow:
707
715
  0 1px 0 var(--wb-aur-border-inner) inset, 0 20px 50px -14px rgba(67, 56, 202, 0.2),
708
716
  0 6px 16px -6px rgba(17, 15, 38, 0.1);
717
+ --wb-dock-material-background: var(--wb-aur-widget);
718
+ --wb-dock-material-border: var(--wb-aur-border);
719
+ --wb-dock-material-border-top: var(--wb-aur-border-inner);
720
+ --wb-dock-material-shadow: var(--wb-aur-shadow);
721
+ --wb-dock-material-filter: blur(50px) saturate(180%);
709
722
  --wb-accent: #6366f1;
710
723
  --wb-accent-strong: #4f46e5;
711
724
  --wb-accent-soft: rgba(99, 102, 241, 0.16);
@@ -853,8 +866,7 @@
853
866
  }
854
867
 
855
868
  .workbench-surface[data-workbench-theme='aurora'] .workbench-hud,
856
- .workbench-surface[data-workbench-theme='aurora'] .workbench-lock-button,
857
- .workbench-surface[data-workbench-theme='aurora'] .workbench-dock {
869
+ .workbench-surface[data-workbench-theme='aurora'] .workbench-lock-button {
858
870
  background: var(--wb-aur-widget);
859
871
  border: 1px solid var(--wb-aur-border);
860
872
  border-top-color: var(--wb-aur-border-inner);
@@ -901,6 +913,11 @@
901
913
  --wb-term-border: #d9d5cf;
902
914
  --wb-term-divider: #e9e5df;
903
915
  --wb-term-shadow: 0 1px 2px rgba(18, 18, 24, 0.05), 0 10px 24px -14px rgba(18, 18, 24, 0.12);
916
+ --wb-dock-material-background: var(--wb-term-widget);
917
+ --wb-dock-material-border: var(--wb-term-border);
918
+ --wb-dock-material-border-top: var(--wb-dock-material-border);
919
+ --wb-dock-material-shadow: var(--wb-term-shadow);
920
+ --wb-dock-material-filter: none;
904
921
  --wb-accent: #d63384;
905
922
  --wb-accent-strong: #b4236c;
906
923
  --wb-accent-soft: rgba(214, 51, 132, 0.12);
@@ -1041,8 +1058,7 @@
1041
1058
  }
1042
1059
 
1043
1060
  .workbench-surface[data-workbench-theme='terminal'] .workbench-hud,
1044
- .workbench-surface[data-workbench-theme='terminal'] .workbench-lock-button,
1045
- .workbench-surface[data-workbench-theme='terminal'] .workbench-dock {
1061
+ .workbench-surface[data-workbench-theme='terminal'] .workbench-lock-button {
1046
1062
  background: var(--wb-term-widget);
1047
1063
  border-color: var(--wb-term-border);
1048
1064
  border-radius: 6px;
@@ -1055,6 +1071,7 @@
1055
1071
  align-items: center;
1056
1072
  gap: 4px;
1057
1073
  padding: 6px 10px;
1074
+ border-radius: 6px;
1058
1075
  }
1059
1076
 
1060
1077
  .workbench-surface[data-workbench-theme='terminal'] .workbench-dock::after {
@@ -138,6 +138,13 @@
138
138
  --wb-atmosphere: none;
139
139
  --wb-atmosphere-opacity: 0;
140
140
  --wb-atmosphere-blend: normal;
141
+ --wb-dock-material-background: color-mix(in srgb, var(--card, #fff) 72%, transparent);
142
+ --wb-dock-material-border: color-mix(in srgb, var(--border, #e5e5e5) 82%, transparent);
143
+ --wb-dock-material-border-top: var(--wb-dock-material-border);
144
+ --wb-dock-material-shadow:
145
+ 0 18px 48px -12px color-mix(in srgb, var(--foreground, #000) 22%, transparent),
146
+ 0 1px 0 color-mix(in srgb, white 60%, transparent) inset;
147
+ --wb-dock-material-filter: blur(18px) saturate(180%);
141
148
  --wb-terminal-bg: var(--terminal-background, #202a37);
142
149
  --wb-terminal-toolbar: color-mix(
143
150
  in srgb,
@@ -1958,6 +1965,15 @@
1958
1965
  /* ------------------------------------------------------------------ */
1959
1966
  /* Dock (filter bar) */
1960
1967
  /* ------------------------------------------------------------------ */
1968
+ .workbench-dock-material {
1969
+ background: var(--wb-dock-material-background);
1970
+ border-color: var(--wb-dock-material-border);
1971
+ border-top-color: var(--wb-dock-material-border-top);
1972
+ box-shadow: var(--wb-dock-material-shadow);
1973
+ backdrop-filter: var(--wb-dock-material-filter);
1974
+ -webkit-backdrop-filter: var(--wb-dock-material-filter);
1975
+ }
1976
+
1961
1977
  .workbench-dock {
1962
1978
  position: absolute;
1963
1979
  bottom: 14px;
@@ -1968,16 +1984,34 @@
1968
1984
  gap: 10px;
1969
1985
  padding: 8px 14px;
1970
1986
  border-radius: 16px;
1971
- border: 1px solid color-mix(in srgb, var(--border, #e5e5e5) 82%, transparent);
1972
- background: color-mix(in srgb, var(--card, #fff) 72%, transparent);
1973
- box-shadow:
1974
- 0 18px 48px -12px color-mix(in srgb, var(--foreground, #000) 22%, transparent),
1975
- 0 1px 0 color-mix(in srgb, white 60%, transparent) inset;
1976
- backdrop-filter: blur(18px) saturate(180%);
1977
- -webkit-backdrop-filter: blur(18px) saturate(180%);
1987
+ border: 1px solid var(--wb-dock-material-border);
1978
1988
  z-index: 8;
1979
1989
  }
1980
1990
 
1991
+ .workbench-dock-popover-layer {
1992
+ pointer-events: none;
1993
+ z-index: 20;
1994
+ }
1995
+
1996
+ .workbench-dock-popover {
1997
+ position: relative;
1998
+ pointer-events: auto;
1999
+ border: 1px solid var(--wb-dock-material-border);
2000
+ border-radius: 13px;
2001
+ }
2002
+
2003
+ .workbench-dock-popover__arrow {
2004
+ position: absolute;
2005
+ bottom: -6px;
2006
+ width: 12px;
2007
+ height: 12px;
2008
+ pointer-events: none;
2009
+ transform: translateX(-50%) rotate(45deg);
2010
+ border-right: 1px solid var(--wb-dock-material-border);
2011
+ border-bottom: 1px solid var(--wb-dock-material-border);
2012
+ background: var(--wb-dock-material-background);
2013
+ }
2014
+
1981
2015
  .workbench-dock__mode-switcher {
1982
2016
  position: relative;
1983
2017
  display: inline-flex;
@@ -2139,6 +2173,7 @@
2139
2173
  }
2140
2174
 
2141
2175
  .workbench-surface[data-workbench-mode='background'] .workbench-dock,
2176
+ .workbench-surface[data-workbench-mode='background'] .workbench-dock-popover,
2142
2177
  .workbench-surface[data-workbench-mode='background'] .workbench-dock__mode-popover,
2143
2178
  .workbench-surface[data-workbench-mode='background'] .workbench-lock-button,
2144
2179
  .workbench-surface[data-workbench-mode='background'] .workbench-hud,
@@ -2156,6 +2191,10 @@
2156
2191
  background: var(--popover, var(--card, #fff));
2157
2192
  }
2158
2193
 
2194
+ .workbench-surface[data-workbench-mode='background'] .workbench-dock-popover__arrow {
2195
+ background: var(--popover, var(--card, #fff));
2196
+ }
2197
+
2159
2198
  .workbench-dock__mode-option {
2160
2199
  position: relative;
2161
2200
  display: flex;
package/dist/workbench.js CHANGED
@@ -1,55 +1,57 @@
1
- import { DEFAULT_WORKBENCH_THEME as E, WORKBENCH_THEMES as _, WORKBENCH_THEME_IDS as o, isWorkbenchThemeId as O, workbenchThemeMeta as t } from "./components/workbench/workbenchThemes.js";
1
+ import { DEFAULT_WORKBENCH_THEME as o, WORKBENCH_THEMES as E, WORKBENCH_THEME_IDS as _, isWorkbenchThemeId as t, workbenchThemeMeta as O } from "./components/workbench/workbenchThemes.js";
2
2
  import { DEFAULT_WORKBENCH_VIEWPORT as T, WORKBENCH_BACKGROUND_REGION_FILTER_ID as R, WORKBENCH_LAYER_COMPONENT_FILTER_IDS as c, WORKBENCH_STICKY_FILTER_ID as N, WORKBENCH_TEXT_FILTER_ID as C, WORKBENCH_WIDGET_TYPES as n } from "./components/workbench/types.js";
3
- import { WIDGET_REGISTRY as K, createWorkbenchFilterState as a, getWidgetEntry as h, isValidWorkbenchWidgetType as B, resolveWorkbenchWidgetDefinitions as H } from "./components/workbench/widgets/widgetRegistry.js";
4
- import { WORKBENCH_BACKGROUND_MATERIALS as i, WORKBENCH_DEFAULT_BACKGROUND_MATERIAL as S, WORKBENCH_DEFAULT_REGION_FILL as b, WORKBENCH_DEFAULT_STICKY_NOTE_COLOR as k, WORKBENCH_DEFAULT_TEXT_COLOR as D, WORKBENCH_DEFAULT_TEXT_FONT as F, WORKBENCH_REGION_FILL_OPTIONS as d, WORKBENCH_STICKY_NOTE_COLORS as f, WORKBENCH_TEXT_COLOR_OPTIONS as A, WORKBENCH_TEXT_EMOJI_OPTIONS as m, WORKBENCH_TEXT_FONT_OPTIONS as p } from "./components/workbench/workbenchOptions.js";
3
+ import { WIDGET_REGISTRY as a, createWorkbenchFilterState as h, getWidgetEntry as K, isValidWorkbenchWidgetType as B, resolveWorkbenchWidgetDefinitions as k } from "./components/workbench/widgets/widgetRegistry.js";
4
+ import { WORKBENCH_BACKGROUND_MATERIALS as L, WORKBENCH_DEFAULT_BACKGROUND_MATERIAL as S, WORKBENCH_DEFAULT_REGION_FILL as b, WORKBENCH_DEFAULT_STICKY_NOTE_COLOR as i, WORKBENCH_DEFAULT_TEXT_COLOR as D, WORKBENCH_DEFAULT_TEXT_FONT as F, WORKBENCH_REGION_FILL_OPTIONS as d, WORKBENCH_STICKY_NOTE_COLORS as f, WORKBENCH_TEXT_COLOR_OPTIONS as p, WORKBENCH_TEXT_EMOJI_OPTIONS as m, WORKBENCH_TEXT_FONT_OPTIONS as A } from "./components/workbench/workbenchOptions.js";
5
5
  import { WorkbenchContextMenu as x } from "./components/workbench/WorkbenchContextMenu.js";
6
- import { WorkbenchOverlay as U } from "./components/workbench/WorkbenchOverlay.js";
7
- import { WorkbenchSurface as s } from "./components/workbench/WorkbenchSurface.js";
8
- import { WorkbenchThemeSelector as P } from "./components/workbench/WorkbenchThemeSelector.js";
9
- import { createDefaultWorkbenchState as X, createWorkbenchId as Y, createWorkbenchProjectedRect as v, createWorkbenchRenderLayerMap as y, createWorkbenchViewportCenteredOnWidget as V, createWorkbenchViewportFitForWidget as w, createWorkbenchWidgetFrame as j, createWorkbenchWidgetSurfaceMetrics as z, resolveWorkbenchProjectedSurfaceScaleBehavior as J, resolveWorkbenchWidgetRenderMode as q, sanitizeWorkbenchState as Q } from "./components/workbench/workbenchHelpers.js";
10
- import { useWorkbenchModel as $ } from "./components/workbench/useWorkbenchModel.js";
6
+ import { WorkbenchDockPopoverSurface as P } from "./components/workbench/WorkbenchDockPopoverSurface.js";
7
+ import { WorkbenchOverlay as g } from "./components/workbench/WorkbenchOverlay.js";
8
+ import { WorkbenchSurface as G } from "./components/workbench/WorkbenchSurface.js";
9
+ import { WorkbenchThemeSelector as v } from "./components/workbench/WorkbenchThemeSelector.js";
10
+ import { createDefaultWorkbenchState as Y, createWorkbenchId as y, createWorkbenchProjectedRect as V, createWorkbenchRenderLayerMap as w, createWorkbenchViewportCenteredOnWidget as j, createWorkbenchViewportFitForWidget as z, createWorkbenchWidgetFrame as J, createWorkbenchWidgetSurfaceMetrics as q, resolveWorkbenchProjectedSurfaceScaleBehavior as Q, resolveWorkbenchWidgetRenderMode as Z, sanitizeWorkbenchState as $ } from "./components/workbench/workbenchHelpers.js";
11
+ import { useWorkbenchModel as re } from "./components/workbench/useWorkbenchModel.js";
11
12
  export {
12
- E as DEFAULT_WORKBENCH_THEME,
13
+ o as DEFAULT_WORKBENCH_THEME,
13
14
  T as DEFAULT_WORKBENCH_VIEWPORT,
14
- K as WIDGET_REGISTRY,
15
- i as WORKBENCH_BACKGROUND_MATERIALS,
15
+ a as WIDGET_REGISTRY,
16
+ L as WORKBENCH_BACKGROUND_MATERIALS,
16
17
  R as WORKBENCH_BACKGROUND_REGION_FILTER_ID,
17
18
  S as WORKBENCH_DEFAULT_BACKGROUND_MATERIAL,
18
19
  b as WORKBENCH_DEFAULT_REGION_FILL,
19
- k as WORKBENCH_DEFAULT_STICKY_NOTE_COLOR,
20
+ i as WORKBENCH_DEFAULT_STICKY_NOTE_COLOR,
20
21
  D as WORKBENCH_DEFAULT_TEXT_COLOR,
21
22
  F as WORKBENCH_DEFAULT_TEXT_FONT,
22
23
  c as WORKBENCH_LAYER_COMPONENT_FILTER_IDS,
23
24
  d as WORKBENCH_REGION_FILL_OPTIONS,
24
25
  N as WORKBENCH_STICKY_FILTER_ID,
25
26
  f as WORKBENCH_STICKY_NOTE_COLORS,
26
- A as WORKBENCH_TEXT_COLOR_OPTIONS,
27
+ p as WORKBENCH_TEXT_COLOR_OPTIONS,
27
28
  m as WORKBENCH_TEXT_EMOJI_OPTIONS,
28
29
  C as WORKBENCH_TEXT_FILTER_ID,
29
- p as WORKBENCH_TEXT_FONT_OPTIONS,
30
- _ as WORKBENCH_THEMES,
31
- o as WORKBENCH_THEME_IDS,
30
+ A as WORKBENCH_TEXT_FONT_OPTIONS,
31
+ E as WORKBENCH_THEMES,
32
+ _ as WORKBENCH_THEME_IDS,
32
33
  n as WORKBENCH_WIDGET_TYPES,
33
34
  x as WorkbenchContextMenu,
34
- U as WorkbenchOverlay,
35
- s as WorkbenchSurface,
36
- P as WorkbenchThemeSelector,
37
- X as createDefaultWorkbenchState,
38
- a as createWorkbenchFilterState,
39
- Y as createWorkbenchId,
40
- v as createWorkbenchProjectedRect,
41
- y as createWorkbenchRenderLayerMap,
42
- V as createWorkbenchViewportCenteredOnWidget,
43
- w as createWorkbenchViewportFitForWidget,
44
- j as createWorkbenchWidgetFrame,
45
- z as createWorkbenchWidgetSurfaceMetrics,
46
- h as getWidgetEntry,
35
+ P as WorkbenchDockPopoverSurface,
36
+ g as WorkbenchOverlay,
37
+ G as WorkbenchSurface,
38
+ v as WorkbenchThemeSelector,
39
+ Y as createDefaultWorkbenchState,
40
+ h as createWorkbenchFilterState,
41
+ y as createWorkbenchId,
42
+ V as createWorkbenchProjectedRect,
43
+ w as createWorkbenchRenderLayerMap,
44
+ j as createWorkbenchViewportCenteredOnWidget,
45
+ z as createWorkbenchViewportFitForWidget,
46
+ J as createWorkbenchWidgetFrame,
47
+ q as createWorkbenchWidgetSurfaceMetrics,
48
+ K as getWidgetEntry,
47
49
  B as isValidWorkbenchWidgetType,
48
- O as isWorkbenchThemeId,
49
- J as resolveWorkbenchProjectedSurfaceScaleBehavior,
50
- H as resolveWorkbenchWidgetDefinitions,
51
- q as resolveWorkbenchWidgetRenderMode,
52
- Q as sanitizeWorkbenchState,
53
- $ as useWorkbenchModel,
54
- t as workbenchThemeMeta
50
+ t as isWorkbenchThemeId,
51
+ Q as resolveWorkbenchProjectedSurfaceScaleBehavior,
52
+ k as resolveWorkbenchWidgetDefinitions,
53
+ Z as resolveWorkbenchWidgetRenderMode,
54
+ $ as sanitizeWorkbenchState,
55
+ re as useWorkbenchModel,
56
+ O as workbenchThemeMeta
55
57
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floegence/floe-webapp-core",
3
- "version": "0.41.4",
3
+ "version": "0.42.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",