No description
The shared list-rendering component every resource will use. Reads URL state (?filter, ?q, ?page) and derives: - active filter (with isDefault fallback) - active column set (columnsByFilter[filterKey] override → columns) - filtered + searched + sorted + paginated row set Rows are full anchor elements pointing at ?edit=<id> so the table is fully keyboard-navigable and works without JS. The "+ New" button is suppressed when resource.form is null (activity, join_requests). - ResourceListView.astro: page header (eyebrow + serif h1 + optional description + new-item button), toolbar (search form + filter chips), grid table with --bs-grid-cols set from column widths, pagination, mobile card collapse. - ListCell.astro: discriminated render for text / pill / relative-date / number / tag-list columns. - admin.css: list-view styles plus the full pill palette (decision, update, note, bts, published, draft, archived, open, closed, pending, accepted, expired, approved, declined, shipping, in-beta, exploring, considering, active, departed, pilot, cab, fenja). - preview.astro: inline sample dispatches resource so the list view renders against real DB rows. Step 8 moves this to its production config; this inline copy disappears with the preview route in step 11. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| content | ||
| design | ||
| migrations | ||
| public | ||
| scripts | ||
| src | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| astro.config.mjs | ||
| CLAUDE.md | ||
| DECISIONS.md | ||
| HANDOVER.md | ||
| KNOWN_ISSUES.md | ||
| package.json | ||
| pnpm-lock.yaml | ||
| SPEC.md | ||
| todo.md | ||
| tsconfig.json | ||
| vitest.config.ts | ||