Section library
A section library ships pre-composed page sections — heroes, feature grids, testimonials, pricing tables, contact blocks — grouped by section purpose. Tenants assemble entire pages by dropping sections from your library onto a layout.
What you ship
my-sections/
├── manifest.json
├── sections/
│ ├── hero-split-image.json
│ ├── hero-centered-cta.json
│ ├── feature-grid-3up.json
│ ├── testimonial-marquee.json
│ ├── pricing-tiers-3up.json
│ ├── contact-with-map.json
│ └── …
├── preview/
│ ├── library-grid.png
│ └── per-section/<id>.png
└── README.md
Key contracts
- Section purpose declared. Every section names its
section_purpose(hero,feature-grid,pricing, etc.) so the AI composer can swap one for another. - Widget composition. Sections are composed from canonical widgets — no custom code. The runtime renders them with the active theme/chrome/motion.
- Brand fingerprint targeting. Each section declares which fingerprints it suits (
editorial,hospitality,technical, …).
Scaffold
vincia create section-library my-sections
cd my-sections
vincia preview
vincia publish --dry-run
Approval gates
1. Schema parse. 2. section_purpose coverage — at least the canonical core (hero, feature-grid, cta, testimonial, contact) is present. 3. No widget overrides — sections compose widgets, not raw HTML. 4. Per-section previews — every section ships its own preview thumbnail.
Where to learn more
- /foundations — section_purpose taxonomy.
- Examples — the Hospitality section library ships with source available.