@almadar/shell-web 1.0.0 → 1.2.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 (109) hide show
  1. package/LICENSE +72 -0
  2. package/dist/AvlGlyph-KZMJDBEB.js +5 -0
  3. package/dist/AvlStateMachine-KVZMFHFU.js +8 -0
  4. package/dist/AvlTransitionDetail-7DVGV27I.js +10 -0
  5. package/dist/AvlTransitionExplainer-RMJ5LQLK.js +11 -0
  6. package/dist/BehaviorView-EYRPME67.js +10 -0
  7. package/dist/{FileTree-BCFnBEuQ.d.ts → FileTree-B3GDAjaQ.d.ts} +131 -4
  8. package/dist/FlowCanvas-J54627TC.js +23 -0
  9. package/dist/{FlowCanvas-3JRMNJLV.css → FlowCanvas-R4LL3KRI.css} +190 -192
  10. package/dist/{GameAudioProvider-ceM_n0ey.d.ts → GameAudioProvider-BgWOOYT3.d.ts} +15 -20
  11. package/dist/{KernelEngineContext-CcxGYtlr.d.ts → KernelEngineContext-BPx-q0iw.d.ts} +15 -2
  12. package/dist/{LayersPanel-M2LHWUFF.js → LayersPanel-PSXI4EHG.js} +4 -4
  13. package/dist/ModuleCard-TNRLL45H.js +6 -0
  14. package/dist/{OrbInspector-MHLJ6OEE.css → OrbInspector-2EGVZLOJ.css} +190 -192
  15. package/dist/OrbInspector-UBEQWWZ2.js +23 -0
  16. package/dist/{parseLessonSegments-GpCeMrb2.d.ts → SegmentRenderer-BAQ6Jwf6.d.ts} +4 -20
  17. package/dist/{Select-B-iDdnvE.d.ts → Select-BJ8Fgc8A.d.ts} +1 -1
  18. package/dist/{UISlotContext-Dl_ewwCI.d.ts → UISlotContext-7r0SQdTL.d.ts} +1 -1
  19. package/dist/UISlotRenderer-5OURMAP2.js +23 -0
  20. package/dist/{UISlotRenderer-KVFO6J7R.css → UISlotRenderer-SJBSQGBQ.css} +190 -192
  21. package/dist/auth/react/index.js +7 -6
  22. package/dist/avl/index.css +190 -192
  23. package/dist/avl/index.d.ts +19 -7
  24. package/dist/avl/index.js +170 -39
  25. package/dist/{chunk-AE7VCQB6.js → chunk-2LNXLMK3.js} +2 -2
  26. package/dist/{chunk-REXYVBUO.js → chunk-3DA36FOA.js} +1 -1
  27. package/dist/{chunk-UXLE3IPR.js → chunk-3UQNFRYV.js} +207 -9
  28. package/dist/{chunk-AGXD77SL.js → chunk-3YUMGEEW.js} +1 -1
  29. package/dist/{chunk-K4MOPSEL.js → chunk-6RXP5ZXE.js} +7 -8
  30. package/dist/{chunk-E6KA4J6N.js → chunk-7UCL26QB.js} +4 -5
  31. package/dist/{chunk-57DC34LY.js → chunk-AL2XXMYR.js} +2 -2
  32. package/dist/{chunk-YHMRX6YA.js → chunk-ANTJUQRD.js} +53 -13
  33. package/dist/{chunk-P4ZFUQFF.js → chunk-AZ74UPG6.js} +4 -1
  34. package/dist/{chunk-ROICKAU7.js → chunk-B23EZH2P.js} +3 -3
  35. package/dist/{chunk-CPLN6NBQ.js → chunk-CCO2ZH7F.js} +3 -4
  36. package/dist/{chunk-4YXBKHHM.js → chunk-D5FJU4XC.js} +87 -16
  37. package/dist/{chunk-HH5KSMH5.js → chunk-DPDKBY6Z.js} +1 -1
  38. package/dist/{chunk-A2LR6VQQ.js → chunk-ECC3WQIB.js} +9 -93
  39. package/dist/{chunk-VO2TTLS5.js → chunk-GHAF7QUD.js} +1 -1
  40. package/dist/{chunk-TXAUOLWZ.js → chunk-HA2BYO5E.js} +1 -1
  41. package/dist/{chunk-ILQXJ2AR.js → chunk-JEN4EIUF.js} +1 -1
  42. package/dist/{chunk-UTDC2NEA.js → chunk-KTYOYEVA.js} +1 -1
  43. package/dist/{chunk-X3DMMX27.js → chunk-LINJRTNB.js} +2 -2
  44. package/dist/{chunk-TUPZWTRE.js → chunk-LKL5RULQ.js} +467 -141
  45. package/dist/{chunk-UU57VNS2.js → chunk-PWXZN5G5.js} +2 -2
  46. package/dist/{chunk-SP5CDJ6K.js → chunk-RDPELAFQ.js} +4 -4
  47. package/dist/{chunk-PRXQGGCO.js → chunk-S3LS3B7N.js} +1 -1
  48. package/dist/{chunk-LHP2TK7O.js → chunk-TAEOMNDK.js} +3611 -4737
  49. package/dist/{chunk-3S54FWRC.js → chunk-UFQLHCFJ.js} +1 -1
  50. package/dist/{chunk-AB3X7QTE.js → chunk-V5SVGUYN.js} +2 -3
  51. package/dist/{chunk-3VZ36ZKO.js → chunk-ZDRDJKYB.js} +5 -2
  52. package/dist/components/index.css +190 -192
  53. package/dist/components/index.d.ts +568 -190
  54. package/dist/components/index.js +27 -30
  55. package/dist/context/index.d.ts +2 -2
  56. package/dist/context/index.js +5 -5
  57. package/dist/core.d.ts +21 -4
  58. package/dist/core.js +1 -1
  59. package/dist/{fx-CmQjnHmT.d.ts → fx-Bx5RqplG.d.ts} +10 -7
  60. package/dist/hooks/index.d.ts +8 -8
  61. package/dist/hooks/index.js +6 -6
  62. package/dist/index.d.ts +4 -0
  63. package/dist/index.js +2 -2
  64. package/dist/{katexPlugin-FA7NX4PE.css → katexPlugin-BUHVNRBJ.css} +1 -1
  65. package/dist/{kernel-client-TZKGHJRY.js → kernel-client-NMZ56JVU.js} +60 -6
  66. package/dist/{kernel-wire-wNdAPfhJ.d.ts → kernel-wire-CRsHtLsf.d.ts} +8 -1
  67. package/dist/lib/index.d.ts +3 -4
  68. package/dist/lib/index.js +435 -4
  69. package/dist/providers/index.css +190 -192
  70. package/dist/providers/index.d.ts +6 -8
  71. package/dist/providers/index.js +21 -25
  72. package/dist/renderer/index.d.ts +3 -79
  73. package/dist/renderer/index.js +2 -2
  74. package/dist/runtime/index.css +190 -192
  75. package/dist/runtime/index.d.ts +9 -2
  76. package/dist/runtime/index.js +20 -23
  77. package/dist/ssr/index.cjs +105 -28
  78. package/dist/ssr/index.js +106 -29
  79. package/dist/test-support.js +2 -2
  80. package/dist/{useUISlots-CiobNFGb.d.ts → useUISlots-BLcGd__D.d.ts} +2 -0
  81. package/dist/{paintDispatch-CuJLsr9Y.d.ts → verificationRegistry-BLuQU1JV.d.ts} +127 -15
  82. package/package.json +10 -38
  83. package/src/core/locales/ar.json +10 -1
  84. package/src/core/locales/en.json +10 -1
  85. package/src/core/locales/sl.json +10 -1
  86. package/tailwind-preset.cjs +8 -4
  87. package/dist/AvlGlyph-EPJKFEO3.js +0 -6
  88. package/dist/AvlStateMachine-RKZIKNGC.js +0 -9
  89. package/dist/AvlTransitionDetail-63SD6GZF.js +0 -11
  90. package/dist/AvlTransitionExplainer-ZBTLOM3T.js +0 -12
  91. package/dist/BehaviorView-YS5G4GNB.js +0 -11
  92. package/dist/Canvas3DHost-BkZQB5l2.d.ts +0 -552
  93. package/dist/FlowCanvas-AUMTWMNG.js +0 -26
  94. package/dist/ModuleCard-QHDGK5XK.js +0 -7
  95. package/dist/OrbInspector-QCPEPUPH.js +0 -26
  96. package/dist/UISlotRenderer-C7WWOK43.js +0 -26
  97. package/dist/avl-3d-context-BycmO6tG.d.ts +0 -201
  98. package/dist/avl-schema-parser-CtJxJ9KU.d.ts +0 -132
  99. package/dist/avl-zoom-state-CKMVuBFg.d.ts +0 -17
  100. package/dist/chunk-4T3P43NS.js +0 -1133
  101. package/dist/chunk-DZBQA2OW.js +0 -176
  102. package/dist/chunk-EOWMARUB.js +0 -16
  103. package/dist/chunk-GFXCPUMX.js +0 -1334
  104. package/dist/chunk-ILZ7ORX7.js +0 -432
  105. package/dist/three/index.css +0 -503
  106. package/dist/three/index.d.ts +0 -1185
  107. package/dist/three/index.js +0 -3908
  108. package/dist/verificationRegistry-CVrcxG1s.d.ts +0 -122
  109. /package/dist/{katexPlugin-NCDKOOQY.js → katexPlugin-WGJ4JFZU.js} +0 -0
