feat(table): all-row hover, opt-in zebra striping, always-visible sort affordance #270

Merged
vas2000-work merged 1 commit from feat/mapps-263-table-polish into main 2026-06-17 23:55:47 +02:00
Owner

Polish the shared table (src/components/table.rs) so dense list pages are easier to scan and sortable columns are discoverable, on desktop and touch alike, with every list page benefiting through the shared component.

TableRow now applies a subtle hover:bg-surface-2 to all rows (not just clickable ones) plus transition-colors; clickable rows still add the pointer cursor. Table gains an opt-in striped prop that tints odd body rows via a [&_tbody_tr:nth-child(odd)]:bg-surface-2 child selector, cascading to rows regardless of how the caller composes TableBody. TableHeader replaces the never-firing opacity-0 group-hover sort hint (the th carried no group class, so it was invisible even on hover and always on touch) with a faint always-visible opacity-40 up/down chevron; the active asc/desc arrows still render at full strength.

Striping is enabled on the dense list tables: tickets, companies, contacts, and knowledge base. Tokens only (bg-surface-2), so the theme-token guard stays satisfied for the changed lines.

#MAPPS-263

Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com

Polish the shared table (src/components/table.rs) so dense list pages are easier to scan and sortable columns are discoverable, on desktop and touch alike, with every list page benefiting through the shared component. TableRow now applies a subtle `hover:bg-surface-2` to all rows (not just clickable ones) plus `transition-colors`; clickable rows still add the pointer cursor. Table gains an opt-in `striped` prop that tints odd body rows via a `[&_tbody_tr:nth-child(odd)]:bg-surface-2` child selector, cascading to rows regardless of how the caller composes TableBody. TableHeader replaces the never-firing `opacity-0 group-hover` sort hint (the `th` carried no `group` class, so it was invisible even on hover and always on touch) with a faint always-visible `opacity-40` up/down chevron; the active asc/desc arrows still render at full strength. Striping is enabled on the dense list tables: tickets, companies, contacts, and knowledge base. Tokens only (bg-surface-2), so the theme-token guard stays satisfied for the changed lines. #MAPPS-263 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(table): all-row hover, opt-in zebra striping, always-visible sort affordance
All checks were successful
Check / clippy + fmt + tests (pull_request) Successful in 1m52s
Create release / Create release from merged PR (pull_request) Has been skipped
470483f727
Polish the shared table (src/components/table.rs) so dense list pages are easier to scan and sortable columns are discoverable, on desktop and touch alike, with every list page benefiting through the shared component.

TableRow now applies a subtle `hover:bg-surface-2` to all rows (not just clickable ones) plus `transition-colors`; clickable rows still add the pointer cursor. Table gains an opt-in `striped` prop that tints odd body rows via a `[&_tbody_tr:nth-child(odd)]:bg-surface-2` child selector, cascading to rows regardless of how the caller composes TableBody. TableHeader replaces the never-firing `opacity-0 group-hover` sort hint (the `th` carried no `group` class, so it was invisible even on hover and always on touch) with a faint always-visible `opacity-40` up/down chevron; the active asc/desc arrows still render at full strength.

Striping is enabled on the dense list tables: tickets, companies, contacts, and knowledge base. Tokens only (bg-surface-2), so the theme-token guard stays satisfied for the changed lines.

#MAPPS-263

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-apps!270
No description provided.