@almadar/ui 5.123.0 → 5.125.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 +332 -275
  6. package/dist/avl/index.js +334 -277
  7. package/dist/components/index.cjs +284 -248
  8. package/dist/components/index.d.cts +4 -3
  9. package/dist/components/index.d.ts +4 -3
  10. package/dist/components/index.js +284 -248
  11. package/dist/context/index.cjs +25 -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 +25 -66
  15. package/dist/{offline-executor-aRuNznZx.d.cts → offline-executor-Qz4b6GpF.d.cts} +19 -1
  16. package/dist/{offline-executor-aRuNznZx.d.ts → offline-executor-Qz4b6GpF.d.ts} +19 -1
  17. package/dist/providers/index.cjs +395 -275
  18. package/dist/providers/index.d.cts +6 -6
  19. package/dist/providers/index.d.ts +6 -6
  20. package/dist/providers/index.js +394 -276
  21. package/dist/renderer/index.cjs +8 -0
  22. package/dist/renderer/index.d.cts +2 -2
  23. package/dist/renderer/index.d.ts +2 -2
  24. package/dist/renderer/index.js +1 -1
  25. package/dist/runtime/index.cjs +325 -268
  26. package/dist/runtime/index.d.cts +4 -2
  27. package/dist/runtime/index.d.ts +4 -2
  28. package/dist/runtime/index.js +327 -270
  29. package/package.json +13 -11
  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
