@almadar/ui 5.122.14 → 5.124.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.
Files changed (63) hide show
  1. package/dist/{TraitProvider-YkK6tXDw.d.cts → TraitProvider-Ch79cUcb.d.cts} +6 -1
  2. package/dist/{TraitProvider-YkK6tXDw.d.ts → TraitProvider-Ch79cUcb.d.ts} +6 -1
  3. package/dist/{UserContext-bziZwgFL.d.cts → UserContext-BKckAUv7.d.cts} +5 -5
  4. package/dist/{UserContext-bziZwgFL.d.ts → UserContext-BKckAUv7.d.ts} +5 -5
  5. package/dist/avl/index.cjs +354 -234
  6. package/dist/avl/index.js +356 -236
  7. package/dist/components/index.cjs +273 -198
  8. package/dist/components/index.d.cts +18 -12
  9. package/dist/components/index.d.ts +18 -12
  10. package/dist/components/index.js +273 -198
  11. package/dist/context/index.cjs +34 -66
  12. package/dist/context/index.d.cts +1 -1
  13. package/dist/context/index.d.ts +1 -1
  14. package/dist/context/index.js +34 -66
  15. package/dist/hooks/index.cjs +8 -0
  16. package/dist/hooks/index.js +8 -0
  17. package/dist/lib/drawable/three/index.cjs +6 -0
  18. package/dist/lib/drawable/three/index.js +6 -0
  19. package/dist/marketing/index.cjs +7 -0
  20. package/dist/marketing/index.js +7 -0
  21. package/dist/providers/index.cjs +343 -217
  22. package/dist/providers/index.d.cts +6 -6
  23. package/dist/providers/index.d.ts +6 -6
  24. package/dist/providers/index.js +343 -217
  25. package/dist/runtime/index.cjs +347 -227
  26. package/dist/runtime/index.d.cts +4 -2
  27. package/dist/runtime/index.d.ts +4 -2
  28. package/dist/runtime/index.js +349 -229
  29. package/package.json +8 -7
  30. package/themes/_contract.md +2 -0
  31. package/themes/almadar-website.css +3 -3
  32. package/themes/almadar.css +4 -4
  33. package/themes/bloomberg-dense.css +2 -2
  34. package/themes/clay.css +417 -0
  35. package/themes/corporate.css +411 -0
  36. package/themes/game-adventure.css +3 -3
  37. package/themes/game-rpg.css +2 -2
  38. package/themes/game-sci-fi.css +1 -1
  39. package/themes/game-ui-pack.css +2 -2
  40. package/themes/gazette.css +2 -2
  41. package/themes/glass.css +428 -0
  42. package/themes/index.css +9 -13
  43. package/themes/kiosk.css +5 -5
  44. package/themes/linear-clean.css +1 -1
  45. package/themes/minimalist.css +2 -2
  46. package/themes/neon.css +3 -3
  47. package/themes/notion-editorial.css +1 -1
  48. package/themes/prism.css +3 -3
  49. package/themes/retro.css +410 -0
  50. package/themes/terminal.css +1 -1
  51. package/themes/trait-wars.css +8 -8
  52. package/themes/wireframe.css +2 -2
  53. package/themes/arctic.css +0 -235
  54. package/themes/copper.css +0 -235
  55. package/themes/ember.css +0 -238
  56. package/themes/forest.css +0 -238
  57. package/themes/lavender.css +0 -233
  58. package/themes/midnight.css +0 -234
  59. package/themes/ocean.css +0 -238
  60. package/themes/rose.css +0 -233
  61. package/themes/sand.css +0 -234
  62. package/themes/slate.css +0 -233
  63. package/themes/sunset.css +0 -238
