@loomweaver/shell 0.7.2

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.
package/README.md ADDED
@@ -0,0 +1,49 @@
1
+ # @loomweaver/shell
2
+
3
+ The neutral shell host (chrome + docking points). Domain-pure: it renders
4
+ regions and holds contributions, but knows no product/domain concepts.
5
+
6
+ ## Structure (`src/lib/`) — feature slices, not technical types
7
+
8
+ The lib is organized in **vertical feature slices**: each folder holds everything one
9
+ feature needs (service + UI + contracts + specs). There are no `services/` or
10
+ `components/`-style type buckets (current Angular style guide: "avoid creating
11
+ directories like components, directives, and services").
12
+
13
+ - **`shell.*` / `provide-shell.ts` / `shell-seeds.ts` / `default-settings.ts`** — root
14
+ component + DI composition entry (`provideShell({ omit })`).
15
+ - **`layout/`** — the declarative region-agnostic model (`layout`, `view`) + viewport
16
+ breakpoint service.
17
+ - **`regions/`** — the docked region renderers: `bar/` (incl. shell
18
+ brand), `rail/`, `panel/`, `pane/`, `content/`, `reorder/`. Each region owns its
19
+ component **and** its contribution contract (`bar-item`, `rail-item`). `content/` is
20
+ sub-sliced into `routing/` (router wiring, reuse strategy, synthetic routes),
21
+ `tabs/` (tab state, projection, close hooks, context menu) and `access/` (auth
22
+ gating + placeholder views); the pane/area components and shared path helper live
23
+ at its root.
24
+ - **`plugin/`** — plugin runtime core + the frame rung: `plugin`, `plugin-runtime`,
25
+ `sandbox-plugin-runtime`, `host-plugin-context`, `contribution-registry` (id-keyed:
26
+ same id overrides, `remove*ById` — except content routes, which override by `path`;
27
+ their `id` is the `route:` omit handle).
28
+ - **`commands/`** — command registry + keybindings + command palette.
29
+ - **`plugin-store/`** — community plugin store: catalog port, install/enablement/store
30
+ services and the complete store UI.
31
+ - **`permissions/`** — capability grants + the permissions settings surface.
32
+ - **`settings/`** — settings model + service + dialog + row primitives.
33
+ - **`persistence/`** — shared kernel: the two `KeyValueStore` ports (`SETTINGS_STORE`
34
+ settings-only + `WORKING_STATE_STORE`), cross-tab sync (`StateSyncService`),
35
+ identity scoping, `hydrate`/`readStoredValue` and id-set parsing. Deliberately
36
+ cross-cutting (consumed by plugin/, regions/ and the feature slices).
37
+ - **`elements/`** — the framework-agnostic `<lw-*>` custom-element family
38
+ incl. the icon registry; `lw-elements.frame.ts` is the `@loomweaver/frame-kit` bundle
39
+ entry. Deliberately cross-cutting (the host UI kit).
40
+ - **Small feature slices** — `theme/`, `text-size/`, `i18n/` (loader + locale service +
41
+ switcher + translations), `auth/`, `dialog/`, `notifications/`, `menu/`, `version/`,
42
+ `update/`, `workspace/`, `views/` (named view instances + `VIEW_STATE`).
43
+ - **`styles/`** — design tokens + theme (see `docs/reference/design-tokens.md`).
44
+
45
+ The published API is the `src/index.ts` barrel only; consumers never deep-import.
46
+
47
+ ## Tests
48
+
49
+ Run `nx test shell` to execute the unit tests.