@@ -4359,10 +4359,10 @@ var init_ModuleCard = __esm({
4359
4359
  init_avl_atom_types();
4360
4360
  init_MiniStateMachine();
4361
4361
  PERSISTENCE_BORDER = {
4362
- persistent: "border-l-[3px] border-l-blue-500 border-solid",
4363
- runtime: "border-l-[3px] border-l-blue-500 border-dashed",
4364
- singleton: "border-l-[3px] border-l-blue-500 border-double",
4365
- instance: "border-l-[3px] border-l-blue-500 border-dotted"
4362
+ persistent: "border-l-[3px] border-l-primary border-solid",
4363
+ runtime: "border-l-[3px] border-l-primary border-dashed",
4364
+ singleton: "border-l-[3px] border-l-primary border-double",
4365
+ instance: "border-l-[3px] border-l-primary border-dotted"
4366
4366
  };
4367
4367
  PERSISTENCE_ICON = {
4368
4368
  persistent: "\u26C1",
@@ -4392,8 +4392,8 @@ var init_ModuleCard = __esm({
4392
4392
  className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] shadow-sm overflow-hidden",
4393
4393
  style: { minWidth: 280, maxWidth: 400 },
4394
4394
  children: [
4395
- /* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "target", position: react.Position.Left, className: "!w-2.5 !h-2.5 !bg-orange-400" }),
4396
- /* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "source", position: react.Position.Right, className: "!w-2.5 !h-2.5 !bg-orange-400" }),
4395
+ /* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "target", position: react.Position.Left, className: "!w-2.5 !h-2.5 !bg-warning" }),
4396
+ /* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "source", position: react.Position.Right, className: "!w-2.5 !h-2.5 !bg-warning" }),
4397
4397
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3 py-2 border-b border-[var(--color-border)]", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-bold text-[var(--color-foreground)]", children: orbitalName }) }),
4398
4398
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `px-3 py-2 border-b border-[var(--color-border)] ${PERSISTENCE_BORDER[persistence] ?? ""}`, children: [
4399
4399
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 mb-1.5", children: [
@@ -8442,15 +8442,15 @@ var init_TextHighlight = __esm({
8442
8442
  const typeStyles = {
8443
8443
  question: cn(
8444
8444
  // Blue border for questions
8445
- "bg-card border-b-2 border-primary-600",
8445
+ "bg-card border-b-2 border-primary",
8446
8446
  "hover:bg-muted",
8447
- isActive && "bg-primary-100 ring-2 ring-primary-600"
8447
+ isActive && "bg-primary/10 ring-2 ring-primary"
8448
8448
  ),
8449
8449
  note: cn(
8450
8450
  // Yellow border for notes
8451
- "bg-card border-b-2 border-amber-500",
8451
+ "bg-card border-b-2 border-warning",
8452
8452
  "hover:bg-muted",
8453
- isActive && "bg-amber-100 ring-2 ring-amber-500"
8453
+ isActive && "bg-warning/10 ring-2 ring-warning"
8454
8454
  )
8455
8455
  };
8456
8456
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -8796,7 +8796,7 @@ function DayCell({
8796
8796
  {
8797
8797
  className: cn(
8798
8798
  "p-2 text-center cursor-pointer hover:bg-muted transition-colors",
8799
- isToday && "bg-blue-500/10",
8799
+ isToday && "bg-primary/10",
8800
8800
  className
8801
8801
  ),
8802
8802
  onClick: handleClick,
@@ -8807,7 +8807,7 @@ function DayCell({
8807
8807
  variant: "small",
8808
8808
  className: cn(
8809
8809
  "font-medium",
8810
- isToday ? "text-blue-600" : "text-muted-foreground"
8810
+ isToday ? "text-primary" : "text-muted-foreground"
8811
8811
  ),
8812
8812
  children: dayAbbr
8813
8813
  }
@@ -8819,7 +8819,7 @@ function DayCell({
8819
8819
  rounded: "full",
8820
8820
  className: cn(
8821
8821
  "h-8 w-8 mx-auto items-center justify-center",
8822
- isToday && "bg-blue-600 text-white"
8822
+ isToday && "bg-primary text-primary-foreground"
8823
8823
  ),
8824
8824
  children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "font-semibold", children: safeDate.getDate() })
8825
8825
  }
@@ -15673,19 +15673,19 @@ var init_ActivationBlock = __esm({
15673
15673
  "div",
15674
15674
  {
15675
15675
  className: cn(
15676
- "bg-indigo-50 dark:bg-indigo-900/20 border-2 border-indigo-200 dark:border-indigo-800 rounded-lg p-5 mb-6",
15676
+ "bg-primary/10 border-2 border-primary rounded-lg p-5 mb-6",
15677
15677
  className
15678
15678
  ),
15679
15679
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
15680
- /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Lightbulb, { className: "text-indigo-600 dark:text-indigo-400 flex-shrink-0 mt-1", size: 24 }),
15680
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Lightbulb, { className: "text-primary flex-shrink-0 mt-1", size: 24 }),
15681
15681
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
15682
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-indigo-900 dark:text-indigo-100 mb-2", children: "Before You Begin..." }),
15683
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-gray-700 dark:text-gray-300 mb-3 text-sm md:text-base", children: question }),
15682
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-primary mb-2", children: "Before You Begin..." }),
15683
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-foreground mb-3 text-sm md:text-base", children: question }),
15684
15684
  isExpanded ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
15685
15685
  /* @__PURE__ */ jsxRuntime.jsx(
15686
15686
  "textarea",
15687
15687
  {
15688
- 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",
15688
+ 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",
15689
15689
  placeholder: "Jot down your thoughts...",
15690
15690
  value: response,
15691
15691
  onChange: (e) => setResponse(e.target.value),
@@ -15697,7 +15697,7 @@ var init_ActivationBlock = __esm({
15697
15697
  "button",
15698
15698
  {
15699
15699
  onClick: handleSubmit,
15700
- className: "px-4 py-2 bg-indigo-600 text-white rounded-md hover:bg-indigo-700 text-sm font-medium transition-colors",
15700
+ className: "px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary-hover text-sm font-medium transition-colors",
15701
15701
  children: "Continue to Lesson \u2192"
15702
15702
  }
15703
15703
  ),
@@ -15708,7 +15708,7 @@ var init_ActivationBlock = __esm({
15708
15708
  emit(`UI:${saveEvent}`, { response: "" });
15709
15709
  setIsExpanded(false);
15710
15710
  },
15711
- className: "px-4 py-2 text-indigo-600 dark:text-indigo-400 hover:underline text-sm",
15711
+ className: "px-4 py-2 text-primary hover:underline text-sm",
15712
15712
  children: "Skip for now"
15713
15713
  }
15714
15714
  )
@@ -15717,7 +15717,7 @@ var init_ActivationBlock = __esm({
15717
15717
  "button",
15718
15718
  {
15719
15719
  onClick: () => setIsExpanded(true),
15720
- className: "text-sm text-indigo-600 dark:text-indigo-400 hover:underline font-medium",
15720
+ className: "text-sm text-primary hover:underline font-medium",
15721
15721
  children: "\u2713 Answered \xB7 Edit response"
15722
15722
  }
15723
15723
  )
@@ -16221,7 +16221,7 @@ var init_AuthLayout = __esm({
16221
16221
  VStack,
16222
16222
  {
16223
16223
  className: cn(
16224
- "hidden lg:flex lg:w-1/2 bg-primary-600 relative overflow-hidden",
16224
+ "hidden lg:flex lg:w-1/2 bg-primary relative overflow-hidden",
16225
16225
  "justify-between p-12"
16226
16226
  ),
16227
16227
  style: backgroundImage ? {
@@ -16230,7 +16230,7 @@ var init_AuthLayout = __esm({
16230
16230
  } : void 0,
16231
16231
  gap: "none",
16232
16232
  children: [
16233
- /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute inset-0 bg-gradient-to-br from-primary-600/90 to-primary-800/90" }),
16233
+ /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute inset-0 bg-gradient-to-br from-primary/90 to-primary-hover/90" }),
16234
16234
  /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "relative z-10", children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "flex items-center gap-3", children: [
16235
16235
  logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-10 h-10 bg-[var(--color-card)]/20 rounded-xl flex items-center justify-center backdrop-blur", children: /* @__PURE__ */ jsxRuntime.jsx(
16236
16236
  Typography,
@@ -16315,7 +16315,7 @@ var init_AuthLayout = __esm({
16315
16315
  ),
16316
16316
  children: /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "w-full max-w-md", children: [
16317
16317
  /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "lg:hidden mb-8 text-center", children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "inline-flex items-center gap-3", children: [
16318
- logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-12 h-12 bg-primary-600 rounded-xl flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
16318
+ logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-12 h-12 bg-primary rounded-xl flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
16319
16319
  Typography,
16320
16320
  {
16321
16321
  variant: "body1",
@@ -17479,7 +17479,7 @@ var init_CodeBlock = __esm({
17479
17479
  {
17480
17480
  justify: "between",
17481
17481
  align: "center",
17482
- className: "px-3 py-2 bg-[var(--color-card)] rounded-t-lg border-b border-gray-700",
17482
+ className: "px-3 py-2 bg-[var(--color-card)] rounded-t-lg border-b border-border",
17483
17483
  children: [
17484
17484
  showLanguageBadge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", children: language }),
17485
17485
  effectiveCopy && /* @__PURE__ */ jsxRuntime.jsx(
@@ -17488,9 +17488,9 @@ var init_CodeBlock = __esm({
17488
17488
  variant: "ghost",
17489
17489
  size: "sm",
17490
17490
  onClick: handleCopy,
17491
- className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-white",
17491
+ className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-foreground",
17492
17492
  "aria-label": t("common.copy"),
17493
- children: copied ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "check", className: "w-4 h-4 text-green-400" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "copy", className: "w-4 h-4" })
17493
+ children: copied ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "check", className: "w-4 h-4 text-success" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "copy", className: "w-4 h-4" })
17494
17494
  }
17495
17495
  )
17496
17496
  ]
@@ -17858,12 +17858,12 @@ var init_BloomQuizBlock = __esm({
17858
17858
  init_useEventBus();
17859
17859
  init_cn();
17860
17860
  BLOOM_CONFIG = {
17861
- remember: { color: "bg-gray-500", bgColor: "bg-gray-50 dark:bg-gray-900/30", label: "Remember" },
17862
- understand: { color: "bg-blue-500", bgColor: "bg-blue-50 dark:bg-blue-900/30", label: "Understand" },
17863
- apply: { color: "bg-green-500", bgColor: "bg-green-50 dark:bg-green-900/30", label: "Apply" },
17864
- analyze: { color: "bg-yellow-500", bgColor: "bg-yellow-50 dark:bg-yellow-900/30", label: "Analyze" },
17865
- evaluate: { color: "bg-orange-500", bgColor: "bg-orange-50 dark:bg-orange-900/30", label: "Evaluate" },
17866
- create: { color: "bg-purple-500", bgColor: "bg-purple-50 dark:bg-purple-900/30", label: "Create" }
17861
+ remember: { color: "bg-secondary text-secondary-foreground", bgColor: "bg-muted", label: "Remember" },
17862
+ understand: { color: "bg-info text-info-foreground", bgColor: "bg-info/10", label: "Understand" },
17863
+ apply: { color: "bg-success text-success-foreground", bgColor: "bg-success/10", label: "Apply" },
17864
+ analyze: { color: "bg-warning text-warning-foreground", bgColor: "bg-warning/10", label: "Analyze" },
17865
+ evaluate: { color: "bg-accent text-accent-foreground", bgColor: "bg-accent/10", label: "Evaluate" },
17866
+ create: { color: "bg-primary text-primary-foreground", bgColor: "bg-primary/10", label: "Create" }
17867
17867
  };
17868
17868
  BloomQuizBlock = ({
17869
17869
  level,
@@ -17889,22 +17889,22 @@ var init_BloomQuizBlock = __esm({
17889
17889
  "div",
17890
17890
  {
17891
17891
  className: cn(
17892
- "rounded-lg border border-indigo-100 dark:border-indigo-800 p-4 my-4 transition-all",
17892
+ "rounded-lg border border-primary p-4 my-4 transition-all",
17893
17893
  config.bgColor,
17894
17894
  className
17895
17895
  ),
17896
17896
  children: [
17897
17897
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-3", children: [
17898
17898
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [
17899
- index !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-gray-500 dark:text-gray-400 font-medium text-sm", children: [
17899
+ index !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground font-medium text-sm", children: [
17900
17900
  "Question ",
17901
17901
  index + 1
17902
17902
  ] }),
17903
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(config.color, "text-white text-xs px-2 py-1 rounded-full font-medium"), children: config.label })
17903
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(config.color, "text-xs px-2 py-1 rounded-full font-medium"), children: config.label })
17904
17904
  ] }),
17905
- isAnswered && /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.CheckCircle, { className: "text-green-600 dark:text-green-400 flex-shrink-0", size: 20 })
17905
+ isAnswered && /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.CheckCircle, { className: "text-success flex-shrink-0", size: 20 })
17906
17906
  ] }),
17907
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold text-indigo-900 dark:text-indigo-200 mb-3 space-y-2", children: questionSegments.map(
17907
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold text-primary mb-3 space-y-2", children: questionSegments.map(
17908
17908
  (segment, idx) => segment.type === "markdown" ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, { content: segment.content }, `q-md-${idx}`) : /* @__PURE__ */ jsxRuntime.jsx(
17909
17909
  CodeBlock,
17910
17910
  {
@@ -17918,13 +17918,13 @@ var init_BloomQuizBlock = __esm({
17918
17918
  "button",
17919
17919
  {
17920
17920
  type: "button",
17921
- 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",
17921
+ 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",
17922
17922
  onClick: handleReveal,
17923
17923
  children: revealed ? "Hide Answer" : "Reveal Answer"
17924
17924
  }
17925
17925
  ),
17926
- revealed && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg bg-white/80 dark:bg-gray-800/80 p-3 text-sm text-slate-800 dark:text-gray-200 shadow-sm border border-indigo-100 dark:border-indigo-800 mt-3 space-y-2", children: [
17927
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-gray-600 dark:text-gray-400 mb-1 font-medium uppercase tracking-wide", children: "Answer:" }),
17926
+ revealed && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg bg-card/80 p-3 text-sm text-foreground shadow-sm border border-primary mt-3 space-y-2", children: [
17927
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-muted-foreground mb-1 font-medium uppercase tracking-wide", children: "Answer:" }),
17928
17928
  answerSegments.map(
17929
17929
  (segment, idx) => segment.type === "markdown" ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, { content: segment.content }, `a-md-${idx}`) : /* @__PURE__ */ jsxRuntime.jsx(
17930
17930
  CodeBlock,
@@ -18198,12 +18198,12 @@ var init_QuizBlock = __esm({
18198
18198
  }) => {
18199
18199
  const { t } = hooks.useTranslate();
18200
18200
  const [revealed, setRevealed] = React91.useState(false);
18201
- return /* @__PURE__ */ jsxRuntime.jsx(Card2, { className: cn("my-4 border-blue-200 dark:border-blue-800", className), children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", className: "p-4", children: [
18201
+ return /* @__PURE__ */ jsxRuntime.jsx(Card2, { className: cn("my-4 border-primary", className), children: /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "sm", className: "p-4", children: [
18202
18202
  /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "start", children: [
18203
- /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.HelpCircle, size: "sm", className: "text-blue-500 mt-0.5 shrink-0" }),
18203
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: LucideIcons2.HelpCircle, size: "sm", className: "text-primary mt-0.5 shrink-0" }),
18204
18204
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "font-medium", children: question })
18205
18205
  ] }),
18206
- revealed ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "pl-7 pt-2 border-t border-gray-200 dark:border-gray-700", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-foreground", children: answer }) }) : null,
18206
+ revealed ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "pl-7 pt-2 border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-foreground", children: answer }) }) : null,
18207
18207
  /* @__PURE__ */ jsxRuntime.jsx(
18208
18208
  Button,
18209
18209
  {
@@ -20115,7 +20115,7 @@ var init_BookTableOfContents = __esm({
20115
20115
  className: cn(
20116
20116
  "justify-start text-left w-full",
20117
20117
  direction === "rtl" && "text-right",
20118
- isCurrent && "bg-blue-50 dark:bg-blue-950 text-blue-600 dark:text-blue-400"
20118
+ isCurrent && "bg-primary/10 text-primary"
20119
20119
  ),
20120
20120
  children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "truncate", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", children: String(chapter.title ?? "") }) })
20121
20121
  },
@@ -21363,7 +21363,7 @@ function CalendarGrid({
21363
21363
  border: true,
21364
21364
  className: cn(
21365
21365
  "cursor-pointer hover:shadow-sm transition-shadow text-xs truncate",
21366
- color ? color : "bg-blue-500/15 border-blue-500/30 text-blue-600"
21366
+ color ? color : "bg-primary/10 border-primary/30 text-primary"
21367
21367
  ),
21368
21368
  onClick: (e) => handleEventClick(event, e),
21369
21369
  children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "truncate font-medium", children: event.title })
@@ -21461,7 +21461,7 @@ function CalendarGrid({
21461
21461
  onClick: () => handleSlotClick(day, time),
21462
21462
  className: cn(
21463
21463
  "border-l border-border",
21464
- isToday && "bg-blue-50/30"
21464
+ isToday && "bg-primary/10"
21465
21465
  ),
21466
21466
  ...longPressEvent ? {
21467
21467
  onPointerDown: () => startLongPress(day, time),
@@ -23477,31 +23477,31 @@ var init_CodeRunnerPanel = __esm({
23477
23477
  }
23478
23478
  )
23479
23479
  ] }),
23480
- hasOutput && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "rounded-lg border border-gray-700 bg-[#0d0d0d] overflow-hidden", children: [
23480
+ hasOutput && /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "rounded-lg border border-border bg-foreground overflow-hidden", children: [
23481
23481
  /* @__PURE__ */ jsxRuntime.jsxs(
23482
23482
  HStack,
23483
23483
  {
23484
23484
  gap: "sm",
23485
23485
  align: "center",
23486
- className: "px-3 py-2 bg-gray-800 border-b border-gray-700",
23486
+ className: "px-3 py-2 bg-card border-b border-border",
23487
23487
  children: [
23488
- /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Terminal, { size: 16, className: "text-gray-400" }),
23489
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-300 font-medium", children: "Output" })
23488
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Terminal, { size: 16, className: "text-muted-foreground" }),
23489
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-foreground font-medium", children: "Output" })
23490
23490
  ]
23491
23491
  }
23492
23492
  ),
23493
- /* @__PURE__ */ jsxRuntime.jsx(VStack, { gap: "none", className: "p-3 font-mono text-sm", children: error ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-red-400 whitespace-pre-wrap", children: error }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
23494
- output?.stdout ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-200 whitespace-pre-wrap", children: output.stdout }) : null,
23495
- output?.stderr ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-red-400 whitespace-pre-wrap", children: output.stderr }) : null,
23496
- !output?.stdout && !output?.stderr ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500 italic", children: "No output" }) : null,
23497
- output && output.testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "mt-3 pt-3 border-t border-gray-700 space-y-2", children: output.testResults.map((test, index) => /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "start", className: "text-xs", children: [
23498
- test.passed ? /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.CheckCircle, { size: 14, className: "text-green-400 mt-0.5" }) : /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.XCircle, { size: 14, className: "text-red-400 mt-0.5" }),
23493
+ /* @__PURE__ */ jsxRuntime.jsx(VStack, { gap: "none", className: "p-3 font-mono text-sm", children: error ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-error whitespace-pre-wrap", children: error }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
23494
+ output?.stdout ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-background whitespace-pre-wrap", children: output.stdout }) : null,
23495
+ output?.stderr ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-error whitespace-pre-wrap", children: output.stderr }) : null,
23496
+ !output?.stdout && !output?.stderr ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-background italic", children: "No output" }) : null,
23497
+ output && output.testResults.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "mt-3 pt-3 border-t border-border space-y-2", children: output.testResults.map((test, index) => /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", align: "start", className: "text-xs", children: [
23498
+ test.passed ? /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.CheckCircle, { size: 14, className: "text-success mt-0.5" }) : /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.XCircle, { size: 14, className: "text-error mt-0.5" }),
23499
23499
  /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "flex-1", children: [
23500
23500
  /* @__PURE__ */ jsxRuntime.jsxs(
23501
23501
  Typography,
23502
23502
  {
23503
23503
  variant: "small",
23504
- className: test.passed ? "text-green-400" : "text-red-400",
23504
+ className: test.passed ? "text-success" : "text-error",
23505
23505
  children: [
23506
23506
  "Test ",
23507
23507
  index + 1,
@@ -23510,15 +23510,15 @@ var init_CodeRunnerPanel = __esm({
23510
23510
  ]
23511
23511
  }
23512
23512
  ),
23513
- /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-gray-400", children: [
23513
+ /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-background", children: [
23514
23514
  "Input: ",
23515
23515
  test.input
23516
23516
  ] }),
23517
- /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-gray-400", children: [
23517
+ /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-background", children: [
23518
23518
  "Expected: ",
23519
23519
  test.expectedOutput
23520
23520
  ] }),
23521
- /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-gray-400", children: [
23521
+ /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-background", children: [
23522
23522
  "Actual: ",
23523
23523
  test.actualOutput
23524
23524
  ] })
@@ -23703,14 +23703,14 @@ var init_ConnectionBlock = __esm({
23703
23703
  "div",
23704
23704
  {
23705
23705
  className: cn(
23706
- "bg-emerald-50 dark:bg-emerald-900/20 border-l-4 border-emerald-500 rounded-r-lg p-5 mb-6",
23706
+ "bg-success/10 border-l-4 border-success rounded-r-lg p-5 mb-6",
23707
23707
  className
23708
23708
  ),
23709
23709
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
23710
- /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Link2, { className: "text-emerald-600 dark:text-emerald-400 flex-shrink-0 mt-1", size: 20 }),
23710
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Link2, { className: "text-success flex-shrink-0 mt-1", size: 20 }),
23711
23711
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
23712
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-emerald-900 dark:text-emerald-100 mb-2", children: "Building On What You Know" }),
23713
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose dark:prose-invert prose-sm max-w-none text-gray-700 dark:text-gray-300", children: /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, { content }) })
23712
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-success mb-2", children: "Building On What You Know" }),
23713
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "prose dark:prose-invert prose-sm max-w-none text-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(MarkdownContent, { content }) })
23714
23714
  ] })
23715
23715
  ] })
23716
23716
  }
@@ -23797,7 +23797,7 @@ function CounterStandard({
23797
23797
  variant: "h1",
23798
23798
  className: cn(
23799
23799
  sizeStyles8[size].display,
23800
- "font-bold tabular-nums text-primary-600"
23800
+ "font-bold tabular-nums text-primary"
23801
23801
  ),
23802
23802
  children: resolved.count
23803
23803
  }
@@ -23870,7 +23870,7 @@ function CounterFull({
23870
23870
  variant: "h1",
23871
23871
  className: cn(
23872
23872
  sizeStyles8[size].display,
23873
- "font-bold tabular-nums text-primary-600"
23873
+ "font-bold tabular-nums text-primary"
23874
23874
  ),
23875
23875
  children: resolved.count
23876
23876
  }
@@ -24131,11 +24131,11 @@ var init_DashboardLayout = __esm({
24131
24131
  className: "h-16 px-4 border-b border-border dark:border-border",
24132
24132
  children: [
24133
24133
  /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "flex items-center gap-2", children: [
24134
- logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
24134
+ logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-8 h-8 bg-primary rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
24135
24135
  Typography,
24136
24136
  {
24137
24137
  variant: "small",
24138
- className: "text-white font-bold text-sm",
24138
+ className: "text-primary-foreground font-bold text-sm",
24139
24139
  as: "span",
24140
24140
  children: appName.charAt(0).toUpperCase()
24141
24141
  }
@@ -24214,11 +24214,11 @@ var init_DashboardLayout = __esm({
24214
24214
  className: "hidden @md/dashboard:flex items-center gap-1 overflow-x-auto",
24215
24215
  children: [
24216
24216
  /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Link, { to: "/", className: "flex items-center gap-2 mr-3 shrink-0", children: [
24217
- logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-7 h-7 bg-primary-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
24217
+ logo || /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-7 h-7 bg-primary rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(
24218
24218
  Typography,
24219
24219
  {
24220
24220
  variant: "small",
24221
- className: "text-white font-bold text-xs",
24221
+ className: "text-primary-foreground font-bold text-xs",
24222
24222
  as: "span",
24223
24223
  children: appName.charAt(0).toUpperCase()
24224
24224
  }
@@ -24278,8 +24278,8 @@ var init_DashboardLayout = __esm({
24278
24278
  {
24279
24279
  as: "span",
24280
24280
  className: cn(
24281
- "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",
24282
- action.variant === "danger" ? "bg-error" : action.variant === "primary" ? "bg-primary" : "bg-foreground"
24281
+ "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",
24282
+ action.variant === "danger" ? "bg-error text-error-foreground" : action.variant === "primary" ? "bg-primary text-primary-foreground" : "bg-foreground text-background"
24283
24283
  ),
24284
24284
  children: action.badge
24285
24285
  }
@@ -24301,7 +24301,7 @@ var init_DashboardLayout = __esm({
24301
24301
  Box,
24302
24302
  {
24303
24303
  as: "span",
24304
- 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",
24304
+ 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",
24305
24305
  children: unreadCount > 99 ? "99+" : unreadCount
24306
24306
  }
24307
24307
  )
@@ -24584,7 +24584,7 @@ function SubMenu({
24584
24584
  ),
24585
24585
  children: [
24586
24586
  item.icon && (typeof item.icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: item.icon, size: "sm", className: "flex-shrink-0" }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon: item.icon, size: "sm", className: "flex-shrink-0" })),
24587
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: cn("flex-1", isDanger && "text-red-600"), children: item.label }),
24587
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: cn("flex-1", isDanger && "text-error"), children: item.label }),
24588
24588
  item.badge !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-xs font-medium", children: item.badge })
24589
24589
  ]
24590
24590
  },
@@ -24641,7 +24641,7 @@ function MenuItemRow({
24641
24641
  Typography,
24642
24642
  {
24643
24643
  variant: "small",
24644
- className: cn("flex-1", isDanger && "text-red-600"),
24644
+ className: cn("flex-1", isDanger && "text-error"),
24645
24645
  children: item.label
24646
24646
  }
24647
24647
  ),
@@ -25409,20 +25409,24 @@ function DataGrid({
25409
25409
  const bodyFields = fieldDefs.filter((f3) => f3 !== titleField && !badgeFields.includes(f3));
25410
25410
  const primaryActions = actionDefs.filter((a) => a.variant !== "danger");
25411
25411
  const dangerActions = actionDefs.filter((a) => a.variant === "danger");
25412
- const handleActionClick = (action, itemData) => (e) => {
25413
- e.stopPropagation();
25414
- const payload = {
25415
- id: itemData.id,
25416
- row: itemData
25417
- };
25418
- eventBus.emit(`UI:${action.event}`, payload);
25412
+ const fireAction = (action, itemData) => {
25419
25413
  if (action.navigatesTo) {
25420
25414
  const url = action.navigatesTo.replace(
25421
25415
  /\{\{row\.(\w+(?:\.\w+)*)\}\}/g,
25422
25416
  (_, field) => String(itemData[field] ?? "")
25423
25417
  );
25424
- eventBus.emit("UI:NAVIGATE", { url });
25418
+ eventBus.emit("UI:NAVIGATE", { url, row: itemData });
25419
+ return;
25425
25420
  }
25421
+ const payload = {
25422
+ id: itemData.id,
25423
+ row: itemData
25424
+ };
25425
+ eventBus.emit(`UI:${action.event}`, payload);
25426
+ };
25427
+ const handleActionClick = (action, itemData) => (e) => {
25428
+ e.stopPropagation();
25429
+ fireAction(action, itemData);
25426
25430
  };
25427
25431
  const hasRenderProp = typeof children === "function";
25428
25432
  React91.useEffect(() => {
@@ -25524,10 +25528,7 @@ function DataGrid({
25524
25528
  label: action.label,
25525
25529
  icon: action.icon,
25526
25530
  event: action.event,
25527
- onClick: () => eventBus.emit(`UI:${action.event}`, {
25528
- id: itemData.id,
25529
- row: itemData
25530
- })
25531
+ onClick: () => fireAction(action, itemData)
25531
25532
  }))
25532
25533
  }
25533
25534
  )
@@ -25580,13 +25581,13 @@ function DataGrid({
25580
25581
  }
25581
25582
  ),
25582
25583
  /* @__PURE__ */ jsxRuntime.jsxs(VStack, { gap: "xs", className: "flex-1 min-w-0", children: [
25583
- titleValue !== void 0 && titleValue !== null && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", className: "items-center", children: [
25584
+ titleValue !== void 0 && titleValue !== null && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", className: "items-center min-w-0", children: [
25584
25585
  titleField?.icon && renderIconInput(titleField.icon, { size: "sm", className: "text-primary flex-shrink-0" }),
25585
25586
  /* @__PURE__ */ jsxRuntime.jsx(
25586
25587
  Typography,
25587
25588
  {
25588
25589
  variant: titleField?.variant === "h3" ? "h3" : "h4",
25589
- className: "font-semibold truncate",
25590
+ className: "font-semibold truncate min-w-0",
25590
25591
  children: String(titleValue)
25591
25592
  }
25592
25593
  )
@@ -25644,7 +25645,7 @@ function DataGrid({
25644
25645
  )
25645
25646
  ] }, field.name);
25646
25647
  }) }) }),
25647
- primaryActions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-4 py-3 mt-auto border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", className: "justify-end", children: [
25648
+ primaryActions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-4 py-3 mt-auto border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", className: "justify-end flex-wrap", children: [
25648
25649
  (maxInlineActions != null ? primaryActions.slice(0, maxInlineActions) : primaryActions).map((action, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
25649
25650
  Button,
25650
25651
  {
@@ -25669,10 +25670,7 @@ function DataGrid({
25669
25670
  label: action.label,
25670
25671
  icon: action.icon,
25671
25672
  event: action.event,
25672
- onClick: () => eventBus.emit(`UI:${action.event}`, {
25673
- id: itemData.id,
25674
- row: itemData
25675
- })
25673
+ onClick: () => fireAction(action, itemData)
25676
25674
  }))
25677
25675
  }
25678
25676
  )
@@ -27599,8 +27597,8 @@ var init_RelationSelect = __esm({
27599
27597
  disabled,
27600
27598
  className: cn(
27601
27599
  "w-full justify-between font-normal",
27602
- error && "border-red-300 focus:border-red-500 focus:ring-red-500",
27603
- isOpen && "ring-2 ring-primary-500 border-primary-500"
27600
+ error && "border-error/50 focus:border-error focus:ring-error",
27601
+ isOpen && "ring-2 ring-primary border-primary"
27604
27602
  ),
27605
27603
  children: [
27606
27604
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -27680,7 +27678,7 @@ var init_RelationSelect = __esm({
27680
27678
  paddingY: "sm",
27681
27679
  className: cn(
27682
27680
  "text-left text-sm hover:bg-muted focus:outline-none focus:bg-muted",
27683
- option.value === value && "bg-primary-50 text-primary-700",
27681
+ option.value === value && "bg-primary/10 text-primary",
27684
27682
  option.disabled && "opacity-50 cursor-not-allowed"
27685
27683
  ),
27686
27684
  onClick: () => handleSelect(option),
@@ -27837,7 +27835,7 @@ var init_SidePanel = __esm({
27837
27835
  showOverlay && /* @__PURE__ */ jsxRuntime.jsx(Presence, { show: isOpen, animation: "overlay", children: /* @__PURE__ */ jsxRuntime.jsx(
27838
27836
  Box,
27839
27837
  {
27840
- className: "fixed inset-0 bg-white/80 backdrop-blur-sm z-40 lg:hidden",
27838
+ className: "fixed inset-0 bg-background/80 backdrop-blur-sm z-40 lg:hidden",
27841
27839
  onClick: handleClose
27842
27840
  }
27843
27841
  ) }),
@@ -28204,7 +28202,7 @@ var init_WizardNavigation = __esm({
28204
28202
  /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "chevron-left", size: "sm" }),
28205
28203
  resolvedBackLabel
28206
28204
  ] }) : /* @__PURE__ */ jsxRuntime.jsx(Box, {}),
28207
- /* @__PURE__ */ jsxRuntime.jsx(HStack, { align: "center", gap: "sm", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-neutral-500", children: t("wizard.stepOf", { current: String(currentStep + 1), total: String(totalSteps) }) }) }),
28205
+ /* @__PURE__ */ jsxRuntime.jsx(HStack, { align: "center", gap: "sm", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-muted-foreground", children: t("wizard.stepOf", { current: String(currentStep + 1), total: String(totalSteps) }) }) }),
28208
28206
  isLastStep && showComplete ? /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "primary", onClick: handleComplete, disabled: !isValid, children: resolvedCompleteLabel }) : showNext ? /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "primary", onClick: handleNext, disabled: !isValid, children: [
28209
28207
  resolvedNextLabel,
28210
28208
  /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "chevron-right", size: "sm" })
@@ -30361,6 +30359,7 @@ var init_Lightbox = __esm({
30361
30359
  {
30362
30360
  className: cn(
30363
30361
  "fixed inset-0 z-50 flex items-center justify-center",
30362
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: lightbox scrim behind images
30364
30363
  "bg-black bg-opacity-90",
30365
30364
  className
30366
30365
  ),
@@ -30383,7 +30382,7 @@ var init_Lightbox = __esm({
30383
30382
  "p-2 rounded-full",
30384
30383
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
30385
30384
  "hover:bg-opacity-70 transition-opacity",
30386
- "focus:outline-none focus:ring-2 focus:ring-white"
30385
+ "focus:outline-none focus:ring-2 focus:ring-ring"
30387
30386
  ),
30388
30387
  "aria-label": t("aria.closeModal"),
30389
30388
  children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "x", className: "w-6 h-6" })
@@ -30402,7 +30401,7 @@ var init_Lightbox = __esm({
30402
30401
  "p-2 rounded-full",
30403
30402
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
30404
30403
  "hover:bg-opacity-70 transition-opacity",
30405
- "focus:outline-none focus:ring-2 focus:ring-white"
30404
+ "focus:outline-none focus:ring-2 focus:ring-ring"
30406
30405
  ),
30407
30406
  "aria-label": t("aria.previousImage"),
30408
30407
  children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "chevron-left", className: "w-8 h-8" })
@@ -30439,7 +30438,7 @@ var init_Lightbox = __esm({
30439
30438
  "p-2 rounded-full",
30440
30439
  "text-[var(--color-foreground)] bg-[var(--color-card)]",
30441
30440
  "hover:bg-opacity-70 transition-opacity",
30442
- "focus:outline-none focus:ring-2 focus:ring-white"
30441
+ "focus:outline-none focus:ring-2 focus:ring-ring"
30443
30442
  ),
30444
30443
  "aria-label": t("aria.nextImage"),
30445
30444
  children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "chevron-right", className: "w-8 h-8" })
@@ -30659,7 +30658,7 @@ function TableView({
30659
30658
  col.key
30660
30659
  );
30661
30660
  }),
30662
- hasActions && /* @__PURE__ */ jsxRuntime.jsx(Box, { "aria-hidden": true })
30661
+ hasActions && /* @__PURE__ */ jsxRuntime.jsx(Box, { "aria-hidden": true, className: "sticky right-0 bg-[var(--color-surface-subtle)]" })
30663
30662
  ]
30664
30663
  }
30665
30664
  );
@@ -30703,41 +30702,54 @@ function TableView({
30703
30702
  }
30704
30703
  return /* @__PURE__ */ jsxRuntime.jsx(Box, { role: "cell", className: cellBase, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: formatCell(raw, col.format) }) }, col.key);
30705
30704
  }),
30706
- itemActions && itemActions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", className: "justify-end flex-shrink-0 opacity-60 group-hover:opacity-100 transition-opacity", children: [
30707
- (maxInlineActions != null ? itemActions.slice(0, maxInlineActions) : itemActions).map((action, i) => /* @__PURE__ */ jsxRuntime.jsxs(
30708
- Button,
30709
- {
30710
- variant: action.variant ?? "ghost",
30711
- size: "sm",
30712
- onClick: handleActionClick(action, row),
30713
- "data-testid": `action-${action.event}`,
30714
- "data-row-id": String(row.id),
30715
- className: cn(action.variant === "danger" && "text-error hover:bg-error/10"),
30716
- children: [
30717
- action.icon && renderIconInput3(action.icon, { size: "xs", className: "mr-1" }),
30718
- action.label
30719
- ]
30720
- },
30721
- i
30722
- )),
30723
- maxInlineActions != null && itemActions.length > maxInlineActions && /* @__PURE__ */ jsxRuntime.jsx(
30724
- Menu,
30725
- {
30726
- position: "bottom-end",
30727
- trigger: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
30728
- items: itemActions.slice(maxInlineActions).map((action) => ({
30729
- label: action.label,
30730
- icon: action.icon,
30731
- event: action.event,
30732
- variant: action.variant === "danger" ? "danger" : "default",
30733
- onClick: () => eventBus.emit(`UI:${action.event}`, {
30734
- id: row.id,
30735
- row
30736
- })
30737
- }))
30738
- }
30739
- )
30740
- ] })
30705
+ itemActions && itemActions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
30706
+ HStack,
30707
+ {
30708
+ gap: "xs",
30709
+ className: cn(
30710
+ // Pinned: the fixed column tracks routinely overflow the caller's
30711
+ // scroll container, which used to leave the actions off-screen.
30712
+ // Opaque so scrolled cells pass underneath it.
30713
+ "justify-end flex-shrink-0 sticky right-0 z-[1] transition-colors",
30714
+ lk.striped && index % 2 === 1 ? "bg-[var(--color-surface-subtle)]" : "bg-[var(--color-card)] group-hover:bg-[var(--color-surface-subtle)]"
30715
+ ),
30716
+ children: [
30717
+ (maxInlineActions != null ? itemActions.slice(0, maxInlineActions) : itemActions).map((action, i) => /* @__PURE__ */ jsxRuntime.jsxs(
30718
+ Button,
30719
+ {
30720
+ variant: action.variant ?? "ghost",
30721
+ size: "sm",
30722
+ onClick: handleActionClick(action, row),
30723
+ "data-testid": `action-${action.event}`,
30724
+ "data-row-id": String(row.id),
30725
+ className: cn(action.variant === "danger" && "text-error hover:bg-error/10"),
30726
+ children: [
30727
+ action.icon && renderIconInput3(action.icon, { size: "xs", className: "mr-1" }),
30728
+ action.label
30729
+ ]
30730
+ },
30731
+ i
30732
+ )),
30733
+ maxInlineActions != null && itemActions.length > maxInlineActions && /* @__PURE__ */ jsxRuntime.jsx(
30734
+ Menu,
30735
+ {
30736
+ position: "bottom-end",
30737
+ trigger: /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "ghost", size: "sm", "aria-label": t("common.actions"), "data-testid": "action-overflow", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "more-horizontal", size: "xs" }) }),
30738
+ items: itemActions.slice(maxInlineActions).map((action) => ({
30739
+ label: action.label,
30740
+ icon: action.icon,
30741
+ event: action.event,
30742
+ variant: action.variant === "danger" ? "danger" : "default",
30743
+ onClick: () => eventBus.emit(`UI:${action.event}`, {
30744
+ id: row.id,
30745
+ row
30746
+ })
30747
+ }))
30748
+ }
30749
+ )
30750
+ ]
30751
+ }
30752
+ )
30741
30753
  ]
