@almadar/shell-web 1.1.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 (91) 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/FlowCanvas-J54627TC.js +23 -0
  8. package/dist/{FlowCanvas-VWUPMBKB.css → FlowCanvas-R4LL3KRI.css} +1 -1
  9. package/dist/{GameAudioProvider-D7wo5ryN.d.ts → GameAudioProvider-BgWOOYT3.d.ts} +15 -20
  10. package/dist/{KernelEngineContext-CPeWQMAz.d.ts → KernelEngineContext-BPx-q0iw.d.ts} +1 -1
  11. package/dist/{LayersPanel-M2LHWUFF.js → LayersPanel-PSXI4EHG.js} +4 -4
  12. package/dist/ModuleCard-TNRLL45H.js +6 -0
  13. package/dist/{OrbInspector-VMTMZHNQ.css → OrbInspector-2EGVZLOJ.css} +1 -1
  14. package/dist/OrbInspector-UBEQWWZ2.js +23 -0
  15. package/dist/{parseLessonSegments-GpCeMrb2.d.ts → SegmentRenderer-BAQ6Jwf6.d.ts} +4 -20
  16. package/dist/{Select-C2Uq6t86.d.ts → Select-BJ8Fgc8A.d.ts} +1 -1
  17. package/dist/{UISlotContext-Dl_ewwCI.d.ts → UISlotContext-7r0SQdTL.d.ts} +1 -1
  18. package/dist/UISlotRenderer-5OURMAP2.js +23 -0
  19. package/dist/{UISlotRenderer-BIS6KT7T.css → UISlotRenderer-SJBSQGBQ.css} +1 -1
  20. package/dist/auth/react/index.js +7 -6
  21. package/dist/avl/index.css +1 -1
  22. package/dist/avl/index.js +31 -31
  23. package/dist/{chunk-AE7VCQB6.js → chunk-2LNXLMK3.js} +2 -2
  24. package/dist/{chunk-REXYVBUO.js → chunk-3DA36FOA.js} +1 -1
  25. package/dist/{chunk-FAKU5F62.js → chunk-3UQNFRYV.js} +2 -5
  26. package/dist/{chunk-AGXD77SL.js → chunk-3YUMGEEW.js} +1 -1
  27. package/dist/{chunk-OWNG4JZI.js → chunk-6RXP5ZXE.js} +7 -7
  28. package/dist/{chunk-VUIACGDU.js → chunk-7UCL26QB.js} +4 -4
  29. package/dist/{chunk-57DC34LY.js → chunk-AL2XXMYR.js} +2 -2
  30. package/dist/{chunk-YHMRX6YA.js → chunk-ANTJUQRD.js} +53 -13
  31. package/dist/{chunk-P4ZFUQFF.js → chunk-AZ74UPG6.js} +4 -1
  32. package/dist/{chunk-YYIHRIDH.js → chunk-B23EZH2P.js} +3 -3
  33. package/dist/{chunk-AGVSO4WY.js → chunk-CCO2ZH7F.js} +3 -3
  34. package/dist/{chunk-4YXBKHHM.js → chunk-D5FJU4XC.js} +87 -16
  35. package/dist/{chunk-7N6ZPHQ5.js → chunk-DPDKBY6Z.js} +1 -1
  36. package/dist/{chunk-A2LR6VQQ.js → chunk-ECC3WQIB.js} +9 -93
  37. package/dist/{chunk-VO2TTLS5.js → chunk-GHAF7QUD.js} +1 -1
  38. package/dist/{chunk-M74BCDBQ.js → chunk-HA2BYO5E.js} +1 -1
  39. package/dist/{chunk-ILQXJ2AR.js → chunk-JEN4EIUF.js} +1 -1
  40. package/dist/{chunk-UTDC2NEA.js → chunk-KTYOYEVA.js} +1 -1
  41. package/dist/{chunk-VHC2M26B.js → chunk-LINJRTNB.js} +2 -2
  42. package/dist/{chunk-2WGR4TDJ.js → chunk-LKL5RULQ.js} +5 -108
  43. package/dist/{chunk-UU57VNS2.js → chunk-PWXZN5G5.js} +2 -2
  44. package/dist/{chunk-4YJ53G7S.js → chunk-RDPELAFQ.js} +4 -4
  45. package/dist/{chunk-PRXQGGCO.js → chunk-S3LS3B7N.js} +1 -1
  46. package/dist/{chunk-MS4K3K2R.js → chunk-TAEOMNDK.js} +996 -456
  47. package/dist/{chunk-3S54FWRC.js → chunk-UFQLHCFJ.js} +1 -1
  48. package/dist/{chunk-PRLHKBXG.js → chunk-V5SVGUYN.js} +2 -2
  49. package/dist/components/index.css +1 -1
  50. package/dist/components/index.d.ts +155 -21
  51. package/dist/components/index.js +25 -25
  52. package/dist/context/index.d.ts +2 -2
  53. package/dist/context/index.js +5 -5
  54. package/dist/core.d.ts +21 -4
  55. package/dist/core.js +1 -1
  56. package/dist/{fx-Br8zjvu9.d.ts → fx-Bx5RqplG.d.ts} +4 -1
  57. package/dist/hooks/index.d.ts +8 -8
  58. package/dist/hooks/index.js +6 -6
  59. package/dist/{katexPlugin-FA7NX4PE.css → katexPlugin-BUHVNRBJ.css} +1 -1
  60. package/dist/{kernel-client-JW6OH5FX.js → kernel-client-NMZ56JVU.js} +36 -3
  61. package/dist/{kernel-wire-DGAySGhX.d.ts → kernel-wire-CRsHtLsf.d.ts} +1 -1
  62. package/dist/lib/index.d.ts +3 -3
  63. package/dist/lib/index.js +434 -2
  64. package/dist/providers/index.css +1 -1
  65. package/dist/providers/index.d.ts +5 -5
  66. package/dist/providers/index.js +19 -19
  67. package/dist/renderer/index.d.ts +3 -79
  68. package/dist/renderer/index.js +2 -2
  69. package/dist/runtime/index.css +1 -1
  70. package/dist/runtime/index.d.ts +3 -1
  71. package/dist/runtime/index.js +18 -18
  72. package/dist/ssr/index.cjs +105 -28
  73. package/dist/ssr/index.js +106 -29
  74. package/dist/test-support.js +1 -1
  75. package/dist/{useUISlots-CiobNFGb.d.ts → useUISlots-BLcGd__D.d.ts} +2 -0
  76. package/dist/{verificationRegistry-oopV1J1n.d.ts → verificationRegistry-BLuQU1JV.d.ts} +1 -1
  77. package/package.json +9 -9
  78. package/src/core/locales/ar.json +10 -1
  79. package/src/core/locales/en.json +10 -1
  80. package/src/core/locales/sl.json +10 -1
  81. package/tailwind-preset.cjs +8 -4
  82. package/dist/AvlGlyph-PIXU6QH5.js +0 -5
  83. package/dist/AvlStateMachine-CKGMECMG.js +0 -8
  84. package/dist/AvlTransitionDetail-QZX6G5KJ.js +0 -10
  85. package/dist/AvlTransitionExplainer-26WLEIC6.js +0 -11
  86. package/dist/BehaviorView-JLZ4PKWY.js +0 -10
  87. package/dist/FlowCanvas-RPII4V24.js +0 -23
  88. package/dist/ModuleCard-NJD6JQGD.js +0 -6
  89. package/dist/OrbInspector-OWWKPOBF.js +0 -23
  90. package/dist/UISlotRenderer-PY7FIJXN.js +0 -23
  91. /package/dist/{katexPlugin-NCDKOOQY.js → katexPlugin-WGJ4JFZU.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { PatternConfig, FieldValue, EntityRow, UISlot } from '@almadar/core';
2
- export { PatternConfig, UISlot } from '@almadar/core';
2
+ export { EventResponse, PatternConfig, UISlot } from '@almadar/core';
3
3
  import { PatternPropDef } from '@almadar/core/patterns';
4
4
  import * as React from 'react';
5
5
 
@@ -27,27 +27,6 @@ interface MappedPattern {
27
27
  /** Validated and normalized props */
28
28
  validatedProps: Record<string, FieldValue>;
29
29
  }
30
- /**
31
- * Response from server after processing an event.
32
- * This is the unified response format for both Builder and compiled shells.
33
- */
34
- interface EventResponse {
35
- /** Whether the event was processed successfully */
36
- success: boolean;
37
- /** New state after transition (if transition occurred) */
38
- newState?: string;
39
- /** Data fetched by server effects (e.g., { Task: [...] }) */
40
- data?: Record<string, EntityRow[]>;
41
- /** Results of individual effect executions (for debugging) */
42
- effectResults?: Array<{
43
- effect: string;
44
- success: boolean;
45
- data?: FieldValue;
46
- error?: string;
47
- }>;
48
- /** Error message if success is false */
49
- error?: string;
50
- }
51
30
  /**
52
31
  * Configuration for the client effect executor.
53
32
  * Provides implementations for each effect type.
@@ -357,61 +336,6 @@ declare function useClientEffectConfig(): ClientEffectExecutorConfig;
357
336
  */
358
337
  declare function useClientEffectConfigOptional(): ClientEffectExecutorConfig | null;
359
338
 
360
- /**
361
- * Data Resolver
362
- *
363
- * Resolves entity data for pattern rendering.
364
- * Supports multiple data sources with priority:
365
- * 1. Server-provided data (from EventResponse.data)
366
- * 2. Entity store (Builder in-memory mock data)
367
- * 3. Empty array (fallback)
368
- *
369
- * Used by both Builder's PatternRenderer and compiled shell's UISlotRenderer.
370
- *
371
- * @packageDocumentation
372
- */
373
-
374
- /**
375
- * Resolve entity data from available sources.
376
- *
377
- * Priority:
378
- * 1. fetchedData (from server response) - highest priority
379
- * 2. entityStore (Builder mock data)
380
- * 3. Empty array (fallback)
381
- *
382
- * @param entityName - Name of the entity to resolve data for
383
- * @param context - Data context with available sources
384
- * @returns Resolved data with loading state
385
- *
386
- * @example
387
- * ```typescript
388
- * const { data, loading } = resolveEntityData('Task', {
389
- * fetchedData: response.data,
390
- * entityStore: mockStore
391
- * });
392
- * ```
393
- */
394
- declare function resolveEntityData(entityName: string, context: DataContext): DataResolution;
395
- /**
396
- * Resolve entity data with query filtering.
397
- *
398
- * Applies query singleton filters if available.
399
- *
400
- * @param entityName - Name of the entity
401
- * @param queryRef - Optional query reference for filtering
402
- * @param context - Data context
403
- * @returns Filtered resolved data
404
- */
405
- declare function resolveEntityDataWithQuery(entityName: string, queryRef: string | undefined, context: DataContext): DataResolution;
406
- /**
407
- * Get a single entity record by ID.
408
- */
409
- declare function resolveEntityById(entityName: string, id: string | number, context: DataContext): EntityRow | null;
410
- /**
411
- * Check if any entities exist for a given entity name.
412
- */
413
- declare function hasEntities(entityName: string, context: DataContext): boolean;
414
-
415
339
  /**
416
340
  * Slot Definitions
417
341
  *
@@ -461,5 +385,5 @@ declare const ALL_SLOTS: UISlot[];
461
385
  */
462
386
  declare function initializePatterns(): number;
463
387
 
464
- export { ALL_SLOTS, ClientEffectConfigContext, ClientEffectConfigProvider, SLOT_DEFINITIONS, executeClientEffects, getInlineSlots, getKnownPatterns, getPatternDefinition, getPatternMapping, getPatternsByCategory, getRenderUIEffects, getSlotDefinition, hasEntities, initializePatternResolver, initializePatterns, isKnownPattern, isPortalSlot, parseClientEffect, parseClientEffects, resolveEntityById, resolveEntityData, resolveEntityDataWithQuery, resolvePattern, setComponentMapping, setPatternRegistry, useClientEffectConfig, useClientEffectConfigOptional, useClientEffects };
465
- export type { ClientEffect, ClientEffectExecutorConfig, DataContext, DataResolution, EventResponse, MappedPattern, SlotDefinition, SlotType, UseClientEffectsOptions, UseClientEffectsResult };
388
+ export { ALL_SLOTS, ClientEffectConfigContext, ClientEffectConfigProvider, SLOT_DEFINITIONS, executeClientEffects, getInlineSlots, getKnownPatterns, getPatternDefinition, getPatternMapping, getPatternsByCategory, getRenderUIEffects, getSlotDefinition, initializePatternResolver, initializePatterns, isKnownPattern, isPortalSlot, parseClientEffect, parseClientEffects, resolvePattern, setComponentMapping, setPatternRegistry, useClientEffectConfig, useClientEffectConfigOptional, useClientEffects };
389
+ export type { ClientEffect, ClientEffectExecutorConfig, DataContext, DataResolution, MappedPattern, SlotDefinition, SlotType, UseClientEffectsOptions, UseClientEffectsResult };
@@ -1,4 +1,4 @@
1
1
  "use client";
2
- export { ClientEffectConfigContext, ClientEffectConfigProvider, executeClientEffects, getKnownPatterns, getPatternDefinition, getPatternMapping, getPatternsByCategory, getRenderUIEffects, hasEntities, initializePatternResolver, initializePatterns, isKnownPattern, parseClientEffect, parseClientEffects, resolveEntityById, resolveEntityData, resolveEntityDataWithQuery, resolvePattern, setComponentMapping, setPatternRegistry, useClientEffectConfig, useClientEffectConfigOptional, useClientEffects } from '../chunk-A2LR6VQQ.js';
3
- export { ALL_SLOTS, SLOT_DEFINITIONS, getInlineSlots, getSlotDefinition, isPortalSlot } from '../chunk-P4ZFUQFF.js';
2
+ export { ClientEffectConfigContext, ClientEffectConfigProvider, executeClientEffects, getKnownPatterns, getPatternDefinition, getPatternMapping, getPatternsByCategory, getRenderUIEffects, initializePatternResolver, initializePatterns, isKnownPattern, parseClientEffect, parseClientEffects, resolvePattern, setComponentMapping, setPatternRegistry, useClientEffectConfig, useClientEffectConfigOptional, useClientEffects } from '../chunk-ECC3WQIB.js';
3
+ export { ALL_SLOTS, SLOT_DEFINITIONS, getInlineSlots, getSlotDefinition, isPortalSlot } from '../chunk-AZ74UPG6.js';
4
4
  import '../chunk-G7DCAZ22.js';
@@ -1,4 +1,4 @@
1
- /* node_modules/.pnpm/katex@0.16.47/node_modules/katex/dist/katex.min.css */
1
+ /* ../../../../../node_modules/.pnpm/katex@0.16.47/node_modules/katex/dist/katex.min.css */
2
2
  @font-face {
3
3
  font-display: block;
4
4
  font-family: KaTeX_AMS;
@@ -17,7 +17,7 @@ import { KernelLoader } from '../providers/index.js';
17
17
  import { KernelCanvas3DFactory, KernelSceneCanvasFactory } from '@almadar/shell-runtime/kernel/wire';
18
18
  export { S as SlotHostManifest, a as SlotHostRegion, b as assertUniqueSlotsPerHost } from '../slot-host-CPzrxLo9.js';
19
19
  export { p as profilerOnRender, u as usePerfBuffer } from '../perf-CKiBKbkw.js';
20
- import '../useUISlots-CiobNFGb.js';
20
+ import '../useUISlots-BLcGd__D.js';
21
21
  import '@almadar/core/patterns';
22
22
  import '@almadar/shell-browser/kv';
23
23
 
@@ -58,6 +58,8 @@ interface UseTraitStateMachineOptions {
58
58
  mountKey?: string;
59
59
  /** The route the page is opened at; the kernel's mounts for it are what the hook runs (EXEC-ENDPOINT-3). */
60
60
  routePath?: string;
61
+ /** The crumb of the `(navigate path payload { crumb })` that opened `routePath`, passed to the kernel as declared data (`$MOUNT.crumb`, EXEC-SEED-7). */
62
+ crumb?: string;
61
63
  /** The program's orbitals: the kernel is built from them. */
62
64
  orbitals: readonly OrbitalDefinition[];
63
65
  /** The program's `_metadata` (a compiled client program's operator sites and dispatch facts), handed to the kernel. */
@@ -1,25 +1,25 @@
1
1
  "use client";
2
2
  export { assertUniqueSlotsPerHost } from '../chunk-5QTYQTPS.js';
3
- export { EntitySchemaProvider, OrbPreview, ServerBridgeProvider, useEntitySchema, useEntitySchemaOptional, useServerBridge, useTraitStateMachine } from '../chunk-MS4K3K2R.js';
4
- import '../chunk-57DC34LY.js';
5
- import '../chunk-4YJ53G7S.js';
6
- import '../chunk-AGVSO4WY.js';
7
- import '../chunk-7N6ZPHQ5.js';
8
- import '../chunk-REXYVBUO.js';
9
- import '../chunk-AGXD77SL.js';
10
- import '../chunk-M74BCDBQ.js';
3
+ export { EntitySchemaProvider, OrbPreview, ServerBridgeProvider, useEntitySchema, useEntitySchemaOptional, useServerBridge, useTraitStateMachine } from '../chunk-TAEOMNDK.js';
4
+ import '../chunk-AL2XXMYR.js';
5
+ import '../chunk-RDPELAFQ.js';
6
+ import '../chunk-CCO2ZH7F.js';
7
+ import '../chunk-DPDKBY6Z.js';
8
+ import '../chunk-3DA36FOA.js';
9
+ import '../chunk-3YUMGEEW.js';
10
+ import '../chunk-HA2BYO5E.js';
11
11
  import '../chunk-PCR37T3U.js';
12
- import '../chunk-PRLHKBXG.js';
13
- import '../chunk-FAKU5F62.js';
14
- export { profilerOnRender, usePerfBuffer } from '../chunk-2WGR4TDJ.js';
12
+ import '../chunk-V5SVGUYN.js';
13
+ import '../chunk-3UQNFRYV.js';
14
+ export { profilerOnRender, usePerfBuffer } from '../chunk-LKL5RULQ.js';
15
15
  import '../chunk-TZZBINQY.js';
16
16
  export { PERF_NAMESPACE, clearPerf, perfEnd, perfStart, perfTime, wrapCallbackForEvent } from '../chunk-ZDRDJKYB.js';
17
- import '../chunk-PRXQGGCO.js';
18
- import '../chunk-VO2TTLS5.js';
19
- import '../chunk-AE7VCQB6.js';
17
+ import '../chunk-S3LS3B7N.js';
18
+ import '../chunk-GHAF7QUD.js';
19
+ import '../chunk-2LNXLMK3.js';
20
20
  import '../chunk-3BBUBJFF.js';
21
- import '../chunk-YHMRX6YA.js';
22
- import '../chunk-4YXBKHHM.js';
23
- import '../chunk-A2LR6VQQ.js';
24
- import '../chunk-P4ZFUQFF.js';
21
+ import '../chunk-ANTJUQRD.js';
22
+ import '../chunk-D5FJU4XC.js';
23
+ import '../chunk-ECC3WQIB.js';
24
+ import '../chunk-AZ74UPG6.js';
25
25
  import '../chunk-G7DCAZ22.js';
@@ -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",