@almadar/ui 6.51.2 → 6.53.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 (127) hide show
  1. package/dist/{EntityBindingContext-BbxrwSb9.d.ts → AwaitingSkeletonContext-Bh399p1x.d.ts} +17 -2
  2. package/dist/{Canvas3DHost-CLC_jXh_.d.ts → Canvas3DHost-B-y2TNij.d.ts} +1 -1
  3. package/dist/{FileTree-RKQqRhIM.d.ts → FileTree-DUi7e7Z8.d.ts} +5 -5
  4. package/dist/{GameAudioProvider-BgWLggIy.d.ts → GameAudioProvider-DyBvYP2c.d.ts} +1 -1
  5. package/dist/{NavStackContext-B-XLULCO.d.ts → NavStackContext-04NLdXsY.d.ts} +8 -0
  6. package/dist/Typography-JGSDH4JP.js +5 -0
  7. package/dist/{UISlotContext-DNM8iXna.d.ts → UISlotContext-CS487Uoc.d.ts} +1 -1
  8. package/dist/{UISlotRenderer-7UYHFW4S.js → UISlotRenderer-JT34I3O7.js} +9 -9
  9. package/dist/avl/index.cjs +39958 -38525
  10. package/dist/avl/index.d.ts +8 -5
  11. package/dist/avl/index.js +37 -26
  12. package/dist/{chunk-JXUYEO7U.js → chunk-2LFBQ4IS.js} +7 -1
  13. package/dist/{chunk-GIPZSCND.js → chunk-3EF5SDIJ.js} +31157 -31206
  14. package/dist/{chunk-GHXWGQTX.js → chunk-4OZDHCZV.js} +1 -1
  15. package/dist/{chunk-HQDKHLFG.js → chunk-64WACXM7.js} +15 -1
  16. package/dist/{chunk-FGHRVJCI.js → chunk-6O37FCX4.js} +13 -2
  17. package/dist/{chunk-BUEIZY54.js → chunk-7LM6I3NA.js} +8 -7
  18. package/dist/chunk-CBIJP5PL.js +284 -0
  19. package/dist/{chunk-MWPX2O4M.js → chunk-GMDMOYXD.js} +3 -16
  20. package/dist/{chunk-YKHNK5JH.js → chunk-GODZKHAL.js} +11 -4
  21. package/dist/{chunk-T7IH5ABO.js → chunk-IKULQIDX.js} +199 -88
  22. package/dist/{chunk-NTO555KF.js → chunk-JRW33U35.js} +183 -62
  23. package/dist/{chunk-OLZ3EEML.js → chunk-KQXXO42S.js} +106 -90
  24. package/dist/chunk-OKWD7LPO.js +80 -0
  25. package/dist/{chunk-YHY5K2Y7.js → chunk-PEST66PN.js} +6 -0
  26. package/dist/{chunk-L55SAFKL.js → chunk-UGHAADU5.js} +77 -1
  27. package/dist/{chunk-6CFYRP4S.js → chunk-VHTJRS2N.js} +4 -8
  28. package/dist/{chunk-R4V7IZQP.js → chunk-WPNM2KC6.js} +2 -2
  29. package/dist/{cn-CO-0rolG.d.ts → cn-ClXGlIOY.d.ts} +2 -2
  30. package/dist/components/index.cjs +46084 -44766
  31. package/dist/components/index.d.ts +645 -699
  32. package/dist/components/index.js +621 -13
  33. package/dist/context/index.cjs +20 -7
  34. package/dist/context/index.d.ts +3 -3
  35. package/dist/context/index.js +3 -3
  36. package/dist/hooks/index.cjs +126 -9
  37. package/dist/hooks/index.d.ts +32 -7
  38. package/dist/hooks/index.js +7 -7
  39. package/dist/lib/drawable/three/index.cjs +79 -2
  40. package/dist/lib/drawable/three/index.d.ts +3 -3
  41. package/dist/lib/drawable/three/index.js +7 -7
  42. package/dist/lib/index.cjs +116 -2
  43. package/dist/lib/index.d.ts +29 -6
  44. package/dist/lib/index.js +6 -5
  45. package/dist/locales/index.cjs +231 -3
  46. package/dist/locales/index.js +155 -3
  47. package/dist/{paintDispatch-CMgOyVjS.d.ts → paintDispatch-_6EhJCiL.d.ts} +6 -6
  48. package/dist/providers/index.cjs +36404 -35028
  49. package/dist/providers/index.d.ts +34 -9
  50. package/dist/providers/index.js +82 -19
  51. package/dist/renderer/index.cjs +6 -0
  52. package/dist/renderer/index.d.ts +1 -1
  53. package/dist/renderer/index.js +1 -1
  54. package/dist/runtime/index.cjs +37861 -36437
  55. package/dist/runtime/index.d.ts +6 -4
  56. package/dist/runtime/index.js +11 -11
  57. package/dist/ssr/index.cjs +584 -181
  58. package/dist/ssr/index.d.cts +36 -44
  59. package/dist/ssr/index.d.ts +36 -44
  60. package/dist/ssr/index.js +527 -124
  61. package/dist/{themeTokens-CN9WCXQc.d.ts → themeTokens-Ccu7EmGY.d.ts} +4 -2
  62. package/dist/{useUISlots-CwUWM1ra.d.ts → useUISlots-1dk2TR4j.d.ts} +1 -9
  63. package/dist/{verificationRegistry-DBHfOR9y.d.ts → verificationRegistry-CD7Xb40L.d.ts} +1 -1
  64. package/locales/ar.json +77 -1
  65. package/locales/en.json +77 -1
  66. package/locales/sl.json +77 -1
  67. package/package.json +13 -10
  68. package/tailwind-preset.cjs +37 -1
  69. package/themes/_base.css +114 -8
  70. package/themes/_contract.md +6 -0
  71. package/themes/almadar-website.css +2 -0
  72. package/themes/almadar.css +2 -0
  73. package/themes/aqua.css +5 -3
  74. package/themes/arabesque.css +9 -7
  75. package/themes/art-deco.css +5 -3
  76. package/themes/art-nouveau.css +4 -0
  77. package/themes/atelier.css +10 -8
  78. package/themes/bauhaus.css +2 -0
  79. package/themes/bloomberg-dense.css +13 -11
  80. package/themes/blueprint.css +2 -0
  81. package/themes/clay.css +2 -0
  82. package/themes/comic.css +12 -10
  83. package/themes/constructivist.css +2 -0
  84. package/themes/corporate.css +4 -2
  85. package/themes/cyberpunk.css +2 -0
  86. package/themes/frutiger-aero.css +2 -0
  87. package/themes/game-adventure.css +1 -0
  88. package/themes/game-rpg.css +1 -0
  89. package/themes/game-sci-fi.css +1 -0
  90. package/themes/game-ui-pack.css +1 -0
  91. package/themes/gazette.css +10 -8
  92. package/themes/glass.css +17 -15
  93. package/themes/gothic.css +2 -0
  94. package/themes/ink-wash.css +2 -0
  95. package/themes/kawaii.css +2 -0
  96. package/themes/kiosk.css +17 -15
  97. package/themes/linear-clean.css +12 -10
  98. package/themes/luxury.css +2 -0
  99. package/themes/mac-classic.css +2 -0
  100. package/themes/material.css +2 -0
  101. package/themes/memphis.css +2 -0
  102. package/themes/mid-century.css +2 -0
  103. package/themes/minimalist.css +2 -0
  104. package/themes/mudcloth.css +2 -0
  105. package/themes/neon.css +2 -0
  106. package/themes/neumorphic.css +2 -0
  107. package/themes/newsprint.css +2 -0
  108. package/themes/notion-editorial.css +12 -10
  109. package/themes/pixel.css +2 -0
  110. package/themes/prism.css +20 -18
  111. package/themes/retro.css +2 -0
  112. package/themes/risograph.css +2 -0
  113. package/themes/scandi.css +2 -0
  114. package/themes/sketch.css +2 -0
  115. package/themes/solarpunk.css +2 -0
  116. package/themes/steampunk.css +2 -0
  117. package/themes/swiss.css +2 -0
  118. package/themes/terminal.css +8 -6
  119. package/themes/trait-wars.css +2 -0
  120. package/themes/ukiyo-e.css +2 -0
  121. package/themes/vaporwave.css +2 -0
  122. package/themes/victorian.css +2 -0
  123. package/themes/wabi-sabi.css +2 -0
  124. package/themes/win95.css +2 -0
  125. package/themes/wireframe.css +2 -0
  126. package/themes/zine.css +2 -0
  127. package/dist/Typography-2Z3JKWHN.js +0 -5
