summaryrefslogtreecommitdiffhomepage
path: root/src/features/layout/index.ts
blob: 8a464fece15627f06969e03b41cdd2be833f11dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/**
 * The layout feature — a generic tile-tree renderer + the view registry.
 *
 * The frontend stops *having* a layout and starts *rendering* one: the tree is
 * data (`@dispatch/layout-contract`), the renderer walks it, and every view a
 * leaf mounts comes from the registry. Chrome (top bar, alerts, modals) stays
 * OUTSIDE the tree — the tree owns the content region.
 */

export {
  abiTree,
  createLayoutAbiPort,
  type LayoutAbiPort,
  type LayoutAbiPortDeps,
} from "./adapter/abi-port";
export { createLayoutHttp, type LayoutHttp, type LayoutHttpResult } from "./adapter/http";
export {
  bootDefaultOpen,
  type CollapseState,
  type CollapseStore,
  type CollapseStoreOptions,
  createCollapseStore,
  parsePersistedOpen,
  SIDEBAR_OPEN_KEY,
  WIDE_BREAKPOINT,
} from "./logic/collapse";
export { migrationTree, sidePanelViews, storedPanelViews } from "./logic/migration";
export { addPanelOp, firstPanelView, removePanelOp, swapPanelOp } from "./logic/panels-edit";
export {
  getView,
  listPanelViews,
  listViews,
  type RegisteredView,
  registerPluginView,
  registerView,
  unregisterView,
  unregisterViewsByPlugin,
  type ViewComponent,
  type ViewRegistration,
  viewRegistry,
} from "./logic/registry";
export { DEFAULT_PANEL_VIEWS, overlaySidePanels, seedLayout } from "./logic/seed";
export { firstCollapsibleNodeId, firstPanelsNode } from "./logic/tree-query";
export { createLayoutStore, type LayoutProviderState, type LayoutStore } from "./store.svelte";
export { default as TileRoot } from "./ui/TileRoot.svelte";

/** Public module manifest — aggregated by the shell's "Loaded Modules" view. */
export const manifest = {
  name: "layout",
  description: "Tile-tree renderer + view registry",
} as const;