@@ -1848,6 +1848,7 @@ var init_Button = __esm({
1848
1848
  "button",
1849
1849
  {
1850
1850
  ref,
1851
+ type: "button",
1851
1852
  disabled: disabled || isLoading,
1852
1853
  className: cn(
1853
1854
  "relative inline-flex items-center justify-center gap-2",
@@ -3925,15 +3926,15 @@ var init_TextHighlight = __esm({
3925
3926
  const typeStyles = {
3926
3927
  question: cn(
3927
3928
  // Blue border for questions
3928
- "bg-card border-b-2 border-primary-600",
3929
+ "bg-card border-b-2 border-primary",
3929
3930
  "hover:bg-muted",
3930
- isActive && "bg-primary-100 ring-2 ring-primary-600"
3931
+ isActive && "bg-primary/10 ring-2 ring-primary"
3931
3932
  ),
3932
3933
  note: cn(
3933
3934
  // Yellow border for notes
3934
- "bg-card border-b-2 border-amber-500",
3935
+ "bg-card border-b-2 border-warning",
3935
3936
  "hover:bg-muted",
3936
- isActive && "bg-amber-100 ring-2 ring-amber-500"
3937
+ isActive && "bg-warning/10 ring-2 ring-warning"
3937
3938
  )
3938
3939
  };
3939
3940
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -4014,6 +4015,11 @@ var init_Typography = __esm({
4014
4015
  inherit: "text-inherit"
4015
4016
  };
4016
4017
  weightStyles = {
4018
+ // Neutral: an atom default of "none" must not override the variant's baked
4019
+ // weight (C-PATTERN-ENUM-BLOCKS-NEUTRAL-OVERRIDE — `variant={h2}` rendered
4020
+ // tiny because the ui-typography atom's `weight: light`/`size: xs` defaults
4021
+ // clobbered every variant).
4022
+ none: "",
4017
4023
  light: "font-light",
4018
4024
  normal: "font-normal",
4019
4025
  medium: "font-medium",
@@ -4039,6 +4045,7 @@ var init_Typography = __esm({
4039
4045
  label: "span"
4040
4046
  };
4041
4047
  typographySizeStyles = {
4048
+ none: "",
4042
4049
  xs: "text-xs",
4043
4050
  sm: "text-sm",
4044
4051
  md: "text-base",
@@ -4535,7 +4542,7 @@ function DayCell({
4535
4542
  {
4536
4543
  className: cn(
4537
4544
  "p-2 text-center cursor-pointer hover:bg-muted transition-colors",
4538
- isToday && "bg-blue-500/10",
4545
+ isToday && "bg-primary/10",
4539
4546
  className
4540
4547
  ),
4541
4548
  onClick: handleClick,
@@ -4546,7 +4553,7 @@ function DayCell({
4546
4553
  variant: "small",
4547
4554
  className: cn(
4548
4555
  "font-medium",
4549
- isToday ? "text-blue-600" : "text-muted-foreground"
4556
+ isToday ? "text-primary" : "text-muted-foreground"
4550
4557
  ),
4551
4558
  children: dayAbbr
4552
4559
  }
@@ -4558,7 +4565,7 @@ function DayCell({
4558
4565
  rounded: "full",
4559
4566
  className: cn(
4560
4567
  "h-8 w-8 mx-auto items-center justify-center",
4561
- isToday && "bg-blue-600 text-white"
4568
+ isToday && "bg-primary text-primary-foreground"
4562
4569
  ),
4563
4570
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "font-semibold", children: safeDate.getDate() })
4564
4571
  }
@@ -7873,19 +7880,19 @@ var init_ActivationBlock = __esm({
7873
7880
  "div",
7874
7881
  {
7875
7882
  className: cn(
7876
- "bg-indigo-50 dark:bg-indigo-900/20 border-2 border-indigo-200 dark:border-indigo-800 rounded-lg p-5 mb-6",
7883
+ "bg-primary/10 border-2 border-primary rounded-lg p-5 mb-6",
7877
7884
  className
7878
7885
  ),
7879
7886
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
7880
- /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Lightbulb, { className: "text-indigo-600 dark:text-indigo-400 flex-shrink-0 mt-1", size: 24 }),
7887
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Lightbulb, { className: "text-primary flex-shrink-0 mt-1", size: 24 }),
7881
7888
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
7882
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-indigo-900 dark:text-indigo-100 mb-2", children: "Before You Begin..." }),
7883
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-gray-700 dark:text-gray-300 mb-3 text-sm md:text-base", children: question }),
7889
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-primary mb-2", children: "Before You Begin..." }),
7890
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-foreground mb-3 text-sm md:text-base", children: question }),
7884
7891
  isExpanded ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7885
7892
  /* @__PURE__ */ jsxRuntime.jsx(
7886
7893
  "textarea",
7887
7894
  {
7888
- className: "w-full p-3 border border-indigo-300 dark:border-indigo-700 rounded-md bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-indigo-500 focus:border-transparent text-sm",
7895
+ className: "w-full p-3 border border-input rounded-md bg-card text-foreground focus:ring-2 focus:ring-ring focus:border-transparent text-sm",
7889
7896
  placeholder: "Jot down your thoughts...",
7890
7897
  value: response,
7891
7898
  onChange: (e) => setResponse(e.target.value),
@@ -7897,7 +7904,7 @@ var init_ActivationBlock = __esm({
7897
7904
  "button",
7898
7905
  {
7899
7906
  onClick: handleSubmit,
7900
- className: "px-4 py-2 bg-indigo-600 text-white rounded-md hover:bg-indigo-700 text-sm font-medium transition-colors",
7907
+ className: "px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary-hover text-sm font-medium transition-colors",
7901
7908
  children: "Continue to Lesson \u2192"
7902
7909
  }
7903
7910
  ),
@@ -7908,7 +7915,7 @@ var init_ActivationBlock = __esm({
7908
7915
  emit(`UI:${saveEvent}`, { response: "" });
7909
7916
  setIsExpanded(false);
7910
7917
  },
7911
- className: "px-4 py-2 text-indigo-600 dark:text-indigo-400 hover:underline text-sm",
7918
+ className: "px-4 py-2 text-primary hover:underline text-sm",
7912
7919
  children: "Skip for now"
7913
7920
  }
7914
7921
  )
@@ -7917,7 +7924,7 @@ var init_ActivationBlock = __esm({
7917
7924
  "button",
7918
7925
  {
7919
7926
  onClick: () => setIsExpanded(true),
7920
- className: "text-sm text-indigo-600 dark:text-indigo-400 hover:underline font-medium",
7927
+ className: "text-sm text-primary hover:underline font-medium",
7921
7928
  children: "\u2713 Answered \xB7 Edit response"
7922
7929
  }
7923
7930
  )
@@ -8730,7 +8737,7 @@ var init_AuthLayout = __esm({
8730
8737
  exports.VStack,
8731
8738
  {
8732
8739
  className: cn(
8733
- "hidden lg:flex lg:w-1/2 bg-primary-600 relative overflow-hidden",
8740
+ "hidden lg:flex lg:w-1/2 bg-primary relative overflow-hidden",
8734
8741
  "justify-between p-12"
8735
8742
  ),
8736
8743
  style: backgroundImage ? {
@@ -8739,7 +8746,7 @@ var init_AuthLayout = __esm({
8739
8746
  } : void 0,
8740
8747
  gap: "none",
8741
8748
  children: [
8742
- /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "absolute inset-0 bg-gradient-to-br from-primary-600/90 to-primary-800/90" }),
8749
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "absolute inset-0 bg-gradient-to-br from-primary/90 to-primary-hover/90" }),
8743
8750
  /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "relative z-10", children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "flex items-center gap-3", children: [
8744
8751
  logo || /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-10 h-10 bg-[var(--color-card)]/20 rounded-xl flex items-center justify-center backdrop-blur", children: /* @__PURE__ */ jsxRuntime.jsx(
8745
8752
  exports.Typography,
@@ -8824,7 +8831,7 @@ var init_AuthLayout = __esm({
8824
8831
  ),
8825
8832
  children: /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "w-full max-w-md", children: [
8826
8833
  /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "lg:hidden mb-8 text-center", children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "inline-flex items-center gap-3", children: [
8827
- logo || /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-12 h-12 bg-primary-600 rounded-xl flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
8834
+ logo || /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-12 h-12 bg-primary rounded-xl flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
8828
8835
  exports.Typography,
8829
8836
  {
8830
8837
  variant: "body1",
@@ -10818,7 +10825,7 @@ var init_CodeBlock = __esm({
10818
10825
  {
10819
10826
  justify: "between",
10820
10827
  align: "center",
10821
- className: "px-3 py-2 bg-[var(--color-card)] rounded-t-lg border-b border-gray-700",
10828
+ className: "px-3 py-2 bg-[var(--color-card)] rounded-t-lg border-b border-border",
10822
10829
  children: [
10823
10830
  showLanguageBadge && /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "default", size: "sm", children: language }),
10824
10831
  effectiveCopy && /* @__PURE__ */ jsxRuntime.jsx(
@@ -10827,9 +10834,9 @@ var init_CodeBlock = __esm({
10827
10834
  variant: "ghost",
10828
10835
  size: "sm",
10829
10836
  onClick: handleCopy,
10830
- className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
10837
+ className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-foreground",
10831
10838
  "aria-label": t("common.copy"),
10832
- children: copied ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "check", className: "w-4 h-4 text-green-400" }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "copy", className: "w-4 h-4" })
10839
+ children: copied ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "check", className: "w-4 h-4 text-success" }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "copy", className: "w-4 h-4" })
10833
10840
  }
10834
10841
  )
10835
10842
  ]
@@ -11197,12 +11204,12 @@ var init_BloomQuizBlock = __esm({
11197
11204
  init_useEventBus();
11198
11205
  init_cn();
11199
11206
  BLOOM_CONFIG = {
11200
- remember: { color: "bg-gray-500", bgColor: "bg-gray-50 dark:bg-gray-900/30", label: "Remember" },
11201
- understand: { color: "bg-blue-500", bgColor: "bg-blue-50 dark:bg-blue-900/30", label: "Understand" },
11202
- apply: { color: "bg-green-500", bgColor: "bg-green-50 dark:bg-green-900/30", label: "Apply" },
11203
- analyze: { color: "bg-yellow-500", bgColor: "bg-yellow-50 dark:bg-yellow-900/30", label: "Analyze" },
11204
- evaluate: { color: "bg-orange-500", bgColor: "bg-orange-50 dark:bg-orange-900/30", label: "Evaluate" },
11205
- create: { color: "bg-purple-500", bgColor: "bg-purple-50 dark:bg-purple-900/30", label: "Create" }
11207
+ remember: { color: "bg-secondary text-secondary-foreground", bgColor: "bg-muted", label: "Remember" },
11208
+ understand: { color: "bg-info text-info-foreground", bgColor: "bg-info/10", label: "Understand" },
11209
+ apply: { color: "bg-success text-success-foreground", bgColor: "bg-success/10", label: "Apply" },
11210
+ analyze: { color: "bg-warning text-warning-foreground", bgColor: "bg-warning/10", label: "Analyze" },
11211
+ evaluate: { color: "bg-accent text-accent-foreground", bgColor: "bg-accent/10", label: "Evaluate" },
11212
+ create: { color: "bg-primary text-primary-foreground", bgColor: "bg-primary/10", label: "Create" }
11206
11213
  };
11207
11214
  exports.BloomQuizBlock = ({
11208
11215
  level,
@@ -11228,22 +11235,22 @@ var init_BloomQuizBlock = __esm({
11228
11235
  "div",
11229
11236
  {
11230
11237
  className: cn(
11231
- "rounded-lg border border-indigo-100 dark:border-indigo-800 p-4 my-4 transition-all",
11238
+ "rounded-lg border border-primary p-4 my-4 transition-all",
11232
11239
  config.bgColor,
11233
11240
  className
11234
11241
  ),
11235
11242
  children: [
11236
11243
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-3", children: [
11237
11244
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [
11238
- index !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-gray-500 dark:text-gray-400 font-medium text-sm", children: [
11245
+ index !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground font-medium text-sm", children: [
11239
11246
  "Question ",
11240
11247
  index + 1
11241
11248
  ] }),
11242
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(config.color, "text-white text-xs px-2 py-1 rounded-full font-medium"), children: config.label })
11249
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(config.color, "text-xs px-2 py-1 rounded-full font-medium"), children: config.label })
11243
11250
  ] }),
11244
- isAnswered && /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.CheckCircle, { className: "text-green-600 dark:text-green-400 flex-shrink-0", size: 20 })
11251
+ isAnswered && /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.CheckCircle, { className: "text-success flex-shrink-0", size: 20 })
11245
11252
  ] }),
11246
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold text-indigo-900 dark:text-indigo-200 mb-3 space-y-2", children: questionSegments.map(
11253
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold text-primary mb-3 space-y-2", children: questionSegments.map(
11247
11254
  (segment, idx) => segment.type === "markdown" ? /* @__PURE__ */ jsxRuntime.jsx(exports.MarkdownContent, { content: segment.content }, `q-md-${idx}`) : /* @__PURE__ */ jsxRuntime.jsx(
11248
11255
  exports.CodeBlock,
11249
11256
  {
@@ -11257,13 +11264,13 @@ var init_BloomQuizBlock = __esm({
11257
11264
  "button",
11258
11265
  {
11259
11266
  type: "button",
11260
- className: "inline-flex items-center rounded-md bg-indigo-600 dark:bg-indigo-500 px-3 py-1.5 text-sm font-medium text-white hover:bg-indigo-700 dark:hover:bg-indigo-600 transition-colors",
11267
+ className: "inline-flex items-center rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground hover:bg-primary-hover transition-colors",
11261
11268
  onClick: handleReveal,
11262
11269
  children: revealed ? "Hide Answer" : "Reveal Answer"
11263
11270
  }
11264
11271
  ),
11265
- revealed && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg bg-white/80 dark:bg-gray-800/80 p-3 text-sm text-slate-800 dark:text-gray-200 shadow-sm border border-indigo-100 dark:border-indigo-800 mt-3 space-y-2", children: [
11266
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-gray-600 dark:text-gray-400 mb-1 font-medium uppercase tracking-wide", children: "Answer:" }),
11272
+ revealed && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg bg-card/80 p-3 text-sm text-foreground shadow-sm border border-primary mt-3 space-y-2", children: [
11273
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-muted-foreground mb-1 font-medium uppercase tracking-wide", children: "Answer:" }),
11267
11274
  answerSegments.map(
11268
11275
  (segment, idx) => segment.type === "markdown" ? /* @__PURE__ */ jsxRuntime.jsx(exports.MarkdownContent, { content: segment.content }, `a-md-${idx}`) : /* @__PURE__ */ jsxRuntime.jsx(
11269
11276
  exports.CodeBlock,
@@ -11537,12 +11544,12 @@ var init_QuizBlock = __esm({
11537
11544
  }) => {
11538
11545
  const { t } = hooks.useTranslate();
11539
11546
  const [revealed, setRevealed] = React74.useState(false);
11540
- return /* @__PURE__ */ jsxRuntime.jsx(Card2, { className: cn("my-4 border-blue-200 dark:border-blue-800", className), children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", className: "p-4", children: [
11547
+ return /* @__PURE__ */ jsxRuntime.jsx(Card2, { className: cn("my-4 border-primary", className), children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", className: "p-4", children: [
11541
11548
  /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "start", children: [
11542
- /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.HelpCircle, size: "sm", className: "text-blue-500 mt-0.5 shrink-0" }),
11549
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: LucideIcons2.HelpCircle, size: "sm", className: "text-primary mt-0.5 shrink-0" }),
11543
11550
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "font-medium", children: question })
11544
11551
  ] }),
11545
- revealed ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "pl-7 pt-2 border-t border-gray-200 dark:border-gray-700", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "text-foreground", children: answer }) }) : null,
11552
+ revealed ? /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "pl-7 pt-2 border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "text-foreground", children: answer }) }) : null,
11546
11553
  /* @__PURE__ */ jsxRuntime.jsx(
11547
11554
  exports.Button,
11548
11555
  {
@@ -13454,7 +13461,7 @@ var init_BookTableOfContents = __esm({
13454
13461
  className: cn(
13455
13462
  "justify-start text-left w-full",
13456
13463
  direction === "rtl" && "text-right",
13457
- isCurrent && "bg-blue-50 dark:bg-blue-950 text-blue-600 dark:text-blue-400"
13464
+ isCurrent && "bg-primary/10 text-primary"
13458
13465
  ),
13459
13466
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "truncate", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", children: String(chapter.title ?? "") }) })
13460
13467
  },
@@ -14702,7 +14709,7 @@ function CalendarGrid({
14702
14709
  border: true,
14703
14710
  className: cn(
14704
14711
  "cursor-pointer hover:shadow-sm transition-shadow text-xs truncate",
14705
- color ? color : "bg-blue-500/15 border-blue-500/30 text-blue-600"
14712
+ color ? color : "bg-primary/10 border-primary/30 text-primary"
14706
14713
  ),
14707
14714
  onClick: (e) => handleEventClick(event, e),
14708
14715
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "truncate font-medium", children: event.title })
@@ -14800,7 +14807,7 @@ function CalendarGrid({
14800
14807
  onClick: () => handleSlotClick(day, time),
14801
14808
  className: cn(
14802
14809
  "border-l border-border",
14803
- isToday && "bg-blue-50/30"
14810
+ isToday && "bg-primary/10"
14804
14811
  ),
14805
14812
  ...longPressEvent ? {
14806
14813
  onPointerDown: () => startLongPress(day, time),
@@ -18476,31 +18483,31 @@ var init_CodeRunnerPanel = __esm({
18476
18483
  }
18477
18484
  )
18478
18485
  ] }),
18479
- hasOutput && /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "rounded-lg border border-gray-700 bg-[#0d0d0d] overflow-hidden", children: [
18486
+ hasOutput && /* @__PURE__ */ jsxRuntime.jsxs(exports.Box, { className: "rounded-lg border border-border bg-foreground overflow-hidden", children: [
18480
18487
  /* @__PURE__ */ jsxRuntime.jsxs(
18481
18488
  exports.HStack,
18482
18489
  {
18483
18490
  gap: "sm",
18484
18491
  align: "center",
18485
- className: "px-3 py-2 bg-gray-800 border-b border-gray-700",
18492
+ className: "px-3 py-2 bg-card border-b border-border",
18486
18493
  children: [
18487
- /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Terminal, { size: 16, className: "text-gray-400" }),
18488
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-300 font-medium", children: "Output" })
18494
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Terminal, { size: 16, className: "text-muted-foreground" }),
18495
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-foreground font-medium", children: "Output" })
18489
18496
  ]
18490
18497
  }
18491
18498
  ),
18492
- /* @__PURE__ */ jsxRuntime.jsx(exports.VStack, { gap: "none", className: "p-3 font-mono text-sm", children: error ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-red-400 whitespace-pre-wrap", children: error }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
18493
- output?.stdout ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-200 whitespace-pre-wrap", children: output.stdout }) : null,
18494
- output?.stderr ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-red-400 whitespace-pre-wrap", children: output.stderr }) : null,
18495
- !output?.stdout && !output?.stderr ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-500 italic", children: "No output" }) : null,
18496
- output && output.testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "mt-3 pt-3 border-t border-gray-700 space-y-2", children: output.testResults.map((test, index) => /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "start", className: "text-xs", children: [
18497
- test.passed ? /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.CheckCircle, { size: 14, className: "text-green-400 mt-0.5" }) : /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.XCircle, { size: 14, className: "text-red-400 mt-0.5" }),
18499
+ /* @__PURE__ */ jsxRuntime.jsx(exports.VStack, { gap: "none", className: "p-3 font-mono text-sm", children: error ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-error whitespace-pre-wrap", children: error }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
18500
+ output?.stdout ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-background whitespace-pre-wrap", children: output.stdout }) : null,
18501
+ output?.stderr ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-error whitespace-pre-wrap", children: output.stderr }) : null,
18502
+ !output?.stdout && !output?.stderr ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-background italic", children: "No output" }) : null,
18503
+ output && output.testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "mt-3 pt-3 border-t border-border space-y-2", children: output.testResults.map((test, index) => /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", align: "start", className: "text-xs", children: [
18504
+ test.passed ? /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.CheckCircle, { size: 14, className: "text-success mt-0.5" }) : /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.XCircle, { size: 14, className: "text-error mt-0.5" }),
18498
18505
  /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", className: "flex-1", children: [
18499
18506
  /* @__PURE__ */ jsxRuntime.jsxs(
18500
18507
  exports.Typography,
18501
18508
  {
18502
18509
  variant: "small",
18503
- className: test.passed ? "text-green-400" : "text-red-400",
18510
+ className: test.passed ? "text-success" : "text-error",
18504
18511
  children: [
18505
18512
  "Test ",
18506
18513
  index + 1,
@@ -18509,15 +18516,15 @@ var init_CodeRunnerPanel = __esm({
18509
18516
  ]
18510
18517
  }
18511
18518
  ),
18512
- /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "text-gray-400", children: [
18519
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "text-background", children: [
18513
18520
  "Input: ",
18514
18521
  test.input
18515
18522
  ] }),
18516
- /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "text-gray-400", children: [
18523
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "text-background", children: [
18517
18524
  "Expected: ",
18518
18525
  test.expectedOutput
18519
18526
  ] }),
18520
- /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "text-gray-400", children: [
18527
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "text-background", children: [
18521
18528
  "Actual: ",
18522
18529
  test.actualOutput
18523
18530
  ] })
@@ -18702,14 +18709,14 @@ var init_ConnectionBlock = __esm({
18702
18709
  "div",
18703
18710
  {
18704
18711
  className: cn(
18705
- "bg-emerald-50 dark:bg-emerald-900/20 border-l-4 border-emerald-500 rounded-r-lg p-5 mb-6",
18712
+ "bg-success/10 border-l-4 border-success rounded-r-lg p-5 mb-6",
18706
18713
  className
18707
18714
  ),
18708
18715
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
18709
- /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Link2, { className: "text-emerald-600 dark:text-emerald-400 flex-shrink-0 mt-1", size: 20 }),
18716
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Link2, { className: "text-success flex-shrink-0 mt-1", size: 20 }),
18710
18717
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
18711
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-emerald-900 dark:text-emerald-100 mb-2", children: "Building On What You Know" }),
18712
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose dark:prose-invert prose-sm max-w-none text-gray-700 dark:text-gray-300", children: /* @__PURE__ */ jsxRuntime.jsx(exports.MarkdownContent, { content }) })
18718
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-success mb-2", children: "Building On What You Know" }),
18719
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose dark:prose-invert prose-sm max-w-none text-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(exports.MarkdownContent, { content }) })
18713
18720
  ] })
18714
18721
  ] })
18715
18722
  }
@@ -19100,7 +19107,7 @@ function CounterStandard({
19100
19107
  variant: "h1",
19101
19108
  className: cn(
19102
19109
  sizeStyles8[size].display,
19103
- "font-bold tabular-nums text-primary-600"
19110
+ "font-bold tabular-nums text-primary"
19104
19111
  ),
19105
19112
  children: resolved.count
19106
19113
  }
@@ -19173,7 +19180,7 @@ function CounterFull({
19173
19180
  variant: "h1",
19174
19181
  className: cn(
19175
19182
  sizeStyles8[size].display,
19176
- "font-bold tabular-nums text-primary-600"
19183
+ "font-bold tabular-nums text-primary"
19177
19184
  ),
19178
19185
  children: resolved.count
19179
19186
  }
@@ -19438,11 +19445,11 @@ var init_DashboardLayout = __esm({
19438
19445
  className: "h-16 px-4 border-b border-border dark:border-border",
19439
19446
  children: [
19440
19447
  /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "flex items-center gap-2", children: [
19441
- logo || /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
19448
+ logo || /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-8 h-8 bg-primary rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
19442
19449
  exports.Typography,
19443
19450
  {
19444
19451
  variant: "small",
19445
- className: "text-white font-bold text-sm",
19452
+ className: "text-primary-foreground font-bold text-sm",
19446
19453
  as: "span",
19447
19454
  children: appName.charAt(0).toUpperCase()
19448
19455
  }
@@ -19521,11 +19528,11 @@ var init_DashboardLayout = __esm({
19521
19528
  className: "hidden @md/dashboard:flex items-center gap-1 overflow-x-auto",
19522
19529
  children: [
19523
19530
  /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "flex items-center gap-2 mr-3 shrink-0", children: [
19524
- logo || /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-7 h-7 bg-primary-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
19531
+ logo || /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "w-7 h-7 bg-primary rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
19525
19532
  exports.Typography,
19526
19533
  {
19527
19534
  variant: "small",
19528
- className: "text-white font-bold text-xs",
19535
+ className: "text-primary-foreground font-bold text-xs",
19529
19536
  as: "span",
19530
19537
  children: appName.charAt(0).toUpperCase()
19531
19538
  }
@@ -19585,8 +19592,8 @@ var init_DashboardLayout = __esm({
19585
19592
  {
19586
19593
  as: "span",
19587
19594
  className: cn(
19588
- "absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 rounded-full text-xs font-semibold text-white flex items-center justify-center",
19589
- action.variant === "danger" ? "bg-error" : action.variant === "primary" ? "bg-primary" : "bg-foreground"
19595
+ "absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 rounded-full text-xs font-semibold flex items-center justify-center",
19596
+ action.variant === "danger" ? "bg-error text-error-foreground" : action.variant === "primary" ? "bg-primary text-primary-foreground" : "bg-foreground text-background"
19590
19597
  ),
19591
19598
  children: action.badge
19592
19599
  }
@@ -19608,7 +19615,7 @@ var init_DashboardLayout = __esm({
19608
19615
  exports.Box,
19609
19616
  {
19610
19617
  as: "span",
19611
- className: "absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 bg-error rounded-full text-xs font-semibold text-white flex items-center justify-center",
19618
+ className: "absolute -top-0.5 -right-0.5 min-w-[18px] h-[18px] px-1 bg-error rounded-full text-xs font-semibold text-error-foreground flex items-center justify-center",
19612
19619
  children: unreadCount > 99 ? "99+" : unreadCount
19613
19620
  }
19614
19621
  )
@@ -19891,7 +19898,7 @@ function SubMenu({
19891
19898
  ),
19892
19899
  children: [
19893
19900
  item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: item.icon, size: "sm", className: "flex-shrink-0" }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon: item.icon, size: "sm", className: "flex-shrink-0" })),
19894
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: cn("flex-1", isDanger && "text-red-600"), children: item.label }),
19901
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: cn("flex-1", isDanger && "text-error"), children: item.label }),
19895
19902
  item.badge !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-xs font-medium", children: item.badge })
19896
19903
  ]
19897
19904
  },
@@ -19948,7 +19955,7 @@ function MenuItemRow({
19948
19955
  exports.Typography,
19949
19956
  {
19950
19957
  variant: "small",
19951
- className: cn("flex-1", isDanger && "text-red-600"),
19958
+ className: cn("flex-1", isDanger && "text-error"),
19952
19959
  children: item.label
19953
19960
  }
19954
19961
  ),
@@ -20716,14 +20723,25 @@ function DataGrid({
20716
20723
  const bodyFields = fieldDefs.filter((f3) => f3 !== titleField && !badgeFields.includes(f3));
20717
20724
  const primaryActions = actionDefs.filter((a) => a.variant !== "danger");
20718
20725
  const dangerActions = actionDefs.filter((a) => a.variant === "danger");
20719
- const handleActionClick = (action, itemData) => (e) => {
20720
- e.stopPropagation();
20726
+ const fireAction = (action, itemData) => {
20727
+ if (action.navigatesTo) {
20728
+ const url = action.navigatesTo.replace(
20729
+ /\{\{row\.(\w+(?:\.\w+)*)\}\}/g,
20730
+ (_, field) => String(itemData[field] ?? "")
20731
+ );
20732
+ eventBus.emit("UI:NAVIGATE", { url, row: itemData });
20733
+ return;
20734
+ }
20721
20735
  const payload = {
20722
20736
  id: itemData.id,
20723
20737
  row: itemData
20724
20738
  };
20725
20739
  eventBus.emit(`UI:${action.event}`, payload);
20726
20740
  };
20741
+ const handleActionClick = (action, itemData) => (e) => {
20742
+ e.stopPropagation();
20743
+ fireAction(action, itemData);
20744
+ };
20727
20745
  const hasRenderProp = typeof children === "function";
20728
20746
  React74.useEffect(() => {
20729
20747
  if (data.length > 0 && !hasRenderProp && fieldDefs.length === 0) {
@@ -20790,13 +20808,46 @@ function DataGrid({
20790
20808
  const wrapDnd = (node) => dnd.isZone ? /* @__PURE__ */ jsxRuntime.jsx(dnd.SortableItem, { id: dndId, children: node }, dndId) : node;
20791
20809
  if (hasRenderProp) {
20792
20810
  return wrapDnd(
20793
- /* @__PURE__ */ jsxRuntime.jsx(
20811
+ /* @__PURE__ */ jsxRuntime.jsxs(
20794
20812
  exports.Box,
20795
20813
  {
20796
20814
  "data-entity-row": true,
20797
20815
  "data-entity-id": id,
20798
20816
  className: cn(isSelected && "ring-2 ring-primary rounded-lg"),
20799
- children: children(itemData, index)
20817
+ children: [
20818
+ children(itemData, index),
20819
+ actionDefs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "px-4 py-3 border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", className: "justify-end", children: [
20820
+ (maxInlineActions != null ? actionDefs.slice(0, maxInlineActions) : actionDefs).map((action, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
20821
+ exports.Button,
20822
+ {
20823
+ variant: action.variant === "primary" ? "primary" : "ghost",
20824
+ size: "sm",
20825
+ onClick: handleActionClick(action, itemData),
20826
+ "data-testid": `action-${action.event}`,
20827
+ "data-row-id": String(itemData.id),
20828
+ className: action.variant === "danger" ? "text-error hover:text-error hover:bg-error/10" : void 0,
20829
+ children: [
20830
+ action.icon && renderIconInput(action.icon, { size: "xs", className: "mr-1" }),
20831
+ action.label
20832
+ ]
20833
+ },
20834
+ idx
20835
+ )),
20836
+ maxInlineActions != null && actionDefs.length > maxInlineActions && /* @__PURE__ */ jsxRuntime.jsx(
20837
+ exports.Menu,
20838
+ {
20839
+ position: "bottom-end",
20840
+ trigger: /* @__PURE__ */ jsxRuntime.jsx(exports.Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "more-horizontal", size: "xs" }) }),
20841
+ items: actionDefs.slice(maxInlineActions).map((action) => ({
20842
+ label: action.label,
20843
+ icon: action.icon,
20844
+ event: action.event,
20845
+ onClick: () => fireAction(action, itemData)
20846
+ }))
20847
+ }
20848
+ )
20849
+ ] }) })
20850
+ ]
20800
20851
  },
20801
20852
  id
20802
20853
  )
@@ -20933,10 +20984,7 @@ function DataGrid({
20933
20984
  label: action.label,
20934
20985
  icon: action.icon,
20935
20986
  event: action.event,
20936
- onClick: () => eventBus.emit(`UI:${action.event}`, {
20937
- id: itemData.id,
20938
- row: itemData
20939
- })
20987
+ onClick: () => fireAction(action, itemData)
20940
20988
  }))
20941
20989
  }
20942
20990
  )
@@ -22662,7 +22710,9 @@ var init_FilterGroup = __esm({
22662
22710
  showIcon = true,
22663
22711
  query,
22664
22712
  isLoading,
22665
- look = "toolbar"
22713
+ look = "toolbar",
22714
+ event,
22715
+ clearEvent
22666
22716
  }) => {
22667
22717
  const { t } = hooks.useTranslate();
22668
22718
  const eventBus = useEventBus();
@@ -22699,14 +22749,18 @@ var init_FilterGroup = __esm({
22699
22749
  queryState.setFilter(field, value === "all" ? null : value);
22700
22750
  }
22701
22751
  onFilterChange?.(field, value === "all" ? null : value);
22702
- eventBus.emit("UI:FILTER", {
22752
+ const payload = {
22703
22753
  entity,
22704
22754
  field,
22705
22755
  value: value === "all" || value === null ? "" : value,
22706
22756
  query
22707
- });
22757
+ };
22758
+ if (event && event !== "FILTER") {
22759
+ eventBus.emit(`UI:${event}`, payload);
22760
+ }
22761
+ eventBus.emit("UI:FILTER", payload);
22708
22762
  },
22709
- [onFilterChange, queryState, eventBus, entity, query]
22763
+ [onFilterChange, queryState, eventBus, entity, query, event]
22710
22764
  );
22711
22765
  const handleClearAll = React74.useCallback(() => {
22712
22766
  setSelectedValues({});
@@ -22714,8 +22768,11 @@ var init_FilterGroup = __esm({
22714
22768
  queryState.clearFilters();
22715
22769
  }
22716
22770
  onClearAll?.();
22771
+ if (clearEvent && clearEvent !== "CLEAR_FILTERS") {
22772
+ eventBus.emit(`UI:${clearEvent}`, { entity, query });
22773
+ }
22717
22774
  eventBus.emit("UI:CLEAR_FILTERS", { entity, query });
22718
- }, [onClearAll, queryState, eventBus, entity, query]);
22775
+ }, [onClearAll, queryState, eventBus, entity, query, clearEvent]);
22719
22776
  const activeFilterCount = Object.keys(selectedValues).length;
22720
22777
  if (variant === "pills") {
22721
22778
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -23946,8 +24003,8 @@ var init_RelationSelect = __esm({
23946
24003
  disabled,
23947
24004
  className: cn(
23948
24005
  "w-full justify-between font-normal",
23949
- error && "border-red-300 focus:border-red-500 focus:ring-red-500",
23950
- isOpen && "ring-2 ring-primary-500 border-primary-500"
24006
+ error && "border-error/50 focus:border-error focus:ring-error",
24007
+ isOpen && "ring-2 ring-primary border-primary"
23951
24008
  ),
23952
24009
  children: [
23953
24010
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -24027,7 +24084,7 @@ var init_RelationSelect = __esm({
24027
24084
  paddingY: "sm",
24028
24085
  className: cn(
24029
24086
  "text-left text-sm hover:bg-muted focus:outline-none focus:bg-muted",
24030
- option.value === value && "bg-primary-50 text-primary-700",
24087
+ option.value === value && "bg-primary/10 text-primary",
24031
24088
  option.disabled && "opacity-50 cursor-not-allowed"
24032
24089
  ),
24033
24090
  onClick: () => handleSelect(option),
@@ -24093,7 +24150,7 @@ var init_SearchInput = __esm({
24093
24150
  queryState.setSearch(newValue);
24094
24151
  }
24095
24152
  onSearch?.(newValue);
24096
- if (event) {
24153
+ if (event && event !== "SEARCH") {
24097
24154
  eventBus.emit(`UI:${event}`, { searchTerm: newValue, entity });
24098
24155
  }
24099
24156
  if (event || entity || query) {
@@ -24184,7 +24241,7 @@ var init_SidePanel = __esm({
24184
24241
  showOverlay && /* @__PURE__ */ jsxRuntime.jsx(exports.Presence, { show: isOpen, animation: "overlay", children: /* @__PURE__ */ jsxRuntime.jsx(
24185
24242
  exports.Box,
24186
24243
  {
24187
- className: "fixed inset-0 bg-white/80 backdrop-blur-sm z-40 lg:hidden",
24244
+ className: "fixed inset-0 bg-background/80 backdrop-blur-sm z-40 lg:hidden",
24188
24245
  onClick: handleClose
24189
24246
  }
24190
24247
  ) }),
@@ -24551,7 +24608,7 @@ var init_WizardNavigation = __esm({
24551
24608
  /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "chevron-left", size: "sm" }),
24552
24609
  resolvedBackLabel
24553
24610
  ] }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Box, {}),
24554
- /* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { align: "center", gap: "sm", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-neutral-500", children: t("wizard.stepOf", { current: String(currentStep + 1), total: String(totalSteps) }) }) }),
24611
+ /* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { align: "center", gap: "sm", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-muted-foreground", children: t("wizard.stepOf", { current: String(currentStep + 1), total: String(totalSteps) }) }) }),
24555
24612
  isLastStep && showComplete ? /* @__PURE__ */ jsxRuntime.jsx(exports.Button, { variant: "primary", onClick: handleComplete, disabled: !isValid, children: resolvedCompleteLabel }) : showNext ? /* @__PURE__ */ jsxRuntime.jsxs(exports.Button, { variant: "primary", onClick: handleNext, disabled: !isValid, children: [
24556
24613
  resolvedNextLabel,
24557
24614
  /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "chevron-right", size: "sm" })
@@ -29270,6 +29327,7 @@ var init_Lightbox = __esm({
29270
29327
  {
29271
29328
  className: cn(
29272
29329
  "fixed inset-0 z-50 flex items-center justify-center",
29330
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: lightbox scrim behind images
29273
29331
  "bg-black bg-opacity-90",
29274
29332
  className
29275
29333
  ),
@@ -29292,7 +29350,7 @@ var init_Lightbox = __esm({
29292
29350
  "p-2 rounded-full",
29293
29351
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
29294
29352
  "hover:bg-opacity-70 transition-opacity",
29295
- "focus:outline-none focus:ring-2 focus:ring-white"
29353
+ "focus:outline-none focus:ring-2 focus:ring-ring"
29296
29354
  ),
29297
29355
  "aria-label": t("aria.closeModal"),
29298
29356
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "x", className: "w-6 h-6" })
@@ -29311,7 +29369,7 @@ var init_Lightbox = __esm({
29311
29369
  "p-2 rounded-full",
29312
29370
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
29313
29371
  "hover:bg-opacity-70 transition-opacity",
29314
- "focus:outline-none focus:ring-2 focus:ring-white"
29372
+ "focus:outline-none focus:ring-2 focus:ring-ring"
29315
29373
  ),
29316
29374
  "aria-label": t("aria.previousImage"),
29317
29375
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "chevron-left", className: "w-8 h-8" })
@@ -29348,7 +29406,7 @@ var init_Lightbox = __esm({
29348
29406
  "p-2 rounded-full",
29349
29407
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
29350
29408
  "hover:bg-opacity-70 transition-opacity",
29351
- "focus:outline-none focus:ring-2 focus:ring-white"
29409
+ "focus:outline-none focus:ring-2 focus:ring-ring"
29352
29410
  ),
29353
29411
  "aria-label": t("aria.nextImage"),
29354
29412
  children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: "chevron-right", className: "w-8 h-8" })
@@ -32421,6 +32479,7 @@ var init_QrScanner = __esm({
32421
32479
  overflow: "hidden",
32422
32480
  rounded: "sm",
32423
32481
  className: cn(
32482
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32424
32483
  "bg-black",
32425
32484
  "aspect-square w-full max-w-md",
32426
32485
  className
@@ -32485,7 +32544,9 @@ var init_QrScanner = __esm({
32485
32544
  type: "button",
32486
32545
  onClick: togglePause,
32487
32546
  className: cn(
32547
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32488
32548
  "rounded-full bg-black bg-opacity-60 p-2 text-white",
32549
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32489
32550
  "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
32490
32551
  ),
32491
32552
  "aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
@@ -32498,7 +32559,9 @@ var init_QrScanner = __esm({
32498
32559
  type: "button",
32499
32560
  onClick: toggleFacing,
32500
32561
  className: cn(
32562
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32501
32563
  "rounded-full bg-black bg-opacity-60 p-2 text-white",
32564
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32502
32565
  "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
32503
32566
  ),
32504
32567
  "aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
@@ -32511,7 +32574,9 @@ var init_QrScanner = __esm({
32511
32574
  type: "button",
32512
32575
  onClick: handleMockScan,
32513
32576
  className: cn(
32577
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32514
32578
  "rounded-full bg-black bg-opacity-60 px-3 py-2 text-xs text-white",
32579
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32515
32580
  "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
32516
32581
  ),
32517
32582
  "aria-label": t("aria.mockScanDev"),
@@ -35247,10 +35312,10 @@ var init_ModuleCard = __esm({
35247
35312
  init_avl_atom_types();
35248
35313
  init_MiniStateMachine();
35249
35314
  PERSISTENCE_BORDER = {
35250
- persistent: "border-l-[3px] border-l-blue-500 border-solid",
35251
- runtime: "border-l-[3px] border-l-blue-500 border-dashed",
35252
- singleton: "border-l-[3px] border-l-blue-500 border-double",
35253
- instance: "border-l-[3px] border-l-blue-500 border-dotted"
35315
+ persistent: "border-l-[3px] border-l-primary border-solid",
35316
+ runtime: "border-l-[3px] border-l-primary border-dashed",
35317
+ singleton: "border-l-[3px] border-l-primary border-double",
35318
+ instance: "border-l-[3px] border-l-primary border-dotted"
35254
35319
  };
35255
35320
  PERSISTENCE_ICON = {
35256
35321
  persistent: "\u26C1",
@@ -35280,8 +35345,8 @@ var init_ModuleCard = __esm({
35280
35345
  className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] shadow-sm overflow-hidden",
35281
35346
  style: { minWidth: 280, maxWidth: 400 },
35282
35347
  children: [
35283
- /* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "target", position: react.Position.Left, className: "!w-2.5 !h-2.5 !bg-orange-400" }),
35284
- /* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "source", position: react.Position.Right, className: "!w-2.5 !h-2.5 !bg-orange-400" }),
35348
+ /* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "target", position: react.Position.Left, className: "!w-2.5 !h-2.5 !bg-warning" }),
35349
+ /* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "source", position: react.Position.Right, className: "!w-2.5 !h-2.5 !bg-warning" }),
35285
35350
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3 py-2 border-b border-[var(--color-border)]", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-bold text-[var(--color-foreground)]", children: orbitalName }) }),
35286
35351
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `px-3 py-2 border-b border-[var(--color-border)] ${PERSISTENCE_BORDER[persistence] ?? ""}`, children: [
35287
35352
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 mb-1.5", children: [
@@ -37737,19 +37802,19 @@ var init_ReflectionBlock = __esm({
37737
37802
  "div",
37738
37803
  {
37739
37804
  className: cn(
37740
- "my-6 border-l-4 border-amber-400 bg-amber-50 dark:bg-amber-900/20 rounded-r-lg p-4",
37805
+ "my-6 border-l-4 border-warning bg-warning/10 rounded-r-lg p-4",
37741
37806
  className
37742
37807
  ),
37743
37808
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
37744
- /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.PauseCircle, { className: "text-amber-600 dark:text-amber-400 flex-shrink-0 mt-1", size: 20 }),
37809
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.PauseCircle, { className: "text-warning flex-shrink-0 mt-1", size: 20 }),
37745
37810
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
37746
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium text-amber-900 dark:text-amber-100 mb-2", children: "Pause & Reflect" }),
37747
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-gray-700 dark:text-gray-300 text-sm mb-3", children: prompt }),
37811
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium text-warning mb-2", children: "Pause & Reflect" }),
37812
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-foreground text-sm mb-3", children: prompt }),
37748
37813
  isExpanded ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
37749
37814
  /* @__PURE__ */ jsxRuntime.jsx(
37750
37815
  "textarea",
37751
37816
  {
37752
- className: "w-full p-2 border border-amber-300 dark:border-amber-700 rounded text-sm bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-amber-500 focus:border-transparent",
37817
+ className: "w-full p-2 border border-input rounded text-sm bg-card text-foreground focus:ring-2 focus:ring-ring focus:border-transparent",
37753
37818
  placeholder: "Your thoughts...",
37754
37819
  value: note,
37755
37820
  onChange: (e) => setNote(e.target.value),
@@ -37760,7 +37825,7 @@ var init_ReflectionBlock = __esm({
37760
37825
  "button",
37761
37826
  {
37762
37827
  onClick: handleSave,
37763
- className: "mt-2 text-sm px-3 py-1 bg-amber-600 text-white rounded hover:bg-amber-700 transition-colors",
37828
+ className: "mt-2 text-sm px-3 py-1 bg-warning text-warning-foreground rounded hover:opacity-90 transition-colors",
37764
37829
  children: "Save & Continue"
37765
37830
  }
37766
37831
  )
@@ -37768,7 +37833,7 @@ var init_ReflectionBlock = __esm({
37768
37833
  "button",
37769
37834
  {
37770
37835
  onClick: () => setIsExpanded(true),
37771
- className: "text-sm text-amber-600 dark:text-amber-400 hover:underline",
37836
+ className: "text-sm text-warning hover:underline",
37772
37837
  children: savedNote ? "\u2713 Answered \xB7 Edit" : "Answer this question"
37773
37838
  }
37774
37839
  )
@@ -38272,7 +38337,7 @@ function DataTable({
38272
38337
  )),
38273
38338
  rowActions && /* @__PURE__ */ jsxRuntime.jsx("th", { className: "w-12 px-4 py-3" })
38274
38339
  ] }) }),
38275
- /* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-700", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx(
38340
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-y divide-border", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx(
38276
38341
  "td",
38277
38342
  {
38278
38343
  colSpan: normalizedColumns.length + (selectable ? 1 : 0) + (rowActions ? 1 : 0),
@@ -38643,7 +38708,7 @@ var init_DetailPanel = __esm({
38643
38708
  };
38644
38709
  const effectiveFieldNames = isFieldDefArray(propFields) ? normalizeFieldDefs(propFields) : fieldNames;
38645
38710
  const fieldTypeMap = isFieldDefArray(propFields) ? buildFieldTypeMap(propFields) : {};
38646
- React74.useCallback(
38711
+ const handleActionClick = React74.useCallback(
38647
38712
  (action, data2) => {
38648
38713
  if (action.navigatesTo) {
38649
38714
  const url = action.navigatesTo.replace(
@@ -38835,8 +38900,9 @@ var init_DetailPanel = __esm({
38835
38900
  {
38836
38901
  variant: action.variant || "secondary",
38837
38902
  size: "sm",
38838
- action: action.event,
38903
+ action: action.navigatesTo ? void 0 : action.event,
38839
38904
  actionPayload: { row: normalizedData },
38905
+ onClick: action.navigatesTo ? () => handleActionClick(action, normalizedData) : void 0,
38840
38906
  icon: action.icon,
38841
38907
  "data-testid": action.event ? `action-${action.event}` : void 0,
38842
38908
  "data-row-id": normalizedData?.id !== void 0 ? String(normalizedData.id) : void 0,
@@ -40879,8 +40945,9 @@ var init_MediaGallery = __esm({
40879
40945
  )
40880
40946
  }
40881
40947
  ),
40882
- item.caption && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "absolute bottom-0 left-0 right-0 p-2 bg-gradient-to-t from-black/60 to-transparent", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-white truncate", children: item.caption }) }),
40883
- selectable && isSelected && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "absolute top-2 right-2 w-5 h-5 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-white text-xs", children: "\u2713" }) })
40948
+ item.caption && // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: caption scrim over image
40949
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "absolute bottom-0 left-0 right-0 p-2 bg-gradient-to-t from-black/60 to-transparent", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-white truncate", children: item.caption }) }),
40950
+ selectable && isSelected && /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "absolute top-2 right-2 w-5 h-5 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", className: "text-primary-foreground text-xs", children: "\u2713" }) })
40884
40951
  ]
40885
40952
  },
40886
40953
  item.id
@@ -40909,7 +40976,7 @@ var init_MediaGallery = __esm({
40909
40976
  size: "sm",
40910
40977
  icon: LucideIcons2.X,
40911
40978
  action: "LIGHTBOX_CLOSE",
40912
- className: "text-white hover:bg-white/20"
40979
+ className: "text-foreground hover:bg-muted/50"
40913
40980
  }
40914
40981
  ) }),
40915
40982
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -40920,7 +40987,7 @@ var init_MediaGallery = __esm({
40920
40987
  className: "max-w-full max-h-[80vh] object-contain rounded-md"
40921
40988
  }
40922
40989
  ),
40923
- lightboxItem.caption && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "text-white mt-3 text-center", children: lightboxItem.caption })
40990
+ lightboxItem.caption && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", className: "text-foreground mt-3 text-center", children: lightboxItem.caption })
40924
40991
  ]
40925
40992
  }
40926
40993
  )
@@ -41362,7 +41429,7 @@ function WalkMinimap() {
41362
41429
  {
41363
41430
  variant,
41364
41431
  size: "sm",
41365
- className: `flex-shrink-0 text-[9px] ${isActive ? "ring-1 ring-cyan-400" : ""}`,
41432
+ className: `flex-shrink-0 text-[9px] ${isActive ? "ring-1 ring-info" : ""}`,
41366
41433
  children: [
41367
41434
  isDone ? "\u2713" : isActive ? "\u25CF" : "\u25CB",
41368
41435
  " ",
@@ -41503,13 +41570,13 @@ function WalkMinimap() {
41503
41570
  })
41504
41571
  ] }) }),
41505
41572
  /* @__PURE__ */ jsxRuntime.jsx(exports.Box, { className: "px-2 py-1 border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "sm", className: "items-center justify-between", children: [
41506
- /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-xs font-mono text-green-500", children: [
41573
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-xs font-mono text-success", children: [
41507
41574
  "Engine: ",
41508
41575
  engineCount,
41509
41576
  "/",
41510
41577
  totalTransitions
41511
41578
  ] }),
41512
- domCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-xs font-mono text-cyan-500", children: [
41579
+ domCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "caption", className: "text-xs font-mono text-info", children: [
41513
41580
  "DOM: ",
41514
41581
  domCount
41515
41582
  ] }),
@@ -41542,13 +41609,13 @@ function TraitsTab({ traits: traits2 }) {
41542
41609
  const accordionItems = traits2.map((trait) => ({
41543
41610
  id: trait.id,
41544
41611
  header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
41545
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
41612
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "semibold", className: "text-primary", children: trait.name }),
41546
41613
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "success", size: "sm", children: trait.currentState }),
41547
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
41614
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
41548
41615
  ] }),
41549
41616
  content: /* @__PURE__ */ jsxRuntime.jsxs(exports.Stack, { gap: "sm", children: [
41550
41617
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
41551
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
41618
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.states") }),
41552
41619
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsxRuntime.jsx(
41553
41620
  exports.Badge,
41554
41621
  {
@@ -41560,18 +41627,18 @@ function TraitsTab({ traits: traits2 }) {
41560
41627
  )) })
41561
41628
  ] }),
41562
41629
  trait.transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
41563
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
41630
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.transitions") }),
41564
41631
  /* @__PURE__ */ jsxRuntime.jsx(exports.Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "font-mono", children: [
41565
41632
  t2.from,
41566
41633
  " \u2192 ",
41567
41634
  t2.to,
41568
41635
  " ",
41569
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-gray-500", children: [
41636
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
41570
41637
  "(",
41571
41638
  t2.event,
41572
41639
  ")"
41573
41640
  ] }),
41574
- t2.guard && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-amber-500", children: [
41641
+ t2.guard && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-warning", children: [
41575
41642
  " [",
41576
41643
  t2.guard,
41577
41644
  "]"
@@ -41579,7 +41646,7 @@ function TraitsTab({ traits: traits2 }) {
41579
41646
  ] }, i)) })
41580
41647
  ] }),
41581
41648
  trait.guards.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
41582
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
41649
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.guards") }),
41583
41650
  /* @__PURE__ */ jsxRuntime.jsx(exports.Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
41584
41651
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", children: g.name }),
41585
41652
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
@@ -41622,11 +41689,11 @@ function TicksTab({ ticks: ticks2 }) {
41622
41689
  };
41623
41690
  const TickCard = ({ tick, active }) => /* @__PURE__ */ jsxRuntime.jsxs(exports.Card, { className: `p-3 ${!active ? "opacity-50" : ""}`, children: [
41624
41691
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-2", children: [
41625
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `w-2 h-2 rounded-full ${active ? "bg-green-500" : "bg-gray-400"}` }),
41626
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "semibold", className: "text-amber-600 dark:text-amber-400", children: tick.name }),
41627
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-500", children: tick.traitName })
41692
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `w-2 h-2 rounded-full ${active ? "bg-success" : "bg-muted-foreground"}` }),
41693
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "semibold", className: "text-warning", children: tick.name }),
41694
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground", children: tick.traitName })
41628
41695
  ] }),
41629
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 text-xs text-gray-500", children: [
41696
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 text-xs text-muted-foreground", children: [
41630
41697
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
41631
41698
  tick.interval,
41632
41699
  "ms"
@@ -41649,7 +41716,7 @@ function TicksTab({ ticks: ticks2 }) {
41649
41716
  ] });
41650
41717
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--ticks", children: [
41651
41718
  activeTicks.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
41652
- /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: [
41719
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: [
41653
41720
  "Active (",
41654
41721
  activeTicks.length,
41655
41722
  ")"
@@ -41657,7 +41724,7 @@ function TicksTab({ ticks: ticks2 }) {
41657
41724
  /* @__PURE__ */ jsxRuntime.jsx(exports.Stack, { gap: "sm", children: activeTicks.map((tick) => /* @__PURE__ */ jsxRuntime.jsx(TickCard, { tick, active: true }, tick.id)) })
41658
41725
  ] }),
41659
41726
  inactiveTicks.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
41660
- /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-400 mb-2", children: [
41727
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: [
41661
41728
  "Inactive (",
41662
41729
  inactiveTicks.length,
41663
41730
  ")"
@@ -41705,33 +41772,33 @@ function EntitiesTab({ snapshot }) {
41705
41772
  id: `singleton-${name}`,
41706
41773
  header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
41707
41774
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
41708
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
41775
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "semibold", className: "text-info", children: name })
41709
41776
  ] }),
41710
- content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
41777
+ content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-muted-foreground bg-muted p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
41711
41778
  }));
41712
41779
  const runtimeItems = runtimeEntities.slice(0, 20).map((entity) => ({
41713
41780
  id: entity.id,
41714
41781
  header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
41715
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: entity.type }),
41716
- /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "text-gray-500", children: [
41782
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "semibold", className: "text-info", children: entity.type }),
41783
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "text-muted-foreground", children: [
41717
41784
  "#",
41718
41785
  entity.id.slice(0, 8)
41719
41786
  ] })
41720
41787
  ] }),
41721
- content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-40", children: JSON.stringify(entity.data, null, 2) })
41788
+ content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-muted-foreground bg-muted p-2 rounded overflow-auto max-h-40", children: JSON.stringify(entity.data, null, 2) })
41722
41789
  }));
