Billing Contact Support
A dedicated support entry point for billing pages, listing chat, email, and phone channels with their typical response times, plus a short list of links to common billing questions. Built for payment failure screens, invoice pages, and account settings where someone needs help without leaving the context of a financial decision.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its badge, button dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/billing-contact-support.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/billing/billing37.tsx instead.
Usage
The file also exports billing37Demo, 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 { Billing37, billing37Demo } from "@/components/blocks/billing/billing37"; export default function Page() { return <Billing37 {...billing37Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| heading | string | "Need help with billing?" | Heading shown above the channel list. |
| description | string | none | Optional supporting line under the heading. |
| priority | boolean | false | Shows a "Priority support" badge next to the heading when true. |
| channels | SupportChannel[] | none | Contact channels rendered in the order given, each with an icon chosen from its type. |
| faqLinks | FaqLink[] | none | Optional short list of links rendered under the channel list. Omitted entirely if not passed. |
| className | string | none | Extra classes for the outer container. |
Types
type SupportChannelType = "chat" | "email" | "phone"; interface SupportChannel { id: string; type: SupportChannelType; label: string; detail: string; responseTime: string; href: string; ctaLabel?: string; } interface FaqLink { label: string; href: string; }
Behavior notes
- Each channel's icon comes from an internal type-to-icon lookup keyed on its type field (chat, email, phone), not from a prop, so the demo data stays plain strings.
- The priority badge is a single boolean flag; there's no logic in the component that infers it from a plan name, that decision is the caller's.
- Every channel row is static text and a link-styled button (Button rendered as an anchor), there's no click tracking or state, wire an onClick or analytics call where you use it.
- faqLinks is optional; the whole section is skipped when it's omitted or an empty array.
Frequently asked questions
More Billing Blocks
View all →Billing Invoice List
Invoice history table with status badges, formatted amounts, and a per-row download link, built with shadcn/ui and Tailwind CSS.
Billing Failed Payment Alert
High-contrast failed-payment alert with a message, a retry button, and an optional update-payment-method button, built with shadcn/ui and Tailwind CSS.
Billing Credit Balance
Compact credit balance card with a large total, an optional purchased-versus-promotional breakdown, a low-balance notice, and a top-up button.
Billing Payment Methods
A saved payment method list for React and Next.js with brand icons, a default badge, near-expiry warnings, and remove/set-default actions per row.
Billing Add Card
A card entry form for React and Next.js with auto-formatted fields, internal brand detection, and per-field validation feedback built with shadcn/ui and Tailwind CSS.
Billing Coupon Code
An inline promo code input for React and Next.js with a simulated loading state, an applied summary showing the discount amount, and an invalid-code message.