← All layouts · Admin
User management
Members, roles and invitations with a permission matrix.
The permission matrix is a table rather than a stack of toggles, because the question is always comparative: what can this role do that the one below it cannot.
- .ms-sidenav
- .ms-badge
- .ms-shell
- .ms-avatar-sm
- .ms-card
- .ms-table
Live
The layout as it renders, in a frame at its own width. Resize the window to watch it respond — the frame is a real viewport.
How to build it
This is the layout's template, read from disk — the same file the frame
above renders, so it cannot drift out of date. Copy it into your own page
and replace the content; every class in it ships in
mcgowan.css.
<div class="ms-shell">
<aside class="ms-shell__sidebar">
<div class="ms-shell__brand">Northbound</div>
<ul class="ms-sidenav">
<li class="ms-sidenav__section">Manage</li>
<li class="ms-sidenav__item"><a class="ms-sidenav__link" href="#"><span class="material-icons">dashboard</span>Overview</a></li>
<li class="ms-sidenav__item"><a class="ms-sidenav__link" href="#"><span class="material-icons">group</span>Customers</a></li>
<li class="ms-sidenav__item"><a class="ms-sidenav__link" href="#"><span class="material-icons">inventory_2</span>Products</a></li>
<li class="ms-sidenav__item"><a class="ms-sidenav__link" href="#"><span class="material-icons">receipt_long</span>Orders</a></li>
<li class="ms-sidenav__item"><a class="ms-sidenav__link" href="#"><span class="material-icons">insights</span>Reports</a></li>
<li class="ms-sidenav__item"><a class="ms-sidenav__link ms-sidenav__link--active" href="#"><span class="material-icons">settings</span>Settings</a></li>
</ul>
</aside>
<div class="ms-shell__main">
<div class="ms-shell__bar">
<strong>Team</strong>
<span class="ms-toolbar__spacer"></span>
<input class="ms-input" placeholder="Search" style="max-width:220px">
<span class="ms-avatar-sm">AM</span>
</div>
<div class="ms-shell__body">
<nav class="ms-breadcrumb"><span class="ms-breadcrumb-item">Home</span>
<span class="ms-breadcrumb-item">Team</span></nav>
<div class="ms-toolbar">
<h1 style="margin:0">Team</h1>
<span class="ms-badge">12 members</span>
<span class="ms-toolbar__spacer"></span>
<button class="ms-btn ms-btn--primary">Invite people</button>
</div>
<div class="ms-card ms-card--flush u-mb-4">
<table class="ms-table ms-table--striped">
<thead><tr><th>Person</th><th>Role</th><th>Last active</th><th>Status</th><th></th></tr></thead>
<tbody>
<tr><td><span class="ms-avatar-sm">SM</span> Sam Mercer</td>
<td><span class="ms-badge ms-badge--primary">Owner</span></td>
<td>Now</td><td><span class="ms-badge ms-badge--success">Active</span></td>
<td class="u-text-right"><a class="u-link" href="#">Manage</a></td></tr>
<tr><td><span class="ms-avatar-sm">ER</span> Ellie Roberts</td>
<td><span class="ms-badge">Admin</span></td>
<td>2 hours ago</td><td><span class="ms-badge ms-badge--success">Active</span></td>
<td class="u-text-right"><a class="u-link" href="#">Manage</a></td></tr>
<tr><td><span class="ms-avatar-sm">JD</span> James Doyle</td>
<td><span class="ms-badge">Editor</span></td>
<td>Yesterday</td><td><span class="ms-badge ms-badge--warning">Invited</span></td>
<td class="u-text-right"><a class="u-link" href="#">Resend</a></td></tr>
</tbody>
</table>
</div>
<div class="ms-card ms-card--flush">
<div class="u-p-4"><h2 style="margin:0">Permissions</h2>
<p class="ms-stat__meta">A matrix rather than a stack of toggles: the question
is always what this role can do that the one below it cannot.</p></div>
<table class="ms-table ms-table--compact">
<thead><tr><th>Capability</th><th>Owner</th><th>Admin</th><th>Editor</th><th>Viewer</th></tr></thead>
<tbody>
<tr><td>View reports</td><td>Yes</td><td>Yes</td><td>Yes</td><td>Yes</td></tr>
<tr><td>Edit products</td><td>Yes</td><td>Yes</td><td>Yes</td><td>—</td></tr>
<tr><td>Refund orders</td><td>Yes</td><td>Yes</td><td>—</td><td>—</td></tr>
<tr><td>Manage billing</td><td>Yes</td><td>—</td><td>—</td><td>—</td></tr>
<tr><td>Delete organisation</td><td>Yes</td><td>—</td><td>—</td><td>—</td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>