@almadar/ui 4.6.10 → 4.6.12

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.
@@ -51499,16 +51499,18 @@ function normalizeEventKey(eventKey) {
51499
51499
  function useTraitStateMachine(traitBindings, slotsActions, options) {
51500
51500
  const eventBus = useEventBus();
51501
51501
  const { entities } = useEntitySchema();
51502
+ const traitConfigsByName = options?.traitConfigsByName;
51502
51503
  const manager = React127.useMemo(() => {
51503
51504
  const traitDefs = traitBindings.map(toTraitDefinition);
51504
51505
  const m = new runtime.StateMachineManager(traitDefs);
51505
51506
  for (const binding of traitBindings) {
51506
- if (binding.config !== void 0) {
51507
- m.setTraitConfig(binding.trait.name, binding.config);
51507
+ const cfg = binding.config ?? traitConfigsByName?.[binding.trait.name];
51508
+ if (cfg !== void 0) {
51509
+ m.setTraitConfig(binding.trait.name, cfg);
51508
51510
  }
51509
51511
  }
51510
51512
  return m;
51511
- }, [traitBindings]);
51513
+ }, [traitBindings, traitConfigsByName]);
51512
51514
  const [traitStates, setTraitStates] = React127.useState(() => {
51513
51515
  return manager.getAllStates();
51514
51516
  });
@@ -51710,6 +51712,14 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
51710
51712
  const actions = slotsActionsRef.current;
51711
51713
  console.log("[TraitStateMachine] Processing event:", normalizedEvent, "payload:", payload);
51712
51714
  const bindingMap = new Map(bindings.map((b) => [b.trait.name, b]));
51715
+ for (const traitName of bindingMap.keys()) {
51716
+ const traitState = currentManager.getState(traitName);
51717
+ eventBus.emit(`${traitName}:DISPATCH`, {
51718
+ event: normalizedEvent,
51719
+ payload,
51720
+ currentState: traitState?.currentState
51721
+ });
51722
+ }
51713
51723
  const results = currentManager.sendEvent(normalizedEvent, payload);
51714
51724
  const emittedByTrait = /* @__PURE__ */ new Map();
51715
51725
  for (const { traitName, result } of results) {
@@ -51892,6 +51902,15 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
51892
51902
  }
51893
51903
  }
51894
51904
  }
51905
+ for (const { traitName, result } of results) {
51906
+ const suffix = result.executed ? "SUCCESS" : "ERROR";
51907
+ eventBus.emit(`${traitName}:${normalizedEvent}:${suffix}`, {
51908
+ event: normalizedEvent,
51909
+ payload,
51910
+ newState: result.newState,
51911
+ currentState: result.previousState
51912
+ });
51913
+ }
51895
51914
  for (const { traitName, result } of results) {
51896
51915
  if (result.executed) {
51897
51916
  updateTraitState(traitName, result.newState);
@@ -52338,7 +52357,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
52338
52357
  }
52339
52358
  }
52340
52359
  }
52341
- function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
52360
+ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
52342
52361
  const slotsActions = useSlotsActions();
52343
52362
  const bridge = useServerBridge();
52344
52363
  const uiSlots = useUISlots();
@@ -52350,7 +52369,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
52350
52369
  applyServerEffects(effects, uiSlots, onNavigate);
52351
52370
  }
52352
52371
  }, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
52353
- const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
52372
+ const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
52354
52373
  const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
52355
52374
  const initSentRef = React127.useRef(false);
52356
52375
  React127.useEffect(() => {
@@ -52421,6 +52440,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
52421
52440
  if (!orbitals) return [];
52422
52441
  return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
52423
52442
  }, [schema]);
