Get started
Fabricator UI

Search documentation

Search pages, components, blocks, styles and colours.

Vite

PreviousNext

Install and configure Fabricator UI for Vite.

Choose the setup that matches your starting point.

Use the CLI

Create Project

Run the init command to scaffold a new Vite project. Follow the prompts to configure your project: base, preset, monorepo, and more.

bunx --bun fabricator-ui@latest init -t vite

For a monorepo project, use --monorepo flag:

bunx --bun fabricator-ui@latest init -t vite --monorepo

To choose the base (base, radix or aria), use the -b flag. Base UI is the default.

bunx --bun fabricator-ui@latest init -t vite -b radix

Add Components

Add the Card component to your project:

bunx --bun fabricator-ui@latest add card

If you created a monorepo, run the command from apps/web or specify the workspace from the repo root:

bunx --bun fabricator-ui@latest add card -c apps/web

The command above will add the Card component to your project. You can then import it like this:

src/App.tsx
import {
  Card,
  CardContent,
  CardDescription,
  CardHeader,
  CardTitle,
} from "@/components/ui/card"
 
function App() {
  return (
    <Card className="max-w-sm">
      <CardHeader>
        <CardTitle>Project Overview</CardTitle>
        <CardDescription>
          Track progress and recent activity for your Vite app.
        </CardDescription>
      </CardHeader>
      <CardContent>
        Your design system is ready. Start building your next component.
      </CardContent>
    </Card>
  )
}
 
export default App

If you created a monorepo, update apps/web/src/App.tsx and import from @workspace/ui/components/card instead.

Existing Project

Create Project

If you need a new Vite project, create one first and select the React + TypeScript template. Otherwise, skip this step.

bun create vite@latest

Add Tailwind CSS

If your project already has Tailwind CSS configured, skip this step.

bun add tailwindcss @tailwindcss/vite

Replace everything in src/index.css with the following:

src/index.css
@import "tailwindcss";

Edit tsconfig.json file

If your project already has the @/* alias configured, skip this step.

Vite splits TypeScript configuration across multiple files. Add the baseUrl and paths properties to the compilerOptions section of tsconfig.json and tsconfig.app.json:

tsconfig.json
{
  "files": [],
  "references": [
    {
      "path": "./tsconfig.app.json"
    },
    {
      "path": "./tsconfig.node.json"
    }
  ],
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["./src/*"]
    }
  }
}

Edit tsconfig.app.json file

Add the same alias to tsconfig.app.json so your editor can resolve imports:

tsconfig.app.json
{
  "compilerOptions": {
    // ...
    "baseUrl": ".",
    "paths": {
      "@/*": [
        "./src/*"
      ]
    }
    // ...
  }
}

Update vite.config.ts

Install @types/node and update vite.config.ts so Vite can resolve the @ alias:

bun add -D @types/node
vite.config.ts
import path from "path"
import tailwindcss from "@tailwindcss/vite"
import react from "@vitejs/plugin-react"
import { defineConfig } from "vite"
 
// https://vite.dev/config/
export default defineConfig({
  plugins: [react(), tailwindcss()],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "./src"),
    },
  },
})

Run the CLI

Run the init command to set up Fabricator UI in your project.

bunx --bun fabricator-ui@latest init

If the project already has components installed, init asks whether to add the @fabricator registry only, or to also apply the Fabricator theme. See Registry.

Add Components

You can now start adding components to your project.

bunx --bun fabricator-ui@latest add button

The command above will add the Button component to your project. You can then import it like this:

src/App.tsx
import { Button } from "@/components/ui/button"
 
function App() {
  return (
    <div className="flex min-h-svh flex-col items-center justify-center">
      <Button>Click me</Button>
    </div>
  )
}
 
export default App