Profile and settings
Two screens with one shape: a form with a Save button. Not a list, and not a dashboard.
Where they are
/profileis the person: avatar, name, contact details, the sections that describe them.- Settings opens from the gear in the header rather than a route, because it is something you adjust while working rather than a place you navigate to. Appearance, theme, layout and direction all live there.
Settings is page type 4
One bordered card of sections with a fixed Save footer. Not a data table, and not a dashboard. The footer stays visible while the content scrolls, so the Save button is never something a reader has to find.
the shape
<div className="flex h-full flex-col">
<PageChrome title="Settings" />
<div className={PAGE_SCROLL}>
<Card>
<Section title="Profile">…</Section>
<Section title="Notifications">…</Section>
</Card>
</div>
<footer className="border-t border-border p-4">
<FormActions /> {/* fixed, outside the scroll */}
</footer>
</div>⚠️ A settings screen that saves nothing is a trap
The Save button in the demo updates component state. Wire it to your API before shipping, and until you do, do not leave it looking enabled: a control that looks live and discards the press is worse than one that is absent.
What you connect
- The account. Name, email and avatar are demo values.
- Persistence. Theme and layout choices survive a reload because they are stored locally; nothing else is stored anywhere.
- Password and security. The fields are inputs. There is no auth system behind them.