185
Workspace, members, API keys and billing in one calm settings screen: grouped rows, an unsaved-changes bar that springs up, invites and role changes, keys shown once, and usage bars that fill when you open Billing.
akasettings·billing·members
Run this in any project set up for the shadcn CLI. It copies the Settings & Plans source into your components folder, so the code is yours to change.
npx shadcn@latest add https://devl.dev/r/settings-and-plans.jsonImport it and render it. Every prop has a typed default, so it works straight away, and you pass your own data when you’re ready.
import { SettingsAndPlans } from "@/components/settings-and-plans";
export default function Page() {
return <SettingsAndPlans />;
}A free React screen in the Product collection, written in TypeScript with Tailwind CSS on coss ui. MIT licensed.
Read from the Settings & Plans source. Everything is optional unless it says required.
| Prop | Type | Default |
|---|---|---|
| className | string | — |
| defaultTab | SettingsTab | "workspace" |
| workspace | { name: string; slug: string; region: string } | { name: "Ridgeline", slug: "ridgeline", region: "eu-central" } |
| members | SettingsMember[] | defaultMembers |
| apiKeys | SettingsApiKey[] | defaultKeys |
| plans | SettingsPlan[] | defaultPlans |
| currentPlan | string | "team" |
| renewsOn | string | "Nov 14" |
| usage | SettingsUsage[] | defaultUsage |
| invoices | SettingsInvoice[] | defaultInvoices |
| card | SettingsCard | { brand: "Visa", last4: "4417", expires: "09/28", holder: "Ada Lindqvist", email: "billing@ridgeline.app" } |
| cycleDaysLeft | number | 18 |
| overagePer1k | number | 4 |
| domain | string | "ridgeline.app" |
| onNavigate | (section: SettingsSectionId) => void | — |