@ethisyscore/plugin-ui 1.61.0 → 1.62.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ethisyscore/plugin-ui",
3
- "version": "1.61.0",
3
+ "version": "1.62.0",
4
4
  "description": "Plugin-UI umbrella SDK: client bridge + a11y/l10n primitives + brokered-MCP client (WI 4858).",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -53,9 +53,37 @@
53
53
  to `rounded-3xl` via CSS in its `components`/`utilities` layers, which can lose
54
54
  to MUI's 4px default inside a plugin's cascade. Pin the gogo radius here,
55
55
  unlayered + root-scoped (specificity 0,2,0) so it wins regardless of layer
56
- placement. Portaled Paper (menus/dialogs/pickers) renders outside the root and
57
- is unaffected — the host styles those. */
56
+ placement. Since portal containment landed, portaled Paper (menus/dialogs/
57
+ pickers) renders INSIDE the root too, so this now reaches those as well — the
58
+ same radius the host applies to its own. */
58
59
  .ehx-plugin-root .MuiCard-root,
59
60
  .ehx-plugin-root .MuiPaper-rounded {
60
61
  border-radius: var(--border-radius-3xl);
61
62
  }
63
+
64
+ /* Portal container rendered by `PluginPortalScope` at the end of every plugin
65
+ surface. MUI's portalling components (Modal/Popper and everything built on
66
+ them) default to it, which keeps dialogs, menus, poppers and tooltips inside
67
+ the plugin root and therefore inside the plugin's SCOPED CSS.
68
+ `position: fixed` at the viewport origin, zero-sized:
69
+ - fixed + top/left 0 gives Popper's `position: absolute` children a
70
+ containing block whose origin matches the viewport coordinates Popper
71
+ computes (a static container would resolve against whatever positioned
72
+ ancestor happens to sit above it, offsetting every popper).
73
+ - zero size means the element itself never covers content or takes clicks;
74
+ overlays overflow it visibly, as intended.
75
+ - the z-index matches MUI's `modal` token so overlays clear host chrome
76
+ (app bar 1100, drawer 1200) from inside the plugin's stacking context.
77
+ The host's own portal container is deliberately unpositioned ("no overflow/
78
+ position to avoid stacking context") and can afford to be: it is a direct child
79
+ of `.gogo-ui`, a sibling of the `relative overflow-hidden` content div. A plugin
80
+ root sits INSIDE that div, so an unpositioned container here would put every
81
+ overlay inside an overflow-clipping, positioned ancestor. Hence the difference. */
82
+ .ehx-plugin-root > .ehx-plugin-portal-root {
83
+ position: fixed;
84
+ top: 0;
85
+ left: 0;
86
+ width: 0;
87
+ height: 0;
88
+ z-index: 1300;
89
+ }