Skip to content
Back to skills

Settings Pages

ASecurity

Use when building settings — account, profile, team/members, workspace, and a danger zone. Covers sectioned layouts, sidebar/tab navigation, autosave vs explicit save, and safe destructive actions.

  • 80 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
design

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add alexj11324/Mikka --skill settings-pages --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Settings Pages?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Settings Pages
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/alexj11324-settings-pages/badge)](https://www.skillsdirectory.com/skills/alexj11324-settings-pages)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: settings-pages
description: Use when building settings — account, profile, team/members, workspace, and a danger zone. Covers sectioned layouts, sidebar/tab navigation, autosave vs explicit save, and safe destructive actions.
---

# Settings Pages

## Overview

Settings sprawl fast. Tame them with a consistent structure: a section navigation (sidebar on desktop, tabs/select on mobile), grouped cards per topic, and a clear save model. Isolate irreversible actions in a visually distinct **danger zone** so users never delete by reflex.

## When to use

- Building account/profile/team/workspace/billing settings.
- A settings page has become one giant unstructured form.
- Adding destructive actions (delete account, remove member).

## Structure: section nav + content

```tsx
<div className="mx-auto grid max-w-5xl gap-8 md:grid-cols-[200px_1fr]">
  <nav aria-label="Settings" className="flex gap-1 md:flex-col">
    {sections.map((s) => (
      <a key={s.href} href={s.href} aria-current={s.active ? "page" : undefined}
        className={cn("rounded-md px-3 py-2 text-sm", s.active ? "bg-muted font-medium" : "text-muted-foreground hover:bg-muted/50")}>
        {s.label}
      </a>
    ))}
  </nav>

  <div className="space-y-6">
    <SettingsSection title="Profile" description="How you appear across the workspace.">
      <ProfileForm />
    </SettingsSection>
    <SettingsSection title="Notifications" description="Choose what we email you about.">
      <NotificationPrefs />
    </SettingsSection>
  </div>
</div>
```

A reusable section card keeps spacing/typography consistent:

```tsx
function SettingsSection({ title, description, children }: SettingsSectionProps) {
  return (
    <Card>
      <CardHeader><CardTitle>{title}</CardTitle><CardDescription>{description}</CardDescription></CardHeader>
      <CardContent>{children}</CardContent>
    </Card>
  );
}
```

## Save model: pick one and be consistent

- **Explicit save** (form + Save button) for grouped changes — show a sticky "You have unsaved changes" bar when `isDirty`, disable Save while submitting, toast on success.
- **Autosave** for single toggles/switches — optimistic update, revert + toast on failure. Don't mix a "Save" button with auto-saving toggles on the same screen.

## Team / members table

List members with role selects and a remove action (use `data-tables` patterns). Guard the last owner: you can't remove or demote the only admin.

## Danger zone

```tsx
<Card className="border-destructive/50">
  <CardHeader>
    <CardTitle className="text-destructive">Danger zone</CardTitle>
    <CardDescription>Irreversible and destructive actions.</CardDescription>
  </CardHeader>
  <CardContent className="flex items-center justify-between">
    <div>
      <p className="font-medium">Delete workspace</p>
      <p className="text-sm text-muted-foreground">Permanently removes all data.</p>
    </div>
    <DeleteWorkspaceDialog /> {/* AlertDialog + type-to-confirm */}
  </CardContent>
</Card>
```

Require typing the workspace name to enable the delete button (see `modals-and-dialogs`).

## Pitfalls

- **One giant form** for everything — group into sections/cards.
- **Mixing autosave toggles with an explicit Save button** — confusing; pick one model per screen.
- **No unsaved-changes warning** — users navigate away and lose edits.
- **Destructive actions next to normal ones** — isolate in a danger zone with confirm.
- **Letting the last admin be removed** — lock yourself out of the org.
- **No mobile treatment** for the section nav — collapse to tabs or a select.

## Hand-off

Configuration screens built from `forms-and-validation`, `data-tables` (members), and `modals-and-dialogs` (destructive confirms); link to `billing-and-pricing` for plan management.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.