@almadar/ui 4.50.6 → 4.50.8

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.
@@ -25041,14 +25041,15 @@ function useDataDnd(args) {
25041
25041
  if (sourceZone.group !== targetZone.group) {
25042
25042
  if (targetZone.dropEvent) {
25043
25043
  const newIndex2 = targetZone.itemIds.indexOf(over.id);
25044
+ const evt = `UI:${targetZone.dropEvent}`;
25044
25045
  dndLog.info("dragEnd:cross-container:emit", {
25045
- event: targetZone.dropEvent,
25046
+ event: evt,
25046
25047
  id: String(active.id),
25047
25048
  sourceGroup: sourceZone.group,
25048
25049
  targetGroup: targetZone.group,
25049
25050
  newIndex: newIndex2 === -1 ? targetZone.itemIds.length : newIndex2
25050
25051
  });
25051
- eventBus.emit(targetZone.dropEvent, {
25052
+ eventBus.emit(evt, {
25052
25053
  id: String(active.id),
25053
25054
  sourceGroup: sourceZone.group,
25054
25055
  targetGroup: targetZone.group,
@@ -25067,13 +25068,14 @@ function useDataDnd(args) {
25067
25068
  setLocalOrder(reordered);
25068
25069
  }
25069
25070
  if (sourceZone.reorderEvent) {
25071
+ const evt = `UI:${sourceZone.reorderEvent}`;
25070
25072
  dndLog.info("dragEnd:reorder:emit", {
25071
- event: sourceZone.reorderEvent,
25073
+ event: evt,
25072
25074
  id: String(active.id),
25073
25075
  oldIndex,
25074
25076
  newIndex
25075
25077
  });
25076
- eventBus.emit(sourceZone.reorderEvent, {
25078
+ eventBus.emit(evt, {
25077
25079
  id: String(active.id),
25078
25080
  oldIndex,
25079
25081
  newIndex
@@ -59169,7 +59171,12 @@ var OrbPreviewNodeInner = (props) => {
59169
59171
  const elRect = patternEl.getBoundingClientRect();
59170
59172
  select({
59171
59173
  patternType: patternEl.getAttribute("data-pattern") ?? "unknown",
59172
- patternId: patternEl.getAttribute("data-id") ?? void 0,
59174
+ // `data-pattern-path` is the SExpr tree path (`children.0.…`) emitted by
59175
+ // UISlotRenderer; `data-id` is the runtime content id. `OrbInspector`
59176
+ // resolves pattern config by walking the render-ui SExpr tree, so the
59177
+ // path is the correct key — reading `data-id` silently broke prop
59178
+ // resolution and rendered every value as '—'.
59179
+ patternId: patternEl.getAttribute("data-pattern-path") ?? void 0,
59173
59180
  sourceTrait: patternEl.getAttribute("data-source-trait") ?? void 0,
59174
59181
  nodeData: data,
59175
59182
  rect: nodeRect ? {
@@ -59733,6 +59740,7 @@ init_AvlFieldType();
59733
59740
  init_types();
59734
59741
  init_useEventBus();
59735
59742
  init_useTranslate();
59743
+ var inspectorLog = logger.createLogger("almadar:ui:inspector");
59736
59744
  function formatExpression(expr) {
59737
59745
  if (!expr) return "";
59738
59746
  if (typeof expr === "string") return expr;
@@ -59850,8 +59858,17 @@ function OrbInspector({ node, schema, editable = false, onSchemaChange, onClose
59850
59858
  if (found) return found;
59851
59859
  }
59852
59860
  }
59861
+ if (selectedPattern.patternId) {
59862
+ inspectorLog.warn("pattern-config-unresolved", () => ({
59863
+ patternId: selectedPattern.patternId,
59864
+ patternType: selectedPattern.patternType,
59865
+ orbitalName,
59866
+ traitName,
59867
+ transitionEvent
59868
+ }));
59869
+ }
59853
59870
  return null;
59854
- }, [selectedPattern, transition]);
59871
+ }, [selectedPattern, transition, orbitalName, traitName, transitionEvent]);
59855
59872
  const orbCode = React93.useMemo(() => {
59856
59873
  const orbital = (schema.orbitals ?? []).find((o) => o.name === orbitalName);
59857
59874
  if (!orbital) return "{}";
@@ -913,6 +913,15 @@ interface PreviewNodeData extends Record<string, unknown> {
913
913
  * trace inline.
914
914
  */
915
915
  status?: 'idle' | 'running' | 'success' | 'error';
916
+ /**
917
+ * The `OrbitalSchema.name` this node was derived from. The reserved value
918
+ * `'__design_system__'` identifies nodes belonging to the Design System
919
+ * tab's synthesized catalog schema, so downstream event handlers can route
920
+ * mutation events to the project theme manifest instead of the project's
921
+ * orbital schema. Unset for project orbitals — handlers treat absence as
922
+ * "project schema".
923
+ */
924
+ sourceSchemaName?: string;
916
925
  }
917
926
  /** Data for event flow edges. */
918
927
  interface EventEdgeData extends Record<string, unknown> {
package/dist/avl/index.js CHANGED
@@ -24995,14 +24995,15 @@ function useDataDnd(args) {
24995
24995
  if (sourceZone.group !== targetZone.group) {
24996
24996
  if (targetZone.dropEvent) {
24997
24997
  const newIndex2 = targetZone.itemIds.indexOf(over.id);
24998
+ const evt = `UI:${targetZone.dropEvent}`;
24998
24999
  dndLog.info("dragEnd:cross-container:emit", {
24999
- event: targetZone.dropEvent,
25000
+ event: evt,
25000
25001
  id: String(active.id),
25001
25002
  sourceGroup: sourceZone.group,
25002
25003
  targetGroup: targetZone.group,
25003
25004
  newIndex: newIndex2 === -1 ? targetZone.itemIds.length : newIndex2
25004
25005
  });
25005
- eventBus.emit(targetZone.dropEvent, {
25006
+ eventBus.emit(evt, {
25006
25007
  id: String(active.id),
25007
25008
  sourceGroup: sourceZone.group,
25008
25009
  targetGroup: targetZone.group,
@@ -25021,13 +25022,14 @@ function useDataDnd(args) {
25021
25022
  setLocalOrder(reordered);
25022
25023
  }
25023
25024
  if (sourceZone.reorderEvent) {
25025
+ const evt = `UI:${sourceZone.reorderEvent}`;
25024
25026
  dndLog.info("dragEnd:reorder:emit", {
25025
- event: sourceZone.reorderEvent,
25027
+ event: evt,
25026
25028
  id: String(active.id),
25027
25029
  oldIndex,
25028
25030
  newIndex
25029
25031
  });
25030
- eventBus.emit(sourceZone.reorderEvent, {
25032
+ eventBus.emit(evt, {
25031
25033
  id: String(active.id),
25032
25034
  oldIndex,
25033
25035
  newIndex
@@ -59123,7 +59125,12 @@ var OrbPreviewNodeInner = (props) => {
59123
59125
  const elRect = patternEl.getBoundingClientRect();
59124
59126
  select({
59125
59127
  patternType: patternEl.getAttribute("data-pattern") ?? "unknown",
59126
- patternId: patternEl.getAttribute("data-id") ?? void 0,
59128
+ // `data-pattern-path` is the SExpr tree path (`children.0.…`) emitted by
59129
+ // UISlotRenderer; `data-id` is the runtime content id. `OrbInspector`
59130
+ // resolves pattern config by walking the render-ui SExpr tree, so the
59131
+ // path is the correct key — reading `data-id` silently broke prop
59132
+ // resolution and rendered every value as '—'.
59133
+ patternId: patternEl.getAttribute("data-pattern-path") ?? void 0,
59127
59134
  sourceTrait: patternEl.getAttribute("data-source-trait") ?? void 0,
59128
59135
  nodeData: data,
59129
59136
  rect: nodeRect ? {
@@ -59687,6 +59694,7 @@ init_AvlFieldType();
59687
59694
  init_types();
59688
59695
  init_useEventBus();
59689
59696
  init_useTranslate();
59697
+ var inspectorLog = createLogger("almadar:ui:inspector");
59690
59698
  function formatExpression(expr) {
59691
59699
  if (!expr) return "";
59692
59700
  if (typeof expr === "string") return expr;
@@ -59804,8 +59812,17 @@ function OrbInspector({ node, schema, editable = false, onSchemaChange, onClose
59804
59812
  if (found) return found;
59805
59813
  }
59806
59814
  }
59815
+ if (selectedPattern.patternId) {
59816
+ inspectorLog.warn("pattern-config-unresolved", () => ({
59817
+ patternId: selectedPattern.patternId,
59818
+ patternType: selectedPattern.patternType,
59819
+ orbitalName,
59820
+ traitName,
59821
+ transitionEvent
59822
+ }));
59823
+ }
59807
59824
  return null;
59808
- }, [selectedPattern, transition]);
59825
+ }, [selectedPattern, transition, orbitalName, traitName, transitionEvent]);
59809
59826
  const orbCode = useMemo(() => {
59810
59827
  const orbital = (schema.orbitals ?? []).find((o) => o.name === orbitalName);
59811
59828
  if (!orbital) return "{}";
@@ -20208,14 +20208,15 @@ function useDataDnd(args) {
20208
20208
  if (sourceZone.group !== targetZone.group) {
20209
20209
  if (targetZone.dropEvent) {
20210
20210
  const newIndex2 = targetZone.itemIds.indexOf(over.id);
20211
+ const evt = `UI:${targetZone.dropEvent}`;
20211
20212
  dndLog.info("dragEnd:cross-container:emit", {
20212
- event: targetZone.dropEvent,
20213
+ event: evt,
20213
20214
  id: String(active.id),
20214
20215
  sourceGroup: sourceZone.group,
20215
20216
  targetGroup: targetZone.group,
20216
20217
  newIndex: newIndex2 === -1 ? targetZone.itemIds.length : newIndex2
20217
20218
  });
20218
- eventBus.emit(targetZone.dropEvent, {
20219
+ eventBus.emit(evt, {
20219
20220
  id: String(active.id),
20220
20221
  sourceGroup: sourceZone.group,
20221
20222
  targetGroup: targetZone.group,
@@ -20234,13 +20235,14 @@ function useDataDnd(args) {
20234
20235
  setLocalOrder(reordered);
20235
20236
  }
20236
20237
  if (sourceZone.reorderEvent) {
20238
+ const evt = `UI:${sourceZone.reorderEvent}`;
20237
20239
  dndLog.info("dragEnd:reorder:emit", {
20238
- event: sourceZone.reorderEvent,
20240
+ event: evt,
20239
20241
  id: String(active.id),
20240
20242
  oldIndex,
20241
20243
  newIndex
20242
20244
  });
20243
- eventBus.emit(sourceZone.reorderEvent, {
20245
+ eventBus.emit(evt, {
20244
20246
  id: String(active.id),
20245
20247
  oldIndex,
20246
20248
  newIndex
@@ -20162,14 +20162,15 @@ function useDataDnd(args) {
20162
20162
  if (sourceZone.group !== targetZone.group) {
20163
20163
  if (targetZone.dropEvent) {
20164
20164
  const newIndex2 = targetZone.itemIds.indexOf(over.id);
20165
+ const evt = `UI:${targetZone.dropEvent}`;
20165
20166
  dndLog.info("dragEnd:cross-container:emit", {
20166
- event: targetZone.dropEvent,
20167
+ event: evt,
20167
20168
  id: String(active.id),
20168
20169
  sourceGroup: sourceZone.group,
20169
20170
  targetGroup: targetZone.group,
20170
20171
  newIndex: newIndex2 === -1 ? targetZone.itemIds.length : newIndex2
20171
20172
  });
20172
- eventBus.emit(targetZone.dropEvent, {
20173
+ eventBus.emit(evt, {
20173
20174
  id: String(active.id),
20174
20175
  sourceGroup: sourceZone.group,
20175
20176
  targetGroup: targetZone.group,
@@ -20188,13 +20189,14 @@ function useDataDnd(args) {
20188
20189
  setLocalOrder(reordered);
20189
20190
  }
20190
20191
  if (sourceZone.reorderEvent) {
20192
+ const evt = `UI:${sourceZone.reorderEvent}`;
20191
20193
  dndLog.info("dragEnd:reorder:emit", {
20192
- event: sourceZone.reorderEvent,
20194
+ event: evt,
20193
20195
  id: String(active.id),
20194
20196
  oldIndex,
20195
20197
  newIndex
20196
20198
  });
20197
- eventBus.emit(sourceZone.reorderEvent, {
20199
+ eventBus.emit(evt, {
20198
20200
  id: String(active.id),
20199
20201
  oldIndex,
20200
20202
  newIndex
@@ -101,6 +101,15 @@ export interface PreviewNodeData extends Record<string, unknown> {
101
101
  * trace inline.
102
102
  */
103
103
  status?: 'idle' | 'running' | 'success' | 'error';
104
+ /**
105
+ * The `OrbitalSchema.name` this node was derived from. The reserved value
106
+ * `'__design_system__'` identifies nodes belonging to the Design System
107
+ * tab's synthesized catalog schema, so downstream event handlers can route
108
+ * mutation events to the project theme manifest instead of the project's
109
+ * orbital schema. Unset for project orbitals — handlers treat absence as
110
+ * "project schema".
111
+ */
112
+ sourceSchemaName?: string;
104
113
  }
105
114
  /** Data for event flow edges. */
106
115
  export interface EventEdgeData extends Record<string, unknown> {
@@ -21453,14 +21453,15 @@ function useDataDnd(args) {
21453
21453
  if (sourceZone.group !== targetZone.group) {
21454
21454
  if (targetZone.dropEvent) {
21455
21455
  const newIndex2 = targetZone.itemIds.indexOf(over.id);
21456
+ const evt = `UI:${targetZone.dropEvent}`;
21456
21457
  dndLog.info("dragEnd:cross-container:emit", {
21457
- event: targetZone.dropEvent,
21458
+ event: evt,
21458
21459
  id: String(active.id),
21459
21460
  sourceGroup: sourceZone.group,
21460
21461
  targetGroup: targetZone.group,
21461
21462
  newIndex: newIndex2 === -1 ? targetZone.itemIds.length : newIndex2
21462
21463
  });
21463
- eventBus.emit(targetZone.dropEvent, {
21464
+ eventBus.emit(evt, {
21464
21465
  id: String(active.id),
21465
21466
  sourceGroup: sourceZone.group,
21466
21467
  targetGroup: targetZone.group,
@@ -21479,13 +21480,14 @@ function useDataDnd(args) {
21479
21480
  setLocalOrder(reordered);
21480
21481
  }
21481
21482
  if (sourceZone.reorderEvent) {
21483
+ const evt = `UI:${sourceZone.reorderEvent}`;
21482
21484
  dndLog.info("dragEnd:reorder:emit", {
21483
- event: sourceZone.reorderEvent,
21485
+ event: evt,
21484
21486
  id: String(active.id),
21485
21487
  oldIndex,
21486
21488
  newIndex
21487
21489
  });
21488
- eventBus.emit(sourceZone.reorderEvent, {
21490
+ eventBus.emit(evt, {
21489
21491
  id: String(active.id),
21490
21492
  oldIndex,
21491
21493
  newIndex
@@ -21407,14 +21407,15 @@ function useDataDnd(args) {
21407
21407
  if (sourceZone.group !== targetZone.group) {
21408
21408
  if (targetZone.dropEvent) {
21409
21409
  const newIndex2 = targetZone.itemIds.indexOf(over.id);
21410
+ const evt = `UI:${targetZone.dropEvent}`;
21410
21411
  dndLog.info("dragEnd:cross-container:emit", {
21411
- event: targetZone.dropEvent,
21412
+ event: evt,
21412
21413
  id: String(active.id),
21413
21414
  sourceGroup: sourceZone.group,
21414
21415
  targetGroup: targetZone.group,
21415
21416
  newIndex: newIndex2 === -1 ? targetZone.itemIds.length : newIndex2
21416
21417
  });
21417
- eventBus.emit(targetZone.dropEvent, {
21418
+ eventBus.emit(evt, {
21418
21419
  id: String(active.id),
21419
21420
  sourceGroup: sourceZone.group,
21420
21421
  targetGroup: targetZone.group,
@@ -21433,13 +21434,14 @@ function useDataDnd(args) {
21433
21434
  setLocalOrder(reordered);
21434
21435
  }
21435
21436
  if (sourceZone.reorderEvent) {
21437
+ const evt = `UI:${sourceZone.reorderEvent}`;
21436
21438
  dndLog.info("dragEnd:reorder:emit", {
21437
- event: sourceZone.reorderEvent,
21439
+ event: evt,
21438
21440
  id: String(active.id),
21439
21441
  oldIndex,
21440
21442
  newIndex
21441
21443
  });
21442
- eventBus.emit(sourceZone.reorderEvent, {
21444
+ eventBus.emit(evt, {
21443
21445
  id: String(active.id),
21444
21446
  oldIndex,
21445
21447
  newIndex
@@ -21222,14 +21222,15 @@ function useDataDnd(args) {
21222
21222
  if (sourceZone.group !== targetZone.group) {
21223
21223
  if (targetZone.dropEvent) {
21224
21224
  const newIndex2 = targetZone.itemIds.indexOf(over.id);
21225
+ const evt = `UI:${targetZone.dropEvent}`;
21225
21226
  dndLog.info("dragEnd:cross-container:emit", {
21226
- event: targetZone.dropEvent,
21227
+ event: evt,
21227
21228
  id: String(active.id),
21228
21229
  sourceGroup: sourceZone.group,
21229
21230
  targetGroup: targetZone.group,
21230
21231
  newIndex: newIndex2 === -1 ? targetZone.itemIds.length : newIndex2
21231
21232
  });
21232
- eventBus.emit(targetZone.dropEvent, {
21233
+ eventBus.emit(evt, {
21233
21234
  id: String(active.id),
21234
21235
  sourceGroup: sourceZone.group,
21235
21236
  targetGroup: targetZone.group,
@@ -21248,13 +21249,14 @@ function useDataDnd(args) {
21248
21249
  setLocalOrder(reordered);
21249
21250
  }
21250
21251
  if (sourceZone.reorderEvent) {
21252
+ const evt = `UI:${sourceZone.reorderEvent}`;
21251
21253
  dndLog.info("dragEnd:reorder:emit", {
21252
- event: sourceZone.reorderEvent,
21254
+ event: evt,
21253
21255
  id: String(active.id),
21254
21256
  oldIndex,
21255
21257
  newIndex
21256
21258
  });
21257
- eventBus.emit(sourceZone.reorderEvent, {
21259
+ eventBus.emit(evt, {
21258
21260
  id: String(active.id),
21259
21261
  oldIndex,
21260
21262
  newIndex
@@ -21176,14 +21176,15 @@ function useDataDnd(args) {
21176
21176
  if (sourceZone.group !== targetZone.group) {
21177
21177
  if (targetZone.dropEvent) {
21178
21178
  const newIndex2 = targetZone.itemIds.indexOf(over.id);
21179
+ const evt = `UI:${targetZone.dropEvent}`;
21179
21180
  dndLog.info("dragEnd:cross-container:emit", {
21180
- event: targetZone.dropEvent,
21181
+ event: evt,
21181
21182
  id: String(active.id),
21182
21183
  sourceGroup: sourceZone.group,
21183
21184
  targetGroup: targetZone.group,
21184
21185
  newIndex: newIndex2 === -1 ? targetZone.itemIds.length : newIndex2
21185
21186
  });
21186
- eventBus.emit(targetZone.dropEvent, {
21187
+ eventBus.emit(evt, {
21187
21188
  id: String(active.id),
21188
21189
  sourceGroup: sourceZone.group,
21189
21190
  targetGroup: targetZone.group,
@@ -21202,13 +21203,14 @@ function useDataDnd(args) {
21202
21203
  setLocalOrder(reordered);
21203
21204
  }
21204
21205
  if (sourceZone.reorderEvent) {
21206
+ const evt = `UI:${sourceZone.reorderEvent}`;
21205
21207
  dndLog.info("dragEnd:reorder:emit", {
21206
- event: sourceZone.reorderEvent,
21208
+ event: evt,
21207
21209
  id: String(active.id),
21208
21210
  oldIndex,
21209
21211
  newIndex
21210
21212
  });
21211
- eventBus.emit(sourceZone.reorderEvent, {
21213
+ eventBus.emit(evt, {
21212
21214
  id: String(active.id),
21213
21215
  oldIndex,
21214
21216
  newIndex
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "4.50.6",
3
+ "version": "4.50.8",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "sideEffects": [