52443
+ const traitConfigsByName = React127.useMemo(() => {
52444
+ const map = {};
52445
+ const parsed = schema;
52446
+ const orbitals = parsed?.orbitals;
52447
+ if (!orbitals) return map;
52448
+ for (const orb of orbitals) {
52449
+ const traits3 = orb.traits;
52450
+ if (!traits3) continue;
52451
+ for (const t of traits3) {
52452
+ const name = t.name ?? t.ref;
52453
+ const config = t.config;
52454
+ if (typeof name === "string" && config !== void 0) {
52455
+ map[name] = config;
52456
+ }
52457
+ }
52458
+ }
52459
+ return map;
52460
+ }, [schema]);
52424
52461
  const inner = /* @__PURE__ */ jsxRuntime.jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(SlotsProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(
52425
52462
  EntitySchemaProvider,
52426
52463
  {
@@ -52444,6 +52481,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
52444
52481
  {
52445
52482
  traits: allPageTraits,
52446
52483
  orbitalNames: serverUrl ? orbitalNames : void 0,
52484
+ traitConfigsByName,
52447
52485
  onNavigate,
52448
52486
  onLocalFallback,
52449
52487
  persistence
package/dist/avl/index.js CHANGED
@@ -51453,16 +51453,18 @@ function normalizeEventKey(eventKey) {
51453
51453
  function useTraitStateMachine(traitBindings, slotsActions, options) {
51454
51454
  const eventBus = useEventBus();
51455
51455
  const { entities } = useEntitySchema();
51456
+ const traitConfigsByName = options?.traitConfigsByName;
51456
51457
  const manager = useMemo(() => {
51457
51458
  const traitDefs = traitBindings.map(toTraitDefinition);
51458
51459
  const m = new StateMachineManager(traitDefs);
51459
51460
  for (const binding of traitBindings) {
51460
- if (binding.config !== void 0) {
51461
- m.setTraitConfig(binding.trait.name, binding.config);
51461
+ const cfg = binding.config ?? traitConfigsByName?.[binding.trait.name];
51462
+ if (cfg !== void 0) {
51463
+ m.setTraitConfig(binding.trait.name, cfg);
51462
51464
  }
51463
51465
  }
51464
51466
  return m;
51465
- }, [traitBindings]);
51467
+ }, [traitBindings, traitConfigsByName]);
51466
51468
  const [traitStates, setTraitStates] = useState(() => {
51467
51469
  return manager.getAllStates();
51468
51470
  });
@@ -51664,6 +51666,14 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
51664
51666
  const actions = slotsActionsRef.current;
51665
51667
  console.log("[TraitStateMachine] Processing event:", normalizedEvent, "payload:", payload);
51666
51668
  const bindingMap = new Map(bindings.map((b) => [b.trait.name, b]));
51669
+ for (const traitName of bindingMap.keys()) {
51670
+ const traitState = currentManager.getState(traitName);
51671
+ eventBus.emit(`${traitName}:DISPATCH`, {
51672
+ event: normalizedEvent,
51673
+ payload,
51674
+ currentState: traitState?.currentState
51675
+ });
51676
+ }
51667
51677
  const results = currentManager.sendEvent(normalizedEvent, payload);
51668
51678
  const emittedByTrait = /* @__PURE__ */ new Map();
51669
51679
  for (const { traitName, result } of results) {
@@ -51846,6 +51856,15 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
51846
51856
  }
51847
51857
  }
51848
51858
  }
51859
+ for (const { traitName, result } of results) {
51860
+ const suffix = result.executed ? "SUCCESS" : "ERROR";
51861
+ eventBus.emit(`${traitName}:${normalizedEvent}:${suffix}`, {
51862
+ event: normalizedEvent,
51863
+ payload,
51864
+ newState: result.newState,
51865
+ currentState: result.previousState
51866
+ });
51867
+ }
51849
51868
  for (const { traitName, result } of results) {
51850
51869
  if (result.executed) {
51851
51870
  updateTraitState(traitName, result.newState);
@@ -52292,7 +52311,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
52292
52311
  }
52293
52312
  }
52294
52313
  }
52295
- function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
52314
+ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
52296
52315
  const slotsActions = useSlotsActions();
52297
52316
  const bridge = useServerBridge();
52298
52317
  const uiSlots = useUISlots();
@@ -52304,7 +52323,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
52304
52323
  applyServerEffects(effects, uiSlots, onNavigate);
52305
52324
  }
52306
52325
  }, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
52307
- const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
52326
+ const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
52308
52327
  const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
52309
52328
  const initSentRef = useRef(false);
52310
52329
  useEffect(() => {
@@ -52375,6 +52394,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
52375
52394
  if (!orbitals) return [];
52376
52395
  return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
52377
52396
  }, [schema]);
