Build interfaces your users can't break by accident.
Copy-paste React components that catch costly mistakes while there's still time to fix them.
npx shadcn@latest add https://bollard-ui.vercel.app/r/amount-input.jsonNeeds React 19+ · Tailwind v4 · shadcn. Setup guide
That's 10× the usual ₹2,400. Extra zero?
- Source codeCopied into your app
- MIT licensedFree for commercial use
- 340 componentsAcross 9 categories
- Your themeReact 19 · Tailwind v4
Component lab
Try the guard rails.
Each preview is a real component, loaded with a mistake it is built to catch.
Browse by flow
Start from the screen you're building.
Checkout, sign-up, settings, the danger zone. Every component is filed under the places its mistake happens, so one component can appear in several flows.
- Checkout & payments69 componentsThe extra zero, the double charge, the expired card and the surprise total.Browse
- Sign-up & login36 componentsTypo'd emails, unreachable numbers, weak passwords and fumbled codes.Browse
- Account settings46 componentsEmail changes, sessions, recovery contacts and edits that never saved.Browse
- Danger zone55 componentsDeletes, transfers and resets that need a deliberate second look.Browse
- Forms & data entry137 componentsLost drafts, double submits, hidden errors and dates that make no sense.Browse
- Messaging & sharing45 componentsWrong recipient, reply-all, the forgotten attachment and the leaked key.Browse
- Dev tools & infra100 componentsProduction by accident, force-pushes, unbounded SQL and piped installs.Browse
- Dates & scheduling27 components03/04 read the wrong way, the wrong time zone and the clash nobody saw.Browse
- India57 components+91 numbers, Aadhaar, IFSC, UPI, PIN codes and lakh-aware amounts.Browse
How it works
Find it, add it, own it.
Bollard UI works the way shadcn/ui does: you add a component, and it becomes part of your app.
- 01
Find the mistake
Search by what goes wrong, like “extra zero” or “pasted key”, with ⌘K, or browse by flow.
- 02
Add it with the CLI
One shadcn command copies the source into your components folder. There is no Bollard UI package to install or update.
- 03
It's your code
Plain React and Tailwind on your shadcn theme. Restyle it, rename it, reword every message.
Install a component
npx shadcn@latest add https://bollard-ui.vercel.app/r/amount-input.jsonNeeds React 19+ · Tailwind v4 · shadcn (npx shadcn@latest init once). The CLI writes components/ui/amount-input.tsx and installs the packages it lists. Later changes don't reach your copy automatically: how to update.
import { AmountInput } from "@/components/ui/amount-input"
export function RentField() {
return (
<AmountInput
label="Monthly rent"
locale="en-IN"
currency="INR"
typical={24000} // 2,40,000 asks "Extra zero?"
/>
)
}Compared
Why not just validation or a confirm dialog?
They answer different questions. Keep them; Bollard UI covers the gap between “valid” and “what the user meant”.
Schema validation
Zod, native required / pattern
Answers: Is this value allowed?
₹24,000 is a perfectly valid amount. So is alex@gmial.com. Validation passes both.
Asks whether it is what the user meant: “10× your usual. Extra zero?”
A confirm dialog
“Are you sure?”
Answers: Did you click on purpose?
People learn to press OK without reading. The dialog rarely says what will actually happen.
Reads back the consequence (which 1,204 rows, which account, which environment) before the click counts.
Server-side checks
Authorization, rate limits, constraints
Answers: Is this request allowed at all?
Still required, and Bollard UI doesn't replace them. They just answer after the request is sent.
Catches the honest mistake earlier, while the user can still fix it, with the server as the real backstop.
FAQ
Questions, answered.
Is it free?
Does it need shadcn/ui?
How do I add a component?
Does it work with Next.js, Vite and Remix?
Can I customise it?
Put a guard rail where mistakes happen.
Add a component with the shadcn CLI. Its source lands in your repo, MIT licensed and ready for your own changes.
npx shadcn@latest add https://bollard-ui.vercel.app/r/type-to-confirm.jsonNeeds React 19+ · Tailwind v4 · shadcn