summaryrefslogtreecommitdiffhomepage
path: root/src/features/views/index.ts
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-10 16:29:01 +0900
committerAdam Malczewski <[email protected]>2026-06-10 16:29:01 +0900
commit55f635bea24f673f6d0242c2c7b749b4fd5329a2 (patch)
tree65b86a5ed2b824f62312c7f18dec8182856c17a1 /src/features/views/index.ts
parent3ff6164fc9f5d76c901c16f18b1e0a76efa8795e (diff)
downloaddispatch-web-55f635bea24f673f6d0242c2c7b749b4fd5329a2.tar.gz
dispatch-web-55f635bea24f673f6d0242c2c7b749b4fd5329a2.zip
feat(views,surface-host): Extensions sidebar view — auto-expanded surfaces + tables
views (new feature): - pure panel-stack reducer + thin generic ViewSidebar (dropdown picker + add/remove), switches on view KIND, never a surface id Extensions view (composition root): - folds frontend modules + backend surfaces into one "Extensions" view - frontend module list AGGREGATED from each feature's public `manifest` export (can't drift); no per-module version (FE features are internal to dispatch-web) - surfaces are AUTO-SUBSCRIBED on catalog + rendered expanded (no catalog buttons) surface-host: - consecutive `stat` fields coalesce into one aligned label/value table (StatTable) - generic custom-field renderer: dispatch on rendererId === "table" → SurfaceTable (pure parseTablePayload), so a backend `custom`/table field renders generically - shared presentational components/Table.svelte (used by both, neither feature depends on the other) store: - auto-subscribe every catalog entry, unsubscribe vanished ones, re-subscribe all on reconnect; expose all received specs via `surfaces` (drops single-selection) backend-handoff: CR-1 — emit Loaded Extensions as a custom/table field; notes what's already covered FE-side (renderer shipped, stat-table fallback works).
Diffstat (limited to 'src/features/views/index.ts')
-rw-r--r--src/features/views/index.ts15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/features/views/index.ts b/src/features/views/index.ts
new file mode 100644
index 0000000..c4e7f25
--- /dev/null
+++ b/src/features/views/index.ts
@@ -0,0 +1,15 @@
+export {
+ addPanel,
+ initialPanels,
+ type PanelsState,
+ removePanel,
+ selectKind,
+ type ViewPanel,
+} from "./logic/panels";
+export { default as ViewSidebar } from "./ui/ViewSidebar.svelte";
+
+/** Public module manifest — aggregated by the shell's "Loaded Modules" view. */
+export const manifest = {
+ name: "views",
+ description: "Sidebar view panels (dropdown picker + add / remove)",
+} as const;