Get started
Installation
Add components with the shadcn CLI, by namespace or by URL.
Before you start
Bevel needs a React 19 project with Tailwind CSS v4 and the shadcn CLI set up. Next.js and Vite both work. If you haven't set up shadcn yet:
npx shadcn@latest initOption 1: the @bevel namespace
Add the registry to components.json once. After that, components install by name.
{
"registries": {
"@bevel": "https://bevel-ui.vercel.app/r/{name}.json"
}
}npx shadcn@latest add @bevel/walletAdd several at once by listing them:
npx shadcn@latest add @bevel/annunciator @bevel/guarded-switch @bevel/meterOption 2: straight from a URL
No configuration: point the CLI at a component's JSON. Its dependencies come with it.
npx shadcn@latest add https://bevel-ui.vercel.app/r/wallet.jsonWhole screens
Each of the demo products installs as a block: its code lands in components/bevel-demos, every Bevel component it uses comes with it, and a page renders it. Blocks are for Next.js apps, since each product sets its type with next/font.
npx shadcn@latest add @bevel/agent-consoleThe others are billing-desk, release-hall and review-desk. Treat them as a starting point: the data is made up, and the state lives in the files you just added.
What you get
- The component's source in
components/ui, and any Bevel parts it's built from (aWalletbringsPaymentCardandAmount). - Its styles, merged into your global CSS: the component's palette and, the first time, the Bevel foundation (light, depth, materials, motion and shape tokens).
- Its npm dependencies:
@base-ui/reactandcn, which the CLI installs for you.
add again with --overwrite and review the diff, as you would with any shadcn component.Use it
import { GuardedSwitch, GuardedSwitchControl, GuardedSwitchLabel } from "@/components/ui/guarded-switch"
export default function Page() {
return (
<GuardedSwitch onCheckedChange={(on) => on && deploy()}>
<GuardedSwitchLabel>Deploy to production</GuardedSwitchLabel>
<GuardedSwitchControl />
</GuardedSwitch>
)
}Every component page lists its parts, its props and a working example you can copy. Dark mode follows a .dark class on html, the shadcn default. See theming.