@@ -40,7 +40,7 @@ var themeToggleAr__default = /*#__PURE__*/_interopDefault(themeToggleAr);
40
40
  var themeToggleSl__default = /*#__PURE__*/_interopDefault(themeToggleSl);
41
41
  var patternTileGeometry__default = /*#__PURE__*/_interopDefault(patternTileGeometry);
42
42
 
43
- // node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
43
+ // ../../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
44
44
  function r(e) {
45
45
  var t, f2, n = "";
46
46
  if ("string" == typeof e || "number" == typeof e) n += e;
@@ -55,7 +55,7 @@ function clsx() {
55
55
  return n;
56
56
  }
57
57
 
58
- // node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.mjs
58
+ // ../../../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.mjs
59
59
  var CLASS_PART_SEPARATOR = "-";
60
60
  var createClassGroupUtils = (config) => {
61
61
  const classMap = createClassMap(config);
@@ -2588,6 +2588,30 @@ var twMerge = extendTailwindMerge({
2588
2588
  function cn(...inputs) {
2589
2589
  return twMerge(clsx(inputs));
2590
2590
  }
2591
+ function useMediaQuery(query) {
2592
+ const subscribe = React16.useCallback(
2593
+ (onChange) => {
2594
+ if (!hasMatchMedia()) return () => void 0;
2595
+ const mql = window.matchMedia(query);
2596
+ mql.addEventListener("change", onChange);
2597
+ return () => mql.removeEventListener("change", onChange);
2598
+ },
2599
+ [query]
2600
+ );
2601
+ return React16.useSyncExternalStore(
2602
+ subscribe,
2603
+ () => hasMatchMedia() && window.matchMedia(query).matches,
2604
+ () => false
2605
+ );
2606
+ }
2607
+ function hasMatchMedia() {
2608
+ return typeof window !== "undefined" && typeof window.matchMedia === "function";
2609
+ }
2610
+
2611
+ // src/core/hooks/usePrefersReducedMotion.ts
2612
+ function usePrefersReducedMotion() {
2613
+ return useMediaQuery("(prefers-reduced-motion: reduce)");
2614
+ }
2591
2615
  logger.createLogger("almadar:eventbus");
2592
2616
  logger.createLogger("almadar:eventbus:subscribe");
2593
2617
  var EventBusContext = globalThis.__almadarUiEventBusContext ?? (globalThis.__almadarUiEventBusContext = React16.createContext(null));
@@ -3148,6 +3172,7 @@ var Box = React16__namespace.default.forwardRef(
3148
3172
  texture = false,
3149
3173
  animateChanges = false,
3150
3174
  backdrop,
3175
+ marquee,
3151
3176
  onClick,
3152
3177
  onMouseEnter,
3153
3178
  onMouseLeave,
@@ -3235,6 +3260,7 @@ var Box = React16__namespace.default.forwardRef(
3235
3260
  position && positionStyles[position],
3236
3261
  isClickable && "cursor-pointer",
3237
3262
  isBand && "band",
3263
+ marquee?.clip && "proof-marquee motion-reduce:[mask-image:none]",
3238
3264
  className
3239
3265
  ),
3240
3266
  onClick: isClickable ? handleClick : void 0,
@@ -3249,11 +3275,35 @@ var Box = React16__namespace.default.forwardRef(
3249
3275
  },
3250
3276
  isBand ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3251
3277
  bandLayers,
3252
- children
3253
- ] }) : children
3278
+ marquee ? /* @__PURE__ */ jsxRuntime.jsx(MarqueeTrack, { marquee, children }) : children
3279
+ ] }) : marquee ? /* @__PURE__ */ jsxRuntime.jsx(MarqueeTrack, { marquee, children }) : children
3254
3280
  );
