Installation
Add a part with one command. It brings its own files and stylesheet; your global CSS imports the foundation once.
Requirements
React 19, Tailwind CSS 4 and a bundler that handles CSS imports: Next.js App Router, Vite or React Router. Geist Sans and Geist Mono are used for text.
Add a part
Caliper UI works with the shadcn CLI. Free parts need no setup and no account:
npx shadcn@latest add https://caliperui.site/r/button.jsonThe files land in components/ui/ with their packages. The first install also adds Caliper UI’s tokens and base styles under styles/caliper/. Every component page shows its own command; Pro parts need a one-time token setup, see Pro access.
Import the foundation once
@import "tailwindcss";
@import "../styles/caliper/tokens.css";
@import "../styles/caliper/tailwind.css";
@import "../styles/caliper/base.css";Paths are relative to your global CSS file; in a Vite app, src/index.css uses ./styles/caliper/….
Each part brings its own CSS
A part imports its stylesheet, so button.tsx starts with import "./button.css" and your app carries only the CSS for the parts you add. Rules several parts share sit in components/ui/shared/, imported by the parts that use them. All of it is yours to edit.
Next.js Pages Router only allows global CSS in pages/_app: move each part’s stylesheet import there.
Use a component
import { Button } from "@/components/ui/button";
export function SaveNote({ pending }: { pending: boolean }) {
return <Button loading={pending}>Save note</Button>;
}Prefer to copy by hand? Every component page lists its files, stylesheets included, under Installation.