52397
+ const traitConfigsByName = useMemo(() => {
52398
+ const map = {};
52399
+ const parsed = schema;
52400
+ const orbitals = parsed?.orbitals;
52401
+ if (!orbitals) return map;
52402
+ for (const orb of orbitals) {
52403
+ const traits3 = orb.traits;
52404
+ if (!traits3) continue;
52405
+ for (const t of traits3) {
52406
+ const name = t.name ?? t.ref;
52407
+ const config = t.config;
52408
+ if (typeof name === "string" && config !== void 0) {
52409
+ map[name] = config;
52410
+ }
52411
+ }
52412
+ }
52413
+ return map;
52414
+ }, [schema]);
52378
52415
  const inner = /* @__PURE__ */ jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsx(SlotsProvider, { children: /* @__PURE__ */ jsxs(
52379
52416
  EntitySchemaProvider,
52380
52417
  {
@@ -52398,6 +52435,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
52398
52435
  {
52399
52436
  traits: allPageTraits,
52400
52437
  orbitalNames: serverUrl ? orbitalNames : void 0,
52438
+ traitConfigsByName,
52401
52439
  onNavigate,
52402
52440
  onLocalFallback,
52403
52441
  persistence
@@ -38178,16 +38178,18 @@ function normalizeEventKey(eventKey) {
38178
38178
  function useTraitStateMachine(traitBindings, slotsActions, options) {
38179
38179
  const eventBus = useEventBus();
38180
38180
  const { entities } = useEntitySchema();
38181
+ const traitConfigsByName = options?.traitConfigsByName;
38181
38182
  const manager = React115.useMemo(() => {
38182
38183
  const traitDefs = traitBindings.map(toTraitDefinition);
38183
38184
  const m = new runtime.StateMachineManager(traitDefs);
38184
38185
  for (const binding of traitBindings) {
38185
- if (binding.config !== void 0) {
38186
- m.setTraitConfig(binding.trait.name, binding.config);
38186
+ const cfg = binding.config ?? traitConfigsByName?.[binding.trait.name];
38187
+ if (cfg !== void 0) {
38188
+ m.setTraitConfig(binding.trait.name, cfg);
38187
38189
  }
38188
38190
  }
38189
38191
  return m;
38190
- }, [traitBindings]);
38192
+ }, [traitBindings, traitConfigsByName]);
38191
38193
  const [traitStates, setTraitStates] = React115.useState(() => {
38192
38194
  return manager.getAllStates();
38193
38195
  });
@@ -38389,6 +38391,14 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
38389
38391
  const actions = slotsActionsRef.current;
38390
38392
  console.log("[TraitStateMachine] Processing event:", normalizedEvent, "payload:", payload);
38391
38393
  const bindingMap = new Map(bindings.map((b) => [b.trait.name, b]));
38394
+ for (const traitName of bindingMap.keys()) {
38395
+ const traitState = currentManager.getState(traitName);
38396
+ eventBus.emit(`${traitName}:DISPATCH`, {
38397
+ event: normalizedEvent,
38398
+ payload,
38399
+ currentState: traitState?.currentState
38400
+ });
38401
+ }
38392
38402
  const results = currentManager.sendEvent(normalizedEvent, payload);
38393
38403
  const emittedByTrait = /* @__PURE__ */ new Map();
38394
38404
  for (const { traitName, result } of results) {
@@ -38571,6 +38581,15 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
38571
38581
  }
38572
38582
  }
38573
38583
  }
38584
+ for (const { traitName, result } of results) {
38585
+ const suffix = result.executed ? "SUCCESS" : "ERROR";
38586
+ eventBus.emit(`${traitName}:${normalizedEvent}:${suffix}`, {
38587
+ event: normalizedEvent,
38588
+ payload,
38589
+ newState: result.newState,
38590
+ currentState: result.previousState
38591
+ });
38592
+ }
38574
38593
  for (const { traitName, result } of results) {
38575
38594
  if (result.executed) {
38576
38595
  updateTraitState(traitName, result.newState);
@@ -39138,7 +39157,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
39138
39157
  }
39139
39158
  }
39140
39159
  }
39141
- function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
39160
+ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
39142
39161
  const slotsActions = useSlotsActions();
39143
39162
  const bridge = useServerBridge();
39144
39163
  const uiSlots = context.useUISlots();
@@ -39150,7 +39169,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
39150
39169
  applyServerEffects(effects, uiSlots, onNavigate);
39151
39170
  }
39152
39171
  }, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
39153
- const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
39172
+ const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
39154
39173
  const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
39155
39174
  const initSentRef = React115.useRef(false);
39156
39175
  React115.useEffect(() => {
@@ -39221,6 +39240,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
39221
39240
  if (!orbitals) return [];
39222
39241
  return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
39223
39242
  }, [schema]);
39243
+ const traitConfigsByName = React115.useMemo(() => {
39244
+ const map = {};
39245
+ const parsed = schema;
39246
+ const orbitals = parsed?.orbitals;
39247
+ if (!orbitals) return map;
39248
+ for (const orb of orbitals) {
39249
+ const traits3 = orb.traits;
39250
+ if (!traits3) continue;
39251
+ for (const t of traits3) {
39252
+ const name = t.name ?? t.ref;
39253
+ const config = t.config;
39254
+ if (typeof name === "string" && config !== void 0) {
39255
+ map[name] = config;
39256
+ }
39257
+ }
39258
+ }
39259
+ return map;
39260
+ }, [schema]);
39224
39261
  const inner = /* @__PURE__ */ jsxRuntime.jsx(providers.VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(SlotsProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(
39225
39262
  EntitySchemaProvider,
39226
39263
  {
@@ -39244,6 +39281,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
39244
39281
  {
39245
39282
  traits: allPageTraits,
39246
39283
  orbitalNames: serverUrl ? orbitalNames : void 0,
39284
+ traitConfigsByName,
39247
39285
  onNavigate,
39248
39286
  onLocalFallback,
39249
39287
  persistence
@@ -38133,16 +38133,18 @@ function normalizeEventKey(eventKey) {
38133
38133
  function useTraitStateMachine(traitBindings, slotsActions, options) {
38134
38134
  const eventBus = useEventBus();
38135
38135
  const { entities } = useEntitySchema();
38136
+ const traitConfigsByName = options?.traitConfigsByName;
38136
38137
  const manager = useMemo(() => {
38137
38138
  const traitDefs = traitBindings.map(toTraitDefinition);
38138
38139
  const m = new StateMachineManager(traitDefs);
38139
38140
  for (const binding of traitBindings) {
38140
- if (binding.config !== void 0) {
38141
- m.setTraitConfig(binding.trait.name, binding.config);
38141
+ const cfg = binding.config ?? traitConfigsByName?.[binding.trait.name];
38142
+ if (cfg !== void 0) {
38143
+ m.setTraitConfig(binding.trait.name, cfg);
38142
38144
  }
38143
38145
  }
38144
38146
  return m;
38145
- }, [traitBindings]);
38147
+ }, [traitBindings, traitConfigsByName]);
38146
38148
  const [traitStates, setTraitStates] = useState(() => {
38147
38149
  return manager.getAllStates();
38148
38150
  });
@@ -38344,6 +38346,14 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
38344
38346
  const actions = slotsActionsRef.current;
38345
38347
  console.log("[TraitStateMachine] Processing event:", normalizedEvent, "payload:", payload);
38346
38348
  const bindingMap = new Map(bindings.map((b) => [b.trait.name, b]));
38349
+ for (const traitName of bindingMap.keys()) {
38350
+ const traitState = currentManager.getState(traitName);
38351
+ eventBus.emit(`${traitName}:DISPATCH`, {
38352
+ event: normalizedEvent,
38353
+ payload,
38354
+ currentState: traitState?.currentState
38355
+ });
38356
+ }
38347
38357
  const results = currentManager.sendEvent(normalizedEvent, payload);
38348
38358
  const emittedByTrait = /* @__PURE__ */ new Map();
38349
38359
  for (const { traitName, result } of results) {
@@ -38526,6 +38536,15 @@ function useTraitStateMachine(traitBindings, slotsActions, options) {
38526
38536
  }
38527
38537
  }
38528
38538
  }
38539
+ for (const { traitName, result } of results) {
38540
+ const suffix = result.executed ? "SUCCESS" : "ERROR";
38541
+ eventBus.emit(`${traitName}:${normalizedEvent}:${suffix}`, {
38542
+ event: normalizedEvent,
38543
+ payload,
38544
+ newState: result.newState,
38545
+ currentState: result.previousState
38546
+ });
38547
+ }
38529
38548
  for (const { traitName, result } of results) {
38530
38549
  if (result.executed) {
38531
38550
  updateTraitState(traitName, result.newState);
@@ -39093,7 +39112,7 @@ function applyServerEffects(effects, uiSlots, onNavigate) {
39093
39112
  }
39094
39113
  }
39095
39114
  }
39096
- function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence }) {
39115
+ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName }) {
39097
39116
  const slotsActions = useSlotsActions();
39098
39117
  const bridge = useServerBridge();
39099
39118
  const uiSlots = useUISlots();
@@ -39105,7 +39124,7 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
39105
39124
  applyServerEffects(effects, uiSlots, onNavigate);
39106
39125
  }
39107
39126
  }, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate]);
