@almadar/ui 2.24.3 → 2.24.5

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.
@@ -232,15 +232,15 @@ Icon.displayName = "Icon";
232
232
  var variantStyles = {
233
233
  primary: [
234
234
  "bg-[var(--color-primary)] text-[var(--color-primary-foreground)]",
235
- "border-[length:var(--border-width)] border-[var(--color-border)]",
235
+ "border-none",
236
236
  "shadow-[var(--shadow-sm)]",
237
237
  "hover:bg-[var(--color-primary-hover)] hover:shadow-[var(--shadow-hover)]",
238
238
  "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
239
239
  ].join(" "),
240
240
  secondary: [
241
- "bg-transparent text-[var(--color-accent)]",
242
- "border-[length:var(--border-width)] border-[var(--color-accent)]",
243
- "hover:bg-[var(--color-accent)] hover:text-white",
241
+ "bg-[var(--color-muted)] text-[var(--color-foreground)]",
242
+ "border-none",
243
+ "hover:bg-[var(--color-muted-foreground)]/15 hover:text-[var(--color-foreground)]",
244
244
  "active:scale-[var(--active-scale)]"
245
245
  ].join(" "),
246
246
  ghost: [
@@ -590,14 +590,16 @@ var Checkbox = React88__namespace.default.forwardRef(
590
590
  Checkbox.displayName = "Checkbox";
591
591
  var variantStyles2 = {
592
592
  default: [
593
- "bg-[var(--color-card)] border-none",
593
+ "bg-[var(--color-card)]",
594
+ "border-[length:var(--border-width)] border-[var(--color-border)]",
595
+ "shadow-[var(--shadow-sm)]",
594
596
  "transition-all duration-[var(--transition-normal)]",
595
597
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
596
598
  ].join(" "),
597
599
  bordered: [
598
600
  "bg-[var(--color-card)]",
599
601
  "border-[length:var(--border-width)] border-[var(--color-border)]",
600
- "shadow-none",
602
+ "shadow-[var(--shadow-sm)]",
601
603
  "transition-all duration-[var(--transition-normal)]",
602
604
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
603
605
  ].join(" "),
@@ -3003,6 +3005,7 @@ var TypewriterText = ({
3003
3005
  className,
3004
3006
  onComplete
3005
3007
  }) => {
3008
+ const safeText = typeof text === "string" ? text : String(text ?? "");
3006
3009
  const [charCount, setCharCount] = React88.useState(0);
3007
3010
  const [started, setStarted] = React88.useState(startDelay === 0);
3008
3011
  const onCompleteRef = React88.useRef(onComplete);
@@ -3026,14 +3029,14 @@ var TypewriterText = ({
3026
3029
  }, [text]);
3027
3030
  React88.useEffect(() => {
3028
3031
  if (!started) return void 0;
3029
- if (charCount >= text.length) {
3032
+ if (charCount >= safeText.length) {
3030
3033
  onCompleteRef.current?.();
3031
3034
  return void 0;
3032
3035
  }
3033
3036
  const interval = window.setInterval(() => {
3034
3037
  setCharCount((prev) => {
3035
3038
  const next = prev + 1;
3036
- if (next >= text.length) {
3039
+ if (next >= safeText.length) {
3037
3040
  window.clearInterval(interval);
3038
3041
  }
3039
3042
  return next;
@@ -3043,8 +3046,8 @@ var TypewriterText = ({
3043
3046
  window.clearInterval(interval);
3044
3047
  };
3045
3048
  }, [started, text, speed, charCount]);
3046
- const isComplete = charCount >= text.length;
3047
- const displayedText = text.slice(0, charCount);
3049
+ const isComplete = charCount >= safeText.length;
3050
+ const displayedText = safeText.slice(0, charCount);
3048
3051
  return /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "body", className: cn("inline", className), children: [
3049
3052
  displayedText,
3050
3053
  !isComplete && /* @__PURE__ */ jsxRuntime.jsx(
@@ -8255,6 +8258,7 @@ WizardNavigation.displayName = "WizardNavigation";
8255
8258
  var MarkdownContent = React88__namespace.default.memo(
8256
8259
  ({ content, direction, className }) => {
8257
8260
  const { t: _t } = useTranslate();
8261
+ const safeContent = typeof content === "string" ? content : String(content ?? "");
8258
8262
  return /* @__PURE__ */ jsxRuntime.jsx(
8259
8263
  Box,
8260
8264
  {
@@ -8344,7 +8348,7 @@ var MarkdownContent = React88__namespace.default.memo(
8344
8348
  );
8345
8349
  }
8346
8350
  },
8347
- children: content
8351
+ children: safeContent
8348
8352
  }
8349
8353
  )
8350
8354
  }
@@ -8355,13 +8359,14 @@ var MarkdownContent = React88__namespace.default.memo(
8355
8359
  MarkdownContent.displayName = "MarkdownContent";
8356
8360
  var CodeBlock = React88__namespace.default.memo(
8357
8361
  ({
8358
- code,
8362
+ code: rawCode,
8359
8363
  language = "text",
8360
8364
  showCopyButton = true,
8361
8365
  showLanguageBadge = true,
8362
8366
  maxHeight = "60vh",
8363
8367
  className
8364
8368
  }) => {
8369
+ const code = typeof rawCode === "string" ? rawCode : String(rawCode ?? "");
8365
8370
  const eventBus = useEventBus();
8366
8371
  const { t: _t } = useTranslate();
8367
8372
  const scrollRef = React88.useRef(null);
@@ -10700,21 +10705,22 @@ function CombatLog({
10700
10705
  ] })
10701
10706
  ] }) }),
10702
10707
  /* @__PURE__ */ jsxRuntime.jsx(Box, { ref: scrollRef, overflow: "auto", className: "flex-1 max-h-64", children: visibleEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "md", className: "text-center opacity-50", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", children: "No events yet" }) }) : /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "xs", className: "space-y-1", children: visibleEvents.map((event) => {
10703
- const EventIcon = eventIcons[event.type];
10704
- const colorClass = eventColors[event.type];
10708
+ const eventType = event.type && event.type in eventIcons ? event.type : "attack";
10709
+ const EventIcon = eventIcons[eventType];
10710
+ const colorClass = eventColors[eventType];
10705
10711
  return /* @__PURE__ */ jsxRuntime.jsxs(
10706
10712
  Box,
10707
10713
  {
10708
10714
  display: "flex",
10709
10715
  padding: "xs",
10710
10716
  rounded: "sm",
10711
- className: cn("items-start gap-2 hover:bg-[var(--color-muted)] transition-colors", event.type === "death" && "opacity-60"),
10717
+ className: cn("items-start gap-2 hover:bg-[var(--color-muted)] transition-colors", eventType === "death" && "opacity-60"),
10712
10718
  children: [
10713
10719
  /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex-shrink-0 mt-0.5", colorClass), children: /* @__PURE__ */ jsxRuntime.jsx(EventIcon, { className: "h-4 w-4" }) }),
10714
10720
  /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex-1 min-w-0", children: [
10715
10721
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "block", children: event.message }),
10716
- event.value !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: eventBadgeVariants[event.type], size: "sm", className: "mt-1", children: [
10717
- event.type === "heal" ? "+" : event.type === "attack" ? "-" : "",
10722
+ event.value !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: eventBadgeVariants[eventType], size: "sm", className: "mt-1", children: [
10723
+ eventType === "heal" ? "+" : eventType === "attack" ? "-" : "",
10718
10724
  event.value
10719
10725
  ] })
10720
10726
  ] }),
@@ -15426,7 +15432,7 @@ var HeroSection = ({
15426
15432
  src: image.src,
15427
15433
  alt: image.alt,
15428
15434
  className: cn(
15429
- imagePosition === "right" ? "flex-1 min-h-[300px]" : "w-full min-h-[400px]"
15435
+ imagePosition === "right" ? "w-full max-w-[280px] max-h-[280px]" : "w-full min-h-[400px]"
15430
15436
  )
15431
15437
  }
15432
15438
  );
@@ -202,15 +202,15 @@ Icon.displayName = "Icon";
202
202
  var variantStyles = {
203
203
  primary: [
204
204
  "bg-[var(--color-primary)] text-[var(--color-primary-foreground)]",
205
- "border-[length:var(--border-width)] border-[var(--color-border)]",
205
+ "border-none",
206
206
  "shadow-[var(--shadow-sm)]",
207
207
  "hover:bg-[var(--color-primary-hover)] hover:shadow-[var(--shadow-hover)]",
208
208
  "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
209
209
  ].join(" "),
210
210
  secondary: [
211
- "bg-transparent text-[var(--color-accent)]",
212
- "border-[length:var(--border-width)] border-[var(--color-accent)]",
213
- "hover:bg-[var(--color-accent)] hover:text-white",
211
+ "bg-[var(--color-muted)] text-[var(--color-foreground)]",
212
+ "border-none",
213
+ "hover:bg-[var(--color-muted-foreground)]/15 hover:text-[var(--color-foreground)]",
214
214
  "active:scale-[var(--active-scale)]"
215
215
  ].join(" "),
216
216
  ghost: [
@@ -560,14 +560,16 @@ var Checkbox = React88__default.forwardRef(
560
560
  Checkbox.displayName = "Checkbox";
561
561
  var variantStyles2 = {
562
562
  default: [
563
- "bg-[var(--color-card)] border-none",
563
+ "bg-[var(--color-card)]",
564
+ "border-[length:var(--border-width)] border-[var(--color-border)]",
565
+ "shadow-[var(--shadow-sm)]",
564
566
  "transition-all duration-[var(--transition-normal)]",
565
567
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
566
568
  ].join(" "),
567
569
  bordered: [
568
570
  "bg-[var(--color-card)]",
569
571
  "border-[length:var(--border-width)] border-[var(--color-border)]",
570
- "shadow-none",
572
+ "shadow-[var(--shadow-sm)]",
571
573
  "transition-all duration-[var(--transition-normal)]",
572
574
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
573
575
  ].join(" "),
@@ -2973,6 +2975,7 @@ var TypewriterText = ({
2973
2975
  className,
2974
2976
  onComplete
2975
2977
  }) => {
2978
+ const safeText = typeof text === "string" ? text : String(text ?? "");
2976
2979
  const [charCount, setCharCount] = useState(0);
2977
2980
  const [started, setStarted] = useState(startDelay === 0);
2978
2981
  const onCompleteRef = useRef(onComplete);
@@ -2996,14 +2999,14 @@ var TypewriterText = ({
2996
2999
  }, [text]);
2997
3000
  useEffect(() => {
2998
3001
  if (!started) return void 0;
2999
- if (charCount >= text.length) {
3002
+ if (charCount >= safeText.length) {
3000
3003
  onCompleteRef.current?.();
3001
3004
  return void 0;
3002
3005
  }
3003
3006
  const interval = window.setInterval(() => {
3004
3007
  setCharCount((prev) => {
3005
3008
  const next = prev + 1;
3006
- if (next >= text.length) {
3009
+ if (next >= safeText.length) {
3007
3010
  window.clearInterval(interval);
3008
3011
  }
3009
3012
  return next;
@@ -3013,8 +3016,8 @@ var TypewriterText = ({
3013
3016
  window.clearInterval(interval);
3014
3017
  };
3015
3018
  }, [started, text, speed, charCount]);
3016
- const isComplete = charCount >= text.length;
3017
- const displayedText = text.slice(0, charCount);
3019
+ const isComplete = charCount >= safeText.length;
3020
+ const displayedText = safeText.slice(0, charCount);
3018
3021
  return /* @__PURE__ */ jsxs(Typography, { variant: "body", className: cn("inline", className), children: [
3019
3022
  displayedText,
3020
3023
  !isComplete && /* @__PURE__ */ jsx(
@@ -8225,6 +8228,7 @@ WizardNavigation.displayName = "WizardNavigation";
8225
8228
  var MarkdownContent = React88__default.memo(
8226
8229
  ({ content, direction, className }) => {
8227
8230
  const { t: _t } = useTranslate();
8231
+ const safeContent = typeof content === "string" ? content : String(content ?? "");
8228
8232
  return /* @__PURE__ */ jsx(
8229
8233
  Box,
8230
8234
  {
@@ -8314,7 +8318,7 @@ var MarkdownContent = React88__default.memo(
8314
8318
  );
8315
8319
  }
8316
8320
  },
8317
- children: content
8321
+ children: safeContent
8318
8322
  }
8319
8323
  )
8320
8324
  }
@@ -8325,13 +8329,14 @@ var MarkdownContent = React88__default.memo(
8325
8329
  MarkdownContent.displayName = "MarkdownContent";
8326
8330
  var CodeBlock = React88__default.memo(
8327
8331
  ({
8328
- code,
8332
+ code: rawCode,
8329
8333
  language = "text",
8330
8334
  showCopyButton = true,
8331
8335
  showLanguageBadge = true,
8332
8336
  maxHeight = "60vh",
8333
8337
  className
8334
8338
  }) => {
8339
+ const code = typeof rawCode === "string" ? rawCode : String(rawCode ?? "");
8335
8340
  const eventBus = useEventBus();
8336
8341
  const { t: _t } = useTranslate();
8337
8342
  const scrollRef = useRef(null);
@@ -10670,21 +10675,22 @@ function CombatLog({
10670
10675
  ] })
10671
10676
  ] }) }),
10672
10677
  /* @__PURE__ */ jsx(Box, { ref: scrollRef, overflow: "auto", className: "flex-1 max-h-64", children: visibleEvents.length === 0 ? /* @__PURE__ */ jsx(Box, { padding: "md", className: "text-center opacity-50", children: /* @__PURE__ */ jsx(Typography, { variant: "body2", children: "No events yet" }) }) : /* @__PURE__ */ jsx(Box, { padding: "xs", className: "space-y-1", children: visibleEvents.map((event) => {
10673
- const EventIcon = eventIcons[event.type];
10674
- const colorClass = eventColors[event.type];
10678
+ const eventType = event.type && event.type in eventIcons ? event.type : "attack";
10679
+ const EventIcon = eventIcons[eventType];
10680
+ const colorClass = eventColors[eventType];
10675
10681
  return /* @__PURE__ */ jsxs(
10676
10682
  Box,
10677
10683
  {
10678
10684
  display: "flex",
10679
10685
  padding: "xs",
10680
10686
  rounded: "sm",
10681
- className: cn("items-start gap-2 hover:bg-[var(--color-muted)] transition-colors", event.type === "death" && "opacity-60"),
10687
+ className: cn("items-start gap-2 hover:bg-[var(--color-muted)] transition-colors", eventType === "death" && "opacity-60"),
10682
10688
  children: [
10683
10689
  /* @__PURE__ */ jsx(Box, { className: cn("flex-shrink-0 mt-0.5", colorClass), children: /* @__PURE__ */ jsx(EventIcon, { className: "h-4 w-4" }) }),
10684
10690
  /* @__PURE__ */ jsxs(Box, { className: "flex-1 min-w-0", children: [
10685
10691
  /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "block", children: event.message }),
10686
- event.value !== void 0 && /* @__PURE__ */ jsxs(Badge, { variant: eventBadgeVariants[event.type], size: "sm", className: "mt-1", children: [
10687
- event.type === "heal" ? "+" : event.type === "attack" ? "-" : "",
10692
+ event.value !== void 0 && /* @__PURE__ */ jsxs(Badge, { variant: eventBadgeVariants[eventType], size: "sm", className: "mt-1", children: [
10693
+ eventType === "heal" ? "+" : eventType === "attack" ? "-" : "",
10688
10694
  event.value
10689
10695
  ] })
10690
10696
  ] }),
@@ -15396,7 +15402,7 @@ var HeroSection = ({
15396
15402
  src: image.src,
15397
15403
  alt: image.alt,
15398
15404
  className: cn(
15399
- imagePosition === "right" ? "flex-1 min-h-[300px]" : "w-full min-h-[400px]"
15405
+ imagePosition === "right" ? "w-full max-w-[280px] max-h-[280px]" : "w-full min-h-[400px]"
15400
15406
  )
15401
15407
  }
15402
15408
  );
@@ -4204,7 +4204,7 @@ var Avl3DCrossWire = ({
4204
4204
  }, [from, to]);
4205
4205
  return /* @__PURE__ */ jsxRuntime.jsxs("group", { children: [
4206
4206
  /* @__PURE__ */ jsxRuntime.jsxs("mesh", { children: [
4207
- /* @__PURE__ */ jsxRuntime.jsx("tubeGeometry", { args: [...tubeArgs] }),
4207
+ /* @__PURE__ */ jsxRuntime.jsx("tubeGeometry", { args: tubeArgs }),
4208
4208
  /* @__PURE__ */ jsxRuntime.jsx(
4209
4209
  "meshStandardMaterial",
4210
4210
  {
@@ -4917,7 +4917,7 @@ var Avl3DTransitionArc = ({
4917
4917
  document.body.style.cursor = "auto";
4918
4918
  },
4919
4919
  children: [
4920
- /* @__PURE__ */ jsxRuntime.jsx("tubeGeometry", { args: [...tubeArgs] }),
4920
+ /* @__PURE__ */ jsxRuntime.jsx("tubeGeometry", { args: tubeArgs }),
4921
4921
  /* @__PURE__ */ jsxRuntime.jsx(
4922
4922
  "meshStandardMaterial",
4923
4923
  {
@@ -4180,7 +4180,7 @@ var Avl3DCrossWire = ({
4180
4180
  }, [from, to]);
4181
4181
  return /* @__PURE__ */ jsxs("group", { children: [
4182
4182
  /* @__PURE__ */ jsxs("mesh", { children: [
4183
- /* @__PURE__ */ jsx("tubeGeometry", { args: [...tubeArgs] }),
4183
+ /* @__PURE__ */ jsx("tubeGeometry", { args: tubeArgs }),
4184
4184
  /* @__PURE__ */ jsx(
4185
4185
  "meshStandardMaterial",
4186
4186
  {
@@ -4893,7 +4893,7 @@ var Avl3DTransitionArc = ({
4893
4893
  document.body.style.cursor = "auto";
4894
4894
  },
4895
4895
  children: [
4896
- /* @__PURE__ */ jsx("tubeGeometry", { args: [...tubeArgs] }),
4896
+ /* @__PURE__ */ jsx("tubeGeometry", { args: tubeArgs }),
4897
4897
  /* @__PURE__ */ jsx(
4898
4898
  "meshStandardMaterial",
4899
4899
  {
@@ -3041,15 +3041,15 @@ Icon.displayName = "Icon";
3041
3041
  var variantStyles2 = {
3042
3042
  primary: [
3043
3043
  "bg-[var(--color-primary)] text-[var(--color-primary-foreground)]",
3044
- "border-[length:var(--border-width)] border-[var(--color-border)]",
3044
+ "border-none",
3045
3045
  "shadow-[var(--shadow-sm)]",
3046
3046
  "hover:bg-[var(--color-primary-hover)] hover:shadow-[var(--shadow-hover)]",
3047
3047
  "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
3048
3048
  ].join(" "),
3049
3049
  secondary: [
3050
- "bg-transparent text-[var(--color-accent)]",
3051
- "border-[length:var(--border-width)] border-[var(--color-accent)]",
3052
- "hover:bg-[var(--color-accent)] hover:text-white",
3050
+ "bg-[var(--color-muted)] text-[var(--color-foreground)]",
3051
+ "border-none",
3052
+ "hover:bg-[var(--color-muted-foreground)]/15 hover:text-[var(--color-foreground)]",
3053
3053
  "active:scale-[var(--active-scale)]"
3054
3054
  ].join(" "),
3055
3055
  ghost: [
@@ -3176,14 +3176,16 @@ var Button = React4__default.default.forwardRef(
3176
3176
  Button.displayName = "Button";
3177
3177
  var variantStyles3 = {
3178
3178
  default: [
3179
- "bg-[var(--color-card)] border-none",
3179
+ "bg-[var(--color-card)]",
3180
+ "border-[length:var(--border-width)] border-[var(--color-border)]",
3181
+ "shadow-[var(--shadow-sm)]",
3180
3182
  "transition-all duration-[var(--transition-normal)]",
3181
3183
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
3182
3184
  ].join(" "),
3183
3185
  bordered: [
3184
3186
  "bg-[var(--color-card)]",
3185
3187
  "border-[length:var(--border-width)] border-[var(--color-border)]",
3186
- "shadow-none",
3188
+ "shadow-[var(--shadow-sm)]",
3187
3189
  "transition-all duration-[var(--transition-normal)]",
3188
3190
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
3189
3191
  ].join(" "),
@@ -3017,15 +3017,15 @@ Icon.displayName = "Icon";
3017
3017
  var variantStyles2 = {
3018
3018
  primary: [
3019
3019
  "bg-[var(--color-primary)] text-[var(--color-primary-foreground)]",
3020
- "border-[length:var(--border-width)] border-[var(--color-border)]",
3020
+ "border-none",
3021
3021
  "shadow-[var(--shadow-sm)]",
3022
3022
  "hover:bg-[var(--color-primary-hover)] hover:shadow-[var(--shadow-hover)]",
3023
3023
  "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
3024
3024
  ].join(" "),
3025
3025
  secondary: [
3026
- "bg-transparent text-[var(--color-accent)]",
3027
- "border-[length:var(--border-width)] border-[var(--color-accent)]",
3028
- "hover:bg-[var(--color-accent)] hover:text-white",
3026
+ "bg-[var(--color-muted)] text-[var(--color-foreground)]",
3027
+ "border-none",
3028
+ "hover:bg-[var(--color-muted-foreground)]/15 hover:text-[var(--color-foreground)]",
3029
3029
  "active:scale-[var(--active-scale)]"
3030
3030
  ].join(" "),
3031
3031
  ghost: [
@@ -3152,14 +3152,16 @@ var Button = React4.forwardRef(
3152
3152
  Button.displayName = "Button";
3153
3153
  var variantStyles3 = {
3154
3154
  default: [
3155
- "bg-[var(--color-card)] border-none",
3155
+ "bg-[var(--color-card)]",
3156
+ "border-[length:var(--border-width)] border-[var(--color-border)]",
3157
+ "shadow-[var(--shadow-sm)]",
3156
3158
  "transition-all duration-[var(--transition-normal)]",
3157
3159
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
3158
3160
  ].join(" "),
3159
3161
  bordered: [
3160
3162
  "bg-[var(--color-card)]",
3161
3163
  "border-[length:var(--border-width)] border-[var(--color-border)]",
3162
- "shadow-none",
3164
+ "shadow-[var(--shadow-sm)]",
3163
3165
  "transition-all duration-[var(--transition-normal)]",
3164
3166
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
3165
3167
  ].join(" "),
@@ -3041,15 +3041,15 @@ Icon.displayName = "Icon";
3041
3041
  var variantStyles2 = {
3042
3042
  primary: [
3043
3043
  "bg-[var(--color-primary)] text-[var(--color-primary-foreground)]",
3044
- "border-[length:var(--border-width)] border-[var(--color-border)]",
3044
+ "border-none",
3045
3045
  "shadow-[var(--shadow-sm)]",
3046
3046
  "hover:bg-[var(--color-primary-hover)] hover:shadow-[var(--shadow-hover)]",
3047
3047
  "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
3048
3048
  ].join(" "),
3049
3049
  secondary: [
3050
- "bg-transparent text-[var(--color-accent)]",
3051
- "border-[length:var(--border-width)] border-[var(--color-accent)]",
3052
- "hover:bg-[var(--color-accent)] hover:text-white",
3050
+ "bg-[var(--color-muted)] text-[var(--color-foreground)]",
3051
+ "border-none",
3052
+ "hover:bg-[var(--color-muted-foreground)]/15 hover:text-[var(--color-foreground)]",
3053
3053
  "active:scale-[var(--active-scale)]"
3054
3054
  ].join(" "),
3055
3055
  ghost: [
@@ -3240,14 +3240,16 @@ var Badge = React5__default.default.forwardRef(
3240
3240
  Badge.displayName = "Badge";
3241
3241
  var variantStyles4 = {
3242
3242
  default: [
3243
- "bg-[var(--color-card)] border-none",
3243
+ "bg-[var(--color-card)]",
3244
+ "border-[length:var(--border-width)] border-[var(--color-border)]",
3245
+ "shadow-[var(--shadow-sm)]",
3244
3246
  "transition-all duration-[var(--transition-normal)]",
3245
3247
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
3246
3248
  ].join(" "),
3247
3249
  bordered: [
3248
3250
  "bg-[var(--color-card)]",
3249
3251
  "border-[length:var(--border-width)] border-[var(--color-border)]",
3250
- "shadow-none",
3252
+ "shadow-[var(--shadow-sm)]",
3251
3253
  "transition-all duration-[var(--transition-normal)]",
3252
3254
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
3253
3255
  ].join(" "),
@@ -3687,7 +3689,7 @@ var HeroSection = ({
3687
3689
  src: image.src,
3688
3690
  alt: image.alt,
3689
3691
  className: cn(
3690
- imagePosition === "right" ? "flex-1 min-h-[300px]" : "w-full min-h-[400px]"
3692
+ imagePosition === "right" ? "w-full max-w-[280px] max-h-[280px]" : "w-full min-h-[400px]"
3691
3693
  )
3692
3694
  }
3693
3695
  );
@@ -3017,15 +3017,15 @@ Icon.displayName = "Icon";
3017
3017
  var variantStyles2 = {
3018
3018
  primary: [
3019
3019
  "bg-[var(--color-primary)] text-[var(--color-primary-foreground)]",
3020
- "border-[length:var(--border-width)] border-[var(--color-border)]",
3020
+ "border-none",
3021
3021
  "shadow-[var(--shadow-sm)]",
3022
3022
  "hover:bg-[var(--color-primary-hover)] hover:shadow-[var(--shadow-hover)]",
3023
3023
  "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
3024
3024
  ].join(" "),
3025
3025
  secondary: [
3026
- "bg-transparent text-[var(--color-accent)]",
3027
- "border-[length:var(--border-width)] border-[var(--color-accent)]",
3028
- "hover:bg-[var(--color-accent)] hover:text-white",
3026
+ "bg-[var(--color-muted)] text-[var(--color-foreground)]",
3027
+ "border-none",
3028
+ "hover:bg-[var(--color-muted-foreground)]/15 hover:text-[var(--color-foreground)]",
3029
3029
  "active:scale-[var(--active-scale)]"
3030
3030
  ].join(" "),
3031
3031
  ghost: [
@@ -3216,14 +3216,16 @@ var Badge = React5.forwardRef(
3216
3216
  Badge.displayName = "Badge";
3217
3217
  var variantStyles4 = {
3218
3218
  default: [
3219
- "bg-[var(--color-card)] border-none",
3219
+ "bg-[var(--color-card)]",
3220
+ "border-[length:var(--border-width)] border-[var(--color-border)]",
3221
+ "shadow-[var(--shadow-sm)]",
3220
3222
  "transition-all duration-[var(--transition-normal)]",
3221
3223
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
3222
3224
  ].join(" "),
3223
3225
  bordered: [
3224
3226
  "bg-[var(--color-card)]",
3225
3227
  "border-[length:var(--border-width)] border-[var(--color-border)]",
3226
- "shadow-none",
3228
+ "shadow-[var(--shadow-sm)]",
3227
3229
  "transition-all duration-[var(--transition-normal)]",
3228
3230
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
3229
3231
  ].join(" "),
@@ -3663,7 +3665,7 @@ var HeroSection = ({
3663
3665
  src: image.src,
3664
3666
  alt: image.alt,
3665
3667
  className: cn(
3666
- imagePosition === "right" ? "flex-1 min-h-[300px]" : "w-full min-h-[400px]"
3668
+ imagePosition === "right" ? "w-full max-w-[280px] max-h-[280px]" : "w-full min-h-[400px]"
3667
3669
  )
3668
3670
  }
3669
3671
  );
@@ -908,15 +908,15 @@ Typography.displayName = "Typography";
908
908
  var variantStyles2 = {
909
909
  primary: [
910
910
  "bg-[var(--color-primary)] text-[var(--color-primary-foreground)]",
911
- "border-[length:var(--border-width)] border-[var(--color-border)]",
911
+ "border-none",
912
912
  "shadow-[var(--shadow-sm)]",
913
913
  "hover:bg-[var(--color-primary-hover)] hover:shadow-[var(--shadow-hover)]",
914
914
  "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
915
915
  ].join(" "),
916
916
  secondary: [
917
- "bg-transparent text-[var(--color-accent)]",
918
- "border-[length:var(--border-width)] border-[var(--color-accent)]",
919
- "hover:bg-[var(--color-accent)] hover:text-white",
917
+ "bg-[var(--color-muted)] text-[var(--color-foreground)]",
918
+ "border-none",
919
+ "hover:bg-[var(--color-muted-foreground)]/15 hover:text-[var(--color-foreground)]",
920
920
  "active:scale-[var(--active-scale)]"
921
921
  ].join(" "),
922
922
  ghost: [
@@ -1330,14 +1330,16 @@ var Checkbox = React110__namespace.default.forwardRef(
1330
1330
  Checkbox.displayName = "Checkbox";
1331
1331
  var variantStyles4 = {
1332
1332
  default: [
1333
- "bg-[var(--color-card)] border-none",
1333
+ "bg-[var(--color-card)]",
1334
+ "border-[length:var(--border-width)] border-[var(--color-border)]",
1335
+ "shadow-[var(--shadow-sm)]",
1334
1336
  "transition-all duration-[var(--transition-normal)]",
1335
1337
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
1336
1338
  ].join(" "),
1337
1339
  bordered: [
1338
1340
  "bg-[var(--color-card)]",
1339
1341
  "border-[length:var(--border-width)] border-[var(--color-border)]",
1340
- "shadow-none",
1342
+ "shadow-[var(--shadow-sm)]",
1341
1343
  "transition-all duration-[var(--transition-normal)]",
1342
1344
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
1343
1345
  ].join(" "),
@@ -2796,6 +2798,7 @@ exposeOnWindow();
2796
2798
  var MarkdownContent = React110__namespace.default.memo(
2797
2799
  ({ content, direction, className }) => {
2798
2800
  const { t: _t } = useTranslate();
2801
+ const safeContent = typeof content === "string" ? content : String(content ?? "");
2799
2802
  return /* @__PURE__ */ jsxRuntime.jsx(
2800
2803
  Box,
2801
2804
  {
@@ -2885,7 +2888,7 @@ var MarkdownContent = React110__namespace.default.memo(
2885
2888
  );
2886
2889
  }
2887
2890
  },
2888
- children: content
2891
+ children: safeContent
2889
2892
  }
2890
2893
  )
2891
2894
  }
@@ -2896,13 +2899,14 @@ var MarkdownContent = React110__namespace.default.memo(
2896
2899
  MarkdownContent.displayName = "MarkdownContent";
2897
2900
  var CodeBlock = React110__namespace.default.memo(
2898
2901
  ({
2899
- code,
2902
+ code: rawCode,
2900
2903
  language = "text",
2901
2904
  showCopyButton = true,
2902
2905
  showLanguageBadge = true,
2903
2906
  maxHeight = "60vh",
2904
2907
  className
2905
2908
  }) => {
2909
+ const code = typeof rawCode === "string" ? rawCode : String(rawCode ?? "");
2906
2910
  const eventBus = useEventBus();
2907
2911
  const { t: _t } = useTranslate();
2908
2912
  const scrollRef = React110.useRef(null);
@@ -878,15 +878,15 @@ Typography.displayName = "Typography";
878
878
  var variantStyles2 = {
879
879
  primary: [
880
880
  "bg-[var(--color-primary)] text-[var(--color-primary-foreground)]",
881
- "border-[length:var(--border-width)] border-[var(--color-border)]",
881
+ "border-none",
882
882
  "shadow-[var(--shadow-sm)]",
883
883
  "hover:bg-[var(--color-primary-hover)] hover:shadow-[var(--shadow-hover)]",
884
884
  "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
885
885
  ].join(" "),
886
886
  secondary: [
887
- "bg-transparent text-[var(--color-accent)]",
888
- "border-[length:var(--border-width)] border-[var(--color-accent)]",
889
- "hover:bg-[var(--color-accent)] hover:text-white",
887
+ "bg-[var(--color-muted)] text-[var(--color-foreground)]",
888
+ "border-none",
889
+ "hover:bg-[var(--color-muted-foreground)]/15 hover:text-[var(--color-foreground)]",
890
890
  "active:scale-[var(--active-scale)]"
891
891
  ].join(" "),
892
892
  ghost: [
@@ -1300,14 +1300,16 @@ var Checkbox = React110__default.forwardRef(
1300
1300
  Checkbox.displayName = "Checkbox";
1301
1301
  var variantStyles4 = {
1302
1302
  default: [
1303
- "bg-[var(--color-card)] border-none",
1303
+ "bg-[var(--color-card)]",
1304
+ "border-[length:var(--border-width)] border-[var(--color-border)]",
1305
+ "shadow-[var(--shadow-sm)]",
1304
1306
  "transition-all duration-[var(--transition-normal)]",
1305
1307
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
1306
1308
  ].join(" "),
1307
1309
  bordered: [
1308
1310
  "bg-[var(--color-card)]",
1309
1311
  "border-[length:var(--border-width)] border-[var(--color-border)]",
1310
- "shadow-none",
1312
+ "shadow-[var(--shadow-sm)]",
1311
1313
  "transition-all duration-[var(--transition-normal)]",
1312
1314
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
1313
1315
  ].join(" "),
@@ -2766,6 +2768,7 @@ exposeOnWindow();
2766
2768
  var MarkdownContent = React110__default.memo(
2767
2769
  ({ content, direction, className }) => {
2768
2770
  const { t: _t } = useTranslate();
2771
+ const safeContent = typeof content === "string" ? content : String(content ?? "");
2769
2772
  return /* @__PURE__ */ jsx(
2770
2773
  Box,
2771
2774
  {
@@ -2855,7 +2858,7 @@ var MarkdownContent = React110__default.memo(
2855
2858
  );
2856
2859
  }
2857
2860
  },
2858
- children: content
2861
+ children: safeContent
2859
2862
  }
2860
2863
  )
2861
2864
  }
@@ -2866,13 +2869,14 @@ var MarkdownContent = React110__default.memo(
2866
2869
  MarkdownContent.displayName = "MarkdownContent";
2867
2870
  var CodeBlock = React110__default.memo(
2868
2871
  ({
2869
- code,
2872
+ code: rawCode,
2870
2873
  language = "text",
2871
2874
  showCopyButton = true,
2872
2875
  showLanguageBadge = true,
2873
2876
  maxHeight = "60vh",
2874
2877
  className
2875
2878
  }) => {
2879
+ const code = typeof rawCode === "string" ? rawCode : String(rawCode ?? "");
2876
2880
  const eventBus = useEventBus();
2877
2881
  const { t: _t } = useTranslate();
2878
2882
  const scrollRef = useRef(null);
@@ -2614,15 +2614,15 @@ Drawer.displayName = "Drawer";
2614
2614
  var variantStyles2 = {
2615
2615
  primary: [
2616
2616
  "bg-[var(--color-primary)] text-[var(--color-primary-foreground)]",
2617
- "border-[length:var(--border-width)] border-[var(--color-border)]",
2617
+ "border-none",
2618
2618
  "shadow-[var(--shadow-sm)]",
2619
2619
  "hover:bg-[var(--color-primary-hover)] hover:shadow-[var(--shadow-hover)]",
2620
2620
  "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
2621
2621
  ].join(" "),
2622
2622
  secondary: [
2623
- "bg-transparent text-[var(--color-accent)]",
2624
- "border-[length:var(--border-width)] border-[var(--color-accent)]",
2625
- "hover:bg-[var(--color-accent)] hover:text-white",
2623
+ "bg-[var(--color-muted)] text-[var(--color-foreground)]",
2624
+ "border-none",
2625
+ "hover:bg-[var(--color-muted-foreground)]/15 hover:text-[var(--color-foreground)]",
2626
2626
  "active:scale-[var(--active-scale)]"
2627
2627
  ].join(" "),
2628
2628
  ghost: [
@@ -3132,14 +3132,16 @@ var Checkbox = React114__namespace.default.forwardRef(
3132
3132
  Checkbox.displayName = "Checkbox";
3133
3133
  var variantStyles4 = {
3134
3134
  default: [
3135
- "bg-[var(--color-card)] border-none",
3135
+ "bg-[var(--color-card)]",
3136
+ "border-[length:var(--border-width)] border-[var(--color-border)]",
3137
+ "shadow-[var(--shadow-sm)]",
3136
3138
  "transition-all duration-[var(--transition-normal)]",
3137
3139
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
3138
3140
  ].join(" "),
3139
3141
  bordered: [
3140
3142
  "bg-[var(--color-card)]",
3141
3143
  "border-[length:var(--border-width)] border-[var(--color-border)]",
3142
- "shadow-none",
3144
+ "shadow-[var(--shadow-sm)]",
3143
3145
  "transition-all duration-[var(--transition-normal)]",
3144
3146
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
3145
3147
  ].join(" "),
@@ -4826,6 +4828,7 @@ var TypewriterText = ({
4826
4828
  className,
4827
4829
  onComplete
4828
4830
  }) => {
4831
+ const safeText = typeof text === "string" ? text : String(text ?? "");
4829
4832
  const [charCount, setCharCount] = React114.useState(0);
4830
4833
  const [started, setStarted] = React114.useState(startDelay === 0);
4831
4834
  const onCompleteRef = React114.useRef(onComplete);
@@ -4849,14 +4852,14 @@ var TypewriterText = ({
4849
4852
  }, [text]);
4850
4853
  React114.useEffect(() => {
4851
4854
  if (!started) return void 0;
4852
- if (charCount >= text.length) {
4855
+ if (charCount >= safeText.length) {
4853
4856
  onCompleteRef.current?.();
4854
4857
  return void 0;
4855
4858
  }
4856
4859
  const interval = window.setInterval(() => {
4857
4860
  setCharCount((prev) => {
4858
4861
  const next = prev + 1;
4859
- if (next >= text.length) {
4862
+ if (next >= safeText.length) {
4860
4863
  window.clearInterval(interval);
4861
4864
  }
4862
4865
  return next;
@@ -4866,8 +4869,8 @@ var TypewriterText = ({
4866
4869
  window.clearInterval(interval);
4867
4870
  };
4868
4871
  }, [started, text, speed, charCount]);
4869
- const isComplete = charCount >= text.length;
4870
- const displayedText = text.slice(0, charCount);
4872
+ const isComplete = charCount >= safeText.length;
4873
+ const displayedText = safeText.slice(0, charCount);
4871
4874
  return /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "body", className: cn("inline", className), children: [
4872
4875
  displayedText,
4873
4876
  !isComplete && /* @__PURE__ */ jsxRuntime.jsx(
@@ -9253,6 +9256,7 @@ ScaledDiagram.displayName = "ScaledDiagram";
9253
9256
  var MarkdownContent = React114__namespace.default.memo(
9254
9257
  ({ content, direction, className }) => {
9255
9258
  const { t: _t } = useTranslate();
9259
+ const safeContent = typeof content === "string" ? content : String(content ?? "");
9256
9260
  return /* @__PURE__ */ jsxRuntime.jsx(
9257
9261
  Box,
9258
9262
  {
@@ -9342,7 +9346,7 @@ var MarkdownContent = React114__namespace.default.memo(
9342
9346
  );
9343
9347
  }
9344
9348
  },
9345
- children: content
9349
+ children: safeContent
9346
9350
  }
9347
9351
  )
9348
9352
  }
@@ -9353,13 +9357,14 @@ var MarkdownContent = React114__namespace.default.memo(
9353
9357
  MarkdownContent.displayName = "MarkdownContent";
9354
9358
  var CodeBlock = React114__namespace.default.memo(
9355
9359
  ({
9356
- code,
9360
+ code: rawCode,
9357
9361
  language = "text",
9358
9362
  showCopyButton = true,
9359
9363
  showLanguageBadge = true,
9360
9364
  maxHeight = "60vh",
9361
9365
  className
9362
9366
  }) => {
9367
+ const code = typeof rawCode === "string" ? rawCode : String(rawCode ?? "");
9363
9368
  const eventBus = useEventBus();
9364
9369
  const { t: _t } = useTranslate();
9365
9370
  const scrollRef = React114.useRef(null);
@@ -15301,21 +15306,22 @@ function CombatLog({
15301
15306
  ] })
15302
15307
  ] }) }),
15303
15308
  /* @__PURE__ */ jsxRuntime.jsx(Box, { ref: scrollRef, overflow: "auto", className: "flex-1 max-h-64", children: visibleEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "md", className: "text-center opacity-50", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", children: "No events yet" }) }) : /* @__PURE__ */ jsxRuntime.jsx(Box, { padding: "xs", className: "space-y-1", children: visibleEvents.map((event) => {
15304
- const EventIcon = eventIcons[event.type];
15305
- const colorClass = eventColors[event.type];
15309
+ const eventType = event.type && event.type in eventIcons ? event.type : "attack";
15310
+ const EventIcon = eventIcons[eventType];
15311
+ const colorClass = eventColors[eventType];
15306
15312
  return /* @__PURE__ */ jsxRuntime.jsxs(
15307
15313
  Box,
15308
15314
  {
15309
15315
  display: "flex",
15310
15316
  padding: "xs",
15311
15317
  rounded: "sm",
15312
- className: cn("items-start gap-2 hover:bg-[var(--color-muted)] transition-colors", event.type === "death" && "opacity-60"),
15318
+ className: cn("items-start gap-2 hover:bg-[var(--color-muted)] transition-colors", eventType === "death" && "opacity-60"),
15313
15319
  children: [
15314
15320
  /* @__PURE__ */ jsxRuntime.jsx(Box, { className: cn("flex-shrink-0 mt-0.5", colorClass), children: /* @__PURE__ */ jsxRuntime.jsx(EventIcon, { className: "h-4 w-4" }) }),
15315
15321
  /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex-1 min-w-0", children: [
15316
15322
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "block", children: event.message }),
15317
- event.value !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: eventBadgeVariants[event.type], size: "sm", className: "mt-1", children: [
15318
- event.type === "heal" ? "+" : event.type === "attack" ? "-" : "",
15323
+ event.value !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: eventBadgeVariants[eventType], size: "sm", className: "mt-1", children: [
15324
+ eventType === "heal" ? "+" : eventType === "attack" ? "-" : "",
15319
15325
  event.value
15320
15326
  ] })
15321
15327
  ] }),
@@ -2584,15 +2584,15 @@ Drawer.displayName = "Drawer";
2584
2584
  var variantStyles2 = {
2585
2585
  primary: [
2586
2586
  "bg-[var(--color-primary)] text-[var(--color-primary-foreground)]",
2587
- "border-[length:var(--border-width)] border-[var(--color-border)]",
2587
+ "border-none",
2588
2588
  "shadow-[var(--shadow-sm)]",
2589
2589
  "hover:bg-[var(--color-primary-hover)] hover:shadow-[var(--shadow-hover)]",
2590
2590
  "active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]"
2591
2591
  ].join(" "),
2592
2592
  secondary: [
2593
- "bg-transparent text-[var(--color-accent)]",
2594
- "border-[length:var(--border-width)] border-[var(--color-accent)]",
2595
- "hover:bg-[var(--color-accent)] hover:text-white",
2593
+ "bg-[var(--color-muted)] text-[var(--color-foreground)]",
2594
+ "border-none",
2595
+ "hover:bg-[var(--color-muted-foreground)]/15 hover:text-[var(--color-foreground)]",
2596
2596
  "active:scale-[var(--active-scale)]"
2597
2597
  ].join(" "),
2598
2598
  ghost: [
@@ -3102,14 +3102,16 @@ var Checkbox = React114__default.forwardRef(
3102
3102
  Checkbox.displayName = "Checkbox";
3103
3103
  var variantStyles4 = {
3104
3104
  default: [
3105
- "bg-[var(--color-card)] border-none",
3105
+ "bg-[var(--color-card)]",
3106
+ "border-[length:var(--border-width)] border-[var(--color-border)]",
3107
+ "shadow-[var(--shadow-sm)]",
3106
3108
  "transition-all duration-[var(--transition-normal)]",
3107
3109
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
3108
3110
  ].join(" "),
3109
3111
  bordered: [
3110
3112
  "bg-[var(--color-card)]",
3111
3113
  "border-[length:var(--border-width)] border-[var(--color-border)]",
3112
- "shadow-none",
3114
+ "shadow-[var(--shadow-sm)]",
3113
3115
  "transition-all duration-[var(--transition-normal)]",
3114
3116
  "hover:shadow-[var(--shadow-hover)] hover:-translate-y-0.5"
3115
3117
  ].join(" "),
@@ -4796,6 +4798,7 @@ var TypewriterText = ({
4796
4798
  className,
4797
4799
  onComplete
4798
4800
  }) => {
4801
+ const safeText = typeof text === "string" ? text : String(text ?? "");
4799
4802
  const [charCount, setCharCount] = useState(0);
4800
4803
  const [started, setStarted] = useState(startDelay === 0);
4801
4804
  const onCompleteRef = useRef(onComplete);
@@ -4819,14 +4822,14 @@ var TypewriterText = ({
4819
4822
  }, [text]);
4820
4823
  useEffect(() => {
4821
4824
  if (!started) return void 0;
4822
- if (charCount >= text.length) {
4825
+ if (charCount >= safeText.length) {
4823
4826
  onCompleteRef.current?.();
4824
4827
  return void 0;
4825
4828
  }
4826
4829
  const interval = window.setInterval(() => {
4827
4830
  setCharCount((prev) => {
4828
4831
  const next = prev + 1;
4829
- if (next >= text.length) {
4832
+ if (next >= safeText.length) {
4830
4833
  window.clearInterval(interval);
4831
4834
  }
4832
4835
  return next;
@@ -4836,8 +4839,8 @@ var TypewriterText = ({
4836
4839
  window.clearInterval(interval);
4837
4840
  };
4838
4841
  }, [started, text, speed, charCount]);
4839
- const isComplete = charCount >= text.length;
4840
- const displayedText = text.slice(0, charCount);
4842
+ const isComplete = charCount >= safeText.length;
4843
+ const displayedText = safeText.slice(0, charCount);
4841
4844
  return /* @__PURE__ */ jsxs(Typography, { variant: "body", className: cn("inline", className), children: [
4842
4845
  displayedText,
4843
4846
  !isComplete && /* @__PURE__ */ jsx(
@@ -9223,6 +9226,7 @@ ScaledDiagram.displayName = "ScaledDiagram";
9223
9226
  var MarkdownContent = React114__default.memo(
9224
9227
  ({ content, direction, className }) => {
9225
9228
  const { t: _t } = useTranslate();
9229
+ const safeContent = typeof content === "string" ? content : String(content ?? "");
9226
9230
  return /* @__PURE__ */ jsx(
9227
9231
  Box,
9228
9232
  {
@@ -9312,7 +9316,7 @@ var MarkdownContent = React114__default.memo(
9312
9316
  );
9313
9317
  }
9314
9318
  },
9315
- children: content
9319
+ children: safeContent
9316
9320
  }
9317
9321
  )
9318
9322
  }
@@ -9323,13 +9327,14 @@ var MarkdownContent = React114__default.memo(
9323
9327
  MarkdownContent.displayName = "MarkdownContent";
9324
9328
  var CodeBlock = React114__default.memo(
9325
9329
  ({
9326
- code,
9330
+ code: rawCode,
9327
9331
  language = "text",
9328
9332
  showCopyButton = true,
9329
9333
  showLanguageBadge = true,
9330
9334
  maxHeight = "60vh",
9331
9335
  className
9332
9336
  }) => {
9337
+ const code = typeof rawCode === "string" ? rawCode : String(rawCode ?? "");
9333
9338
  const eventBus = useEventBus();
9334
9339
  const { t: _t } = useTranslate();
9335
9340
  const scrollRef = useRef(null);
@@ -15271,21 +15276,22 @@ function CombatLog({
15271
15276
  ] })
15272
15277
  ] }) }),
15273
15278
  /* @__PURE__ */ jsx(Box, { ref: scrollRef, overflow: "auto", className: "flex-1 max-h-64", children: visibleEvents.length === 0 ? /* @__PURE__ */ jsx(Box, { padding: "md", className: "text-center opacity-50", children: /* @__PURE__ */ jsx(Typography, { variant: "body2", children: "No events yet" }) }) : /* @__PURE__ */ jsx(Box, { padding: "xs", className: "space-y-1", children: visibleEvents.map((event) => {
15274
- const EventIcon = eventIcons[event.type];
15275
- const colorClass = eventColors[event.type];
15279
+ const eventType = event.type && event.type in eventIcons ? event.type : "attack";
15280
+ const EventIcon = eventIcons[eventType];
15281
+ const colorClass = eventColors[eventType];
15276
15282
  return /* @__PURE__ */ jsxs(
15277
15283
  Box,
15278
15284
  {
15279
15285
  display: "flex",
15280
15286
  padding: "xs",
15281
15287
  rounded: "sm",
15282
- className: cn("items-start gap-2 hover:bg-[var(--color-muted)] transition-colors", event.type === "death" && "opacity-60"),
15288
+ className: cn("items-start gap-2 hover:bg-[var(--color-muted)] transition-colors", eventType === "death" && "opacity-60"),
15283
15289
  children: [
15284
15290
  /* @__PURE__ */ jsx(Box, { className: cn("flex-shrink-0 mt-0.5", colorClass), children: /* @__PURE__ */ jsx(EventIcon, { className: "h-4 w-4" }) }),
15285
15291
  /* @__PURE__ */ jsxs(Box, { className: "flex-1 min-w-0", children: [
15286
15292
  /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "block", children: event.message }),
15287
- event.value !== void 0 && /* @__PURE__ */ jsxs(Badge, { variant: eventBadgeVariants[event.type], size: "sm", className: "mt-1", children: [
15288
- event.type === "heal" ? "+" : event.type === "attack" ? "-" : "",
15293
+ event.value !== void 0 && /* @__PURE__ */ jsxs(Badge, { variant: eventBadgeVariants[eventType], size: "sm", className: "mt-1", children: [
15294
+ eventType === "heal" ? "+" : eventType === "attack" ? "-" : "",
15289
15295
  event.value
15290
15296
  ] })
15291
15297
  ] }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "2.24.3",
3
+ "version": "2.24.5",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "main": "./dist/components/index.js",
@@ -138,11 +138,11 @@
138
138
  --color-muted: #262626;
139
139
  --color-muted-foreground: #a3a3a3;
140
140
 
141
- --color-background: #0a0a0a;
142
- --color-foreground: #ffffff;
143
- --color-card: #1a1a1a;
144
- --color-card-foreground: #ffffff;
145
- --color-surface: #262626;
141
+ --color-background: #111117;
142
+ --color-foreground: #f5f5f5;
143
+ --color-card: #1c1c22;
144
+ --color-card-foreground: #f5f5f5;
145
+ --color-surface: #28282e;
146
146
  --color-border: #ffffff;
147
147
  --color-input: #ffffff;
148
148
  --color-ring: #ffffff;