Fulldev UI is shadcn/ui for Astro: the same tokens, styles, presets and CLI, plus content components, such as section, banner, header and typography, and page blocks. Its React extension adds those extras and blocks to an official shadcn/ui React project.
Use the shadcn skill
for the CLI, registries, semantic tokens and design principles. For Astro
component APIs, read the installed source and the docs at
https://ui.full.dev/components/<name>.md; shadcn docs describes the React
components. Start at llms.txt, or
react/llms.txt for React. Where this skill
and the shadcn skill differ, this skill wins.
Astro setup
- Fulldev UI serves only the Base UI styles (
base-vega,base-novaand so on) with Lucide icons. Move a legacy style, such asnew-york, or aradix-style to abase-style first; see Presets. - The registry is
https://ui.full.dev/r/styles/{style}/{name}.json. An older URL without{style}always installs Vega. - Start a project with
init https://ui.full.dev/r/styles/base-<style>/base.jsonin the preset's style, notinit --preset, thenapply <preset> --only theme,font. With an existingcomponents.json, never runinit, because it replaces the theme tokens: add the registry, thenadd @fulldev/init. - A full
applyadds@base-ui/reactandlucide-react, which Fulldev UI does not use. Preset menu colors are not supported. @fulldev/componentsand@fulldev/blockstake the place ofadd --all.- Components use container-query variants such as
@2xl:, so page content needs an@containerancestor, such asLayoutMainorbody.
Astro components
- There is no
asChildorrender. Components that can change element, such asButton,CardandTypography, takeas, andButtonrenders a link when it getshref. - Interactive components run on
@data-slot/*scripts. Keep theirdata-slotstructure and state attributes. classis merged after the style's classes; other attributes go to the root.- Content-owned icons are names rendered by
Icon: Lucide, with Simple Icons for brands and social links. Import icons fixed in code from@lucide/astro/icons/<name>.
Astro customization
Use built-in variants and size props first. A class on one instance is for
layout, as in shadcn/ui. To change the look, edit the theme tokens in the
stylesheet, then add a rule keyed on data-slot, data-variant or
data-size, and only then edit the installed file.
Theming lists what styles do not cover
and how to override important or variant classes.
In the DESIGN.md workflow, the steps for tokens, radius, elevation, type scale
and the focus outline apply. Make variant and focus-ring changes in the order
above instead of editing cva variants or component classes. Presets load
fonts from Fontsource; in a project that loads fonts another way, such as
Astro's font config, keep one. The design system page helpers are React-only.
React extension
Set up the project with the official shadcn init and a Base UI style, then
add the registry https://ui.full.dev/r/react/styles/{style}/{name}.json.
Standard components, their APIs and customization follow the shadcn skill.
Fulldev extras and blocks use className and their documented React props.
Blocks
A block is a portable section: it takes plain props and imports no project
schemas, content, layouts or routes. Pass images, labels, links, buttons and
content-owned icons as props. Forward class in Astro and className in
React, merged on the root with cn().
Name props by role: label for controls, title for headings, description
for copy, icon for icon names, href for destinations and buttons for
calls to action. Name collections by their content, such as features or
reviews, and keep items for generic data. Button size belongs to the block,
not to its data.