| name | jeff-page-shell |
| description | Jeff's page-shell conventions for route pages using PageHeader, table content containers, and TableFooter. Use for new or refactored list/detail route pages. |
Jeff's Page Shell
Use consistent page composition for predictable UX and maintenance.
Apply when
- Building or refactoring route page layout.
- Implementing list/table pages.
Standard layout
<>
<PageHeader ... />
<div className="flex-1 overflow-auto bg-card">...</div>
<TableFooter ... />
</>
Rules
- Use shared
<PageHeader> and <TableFooter> components.
- Prefer one scroll container (
flex-1 overflow-auto) for both axes.
- Avoid nested
overflow-auto wrappers around tables.
- Keep loading/empty/error states explicit and consistent.
- When using
keepPreviousData, use subtle isFetching UI transitions.
Data table expectations
- Always handle loading, error, and empty states.
- Keep horizontal scroll behavior stable (
min-w-max table behavior where needed).
- Use shared page-size constants from
src/lib/constants.
- Keep filter UI colocated in
-{feature}-filters.tsx files.
Validation checklist