41723
41790
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--entities", children: [
41724
41791
  singletonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
41725
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
41792
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
41726
41793
  /* @__PURE__ */ jsxRuntime.jsx(exports.Accordion, { items: singletonItems, multiple: true })
41727
41794
  ] }),
41728
41795
  runtimeItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
41729
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
41796
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
41730
41797
  /* @__PURE__ */ jsxRuntime.jsx(exports.Accordion, { items: runtimeItems, multiple: true }),
41731
- runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-400 text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
41798
+ runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
41732
41799
  ] }),
41733
41800
  persistentEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
41734
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
41801
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.persistent") }),
41735
41802
  /* @__PURE__ */ jsxRuntime.jsx(exports.Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1", children: [
41736
41803
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", children: type }),
41737
41804
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
@@ -41816,7 +41883,7 @@ function EventFlowTab({ events: events2 }) {
41816
41883
  );
41817
41884
  })
41818
41885
  ] }),
41819
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 ml-auto cursor-pointer", children: [
41886
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-muted-foreground ml-auto cursor-pointer", children: [
41820
41887
  /* @__PURE__ */ jsxRuntime.jsx(
41821
41888
  exports.Checkbox,
41822
41889
  {
@@ -41831,18 +41898,18 @@ function EventFlowTab({ events: events2 }) {
41831
41898
  "div",
41832
41899
  {
41833
41900
  ref: containerRef,
41834
- className: "max-h-64 overflow-y-auto space-y-1 bg-gray-50 dark:bg-gray-800 rounded p-2",
41901
+ className: "max-h-64 overflow-y-auto space-y-1 bg-muted rounded p-2",
41835
41902
  children: filteredEvents.slice(-100).map((event) => {
41836
41903
  const { variant, icon } = TYPE_BADGES[event.type] || { variant: "default", icon: "\u2022" };
41837
41904
  return /* @__PURE__ */ jsxRuntime.jsxs(
41838
41905
  "div",
41839
41906
  {
41840
- className: "flex items-start gap-2 text-xs py-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded px-1",
41907
+ className: "flex items-start gap-2 text-xs py-1 hover:bg-muted/50 rounded px-1",
41841
41908
  children: [
41842
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-400 font-mono min-w-[65px]", children: formatTime2(event.timestamp) }),
41909
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground font-mono min-w-[65px]", children: formatTime2(event.timestamp) }),
41843
41910
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: icon }),
41844
41911
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant, size: "sm", className: "min-w-[60px] justify-center", children: event.source }),
41845
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-600 dark:text-gray-400", children: event.message })
41912
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground", children: event.message })
41846
41913
  ]
41847
41914
  },
41848
41915
  event.id
@@ -41906,21 +41973,21 @@ function GuardsPanel({ guards }) {
41906
41973
  id: guard.id,
41907
41974
  header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
41908
41975
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: guard.result ? "success" : "danger", size: "sm", children: guard.result ? "\u2713" : "\u2717" }),
41909
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "semibold", className: "text-amber-600 dark:text-amber-400", children: guard.guardName }),
41910
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-500", children: guard.context.type === "transition" ? `${guard.context.transitionFrom} \u2192 ${guard.context.transitionTo}` : guard.context.tickName }),
41911
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-400 ml-auto", children: formatTime2(guard.timestamp) })
41976
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "body", weight: "semibold", className: "text-warning", children: guard.guardName }),
41977
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground", children: guard.context.type === "transition" ? `${guard.context.transitionFrom} \u2192 ${guard.context.transitionTo}` : guard.context.tickName }),
41978
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: formatTime2(guard.timestamp) })
41912
41979
  ] }),