3255
3281
  }
3256
3282
  );
3283
+ function MarqueeTrack({ marquee, children }) {
3284
+ const reduced = usePrefersReducedMotion();
3285
+ const copyRef = React16.useRef(null);
3286
+ const [width, setWidth] = React16.useState(0);
3287
+ React16.useLayoutEffect(() => {
3288
+ const node = copyRef.current;
3289
+ if (!node) return;
3290
+ const measure = () => setWidth(node.getBoundingClientRect().width);
3291
+ measure();
3292
+ const observer2 = new ResizeObserver(measure);
3293
+ observer2.observe(node);
3294
+ return () => observer2.disconnect();
3295
+ }, []);
3296
+ const moving = !reduced && width > 0 && marquee.speed > 0;
3297
+ const style = moving ? {
3298
+ animation: `almadar-marquee ${width / marquee.speed}s linear infinite`,
3299
+ animationDirection: marquee.direction === "end" ? "reverse" : "normal",
3300
+ "--marquee-distance": marquee.loop ? "50%" : "100%"
3301
+ } : {};
3302
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-marquee-track": "", className: cn("proof-marquee-track hover:[animation-play-state:paused]", reduced && "w-full flex-wrap justify-center"), style, children: [
3303
+ /* @__PURE__ */ jsxRuntime.jsx("div", { ref: copyRef, className: "flex shrink-0 items-center", children }),
3304
+ marquee.loop && !reduced && /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": true, className: "flex shrink-0 items-center", children })
3305
+ ] });
3306
+ }
3257
3307
  Box.displayName = "Box";
3258
3308
  var EMPTY_CHAIN = Object.freeze([]);
3259
3309
  var TraitScopeContext = React16.createContext(null);
