@almadar/ui 4.54.9 → 4.54.11

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.
@@ -60840,7 +60840,26 @@ var OrbPreviewNodeInner = (props) => {
60840
60840
  ref: setContentRef,
60841
60841
  className: `orb-preview-live nodrag${dragActive || l2IsOver ? " drag-active" : ""}`,
60842
60842
  onClick: handleContentClick,
60843
- children: orbitalSchema ? /* @__PURE__ */ jsxRuntime.jsx(Box, { style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsxRuntime.jsx(
60843
+ children: orbitalSchema ? isExpanded ? (
60844
+ // L2 transition card: OrbPreview's `<Box style={{height}}>` is the
60845
+ // only positioned ancestor with a resolved height inside the
60846
+ // runtime tree. When the synthesized transition's render-ui
60847
+ // targets `modal`/`drawer`/`overlay`, UISlotRenderer paints them
60848
+ // via `renderContainedPortal` as `absolute inset-0` — which
60849
+ // collapses to 0 when the parent chain is `height: auto` →
60850
+ // `min-h-full` (no resolved height to inherit). Forcing a real
60851
+ // pixel height here gives the contained modal a real card to
60852
+ // fill, so the L2 preview shows the modal panel sized to the
60853
+ // card instead of a tiny floating rectangle.
60854
+ /* @__PURE__ */ jsxRuntime.jsx(
60855
+ BrowserPlayground,
60856
+ {
60857
+ schema: orbitalSchema,
60858
+ mode: "mock",
60859
+ height: `${preset.minHeight}px`
60860
+ }
60861
+ )
60862
+ ) : /* @__PURE__ */ jsxRuntime.jsx(Box, { style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsxRuntime.jsx(
60844
60863
  BrowserPlayground,
60845
60864
  {
60846
60865
  schema: orbitalSchema,
@@ -62099,30 +62118,39 @@ var TraitCardNodeInner = (props) => {
62099
62118
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", weight: "semibold", children: traitName }),
62100
62119
  linkedEntity ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "secondary", children: linkedEntity }) : null
62101
62120
  ] }),
62102
- traitLevelData ? /* @__PURE__ */ jsxRuntime.jsx(
62103
- "svg",
62104
- {
62105
- viewBox: `0 0 ${SCENE_WIDTH} ${SCENE_HEIGHT}`,
62106
- style: { width: "100%", height: "auto", display: "block" },
62107
- children: /* @__PURE__ */ jsxRuntime.jsx(
62108
- AvlTraitScene,
62109
- {
62110
- data: traitLevelData,
62111
- onTransitionClick: (idx) => {
62112
- const t = transitions[idx];
62113
- if (!t) return;
62114
- selectTransition({
62115
- orbitalName,
62116
- traitName,
62117
- transitionEvent: t.event,
62118
- fromState: t.fromState,
62119
- toState: t.toState,
62120
- index: idx
62121
- });
62121
+ traitLevelData ? (
62122
+ // `nodrag` + `nowheel` tell xyflow to skip its drag/wheel
62123
+ // handlers on this element, so transition-arc clicks inside
62124
+ // the SVG actually reach React's onClick handlers instead of
62125
+ // being swallowed by the node-drag behavior. `nopan` keeps the
62126
+ // ReactFlow canvas from panning when the user scrolls or
62127
+ // pans within the trait card.
62128
+ /* @__PURE__ */ jsxRuntime.jsx(
62129
+ "svg",
62130
+ {
62131
+ viewBox: `0 0 ${SCENE_WIDTH} ${SCENE_HEIGHT}`,
62132
+ className: "nodrag nopan nowheel",
62133
+ style: { width: "100%", height: "auto", display: "block" },
62134
+ children: /* @__PURE__ */ jsxRuntime.jsx(
62135
+ AvlTraitScene,
62136
+ {
62137
+ data: traitLevelData,
62138
+ onTransitionClick: (idx) => {
62139
+ const t = transitions[idx];
62140
+ if (!t) return;
62141
+ selectTransition({
62142
+ orbitalName,
62143
+ traitName,
62144
+ transitionEvent: t.event,
62145
+ fromState: t.fromState,
62146
+ toState: t.toState,
62147
+ index: idx
62148
+ });
62149
+ }
62122
62150
  }
62123
- }
62124
- )
62125
- }
62151
+ )
62152
+ }
62153
+ )
62126
62154
  ) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", color: "muted", children: "No state machine" })
62127
62155
  ] })
62128
62156
  ]
package/dist/avl/index.js CHANGED
@@ -60794,7 +60794,26 @@ var OrbPreviewNodeInner = (props) => {
60794
60794
  ref: setContentRef,
60795
60795
  className: `orb-preview-live nodrag${dragActive || l2IsOver ? " drag-active" : ""}`,
60796
60796
  onClick: handleContentClick,
60797
- children: orbitalSchema ? /* @__PURE__ */ jsx(Box, { style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsx(
60797
+ children: orbitalSchema ? isExpanded ? (
60798
+ // L2 transition card: OrbPreview's `<Box style={{height}}>` is the
60799
+ // only positioned ancestor with a resolved height inside the
60800
+ // runtime tree. When the synthesized transition's render-ui
60801
+ // targets `modal`/`drawer`/`overlay`, UISlotRenderer paints them
60802
+ // via `renderContainedPortal` as `absolute inset-0` — which
60803
+ // collapses to 0 when the parent chain is `height: auto` →
60804
+ // `min-h-full` (no resolved height to inherit). Forcing a real
60805
+ // pixel height here gives the contained modal a real card to
60806
+ // fill, so the L2 preview shows the modal panel sized to the
60807
+ // card instead of a tiny floating rectangle.
60808
+ /* @__PURE__ */ jsx(
60809
+ BrowserPlayground,
60810
+ {
60811
+ schema: orbitalSchema,
60812
+ mode: "mock",
60813
+ height: `${preset.minHeight}px`
60814
+ }
60815
+ )
60816
+ ) : /* @__PURE__ */ jsx(Box, { style: { minHeight: preset.minHeight }, children: /* @__PURE__ */ jsx(
60798
60817
  BrowserPlayground,
60799
60818
  {
60800
60819
  schema: orbitalSchema,
@@ -62053,30 +62072,39 @@ var TraitCardNodeInner = (props) => {
62053
62072
  /* @__PURE__ */ jsx(Typography, { variant: "h6", weight: "semibold", children: traitName }),
62054
62073
  linkedEntity ? /* @__PURE__ */ jsx(Badge, { variant: "secondary", children: linkedEntity }) : null
62055
62074
  ] }),
62056
- traitLevelData ? /* @__PURE__ */ jsx(
62057
- "svg",
62058
- {
62059
- viewBox: `0 0 ${SCENE_WIDTH} ${SCENE_HEIGHT}`,
62060
- style: { width: "100%", height: "auto", display: "block" },
62061
- children: /* @__PURE__ */ jsx(
62062
- AvlTraitScene,
62063
- {
62064
- data: traitLevelData,
62065
- onTransitionClick: (idx) => {
62066
- const t = transitions[idx];
62067
- if (!t) return;
62068
- selectTransition({
62069
- orbitalName,
62070
- traitName,
62071
- transitionEvent: t.event,
62072
- fromState: t.fromState,
62073
- toState: t.toState,
62074
- index: idx
62075
- });
62075
+ traitLevelData ? (
62076
+ // `nodrag` + `nowheel` tell xyflow to skip its drag/wheel
62077
+ // handlers on this element, so transition-arc clicks inside
62078
+ // the SVG actually reach React's onClick handlers instead of
62079
+ // being swallowed by the node-drag behavior. `nopan` keeps the
62080
+ // ReactFlow canvas from panning when the user scrolls or
62081
+ // pans within the trait card.
62082
+ /* @__PURE__ */ jsx(
62083
+ "svg",
62084
+ {
62085
+ viewBox: `0 0 ${SCENE_WIDTH} ${SCENE_HEIGHT}`,
62086
+ className: "nodrag nopan nowheel",
62087
+ style: { width: "100%", height: "auto", display: "block" },
62088
+ children: /* @__PURE__ */ jsx(
62089
+ AvlTraitScene,
62090
+ {
62091
+ data: traitLevelData,
62092
+ onTransitionClick: (idx) => {
62093
+ const t = transitions[idx];
62094
+ if (!t) return;
62095
+ selectTransition({
62096
+ orbitalName,
62097
+ traitName,
62098
+ transitionEvent: t.event,
62099
+ fromState: t.fromState,
62100
+ toState: t.toState,
62101
+ index: idx
62102
+ });
62103
+ }
62076
62104
  }
62077
- }
62078
- )
62079
- }
62105
+ )
62106
+ }
62107
+ )
62080
62108
  ) : /* @__PURE__ */ jsx(Typography, { variant: "small", color: "muted", children: "No state machine" })
62081
62109
  ] })
62082
62110
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "4.54.9",
3
+ "version": "4.54.11",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "sideEffects": [