Staaarter

Billing Member Usage Breakdown

A list of team members with their storage or resource usage, a small progress bar against their allotted limit, and the cost that usage generated. Built for enterprise billing portals and team admin screens where an account owner needs to see at a glance who's using the most and what it's costing.

By Staaarter Team
Billing
Updated May 24, 2026
Docs
Live preview

Docs

Installation

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

npx shadcn add https://staaarter.com/r/billing-member-usage-breakdown.json

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

Usage

The file also exports billing73Demo, 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 { Billing73, billing73Demo } from "@/components/blocks/billing/billing73";

export default function Page() {
  return <Billing73 {...billing73Demo} />;
}

Props

PropTypeDefaultDescription
titlestring"Member usage"Heading shown above the member list.
descriptionstringnoneOptional one-line note under the heading.
unitstring"GB"Unit label shown after each member's usage numbers.
membersMemberUsageRow[]noneRows rendered in the order given, one per team member.
totalCoststringnoneOptional total shown in the header, for example the combined cost of all members this cycle.
classNamestringnoneExtra classes for the outer container.

Types

interface MemberUsageRow {
  id: string;
  name: string;
  email: string;
  avatarSrc?: string;
  role?: string;
  usage: number;
  limit: number;
  cost: string;
}

Behavior notes

  • Each member's usage bar fills to usage / limit as a percentage, capped at 100% so it never overflows the track even if usage exceeds the limit.
  • A member whose usage exceeds their limit gets a destructive-colored bar instead of the default primary color, there's no separate alert or badge for it.
  • Avatars fall back to two-letter initials, derived from the first letter of up to the first two words in the member's name, whenever avatarSrc is missing or fails to load.
  • Email and role are combined into a single truncating line so long addresses don't wrap and break row height.
  • The optional totalCost in the header is a plain string you compute and pass in, the component doesn't sum the individual member costs itself.

Frequently asked questions