doxa-maps/library/layouts
Doxa Maps a88ae76aeb Tab layout: no side shade on phones; a disabled tab looks disabled
- The closed phone drawer casts no shadow. Parked off-screen at
  translateX(-100%), its 28px blur still darkened the start edge of every
  map (measured at 390: the left 30px about 22 luminance levels darker
  than with the shadow off, a repeat shot identical). The shadow now
  belongs to the open drawer only; in Arabic the same rule covers the
  drawer parked off the right edge.
- A row with disabled (a desktop-only map on a phone, e.g. Big Picture)
  renders greyed, with aria-disabled and a not-allowed cursor; its badge
  keeps its accent colour. pick() is unchanged, so the consumer still
  receives the click and can say why the row does not open.
Both CSS copies change identically.
2026-09-30 07:04:01 +00:00
..
app-wrapper-material The last library reference drops the speaker, and the baseline shrinks to what is left 2026-09-29 05:26:26 +00:00
pane-wrapper Pane elements opt out of the viewport floor: --profile-min-h:0 on the pane mount 2026-09-29 14:09:23 +00:00
README.md Move internal files out of the repo; fix five dead links; a fuller delegation diagram 2026-09-25 05:14:10 +00:00
StackLayout.vue library/ keeps the reason and drops the speaker: no comment quotes or cites the Driver 2026-09-29 05:26:25 +00:00
VerticalTabsLayout.vue Tab layout: no side shade on phones; a disabled tab looks disabled 2026-09-30 07:04:01 +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.