Skip to content
X

Installation

  • Node.js 20+
  • pnpm (recommended) or npm
  1. Create a new Astro project (skip if you have one):

We recommend using the fulldev starter. If you prefer to scaffold manually:

Terminal window
pnpm create astro@latest my-project -- --template with-tailwindcss
cd my-project
  1. Configure TypeScript paths in tsconfig.json:
tsconfig.json
{
"compilerOptions": {
// ...
"paths": {
"@/*": ["./src/*"]
}
// ...
}
}
  1. Initialize shadcn:
Terminal window
npx shadcn@latest init
  1. Add fulldev/ui registry to components.json:
components.json
{
"registries": {
"@fulldev": "https://ui.full.dev/r/{name}.json"
}
}
  1. Copy the base stylesheet from src/styles/global.example.css to src/styles/global.css, then import it in your layout.

  2. Use a container-aware app shell because fulldev/ui uses Tailwind v4 container-query variants like @2xl: and @max-5xl::

These are intentional and should not be converted to viewport breakpoints like 2xl:.

To make those variants work, add @container to the root wrapper that contains your page content:

src/layouts/Layout.astro
---
import "@/styles/global.css"
---
<body class="@container">
<slot />
</body>
  1. Add components:
Terminal window
npx shadcn@latest add @fulldev/button

Or add multiple resources at once:

Terminal window
npx shadcn@latest add @fulldev/button @fulldev/item @fulldev/list
Terminal window
npx shadcn@latest add @fulldev/components
npx shadcn@latest add @fulldev/blocks

The commands above will add components to your project. You can then import them like this:

src/pages/index.astro
---
import { Button } from "@/components/ui/button"
---
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/logo-fulldev.svg" />
<meta name="generator" content={Astro.generator} />
<title>Astro + fulldev/ui</title>
</head>
<body class="@container">
<div class="grid h-screen place-items-center content-center">
<Button>Button</Button>
</div>
</body>
</html>