@@ -1,20 +1,20 @@
1
1
  import React__default, { ReactNode } from 'react';
2
- import { EntityRow, SExpr, EventPayload, EffectTrace } from '@almadar/core';
3
- export { ANONYMOUS_USER, comparePathSpecificity, matchPath, matchPathAmong } from '@almadar/core';
2
+ import { EntityRow, SExpr, EventPayload, EffectTrace, SurfaceMode } from '@almadar/core';
3
+ export { ANONYMOUS_USER, SurfaceMode, comparePathSpecificity, matchPath, matchPathAmong } from '@almadar/core';
4
4
  import { U as UIThemeDefinition } from '../ArbitraryClassCompiler-DvzdeHxc.js';
5
5
  export { A as ARBITRARY_CLASS_STYLE_ID, a as ArbitraryClassCompiler, b as ArbitraryClassCompilerProvider, c as ArbitraryClassCompilerProviderProps, d as CurrentPagePathContext, e as CurrentPagePathProvider, f as CurrentPagePathProviderProps, g as DesignThemeProvider, O as OrbitalThemeProvider, h as OrbitalThemeProviderProps, r as resetArbitraryClassStyles, u as useArbitraryClassStyles, m as useCurrentPagePath, n as useDesignTheme } from '../ArbitraryClassCompiler-DvzdeHxc.js';
