fix(ui): restore sticky table headers, dashboard loading flash, ticket-type over-fetch
- packages/ui/src/tokens.css: bound .wf-table-wrap to a viewport-derived max-height and matching overflow-y so it's a real scroll container again. overflow-x: auto alone left overflow-y at its computed "auto" (per the CSS overflow spec, a visible/non-visible axis pairing promotes visible to auto) with no height bound, so its scrollTop was permanently 0 and table.wf th's `position: sticky` never had anything to stick against — the header just scrolled away with the page on every table screen. Chose the bounded-wrapper fix (over deleting the dead sticky rule) since it keeps the header pinned as advertised; short tables render unchanged, long ones scroll inside the box exactly like the existing .dash-list pattern. Also moved the .wf-table-wrap rule out of apps/hq-web/src/app.css into tokens.css next to the other table.wf rules, since it's part of the @sims/ui component. - apps/hq-web/src/pages/Dashboard.tsx: the "Onboarding stalled" card treated "still loading" the same as "genuinely empty", flashing "Nothing stalled." before the fetch resolved. Card now takes a loading prop and shows the usual skeleton placeholder while pending; the positive empty copy and error state are unchanged. - apps/hq-web/src/pages/ClientDetail.tsx: getTicketTypes was fetched unconditionally on every Client 360 load for the tickets tab's Type column. Gated it behind the tickets tab being active (moved the tab computation earlier so it's available to gate the loader); NewTicketDialog's own getTicketTypes call for the new-ticket pre-fill is untouched. - STATUS.md: prose under the verification table still said "The 416 figure..." while the table itself says 528 — updated the prose to match. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>main
parent
b1e1420b4c
commit
4de152a7f4
Loading…
Reference in New Issue