30742
30754
  }
30743
30755
  );
@@ -33512,6 +33524,7 @@ var init_QrScanner = __esm({
33512
33524
  overflow: "hidden",
33513
33525
  rounded: "sm",
33514
33526
  className: cn(
33527
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
33515
33528
  "bg-black",
33516
33529
  "aspect-square w-full max-w-md",
33517
33530
  className
@@ -33576,7 +33589,9 @@ var init_QrScanner = __esm({
33576
33589
  type: "button",
33577
33590
  onClick: togglePause,
33578
33591
  className: cn(
33592
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
33579
33593
  "rounded-full bg-black bg-opacity-60 p-2 text-white",
33594
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
33580
33595
  "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
33581
33596
  ),
33582
33597
  "aria-label": isPaused ? t("qrScanner.resumeScanning") : t("qrScanner.pauseScanning"),
@@ -33589,7 +33604,9 @@ var init_QrScanner = __esm({
33589
33604
  type: "button",
33590
33605
  onClick: toggleFacing,
33591
33606
  className: cn(
33607
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
33592
33608
  "rounded-full bg-black bg-opacity-60 p-2 text-white",
33609
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
33593
33610
  "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
33594
33611
  ),
33595
33612
  "aria-label": currentFacing === "environment" ? t("qrScanner.switchToFrontCamera") : t("qrScanner.switchToRearCamera"),
@@ -33602,7 +33619,9 @@ var init_QrScanner = __esm({
33602
33619
  type: "button",
33603
33620
  onClick: handleMockScan,
33604
33621
  className: cn(
33622
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
33605
33623
  "rounded-full bg-black bg-opacity-60 px-3 py-2 text-xs text-white",
33624
+ // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: always over a dark scrim
33606
33625
  "hover:bg-opacity-80 focus:outline-none focus:ring-2 focus:ring-white"
33607
33626
  ),
33608
33627
  "aria-label": t("aria.mockScanDev"),
@@ -38419,19 +38438,19 @@ var init_ReflectionBlock = __esm({
38419
38438
  "div",
38420
38439
  {
38421
38440
  className: cn(
38422
- "my-6 border-l-4 border-amber-400 bg-amber-50 dark:bg-amber-900/20 rounded-r-lg p-4",
38441
+ "my-6 border-l-4 border-warning bg-warning/10 rounded-r-lg p-4",
38423
38442
  className
38424
38443
  ),
38425
38444
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
38426
- /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.PauseCircle, { className: "text-amber-600 dark:text-amber-400 flex-shrink-0 mt-1", size: 20 }),
38445
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.PauseCircle, { className: "text-warning flex-shrink-0 mt-1", size: 20 }),
38427
38446
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
38428
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium text-amber-900 dark:text-amber-100 mb-2", children: "Pause & Reflect" }),
38429
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-gray-700 dark:text-gray-300 text-sm mb-3", children: prompt }),
38447
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium text-warning mb-2", children: "Pause & Reflect" }),
38448
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-foreground text-sm mb-3", children: prompt }),
38430
38449
  isExpanded ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
38431
38450
  /* @__PURE__ */ jsxRuntime.jsx(
38432
38451
  "textarea",
38433
38452
  {
38434
- 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",
38453
+ className: "w-full p-2 border border-input rounded text-sm bg-card text-foreground focus:ring-2 focus:ring-ring focus:border-transparent",
38435
38454
  placeholder: "Your thoughts...",
38436
38455
  value: note,
38437
38456
  onChange: (e) => setNote(e.target.value),
@@ -38442,7 +38461,7 @@ var init_ReflectionBlock = __esm({
38442
38461
  "button",
38443
38462
  {
38444
38463
  onClick: handleSave,
38445
- className: "mt-2 text-sm px-3 py-1 bg-amber-600 text-white rounded hover:bg-amber-700 transition-colors",
38464
+ className: "mt-2 text-sm px-3 py-1 bg-warning text-warning-foreground rounded hover:opacity-90 transition-colors",
38446
38465
  children: "Save & Continue"
38447
38466
  }
38448
38467
  )
@@ -38450,7 +38469,7 @@ var init_ReflectionBlock = __esm({
38450
38469
  "button",
38451
38470
  {
38452
38471
  onClick: () => setIsExpanded(true),
38453
- className: "text-sm text-amber-600 dark:text-amber-400 hover:underline",
38472
+ className: "text-sm text-warning hover:underline",
38454
38473
  children: savedNote ? "\u2713 Answered \xB7 Edit" : "Answer this question"
38455
38474
  }
38456
38475
  )
@@ -38736,7 +38755,7 @@ function DataTable({
38736
38755
  )),
38737
38756
  rowActions && /* @__PURE__ */ jsxRuntime.jsx("th", { className: "w-12 px-4 py-3" })
38738
38757
  ] }) }),
38739
- /* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-y divide-gray-200 dark:divide-gray-700", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx(
38758
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-y divide-border", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx(
38740
38759
  "td",
38741
38760
  {
38742
38761
  colSpan: normalizedColumns.length + (selectable ? 1 : 0) + (rowActions ? 1 : 0),
@@ -39056,6 +39075,16 @@ function normalizeFieldDefs(fields) {
39056
39075
  return String(f3);
39057
39076
  });
39058
39077
  }
39078
+ function buildFieldLabelMap(fields) {
39079
+ const map = {};
39080
+ if (!fields) return map;
39081
+ for (const f3 of fields) {
39082
+ if (typeof f3 === "object" && "key" in f3 && f3.header !== void 0 && f3.header !== "") {
39083
+ map[f3.key] = f3.header;
39084
+ }
39085
+ }
39086
+ return map;
39087
+ }
39059
39088
  function buildFieldTypeMap(fields) {
39060
39089
  const map = {};
39061
39090
  if (!fields) return map;
@@ -39107,7 +39136,9 @@ var init_DetailPanel = __esm({
39107
39136
  };
39108
39137
  const effectiveFieldNames = isFieldDefArray(propFields) ? normalizeFieldDefs(propFields) : fieldNames;
39109
39138
  const fieldTypeMap = isFieldDefArray(propFields) ? buildFieldTypeMap(propFields) : {};
39110
- React91.useCallback(
39139
+ const fieldLabelMap = isFieldDefArray(propFields) ? buildFieldLabelMap(propFields) : {};
39140
+ const labelFor = (field) => fieldLabelMap[field] ?? formatFieldLabel(field);
39141
+ const handleActionClick = React91.useCallback(
39111
39142
  (action, data2) => {
39112
39143
  if (action.navigatesTo) {
39113
39144
  const url = action.navigatesTo.replace(
@@ -39142,7 +39173,7 @@ var init_DetailPanel = __esm({
39142
39173
  if (typeof field === "string") {
39143
39174
  const value = getNestedValue(normalizedData, field);
39144
39175
  return {
39145
- label: formatFieldLabel(field),
39176
+ label: labelFor(field),
39146
39177
  value: formatFieldValue(value, field),
39147
39178
  icon: getFieldIcon(field)
39148
39179
  };
@@ -39153,7 +39184,10 @@ var init_DetailPanel = __esm({
39153
39184
  }
39154
39185
  if (normalizedData && effectiveFieldNames) {
39155
39186
  const primaryField = effectiveFieldNames[0];
39156
- if (!title && primaryField && normalizedData[primaryField]) {
39187
+ const titleDerivedFromPrimary = Boolean(
39188
+ !title && primaryField && normalizedData[primaryField]
39189
+ );
39190
+ if (titleDerivedFromPrimary) {
39157
39191
  title = String(normalizedData[primaryField]);
39158
39192
  }
39159
39193
  const statusFields = effectiveFieldNames.filter(
@@ -39172,16 +39206,16 @@ var init_DetailPanel = __esm({
39172
39206
  (f3) => f3.toLowerCase().includes("description") || f3.toLowerCase().includes("note")
39173
39207
  );
39174
39208
  const otherFields = effectiveFieldNames.filter(
39175
- (f3) => f3 !== primaryField && !statusFields.includes(f3) && !progressFields.includes(f3) && !metricFields.includes(f3) && !dateFields.includes(f3) && !descriptionFields.includes(f3)
39209
+ (f3) => (!titleDerivedFromPrimary || f3 !== primaryField) && !statusFields.includes(f3) && !progressFields.includes(f3) && !metricFields.includes(f3) && !dateFields.includes(f3) && !descriptionFields.includes(f3)
39176
39210
  );
39177
39211
  sections = [];
39178
39212
  if (statusFields.length > 0 || otherFields.length > 0) {
39179
39213
  const overviewFields = [];
39180
- [...statusFields, ...otherFields.slice(0, 3)].forEach((field) => {
39214
+ [...statusFields, ...otherFields].forEach((field) => {
39181
39215
  const value = getNestedValue(normalizedData, field);
39182
39216
  if (value !== void 0 && value !== null) {
39183
39217
  overviewFields.push({
39184
- label: formatFieldLabel(field),
39218
+ label: labelFor(field),
39185
39219
  value: renderRichFieldValue(value, field, fieldTypeMap[field]),
39186
39220
  icon: getFieldIcon(field)
39187
39221
  });
@@ -39197,7 +39231,7 @@ var init_DetailPanel = __esm({
39197
39231
  const value = getNestedValue(normalizedData, field);
39198
39232
  if (value !== void 0 && value !== null) {
39199
39233
  metricsFields.push({
39200
- label: formatFieldLabel(field),
39234
+ label: labelFor(field),
39201
39235
  value: renderRichFieldValue(value, field, fieldTypeMap[field]),
39202
39236
  icon: getFieldIcon(field)
39203
39237
  });
@@ -39213,7 +39247,7 @@ var init_DetailPanel = __esm({
39213
39247
  const value = getNestedValue(normalizedData, field);
39214
39248
  if (value !== void 0 && value !== null) {
39215
39249
  timelineFields.push({
39216
- label: formatFieldLabel(field),
39250
+ label: labelFor(field),
39217
39251
  value: renderRichFieldValue(value, field, fieldTypeMap[field]),
39218
39252
  icon: getFieldIcon(field)
39219
39253
  });
@@ -39229,7 +39263,7 @@ var init_DetailPanel = __esm({
39229
39263
  const value = getNestedValue(normalizedData, field);
39230
39264
  if (value !== void 0 && value !== null) {
39231
39265
  descFields.push({
39232
- label: formatFieldLabel(field),
39266
+ label: labelFor(field),
39233
39267
  value: renderRichFieldValue(value, field, fieldTypeMap[field]),
39234
39268
  icon: getFieldIcon(field)
39235
39269
  });
@@ -39277,7 +39311,7 @@ var init_DetailPanel = __esm({
39277
39311
  if (typeof field === "string") {
39278
39312
  const value = normalizedData ? getNestedValue(normalizedData, field) : void 0;
39279
39313
  allFields.push({
39280
- label: formatFieldLabel(field),
39314
+ label: labelFor(field),
39281
39315
  value: renderRichFieldValue(value, field, fieldTypeMap[field]),
39282
39316
  icon: getFieldIcon(field)
39283
39317
  });
@@ -39299,8 +39333,9 @@ var init_DetailPanel = __esm({
39299
39333
  {
39300
39334
  variant: action.variant || "secondary",
39301
39335
  size: "sm",
39302
- action: action.event,
39336
+ action: action.navigatesTo ? void 0 : action.event,
39303
39337
  actionPayload: { row: normalizedData },
39338
+ onClick: action.navigatesTo ? () => handleActionClick(action, normalizedData) : void 0,
39304
39339
  icon: action.icon,
39305
39340
  "data-testid": action.event ? `action-${action.event}` : void 0,
39306
39341
  "data-row-id": normalizedData?.id !== void 0 ? String(normalizedData.id) : void 0,
@@ -41343,8 +41378,9 @@ var init_MediaGallery = __esm({
41343
41378
  )
41344
41379
  }
41345
41380
  ),
41346
- item.caption && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute bottom-0 left-0 right-0 p-2 bg-gradient-to-t from-black/60 to-transparent", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-white truncate", children: item.caption }) }),
41347
- selectable && isSelected && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute top-2 right-2 w-5 h-5 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-white text-xs", children: "\u2713" }) })
41381
+ item.caption && // eslint-disable-next-line almadar/no-hardcoded-colors -- media overlay: caption scrim over image
41382
+ /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute bottom-0 left-0 right-0 p-2 bg-gradient-to-t from-black/60 to-transparent", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-white truncate", children: item.caption }) }),
41383
+ selectable && isSelected && /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "absolute top-2 right-2 w-5 h-5 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "caption", className: "text-primary-foreground text-xs", children: "\u2713" }) })
41348
41384
  ]
41349
41385
  },
41350
41386
  item.id
@@ -41373,7 +41409,7 @@ var init_MediaGallery = __esm({
41373
41409
  size: "sm",
41374
41410
  icon: LucideIcons2.X,
41375
41411
  action: "LIGHTBOX_CLOSE",
41376
- className: "text-white hover:bg-white/20"
41412
+ className: "text-foreground hover:bg-muted/50"
41377
41413
  }
41378
41414
  ) }),
41379
41415
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -41384,7 +41420,7 @@ var init_MediaGallery = __esm({
41384
41420
  className: "max-w-full max-h-[80vh] object-contain rounded-md"
41385
41421
  }
41386
41422
  ),
41387
- lightboxItem.caption && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-white mt-3 text-center", children: lightboxItem.caption })
41423
+ lightboxItem.caption && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", className: "text-foreground mt-3 text-center", children: lightboxItem.caption })
41388
41424
  ]
41389
41425
  }
41390
41426
  )
@@ -41845,7 +41881,7 @@ function WalkMinimap() {
41845
41881
  {
41846
41882
  variant,
41847
41883
  size: "sm",
41848
- className: `flex-shrink-0 text-[9px] ${isActive ? "ring-1 ring-cyan-400" : ""}`,
41884
+ className: `flex-shrink-0 text-[9px] ${isActive ? "ring-1 ring-info" : ""}`,
41849
41885
  children: [
41850
41886
  isDone ? "\u2713" : isActive ? "\u25CF" : "\u25CB",
41851
41887
  " ",
@@ -41986,13 +42022,13 @@ function WalkMinimap() {
41986
42022
  })
41987
42023
  ] }) }),
41988
42024
  /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "px-2 py-1 border-t border-border", children: /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "sm", className: "items-center justify-between", children: [
41989
- /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-green-500", children: [
42025
+ /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-success", children: [
41990
42026
  "Engine: ",
41991
42027
  engineCount,
41992
42028
  "/",
41993
42029
  totalTransitions
41994
42030
  ] }),
41995
- domCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-cyan-500", children: [
42031
+ domCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "caption", className: "text-xs font-mono text-info", children: [
41996
42032
  "DOM: ",
41997
42033
  domCount
41998
42034
  ] }),
@@ -42025,13 +42061,13 @@ function TraitsTab({ traits: traits2 }) {
42025
42061
  const accordionItems = traits2.map((trait) => ({
42026
42062
  id: trait.id,
42027
42063
  header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
42028
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-purple-600 dark:text-purple-400", children: trait.name }),
42064
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-primary", children: trait.name }),
42029
42065
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "success", size: "sm", children: trait.currentState }),
42030
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
42066
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: t("debug.transitionsCount", { count: trait.transitionCount }) })
42031
42067
  ] }),
42032
42068
  content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
42033
42069
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
42034
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.states") }),
42070
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.states") }),
42035
42071
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: trait.states.map((state) => /* @__PURE__ */ jsxRuntime.jsx(
42036
42072
  Badge,
42037
42073
  {
@@ -42043,18 +42079,18 @@ function TraitsTab({ traits: traits2 }) {
42043
42079
  )) })
42044
42080
  ] }),
42045
42081
  trait.transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
42046
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.transitions") }),
42082
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.transitions") }),
42047
42083
  /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.transitions.map((t2, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono", children: [
42048
42084
  t2.from,
42049
42085
  " \u2192 ",
42050
42086
  t2.to,
42051
42087
  " ",
42052
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-gray-500", children: [
42088
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
42053
42089
  "(",
42054
42090
  t2.event,
42055
42091
  ")"
42056
42092
  ] }),
42057
- t2.guard && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-amber-500", children: [
42093
+ t2.guard && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-warning", children: [
42058
42094
  " [",
42059
42095
  t2.guard,
42060
42096
  "]"
@@ -42062,7 +42098,7 @@ function TraitsTab({ traits: traits2 }) {
42062
42098
  ] }, i)) })