6
6
  import { b as UserData } from '../UserContext-D566nfWA.js';
7
7
  export { U as UserContext, a as UserContextValue, c as UserProvider, d as UserProviderProps, u as useHasPermission, e as useHasRole, f as useUser, g as useUserForEvaluation } from '../UserContext-D566nfWA.js';
8
- import { E as EventBusContextType } from '../NavStackContext-B-XLULCO.js';
9
- export { N as NavPageDecl, a as NavStackApi, b as NavStackProvider, c as NavStackProviderProps, d as NavStackRouterBridge, e as NavStackRouterBridgeProps, i as isInertNavStack, u as useNavStack } from '../NavStackContext-B-XLULCO.js';
10
- export { n as EntityBindingContext, E as EntityBindingSource, a as EntitySchemaContextValue, b as EntitySchemaProvider, c as EntitySchemaProviderProps, d as ServerBridgeContextValue, e as ServerBridgeProvider, o as ServerBridgeProviderProps, S as ServerBridgeTransport, T as TraitContext, f as TraitContextValue, g as TraitInstance, h as TraitProvider, i as TraitProviderProps, p as useEntityBindingSnapshot, u as useEntitySchema, j as useEntitySchemaOptional, k as useServerBridge, l as useTrait, m as useTraitContext } from '../EntityBindingContext-BbxrwSb9.js';
8
+ import { E as EventBusContextType } from '../NavStackContext-04NLdXsY.js';
9
+ export { N as NavPageDecl, a as NavStackApi, b as NavStackProvider, c as NavStackProviderProps, d as NavStackRouterBridge, e as NavStackRouterBridgeProps, i as isInertNavStack, u as useNavStack } from '../NavStackContext-04NLdXsY.js';
10
+ export { n as AwaitingSkeletonContext, A as AwaitingSkeletonSource, o as EntityBindingContext, E as EntityBindingSource, a as EntitySchemaContextValue, b as EntitySchemaProvider, c as EntitySchemaProviderProps, d as ServerBridgeContextValue, e as ServerBridgeProvider, p as ServerBridgeProviderProps, S as ServerBridgeTransport, T as TraitContext, f as TraitContextValue, g as TraitInstance, h as TraitProvider, i as TraitProviderProps, q as useAwaitingSkeleton, r as useEntityBindingSnapshot, u as useEntitySchema, j as useEntitySchemaOptional, k as useServerBridge, l as useTrait, m as useTraitContext } from '../AwaitingSkeletonContext-Bh399p1x.js';
11
11
  import { i as UseOfflineExecutorResult, U as UseOfflineExecutorOptions } from '../offline-executor-C0TWucBj.js';
