Hitesh

Meter

Component

About

A brass metering instrument with a rolling reading: live spend that ticks up, or a prepaid balance that counts down. Skeuomorphic, accessible, Base UI. Part of Bevel: bevel-ui.vercel.app

Built with React and Tailwind. Copy the prompt and paste it into Claude Code, Cursor or Lovable: your agent adds Meter to your project and fits it to your theme.

Code

How Meter is used: the demo's code. The component's own source comes with a free account.

Usage.tsx

"use client"

import * as React from "react"
import { Pause, Play } from "lucide-react"
import {
  Meter,
  MeterButton,
  MeterFlag,
  MeterFooter,
  MeterHeader,
  MeterLabel,
  MeterReading,
  MeterUnit,
} from "@/components/ui/meter"

/** A chat turn's cost on a taxi-style meter, rolling while the model writes. Press Run. */
export function MeterLiveUsage() {
  const [running, setRunning] = React.useState(false)
  const [spent, setSpent] = React.useState(0.142)
  React.useEffect(() => {
    if (!running) return
    const timer = setInterval(
      () => setSpent((s) => s + 0.001 + Math.random() * 0.003),
      400
    )
    return () => clearInterval(timer)
  }, [running])
  return (
    <div className="scale-[2.2] p-24">
      <Meter
        state={running ? "running" : "stopped"}
        aria-label="This turn's cost"
      >
        <MeterHeader>
          <MeterLabel>This turn</MeterLabel>
          <MeterFlag />
        </MeterHeader>
        <div className="flex items-baseline gap-2">
          <MeterReading
            value={spent}
            currency="USD"
            format={{ minimumFractionDigits: 3 }}
          />
          <MeterUnit>so far</MeterUnit>
        </div>
        <MeterFooter>
          <MeterButton onClick={() => setRunning((r) => !r)}>
            {running ? <Pause /> : <Play />}
            {running ? "Stop" : "Run"}
          </MeterButton>
          <MeterButton disabled={running} onClick={() => setSpent(0)}>
            Clear
          </MeterButton>
        </MeterFooter>
      </Meter>
    </div>
  )
}

export default MeterLiveUsage

Dependencies

More by Hitesh

View all
  • Wallet

    Wallet

    8
  • Kbd

    Kbd

    4
  • Number wheel

    Number wheel

    4
  • Badge

    Badge

    2
  • Icon key

    Icon key

    1
  • Gauge and dial

    Gauge and dial

  • Ledger

    Ledger

  • Preset keys

    Preset keys

Explore more

Part of Bevel — browse the full library on 21st.dev.