42063
42099
  ] }),
42064
42100
  trait.guards.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
42065
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.guards") }),
42101
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.guards") }),
42066
42102
  /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: trait.guards.map((g, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
42067
42103
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: g.name }),
42068
42104
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: g.lastResult === true ? "success" : g.lastResult === false ? "danger" : "default", size: "sm", children: g.lastResult === void 0 ? "?" : g.lastResult ? "\u2713" : "\u2717" })
@@ -42105,11 +42141,11 @@ function TicksTab({ ticks: ticks2 }) {
42105
42141
  };
42106
42142
  const TickCard = ({ tick, active }) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: `p-3 ${!active ? "opacity-50" : ""}`, children: [
42107
42143
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-2", children: [
42108
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `w-2 h-2 rounded-full ${active ? "bg-green-500" : "bg-gray-400"}` }),
42109
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-amber-600 dark:text-amber-400", children: tick.name }),
42110
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: tick.traitName })
42144
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `w-2 h-2 rounded-full ${active ? "bg-success" : "bg-muted-foreground"}` }),
42145
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-warning", children: tick.name }),
42146
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: tick.traitName })
42111
42147
  ] }),
42112
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 text-xs text-gray-500", children: [
42148
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 text-xs text-muted-foreground", children: [
42113
42149
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
42114
42150
  tick.interval,