41913
41980
  content: /* @__PURE__ */ jsxRuntime.jsxs(exports.Stack, { gap: "sm", children: [
41914
41981
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
41915
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
41916
- /* @__PURE__ */ jsxRuntime.jsx("code", { className: "block mt-1 text-xs text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 px-2 py-1 rounded", children: guard.expression })
41982
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.expression") }),
41983
+ /* @__PURE__ */ jsxRuntime.jsx("code", { className: "block mt-1 text-xs text-warning bg-warning/10 px-2 py-1 rounded", children: guard.expression })
41917
41984
  ] }),
41918
41985
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
41919
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
41920
- /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-24", children: JSON.stringify(guard.inputs, null, 2) })
41986
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.inputs") }),
41987
+ /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 text-xs text-muted-foreground bg-muted p-2 rounded overflow-auto max-h-24", children: JSON.stringify(guard.inputs, null, 2) })
41921
41988
  ] }),
41922
41989
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
41923
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
41990
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.trait") }),
41924
41991
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", children: guard.context.traitName })
41925
41992
  ] })
41926
41993
  ] })
@@ -41976,7 +42043,7 @@ function VerificationTab({ checks, summary }) {
41976
42043
  (a, b) => (sortOrder[a.status] ?? 4) - (sortOrder[b.status] ?? 4)
41977
42044
  );
