Billing Secure Checkout Badge
A row of security trust badges for checkout and billing pages, each with an icon, a label, and an optional one-line description like "Level 1 compliant". Built to sit directly under a Pay button or credit card form, the moment a buyer is most likely to hesitate over handing over payment details.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/billing-secure-checkout-badge.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/billing/billing120.tsx instead.
Usage
The file also exports billing120Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.
import { Billing120, billing120Demo } from "@/components/blocks/billing/billing120"; export default function Page() { return <Billing120 {...billing120Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| heading | string | none | Optional small label above the badge row, for example "Payments secured by". Omitted if not passed. |
| badges | SecurityBadgeItem[] | none | Badges rendered left to right, wrapping onto new lines on narrow viewports. |
| className | string | none | Extra classes for the outer wrapper. |
Types
type SecurityBadgeIcon = "shield" | "lock" | "certified" | "infrastructure"; interface SecurityBadgeItem { id: string; label: string; description?: string; icon: SecurityBadgeIcon; }
Behavior notes
- Each badge's icon comes from a fixed string union (shield, lock, certified, infrastructure) mapped internally to a lucide-react icon, not passed as a component prop.
- Icons are muted-foreground colored rather than brand colors, on purpose, since a plain monochrome look reads as infrastructure rather than a decorative sticker.
- The row uses flex-wrap so it degrades gracefully to two or three lines on narrow viewports instead of overflowing or shrinking illegibly.
- The optional description line is small (11px) and sits directly under the label inside the same badge, keep it to a few words.
- There's no logic verifying the badges are true, whatever labels and descriptions you pass are displayed as-is.
Frequently asked questions
More Billing Blocks
View all →Billing Invoice List
Invoice history table with status badges, formatted amounts, and a per-row download link, built with shadcn/ui and Tailwind CSS.
Billing Failed Payment Alert
High-contrast failed-payment alert with a message, a retry button, and an optional update-payment-method button, built with shadcn/ui and Tailwind CSS.
Billing Credit Balance
Compact credit balance card with a large total, an optional purchased-versus-promotional breakdown, a low-balance notice, and a top-up button.
Billing Payment Methods
A saved payment method list for React and Next.js with brand icons, a default badge, near-expiry warnings, and remove/set-default actions per row.
Billing Add Card
A card entry form for React and Next.js with auto-formatted fields, internal brand detection, and per-field validation feedback built with shadcn/ui and Tailwind CSS.
Billing Coupon Code
An inline promo code input for React and Next.js with a simulated loading state, an applied summary showing the discount amount, and an invalid-code message.