BlockDex

Components

Registries

Free blocks

Method

BlockDex

Components

Registries

Free blocks

Method

Open API

BlockDex

Components

Registries

Free blocks

Method

Open API

Components/paddle/subscription-status-card

Subscription status card

paddle/subscription-status-card
FreeComponent

Subscription overview card showing plan details, status, billing cycle, line item breakdown, discount, scheduled changes, and optional action buttons. Supports single and multi-item subscriptions, past-due alerts, collection mode indicators, and configurable badge position.

Install it

npx shadcn@latest add https://developer.paddle.com/r/subscription-status-card.json

Source

registry/new-york/blocks/subscription-status-card/components/subscription-status-card.tsxdeveloper.paddle.com/r/subscription-status-card.json · first 6 KB
1"use client"
2
3import * as React from "react"
4import {
5 CheckCircle2,
6 Clock,
7 AlertCircle,
8 PauseCircle,
9 MinusCircle,
10 Sparkles,
11 CalendarIcon,
12 CreditCardIcon,
13 FileTextIcon,
14} from "lucide-react"
15import {
16 Card,
17 CardContent,
18 CardDescription,
19 CardHeader,
20 CardTitle,
21} from "@/registry/new-york/ui/card"
22import { Badge } from "@/registry/new-york/ui/badge"
23import { Button } from "@/registry/new-york/ui/button"
24import { Separator } from "@/registry/new-york/ui/separator"
25import { Alert, AlertDescription, AlertTitle } from "@/registry/new-york/ui/alert"
26import { Skeleton } from "@/registry/new-york/ui/skeleton"
27import { cn } from "@/lib/utils"
28import type { SubscriptionStatusData } from "@/registry/new-york/blocks/paddle-helpers/lib/paddle-types"
29import {
30 formatMoney,
31 formatDate,
32 formatBillingCycle,
33} from "@/registry/new-york/blocks/paddle-helpers/lib/paddle-format"
34
35export type SubscriptionStatusCardProps = {
36 subscription?: SubscriptionStatusData
37 /** Override the card title. Defaults to the first item's product name (single-item) or "Subscription" (multi-item). */
38 title?: string
39 /** Position of the status badge: "inline" next to name, or "end" aligned to card end */
40 statusBadgePosition?: "inline" | "end"
41 /**
42 * Called when the user clicks "Change plan".
43 * Only rendered when status is not `paused` or `canceled` — paused
44 * subscriptions must be resumed before items can be changed, and canceled
45 * is a terminal state.
46 */
47 onChangePlan?: () => void
48 /**
49 * Called when the user clicks "Update payment method".
50 * Only rendered for automatically-collected subscriptions that are not
51 * `paused` or `canceled` — manual subscriptions are invoice-based (no saved
52 * payment method), paused subscriptions have no active billing, and canceled
53 * is terminal.
54 */
55 onUpdatePaymentMethod?: () => void
56 /**
57 * Called when the user clicks "Manage". Always rendered when provided —
58 * the action is consumer-defined (portal link, modal, resubscribe flow, etc.)
59 * and not restricted by Paddle subscription status.
60 */
61 onManageSubscription?: () => void
62 className?: string
63}
64
65// --- Status badge ---
66
67type SubscriptionStatus = "active" | "canceled" | "past_due" | "paused" | "trialing"
68
69const STATUS_CONFIG: Record<
70 SubscriptionStatus,
71 { label: string; icon: React.ElementType; className: string }
72> = {
73 active: {
74 label: "Active",
75 icon: CheckCircle2,
76// … truncated

What it pulls in

npm packages

  • lucide-react

Other registry items

  • @paddle/paddle-helpers
  • card
  • badge
  • button
  • separator
  • alert
  • skeleton

Files it writes

  • registry/new-york/blocks/subscription-status-card/components/subscription-status-card.tsx
  • registry/new-york/blocks/subscription-status-card/components/paddle-subscription-status-card.tsx
  • registry/new-york/blocks/subscription-status-card/lib/subscription-status-card-utils.ts

Facts

Registry
paddle
Type
registry:component
Access
Free
Files written
3
Theme wiring
ships cssVars
Licence
Apache-2.0
First indexed
2026-08-01
Last confirmed
2 days ago

Go to the source

developer.paddle.com PaddleHQ/paddle-ui on GitHub Raw registry item This item as JSON

More from paddle

All 14 items
Same registry, same kind — the ones you would have found next
ComponentRegistryKindAccessInstallsCommand
Billing interval togglebilling-interval-togglepaddleComponentsFreeno deps
Checkout summarycheckout-summarypaddleComponentsFreeno deps · 3 files
Plan change breakdownplan-change-breakdownpaddleComponentsFree1 dep · 3 files
Plan change previewplan-change-previewpaddleComponentsFree1 dep · 3 files
Pricing cardspricing-cardspaddleComponentsFree1 dep · 2 files
Pricing select cardspricing-select-cardspaddleComponentsFree1 dep · 4 files
Subscription alertsubscription-alertpaddleComponentsFree1 dep · 3 files
Subscription payment cardsubscription-payment-cardpaddleComponentsFree1 dep · 3 files
BlockDex

Built by

Kynth Studio

Index

Components
Registries
Method
Open API

Guides

shadcn component libraries
Best shadcn registries
Free shadcn blocks

Reference

Corpus counts
Crawl health
hello@kynth.studio
Privacy
Terms

BlockDex

BlockDex

Built by

Kynth Studio

Index

Components
Registries
Method
Open API

Guides

shadcn component libraries
Best shadcn registries
Free shadcn blocks

Reference

Corpus counts
Crawl health
hello@kynth.studio
Privacy
Terms

BlockDex

BlockDex

Built by

Kynth Studio

Index

Components
Registries
Method
Open API

Guides

shadcn component libraries
Best shadcn registries
Free shadcn blocks

Reference

Corpus counts
Crawl health
hello@kynth.studio
Privacy
Terms

BlockDex