doxa-maps/library/layouts
doxa-maps-88655c70 e3df4677d3
Some checks are pending
build-gate / build (push) Waiting to run
Plugin studio: fold every composite, so the rail starts as a plain list
With every composition tree open, the rail was too long to find your way
around. Each composite now carries a chevron and starts folded, so the
rail first reads as the 35 plugins by capability, each composite saying
how many parts it has. Open one and you see its direct parts; a part that
is itself a composite folds again, so doxa-maps-spa opens to its tabs and
each tab opens to what it is made of, one level at a time. Choosing a
composite also opens it; only the chevron closes it. The same child folds
independently wherever it appears.

VerticalTabsLayout gains two optional row fields: `branch` makes a row
foldable, `ancestors` hides a row until every branch above it is open.
Rows are wrapped so the chevron can sit beside the tab rather than
inside it. doxa-maps-spa sets neither field and renders unchanged.
2026-09-24 20:45:19 +00:00
..
app-wrapper-material UPG-100: lead with Prayer Resources, map second 2026-09-23 20:33:00 +00:00
pane-wrapper Brand-neutral shared VerticalTabsLayout with lazy nested-element hosting; fix cap-5 prayer tab leaf path; neutralize library identifiers; add Forgejo CI build-gate workflow 2026-09-19 17:24:30 +00:00
README.md consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
StackLayout.vue Show the cap-4 composite in the studio's Simple Research slot 2026-09-23 23:26:40 +00:00
VerticalTabsLayout.vue Plugin studio: fold every composite, so the rail starts as a plain list 2026-09-24 20:45:19 +00:00

layouts/ — app wrappers

Each folder here is an app wrapper: a host shell that composes doxa-maps plugin-designs (the independently-built custom elements) into one application.

  layouts/<wrapper>/          ← the HOST page (not a bundle)
  ┌──────────┬──────────────────────────────┐
  │ sidebar  │  mounts an app-profile here    │
  │ (nav.js) │  ┌──────────────┐              │
  │  ├ item  │  │ <doxa-map>    │  ← a         │
  │  ├ section│ │  (a bundle)   │    micro-    │
  │  └ folder │ └──────────────┘    frontend  │
  └──────────┴──────────────────────────────┘
  • app-profile = a self-contained custom element (the micro-frontend). app wrapper = the host that mounts them and provides nav/chrome. A wrapper is a host page, not a bundle-in-a-bundle.
  • Wrappers today: app-wrapper-material/, pane-wrapper/.
  • Icons are inline SVG only (no CDN) — an F-Droid/offline hard requirement.

Sidebar contract, target filtering, sidebar modes, staging: ../documentation/architecture/app-wrappers.md.