@almadar/ui 2.21.0 → 2.22.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.
@@ -4551,22 +4551,11 @@ var AvlEmitListen = ({
4551
4551
  style: animated ? { animation: "avl-el-dash 1s linear infinite" } : void 0
4552
4552
  }
4553
4553
  ),
4554
- /* @__PURE__ */ jsxRuntime.jsx(
4555
- AvlEffect,
4556
- {
4557
- x: leftCx + orbR + 20,
4558
- y: cy - 20,
4559
- effectType: "emit",
4560
- size: 6,
4561
- color,
4562
- opacity: 0.8
4563
- }
4564
- ),
4565
4554
  eventName && /* @__PURE__ */ jsxRuntime.jsxs(
4566
4555
  "text",
4567
4556
  {
4568
4557
  x: 300,
4569
- y: cy - 18,
4558
+ y: cy - 22,
4570
4559
  textAnchor: "middle",
4571
4560
  fill: color,
4572
4561
  fontSize: 11,
@@ -4579,6 +4568,17 @@ var AvlEmitListen = ({
4579
4568
  ]
4580
4569
  }
4581
4570
  ),
4571
+ /* @__PURE__ */ jsxRuntime.jsx(
4572
+ AvlEffect,
4573
+ {
4574
+ x: 300,
4575
+ y: cy - 46,
4576
+ effectType: "emit",
4577
+ size: 7,
4578
+ color,
4579
+ opacity: 0.6
4580
+ }
4581
+ ),
4582
4582
  /* @__PURE__ */ jsxRuntime.jsx(
4583
4583
  "text",
4584
4584
  {
@@ -4757,7 +4757,7 @@ function layoutTree(node, x, y, hSpacing, vSpacing) {
4757
4757
  const totalWidth = (children.length - 1) * hSpacing;
4758
4758
  const startX = x - totalWidth / 2;
4759
4759
  const layoutChildren = children.map(
4760
- (child, i) => layoutTree(child, startX + i * hSpacing, y + vSpacing, hSpacing * 0.75, vSpacing)
4760
+ (child, i) => layoutTree(child, startX + i * hSpacing, y + vSpacing, hSpacing * 0.85, vSpacing)
4761
4761
  );
4762
4762
  return { label: node.label, type: node.type, x, y, children: layoutChildren };
4763
4763
  }
@@ -4822,7 +4822,7 @@ function renderNode(node, color, glowId) {
4822
4822
  fontSize: node.type === "operator" ? 11 : 10,
4823
4823
  fontFamily: "inherit",
4824
4824
  fontWeight: node.type === "operator" ? "bold" : "normal",
4825
- children: node.type === "binding" ? `@${node.label}` : node.label
4825
+ children: node.type === "binding" && !node.label.startsWith("@") ? `@${node.label}` : node.label
4826
4826
  }
4827
4827
  ),
4828
4828
  node.children.map((child) => renderNode(child, color))
@@ -4837,8 +4837,8 @@ var AvlExprTree = ({
4837
4837
  avlEtId += 1;
4838
4838
  return { glow: `avl-et-${avlEtId}-glow` };
4839
4839
  }, []);
4840
- const layout = layoutTree(expression, 300, 60, 200, 90);
4841
- return /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 600 400", xmlns: "http://www.w3.org/2000/svg", className, children: [
4840
+ const layout = layoutTree(expression, 400, 60, 280, 100);
4841
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 800 400", xmlns: "http://www.w3.org/2000/svg", className, children: [
4842
4842
  /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs("filter", { id: ids.glow, x: "-50%", y: "-50%", width: "200%", height: "200%", children: [
4843
4843
  /* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "2", result: "blur" }),
4844
4844
  /* @__PURE__ */ jsxRuntime.jsxs("feMerge", { children: [
package/dist/avl/index.js CHANGED
@@ -4544,22 +4544,11 @@ var AvlEmitListen = ({
4544
4544
  style: animated ? { animation: "avl-el-dash 1s linear infinite" } : void 0
4545
4545
  }
4546
4546
  ),
4547
- /* @__PURE__ */ jsx(
4548
- AvlEffect,
4549
- {
4550
- x: leftCx + orbR + 20,
4551
- y: cy - 20,
4552
- effectType: "emit",
4553
- size: 6,
4554
- color,
4555
- opacity: 0.8
4556
- }
4557
- ),
4558
4547
  eventName && /* @__PURE__ */ jsxs(
4559
4548
  "text",
4560
4549
  {
4561
4550
  x: 300,
4562
- y: cy - 18,
4551
+ y: cy - 22,
4563
4552
  textAnchor: "middle",
4564
4553
  fill: color,
4565
4554
  fontSize: 11,
@@ -4572,6 +4561,17 @@ var AvlEmitListen = ({
4572
4561
  ]
4573
4562
  }
4574
4563
  ),
4564
+ /* @__PURE__ */ jsx(
4565
+ AvlEffect,
4566
+ {
4567
+ x: 300,
4568
+ y: cy - 46,
4569
+ effectType: "emit",
4570
+ size: 7,
4571
+ color,
4572
+ opacity: 0.6
4573
+ }
4574
+ ),
4575
4575
  /* @__PURE__ */ jsx(
4576
4576
  "text",
4577
4577
  {
@@ -4750,7 +4750,7 @@ function layoutTree(node, x, y, hSpacing, vSpacing) {
4750
4750
  const totalWidth = (children.length - 1) * hSpacing;
4751
4751
  const startX = x - totalWidth / 2;
4752
4752
  const layoutChildren = children.map(
4753
- (child, i) => layoutTree(child, startX + i * hSpacing, y + vSpacing, hSpacing * 0.75, vSpacing)
4753
+ (child, i) => layoutTree(child, startX + i * hSpacing, y + vSpacing, hSpacing * 0.85, vSpacing)
4754
4754
  );
4755
4755
  return { label: node.label, type: node.type, x, y, children: layoutChildren };
4756
4756
  }
@@ -4815,7 +4815,7 @@ function renderNode(node, color, glowId) {
4815
4815
  fontSize: node.type === "operator" ? 11 : 10,
4816
4816
  fontFamily: "inherit",
4817
4817
  fontWeight: node.type === "operator" ? "bold" : "normal",
4818
- children: node.type === "binding" ? `@${node.label}` : node.label
4818
+ children: node.type === "binding" && !node.label.startsWith("@") ? `@${node.label}` : node.label
4819
4819
  }
4820
4820
  ),
4821
4821
  node.children.map((child) => renderNode(child, color))
@@ -4830,8 +4830,8 @@ var AvlExprTree = ({
4830
4830
  avlEtId += 1;
4831
4831
  return { glow: `avl-et-${avlEtId}-glow` };
4832
4832
  }, []);
4833
- const layout = layoutTree(expression, 300, 60, 200, 90);
4834
- return /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 600 400", xmlns: "http://www.w3.org/2000/svg", className, children: [
4833
+ const layout = layoutTree(expression, 400, 60, 280, 100);
4834
+ return /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 800 400", xmlns: "http://www.w3.org/2000/svg", className, children: [
4835
4835
  /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("filter", { id: ids.glow, x: "-50%", y: "-50%", width: "200%", height: "200%", children: [
4836
4836
  /* @__PURE__ */ jsx("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "2", result: "blur" }),
4837
4837
  /* @__PURE__ */ jsxs("feMerge", { children: [
@@ -2784,12 +2784,13 @@ function easeOut(t) {
2784
2784
  return t * (2 - t);
2785
2785
  }
2786
2786
  var AnimatedCounter = ({
2787
- value,
2787
+ value: rawValue,
2788
2788
  duration = 600,
2789
2789
  prefix,
2790
2790
  suffix,
2791
2791
  className
2792
2792
  }) => {
2793
+ const value = typeof rawValue === "number" && !Number.isNaN(rawValue) ? rawValue : 0;
2793
2794
  const [displayValue, setDisplayValue] = React86.useState(value);
2794
2795
  const previousValueRef = React86.useRef(value);
2795
2796
  const animationFrameRef = React86.useRef(null);
@@ -7211,7 +7212,7 @@ var Tabs = ({
7211
7212
  ),
7212
7213
  children: [
7213
7214
  item.icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: item.icon, size: "sm" }),
7214
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: isActive ? "semibold" : "normal", children: item.label }),
7215
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: isActive ? "semibold" : "normal", className: "!text-inherit", children: item.label }),
7215
7216
  item.badge !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", children: item.badge })
7216
7217
  ]
7217
7218
  },
@@ -9652,13 +9653,18 @@ function HealthPanel({
9652
9653
  }
9653
9654
  HealthPanel.displayName = "HealthPanel";
9654
9655
  function ScoreBoard({
9655
- score,
9656
- highScore,
9657
- combo,
9658
- multiplier,
9659
- level,
9656
+ score: rawScore,
9657
+ highScore: rawHighScore,
9658
+ combo: rawCombo,
9659
+ multiplier: rawMultiplier,
9660
+ level: rawLevel,
9660
9661
  className
9661
9662
  }) {
9663
+ const score = rawScore ?? 0;
9664
+ const highScore = rawHighScore ?? 0;
9665
+ const combo = rawCombo ?? 0;
9666
+ const multiplier = rawMultiplier ?? 1;
9667
+ const level = rawLevel ?? 1;
9662
9668
  return /* @__PURE__ */ jsxRuntime.jsx(
9663
9669
  Card,
9664
9670
  {
@@ -32471,7 +32477,9 @@ var PATTERNS_WITH_CHILDREN = /* @__PURE__ */ new Set([
32471
32477
  "simple-grid",
32472
32478
  "custom",
32473
32479
  "dashboard-layout",
32474
- "game-shell"
32480
+ "game-shell",
32481
+ "scaled-diagram",
32482
+ "master-detail"
32475
32483
  ]);
32476
32484
  function renderContainedPortal(slot, content, onDismiss) {
32477
32485
  const slotContent = /* @__PURE__ */ jsxRuntime.jsx(SlotContentRenderer, { content, onDismiss });
@@ -2754,12 +2754,13 @@ function easeOut(t) {
2754
2754
  return t * (2 - t);
2755
2755
  }
2756
2756
  var AnimatedCounter = ({
2757
- value,
2757
+ value: rawValue,
2758
2758
  duration = 600,
2759
2759
  prefix,
2760
2760
  suffix,
2761
2761
  className
2762
2762
  }) => {
2763
+ const value = typeof rawValue === "number" && !Number.isNaN(rawValue) ? rawValue : 0;
2763
2764
  const [displayValue, setDisplayValue] = useState(value);
2764
2765
  const previousValueRef = useRef(value);
2765
2766
  const animationFrameRef = useRef(null);
@@ -7181,7 +7182,7 @@ var Tabs = ({
7181
7182
  ),
7182
7183
  children: [
7183
7184
  item.icon && /* @__PURE__ */ jsx(Icon, { icon: item.icon, size: "sm" }),
7184
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: isActive ? "semibold" : "normal", children: item.label }),
7185
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: isActive ? "semibold" : "normal", className: "!text-inherit", children: item.label }),
7185
7186
  item.badge !== void 0 && /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", children: item.badge })
7186
7187
  ]
7187
7188
  },
@@ -9622,13 +9623,18 @@ function HealthPanel({
9622
9623
  }
9623
9624
  HealthPanel.displayName = "HealthPanel";
9624
9625
  function ScoreBoard({
9625
- score,
9626
- highScore,
9627
- combo,
9628
- multiplier,
9629
- level,
9626
+ score: rawScore,
9627
+ highScore: rawHighScore,
9628
+ combo: rawCombo,
9629
+ multiplier: rawMultiplier,
9630
+ level: rawLevel,
9630
9631
  className
9631
9632
  }) {
9633
+ const score = rawScore ?? 0;
9634
+ const highScore = rawHighScore ?? 0;
9635
+ const combo = rawCombo ?? 0;
9636
+ const multiplier = rawMultiplier ?? 1;
9637
+ const level = rawLevel ?? 1;
9632
9638
  return /* @__PURE__ */ jsx(
9633
9639
  Card,
9634
9640
  {
@@ -32441,7 +32447,9 @@ var PATTERNS_WITH_CHILDREN = /* @__PURE__ */ new Set([
32441
32447
  "simple-grid",
32442
32448
  "custom",
32443
32449
  "dashboard-layout",
32444
- "game-shell"
32450
+ "game-shell",
32451
+ "scaled-diagram",
32452
+ "master-detail"
32445
32453
  ]);
32446
32454
  function renderContainedPortal(slot, content, onDismiss) {
32447
32455
  const slotContent = /* @__PURE__ */ jsx(SlotContentRenderer, { content, onDismiss });
@@ -12,7 +12,7 @@ export interface ScoreBoardProps {
12
12
  /** Additional CSS classes */
13
13
  className?: string;
14
14
  }
15
- export declare function ScoreBoard({ score, highScore, combo, multiplier, level, className, }: ScoreBoardProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function ScoreBoard({ score: rawScore, highScore: rawHighScore, combo: rawCombo, multiplier: rawMultiplier, level: rawLevel, className, }: ScoreBoardProps): import("react/jsx-runtime").JSX.Element;
16
16
  export declare namespace ScoreBoard {
17
17
  var displayName: string;
18
18
  }
@@ -7244,22 +7244,11 @@ var AvlEmitListen = ({
7244
7244
  style: animated ? { animation: "avl-el-dash 1s linear infinite" } : void 0
7245
7245
  }
7246
7246
  ),
7247
- /* @__PURE__ */ jsxRuntime.jsx(
7248
- AvlEffect,
7249
- {
7250
- x: leftCx + orbR + 20,
7251
- y: cy - 20,
7252
- effectType: "emit",
7253
- size: 6,
7254
- color,
7255
- opacity: 0.8
7256
- }
7257
- ),
7258
7247
  eventName && /* @__PURE__ */ jsxRuntime.jsxs(
7259
7248
  "text",
7260
7249
  {
7261
7250
  x: 300,
7262
- y: cy - 18,
7251
+ y: cy - 22,
7263
7252
  textAnchor: "middle",
7264
7253
  fill: color,
7265
7254
  fontSize: 11,
@@ -7272,6 +7261,17 @@ var AvlEmitListen = ({
7272
7261
  ]
7273
7262
  }
7274
7263
  ),
7264
+ /* @__PURE__ */ jsxRuntime.jsx(
7265
+ AvlEffect,
7266
+ {
7267
+ x: 300,
7268
+ y: cy - 46,
7269
+ effectType: "emit",
7270
+ size: 7,
7271
+ color,
7272
+ opacity: 0.6
7273
+ }
7274
+ ),
7275
7275
  /* @__PURE__ */ jsxRuntime.jsx(
7276
7276
  "text",
7277
7277
  {
@@ -7450,7 +7450,7 @@ function layoutTree(node, x, y, hSpacing, vSpacing) {
7450
7450
  const totalWidth = (children.length - 1) * hSpacing;
7451
7451
  const startX = x - totalWidth / 2;
7452
7452
  const layoutChildren = children.map(
7453
- (child, i) => layoutTree(child, startX + i * hSpacing, y + vSpacing, hSpacing * 0.75, vSpacing)
7453
+ (child, i) => layoutTree(child, startX + i * hSpacing, y + vSpacing, hSpacing * 0.85, vSpacing)
7454
7454
  );
7455
7455
  return { label: node.label, type: node.type, x, y, children: layoutChildren };
7456
7456
  }
@@ -7515,7 +7515,7 @@ function renderNode(node, color, glowId) {
7515
7515
  fontSize: node.type === "operator" ? 11 : 10,
7516
7516
  fontFamily: "inherit",
7517
7517
  fontWeight: node.type === "operator" ? "bold" : "normal",
7518
- children: node.type === "binding" ? `@${node.label}` : node.label
7518
+ children: node.type === "binding" && !node.label.startsWith("@") ? `@${node.label}` : node.label
7519
7519
  }
7520
7520
  ),
7521
7521
  node.children.map((child) => renderNode(child, color))
@@ -7530,8 +7530,8 @@ var AvlExprTree = ({
7530
7530
  avlEtId += 1;
7531
7531
  return { glow: `avl-et-${avlEtId}-glow` };
7532
7532
  }, []);
7533
- const layout = layoutTree(expression, 300, 60, 200, 90);
7534
- return /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 600 400", xmlns: "http://www.w3.org/2000/svg", className, children: [
7533
+ const layout = layoutTree(expression, 400, 60, 280, 100);
7534
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { viewBox: "0 0 800 400", xmlns: "http://www.w3.org/2000/svg", className, children: [
7535
7535
  /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs("filter", { id: ids.glow, x: "-50%", y: "-50%", width: "200%", height: "200%", children: [
7536
7536
  /* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "2", result: "blur" }),
7537
7537
  /* @__PURE__ */ jsxRuntime.jsxs("feMerge", { children: [
@@ -7238,22 +7238,11 @@ var AvlEmitListen = ({
7238
7238
  style: animated ? { animation: "avl-el-dash 1s linear infinite" } : void 0
7239
7239
  }
7240
7240
  ),
7241
- /* @__PURE__ */ jsx(
7242
- AvlEffect,
7243
- {
7244
- x: leftCx + orbR + 20,
7245
- y: cy - 20,
7246
- effectType: "emit",
7247
- size: 6,
7248
- color,
7249
- opacity: 0.8
7250
- }
7251
- ),
7252
7241
  eventName && /* @__PURE__ */ jsxs(
7253
7242
  "text",
7254
7243
  {
7255
7244
  x: 300,
7256
- y: cy - 18,
7245
+ y: cy - 22,
7257
7246
  textAnchor: "middle",
7258
7247
  fill: color,
7259
7248
  fontSize: 11,
@@ -7266,6 +7255,17 @@ var AvlEmitListen = ({
7266
7255
  ]
7267
7256
  }
7268
7257
  ),
7258
+ /* @__PURE__ */ jsx(
7259
+ AvlEffect,
7260
+ {
7261
+ x: 300,
7262
+ y: cy - 46,
7263
+ effectType: "emit",
7264
+ size: 7,
7265
+ color,
7266
+ opacity: 0.6
7267
+ }
7268
+ ),
7269
7269
  /* @__PURE__ */ jsx(
7270
7270
  "text",
7271
7271
  {
@@ -7444,7 +7444,7 @@ function layoutTree(node, x, y, hSpacing, vSpacing) {
7444
7444
  const totalWidth = (children.length - 1) * hSpacing;
7445
7445
  const startX = x - totalWidth / 2;
7446
7446
  const layoutChildren = children.map(
7447
- (child, i) => layoutTree(child, startX + i * hSpacing, y + vSpacing, hSpacing * 0.75, vSpacing)
7447
+ (child, i) => layoutTree(child, startX + i * hSpacing, y + vSpacing, hSpacing * 0.85, vSpacing)
7448
7448
  );
7449
7449
  return { label: node.label, type: node.type, x, y, children: layoutChildren };
7450
7450
  }
@@ -7509,7 +7509,7 @@ function renderNode(node, color, glowId) {
7509
7509
  fontSize: node.type === "operator" ? 11 : 10,
7510
7510
  fontFamily: "inherit",
7511
7511
  fontWeight: node.type === "operator" ? "bold" : "normal",
7512
- children: node.type === "binding" ? `@${node.label}` : node.label
7512
+ children: node.type === "binding" && !node.label.startsWith("@") ? `@${node.label}` : node.label
7513
7513
  }
7514
7514
  ),
7515
7515
  node.children.map((child) => renderNode(child, color))
@@ -7524,8 +7524,8 @@ var AvlExprTree = ({
7524
7524
  avlEtId += 1;
7525
7525
  return { glow: `avl-et-${avlEtId}-glow` };
7526
7526
  }, []);
7527
- const layout = layoutTree(expression, 300, 60, 200, 90);
7528
- return /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 600 400", xmlns: "http://www.w3.org/2000/svg", className, children: [
7527
+ const layout = layoutTree(expression, 400, 60, 280, 100);
7528
+ return /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 800 400", xmlns: "http://www.w3.org/2000/svg", className, children: [
7529
7529
  /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("filter", { id: ids.glow, x: "-50%", y: "-50%", width: "200%", height: "200%", children: [
7530
7530
  /* @__PURE__ */ jsx("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "2", result: "blur" }),
7531
7531
  /* @__PURE__ */ jsxs("feMerge", { children: [
@@ -4587,9 +4587,10 @@ var PullQuote = ({
4587
4587
  };
4588
4588
  PullQuote.displayName = "PullQuote";
4589
4589
  function parseValue(value) {
4590
- const match = value.match(/^([^0-9]*)([0-9]+(?:\.[0-9]+)?)(.*)$/);
4590
+ if (!value) return { num: 0, prefix: "", suffix: "", decimals: 0 };
4591
+ const match = String(value).match(/^([^0-9]*)([0-9]+(?:\.[0-9]+)?)(.*)$/);
4591
4592
  if (!match) {
4592
- return { num: 0, prefix: "", suffix: value, decimals: 0 };
4593
+ return { num: 0, prefix: "", suffix: String(value), decimals: 0 };
4593
4594
  }
4594
4595
  const numStr = match[2];
4595
4596
  const decimalIdx = numStr.indexOf(".");
@@ -4563,9 +4563,10 @@ var PullQuote = ({
4563
4563
  };
4564
4564
  PullQuote.displayName = "PullQuote";
4565
4565
  function parseValue(value) {
4566
- const match = value.match(/^([^0-9]*)([0-9]+(?:\.[0-9]+)?)(.*)$/);
4566
+ if (!value) return { num: 0, prefix: "", suffix: "", decimals: 0 };
4567
+ const match = String(value).match(/^([^0-9]*)([0-9]+(?:\.[0-9]+)?)(.*)$/);
4567
4568
  if (!match) {
4568
- return { num: 0, prefix: "", suffix: value, decimals: 0 };
4569
+ return { num: 0, prefix: "", suffix: String(value), decimals: 0 };
4569
4570
  }
4570
4571
  const numStr = match[2];
4571
4572
  const decimalIdx = numStr.indexOf(".");
@@ -4637,12 +4637,13 @@ function easeOut(t) {
4637
4637
  return t * (2 - t);
4638
4638
  }
4639
4639
  var AnimatedCounter = ({
4640
- value,
4640
+ value: rawValue,
4641
4641
  duration = 600,
4642
4642
  prefix,
4643
4643
  suffix,
4644
4644
  className
4645
4645
  }) => {
4646
+ const value = typeof rawValue === "number" && !Number.isNaN(rawValue) ? rawValue : 0;
4646
4647
  const [displayValue, setDisplayValue] = React112.useState(value);
4647
4648
  const previousValueRef = React112.useRef(value);
4648
4649
  const animationFrameRef = React112.useRef(null);
@@ -14982,7 +14983,7 @@ var Tabs = ({
14982
14983
  ),
14983
14984
  children: [
14984
14985
  item.icon && /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: item.icon, size: "sm" }),
14985
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: isActive ? "semibold" : "normal", children: item.label }),
14986
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: isActive ? "semibold" : "normal", className: "!text-inherit", children: item.label }),
14986
14987
  item.badge !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", children: item.badge })
14987
14988
  ]
14988
14989
  },
@@ -19092,13 +19093,18 @@ function HealthPanel({
19092
19093
  }
19093
19094
  HealthPanel.displayName = "HealthPanel";
19094
19095
  function ScoreBoard({
19095
- score,
19096
- highScore,
19097
- combo,
19098
- multiplier,
19099
- level,
19096
+ score: rawScore,
19097
+ highScore: rawHighScore,
19098
+ combo: rawCombo,
19099
+ multiplier: rawMultiplier,
19100
+ level: rawLevel,
19100
19101
  className
19101
19102
  }) {
19103
+ const score = rawScore ?? 0;
19104
+ const highScore = rawHighScore ?? 0;
19105
+ const combo = rawCombo ?? 0;
19106
+ const multiplier = rawMultiplier ?? 1;
19107
+ const level = rawLevel ?? 1;
19102
19108
  return /* @__PURE__ */ jsxRuntime.jsx(
19103
19109
  Card,
19104
19110
  {
@@ -31380,7 +31386,9 @@ var PATTERNS_WITH_CHILDREN = /* @__PURE__ */ new Set([
31380
31386
  "simple-grid",
31381
31387
  "custom",
31382
31388
  "dashboard-layout",
31383
- "game-shell"
31389
+ "game-shell",
31390
+ "scaled-diagram",
31391
+ "master-detail"
31384
31392
  ]);
31385
31393
  function renderContainedPortal(slot, content, onDismiss) {
31386
31394
  const slotContent = /* @__PURE__ */ jsxRuntime.jsx(SlotContentRenderer, { content, onDismiss });
@@ -4607,12 +4607,13 @@ function easeOut(t) {
4607
4607
  return t * (2 - t);
4608
4608
  }
4609
4609
  var AnimatedCounter = ({
4610
- value,
4610
+ value: rawValue,
4611
4611
  duration = 600,
4612
4612
  prefix,
4613
4613
  suffix,
4614
4614
  className
4615
4615
  }) => {
4616
+ const value = typeof rawValue === "number" && !Number.isNaN(rawValue) ? rawValue : 0;
4616
4617
  const [displayValue, setDisplayValue] = useState(value);
4617
4618
  const previousValueRef = useRef(value);
4618
4619
  const animationFrameRef = useRef(null);
@@ -14952,7 +14953,7 @@ var Tabs = ({
14952
14953
  ),
14953
14954
  children: [
14954
14955
  item.icon && /* @__PURE__ */ jsx(Icon, { icon: item.icon, size: "sm" }),
14955
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: isActive ? "semibold" : "normal", children: item.label }),
14956
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: isActive ? "semibold" : "normal", className: "!text-inherit", children: item.label }),
14956
14957
  item.badge !== void 0 && /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", children: item.badge })
14957
14958
  ]
14958
14959
  },
@@ -19062,13 +19063,18 @@ function HealthPanel({
19062
19063
  }
19063
19064
  HealthPanel.displayName = "HealthPanel";
19064
19065
  function ScoreBoard({
19065
- score,
19066
- highScore,
19067
- combo,
19068
- multiplier,
19069
- level,
19066
+ score: rawScore,
19067
+ highScore: rawHighScore,
19068
+ combo: rawCombo,
19069
+ multiplier: rawMultiplier,
19070
+ level: rawLevel,
19070
19071
  className
19071
19072
  }) {
19073
+ const score = rawScore ?? 0;
19074
+ const highScore = rawHighScore ?? 0;
19075
+ const combo = rawCombo ?? 0;
19076
+ const multiplier = rawMultiplier ?? 1;
19077
+ const level = rawLevel ?? 1;
19072
19078
  return /* @__PURE__ */ jsx(
19073
19079
  Card,
19074
19080
  {
@@ -31350,7 +31356,9 @@ var PATTERNS_WITH_CHILDREN = /* @__PURE__ */ new Set([
31350
31356
  "simple-grid",
31351
31357
  "custom",
31352
31358
  "dashboard-layout",
31353
- "game-shell"
31359
+ "game-shell",
31360
+ "scaled-diagram",
31361
+ "master-detail"
31354
31362
  ]);
31355
31363
  function renderContainedPortal(slot, content, onDismiss) {
31356
31364
  const slotContent = /* @__PURE__ */ jsx(SlotContentRenderer, { content, onDismiss });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "2.21.0",
3
+ "version": "2.22.0",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "main": "./dist/components/index.js",