39108
- const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate } : { navigate: onNavigate, persistence };
39127
+ const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName } : { navigate: onNavigate, persistence, traitConfigsByName };
39109
39128
  const { sendEvent } = useTraitStateMachine(traits2, slotsActions, opts);
39110
39129
  const initSentRef = useRef(false);
39111
39130
  useEffect(() => {
@@ -39176,6 +39195,24 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
39176
39195
  if (!orbitals) return [];
39177
39196
  return orbitals.filter((o) => typeof o.name === "string").map((o) => o.name);
39178
39197
  }, [schema]);
39198
+ const traitConfigsByName = useMemo(() => {
39199
+ const map = {};
39200
+ const parsed = schema;
39201
+ const orbitals = parsed?.orbitals;
39202
+ if (!orbitals) return map;
39203
+ for (const orb of orbitals) {
39204
+ const traits3 = orb.traits;
39205
+ if (!traits3) continue;
39206
+ for (const t of traits3) {
39207
+ const name = t.name ?? t.ref;
39208
+ const config = t.config;
39209
+ if (typeof name === "string" && config !== void 0) {
39210
+ map[name] = config;
39211
+ }
39212
+ }
39213
+ }
39214
+ return map;
39215
+ }, [schema]);
39179
39216
  const inner = /* @__PURE__ */ jsx(VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsx(SlotsProvider, { children: /* @__PURE__ */ jsxs(
39180
39217
  EntitySchemaProvider,
39181
39218
  {
@@ -39199,6 +39236,7 @@ function SchemaRunner({ schema, serverUrl, mockData, pageName, onNavigate, onLoc
39199
39236
  {
39200
39237
  traits: allPageTraits,
39201
39238
  orbitalNames: serverUrl ? orbitalNames : void 0,
39239
+ traitConfigsByName,
39202
39240
  onNavigate,
39203
39241
  onLocalFallback,
39204
39242
  persistence
@@ -49,6 +49,14 @@ export interface UseTraitStateMachineOptions {
49
49
  persistence?: import('@almadar/runtime').PersistenceAdapter;
50
50
  /** Optional consumer `call-service` hook forwarded to the mock server handlers. */
51
51
  callService?: (service: string, action: string, params: unknown) => Promise<unknown>;
52
+ /**
53
+ * Trait configs keyed by trait name. Threaded into setTraitConfig so
54
+ * `@config.X` resolves inside guard expressions on the client. Page-level
55
+ * `ResolvedTraitBinding`s often arrive without a config (the orbital-level
56
+ * config doesn't propagate through `@almadar/core`'s page resolver), so the
57
+ * caller assembles this map from the orbital schema directly.
58
+ */
59
+ traitConfigsByName?: Record<string, import('@almadar/core').TraitConfig>;
52
60
  }
53
61
  /**
54
62
  * useTraitStateMachine - Manages state machines for multiple traits
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "4.6.10",
3
+ "version": "4.6.12",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "main": "./dist/components/index.js",