@almadar/ui 6.53.1 → 6.54.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 (49) hide show
  1. package/dist/Typography-CFI7JUVE.js +5 -0
  2. package/dist/{UISlotRenderer-P7A4SZSK.js → UISlotRenderer-QUEG6WFM.js} +7 -7
  3. package/dist/avl/index.cjs +709 -970
  4. package/dist/avl/index.js +24 -20
  5. package/dist/{avl-3d-context-MAt_NuU9.d.ts → avl-3d-context-BpBKZIbc.d.ts} +1 -0
  6. package/dist/{chunk-DQTV6QVS.js → chunk-4HC5HRHB.js} +53 -2
  7. package/dist/{chunk-HB4C27KU.js → chunk-4UP6BZ4R.js} +1 -1
  8. package/dist/{chunk-UOTYAPV5.js → chunk-FJDS4SVD.js} +3 -3
  9. package/dist/{chunk-QVXLKFUQ.js → chunk-MCKFWPT2.js} +1 -1
  10. package/dist/{chunk-7KSLPY56.js → chunk-N2V4LHFQ.js} +1 -0
  11. package/dist/{chunk-HUG25TT3.js → chunk-U2FGMHQP.js} +448 -885
  12. package/dist/{chunk-53VTY5CC.js → chunk-U3CGKPOK.js} +253 -92
  13. package/dist/{chunk-7LM6I3NA.js → chunk-Z5IYJU44.js} +1 -0
  14. package/dist/{chunk-FUQASYEW.js → chunk-Z7JWXIRE.js} +2 -2
  15. package/dist/components/index.cjs +449 -879
  16. package/dist/components/index.d.ts +5 -1
  17. package/dist/components/index.js +15 -16
  18. package/dist/context/index.cjs +2 -0
  19. package/dist/context/index.js +3 -1
  20. package/dist/hooks/index.cjs +6 -0
  21. package/dist/hooks/index.d.ts +10 -1
  22. package/dist/hooks/index.js +3 -4
  23. package/dist/lib/drawable/three/index.cjs +2 -0
  24. package/dist/lib/drawable/three/index.d.ts +2 -2
  25. package/dist/lib/drawable/three/index.js +6 -6
  26. package/dist/lib/index.cjs +1 -0
  27. package/dist/lib/index.js +3 -3
  28. package/dist/locales/index.cjs +3 -0
  29. package/dist/locales/index.js +3 -1
  30. package/dist/providers/index.cjs +444 -879
  31. package/dist/providers/index.d.ts +1 -1
  32. package/dist/providers/index.js +8 -8
  33. package/dist/runtime/index.cjs +3992 -4237
  34. package/dist/runtime/index.d.ts +22 -4
  35. package/dist/runtime/index.js +15 -12
  36. package/dist/ssr/index.cjs +2 -1
  37. package/dist/ssr/index.js +2 -1
  38. package/locales/ar.json +1 -0
  39. package/locales/en.json +1 -0
  40. package/locales/sl.json +1 -0
  41. package/package.json +7 -6
  42. package/scripts/audit-tailwind-safelist.ts +21 -1
  43. package/tailwind-preset.cjs +5 -6
  44. package/themes/_fonts.css +6 -4
  45. package/themes/_presets.css +2 -0
  46. package/themes/almadar-heritage.css +373 -0
  47. package/themes/orb.css +373 -0
  48. package/dist/Typography-7QEWUTW3.js +0 -5
  49. package/dist/chunk-E37BYSXY.js +0 -51
@@ -17,6 +17,7 @@ var ui = require('@almadar/runtime/ui');
17
17
  var SyntaxHighlighter = require('react-syntax-highlighter/dist/esm/prism-light.js');
18
18
  var createHighlightElement = require('react-syntax-highlighter/dist/esm/create-element.js');
19
19
  var dark = require('react-syntax-highlighter/dist/esm/styles/prism/vsc-dark-plus.js');
20
+ var light = require('react-syntax-highlighter/dist/esm/styles/prism/vs.js');
20
21
  var syntax = require('@almadar/syntax');
21
22
  var i18n = require('@almadar/core/i18n');
22
23
  var langJson = require('react-syntax-highlighter/dist/esm/languages/prism/json.js');
@@ -103,6 +104,7 @@ var LucideIcons2__namespace = /*#__PURE__*/_interopNamespace(LucideIcons2);
103
104
  var SyntaxHighlighter__default = /*#__PURE__*/_interopDefault(SyntaxHighlighter);
104
105
  var createHighlightElement__default = /*#__PURE__*/_interopDefault(createHighlightElement);
105
106
  var dark__default = /*#__PURE__*/_interopDefault(dark);
107
+ var light__default = /*#__PURE__*/_interopDefault(light);
106
108
  var langJson__default = /*#__PURE__*/_interopDefault(langJson);
107
109
  var langJavascript__default = /*#__PURE__*/_interopDefault(langJavascript);
108
110
  var langTypescript__default = /*#__PURE__*/_interopDefault(langTypescript);
@@ -480,6 +482,7 @@ var init_avl_theme = __esm({
480
482
  "std-json": avlBlend("var(--color-success)", 60, "var(--color-foreground)"),
481
483
  "std-time": avlBlend("var(--color-info)", 50, "var(--color-success)"),
482
484
  "std-format": avlBlend("var(--color-success)", 60, "var(--color-background)"),
485
+ "std-i18n": avlBlend("var(--color-info)", 60, "var(--color-background)"),
483
486
  "std-async": avlBlend("var(--color-accent)", 50, "var(--color-error)"),
484
487
  "std-nn": avlBlend("var(--color-primary)", 60, "var(--color-accent)"),
485
488
  "std-tensor": avlBlend("var(--color-primary)", 60, "var(--color-info)"),
@@ -3632,6 +3635,7 @@ var init_en = __esm({
3632
3635
  "status.draft": "Draft",
3633
3636
  "status.archived": "Archived",
3634
3637
  "error.generic": "Something went wrong",
3638
+ "error.traitMountFailed": "{{trait}} failed to start",
3635
3639
  "error.retry": "Try again",
3636
3640
  "error.notFound": "Not found",
3637
3641
  "error.loadFailed": "Failed to load: {{message}}",
@@ -7346,7 +7350,7 @@ var init_Button = __esm({
7346
7350
  const testId = dataTestId ?? (action ? `action-${action}` : void 0);
7347
7351
  const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7348
7352
  busy && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "almadar-busy-indicator absolute inset-0 flex items-center justify-center", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Loader2, { className: "h-icon-default w-icon-default animate-spin" }) }),
7349
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("inline-flex items-center justify-center gap-2", busy && "almadar-busy-content"), children: [
7353
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("inline-flex flex-1 min-w-0 items-center [justify-content:inherit] gap-2", busy && "almadar-busy-content"), children: [
7350
7354
  resolvedLeftIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: resolvedLeftIcon }),
7351
7355
  (Array.isArray(children) ? children.length > 0 : Boolean(children)) ? children : label ? /* @__PURE__ */ jsxRuntime.jsx("span", { ...{ [INLINE_TEXT_ATTR]: "label" }, children: label }) : label,
7352
7356
  resolvedRightIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: resolvedRightIcon })
@@ -13358,12 +13362,13 @@ var init_Skeleton = __esm({
13358
13362
  Skeleton.displayName = "Skeleton";
13359
13363
  }
13360
13364
  });
