Theme guide

Installation

Install Astro source from the gnostic-ui registry.

The package name is @gnosticai/ui. The shadcn namespace is @gnosticai. Registry commands copy Astro source into your project.

Generate a new site

From the gnostic-ui workspace, run:

pnpm generate --theme studio --out ../client-site
cd ../client-site
pnpm install
pnpm dev

The destination must be empty. Edit src/content/globals/site.json for shared copy. Add Markdown or JSON pages in src/content/pages. Set the production URL in astro.config.ts before deployment.

Add the registry to an existing site

Use Astro 6, Tailwind 4, and Node 22.12 or later. Add this components.json at the project root. If one already exists, merge the registry entry and keep your existing settings.

{
  "$schema": "https://ui.shadcn.com/schema.json",
  "style": "base-vega",
  "rsc": false,
  "tsx": true,
  "tailwind": {
    "config": "",
    "css": "src/styles/global.css",
    "baseColor": "neutral",
    "cssVariables": true
  },
  "iconLibrary": "lucide",
  "aliases": {
    "components": "@/components",
    "ui": "@/components/ui",
    "utils": "@/lib/utils",
    "lib": "@/lib"
  },
  "registries": {
    "@gnosticai": "https://ui.gnosticai.com/r/{name}.json"
  }
}

Add the import alias to tsconfig.json:

{
  "extends": "astro/tsconfigs/strict",
  "compilerOptions": {
    "paths": { "@/*": ["./src/*"] }
  }
}

Items use explicit src targets. UI components install into src/components/ui/<name>/. Blocks install into src/components/blocks/<category>/. Relative imports preserve the source layout.

Set up Tailwind

pnpm dlx shadcn@latest add @gnosticai/astro-tailwind

This adds the base stylesheet and a small Astro integration. Review an existing stylesheet before accepting a replacement. Add the integration to your Astro config:

import { defineConfig } from "astro/config"
import gnosticTailwind from "./src/integrations/tailwind"

export default defineConfig({
  integrations: [gnosticTailwind()],
})

If your site already has the Tailwind Vite plugin, keep it and install @gnosticai/init instead. Do not enable Tailwind twice. Import src/styles/global.css once in your site layout.

Install components and blocks

pnpm dlx shadcn@latest add @gnosticai/button @gnosticai/card
pnpm dlx shadcn@latest add @gnosticai/hero-13
---
import { Button } from "@/components/ui/button"
import Hero from "@/components/blocks/hero/hero-13.astro"
---

Each item includes its required registry and npm dependencies. Install @gnosticai/ui for the base styles and all UI components. Use individual block names to keep the copied source small.

Themes and integrations

pnpm dlx shadcn@latest add @gnosticai/theme-earth
pnpm dlx shadcn@latest add @gnosticai/astro-seo
pnpm dlx shadcn@latest add @gnosticai/astro-cloudflare
pnpm dlx shadcn@latest add @gnosticai/theme-schema

A theme item adds CSS variables. It does not replace your page layout. The site generator uses theme block selections when it creates a new site. See the theme preview to compare colors.

The SEO and Cloudflare items install packages and print setup instructions. They do not replace an existing config. Static sites can use Cloudflare Worker assets without the server adapter.

For local registry tests, change the registry URL to http://127.0.0.1:4321/r/{name}.json. The production URL becomes usable after the registry is deployed.