41978
42045
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--verification", children: [
41979
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3 p-2 bg-gray-50 dark:bg-gray-800 rounded", children: [
42046
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3 p-2 bg-muted rounded", children: [
41980
42047
  /* @__PURE__ */ jsxRuntime.jsxs(exports.Badge, { variant: "success", size: "sm", children: [
41981
42048
  summary.passed,
41982
42049
  " passed"
@@ -41993,7 +42060,7 @@ function VerificationTab({ checks, summary }) {
41993
42060
  summary.pending,
41994
42061
  " pending"
41995
42062
  ] }),
41996
- /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "text-gray-500 ml-auto", children: [
42063
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: [
41997
42064
  summary.totalChecks,
41998
42065
  " total checks"
41999
42066
  ] })
@@ -42003,12 +42070,12 @@ function VerificationTab({ checks, summary }) {
42003
42070
  return /* @__PURE__ */ jsxRuntime.jsxs(
42004
42071
  "div",
42005
42072
  {
42006
- className: "flex items-start gap-2 p-2 rounded hover:bg-gray-50 dark:hover:bg-gray-800",
42073
+ className: "flex items-start gap-2 p-2 rounded hover:bg-muted/50",
42007
42074
  children: [
42008
42075
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: config.variant, size: "sm", className: "min-w-[20px] justify-center mt-0.5", children: config.icon }),
42009
42076
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
42010
42077
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "break-words", children: check.label }),
42011
- check.details && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-500 break-words", children: check.details })
42078
+ check.details && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground break-words", children: check.details })
42012
42079
  ] }),
