@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.
@@ -3,6 +3,7 @@
3
3
  var clsx = require('clsx');
4
4
  var tailwindMerge = require('tailwind-merge');
5
5
 
6
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
6
7
  function cn(...inputs) {
7
8
  return tailwindMerge.twMerge(clsx.clsx(inputs));
8
9
  }
@@ -427,7 +428,69 @@ function clearTraits() {
427
428
  notifyListeners4();
428
429
  }
429
430
 
431
+ // lib/logger.ts
432
+ var LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
433
+ var ENV = typeof process !== "undefined" && process.env ? process.env : {};
434
+ var VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
435
+ function getViteEnv(key) {
436
+ try {
437
+ 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)) });
438
+ return meta?.env?.[key];
439
+ } catch {
440
+ return void 0;
441
+ }
442
+ }
443
+ function envGet(key, viteKey) {
444
+ return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
445
+ }
446
+ var NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
447
+ var CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
448
+ var MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
449
+ var DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
450
+ function matchesNamespace(namespace) {
451
+ if (DEBUG_FILTER.length === 0) return true;
452
+ return DEBUG_FILTER.some((pattern) => {
453
+ if (pattern === "*" || pattern === "almadar:*") return true;
454
+ if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
455
+ return namespace === pattern;
456
+ });
457
+ }
458
+ function createLogger(namespace) {
459
+ const nsAllowed = matchesNamespace(namespace);
460
+ const log2 = (level, message, data, correlationId) => {
461
+ if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
462
+ if (level === "DEBUG" && !nsAllowed) return;
463
+ const prefix = `[${namespace}]`;
464
+ const logData = correlationId ? { ...data, cid: correlationId } : data;
465
+ switch (level) {
466
+ case "DEBUG":
467
+ console.debug(prefix, message, logData ?? "");
468
+ break;
469
+ case "INFO":
470
+ console.info(prefix, message, logData ?? "");
471
+ break;
472
+ case "WARN":
473
+ console.warn(prefix, message, logData ?? "");
474
+ break;
475
+ case "ERROR":
476
+ console.error(prefix, message, logData ?? "");
477
+ break;
478
+ }
479
+ };
480
+ return {
481
+ debug: (msg, data, cid) => log2("DEBUG", msg, data, cid),
482
+ info: (msg, data, cid) => log2("INFO", msg, data, cid),
483
+ warn: (msg, data, cid) => log2("WARN", msg, data, cid),
484
+ error: (msg, data, cid) => log2("ERROR", msg, data, cid)
485
+ };
486
+ }
487
+ var _cidCounter = 0;
488
+ function generateCorrelationId() {
489
+ return `evt-${Date.now()}-${++_cidCounter}`;
490
+ }
491
+
430
492
  // lib/verificationRegistry.ts
493
+ var log = createLogger("almadar:bridge");
431
494
  var MAX_TRANSITIONS = 500;
