SP-684 · Course management: ledger table Local walkthrough PASS

Instructor course management page, card grid replaced by a dense table. Search adds a small backend filter; everything else is frontend only. Captured 2026-09-05 on a fresh seeded local stack (branch SP-684/course-management-table, commits dd6a8f94615232). Design reference: design 1 – Ledger table. Ticket: SP-684.

Summary

CheckResult
Table renders one row per course with columns Course, Status, Enrollment, Students, Lessons, Rating, Updated, ActionsPass
Cell text lines up with its column header (measured left edges)Pass 0px delta on all 8 columns; the page layout centers text, so the table sets text-start on its container
Status filter tabs (All 6 · Published 4 · Draft 1 · Archived 1) and result counterPass
Client-side sort on Course, Students, Lessons, Rating, Updated; direction arrow always to the right of the labelPass
Row actions kebab: Manage, Settings, Archive, Open Enrollment, Duplicate (state-changing items not clicked)Pass
Mobile (390px) falls back to a stacked list, no table overflowPass
Vietnamese locale: all headers translated, no raw i18n keysPass
Browser console errors / warnings during the walkthroughNone
Course title and meta line were centered in the cell (inherited text-align)Found → fixed in commits dd6a8f94615232, screenshots below are after the fix
Column widths: metric columns were ~130-143px each for 1-3 character values, spreading the row across the full 1440pxFound → fixed Students/Lessons/Rating pinned to 96px, Updated 128px, Course takes the slack (638px), table fills the container width. Every column is left-aligned, header and cells, and sort icons always trail the label. Screenshots are after the fix.
Search by course name or slug, case-insensitive, debounced, combines with the status tabsPass
Backend changeScoped new name_or_slug filter + test; the broad search filter is untouched

Desktop (1440×900)

Published tab (default)4 rows · enrollment chip Open/Closed · rating shows “–” when no reviews
All tab6 rows · status dot colors: green Published, yellow Draft, red Archived · Enrollment shows “–” for non-published
Draft tab
Archived tab

Sorting, row menu, hover

Sorted by Students, descendingarrow on the active column, others show the neutral up/down icon
Row actions menusame actions and confirm dialogs as the old card, shared via one hook
Row hover

Mobile (390×844)

All tab, stacked list
Actions menu on mobile

Vietnamese locale

Headers: Khoá học · Trạng thái · Đăng ký · Học viên · Bài học · Đánh giá · Cập nhật · Thao tác

Test setup

Notes and follow-ups