12
12
  export { N as NavigationContextValue, c as NavigationProvider, d as NavigationProviderProps, e as NavigationState, k as extractRouteParams, l as findPageByName, m as findPageByPath, n as getAllPages, o as getDefaultPage, p as pathMatches, u as useActivePage, q as useInitPayload, r as useNavigateTo, s as useNavigation, t as useNavigationId, v as useNavigationState } from '../offline-executor-C0TWucBj.js';
13
- import '../verificationRegistry-DBHfOR9y.js';
14
- export { G as GameAudioContext, a as GameAudioContextValue, b as GameAudioProvider, c as GameAudioProviderProps, u as useGameAudioContext, d as useGameAudioContextOptional } from '../GameAudioProvider-BgWLggIy.js';
13
+ import '../verificationRegistry-CD7Xb40L.js';
14
+ export { G as GameAudioContext, a as GameAudioContextValue, b as GameAudioProvider, c as GameAudioProviderProps, u as useGameAudioContext, d as useGameAudioContextOptional } from '../GameAudioProvider-DyBvYP2c.js';
15
15
  export { A as Avl3DConfig, a as Avl3DContext, b as Avl3DModelOverrides, u as useAvl3DConfig, c as useAvl3DPalette } from '../avl-3d-context-MAt_NuU9.js';
16
16
  export { AccessTokenProvider } from '@almadar/runtime';
17
- import '../paintDispatch-CMgOyVjS.js';
17
+ import '../paintDispatch-_6EhJCiL.js';
18
18
  import 'lucide-react';
19
19
  import 'three';
20
20
 
@@ -509,4 +509,29 @@ declare function useOfflineMode(): OfflineModeContextValue;
509
509
  */
510
510
  declare function useOptionalOfflineMode(): OfflineModeContextValue | null;
511
511
 
512
- export { EventBusContext, EventBusProvider, type OfflineModeContextValue, OfflineModeProvider, type OfflineModeProviderProps, OrbitalProvider, type OrbitalProviderProps, RenderSlotProvider, type RenderSlotProviderProps, SelectionContext, type SelectionContextType, SelectionProvider, type TraitScope, TraitScopeProvider, type TraitScopeProviderProps, UIThemeDefinition, UserData, VerificationProvider, type VerificationProviderProps, mapServerEffectResults, useOfflineMode, useOptionalOfflineMode, useRenderSlot, useSelection, useSelectionOptional, useTraitScope, useTraitScopeChain };
512
+ /**
513
+ * Content surfaces: the background box behind a content block (table,
514
+ * calendar, list, chart …). Every block paints the theme-owned `.surface-content`
515
+ * by default, so a patterned page never shows through one block and not the
516
+ * next; the THEME decides what that surface looks like via `--surface-content-*`.
517
+ *
518
+ * Anything that already is a surface (a Card, a dialog, a panel, or a block that
519
+ * painted one) marks its subtree, and a block inside that subtree stays flat —
520
+ * declared ancestry, so a surface never nests inside another.
521
+ */
522
+
523
+ /** Marks its subtree as already sitting on a surface. */
524
+ declare function SurfaceBoundary({ children }: {
525
+ children?: React__default.ReactNode;
526
+ }): React__default.ReactElement;
527
+ interface ContentSurface {
528
+ /** `surface-content` when this block paints the surface, otherwise undefined. */
529
+ className: string | undefined;
530
+ /** Wraps the block's content so nested blocks know they already sit on a surface. */
531
+ provide: (node: React__default.ReactNode) => React__default.ReactElement;
532
+ }
533
+ declare function useContentSurface(surface?: SurfaceMode): ContentSurface;
534
+ /** True when an ancestor already painted a surface. */
535
+ declare function useOnSurface(): boolean;
536
+
537
+ export { type ContentSurface, EventBusContext, EventBusProvider, type OfflineModeContextValue, OfflineModeProvider, type OfflineModeProviderProps, OrbitalProvider, type OrbitalProviderProps, RenderSlotProvider, type RenderSlotProviderProps, SelectionContext, type SelectionContextType, SelectionProvider, SurfaceBoundary, type TraitScope, TraitScopeProvider, type TraitScopeProviderProps, UIThemeDefinition, UserData, VerificationProvider, type VerificationProviderProps, mapServerEffectResults, useContentSurface, useOfflineMode, useOnSurface, useOptionalOfflineMode, useRenderSlot, useSelection, useSelectionOptional, useTraitScope, useTraitScopeChain };
@@ -1,20 +1,20 @@
1
1
  import { arbitraryClassesOf } from '../chunk-ERXIHZW3.js';
