.astro components installed directly into astro-app/src/components/blocks/ via the shadcn CLI. They share the same flat-props dispatch pattern as custom blocks, so the BlockRenderer treats them identically — no separate registration path.
What fulldev/ui template blocks are
fulldev/ui is a library of pre-built Astro section components distributed through the shadcn registry. Each component is a self-contained.astro file that accepts a typed Props interface. You own the source — once installed, the file lives in your repo and you can modify it freely.
The project ships with 102 variants across 12 categories. Each variant has a companion Storybook story with demo data so you can preview it in isolation without a running Sanity instance.
Sanity schema + GROQ projection wiring for template blocks is tracked in Stories 2.4–2.8. Until a block is wired, it renders via its Storybook story args or static slot content rather than live CMS data.
Installing a block
Each variant is installed individually with the shadcn CLI:astro-app/src/components/blocks/hero-1.astro and installs any required ui primitives into astro-app/src/components/ui/. The block is immediately picked up by block-registry.ts — no manual registration needed.
Auto-discovery via the block registry
block-registry.ts uses Vite’s import.meta.glob to scan both blocks/custom/ and blocks/*.astro at build time. Every .astro filename maps to a _type key in the unified allBlocks map:
BlockRenderer receives a Sanity block with _type: "hero-1", it resolves the component from the map and spreads all remaining props directly onto it:
Storybook stories
Every template block has a companion story atblocks/{name}.stories.ts. Stories use the Storybook Autodocs tag and export a Default story with realistic demo args. Run Storybook to browse all variants:
main that touch component files.
CMS wiring status
Wiring a template block to Sanity requires four files and no changes to the.astro component itself:
- A Sanity schema file in
studio/src/schemaTypes/blocks/ - Registration in
studio/src/schemaTypes/index.tsand the page schema - A GROQ projection in
astro-app/src/lib/sanity.ts - A TypeScript type generated by
npm run typegen