usage-meter-01
dashboardblocks/usage-meter-01FreeComponent
dashboardblocks publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by dashboardblocks on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://dashboardblocks.com/r/usage-meter-01.jsonSource
1'use client'23import { AnimatedNumber } from '@/registry/components/dashboardblocks/animated-number'4import { Icon } from '@/registry/components/dashboardblocks/icon'5import { ProgressBar } from '@/registry/components/dashboardblocks/progress-bar'6import {7 UsageMeterLimit,8 UsageMeterStatus,9 UsageMeterValue,10} from '@/registry/components/dashboardblocks/usage-meter'11import { Activity } from 'lucide-react'1213import { Card, CardContent, CardDescription, CardTitle } from '@/components/ui/card'1415interface UsageMeter1Props {16 limit: number17 title: string18 unit: string19 used: number20}2122const exampleProps: UsageMeter1Props = {23 limit: 10000,24 title: 'API Requests',25 unit: 'requests',26 used: 7234,27}2829const UsageMeter1 = (props: UsageMeter1Props) => {30 const { limit, title, unit, used } = props31 const percentage = (used / limit) * 10032 const safePercentage = Number.isFinite(percentage) ? percentage : 033 const normalized = Math.min(100, Math.max(0, safePercentage))34 const fillClassName =35 normalized >= 95 ? 'bg-destructive' : normalized >= 80 ? 'bg-amber-500' : undefined3637 return (38 <Card>39 <CardContent className='space-y-4'>40 <div className='flex items-center justify-between'>41 <div className='flex items-center gap-2'>42 <Icon icon={Activity} variant='secondary' size='sm' />43 <CardTitle className='text-base font-medium'>{title}</CardTitle>44 </div>45 <UsageMeterStatus percentage={percentage} />46 </div>47 <div className='space-y-1'>48 <div className='flex items-baseline justify-between'>49 <UsageMeterValue>50 <AnimatedNumber51 value={used}52 formatter={(value) => value.toLocaleString()}53 />54 </UsageMeterValue>55 <UsageMeterLimit>56 of {limit.toLocaleString()} {unit}57 </UsageMeterLimit>58 </div>59 <ProgressBar percentage={percentage} fillClassName={fillClassName} />60 </div>61 <CardDescription>62 <AnimatedNumber63 value={limit - used}64 formatter={(value) => value.toLocaleString()}65 />{' '}66 {unit} remaining this month67 </CardDescription>68 </CardContent>69 </Card>70 )71}7273export { UsageMeter1, exampleProps as usageMeter1ExampleProps, type UsageMeter1Props }
What it pulls in
Other registry items
Files it writes
More from dashboardblocks
All 36 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Activity Feedactivity-feed | dashboardblocks | Components | Free | 1 dep | |
| activity-feed-01activity-feed-01 | dashboardblocks | Components | Free | 1 dep | |
| activity-feed-02activity-feed-02 | dashboardblocks | Components | Free | 1 dep | |
| activity-feed-03activity-feed-03 | dashboardblocks | Components | Free | 1 dep | |
| activity-feed-04activity-feed-04 | dashboardblocks | Components | Free | 1 dep | |
| activity-feed-05activity-feed-05 | dashboardblocks | Components | Free | 1 dep | |
| Animated Numberanimated-number | dashboardblocks | Components | Free | no deps | |
| Animated Waveanimated-wave | dashboardblocks | Components | Free | no deps |