42115
42151
  "ms"
@@ -42132,7 +42168,7 @@ function TicksTab({ ticks: ticks2 }) {
42132
42168
  ] });
42133
42169
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--ticks", children: [
42134
42170
  activeTicks.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
42135
- /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: [
42171
+ /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: [
42136
42172
  "Active (",
42137
42173
  activeTicks.length,
42138
42174
  ")"
@@ -42140,7 +42176,7 @@ function TicksTab({ ticks: ticks2 }) {
42140
42176
  /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "sm", children: activeTicks.map((tick) => /* @__PURE__ */ jsxRuntime.jsx(TickCard, { tick, active: true }, tick.id)) })
42141
42177
  ] }),
42142
42178
  inactiveTicks.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
42143
- /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", weight: "medium", className: "text-gray-400 mb-2", children: [
42179
+ /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: [
42144
42180
  "Inactive (",
42145
42181
  inactiveTicks.length,
42146
42182
  ")"
@@ -42188,33 +42224,33 @@ function EntitiesTab({ snapshot }) {
42188
42224
  id: `singleton-${name}`,
42189
42225
  header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
42190
42226
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", children: t("debug.singleton") }),
42191
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: name })
42227
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-info", children: name })
42192
42228
  ] }),
42193
- content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
42229
+ content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-muted-foreground bg-muted p-2 rounded overflow-auto max-h-40", children: JSON.stringify(data, null, 2) })
42194
42230
  }));
42195
42231
  const runtimeItems = runtimeEntities.slice(0, 20).map((entity) => ({
42196
42232
  id: entity.id,
42197
42233
  header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
42198
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-sky-600 dark:text-sky-400", children: entity.type }),
42199
- /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-gray-500", children: [
42234
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-info", children: entity.type }),
42235
+ /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground", children: [
42200
42236
  "#",
42201
42237
  entity.id.slice(0, 8)
42202
42238
  ] })
42203
42239
  ] }),
42204
- content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-40", children: JSON.stringify(entity.data, null, 2) })
42240
+ content: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-muted-foreground bg-muted p-2 rounded overflow-auto max-h-40", children: JSON.stringify(entity.data, null, 2) })
42205
42241
  }));
42206
42242
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--entities", children: [
42207
42243
  singletonItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
42208
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
42244
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.singletonsCount", { count: singletonItems.length }) }),
42209
42245
  /* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: singletonItems, multiple: true })
42210
42246
  ] }),
42211
42247
  runtimeItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
42212
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
42248
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.runtimeCount", { count: runtimeEntities.length }) }),
42213
42249
  /* @__PURE__ */ jsxRuntime.jsx(Accordion, { items: runtimeItems, multiple: true }),
42214
- runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
42250
+ runtimeEntities.length > 20 && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-center mt-2", children: t("debug.moreEntities", { count: runtimeEntities.length - 20 }) })
42215
42251
  ] }),
42216
42252
  persistentEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