42013
42080
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground font-mono text-xs shrink-0", children: new Date(check.updatedAt).toLocaleTimeString("en-US", {
42014
42081
  hour12: false,
@@ -42043,10 +42110,10 @@ var init_VerificationTab = __esm({
42043
42110
  function EffectBadge({ effect }) {
42044
42111
  const variant = EFFECT_STATUS_VARIANT[effect.status] || "default";
42045
42112
  const icon = effect.status === "executed" ? "\u2713" : effect.status === "failed" ? "\u2717" : "-";
42046
- return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 text-xs font-mono bg-gray-100 dark:bg-gray-700 rounded px-1.5 py-0.5", children: [
42113
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 text-xs font-mono bg-muted rounded px-1.5 py-0.5", children: [
42047
42114
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant, size: "sm", className: "!text-[9px] !px-1 !py-0", children: icon }),
42048
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-600 dark:text-gray-400", children: effect.type }),
42049
- effect.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 truncate max-w-[120px]", title: effect.error, children: effect.error })
42115
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: effect.type }),
42116
+ effect.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-error truncate max-w-[120px]", title: effect.error, children: effect.error })
42050
42117
  ] });
42051
42118
  }
42052
42119
  function TransitionTimeline({ transitions }) {
@@ -42081,8 +42148,8 @@ function TransitionTimeline({ transitions }) {
42081
42148
  const sorted = [...transitions].reverse();
42082
42149
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
42083
42150
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
42084
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
42085
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
42151
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
42152
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-muted-foreground cursor-pointer", children: [
42086
42153
  /* @__PURE__ */ jsxRuntime.jsx(
42087
42154
  exports.Checkbox,
42088
42155
  {
@@ -42107,22 +42174,22 @@ function TransitionTimeline({ transitions }) {
42107
42174
  {
42108
42175
  className: `
42109
42176
  relative pl-6 pb-3 border-l-2 cursor-pointer
42110
- hover:bg-gray-50 dark:hover:bg-gray-800 rounded-r
42111
- ${hasFailedEffects ? "border-red-300 dark:border-red-700" : "border-gray-200 dark:border-gray-700"}
42177
+ hover:bg-muted/50 rounded-r
42178
+ ${hasFailedEffects ? "border-error" : "border-border"}
42112
42179
  `,
42113
42180
  onClick: () => setExpandedId(isExpanded ? null : trace.id),
42114
42181
  children: [
42115
42182
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: `
42116
42183
  absolute left-[-5px] top-1 w-2 h-2 rounded-full
42117
- ${hasFailedEffects ? "bg-red-500" : allPassed ? "bg-green-500" : "bg-gray-400"}
42184
+ ${hasFailedEffects ? "bg-error" : allPassed ? "bg-success" : "bg-muted-foreground"}
42118
42185
  ` }),
42119
42186
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-xs py-1 px-2", children: [
42120
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-400 font-mono min-w-[65px]", children: formatTime2(trace.timestamp) }),
42187
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground font-mono min-w-[65px]", children: formatTime2(trace.timestamp) }),
42121
42188
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "primary", size: "sm", className: "min-w-[60px] justify-center", children: trace.traitName }),
42122
- /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "font-mono text-gray-600 dark:text-gray-400", children: [
42189
+ /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "font-mono text-muted-foreground", children: [
42123
42190
  trace.from,
42124
42191
  " ",
42125
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-400", children: "\u2192" }),
42192
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/50", children: "\u2192" }),
42126
42193
  " ",
42127
42194
  trace.to
42128
42195
  ] }),
@@ -42139,9 +42206,9 @@ function TransitionTimeline({ transitions }) {
42139
42206
  ]
42140
42207
  }
42141
42208
  ),
