Skip to main content
Clever Ops

Rate Card

A tradesman rate card for React, call-out fee, hourly and after-hours rates as an honest mono ledger with plain-English fine print. Tailwind tokens throughout.

Preview & code

Loading Rate Card preview

Installation

pnpm dlx shadcn@latest add @cleverui/trade-rate-card

Requires the @cleverui registry in your components.json, a one-off, two-line setup.

Usage

tsx
import { TradeRateCard } from '@/components/blocks/trade-rate-card'
Exampletsx
import { TradeRateCard } from '@/components/blocks/trade-rate-card'

export default function TradeRateCardDemo() {
  return (
    <div className="mx-auto max-w-3xl px-4 py-6 sm:px-6">
      <TradeRateCard
        heading="What it costs"
        intro="Same rates for everyone. These are the numbers you'll see on the invoice."
        groups={[
          {
            label: 'Standard hours, Mon–Fri 7am–5pm',
            rows: [
              {
                item: 'Call-out fee',
                detail: '$0 if we do the work. Charged only when you decline after diagnosis.',
                price: '$0',
                highlight: true,
              },
              {
                item: 'Labour, first half hour',
                detail: 'Covers travel within 20km and diagnosis on site.',
                price: '$110',
              },
              {
                item: 'Labour, each half hour after',
                detail: 'Billed in 30-minute blocks, you only pay for time on the tools.',
                price: '$55',
              },
              {
                item: 'Hourly rate',
                detail: 'Quoted for booked jobs over an hour.',
                price: '$110/hr',
              },
            ],
          },
          {
            label: 'After hours & weekends',
            rows: [
              {
                item: 'Evening call-out (5pm–10pm)',
                detail: 'Same $0 if we complete the repair.',
                price: '$0',
              },
              {
                item: 'After-hours labour',
                detail: 'Weeknights and Saturdays until 2pm.',
                price: '$165/hr',
              },
              {
                item: 'Sunday & public holiday',
                detail: 'Emergency triage only, we tell you the rate before we leave the yard.',
                price: '$220/hr',
              },
            ],
          },
        ]}
        finePrint={[
          'Parts and materials are charged at trade cost plus 15%, no mystery mark-ups.',
          'Rates change only when award rates do; we give 30 days notice on the website.',
          'Any job over an hour gets a fixed written quote before we start.',
          'GST is included in every figure on this card.',
        ]}
        note="Fixed quote before we start on anything over an hour."
      />
    </div>
  )
}

API reference

TradeRateCard accepts the following props.

PropTypeDefaultDescription
headingstring'What it costs'
introstringone plain sentence under the heading
groups*TradeRateGroup[]2–3 rate groups (Standard hours, After hours)
finePrintstring[]2–4 plain-English fine-print lines
notestringclosing line about fixed quotes

…plus everything from React.HTMLAttributes<HTMLElement>: className, event handlers, aria attributes and the rest pass straight through.

Referenced types

Typestsx
export interface TradeRateGroup {
  label: string
  rows: TradeRateRow[]
}

export interface TradeRateRow {
  item: string
  /** one honest line, e.g. "covers the first half hour on site" */
  detail?: string
  /** preformatted, e.g. "$110/hr" or "$0" */
  price: string
  /** at most one highlight across all groups, primary left keyline */
  highlight?: boolean
}

Frequently asked questions

How do I install the Rate Card component?

Register the @cleverui registry in your components.json ("@cleverui": "https://cleverops.com.au/r/{name}.json"), then run `npx shadcn@latest add @cleverui/trade-rate-card`. The shadcn CLI copies the source into your project, you own the code from that point. You can also copy the source directly from this page.

What dependencies does Rate Card require?

Rate Card uses motion on top of React and Tailwind CSS. You don't need to install it manually, the shadcn CLI resolves and installs npm dependencies automatically when you add the component.

Can I theme Rate Card to match my brand?

Yes. The component is styled entirely with Tailwind utilities over standard design tokens (primary, background, muted, border), so it inherits your existing shadcn/ui theme automatically. Change your CSS variables and the component follows, no source edits needed for palette, radius, or fonts.

Want this built for you?

CleverUI is built by the Clever Ops web team. If you'd rather ship a hand-coded, fast, custom website than assemble one, we build them for Australian businesses every week.

Explore web development services