@almadar/ui 5.28.4 → 5.29.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/avl/index.cjs +6600 -495
  2. package/dist/avl/index.js +6601 -496
  3. package/dist/components/core/molecules/NodeSlotEditor.d.ts +17 -0
  4. package/dist/components/core/molecules/index.d.ts +1 -0
  5. package/dist/components/core/organisms/index.d.ts +1 -1
  6. package/dist/components/core/templates/index.d.ts +3 -0
  7. package/dist/components/game/{organisms → molecules}/GameCanvas3D.d.ts +1 -3
  8. package/dist/components/game/molecules/index.d.ts +1 -0
  9. package/dist/components/game/{organisms → molecules}/three/hooks/useGameCanvas3DEvents.d.ts +1 -1
  10. package/dist/components/game/{organisms → molecules}/three/index.cjs +2 -2
  11. package/dist/components/game/{organisms → molecules}/three/index.css +3 -3
  12. package/dist/components/game/{organisms → molecules}/three/index.js +2 -2
  13. package/dist/components/game/{organisms → molecules}/three/renderers/FeatureRenderer.d.ts +1 -1
  14. package/dist/components/game/{organisms → molecules}/three/renderers/FeatureRenderer3D.d.ts +1 -1
  15. package/dist/components/game/{organisms → molecules}/three/renderers/TileRenderer.d.ts +1 -1
  16. package/dist/components/game/{organisms → molecules}/three/renderers/UnitRenderer.d.ts +1 -1
  17. package/dist/components/game/organisms/index.d.ts +0 -9
  18. package/dist/components/index.cjs +105 -31
  19. package/dist/components/index.js +106 -32
  20. package/dist/providers/index.cjs +13 -12
  21. package/dist/providers/index.js +13 -12
  22. package/dist/runtime/index.cjs +13 -12
  23. package/dist/runtime/index.js +13 -12
  24. package/package.json +9 -4
  25. package/dist/components/game/organisms/CombatLog.d.ts +0 -2
  26. package/dist/components/game/organisms/DialogueBox.d.ts +0 -2
  27. package/dist/components/game/organisms/GameHud.d.ts +0 -2
  28. package/dist/components/game/organisms/GameMenu.d.ts +0 -2
  29. package/dist/components/game/organisms/GameOverScreen.d.ts +0 -2
  30. package/dist/components/game/organisms/InventoryPanel.d.ts +0 -2
  31. package/dist/components/game/organisms/IsometricCanvas.d.ts +0 -3
  32. package/dist/components/game/organisms/PlatformerCanvas.d.ts +0 -2
  33. /package/dist/components/game/{organisms → molecules}/three/Camera3D.d.ts +0 -0
  34. /package/dist/components/game/{organisms → molecules}/three/Lighting3D.d.ts +0 -0
  35. /package/dist/components/game/{organisms → molecules}/three/Scene3D.d.ts +0 -0
  36. /package/dist/components/game/{organisms → molecules}/three/components/Canvas3DErrorBoundary.d.ts +0 -0
  37. /package/dist/components/game/{organisms → molecules}/three/components/Canvas3DLoadingState.d.ts +0 -0
  38. /package/dist/components/game/{organisms → molecules}/three/components/ModelLoader.d.ts +0 -0
  39. /package/dist/components/game/{organisms → molecules}/three/components/PhysicsObject3D.d.ts +0 -0
  40. /package/dist/components/game/{organisms → molecules}/three/components/index.d.ts +0 -0
  41. /package/dist/components/game/{organisms → molecules}/three/hooks/useAssetLoader.d.ts +0 -0
  42. /package/dist/components/game/{organisms → molecules}/three/hooks/useRaycaster.d.ts +0 -0
  43. /package/dist/components/game/{organisms → molecules}/three/hooks/useSceneGraph.d.ts +0 -0
  44. /package/dist/components/game/{organisms → molecules}/three/hooks/useThree.d.ts +0 -0
  45. /package/dist/components/game/{organisms → molecules}/three/index.d.ts +0 -0
  46. /package/dist/components/game/{organisms → molecules}/three/loaders/AssetLoader.d.ts +0 -0
  47. /package/dist/components/game/{organisms → molecules}/three/renderers/index.d.ts +0 -0
  48. /package/dist/components/game/{organisms → molecules}/three/utils/culling.d.ts +0 -0
  49. /package/dist/components/game/{organisms → molecules}/three/utils/grid3D.d.ts +0 -0
@@ -7078,6 +7078,16 @@ var init_Skeleton = __esm({
7078
7078
  Skeleton.displayName = "Skeleton";
7079
7079
  }
7080
7080
  });
7081
+ function getKnownPatterns() {
7082
+ return Object.keys(componentMapping);
7083
+ }
7084
+ var componentMapping;
7085
+ var init_pattern_resolver = __esm({
7086
+ "renderer/pattern-resolver.ts"() {
7087
+ createLogger("almadar:ui:pattern-resolver");
7088
+ componentMapping = {};
7089
+ }
7090
+ });
7081
7091
 
7082
7092
  // renderer/slot-definitions.ts
7083
7093
  function isPortalSlot(slot) {
@@ -8984,7 +8994,7 @@ function getTraitSnapshots() {
8984
8994
  try {
8985
8995
  snapshots.push(getter());
8986
8996
  } catch (err) {
8987
- log3.error("traitSnapshot getter failed", { trait: traitName, err: String(err) });
8997
+ log4.error("traitSnapshot getter failed", { trait: traitName, err: String(err) });
8988
8998
  }
8989
8999
  }
8990
9000
  return snapshots;
@@ -9062,10 +9072,10 @@ function updateAssetStatus(url, status) {
9062
9072
  window.__orbitalVerification.assetStatus[url] = status;
9063
9073
  }
9064
9074
  }
9065
- var log3;
9075
+ var log4;
9066
9076
  var init_verificationRegistry = __esm({
9067
9077
  "lib/verificationRegistry.ts"() {
9068
- log3 = createLogger("almadar:bridge");
9078
+ log4 = createLogger("almadar:bridge");
9069
9079
  exposeOnWindow();
9070
9080
  }
9071
9081
  });
