Skip to content

Usage & Limits

Consumption in the order the questions arrive: the overage warning first because it is time-critical, then the meters, then what actually happens at each limit.

4 blocks66 lineslucide-reactAdded 9 Sept 2026

What's included

  • app/usage-page.tsx
  • 4 blocks it is built from, installed with it
  • Needs lucide-react

Works with

  • React
  • Next.js
  • Tailwind CSS
  • TypeScript

npx hoverlab add usage-page

Or over MCP, from your editor's agent — no account needed.

License

Free to read, copy and install, for personal and non-commercial projects. Shipping it in client work or a paid product needs Pro ($79 once). The source lands in your repo and stops being ours — no attribution, nothing to upgrade.

Was this useful?

Preview

Usage

This billing period, with what happens at each limit rather than only how close you are to it.

You are past your included Bandwidth

Everything is still running. You are being billed for the overage, and this is what it looks like so far.

128 of 100 GB128%
Over your allowance
28 GB
Overage rate
$0.09 per 1
Charged so far
$2.52
At this rate, by day 30
$7.47183 GB

Projected from 6 GB a day over 21 days so far. It is a straight line, not a forecast — a quiet week moves it.

Upgrading is usually cheaper than paying overage at this volume. Capping stops the charges and starts returning 429s — some teams genuinely prefer that, and it is a real option rather than a threat.

Usage this period

Resets 1 September

You are over the limit on at least one quota. Overage is billed at the end of the period.

  • API requests842,000 / 1,000,000

    84% of your limit used

  • Team seats8 / 10

    80% of your limit used

  • Storage47 GB / 50 GB

    94% of your limit used

  • Bandwidth128 GB / 100 GB

    28 GB over your limit

  • Projects23of unlimited

    No limit on this plan

Credit balance

2,110credits available

320 credits from monthly allowance expire in 1 days; 150 credits from launch bonus expire in 3 days. They are spent last, so use them before buying more.

  1. 1Monthly allowance

    320 / 500

    Included with Pro+. Resets on the 1st and does not roll over. Expires .

  2. 2Credit pack — 2,000

    1,640 / 2,000

    Purchased 12 August 2026. Never expires.

  3. 3Launch bonus

    150 / 250

    Granted with your first purchase. Expires .

Credits are spent from the top of this list down, so the allowance included with your plan is used before anything you paid for.

What runs out, and what happens then

Pricing tables list what a plan includes. They rarely say what happens at the limit, which is the thing that decides whether a limit is survivable.

The real page, rendered in your current theme — every section below is a live block, not a screenshot.

Built from

All blocks
  1. Overage Notice with ProjectionPast the included allowance, with the end-of-month projection and every number the invoice will use — because a surprise bill is a product defect.
  2. Quota & Usage MetersConsumption against plan limits, with warning thresholds, honest overage display and unmetered quotas that do not fake a bar.
  3. Credit Balance and ExpiryConsumable credits split into the buckets they actually live in, rendered in spend order, with a proportional warning that only appears when a meaningful balance is about to expire.
  4. Plan Limits ListWhat actually runs out on each plan, including what happens when it does — the row a pricing table leaves off.

Only want one section? Open it and copy that block instead — browse Billing & Usage.

Shipped in these templates

Want the whole project rather than this one screen? A template ships every route, the theme tokens and the layout.

Source

app/usage-page.tsx
/**
 * What the account has consumed, and what happens when it runs out.
 *
 * A usage screen is a meter and, almost always, nothing else. The meter
 * answers "how much have I used" and leaves the two questions that
 * actually bring someone here: am I about to be charged, and what happens
 * at the line.
 *
 * So the page runs in the order those questions arrive. The overage notice
 * is first because it is the only part that is time-critical — a warning
 * below the fold is a warning that arrives with the invoice. The meters
 * come second, the credit balance third, and the limits table last.
 *
 * The obvious wrong answer is meter-first with the consequences on a
 * linked pricing page. Someone reading a usage screen is already worried;
 * sending them to marketing for the answer is where the support email is
 * written.
 *
 * The limits panel is the part most products never build, and it is the
 * one that makes the rest safe to read: a soft limit and a hard limit look
 * identical on a progress bar.
 */

import * as React from 'react'
import { UsageOverageNotice } from '@/components/usage-overage-notice'
import { UsageMeterPanel } from '@/components/usage-meter-panel'
import { BillingCreditBalance } from '@/components/billing-credit-balance'
import { PlanLimitsList } from '@/components/plan-limits-list'

export default function UsagePage() {
  return (
    <main className="min-h-screen bg-background text-foreground">
      <section className="mx-auto w-full max-w-5xl px-6 pb-2 pt-12">
        <h1 className="text-2xl font-bold tracking-tight">Usage</h1>
        <p className="mt-1 text-sm text-muted-foreground">
          This billing period, with what happens at each limit rather than
          only how close you are to it.
        </p>
      </section>

      {/*
        Time-critical first — see the note above.

        The notice is pointed at Bandwidth deliberately, because that is
        the quota the meter panel below already shows over its limit
        (128 of 100 GB). Left on its own defaults the two blocks disagreed
        on the same screen — the notice said API requests were 140% over
        while the meter said they were at 84% — which reads as a bug in the
        product rather than as two components with independent demo data.
        Composing blocks means reconciling their examples.
      */}
      <UsageOverageNotice
        metricLabel="Bandwidth"
        included={100}
        used={128}
        unit="GB"
        ratePerUnit={0.09}
        rateUnitSize={1}
      />
      <UsageMeterPanel />
      <BillingCreditBalance />
      <PlanLimitsList />
    </main>
  )
}

How to use it

  1. 1. Copy each of the 4 blocks above into components/ — each block page has its own copy button.
  2. 2. Drop this file at app/usage-page.tsx. The imports already point at @/components/…, so they resolve with no edits.
  3. 3. Delete the sections you do not want. Every block takes props, so the copy changes without the layout moving.

For AI

The component, its props, the design tokens it expects and the command that installs it — as one prompt. Paste it into Claude, Cursor, v0 or ChatGPT and what they build around it will match the rest of the catalog instead of inventing its own system.

See the prompt

More Account & Billing

Open the full page for this page

Account Settings

Profile, team, API keys and danger zone in one screen — with the destructive panel last, well away from the everyday controls.

Account & Billing5 blocks39 lines
Open the full page for this page

Billing & Usage Screen

Plan, quota meters and invoice history, with the upgrade prompt placed beside a bar that is nearly full rather than on the plan card.

Account & Billing5 blocks44 lines
Open the full page for this page

Invoices

Billing history laid out for finance rather than for the user — a retrieval screen, so the table leads and the payment method comes last.

Account & Billing3 blocks41 lines
Open the full page for this page

Notification Settings

Notifications from the receiving end: the inbox you arrived from, per-event and per-channel control, and the push prompt asked after the decision rather than on arrival.

Account & Billing5 blocks59 lines
Open the full page for this page

Team & Access

The admin screen a security questionnaire is really asking about — seats with the bill shown first, invitations, scopes split from bundles, sharing stated as its consequence, live sessions, and the audit trail underneath.

Account & Billing6 blocks61 lines
Open the full page for this page

Change Plan

Both directions, because only one of them is usually built: a radiogroup with the prorated charge announced as it changes, and a cancellation with the end date, what breaks, and one honest alternative offered once.

Account & Billing3 blocks52 lines