Skip to content
UI Kit
Accent color

Settings pages for React apps

Settings pages with a section column, cards per topic and a save bar that appears on change.

5 variants
Switch category

Profile, account, billing and team

Settings pages are rarely visited and often confusing, so they need a calm structure. The five pages here put sections in a column on the left, group fields in cards per topic and show a save bar only when something changed.

Profile edits name, picture and public details. Account with danger zone handles email, password and deleting the account, with a confirmation that asks for the name. Notifications switches channels and topics with real switches. Billing shows the plan, the payment method and invoices, Team members invites people and sets their role.

Save settings where it is clear, either right away with a switch or with the save bar for forms, but never mixed in one card. Put destructive actions last and in their own card. Every field keeps its label visible, placeholders disappear while people type.

Settings

Profile

Picture upload with preview, username with prefix, a counted bio and a save bar.

Account with danger zone

Email, password, language, active sessions and a delete that asks for the name.

Notifications

Switches with role="switch" per channel, a pause for everything and quiet hours.

Billing

Plan with renewal, usage meters that warn early, payment method and invoices.

Team members

Invite by email with a role, change roles inline, see open invites and seats.

Details

What Settings brings along, read from the registry and the source.

Area
App
Variants
5
Version
1.0.2 · since 1.0.0
File
components/ui/settings.tsx
Brings along
utilskitbuttonicon
npm packages
None
Languages
English and German, 97 texts of its own
Studio
Adjust in code
In collections
App dashboard

Props

The SettingsProps interface from components/ui/settings.tsx, with the comments from the code.

  • variantoptional
    SettingsVariant

    profileaccountnotificationsbillingteam-members

  • titleoptional
    string
  • descriptionoptional
    string
  • navrequired
    SettingsNavItem[]

    Sections of the settings. Desktop: a column on the left. Tablets and phones: tabs on top.

  • profileoptional
    { name: string; username: string; email: string; bio?: string; website?: string; urlPrefix: string; avatar?: React.ReactNode }

    profile

  • accountoptional
    { email: string; workspace: string; language: string; languages: { value: string; label: string }[]; sessions: { device: string; place: string; active: string; current?: boolean; icon?: IconName }[]; }

    account

  • notificationsoptional
    { title: string; description?: string; items: NotificationItem[] }[]

    notifications

  • billingoptional
    { plan: { name: string; price: number; period: string; renews: string; seats: string }; usage: { label: string; used: number; limit: number; unit?: string }[]; card: { label: string; expires: string }; invoices: { id: string; date: string; amount: number; status: string }[]; currency?: string; }

    billing

  • teamoptional
    { members: TeamMember[]; invites: { email: string; role: string; sent: string }[]; roles: string[]; seats: { used: number; total: number } }

    team-members

  • onSaveoptional
    (section: SettingsVariant, values: Record<string, unknown>) => void | Promise<void>

    Called with the changed values. Without it the block simulates saving.

Built-in texts

Settings writes these texts itself. The language follows the KitProvider, the labels prop replaces single ones.