@@ -9988,13 +9998,6 @@ var init_IsometricCanvas = __esm({
9988
9998
  }
9989
9999
  });
9990
10000
 
9991
- // components/game/organisms/IsometricCanvas.tsx
9992
- var init_IsometricCanvas2 = __esm({
9993
- "components/game/organisms/IsometricCanvas.tsx"() {
9994
- init_IsometricCanvas();
9995
- }
9996
- });
9997
-
9998
10001
  // components/game/organisms/boardEntity.ts
9999
10002
  function boardEntity(entity) {
10000
10003
  if (!entity) return void 0;
@@ -10390,7 +10393,7 @@ var init_BattleBoard = __esm({
10390
10393
  init_Button();
10391
10394
  init_Typography();
10392
10395
  init_Stack();
10393
- init_IsometricCanvas2();
10396
+ init_IsometricCanvas();
10394
10397
  init_boardEntity();
10395
10398
  init_isometric();
10396
10399
  BattleBoard.displayName = "BattleBoard";
@@ -11150,7 +11153,7 @@ var init_avl_elk_layout = __esm({
11150
11153
  elk = new ELK();
11151
11154
  }
11152
11155
  });
11153
- var log4, SWIM_GUTTER, CENTER_W, BehaviorView;
11156
+ var log5, SWIM_GUTTER, CENTER_W, BehaviorView;
11154
11157
  var init_BehaviorView = __esm({
11155
11158
  "components/avl/molecules/BehaviorView.tsx"() {
11156
11159
  "use client";
@@ -11159,7 +11162,7 @@ var init_BehaviorView = __esm({
11159
11162
  init_AvlSwimLane();
11160
11163
  init_types();
11161
11164
  init_avl_elk_layout();
11162
- log4 = createLogger("almadar:ui:avl:behavior-view");
11165
+ log5 = createLogger("almadar:ui:avl:behavior-view");
11163
11166
  SWIM_GUTTER = 120;
11164
11167
  CENTER_W = 360;
11165
11168
  BehaviorView = ({ data }) => {
@@ -11170,7 +11173,7 @@ var init_BehaviorView = __esm({
11170
11173
  const dataKey = useMemo(() => JSON.stringify(traitData), [traitData]);
11171
11174
  useEffect(() => {
11172
11175
  if (!traitData) return;
11173
- computeTraitLayout(traitData).then(setLayout).catch((err) => log4.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
11176
+ computeTraitLayout(traitData).then(setLayout).catch((err) => log5.error("compute-trait-layout-failed", { error: err instanceof Error ? err : String(err) }));
11174
11177
  }, [dataKey]);
11175
11178
  if (!traitData) {
11176
11179
  return /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-[var(--color-border)] bg-[var(--color-card)] p-4 text-center text-[var(--color-muted-foreground)] text-sm", children: t("avl.noTraitData") });
@@ -11677,7 +11680,7 @@ function generateDiff(oldVal, newVal) {
11677
11680
  }
11678
11681
  return diff;
11679
11682
  }
11680
- var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log5, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
11683
+ var orbStyleOverrides, orbStyle, loloStyleOverrides, loloStyle, log6, CODE_LANGUAGES, CODE_LANGUAGE_SET, DIFF_STYLES, LINE_PROPS_FN, HIDDEN_LINE_NUMBERS, CodeBlock;
11681
11684
  var init_CodeBlock = __esm({
11682
11685
  "components/core/molecules/markdown/CodeBlock.tsx"() {
11683
11686
  init_cn();
@@ -11760,7 +11763,7 @@ var init_CodeBlock = __esm({
11760
11763
  "lolo-op-async": { color: ORB_COLORS.dark.async }
11761
11764
  };
11762
11765
  loloStyle = { ...dark, ...loloStyleOverrides };
11763
- log5 = createLogger("almadar:ui:markdown-code");
11766
+ log6 = createLogger("almadar:ui:markdown-code");
11764
11767
  CODE_LANGUAGES = [
11765
11768
  "text",
11766
11769
  "json",
@@ -12024,7 +12027,7 @@ var init_CodeBlock = __esm({
12024
12027
  eventBus.emit("UI:COPY_CODE", { language: activeLanguage, success: true });
12025
12028
  setTimeout(() => setCopied(false), 2e3);
12026
12029
  } catch (err) {
12027
- log5.error("Failed to copy code", { error: err instanceof Error ? err : String(err) });
12030
+ log6.error("Failed to copy code", { error: err instanceof Error ? err : String(err) });
12028
12031
  eventBus.emit("UI:COPY_CODE", { language: activeLanguage, success: false });
12029
12032
  }
12030
12033
  };
@@ -15692,14 +15695,14 @@ function useSafeEventBus2() {
15692
15695
  } };
15693
15696
  }
15694
15697
  }
15695
- var log6, lookStyles4, ButtonGroup;
15698
+ var log7, lookStyles4, ButtonGroup;
15696
15699
  var init_ButtonGroup = __esm({
15697
15700
  "components/core/molecules/ButtonGroup.tsx"() {
15698
15701
  "use client";
15699
15702
  init_cn();
15700
15703
  init_atoms2();
15701
15704
  init_useEventBus();
15702
- log6 = createLogger("almadar:ui:button-group");
15705
+ log7 = createLogger("almadar:ui:button-group");
15703
15706
  lookStyles4 = {
15704
15707
  "right-aligned-buttons": "",
15705
15708
  "floating-bar": "fixed bottom-section left-1/2 -translate-x-1/2 shadow-elevation-toast bg-card p-card-sm rounded-container",
@@ -15780,7 +15783,7 @@ var init_ButtonGroup = __esm({
15780
15783
  {
15781
15784
  variant: "ghost",
15782
15785
  onClick: () => {
15783
- log6.debug("Filter clicked", { field: filter.field });
15786
+ log7.debug("Filter clicked", { field: filter.field });
15784
15787
  },
15785
15788
  children: filter.label
15786
15789
  },
@@ -18305,7 +18308,7 @@ var init_CastleBoard = __esm({
18305
18308
  "use client";
18306
18309
  init_cn();
18307
18310
  init_useEventBus();
18308
- init_IsometricCanvas2();
18311
+ init_IsometricCanvas();
18309
18312
  init_boardEntity();
18310
18313
  init_isometric();
18311
18314
  CastleBoard.displayName = "CastleBoard";
@@ -22473,6 +22476,65 @@ var init_JsonTreeEditor = __esm({
22473
22476
  };
22474
22477
  }
22475
22478
  });
22479
+ function normalize(value) {
22480
+ const wasArray = Array.isArray(value);
22481
+ const pattern = wasArray ? value[0] : value;
22482
+ const type = isObj2(pattern) && typeof pattern["type"] === "string" ? pattern["type"] : "";
22483
+ const props = {};
22484
+ if (isObj2(pattern)) {
22485
+ for (const [k, v] of Object.entries(pattern)) if (k !== "type") props[k] = v;
22486
+ }
22487
+ return { type, props, wasArray };
22488
+ }
22489
+ var isObj2, NodeSlotEditor;
22490
+ var init_NodeSlotEditor = __esm({
22491
+ "components/core/molecules/NodeSlotEditor.tsx"() {
22492
+ "use client";
22493
+ init_Stack();
22494
+ init_Select();
22495
+ init_Typography();
22496
+ init_JsonTreeEditor();
22497
+ init_pattern_resolver();
22498
+ init_cn();
22499
+ isObj2 = (v) => v !== null && v !== void 0 && typeof v === "object" && !Array.isArray(v);
22500
+ NodeSlotEditor = ({ value, onChange, className }) => {
22501
+ const { type, props, wasArray } = normalize(value);
22502
+ const patterns = React74__default.useMemo(() => {
22503
+ try {
22504
+ return [...getKnownPatterns()].sort();
22505
+ } catch {
22506
+ return [];
22507
+ }
22508
+ }, []);
22509
+ const options = React74__default.useMemo(
22510
+ () => [{ value: "", label: "\u2014 none \u2014" }, ...patterns.map((p2) => ({ value: p2, label: p2 }))],
22511
+ [patterns]
22512
+ );
22513
+ const emit = (nextType, nextProps) => {
22514
+ if (!nextType) {
22515
+ onChange(wasArray ? [] : {});
22516
+ return;
22517
+ }
22518
+ const pattern = { type: nextType, ...nextProps };
22519
+ onChange(wasArray || value === void 0 ? [pattern] : pattern);
22520
+ };
22521
+ return /* @__PURE__ */ jsxs(VStack, { gap: "xs", className: cn("w-full", className), children: [
22522
+ /* @__PURE__ */ jsx(
22523
+ Select,
22524
+ {
22525
+ options,
22526
+ value: type,
22527
+ onChange: (e) => emit(e.target.value, props)
22528
+ }
22529
+ ),
22530
+ type !== "" && /* @__PURE__ */ jsxs(VStack, { gap: "none", className: "pl-1", children: [
22531
+ /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: "props" }),
22532
+ /* @__PURE__ */ jsx(JsonTreeEditor, { value: props, onChange: (next) => emit(type, isObj2(next) ? next : {}) })
22533
+ ] })
22534
+ ] });
22535
+ };
22536
+ }
22537
+ });
22476
22538
  function fileIcon(name) {
22477
22539
  const ext = name.split(".").pop()?.toLowerCase() ?? "";
22478
22540
  switch (ext) {
@@ -23821,9 +23883,9 @@ function debug(...args) {
23821
23883
  const [first, ...rest] = args;
23822
23884
  const message = typeof first === "string" ? first : "<debug>";
23823
23885
  if (rest.length === 0 && typeof first === "string") {
23824
- log7.debug(message);
23886
+ log8.debug(message);
23825
23887
  } else {
23826
- log7.debug(message, { args: rest.length > 0 ? formatArgs(rest) : formatArgs([first]) });
23888
+ log8.debug(message, { args: rest.length > 0 ? formatArgs(rest) : formatArgs([first]) });
23827
23889
  }
23828
23890
  }
23829
23891
  function debugGroup(label) {
@@ -23851,11 +23913,11 @@ function toLogMetaValue(v) {
23851
23913
  }
23852
23914
  return String(v);
23853
23915
  }
23854
- var NAMESPACE, log7;
23916
+ var NAMESPACE, log8;
23855
23917
  var init_debug = __esm({
23856
23918
  "lib/debug.ts"() {
23857
23919
  NAMESPACE = "almadar:ui:debug";
23858
- log7 = createLogger(NAMESPACE);
23920
+ log8 = createLogger(NAMESPACE);
23859
23921
  createLogger("almadar:ui:debug:input");
23860
23922
  createLogger("almadar:ui:debug:collision");
23861
23923
  createLogger("almadar:ui:debug:physics");
@@ -35236,6 +35298,8 @@ function FieldControl({
35236
35298
  control = /* @__PURE__ */ jsx(TextLikeControl, { field: name, numeric: true, value, onCommit: onChange });
35237
35299
  } else if (decl.type === "string") {
35238
35300
  control = /* @__PURE__ */ jsx(TextLikeControl, { field: name, numeric: false, value, onCommit: onChange });
35301
+ } else if (decl.type === "node") {
35302
+ control = /* @__PURE__ */ jsx(NodeSlotEditor, { value: effectiveValue, onChange: (next) => onChange(name, next) });
35239
35303
  } else if (decl.type.startsWith("[") || Array.isArray(effectiveValue)) {
35240
35304
  const arr = Array.isArray(effectiveValue) ? effectiveValue : [];
35241
35305
  control = /* @__PURE__ */ jsx(JsonTreeEditor, { value: arr, onChange: (next) => onChange(name, next) });
@@ -35269,6 +35333,7 @@ var init_PropertyInspector = __esm({
35269
35333
  init_IconPicker();
35270
35334
  init_AssetPicker();
35271
35335
  init_JsonTreeEditor();
35336
+ init_NodeSlotEditor();
35272
35337
  TIER_ORDER = ["presentation", "domain", "policy", "infra", "internal"];
35273
35338
  SCALAR_TYPES = /* @__PURE__ */ new Set(["string", "number", "boolean", "icon", "asset"]);
35274
35339
  PropertyInspector = ({
@@ -37165,6 +37230,7 @@ var init_molecules2 = __esm({
37165
37230
  "components/core/molecules/index.ts"() {
37166
37231
  init_ErrorBoundary();
37167
37232
  init_JsonTreeEditor();
37233
+ init_NodeSlotEditor();
37168
37234
  init_FileTree();
37169
37235
  init_FormField();
37170
37236
  init_EmptyState();
@@ -43366,7 +43432,7 @@ function getAllEvents(traits2) {
43366
43432
  function EventDispatcherTab({ traits: traits2, schema }) {
43367
43433
  const eventBus = useEventBus();
43368
43434
  const { t } = useTranslate();
43369
- const [log8, setLog] = React74.useState([]);
43435
+ const [log9, setLog] = React74.useState([]);
43370
43436
  const prevStatesRef = React74.useRef(/* @__PURE__ */ new Map());
43371
43437
  React74.useEffect(() => {
43372
43438
  for (const trait of traits2) {
@@ -43430,9 +43496,9 @@ function EventDispatcherTab({ traits: traits2, schema }) {
43430
43496
  /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.otherEvents") }),
43431
43497
  /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: unavailableEvents.map((event) => /* @__PURE__ */ jsx(Badge, { variant: "default", size: "sm", className: "opacity-50", children: event }, event)) })
43432
43498
  ] }),
43433
- log8.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
43499
+ log9.length > 0 && /* @__PURE__ */ jsxs("div", { children: [
43434
43500
  /* @__PURE__ */ jsx(Typography, { variant: "small", weight: "medium", className: "text-gray-500 mb-1", children: t("debug.recentTransitions") }),
43435
- /* @__PURE__ */ jsx(Stack, { gap: "xs", children: log8.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
43501
+ /* @__PURE__ */ jsx(Stack, { gap: "xs", children: log9.map((entry, i) => /* @__PURE__ */ jsxs(Typography, { variant: "small", className: "font-mono text-xs", children: [
43436
43502
  /* @__PURE__ */ jsx("span", { className: "text-purple-400", children: entry.traitName }),
43437
43503
  " ",
43438
43504
  /* @__PURE__ */ jsx("span", { className: "text-gray-500", children: entry.from }),
@@ -46927,7 +46993,7 @@ var init_WorldMapBoard = __esm({
46927
46993
  init_useEventBus();
46928
46994
  init_Stack();
46929
46995
  init_LoadingState();
46930
- init_IsometricCanvas2();
46996
+ init_IsometricCanvas();
46931
46997
  init_boardEntity();
46932
46998
  init_isometric();
46933
46999
  WorldMapBoard.displayName = "WorldMapBoard";
@@ -47067,7 +47133,7 @@ function lazyThree(name, loader) {
47067
47133
  ThreeWrapper.displayName = `Lazy(${name})`;
47068
47134
  return ThreeWrapper;
47069
47135
  }
47070
- var FeatureRenderer, COMPONENT_REGISTRY;
47136
+ var FeatureRenderer, GameCanvas3D, GameCanvas3DBattleTemplate, GameCanvas3DCastleTemplate, GameCanvas3DWorldMapTemplate, COMPONENT_REGISTRY;
47071
47137
  var init_component_registry_generated = __esm({
47072
47138
  "components/core/organisms/component-registry.generated.ts"() {
47073
47139
  init_AboutPageTemplate();
@@ -47353,7 +47419,11 @@ var init_component_registry_generated = __esm({
47353
47419
  init_WorldMapBoard();
47354
47420
  init_WorldMapTemplate();
47355
47421
  init_XPBar();
47356
- FeatureRenderer = lazyThree("FeatureRenderer", () => import('@almadar/ui/components/organisms/game/three'));
47422
+ FeatureRenderer = lazyThree("FeatureRenderer", () => import('@almadar/ui/components/molecules/game/three'));
47423
+ GameCanvas3D = lazyThree("GameCanvas3D", () => import('@almadar/ui/components/molecules/game/three'));
47424
+ GameCanvas3DBattleTemplate = lazyThree("GameCanvas3DBattleTemplate", () => import('@almadar/ui/components/molecules/game/three'));
47425
+ GameCanvas3DCastleTemplate = lazyThree("GameCanvas3DCastleTemplate", () => import('@almadar/ui/components/molecules/game/three'));
47426
+ GameCanvas3DWorldMapTemplate = lazyThree("GameCanvas3DWorldMapTemplate", () => import('@almadar/ui/components/molecules/game/three'));
47357
47427
  COMPONENT_REGISTRY = {
47358
47428
  "AboutPageTemplate": AboutPageTemplate,
47359
47429
  "Accordion": Accordion,
@@ -47466,6 +47536,10 @@ var init_component_registry_generated = __esm({
47466
47536
  "GameAudioProvider": GameAudioProvider,
47467
47537
  "GameAudioToggle": GameAudioToggle,
47468
47538
  "GameCanvas2D": GameCanvas2D,
47539
+ "GameCanvas3D": GameCanvas3D,
47540
+ "GameCanvas3DBattleTemplate": GameCanvas3DBattleTemplate,
47541
+ "GameCanvas3DCastleTemplate": GameCanvas3DCastleTemplate,
47542
+ "GameCanvas3DWorldMapTemplate": GameCanvas3DWorldMapTemplate,
47469
47543
  "GameHud": GameHud,
47470
47544
  "GameMenu": GameMenu,
47471
47545
  "GameOverScreen": GameOverScreen,
@@ -49835,4 +49909,4 @@ init_AboutPageTemplate();
49835
49909
  // components/index.ts
49836
49910
  init_cn();
49837
49911
 
49838
- export { ALL_PRESETS, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, ActionPalette, ActionTile, Alert, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AuthLayout, Avatar, Badge, BattleBoard, BattleTemplate, BehaviorView, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, BuilderBoard, Button, ButtonGroup, CTABanner, CalendarGrid, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, CastleBoard, CastleTemplate, Center, Chart, ChartLegend, Checkbox, ChoiceButton, ClassifierBoard, Coachmark, CodeBlock, CollapsibleSection, CombatLog, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, Container, ContentRenderer, ContentSection, ControlButton, CounterTemplate, CraftingRecipe, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DIAMOND_TOP_Y, DPad, DamageNumber, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DebuggerBoard, DetailPanel, Dialog, DialogueBox, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EnemyPlate, EntityDisplayEvents, ErrorBoundary, ErrorState, EventHandlerBoard, EventLog, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FeatureRenderer2 as FeatureRenderer, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioContext, GameAudioProvider, GameAudioToggle, GameCanvas2D, GameHud, GameMenu, GameOverScreen, GameShell, GameTemplate, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HealthPanel, HeroOrganism, HeroSection, IDENTITY_BOOK_FIELDS, Icon, IconPicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MatrixQuestion, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, ModuleCard, Navigation, NegotiatorBoard, NotifyListener, NumberStepper, ObjectRulePanel, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsManager, PlatformerCanvas, Popover, PositionedCanvas, PowerupSlots, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuestTracker, QuizBlock, Radio, RangeSlider, RelationSelect, RepeatableFormSection, ReplyTree, ResourceBar, ResourceCounter, RichBlockEditor, RuleEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreBoard, ScoreDisplay, SearchInput, Section, SectionHeader, Select, SequenceBar, SequencerBoard, ServiceCatalog, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, SimulatorBoard, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateArchitectBoard, StateIndicator, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StatusEffect, StepFlow, StepFlowOrganism, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeSelector, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TurnIndicator, TurnPanel, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UncontrolledBattleBoard, UnitCommandBar, UploadDropZone, VStack, VariablePanel, VersionDiff, ViolationAlert, VoteStack, WaypointMarker, WizardContainer, WizardNavigation, WizardProgress, WorldMapBoard, WorldMapTemplate, XPBar, applyTemporaryEffect, calculateAttackTargets, calculateDamage, calculateValidMoves, cn, combatAnimations, combatClasses, combatEffects, createInitialGameState, createUnitAnimationState, drawSprite, generateCombatMessage, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, mapBookData, pendulum, projectileMotion, resolveFieldMap, resolveFrame, resolveSheetDirection, screenToIso, springOscillator, tickAnimationState, toCodeLanguage, transitionAnimation, useAnchorRect, useBattleState, useCamera, useGameAudio, useGameAudioContext, useImageCache, usePhysics2D, useSpriteAnimations };
49912
+ export { ALL_PRESETS, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, ActionPalette, ActionTile, Alert, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AssetPicker, AuthLayout, Avatar, Badge, BattleBoard, BattleTemplate, BehaviorView, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, BuilderBoard, Button, ButtonGroup, CTABanner, CalendarGrid, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, CastleBoard, CastleTemplate, Center, Chart, ChartLegend, Checkbox, ChoiceButton, ClassifierBoard, Coachmark, CodeBlock, CollapsibleSection, CombatLog, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, Container, ContentRenderer, ContentSection, ControlButton, CounterTemplate, CraftingRecipe, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DIAMOND_TOP_Y, DPad, DamageNumber, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DebuggerBoard, DetailPanel, Dialog, DialogueBox, DialogueBubble, Divider, DocBreadcrumb, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EnemyPlate, EntityDisplayEvents, ErrorBoundary, ErrorState, EventHandlerBoard, EventLog, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FeatureRenderer2 as FeatureRenderer, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioContext, GameAudioProvider, GameAudioToggle, GameCanvas2D, GameHud, GameMenu, GameOverScreen, GameShell, GameTemplate, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, GridPicker, HStack, Header, HealthBar, HealthPanel, HeroOrganism, HeroSection, IDENTITY_BOOK_FIELDS, Icon, IconPicker, InfiniteScrollSentinel, Input, InputGroup, InstallBox, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, JazariStateMachine, JsonTreeEditor, Label, LandingPageTemplate, LawReferenceTooltip, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MatrixQuestion, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, ModuleCard, Navigation, NegotiatorBoard, NodeSlotEditor, NotifyListener, NumberStepper, ObjectRulePanel, OnboardingSpotlight, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsManager, PlatformerCanvas, Popover, PositionedCanvas, PowerupSlots, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PropertyInspector, PullQuote, PullToRefresh, QrScanner, QuestTracker, QuizBlock, Radio, RangeSlider, RelationSelect, RepeatableFormSection, ReplyTree, ResourceBar, ResourceCounter, RichBlockEditor, RuleEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreBoard, ScoreDisplay, SearchInput, Section, SectionHeader, Select, SequenceBar, SequencerBoard, ServiceCatalog, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, SimulatorBoard, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateArchitectBoard, StateIndicator, StateJsonView, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StatusEffect, StepFlow, StepFlowOrganism, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, TableView, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, TextHighlight, Textarea, ThemeSelector, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TurnIndicator, TurnPanel, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UncontrolledBattleBoard, UnitCommandBar, UploadDropZone, VStack, VariablePanel, VersionDiff, ViolationAlert, VoteStack, WaypointMarker, WizardContainer, WizardNavigation, WizardProgress, WorldMapBoard, WorldMapTemplate, XPBar, applyTemporaryEffect, calculateAttackTargets, calculateDamage, calculateValidMoves, cn, combatAnimations, combatClasses, combatEffects, createInitialGameState, createUnitAnimationState, drawSprite, generateCombatMessage, getCurrentFrame, getTileDimensions, inferDirection, isoToScreen, mapBookData, pendulum, projectileMotion, resolveFieldMap, resolveFrame, resolveSheetDirection, screenToIso, springOscillator, tickAnimationState, toCodeLanguage, transitionAnimation, useAnchorRect, useBattleState, useCamera, useGameAudio, useGameAudioContext, useImageCache, usePhysics2D, useSpriteAnimations };
@@ -11493,13 +11493,6 @@ var init_IsometricCanvas = __esm({
11493
11493
  }
11494
11494
  });
11495
11495
 
11496
- // components/game/organisms/IsometricCanvas.tsx
11497
- var init_IsometricCanvas2 = __esm({
11498
- "components/game/organisms/IsometricCanvas.tsx"() {
11499
- init_IsometricCanvas();
11500
- }
11501
- });
11502
-
11503
11496
  // components/game/organisms/boardEntity.ts
11504
11497
  function boardEntity(entity) {
11505
11498
  if (!entity) return void 0;
@@ -11895,7 +11888,7 @@ var init_BattleBoard = __esm({
11895
11888
  init_Button();
11896
11889
  init_Typography();
11897
11890
  init_Stack();
11898
- init_IsometricCanvas2();
11891
+ init_IsometricCanvas();
11899
11892
  init_boardEntity();
11900
11893
  init_isometric();
11901
11894
  BattleBoard.displayName = "BattleBoard";
@@ -19810,7 +19803,7 @@ var init_CastleBoard = __esm({
19810
19803
  "use client";
19811
19804
  init_cn();
19812
19805
  init_useEventBus();
19813
- init_IsometricCanvas2();
19806
+ init_IsometricCanvas();
19814
19807
  init_boardEntity();
19815
19808
  init_isometric();
19816
19809
  CastleBoard.displayName = "CastleBoard";
@@ -46221,7 +46214,7 @@ var init_WorldMapBoard = __esm({
46221
46214
  init_useEventBus();
46222
46215
  init_Stack();
46223
46216
  init_LoadingState();
46224
- init_IsometricCanvas2();
46217
+ init_IsometricCanvas();
46225
46218
  init_boardEntity();
46226
46219
  init_isometric();
46227
46220
  WorldMapBoard.displayName = "WorldMapBoard";
@@ -46277,7 +46270,7 @@ function lazyThree(name, loader) {
46277
46270
  ThreeWrapper.displayName = `Lazy(${name})`;
46278
46271
  return ThreeWrapper;
46279
46272
  }
46280
- var FeatureRenderer, COMPONENT_REGISTRY;
46273
+ var FeatureRenderer, GameCanvas3D, GameCanvas3DBattleTemplate, GameCanvas3DCastleTemplate, GameCanvas3DWorldMapTemplate, COMPONENT_REGISTRY;
46281
46274
  var init_component_registry_generated = __esm({
46282
46275
  "components/core/organisms/component-registry.generated.ts"() {
46283
46276
  init_AboutPageTemplate();
@@ -46563,7 +46556,11 @@ var init_component_registry_generated = __esm({
46563
46556
  init_WorldMapBoard();
46564
46557
  init_WorldMapTemplate();
46565
46558
  init_XPBar();
46566
- FeatureRenderer = lazyThree("FeatureRenderer", () => import('@almadar/ui/components/organisms/game/three'));
46559
+ FeatureRenderer = lazyThree("FeatureRenderer", () => import('@almadar/ui/components/molecules/game/three'));
46560
+ GameCanvas3D = lazyThree("GameCanvas3D", () => import('@almadar/ui/components/molecules/game/three'));
46561
+ GameCanvas3DBattleTemplate = lazyThree("GameCanvas3DBattleTemplate", () => import('@almadar/ui/components/molecules/game/three'));
46562
+ GameCanvas3DCastleTemplate = lazyThree("GameCanvas3DCastleTemplate", () => import('@almadar/ui/components/molecules/game/three'));
46563
+ GameCanvas3DWorldMapTemplate = lazyThree("GameCanvas3DWorldMapTemplate", () => import('@almadar/ui/components/molecules/game/three'));
46567
46564
  COMPONENT_REGISTRY = {
46568
46565
  "AboutPageTemplate": AboutPageTemplate,
46569
46566
  "Accordion": Accordion,
@@ -46676,6 +46673,10 @@ var init_component_registry_generated = __esm({
46676
46673
  "GameAudioProvider": GameAudioProvider,
46677
46674
  "GameAudioToggle": GameAudioToggle,
46678
46675
  "GameCanvas2D": GameCanvas2D,
46676
+ "GameCanvas3D": GameCanvas3D,
46677
+ "GameCanvas3DBattleTemplate": GameCanvas3DBattleTemplate,
46678
+ "GameCanvas3DCastleTemplate": GameCanvas3DCastleTemplate,
46679
+ "GameCanvas3DWorldMapTemplate": GameCanvas3DWorldMapTemplate,
46679
46680
  "GameHud": GameHud,
46680
46681
  "GameMenu": GameMenu,
46681
46682
  "GameOverScreen": GameOverScreen,
@@ -11444,13 +11444,6 @@ var init_IsometricCanvas = __esm({
11444
11444
  }
11445
11445
  });
11446
11446
 
11447
- // components/game/organisms/IsometricCanvas.tsx
11448
- var init_IsometricCanvas2 = __esm({
11449
- "components/game/organisms/IsometricCanvas.tsx"() {
11450
- init_IsometricCanvas();
11451
- }
11452
- });
11453
-
11454
11447
  // components/game/organisms/boardEntity.ts
11455
11448
  function boardEntity(entity) {
11456
11449
  if (!entity) return void 0;
@@ -11846,7 +11839,7 @@ var init_BattleBoard = __esm({
11846
11839
  init_Button();
11847
11840
  init_Typography();
11848
11841
  init_Stack();
11849
- init_IsometricCanvas2();
11842
+ init_IsometricCanvas();
11850
11843
  init_boardEntity();
11851
11844
  init_isometric();
11852
11845
  BattleBoard.displayName = "BattleBoard";
@@ -19761,7 +19754,7 @@ var init_CastleBoard = __esm({
19761
19754
  "use client";
19762
19755
  init_cn();
19763
19756
  init_useEventBus();
19764
- init_IsometricCanvas2();
19757
+ init_IsometricCanvas();
19765
19758
  init_boardEntity();
19766
19759
  init_isometric();
19767
19760
  CastleBoard.displayName = "CastleBoard";
@@ -46172,7 +46165,7 @@ var init_WorldMapBoard = __esm({
46172
46165
  init_useEventBus();
46173
46166
  init_Stack();
46174
46167
  init_LoadingState();
46175
- init_IsometricCanvas2();
46168
+ init_IsometricCanvas();
46176
46169
  init_boardEntity();
46177
46170
  init_isometric();
46178
46171
  WorldMapBoard.displayName = "WorldMapBoard";
@@ -46228,7 +46221,7 @@ function lazyThree(name, loader) {
46228
46221
  ThreeWrapper.displayName = `Lazy(${name})`;
46229
46222
  return ThreeWrapper;
46230
46223
  }
46231
- var FeatureRenderer, COMPONENT_REGISTRY;
46224
+ var FeatureRenderer, GameCanvas3D, GameCanvas3DBattleTemplate, GameCanvas3DCastleTemplate, GameCanvas3DWorldMapTemplate, COMPONENT_REGISTRY;
46232
46225
  var init_component_registry_generated = __esm({
46233
46226
  "components/core/organisms/component-registry.generated.ts"() {
46234
46227
  init_AboutPageTemplate();
@@ -46514,7 +46507,11 @@ var init_component_registry_generated = __esm({
46514
46507
  init_WorldMapBoard();
46515
46508
  init_WorldMapTemplate();
46516
46509
  init_XPBar();
46517
- FeatureRenderer = lazyThree("FeatureRenderer", () => import('@almadar/ui/components/organisms/game/three'));
46510
+ FeatureRenderer = lazyThree("FeatureRenderer", () => import('@almadar/ui/components/molecules/game/three'));
46511
+ GameCanvas3D = lazyThree("GameCanvas3D", () => import('@almadar/ui/components/molecules/game/three'));
46512
+ GameCanvas3DBattleTemplate = lazyThree("GameCanvas3DBattleTemplate", () => import('@almadar/ui/components/molecules/game/three'));
46513
+ GameCanvas3DCastleTemplate = lazyThree("GameCanvas3DCastleTemplate", () => import('@almadar/ui/components/molecules/game/three'));
46514
+ GameCanvas3DWorldMapTemplate = lazyThree("GameCanvas3DWorldMapTemplate", () => import('@almadar/ui/components/molecules/game/three'));
46518
46515
  COMPONENT_REGISTRY = {
46519
46516
  "AboutPageTemplate": AboutPageTemplate,
46520
46517
  "Accordion": Accordion,
@@ -46627,6 +46624,10 @@ var init_component_registry_generated = __esm({
46627
46624
  "GameAudioProvider": GameAudioProvider,
46628
46625
  "GameAudioToggle": GameAudioToggle,
46629
46626
  "GameCanvas2D": GameCanvas2D,
46627
+ "GameCanvas3D": GameCanvas3D,
46628
+ "GameCanvas3DBattleTemplate": GameCanvas3DBattleTemplate,
46629
+ "GameCanvas3DCastleTemplate": GameCanvas3DCastleTemplate,
46630
+ "GameCanvas3DWorldMapTemplate": GameCanvas3DWorldMapTemplate,
46630
46631
  "GameHud": GameHud,
46631
46632
  "GameMenu": GameMenu,
46632
46633
  "GameOverScreen": GameOverScreen,
@@ -11060,13 +11060,6 @@ var init_IsometricCanvas = __esm({
11060
11060
  }
11061
11061
  });
11062
11062
 
11063
- // components/game/organisms/IsometricCanvas.tsx
11064
- var init_IsometricCanvas2 = __esm({
11065
- "components/game/organisms/IsometricCanvas.tsx"() {
11066
- init_IsometricCanvas();
11067
- }
11068
- });
11069
-
11070
11063
  // components/game/organisms/boardEntity.ts
11071
11064
  function boardEntity(entity) {
11072
11065
  if (!entity) return void 0;
@@ -11462,7 +11455,7 @@ var init_BattleBoard = __esm({
11462
11455
  init_Button();
11463
11456
  init_Typography();
11464
11457
  init_Stack();
11465
- init_IsometricCanvas2();
11458
+ init_IsometricCanvas();
11466
11459
  init_boardEntity();
11467
11460
  init_isometric();
11468
11461
  BattleBoard.displayName = "BattleBoard";
@@ -19377,7 +19370,7 @@ var init_CastleBoard = __esm({
19377
19370
  "use client";
19378
19371
  init_cn();
19379
19372
  init_useEventBus();
19380
- init_IsometricCanvas2();
19373
+ init_IsometricCanvas();
19381
19374
  init_boardEntity();
19382
19375
  init_isometric();
19383
19376
  CastleBoard.displayName = "CastleBoard";
@@ -45807,7 +45800,7 @@ var init_WorldMapBoard = __esm({
45807
45800
  init_useEventBus();
45808
45801
  init_Stack();
45809
45802
  init_LoadingState();
45810
- init_IsometricCanvas2();
45803
+ init_IsometricCanvas();
45811
45804
  init_boardEntity();
45812
45805
  init_isometric();
45813
45806
  WorldMapBoard.displayName = "WorldMapBoard";
@@ -45863,7 +45856,7 @@ function lazyThree(name, loader) {
45863
45856
  ThreeWrapper.displayName = `Lazy(${name})`;
45864
45857
  return ThreeWrapper;
45865
45858
  }
45866
- var FeatureRenderer, COMPONENT_REGISTRY;
45859
+ var FeatureRenderer, GameCanvas3D, GameCanvas3DBattleTemplate, GameCanvas3DCastleTemplate, GameCanvas3DWorldMapTemplate, COMPONENT_REGISTRY;
45867
45860
  var init_component_registry_generated = __esm({
45868
45861
  "components/core/organisms/component-registry.generated.ts"() {
45869
45862
  init_AboutPageTemplate();
@@ -46149,7 +46142,11 @@ var init_component_registry_generated = __esm({
46149
46142
  init_WorldMapBoard();
46150
46143
  init_WorldMapTemplate();
46151
46144
  init_XPBar();
46152
- FeatureRenderer = lazyThree("FeatureRenderer", () => import('@almadar/ui/components/organisms/game/three'));
46145
+ FeatureRenderer = lazyThree("FeatureRenderer", () => import('@almadar/ui/components/molecules/game/three'));
46146
+ GameCanvas3D = lazyThree("GameCanvas3D", () => import('@almadar/ui/components/molecules/game/three'));
46147
+ GameCanvas3DBattleTemplate = lazyThree("GameCanvas3DBattleTemplate", () => import('@almadar/ui/components/molecules/game/three'));
46148
+ GameCanvas3DCastleTemplate = lazyThree("GameCanvas3DCastleTemplate", () => import('@almadar/ui/components/molecules/game/three'));
46149
+ GameCanvas3DWorldMapTemplate = lazyThree("GameCanvas3DWorldMapTemplate", () => import('@almadar/ui/components/molecules/game/three'));
46153
46150
  COMPONENT_REGISTRY = {
46154
46151
  "AboutPageTemplate": AboutPageTemplate,
46155
46152
  "Accordion": Accordion,
@@ -46262,6 +46259,10 @@ var init_component_registry_generated = __esm({
46262
46259
  "GameAudioProvider": GameAudioProvider,
46263
46260
  "GameAudioToggle": GameAudioToggle,
46264
46261
  "GameCanvas2D": GameCanvas2D,
46262
+ "GameCanvas3D": GameCanvas3D,
46263
+ "GameCanvas3DBattleTemplate": GameCanvas3DBattleTemplate,
46264
+ "GameCanvas3DCastleTemplate": GameCanvas3DCastleTemplate,
46265
+ "GameCanvas3DWorldMapTemplate": GameCanvas3DWorldMapTemplate,
46265
46266
  "GameHud": GameHud,
46266
46267
  "GameMenu": GameMenu,
46267
46268
  "GameOverScreen": GameOverScreen,
@@ -11011,13 +11011,6 @@ var init_IsometricCanvas = __esm({
11011
11011
  }
11012
11012
  });
11013
11013
 
11014
- // components/game/organisms/IsometricCanvas.tsx
11015
- var init_IsometricCanvas2 = __esm({
11016
- "components/game/organisms/IsometricCanvas.tsx"() {
11017
- init_IsometricCanvas();
11018
- }
11019
- });
11020
-
11021
11014
  // components/game/organisms/boardEntity.ts
11022
11015
  function boardEntity(entity) {
11023
11016
  if (!entity) return void 0;
@@ -11413,7 +11406,7 @@ var init_BattleBoard = __esm({
11413
11406
  init_Button();
11414
11407
  init_Typography();
11415
11408
  init_Stack();
11416
- init_IsometricCanvas2();
11409
+ init_IsometricCanvas();
11417
11410
  init_boardEntity();
11418
11411
  init_isometric();
11419
11412
  BattleBoard.displayName = "BattleBoard";
@@ -19328,7 +19321,7 @@ var init_CastleBoard = __esm({
19328
19321
  "use client";
19329
19322
  init_cn();
19330
19323
  init_useEventBus();
19331
- init_IsometricCanvas2();
19324
+ init_IsometricCanvas();
19332
19325
  init_boardEntity();
19333
19326
  init_isometric();
19334
19327
  CastleBoard.displayName = "CastleBoard";
@@ -45758,7 +45751,7 @@ var init_WorldMapBoard = __esm({
45758
45751
  init_useEventBus();
45759
45752
  init_Stack();
45760
45753
  init_LoadingState();
45761
- init_IsometricCanvas2();
45754
+ init_IsometricCanvas();
45762
45755
  init_boardEntity();
45763
45756
  init_isometric();
45764
45757
  WorldMapBoard.displayName = "WorldMapBoard";
@@ -45814,7 +45807,7 @@ function lazyThree(name, loader) {
45814
45807
  ThreeWrapper.displayName = `Lazy(${name})`;
45815
45808
  return ThreeWrapper;
45816
45809
  }
45817
- var FeatureRenderer, COMPONENT_REGISTRY;
45810
+ var FeatureRenderer, GameCanvas3D, GameCanvas3DBattleTemplate, GameCanvas3DCastleTemplate, GameCanvas3DWorldMapTemplate, COMPONENT_REGISTRY;
45818
45811
  var init_component_registry_generated = __esm({
45819
45812
  "components/core/organisms/component-registry.generated.ts"() {
45820
45813
  init_AboutPageTemplate();
@@ -46100,7 +46093,11 @@ var init_component_registry_generated = __esm({
46100
46093
  init_WorldMapBoard();
46101
46094
  init_WorldMapTemplate();
46102
46095
  init_XPBar();
46103
- FeatureRenderer = lazyThree("FeatureRenderer", () => import('@almadar/ui/components/organisms/game/three'));
46096
+ FeatureRenderer = lazyThree("FeatureRenderer", () => import('@almadar/ui/components/molecules/game/three'));
46097
+ GameCanvas3D = lazyThree("GameCanvas3D", () => import('@almadar/ui/components/molecules/game/three'));
46098
+ GameCanvas3DBattleTemplate = lazyThree("GameCanvas3DBattleTemplate", () => import('@almadar/ui/components/molecules/game/three'));
46099
+ GameCanvas3DCastleTemplate = lazyThree("GameCanvas3DCastleTemplate", () => import('@almadar/ui/components/molecules/game/three'));
46100
+ GameCanvas3DWorldMapTemplate = lazyThree("GameCanvas3DWorldMapTemplate", () => import('@almadar/ui/components/molecules/game/three'));
46104
46101
  COMPONENT_REGISTRY = {
46105
46102
  "AboutPageTemplate": AboutPageTemplate,
46106
46103
  "Accordion": Accordion,
@@ -46213,6 +46210,10 @@ var init_component_registry_generated = __esm({
46213
46210
  "GameAudioProvider": GameAudioProvider,
46214
46211
  "GameAudioToggle": GameAudioToggle,
46215
46212
  "GameCanvas2D": GameCanvas2D,
46213
+ "GameCanvas3D": GameCanvas3D,
46214
+ "GameCanvas3DBattleTemplate": GameCanvas3DBattleTemplate,
46215
+ "GameCanvas3DCastleTemplate": GameCanvas3DCastleTemplate,
46216
+ "GameCanvas3DWorldMapTemplate": GameCanvas3DWorldMapTemplate,
46216
46217
  "GameHud": GameHud,
46217
46218
  "GameMenu": GameMenu,
46218
46219
  "GameOverScreen": GameOverScreen,