Staaarter

Billing Renewal Alert Banner

A banner that warns of an upcoming annual (or any-term) renewal charge, showing the renewal date, the amount that will be charged, and a manage-subscription button. A warning variant swaps to an amber treatment with a custom message, meant for cases like an expiring card on file.

By Staaarter Team
Billing
Updated June 1, 2026
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its button dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/billing-renewal-alert-banner.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/billing/billing114.tsx instead.

Usage

The file also exports billing114Demo, 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 { Billing114, billing114Demo } from "@/components/blocks/billing/billing114";

export default function Page() {
  return <Billing114 {...billing114Demo} />;
}

Props

PropTypeDefaultDescription
headingstringnoneOverrides the default generated heading built from planName and renewalDate.
planNamestringnoneUsed in the default heading, e.g. "Annual Business".
renewalDatestringnoneDate used in the default heading and, when no warningMessage applies, referenced in the body text.
renewalAmountstringnoneAmount that will be charged, already formatted as currency.
variant"default" | "warning""default"Switches between the neutral treatment and the amber warning treatment.
warningMessagestringnoneBody text shown instead of the default renewal-amount sentence when variant is "warning".
manageHrefstring"#"Destination for the manage-subscription button.
manageLabelstring"Manage subscription"Label on the manage button.
classNamestringnoneExtra classes for the outer container.

Behavior notes

  • When heading is omitted, the component builds one from planName and renewalDate; when planName is also omitted, it falls back to a generic "Your plan renews on {date}" sentence.
  • In the warning variant, the body text shows warningMessage instead of the default "You'll be charged {renewalAmount}" sentence, so pass a message describing the specific problem, e.g. an expiring card.
  • The icon and color treatment (amber alert triangle vs. neutral calendar icon) are driven entirely by the variant prop, not by any date comparison the component performs itself.
  • This is a non-client, presentational component; deciding when to show it (e.g. 14 to 30 days before renewal) and which variant to use is left to the caller.

Frequently asked questions