@almadar/ui 2.46.0 → 2.47.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.
@@ -41,6 +41,7 @@ var langToml = require('react-syntax-highlighter/dist/esm/languages/prism/toml')
41
41
  var langGo = require('react-syntax-highlighter/dist/esm/languages/prism/go');
42
42
  var langGraphql = require('react-syntax-highlighter/dist/esm/languages/prism/graphql');
43
43
 
44
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
44
45
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
45
46
 
46
47
  function _interopNamespace(e) {
@@ -90,6 +91,67 @@ var langGraphql__default = /*#__PURE__*/_interopDefault(langGraphql);
90
91
  var __defProp = Object.defineProperty;
91
92
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
92
93
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
94
+
95
+ // lib/logger.ts
96
+ var LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
97
+ var ENV = typeof process !== "undefined" && process.env ? process.env : {};
98
+ var VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
99
+ function getViteEnv(key) {
100
+ try {
101
+ const meta = ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)) });
102
+ return meta?.env?.[key];
103
+ } catch {
104
+ return void 0;
105
+ }
106
+ }
107
+ function envGet(key, viteKey) {
108
+ return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
109
+ }
110
+ var NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
111
+ var CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
112
+ var MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
113
+ var DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
114
+ function matchesNamespace(namespace) {
115
+ if (DEBUG_FILTER.length === 0) return true;
116
+ return DEBUG_FILTER.some((pattern) => {
117
+ if (pattern === "*" || pattern === "almadar:*") return true;
118
+ if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
119
+ return namespace === pattern;
120
+ });
121
+ }
122
+ function createLogger(namespace) {
123
+ const nsAllowed = matchesNamespace(namespace);
124
+ const log4 = (level, message, data, correlationId) => {
125
+ if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
126
+ if (level === "DEBUG" && !nsAllowed) return;
127
+ const prefix = `[${namespace}]`;
128
+ const logData = correlationId ? { ...data, cid: correlationId } : data;
129
+ switch (level) {
130
+ case "DEBUG":
131
+ console.debug(prefix, message, logData ?? "");
132
+ break;
133
+ case "INFO":
134
+ console.info(prefix, message, logData ?? "");
135
+ break;
136
+ case "WARN":
137
+ console.warn(prefix, message, logData ?? "");
138
+ break;
139
+ case "ERROR":
140
+ console.error(prefix, message, logData ?? "");
141
+ break;
142
+ }
143
+ };
144
+ return {
145
+ debug: (msg, data, cid) => log4("DEBUG", msg, data, cid),
146
+ info: (msg, data, cid) => log4("INFO", msg, data, cid),
147
+ warn: (msg, data, cid) => log4("WARN", msg, data, cid),
148
+ error: (msg, data, cid) => log4("ERROR", msg, data, cid)
149
+ };
150
+ }
151
+
152
+ // hooks/useEventBus.ts
153
+ var log = createLogger("almadar:eventbus");
154
+ var subLog = createLogger("almadar:eventbus:subscribe");
93
155
  function setGlobalEventBus(bus) {
94
156
  if (typeof window !== "undefined") {
95
157
  window.__kflowEventBus = bus;
@@ -111,6 +173,7 @@ var fallbackEventBus = {
111
173
  timestamp: Date.now()
112
174
  };
113
175
  const handlers = fallbackListeners.get(type);
176
+ log.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount: (handlers?.size ?? 0) + fallbackAnyListeners.size });
114
177
  if (handlers) {
115
178
  handlers.forEach((handler) => {
116
179
  try {
@@ -133,6 +196,7 @@ var fallbackEventBus = {
133
196
  fallbackListeners.set(type, /* @__PURE__ */ new Set());
134
197
  }
135
198
  fallbackListeners.get(type).add(listener);
199
+ subLog.debug("subscribe", { type, totalListeners: fallbackListeners.get(type).size });
136
200
  return () => {
137
201
  const handlers = fallbackListeners.get(type);
138
202
  if (handlers) {
@@ -156,6 +220,7 @@ var fallbackEventBus = {
156
220
  },
157
221
  onAny: (listener) => {
158
222
  fallbackAnyListeners.add(listener);
223
+ subLog.debug("subscribe:any", { totalAnyListeners: fallbackAnyListeners.size });
159
224
  return () => {
160
225
  fallbackAnyListeners.delete(listener);
161
226
  };
@@ -814,6 +879,7 @@ function subscribeToTraitChanges(listener) {
814
879
  }
815
880
 
816
881
  // lib/verificationRegistry.ts
882
+ var log2 = createLogger("almadar:bridge");
817
883
  var MAX_TRANSITIONS = 500;
818
884
  function getState() {
819
885
  if (typeof window !== "undefined") {
@@ -846,6 +912,7 @@ function recordTransition(trace) {
846
912
  ...trace,
847
913
  id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
848
914
  };
915
+ log2.info("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
849
916
  getState().transitions.push(entry);
850
917
  if (getState().transitions.length > MAX_TRANSITIONS) {
851
918
  getState().transitions.shift();
@@ -977,10 +1044,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
977
1044
  }
978
1045
  function bindEventBus(eventBus) {
979
1046
  if (typeof window === "undefined") return;
1047
+ log2.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
980
1048
  exposeOnWindow();
981
1049
  if (window.__orbitalVerification) {
982
1050
  window.__orbitalVerification.sendEvent = (event, payload) => {
983
1051
  const prefixed = event.startsWith("UI:") ? event : `UI:${event}`;
1052
+ log2.debug("sendEvent", { event: prefixed, payloadKeys: payload ? Object.keys(payload) : [] });
984
1053
  eventBus.emit(prefixed, payload);
985
1054
  };
986
1055
  const eventLog = [];
@@ -1703,6 +1772,7 @@ var Box = React117__namespace.default.forwardRef(
1703
1772
  action,
1704
1773
  actionPayload,
1705
1774
  hoverEvent,
1775
+ maxWidth,
1706
1776
  onClick,
1707
1777
  onMouseEnter,
1708
1778
  onMouseLeave,
@@ -1767,6 +1837,7 @@ var Box = React117__namespace.default.forwardRef(
1767
1837
  onClick: isClickable ? handleClick : void 0,
1768
1838
  onMouseEnter: hoverEvent || onMouseEnter ? handleMouseEnter : void 0,
1769
1839
  onMouseLeave: hoverEvent || onMouseLeave ? handleMouseLeave : void 0,
1840
+ style: maxWidth ? { maxWidth, ...rest.style } : rest.style,
1770
1841
  ...rest,
1771
1842
  children
1772
1843
  }
@@ -2130,6 +2201,7 @@ function useTheme() {
2130
2201
  }
2131
2202
  return context;
2132
2203
  }
2204
+ var storeLog = createLogger("almadar:entity:store");
2133
2205
  var store = /* @__PURE__ */ new Map();
2134
2206
  var storeListeners = /* @__PURE__ */ new Set();
2135
2207
  var watchCallbacks = /* @__PURE__ */ new Map();
@@ -2169,7 +2241,9 @@ function setAll(entityType, records) {
2169
2241
  }
2170
2242
  }
2171
2243
  const prev = store.get(entityType);
2172
- store.set(entityType, { entities, ids, version: (prev?.version ?? 0) + 1 });
2244
+ const newVersion = (prev?.version ?? 0) + 1;
2245
+ store.set(entityType, { entities, ids, version: newVersion });
2246
+ storeLog.debug("setAll", { entityType, recordCount: records.length, version: newVersion });
2173
2247
  notifyListeners3(entityType, prev);
2174
2248
  }
2175
2249
  function upsertOne(entityType, record) {
@@ -2181,6 +2255,7 @@ function upsertOne(entityType, record) {
2181
2255
  if (!snapshot.ids.includes(id)) snapshot.ids.push(id);
2182
2256
  snapshot.version++;
2183
2257
  store.set(entityType, snapshot);
2258
+ storeLog.debug("upsertOne", { entityType, id, version: snapshot.version });
2184
2259
  notifyListeners3(entityType, prev);
2185
2260
  }
2186
2261
  function addOne(entityType, record) {
@@ -2197,6 +2272,7 @@ function updateOne(entityType, id, changes) {
2197
2272
  snapshot.entities.set(id, { ...snapshot.entities.get(id), ...changes });
2198
2273
  snapshot.version++;
2199
2274
  store.set(entityType, snapshot);
2275
+ storeLog.debug("updateOne", { entityType, id, changedFields: Object.keys(changes), version: snapshot.version });
2200
2276
  notifyListeners3(entityType, prev);
2201
2277
  }
2202
2278
  function removeOne(entityType, id) {
@@ -2210,6 +2286,7 @@ function removeOne(entityType, id) {
2210
2286
  snapshot.entities.delete(id);
2211
2287
  snapshot.version++;
2212
2288
  store.set(entityType, snapshot);
2289
+ storeLog.debug("removeOne", { entityType, id, remainingCount: snapshot.ids.length, version: snapshot.version });
2213
2290
  notifyListeners3(entityType, prev);
2214
2291
  }
2215
2292
  function getSnapshot3(entityType) {
@@ -2258,6 +2335,8 @@ function useEntityStore() {
2258
2335
  function EntityStoreProvider({ children }) {
2259
2336
  return /* @__PURE__ */ jsxRuntime.jsx(EntityStoreContext.Provider, { value: contextValue, children });
2260
2337
  }
2338
+ var busLog = createLogger("almadar:eventbus");
2339
+ var subLog2 = createLogger("almadar:eventbus:subscribe");
2261
2340
  var EventBusContext2 = React117.createContext(null);
2262
2341
  function EventBusProvider({ children, debug: debug2 = false }) {
2263
2342
  const listenersRef = React117.useRef(/* @__PURE__ */ new Map());
@@ -2287,7 +2366,8 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2287
2366
  timestamp: Date.now()
2288
2367
  };
2289
2368
  const listeners6 = listenersRef.current.get(type);
2290
- const listenerCount = listeners6?.size ?? 0;
2369
+ const listenerCount = (listeners6?.size ?? 0) + anyListenersRef.current.size;
2370
+ busLog.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount });
2291
2371
  if (debug2) {
2292
2372
  if (listenerCount > 0) {
2293
2373
  console.log(`[EventBus] Emit: ${type} \u2192 ${listenerCount} listener(s)`, payload);
@@ -2320,6 +2400,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2320
2400
  }
2321
2401
  const listeners6 = listenersRef.current.get(type);
2322
2402
  listeners6.add(listener);
2403
+ subLog2.debug("subscribe", { type, totalListeners: listeners6.size });
2323
2404
  if (debug2) {
2324
2405
  console.log(`[EventBus] Subscribed to '${type}', total: ${listeners6.size}`);
2325
2406
  }
@@ -2346,6 +2427,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2346
2427
  }, []);
2347
2428
  const onAny = React117.useCallback((listener) => {
2348
2429
  anyListenersRef.current.add(listener);
2430
+ subLog2.debug("subscribe:any", { totalAnyListeners: anyListenersRef.current.size });
2349
2431
  if (debug2) {
2350
2432
  console.log(`[EventBus] onAny subscribed, total: ${anyListenersRef.current.size}`);
2351
2433
  }
@@ -28490,7 +28572,7 @@ function getAllEvents(traits2) {
28490
28572
  }
28491
28573
  function EventDispatcherTab({ traits: traits2, schema }) {
28492
28574
  const eventBus = useEventBus();
28493
- const [log, setLog] = React117__namespace.useState([]);
28575
+ const [log4, setLog] = React117__namespace.useState([]);
28494
28576
  const prevStatesRef = React117__namespace.useRef(/* @__PURE__ */ new Map());
28495
28577
  React117__namespace.useEffect(() => {
28496
28578
  for (const trait of traits2) {
@@ -28554,9 +28636,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
28554
28636
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Other Events (not available from current state)" }),
28555
28637
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
28556
28638
  ] }),
28557
- log.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
28639
+ log4.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
28558
28640
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Recent Transitions" }),
28559
- /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
28641
+ /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log4.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
28560
28642
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
28561
28643
  " ",
28562
28644
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500", children: entry.from }),
@@ -33095,6 +33177,7 @@ function UISlotRenderer({
33095
33177
  return wrapped;
33096
33178
  }
33097
33179
  UISlotRenderer.displayName = "UISlotRenderer";
33180
+ var log3 = createLogger("almadar:verify");
33098
33181
  var DISPATCH_SUFFIX = ":DISPATCH";
33099
33182
  var SUCCESS_SUFFIX = ":SUCCESS";
33100
33183
  var ERROR_SUFFIX = ":ERROR";
@@ -33140,6 +33223,7 @@ function VerificationProvider({
33140
33223
  const unsub = eventBus.onAny((evt) => {
33141
33224
  const parsed = parseLifecycleEvent(evt.type);
33142
33225
  if (!parsed) return;
33226
+ log3.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
33143
33227
  const payload = evt.payload ?? {};
33144
33228
  if (parsed.kind === "dispatch") {
33145
33229
  const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
@@ -33192,6 +33276,7 @@ function VerificationProvider({
33192
33276
  },
33193
33277
  timestamp: Date.now()
33194
33278
  });
33279
+ log3.info("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
33195
33280
  } else if (parsed.kind === "error" && parsed.event) {
33196
33281
  const key = `${parsed.traitName}:${parsed.event}`;
33197
33282
  const pending = pendingRef.current.get(key);
@@ -33221,6 +33306,7 @@ function VerificationProvider({
33221
33306
  },
33222
33307
  timestamp: Date.now()
33223
33308
  });
33309
+ log3.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
33224
33310
  }
33225
33311
  });
33226
33312
  registerCheck(
@@ -44,6 +44,67 @@ import langGraphql from 'react-syntax-highlighter/dist/esm/languages/prism/graph
44
44
  var __defProp = Object.defineProperty;
45
45
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
46
46
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
47
+
48
+ // lib/logger.ts
49
+ var LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
50
+ var ENV = typeof process !== "undefined" && process.env ? process.env : {};
51
+ var VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
52
+ function getViteEnv(key) {
53
+ try {
54
+ const meta = import.meta;
55
+ return meta?.env?.[key];
56
+ } catch {
57
+ return void 0;
58
+ }
59
+ }
60
+ function envGet(key, viteKey) {
61
+ return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
62
+ }
63
+ var NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
64
+ var CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
65
+ var MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
66
+ var DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
67
+ function matchesNamespace(namespace) {
68
+ if (DEBUG_FILTER.length === 0) return true;
69
+ return DEBUG_FILTER.some((pattern) => {
70
+ if (pattern === "*" || pattern === "almadar:*") return true;
71
+ if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
72
+ return namespace === pattern;
73
+ });
74
+ }
75
+ function createLogger(namespace) {
76
+ const nsAllowed = matchesNamespace(namespace);
77
+ const log4 = (level, message, data, correlationId) => {
78
+ if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
79
+ if (level === "DEBUG" && !nsAllowed) return;
80
+ const prefix = `[${namespace}]`;
81
+ const logData = correlationId ? { ...data, cid: correlationId } : data;
82
+ switch (level) {
83
+ case "DEBUG":
84
+ console.debug(prefix, message, logData ?? "");
85
+ break;
86
+ case "INFO":
87
+ console.info(prefix, message, logData ?? "");
88
+ break;
89
+ case "WARN":
90
+ console.warn(prefix, message, logData ?? "");
91
+ break;
92
+ case "ERROR":
93
+ console.error(prefix, message, logData ?? "");
94
+ break;
95
+ }
96
+ };
97
+ return {
98
+ debug: (msg, data, cid) => log4("DEBUG", msg, data, cid),
99
+ info: (msg, data, cid) => log4("INFO", msg, data, cid),
100
+ warn: (msg, data, cid) => log4("WARN", msg, data, cid),
101
+ error: (msg, data, cid) => log4("ERROR", msg, data, cid)
102
+ };
103
+ }
104
+
105
+ // hooks/useEventBus.ts
106
+ var log = createLogger("almadar:eventbus");
107
+ var subLog = createLogger("almadar:eventbus:subscribe");
47
108
  function setGlobalEventBus(bus) {
48
109
  if (typeof window !== "undefined") {
49
110
  window.__kflowEventBus = bus;
@@ -65,6 +126,7 @@ var fallbackEventBus = {
65
126
  timestamp: Date.now()
66
127
  };
67
128
  const handlers = fallbackListeners.get(type);
129
+ log.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount: (handlers?.size ?? 0) + fallbackAnyListeners.size });
68
130
  if (handlers) {
69
131
  handlers.forEach((handler) => {
70
132
  try {
@@ -87,6 +149,7 @@ var fallbackEventBus = {
87
149
  fallbackListeners.set(type, /* @__PURE__ */ new Set());
88
150
  }
89
151
  fallbackListeners.get(type).add(listener);
152
+ subLog.debug("subscribe", { type, totalListeners: fallbackListeners.get(type).size });
90
153
  return () => {
91
154
  const handlers = fallbackListeners.get(type);
92
155
  if (handlers) {
@@ -110,6 +173,7 @@ var fallbackEventBus = {
110
173
  },
111
174
  onAny: (listener) => {
112
175
  fallbackAnyListeners.add(listener);
176
+ subLog.debug("subscribe:any", { totalAnyListeners: fallbackAnyListeners.size });
113
177
  return () => {
114
178
  fallbackAnyListeners.delete(listener);
115
179
  };
@@ -768,6 +832,7 @@ function subscribeToTraitChanges(listener) {
768
832
  }
769
833
 
770
834
  // lib/verificationRegistry.ts
835
+ var log2 = createLogger("almadar:bridge");
771
836
  var MAX_TRANSITIONS = 500;
772
837
  function getState() {
773
838
  if (typeof window !== "undefined") {
@@ -800,6 +865,7 @@ function recordTransition(trace) {
800
865
  ...trace,
801
866
  id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
802
867
  };
868
+ log2.info("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
803
869
  getState().transitions.push(entry);
804
870
  if (getState().transitions.length > MAX_TRANSITIONS) {
805
871
  getState().transitions.shift();
@@ -931,10 +997,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
931
997
  }
932
998
  function bindEventBus(eventBus) {
933
999
  if (typeof window === "undefined") return;
1000
+ log2.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
934
1001
  exposeOnWindow();
935
1002
  if (window.__orbitalVerification) {
936
1003
  window.__orbitalVerification.sendEvent = (event, payload) => {
937
1004
  const prefixed = event.startsWith("UI:") ? event : `UI:${event}`;
1005
+ log2.debug("sendEvent", { event: prefixed, payloadKeys: payload ? Object.keys(payload) : [] });
938
1006
  eventBus.emit(prefixed, payload);
939
1007
  };
940
1008
  const eventLog = [];
@@ -1657,6 +1725,7 @@ var Box = React117__default.forwardRef(
1657
1725
  action,
1658
1726
  actionPayload,
1659
1727
  hoverEvent,
1728
+ maxWidth,
1660
1729
  onClick,
1661
1730
  onMouseEnter,
1662
1731
  onMouseLeave,
@@ -1721,6 +1790,7 @@ var Box = React117__default.forwardRef(
1721
1790
  onClick: isClickable ? handleClick : void 0,
1722
1791
  onMouseEnter: hoverEvent || onMouseEnter ? handleMouseEnter : void 0,
1723
1792
  onMouseLeave: hoverEvent || onMouseLeave ? handleMouseLeave : void 0,
1793
+ style: maxWidth ? { maxWidth, ...rest.style } : rest.style,
1724
1794
  ...rest,
1725
1795
  children
1726
1796
  }
@@ -2084,6 +2154,7 @@ function useTheme() {
2084
2154
  }
2085
2155
  return context;
2086
2156
  }
2157
+ var storeLog = createLogger("almadar:entity:store");
2087
2158
  var store = /* @__PURE__ */ new Map();
2088
2159
  var storeListeners = /* @__PURE__ */ new Set();
2089
2160
  var watchCallbacks = /* @__PURE__ */ new Map();
@@ -2123,7 +2194,9 @@ function setAll(entityType, records) {
2123
2194
  }
2124
2195
  }
2125
2196
  const prev = store.get(entityType);
2126
- store.set(entityType, { entities, ids, version: (prev?.version ?? 0) + 1 });
2197
+ const newVersion = (prev?.version ?? 0) + 1;
2198
+ store.set(entityType, { entities, ids, version: newVersion });
2199
+ storeLog.debug("setAll", { entityType, recordCount: records.length, version: newVersion });
2127
2200
  notifyListeners3(entityType, prev);
2128
2201
  }
2129
2202
  function upsertOne(entityType, record) {
@@ -2135,6 +2208,7 @@ function upsertOne(entityType, record) {
2135
2208
  if (!snapshot.ids.includes(id)) snapshot.ids.push(id);
2136
2209
  snapshot.version++;
2137
2210
  store.set(entityType, snapshot);
2211
+ storeLog.debug("upsertOne", { entityType, id, version: snapshot.version });
2138
2212
  notifyListeners3(entityType, prev);
2139
2213
  }
2140
2214
  function addOne(entityType, record) {
@@ -2151,6 +2225,7 @@ function updateOne(entityType, id, changes) {
2151
2225
  snapshot.entities.set(id, { ...snapshot.entities.get(id), ...changes });
2152
2226
  snapshot.version++;
2153
2227
  store.set(entityType, snapshot);
2228
+ storeLog.debug("updateOne", { entityType, id, changedFields: Object.keys(changes), version: snapshot.version });
2154
2229
  notifyListeners3(entityType, prev);
2155
2230
  }
2156
2231
  function removeOne(entityType, id) {
@@ -2164,6 +2239,7 @@ function removeOne(entityType, id) {
2164
2239
  snapshot.entities.delete(id);
2165
2240
  snapshot.version++;
2166
2241
  store.set(entityType, snapshot);
2242
+ storeLog.debug("removeOne", { entityType, id, remainingCount: snapshot.ids.length, version: snapshot.version });
2167
2243
  notifyListeners3(entityType, prev);
2168
2244
  }
2169
2245
  function getSnapshot3(entityType) {
@@ -2212,6 +2288,8 @@ function useEntityStore() {
2212
2288
  function EntityStoreProvider({ children }) {
2213
2289
  return /* @__PURE__ */ jsx(EntityStoreContext.Provider, { value: contextValue, children });
2214
2290
  }
2291
+ var busLog = createLogger("almadar:eventbus");
2292
+ var subLog2 = createLogger("almadar:eventbus:subscribe");
2215
2293
  var EventBusContext2 = createContext(null);
2216
2294
  function EventBusProvider({ children, debug: debug2 = false }) {
2217
2295
  const listenersRef = useRef(/* @__PURE__ */ new Map());
@@ -2241,7 +2319,8 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2241
2319
  timestamp: Date.now()
2242
2320
  };
2243
2321
  const listeners6 = listenersRef.current.get(type);
2244
- const listenerCount = listeners6?.size ?? 0;
2322
+ const listenerCount = (listeners6?.size ?? 0) + anyListenersRef.current.size;
2323
+ busLog.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount });
2245
2324
  if (debug2) {
2246
2325
  if (listenerCount > 0) {
2247
2326
  console.log(`[EventBus] Emit: ${type} \u2192 ${listenerCount} listener(s)`, payload);
@@ -2274,6 +2353,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2274
2353
  }
2275
2354
  const listeners6 = listenersRef.current.get(type);
2276
2355
  listeners6.add(listener);
2356
+ subLog2.debug("subscribe", { type, totalListeners: listeners6.size });
2277
2357
  if (debug2) {
2278
2358
  console.log(`[EventBus] Subscribed to '${type}', total: ${listeners6.size}`);
2279
2359
  }
@@ -2300,6 +2380,7 @@ function EventBusProvider({ children, debug: debug2 = false }) {
2300
2380
  }, []);
2301
2381
  const onAny = useCallback((listener) => {
2302
2382
  anyListenersRef.current.add(listener);
2383
+ subLog2.debug("subscribe:any", { totalAnyListeners: anyListenersRef.current.size });
2303
2384
  if (debug2) {
2304
2385
  console.log(`[EventBus] onAny subscribed, total: ${anyListenersRef.current.size}`);
2305
2386
  }
@@ -28444,7 +28525,7 @@ function getAllEvents(traits2) {
28444
28525
  }
28445
28526
  function EventDispatcherTab({ traits: traits2, schema }) {
28446
28527
  const eventBus = useEventBus();
28447
- const [log, setLog] = React117.useState([]);
28528
+ const [log4, setLog] = React117.useState([]);
28448
28529
  const prevStatesRef = React117.useRef(/* @__PURE__ */ new Map());
28449
28530
  React117.useEffect(() => {
28450
28531
  for (const trait of traits2) {
@@ -28508,9 +28589,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
28508
28589
  /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Other Events (not available from current state)" }),
28509
28590
  /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
28510
28591
  ] }),
28511
- log.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
28592
+ log4.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
28512
28593
  /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: "Recent Transitions" }),
28513
- /* @__PURE__ */ jsx(Stack, { gap: "xs", children: log.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
28594
+ /* @__PURE__ */ jsx(Stack, { gap: "xs", children: log4.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
28514
28595
  /* @__PURE__ */ jsx("span", { className: "text-purple-400", children: entry.traitName }),
28515
28596
  " ",
28516
28597
  /* @__PURE__ */ jsx("span", { className: "text-gray-500", children: entry.from }),
@@ -33049,6 +33130,7 @@ function UISlotRenderer({
33049
33130
  return wrapped;
33050
33131
  }
33051
33132
  UISlotRenderer.displayName = "UISlotRenderer";
33133
+ var log3 = createLogger("almadar:verify");
33052
33134
  var DISPATCH_SUFFIX = ":DISPATCH";
33053
33135
  var SUCCESS_SUFFIX = ":SUCCESS";
33054
33136
  var ERROR_SUFFIX = ":ERROR";
@@ -33094,6 +33176,7 @@ function VerificationProvider({
33094
33176
  const unsub = eventBus.onAny((evt) => {
33095
33177
  const parsed = parseLifecycleEvent(evt.type);
33096
33178
  if (!parsed) return;
33179
+ log3.debug("lifecycle:event", { kind: parsed.kind, traitName: parsed.traitName, event: parsed.event, type: evt.type });
33097
33180
  const payload = evt.payload ?? {};
33098
33181
  if (parsed.kind === "dispatch") {
33099
33182
  const key = `${parsed.traitName}:${String(payload["event"] ?? "")}`;
@@ -33146,6 +33229,7 @@ function VerificationProvider({
33146
33229
  },
33147
33230
  timestamp: Date.now()
33148
33231
  });
33232
+ log3.info("transition:success", { trait: parsed.traitName, event: parsed.event, from: pending?.from, to: newState, effectCount: effects.length });
33149
33233
  } else if (parsed.kind === "error" && parsed.event) {
33150
33234
  const key = `${parsed.traitName}:${parsed.event}`;
33151
33235
  const pending = pendingRef.current.get(key);
@@ -33175,6 +33259,7 @@ function VerificationProvider({
33175
33259
  },
33176
33260
  timestamp: Date.now()
33177
33261
  });
33262
+ log3.warn("transition:error", { trait: parsed.traitName, event: parsed.event, from: fromState, error: errorMsg });
33178
33263
  }
33179
33264
  });
33180
33265
  registerCheck(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "2.46.0",
3
+ "version": "2.47.0",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "main": "./dist/components/index.js",