Account Settings
Profile, team, API keys and danger zone in one screen — with the destructive panel last, well away from the everyday controls.
Billing history laid out for finance rather than for the user — a retrieval screen, so the table leads and the payment method comes last.
app/invoices-page.tsxnpx hoverlab add invoices-page
Or over MCP, from your editor's agent — no account needed.
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.
Every charge, downloadable as a PDF. Nothing here needs an account on the product itself.
Every charge on this account. PDFs are available for seven years.
Issued 31 August 2026 · Due 14 September 2026
| Description | Qty | Unit | Amount |
|---|---|---|---|
| Studio plan — 40 seats1 Aug – 31 Aug 2026 | 40 | $12.00 | $480.00 |
| Unused time on Team plan20 Aug – 31 Aug 2026 | 24 | $12.00 | -$103.20 |
| Remaining time on Studio plan20 Aug – 31 Aug 2026 | 40 | $12.00 | $172.00 |
| AI credit pack — 2,000 credits | 1 | $15.00 | $15.00 |
| Subtotal | $563.80 | ||
| VAT (United Kingdom) at 20% | $112.76 | ||
| Total | $676.56 | ||
Receipts and failed-payment notices go to billing@acme.com.
Visa ending 4242Default
Expires 11/2026
Mastercard ending 5100
Expires 03/2029
The real page, rendered in your current theme — every section below is a live block, not a screenshot.
Only want one section? Open it and copy that block instead — browse Billing & Usage.
Want the whole project rather than this one screen? A template ships every route, the theme tokens and the layout.
/**
* Billing history, for the person who did not buy the product.
*
* The reader here is usually finance, not the user — they arrived from an
* email asking for a receipt, they do not know the product, and they want
* one document. That reframes the whole layout: this is a retrieval
* screen, not a dashboard.
*
* So the history table leads, an expanded invoice sits under it as the
* shape of what a row opens into, and the payment method is last. The
* obvious wrong answer is card-first, which is what a product-led design
* does because the card is the thing the *user* changes — and it is the
* one thing finance does not need.
*
* The detail block is on the page rather than behind a modal for the same
* reason: an invoice is printed and forwarded, and a modal is neither.
*/
import * as React from 'react'
import { InvoiceHistoryTable } from '@/components/invoice-history-table'
import { BillingInvoiceDetail } from '@/components/billing-invoice-detail'
import { PaymentMethodCard } from '@/components/payment-method-card'
export default function InvoicesPage() {
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">Invoices</h1>
<p className="mt-1 text-sm text-muted-foreground">
Every charge, downloadable as a PDF. Nothing here needs an account
on the product itself.
</p>
</section>
<InvoiceHistoryTable />
<BillingInvoiceDetail />
<PaymentMethodCard />
</main>
)
}
components/ — each block page has its own copy button.app/invoices-page.tsx. The imports already point at @/components/…, so they resolve with no edits.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.
Profile, team, API keys and danger zone in one screen — with the destructive panel last, well away from the everyday controls.
Plan, quota meters and invoice history, with the upgrade prompt placed beside a bar that is nearly full rather than on the plan card.
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.
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.
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.
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.