42217
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-2", children: t("debug.persistent") }),
42253
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-2", children: t("debug.persistent") }),
42218
42254
  /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: persistentEntries.map(([type, info]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1", children: [
42219
42255
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: type }),
42220
42256
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: info.loaded ? "success" : "default", size: "sm", children: info.loaded ? t("debug.loadedCount", { count: info.count }) : t("debug.notLoaded") })
@@ -42299,7 +42335,7 @@ function EventFlowTab({ events: events2 }) {
42299
42335
  );
42300
42336
  })
42301
42337
  ] }),
42302
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 ml-auto cursor-pointer", children: [
42338
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-muted-foreground ml-auto cursor-pointer", children: [
42303
42339
  /* @__PURE__ */ jsxRuntime.jsx(
42304
42340
  Checkbox,
42305
42341
  {
@@ -42314,18 +42350,18 @@ function EventFlowTab({ events: events2 }) {
42314
42350
  "div",
42315
42351
  {
42316
42352
  ref: containerRef,
42317
- className: "max-h-64 overflow-y-auto space-y-1 bg-gray-50 dark:bg-gray-800 rounded p-2",
42353
+ className: "max-h-64 overflow-y-auto space-y-1 bg-muted rounded p-2",
42318
42354
  children: filteredEvents.slice(-100).map((event) => {
42319
42355
  const { variant, icon } = TYPE_BADGES[event.type] || { variant: "default", icon: "\u2022" };
42320
42356
  return /* @__PURE__ */ jsxRuntime.jsxs(
42321
42357
  "div",
42322
42358
  {
42323
- className: "flex items-start gap-2 text-xs py-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded px-1",
42359
+ className: "flex items-start gap-2 text-xs py-1 hover:bg-muted/50 rounded px-1",
42324
42360
  children: [
42325
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 font-mono min-w-[65px]", children: formatTime2(event.timestamp) }),
42361
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono min-w-[65px]", children: formatTime2(event.timestamp) }),
42326
42362
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: icon }),
42327
42363
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant, size: "sm", className: "min-w-[60px] justify-center", children: event.source }),
42328
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-600 dark:text-gray-400", children: event.message })
42364
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: event.message })
42329
42365
  ]
42330
42366
  },
42331
42367
  event.id
@@ -42389,21 +42425,21 @@ function GuardsPanel({ guards }) {
42389
42425
  id: guard.id,
42390
42426
  header: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full", children: [
42391
42427
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: guard.result ? "success" : "danger", size: "sm", children: guard.result ? "\u2713" : "\u2717" }),
42392
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-amber-600 dark:text-amber-400", children: guard.guardName }),
42393
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: guard.context.type === "transition" ? `${guard.context.transitionFrom} \u2192 ${guard.context.transitionTo}` : guard.context.tickName }),
42394
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: formatTime2(guard.timestamp) })
42428
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body", weight: "semibold", className: "text-warning", children: guard.guardName }),
42429
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: guard.context.type === "transition" ? `${guard.context.transitionFrom} \u2192 ${guard.context.transitionTo}` : guard.context.tickName }),
42430
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: formatTime2(guard.timestamp) })
42395
42431
  ] }),
42396
42432
  content: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
42397
42433
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
42398
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.expression") }),
42399
- /* @__PURE__ */ jsxRuntime.jsx("code", { className: "block mt-1 text-xs text-amber-600 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 px-2 py-1 rounded", children: guard.expression })
42434
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.expression") }),
42435
+ /* @__PURE__ */ jsxRuntime.jsx("code", { className: "block mt-1 text-xs text-warning bg-warning/10 px-2 py-1 rounded", children: guard.expression })
42400
42436
  ] }),
42401
42437
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
42402
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.inputs") }),
42403
- /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 text-xs text-gray-600 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-2 rounded overflow-auto max-h-24", children: JSON.stringify(guard.inputs, null, 2) })
42438
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.inputs") }),
42439
+ /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "mt-1 text-xs text-muted-foreground bg-muted p-2 rounded overflow-auto max-h-24", children: JSON.stringify(guard.inputs, null, 2) })
42404
42440
  ] }),
42405
42441
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
42406
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500", children: t("debug.trait") }),
42442
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground", children: t("debug.trait") }),
42407
42443
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", children: guard.context.traitName })
42408
42444
  ] })
42409
42445
  ] })
@@ -42459,7 +42495,7 @@ function VerificationTab({ checks, summary }) {
42459
42495
  (a, b) => (sortOrder[a.status] ?? 4) - (sortOrder[b.status] ?? 4)
42460
42496
  );
42461
42497
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--verification", children: [
42462
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3 p-2 bg-gray-50 dark:bg-gray-800 rounded", children: [
42498
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3 p-2 bg-muted rounded", children: [
42463
42499
  /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
42464
42500
  summary.passed,
42465
42501
  " passed"
@@ -42476,7 +42512,7 @@ function VerificationTab({ checks, summary }) {
42476
42512
  summary.pending,
42477
42513
  " pending"
42478
42514
  ] }),
42479
- /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-gray-500 ml-auto", children: [
42515
+ /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: [
42480
42516
  summary.totalChecks,
42481
42517
  " total checks"
42482
42518
  ] })
@@ -42486,12 +42522,12 @@ function VerificationTab({ checks, summary }) {
42486
42522
  return /* @__PURE__ */ jsxRuntime.jsxs(
42487
42523
  "div",
42488
42524
  {
42489
- className: "flex items-start gap-2 p-2 rounded hover:bg-gray-50 dark:hover:bg-gray-800",
42525
+ className: "flex items-start gap-2 p-2 rounded hover:bg-muted/50",
42490
42526
  children: [
42491
42527
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: config.variant, size: "sm", className: "min-w-[20px] justify-center mt-0.5", children: config.icon }),
42492
42528
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
42493
42529
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "break-words", children: check.label }),
42494
- check.details && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500 break-words", children: check.details })
42530
+ check.details && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground break-words", children: check.details })
42495
42531
  ] }),
42496
42532
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono text-xs shrink-0", children: new Date(check.updatedAt).toLocaleTimeString("en-US", {
42497
42533
  hour12: false,
@@ -42526,10 +42562,10 @@ var init_VerificationTab = __esm({
42526
42562
  function EffectBadge({ effect }) {
42527
42563
  const variant = EFFECT_STATUS_VARIANT[effect.status] || "default";
42528
42564
  const icon = effect.status === "executed" ? "\u2713" : effect.status === "failed" ? "\u2717" : "-";
42529
- return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 text-xs font-mono bg-gray-100 dark:bg-gray-700 rounded px-1.5 py-0.5", children: [
42565
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 text-xs font-mono bg-muted rounded px-1.5 py-0.5", children: [
42530
42566
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant, size: "sm", className: "!text-[9px] !px-1 !py-0", children: icon }),
42531
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-600 dark:text-gray-400", children: effect.type }),
42532
- effect.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-500 truncate max-w-[120px]", title: effect.error, children: effect.error })
42567
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: effect.type }),
42568
+ effect.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-error truncate max-w-[120px]", title: effect.error, children: effect.error })
42533
42569
  ] });
42534
42570
  }
42535
42571
  function TransitionTimeline({ transitions }) {
@@ -42564,8 +42600,8 @@ function TransitionTimeline({ transitions }) {
42564
42600
  const sorted = [...transitions].reverse();
42565
42601
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--timeline", children: [
42566
42602
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-2", children: [
42567
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
42568
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-gray-500 cursor-pointer", children: [
42603
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: t("debug.transitionsRecorded", { count: transitions.length }) }),
42604
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 text-xs text-muted-foreground cursor-pointer", children: [
42569
42605
  /* @__PURE__ */ jsxRuntime.jsx(
42570
42606
  Checkbox,
42571
42607
  {
@@ -42590,22 +42626,22 @@ function TransitionTimeline({ transitions }) {
42590
42626
  {
42591
42627
  className: `
42592
42628
  relative pl-6 pb-3 border-l-2 cursor-pointer
42593
- hover:bg-gray-50 dark:hover:bg-gray-800 rounded-r
42594
- ${hasFailedEffects ? "border-red-300 dark:border-red-700" : "border-gray-200 dark:border-gray-700"}
42629
+ hover:bg-muted/50 rounded-r
42630
+ ${hasFailedEffects ? "border-error" : "border-border"}
42595
42631
  `,
42596
42632
  onClick: () => setExpandedId(isExpanded ? null : trace.id),
42597
42633
  children: [
42598
42634
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: `
42599
42635
  absolute left-[-5px] top-1 w-2 h-2 rounded-full
42600
- ${hasFailedEffects ? "bg-red-500" : allPassed ? "bg-green-500" : "bg-gray-400"}
42636
+ ${hasFailedEffects ? "bg-error" : allPassed ? "bg-success" : "bg-muted-foreground"}
42601
42637
  ` }),
42602
42638
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-xs py-1 px-2", children: [
42603
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 font-mono min-w-[65px]", children: formatTime2(trace.timestamp) }),
42639
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono min-w-[65px]", children: formatTime2(trace.timestamp) }),
42604
42640
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "primary", size: "sm", className: "min-w-[60px] justify-center", children: trace.traitName }),
42605
- /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-gray-600 dark:text-gray-400", children: [
42641
+ /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-muted-foreground", children: [
42606
42642
  trace.from,
42607
42643
  " ",
42608
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-400", children: "\u2192" }),
42644
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/50", children: "\u2192" }),
42609
42645
  " ",
42610
42646
  trace.to
42611
42647
  ] }),
@@ -42622,9 +42658,9 @@ function TransitionTimeline({ transitions }) {
42622
42658
  ]
42623
42659
  }
42624
42660
  ),
42625
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
42661
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground ml-auto", children: t("debug.effectsCount", { count: trace.effects.length }) })
42626
42662
  ] }),
42627
- isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-gray-200 dark:border-gray-700 space-y-1", children: trace.effects.map((effect, eIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
42663
+ isExpanded && trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-2 mt-1 mb-2 pl-2 border-l border-border space-y-1", children: trace.effects.map((effect, eIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
42628
42664
  /* @__PURE__ */ jsxRuntime.jsx(EffectBadge, { effect }),
42629
42665
  effect.args.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground font-mono text-xs truncate max-w-[200px]", children: JSON.stringify(effect.args) }),
42630
42666
  effect.durationMs !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: [
@@ -42658,8 +42694,8 @@ var init_TransitionTimeline = __esm({
42658
42694
  }
42659
42695
  });
42660
42696
  function StatRow({ label, value, variant }) {
42661
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1.5 border-b border-gray-100 dark:border-gray-800 last:border-b-0", children: [
42662
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: label }),
42697
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between py-1.5 border-b border-border last:border-b-0", children: [
42698
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: label }),
42663
42699
  variant ? /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant, size: "sm", children: String(value) }) : /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "font-mono", children: String(value) })
42664
42700
  ] });
42665
42701
  }
@@ -42688,7 +42724,7 @@ function ServerBridgeTab({ bridge }) {
42688
42724
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "debug-tab debug-tab--bridge", children: /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "sm", children: [
42689
42725
  /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3", children: [
42690
42726
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
42691
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-green-500 animate-pulse" : "bg-red-500"}` }),
42727
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `w-3 h-3 rounded-full ${bridge.connected ? "bg-success animate-pulse" : "bg-error"}` }),
42692
42728
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "h6", children: bridge.connected ? t("debug.connected") : t("debug.disconnected") })
42693
42729
  ] }),
42694
42730
  /* @__PURE__ */ jsxRuntime.jsxs(Stack, { gap: "xs", children: [
@@ -42723,11 +42759,11 @@ function ServerBridgeTab({ bridge }) {
42723
42759
  )
42724
42760
  ] })
42725
42761
  ] }),
42726
- bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3 border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-950", children: [
42727
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-red-600 dark:text-red-400 mb-1", children: t("debug.lastError") }),
42728
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-red-500 font-mono break-all", children: bridge.lastError })
42762
+ bridge.lastError && /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "p-3 border-error/30 bg-error/10", children: [
42763
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "semibold", className: "text-error mb-1", children: t("debug.lastError") }),
42764
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-error font-mono break-all", children: bridge.lastError })
42729
42765
  ] }),
42730
- bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
42766
+ bridge.connected && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: t("debug.totalEventsProcessed", { count: bridge.eventsForwarded + bridge.eventsReceived }) }) })
42731
42767
  ] }) });
42732
42768
  }