13361
- function resolveMarkerExpression(expression, entity, config, state) {
13365
+ function resolveMarkerExpression(expression, entity, config, state, i18n) {
13362
13366
  const ctx = runtime.createContextFromBindings({
13363
13367
  entity,
13364
13368
  payload: {},
13365
13369
  state,
13366
- ...config !== void 0 ? { config } : {}
13370
+ ...config !== void 0 ? { config } : {},
13371
+ ...i18n !== void 0 ? { locale: i18n.locale, messages: i18n.messages } : {}
13367
13372
  });
13368
13373
  return runtime.interpolateValue(expression, ctx);
13369
13374
  }
@@ -13375,9 +13380,9 @@ function isPlainObject(value) {
13375
13380
  if (typeof value === "function") return false;
13376
13381
  return true;
13377
13382
  }
13378
- function cachedContainer(value, scopeTrait, entity, config, state) {
13383
+ function cachedContainer(value, scopeTrait, entity, config, state, i18n) {
13379
13384
  const hit = containerResolutionCache.get(value);
13380
- return hit !== void 0 && hit.entity === entity && hit.config === config && hit.state === state && hit.scopeTrait === scopeTrait ? hit.resolved : void 0;
13385
+ return hit !== void 0 && hit.entity === entity && hit.config === config && hit.state === state && hit.i18n === i18n && hit.scopeTrait === scopeTrait ? hit.resolved : void 0;
13381
13386
  }
13382
13387
  function isEvaluatorResolvedData(value) {
13383
13388
  return evaluatorResolvedData.has(value);
@@ -13408,14 +13413,14 @@ function subtreeHasMarker(value) {
13408
13413
  markerPresenceCache.set(value, found);
13409
13414
  return found;
13410
13415
  }
13411
- function walkValue(value, scopeTrait, entity, config, state) {
13416
+ function walkValue(value, scopeTrait, entity, config, state, i18n) {
13412
13417
  if (core.isRenderBindingMarker(value)) {
13413
13418
  const cached = markerResolutionCache.get(value);
13414
- if (cached !== void 0 && cached.entity === entity && cached.config === config && cached.state === state) {
13419
+ if (cached !== void 0 && cached.entity === entity && cached.config === config && cached.state === state && cached.i18n === i18n) {
13415
13420
  return { resolved: cached.resolved, changed: true };
13416
13421
  }
13417
- const resolved = resolveMarkerExpression(value.expression, entity, config, state);
13418
- markerResolutionCache.set(value, { entity, config, state, resolved });
13422
+ const resolved = resolveMarkerExpression(value.expression, entity, config, state, i18n);
13423
+ markerResolutionCache.set(value, { entity, config, state, i18n, resolved });
13419
13424
  if (resolved !== null && typeof resolved === "object" && !React93__namespace.default.isValidElement(resolved) && !(resolved instanceof Date)) {
13420
13425
  resolvedMarkerFree.add(resolved);
13421
13426
  evaluatorResolvedData.add(resolved);
@@ -13427,14 +13432,14 @@ function walkValue(value, scopeTrait, entity, config, state) {
13427
13432
  brandResolved(value);
13428
13433
  return { resolved: value, changed: false };
13429
13434
  }
13430
- const cachedArray = cachedContainer(value, scopeTrait, entity, config, state);
13435
+ const cachedArray = cachedContainer(value, scopeTrait, entity, config, state, i18n);
13431
13436
  if (cachedArray !== void 0) return { resolved: cachedArray, changed: true };
13432
13437
  const out = [];
13433
13438
  let changed = false;
13434
13439
  for (const item of value) {
13435
13440
  const element = item;
13436
13441
  const wasMarker = core.isRenderBindingMarker(element);
13437
- const { resolved, changed: itemChanged } = walkValue(element, scopeTrait, entity, config, state);
13442
+ const { resolved, changed: itemChanged } = walkValue(element, scopeTrait, entity, config, state, i18n);
13438
13443
  if (wasMarker && Array.isArray(resolved)) {
13439
13444
  out.push(...resolved);
13440
13445
  changed = true;
@@ -13445,7 +13450,7 @@ function walkValue(value, scopeTrait, entity, config, state) {
13445
13450
  }
13446
13451
  brandResolved(out);
13447
13452
  if (!changed) return { resolved: value, changed: false };
13448
- containerResolutionCache.set(value, { entity, config, state, scopeTrait, resolved: out });
13453
+ containerResolutionCache.set(value, { entity, config, state, i18n, scopeTrait, resolved: out });
13449
13454
  return { resolved: out, changed: true };
13450
13455
  }
13451
13456
  if (isPlainObject(value)) {
@@ -13457,37 +13462,37 @@ function walkValue(value, scopeTrait, entity, config, state) {
13457
13462
  if (typeof sourceTrait === "string" && sourceTrait !== scopeTrait) {
13458
13463
  return { resolved: value, changed: false };
13459
13464
  }
13460
- const cachedObject = cachedContainer(value, scopeTrait, entity, config, state);
13465
+ const cachedObject = cachedContainer(value, scopeTrait, entity, config, state, i18n);
13461
13466
  if (cachedObject !== void 0) return { resolved: cachedObject, changed: true };
13462
13467
  const out = {};
13463
13468
  let changed = false;
13464
13469
  for (const [key, item] of Object.entries(value)) {
13465
- const { resolved, changed: itemChanged } = walkValue(item, scopeTrait, entity, config, state);
13470
+ const { resolved, changed: itemChanged } = walkValue(item, scopeTrait, entity, config, state, i18n);
13466
13471
  out[key] = resolved;
13467
13472
  if (itemChanged) changed = true;
13468
13473
  }
13469
13474
  brandResolved(out);
13470
13475
  if (!changed) return { resolved: value, changed: false };
13471
- containerResolutionCache.set(value, { entity, config, state, scopeTrait, resolved: out });
13476
+ containerResolutionCache.set(value, { entity, config, state, i18n, scopeTrait, resolved: out });
13472
13477
  return { resolved: out, changed: true };
13473
13478
  }
13474
13479
  return { resolved: value, changed: false };
13475
13480
  }
13476
- function resolveRenderBindingMarkers(props, scopeTrait, entity, config, state) {
13481
+ function resolveRenderBindingMarkers(props, scopeTrait, entity, config, state, i18n) {
13477
13482
  if (props === null || typeof props !== "object") return props;
13478
13483
  if (resolvedMarkerFree.has(props)) return props;
13479
- const cached = cachedContainer(props, scopeTrait, entity, config, state);
13484
+ const cached = cachedContainer(props, scopeTrait, entity, config, state, i18n);
13480
13485
  if (cached !== void 0) return cached;
13481
13486
  const out = {};
13482
13487
  let changed = false;
13483
13488
  for (const [key, value] of Object.entries(props)) {
13484
- const { resolved, changed: propChanged } = walkValue(value, scopeTrait, entity, config, state);
13489
+ const { resolved, changed: propChanged } = walkValue(value, scopeTrait, entity, config, state, i18n);
13485
13490
  out[key] = resolved;
13486
13491
  if (propChanged) changed = true;
13487
13492
  }
13488
13493
  brandResolved(out);
13489
13494
  if (!changed) return props;
13490
- containerResolutionCache.set(props, { entity, config, state, scopeTrait, resolved: out });
13495
+ containerResolutionCache.set(props, { entity, config, state, i18n, scopeTrait, resolved: out });
13491
13496
  return out;
13492
13497
  }
13493
13498
  var markerPresenceCache, markerResolutionCache, containerResolutionCache, resolvedMarkerFree, evaluatorResolvedData;
@@ -16695,6 +16700,35 @@ function withTokenTypes(node) {
16695
16700
  function renderWithTokenTypes({ rows, stylesheet, useInlineStyles }) {
16696
16701
  return rows.map((node, i) => createHighlightElement__default.default({ node: withTokenTypes(node), stylesheet, useInlineStyles, key: `code-segment-${i}` }));
16697
16702
  }
16703
+ function island(value, style) {
16704
+ return { type: "element", tagName: "span", properties: { className: [], "data-bidi-island": "", style }, children: [{ type: "text", value }] };
16705
+ }
16706
+ function splitLtrWords(value) {
16707
+ const out = [];
16708
+ let last = 0;
16709
+ for (const match of value.matchAll(LTR_WORD)) {
16710
+ const start = match.index ?? 0;
16711
+ if (start > last) out.push({ type: "text", value: value.slice(last, start) });
16712
+ out.push(island(match[0], LTR_ISLAND_STYLE));
16713
+ last = start + match[0].length;
16714
+ }
16715
+ if (last < value.length) out.push({ type: "text", value: value.slice(last) });
16716
+ return out;
16717
+ }
16718
+ function withBidiIslands(node) {
16719
+ if (node.type === "text") return splitLtrWords(String(node.value ?? ""));
16720
+ if (node.type !== "element") return [node];
16721
+ const classes = node.properties?.className;
16722
+ if (Array.isArray(classes) && classes.includes("string")) {
16723
+ return [{ ...node, properties: { ...node.properties, className: classes, "data-bidi-island": "", style: STRING_ISLAND_STYLE } }];
16724
+ }
16725
+ return [{ ...node, ...node.children ? { children: node.children.flatMap(withBidiIslands) } : {} }];
16726
+ }
16727
+ function renderRtlCode({ rows, stylesheet, useInlineStyles }) {
16728
+ return rows.map(
16729
+ (node, i) => withBidiIslands(node).map((n, j) => createHighlightElement__default.default({ node: n, stylesheet, useInlineStyles, key: `code-rtl-${i}-${j}` }))
16730
+ );
16731
+ }
16698
16732
  function tokenClassAt(layer, offset) {
16699
16733
  const walker = document.createTreeWalker(layer, NodeFilter.SHOW_TEXT);
16700
16734
  let pos = 0;
@@ -16751,10 +16785,9 @@ function useLanguageReady(language) {
16751
16785
  }, [language]);
16752
16786
  return ready;
16753
16787
  }
16754
- function resolveHighlightStyle(lang) {
16755
- if (lang === "orb") return orbStyle;
16756
- if (lang === "lolo") return loloStyle;
16757
- return dark__default.default;
16788
+ function resolveHighlightStyle(lang, scheme) {
16789
+ if (lang === "orb" || lang === "lolo") return HIGHLIGHT_STYLES[scheme][lang];
16790
+ return SCHEME_BASE[scheme];
16758
16791
  }
16759
16792
  function plainCodeColorOf(style) {
16760
16793
  return style['code[class*="language-"]']?.color ?? "#d4d4d4";
@@ -16789,7 +16822,7 @@ function translateProgram(source, language, lang) {
16789
16822
  }
16790
16823
  return source;
16791
16824
  }
16792
- var dynamicallyLoaded, codeLanguageLoader, orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, MONO_EDITOR_FONT, GHOST_COLOR, GUTTER_COLOR, caretOf, DIAGNOSTIC_ERROR_COLOR, DIAGNOSTIC_WARNING_COLOR, EDITOR_LINE_PX, log5, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, HIGHLIGHT_CAPACITY_BYTES, MONO_FONT_FAMILY, VIEWER_LINE_NUMBER_STYLE, CodeBlock;
16825
+ var dynamicallyLoaded, codeLanguageLoader, orbStyleOverrides, loloStyleOverrides, SCHEME_BASE, HIGHLIGHT_STYLES, MONO_EDITOR_FONT, GHOST_COLOR, GUTTER_COLOR, caretOf, LTR_WORD, LTR_ISLAND_STYLE, STRING_ISLAND_STYLE, DIAGNOSTIC_ERROR_COLOR, DIAGNOSTIC_WARNING_COLOR, EDITOR_LINE_PX, log5, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, DIFF_STYLE_FALLBACK, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, HIGHLIGHT_CAPACITY_BYTES, MONO_FONT_FAMILY, VIEWER_LINE_NUMBER_STYLE, VIEWER_LINE_NUMBER_STYLE_RTL, CodeBlock;
16793
16826
  var init_CodeBlock = __esm({
16794
16827
  "components/core/molecules/markdown/CodeBlock.tsx"() {
16795
16828
  init_cn();
@@ -16892,52 +16925,64 @@ var init_CodeBlock = __esm({
16892
16925
  SyntaxHighlighter__default.default.registerLanguage("lolo", syntax.loloLanguage);
16893
16926
  dynamicallyLoaded = /* @__PURE__ */ new Set();
16894
16927
  codeLanguageLoader = null;
16895
- orbStyleOverrides = {
16896
- "orb-binding": { color: syntax.ORB_COLORS.dark.binding, fontWeight: "bold" },
16897
- "orb-effect": { color: syntax.ORB_COLORS.dark.effect, fontWeight: "bold" },
16898
- "orb-event": { color: syntax.ORB_COLORS.dark.event },
16899
- "orb-slot": { color: syntax.ORB_COLORS.dark.uiSlot },
16900
- "orb-structural": { color: syntax.ORB_COLORS.dark.structural },
16901
- "orb-field-type": { color: syntax.ORB_COLORS.dark.fieldType },
16902
- "orb-persistence": { color: syntax.ORB_COLORS.dark.persistence },
16903
- "orb-pattern": { color: syntax.ORB_COLORS.dark.pattern },
16904
- "orb-behavior": { color: syntax.ORB_COLORS.dark.behavior },
16905
- "orb-unknown-op": { color: syntax.ORB_COLORS.dark.error, textDecoration: "wavy underline" },
16906
- "orb-op-arithmetic": { color: syntax.ORB_COLORS.dark.arithmetic, fontWeight: "bold" },
16907
- "orb-op-comparison": { color: syntax.ORB_COLORS.dark.comparison },
16908
- "orb-op-logic": { color: syntax.ORB_COLORS.dark.logic },
16909
- "orb-op-string": { color: syntax.ORB_COLORS.dark.string },
16910
- "orb-op-collection": { color: syntax.ORB_COLORS.dark.collection },
16911
- "orb-op-time": { color: syntax.ORB_COLORS.dark.time },
16912
- "orb-op-control": { color: syntax.ORB_COLORS.dark.control },
16913
- "orb-op-async": { color: syntax.ORB_COLORS.dark.async }
16914
- };
16915
- orbStyle = { ...dark__default.default, ...orbStyleOverrides };
16916
- loloStyleOverrides = {
16917
- "lolo-binding": { color: syntax.ORB_COLORS.dark.binding, fontWeight: "bold" },
16918
- "lolo-event": { color: syntax.ORB_COLORS.dark.event },
16919
- "lolo-effect": { color: syntax.ORB_COLORS.dark.effect, fontWeight: "bold" },
16920
- "keyword": { color: syntax.ORB_COLORS.dark.loloKeyword },
16921
- "lolo-constructor": { color: syntax.ORB_COLORS.dark.loloConstructor },
16922
- "lolo-arrow": { color: syntax.ORB_COLORS.dark.loloArrow },
16923
- "lolo-reference": { color: syntax.ORB_COLORS.dark.loloReference },
16924
- "lolo-type": { color: syntax.ORB_COLORS.dark.fieldType },
16925
- "lolo-persistence": { color: syntax.ORB_COLORS.dark.persistence },
16926
- "lolo-unknown-op": { color: syntax.ORB_COLORS.dark.error },
16927
- "lolo-op-arithmetic": { color: syntax.ORB_COLORS.dark.arithmetic, fontWeight: "bold" },
16928
- "lolo-op-comparison": { color: syntax.ORB_COLORS.dark.comparison },
16929
- "lolo-op-logic": { color: syntax.ORB_COLORS.dark.logic },
16930
- "lolo-op-string": { color: syntax.ORB_COLORS.dark.string },
16931
- "lolo-op-collection": { color: syntax.ORB_COLORS.dark.collection },
16932
- "lolo-op-time": { color: syntax.ORB_COLORS.dark.time },
16933
- "lolo-op-control": { color: syntax.ORB_COLORS.dark.control },
16934
- "lolo-op-async": { color: syntax.ORB_COLORS.dark.async }
16935
- };
16936
- loloStyle = { ...dark__default.default, ...loloStyleOverrides };
16928
+ orbStyleOverrides = (c) => ({
16929
+ "orb-binding": { color: c.binding, fontWeight: "bold" },
16930
+ "orb-effect": { color: c.effect, fontWeight: "bold" },
16931
+ "orb-event": { color: c.event },
16932
+ "orb-slot": { color: c.uiSlot },
16933
+ "orb-structural": { color: c.structural },
16934
+ "orb-field-type": { color: c.fieldType },
16935
+ "orb-persistence": { color: c.persistence },
16936
+ "orb-pattern": { color: c.pattern },
16937
+ "orb-behavior": { color: c.behavior },
16938
+ "orb-unknown-op": { color: c.error, textDecoration: "wavy underline" },
16939
+ "orb-op-arithmetic": { color: c.arithmetic, fontWeight: "bold" },
16940
+ "orb-op-comparison": { color: c.comparison },
16941
+ "orb-op-logic": { color: c.logic },
16942
+ "orb-op-string": { color: c.string },
16943
+ "orb-op-collection": { color: c.collection },
16944
+ "orb-op-time": { color: c.time },
16945
+ "orb-op-control": { color: c.control },
16946
+ "orb-op-async": { color: c.async }
16947
+ });
16948
+ loloStyleOverrides = (c) => ({
16949
+ "lolo-binding": { color: c.binding, fontWeight: "bold" },
16950
+ "lolo-event": { color: c.event },
16951
+ "lolo-effect": { color: c.effect, fontWeight: "bold" },
16952
+ "keyword": { color: c.loloKeyword },
16953
+ "lolo-constructor": { color: c.loloConstructor },
16954
+ "lolo-arrow": { color: c.loloArrow },
16955
+ "lolo-reference": { color: c.loloReference },
16956
+ "lolo-type": { color: c.fieldType },
16957
+ "lolo-persistence": { color: c.persistence },
16958
+ "lolo-unknown-op": { color: c.error },
16959
+ "lolo-op-arithmetic": { color: c.arithmetic, fontWeight: "bold" },
16960
+ "lolo-op-comparison": { color: c.comparison },
16961
+ "lolo-op-logic": { color: c.logic },
16962
+ "lolo-op-string": { color: c.string },
16963
+ "lolo-op-collection": { color: c.collection },
16964
+ "lolo-op-time": { color: c.time },
16965
+ "lolo-op-control": { color: c.control },
16966
+ "lolo-op-async": { color: c.async }
16967
+ });
16968
+ SCHEME_BASE = { dark: dark__default.default, light: light__default.default };
16969
+ HIGHLIGHT_STYLES = {
16970
+ dark: {
16971
+ orb: { ...dark__default.default, ...orbStyleOverrides(syntax.ORB_COLORS.dark) },
16972
+ lolo: { ...dark__default.default, ...loloStyleOverrides(syntax.ORB_COLORS.dark) }
16973
+ },
16974
+ light: {
16975
+ orb: { ...light__default.default, ...orbStyleOverrides(syntax.ORB_COLORS.light) },
16976
+ lolo: { ...light__default.default, ...loloStyleOverrides(syntax.ORB_COLORS.light) }
16977
+ }
16978
+ };
16937
16979
  MONO_EDITOR_FONT = 'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Courier New", monospace';
16938
16980
  GHOST_COLOR = "#7f848e";
16939
16981
  GUTTER_COLOR = "#858585";
16940
16982
  caretOf = (ta) => ta.selectionDirection === "backward" ? ta.selectionStart : ta.selectionEnd;
16983
+ LTR_WORD = /[A-Za-z0-9_$@?][A-Za-z0-9_$@?.!-]*/g;
16984
+ LTR_ISLAND_STYLE = { unicodeBidi: "isolate", direction: "ltr" };
16985
+ STRING_ISLAND_STYLE = { unicodeBidi: "plaintext" };
16941
16986
  DIAGNOSTIC_ERROR_COLOR = "#f14c4c";
16942
16987
  DIAGNOSTIC_WARNING_COLOR = "#cca700";
16943
16988
  EDITOR_LINE_PX = 19.5;
@@ -17037,7 +17082,7 @@ var init_CodeBlock = __esm({
17037
17082
  LINE_PROPS_FN = (n) => ({ "data-line": String(n - 1) });
17038
17083
  HIDDEN_LINE_NUMBERS = { display: "none" };
17039
17084
  HIGHLIGHT_CAPACITY_BYTES = 512 * 1024;
17040
- MONO_FONT_FAMILY = 'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Courier New", monospace';
17085
+ MONO_FONT_FAMILY = 'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Courier New", "IBM Plex Sans Arabic", "Noto Sans Arabic", monospace';
17041
17086
  VIEWER_LINE_NUMBER_STYLE = {
17042
17087
  minWidth: "2.5em",
17043
17088
  paddingRight: "1rem",
@@ -17046,6 +17091,15 @@ var init_CodeBlock = __esm({
17046
17091
  opacity: 0.5,
17047
17092
  fontVariantNumeric: "tabular-nums"
17048
17093
  };
17094
+ VIEWER_LINE_NUMBER_STYLE_RTL = {
17095
+ minWidth: "2.5em",
17096
+ paddingRight: 0,
17097
+ paddingLeft: "1rem",
17098
+ textAlign: "left",
17099
+ userSelect: "none",
17100
+ opacity: 0.5,
17101
+ fontVariantNumeric: "tabular-nums"
17102
+ };
17049
17103
  CodeBlock = React93__namespace.default.memo(
17050
17104
  ({
17051
17105
  code: rawCode,
@@ -17125,8 +17179,12 @@ var init_CodeBlock = __esm({
17125
17179
  }) => {
17126
17180
  const englishCode = typeof rawCode === "string" ? rawCode : String(rawCode ?? "");
17127
17181
  const naturalTabs = !editable && naturalLanguages && naturalLanguages.length > 1 ? naturalLanguages : void 0;
17128
- const [naturalLanguage, setNaturalLanguage] = React93.useState(() => naturalTabs?.[0] ?? "en");
17182
+ const { locale: pageLocale } = hooks.useTranslate();
17183
+ const [naturalLanguage, setNaturalLanguage] = React93.useState(
17184
+ () => naturalTabs?.find((lang) => lang === pageLocale) ?? naturalTabs?.[0] ?? "en"
17185
+ );
17129
17186
  const activeNaturalLanguage = naturalTabs?.includes(naturalLanguage) === true ? naturalLanguage : naturalTabs?.[0] ?? "en";
17187
+ const codeDir = naturalTabs && i18n.coreTables[activeNaturalLanguage].meta.rtl ? "rtl" : "ltr";
17130
17188
  const translationCache = React93.useMemo(() => /* @__PURE__ */ new Map(), [englishCode, files]);
17131
17189
  const translateFor = React93.useCallback(
17132
17190
  (source, sourceLanguage, cacheKey) => {
@@ -17165,11 +17223,12 @@ var init_CodeBlock = __esm({
17165
17223
  )
17166
17224
  }
17167
17225
  ) : null;
17168
- const activeStyle = resolveHighlightStyle(language);
17226
+ const activeStyle = resolveHighlightStyle(language, "dark");
17169
17227
  const overCapacity = code.length > HIGHLIGHT_CAPACITY_BYTES;
17170
17228
  const plainCodeColor = plainCodeColorOf(activeStyle);
17171
17229
  const eventBus = useEventBus();
17172
17230
  const { t } = hooks.useTranslate();
17231
+ const { resolvedMode } = context.useTheme();
17173
17232
  const scrollRef = React93.useRef(null);
17174
17233
  const codeRef = React93.useRef(null);
17175
17234
  const savedScrollLeftRef = React93.useRef(0);
@@ -17180,7 +17239,7 @@ var init_CodeBlock = __esm({
17180
17239
  const activeLanguage = activeFile?.language ?? language;
17181
17240
  const activeCode = activeFile ? translateFor(activeFile.code, activeLanguage, `file-${activeFileIndex}`) : code;
17182
17241
  const languageReady = useLanguageReady(activeLanguage);
17183
- const viewerStyle = resolveHighlightStyle(activeLanguage);
17242
+ const viewerStyle = resolveHighlightStyle(activeLanguage, resolvedMode);
17184
17243
  const viewerPlainCodeColor = plainCodeColorOf(viewerStyle);
17185
17244
  const diffLines = React93.useMemo(() => {
17186
17245
  if (propDiff && propDiff.length > 0) return propDiff;
@@ -17518,8 +17577,9 @@ var init_CodeBlock = __esm({
17518
17577
  wrapLines: true,
17519
17578
  wrapLongLines: wrap,
17520
17579
  showLineNumbers,
17521
- lineNumberStyle: VIEWER_LINE_NUMBER_STYLE,
17580
+ lineNumberStyle: codeDir === "rtl" ? VIEWER_LINE_NUMBER_STYLE_RTL : VIEWER_LINE_NUMBER_STYLE,
17522
17581
  lineProps: viewerLineProps,
17582
+ renderer: codeDir === "rtl" ? renderRtlCode : void 0,
17523
17583
  customStyle: {
17524
17584
  backgroundColor: "transparent",
17525
17585
  borderRadius: 0,
@@ -17529,13 +17589,15 @@ var init_CodeBlock = __esm({
17529
17589
  wordBreak: wrap ? "break-all" : "normal",
17530
17590
  fontFamily: MONO_FONT_FAMILY,
17531
17591
  fontSize: "12px",
17532
- lineHeight: "1.6"
17592
+ lineHeight: "1.6",
17593
+ direction: codeDir,
17594
+ textAlign: "start"
17533
17595
  },
17534
- codeTagProps: { style: { fontFamily: MONO_FONT_FAMILY, fontSize: "12px", lineHeight: "1.6" } },
17596
+ codeTagProps: { style: { fontFamily: MONO_FONT_FAMILY, fontSize: "12px", lineHeight: "1.6", direction: codeDir, textAlign: "start" } },
17535
17597
  children: activeCode
17536
17598
  }
17537
17599
  ),
17538
- [activeCode, viewerOverCapacity, viewerPlainCodeColor, activeLanguage, viewerStyle, wrap, showLineNumbers, viewerLineProps, languageReady]
17600
+ [activeCode, viewerOverCapacity, viewerPlainCodeColor, activeLanguage, viewerStyle, wrap, showLineNumbers, viewerLineProps, languageReady, codeDir]
17539
17601
  );
17540
17602
  const diffOverCapacity = React93.useMemo(
17541
17603
  () => !!diffLines && diffLines.reduce((n, l) => n + l.content.length + 1, 0) > HIGHLIGHT_CAPACITY_BYTES,
@@ -17805,33 +17867,35 @@ var init_CodeBlock = __esm({
17805
17867
  ]
17806
17868
  }
17807
17869
  ),
17808
- /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto bg-muted/20", style: { maxHeight }, dir: "ltr", children: diffLines ? /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", flexDirection: "column" }, className: "font-mono text-xs", children: diffRowElements }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-mono text-xs", children: viewerHighlightedElement }) })
17870
+ /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto bg-muted/20", style: { maxHeight }, dir: codeDir, children: diffLines ? /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", flexDirection: "column" }, className: "font-mono text-xs", children: diffRowElements }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-mono text-xs", children: viewerHighlightedElement }) })
17809
17871
  ] }) });
17810
17872
  }
17811
- const hasHeader = showLanguageBadge || effectiveCopy;
17873
+ const hasHeader = showLanguageBadge;
17874
+ const copyButton = effectiveCopy ? /* @__PURE__ */ jsxRuntime.jsx(
17875
+ Button,
17876
+ {
17877
+ variant: "ghost",
17878
+ size: "sm",
17879
+ onClick: handleCopy,
17880
+ className: `opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-foreground${hasHeader ? "" : " absolute top-2 end-2 z-10"}`,
17881
+ "aria-label": t("common.copy"),
17882
+ 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" })
17883
+ }
17884
+ ) : null;
17812
17885
  return /* @__PURE__ */ jsxRuntime.jsxs(Box, { ...domPassthrough(a11yRest), className: `relative group not-prose ${className || ""}`, style: { display: "flex", flexDirection: "column", height: "100%" }, children: [
17813
- hasHeader && /* @__PURE__ */ jsxRuntime.jsxs(
17886
+ hasHeader ? /* @__PURE__ */ jsxRuntime.jsxs(
17814
17887
  HStack,
17815
17888
  {
17816
17889
  justify: "between",
17817
17890
  align: "center",
17818
17891
  className: "px-3 py-2 bg-[var(--color-card)] rounded-t-container border-b border-border",
17892
+ "data-testid": "code-block-header",
17819
17893
  children: [
17820
- showLanguageBadge && /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", children: language }),
17821
- effectiveCopy && /* @__PURE__ */ jsxRuntime.jsx(
17822
- Button,
17823
- {
17824
- variant: "ghost",
17825
- size: "sm",
17826
- onClick: handleCopy,
17827
- className: "opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity text-muted-foreground hover:text-foreground",
17828
- "aria-label": t("common.copy"),
17829
- 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" })
17830
- }
17831
- )
17894
+ /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: "default", size: "sm", children: language }),
17895
+ copyButton
17832
17896
  ]
17833
17897
  }
17834
- ),
17898
+ ) : copyButton,
17835
17899
  naturalTabStrip,
17836
17900
  editable ? (
17837
17901
  /* GAP-77 / GAP-82 / GAP-83: editable mode = transparent textarea on
@@ -32488,7 +32552,7 @@ function DataList({
32488
32552
  return f3.variant === "badge" ? (
32489
32553
  // `format` applies here too — a boolean field badged
32490
32554
  // without it renders the raw "false" instead of "No".
32491
- /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: badgeVariantFor(String(v), f3.colorMap), children: formatValue2(v, f3.format, fmt2, relationsData?.[f3.name]) }, f3.name)
32555
+ /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: badgeVariantFor(String(v), f3.colorMap), children: valueLabelFor(formatValue2(v, f3.format, fmt2, relationsData?.[f3.name]), f3.labels) }, f3.name)
32492
32556
  ) : /* @__PURE__ */ jsxRuntime.jsx(
32493
32557
  Typography,
32494
32558
  {
@@ -32651,7 +32715,7 @@ function DataList({
32651
32715
  if (val === void 0 || val === null || val === "") return null;
32652
32716
  return /* @__PURE__ */ jsxRuntime.jsxs(HStack, { gap: "xs", className: "items-center flex-shrink-0", children: [
32653
32717
  field.icon && renderIconInput2(field.icon, { size: "xs" }),
32654
- /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: badgeVariantFor(String(val), field.colorMap), children: formatValue2(val, field.format, fmt2, relationsData?.[field.name]) })
32718
+ /* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: badgeVariantFor(String(val), field.colorMap), children: valueLabelFor(formatValue2(val, field.format, fmt2, relationsData?.[field.name]), field.labels) })
32655
32719
  ] }, field.name);
32656
32720
  })
32657
32721
  ] }),
@@ -33200,13 +33264,13 @@ var init_MapView = __esm({
33200
33264
  shadowSize: [41, 41]
33201
33265
  });
33202
33266
  L.Marker.prototype.options.icon = defaultIcon;
33203
- const { useEffect: useEffect81, useRef: useRef85, useCallback: useCallback107, useState: useState117 } = React93__namespace.default;
33267
+ const { useEffect: useEffect82, useRef: useRef85, useCallback: useCallback107, useState: useState118 } = React93__namespace.default;
33204
33268
  const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
33205
33269
  const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
33206
33270
  function MapUpdater({ centerLat, centerLng, zoom }) {
33207
33271
  const map = useMap();
33208
33272
  const prevRef = useRef85({ centerLat, centerLng, zoom });
33209
- useEffect81(() => {
33273
+ useEffect82(() => {
33210
33274
  const prev = prevRef.current;
33211
33275
  if (prev.centerLat !== centerLat || prev.centerLng !== centerLng || prev.zoom !== zoom) {
33212
33276
  map.setView([centerLat, centerLng], zoom);
@@ -33217,7 +33281,7 @@ var init_MapView = __esm({
33217
33281
  }
33218
33282
  function MapClickHandler({ onMapClick }) {
33219
33283
  const map = useMap();
33220
- useEffect81(() => {
33284
+ useEffect82(() => {
33221
33285
  if (!onMapClick) return;
33222
33286
  const handler = (e) => {
33223
33287
  onMapClick(e.latlng.lat, e.latlng.lng);
@@ -33248,7 +33312,7 @@ var init_MapView = __esm({
33248
33312
  }) {
33249
33313
  const contentSurface = providers.useContentSurface(surface);
33250
33314
  const eventBus = useEventBus2();
33251
- const [clickedPosition, setClickedPosition] = useState117(null);
33315
+ const [clickedPosition, setClickedPosition] = useState118(null);
33252
33316
  const handleMapClick = useCallback107((lat, lng) => {
33253
33317
  if (showClickedPin) {
33254
33318
  setClickedPosition({ lat, lng });
@@ -35890,7 +35954,7 @@ var init_DocSidebar = __esm({
35890
35954
  className: cn(
35891
35955
  "h-auto w-full justify-start rounded-interactive px-3 py-1.5 text-sm font-normal",
35892
35956
  depth > 0 && "ml-2",
35893
- item.active ? "bg-primary/8 text-foreground font-semibold" : "text-muted-foreground"
35957
+ item.active ? "bg-primary/[0.08] text-foreground font-semibold" : "text-muted-foreground"
35894
35958
  ),
35895
35959
  children: label
35896
35960
  }
@@ -44258,11 +44322,23 @@ var init_Header = __esm({
44258
44322
  variant = "mobile",
44259
44323
  look = "compact-bar",
44260
44324
  onLogoClick,
44325
+ brandHref,
44261
44326
  className,
44262
44327
  ...rest
44263
44328
  }) => {
44264
44329
  const { t } = hooks.useTranslate();
44265
44330
  const resolvedSearchPlaceholder = searchPlaceholder ?? t("common.search");
44331
+ const brandContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
44332
+ logo ? typeof logo === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Avatar, { src: logo, alt: brandName, size: "sm" }) : logo : logoSrc ? /* @__PURE__ */ jsxRuntime.jsx(Avatar, { src: logoSrc, alt: brandName, size: "sm" }) : null,
44333
+ brandName && /* @__PURE__ */ jsxRuntime.jsx(
44334
+ Typography,
44335
+ {
44336
+ variant: "h5",
44337
+ className: "text-lg text-foreground",
44338
+ children: brandName
44339
+ }
44340
+ )
44341
+ ] });
44266
44342
  const userInitials = userAvatar?.initials || userName?.[0]?.toUpperCase() || "U";
44267
44343
  return /* @__PURE__ */ jsxRuntime.jsxs(
44268
44344
  Box,
@@ -44289,7 +44365,16 @@ var init_Header = __esm({
44289
44365
  children: isMenuOpen ? /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.X, { size: 24 }) : /* @__PURE__ */ jsxRuntime.jsx(LucideIcons2.Menu, { size: 24 })
44290
44366
  }
44291
44367
  ),
44292
- /* @__PURE__ */ jsxRuntime.jsxs(
44368
+ brandHref ? /* @__PURE__ */ jsxRuntime.jsx(
44369
+ Button,
44370
+ {
44371
+ variant: "ghost",
44372
+ href: brandHref,
44373
+ "aria-label": brandName,
44374
+ className: "gap-2 px-0 hover:bg-transparent",
44375
+ children: brandContent
44376
+ }
44377
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
44293
44378
  HStack,
44294
44379
  {
44295
44380
  gap: "none",
@@ -44300,17 +44385,7 @@ var init_Header = __esm({
44300
44385
  ),
44301
44386
  ...pressableProps(onLogoClick),
44302
44387
  "aria-label": onLogoClick ? brandName : void 0,
44303
- children: [
44304
- logo ? typeof logo === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Avatar, { src: logo, alt: brandName, size: "sm" }) : logo : logoSrc ? /* @__PURE__ */ jsxRuntime.jsx(Avatar, { src: logoSrc, alt: brandName, size: "sm" }) : null,
44305
- brandName && /* @__PURE__ */ jsxRuntime.jsx(
44306
- Typography,
44307
- {
44308
- variant: "h5",
44309
- className: "text-lg text-foreground",
44310
- children: brandName
44311
- }
44312
- )
44313
- ]
44388
+ children: brandContent
44314
44389
  }
44315
44390
  )
44316
44391
  ] }),
@@ -54303,8 +54378,8 @@ var init_VersionDiff = __esm({
54303
54378
  }
54304
54379
  ),
54305
54380
  /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto bg-muted/20", style: { maxHeight: 600 }, children: isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "py-8", "data-testid": "version-diff-empty", children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { variant: "body2", color: "muted", align: "center", children: t("versionDiff.noChanges") }) }) : activeView === "side-by-side" ? /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "grid grid-cols-1 md:grid-cols-2", children: [
54306
- /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "border-b md:border-b-0 md:border-r border-border", "data-testid": "version-diff-before", children: renderColumn("before") }),
54307
- /* @__PURE__ */ jsxRuntime.jsx(Box, { "data-testid": "version-diff-after", children: renderColumn("after") })
54381
+ /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 overflow-x-auto border-b md:border-b-0 md:border-r border-border", "data-testid": "version-diff-before", children: renderColumn("before") }),
54382
+ /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "min-w-0 overflow-x-auto", "data-testid": "version-diff-after", children: renderColumn("after") })
54308
54383
  ] }) : /* @__PURE__ */ jsxRuntime.jsx(VStack, { gap: "none", className: "font-mono text-xs", children: shown.map((row, idx) => {
54309
54384
  if (row.kind === "header") return renderHeader(row.header, `i-h-${idx}`);
54310
54385
  if (row.kind === "gap") return renderGap(row, `i-g-${row.id}`);
@@ -54912,775 +54987,263 @@ var init_component_registry_generated = __esm({
54912
54987
  init_WizardNavigation();
54913
54988
  init_WizardProgress();
54914
54989
  COMPONENT_REGISTRY = {
54915
- get "Accordion"() {
54916
- return Accordion;
54917
- },
54918
- get "ActionPalette"() {
54919
- return ActionPalette;
54920
- },
54921
- get "ActionTile"() {
54922
- return ActionTile;
54923
- },
54924
- get "ActivationBlock"() {
54925
- return ActivationBlock;
54926
- },
54927
- get "AgentActivityFeed"() {
54928
- return AgentActivityFeed;
54929
- },
54930
- get "AgentActivityRow"() {
54931
- return AgentActivityRow;
54932
- },
54933
- get "AgentChatFeed"() {
54934
- return AgentChatFeed;
54935
- },
54936
- get "Alert"() {
54937
- return AlertPattern;
54938
- },
54939
- get "AlertPattern"() {
54940
- return AlertPattern;
54941
- },
54942
- get "AlgoGraphCanvas"() {
54943
- return AlgoGraphCanvas;
54944
- },
54945
- get "AlgorithmCanvas"() {
54946
- return AlgorithmCanvas;
54947
- },
54948
- get "AnimatedCounter"() {
54949
- return AnimatedCounter;
54950
- },
54951
- get "AnimatedGraphic"() {
54952
- return AnimatedGraphic;
54953
- },
54954
- get "AnimatedReveal"() {
54955
- return AnimatedReveal;
54956
- },
54957
- get "Aside"() {
54958
- return Aside;
54959
- },
54960
- get "AtlasImage"() {
54961
- return AtlasImage;
54962
- },
54963
- get "AtlasPanel"() {
54964
- return AtlasPanel;
54965
- },
54966
- get "AuthLayout"() {
54967
- return AuthLayout;
54968
- },
54969
- get "Avatar"() {
54970
- return Avatar;
54971
- },
54972
- get "Badge"() {
54973
- return Badge;
54974
- },
54975
- get "BehaviorView"() {
54976
- return exports.BehaviorView;
54977
- },
54978
- get "BiologyCanvas"() {
54979
- return BiologyCanvas;
54980
- },
54981
- get "BloomQuizBlock"() {
54982
- return BloomQuizBlock;
54983
- },
54984
- get "Box"() {
54985
- return BoxPattern;
54986
- },
54987
- get "BoxPattern"() {
54988
- return BoxPattern;
54989
- },
54990
- get "BranchingLogicBuilder"() {
54991
- return BranchingLogicBuilder;
54992
- },
54993
- get "Breadcrumb"() {
54994
- return Breadcrumb;
54995
- },
54996
- get "Button"() {
54997
- return ButtonPattern;
54998
- },
54999
- get "ButtonGroup"() {
55000
- return ButtonGroup;
55001
- },
55002
- get "ButtonPattern"() {
55003
- return ButtonPattern;
55004
- },
55005
- get "CalendarGrid"() {
55006
- return CalendarGrid;
55007
- },
55008
- get "Canvas"() {
55009
- return Canvas;
55010
- },
55011
- get "Canvas2D"() {
55012
- return Canvas2D;
55013
- },
55014
- get "Card"() {
55015
- return Card;
55016
- },
55017
- get "Carousel"() {
55018
- return Carousel;
55019
- },
55020
- get "Center"() {
55021
- return Center;
55022
- },
55023
- get "ChangeList"() {
55024
- return ChangeList;
55025
- },
55026
- get "Chart"() {
55027
- return Chart;
55028
- },
55029
- get "ChartLegend"() {
55030
- return ChartLegend;
55031
- },
55032
- get "ChatBar"() {
55033
- return ChatBar;
55034
- },
55035
- get "Checkbox"() {
55036
- return Checkbox;
55037
- },
55038
- get "ChemistryCanvas"() {
55039
- return ChemistryCanvas;
55040
- },
55041
- get "ChoiceButton"() {
55042
- return ChoiceButton;
55043
- },
55044
- get "CodeBlock"() {
55045
- return CodeBlock;
55046
- },
55047
- get "CodeRunnerPanel"() {
55048
- return CodeRunnerPanel;
55049
- },
55050
- get "CommandPalette"() {
55051
- return CommandPalette;
55052
- },
55053
- get "CommitRow"() {
55054
- return CommitRow;
55055
- },
55056
- get "ConditionalWrapper"() {
55057
- return ConditionalWrapper;
55058
- },
55059
- get "ConfettiEffect"() {
55060
- return ConfettiEffect;
55061
- },
55062
- get "ConfirmDialog"() {
55063
- return ConfirmDialog;
55064
- },
55065
- get "ConnectionBlock"() {
55066
- return ConnectionBlock;
55067
- },
55068
- get "Container"() {
55069
- return Container;
55070
- },
55071
- get "ContentRenderer"() {
55072
- return ContentRenderer;
55073
- },
55074
- get "ControlButton"() {
55075
- return ControlButton;
55076
- },
55077
- get "ControlGrid"() {
55078
- return ControlGrid;
55079
- },
55080
- get "CounterTemplate"() {
55081
- return CounterTemplate;
55082
- },
55083
- get "DashboardGrid"() {
55084
- return DashboardGrid;
55085
- },
55086
- get "DashboardLayout"() {
55087
- return DashboardLayout;
55088
- },
55089
- get "DataGrid"() {
55090
- return DataGrid;
55091
- },
55092
- get "DataList"() {
55093
- return DataList;
55094
- },
55095
- get "DateRangePicker"() {
55096
- return DateRangePicker;
55097
- },
55098
- get "DateRangeSelector"() {
55099
- return DateRangeSelector;
55100
- },
55101
- get "DayCell"() {
55102
- return DayCell;
55103
- },
55104
- get "DetailPanel"() {
55105
- return DetailPanel;
55106
- },
55107
- get "Dialog"() {
55108
- return Dialog;
55109
- },
55110
- get "DialogueBubble"() {
55111
- return DialogueBubble;
55112
- },
55113
- get "Divider"() {
55114
- return DividerPattern;
55115
- },
55116
- get "DividerPattern"() {
55117
- return DividerPattern;
55118
- },
55119
- get "DocBreadcrumb"() {
55120
- return DocBreadcrumb;
55121
- },
55122
- get "DocPagination"() {
55123
- return DocPagination;
55124
- },
55125
- get "DocSearch"() {
55126
- return DocSearch;
55127
- },
55128
- get "DocSidebar"() {
55129
- return DocSidebar;
55130
- },
55131
- get "DocTOC"() {
55132
- return DocTOC;
55133
- },
55134
- get "DockLayout"() {
55135
- return DockLayout;
55136
- },
55137
- get "DocumentDetails"() {
55138
- return DocumentDetails;
55139
- },
55140
- get "DocumentPanel"() {
55141
- return DocumentPanel;
55142
- },
55143
- get "DocumentViewer"() {
55144
- return DocumentViewer;
55145
- },
55146
- get "DrawFxLayer"() {
55147
- return DrawFxLayer;
55148
- },
55149
- get "DrawGroup"() {
55150
- return DrawGroup;
55151
- },
55152
- get "DrawMesh"() {
55153
- return DrawMesh;
55154
- },
55155
- get "DrawShape"() {
55156
- return DrawShape;
55157
- },
55158
- get "DrawShapeLayer"() {
55159
- return DrawShapeLayer;
55160
- },
55161
- get "DrawSkinnedMesh"() {
55162
- return DrawSkinnedMesh;
55163
- },
55164
- get "DrawSprite"() {
55165
- return DrawSprite;
55166
- },
55167
- get "DrawSpriteLayer"() {
55168
- return DrawSpriteLayer;
55169
- },
55170
- get "DrawText"() {
55171
- return DrawText;
55172
- },
55173
- get "DrawTextLayer"() {
55174
- return DrawTextLayer;
55175
- },
55176
- get "Drawer"() {
55177
- return Drawer;
55178
- },
55179
- get "DrawerSlot"() {
55180
- return DrawerSlot;
55181
- },
55182
- get "EdgeDecoration"() {
55183
- return EdgeDecoration;
55184
- },
55185
- get "EmojiPicker"() {
55186
- return EmojiPicker;
55187
- },
55188
- get "EmptyState"() {
55189
- return EmptyState;
55190
- },
55191
- get "ErrorBoundary"() {
55192
- return ErrorBoundary;
55193
- },
55194
- get "ErrorState"() {
55195
- return ErrorState;
55196
- },
55197
- get "FeatureCard"() {
55198
- return FeatureCard;
55199
- },
55200
- get "FeatureGrid"() {
55201
- return FeatureGrid;
55202
- },
55203
- get "FileTree"() {
55204
- return FileTree;
55205
- },
55206
- get "FilterGroup"() {
55207
- return FilterGroup;
55208
- },
55209
- get "FilterPill"() {
55210
- return FilterPill;
55211
- },
55212
- get "Flex"() {
55213
- return Flex;
55214
- },
55215
- get "FlipCard"() {
55216
- return FlipCard;
55217
- },
55218
- get "FlipContainer"() {
55219
- return FlipContainer;
55220
- },
55221
- get "FloatingActionButton"() {
55222
- return FloatingActionButton;
55223
- },
55224
- get "FloatingToolbar"() {
55225
- return FloatingToolbar;
55226
- },
55227
- get "Form"() {
55228
- return Form;
55229
- },
55230
- get "FormField"() {
55231
- return FormField;
55232
- },
55233
- get "FormLayout"() {
55234
- return FormLayout;
55235
- },
55236
- get "FormSectionHeader"() {
55237
- return FormSectionHeader;
55238
- },
55239
- get "FxOverlay"() {
55240
- return FxOverlay;
55241
- },
55242
- get "GameAudioCue"() {
55243
- return GameAudioCue;
55244
- },
55245
- get "GameAudioToggle"() {
55246
- return GameAudioToggle;
55247
- },
55248
- get "GameHud"() {
55249
- return GameHud;
55250
- },
55251
- get "GameIcon"() {
55252
- return GameIcon;
55253
- },
55254
- get "GameMenu"() {
55255
- return GameMenu;
55256
- },
55257
- get "GameShell"() {
55258
- return GameShell;
55259
- },
55260
- get "Gantt"() {
55261
- return Gantt;
55262
- },
55263
- get "GenericAppTemplate"() {
55264
- return GenericAppTemplate;
55265
- },
55266
- get "GeometricPattern"() {
55267
- return GeometricPattern;
55268
- },
55269
- get "GradientDivider"() {
55270
- return GradientDivider;
55271
- },
55272
- get "GraphCanvas"() {
55273
- return GraphCanvas;
55274
- },
55275
- get "GraphView"() {
55276
- return GraphView;
55277
- },
55278
- get "Grid"() {
55279
- return Grid;
55280
- },
55281
- get "HStack"() {
55282
- return HStack;
55283
- },
55284
- get "Header"() {
55285
- return Header;
55286
- },
55287
- get "HealthBar"() {
55288
- return HealthBar;
55289
- },
55290
- get "Icon"() {
55291
- return Icon;
55292
- },
55293
- get "IconButton"() {
55294
- return IconButtonPattern;
55295
- },
55296
- get "IconButtonPattern"() {
55297
- return IconButtonPattern;
55298
- },
55299
- get "Image"() {
55300
- return Image2;
55301
- },
55302
- get "ImportPreviewTree"() {
55303
- return ImportPreviewTree;
55304
- },
55305
- get "ImportProgress"() {
55306
- return ImportProgress;
55307
- },
55308
- get "ImportSourcePicker"() {
55309
- return ImportSourcePicker;
55310
- },
55311
- get "InfiniteScrollSentinel"() {
55312
- return InfiniteScrollSentinel;
55313
- },
55314
- get "Input"() {
55315
- return Input;
55316
- },
55317
- get "InputGroup"() {
55318
- return InputGroup;
55319
- },
55320
- get "JazariStateMachine"() {
55321
- return JazariStateMachine;
55322
- },
55323
- get "Label"() {
55324
- return LabelPattern;
55325
- },
55326
- get "LabelPattern"() {
55327
- return LabelPattern;
55328
- },
55329
- get "LawReferenceTooltip"() {
55330
- return LawReferenceTooltip;
55331
- },
55332
- get "LearningCanvas"() {
55333
- return LearningCanvas;
55334
- },
55335
- get "Lightbox"() {
55336
- return Lightbox;
55337
- },
55338
- get "LikertScale"() {
55339
- return LikertScale;
55340
- },
55341
- get "LineChart"() {
55342
- return LineChart2;
55343
- },
55344
- get "LoadingState"() {
55345
- return LoadingState;
55346
- },
55347
- get "MapView"() {
55348
- return MapView;
55349
- },
55350
- get "MarkdownContent"() {
55351
- return MarkdownContent;
55352
- },
55353
- get "MasterDetailLayout"() {
55354
- return MasterDetailLayout;
55355
- },
55356
- get "MathCanvas"() {
55357
- return MathCanvas;
55358
- },
55359
- get "MatrixQuestion"() {
55360
- return MatrixQuestion;
55361
- },
55362
- get "MediaGallery"() {
55363
- return MediaGallery;
55364
- },
55365
- get "Menu"() {
55366
- return Menu;
55367
- },
55368
- get "Meter"() {
55369
- return Meter;
55370
- },
55371
- get "Modal"() {
55372
- return Modal;
55373
- },
55374
- get "ModalSlot"() {
55375
- return ModalSlot;
55376
- },
55377
- get "ModuleCard"() {
55378
- return exports.ModuleCard;
55379
- },
55380
- get "Navigation"() {
55381
- return Navigation;
55382
- },
55383
- get "NumberStepper"() {
55384
- return NumberStepper;
55385
- },
55386
- get "OptionConstraintGroup"() {
55387
- return OptionConstraintGroup;
55388
- },
55389
- get "OrbitalVisualization"() {
55390
- return OrbitalVisualization;
55391
- },
55392
- get "Overlay"() {
55393
- return Overlay;
55394
- },
55395
- get "PageHeader"() {
55396
- return PageHeader;
55397
- },
55398
- get "PageTransition"() {
55399
- return PageTransition;
55400
- },
55401
- get "Pagination"() {
55402
- return Pagination;
55403
- },
55404
- get "PatternTile"() {
55405
- return PatternTile;
55406
- },
55407
- get "PhysicsCanvas"() {
55408
- return PhysicsCanvas;
55409
- },
55410
- get "Popover"() {
55411
- return Popover;
55412
- },
55413
- get "PositionedCanvas"() {
55414
- return PositionedCanvas;
55415
- },
55416
- get "Presence"() {
55417
- return Presence;
55418
- },
55419
- get "ProgressBar"() {
55420
- return ProgressBar;
55421
- },
55422
- get "ProgressDots"() {
55423
- return ProgressDots;
55424
- },
55425
- get "PullToRefresh"() {
55426
- return PullToRefresh;
55427
- },
55428
- get "QrScanner"() {
55429
- return QrScanner;
55430
- },
55431
- get "QuizBlock"() {
55432
- return QuizBlock;
55433
- },
55434
- get "Radio"() {
55435
- return Radio;
55436
- },
55437
- get "RangeSlider"() {
55438
- return RangeSlider;
55439
- },
55440
- get "ReflectionBlock"() {
55441
- return ReflectionBlock;
55442
- },
55443
- get "RelationSelect"() {
55444
- return RelationSelect;
55445
- },
55446
- get "RepeatableFormSection"() {
55447
- return RepeatableFormSection;
55448
- },
55449
- get "ReplyTree"() {
55450
- return ReplyTree;
55451
- },
55452
- get "RichTextEditor"() {
55453
- return RichTextEditor;
55454
- },
55455
- get "RuntimeDebugger"() {
55456
- return RuntimeDebugger;
55457
- },
55458
- get "ScaledDiagram"() {
55459
- return ScaledDiagram;
55460
- },
55461
- get "ScoreDisplay"() {
55462
- return ScoreDisplay;
55463
- },
55464
- get "SearchInput"() {
55465
- return SearchInput;
55466
- },
55467
- get "Section"() {
55468
- return Section;
55469
- },
55470
- get "SectionHeader"() {
55471
- return SectionHeader;
55472
- },
55473
- get "SegmentRenderer"() {
55474
- return SegmentRenderer;
55475
- },
55476
- get "Select"() {
55477
- return Select;
55478
- },
55479
- get "SequenceBar"() {
55480
- return SequenceBar;
55481
- },
55482
- get "SidePanel"() {
55483
- return SidePanel;
55484
- },
55485
- get "Sidebar"() {
55486
- return Sidebar;
55487
- },
55488
- get "SignaturePad"() {
55489
- return SignaturePad;
55490
- },
55491
- get "SimpleGrid"() {
55492
- return SimpleGrid;
55493
- },
55494
- get "Skeleton"() {
55495
- return Skeleton;
55496
- },
55497
- get "SocialProof"() {
55498
- return SocialProof;
55499
- },
55500
- get "SortableList"() {
55501
- return SortableList;
55502
- },
55503
- get "Spacer"() {
55504
- return SpacerPattern;
55505
- },
55506
- get "SpacerPattern"() {
55507
- return SpacerPattern;
55508
- },
55509
- get "Sparkline"() {
55510
- return Sparkline;
55511
- },
55512
- get "Spinner"() {
55513
- return Spinner;
55514
- },
55515
- get "Split"() {
55516
- return Split;
55517
- },
55518
- get "SplitPane"() {
55519
- return SplitPane;
55520
- },
55521
- get "Stack"() {
55522
- return Stack;
55523
- },
55524
- get "StarRating"() {
55525
- return StarRating;
55526
- },
55527
- get "StatBadge"() {
55528
- return StatBadge;
55529
- },
55530
- get "StatCard"() {
55531
- return StatCard;
55532
- },
55533
- get "StatDisplay"() {
55534
- return StatDisplay;
55535
- },
55536
- get "StateGraph"() {
55537
- return StateGraph;
55538
- },
55539
- get "StateJsonView"() {
55540
- return StateJsonView;
55541
- },
55542
- get "StateMachineView"() {
55543
- return StateMachineView;
55544
- },
55545
- get "StatusDot"() {
55546
- return StatusDot;
55547
- },
55548
- get "SubagentTracePanel"() {
55549
- return SubagentTracePanel;
55550
- },
55551
- get "SvgBranch"() {
55552
- return SvgBranch;
55553
- },
55554
- get "SvgConnection"() {
55555
- return SvgConnection;
55556
- },
55557
- get "SvgFlow"() {
55558
- return SvgFlow;
55559
- },
55560
- get "SvgGrid"() {
55561
- return SvgGrid;
55562
- },
55563
- get "SvgLobe"() {
55564
- return SvgLobe;
55565
- },
55566
- get "SvgMesh"() {
55567
- return SvgMesh;
55568
- },
55569
- get "SvgMorph"() {
55570
- return SvgMorph;
55571
- },
55572
- get "SvgNode"() {
55573
- return SvgNode;
55574
- },
55575
- get "SvgPulse"() {
55576
- return SvgPulse;
55577
- },
55578
- get "SvgRing"() {
55579
- return SvgRing;
55580
- },
55581
- get "SvgShield"() {
55582
- return SvgShield;
55583
- },
55584
- get "SvgStack"() {
55585
- return SvgStack;
55586
- },
55587
- get "SwipeableRow"() {
55588
- return SwipeableRow;
55589
- },
55590
- get "Switch"() {
55591
- return Switch;
55592
- },
55593
- get "TabbedContainer"() {
55594
- return TabbedContainer;
55595
- },
55596
- get "TableView"() {
55597
- return TableView;
55598
- },
55599
- get "Tabs"() {
55600
- return Tabs;
55601
- },
55602
- get "TagInput"() {
55603
- return TagInput;
55604
- },
55605
- get "TextHighlight"() {
55606
- return TextHighlight;
55607
- },
55608
- get "Textarea"() {
55609
- return Textarea;
55610
- },
55611
- get "ThemeToggle"() {
55612
- return ThemeToggle;
55613
- },
55614
- get "TimeSlotCell"() {
55615
- return TimeSlotCell;
55616
- },
55617
- get "Timeline"() {
55618
- return Timeline;
55619
- },
55620
- get "TimerDisplay"() {
55621
- return TimerDisplay;
55622
- },
55623
- get "Toast"() {
55624
- return Toast;
55625
- },
55626
- get "ToastSlot"() {
55627
- return ToastSlot;
55628
- },
55629
- get "Tooltip"() {
55630
- return Tooltip;
55631
- },
55632
- get "TopNavItem"() {
55633
- return TopNavItem;
55634
- },
55635
- get "TraitFrame"() {
55636
- return TraitFrame;
55637
- },
55638
- get "TraitSlot"() {
55639
- return TraitSlot;
55640
- },
55641
- get "TrendIndicator"() {
55642
- return TrendIndicator;
55643
- },
55644
- get "TypewriterText"() {
55645
- return TypewriterText;
55646
- },
55647
- get "Typography"() {
55648
- return Typography;
55649
- },
55650
- get "UISlotComponent"() {
55651
- return UISlotComponent;
55652
- },
55653
- get "UISlotRenderer"() {
55654
- return UISlotRenderer;
55655
- },
55656
- get "UploadDropZone"() {
55657
- return UploadDropZone;
55658
- },
55659
- get "VStack"() {
55660
- return VStack;
55661
- },
55662
- get "VersionDiff"() {
55663
- return VersionDiff;
55664
- },
55665
- get "ViolationAlert"() {
55666
- return ViolationAlert;
55667
- },
55668
- get "VoteStack"() {
55669
- return VoteStack;
55670
- },
55671
- get "WizardContainer"() {
55672
- return WizardContainer;
55673
- },
55674
- get "WizardNavigation"() {
55675
- return WizardNavigation;
55676
- },
55677
- get "WizardProgress"() {
55678
- return WizardProgress;
55679
- },
54990
+ "Accordion": Accordion,
54991
+ "ActionPalette": ActionPalette,
54992
+ "ActionTile": ActionTile,
54993
+ "ActivationBlock": ActivationBlock,
54994
+ "AgentActivityFeed": AgentActivityFeed,
54995
+ "AgentActivityRow": AgentActivityRow,
54996
+ "AgentChatFeed": AgentChatFeed,
54997
+ "Alert": AlertPattern,
54998
+ "AlertPattern": AlertPattern,
54999
+ "AlgoGraphCanvas": AlgoGraphCanvas,
55000
+ "AlgorithmCanvas": AlgorithmCanvas,
55001
+ "AnimatedCounter": AnimatedCounter,
55002
+ "AnimatedGraphic": AnimatedGraphic,
55003
+ "AnimatedReveal": AnimatedReveal,
55004
+ "Aside": Aside,
55005
+ "AtlasImage": AtlasImage,
55006
+ "AtlasPanel": AtlasPanel,
55007
+ "AuthLayout": AuthLayout,
55008
+ "Avatar": Avatar,
55009
+ "Badge": Badge,
55010
+ "BehaviorView": exports.BehaviorView,
55011
+ "BiologyCanvas": BiologyCanvas,
55012
+ "BloomQuizBlock": BloomQuizBlock,
55013
+ "Box": BoxPattern,
55014
+ "BoxPattern": BoxPattern,
55015
+ "BranchingLogicBuilder": BranchingLogicBuilder,
55016
+ "Breadcrumb": Breadcrumb,
55017
+ "Button": ButtonPattern,
55018
+ "ButtonGroup": ButtonGroup,
55019
+ "ButtonPattern": ButtonPattern,
55020
+ "CalendarGrid": CalendarGrid,
55021
+ "Canvas": Canvas,
55022
+ "Canvas2D": Canvas2D,
55023
+ "Card": Card,
55024
+ "Carousel": Carousel,
55025
+ "Center": Center,
55026
+ "ChangeList": ChangeList,
55027
+ "Chart": Chart,
55028
+ "ChartLegend": ChartLegend,
55029
+ "ChatBar": ChatBar,
55030
+ "Checkbox": Checkbox,
55031
+ "ChemistryCanvas": ChemistryCanvas,
55032
+ "ChoiceButton": ChoiceButton,
55033
+ "CodeBlock": CodeBlock,
55034
+ "CodeRunnerPanel": CodeRunnerPanel,
55035
+ "CommandPalette": CommandPalette,
55036
+ "CommitRow": CommitRow,
55037
+ "ConditionalWrapper": ConditionalWrapper,
55038
+ "ConfettiEffect": ConfettiEffect,
55039
+ "ConfirmDialog": ConfirmDialog,
55040
+ "ConnectionBlock": ConnectionBlock,
55041
+ "Container": Container,
55042
+ "ContentRenderer": ContentRenderer,
55043
+ "ControlButton": ControlButton,
55044
+ "ControlGrid": ControlGrid,
55045
+ "CounterTemplate": CounterTemplate,
55046
+ "DashboardGrid": DashboardGrid,
55047
+ "DashboardLayout": DashboardLayout,
55048
+ "DataGrid": DataGrid,
55049
+ "DataList": DataList,
55050
+ "DateRangePicker": DateRangePicker,
55051
+ "DateRangeSelector": DateRangeSelector,
55052
+ "DayCell": DayCell,
55053
+ "DetailPanel": DetailPanel,
55054
+ "Dialog": Dialog,
55055
+ "DialogueBubble": DialogueBubble,
55056
+ "Divider": DividerPattern,
55057
+ "DividerPattern": DividerPattern,
55058
+ "DocBreadcrumb": DocBreadcrumb,
55059
+ "DocPagination": DocPagination,
55060
+ "DocSearch": DocSearch,
55061
+ "DocSidebar": DocSidebar,
55062
+ "DocTOC": DocTOC,
55063
+ "DockLayout": DockLayout,
55064
+ "DocumentDetails": DocumentDetails,
55065
+ "DocumentPanel": DocumentPanel,
55066
+ "DocumentViewer": DocumentViewer,
55067
+ "DrawFxLayer": DrawFxLayer,
55068
+ "DrawGroup": DrawGroup,
55069
+ "DrawMesh": DrawMesh,
55070
+ "DrawShape": DrawShape,
55071
+ "DrawShapeLayer": DrawShapeLayer,
55072
+ "DrawSkinnedMesh": DrawSkinnedMesh,
55073
+ "DrawSprite": DrawSprite,
55074
+ "DrawSpriteLayer": DrawSpriteLayer,
55075
+ "DrawText": DrawText,
55076
+ "DrawTextLayer": DrawTextLayer,
55077
+ "Drawer": Drawer,
55078
+ "DrawerSlot": DrawerSlot,
55079
+ "EdgeDecoration": EdgeDecoration,
55080
+ "EmojiPicker": EmojiPicker,
55081
+ "EmptyState": EmptyState,
55082
+ "ErrorBoundary": ErrorBoundary,
55083
+ "ErrorState": ErrorState,
55084
+ "FeatureCard": FeatureCard,
55085
+ "FeatureGrid": FeatureGrid,
55086
+ "FileTree": FileTree,
55087
+ "FilterGroup": FilterGroup,
55088
+ "FilterPill": FilterPill,
55089
+ "Flex": Flex,
55090
+ "FlipCard": FlipCard,
55091
+ "FlipContainer": FlipContainer,
55092
+ "FloatingActionButton": FloatingActionButton,
55093
+ "FloatingToolbar": FloatingToolbar,
55094
+ "Form": Form,
55095
+ "FormField": FormField,
55096
+ "FormLayout": FormLayout,
55097
+ "FormSectionHeader": FormSectionHeader,
55098
+ "FxOverlay": FxOverlay,
55099
+ "GameAudioCue": GameAudioCue,
55100
+ "GameAudioToggle": GameAudioToggle,
55101
+ "GameHud": GameHud,
55102
+ "GameIcon": GameIcon,
55103
+ "GameMenu": GameMenu,
55104
+ "GameShell": GameShell,
55105
+ "Gantt": Gantt,
55106
+ "GenericAppTemplate": GenericAppTemplate,
55107
+ "GeometricPattern": GeometricPattern,
55108
+ "GradientDivider": GradientDivider,
55109
+ "GraphCanvas": GraphCanvas,
55110
+ "GraphView": GraphView,
55111
+ "Grid": Grid,
55112
+ "HStack": HStack,
55113
+ "Header": Header,
55114
+ "HealthBar": HealthBar,
55115
+ "Icon": Icon,
55116
+ "IconButton": IconButtonPattern,
55117
+ "IconButtonPattern": IconButtonPattern,
55118
+ "Image": Image2,
55119
+ "ImportPreviewTree": ImportPreviewTree,
55120
+ "ImportProgress": ImportProgress,
55121
+ "ImportSourcePicker": ImportSourcePicker,
55122
+ "InfiniteScrollSentinel": InfiniteScrollSentinel,
55123
+ "Input": Input,
55124
+ "InputGroup": InputGroup,
55125
+ "JazariStateMachine": JazariStateMachine,
55126
+ "Label": LabelPattern,
55127
+ "LabelPattern": LabelPattern,
55128
+ "LawReferenceTooltip": LawReferenceTooltip,
55129
+ "LearningCanvas": LearningCanvas,
55130
+ "Lightbox": Lightbox,
55131
+ "LikertScale": LikertScale,
55132
+ "LineChart": LineChart2,
55133
+ "LoadingState": LoadingState,
55134
+ "MapView": MapView,
55135
+ "MarkdownContent": MarkdownContent,
55136
+ "MasterDetailLayout": MasterDetailLayout,
55137
+ "MathCanvas": MathCanvas,
55138
+ "MatrixQuestion": MatrixQuestion,
55139
+ "MediaGallery": MediaGallery,
55140
+ "Menu": Menu,
55141
+ "Meter": Meter,
55142
+ "Modal": Modal,
55143
+ "ModalSlot": ModalSlot,
55144
+ "ModuleCard": exports.ModuleCard,
55145
+ "Navigation": Navigation,
55146
+ "NumberStepper": NumberStepper,
55147
+ "OptionConstraintGroup": OptionConstraintGroup,
55148
+ "OrbitalVisualization": OrbitalVisualization,
55149
+ "Overlay": Overlay,
55150
+ "PageHeader": PageHeader,
55151
+ "PageTransition": PageTransition,
55152
+ "Pagination": Pagination,
55153
+ "PatternTile": PatternTile,
55154
+ "PhysicsCanvas": PhysicsCanvas,
55155
+ "Popover": Popover,
55156
+ "PositionedCanvas": PositionedCanvas,
55157
+ "Presence": Presence,
55158
+ "ProgressBar": ProgressBar,
55159
+ "ProgressDots": ProgressDots,
55160
+ "PullToRefresh": PullToRefresh,
55161
+ "QrScanner": QrScanner,
55162
+ "QuizBlock": QuizBlock,
55163
+ "Radio": Radio,
55164
+ "RangeSlider": RangeSlider,
55165
+ "ReflectionBlock": ReflectionBlock,
55166
+ "RelationSelect": RelationSelect,
55167
+ "RepeatableFormSection": RepeatableFormSection,
55168
+ "ReplyTree": ReplyTree,
55169
+ "RichTextEditor": RichTextEditor,
55170
+ "RuntimeDebugger": RuntimeDebugger,
55171
+ "ScaledDiagram": ScaledDiagram,
55172
+ "ScoreDisplay": ScoreDisplay,
55173
+ "SearchInput": SearchInput,
55174
+ "Section": Section,
55175
+ "SectionHeader": SectionHeader,
55176
+ "SegmentRenderer": SegmentRenderer,
55177
+ "Select": Select,
55178
+ "SequenceBar": SequenceBar,
55179
+ "SidePanel": SidePanel,
55180
+ "Sidebar": Sidebar,
55181
+ "SignaturePad": SignaturePad,
55182
+ "SimpleGrid": SimpleGrid,
55183
+ "Skeleton": Skeleton,
55184
+ "SocialProof": SocialProof,
55185
+ "SortableList": SortableList,
55186
+ "Spacer": SpacerPattern,
55187
+ "SpacerPattern": SpacerPattern,
55188
+ "Sparkline": Sparkline,
55189
+ "Spinner": Spinner,
55190
+ "Split": Split,
55191
+ "SplitPane": SplitPane,
55192
+ "Stack": Stack,
55193
+ "StarRating": StarRating,
55194
+ "StatBadge": StatBadge,
55195
+ "StatCard": StatCard,
55196
+ "StatDisplay": StatDisplay,
55197
+ "StateGraph": StateGraph,
55198
+ "StateJsonView": StateJsonView,
55199
+ "StateMachineView": StateMachineView,
55200
+ "StatusDot": StatusDot,
55201
+ "SubagentTracePanel": SubagentTracePanel,
55202
+ "SvgBranch": SvgBranch,
55203
+ "SvgConnection": SvgConnection,
55204
+ "SvgFlow": SvgFlow,
55205
+ "SvgGrid": SvgGrid,
55206
+ "SvgLobe": SvgLobe,
55207
+ "SvgMesh": SvgMesh,
55208
+ "SvgMorph": SvgMorph,
55209
+ "SvgNode": SvgNode,
55210
+ "SvgPulse": SvgPulse,
55211
+ "SvgRing": SvgRing,
55212
+ "SvgShield": SvgShield,
55213
+ "SvgStack": SvgStack,
55214
+ "SwipeableRow": SwipeableRow,
55215
+ "Switch": Switch,
55216
+ "TabbedContainer": TabbedContainer,
55217
+ "TableView": TableView,
55218
+ "Tabs": Tabs,
55219
+ "TagInput": TagInput,
55220
+ "TextHighlight": TextHighlight,
55221
+ "Textarea": Textarea,
55222
+ "ThemeToggle": ThemeToggle,
55223
+ "TimeSlotCell": TimeSlotCell,
55224
+ "Timeline": Timeline,
55225
+ "TimerDisplay": TimerDisplay,
55226
+ "Toast": Toast,
55227
+ "ToastSlot": ToastSlot,
55228
+ "Tooltip": Tooltip,
55229
+ "TopNavItem": TopNavItem,
55230
+ "TraitFrame": TraitFrame,
55231
+ "TraitSlot": TraitSlot,
55232
+ "TrendIndicator": TrendIndicator,
55233
+ "TypewriterText": TypewriterText,
55234
+ "Typography": Typography,
55235
+ "UISlotComponent": UISlotComponent,
55236
+ "UISlotRenderer": UISlotRenderer,
55237
+ "UploadDropZone": UploadDropZone,
55238
+ "VStack": VStack,
55239
+ "VersionDiff": VersionDiff,
55240
+ "ViolationAlert": ViolationAlert,
55241
+ "VoteStack": VoteStack,
55242
+ "WizardContainer": WizardContainer,
55243
+ "WizardNavigation": WizardNavigation,
55244
+ "WizardProgress": WizardProgress,
55680
55245
  // Semantic aliases
55681
- get "Text"() {
55682
- return TextPattern;
55683
- }
55246
+ "Text": TextPattern
55684
55247
  };
55685
55248
  }
55686
55249
  });
@@ -55967,6 +55530,7 @@ function UISlotComponentInner({
55967
55530
  const awaiting = isPortalSlot(slot) ? void 0 : awaitingSkeleton ?? runtimeAwaiting;
55968
55531
  const regionClassName = fallback !== void 0 ? cn("contents", className) : className;
55969
55532
  const binding = providers.useEntityBindingSnapshot(rawContent?.sourceTrait);
55533
+ const i18n = hooks.useRenderI18n();
55970
55534
  const content = React93.useMemo(() => {
55971
55535
  if (!rawContent) return rawContent;
55972
55536
  const resolvedProps = resolveRenderBindingMarkers(
@@ -55974,10 +55538,11 @@ function UISlotComponentInner({
55974
55538
  rawContent.sourceTrait,
55975
55539
  binding.entity,
55976
55540
  binding.config,
55977
- binding.state
55541
+ binding.state,
55542
+ i18n
55978
55543
  );
55979
55544
  return resolvedProps === rawContent.props ? rawContent : { ...rawContent, props: resolvedProps };
55980
- }, [rawContent, binding.entity, binding.config, binding.state]);
55545
+ }, [rawContent, binding.entity, binding.config, binding.state, i18n]);
55981
55546
  const animatedPortal = isAnimatedPortalSlot(slot);
55982
55547
  const holdForPending = useScopeHasPending(React93.useContext(PendingScopeContext));
55983
55548
  const runtimePresence = useSlotPresence(portal && animatedPortal ? content ?? null : null, holdForPending);
@@ -56615,9 +56180,10 @@ function SlotContentRenderer({
56615
56180
  const ambientScope = providers.useTraitScope();
56616
56181
  const bindingTrait = content.sourceTrait ?? ambientScope?.trait;
56617
56182
  const binding = providers.useEntityBindingSnapshot(bindingTrait);
56183
+ const i18n = hooks.useRenderI18n();
56618
56184
  const liveProps = React93.useMemo(
56619
- () => resolveRenderBindingMarkers(content.props, bindingTrait, binding.entity, binding.config, binding.state),
56620
- [content.props, bindingTrait, binding.entity, binding.config, binding.state]
56185
+ () => resolveRenderBindingMarkers(content.props, bindingTrait, binding.entity, binding.config, binding.state, i18n),
56186
+ [content.props, bindingTrait, binding.entity, binding.config, binding.state, i18n]
56621
56187
  );
56622
56188
  const propsObj = typeof liveProps === "string" ? {} : liveProps;
56623
56189
  const entityProp = propsObj.entity;
@@ -61164,6 +60730,10 @@ I18nContext.displayName = "I18nContext";
61164
60730
  function useTranslate157() {
61165
60731
  return React93.useContext(I18nContext);
61166
60732
  }
60733
+ function useRenderI18n2() {
60734
+ const { locale, messages } = React93.useContext(I18nContext);
60735
+ return React93.useMemo(() => messages !== void 0 ? { locale, messages } : void 0, [locale, messages]);
60736
+ }
61167
60737
 
61168
60738
  // hooks/useInlineTextEdit.ts
61169
60739
  init_inlineText();
@@ -61731,11 +61301,11 @@ function marqueeHits(marquee, boxes) {
61731
61301
  );
61732
61302
  }
61733
61303
  function axisPositionFrom(axis, constraint, offset) {
61734
- const start = offset ? axis === "x" ? offset.left : offset.top : 0;
61735
- const end = offset ? axis === "x" ? offset.right : offset.bottom : 0;
61304
+ const start = axis === "x" ? offset.left : offset.top;
61305
+ const end = axis === "x" ? offset.right : offset.bottom;
61736
61306
  if (constraint === "center") return { constraint, start: (start - end) / 2, end: 0 };
61737
61307
  if (constraint !== "scale") return { constraint, start, end };
61738
- const size2 = offset ? axis === "x" ? offset.parentWidth : offset.parentHeight : 0;
61308
+ const size2 = axis === "x" ? offset.parentWidth : offset.parentHeight;
61739
61309
  return size2 > 0 ? { constraint, start: start / size2 * 100, end: end / size2 * 100 } : { constraint, start: 0, end: 0 };
61740
61310
  }
61741
61311
  var edgesX = (r2) => [r2.left, r2.left + r2.width / 2, r2.left + r2.width];
@@ -62316,9 +61886,9 @@ function getTabClientId() {
62316
61886
  return tabClientId;
62317
61887
  }
62318
61888
  var log11 = logger.createLogger("almadar:ui:circuit-kernel");
62319
- function postUnmounts(transport, traits2) {
61889
+ function postUnmounts(transport, traits2, locale) {
62320
61890
  for (const [traitName, orbitalName] of traits2) {
62321
- transport.send(orbitalName, { event: runtime.UNMOUNT_EVENT, targetTrait: traitName, clientId: getTabClientId() }).catch((err) => log11.warn("unmount-post-failed", { trait: traitName, orbital: orbitalName, error: String(err) }));
61891
+ transport.send(orbitalName, { event: runtime.UNMOUNT_EVENT, targetTrait: traitName, clientId: getTabClientId(), locale }).catch((err) => log11.warn("unmount-post-failed", { trait: traitName, orbital: orbitalName, error: String(err) }));
62322
61892
  }
62323
61893
  }
62324
61894
  function restrictTraitIndex(full, activeNames) {
@@ -62339,6 +61909,10 @@ function useCircuitKernel(traitBindings, options) {
62339
61909
  [activeTraitKey, fullTraitIndex]
62340
61910
  );
62341
61911
  const mountedRef = React93.useRef(/* @__PURE__ */ new Map());
61912
+ const { locale } = useTranslate157();
61913
+ const i18n = useRenderI18n2();
61914
+ const localeRef = React93.useRef(locale);
61915
+ localeRef.current = locale;
62342
61916
  const transport = options.transport;
62343
61917
  const topologyPending = options.awaitTopology === true;
62344
61918
  React93.useEffect(() => {
@@ -62347,12 +61921,12 @@ function useCircuitKernel(traitBindings, options) {
62347
61921
  const dropped = [...mounted].filter(([name]) => !traitIndex.byName.has(name));
62348
61922
  mounted.clear();
62349
61923
  for (const [name, entry] of traitIndex.byName) mounted.set(name, entry.orbitalName);
62350
- postUnmounts(transport, dropped);
61924
+ postUnmounts(transport, dropped, localeRef.current);
62351
61925
  }, [traitIndex, transport, topologyPending]);
62352
61926
  React93.useEffect(() => {
62353
61927
  if (transport === void 0) return;
62354
61928
  const mounted = mountedRef.current;
62355
- return () => postUnmounts(transport, [...mounted]);
61929
+ return () => postUnmounts(transport, [...mounted], localeRef.current);
62356
61930
  }, [transport]);
62357
61931
  const store = React93.useMemo(() => {
62358
61932
  const traitDefs = Array.from(traitIndex.byName.values(), (entry) => entry.traitDef);
@@ -62363,42 +61937,43 @@ function useCircuitKernel(traitBindings, options) {
62363
61937
  };
62364
61938
  return runtime.createMemoryCircuitStore(traitDefs, config, options.observer);
62365
61939
  }, [traitIndex, options.guardMode, options.strictBindings, options.contextExtensions, options.observer]);
62366
- const offlineTransport = React93.useMemo(() => {
62367
- if (options.transport !== void 0 || options.persistence === void 0) return void 0;
62368
- const persistence = options.persistence;
62369
- return runtime.createInProcessTransport(
62370
- async (_orbitalName, request) => {
62371
- const runEffects = runtime.createIndexStageRunner({
62372
- traitIndex,
62373
- persistence,
62374
- frames: store.frames,
62375
- manager: store.manager,
62376
- ...options.callService !== void 0 ? { extraEffectHandlers: { callService: options.callService } } : {},
62377
- ...options.debug !== void 0 ? { debug: options.debug } : {}
62378
- });
62379
- return runtime.evaluateOrbitalEvent(
62380
- {
62381
- traitIndex,
62382
- manager: store.manager,
62383
- persistence,
62384
- frames: store.frames,
62385
- runEffects,
62386
- ...options.user !== void 0 ? { user: options.user } : {},
62387
- ...options.guardMode !== void 0 ? { guardMode: options.guardMode } : {},
62388
- ...options.strictBindings !== void 0 ? { strictBindings: options.strictBindings } : {},
62389
- ...options.contextExtensions !== void 0 ? { contextExtensions: options.contextExtensions } : {},
62390
- ...options.debug !== void 0 ? { debug: options.debug } : {},
62391
- ...options.logContext !== void 0 ? { logContext: options.logContext } : {}
62392
- },
62393
- request
62394
- );
62395
- },
62396
- { carriesCircuitState: false }
62397
- );
61940
+ const localTransportOptions = {
61941
+ traitIndex,
61942
+ store,
61943
+ ...options.callService !== void 0 ? { callService: options.callService } : {},
61944
+ ...options.user !== void 0 ? { user: options.user } : {},
61945
+ ...options.guardMode !== void 0 ? { guardMode: options.guardMode } : {},
61946
+ ...options.strictBindings !== void 0 ? { strictBindings: options.strictBindings } : {},
61947
+ ...options.contextExtensions !== void 0 ? { contextExtensions: options.contextExtensions } : {},
61948
+ ...options.debug !== void 0 ? { debug: options.debug } : {},
61949
+ ...options.logContext !== void 0 ? { logContext: options.logContext } : {}
61950
+ };
61951
+ const offlineTransport = React93.useMemo(
61952
+ () => options.transport !== void 0 || options.persistence === void 0 ? void 0 : runtime.createLocalStoreTransport({ ...localTransportOptions, persistence: options.persistence }),
61953
+ [
61954
+ options.transport,
61955
+ options.persistence,
61956
+ traitIndex,
61957
+ store,
61958
+ options.callService,
61959
+ options.user,
61960
+ options.guardMode,
61961
+ options.strictBindings,
61962
+ options.contextExtensions,
61963
+ options.debug,
61964
+ options.logContext
61965
+ ]
61966
+ );
61967
+ const routedTransport = React93.useMemo(() => {
61968
+ if (options.browserStore === void 0) return void 0;
61969
+ const local = runtime.createLocalStoreTransport({ ...localTransportOptions, traitIndex: fullTraitIndex, persistence: options.browserStore, clientRelays: true });
61970
+ const remote = options.transport ?? offlineTransport;
61971
+ return runtime.createResidenceTransport({ local, ...remote !== void 0 ? { remote } : {}, traitIndex: fullTraitIndex });
62398
61972
  }, [
61973
+ options.browserStore,
62399
61974
  options.transport,
62400
- options.persistence,
62401
- traitIndex,
61975
+ offlineTransport,
61976
+ fullTraitIndex,
62402
61977
  store,
62403
61978
  options.callService,
62404
61979
  options.user,
@@ -62408,7 +61983,7 @@ function useCircuitKernel(traitBindings, options) {
62408
61983
  options.debug,
62409
61984
  options.logContext
62410
61985
  ]);
62411
- const baseTransport = options.transport ?? offlineTransport;
61986
+ const baseTransport = routedTransport ?? options.transport ?? offlineTransport;
62412
61987
  const effectiveTransport = React93.useMemo(
62413
61988
  () => baseTransport === void 0 ? void 0 : recordingTransport(baseTransport),
62414
61989
  [baseTransport]
@@ -62433,6 +62008,8 @@ function useCircuitKernel(traitBindings, options) {
62433
62008
  store,
62434
62009
  ...options.persistence !== void 0 ? { persistence: options.persistence } : {},
62435
62010
  ...options.user !== void 0 ? { user: options.user } : {},
62011
+ locale,
62012
+ ...i18n !== void 0 ? { messages: { [i18n.locale]: i18n.messages } } : {},
62436
62013
  ...options.guardMode !== void 0 ? { guardMode: options.guardMode } : {},
62437
62014
  ...options.strictBindings !== void 0 ? { strictBindings: options.strictBindings } : {},
62438
62015
  ...options.contextExtensions !== void 0 ? { contextExtensions: options.contextExtensions } : {},
@@ -62448,6 +62025,8 @@ function useCircuitKernel(traitBindings, options) {
62448
62025
  store,
62449
62026
  options.persistence,
62450
62027
  options.user,
62028
+ locale,
62029
+ i18n,
62451
62030
  options.guardMode,
62452
62031
  options.strictBindings,
62453
62032
  options.contextExtensions,
@@ -62456,12 +62035,19 @@ function useCircuitKernel(traitBindings, options) {
62456
62035
  topology,
62457
62036
  effectiveTransport
62458
62037
  ]);
62459
- const kernel = React93.useMemo(() => ({
62460
- store: rawKernel.store,
62461
- dispatch: (request, hooks) => rawKernel.dispatch(request.clientId !== void 0 ? request : { ...request, clientId: getTabClientId() }, hooks),
62462
- dispatchMount: (seeds, hooks, base = {}) => rawKernel.dispatchMount(seeds, hooks, base.clientId !== void 0 ? base : { ...base, clientId: getTabClientId() }),
62463
- dispatchProgress: (request) => rawKernel.dispatchProgress(request.clientId !== void 0 ? request : { ...request, clientId: getTabClientId() })
62464
- }), [rawKernel]);
62038
+ const kernel = React93.useMemo(() => {
62039
+ const stamp = (request) => ({
62040
+ ...request,
62041
+ clientId: request.clientId ?? getTabClientId(),
62042
+ locale: request.locale ?? locale
62043
+ });
62044
+ return {
62045
+ store: rawKernel.store,
62046
+ dispatch: (request, hooks) => rawKernel.dispatch(stamp(request), hooks),
62047
+ dispatchMount: (seeds, hooks, base = {}) => rawKernel.dispatchMount(seeds, hooks, stamp(base)),
62048
+ dispatchProgress: (request) => rawKernel.dispatchProgress(stamp(request))
62049
+ };
62050
+ }, [rawKernel, locale]);
62465
62051
  return { kernel, store, traitIndex, transport: effectiveTransport };
62466
62052
  }
62467
62053
 
@@ -62945,11 +62531,12 @@ async function runCircuitEffects(params) {
62945
62531
  // hooks/circuit/useCallsiteCapture.ts
62946
62532
  var log14 = logger.createLogger("almadar:ui:circuit:callsite-capture");
62947
62533
  function useCallsiteCapture(traitBindings, store, traitIndex, slotFlush, options) {
62948
- return React93.useCallback(async function reRender(traitName, callsitePayload, entityByTrait, visited = /* @__PURE__ */ new Set(), serverComposed = /* @__PURE__ */ new Set(), keepComposed = false) {
62534
+ return React93.useCallback(async function reRender(traitName, callsitePayload, entityByTrait, visited = /* @__PURE__ */ new Set(), serverComposed = /* @__PURE__ */ new Set(), keepComposed = false, composedBy) {
62949
62535
  const children = options.callsiteCaptureChildrenByTrait?.get(traitName);
62950
62536
  if (!children || children.size === 0) return;
62951
62537
  const bindingMap = new Map(traitBindings.map((b) => [b.trait.name, b]));
62952
62538
  for (const childName of children) {
62539
+ if (composedBy !== void 0 && !composedBy.has(childName)) continue;
62953
62540
  if (visited.has(childName)) continue;
62954
62541
  visited.add(childName);
62955
62542
  const childBinding = bindingMap.get(childName);
@@ -63003,7 +62590,7 @@ function useCallsiteCapture(traitBindings, store, traitIndex, slotFlush, options
63003
62590
  { event: lifecycleEvent, state: entry.result.previousState, entity: childBinding.linkedEntity }
63004
62591
  );
63005
62592
  }
63006
- await reRender(childName, composedWith, entityByTrait, visited, serverComposed, keepComposed);
62593
+ await reRender(childName, composedWith, entityByTrait, visited, serverComposed, keepComposed, core.traitsEmbeddedByEffects(indexed.irTrait, entry.result.effects));
63007
62594
  }
63008
62595
  }, [traitBindings, store, traitIndex, slotFlush, options.callsiteCaptureChildrenByTrait, options.eventBus, options.navigate, options.navigateBack, options.user]);
63009
62596
  }
@@ -63297,6 +62884,7 @@ function useAwaitingSkeletonSource(store, traitIndex, embeddedTraits) {
63297
62884
  }
63298
62885
 
63299
62886
  // hooks/useTraitStateMachine.ts
62887
+ var MOUNT_ERROR_SOURCE = "$mount";
63300
62888
  var stateLog = logger.createLogger("almadar:ui:state-transitions");
63301
62889
  function diffDroppedTraitNames(prev, next) {
63302
62890
  const dropped = [];
@@ -63311,6 +62899,7 @@ function normalizeEventKey(eventKey) {
63311
62899
  function useTraitStateMachine(traitBindings, uiSlots, options) {
63312
62900
  const eventBus = useEventBus();
63313
62901
  const { user: contextViewer } = providers.useUser();
62902
+ const { t } = useTranslate157();
63314
62903
  const userContext = options.user ?? contextViewer ?? void 0;
63315
62904
  const observer2 = React93.useMemo(() => createCircuitVerificationObserver(), []);
63316
62905
  const { kernel, store, traitIndex, transport } = useCircuitKernel(traitBindings, {
@@ -63320,6 +62909,7 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
63320
62909
  ...options.carriesCircuitState !== void 0 ? { carriesCircuitState: options.carriesCircuitState } : {},
63321
62910
  ...options.awaitTopology !== void 0 ? { awaitTopology: options.awaitTopology } : {},
63322
62911
  ...options.persistence !== void 0 ? { persistence: options.persistence } : {},
62912
+ ...options.browserStore !== void 0 ? { browserStore: options.browserStore } : {},
63323
62913
  ...options.callService !== void 0 ? { callService: options.callService } : {},
63324
62914
  ...userContext !== void 0 ? { user: userContext } : {},
63325
62915
  ...options.debug !== void 0 ? { debug: options.debug } : {},
@@ -63358,11 +62948,11 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
63358
62948
  name: trait.name,
63359
62949
  currentState: state?.currentState ?? trait.states[0]?.name ?? "unknown",
63360
62950
  states: trait.states.map((s) => s.name),
63361
- transitions: trait.transitions.flatMap((t) => {
63362
- const froms = Array.isArray(t.from) ? t.from : [t.from];
63363
- return froms.map((f3) => ({ from: f3, to: t.to, event: t.event, guard: t.guard ? String(t.guard) : void 0 }));
62951
+ transitions: trait.transitions.flatMap((t2) => {
62952
+ const froms = Array.isArray(t2.from) ? t2.from : [t2.from];
62953
+ return froms.map((f3) => ({ from: f3, to: t2.to, event: t2.event, guard: t2.guard ? String(t2.guard) : void 0 }));
63364
62954
  }),
63365
- guards: trait.transitions.filter((t) => t.guard).map((t) => ({ name: String(t.guard) })),
62955
+ guards: trait.transitions.filter((t2) => t2.guard).map((t2) => ({ name: String(t2.guard) })),
63366
62956
  transitionCount: 0
63367
62957
  };
63368
62958
  registerTrait(info);
@@ -63400,7 +62990,9 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
63400
62990
  }
63401
62991
  const repainted = new Set(repaints.map((e) => e.traitName));
63402
62992
  const serverComposed = new Set([...store.callsitePayloads].filter(([child, composed]) => composedBefore.get(child) !== composed).map(([child]) => child));
63403
- await reRenderCallsiteCaptureChildren(traitName, payload ?? {}, entityByTrait, repainted, serverComposed);
62993
+ const irTrait = traitIndex.byName.get(traitName)?.irTrait;
62994
+ const composedBy = irTrait !== void 0 ? core.traitsEmbeddedByEvent(irTrait, eventKey) : void 0;
62995
+ await reRenderCallsiteCaptureChildren(traitName, payload ?? {}, entityByTrait, repainted, serverComposed, false, composedBy);
63404
62996
  }
63405
62997
  options.onEventProcessed?.(eventKey, payload);
63406
62998
  }, [traitIndex, store, reRenderCallsiteCaptureChildren, options.onEventProcessed]);
@@ -63469,8 +63061,8 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
63469
63061
  React93.useEffect(() => {
63470
63062
  if (!transport?.subscribe) return;
63471
63063
  return transport.subscribe((emitted, target) => {
63472
- for (const t of runtime.collectListenerTargets(traitIndex, emitted.source, emitted.event, emitted.payload)) {
63473
- void (target === "origin" ? progressAndSettle(t.listenerTrait, t.triggers, t.payload) : dispatchAndSettle(t.listenerTrait, t.triggers, t.payload));
63064
+ for (const t2 of runtime.collectListenerTargets(traitIndex, emitted.source, emitted.event, emitted.payload)) {
63065
+ void (target === "origin" ? progressAndSettle(t2.listenerTrait, t2.triggers, t2.payload) : dispatchAndSettle(t2.listenerTrait, t2.triggers, t2.payload));
63474
63066
  }
63475
63067
  }, { clientId: getTabClientId() });
63476
63068
  }, [transport, traitIndex, progressAndSettle, dispatchAndSettle]);
@@ -63542,26 +63134,75 @@ function useTraitStateMachine(traitBindings, uiSlots, options) {
63542
63134
  for (const traitName of left) mount.initialized.delete(traitName);
63543
63135
  store.mount.unmounted(left);
63544
63136
  const entering = [];
63137
+ const embeddedChildren = new Set([...options.callsiteCaptureChildrenByTrait?.values() ?? []].flatMap((c) => [...c]));
63545
63138
  for (const binding of traitBindings) {
63546
63139
  const traitName = binding.trait.name;
63547
63140
  if (mount.initialized.has(traitName)) continue;
63548
63141
  mount.initialized.add(traitName);
63142
+ const indexed = traitIndex.byName.get(traitName);
63143
+ if (embeddedChildren.has(traitName) && indexed !== void 0 && (core.traitReferencesCallsitePayload(indexed.irTrait) || core.configReferencesCallsitePayload(indexed.config)) && store.manager.repaintLifecycleEvent(traitName) !== void 0 && !store.callsitePayloads.has(traitName)) {
63144
+ continue;
63145
+ }
63549
63146
  const lifecycleEvent = runtime.LIFECYCLE_EVENTS.find((evt) => store.manager.canHandleEvent(traitName, evt));
63550
63147
  if (lifecycleEvent !== void 0) entering.push({ trait: traitName, event: lifecycleEvent });
63551
63148
  }
63552
63149
  store.mount.mounting(entering.map((e) => e.trait));
63553
63150
  if (entering.length > 0) {
63151
+ uiSlots.clearBySource("main", MOUNT_ERROR_SOURCE);
63554
63152
  void mountAndSettle(entering, { ...options.initPayload ?? {} }).catch((err) => {
63555
- stateLog.warn("mount:failed", { traits: entering.map((e) => e.trait), error: String(err) });
63153
+ const traits2 = entering.map((e) => e.trait);
63154
+ const message = err instanceof Error ? err.message : String(err);
63155
+ const failed = err instanceof runtime.TraitMountError ? err.trait : traits2.join(", ");
63156
+ const cause = err instanceof runtime.TraitMountError ? err.original : err;
63157
+ stateLog.warn("mount:failed", { traits: traits2, failed, error: message, stack: cause instanceof Error ? cause.stack : void 0 });
63158
+ uiSlots.render({
63159
+ target: "main",
63160
+ pattern: "error-state",
63161
+ props: { title: t("error.traitMountFailed", { trait: failed }), message, "data-testid": core.TRAIT_MOUNT_ERROR_TESTID },
63162
+ sourceTrait: MOUNT_ERROR_SOURCE
63163
+ });
63556
63164
  });
63557
63165
  }
63558
63166
  mountedRef.current = mount;
63559
- }, [traitBindings, store, mountAndSettle, mountKey]);
63167
+ }, [traitBindings, store, mountAndSettle, mountKey, uiSlots, traitIndex, options.callsiteCaptureChildrenByTrait, t]);
63560
63168
  React93.useSyncExternalStore(store.subscribe, store.getVersion, store.getVersion);
63561
63169
  const traitStates = React93.useMemo(() => store.manager.getAllStates(), [store, store.getVersion()]);
63562
63170
  return { traitStates, sendEvent, getTraitState, canHandleEvent, entityBindingSource, awaitingSkeletonSource };
63563
63171
  }
63564
63172
 
63173
+ // runtime/OrbPreview.tsx
63174
+ init_LoadingState();
63175
+ init_ErrorState();
63176
+ function useBrowserStore(appName, orbitals, locale) {
63177
+ const entities = React93.useMemo(() => orbitals.flatMap(core.orbitalInlineEntities).filter(core.storesRowsInBrowser), [orbitals]);
63178
+ const [state, setState] = React93.useState(() => entities.length === 0 ? { status: "none" } : { status: "opening" });
63179
+ React93.useEffect(() => {
63180
+ if (entities.length === 0) {
63181
+ setState({ status: "none" });
63182
+ return;
63183
+ }
63184
+ let cancelled = false;
63185
+ let opened;
63186
+ setState({ status: "opening" });
63187
+ const open = async () => {
63188
+ try {
63189
+ const store = await runtime.openBrowserStore(runtime.browserStoreName(appName, locale), orbitals, void 0, locale);
63190
+ if (store === null) return;
63191
+ opened = store;
63192
+ if (!cancelled) setState({ status: "ready", store });
63193
+ } catch (err) {
63194
+ if (!cancelled) setState({ status: "failed", error: err instanceof Error ? err : new Error(String(err)) });
63195
+ }
63196
+ };
63197
+ void open();
63198
+ return () => {
63199
+ cancelled = true;
63200
+ opened?.close();
63201
+ };
63202
+ }, [appName, locale, entities, orbitals]);
63203
+ return state;
63204
+ }
63205
+
63565
63206
  // runtime/fitContent.ts
63566
63207
  var IDENTITY2 = { scale: 1, x: 0, y: 0 };
63567
63208
  function fitContentTransform(box, content) {
@@ -63620,7 +63261,7 @@ function appPathFromHref(href, hostHrefBase) {
63620
63261
  if (!href.startsWith(`${root}/`)) return null;
63621
63262
  return href.slice(root.length);
63622
63263
  }
63623
- function TraitInitializer({ traits: traits2, routeParams, mountKey, orbitals, onNavigate, onNavigateBack, onLocalFallback, localFallbackTimeoutMs, persistence, traitConfigsByName, embeddedTraits, callsiteCaptureChildrenByTrait, hasBridge, children }) {
63264
+ function TraitInitializer({ traits: traits2, routeParams, mountKey, orbitals, onNavigate, onNavigateBack, onLocalFallback, localFallbackTimeoutMs, persistence, browserStore, traitConfigsByName, embeddedTraits, callsiteCaptureChildrenByTrait, hasBridge, children }) {
63624
63265
  const bridge = providers.useServerBridge();
63625
63266
  const uiSlots = context.useUISlots();
63626
63267
  React93.useEffect(() => {
@@ -63639,7 +63280,8 @@ function TraitInitializer({ traits: traits2, routeParams, mountKey, orbitals, on
63639
63280
  ...callsiteCaptureChildrenByTrait !== void 0 ? { callsiteCaptureChildrenByTrait } : {},
63640
63281
  initPayload: routeParams,
63641
63282
  ...mountKey !== void 0 ? { mountKey } : {},
63642
- ...hasBridge ? { transport: bridge.transport, carriesCircuitState: bridge.carriesCircuitState, awaitTopology: !bridge.topologyKnown } : { persistence }
63283
+ ...hasBridge ? { transport: bridge.transport, carriesCircuitState: bridge.carriesCircuitState, awaitTopology: !bridge.topologyKnown } : { persistence },
63284
+ ...browserStore !== void 0 ? { browserStore } : {}
63643
63285
  });
63644
63286
  return /* @__PURE__ */ jsxRuntime.jsx(providers.EntityBindingContext.Provider, { value: entityBindingSource, children: /* @__PURE__ */ jsxRuntime.jsx(providers.AwaitingSkeletonContext.Provider, { value: awaitingSkeletonSource, children }) });
63645
63287
  }
@@ -63825,6 +63467,8 @@ function SchemaRunner({ schema, serverUrl, transport, getAccessToken, mockData,
63825
63467
  return set;
63826
63468
  }, [schema, pageName]);
63827
63469
  const activeOrbitalTheme = React93.useMemo(() => resolvePreviewTheme(schema, pageName), [schema, pageName]);
63470
+ const { locale } = hooks.useTranslate();
63471
+ const browserStore = useBrowserStore(schema.name ?? "app", schema.orbitals, locale);
63828
63472
  const inner = /* @__PURE__ */ jsxRuntime.jsx(providers.VerificationProvider, { enabled: true, children: /* @__PURE__ */ jsxRuntime.jsx(
63829
63473
  providers.EntitySchemaProvider,
63830
63474
  {
@@ -63847,11 +63491,16 @@ function SchemaRunner({ schema, serverUrl, transport, getAccessToken, mockData,
63847
63491
  onLocalFallback,
63848
63492
  localFallbackTimeoutMs,
63849
63493
  persistence,
63494
+ ...browserStore.status === "ready" ? { browserStore: browserStore.store } : {},
63850
63495
  children: /* @__PURE__ */ jsxRuntime.jsx(providers.OrbitalThemeProvider, { theme: activeOrbitalTheme, override: themeOverride, children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "h-full min-h-full overflow-auto p-4", children: /* @__PURE__ */ jsxRuntime.jsx(UISlotRenderer, { includeHud: true, hudMode: "inline", includeFloating: true, pageKey: pageName }) }) })
63851
63496
  }
63852
63497
  )
63853
63498
  }
63854
63499
  ) });
63500
+ if (browserStore.status === "opening") return /* @__PURE__ */ jsxRuntime.jsx(LoadingState, {});
63501
+ if (browserStore.status === "failed") {
63502
+ return /* @__PURE__ */ jsxRuntime.jsx(ErrorState, { "data-testid": "browser-store-error", message: browserStore.error.message });
63503
+ }
63855
63504
  if (serverUrl || transport) {
63856
63505
  return /* @__PURE__ */ jsxRuntime.jsx(providers.ServerBridgeProvider, { schema, serverUrl, transport, getAccessToken, children: inner });
63857
63506
  }
@@ -63884,7 +63533,10 @@ function OrbPreview({
63884
63533
  onPageChange,
63885
63534
  user = null,
63886
63535
  localFallbackTimeoutMs,
63887
- themeOverride
63536
+ themeOverride,
63537
+ lazyLoader,
63538
+ schemaPath,
63539
+ onUnmatchedNavigate
63888
63540
  }) {
63889
63541
  if (serverUrl && transport) {
63890
63542
  throw new Error("OrbPreview accepts serverUrl OR transport, not both");
@@ -63933,12 +63585,44 @@ function OrbPreview({
63933
63585
  return [];
63934
63586
  }
63935
63587
  }, [parsedSchema]);
63588
+ const lazyPages = React93.useMemo(() => parsedSchema?.lazyPages ?? [], [parsedSchema]);
63589
+ const matchRoute = React93.useCallback((path) => {
63590
+ const candidates = [
63591
+ ...pages.map((entry) => ({ kind: "page", entry, path: entry.page.path })),
63592
+ ...lazyPages.map((page) => ({ kind: "lazy", page, path: page.path }))
63593
+ ];
63594
+ const hit = providers.matchPathAmong(candidates, path, (c) => c.path);
63595
+ if (!hit) return null;
63596
+ return hit.candidate.kind === "page" ? { kind: "page", entry: hit.candidate.entry, params: hit.params } : { kind: "lazy", page: hit.candidate.page, params: hit.params };
63597
+ }, [pages, lazyPages]);
63598
+ const initialRoute = React93.useMemo(
63599
+ () => initialPagePath ? matchRoute(initialPagePath) : null,
63600
+ [matchRoute, initialPagePath]
63601
+ );
63936
63602
  const initialPageMatch = React93.useMemo(() => {
63937
- if (!initialPagePath) return void 0;
63938
- const hit = providers.matchPathAmong(pages, initialPagePath, (entry) => entry.page.path);
63939
- if (!hit) return void 0;
63940
- return { name: hit.candidate.page.name, params: hit.params };
63941
- }, [pages, initialPagePath]);
63603
+ if (initialRoute?.kind !== "page" || !initialRoute.entry.page.name) return void 0;
63604
+ return { name: initialRoute.entry.page.name, params: initialRoute.params };
63605
+ }, [initialRoute]);
63606
+ const [lazyRoute, setLazyRoute] = React93.useState(
63607
+ initialRoute?.kind === "lazy" && initialPagePath ? { page: initialRoute.page, path: initialPagePath } : null
63608
+ );
63609
+ const [lazyLoad, setLazyLoad] = React93.useState({ status: "loading" });
63610
+ React93.useEffect(() => {
63611
+ if (!lazyRoute) return;
63612
+ if (!lazyLoader) {
63613
+ setLazyLoad({ status: "error", error: `No loader for lazy page ${lazyRoute.page.path} (${lazyRoute.page.orbRef})` });
63614
+ return;
63615
+ }
63616
+ let cancelled = false;
63617
+ setLazyLoad({ status: "loading" });
63618
+ void runtime.loadLazyPage(lazyLoader, lazyRoute.page, schemaPath).then((result) => {
63619
+ if (cancelled) return;
63620
+ setLazyLoad(result.success ? { status: "ready", schema: result.data } : { status: "error", error: result.error });
63621
+ });
63622
+ return () => {
63623
+ cancelled = true;
63624
+ };
63625
+ }, [lazyRoute?.page, lazyLoader, schemaPath]);
63942
63626
  const initialPageName = initialPageMatch?.name;
63943
63627
  const [currentPage, setCurrentPage] = React93.useState(initialPageName);
63944
63628
  const [routeParams, setRouteParams] = React93.useState(initialPageMatch?.params ?? {});
@@ -63948,8 +63632,9 @@ function OrbPreview({
63948
63632
  prevInitialPagePathRef.current = initialPagePath;
63949
63633
  setCurrentPage(initialPageName);
63950
63634
  setRouteParams(initialPageMatch?.params ?? {});
63635
+ setLazyRoute(initialRoute?.kind === "lazy" && initialPagePath ? { page: initialRoute.page, path: initialPagePath } : null);
63951
63636
  }
63952
- }, [initialPagePath, initialPageName, initialPageMatch]);
63637
+ }, [initialPagePath, initialPageName, initialPageMatch, initialRoute]);
63953
63638
  const currentPagePath = React93.useMemo(() => {
63954
63639
  const activePageName = currentPage ?? pages[0]?.page.name;
63955
63640
  const resolved = pages.find((p) => p.page.name === activePageName)?.page.path;
@@ -63964,10 +63649,30 @@ function OrbPreview({
63964
63649
  return pattern.replace(/:([A-Za-z0-9_]+)/g, (whole, key) => routeParams[key] ?? whole);
63965
63650
  }, [currentPagePath, routeParams]);
63966
63651
  const navStackRef = React93.useRef(null);
63652
+ const announcePage = React93.useCallback((path) => {
63653
+ if (onPageChange) {
63654
+ onPageChange(path);
63655
+ } else if (!isolated && typeof window !== "undefined") {
63656
+ const url = new URL(window.location.href);
63657
+ url.searchParams.set("page", path);
63658
+ window.history.pushState({}, "", url.toString());
63659
+ window.dispatchEvent(new PopStateEvent("popstate"));
63660
+ }
63661
+ }, [isolated, onPageChange]);
63967
63662
  const handleNavigate = React93.useCallback((path, navState) => {
63968
- const hit = providers.matchPathAmong(pages, path, (entry) => entry.page.path);
63969
- const match = hit?.candidate;
63970
- const params = { ...hit?.params ?? {}, ...navState ?? {} };
63663
+ const route = matchRoute(path);
63664
+ if (!route) {
63665
+ onUnmatchedNavigate?.(path);
63666
+ return;
63667
+ }
63668
+ if (route.kind === "lazy") {
63669
+ setLazyRoute({ page: route.page, path });
63670
+ announcePage(path);
63671
+ return;
63672
+ }
63673
+ setLazyRoute(null);
63674
+ const match = route.entry;
63675
+ const params = { ...route.params, ...navState ?? {} };
63971
63676
  navLog.debug("handleNavigate", () => ({
63972
63677
  path,
63973
63678
  matched: match?.page.name ?? null,
@@ -63975,19 +63680,12 @@ function OrbPreview({
63975
63680
  navState: navState ? JSON.stringify(navState) : void 0,
63976
63681
  availablePaths: pages.map((p) => p.page.path)
63977
63682
  }));
63978
- if (match?.page.name) {
63683
+ if (match.page.name) {
63979
63684
  setRouteParams(params);
63980
63685
  setCurrentPage(match.page.name);
63981
- if (onPageChange) {
63982
- onPageChange(path);
63983
- } else if (!isolated && typeof window !== "undefined") {
63984
- const url = new URL(window.location.href);
63985
- url.searchParams.set("page", path);
63986
- window.history.pushState({}, "", url.toString());
63987
- window.dispatchEvent(new PopStateEvent("popstate"));
63988
- }
63686
+ announcePage(path);
63989
63687
  }
63990
- }, [pages, isolated, onPageChange]);
63688
+ }, [pages, matchRoute, announcePage, onUnmatchedNavigate]);
63991
63689
  const handleNavigateEffect = React93.useCallback(
63992
63690
  (path, params, crumb) => {
63993
63691
  navStackRef.current?.beginNavigate(path, crumb);
@@ -64052,6 +63750,33 @@ function OrbPreview({
64052
63750
  navLog.info("interceptor:installed", { pageCount: pages.length, paths: pages.map((p) => p.page.path) });
64053
63751
  return () => el.removeEventListener("click", handler, true);
64054
63752
  }, [pages, handleNavigate, isolated, hostHrefBase]);
63753
+ if (lazyRoute) {
63754
+ return /* @__PURE__ */ jsxRuntime.jsxs(Box, { ref: containerRef, className: `overflow-auto ${className ?? ""}`, style: { height }, children: [
63755
+ lazyLoad.status === "loading" && /* @__PURE__ */ jsxRuntime.jsx(LoadingState, {}),
63756
+ lazyLoad.status === "error" && /* @__PURE__ */ jsxRuntime.jsx(ErrorState, { "data-testid": "lazy-page-error", message: lazyLoad.error }),
63757
+ lazyLoad.status === "ready" && /* @__PURE__ */ jsxRuntime.jsx(
63758
+ OrbPreview,
63759
+ {
63760
+ schema: lazyLoad.schema,
63761
+ autoMock,
63762
+ height: "100%",
63763
+ className: "border-0",
63764
+ serverUrl,
63765
+ transport,
63766
+ getAccessToken,
63767
+ initialPagePath: lazyRoute.path,
63768
+ user,
63769
+ isolated,
63770
+ fit,
63771
+ onPageChange: announcePage,
63772
+ themeOverride,
63773
+ lazyLoader,
63774
+ onUnmatchedNavigate: handleNavigate
63775
+ },
63776
+ lazyRoute.page.orbRef
63777
+ )
63778
+ ] });
63779
+ }
64055
63780
  return /* @__PURE__ */ jsxRuntime.jsxs(
64056
63781
  Box,
64057
63782
  {
@@ -64123,7 +63848,9 @@ function BrowserPlayground({
64123
63848
  paused,
64124
63849
  fit,
64125
63850
  onPageChange,
64126
- viewer
63851
+ viewer,
63852
+ messages,
63853
+ locale
64127
63854
  }) {
64128
63855
  const [runtime$1] = React93.useState(
64129
63856
  () => new OrbitalServerRuntime.OrbitalServerRuntime({ mode, debug: false, ...viewer !== void 0 ? { defaultUser: viewer } : {} })
@@ -64139,10 +63866,10 @@ function BrowserPlayground({
64139
63866
  const registrationReady = React93.useMemo(() => {
64140
63867
  const orbitalNames = schema.orbitals.map((o) => o.name);
64141
63868
  playgroundLog.debug("register:start", { schema: schema.name, orbitalNames });
64142
- return runtime$1.register(schema).then(() => {
63869
+ return runtime$1.register(schema, messages !== void 0 ? { messages } : {}).then(() => {
64143
63870
  playgroundLog.debug("register:done", { schema: schema.name, orbitalNames });
64144
63871
  });
64145
- }, [runtime$1, schema]);
63872
+ }, [runtime$1, schema, messages]);
64146
63873
  const teardownTimerRef = React93.useRef(null);
64147
63874
  React93.useEffect(() => {
64148
63875
  if (teardownTimerRef.current !== null) {
@@ -64172,7 +63899,13 @@ function BrowserPlayground({
64172
63899
  ),
64173
63900
  [runtime$1, registrationReady]
64174
63901
  );
64175
- return /* @__PURE__ */ jsxRuntime.jsx(
63902
+ const viewerLocale = locale ?? schema.locales?.[0];
63903
+ const i18n$1 = React93.useMemo(() => {
63904
+ if (viewerLocale === void 0 || messages === void 0) return void 0;
63905
+ const catalog = messages[viewerLocale] ?? {};
63906
+ return { locale: viewerLocale, direction: i18n.localeDirection(viewerLocale), t: hooks.createTranslate(catalog), messages: catalog };
63907
+ }, [viewerLocale, messages]);
63908
+ const preview = /* @__PURE__ */ jsxRuntime.jsx(
64176
63909
  OrbPreview,
64177
63910
  {
64178
63911
  schema,
@@ -64186,6 +63919,7 @@ function BrowserPlayground({
64186
63919
  isolated: true
64187
63920
  }
64188
63921
  );
63922
+ return i18n$1 !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(hooks.I18nProvider, { value: i18n$1, children: preview }) : preview;
64189
63923
  }
64190
63924
 
64191
63925
  // components/avl/molecules/OrbPreviewNode.tsx
@@ -67460,7 +67194,11 @@ function AppearanceSection({ patternConfig, themeManifest, onPropChange, onToken
67460
67194
  {
67461
67195
  checked: position.absolute,
67462
67196
  label: t("orbInspector.absolute"),
67463
- onChange: (on) => write(on ? { absolute: true, x: axisPositionFrom("x", "start", offsetInParent), y: axisPositionFrom("y", "start", offsetInParent) } : { ...position, absolute: false })
67197
+ disabled: !offsetInParent && !position.absolute,
67198
+ onChange: (on) => {
67199
+ if (!on) write({ ...position, absolute: false });
67200
+ else if (offsetInParent) write({ absolute: true, x: axisPositionFrom("x", "start", offsetInParent), y: axisPositionFrom("y", "start", offsetInParent) });
67201
+ }
67464
67202
  }
67465
67203
  ),
67466
67204
  position.absolute && ["x", "y"].map((axis) => /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-2", "data-testid": `inspector-constraint-${axis}`, children: [
@@ -67471,9 +67209,10 @@ function AppearanceSection({ patternConfig, themeManifest, onPropChange, onToken
67471
67209
  value: position[axis].constraint,
67472
67210
  "aria-label": t(axis === "x" ? "orbInspector.constraintHorizontal" : "orbInspector.constraintVertical"),
67473
67211
  options: CONSTRAINTS.map((c) => ({ value: c, label: t(CONSTRAINT_LABELS[axis][c]) })),
67212
+ disabled: !offsetInParent,
67474
67213
  onValueChange: (v) => {
67475
67214
  const constraint = CONSTRAINTS.find((c) => c === v);
67476
- if (constraint) write({ ...position, [axis]: axisPositionFrom(axis, constraint, offsetInParent) });
67215
+ if (constraint && offsetInParent) write({ ...position, [axis]: axisPositionFrom(axis, constraint, offsetInParent) });
67477
67216
  },
67478
67217
  className: "flex-1 text-xs h-6"
67479
67218
  }