42142
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
42209
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
42143
42210
  ] }),
42144
- isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-gray-200 dark:border-gray-700 space-y-1", children: trace.effects.map((effect, eIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
42211
+ isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-border space-y-1", children: trace.effects.map((effect, eIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
42145
42212
  /* @__PURE__ */ jsxRuntime.jsx(EffectBadge, { effect }),
42146
42213
  effect.args.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground font-mono text-xs truncate max-w-[200px]", children: JSON.stringify(effect.args) }),
42147
42214
  effect.durationMs !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "text-muted-foreground text-xs", children: [
@@ -42175,8 +42242,8 @@ var init_TransitionTimeline = __esm({
42175
42242
  }
42176
42243
  });
42177
42244
  function StatRow({ label, value, variant }) {
42178
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1.5 border-b border-gray-100 dark:border-gray-800 last:border-b-0", children: [
42179
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-500", children: label }),
42245
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1.5 border-b border-border last:border-b-0", children: [
42246
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground", children: label }),
42180
42247
  variant ? /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant, size: "sm", children: String(value) }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "semibold", className: "font-mono", children: String(value) })
42181
42248
  ] });
42182
42249
  }
@@ -42205,7 +42272,7 @@ function ServerBridgeTab({ bridge }) {
42205
42272
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "debug-tab debug-tab--bridge", children: /* @__PURE__ */ jsxRuntime.jsxs(exports.Stack, { gap: "sm", children: [
42206
42273
  /* @__PURE__ */ jsxRuntime.jsxs(exports.Card, { className: "p-3", children: [
42207
42274
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
42208
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
42275
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-success animate-pulse" : "bg-error"}` }),
42209
42276
  /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
42210
42277
  ] }),
42211
42278
  /* @__PURE__ */ jsxRuntime.jsxs(exports.Stack, { gap: "xs", children: [
@@ -42240,11 +42307,11 @@ function ServerBridgeTab({ bridge }) {
42240
42307
  )
42241
42308
  ] })
42242
42309
  ] }),
42243
- bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(exports.Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
42244
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
42245
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
42310
+ bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(exports.Card, { className: "p-3 border-error/30 bg-error/10", children: [
42311
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "semibold", className: "text-error mb-1", children: t("debug.lastError") }),
42312
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-error font-mono break-all", children: bridge.lastError })
42246
42313
  ] }),