42733
42769
  var init_ServerBridgeTab = __esm({
@@ -42853,7 +42889,7 @@ function EventDispatcherTab({ traits: traits2, schema }) {
42853
42889
  };
42854
42890
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "debug-tab debug-tab--dispatch", children: [
42855
42891
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
42856
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.activeStates") }),
42892
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.activeStates") }),
42857
42893
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: traits2.map((trait) => /* @__PURE__ */ jsxRuntime.jsxs(Badge, { variant: "success", size: "sm", children: [
42858
42894
  trait.name,
42859
42895
  ": ",
@@ -42861,8 +42897,8 @@ function EventDispatcherTab({ traits: traits2, schema }) {
42861
42897
  ] }, trait.id)) })
42862
42898
  ] }),
42863
42899
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
42864
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.availableEvents") }),
42865
- availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-400 italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
42900
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.availableEvents") }),
42901
+ availableEvents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground italic", children: t("debug.noTransitionsFromState") }) : /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: availableEvents.map(({ event, transitions }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
42866
42902
  /* @__PURE__ */ jsxRuntime.jsx(
42867
42903
  Button,
42868
42904
  {
@@ -42873,22 +42909,22 @@ function EventDispatcherTab({ traits: traits2, schema }) {
42873
42909
  children: event
42874
42910
  }
42875
42911
  ),
42876
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-gray-500", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
42912
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground", children: transitions.map((t2) => `${t2.from} -> ${t2.to}`).join(", ") }),
42877
42913
  transitions.some((tr) => tr.guard) && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", children: t("debug.guarded") })
42878
42914
  ] }, event)) })
42879
42915
  ] }),
42880
42916
  unavailableEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
42881
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
42917
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.otherEvents") }),
42882
42918
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
42883
42919
  ] }),
42884
42920
  log11.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
42885
- /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
42921
+ /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", weight: "medium", className: "text-muted-foreground mb-1", children: t("debug.recentTransitions") }),
42886
42922
  /* @__PURE__ */ jsxRuntime.jsx(Stack, { gap: "xs", children: log11.map((entry, i) => /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
42887
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-400", children: entry.traitName }),
42923
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: entry.traitName }),
42888
42924
  " ",
42889
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-500", children: entry.from }),
42925
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: entry.from }),
42890
42926
  " -> ",
42891
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-green-400", children: entry.to })
42927
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-success", children: entry.to })
42892
42928
  ] }, i)) })
42893
42929
  ] })
42894
42930
  ] });
@@ -42914,21 +42950,21 @@ var init_RuntimeDebugger = __esm({
42914
42950
  function ServerResponseRow({ sr }) {
42915
42951
  const { t } = hooks.useTranslate();
42916
42952
  const entityEntries = Object.entries(sr.dataEntities);
42917
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-purple-500/30 py-0.5 text-xs font-mono", children: [
42953
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-4 pl-2 border-l border-primary py-0.5 text-xs font-mono", children: [
42918
42954
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
42919
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-green-600 dark:text-green-400" : "text-red-600 dark:text-red-400", children: [
42955
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: sr.success ? "text-success" : "text-error", children: [
42920
42956
  sr.success ? "\u2713" : "\u2717",
42921
42957
  " ",
42922
42958
  t("debug.server")
42923
42959
  ] }),
42924
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-300", children: sr.orbitalName }),
42925
- sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-purple-500/15 text-purple-600 dark:text-purple-300", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
42926
- sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-blue-500/15 text-blue-300", children: [
42960
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: sr.orbitalName }),
42961
+ sr.clientEffects > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-primary/10 text-primary", children: t("debug.clientEffectsCount", { count: sr.clientEffects }) }),
42962
+ sr.emittedEvents.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-primary/10 text-primary", children: [
42927
42963
  t("debug.emitLabel"),
42928
42964
  " ",
42929
42965
  sr.emittedEvents.join(", ")
42930
42966
  ] }),
42931
- sr.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-red-500/15 text-red-600 dark:text-red-400 truncate max-w-[300px]", children: sr.error })
42967
+ sr.error && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "px-1 rounded bg-error/10 text-error truncate max-w-[300px]", children: sr.error })
42932
42968
  ] }),
42933
42969
  entityEntries.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1 mt-0.5", children: entityEntries.map(([name, count]) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "px-1 rounded bg-[var(--color-card)] text-foreground", children: [
42934
42970
  name,
@@ -42944,9 +42980,9 @@ function TransitionRow({ trace }) {
42944
42980
  if (isServerEntry && trace.serverResponse) {
42945
42981
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-0.5 border-b border-border last:border-0", children: [
42946
42982
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
42947
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-purple-500" }),
42983
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0 bg-primary" }),
42948
42984
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "warning", size: "sm", className: "flex-shrink-0", children: trace.event }),
42949
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400 flex-shrink-0", children: t("debug.serverResponse") })
42985
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary flex-shrink-0", children: t("debug.serverResponse") })
42950
42986
  ] }),
42951
42987
  /* @__PURE__ */ jsxRuntime.jsx(ServerResponseRow, { sr: trace.serverResponse })
42952
42988
  ] });
@@ -42955,7 +42991,7 @@ function TransitionRow({ trace }) {
42955
42991
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-2 text-xs font-mono", children: [
42956
42992
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
42957
42993
  "mt-1.5 w-1.5 h-1.5 rounded-full flex-shrink-0",
42958
- hasFailedEffects ? "bg-red-500" : "bg-green-500"
42994
+ hasFailedEffects ? "bg-error" : "bg-success"
42959
42995
  ) }),
42960
42996
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "info", size: "sm", className: "flex-shrink-0", children: trace.event }),
42961
42997
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground flex-shrink-0", children: trace.traitName }),
@@ -42969,7 +43005,7 @@ function TransitionRow({ trace }) {
42969
43005
  ] }),
42970
43006
  trace.effects.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1 ml-6 mt-0.5", children: trace.effects.map((eff, i) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn(
42971
43007
  "px-1 rounded text-xs",
42972
- 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"
43008
+ eff.status === "executed" ? "bg-success/10 text-success" : eff.status === "failed" ? "bg-error/10 text-error" : "bg-warning/10 text-warning"
42973
43009
  ), children: [
42974
43010
  eff.status === "executed" ? "\u2713" : eff.status === "failed" ? "\u2717" : "-",
42975
43011
  " ",
@@ -43003,7 +43039,7 @@ function VerifyModePanel({
43003
43039
  {
43004
43040
  className: cn(
43005
43041
  "runtime-debugger runtime-debugger--verify",
43006
- "flex flex-col bg-[var(--color-card)] text-[var(--color-foreground)] border-t-2 border-cyan-500",
43042
+ "flex flex-col bg-[var(--color-card)] text-[var(--color-foreground)] border-t-2 border-accent",
43007
43043
  hudBottom ? "" : "fixed bottom-0 left-0 right-0",
43008
43044
  className
43009
43045
  ),
@@ -43024,8 +43060,8 @@ function VerifyModePanel({
43024
43060
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/50 w-3", "aria-hidden": true, children: expanded ? "\u25BE" : "\u25B8" }),
43025
43061
  /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: failedChecks > 0 ? "danger" : "success", size: "sm", children: failedChecks > 0 ? t("debug.failCount", { count: failedChecks }) : t("debug.ok") }),
43026
43062
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground/70", children: t("debug.localCount", { count: localCount }) }),
43027
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-600 dark:text-purple-400", children: t("debug.serverCount", { count: serverCount }) }),
43028
- traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-cyan-600 dark:text-cyan-400 truncate max-w-[400px]", children: traitStates }),
43063
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: t("debug.serverCount", { count: serverCount }) }),
43064
+ traitStates && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-accent truncate max-w-[400px]", children: traitStates }),
43029
43065
  !expanded && transitions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto text-foreground/50", children: t("debug.transitionsCount", { count: transitions.length }) })
43030
43066
  ]
43031
43067
  }
@@ -43220,7 +43256,7 @@ function RuntimeDebugger({
43220
43256
  title: t("debug.openDebugger"),
43221
43257
  children: failedChecks > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative", children: [
43222
43258
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" }),
43223
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-red-500 rounded-full" })
43259
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-1 -right-2 w-2 h-2 bg-error rounded-full" })
43224
43260
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { children: "V" })
43225
43261
  }