432
495
  function getState() {
433
496
  if (typeof window !== "undefined") {
@@ -471,6 +534,7 @@ function recordTransition(trace) {
471
534
  ...trace,
472
535
  id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
473
536
  };
537
+ log.info("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
474
538
  getState().transitions.push(entry);
475
539
  if (getState().transitions.length > MAX_TRANSITIONS) {
476
540
  getState().transitions.shift();
@@ -620,10 +684,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
620
684
  }
621
685
  function bindEventBus(eventBus) {
622
686
  if (typeof window === "undefined") return;
687
+ log.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
623
688
  exposeOnWindow();
624
689
  if (window.__orbitalVerification) {
625
690
  window.__orbitalVerification.sendEvent = (event, payload) => {
626
691
  const prefixed = event.startsWith("UI:") ? event : `UI:${event}`;
692
+ log.debug("sendEvent", { event: prefixed, payloadKeys: payload ? Object.keys(payload) : [] });
627
693
  eventBus.emit(prefixed, payload);
628
694
  };
629
695
  const eventLog = [];
@@ -1461,6 +1527,7 @@ exports.clearTicks = clearTicks;
1461
1527
  exports.clearTraits = clearTraits;
1462
1528
  exports.clearVerification = clearVerification;
1463
1529
  exports.cn = cn;
1530
+ exports.createLogger = createLogger;
1464
1531
  exports.debug = debug;
1465
1532
  exports.debugCollision = debugCollision;
1466
1533
  exports.debugError = debugError;
@@ -1477,6 +1544,7 @@ exports.extractOutputsFromTransitions = extractOutputsFromTransitions;
1477
1544
  exports.extractStateMachine = extractStateMachine;
1478
1545
  exports.formatGuard = formatGuard;
1479
1546
  exports.formatNestedFieldLabel = formatNestedFieldLabel;
1547
+ exports.generateCorrelationId = generateCorrelationId;
1480
1548
  exports.getAllChecks = getAllChecks;
1481
1549
  exports.getAllTicks = getAllTicks;
1482
1550
  exports.getAllTraits = getAllTraits;
@@ -16,3 +16,4 @@ export * from './verificationRegistry';
16
16
  export * from './getNestedValue';
17
17
  export * from './visualizer';
18
18
  export * from './parseContentSegments';
19
+ export * from './logger';
package/dist/lib/index.js CHANGED
@@ -425,7 +425,69 @@ function clearTraits() {
425
425
  notifyListeners4();
426
426
  }
427
427
 
428
+ // lib/logger.ts
429
+ var LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
430
+ var ENV = typeof process !== "undefined" && process.env ? process.env : {};
431
+ var VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
432
+ function getViteEnv(key) {
433
+ try {
434
+ const meta = import.meta;
435
+ return meta?.env?.[key];
436
+ } catch {
437
+ return void 0;
438
+ }
439
+ }
440
+ function envGet(key, viteKey) {
441
+ return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
442
+ }
443
+ var NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
444
+ var CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
445
+ var MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
446
+ var DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
447
+ function matchesNamespace(namespace) {
448
+ if (DEBUG_FILTER.length === 0) return true;
449
+ return DEBUG_FILTER.some((pattern) => {
450
+ if (pattern === "*" || pattern === "almadar:*") return true;
451
+ if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
452
+ return namespace === pattern;
453
+ });
454
+ }
455
+ function createLogger(namespace) {
456
+ const nsAllowed = matchesNamespace(namespace);
457
+ const log2 = (level, message, data, correlationId) => {
458
+ if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
459
+ if (level === "DEBUG" && !nsAllowed) return;
460
+ const prefix = `[${namespace}]`;
461
+ const logData = correlationId ? { ...data, cid: correlationId } : data;
462
+ switch (level) {
463
+ case "DEBUG":
464
+ console.debug(prefix, message, logData ?? "");
465
+ break;
466
+ case "INFO":
467
+ console.info(prefix, message, logData ?? "");
468
+ break;
469
+ case "WARN":
470
+ console.warn(prefix, message, logData ?? "");
471
+ break;
472
+ case "ERROR":
473
+ console.error(prefix, message, logData ?? "");
474
+ break;
475
+ }
476
+ };
477
+ return {
478
+ debug: (msg, data, cid) => log2("DEBUG", msg, data, cid),
479
+ info: (msg, data, cid) => log2("INFO", msg, data, cid),
480
+ warn: (msg, data, cid) => log2("WARN", msg, data, cid),
481
+ error: (msg, data, cid) => log2("ERROR", msg, data, cid)
482
+ };
483
+ }
484
+ var _cidCounter = 0;
485
+ function generateCorrelationId() {
486
+ return `evt-${Date.now()}-${++_cidCounter}`;
487
+ }
488
+
428
489
  // lib/verificationRegistry.ts
490
+ var log = createLogger("almadar:bridge");
429
491
  var MAX_TRANSITIONS = 500;
430
492
  function getState() {
431
493
  if (typeof window !== "undefined") {
@@ -469,6 +531,7 @@ function recordTransition(trace) {
469
531
  ...trace,
470
532
  id: `t-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
471
533
  };
534
+ log.info("transition:recorded", { trait: trace.traitName, from: trace.from, to: trace.to, event: trace.event, effectCount: trace.effects.length });
472
535
  getState().transitions.push(entry);
473
536
  if (getState().transitions.length > MAX_TRANSITIONS) {
474
537
  getState().transitions.shift();
@@ -618,10 +681,12 @@ function waitForTransition(event, timeoutMs = 1e4) {
618
681
  }
619
682
  function bindEventBus(eventBus) {
620
683
  if (typeof window === "undefined") return;
684
+ log.info("bindEventBus", { hasOnAny: !!eventBus.onAny });
621
685
  exposeOnWindow();
622
686
  if (window.__orbitalVerification) {
623
687
  window.__orbitalVerification.sendEvent = (event, payload) => {
624
688
  const prefixed = event.startsWith("UI:") ? event : `UI:${event}`;
689
+ log.debug("sendEvent", { event: prefixed, payloadKeys: payload ? Object.keys(payload) : [] });
625
690
  eventBus.emit(prefixed, payload);
626
691
  };
627
692
  const eventLog = [];
@@ -1446,4 +1511,4 @@ function parseContentSegments(content) {
1446
1511
  return segments;
1447
1512
  }
1448
1513
 
1449
- export { ApiError, DEFAULT_CONFIG, apiClient, bindCanvasCapture, bindEventBus, bindTraitStateGetter, clearDebugEvents, clearEntityProvider, clearGuardHistory, clearTicks, clearTraits, clearVerification, cn, debug, debugCollision, debugError, debugGameState, debugGroup, debugGroupEnd, debugInput, debugPhysics, debugTable, debugTime, debugTimeEnd, debugWarn, extractOutputsFromTransitions, extractStateMachine, formatGuard, formatNestedFieldLabel, getAllChecks, getAllTicks, getAllTraits, getBridgeHealth, getDebugEvents, getEffectSummary, getEntitiesByType, getEntityById, getEntitySnapshot, getEventsBySource, getEventsByType, getGuardEvaluationsForTrait, getGuardHistory, getNestedValue, getRecentEvents, getRecentGuardEvaluations, getSnapshot, getSummary, getTick, getTrait, getTransitions, getTransitionsForTrait, initDebugShortcut, isDebugEnabled, logDebugEvent, logEffectExecuted, logError, logEventFired, logInfo, logStateChange, logWarning, onDebugToggle, parseContentSegments, parseMarkdownWithCodeBlocks, recordGuardEvaluation, recordServerResponse, recordTransition, registerCheck, registerTick, registerTrait, renderStateMachineToDomData, renderStateMachineToSvg, setDebugEnabled, setEntityProvider, setTickActive, subscribeToDebugEvents, subscribeToGuardChanges, subscribeToTickChanges, subscribeToTraitChanges, subscribeToVerification, toggleDebug, unregisterTick, unregisterTrait, updateAssetStatus, updateBridgeHealth, updateCheck, updateGuardResult, updateTickExecution, updateTraitState, waitForTransition };
1514
+ export { ApiError, DEFAULT_CONFIG, apiClient, bindCanvasCapture, bindEventBus, bindTraitStateGetter, clearDebugEvents, clearEntityProvider, clearGuardHistory, clearTicks, clearTraits, clearVerification, cn, createLogger, debug, debugCollision, debugError, debugGameState, debugGroup, debugGroupEnd, debugInput, debugPhysics, debugTable, debugTime, debugTimeEnd, debugWarn, extractOutputsFromTransitions, extractStateMachine, formatGuard, formatNestedFieldLabel, generateCorrelationId, getAllChecks, getAllTicks, getAllTraits, getBridgeHealth, getDebugEvents, getEffectSummary, getEntitiesByType, getEntityById, getEntitySnapshot, getEventsBySource, getEventsByType, getGuardEvaluationsForTrait, getGuardHistory, getNestedValue, getRecentEvents, getRecentGuardEvaluations, getSnapshot, getSummary, getTick, getTrait, getTransitions, getTransitionsForTrait, initDebugShortcut, isDebugEnabled, logDebugEvent, logEffectExecuted, logError, logEventFired, logInfo, logStateChange, logWarning, onDebugToggle, parseContentSegments, parseMarkdownWithCodeBlocks, recordGuardEvaluation, recordServerResponse, recordTransition, registerCheck, registerTick, registerTrait, renderStateMachineToDomData, renderStateMachineToSvg, setDebugEnabled, setEntityProvider, setTickActive, subscribeToDebugEvents, subscribeToGuardChanges, subscribeToTickChanges, subscribeToTraitChanges, subscribeToVerification, toggleDebug, unregisterTick, unregisterTrait, updateAssetStatus, updateBridgeHealth, updateCheck, updateGuardResult, updateTickExecution, updateTraitState, waitForTransition };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Almadar Structured Logger
3
+ *
4
+ * Namespace-based logging with level gating and correlation IDs.
5
+ * Pure TypeScript, zero React dependencies. Works in Node.js, Vite, and browser.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export interface Logger {
10
+ debug: (msg: string, data?: Record<string, unknown>, cid?: string) => void;
11
+ info: (msg: string, data?: Record<string, unknown>, cid?: string) => void;
12
+ warn: (msg: string, data?: Record<string, unknown>, cid?: string) => void;
13
+ error: (msg: string, data?: Record<string, unknown>, cid?: string) => void;
14
+ }
15
+ export declare function createLogger(namespace: string): Logger;
16
+ export declare function generateCorrelationId(): string;
@@ -4,6 +4,7 @@ var React5 = require('react');
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var LucideIcons = require('lucide-react');
6
6
 
7
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
7
8
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
9
 
9
10
  function _interopNamespace(e) {
@@ -2506,9 +2507,70 @@ var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
2506
2507
  function cn(...inputs) {
2507
2508
  return twMerge(clsx(inputs));
2508
2509
  }
2510
+
2511
+ // lib/logger.ts
2512
+ var LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
2513
+ var ENV = typeof process !== "undefined" && process.env ? process.env : {};
2514
+ var VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
2515
+ function getViteEnv(key) {
2516
+ try {
2517
+ 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)) });
2518
+ return meta?.env?.[key];
2519
+ } catch {
2520
+ return void 0;
2521
+ }
2522
+ }
2523
+ function envGet(key, viteKey) {
2524
+ return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
2525
+ }
2526
+ var NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
2527
+ var CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
2528
+ var MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
2529
+ var DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
2530
+ function matchesNamespace(namespace) {
2531
+ if (DEBUG_FILTER.length === 0) return true;
2532
+ return DEBUG_FILTER.some((pattern) => {
2533
+ if (pattern === "*" || pattern === "almadar:*") return true;
2534
+ if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
2535
+ return namespace === pattern;
2536
+ });
2537
+ }
2538
+ function createLogger(namespace) {
2539
+ const nsAllowed = matchesNamespace(namespace);
2540
+ const log2 = (level, message, data, correlationId) => {
2541
+ if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
2542
+ if (level === "DEBUG" && !nsAllowed) return;
2543
+ const prefix = `[${namespace}]`;
2544
+ const logData = correlationId ? { ...data, cid: correlationId } : data;
2545
+ switch (level) {
2546
+ case "DEBUG":
2547
+ console.debug(prefix, message, logData ?? "");
2548
+ break;
2549
+ case "INFO":
2550
+ console.info(prefix, message, logData ?? "");
2551
+ break;
2552
+ case "WARN":
2553
+ console.warn(prefix, message, logData ?? "");
2554
+ break;
2555
+ case "ERROR":
2556
+ console.error(prefix, message, logData ?? "");
2557
+ break;
2558
+ }
2559
+ };
2560
+ return {
2561
+ debug: (msg, data, cid) => log2("DEBUG", msg, data, cid),
2562
+ info: (msg, data, cid) => log2("INFO", msg, data, cid),
2563
+ warn: (msg, data, cid) => log2("WARN", msg, data, cid),
2564
+ error: (msg, data, cid) => log2("ERROR", msg, data, cid)
2565
+ };
2566
+ }
2567
+ createLogger("almadar:eventbus");
2568
+ createLogger("almadar:eventbus:subscribe");
2509
2569
  var EventBusContext = React5.createContext(null);
2510
2570
 
2511
2571
  // hooks/useEventBus.ts
2572
+ var log = createLogger("almadar:eventbus");
2573
+ var subLog2 = createLogger("almadar:eventbus:subscribe");
2512
2574
  function getGlobalEventBus() {
2513
2575
  if (typeof window !== "undefined") {
2514
2576
  return window.__kflowEventBus ?? null;
@@ -2525,6 +2587,7 @@ var fallbackEventBus = {
2525
2587
  timestamp: Date.now()
2526
2588
  };
2527
2589
  const handlers = fallbackListeners.get(type);
2590
+ log.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount: (handlers?.size ?? 0) + fallbackAnyListeners.size });
2528
2591
  if (handlers) {
2529
2592
  handlers.forEach((handler) => {
2530
2593
  try {
@@ -2547,6 +2610,7 @@ var fallbackEventBus = {
2547
2610
  fallbackListeners.set(type, /* @__PURE__ */ new Set());
2548
2611
  }
2549
2612
  fallbackListeners.get(type).add(listener);
2613
+ subLog2.debug("subscribe", { type, totalListeners: fallbackListeners.get(type).size });
2550
2614
  return () => {
2551
2615
  const handlers = fallbackListeners.get(type);
2552
2616
  if (handlers) {
@@ -2570,6 +2634,7 @@ var fallbackEventBus = {
2570
2634
  },
2571
2635
  onAny: (listener) => {
2572
2636
  fallbackAnyListeners.add(listener);
2637
+ subLog2.debug("subscribe:any", { totalAnyListeners: fallbackAnyListeners.size });
2573
2638
  return () => {
2574
2639
  fallbackAnyListeners.delete(listener);
2575
2640
  };
@@ -2704,6 +2769,7 @@ var Box = React5__default.default.forwardRef(
2704
2769
  action,
2705
2770
  actionPayload,
2706
2771
  hoverEvent,
2772
+ maxWidth,
2707
2773
  onClick,
2708
2774
  onMouseEnter,
2709
2775
  onMouseLeave,
@@ -2768,6 +2834,7 @@ var Box = React5__default.default.forwardRef(
2768
2834
  onClick: isClickable ? handleClick : void 0,
2769
2835
  onMouseEnter: hoverEvent || onMouseEnter ? handleMouseEnter : void 0,
2770
2836
  onMouseLeave: hoverEvent || onMouseLeave ? handleMouseLeave : void 0,
2837
+ style: maxWidth ? { maxWidth, ...rest.style } : rest.style,
2771
2838
  ...rest,
2772
2839
  children
2773
2840
  }
@@ -52,6 +52,10 @@ interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {
52
52
  actionPayload?: Record<string, unknown>;
53
53
  /** Declarative hover event — emits UI:{hoverEvent} with { hovered: true/false } on mouseEnter/mouseLeave */
54
54
  hoverEvent?: string;
55
+ /** Maximum width (CSS value, e.g., "550px", "80rem") */
56
+ maxWidth?: string;
57
+ /** Children elements */
58
+ children?: React.ReactNode;
55
59
  }
56
60
  /**
57
61
  * Box - Versatile container component with design tokens
@@ -2482,9 +2482,70 @@ var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
2482
2482
  function cn(...inputs) {
2483
2483
  return twMerge(clsx(inputs));
2484
2484
  }
2485
+
2486
+ // lib/logger.ts
2487
+ var LEVEL_PRIORITY = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3 };
2488
+ var ENV = typeof process !== "undefined" && process.env ? process.env : {};
2489
+ var VITE_ENV = typeof globalThis !== "undefined" && globalThis.__vite_env__ ? globalThis.__vite_env__ : {};
2490
+ function getViteEnv(key) {
2491
+ try {
2492
+ const meta = import.meta;
2493
+ return meta?.env?.[key];
2494
+ } catch {
2495
+ return void 0;
2496
+ }
2497
+ }
2498
+ function envGet(key, viteKey) {
2499
+ return ENV[key] ?? (viteKey ? getViteEnv(viteKey) : void 0) ?? VITE_ENV[viteKey ?? key];
2500
+ }
2501
+ var NODE_ENV = envGet("NODE_ENV", "VITE_NODE_ENV") ?? "development";
2502
+ var CONFIGURED_LEVEL = (envGet("LOG_LEVEL", "VITE_LOG_LEVEL") ?? (NODE_ENV === "production" ? "info" : "debug")).toUpperCase();
2503
+ var MIN_PRIORITY = LEVEL_PRIORITY[CONFIGURED_LEVEL] ?? 0;
2504
+ var DEBUG_FILTER = (envGet("ALMADAR_DEBUG", "VITE_ALMADAR_DEBUG") ?? "").split(",").map((s) => s.trim()).filter(Boolean);
2505
+ function matchesNamespace(namespace) {
2506
+ if (DEBUG_FILTER.length === 0) return true;
2507
+ return DEBUG_FILTER.some((pattern) => {
2508
+ if (pattern === "*" || pattern === "almadar:*") return true;
2509
+ if (pattern.endsWith(":*")) return namespace.startsWith(pattern.slice(0, -1));
2510
+ return namespace === pattern;
2511
+ });
2512
+ }
2513
+ function createLogger(namespace) {
2514
+ const nsAllowed = matchesNamespace(namespace);
2515
+ const log2 = (level, message, data, correlationId) => {
2516
+ if (LEVEL_PRIORITY[level] < MIN_PRIORITY) return;
2517
+ if (level === "DEBUG" && !nsAllowed) return;
2518
+ const prefix = `[${namespace}]`;
2519
+ const logData = correlationId ? { ...data, cid: correlationId } : data;
2520
+ switch (level) {
2521
+ case "DEBUG":
2522
+ console.debug(prefix, message, logData ?? "");
2523
+ break;
2524
+ case "INFO":
2525
+ console.info(prefix, message, logData ?? "");
2526
+ break;
2527
+ case "WARN":
2528
+ console.warn(prefix, message, logData ?? "");
2529
+ break;
2530
+ case "ERROR":
2531
+ console.error(prefix, message, logData ?? "");
2532
+ break;
2533
+ }
2534
+ };
2535
+ return {
2536
+ debug: (msg, data, cid) => log2("DEBUG", msg, data, cid),
2537
+ info: (msg, data, cid) => log2("INFO", msg, data, cid),
2538
+ warn: (msg, data, cid) => log2("WARN", msg, data, cid),
2539
+ error: (msg, data, cid) => log2("ERROR", msg, data, cid)
2540
+ };
2541
+ }
2542
+ createLogger("almadar:eventbus");
2543
+ createLogger("almadar:eventbus:subscribe");
2485
2544
  var EventBusContext = createContext(null);
2486
2545
 
2487
2546
  // hooks/useEventBus.ts
2547
+ var log = createLogger("almadar:eventbus");
2548
+ var subLog2 = createLogger("almadar:eventbus:subscribe");
2488
2549
  function getGlobalEventBus() {
2489
2550
  if (typeof window !== "undefined") {
2490
2551
  return window.__kflowEventBus ?? null;
@@ -2501,6 +2562,7 @@ var fallbackEventBus = {
2501
2562
  timestamp: Date.now()
2502
2563
  };
2503
2564
  const handlers = fallbackListeners.get(type);
2565
+ log.debug("emit", { type, payloadKeys: payload ? Object.keys(payload).length : 0, listenerCount: (handlers?.size ?? 0) + fallbackAnyListeners.size });
2504
2566
  if (handlers) {
2505
2567
  handlers.forEach((handler) => {
2506
2568
  try {
@@ -2523,6 +2585,7 @@ var fallbackEventBus = {
2523
2585
  fallbackListeners.set(type, /* @__PURE__ */ new Set());
2524
2586
  }
2525
2587
  fallbackListeners.get(type).add(listener);
2588
+ subLog2.debug("subscribe", { type, totalListeners: fallbackListeners.get(type).size });
2526
2589
  return () => {
2527
2590
  const handlers = fallbackListeners.get(type);
2528
2591
  if (handlers) {
@@ -2546,6 +2609,7 @@ var fallbackEventBus = {
2546
2609
  },
2547
2610
  onAny: (listener) => {
2548
2611
  fallbackAnyListeners.add(listener);
2612
+ subLog2.debug("subscribe:any", { totalAnyListeners: fallbackAnyListeners.size });
2549
2613
  return () => {
2550
2614
  fallbackAnyListeners.delete(listener);
2551
2615
  };
@@ -2680,6 +2744,7 @@ var Box = React5.forwardRef(
2680
2744
  action,
2681
2745
  actionPayload,
2682
2746
  hoverEvent,
2747
+ maxWidth,
2683
2748
  onClick,
2684
2749
  onMouseEnter,
2685
2750
  onMouseLeave,
@@ -2744,6 +2809,7 @@ var Box = React5.forwardRef(
2744
2809
  onClick: isClickable ? handleClick : void 0,
2745
2810
  onMouseEnter: hoverEvent || onMouseEnter ? handleMouseEnter : void 0,
2746
2811
  onMouseLeave: hoverEvent || onMouseLeave ? handleMouseLeave : void 0,
2812
+ style: maxWidth ? { maxWidth, ...rest.style } : rest.style,
2747
2813
  ...rest,
2748
2814
  children
2749
2815
  }