Loading...
Loading...
> A progress bar component for displaying resource usage. Shows current vs limit with color-coded warnings when approaching limits.
1import { UsageMeter } from "@/components/ui/billing-summary-card"
1<UsageMeter label="API Calls" used={6500} limit={10000} />2<UsageMeter label="Storage" used={4.2} limit={5} unit="GB" />3<UsageMeter label="Team Members" used={8} limit={10} />
1<UsageMeter label="Storage" used={3.8} limit={5} unit="GB" />
1<UsageMeter label="API Calls" used={9500} limit={10000} />
1<UsageMeter label="Small" used={50} limit={100} size="sm" />2<UsageMeter label="Medium" used={50} limit={100} size="md" />3<UsageMeter label="Large" used={50} limit={100} size="lg" />
1<UsageMeter2 label="Bandwidth"3 used={450}4 limit={1000}5 unit="MB"6 showPercentage={false}7/>
| Prop | Type | Default | Description |
|---|---|---|---|
| label* | string | - | Meter label text. |
| used* | number | - | Current usage value. |
| limit* | number | - | Maximum limit value. |
| unit | string | - | Unit label (e.g., 'GB', 'MB'). |
| showPercentage | boolean | true | Show percentage in display. |
| size | "sm" | "md" | "lg" | "md" | Progress bar size. |
Show multiple resource usage meters in a billing summary. Client-side only, pass data as props.
1import { UsageMeter } from '@/components/ui/billing-summary-card';23export function BillingCard({ usage }: { usage: UsageData }) {4 return (5 <div className="space-y-4">6 <h3>Resource Usage</h3>78 {/* API calls meter */}9 <UsageMeter10 label="API Calls"11 used={usage.apiCalls}12 limit={10000}13 showPercentage={true}14 />1516 {/* Storage meter with unit */}17 <UsageMeter18 label="Storage"19 used={usage.storage}20 limit={5}21 unit="GB"22 size="md"23 />2425 {/* Team members (no percentage) */}26 <UsageMeter27 label="Team Members"28 used={usage.teamMembers}29 limit={10}30 showPercentage={false}31 />32 </div>33 );34}
Automatically changes color at 75% and 90% thresholds:
1// < 75%: Primary (blue/brand color)2<UsageMeter label="Normal" used={500} limit={1000} />34// 75-89%: Warning (yellow/amber)5<UsageMeter label="High" used={800} limit={1000} />67// ≥ 90%: Destructive (red)8<UsageMeter label="Critical" used={950} limit={1000} />
Fetch usage data from your API and display with meters:
1'use client';23import { useEffect, useState } from 'react';4import { UsageMeter } from '@/components/ui/billing-summary-card';56export function UsageDashboard() {7 const [usage, setUsage] = useState(null);89 useEffect(() => {10 fetch('/api/usage').then(r => r.json()).then(setUsage);11 }, []);1213 if (!usage) return <div>Loading...</div>;1415 return (16 <div className="space-y-4">17 <UsageMeter18 label="API Calls"19 used={usage.apiCalls}20 limit={usage.apiLimit}21 />22 <UsageMeter23 label="Storage"24 used={usage.storageGB}25 limit={usage.storageLimit}26 unit="GB"27 />28 </div>29 );30}