2
- import { useGameAudio, SuspenseConfigProvider } from '../chunk-GIPZSCND.js';
3
- import { Box } from '../chunk-BUEIZY54.js';
4
- import '../chunk-MWPX2O4M.js';
5
- import '../chunk-NTO555KF.js';
2
+ import { useGameAudio, SuspenseConfigProvider } from '../chunk-3EF5SDIJ.js';
3
+ import { Box } from '../chunk-7LM6I3NA.js';
4
+ import '../chunk-GMDMOYXD.js';
5
+ import '../chunk-JRW33U35.js';
6
6
  import '../chunk-XJTHMW4G.js';
7
7
  import { setGlobalEventBus, useEventBus } from '../chunk-6EV3OEBQ.js';
8
- import { resolveThemeForRuntime, themeTokensToCssVars } from '../chunk-FGHRVJCI.js';
9
- import '../chunk-OLZ3EEML.js';
8
+ import '../chunk-KQXXO42S.js';
10
9
  import { registerCheck, recordTransition, bindEventBus, bindTraitStateGetter } from '../chunk-O7OLVVBR.js';
11
- import '../chunk-HQDKHLFG.js';
12
- import '../chunk-GHXWGQTX.js';
13
- import '../chunk-L55SAFKL.js';
10
+ import '../chunk-64WACXM7.js';
11
+ import { resolveThemeForRuntime, themeTokensToCssVars } from '../chunk-6O37FCX4.js';
12
+ import '../chunk-4OZDHCZV.js';
13
+ import '../chunk-UGHAADU5.js';
14
14
  import { useOfflineExecutor } from '../chunk-PQKU62LK.js';
15
- import '../chunk-YHY5K2Y7.js';
15
+ import '../chunk-PEST66PN.js';
16
16
  import '../chunk-QPXIAUJD.js';
17
- import { createContext, useRef, useCallback, useMemo, useEffect, useState, useContext, useSyncExternalStore } from 'react';
17
+ import React17, { createContext, useRef, useCallback, useMemo, useEffect, useState, useContext, useSyncExternalStore } from 'react';
18
18
  import { ThemeProvider, useThemeScope, useTheme, ThemeScopeContext } from '@almadar/ui/context';
19
19
  export { DesignThemeProvider, useDesignTheme } from '@almadar/ui/context';
20
20
  import { createLogger } from '@almadar/logger';
@@ -1062,6 +1062,15 @@ function useEntityBindingSnapshot(traitName) {
1062
1062
  state: source !== null && traitName !== void 0 ? source.getState(traitName) : ""
1063
1063
  };
1064
1064
  }