43226
43262
  ) : /* @__PURE__ */ jsxRuntime.jsxs(Card, { className: "runtime-debugger__panel", children: [
@@ -43308,7 +43344,7 @@ var init_SegmentRenderer = __esm({
43308
43344
  "div",
43309
43345
  {
43310
43346
  className: cn(
43311
- "border border-gray-200 dark:border-gray-700 rounded-lg p-2 md:p-4 overflow-x-auto space-y-6",
43347
+ "border border-border rounded-lg p-2 md:p-4 overflow-x-auto space-y-6",
43312
43348
  containerClassName,
43313
43349
  className
43314
43350
  ),
@@ -48860,8 +48896,8 @@ var SystemNode = ({ data }) => {
48860
48896
  className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] px-3 py-2 shadow-sm",
48861
48897
  style: { minWidth: 160, maxWidth: 220 },
48862
48898
  children: [
48863
- /* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "target", position: react.Position.Left, className: "!w-2 !h-2 !bg-orange-400" }),
48864
- /* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "source", position: react.Position.Right, className: "!w-2 !h-2 !bg-orange-400" }),
48899
+ /* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "target", position: react.Position.Left, className: "!w-2 !h-2 !bg-warning" }),
48900
+ /* @__PURE__ */ jsxRuntime.jsx(react.Handle, { type: "source", position: react.Position.Right, className: "!w-2 !h-2 !bg-warning" }),
48865
48901
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 mb-1", children: [
48866
48902
  /* @__PURE__ */ jsxRuntime.jsx("svg", { width: 14, height: 14, viewBox: "0 0 20 20", children: /* @__PURE__ */ jsxRuntime.jsx(exports.AvlEntity, { x: 10, y: 10, r: 8, persistence }) }),
48867
48903
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold text-[var(--color-foreground)] truncate flex-1", children: orbitalName })
@@ -49013,9 +49049,9 @@ var AvlTransitionEdge = ({
49013
49049
  className: "absolute pointer-events-all nodrag nopan flex items-center gap-1",
49014
49050
  style: { transform: `translate(-50%, -50%) translate(${labelX}px, ${labelY}px)` },
49015
49051
  children: [
49016
- data?.hasGuard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-3 h-3 rotate-45 border border-amber-500 bg-amber-500/10 shrink-0", title: t("avl.guard") }),
49052
+ data?.hasGuard && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-3 h-3 rotate-45 border border-warning bg-warning/10 shrink-0", title: t("avl.guard") }),
49017
49053
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-0.5 text-xs font-medium rounded-full bg-[var(--color-card)] border border-[var(--color-border)] text-[var(--color-foreground)] truncate max-w-[160px]", children: data?.event ?? "" }),
49018
- data?.hasEffects && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-2.5 h-2.5 rounded-full bg-violet-500/80 shrink-0", title: t("avl.effects") })
49054
+ data?.hasEffects && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-2.5 h-2.5 rounded-full bg-primary shrink-0", title: t("avl.effects") })
49019
49055
  ]
49020
49056
  }
49021
49057
  ) })
@@ -49838,7 +49874,9 @@ function useResolvedSchema(schema, pageName) {
49838
49874
  trait.listens = callSiteListens.map((l) => ({
49839
49875
  event: l.event,
49840
49876
  triggers: l.triggers,
49841
- source: l.source
49877
+ source: l.source,
49878
+ guard: l.guard,
49879
+ payloadMapping: l.payloadMapping
49842
49880
  }));
49843
49881
  resolvedSchemaLog.info("listens:restored", {
49844
49882
  trait: traitName,
@@ -51227,7 +51265,11 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
51227
51265
  crossTraitLog.debug("listen:subscribed", { busKey, targetTrait: binding.trait.name, sourceOrbital, sourceTrait, listenEvent: listen.event, triggers: listen.triggers });
51228
51266
  const unsub = eventBus.on(busKey, (event) => {
51229
51267
  crossTraitLog.debug("listen:fired", { busKey, targetTrait: binding.trait.name, triggers: listen.triggers });
51230
- enqueueAndDrain(listen.triggers, event.payload, binding.trait.name);
51268
+ enqueueAndDrain(
51269
+ listen.triggers,
51270
+ core.applyListenPayloadMapping(listen.payloadMapping, event.payload),
51271
+ binding.trait.name
51272
+ );
51231
51273
  });
51232
51274
  unsubscribes.push(() => {
51233
51275
  crossTraitLog.debug("listen:unsubscribe", { busKey, targetTrait: binding.trait.name, triggers: listen.triggers });
@@ -51257,7 +51299,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
51257
51299
  }
51258
51300
  for (const event of eventsToFire) {
51259
51301
  stateLog.debug("mount:fire-lifecycle", { event, traitCount: traitBindings.length });
51260
- enqueueAndDrain(event, {});
51302
+ enqueueAndDrain(event, { ...optionsRef.current?.initPayload ?? {} });
51261
51303
  }
51262
51304
  return () => {
51263
51305
  initedTraitsRef.current = /* @__PURE__ */ new Set();
@@ -51356,7 +51398,7 @@ function collectServerActiveTraits(ir, allTraits, mountedTraitNames) {
51356
51398
  }
51357
51399
  return active;
51358
51400
  }
51359
- function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName, orbitalsByTrait, embeddedTraits, serverActiveTraits }) {
51401
+ function TraitInitializer({ traits: traits2, routeParams, orbitalNames, onNavigate, onLocalFallback, persistence, traitConfigsByName, orbitalsByTrait, embeddedTraits, serverActiveTraits }) {
51360
51402
  const bridge = providers.useServerBridge();
51361
51403
  const activeTraitNames = React91.useMemo(
51362
51404
  () => new Set(traits2.map((b) => b.trait.name).filter((n) => !!n)),
@@ -51385,43 +51427,48 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
51385
51427
  applyServerEffects(effects, uiSlots, onNavigate, embeddedTraits, activeTraitNames);
51386
51428
  }
51387
51429
  }, [bridge.connected, bridge.sendEvent, orbitalNames, uiSlots, onNavigate, embeddedTraits, activeTraitNames, withActiveTraits]);
51388
- const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName, orbitalsByTrait, embeddedTraits } : { navigate: onNavigate, persistence, traitConfigsByName, orbitalsByTrait, embeddedTraits };
51430
+ const opts = orbitalNames ? { onEventProcessed, navigate: onNavigate, traitConfigsByName, orbitalsByTrait, embeddedTraits, initPayload: routeParams } : { navigate: onNavigate, persistence, traitConfigsByName, orbitalsByTrait, embeddedTraits, initPayload: routeParams };
51389
51431
  const { sendEvent } = useTraitStateMachine(traits2, uiSlots, opts);
51390
51432
  const initSentRef = React91.useRef(false);
51391
51433
  const prevTraitsRef = React91.useRef(void 0);
51434
+ const paramsKey = JSON.stringify(routeParams ?? {});
51435
+ const prevParamsKeyRef = React91.useRef(void 0);
51392
51436
  React91.useEffect(() => {
51393
51437
  const refChanged = prevTraitsRef.current !== void 0 && prevTraitsRef.current !== traits2;
51438
+ const paramsChanged = prevParamsKeyRef.current !== void 0 && prevParamsKeyRef.current !== paramsKey;
51394
51439
  navLog.debug("page:traits-effect", () => ({
51395
51440
  refChanged,
51441
+ paramsChanged,
51396
51442
  traitsCount: Array.isArray(traits2) ? traits2.length : -1,
51397
51443
  hadPrev: prevTraitsRef.current !== void 0
51398
51444
  }));
51399
- if (refChanged) {
51400
- navLog.info("page:traits-reset", { traitsCount: Array.isArray(traits2) ? traits2.length : -1 });
51445
+ if (refChanged || paramsChanged) {
51446
+ navLog.info("page:traits-reset", { traitsCount: Array.isArray(traits2) ? traits2.length : -1, paramsChanged });
51401
51447
  uiSlots.clearAll();
51402
51448
  initSentRef.current = false;
51403
51449
  }
51404
51450
  prevTraitsRef.current = traits2;
51405
- }, [traits2, uiSlots]);
51451
+ prevParamsKeyRef.current = paramsKey;
51452
+ }, [traits2, uiSlots, paramsKey]);
51406
51453
  React91.useEffect(() => {
51407
51454
  if (!orbitalNames?.length) {
51408
- const t = setTimeout(() => sendEvent("INIT"), 50);
51455
+ const t = setTimeout(() => sendEvent("INIT", routeParams), 50);
51409
51456
  return () => clearTimeout(t);
51410
51457
  }
51411
51458
  const fallback = setTimeout(() => {
51412
51459
  if (!initSentRef.current) {
51413
- sendEvent("INIT");
51460
+ sendEvent("INIT", routeParams);
51414
51461
  onLocalFallback?.();
51415
51462
  }
51416
51463
  }, 5e3);
51417
51464
  return () => clearTimeout(fallback);
51418
- }, [traits2, orbitalNames, sendEvent, onLocalFallback]);
51465
+ }, [traits2, orbitalNames, sendEvent, onLocalFallback, routeParams]);
51419
51466
  React91.useEffect(() => {
51420
51467
  if (!bridge.connected || !orbitalNames?.length || initSentRef.current) return;
51421
51468
  initSentRef.current = true;
51422
51469
  (async () => {
51423
51470
  for (const name of orbitalNames) {
51424
- const { effects, meta } = await bridge.sendEvent(name, "INIT", withActiveTraits({}));
51471
+ const { effects, meta } = await bridge.sendEvent(name, "INIT", withActiveTraits({ ...routeParams ?? {} }));
51425
51472
  recordServerResponse(name, "INIT", meta);
51426
51473
  const effectTraces = [
51427
51474
  { type: "fetch", args: [], status: "executed" },
@@ -51442,10 +51489,10 @@ function TraitInitializer({ traits: traits2, orbitalNames, onNavigate, onLocalFa
51442
51489
  applyServerEffects(effects, uiSlots, onNavigate, embeddedTraits, activeTraitNames);
51443
51490
  }
51444
51491
  })();
51445
- }, [bridge.connected, orbitalNames, bridge.sendEvent, uiSlots, onNavigate, embeddedTraits, activeTraitNames, withActiveTraits]);
51492
+ }, [bridge.connected, orbitalNames, bridge.sendEvent, uiSlots, onNavigate, embeddedTraits, activeTraitNames, withActiveTraits, routeParams]);
51446
51493
  return null;
51447
51494
  }
51448
- function SchemaRunner({ schema, serverUrl, transport, mockData, pageName, onNavigate, onLocalFallback, persistence }) {
51495
+ function SchemaRunner({ schema, serverUrl, transport, mockData, pageName, routeParams, onNavigate, onLocalFallback, persistence }) {
51449
51496
  const { traits: traits2, allEntities, allTraits, ir } = useResolvedSchema(schema, pageName);
51450
51497
  const allPageTraits = React91.useMemo(() => {
51451
51498
  let base;
@@ -51587,6 +51634,7 @@ function SchemaRunner({ schema, serverUrl, transport, mockData, pageName, onNavi
51587
51634
  TraitInitializer,
51588
51635
  {
51589
51636
  traits: allPageTraits,
51637
+ routeParams,
51590
51638
  orbitalNames: serverUrl || transport ? pageOrbitalNames : void 0,
51591
51639
  traitConfigsByName,
51592
51640
  orbitalsByTrait,
@@ -51664,27 +51712,35 @@ function OrbPreview({
51664
51712
  return [];
51665
51713
  }
51666
51714
  }, [parsedSchema]);
51667
- const initialPageName = React91.useMemo(() => {
51715
+ const initialPageMatch = React91.useMemo(() => {
51668
51716
  if (!initialPagePath) return void 0;
51669
- const match = pages.find(({ page }) => page.path === initialPagePath);
51670
- return match?.page.name;
51717
+ const hit = providers.matchPathAmong(pages, initialPagePath, (entry) => entry.page.path);
51718
+ if (!hit) return void 0;
51719
+ return { name: hit.candidate.page.name, params: hit.params };
51671
51720
  }, [pages, initialPagePath]);
51721
+ const initialPageName = initialPageMatch?.name;
51672
51722
  const [currentPage, setCurrentPage] = React91.useState(initialPageName);
51723
+ const [routeParams, setRouteParams] = React91.useState(initialPageMatch?.params ?? {});
51673
51724
  const prevInitialPagePathRef = React91.useRef(initialPagePath);
51674
51725
  React91.useEffect(() => {
51675
51726
  if (prevInitialPagePathRef.current !== initialPagePath) {
51676
51727
  prevInitialPagePathRef.current = initialPagePath;
51677
51728
  setCurrentPage(initialPageName);
51729
+ setRouteParams(initialPageMatch?.params ?? {});
51678
51730
  }
51679
- }, [initialPagePath, initialPageName]);
51731
+ }, [initialPagePath, initialPageName, initialPageMatch]);
51680
51732
  const handleNavigate = React91.useCallback((path) => {
51681
- const match = pages.find(({ page }) => page.path === path);
51733
+ const hit = providers.matchPathAmong(pages, path, (entry) => entry.page.path);
51734
+ const match = hit?.candidate;
51735
+ const params = hit?.params ?? {};
51682
51736
  navLog.debug("handleNavigate", () => ({
51683
51737
  path,
51684
51738
  matched: match?.page.name ?? null,
51739
+ params,
51685
51740
  availablePaths: pages.map((p) => p.page.path)
51686
51741
  }));
51687
- if (match) {
51742
+ if (match?.page.name) {
51743
+ setRouteParams(params);
51688
51744
  setCurrentPage(match.page.name);
51689
51745
  if (typeof window !== "undefined") {
51690
51746
  const url = new URL(window.location.href);
@@ -51754,6 +51810,7 @@ function OrbPreview({
51754
51810
  transport,
51755
51811
  mockData: effectiveMockData,
51756
51812
  pageName: currentPage,
51813
+ routeParams,
51757
51814
  onNavigate: handleNavigate,
51758
51815
  onLocalFallback: handleLocalFallback,
51759
51816
  persistence
@@ -53502,9 +53559,9 @@ function OrbInspector({ node, schema, editable = false, userType = "builder", th
53502
53559
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-muted-foreground text-xs uppercase tracking-wider mb-2", children: t("avl.transition") }),
53503
53560
  /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "100%", height: 44, viewBox: "0 0 280 44", children: [
53504
53561
  /* @__PURE__ */ jsxRuntime.jsx(exports.AvlState, { x: 8, y: 8, name: fromState, role: getStateRole(fromState), width: 90, height: 26 }),
53505
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: 104, y1: 21, x2: 158, y2: 21, stroke: "#1E293B", strokeWidth: 2, markerEnd: "url(#orb-arrow)" }),
53562
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: 104, y1: 21, x2: 158, y2: 21, stroke: "var(--color-foreground)", strokeWidth: 2, markerEnd: "url(#orb-arrow)" }),
53506
53563
  /* @__PURE__ */ jsxRuntime.jsx(exports.AvlState, { x: 164, y: 8, name: toState, role: getStateRole(toState), width: 90, height: 26 }),
53507
- /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("marker", { id: "orb-arrow", markerWidth: 8, markerHeight: 6, refX: 8, refY: 3, orient: "auto", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0,0 L8,3 L0,6 Z", fill: "#1E293B" }) }) })
53564
+ /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("marker", { id: "orb-arrow", markerWidth: 8, markerHeight: 6, refX: 8, refY: 3, orient: "auto", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0,0 L8,3 L0,6 Z", fill: "var(--color-foreground)" }) }) })
53508
53565
  ] }),
53509
53566
  traitName && /* @__PURE__ */ jsxRuntime.jsxs(Typography, { variant: "small", className: "text-muted-foreground text-xs", children: [
53510
53567
  traitName,
@@ -53615,7 +53672,7 @@ function OrbPatternTree({ config, depth }) {
53615
53672
  return /* @__PURE__ */ jsxRuntime.jsxs(Box, { style: { paddingLeft: depth * 12 }, children: [
53616
53673
  /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "small", className: "text-primary font-semibold text-xs", children: type }),
53617
53674
  propEntries.slice(0, 5).map(([key, val]) => {
53618
- const display = typeof val === "string" ? val.startsWith("@") ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-purple-500", children: val }) : `"${val}"` : Array.isArray(val) && val.length > 0 && typeof val[0] === "string" && val[0].includes("/") ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-amber-600", children: [
53675
+ const display = typeof val === "string" ? val.startsWith("@") ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary", children: val }) : `"${val}"` : Array.isArray(val) && val.length > 0 && typeof val[0] === "string" && val[0].includes("/") ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-warning", children: [
53619
53676
  "(",
53620
53677
  val.map(String).join(" "),
53621
53678
  ")"