@almadar/ui 4.45.0 → 4.46.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.
@@ -10785,12 +10785,15 @@ function ControlButton({
10785
10785
  sizeMap3[size] ?? sizeMap3.md,
10786
10786
  shapeMap[shape] ?? shapeMap.circle,
10787
10787
  variantMap[variant] ?? variantMap.secondary,
10788
- actualPressed && "scale-95 brightness-110 border-white",
10788
+ actualPressed && "scale-95 brightness-110 border-foreground",
10789
10789
  disabled && "opacity-50 cursor-not-allowed",
10790
10790
  className
10791
10791
  ),
10792
10792
  children: [
10793
- icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-2xl", children: icon }),
10793
+ icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-2xl", children: typeof icon === "string" ? (() => {
10794
+ const I = resolveIcon(icon);
10795
+ return I ? /* @__PURE__ */ jsxRuntime.jsx(I, { className: "w-6 h-6" }) : null;
10796
+ })() : icon }),
10794
10797
  label && !icon && /* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
10795
10798
  ]
10796
10799
  }
@@ -10802,6 +10805,7 @@ var init_ControlButton = __esm({
10802
10805
  "use client";
10803
10806
  init_cn();
10804
10807
  init_useEventBus();
10808
+ init_Icon();
10805
10809
  sizeMap3 = {
10806
10810
  sm: "w-10 h-10 text-sm",
10807
10811
  md: "w-14 h-14 text-base",
@@ -10814,9 +10818,9 @@ var init_ControlButton = __esm({
10814
10818
  square: "rounded-md"
10815
10819
  };
10816
10820
  variantMap = {
10817
- primary: "bg-blue-600 text-[var(--color-foreground)] border-blue-400 hover:bg-blue-500",
10818
- secondary: "bg-[var(--color-surface,#374151)] text-[var(--color-foreground)] border-gray-500 hover:bg-gray-600",
10819
- ghost: "bg-transparent text-[var(--color-foreground)] border-white/30 hover:bg-white/10"
10821
+ primary: "bg-primary text-primary-foreground border-primary hover:bg-primary-hover",
10822
+ secondary: "bg-secondary text-secondary-foreground border-border hover:bg-secondary-hover",
10823
+ ghost: "bg-transparent text-foreground border-border hover:bg-muted"
10820
10824
  };
10821
10825
  ControlButton.displayName = "ControlButton";
10822
10826
  }
@@ -11544,8 +11548,8 @@ function ChoiceButton({
11544
11548
  className: cn(
11545
11549
  "w-full text-left px-4 py-2.5 rounded-md border transition-all duration-150",
11546
11550
  "flex items-center gap-2",
11547
- selected ? "bg-yellow-500/20 border-yellow-400 text-yellow-300" : "bg-white/5 border-white/10 text-[var(--color-foreground)] hover:bg-white/10 hover:border-white/30",
11548
- disabled && "opacity-40 cursor-not-allowed hover:bg-white/5 hover:border-white/10",
11551
+ selected ? "bg-accent/15 border-accent text-foreground" : "bg-muted/40 border-border text-foreground hover:bg-muted hover:border-border",
11552
+ disabled && "opacity-40 cursor-not-allowed hover:bg-muted/40 hover:border-border",
11549
11553
  className
11550
11554
  ),
11551
11555
  children: [
@@ -11554,7 +11558,7 @@ function ChoiceButton({
11554
11558
  {
11555
11559
  className: cn(
11556
11560
  "flex-shrink-0 font-mono font-bold text-sm",
11557
- selected ? "text-yellow-400" : "text-gray-500"
11561
+ selected ? "text-accent" : "text-muted-foreground"
11558
11562
  ),
11559
11563
  children: [
11560
11564
  index,
@@ -11595,7 +11599,7 @@ function ActionButton({
11595
11599
  disabled: isDisabled,
11596
11600
  onClick,
11597
11601
  className: cn(
11598
- "relative inline-flex items-center gap-1.5 rounded-md border font-medium text-[var(--color-foreground)] overflow-hidden transition-colors duration-150",
11602
+ "relative inline-flex items-center gap-1.5 rounded-md border font-medium overflow-hidden transition-colors duration-150",
11599
11603
  sizes.button,
11600
11604
  variantStyles8[variant],
11601
11605
  isDisabled && "opacity-60 cursor-not-allowed",
@@ -11605,7 +11609,7 @@ function ActionButton({
11605
11609
  onCooldown && /* @__PURE__ */ jsxRuntime.jsx(
11606
11610
  "div",
11607
11611
  {
11608
- className: "absolute inset-0 bg-black/60 pointer-events-none",
11612
+ className: "absolute inset-0 bg-foreground/40 pointer-events-none",
11609
11613
  style: {
11610
11614
  clipPath: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, black ${360 - cooldownDeg}deg)`,
11611
11615
  WebkitClipPath: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, black ${360 - cooldownDeg}deg)`,
@@ -11613,13 +11617,16 @@ function ActionButton({
11613
11617
  }
11614
11618
  }
11615
11619
  ),
11616
- icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: icon }),
11620
+ icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: typeof icon === "string" ? (() => {
11621
+ const I = resolveIcon(icon);
11622
+ return I ? /* @__PURE__ */ jsxRuntime.jsx(I, { className: "w-4 h-4" }) : null;
11623
+ })() : icon }),
11617
11624
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative z-10", children: label }),
11618
11625
  hotkey && /* @__PURE__ */ jsxRuntime.jsx(
11619
11626
  "span",
11620
11627
  {
11621
11628
  className: cn(
11622
- "absolute top-0.5 right-0.5 bg-black/50 text-gray-300 rounded font-mono leading-tight",
11629
+ "absolute top-0.5 right-0.5 bg-foreground/30 text-primary-foreground rounded font-mono leading-tight",
11623
11630
  sizes.hotkey
11624
11631
  ),
11625
11632
  children: hotkey
@@ -11633,15 +11640,16 @@ var sizeMap13, variantStyles8;
11633
11640
  var init_ActionButton = __esm({
11634
11641
  "components/atoms/game/ActionButton.tsx"() {
11635
11642
  init_cn();
11643
+ init_Icon();
11636
11644
  sizeMap13 = {
11637
11645
  sm: { button: "px-3 py-1.5 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
11638
11646
  md: { button: "px-4 py-2 text-sm", hotkey: "text-[10px] px-1.5", icon: "text-sm" },
11639
11647
  lg: { button: "px-5 py-2.5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
11640
11648
  };
11641
11649
  variantStyles8 = {
11642
- primary: "bg-blue-600 hover:bg-blue-500 border-blue-400/40",
11643
- secondary: "bg-gray-700 hover:bg-gray-600 border-gray-500/40",
11644
- danger: "bg-red-700 hover:bg-red-600 border-red-400/40"
11650
+ primary: "bg-primary text-primary-foreground hover:bg-primary-hover border-primary",
11651
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary-hover border-border",
11652
+ danger: "bg-error text-error-foreground hover:bg-error/90 border-error"
11645
11653
  };
11646
11654
  ActionButton.displayName = "ActionButton";
11647
11655
  }
@@ -25150,7 +25158,7 @@ function DataGrid({
25150
25158
  onClick: handleActionClick(action, itemData),
25151
25159
  "data-testid": `action-${action.event}`,
25152
25160
  "data-row-id": String(itemData.id),
25153
- className: "text-error hover:bg-error/10 px-2",
25161
+ className: "text-error hover:text-error hover:bg-error/10 px-2",
25154
25162
  children: [
25155
25163
  action.icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: action.icon, size: "xs" }),
25156
25164
  action.label
@@ -27743,7 +27751,7 @@ function StatBadge({
27743
27751
  const I = resolveIcon(icon);
27744
27752
  return I ? /* @__PURE__ */ jsxRuntime.jsx(I, { className: "w-4 h-4" }) : icon;
27745
27753
  })() : icon }),
27746
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-400 font-medium", children: label }),
27754
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground font-medium", children: label }),
27747
27755
  format === "hearts" && max && /* @__PURE__ */ jsxRuntime.jsx(
27748
27756
  HealthBar,
27749
27757
  {
@@ -27770,7 +27778,7 @@ function StatBadge({
27770
27778
  animated: true
27771
27779
  }
27772
27780
  ),
27773
- format === "text" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-bold text-[var(--color-foreground)]", children: value })
27781
+ format === "text" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-bold text-foreground", children: value })
27774
27782
  ]
27775
27783
  }
27776
27784
  );
@@ -27788,11 +27796,11 @@ var init_StatBadge = __esm({
27788
27796
  lg: "text-base px-4 py-2"
27789
27797
  };
27790
27798
  variantMap2 = {
27791
- default: "bg-[var(--color-card)]/80 border-gray-700",
27792
- primary: "bg-blue-900/80 border-blue-700",
27793
- success: "bg-green-900/80 border-green-700",
27794
- warning: "bg-yellow-900/80 border-yellow-700",
27795
- danger: "bg-red-900/80 border-red-700"
27799
+ default: "bg-card/80 border-border text-foreground",
27800
+ primary: "bg-primary/15 border-primary/40 text-foreground",
27801
+ success: "bg-success/15 border-success/40 text-foreground",
27802
+ warning: "bg-warning/15 border-warning/40 text-foreground",
27803
+ danger: "bg-error/15 border-error/40 text-foreground"
27796
27804
  };
27797
27805
  StatBadge.displayName = "StatBadge";
27798
27806
  }
@@ -39962,9 +39970,45 @@ var init_List = __esm({
39962
39970
  List3.displayName = "List";
39963
39971
  }
39964
39972
  });
39965
- var DefaultEmptyDetail, MasterDetail;
39973
+ function MasterDetail({
39974
+ entity,
39975
+ masterFields,
39976
+ detailFields: _detailFields,
39977
+ // Captured but not used here - detail handled separately
39978
+ loading: externalLoading,
39979
+ isLoading: externalIsLoading,
39980
+ error: externalError,
39981
+ className,
39982
+ ...rest
39983
+ }) {
39984
+ const loading = externalLoading ?? false;
39985
+ const isLoading = externalIsLoading ?? false;
39986
+ const error = externalError ?? null;
39987
+ return /* @__PURE__ */ jsxRuntime.jsx(
39988
+ DataTable,
39989
+ {
39990
+ fields: masterFields,
39991
+ columns: masterFields,
39992
+ entity,
39993
+ isLoading: loading || isLoading,
39994
+ error,
39995
+ className,
39996
+ emptyTitle: "No items found",
39997
+ emptyDescription: "Create your first item to get started.",
39998
+ ...rest
39999
+ }
40000
+ );
40001
+ }
39966
40002
  var init_MasterDetail = __esm({
39967
- "components/organisms/layout/MasterDetail.tsx"() {
40003
+ "components/organisms/MasterDetail.tsx"() {
40004
+ "use client";
40005
+ init_DataTable();
40006
+ MasterDetail.displayName = "MasterDetail";
40007
+ }
40008
+ });
40009
+ var DefaultEmptyDetail, MasterDetailLayout;
40010
+ var init_MasterDetailLayout = __esm({
40011
+ "components/organisms/layout/MasterDetailLayout.tsx"() {
39968
40012
  init_cn();
39969
40013
  init_Typography();
39970
40014
  DefaultEmptyDetail = () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -39975,7 +40019,7 @@ var init_MasterDetail = __esm({
39975
40019
  children: "Select an item to view details"
39976
40020
  }
39977
40021
  ) });
39978
- MasterDetail = ({
40022
+ MasterDetailLayout = ({
39979
40023
  master,
39980
40024
  detail,
39981
40025
  emptyDetail,
@@ -40010,7 +40054,7 @@ var init_MasterDetail = __esm({
40010
40054
  }
40011
40055
  );
40012
40056
  };
40013
- MasterDetail.displayName = "MasterDetail";
40057
+ MasterDetailLayout.displayName = "MasterDetailLayout";
40014
40058
  }
40015
40059
  });
40016
40060
  var COLUMN_CLASSES, ASPECT_CLASSES, MediaGallery;
@@ -52237,6 +52281,7 @@ var init_component_registry_generated = __esm({
52237
52281
  init_LoadingState();
52238
52282
  init_MarkdownContent();
52239
52283
  init_MasterDetail();
52284
+ init_MasterDetailLayout();
52240
52285
  init_MatrixQuestion();
52241
52286
  init_MediaGallery();
52242
52287
  init_Meter();
@@ -52531,6 +52576,7 @@ var init_component_registry_generated = __esm({
52531
52576
  "MapViewPattern": MapViewPattern,
52532
52577
  "MarkdownContent": MarkdownContent,
52533
52578
  "MasterDetail": MasterDetail,
52579
+ "MasterDetailLayout": MasterDetailLayout,
52534
52580
  "MatrixQuestion": MatrixQuestion,
52535
52581
  "MediaGallery": MediaGallery,
52536
52582
  "Menu": MenuPattern,
@@ -58421,7 +58467,7 @@ function entityNameOf(ref) {
58421
58467
  }
58422
58468
  var eventHandleLog = logger.createLogger("almadar:ui:nan-coord");
58423
58469
  var orbPreviewLog = logger.createLogger("almadar:ui:orb-preview-node");
58424
- orbPreviewLog.info("module-init", { browserPlayground: typeof BrowserPlayground });
58470
+ orbPreviewLog.debug("module-init", () => ({ browserPlayground: typeof BrowserPlayground }));
58425
58471
  var ScreenSizeContext = React147.createContext("tablet");
58426
58472
  var PatternSelectionContext = React147.createContext({ selected: null, select: () => {
58427
58473
  } });
@@ -58878,11 +58924,11 @@ var OrbPreviewNodeInner = (props) => {
58878
58924
  };
58879
58925
  var OrbPreviewNode = React147__namespace.default.memo(OrbPreviewNodeInner);
58880
58926
  OrbPreviewNode.displayName = "OrbPreviewNode";
58881
- orbPreviewLog.info("export-resolved", {
58927
+ orbPreviewLog.debug("export-resolved", () => ({
58882
58928
  type: typeof OrbPreviewNode,
58883
- displayName: OrbPreviewNode.displayName,
58929
+ displayName: OrbPreviewNode.displayName ?? null,
58884
58930
  innerDefined: typeof OrbPreviewNodeInner === "function"
58885
- });
58931
+ }));
58886
58932
  var edgeLog = logger.createLogger("almadar:ui:nan-coord");
58887
58933
  var EventFlowEdgeInner = (props) => {
58888
58934
  const {
@@ -59714,12 +59760,12 @@ var NODE_TYPES = {
59714
59760
  preview: OrbPreviewNode,
59715
59761
  behaviorCompose: BehaviorComposeNode
59716
59762
  };
59717
- flowCanvasLog.info("node-type-registry", {
59763
+ flowCanvasLog.debug("node-type-registry", () => ({
59718
59764
  registered: Object.keys(NODE_TYPES),
59719
59765
  preview: typeof OrbPreviewNode,
59720
59766
  previewIsValid: typeof OrbPreviewNode === "function" || typeof OrbPreviewNode === "object" && OrbPreviewNode !== null,
59721
59767
  behaviorCompose: typeof BehaviorComposeNode
59722
- });
59768
+ }));
59723
59769
  var DEFAULT_EDGE_OPTIONS = {
59724
59770
  markerEnd: { type: react.MarkerType.ArrowClosed, width: 12, height: 12 }
59725
59771
  };
package/dist/avl/index.js CHANGED
@@ -10739,12 +10739,15 @@ function ControlButton({
10739
10739
  sizeMap3[size] ?? sizeMap3.md,
10740
10740
  shapeMap[shape] ?? shapeMap.circle,
10741
10741
  variantMap[variant] ?? variantMap.secondary,
10742
- actualPressed && "scale-95 brightness-110 border-white",
10742
+ actualPressed && "scale-95 brightness-110 border-foreground",
10743
10743
  disabled && "opacity-50 cursor-not-allowed",
10744
10744
  className
10745
10745
  ),
10746
10746
  children: [
10747
- icon && /* @__PURE__ */ jsx("span", { className: "text-2xl", children: icon }),
10747
+ icon && /* @__PURE__ */ jsx("span", { className: "text-2xl", children: typeof icon === "string" ? (() => {
10748
+ const I = resolveIcon(icon);
10749
+ return I ? /* @__PURE__ */ jsx(I, { className: "w-6 h-6" }) : null;
10750
+ })() : icon }),
10748
10751
  label && !icon && /* @__PURE__ */ jsx("span", { children: label })
10749
10752
  ]
10750
10753
  }
@@ -10756,6 +10759,7 @@ var init_ControlButton = __esm({
10756
10759
  "use client";
10757
10760
  init_cn();
10758
10761
  init_useEventBus();
10762
+ init_Icon();
10759
10763
  sizeMap3 = {
10760
10764
  sm: "w-10 h-10 text-sm",
10761
10765
  md: "w-14 h-14 text-base",
@@ -10768,9 +10772,9 @@ var init_ControlButton = __esm({
10768
10772
  square: "rounded-md"
10769
10773
  };
10770
10774
  variantMap = {
10771
- primary: "bg-blue-600 text-[var(--color-foreground)] border-blue-400 hover:bg-blue-500",
10772
- secondary: "bg-[var(--color-surface,#374151)] text-[var(--color-foreground)] border-gray-500 hover:bg-gray-600",
10773
- ghost: "bg-transparent text-[var(--color-foreground)] border-white/30 hover:bg-white/10"
10775
+ primary: "bg-primary text-primary-foreground border-primary hover:bg-primary-hover",
10776
+ secondary: "bg-secondary text-secondary-foreground border-border hover:bg-secondary-hover",
10777
+ ghost: "bg-transparent text-foreground border-border hover:bg-muted"
10774
10778
  };
10775
10779
  ControlButton.displayName = "ControlButton";
10776
10780
  }
@@ -11498,8 +11502,8 @@ function ChoiceButton({
11498
11502
  className: cn(
11499
11503
  "w-full text-left px-4 py-2.5 rounded-md border transition-all duration-150",
11500
11504
  "flex items-center gap-2",
11501
- selected ? "bg-yellow-500/20 border-yellow-400 text-yellow-300" : "bg-white/5 border-white/10 text-[var(--color-foreground)] hover:bg-white/10 hover:border-white/30",
11502
- disabled && "opacity-40 cursor-not-allowed hover:bg-white/5 hover:border-white/10",
11505
+ selected ? "bg-accent/15 border-accent text-foreground" : "bg-muted/40 border-border text-foreground hover:bg-muted hover:border-border",
11506
+ disabled && "opacity-40 cursor-not-allowed hover:bg-muted/40 hover:border-border",
11503
11507
  className
11504
11508
  ),
11505
11509
  children: [
@@ -11508,7 +11512,7 @@ function ChoiceButton({
11508
11512
  {
11509
11513
  className: cn(
11510
11514
  "flex-shrink-0 font-mono font-bold text-sm",
11511
- selected ? "text-yellow-400" : "text-gray-500"
11515
+ selected ? "text-accent" : "text-muted-foreground"
11512
11516
  ),
11513
11517
  children: [
11514
11518
  index,
@@ -11549,7 +11553,7 @@ function ActionButton({
11549
11553
  disabled: isDisabled,
11550
11554
  onClick,
11551
11555
  className: cn(
11552
- "relative inline-flex items-center gap-1.5 rounded-md border font-medium text-[var(--color-foreground)] overflow-hidden transition-colors duration-150",
11556
+ "relative inline-flex items-center gap-1.5 rounded-md border font-medium overflow-hidden transition-colors duration-150",
11553
11557
  sizes.button,
11554
11558
  variantStyles8[variant],
11555
11559
  isDisabled && "opacity-60 cursor-not-allowed",
@@ -11559,7 +11563,7 @@ function ActionButton({
11559
11563
  onCooldown && /* @__PURE__ */ jsx(
11560
11564
  "div",
11561
11565
  {
11562
- className: "absolute inset-0 bg-black/60 pointer-events-none",
11566
+ className: "absolute inset-0 bg-foreground/40 pointer-events-none",
11563
11567
  style: {
11564
11568
  clipPath: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, black ${360 - cooldownDeg}deg)`,
11565
11569
  WebkitClipPath: `conic-gradient(from 0deg, transparent ${360 - cooldownDeg}deg, black ${360 - cooldownDeg}deg)`,
@@ -11567,13 +11571,16 @@ function ActionButton({
11567
11571
  }
11568
11572
  }
11569
11573
  ),
11570
- icon && /* @__PURE__ */ jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: icon }),
11574
+ icon && /* @__PURE__ */ jsx("span", { className: cn("flex-shrink-0", sizes.icon), children: typeof icon === "string" ? (() => {
11575
+ const I = resolveIcon(icon);
11576
+ return I ? /* @__PURE__ */ jsx(I, { className: "w-4 h-4" }) : null;
11577
+ })() : icon }),
11571
11578
  /* @__PURE__ */ jsx("span", { className: "relative z-10", children: label }),
11572
11579
  hotkey && /* @__PURE__ */ jsx(
11573
11580
  "span",
11574
11581
  {
11575
11582
  className: cn(
11576
- "absolute top-0.5 right-0.5 bg-black/50 text-gray-300 rounded font-mono leading-tight",
11583
+ "absolute top-0.5 right-0.5 bg-foreground/30 text-primary-foreground rounded font-mono leading-tight",
11577
11584
  sizes.hotkey
11578
11585
  ),
11579
11586
  children: hotkey
@@ -11587,15 +11594,16 @@ var sizeMap13, variantStyles8;
11587
11594
  var init_ActionButton = __esm({
11588
11595
  "components/atoms/game/ActionButton.tsx"() {
11589
11596
  init_cn();
11597
+ init_Icon();
11590
11598
  sizeMap13 = {
11591
11599
  sm: { button: "px-3 py-1.5 text-xs", hotkey: "text-[9px] px-1", icon: "text-xs" },
11592
11600
  md: { button: "px-4 py-2 text-sm", hotkey: "text-[10px] px-1.5", icon: "text-sm" },
11593
11601
  lg: { button: "px-5 py-2.5 text-base", hotkey: "text-xs px-2", icon: "text-base" }
11594
11602
  };
11595
11603
  variantStyles8 = {
11596
- primary: "bg-blue-600 hover:bg-blue-500 border-blue-400/40",
11597
- secondary: "bg-gray-700 hover:bg-gray-600 border-gray-500/40",
11598
- danger: "bg-red-700 hover:bg-red-600 border-red-400/40"
11604
+ primary: "bg-primary text-primary-foreground hover:bg-primary-hover border-primary",
11605
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary-hover border-border",
11606
+ danger: "bg-error text-error-foreground hover:bg-error/90 border-error"
11599
11607
  };
11600
11608
  ActionButton.displayName = "ActionButton";
11601
11609
  }
@@ -25104,7 +25112,7 @@ function DataGrid({
25104
25112
  onClick: handleActionClick(action, itemData),
25105
25113
  "data-testid": `action-${action.event}`,
25106
25114
  "data-row-id": String(itemData.id),
25107
- className: "text-error hover:bg-error/10 px-2",
25115
+ className: "text-error hover:text-error hover:bg-error/10 px-2",
25108
25116
  children: [
25109
25117
  action.icon && /* @__PURE__ */ jsx(Icon, { name: action.icon, size: "xs" }),
25110
25118
  action.label
@@ -27697,7 +27705,7 @@ function StatBadge({
27697
27705
  const I = resolveIcon(icon);
27698
27706
  return I ? /* @__PURE__ */ jsx(I, { className: "w-4 h-4" }) : icon;
27699
27707
  })() : icon }),
27700
- /* @__PURE__ */ jsx("span", { className: "text-gray-400 font-medium", children: label }),
27708
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground font-medium", children: label }),
27701
27709
  format === "hearts" && max && /* @__PURE__ */ jsx(
27702
27710
  HealthBar,
27703
27711
  {
@@ -27724,7 +27732,7 @@ function StatBadge({
27724
27732
  animated: true
27725
27733
  }
27726
27734
  ),
27727
- format === "text" && /* @__PURE__ */ jsx("span", { className: "font-bold text-[var(--color-foreground)]", children: value })
27735
+ format === "text" && /* @__PURE__ */ jsx("span", { className: "font-bold text-foreground", children: value })
27728
27736
  ]
27729
27737
  }
27730
27738
  );
@@ -27742,11 +27750,11 @@ var init_StatBadge = __esm({
27742
27750
  lg: "text-base px-4 py-2"
27743
27751
  };
27744
27752
  variantMap2 = {
27745
- default: "bg-[var(--color-card)]/80 border-gray-700",
27746
- primary: "bg-blue-900/80 border-blue-700",
27747
- success: "bg-green-900/80 border-green-700",
27748
- warning: "bg-yellow-900/80 border-yellow-700",
27749
- danger: "bg-red-900/80 border-red-700"
27753
+ default: "bg-card/80 border-border text-foreground",
27754
+ primary: "bg-primary/15 border-primary/40 text-foreground",
27755
+ success: "bg-success/15 border-success/40 text-foreground",
27756
+ warning: "bg-warning/15 border-warning/40 text-foreground",
27757
+ danger: "bg-error/15 border-error/40 text-foreground"
27750
27758
  };
27751
27759
  StatBadge.displayName = "StatBadge";
27752
27760
  }
@@ -39916,9 +39924,45 @@ var init_List = __esm({
39916
39924
  List3.displayName = "List";
39917
39925
  }
39918
39926
  });
39919
- var DefaultEmptyDetail, MasterDetail;
39927
+ function MasterDetail({
39928
+ entity,
39929
+ masterFields,
39930
+ detailFields: _detailFields,
39931
+ // Captured but not used here - detail handled separately
39932
+ loading: externalLoading,
39933
+ isLoading: externalIsLoading,
39934
+ error: externalError,
39935
+ className,
39936
+ ...rest
39937
+ }) {
39938
+ const loading = externalLoading ?? false;
39939
+ const isLoading = externalIsLoading ?? false;
39940
+ const error = externalError ?? null;
39941
+ return /* @__PURE__ */ jsx(
39942
+ DataTable,
39943
+ {
39944
+ fields: masterFields,
39945
+ columns: masterFields,
39946
+ entity,
39947
+ isLoading: loading || isLoading,
39948
+ error,
39949
+ className,
39950
+ emptyTitle: "No items found",
39951
+ emptyDescription: "Create your first item to get started.",
39952
+ ...rest
39953
+ }
39954
+ );
39955
+ }
39920
39956
  var init_MasterDetail = __esm({
39921
- "components/organisms/layout/MasterDetail.tsx"() {
39957
+ "components/organisms/MasterDetail.tsx"() {
39958
+ "use client";
39959
+ init_DataTable();
39960
+ MasterDetail.displayName = "MasterDetail";
39961
+ }
39962
+ });
39963
+ var DefaultEmptyDetail, MasterDetailLayout;
39964
+ var init_MasterDetailLayout = __esm({
39965
+ "components/organisms/layout/MasterDetailLayout.tsx"() {
39922
39966
  init_cn();
39923
39967
  init_Typography();
39924
39968
  DefaultEmptyDetail = () => /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full border-2 border-dashed border-border", children: /* @__PURE__ */ jsx(
@@ -39929,7 +39973,7 @@ var init_MasterDetail = __esm({
39929
39973
  children: "Select an item to view details"
39930
39974
  }
39931
39975
  ) });
39932
- MasterDetail = ({
39976
+ MasterDetailLayout = ({
39933
39977
  master,
39934
39978
  detail,
39935
39979
  emptyDetail,
@@ -39964,7 +40008,7 @@ var init_MasterDetail = __esm({
39964
40008
  }
39965
40009
  );
39966
40010
  };
39967
- MasterDetail.displayName = "MasterDetail";
40011
+ MasterDetailLayout.displayName = "MasterDetailLayout";
39968
40012
  }
39969
40013
  });
39970
40014
  var COLUMN_CLASSES, ASPECT_CLASSES, MediaGallery;
@@ -52191,6 +52235,7 @@ var init_component_registry_generated = __esm({
52191
52235
  init_LoadingState();
52192
52236
  init_MarkdownContent();
52193
52237
  init_MasterDetail();
52238
+ init_MasterDetailLayout();
52194
52239
  init_MatrixQuestion();
52195
52240
  init_MediaGallery();
52196
52241
  init_Meter();
@@ -52485,6 +52530,7 @@ var init_component_registry_generated = __esm({
52485
52530
  "MapViewPattern": MapViewPattern,
52486
52531
  "MarkdownContent": MarkdownContent,
52487
52532
  "MasterDetail": MasterDetail,
52533
+ "MasterDetailLayout": MasterDetailLayout,
52488
52534
  "MatrixQuestion": MatrixQuestion,
52489
52535
  "MediaGallery": MediaGallery,
52490
52536
  "Menu": MenuPattern,
@@ -58375,7 +58421,7 @@ function entityNameOf(ref) {
58375
58421
  }
58376
58422
  var eventHandleLog = createLogger("almadar:ui:nan-coord");
58377
58423
  var orbPreviewLog = createLogger("almadar:ui:orb-preview-node");
58378
- orbPreviewLog.info("module-init", { browserPlayground: typeof BrowserPlayground });
58424
+ orbPreviewLog.debug("module-init", () => ({ browserPlayground: typeof BrowserPlayground }));
58379
58425
  var ScreenSizeContext = createContext("tablet");
58380
58426
  var PatternSelectionContext = createContext({ selected: null, select: () => {
58381
58427
  } });
@@ -58832,11 +58878,11 @@ var OrbPreviewNodeInner = (props) => {
58832
58878
  };
58833
58879
  var OrbPreviewNode = React147__default.memo(OrbPreviewNodeInner);
58834
58880
  OrbPreviewNode.displayName = "OrbPreviewNode";
58835
- orbPreviewLog.info("export-resolved", {
58881
+ orbPreviewLog.debug("export-resolved", () => ({
58836
58882
  type: typeof OrbPreviewNode,
58837
- displayName: OrbPreviewNode.displayName,
58883
+ displayName: OrbPreviewNode.displayName ?? null,
58838
58884
  innerDefined: typeof OrbPreviewNodeInner === "function"
58839
- });
58885
+ }));
58840
58886
  var edgeLog = createLogger("almadar:ui:nan-coord");
58841
58887
  var EventFlowEdgeInner = (props) => {
58842
58888
  const {
@@ -59668,12 +59714,12 @@ var NODE_TYPES = {
59668
59714
  preview: OrbPreviewNode,
59669
59715
  behaviorCompose: BehaviorComposeNode
59670
59716
  };
59671
- flowCanvasLog.info("node-type-registry", {
59717
+ flowCanvasLog.debug("node-type-registry", () => ({
59672
59718
  registered: Object.keys(NODE_TYPES),
59673
59719
  preview: typeof OrbPreviewNode,
59674
59720
  previewIsValid: typeof OrbPreviewNode === "function" || typeof OrbPreviewNode === "object" && OrbPreviewNode !== null,
59675
59721
  behaviorCompose: typeof BehaviorComposeNode
59676
- });
59722
+ }));
59677
59723
  var DEFAULT_EDGE_OPTIONS = {
59678
59724
  markerEnd: { type: MarkerType.ArrowClosed, width: 12, height: 12 }
59679
59725
  };
@@ -37,7 +37,7 @@ export { InfiniteScrollSentinel, type InfiniteScrollSentinelProps } from "./Infi
37
37
  export { ConfettiEffect, type ConfettiEffectProps } from "./ConfettiEffect";
38
38
  export { TypewriterText, type TypewriterTextProps } from "./TypewriterText";
39
39
  export { SectionHeader, type SectionHeaderProps } from "./SectionHeader";
40
- export { MarketingStatCard, type StatCardProps as MarketingStatCardProps, type StatCardSize } from "./StatCard";
40
+ export { MarketingStatCard, type StatCardProps as MarketingStatCardProps, type StatCardSize } from "./MarketingStatCard";
41
41
  export { ContentSection, type ContentSectionProps, type ContentSectionBackground, type ContentSectionPadding, } from "./ContentSection";
42
42
  export { PatternTile, getTileDimensions, type PatternTileProps, type PatternVariant } from "./PatternTile";
43
43
  export { AnimatedReveal, type AnimatedRevealProps, type RevealTrigger, type RevealAnimation } from "./AnimatedReveal";