1065
+ var AwaitingSkeletonContext = createContext(null);
1066
+ var NOOP_SUBSCRIBE2 = () => () => void 0;
1067
+ var ZERO = () => 0;
1068
+ function useAwaitingSkeleton(target) {
1069
+ const source = useContext(AwaitingSkeletonContext);
1070
+ useSyncExternalStore(source?.subscribe ?? NOOP_SUBSCRIBE2, source?.getVersion ?? ZERO, ZERO);
1071
+ if (source === null) return void 0;
1072
+ return "slot" in target ? source.forSlot(target.slot) : source.forTrait(target.trait);
1073
+ }
1065
1074
  var OfflineModeContext = createContext(null);
1066
1075
  function OfflineModeProvider({
1067
1076
  children,
@@ -1146,8 +1155,32 @@ function GameAudioProvider({
1146
1155
  return /* @__PURE__ */ jsx(GameAudioContext.Provider, { value, children });
1147
1156
  }
1148
1157
  GameAudioProvider.displayName = "GameAudioProvider";
1149
- function pageEntryLabel(page) {
1150
- return page.label ?? page.name;
1158
+ function pageEntryLabel(page, navLabels) {
1159
+ return page.label ?? navLabels?.[page.path] ?? page.name;
1160
+ }
1161
+ function navLabelsFromItems(pages, items) {
1162
+ const labels = {};
1163
+ const visit = (list) => {
1164
+ for (const item of list) {
1165
+ const page = matchNavPage(pages, item.href);
1166
+ if (page && item.label) labels[page.path] = item.label;
1167
+ if (item.children) visit(item.children);
1168
+ }
1169
+ };
1170
+ visit(items);
1171
+ return labels;
1172
+ }
1173
+ function resolveEntryLabels(entries, pages, navLabels) {
1174
+ let changed = false;
1175
+ const resolved = entries.map((entry) => {
1176
+ const page = matchNavPage(pages, entry.href);
1177
+ if (!page || entry.label !== pageEntryLabel(page)) return entry;
1178
+ const label = pageEntryLabel(page, navLabels);
1179
+ if (label === entry.label) return entry;
1180
+ changed = true;
1181
+ return { ...entry, label };
1182
+ });
1183
+ return changed ? resolved : entries;
1151
1184
  }
1152
1185
  function normalizePath(p) {
1153
1186
  let normalized = p.trim();
@@ -1220,7 +1253,8 @@ var INERT_API = {
1220
1253
  beginNavigate: () => void 0,
1221
1254
  back: () => void 0,
1222
1255
  goTo: () => void 0,
1223
- setCurrentLabel: () => void 0
1256
+ setCurrentLabel: () => void 0,
1257
+ registerNavItems: () => void 0
1224
1258
  };
1225
1259
  var NavStackContext = createContext(INERT_API);
1226
1260
  function isInertNavStack(api) {
@@ -1250,6 +1284,14 @@ function persistStored(storageKey, state) {
1250
1284
  } catch {
1251
1285
  }
1252
1286
  }
1287
+ function sameNavItems(a, b) {
1288
+ if (a === b) return true;
1289
+ if (a.length !== b.length) return false;
1290
+ return a.every((item, i) => {
1291
+ const other = b[i];
1292
+ return item.href === other.href && item.label === other.label && sameNavItems(item.children ?? [], other.children ?? []);
1293
+ });
1294
+ }
1253
1295
  var NavStackProvider = ({
1254
1296
  pages,
1255
1297
  currentPath,
@@ -1258,6 +1300,7 @@ var NavStackProvider = ({
1258
1300
  children
1259
1301
  }) => {
1260
1302
  const [state, setState] = useState(() => loadStored(storageKey));
1303
+ const [navItems, setNavItems] = useState([]);
1261
1304
  const pendingCrumbRef = useRef(null);
1262
1305
  const stateRef = useRef(state);
1263
1306
  stateRef.current = state;
@@ -1293,9 +1336,13 @@ var NavStackProvider = ({
1293
1336
  },
1294
1337
  [pages, currentPath, storageKey]
1295
1338
  );
1339
+ const registerNavItems = useCallback((items) => {
1340
+ setNavItems((prev) => sameNavItems(prev, items) ? prev : items);
1341
+ }, []);
1342
+ const navLabels = useMemo(() => navLabelsFromItems(pages, navItems), [pages, navItems]);
1296
1343
  const entries = useMemo(
1297
- () => entriesFor(state, pages, currentPath),
1298
- [state, pages, currentPath]
1344
+ () => resolveEntryLabels(entriesFor(state, pages, currentPath), pages, navLabels),
1345
+ [state, pages, currentPath, navLabels]
1299
1346
  );
1300
1347
  const api = useMemo(
1301
1348
  () => ({
@@ -1304,9 +1351,10 @@ var NavStackProvider = ({
1304
1351
  beginNavigate,
1305
1352
  back,
1306
1353
  goTo,
1307
- setCurrentLabel
1354
+ setCurrentLabel,
1355
+ registerNavItems
1308
1356
  }),
1309
- [entries, state, pages, currentPath, beginNavigate, back, goTo, setCurrentLabel]
1357
+ [entries, state, pages, currentPath, beginNavigate, back, goTo, setCurrentLabel, registerNavItems]
1310
1358
  );
1311
1359
  return /* @__PURE__ */ jsx(NavStackContext.Provider, { value: api, children });
1312
1360
  };
@@ -1391,5 +1439,20 @@ function useAvl3DConfig() {
1391
1439
  function useAvl3DPalette() {
1392
1440
  return useContext(Avl3DContext).palette;
1393
1441
  }
1442
+ var SurfaceContext = React17.createContext(false);
1443
+ function SurfaceBoundary({ children }) {
1444
+ return /* @__PURE__ */ jsx(SurfaceContext.Provider, { value: true, children });
1445
+ }
1446
+ function useContentSurface(surface = "auto") {
1447
+ const onSurface = React17.useContext(SurfaceContext);
1448
+ const paints = surface === "auto" && !onSurface;
1449
+ return {
1450
+ className: paints ? "surface-content" : void 0,
1451
+ provide: (node) => paints ? /* @__PURE__ */ jsx(SurfaceBoundary, { children: node }) : /* @__PURE__ */ jsx(Fragment, { children: node })
1452
+ };
1453
+ }
1454
+ function useOnSurface() {
1455
+ return React17.useContext(SurfaceContext);
1456
+ }
1394
1457
 
1395
- export { ARBITRARY_CLASS_STYLE_ID, ArbitraryClassCompilerProvider, Avl3DContext, CurrentPagePathContext, CurrentPagePathProvider, EntityBindingContext, EntitySchemaProvider, EventBusContext, EventBusProvider, GameAudioContext, GameAudioProvider, NavStackProvider, NavStackRouterBridge, NavigationProvider, OfflineModeProvider, OrbitalProvider, OrbitalThemeProvider, RenderSlotProvider, SelectionContext, SelectionProvider, ServerBridgeProvider, TraitContext, TraitProvider, TraitScopeProvider, UserContext, UserProvider, VerificationProvider, extractRouteParams, findPageByName, findPageByPath, getAllPages, getDefaultPage, isInertNavStack, mapServerEffectResults, pathMatches, resetArbitraryClassStyles, useActivePage, useArbitraryClassStyles, useAvl3DConfig, useAvl3DPalette, useCurrentPagePath, useEntityBindingSnapshot, useEntitySchema, useEntitySchemaOptional, useGameAudioContext, useGameAudioContextOptional, useHasPermission, useHasRole, useInitPayload, useNavStack, useNavigateTo, useNavigation, useNavigationId, useNavigationState, useOfflineMode, useOptionalOfflineMode, useRenderSlot, useSelection, useSelectionOptional, useServerBridge, useTrait, useTraitContext, useTraitScope, useTraitScopeChain, useUser, useUserForEvaluation };
1458
+ export { ARBITRARY_CLASS_STYLE_ID, ArbitraryClassCompilerProvider, Avl3DContext, AwaitingSkeletonContext, CurrentPagePathContext, CurrentPagePathProvider, EntityBindingContext, EntitySchemaProvider, EventBusContext, EventBusProvider, GameAudioContext, GameAudioProvider, NavStackProvider, NavStackRouterBridge, NavigationProvider, OfflineModeProvider, OrbitalProvider, OrbitalThemeProvider, RenderSlotProvider, SelectionContext, SelectionProvider, ServerBridgeProvider, SurfaceBoundary, TraitContext, TraitProvider, TraitScopeProvider, UserContext, UserProvider, VerificationProvider, extractRouteParams, findPageByName, findPageByPath, getAllPages, getDefaultPage, isInertNavStack, mapServerEffectResults, pathMatches, resetArbitraryClassStyles, useActivePage, useArbitraryClassStyles, useAvl3DConfig, useAvl3DPalette, useAwaitingSkeleton, useContentSurface, useCurrentPagePath, useEntityBindingSnapshot, useEntitySchema, useEntitySchemaOptional, useGameAudioContext, useGameAudioContextOptional, useHasPermission, useHasRole, useInitPayload, useNavStack, useNavigateTo, useNavigation, useNavigationId, useNavigationState, useOfflineMode, useOnSurface, useOptionalOfflineMode, useRenderSlot, useSelection, useSelectionOptional, useServerBridge, useTrait, useTraitContext, useTraitScope, useTraitScopeChain, useUser, useUserForEvaluation };
@@ -343,6 +343,12 @@ var SLOT_DEFINITIONS = {
343
343
  name: "sidebar",
344
344
  type: "inline"
345
345
  },
346
+ dock: {
347
+ name: "dock",
348
+ type: "portal",
349
+ portalTarget: "body",
350
+ zIndex: 850
351
+ },
346
352
  // -------------------------------------------------------------------------
347
353
  // Portal Slots - Render to document.body via React Portal
348
354
  // -------------------------------------------------------------------------
@@ -302,7 +302,7 @@ declare function hasEntities(entityName: string, context: DataContext): boolean;
302
302
  * Inline slots render within the component hierarchy.
303
303
  * Portal slots render to document.body, breaking out of overflow containers.
304
304
  */
305
- declare const SLOT_DEFINITIONS: Partial<Record<UISlot, SlotDefinition>> & Record<'main' | 'sidebar' | 'modal' | 'drawer' | 'overlay' | 'center' | 'toast' | 'hud-top' | 'hud-bottom' | 'floating', SlotDefinition>;
305
+ declare const SLOT_DEFINITIONS: Partial<Record<UISlot, SlotDefinition>> & Record<'main' | 'sidebar' | 'dock' | 'modal' | 'drawer' | 'overlay' | 'center' | 'toast' | 'hud-top' | 'hud-bottom' | 'floating', SlotDefinition>;
306
306
  /**
307
307
  * Get the slot definition for a slot name.
308
308
  */
@@ -1,3 +1,3 @@
1
1
  export { ClientEffectConfigContext, ClientEffectConfigProvider, NavigationProvider, OfflineExecutor, comparePathSpecificity, createOfflineExecutor, executeClientEffects, extractRouteParams, findPageByName, findPageByPath, getAllPages, getDefaultPage, getKnownPatterns, getPatternDefinition, getPatternMapping, getPatternsByCategory, getRenderUIEffects, hasEntities, initializePatternResolver, initializePatterns, isKnownPattern, matchPath, matchPathAmong, parseClientEffect, parseClientEffects, pathMatches, resolveEntityById, resolveEntityData, resolveEntityDataWithQuery, resolvePattern, setComponentMapping, setPatternRegistry, useActivePage, useClientEffectConfig, useClientEffectConfigOptional, useClientEffects, useInitPayload, useNavigateTo, useNavigation, useNavigationId, useNavigationState, useOfflineExecutor } from '../chunk-PQKU62LK.js';
2
- export { ALL_SLOTS, SLOT_DEFINITIONS, getInlineSlots, getSlotDefinition, isPortalSlot } from '../chunk-YHY5K2Y7.js';
2
+ export { ALL_SLOTS, SLOT_DEFINITIONS, getInlineSlots, getSlotDefinition, isPortalSlot } from '../chunk-PEST66PN.js';
3
3
  import '../chunk-QPXIAUJD.js';