@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
@@ -1773,6 +1773,7 @@ var init_Button = __esm({
1773
1773
  "button",
1774
1774
  {
1775
1775
  ref,
1776
+ type: "button",
1776
1777
  disabled: disabled || isLoading,
1777
1778
  className: cn(
1778
1779
  "relative inline-flex items-center justify-center gap-2",
@@ -3850,15 +3851,15 @@ var init_TextHighlight = __esm({
3850
3851
  const typeStyles = {
3851
3852
  question: cn(
3852
3853
  // Blue border for questions
3853
- "bg-card border-b-2 border-primary-600",
3854
+ "bg-card border-b-2 border-primary",
3854
3855
  "hover:bg-muted",
3855
- isActive && "bg-primary-100 ring-2 ring-primary-600"
3856
+ isActive && "bg-primary/10 ring-2 ring-primary"
3856
3857
  ),
3857
3858
  note: cn(
3858
3859
  // Yellow border for notes
3859
- "bg-card border-b-2 border-amber-500",
3860
+ "bg-card border-b-2 border-warning",
3860
3861
  "hover:bg-muted",
3861
- isActive && "bg-amber-100 ring-2 ring-amber-500"
3862
+ isActive && "bg-warning/10 ring-2 ring-warning"
3862
3863
  )
3863
3864
  };
3864
3865
  return /* @__PURE__ */ jsx(
@@ -3939,6 +3940,11 @@ var init_Typography = __esm({
3939
3940
  inherit: "text-inherit"
3940
3941
  };
3941
3942
  weightStyles = {
3943
+ // Neutral: an atom default of "none" must not override the variant's baked
3944
+ // weight (C-PATTERN-ENUM-BLOCKS-NEUTRAL-OVERRIDE — `variant={h2}` rendered
3945
+ // tiny because the ui-typography atom's `weight: light`/`size: xs` defaults
3946
+ // clobbered every variant).
3947
+ none: "",
3942
3948
  light: "font-light",
3943
3949
  normal: "font-normal",
3944
3950
  medium: "font-medium",
@@ -3964,6 +3970,7 @@ var init_Typography = __esm({
3964
3970
  label: "span"
3965
3971
  };
3966
3972
  typographySizeStyles = {
3973
+ none: "",
3967
3974
  xs: "text-xs",
3968
3975
  sm: "text-sm",
3969
3976
  md: "text-base",
@@ -4460,7 +4467,7 @@ function DayCell({
4460
4467
  {
4461
4468
  className: cn(
4462
4469
  "p-2 text-center cursor-pointer hover:bg-muted transition-colors",
4463
- isToday && "bg-blue-500/10",
4470
+ isToday && "bg-primary/10",
4464
4471
  className
4465
4472
  ),
4466
4473
  onClick: handleClick,
@@ -4471,7 +4478,7 @@ function DayCell({
4471
4478
  variant: "small",
4472
4479
  className: cn(
4473
4480
  "font-medium",
4474
- isToday ? "text-blue-600" : "text-muted-foreground"
4481
+ isToday ? "text-primary" : "text-muted-foreground"
4475
4482
  ),
4476
4483
  children: dayAbbr
4477
4484
  }
@@ -4483,7 +4490,7 @@ function DayCell({
4483
4490
  rounded: "full",
4484
4491
  className: cn(
4485
4492
  "h-8 w-8 mx-auto items-center justify-center",
4486
- isToday && "bg-blue-600 text-white"
4493
+ isToday && "bg-primary text-primary-foreground"
4487
4494
  ),
4488
4495
  children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "font-semibold", children: safeDate.getDate() })
4489
4496
  }
@@ -7798,19 +7805,19 @@ var init_ActivationBlock = __esm({
7798
7805
  "div",
7799
7806
  {
7800
7807
  className: cn(
7801
- "bg-indigo-50 dark:bg-indigo-900/20 border-2 border-indigo-200 dark:border-indigo-800 rounded-lg p-5 mb-6",
7808
+ "bg-primary/10 border-2 border-primary rounded-lg p-5 mb-6",
7802
7809
  className
7803
7810
  ),
7804
7811
  children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
7805
- /* @__PURE__ */ jsx(Lightbulb, { className: "text-indigo-600 dark:text-indigo-400 flex-shrink-0 mt-1", size: 24 }),
7812
+ /* @__PURE__ */ jsx(Lightbulb, { className: "text-primary flex-shrink-0 mt-1", size: 24 }),
7806
7813
  /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
7807
- /* @__PURE__ */ jsx("h4", { className: "font-semibold text-indigo-900 dark:text-indigo-100 mb-2", children: "Before You Begin..." }),
7808
- /* @__PURE__ */ jsx("p", { className: "text-gray-700 dark:text-gray-300 mb-3 text-sm md:text-base", children: question }),
7814
+ /* @__PURE__ */ jsx("h4", { className: "font-semibold text-primary mb-2", children: "Before You Begin..." }),
7815
+ /* @__PURE__ */ jsx("p", { className: "text-foreground mb-3 text-sm md:text-base", children: question }),
7809
7816
  isExpanded ? /* @__PURE__ */ jsxs(Fragment, { children: [
7810
7817
  /* @__PURE__ */ jsx(
7811
7818
  "textarea",
7812
7819
  {
7813
- 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",
7820
+ 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",
7814
7821
  placeholder: "Jot down your thoughts...",
7815
7822
  value: response,
7816
7823
  onChange: (e) => setResponse(e.target.value),
@@ -7822,7 +7829,7 @@ var init_ActivationBlock = __esm({
7822
7829
  "button",
7823
7830
  {
7824
7831
  onClick: handleSubmit,
7825
- className: "px-4 py-2 bg-indigo-600 text-white rounded-md hover:bg-indigo-700 text-sm font-medium transition-colors",
7832
+ className: "px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary-hover text-sm font-medium transition-colors",
7826
7833
  children: "Continue to Lesson \u2192"
7827
7834
  }
7828
7835
  ),
@@ -7833,7 +7840,7 @@ var init_ActivationBlock = __esm({
7833
7840
  emit(`UI:${saveEvent}`, { response: "" });
7834
7841
  setIsExpanded(false);
7835
7842
  },
7836
- className: "px-4 py-2 text-indigo-600 dark:text-indigo-400 hover:underline text-sm",
7843
+ className: "px-4 py-2 text-primary hover:underline text-sm",
7837
7844
  children: "Skip for now"
7838
7845
  }
7839
7846
  )
@@ -7842,7 +7849,7 @@ var init_ActivationBlock = __esm({
7842
7849
  "button",
7843
7850
  {
7844
7851
  onClick: () => setIsExpanded(true),
7845
- className: "text-sm text-indigo-600 dark:text-indigo-400 hover:underline font-medium",
7852
+ className: "text-sm text-primary hover:underline font-medium",
7846
7853
  children: "\u2713 Answered \xB7 Edit response"
7847
7854
  }
7848
7855
  )
@@ -8655,7 +8662,7 @@ var init_AuthLayout = __esm({
8655
8662
  VStack,
8656
8663
  {
8657
8664
  className: cn(
8658
- "hidden lg:flex lg:w-1/2 bg-primary-600 relative overflow-hidden",
8665
+ "hidden lg:flex lg:w-1/2 bg-primary relative overflow-hidden",
8659
8666
  "justify-between p-12"
8660
8667
  ),
8661
8668
  style: backgroundImage ? {
@@ -8664,7 +8671,7 @@ var init_AuthLayout = __esm({
8664
8671
  } : void 0,
8665
8672
  gap: "none",
8666
8673
  children: [
8667
- /* @__PURE__ */ jsx(Box, { className: "absolute inset-0 bg-gradient-to-br from-primary-600/90 to-primary-800/90" }),
8674
+ /* @__PURE__ */ jsx(Box, { className: "absolute inset-0 bg-gradient-to-br from-primary/90 to-primary-hover/90" }),
8668
8675
  /* @__PURE__ */ jsx(Box, { className: "relative z-10", children: /* @__PURE__ */ jsxs(Link, { to: "/", className: "flex items-center gap-3", children: [
8669
8676
  logo || /* @__PURE__ */ jsx(Box, { className: "w-10 h-10 bg-[var(--color-card)]/20 rounded-xl flex items-center justify-center backdrop-blur", children: /* @__PURE__ */ jsx(
8670
8677
  Typography,
@@ -8749,7 +8756,7 @@ var init_AuthLayout = __esm({
8749
8756
  ),
8750
8757
  children: /* @__PURE__ */ jsxs(Box, { className: "w-full max-w-md", children: [
8751
8758
  /* @__PURE__ */ jsx(Box, { className: "lg:hidden mb-8 text-center", children: /* @__PURE__ */ jsxs(Link, { to: "/", className: "inline-flex items-center gap-3", children: [
8752
- logo || /* @__PURE__ */ jsx(Box, { className: "w-12 h-12 bg-primary-600 rounded-xl flex items-center justify-center", children: /* @__PURE__ */ jsx(
8759
+ logo || /* @__PURE__ */ jsx(Box, { className: "w-12 h-12 bg-primary rounded-xl flex items-center justify-center", children: /* @__PURE__ */ jsx(
8753
8760
  Typography,
8754
8761
  {
8755
8762
  variant: "body1",
@@ -10743,7 +10750,7 @@ var init_CodeBlock = __esm({
10743
10750
  {
10744
10751
  justify: "between",
10745
10752
  align: "center",
10746
- className: "px-3 py-2 bg-[var(--color-card)] rounded-t-lg border-b border-gray-700",
10753
+ className: "px-3 py-2 bg-[var(--color-card)] rounded-t-lg border-b border-border",
10747
10754
  children: [
10748
10755
  showLanguageBadge && /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", children: language }),
10749
10756
  effectiveCopy && /* @__PURE__ */ jsx(
@@ -10752,9 +10759,9 @@ var init_CodeBlock = __esm({
10752
10759
  variant: "ghost",
10753
10760
  size: "sm",
10754
10761
  onClick: handleCopy,
10755
- className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
10762
+ className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-foreground",
10756
10763
  "aria-label": t("common.copy"),
10757
- children: copied ? /* @__PURE__ */ jsx(Icon, { name: "check", className: "w-4 h-4 text-green-400" }) : /* @__PURE__ */ jsx(Icon, { name: "copy", className: "w-4 h-4" })
10764
+ children: copied ? /* @__PURE__ */ jsx(Icon, { name: "check", className: "w-4 h-4 text-success" }) : /* @__PURE__ */ jsx(Icon, { name: "copy", className: "w-4 h-4" })
10758
10765
  }
10759
10766
  )
10760
10767
  ]
@@ -11122,12 +11129,12 @@ var init_BloomQuizBlock = __esm({
11122
11129
  init_useEventBus();
11123
11130
  init_cn();
11124
11131
  BLOOM_CONFIG = {
11125
- remember: { color: "bg-gray-500", bgColor: "bg-gray-50 dark:bg-gray-900/30", label: "Remember" },
11126
- understand: { color: "bg-blue-500", bgColor: "bg-blue-50 dark:bg-blue-900/30", label: "Understand" },
11127
- apply: { color: "bg-green-500", bgColor: "bg-green-50 dark:bg-green-900/30", label: "Apply" },
11128
- analyze: { color: "bg-yellow-500", bgColor: "bg-yellow-50 dark:bg-yellow-900/30", label: "Analyze" },
11129
- evaluate: { color: "bg-orange-500", bgColor: "bg-orange-50 dark:bg-orange-900/30", label: "Evaluate" },
11130
- create: { color: "bg-purple-500", bgColor: "bg-purple-50 dark:bg-purple-900/30", label: "Create" }
11132
+ remember: { color: "bg-secondary text-secondary-foreground", bgColor: "bg-muted", label: "Remember" },
11133
+ understand: { color: "bg-info text-info-foreground", bgColor: "bg-info/10", label: "Understand" },
11134
+ apply: { color: "bg-success text-success-foreground", bgColor: "bg-success/10", label: "Apply" },
11135
+ analyze: { color: "bg-warning text-warning-foreground", bgColor: "bg-warning/10", label: "Analyze" },
11136
+ evaluate: { color: "bg-accent text-accent-foreground", bgColor: "bg-accent/10", label: "Evaluate" },
11137
+ create: { color: "bg-primary text-primary-foreground", bgColor: "bg-primary/10", label: "Create" }
11131
11138
  };
11132
11139
  BloomQuizBlock = ({
11133
11140
  level,
@@ -11153,22 +11160,22 @@ var init_BloomQuizBlock = __esm({
11153
11160
  "div",
11154
11161
  {
11155
11162
  className: cn(
11156
- "rounded-lg border border-indigo-100 dark:border-indigo-800 p-4 my-4 transition-all",
11163
+ "rounded-lg border border-primary p-4 my-4 transition-all",
11157
11164
  config.bgColor,
11158
11165
  className
11159
11166
  ),
11160
11167
  children: [
11161
11168
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-3", children: [
11162
11169
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [
11163
- index !== void 0 && /* @__PURE__ */ jsxs("span", { className: "text-gray-500 dark:text-gray-400 font-medium text-sm", children: [
11170
+ index !== void 0 && /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground font-medium text-sm", children: [
11164
11171
  "Question ",
11165
11172
  index + 1
11166
11173
  ] }),
11167
- /* @__PURE__ */ jsx("span", { className: cn(config.color, "text-white text-xs px-2 py-1 rounded-full font-medium"), children: config.label })
11174
+ /* @__PURE__ */ jsx("span", { className: cn(config.color, "text-xs px-2 py-1 rounded-full font-medium"), children: config.label })
11168
11175
  ] }),
11169
- isAnswered && /* @__PURE__ */ jsx(CheckCircle, { className: "text-green-600 dark:text-green-400 flex-shrink-0", size: 20 })
11176
+ isAnswered && /* @__PURE__ */ jsx(CheckCircle, { className: "text-success flex-shrink-0", size: 20 })
11170
11177
  ] }),
11171
- /* @__PURE__ */ jsx("div", { className: "font-semibold text-indigo-900 dark:text-indigo-200 mb-3 space-y-2", children: questionSegments.map(
11178
+ /* @__PURE__ */ jsx("div", { className: "font-semibold text-primary mb-3 space-y-2", children: questionSegments.map(
11172
11179
  (segment, idx) => segment.type === "markdown" ? /* @__PURE__ */ jsx(MarkdownContent, { content: segment.content }, `q-md-${idx}`) : /* @__PURE__ */ jsx(
11173
11180
  CodeBlock,
11174
11181
  {
@@ -11182,13 +11189,13 @@ var init_BloomQuizBlock = __esm({
11182
11189
  "button",
11183
11190
  {
11184
11191
  type: "button",
11185
- 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",
11192
+ 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",
11186
11193
  onClick: handleReveal,
11187
11194
  children: revealed ? "Hide Answer" : "Reveal Answer"
11188
11195
  }
11189
11196
  ),
11190
- revealed && /* @__PURE__ */ 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: [
11191
- /* @__PURE__ */ jsx("div", { className: "text-xs text-gray-600 dark:text-gray-400 mb-1 font-medium uppercase tracking-wide", children: "Answer:" }),
11197
+ revealed && /* @__PURE__ */ 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: [
11198
+ /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground mb-1 font-medium uppercase tracking-wide", children: "Answer:" }),
11192
11199
  answerSegments.map(
11193
11200
  (segment, idx) => segment.type === "markdown" ? /* @__PURE__ */ jsx(MarkdownContent, { content: segment.content }, `a-md-${idx}`) : /* @__PURE__ */ jsx(
11194
11201
  CodeBlock,
@@ -11462,12 +11469,12 @@ var init_QuizBlock = __esm({
11462
11469
  }) => {
11463
11470
  const { t } = useTranslate();
11464
11471
  const [revealed, setRevealed] = useState(false);
11465
- return /* @__PURE__ */ jsx(Card2, { className: cn("my-4 border-blue-200 dark:border-blue-800", className), children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", className: "p-4", children: [
11472
+ return /* @__PURE__ */ jsx(Card2, { className: cn("my-4 border-primary", className), children: /* @__PURE__ */ jsxs(VStack, { gap: "sm", className: "p-4", children: [
11466
11473
  /* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "start", children: [
11467
- /* @__PURE__ */ jsx(Icon, { icon: HelpCircle, size: "sm", className: "text-blue-500 mt-0.5 shrink-0" }),
11474
+ /* @__PURE__ */ jsx(Icon, { icon: HelpCircle, size: "sm", className: "text-primary mt-0.5 shrink-0" }),
11468
11475
  /* @__PURE__ */ jsx(Typography, { variant: "body", className: "font-medium", children: question })
11469
11476
  ] }),
11470
- revealed ? /* @__PURE__ */ jsx(Box, { className: "pl-7 pt-2 border-t border-gray-200 dark:border-gray-700", children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-foreground", children: answer }) }) : null,
11477
+ revealed ? /* @__PURE__ */ jsx(Box, { className: "pl-7 pt-2 border-t border-border", children: /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-foreground", children: answer }) }) : null,
11471
11478
  /* @__PURE__ */ jsx(
11472
11479
  Button,
11473
11480
  {
@@ -13379,7 +13386,7 @@ var init_BookTableOfContents = __esm({
13379
13386
  className: cn(
13380
13387
  "justify-start text-left w-full",
13381
13388
  direction === "rtl" && "text-right",
13382
- isCurrent && "bg-blue-50 dark:bg-blue-950 text-blue-600 dark:text-blue-400"
13389
+ isCurrent && "bg-primary/10 text-primary"
13383
13390
  ),
13384
13391
  children: /* @__PURE__ */ jsx(Box, { className: "truncate", children: /* @__PURE__ */ jsx(Typography, { variant: "body", children: String(chapter.title ?? "") }) })
13385
13392
  },
@@ -14627,7 +14634,7 @@ function CalendarGrid({
14627
14634
  border: true,
14628
14635
  className: cn(
14629
14636
  "cursor-pointer hover:shadow-sm transition-shadow text-xs truncate",
14630
- color ? color : "bg-blue-500/15 border-blue-500/30 text-blue-600"
14637
+ color ? color : "bg-primary/10 border-primary/30 text-primary"
14631
14638
  ),
14632
14639
  onClick: (e) => handleEventClick(event, e),
14633
14640
  children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "truncate font-medium", children: event.title })
@@ -14725,7 +14732,7 @@ function CalendarGrid({
14725
14732
  onClick: () => handleSlotClick(day, time),
14726
14733
  className: cn(
14727
14734
  "border-l border-border",
14728
- isToday && "bg-blue-50/30"
14735
+ isToday && "bg-primary/10"
14729
14736
  ),
14730
14737
  ...longPressEvent ? {
14731
14738
  onPointerDown: () => startLongPress(day, time),
@@ -18401,31 +18408,31 @@ var init_CodeRunnerPanel = __esm({
18401
18408
  }
18402
18409
  )
18403
18410
  ] }),
18404
- hasOutput && /* @__PURE__ */ jsxs(Box, { className: "rounded-lg border border-gray-700 bg-[#0d0d0d] overflow-hidden", children: [
18411
+ hasOutput && /* @__PURE__ */ jsxs(Box, { className: "rounded-lg border border-border bg-foreground overflow-hidden", children: [
18405
18412
  /* @__PURE__ */ jsxs(
18406
18413
  HStack,
18407
18414
  {
18408
18415
  gap: "sm",
18409
18416
  align: "center",
18410
- className: "px-3 py-2 bg-gray-800 border-b border-gray-700",
18417
+ className: "px-3 py-2 bg-card border-b border-border",
18411
18418
  children: [
18412
- /* @__PURE__ */ jsx(Terminal, { size: 16, className: "text-gray-400" }),
18413
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-300 font-medium", children: "Output" })
18419
+ /* @__PURE__ */ jsx(Terminal, { size: 16, className: "text-muted-foreground" }),
18420
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-foreground font-medium", children: "Output" })
18414
18421
  ]
18415
18422
  }
18416
18423
  ),
18417
- /* @__PURE__ */ jsx(VStack, { gap: "none", className: "p-3 font-mono text-sm", children: error ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-red-400 whitespace-pre-wrap", children: error }) : /* @__PURE__ */ jsxs(Fragment, { children: [
18418
- output?.stdout ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-200 whitespace-pre-wrap", children: output.stdout }) : null,
18419
- output?.stderr ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-red-400 whitespace-pre-wrap", children: output.stderr }) : null,
18420
- !output?.stdout && !output?.stderr ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500 italic", children: "No output" }) : null,
18421
- output && output.testResults.length > 0 && /* @__PURE__ */ jsx(Box, { className: "mt-3 pt-3 border-t border-gray-700 space-y-2", children: output.testResults.map((test, index) => /* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "start", className: "text-xs", children: [
18422
- test.passed ? /* @__PURE__ */ jsx(CheckCircle, { size: 14, className: "text-green-400 mt-0.5" }) : /* @__PURE__ */ jsx(XCircle, { size: 14, className: "text-red-400 mt-0.5" }),
18424
+ /* @__PURE__ */ jsx(VStack, { gap: "none", className: "p-3 font-mono text-sm", children: error ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-error whitespace-pre-wrap", children: error }) : /* @__PURE__ */ jsxs(Fragment, { children: [
18425
+ output?.stdout ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-background whitespace-pre-wrap", children: output.stdout }) : null,
18426
+ output?.stderr ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-error whitespace-pre-wrap", children: output.stderr }) : null,
18427
+ !output?.stdout && !output?.stderr ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-background italic", children: "No output" }) : null,
18428
+ output && output.testResults.length > 0 && /* @__PURE__ */ jsx(Box, { className: "mt-3 pt-3 border-t border-border space-y-2", children: output.testResults.map((test, index) => /* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "start", className: "text-xs", children: [
18429
+ test.passed ? /* @__PURE__ */ jsx(CheckCircle, { size: 14, className: "text-success mt-0.5" }) : /* @__PURE__ */ jsx(XCircle, { size: 14, className: "text-error mt-0.5" }),
18423
18430
  /* @__PURE__ */ jsxs(VStack, { gap: "xs", className: "flex-1", children: [
18424
18431
  /* @__PURE__ */ jsxs(
18425
18432
  Typography,
18426
18433
  {
18427
18434
  variant: "small",
18428
- className: test.passed ? "text-green-400" : "text-red-400",
18435
+ className: test.passed ? "text-success" : "text-error",
18429
18436
  children: [
18430
18437
  "Test ",
18431
18438
  index + 1,
@@ -18434,15 +18441,15 @@ var init_CodeRunnerPanel = __esm({
18434
18441
  ]
18435
18442
  }
18436
18443
  ),
18437
- /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-gray-400", children: [
18444
+ /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-background", children: [
18438
18445
  "Input: ",
18439
18446
  test.input
18440
18447
  ] }),
18441
- /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-gray-400", children: [
18448
+ /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-background", children: [
18442
18449
  "Expected: ",
18443
18450
  test.expectedOutput
18444
18451
  ] }),
18445
- /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-gray-400", children: [
18452
+ /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-background", children: [
18446
18453
  "Actual: ",
18447
18454
  test.actualOutput
18448
18455
  ] })
@@ -18627,14 +18634,14 @@ var init_ConnectionBlock = __esm({
18627
18634
  "div",
18628
18635
  {
18629
18636
  className: cn(
18630
- "bg-emerald-50 dark:bg-emerald-900/20 border-l-4 border-emerald-500 rounded-r-lg p-5 mb-6",
18637
+ "bg-success/10 border-l-4 border-success rounded-r-lg p-5 mb-6",
18631
18638
  className
18632
18639
  ),
18633
18640
  children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
18634
- /* @__PURE__ */ jsx(Link2, { className: "text-emerald-600 dark:text-emerald-400 flex-shrink-0 mt-1", size: 20 }),
18641
+ /* @__PURE__ */ jsx(Link2, { className: "text-success flex-shrink-0 mt-1", size: 20 }),
18635
18642
  /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
18636
- /* @__PURE__ */ jsx("h4", { className: "font-semibold text-emerald-900 dark:text-emerald-100 mb-2", children: "Building On What You Know" }),
18637
- /* @__PURE__ */ jsx("div", { className: "prose dark:prose-invert prose-sm max-w-none text-gray-700 dark:text-gray-300", children: /* @__PURE__ */ jsx(MarkdownContent, { content }) })
18643
+ /* @__PURE__ */ jsx("h4", { className: "font-semibold text-success mb-2", children: "Building On What You Know" }),
18644
+ /* @__PURE__ */ jsx("div", { className: "prose dark:prose-invert prose-sm max-w-none text-foreground", children: /* @__PURE__ */ jsx(MarkdownContent, { content }) })
18638
18645
  ] })
18639
18646
  ] })
18640
18647
  }
@@ -19025,7 +19032,7 @@ function CounterStandard({
19025
19032
  variant: "h1",
19026
19033
  className: cn(
19027
19034
  sizeStyles8[size].display,
19028
- "font-bold tabular-nums text-primary-600"
19035
+ "font-bold tabular-nums text-primary"
19029
19036
  ),
19030
19037
  children: resolved.count
19031
19038
  }
@@ -19098,7 +19105,7 @@ function CounterFull({
19098
19105
  variant: "h1",
19099
19106
  className: cn(
19100
19107
  sizeStyles8[size].display,
19101
- "font-bold tabular-nums text-primary-600"
19108
+ "font-bold tabular-nums text-primary"
19102
19109
  ),
19103
19110
  children: resolved.count
19104
19111
  }
@@ -19363,11 +19370,11 @@ var init_DashboardLayout = __esm({
19363
19370
  className: "h-16 px-4 border-b border-border dark:border-border",
19364
19371
  children: [
19365
19372
  /* @__PURE__ */ jsxs(Link, { to: "/", className: "flex items-center gap-2", children: [
19366
- logo || /* @__PURE__ */ jsx(Box, { className: "w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx(
19373
+ logo || /* @__PURE__ */ jsx(Box, { className: "w-8 h-8 bg-primary rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx(
19367
19374
  Typography,
19368
19375
  {
19369
19376
  variant: "small",
19370
- className: "text-white font-bold text-sm",
19377
+ className: "text-primary-foreground font-bold text-sm",
19371
19378
  as: "span",
19372
19379
  children: appName.charAt(0).toUpperCase()
19373
19380
  }
@@ -19446,11 +19453,11 @@ var init_DashboardLayout = __esm({
19446
19453
  className: "hidden @md/dashboard:flex items-center gap-1 overflow-x-auto",
19447
19454
  children: [
19448
19455
  /* @__PURE__ */ jsxs(Link, { to: "/", className: "flex items-center gap-2 mr-3 shrink-0", children: [
19449
- logo || /* @__PURE__ */ jsx(Box, { className: "w-7 h-7 bg-primary-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx(
19456
+ logo || /* @__PURE__ */ jsx(Box, { className: "w-7 h-7 bg-primary rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx(
19450
19457
  Typography,
19451
19458
  {
19452
19459
  variant: "small",
19453
- className: "text-white font-bold text-xs",
19460
+ className: "text-primary-foreground font-bold text-xs",
19454
19461
  as: "span",
19455
19462
  children: appName.charAt(0).toUpperCase()
19456
19463
  }
@@ -19510,8 +19517,8 @@ var init_DashboardLayout = __esm({
19510
19517
  {
19511
19518
  as: "span",
19512
19519
  className: cn(
19513
- "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",
19514
- action.variant === "danger" ? "bg-error" : action.variant === "primary" ? "bg-primary" : "bg-foreground"
19520
+ "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",
19521
+ action.variant === "danger" ? "bg-error text-error-foreground" : action.variant === "primary" ? "bg-primary text-primary-foreground" : "bg-foreground text-background"
19515
19522
  ),
19516
19523
  children: action.badge
19517
19524
  }
@@ -19533,7 +19540,7 @@ var init_DashboardLayout = __esm({
19533
19540
  Box,
19534
19541
  {
19535
19542
  as: "span",
19536
- 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",
19543
+ 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",
19537
19544
  children: unreadCount > 99 ? "99+" : unreadCount
19538
19545
  }
19539
19546
  )
@@ -19816,7 +19823,7 @@ function SubMenu({
19816
19823
  ),
19817
19824
  children: [
19818
19825
  item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: item.icon, size: "sm", className: "flex-shrink-0" }) : /* @__PURE__ */ jsx(Icon, { icon: item.icon, size: "sm", className: "flex-shrink-0" })),
19819
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: cn("flex-1", isDanger && "text-red-600"), children: item.label }),
19826
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: cn("flex-1", isDanger && "text-error"), children: item.label }),
19820
19827
  item.badge !== void 0 && /* @__PURE__ */ jsx("span", { className: "ml-auto text-xs font-medium", children: item.badge })
19821
19828
  ]
19822
19829
  },
@@ -19873,7 +19880,7 @@ function MenuItemRow({
19873
19880
  Typography,
19874
19881
  {
19875
19882
  variant: "small",
19876
- className: cn("flex-1", isDanger && "text-red-600"),
19883
+ className: cn("flex-1", isDanger && "text-error"),
19877
19884
  children: item.label
19878
19885
  }
19879
19886
  ),
@@ -20641,14 +20648,25 @@ function DataGrid({
20641
20648
  const bodyFields = fieldDefs.filter((f3) => f3 !== titleField && !badgeFields.includes(f3));
20642
20649
  const primaryActions = actionDefs.filter((a) => a.variant !== "danger");
20643
20650
  const dangerActions = actionDefs.filter((a) => a.variant === "danger");
20644
- const handleActionClick = (action, itemData) => (e) => {
20645
- e.stopPropagation();
20651
+ const fireAction = (action, itemData) => {
20652
+ if (action.navigatesTo) {
20653
+ const url = action.navigatesTo.replace(
20654
+ /\{\{row\.(\w+(?:\.\w+)*)\}\}/g,
20655
+ (_, field) => String(itemData[field] ?? "")
20656
+ );
20657
+ eventBus.emit("UI:NAVIGATE", { url, row: itemData });
20658
+ return;
20659
+ }
20646
20660
  const payload = {
20647
20661
  id: itemData.id,
20648
20662
  row: itemData
20649
20663
  };
20650
20664
  eventBus.emit(`UI:${action.event}`, payload);
20651
20665
  };
20666
+ const handleActionClick = (action, itemData) => (e) => {
20667
+ e.stopPropagation();
20668
+ fireAction(action, itemData);
20669
+ };
20652
20670
  const hasRenderProp = typeof children === "function";
20653
20671
  useEffect(() => {
20654
20672
  if (data.length > 0 && !hasRenderProp && fieldDefs.length === 0) {
@@ -20715,13 +20733,46 @@ function DataGrid({
20715
20733
  const wrapDnd = (node) => dnd.isZone ? /* @__PURE__ */ jsx(dnd.SortableItem, { id: dndId, children: node }, dndId) : node;
20716
20734
  if (hasRenderProp) {
20717
20735
  return wrapDnd(
20718
- /* @__PURE__ */ jsx(
20736
+ /* @__PURE__ */ jsxs(
20719
20737
  Box,
20720
20738
  {
20721
20739
  "data-entity-row": true,
20722
20740
  "data-entity-id": id,
20723
20741
  className: cn(isSelected && "ring-2 ring-primary rounded-lg"),
20724
- children: children(itemData, index)
20742
+ children: [
20743
+ children(itemData, index),
20744
+ actionDefs.length > 0 && /* @__PURE__ */ jsx(Box, { className: "px-4 py-3 border-t border-border", children: /* @__PURE__ */ jsxs(HStack, { gap: "sm", className: "justify-end", children: [
20745
+ (maxInlineActions != null ? actionDefs.slice(0, maxInlineActions) : actionDefs).map((action, idx) => /* @__PURE__ */ jsxs(
20746
+ Button,
20747
+ {
20748
+ variant: action.variant === "primary" ? "primary" : "ghost",
20749
+ size: "sm",
20750
+ onClick: handleActionClick(action, itemData),
20751
+ "data-testid": `action-${action.event}`,
20752
+ "data-row-id": String(itemData.id),
20753
+ className: action.variant === "danger" ? "text-error hover:text-error hover:bg-error/10" : void 0,
20754
+ children: [
20755
+ action.icon && renderIconInput(action.icon, { size: "xs", className: "mr-1" }),
20756
+ action.label
20757
+ ]
20758
+ },
20759
+ idx
20760
+ )),
20761
+ maxInlineActions != null && actionDefs.length > maxInlineActions && /* @__PURE__ */ jsx(
20762
+ Menu,
20763
+ {
20764
+ position: "bottom-end",
20765
+ trigger: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
20766
+ items: actionDefs.slice(maxInlineActions).map((action) => ({
20767
+ label: action.label,
20768
+ icon: action.icon,
20769
+ event: action.event,
20770
+ onClick: () => fireAction(action, itemData)
20771
+ }))
20772
+ }
20773
+ )
20774
+ ] }) })
20775
+ ]
20725
20776
  },
20726
20777
  id
20727
20778
  )
@@ -20858,10 +20909,7 @@ function DataGrid({
20858
20909
  label: action.label,
20859
20910
  icon: action.icon,
20860
20911
  event: action.event,
20861
- onClick: () => eventBus.emit(`UI:${action.event}`, {
20862
- id: itemData.id,
20863
- row: itemData
20864
- })
20912
+ onClick: () => fireAction(action, itemData)
20865
20913
  }))
20866
20914
  }
20867
20915
  )
@@ -22587,7 +22635,9 @@ var init_FilterGroup = __esm({
22587
22635
  showIcon = true,
22588
22636
  query,
22589
22637
  isLoading,
22590
- look = "toolbar"
22638
+ look = "toolbar",
22639
+ event,
22640
+ clearEvent
22591
22641
  }) => {
22592
22642
  const { t } = useTranslate();
22593
22643
  const eventBus = useEventBus();
@@ -22624,14 +22674,18 @@ var init_FilterGroup = __esm({
22624
22674
  queryState.setFilter(field, value === "all" ? null : value);
22625
22675
  }
22626
22676
  onFilterChange?.(field, value === "all" ? null : value);
22627
- eventBus.emit("UI:FILTER", {
22677
+ const payload = {
22628
22678
  entity,
22629
22679
  field,
22630
22680
  value: value === "all" || value === null ? "" : value,
22631
22681
  query
22632
- });
22682
+ };
22683
+ if (event && event !== "FILTER") {
22684
+ eventBus.emit(`UI:${event}`, payload);
22685
+ }
22686
+ eventBus.emit("UI:FILTER", payload);
22633
22687
  },
22634
- [onFilterChange, queryState, eventBus, entity, query]
22688
+ [onFilterChange, queryState, eventBus, entity, query, event]
22635
22689
  );
22636
22690
  const handleClearAll = useCallback(() => {
22637
22691
  setSelectedValues({});
@@ -22639,8 +22693,11 @@ var init_FilterGroup = __esm({
22639
22693
  queryState.clearFilters();
22640
22694
  }
22641
22695
  onClearAll?.();
22696
+ if (clearEvent && clearEvent !== "CLEAR_FILTERS") {
22697
+ eventBus.emit(`UI:${clearEvent}`, { entity, query });
22698
+ }
22642
22699
  eventBus.emit("UI:CLEAR_FILTERS", { entity, query });
22643
- }, [onClearAll, queryState, eventBus, entity, query]);
22700
+ }, [onClearAll, queryState, eventBus, entity, query, clearEvent]);
22644
22701
  const activeFilterCount = Object.keys(selectedValues).length;
22645
22702
  if (variant === "pills") {
22646
22703
  return /* @__PURE__ */ jsxs(
@@ -23871,8 +23928,8 @@ var init_RelationSelect = __esm({
23871
23928
  disabled,
23872
23929
  className: cn(
23873
23930
  "w-full justify-between font-normal",
23874
- error && "border-red-300 focus:border-red-500 focus:ring-red-500",
23875
- isOpen && "ring-2 ring-primary-500 border-primary-500"
23931
+ error && "border-error/50 focus:border-error focus:ring-error",
23932
+ isOpen && "ring-2 ring-primary border-primary"
23876
23933
  ),
23877
23934
  children: [
23878
23935
  /* @__PURE__ */ jsx(
@@ -23952,7 +24009,7 @@ var init_RelationSelect = __esm({
23952
24009
  paddingY: "sm",
23953
24010
  className: cn(
23954
24011
  "text-left text-sm hover:bg-muted focus:outline-none focus:bg-muted",
23955
- option.value === value && "bg-primary-50 text-primary-700",
24012
+ option.value === value && "bg-primary/10 text-primary",
23956
24013
  option.disabled && "opacity-50 cursor-not-allowed"
23957
24014
  ),
23958
24015
  onClick: () => handleSelect(option),
@@ -24018,7 +24075,7 @@ var init_SearchInput = __esm({
24018
24075
  queryState.setSearch(newValue);
24019
24076
  }
24020
24077
  onSearch?.(newValue);
24021
- if (event) {
24078
+ if (event && event !== "SEARCH") {
24022
24079
  eventBus.emit(`UI:${event}`, { searchTerm: newValue, entity });
24023
24080
  }
24024
24081
  if (event || entity || query) {
@@ -24109,7 +24166,7 @@ var init_SidePanel = __esm({
24109
24166
  showOverlay && /* @__PURE__ */ jsx(Presence, { show: isOpen, animation: "overlay", children: /* @__PURE__ */ jsx(
24110
24167
  Box,
24111
24168
  {
24112
- className: "fixed inset-0 bg-white/80 backdrop-blur-sm z-40 lg:hidden",
24169
+ className: "fixed inset-0 bg-background/80 backdrop-blur-sm z-40 lg:hidden",
24113
24170
  onClick: handleClose
24114
24171
  }
24115
24172
  ) }),
@@ -24476,7 +24533,7 @@ var init_WizardNavigation = __esm({
24476
24533
  /* @__PURE__ */ jsx(Icon, { name: "chevron-left", size: "sm" }),
24477
24534
  resolvedBackLabel
24478
24535
  ] }) : /* @__PURE__ */ jsx(Box, {}),
24479
- /* @__PURE__ */ jsx(HStack, { align: "center", gap: "sm", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-neutral-500", children: t("wizard.stepOf", { current: String(currentStep + 1), total: String(totalSteps) }) }) }),
24536
+ /* @__PURE__ */ jsx(HStack, { align: "center", gap: "sm", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: t("wizard.stepOf", { current: String(currentStep + 1), total: String(totalSteps) }) }) }),
24480
24537
  isLastStep && showComplete ? /* @__PURE__ */ jsx(Button, { variant: "primary", onClick: handleComplete, disabled: !isValid, children: resolvedCompleteLabel }) : showNext ? /* @__PURE__ */ jsxs(Button, { variant: "primary", onClick: handleNext, disabled: !isValid, children: [
24481
24538
  resolvedNextLabel,
24482
24539
  /* @__PURE__ */ jsx(Icon, { name: "chevron-right", size: "sm" })
@@ -29195,6 +29252,7 @@ var init_Lightbox = __esm({
29195
29252
  {
29196
29253
  className: cn(
29197
29254
  "fixed inset-0 z-50 flex items-center justify-center",
29255
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: lightbox scrim behind images
29198
29256
  "bg-black bg-opacity-90",
29199
29257
  className
29200
29258
  ),
@@ -29217,7 +29275,7 @@ var init_Lightbox = __esm({
29217
29275
  "p-2 rounded-full",
29218
29276
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
29219
29277
  "hover:bg-opacity-70 transition-opacity",
29220
- "focus:outline-none focus:ring-2 focus:ring-white"
29278
+ "focus:outline-none focus:ring-2 focus:ring-ring"
29221
29279
  ),
29222
29280
  "aria-label": t("aria.closeModal"),
29223
29281
  children: /* @__PURE__ */ jsx(Icon, { name: "x", className: "w-6 h-6" })
@@ -29236,7 +29294,7 @@ var init_Lightbox = __esm({
29236
29294
  "p-2 rounded-full",
29237
29295
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
29238
29296
  "hover:bg-opacity-70 transition-opacity",
29239
- "focus:outline-none focus:ring-2 focus:ring-white"
29297
+ "focus:outline-none focus:ring-2 focus:ring-ring"
29240
29298
  ),
29241
29299
  "aria-label": t("aria.previousImage"),
29242
29300
  children: /* @__PURE__ */ jsx(Icon, { name: "chevron-left", className: "w-8 h-8" })
@@ -29273,7 +29331,7 @@ var init_Lightbox = __esm({
29273
29331
  "p-2 rounded-full",
29274
29332
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
29275
29333
  "hover:bg-opacity-70 transition-opacity",
29276
- "focus:outline-none focus:ring-2 focus:ring-white"
29334
+ "focus:outline-none focus:ring-2 focus:ring-ring"
29277
29335
  ),
29278
29336
  "aria-label": t("aria.nextImage"),
29279
29337
  children: /* @__PURE__ */ jsx(Icon, { name: "chevron-right", className: "w-8 h-8" })
@@ -32346,6 +32404,7 @@ var init_QrScanner = __esm({
32346
32404
  overflow: "hidden",
32347
32405
  rounded: "sm",
32348
32406
  className: cn(
32407
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32349
32408
  "bg-black",
32350
32409
  "aspect-square w-full max-w-md",
32351
32410
  className
@@ -32410,7 +32469,9 @@ var init_QrScanner = __esm({
32410
32469
  type: "button",
32411
32470
  onClick: togglePause,
32412
32471
  className: cn(
32472
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32413
32473
  "rounded-full bg-black bg-opacity-60 p-2 text-white",
32474
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32414
32475
  "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
32415
32476
  ),
32416
32477
  "aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
@@ -32423,7 +32484,9 @@ var init_QrScanner = __esm({
32423
32484
  type: "button",
32424
32485
  onClick: toggleFacing,
32425
32486
  className: cn(
32487
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32426
32488
  "rounded-full bg-black bg-opacity-60 p-2 text-white",
32489
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32427
32490
  "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
32428
32491
  ),
32429
32492
  "aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
@@ -32436,7 +32499,9 @@ var init_QrScanner = __esm({
32436
32499
  type: "button",
32437
32500
  onClick: handleMockScan,
32438
32501
  className: cn(
32502
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32439
32503
  "rounded-full bg-black bg-opacity-60 px-3 py-2 text-xs text-white",
32504
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
32440
32505
  "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
32441
32506
  ),
32442
32507
  "aria-label": t("aria.mockScanDev"),
@@ -35172,10 +35237,10 @@ var init_ModuleCard = __esm({
35172
35237
  init_avl_atom_types();
35173
35238
  init_MiniStateMachine();
35174
35239
  PERSISTENCE_BORDER = {
35175
- persistent: "border-l-[3px] border-l-blue-500 border-solid",
35176
- runtime: "border-l-[3px] border-l-blue-500 border-dashed",
35177
- singleton: "border-l-[3px] border-l-blue-500 border-double",
35178
- instance: "border-l-[3px] border-l-blue-500 border-dotted"
35240
+ persistent: "border-l-[3px] border-l-primary border-solid",
35241
+ runtime: "border-l-[3px] border-l-primary border-dashed",
35242
+ singleton: "border-l-[3px] border-l-primary border-double",
35243
+ instance: "border-l-[3px] border-l-primary border-dotted"
35179
35244
  };
35180
35245
  PERSISTENCE_ICON = {
35181
35246
  persistent: "\u26C1",
@@ -35205,8 +35270,8 @@ var init_ModuleCard = __esm({
35205
35270
  className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] shadow-sm overflow-hidden",
35206
35271
  style: { minWidth: 280, maxWidth: 400 },
35207
35272
  children: [
35208
- /* @__PURE__ */ jsx(Handle, { type: "target", position: Position.Left, className: "!w-2.5 !h-2.5 !bg-orange-400" }),
35209
- /* @__PURE__ */ jsx(Handle, { type: "source", position: Position.Right, className: "!w-2.5 !h-2.5 !bg-orange-400" }),
35273
+ /* @__PURE__ */ jsx(Handle, { type: "target", position: Position.Left, className: "!w-2.5 !h-2.5 !bg-warning" }),
35274
+ /* @__PURE__ */ jsx(Handle, { type: "source", position: Position.Right, className: "!w-2.5 !h-2.5 !bg-warning" }),
35210
35275
  /* @__PURE__ */ jsx("div", { className: "px-3 py-2 border-b border-[var(--color-border)]", children: /* @__PURE__ */ jsx("span", { className: "text-base font-bold text-[var(--color-foreground)]", children: orbitalName }) }),
35211
35276
  /* @__PURE__ */ jsxs("div", { className: `px-3 py-2 border-b border-[var(--color-border)] ${PERSISTENCE_BORDER[persistence] ?? ""}`, children: [
35212
35277
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 mb-1.5", children: [
@@ -37662,19 +37727,19 @@ var init_ReflectionBlock = __esm({
37662
37727
  "div",
37663
37728
  {
37664
37729
  className: cn(
37665
- "my-6 border-l-4 border-amber-400 bg-amber-50 dark:bg-amber-900/20 rounded-r-lg p-4",
37730
+ "my-6 border-l-4 border-warning bg-warning/10 rounded-r-lg p-4",
37666
37731
  className
37667
37732
  ),
37668
37733
  children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
37669
- /* @__PURE__ */ jsx(PauseCircle, { className: "text-amber-600 dark:text-amber-400 flex-shrink-0 mt-1", size: 20 }),
37734
+ /* @__PURE__ */ jsx(PauseCircle, { className: "text-warning flex-shrink-0 mt-1", size: 20 }),
37670
37735
  /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
37671
- /* @__PURE__ */ jsx("div", { className: "font-medium text-amber-900 dark:text-amber-100 mb-2", children: "Pause & Reflect" }),
37672
- /* @__PURE__ */ jsx("p", { className: "text-gray-700 dark:text-gray-300 text-sm mb-3", children: prompt }),
37736
+ /* @__PURE__ */ jsx("div", { className: "font-medium text-warning mb-2", children: "Pause & Reflect" }),
37737
+ /* @__PURE__ */ jsx("p", { className: "text-foreground text-sm mb-3", children: prompt }),
37673
37738
  isExpanded ? /* @__PURE__ */ jsxs(Fragment, { children: [
37674
37739
  /* @__PURE__ */ jsx(
37675
37740
  "textarea",
37676
37741
  {
37677
- 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",
37742
+ className: "w-full p-2 border border-input rounded text-sm bg-card text-foreground focus:ring-2 focus:ring-ring focus:border-transparent",
37678
37743
  placeholder: "Your thoughts...",
37679
37744
  value: note,
37680
37745
  onChange: (e) => setNote(e.target.value),
@@ -37685,7 +37750,7 @@ var init_ReflectionBlock = __esm({
37685
37750
  "button",
37686
37751
  {
37687
37752
  onClick: handleSave,
37688
- className: "mt-2 text-sm px-3 py-1 bg-amber-600 text-white rounded hover:bg-amber-700 transition-colors",
37753
+ className: "mt-2 text-sm px-3 py-1 bg-warning text-warning-foreground rounded hover:opacity-90 transition-colors",
37689
37754
  children: "Save & Continue"
37690
37755
  }
37691
37756
  )
@@ -37693,7 +37758,7 @@ var init_ReflectionBlock = __esm({
37693
37758
  "button",
37694
37759
  {
37695
37760
  onClick: () => setIsExpanded(true),
37696
- className: "text-sm text-amber-600 dark:text-amber-400 hover:underline",
37761
+ className: "text-sm text-warning hover:underline",
37697
37762
  children: savedNote ? "\u2713 Answered \xB7 Edit" : "Answer this question"
37698
37763
  }
37699
37764
  )
@@ -38197,7 +38262,7 @@ function DataTable({
38197
38262
  )),
38198
38263
  rowActions && /* @__PURE__ */ jsx("th", { className: "w-12 px-4 py-3" })
38199
38264
  ] }) }),
38200
- /* @__PURE__ */ jsx("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-700", children: isLoading ? /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx(
38265
+ /* @__PURE__ */ jsx("tbody", { className: "divide-y divide-border", children: isLoading ? /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx(
38201
38266
  "td",
38202
38267
  {
38203
38268
  colSpan: normalizedColumns.length + (selectable ? 1 : 0) + (rowActions ? 1 : 0),
@@ -38568,7 +38633,7 @@ var init_DetailPanel = __esm({
38568
38633
  };
38569
38634
  const effectiveFieldNames = isFieldDefArray(propFields) ? normalizeFieldDefs(propFields) : fieldNames;
38570
38635
  const fieldTypeMap = isFieldDefArray(propFields) ? buildFieldTypeMap(propFields) : {};
38571
- useCallback(
38636
+ const handleActionClick = useCallback(
38572
38637
  (action, data2) => {
38573
38638
  if (action.navigatesTo) {
38574
38639
  const url = action.navigatesTo.replace(
@@ -38760,8 +38825,9 @@ var init_DetailPanel = __esm({
38760
38825
  {
38761
38826
  variant: action.variant || "secondary",
38762
38827
  size: "sm",
38763
- action: action.event,
38828
+ action: action.navigatesTo ? void 0 : action.event,
38764
38829
  actionPayload: { row: normalizedData },
38830
+ onClick: action.navigatesTo ? () => handleActionClick(action, normalizedData) : void 0,
38765
38831
  icon: action.icon,
38766
38832
  "data-testid": action.event ? `action-${action.event}` : void 0,
38767
38833
  "data-row-id": normalizedData?.id !== void 0 ? String(normalizedData.id) : void 0,
@@ -40804,8 +40870,9 @@ var init_MediaGallery = __esm({
40804
40870
  )
40805
40871
  }
40806
40872
  ),
40807
- item.caption && /* @__PURE__ */ jsx(Box, { className: "absolute bottom-0 left-0 right-0 p-2 bg-gradient-to-t from-black/60 to-transparent", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-white truncate", children: item.caption }) }),
40808
- selectable && isSelected && /* @__PURE__ */ jsx(Box, { className: "absolute top-2 right-2 w-5 h-5 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-white text-xs", children: "\u2713" }) })
40873
+ item.caption && // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: caption scrim over image
40874
+ /* @__PURE__ */ jsx(Box, { className: "absolute bottom-0 left-0 right-0 p-2 bg-gradient-to-t from-black/60 to-transparent", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-white truncate", children: item.caption }) }),
40875
+ selectable && isSelected && /* @__PURE__ */ jsx(Box, { className: "absolute top-2 right-2 w-5 h-5 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsx(Typography, { variant: "caption", className: "text-primary-foreground text-xs", children: "\u2713" }) })
40809
40876
  ]
40810
40877
  },
40811
40878
  item.id
@@ -40834,7 +40901,7 @@ var init_MediaGallery = __esm({
40834
40901
  size: "sm",
40835
40902
  icon: X,
40836
40903
  action: "LIGHTBOX_CLOSE",
40837
- className: "text-white hover:bg-white/20"
40904
+ className: "text-foreground hover:bg-muted/50"
40838
40905
  }
40839
40906
  ) }),
40840
40907
  /* @__PURE__ */ jsx(
@@ -40845,7 +40912,7 @@ var init_MediaGallery = __esm({
40845
40912
  className: "max-w-full max-h-[80vh] object-contain rounded-md"
40846
40913
  }
40847
40914
  ),
40848
- lightboxItem.caption && /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-white mt-3 text-center", children: lightboxItem.caption })
40915
+ lightboxItem.caption && /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-foreground mt-3 text-center", children: lightboxItem.caption })
40849
40916
  ]
40850
40917
  }
40851
40918
  )
@@ -41287,7 +41354,7 @@ function WalkMinimap() {
41287
41354
  {
41288
41355
  variant,
41289
41356
  size: "sm",
41290
- className: `flex-shrink-0 text-[9px] ${isActive ? "ring-1 ring-cyan-400" : ""}`,
41357
+ className: `flex-shrink-0 text-[9px] ${isActive ? "ring-1 ring-info" : ""}`,
41291
41358
  children: [
41292
41359
  isDone ? "\u2713" : isActive ? "\u25CF" : "\u25CB",
41293
41360
  " ",
@@ -41428,13 +41495,13 @@ function WalkMinimap() {
41428
41495
  })
41429
41496
  ] }) }),
41430
41497
  /* @__PURE__ */ jsx(Box, { className: "px-2 py-1 border-t border-border", children: /* @__PURE__ */ jsxs(HStack, { gap: "sm", className: "items-center justify-between", children: [
41431
- /* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-green-500", children: [
41498
+ /* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-success", children: [
41432
41499
  "Engine: ",
41433
41500
  engineCount,
41434
41501
  "/",
41435
41502
  totalTransitions
41436
41503
  ] }),
41437
- domCount > 0 && /* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-cyan-500", children: [
41504
+ domCount > 0 && /* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-info", children: [
41438
41505
  "DOM: ",
41439
41506
  domCount
41440
41507
  ] }),
@@ -41467,13 +41534,13 @@ function TraitsTab({ traits: traits2 }) {
41467
41534
  const accordionItems = traits2.map((trait) => ({
41468
41535
  id: trait.id,
41469
41536
  header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 w-full", children: [
41470
- /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
41537
+ /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-primary", children: trait.name }),
41471
41538
  /* @__PURE__ */ jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
41472
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
41539
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
41473
41540
  ] }),
41474
41541
  content: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
41475
41542
  /* @__PURE__ */ jsxs("div", { children: [
41476
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
41543
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.states") }),
41477
41544
  /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsx(
41478
41545
  Badge,
41479
41546
  {
@@ -41485,18 +41552,18 @@ function TraitsTab({ traits: traits2 }) {
41485
41552
  )) })
41486
41553
  ] }),
41487
41554
  trait.transitions.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
41488
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
41555
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.transitions") }),
41489
41556
  /* @__PURE__ */ jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono", children: [
41490
41557
  t2.from,
41491
41558
  " \u2192 ",
41492
41559
  t2.to,
41493
41560
  " ",
41494
- /* @__PURE__ */ jsxs("span", { className: "text-gray-500", children: [
41561
+ /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
41495
41562
  "(",
41496
41563
  t2.event,
41497
41564
  ")"
41498
41565
  ] }),
41499
- t2.guard && /* @__PURE__ */ jsxs("span", { className: "text-amber-500", children: [
41566
+ t2.guard && /* @__PURE__ */ jsxs("span", { className: "text-warning", children: [
41500
41567
  " [",
41501
41568
  t2.guard,
41502
41569
  "]"
@@ -41504,7 +41571,7 @@ function TraitsTab({ traits: traits2 }) {
41504
41571
  ] }, i)) })
41505
41572
  ] }),
41506
41573
  trait.guards.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
41507
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
41574
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.guards") }),
41508
41575
  /* @__PURE__ */ jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
41509
41576
  /* @__PURE__ */ jsx(Typography, { variant: "small", children: g.name }),
41510
41577
  /* @__PURE__ */ jsx(Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
@@ -41547,11 +41614,11 @@ function TicksTab({ ticks: ticks2 }) {
41547
41614
  };
41548
41615
  const TickCard = ({ tick, active }) => /* @__PURE__ */ jsxs(Card, { className: `p-3 ${!active ? "opacity-50" : ""}`, children: [
41549
41616
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-2", children: [
41550
- /* @__PURE__ */ jsx("span", { className: `w-2 h-2 rounded-full ${active ? "bg-green-500" : "bg-gray-400"}` }),
41551
- /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-amber-600 dark:text-amber-400", children: tick.name }),
41552
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: tick.traitName })
41617
+ /* @__PURE__ */ jsx("span", { className: `w-2 h-2 rounded-full ${active ? "bg-success" : "bg-muted-foreground"}` }),
41618
+ /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-warning", children: tick.name }),
41619
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: tick.traitName })
41553
41620
  ] }),
41554
- /* @__PURE__ */ jsxs("div", { className: "flex gap-3 text-xs text-gray-500", children: [
41621
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-3 text-xs text-muted-foreground", children: [
41555
41622
  /* @__PURE__ */ jsxs("span", { children: [
41556
41623
  tick.interval,
41557
41624
  "ms"
@@ -41574,7 +41641,7 @@ function TicksTab({ ticks: ticks2 }) {
41574
41641
  ] });
41575
41642
  return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--ticks", children: [
41576
41643
  activeTicks.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
41577
- /* @__PURE__ */ jsxs(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: [
41644
+ /* @__PURE__ */ jsxs(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: [
41578
41645
  "Active (",
41579
41646
  activeTicks.length,
41580
41647
  ")"
@@ -41582,7 +41649,7 @@ function TicksTab({ ticks: ticks2 }) {
41582
41649
  /* @__PURE__ */ jsx(Stack, { gap: "sm", children: activeTicks.map((tick) => /* @__PURE__ */ jsx(TickCard, { tick, active: true }, tick.id)) })
41583
41650
  ] }),
41584
41651
  inactiveTicks.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
41585
- /* @__PURE__ */ jsxs(Typography, { variant: "small", weight: "medium", className: "text-gray-400 mb-2", children: [
41652
+ /* @__PURE__ */ jsxs(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: [
41586
41653
  "Inactive (",
41587
41654
  inactiveTicks.length,
41588
41655
  ")"
@@ -41630,33 +41697,33 @@ function EntitiesTab({ snapshot }) {
41630
41697
  id: `singleton-${name}`,
41631
41698
  header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
41632
41699
  /* @__PURE__ */ jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
41633
- /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
41700
+ /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-info", children: name })
41634
41701
  ] }),
41635
- content: /* @__PURE__ */ 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) })
41702
+ content: /* @__PURE__ */ jsx("pre", { className: "text-xs text-muted-foreground bg-muted p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
41636
41703
  }));
41637
41704
  const runtimeItems = runtimeEntities.slice(0, 20).map((entity) => ({
41638
41705
  id: entity.id,
41639
41706
  header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
41640
- /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: entity.type }),
41641
- /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-gray-500", children: [
41707
+ /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-info", children: entity.type }),
41708
+ /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-muted-foreground", children: [
41642
41709
  "#",
41643
41710
  entity.id.slice(0, 8)
41644
41711
  ] })
41645
41712
  ] }),
41646
- content: /* @__PURE__ */ 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) })
41713
+ content: /* @__PURE__ */ 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) })
41647
41714
  }));
41648
41715
  return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--entities", children: [
41649
41716
  singletonItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
41650
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
41717
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
41651
41718
  /* @__PURE__ */ jsx(Accordion, { items: singletonItems, multiple: true })
41652
41719
  ] }),
41653
41720
  runtimeItems.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
41654
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
41721
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
41655
41722
  /* @__PURE__ */ jsx(Accordion, { items: runtimeItems, multiple: true }),
41656
- runtimeEntities.length > 20 && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
41723
+ runtimeEntities.length > 20 && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
41657
41724
  ] }),
41658
41725
  persistentEntries.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
41659
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
41726
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.persistent") }),
41660
41727
  /* @__PURE__ */ jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between py-1", children: [
41661
41728
  /* @__PURE__ */ jsx(Typography, { variant: "small", children: type }),
41662
41729
  /* @__PURE__ */ jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
@@ -41741,7 +41808,7 @@ function EventFlowTab({ events: events2 }) {
41741
41808
  );
41742
41809
  })
41743
41810
  ] }),
41744
- /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 ml-auto cursor-pointer", children: [
41811
+ /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-muted-foreground ml-auto cursor-pointer", children: [
41745
41812
  /* @__PURE__ */ jsx(
41746
41813
  Checkbox,
41747
41814
  {
@@ -41756,18 +41823,18 @@ function EventFlowTab({ events: events2 }) {
41756
41823
  "div",
41757
41824
  {
41758
41825
  ref: containerRef,
41759
- className: "max-h-64 overflow-y-auto space-y-1 bg-gray-50 dark:bg-gray-800 rounded p-2",
41826
+ className: "max-h-64 overflow-y-auto space-y-1 bg-muted rounded p-2",
41760
41827
  children: filteredEvents.slice(-100).map((event) => {
41761
41828
  const { variant, icon } = TYPE_BADGES[event.type] || { variant: "default", icon: "\u2022" };
41762
41829
  return /* @__PURE__ */ jsxs(
41763
41830
  "div",
41764
41831
  {
41765
- className: "flex items-start gap-2 text-xs py-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded px-1",
41832
+ className: "flex items-start gap-2 text-xs py-1 hover:bg-muted/50 rounded px-1",
41766
41833
  children: [
41767
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 font-mono min-w-[65px]", children: formatTime2(event.timestamp) }),
41834
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono min-w-[65px]", children: formatTime2(event.timestamp) }),
41768
41835
  /* @__PURE__ */ jsx("span", { children: icon }),
41769
41836
  /* @__PURE__ */ jsx(Badge, { variant, size: "sm", className: "min-w-[60px] justify-center", children: event.source }),
41770
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-600 dark:text-gray-400", children: event.message })
41837
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: event.message })
41771
41838
  ]
41772
41839
  },
41773
41840
  event.id
@@ -41831,21 +41898,21 @@ function GuardsPanel({ guards }) {
41831
41898
  id: guard.id,
41832
41899
  header: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 w-full", children: [
41833
41900
  /* @__PURE__ */ jsx(Badge, { variant: guard.result ? "success" : "danger", size: "sm", children: guard.result ? "\u2713" : "\u2717" }),
41834
- /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-amber-600 dark:text-amber-400", children: guard.guardName }),
41835
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: guard.context.type === "transition" ? `${guard.context.transitionFrom} \u2192 ${guard.context.transitionTo}` : guard.context.tickName }),
41836
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: formatTime2(guard.timestamp) })
41901
+ /* @__PURE__ */ jsx(Typography, { variant: "body", weight: "semibold", className: "text-warning", children: guard.guardName }),
41902
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: guard.context.type === "transition" ? `${guard.context.transitionFrom} \u2192 ${guard.context.transitionTo}` : guard.context.tickName }),
41903
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: formatTime2(guard.timestamp) })
41837
41904
  ] }),
41838
41905
  content: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
41839
41906
  /* @__PURE__ */ jsxs("div", { children: [
41840
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
41841
- /* @__PURE__ */ 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 })
41907
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.expression") }),
41908
+ /* @__PURE__ */ jsx("code", { className: "block mt-1 text-xs text-warning bg-warning/10 px-2 py-1 rounded", children: guard.expression })
41842
41909
  ] }),
41843
41910
  /* @__PURE__ */ jsxs("div", { children: [
41844
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
41845
- /* @__PURE__ */ 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) })
41911
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.inputs") }),
41912
+ /* @__PURE__ */ 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) })
41846
41913
  ] }),
41847
41914
  /* @__PURE__ */ jsxs("div", { children: [
41848
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
41915
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.trait") }),
41849
41916
  /* @__PURE__ */ jsx(Typography, { variant: "small", children: guard.context.traitName })
41850
41917
  ] })
41851
41918
  ] })
@@ -41901,7 +41968,7 @@ function VerificationTab({ checks, summary }) {
41901
41968
  (a, b) => (sortOrder[a.status] ?? 4) - (sortOrder[b.status] ?? 4)
41902
41969
  );
41903
41970
  return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--verification", children: [
41904
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-3 p-2 bg-gray-50 dark:bg-gray-800 rounded", children: [
41971
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-3 p-2 bg-muted rounded", children: [
41905
41972
  /* @__PURE__ */ jsxs(Badge, { variant: "success", size: "sm", children: [
41906
41973
  summary.passed,
41907
41974
  " passed"
@@ -41918,7 +41985,7 @@ function VerificationTab({ checks, summary }) {
41918
41985
  summary.pending,
41919
41986
  " pending"
41920
41987
  ] }),
41921
- /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: [
41988
+ /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: [
41922
41989
  summary.totalChecks,
41923
41990
  " total checks"
41924
41991
  ] })
@@ -41928,12 +41995,12 @@ function VerificationTab({ checks, summary }) {
41928
41995
  return /* @__PURE__ */ jsxs(
41929
41996
  "div",
41930
41997
  {
41931
- className: "flex items-start gap-2 p-2 rounded hover:bg-gray-50 dark:hover:bg-gray-800",
41998
+ className: "flex items-start gap-2 p-2 rounded hover:bg-muted/50",
41932
41999
  children: [
41933
42000
  /* @__PURE__ */ jsx(Badge, { variant: config.variant, size: "sm", className: "min-w-[20px] justify-center mt-0.5", children: config.icon }),
41934
42001
  /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
41935
42002
  /* @__PURE__ */ jsx(Typography, { variant: "small", className: "break-words", children: check.label }),
41936
- check.details && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500 break-words", children: check.details })
42003
+ check.details && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground break-words", children: check.details })
41937
42004
  ] }),
41938
42005
  /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono text-xs shrink-0", children: new Date(check.updatedAt).toLocaleTimeString("en-US", {
41939
42006
  hour12: false,
@@ -41968,10 +42035,10 @@ var init_VerificationTab = __esm({
41968
42035
  function EffectBadge({ effect }) {
41969
42036
  const variant = EFFECT_STATUS_VARIANT[effect.status] || "default";
41970
42037
  const icon = effect.status === "executed" ? "\u2713" : effect.status === "failed" ? "\u2717" : "-";
41971
- return /* @__PURE__ */ 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: [
42038
+ return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1 text-xs font-mono bg-muted rounded px-1.5 py-0.5", children: [
41972
42039
  /* @__PURE__ */ jsx(Badge, { variant, size: "sm", className: "!text-[9px] !px-1 !py-0", children: icon }),
41973
- /* @__PURE__ */ jsx("span", { className: "text-gray-600 dark:text-gray-400", children: effect.type }),
41974
- effect.error && /* @__PURE__ */ jsx("span", { className: "text-red-500 truncate max-w-[120px]", title: effect.error, children: effect.error })
42040
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: effect.type }),
42041
+ effect.error && /* @__PURE__ */ jsx("span", { className: "text-error truncate max-w-[120px]", title: effect.error, children: effect.error })
41975
42042
  ] });
41976
42043
  }
41977
42044
  function TransitionTimeline({ transitions }) {
@@ -42006,8 +42073,8 @@ function TransitionTimeline({ transitions }) {
42006
42073
  const sorted = [...transitions].reverse();
42007
42074
  return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
42008
42075
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-2", children: [
42009
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
42010
- /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
42076
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
42077
+ /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-xs text-muted-foreground cursor-pointer", children: [
42011
42078
  /* @__PURE__ */ jsx(
42012
42079
  Checkbox,
42013
42080
  {
@@ -42032,22 +42099,22 @@ function TransitionTimeline({ transitions }) {
42032
42099
  {
42033
42100
  className: `
42034
42101
  relative pl-6 pb-3 border-l-2 cursor-pointer
42035
- hover:bg-gray-50 dark:hover:bg-gray-800 rounded-r
42036
- ${hasFailedEffects ? "border-red-300 dark:border-red-700" : "border-gray-200 dark:border-gray-700"}
42102
+ hover:bg-muted/50 rounded-r
42103
+ ${hasFailedEffects ? "border-error" : "border-border"}
42037
42104
  `,
42038
42105
  onClick: () => setExpandedId(isExpanded ? null : trace.id),
42039
42106
  children: [
42040
42107
  /* @__PURE__ */ jsx("div", { className: `
42041
42108
  absolute left-[-5px] top-1 w-2 h-2 rounded-full
42042
- ${hasFailedEffects ? "bg-red-500" : allPassed ? "bg-green-500" : "bg-gray-400"}
42109
+ ${hasFailedEffects ? "bg-error" : allPassed ? "bg-success" : "bg-muted-foreground"}
42043
42110
  ` }),
42044
42111
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs py-1 px-2", children: [
42045
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 font-mono min-w-[65px]", children: formatTime2(trace.timestamp) }),
42112
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono min-w-[65px]", children: formatTime2(trace.timestamp) }),
42046
42113
  /* @__PURE__ */ jsx(Badge, { variant: "primary", size: "sm", className: "min-w-[60px] justify-center", children: trace.traitName }),
42047
- /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-gray-600 dark:text-gray-400", children: [
42114
+ /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-muted-foreground", children: [
42048
42115
  trace.from,
42049
42116
  " ",
42050
- /* @__PURE__ */ jsx("span", { className: "text-gray-400", children: "\u2192" }),
42117
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground/50", children: "\u2192" }),
42051
42118
  " ",
42052
42119
  trace.to
42053
42120
  ] }),
@@ -42064,9 +42131,9 @@ function TransitionTimeline({ transitions }) {
42064
42131
  ]
42065
42132
  }
42066
42133
  ),
42067
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
42134
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
42068
42135
  ] }),
42069
- isExpanded && trace.effects.length > 0 && /* @__PURE__ */ 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__ */ jsxs("div", { className: "flex items-center gap-1", children: [
42136
+ isExpanded && trace.effects.length > 0 && /* @__PURE__ */ 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__ */ jsxs("div", { className: "flex items-center gap-1", children: [
42070
42137
  /* @__PURE__ */ jsx(EffectBadge, { effect }),
42071
42138
  effect.args.length > 0 && /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono text-xs truncate max-w-[200px]", children: JSON.stringify(effect.args) }),
42072
42139
  effect.durationMs !== void 0 && /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: [
@@ -42100,8 +42167,8 @@ var init_TransitionTimeline = __esm({
42100
42167
  }
42101
42168
  });
42102
42169
  function StatRow({ label, value, variant }) {
42103
- return /* @__PURE__ */ 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: [
42104
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: label }),
42170
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between py-1.5 border-b border-border last:border-b-0", children: [
42171
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: label }),
42105
42172
  variant ? /* @__PURE__ */ jsx(Badge, { variant, size: "sm", children: String(value) }) : /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "semibold", className: "font-mono", children: String(value) })
42106
42173
  ] });
42107
42174
  }
@@ -42130,7 +42197,7 @@ function ServerBridgeTab({ bridge }) {
42130
42197
  return /* @__PURE__ */ jsx("div", { className: "debug-tab debug-tab--bridge", children: /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
42131
42198
  /* @__PURE__ */ jsxs(Card, { className: "p-3", children: [
42132
42199
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
42133
- /* @__PURE__ */ jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
42200
+ /* @__PURE__ */ jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-success animate-pulse" : "bg-error"}` }),
42134
42201
  /* @__PURE__ */ jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
42135
42202
  ] }),
42136
42203
  /* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
@@ -42165,11 +42232,11 @@ function ServerBridgeTab({ bridge }) {
42165
42232
  )
42166
42233
  ] })
42167
42234
  ] }),
42168
- bridge.lastError && /* @__PURE__ */ jsxs(Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
42169
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
42170
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
42235
+ bridge.lastError && /* @__PURE__ */ jsxs(Card, { className: "p-3 border-error/30 bg-error/10", children: [
42236
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "semibold", className: "text-error mb-1", children: t("debug.lastError") }),
42237
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-error font-mono break-all", children: bridge.lastError })
42171
42238
  ] }),
42172
- bridge.connected && /* @__PURE__ */ jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
42239
+ bridge.connected && /* @__PURE__ */ jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
42173
42240
  ] }) });
42174
42241
  }
42175
42242
  var init_ServerBridgeTab = __esm({
@@ -42295,7 +42362,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
42295
42362
  };
42296
42363
  return /* @__PURE__ */ jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
42297
42364
  /* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
42298
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
42365
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.activeStates") }),
42299
42366
  /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxs(Badge, { variant: "success", size: "sm", children: [
42300
42367
  trait.name,
42301
42368
  ": ",
@@ -42303,8 +42370,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
42303
42370
  ] }, trait.id)) })
42304
42371
  ] }),
42305
42372
  /* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
42306
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
42307
- availableEvents.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
42373
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.availableEvents") }),
42374
+ availableEvents.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
42308
42375
  /* @__PURE__ */ jsx(
42309
42376
  Button,
42310
42377
  {
@@ -42315,22 +42382,22 @@ function EventDispatcherTab({ traits: traits2, schema }) {
42315
42382
  children: event
42316
42383
  }
42317
42384
  ),
42318
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
42385
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-muted-foreground", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
42319
42386
  transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
42320
42387
  ] }, event)) })
42321
42388
  ] }),
42322
42389
  unavailableEvents.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-3", children: [
42323
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
42390
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.otherEvents") }),
42324
42391
  /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
42325
42392
  ] }),
42326
42393
  log19.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
42327
- /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
42394
+ /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.recentTransitions") }),
42328
42395
  /* @__PURE__ */ jsx(Stack, { gap: "xs", children: log19.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
42329
- /* @__PURE__ */ jsx("span", { className: "text-purple-400", children: entry.traitName }),
42396
+ /* @__PURE__ */ jsx("span", { className: "text-primary", children: entry.traitName }),
42330
42397
  " ",
42331
- /* @__PURE__ */ jsx("span", { className: "text-gray-500", children: entry.from }),
42398
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: entry.from }),
42332
42399
  " -> ",
42333
- /* @__PURE__ */ jsx("span", { className: "text-green-400", children: entry.to })
42400
+ /* @__PURE__ */ jsx("span", { className: "text-success", children: entry.to })
42334
42401
  ] }, i)) })
42335
42402
  ] })
42336
42403
  ] });
@@ -42356,21 +42423,21 @@ var init_RuntimeDebugger = __esm({
42356
42423
  function ServerResponseRow({ sr }) {
42357
42424
  const { t } = useTranslate();
42358
42425
  const entityEntries = Object.entries(sr.dataEntities);
42359
- return /* @__PURE__ */ jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
42426
+ return /* @__PURE__ */ jsxs("div", { className: "ml-4 pl-2 border-l border-primary py-0.5 text-xs font-mono", children: [
42360
42427
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
42361
- /* @__PURE__ */ jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
42428
+ /* @__PURE__ */ jsxs("span", { className: sr.success ? "text-success" : "text-error", children: [
42362
42429
  sr.success ? "\u2713" : "\u2717",
42363
42430
  " ",
42364
42431
  t("debug.server")
42365
42432
  ] }),
42366
- /* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
42367
- sr.clientEffects > 0 && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-purple-500/15 text-purple-600 dark:text-purple-300", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
42368
- sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
42433
+ /* @__PURE__ */ jsx("span", { className: "text-primary", children: sr.orbitalName }),
42434
+ sr.clientEffects > 0 && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-primary/10 text-primary", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
42435
+ sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxs("span", { className: "px-1 rounded bg-primary/10 text-primary", children: [
42369
42436
  t("debug.emitLabel"),
42370
42437
  " ",
42371
42438
  sr.emittedEvents.join(", ")
42372
42439
  ] }),
42373
- sr.error && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-red-500/15 text-red-600 dark:text-red-400 truncate max-w-[300px]", children: sr.error })
42440
+ sr.error && /* @__PURE__ */ jsx("span", { className: "px-1 rounded bg-error/10 text-error truncate max-w-[300px]", children: sr.error })
42374
42441
  ] }),
42375
42442
  entityEntries.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
42376
42443
  name,
@@ -42386,9 +42453,9 @@ function TransitionRow({ trace }) {
42386
42453
  if (isServerEntry && trace.serverResponse) {
42387
42454
  return /* @__PURE__ */ jsxs("div", { className: "py-0.5 border-b border-border last:border-0", children: [
42388
42455
  /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
42389
- /* @__PURE__ */ jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
42456
+ /* @__PURE__ */ jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-primary" }),
42390
42457
  /* @__PURE__ */ jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
42391
- /* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
42458
+ /* @__PURE__ */ jsx("span", { className: "text-primary flex-shrink-0", children: t("debug.serverResponse") })
42392
42459
  ] }),
42393
42460
  /* @__PURE__ */ jsx(ServerResponseRow, { sr: trace.serverResponse })
42394
42461
  ] });
@@ -42397,7 +42464,7 @@ function TransitionRow({ trace }) {
42397
42464
  /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
42398
42465
  /* @__PURE__ */ jsx("span", { className: cn(
42399
42466
  "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0",
42400
- hasFailedEffects ? "bg-red-500" : "bg-green-500"
42467
+ hasFailedEffects ? "bg-error" : "bg-success"
42401
42468
  ) }),
42402
42469
  /* @__PURE__ */ jsx(Badge, { variant: "info", size: "sm", className: "flex-shrink-0", children: trace.event }),
42403
42470
  /* @__PURE__ */ jsx("span", { className: "text-foreground flex-shrink-0", children: trace.traitName }),
@@ -42411,7 +42478,7 @@ function TransitionRow({ trace }) {
42411
42478
  ] }),
42412
42479
  trace.effects.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1 ml-6 mt-0.5", children: trace.effects.map((eff, i) => /* @__PURE__ */ jsxs("span", { className: cn(
42413
42480
  "px-1 rounded text-xs",
42414
- 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"
42481
+ eff.status === "executed" ? "bg-success/10 text-success" : eff.status === "failed" ? "bg-error/10 text-error" : "bg-warning/10 text-warning"
42415
42482
  ), children: [
42416
42483
  eff.status === "executed" ? "\u2713" : eff.status === "failed" ? "\u2717" : "-",
42417
42484
  " ",
@@ -42445,7 +42512,7 @@ function VerifyModePanel({
42445
42512
  {
42446
42513
  className: cn(
42447
42514
  "runtime-debugger runtime-debugger--verify",
42448
- "flex flex-col bg-[var(--color-card)] text-[var(--color-foreground)] border-t-2 border-cyan-500",
42515
+ "flex flex-col bg-[var(--color-card)] text-[var(--color-foreground)] border-t-2 border-accent",
42449
42516
  hudBottom ? "" : "fixed bottom-0 left-0 right-0",
42450
42517
  className
42451
42518
  ),
@@ -42466,8 +42533,8 @@ function VerifyModePanel({
42466
42533
  /* @__PURE__ */ jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
42467
42534
  /* @__PURE__ */ jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
42468
42535
  /* @__PURE__ */ jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
42469
- /* @__PURE__ */ jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
42470
- traitStates && /* @__PURE__ */ jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
42536
+ /* @__PURE__ */ jsx("span", { className: "text-primary", children: t("debug.serverCount", { count: serverCount }) }),
42537
+ traitStates && /* @__PURE__ */ jsx("span", { className: "text-accent truncate max-w-[400px]", children: traitStates }),
42471
42538
  !expanded && transitions.length > 0 && /* @__PURE__ */ jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
42472
42539
  ]
42473
42540
  }
@@ -42662,7 +42729,7 @@ function RuntimeDebugger({
42662
42729
  title: t("debug.openDebugger"),
42663
42730
  children: failedChecks > 0 ? /* @__PURE__ */ jsxs("span", { className: "relative", children: [
42664
42731
  /* @__PURE__ */ jsx("span", { children: "V" }),
42665
- /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
42732
+ /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-error rounded-full" })
42666
42733
  ] }) : /* @__PURE__ */ jsx("span", { children: "V" })
42667
42734
  }
42668
42735
  ) : /* @__PURE__ */ jsxs(Card, { className: "runtime-debugger__panel", children: [
@@ -42750,7 +42817,7 @@ var init_SegmentRenderer = __esm({
42750
42817
  "div",
42751
42818
  {
42752
42819
  className: cn(
42753
- "border border-gray-200 dark:border-gray-700 rounded-lg p-2 md:p-4 overflow-x-auto space-y-6",
42820
+ "border border-border rounded-lg p-2 md:p-4 overflow-x-auto space-y-6",
42754
42821
  containerClassName,
42755
42822
  className
42756
42823
  ),
@@ -47236,6 +47303,14 @@ function useUISlotManager() {
47236
47303
  [sourceKey]: content
47237
47304
  };
47238
47305
  const nextAll = { ...prev, [config.target]: nextSources };
47306
+ const priorWriters = Object.keys(slotSources);
47307
+ if (priorWriters.length === 1 && priorWriters[0] !== sourceKey) {
47308
+ log17.warn("slot:contention", {
47309
+ slot: config.target,
47310
+ writers: [priorWriters[0], sourceKey],
47311
+ patternTypes: [slotSources[priorWriters[0]].pattern, content.pattern]
47312
+ });
47313
+ }
47239
47314
  if (content.sourceTrait) {
47240
47315
  indexTraitRender(content.sourceTrait, content);
47241
47316
  notifyTraitSubscribers(content.sourceTrait, content);