42247
- bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-400", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
42314
+ bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
42248
42315
  ] }) });
42249
42316
  }
42250
42317
  var init_ServerBridgeTab = __esm({
@@ -42370,7 +42437,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
42370
42437
  };
42371
42438
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
42372
42439
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
42373
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
42440
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.activeStates") }),
42374
42441
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxRuntime.jsxs(exports.Badge, { variant: "success", size: "sm", children: [
42375
42442
  trait.name,
42376
42443
  ": ",
@@ -42378,8 +42445,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
42378
42445
  ] }, trait.id)) })
42379
42446
  ] }),
42380
42447
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
42381
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
42382
- availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-400 italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
42448
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.availableEvents") }),
42449
+ availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
42383
42450
  /* @__PURE__ */ jsxRuntime.jsx(
42384
42451
  exports.Button,
42385
42452
  {
@@ -42390,22 +42457,22 @@ function EventDispatcherTab({ traits: traits2, schema }) {
42390
42457
  children: event
42391
42458
  }
42392
42459
  ),
42393
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
42460
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", className: "text-muted-foreground", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
42394
42461
  transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
42395
42462
  ] }, event)) })
42396
42463
  ] }),
42397
42464
  unavailableEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
42398
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
42465
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.otherEvents") }),
42399
42466
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
42400
42467
  ] }),
42401
42468
  log19.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
42402
- /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
42469
+ /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.recentTransitions") }),
42403
42470
  /* @__PURE__ */ jsxRuntime.jsx(exports.Stack, { gap: "xs", children: log19.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(exports.Typography, { variant: "small", className: "font-mono text-xs", children: [
42404
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
42471
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: entry.traitName }),
42405
42472
  " ",
42406
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500", children: entry.from }),
42473
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: entry.from }),
42407
42474
  " -> ",
42408
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-green-400", children: entry.to })
42475
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-success", children: entry.to })
42409
42476
  ] }, i)) })
42410
42477
  ] })
42411
42478
  ] });
@@ -42431,21 +42498,21 @@ var init_RuntimeDebugger = __esm({
42431
42498
  function ServerResponseRow({ sr }) {
42432
42499
  const { t } = hooks.useTranslate();
42433
42500
  const entityEntries = Object.entries(sr.dataEntities);
42434
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
42501
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-primary py-0.5 text-xs font-mono", children: [
42435
42502
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
42436
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
42503
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-success" : "text-error", children: [
42437
42504
  sr.success ? "\u2713" : "\u2717",
42438
42505
  " ",
42439
42506
  t("debug.server")
42440
42507
  ] }),
42441
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
42442
- sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-purple-500/15 text-purple-600 dark:text-purple-300", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
42443
- sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
42508
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: sr.orbitalName }),
42509
+ sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-primary/10 text-primary", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
42510
+ sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-primary/10 text-primary", children: [
42444
42511
  t("debug.emitLabel"),
42445
42512
  " ",
42446
42513
  sr.emittedEvents.join(", ")
42447
42514
  ] }),
42448
- sr.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-red-500/15 text-red-600 dark:text-red-400 truncate max-w-[300px]", children: sr.error })
42515
+ sr.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-error/10 text-error truncate max-w-[300px]", children: sr.error })
42449
42516
  ] }),
42450
42517
  entityEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
42451
42518
  name,
@@ -42461,9 +42528,9 @@ function TransitionRow({ trace }) {
42461
42528
  if (isServerEntry && trace.serverResponse) {
42462
42529
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-0.5 border-b border-border last:border-0", children: [
42463
42530
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
42464
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
42531
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-primary" }),
42465
42532
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
42466
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
42533
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary flex-shrink-0", children: t("debug.serverResponse") })
42467
42534
  ] }),
42468
42535
  /* @__PURE__ */ jsxRuntime.jsx(ServerResponseRow, { sr: trace.serverResponse })
42469
42536
  ] });
@@ -42472,7 +42539,7 @@ function TransitionRow({ trace }) {
42472
42539
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
42473
42540
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
42474
42541
  "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0",
42475
- hasFailedEffects ? "bg-red-500" : "bg-green-500"
42542
+ hasFailedEffects ? "bg-error" : "bg-success"
42476
42543
  ) }),
42477
42544
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: "info", size: "sm", className: "flex-shrink-0", children: trace.event }),
42478
42545
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground flex-shrink-0", children: trace.traitName }),
@@ -42486,7 +42553,7 @@ function TransitionRow({ trace }) {
42486
42553
  ] }),
42487
42554
  trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1 ml-6 mt-0.5", children: trace.effects.map((eff, i) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn(
42488
42555
  "px-1 rounded text-xs",
42489
- eff.status === "executed" ? "bg-green-500/15 text-green-600 dark:text-green-400" : eff.status === "failed" ? "bg-red-500/15 text-red-600 dark:text-red-400" : "bg-yellow-500/15 text-yellow-600 dark:text-yellow-400"
42556
+ eff.status === "executed" ? "bg-success/10 text-success" : eff.status === "failed" ? "bg-error/10 text-error" : "bg-warning/10 text-warning"
42490
42557
  ), children: [
42491
42558
  eff.status === "executed" ? "\u2713" : eff.status === "failed" ? "\u2717" : "-",
42492
42559
  " ",
@@ -42520,7 +42587,7 @@ function VerifyModePanel({
42520
42587
  {
42521
42588
  className: cn(
42522
42589
  "runtime-debugger runtime-debugger--verify",
42523
- "flex flex-col bg-[var(--color-card)] text-[var(--color-foreground)] border-t-2 border-cyan-500",
42590
+ "flex flex-col bg-[var(--color-card)] text-[var(--color-foreground)] border-t-2 border-accent",
42524
42591
  hudBottom ? "" : "fixed bottom-0 left-0 right-0",
42525
42592
  className
42526
42593
  ),
@@ -42541,8 +42608,8 @@ function VerifyModePanel({
42541
42608
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
42542
42609
  /* @__PURE__ */ jsxRuntime.jsx(exports.Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
42543
42610
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
42544
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
42545
- traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
42611
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: t("debug.serverCount", { count: serverCount }) }),
42612
+ traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-accent truncate max-w-[400px]", children: traitStates }),
42546
42613
  !expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
42547
42614
  ]
42548
42615
  }
@@ -42737,7 +42804,7 @@ function RuntimeDebugger({
42737
42804
  title: t("debug.openDebugger"),
42738
42805
  children: failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
42739
42806
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" }),
42740
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
42807
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-error rounded-full" })
42741
42808
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" })
42742
42809
  }
42743
42810
  ) : /* @__PURE__ */ jsxRuntime.jsxs(exports.Card, { className: "runtime-debugger__panel", children: [
@@ -42825,7 +42892,7 @@ var init_SegmentRenderer = __esm({
42825
42892
  "div",
42826
42893
  {
42827
42894
  className: cn(
42828
- "border border-gray-200 dark:border-gray-700 rounded-lg p-2 md:p-4 overflow-x-auto space-y-6",
42895
+ "border border-border rounded-lg p-2 md:p-4 overflow-x-auto space-y-6",
42829
42896
  containerClassName,
42830
42897
  className
42831
42898
  ),
@@ -47311,6 +47378,14 @@ function useUISlotManager() {
47311
47378
  [sourceKey]: content
47312
47379
  };
47313
47380
  const nextAll = { ...prev, [config.target]: nextSources };
47381
+ const priorWriters = Object.keys(slotSources);
47382
+ if (priorWriters.length === 1 && priorWriters[0] !== sourceKey) {
47383
+ log17.warn("slot:contention", {
47384
+ slot: config.target,
47385
+ writers: [priorWriters[0], sourceKey],
47386
+ patternTypes: [slotSources[priorWriters[0]].pattern, content.pattern]
47387
+ });
47388
+ }
47314
47389
  if (content.sourceTrait) {
47315
47390
  indexTraitRender(content.sourceTrait, content);
47316
47391
  notifyTraitSubscribers(content.sourceTrait, content);