@@ -3895,6 +3945,7 @@ var en_default = {
3895
3945
  "status.archived": "Archived",
3896
3946
  "error.generic": "Something went wrong",
3897
3947
  "error.traitMountFailed": "{{trait}} failed to start",
3948
+ "error.serverRefused": "The server refused this page",
3898
3949
  "error.retry": "Try again",
3899
3950
  "error.notFound": "Not found",
3900
3951
  "error.loadFailed": "Failed to load: {{message}}",
@@ -3976,6 +4027,7 @@ var en_default = {
3976
4027
  "aria.closeMenu": "Close menu",
3977
4028
  "aria.openSidebar": "Open sidebar",
3978
4029
  "aria.openRow": "Open item {{position}}",
4030
+ "aria.scrollableBoard": "Scrollable board",
3979
4031
  "sidebar.expand": "Expand sidebar",
3980
4032
  "sidebar.collapse": "Collapse sidebar",
3981
4033
  "sidebar.close": "Close sidebar",
@@ -5067,6 +5119,7 @@ var en_default = {
5067
5119
  "agentActivity.change.trait-config-changed": "Changed the settings of {{orbitalName}}",
5068
5120
  "agentActivity.change.theme-changed": "Changed the theme of {{orbitalName}}",
5069
5121
  "agentActivity.llmResponse": "Raw LLM response",
5122
+ "agentActivity.unknown": "Unknown activity: {{kind}}",
5070
5123
  "agentActivity.llmDuration": "{{seconds}}s",
5071
5124
  "agentActivity.llmTokens": "{{prompt}} in / {{completion}} out tokens",
5072
5125
  "agentActivity.llmResponseLabel": "Response",
@@ -5108,7 +5161,13 @@ var en_default = {
5108
5161
  "debug.replayPause": "Pause",
5109
5162
  "debug.replayStep": "{{step}} / {{total}}",
5110
5163
  "stateMachine.inspect": "Inspect: pick a trait on the page",
5111
- "stateMachine.inspectHint": "Click a part of the page \xB7 Esc to stop"
5164
+ "stateMachine.inspectHint": "Click a part of the page \xB7 Esc to stop",
5165
+ "themeToggle.switchToLight": "Switch to light mode",
5166
+ "themeToggle.switchToDark": "Switch to dark mode",
5167
+ "themeToggle.light": "Light",
5168
+ "themeToggle.dark": "Dark",
5169
+ "agentActivity.toolDone": "{{tool}} \u2014 done",
5170
+ "agentActivity.toolFailed": "{{tool}} \u2014 failed"
5112
5171
  };
5113
5172
 
5114
5173
  // src/core/lib/format.ts
@@ -5229,6 +5288,7 @@ var ar_default = {
5229
5288
  "status.archived": "\u0645\u0624\u0631\u0634\u0641",
5230
5289
  "error.generic": "\u062D\u062F\u062B \u062E\u0637\u0623 \u0645\u0627",
5231
5290
  "error.traitMountFailed": "\u062A\u0639\u0630\u0651\u0631 \u0628\u062F\u0621 {{trait}}",
5291
+ "error.serverRefused": "\u0631\u0641\u0636 \u0627\u0644\u062E\u0627\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u0635\u0641\u062D\u0629",
5232
5292
  "error.retry": "\u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649",
5233
5293
  "error.notFound": "\u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F",
5234
5294
  "error.loadFailed": "\u0641\u0634\u0644 \u0627\u0644\u062A\u062D\u0645\u064A\u0644: {{message}}",
@@ -5307,6 +5367,7 @@ var ar_default = {
5307
5367
  "aria.closeMenu": "\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0642\u0627\u0626\u0645\u0629",
5308
5368
  "aria.openSidebar": "\u0641\u062A\u062D \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
5309
5369
  "aria.openRow": "\u0641\u062A\u062D \u0627\u0644\u0639\u0646\u0635\u0631 {{position}}",
5370
+ "aria.scrollableBoard": "\u0644\u0648\u062D\u0629 \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062A\u0645\u0631\u064A\u0631",
5310
5371
  "sidebar.expand": "\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
5311
5372
  "sidebar.collapse": "\u0637\u064A \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
5312
5373
  "sidebar.close": "\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
@@ -6402,6 +6463,7 @@ var ar_default = {
6402
6463
  "agentActivity.change.trait-config-changed": "\u062A\u0645 \u062A\u063A\u064A\u064A\u0631 \u0625\u0639\u062F\u0627\u062F\u0627\u062A {{orbitalName}}",
6403
6464
  "agentActivity.change.theme-changed": "\u062A\u0645 \u062A\u063A\u064A\u064A\u0631 \u0633\u0645\u0629 {{orbitalName}}",
6404
6465
  "agentActivity.llmResponse": "\u0627\u0633\u062A\u062C\u0627\u0628\u0629 LLM \u062E\u0627\u0645",
6466
+ "agentActivity.unknown": "\u0646\u0634\u0627\u0637 \u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641: {{kind}}",
6405
6467
  "agentActivity.llmDuration": "{{seconds}} \u062B",
6406
6468
  "agentActivity.llmTokens": "{{prompt}} \u062F\u0627\u062E\u0644 / {{completion}} \u062E\u0627\u0631\u062C",
6407
6469
  "agentActivity.llmResponseLabel": "\u0627\u0644\u0627\u0633\u062A\u062C\u0627\u0628\u0629",
@@ -6443,7 +6505,13 @@ var ar_default = {
6443
6505
  "debug.replayPause": "\u0625\u064A\u0642\u0627\u0641 \u0645\u0624\u0642\u062A",
6444
6506
  "debug.replayStep": "{{step}} / {{total}}",
6445
6507
  "stateMachine.inspect": "\u0641\u062D\u0635: \u0627\u062E\u062A\u0631 \u0633\u0645\u0629 \u0645\u0646 \u0627\u0644\u0635\u0641\u062D\u0629",
6446
- "stateMachine.inspectHint": "\u0627\u0646\u0642\u0631 \u062C\u0632\u0621\u064B\u0627 \u0645\u0646 \u0627\u0644\u0635\u0641\u062D\u0629 \xB7 Esc \u0644\u0644\u0625\u064A\u0642\u0627\u0641"
6508
+ "stateMachine.inspectHint": "\u0627\u0646\u0642\u0631 \u062C\u0632\u0621\u064B\u0627 \u0645\u0646 \u0627\u0644\u0635\u0641\u062D\u0629 \xB7 Esc \u0644\u0644\u0625\u064A\u0642\u0627\u0641",
6509
+ "themeToggle.switchToLight": "\u0627\u0644\u062A\u0628\u062F\u064A\u0644 \u0625\u0644\u0649 \u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u0641\u0627\u062A\u062D",
6510
+ "themeToggle.switchToDark": "\u0627\u0644\u062A\u0628\u062F\u064A\u0644 \u0625\u0644\u0649 \u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u062F\u0627\u0643\u0646",
6511
+ "themeToggle.light": "\u0641\u0627\u062A\u062D",
6512
+ "themeToggle.dark": "\u062F\u0627\u0643\u0646",
6513
+ "agentActivity.toolDone": "{{tool}} \u2014 \u062A\u0645",
6514
+ "agentActivity.toolFailed": "{{tool}} \u2014 \u062A\u0639\u0630\u0651\u0631"
6447
6515
  };
6448
6516
 
6449
6517
  // src/core/locales/sl.json
@@ -6507,6 +6575,7 @@ var sl_default = {
6507
6575
  "status.archived": "Arhivirano",
6508
6576
  "error.generic": "Nekaj je \u0161lo narobe",
6509
6577
  "error.traitMountFailed": "{{trait}} se ni zagnal",
6578
+ "error.serverRefused": "Stre\u017Enik je zavrnil to stran",
6510
6579
  "error.retry": "Poskusite znova",
6511
6580
  "error.notFound": "Ni najdeno",
6512
6581
  "error.loadFailed": "Nalaganje ni uspelo: {{message}}",
@@ -6585,6 +6654,7 @@ var sl_default = {
6585
6654
  "aria.closeMenu": "Zapri meni",
6586
6655
  "aria.openSidebar": "Odpri stransko vrstico",
6587
6656
  "aria.openRow": "Odpri element {{position}}",
6657
+ "aria.scrollableBoard": "Drsljiva tabla",
6588
6658
  "sidebar.expand": "Raz\u0161iri stransko vrstico",
6589
6659
  "sidebar.collapse": "Strni stransko vrstico",
6590
6660
  "sidebar.close": "Zapri stransko vrstico",
@@ -7680,6 +7750,7 @@ var sl_default = {
7680
7750
  "agentActivity.change.trait-config-changed": "Spremenjene nastavitve {{orbitalName}}",
7681
7751
  "agentActivity.change.theme-changed": "Spremenjena tema {{orbitalName}}",
7682
7752
  "agentActivity.llmResponse": "Surov odgovor LLM",
7753
+ "agentActivity.unknown": "Neznana dejavnost: {{kind}}",
7683
7754
  "agentActivity.llmDuration": "{{seconds}} s",
7684
7755
  "agentActivity.llmTokens": "{{prompt}} vhodnih / {{completion}} izhodnih \u017Eetonov",
7685
7756
  "agentActivity.llmResponseLabel": "Odgovor",
@@ -7721,7 +7792,13 @@ var sl_default = {
7721
7792
  "debug.replayPause": "Premor",
7722
7793
  "debug.replayStep": "{{step}} / {{total}}",
7723
7794
  "stateMachine.inspect": "Pregled: izberi lastnost na strani",
7724
- "stateMachine.inspectHint": "Klikni del strani \xB7 Esc za konec"
7795
+ "stateMachine.inspectHint": "Klikni del strani \xB7 Esc za konec",
7796
+ "themeToggle.switchToLight": "Preklopi na svetli na\u010Din",
7797
+ "themeToggle.switchToDark": "Preklopi na temni na\u010Din",
7798
+ "themeToggle.light": "Svetla",
7799
+ "themeToggle.dark": "Temna",
7800
+ "agentActivity.toolDone": "{{tool}} \u2014 kon\u010Dano",
7801
+ "agentActivity.toolFailed": "{{tool}} \u2014 ni uspelo"
7725
7802
  };
7726
7803
  var { $meta: _meta2, ...coreMessages2 } = en_default;
7727
7804
  var withThemeToggle = (messages, labels) => ({
@@ -7897,9 +7974,9 @@ var variantStyles = {
7897
7974
  };
7898
7975
  variantStyles.destructive = variantStyles.danger;
7899
7976
  var sizeStyles = {
7900
- sm: "h-button-sm px-3 text-sm",
7901
- md: "h-button-md px-4 text-sm",
7902
- lg: "h-button-lg px-6 text-base"
7977
+ sm: "min-h-button-sm py-1 px-3 text-sm",
7978
+ md: "min-h-button-md py-1 px-4 text-sm",
7979
+ lg: "min-h-button-lg py-1 px-6 text-base"
7903
7980
  };
7904
7981
  var iconSizeStyles = {
7905
7982
  sm: "h-icon-default w-icon-default",
@@ -8557,6 +8634,22 @@ var Sparkline = ({
8557
8634
  );
8558
8635
  };
8559
8636
  Sparkline.displayName = "Sparkline";
8637
+
8638
+ // src/core/atoms/types.ts
8639
+ var COLOR_TOKEN_VARS = {
8640
+ primary: "var(--color-primary)",
8641
+ secondary: "var(--color-secondary)",
8642
+ success: "var(--color-success)",
8643
+ warning: "var(--color-warning)",
8644
+ error: "var(--color-error)",
8645
+ muted: "var(--color-muted)"
8646
+ };
8647
+ function isColorToken(value) {
8648
+ return Object.prototype.hasOwnProperty.call(COLOR_TOKEN_VARS, value);
8649
+ }
8650
+ function resolveColorToken(color) {
8651
+ return isColorToken(color) ? COLOR_TOKEN_VARS[color] : color;
8652
+ }
8560
8653
  var iconSizeMap = {
8561
8654
  sm: "lg",
8562
8655
  md: "xl",
@@ -9059,20 +9152,12 @@ var StatDisplay = ({
9059
9152
  );
9060
9153
  };
9061
9154
  StatDisplay.displayName = "StatDisplay";
9062
- var colorTokenVars = {
9063
- primary: "var(--color-primary)",
9064
- secondary: "var(--color-secondary)",
9065
- success: "var(--color-success)",
9066
- warning: "var(--color-warning)",
9067
- error: "var(--color-error)",
9068
- muted: "var(--color-muted)"
9069
- };
9070
9155
  var GradientDivider = ({
9071
9156
  color,
9072
9157
  className,
9073
9158
  ...rest
9074
9159
  }) => {
9075
- const centerColor = color ? color in colorTokenVars ? colorTokenVars[color] : color : "var(--color-primary)";
9160
+ const centerColor = color ? resolveColorToken(color) : "var(--color-primary)";
9076
9161
  return /* @__PURE__ */ jsxRuntime.jsx(
9077
9162
  Box,
9078
9163
  {
@@ -9550,14 +9635,6 @@ var GeometricPattern = ({
9550
9635
  );
9551
9636
  };
9552
9637
  GeometricPattern.displayName = "GeometricPattern";
9553
- var colorTokenVars2 = {
9554
- primary: "var(--color-primary)",
9555
- secondary: "var(--color-secondary)",
9556
- success: "var(--color-success)",
9557
- warning: "var(--color-warning)",
9558
- error: "var(--color-error)",
9559
- muted: "var(--color-muted)"
9560
- };
9561
9638
  function ArchSVG({
9562
9639
  facing,
9563
9640
  w,
@@ -9695,7 +9772,7 @@ var EdgeDecoration = ({
9695
9772
  }) => {
9696
9773
  const id = React16.useId();
9697
9774
  const Variant = VARIANT_MAP[variant];
9698
- const resolvedColor = color in colorTokenVars2 ? colorTokenVars2[color] : color;
9775
+ const resolvedColor = resolveColorToken(color);
9699
9776
  const sides = side === "both" ? ["left", "right"] : [side];
9700
9777
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: sides.map((s) => /* @__PURE__ */ jsxRuntime.jsx(
9701
9778
  "svg",
package/dist/ssr/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import * as React16 from 'react';
3
- import React16__default, { createContext, useRef, useCallback, useMemo, useContext, useEffect, useState, useSyncExternalStore, useLayoutEffect, useId } from 'react';
3
+ import React16__default, { createContext, useRef, useCallback, useState, useLayoutEffect, useMemo, useContext, useEffect, useSyncExternalStore, useId } from 'react';
4
4
  import { createLogger } from '@almadar/logger';
5
5
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
6
6
  import { Loader2, HelpCircle, ArrowDownNarrowWide, ArrowUpNarrowWide, Share2, RefreshCw, VolumeX, Volume2, Square, Trash2, X } from 'lucide-react';
@@ -12,7 +12,7 @@ import { actionTestId, LOADING_STATE_MARKER } from '@almadar/core';
12
12
  import 'react-router-dom';
13
13
  import patternTileGeometry from '@almadar/core/patterns/pattern-tile-geometry.json';
14
14
 
15
- // node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
15
+ // ../../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
16
16
  function r(e) {
17
17
  var t, f2, n = "";
18
18
  if ("string" == typeof e || "number" == typeof e) n += e;
@@ -27,7 +27,7 @@ function clsx() {
27
27
  return n;
28
28
  }
29
29
 
30
- // node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.mjs
30
+ // ../../../../../node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.mjs
31
31
  var CLASS_PART_SEPARATOR = "-";
32
32
  var createClassGroupUtils = (config) => {
33
33
  const classMap = createClassMap(config);
@@ -2560,6 +2560,30 @@ var twMerge = extendTailwindMerge({
2560
2560
  function cn(...inputs) {
2561
2561
  return twMerge(clsx(inputs));
2562
2562
  }
2563
+ function useMediaQuery(query) {
2564
+ const subscribe = useCallback(
2565
+ (onChange) => {
2566
+ if (!hasMatchMedia()) return () => void 0;
2567
+ const mql = window.matchMedia(query);
2568
+ mql.addEventListener("change", onChange);
2569
+ return () => mql.removeEventListener("change", onChange);
2570
+ },
2571
+ [query]
2572
+ );
2573
+ return useSyncExternalStore(
2574
+ subscribe,
2575
+ () => hasMatchMedia() && window.matchMedia(query).matches,
2576
+ () => false
2577
+ );
2578
+ }
2579
+ function hasMatchMedia() {
2580
+ return typeof window !== "undefined" && typeof window.matchMedia === "function";
2581
+ }
2582
+
2583
+ // src/core/hooks/usePrefersReducedMotion.ts
2584
+ function usePrefersReducedMotion() {
2585
+ return useMediaQuery("(prefers-reduced-motion: reduce)");
2586
+ }
2563
2587
  createLogger("almadar:eventbus");
2564
2588
  createLogger("almadar:eventbus:subscribe");
2565
2589
  var EventBusContext = globalThis.__almadarUiEventBusContext ?? (globalThis.__almadarUiEventBusContext = createContext(null));
@@ -3120,6 +3144,7 @@ var Box = React16__default.forwardRef(
3120
3144
  texture = false,
3121
3145
  animateChanges = false,
3122
3146
  backdrop,
3147
+ marquee,
3123
3148
  onClick,
3124
3149
  onMouseEnter,
3125
3150
  onMouseLeave,
@@ -3207,6 +3232,7 @@ var Box = React16__default.forwardRef(
3207
3232
  position && positionStyles[position],
3208
3233
  isClickable && "cursor-pointer",
3209
3234
  isBand && "band",
3235
+ marquee?.clip && "proof-marquee motion-reduce:[mask-image:none]",
3210
3236
  className
3211
3237
  ),
3212
3238
  onClick: isClickable ? handleClick : void 0,
@@ -3221,11 +3247,35 @@ var Box = React16__default.forwardRef(
3221
3247
  },
3222
3248
  isBand ? /* @__PURE__ */ jsxs(Fragment, { children: [
3223
3249
  bandLayers,
3224
- children
3225
- ] }) : children
3250
+ marquee ? /* @__PURE__ */ jsx(MarqueeTrack, { marquee, children }) : children
3251
+ ] }) : marquee ? /* @__PURE__ */ jsx(MarqueeTrack, { marquee, children }) : children
3226
3252
  );
3227
3253
  }
3228
3254
  );
3255
+ function MarqueeTrack({ marquee, children }) {
3256
+ const reduced = usePrefersReducedMotion();
3257
+ const copyRef = useRef(null);
3258
+ const [width, setWidth] = useState(0);
3259
+ useLayoutEffect(() => {
3260
+ const node = copyRef.current;
3261
+ if (!node) return;
3262
+ const measure = () => setWidth(node.getBoundingClientRect().width);
3263
+ measure();
3264
+ const observer2 = new ResizeObserver(measure);
3265
+ observer2.observe(node);
3266
+ return () => observer2.disconnect();
3267
+ }, []);
3268
+ const moving = !reduced && width > 0 && marquee.speed > 0;
3269
+ const style = moving ? {
3270
+ animation: `almadar-marquee ${width / marquee.speed}s linear infinite`,
3271
+ animationDirection: marquee.direction === "end" ? "reverse" : "normal",
3272
+ "--marquee-distance": marquee.loop ? "50%" : "100%"
3273
+ } : {};
3274
+ return /* @__PURE__ */ jsxs("div", { "data-marquee-track": "", className: cn("proof-marquee-track hover:[animation-play-state:paused]", reduced && "w-full flex-wrap justify-center"), style, children: [
3275
+ /* @__PURE__ */ jsx("div", { ref: copyRef, className: "flex shrink-0 items-center", children }),
3276
+ marquee.loop && !reduced && /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "flex shrink-0 items-center", children })
3277
+ ] });
3278
+ }
3229
3279
  Box.displayName = "Box";
3230
3280
  var EMPTY_CHAIN = Object.freeze([]);
3231
3281
  var TraitScopeContext = createContext(null);
@@ -3867,6 +3917,7 @@ var en_default = {
3867
3917
  "status.archived": "Archived",
3868
3918
  "error.generic": "Something went wrong",
3869
3919
  "error.traitMountFailed": "{{trait}} failed to start",
3920
+ "error.serverRefused": "The server refused this page",
3870
3921
  "error.retry": "Try again",
3871
3922
  "error.notFound": "Not found",
3872
3923
  "error.loadFailed": "Failed to load: {{message}}",
@@ -3948,6 +3999,7 @@ var en_default = {
3948
3999
  "aria.closeMenu": "Close menu",
3949
4000
  "aria.openSidebar": "Open sidebar",
3950
4001
  "aria.openRow": "Open item {{position}}",
4002
+ "aria.scrollableBoard": "Scrollable board",
3951
4003
  "sidebar.expand": "Expand sidebar",
3952
4004
  "sidebar.collapse": "Collapse sidebar",
3953
4005
  "sidebar.close": "Close sidebar",
@@ -5039,6 +5091,7 @@ var en_default = {
5039
5091
  "agentActivity.change.trait-config-changed": "Changed the settings of {{orbitalName}}",
5040
5092
  "agentActivity.change.theme-changed": "Changed the theme of {{orbitalName}}",
5041
5093
  "agentActivity.llmResponse": "Raw LLM response",
5094
+ "agentActivity.unknown": "Unknown activity: {{kind}}",
5042
5095
  "agentActivity.llmDuration": "{{seconds}}s",
5043
5096
  "agentActivity.llmTokens": "{{prompt}} in / {{completion}} out tokens",
5044
5097
  "agentActivity.llmResponseLabel": "Response",
@@ -5080,7 +5133,13 @@ var en_default = {
5080
5133
  "debug.replayPause": "Pause",
5081
5134
  "debug.replayStep": "{{step}} / {{total}}",
5082
5135
  "stateMachine.inspect": "Inspect: pick a trait on the page",
5083
- "stateMachine.inspectHint": "Click a part of the page \xB7 Esc to stop"
5136
+ "stateMachine.inspectHint": "Click a part of the page \xB7 Esc to stop",
5137
+ "themeToggle.switchToLight": "Switch to light mode",
5138
+ "themeToggle.switchToDark": "Switch to dark mode",
5139
+ "themeToggle.light": "Light",
5140
+ "themeToggle.dark": "Dark",
5141
+ "agentActivity.toolDone": "{{tool}} \u2014 done",
5142
+ "agentActivity.toolFailed": "{{tool}} \u2014 failed"
5084
5143
  };
5085
5144
 
5086
5145
  // src/core/lib/format.ts
@@ -5201,6 +5260,7 @@ var ar_default = {
5201
5260
  "status.archived": "\u0645\u0624\u0631\u0634\u0641",
5202
5261
  "error.generic": "\u062D\u062F\u062B \u062E\u0637\u0623 \u0645\u0627",
5203
5262
  "error.traitMountFailed": "\u062A\u0639\u0630\u0651\u0631 \u0628\u062F\u0621 {{trait}}",
5263
+ "error.serverRefused": "\u0631\u0641\u0636 \u0627\u0644\u062E\u0627\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u0635\u0641\u062D\u0629",
5204
5264
  "error.retry": "\u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649",
5205
5265
  "error.notFound": "\u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F",
5206
5266
  "error.loadFailed": "\u0641\u0634\u0644 \u0627\u0644\u062A\u062D\u0645\u064A\u0644: {{message}}",
@@ -5279,6 +5339,7 @@ var ar_default = {
5279
5339
  "aria.closeMenu": "\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0642\u0627\u0626\u0645\u0629",
5280
5340
  "aria.openSidebar": "\u0641\u062A\u062D \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
5281
5341
  "aria.openRow": "\u0641\u062A\u062D \u0627\u0644\u0639\u0646\u0635\u0631 {{position}}",
5342
+ "aria.scrollableBoard": "\u0644\u0648\u062D\u0629 \u0642\u0627\u0628\u0644\u0629 \u0644\u0644\u062A\u0645\u0631\u064A\u0631",
5282
5343
  "sidebar.expand": "\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
5283
5344
  "sidebar.collapse": "\u0637\u064A \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
5284
5345
  "sidebar.close": "\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
@@ -6374,6 +6435,7 @@ var ar_default = {
6374
6435
  "agentActivity.change.trait-config-changed": "\u062A\u0645 \u062A\u063A\u064A\u064A\u0631 \u0625\u0639\u062F\u0627\u062F\u0627\u062A {{orbitalName}}",
6375
6436
  "agentActivity.change.theme-changed": "\u062A\u0645 \u062A\u063A\u064A\u064A\u0631 \u0633\u0645\u0629 {{orbitalName}}",
6376
6437
  "agentActivity.llmResponse": "\u0627\u0633\u062A\u062C\u0627\u0628\u0629 LLM \u062E\u0627\u0645",
6438
+ "agentActivity.unknown": "\u0646\u0634\u0627\u0637 \u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641: {{kind}}",
6377
6439
  "agentActivity.llmDuration": "{{seconds}} \u062B",
6378
6440
  "agentActivity.llmTokens": "{{prompt}} \u062F\u0627\u062E\u0644 / {{completion}} \u062E\u0627\u0631\u062C",
6379
6441
  "agentActivity.llmResponseLabel": "\u0627\u0644\u0627\u0633\u062A\u062C\u0627\u0628\u0629",
@@ -6415,7 +6477,13 @@ var ar_default = {
6415
6477
  "debug.replayPause": "\u0625\u064A\u0642\u0627\u0641 \u0645\u0624\u0642\u062A",
6416
6478
  "debug.replayStep": "{{step}} / {{total}}",
6417
6479
  "stateMachine.inspect": "\u0641\u062D\u0635: \u0627\u062E\u062A\u0631 \u0633\u0645\u0629 \u0645\u0646 \u0627\u0644\u0635\u0641\u062D\u0629",
6418
- "stateMachine.inspectHint": "\u0627\u0646\u0642\u0631 \u062C\u0632\u0621\u064B\u0627 \u0645\u0646 \u0627\u0644\u0635\u0641\u062D\u0629 \xB7 Esc \u0644\u0644\u0625\u064A\u0642\u0627\u0641"
6480
+ "stateMachine.inspectHint": "\u0627\u0646\u0642\u0631 \u062C\u0632\u0621\u064B\u0627 \u0645\u0646 \u0627\u0644\u0635\u0641\u062D\u0629 \xB7 Esc \u0644\u0644\u0625\u064A\u0642\u0627\u0641",
6481
+ "themeToggle.switchToLight": "\u0627\u0644\u062A\u0628\u062F\u064A\u0644 \u0625\u0644\u0649 \u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u0641\u0627\u062A\u062D",
6482
+ "themeToggle.switchToDark": "\u0627\u0644\u062A\u0628\u062F\u064A\u0644 \u0625\u0644\u0649 \u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u062F\u0627\u0643\u0646",
6483
+ "themeToggle.light": "\u0641\u0627\u062A\u062D",
6484
+ "themeToggle.dark": "\u062F\u0627\u0643\u0646",
6485
+ "agentActivity.toolDone": "{{tool}} \u2014 \u062A\u0645",
6486
+ "agentActivity.toolFailed": "{{tool}} \u2014 \u062A\u0639\u0630\u0651\u0631"
6419
6487
  };
6420
6488
 
6421
6489
  // src/core/locales/sl.json
@@ -6479,6 +6547,7 @@ var sl_default = {
6479
6547
  "status.archived": "Arhivirano",
6480
6548
  "error.generic": "Nekaj je \u0161lo narobe",
6481
6549
  "error.traitMountFailed": "{{trait}} se ni zagnal",
6550
+ "error.serverRefused": "Stre\u017Enik je zavrnil to stran",
6482
6551
  "error.retry": "Poskusite znova",
6483
6552
  "error.notFound": "Ni najdeno",
6484
6553
  "error.loadFailed": "Nalaganje ni uspelo: {{message}}",
@@ -6557,6 +6626,7 @@ var sl_default = {
6557
6626
  "aria.closeMenu": "Zapri meni",
6558
6627
  "aria.openSidebar": "Odpri stransko vrstico",
6559
6628
  "aria.openRow": "Odpri element {{position}}",
6629
+ "aria.scrollableBoard": "Drsljiva tabla",
6560
6630
  "sidebar.expand": "Raz\u0161iri stransko vrstico",
6561
6631
  "sidebar.collapse": "Strni stransko vrstico",
6562
6632
  "sidebar.close": "Zapri stransko vrstico",
@@ -7652,6 +7722,7 @@ var sl_default = {
7652
7722
  "agentActivity.change.trait-config-changed": "Spremenjene nastavitve {{orbitalName}}",
7653
7723
  "agentActivity.change.theme-changed": "Spremenjena tema {{orbitalName}}",
7654
7724
  "agentActivity.llmResponse": "Surov odgovor LLM",
7725
+ "agentActivity.unknown": "Neznana dejavnost: {{kind}}",
7655
7726
  "agentActivity.llmDuration": "{{seconds}} s",
7656
7727
  "agentActivity.llmTokens": "{{prompt}} vhodnih / {{completion}} izhodnih \u017Eetonov",
7657
7728
  "agentActivity.llmResponseLabel": "Odgovor",
@@ -7693,7 +7764,13 @@ var sl_default = {
7693
7764
  "debug.replayPause": "Premor",
7694
7765
  "debug.replayStep": "{{step}} / {{total}}",
7695
7766
  "stateMachine.inspect": "Pregled: izberi lastnost na strani",
7696
- "stateMachine.inspectHint": "Klikni del strani \xB7 Esc za konec"
7767
+ "stateMachine.inspectHint": "Klikni del strani \xB7 Esc za konec",
7768
+ "themeToggle.switchToLight": "Preklopi na svetli na\u010Din",
7769
+ "themeToggle.switchToDark": "Preklopi na temni na\u010Din",
7770
+ "themeToggle.light": "Svetla",
7771
+ "themeToggle.dark": "Temna",
7772
+ "agentActivity.toolDone": "{{tool}} \u2014 kon\u010Dano",
7773
+ "agentActivity.toolFailed": "{{tool}} \u2014 ni uspelo"
7697
7774
  };
7698
7775
  var { $meta: _meta2, ...coreMessages2 } = en_default;
7699
7776
  var withThemeToggle = (messages, labels) => ({
@@ -7869,9 +7946,9 @@ var variantStyles = {
7869
7946
  };
7870
7947
  variantStyles.destructive = variantStyles.danger;
7871
7948
  var sizeStyles = {
7872
- sm: "h-button-sm px-3 text-sm",
7873
- md: "h-button-md px-4 text-sm",
7874
- lg: "h-button-lg px-6 text-base"
7949
+ sm: "min-h-button-sm py-1 px-3 text-sm",
7950
+ md: "min-h-button-md py-1 px-4 text-sm",
7951
+ lg: "min-h-button-lg py-1 px-6 text-base"
7875
7952
  };
7876
7953
  var iconSizeStyles = {
7877
7954
  sm: "h-icon-default w-icon-default",
@@ -8529,6 +8606,22 @@ var Sparkline = ({
8529
8606
  );
8530
8607
  };
8531
8608
  Sparkline.displayName = "Sparkline";
8609
+
8610
+ // src/core/atoms/types.ts
8611
+ var COLOR_TOKEN_VARS = {
8612
+ primary: "var(--color-primary)",
8613
+ secondary: "var(--color-secondary)",
8614
+ success: "var(--color-success)",
8615
+ warning: "var(--color-warning)",
8616
+ error: "var(--color-error)",
8617
+ muted: "var(--color-muted)"
8618
+ };
8619
+ function isColorToken(value) {
8620
+ return Object.prototype.hasOwnProperty.call(COLOR_TOKEN_VARS, value);
8621
+ }
8622
+ function resolveColorToken(color) {
8623
+ return isColorToken(color) ? COLOR_TOKEN_VARS[color] : color;
8624
+ }
8532
8625
  var iconSizeMap = {
8533
8626
  sm: "lg",
8534
8627
  md: "xl",
@@ -9031,20 +9124,12 @@ var StatDisplay = ({
9031
9124
  );
9032
9125
  };
9033
9126
  StatDisplay.displayName = "StatDisplay";
9034
- var colorTokenVars = {
9035
- primary: "var(--color-primary)",
9036
- secondary: "var(--color-secondary)",
9037
- success: "var(--color-success)",
9038
- warning: "var(--color-warning)",
9039
- error: "var(--color-error)",
9040
- muted: "var(--color-muted)"
9041
- };
9042
9127
  var GradientDivider = ({
9043
9128
  color,
9044
9129
  className,
9045
9130
  ...rest
9046
9131
  }) => {
9047
- const centerColor = color ? color in colorTokenVars ? colorTokenVars[color] : color : "var(--color-primary)";
9132
+ const centerColor = color ? resolveColorToken(color) : "var(--color-primary)";
9048
9133
  return /* @__PURE__ */ jsx(
9049
9134
  Box,
9050
9135
  {
@@ -9522,14 +9607,6 @@ var GeometricPattern = ({
9522
9607
  );
9523
9608
  };
9524
9609
  GeometricPattern.displayName = "GeometricPattern";
9525
- var colorTokenVars2 = {
9526
- primary: "var(--color-primary)",
9527
- secondary: "var(--color-secondary)",
9528
- success: "var(--color-success)",
9529
- warning: "var(--color-warning)",
9530
- error: "var(--color-error)",
9531
- muted: "var(--color-muted)"
9532
- };
9533
9610
  function ArchSVG({
9534
9611
  facing,
9535
9612
  w,
@@ -9667,7 +9744,7 @@ var EdgeDecoration = ({
9667
9744
  }) => {
9668
9745
  const id = useId();
9669
9746
  const Variant = VARIANT_MAP[variant];
9670
- const resolvedColor = color in colorTokenVars2 ? colorTokenVars2[color] : color;
9747
+ const resolvedColor = resolveColorToken(color);
9671
9748
  const sides = side === "both" ? ["left", "right"] : [side];
9672
9749
  return /* @__PURE__ */ jsx(Fragment, { children: sides.map((s) => /* @__PURE__ */ jsx(
9673
9750
  "svg",
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { openLocalKernel, nativeMemoryPersistence } from './chunk-3VZ36ZKO.js';
2
+ import { openLocalKernel, nativeMemoryPersistence } from './chunk-ZDRDJKYB.js';
3
3
  import './chunk-G7DCAZ22.js';
4
4
  import { existsSync, readFileSync, mkdtempSync, writeFileSync, mkdirSync, rmSync } from 'fs';
5
5
  import { createRequire } from 'module';
@@ -107,7 +107,7 @@ async function loadFreshClientKernel() {
107
107
  async function warmKernel() {
108
108
  if (!KERNEL_AVAILABLE) return;
109
109
  await KERNEL_ENGINE.loadModule();
110
- await import('./kernel-client-TZKGHJRY.js');
110
+ await import('./kernel-client-NMZ56JVU.js');
111
111
  }
112
112
  function statelessKernelTransport(schema) {
113
113
  let template;
@@ -197,6 +197,8 @@ interface UISlotManager {
197
197
  * inlined as JSX inside the layout's pattern, not writing slots.
198
198
  */
199
199
  updateTraitContent: (traitName: string, content: Omit<SlotContent, 'id' | 'sourceTrait'>) => string;
200
+ /** The page's declared trait order, which multi-writer slots stack by (not by write timing). */
201
+ setDeclaredTraitOrder: (traits: readonly string[]) => void;
200
202
  }
201
203
  declare const DEFAULT_SLOTS: Partial<Record<UISlot, SlotContent | null>>;
202
204
  /**