ButtonLink
src/components/core/ButtonLink.astro Shared link button primitive with primary and secondary variants.
Inputs: href, style
Reference
Use this page as the canary inventory for what ships in the managed core today and what clients can extend safely.
Core primitives
These are the files client projects consume indirectly through blocks, layouts and simple composition.
src/components/core/ButtonLink.astro Shared link button primitive with primary and secondary variants.
Inputs: href, style
src/components/core/FaqAccordion.svelte Bits UI accordion wrapper used by the FAQ block.
Inputs: items
src/components/core/BlockRenderer.astro Managed registry that maps typed Sveltia blocks to Astro components.
Inputs: blocks
Content blocks
These blocks are registered in the CMS config and rendered through the managed block registry.
Large introduction block with eyebrow, heading, summary, alignment and up to two links.
Section intro plus repeatable feature cards for service lines, differentiators or process steps.
Question-and-answer section rendered with a Bits UI accordion and hydrated only when visible.
High-contrast closing panel with a single action link for contact, booking or conversion prompts.
Preview examples
These examples render the actual production components, so this page doubles as a visual regression check for the template canary.
ButtonLink
Registry contract
The current block union is hero | features | faq | cta. New shared blocks should update the CMS config, the block types and the renderer together.
Interactive primitive
Add new managed blocks here first, verify them on this page, and only then roll them out to client sites.
Extension point
src/components/custom/ Client-specific primitives and composites that should survive managed core upgrades untouched.
Extension point
src/components/blocks/custom/ Client-only block renderers that can be registered in the CMS config when the shared core is not enough.
Extension point
src/styles/theme.css Semantic color, type, spacing and surface variables owned by the client brand instead of the managed core.