Show all 97 texts
sectionsEnglish Settings sectionsGerman Bereiche der Einstellungen
saveEnglish Save changesGerman Änderungen speichern
savingEnglish Saving…German Wird gespeichert…
savedEnglish SavedGerman Gespeichert
discardEnglish DiscardGerman Verwerfen
unsavedEnglish You have unsaved changesGerman Du hast ungespeicherte Änderungen
avatarEnglish Profile pictureGerman Profilbild
avatarHintEnglish Square, at least 400 px. JPG, PNG or WebP.German Quadratisch, mindestens 400 px. JPG, PNG oder WebP.
uploadEnglish Upload newGerman Neues hochladen
removeEnglish RemoveGerman Entfernen
nameEnglish NameGerman Name
nameHintEnglish Shown on your profile and in mentions.German Steht in deinem Profil und bei Erwähnungen.
usernameEnglish UsernameGerman Benutzername
bioEnglish About youGerman Über dich
bioHintEnglish {n} characters leftGerman Noch {n} Zeichen
websiteEnglish WebsiteGerman Website
emailEnglish EmailGerman E-Mail
publicProfileEnglish Public profileGerman Öffentliches Profil
publicProfileTextEnglish This is how other people see you in comments and on shared pages.German So sehen dich andere in Kommentaren und auf geteilten Seiten.
emailSectionEnglish Email addressGerman E-Mail-Adresse
emailTextEnglish Used for sign-in and important messages. We confirm a new address before it is used.German Für die Anmeldung und wichtige Nachrichten. Eine neue Adresse bestätigen wir, bevor sie gilt.
changeEnglish ChangeGerman Ändern
passwordEnglish PasswordGerman Passwort
passwordTextEnglish Last changed 4 months ago.German Zuletzt vor 4 Monaten geändert.
currentEnglish Current passwordGerman Aktuelles Passwort
newPasswordEnglish New passwordGerman Neues Passwort
updatePasswordEnglish Update passwordGerman Passwort ändern
languageEnglish LanguageGerman Sprache
languageTextEnglish For the interface and emails.German Für Oberfläche und E-Mails.
sessionsEnglish Active sessionsGerman Aktive Sitzungen
sessionsTextEnglish Devices that are signed in right now.German Geräte, die gerade angemeldet sind.
thisDeviceEnglish This deviceGerman Dieses Gerät
signOutEnglish Sign outGerman Abmelden
signOutAllEnglish Sign out everywhere elseGerman Überall sonst abmelden
signedOutEnglish Signed outGerman Abgemeldet
dangerEnglish Danger zoneGerman Gefahrenzone
dangerTextEnglish These actions cannot be undone. Please be sure.German Diese Schritte lassen sich nicht rückgängig machen. Bitte sei dir sicher.
exportEnglish Export all dataGerman Alle Daten exportieren
exportTextEnglish A ZIP with every project, file and comment.German Ein ZIP mit allen Projekten, Dateien und Kommentaren.
exportBtnEnglish Request exportGerman Export anfordern
deleteWsEnglish Delete workspaceGerman Arbeitsbereich löschen
deleteTextEnglish Removes {name} with all projects for everyone.German Entfernt {name} mit allen Projekten für alle.
deleteConfirmEnglish Type {name} to confirmGerman Zur Bestätigung {name} eingeben
deleteFinalEnglish Delete foreverGerman Endgültig löschen
cancelEnglish CancelGerman Abbrechen
deleteTitleEnglish Delete {name}?German {name} löschen?
deleteBodyEnglish All projects, files and members are removed after 7 days. You can restore the workspace until then.German Alle Projekte, Dateien und Mitglieder werden nach 7 Tagen entfernt. Bis dahin kannst du den Arbeitsbereich wiederherstellen.
deletedEnglish Deletion scheduled. You can undo it for 7 days.German Löschung geplant. Du kannst sie 7 Tage lang rückgängig machen.
cancelTitleEnglish Cancel your subscription?German Abo wirklich kündigen?
cancelBodyEnglish {plan} stays active until {date}. After that the workspace moves to the free plan, nothing is deleted.German {plan} bleibt bis {date} aktiv. Danach wechselt der Arbeitsbereich ins kostenlose Paket, gelöscht wird nichts.
keepPlanEnglish Keep planGerman Paket behalten
cancelledEnglish Cancelled. {plan} stays active until {date}.German Gekündigt. {plan} bleibt bis {date} aktiv.
undoCancelEnglish Resume subscriptionGerman Abo fortsetzen
channelEnglish ChannelGerman Kanal
emailColEnglish EmailGerman E-Mail
pushColEnglish PushGerman Push
deliveryEnglish DeliveryGerman Zustellung
deliveryTextEnglish When and how we reach you.German Wann und wie wir dich erreichen.
pauseAllEnglish Pause all notificationsGerman Alle Benachrichtigungen pausieren
pauseTextEnglish Mute everything for a while, nothing gets lost.German Für eine Weile alles stumm, nichts geht verloren.
pauseForEnglish Pause forGerman Pausieren für
quietEnglish Quiet hoursGerman Ruhezeiten
quietTextEnglish No push messages between 20:00 and 8:00 on weekdays.German Werktags zwischen 20:00 und 8:00 keine Push-Nachrichten.
planEnglish Current planGerman Aktuelles Paket
perPeriodEnglish per {period}German pro {period}
renewsEnglish Renews on {date}German Verlängert sich am {date}
changePlanEnglish Change planGerman Paket wechseln
cancelPlanEnglish Cancel subscriptionGerman Abo kündigen
usageEnglish Usage this monthGerman Verbrauch diesen Monat
usageTextEnglish Resets on the first of each month.German Setzt sich am Monatsersten zurück.
paymentEnglish Payment methodGerman Zahlungsmethode
paymentTextEnglish Charged automatically on the renewal date.German Wird am Verlängerungstag automatisch belastet.
expiresEnglish Expires {date}German Gültig bis {date}
updateEnglish UpdateGerman Aktualisieren
invoicesEnglish InvoicesGerman Rechnungen
invoicesTextEnglish Download any invoice as PDF.German Jede Rechnung als PDF herunterladen.
downloadEnglish Download invoice from {date}German Rechnung vom {date} herunterladen
inviteEnglish Invite peopleGerman Personen einladen
inviteTextEnglish They get an email with a link that is valid for 7 days.German Sie bekommen eine E-Mail mit einem Link, der 7 Tage gilt.
inviteEmailEnglish Email addressGerman E-Mail-Adresse
roleEnglish RoleGerman Rolle
sendEnglish Send inviteGerman Einladung senden
sentEnglish Invite sent to {email}German Einladung an {email} gesendet
invalidEmailEnglish Please enter a valid email address.German Bitte gib eine gültige E-Mail-Adresse ein.
alreadyEnglish This person is already in the team.German Diese Person ist schon im Team.
membersEnglish MembersGerman Mitglieder
seatsEnglish {used} of {total} seats usedGerman {used} von {total} Plätzen belegt
seatsLabelEnglish SeatsGerman Plätze
youEnglish YouGerman Du
ownerEnglish OwnerGerman Inhaber
removeMemberEnglish Remove {name}German {name} entfernen
roleOfEnglish Role of {name}German Rolle von {name}
pendingEnglish Pending invitesGerman Offene Einladungen
sentAgoEnglish Sent {when}German Gesendet {when}
resendEnglish ResendGerman Erneut senden
justNowEnglish just nowGerman gerade eben
revokeEnglish Revoke invite for {email}German Einladung für {email} zurückziehen

Accessibility

Read from the source of the component.

  • Built on the native dialog element. The browser keeps focus inside and closes it with Escape.
  • Sets aria-checked, aria-current, aria-describedby, aria-disabled, aria-invalid, aria-label, aria-labelledby, aria-live, aria-valuemax, aria-valuemin and aria-valuenow, so screen readers announce purpose and state.
  • Uses the roles meter, region, status and switch.
  • Announces changes through a live region without moving focus.
  • Every field has a label, visible or for screen readers.
  • Adds text for screen readers where icons and graphics stand alone.
  • The server renders the starting state in full, JavaScript only adds the interaction.

Motion

  • Brings animations of its own, calmly timed and without wobble.
  • With reduced motion (prefers-reduced-motion) it stays still. 4 places in the code switch motion off then.

Frequent questions

How do I install Settings?

With aiw add @ai-website/settings. The command puts components/ui/settings.tsx into your project, the code is yours from then on. It brings along button and icon. It needs no further npm packages.

Which variants does Settings have?

5 variants, Profile, Account with danger zone, Notifications, Billing and Team members. You pick one with the variant prop, for example variant="account".

Can I translate the texts of Settings?

Yes. Settings carries 97 texts of its own in English and German, such as “Settings sections”, “Save changes” and “Saving…”. The language follows the KitProvider, single texts change through the labels prop.

Can an AI assistant build with Settings?

Yes. Through the MCP server of the aiw CLI, Claude, Cursor, GitHub Copilot, Windsurf, Codex and Gemini find Settings with aiw_components and install it with aiw_add @ai-website/settings. Name the variant in your prompt, for example variant="profile", and the assistant writes your content straight into the props.

Often searched

Jump to

Copied to the clipboard