feat: admin dashboard redesign + family CRM page #22

Merged
forgejo_admin merged 2 commits from 21-feat-admin-dashboard-redesign-family-crm into main 2026-03-16 22:56:40 +00:00

Summary

Redesign the admin dashboard with clickable pipeline stat cards and create a new family CRM page. Marcus can now tap any stat number to drill into the detail he needs -- registered families, active subscribers, overdue accounts, or team rosters.

Changes

  • admin.html -- Stat cards converted from static divs to clickable <a> tags linking to admin-families.html and admin-teams.html. "Paid Up" renamed to "Active" to match pipeline language. Removed the Overdue Families detail section (moved to CRM page). Fixed bottom nav to Dashboard | Teams | Sign Out (removed Coach View and Player links). Quick Actions now link to real pages. Payment health bar updated to 91% (48/53).
  • admin-families.html (new) -- Family CRM page with filter tabs (All/Leads/Active/Overdue), search bar, sort dropdown (name/status/payment), and 17 placeholder family rows using real roster names (Marcus Jr, Connor, Owence, Hasip brothers, Elson, Gabrielius, Romial) plus overdue families from the old dashboard and 5 new lead entries. Each row shows player name, parent contact (tap-to-call tel: links), email, team assignment, payment status badge, and last payment date. All rows link to player-profile.html. URL param support for deep-linking filters (?filter=overdue).

Review Checklist

  • Stat cards are clickable with hover/active states
  • Overdue Families detail section removed from dashboard
  • Bottom nav is Dashboard | Teams | Sign Out (no "My Player" or "Coach View")
  • Payment health bar retained
  • Teams section and Quick Actions preserved
  • CRM page has filter tabs, search, sort, and family rows
  • Real player names from roster used as placeholder data
  • Phone numbers use tel: links for tap-to-call
  • Uses existing CSS classes from shared/app.css
  • No unrelated changes

Test Plan

  • Open admin.html -- verify 4 stat cards are tappable with hover/active states
  • Tap "Registered" (53) -- navigates to admin-families.html showing all families
  • Tap "Active" (48) -- navigates to admin-families.html (filter=active in production)
  • Tap "Teams" (6) -- navigates to admin-teams.html
  • Tap "Overdue" (4) -- navigates to admin-families.html (filter=overdue in production)
  • Verify Overdue Families section is gone from dashboard
  • Verify bottom nav is Dashboard | Teams | Sign Out on both pages
  • Open admin-families.html -- verify filter tabs toggle correctly
  • Type in search bar -- verify rows filter by player or parent name
  • Change sort dropdown -- verify rows reorder
  • Tap phone numbers -- verify tel: links work on mobile
  • Check at 375px mobile viewport -- verify layout is usable
  • Plan: plan-wkq (traceability)
  • Closes #21
## Summary Redesign the admin dashboard with clickable pipeline stat cards and create a new family CRM page. Marcus can now tap any stat number to drill into the detail he needs -- registered families, active subscribers, overdue accounts, or team rosters. ## Changes - **`admin.html`** -- Stat cards converted from static divs to clickable `<a>` tags linking to admin-families.html and admin-teams.html. "Paid Up" renamed to "Active" to match pipeline language. Removed the Overdue Families detail section (moved to CRM page). Fixed bottom nav to Dashboard | Teams | Sign Out (removed Coach View and Player links). Quick Actions now link to real pages. Payment health bar updated to 91% (48/53). - **`admin-families.html`** (new) -- Family CRM page with filter tabs (All/Leads/Active/Overdue), search bar, sort dropdown (name/status/payment), and 17 placeholder family rows using real roster names (Marcus Jr, Connor, Owence, Hasip brothers, Elson, Gabrielius, Romial) plus overdue families from the old dashboard and 5 new lead entries. Each row shows player name, parent contact (tap-to-call tel: links), email, team assignment, payment status badge, and last payment date. All rows link to player-profile.html. URL param support for deep-linking filters (?filter=overdue). ## Review Checklist - [x] Stat cards are clickable with hover/active states - [x] Overdue Families detail section removed from dashboard - [x] Bottom nav is Dashboard | Teams | Sign Out (no "My Player" or "Coach View") - [x] Payment health bar retained - [x] Teams section and Quick Actions preserved - [x] CRM page has filter tabs, search, sort, and family rows - [x] Real player names from roster used as placeholder data - [x] Phone numbers use tel: links for tap-to-call - [x] Uses existing CSS classes from shared/app.css - [x] No unrelated changes ## Test Plan - Open admin.html -- verify 4 stat cards are tappable with hover/active states - Tap "Registered" (53) -- navigates to admin-families.html showing all families - Tap "Active" (48) -- navigates to admin-families.html (filter=active in production) - Tap "Teams" (6) -- navigates to admin-teams.html - Tap "Overdue" (4) -- navigates to admin-families.html (filter=overdue in production) - Verify Overdue Families section is gone from dashboard - Verify bottom nav is Dashboard | Teams | Sign Out on both pages - Open admin-families.html -- verify filter tabs toggle correctly - Type in search bar -- verify rows filter by player or parent name - Change sort dropdown -- verify rows reorder - Tap phone numbers -- verify tel: links work on mobile - Check at 375px mobile viewport -- verify layout is usable ## Related - Plan: `plan-wkq` (traceability) - Closes #21
Redesign admin.html stat cards as clickable pipeline links and remove
the overdue families detail section. Create admin-families.html as a
filterable CRM page with search, status tabs (All/Leads/Active/Overdue),
sort controls, and 17 placeholder family rows using real roster names.

Closes #21

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tab counts now match actual row data (17 total, 8 active, 5 leads,
4 overdue) instead of hardcoded pipeline numbers. applyFilters() runs
on initial load so the results count is always accurate.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
Owner

Review

Self-review pass completed. One issue found and fixed.

Finding: Tab counts in admin-families.html were hardcoded to full pipeline numbers (All=53, Active=44) but only 17 placeholder rows exist in the HTML. The "Showing 53 families" text would display on load while only 17 rows were visible. Additionally, applyFilters() was not called on initial page load (only on filter/search interaction), so the results count would stay stale.

Fix (def6598): Corrected tab counts to match actual row data (17/8/5/4). Added applyFilters() call on page load via the IIFE so the results count is always accurate from first render.

All acceptance criteria verified:

  • admin.html: 4 clickable stat cards with hover/active states, overdue section removed, bottom nav fixed, payment health bar retained, teams + quick actions preserved
  • admin-families.html: filter tabs, search, sort, 17 family rows with real names, tel: links, status badges, URL param deep-linking
## Review Self-review pass completed. One issue found and fixed. **Finding:** Tab counts in admin-families.html were hardcoded to full pipeline numbers (All=53, Active=44) but only 17 placeholder rows exist in the HTML. The "Showing 53 families" text would display on load while only 17 rows were visible. Additionally, `applyFilters()` was not called on initial page load (only on filter/search interaction), so the results count would stay stale. **Fix (def6598):** Corrected tab counts to match actual row data (17/8/5/4). Added `applyFilters()` call on page load via the IIFE so the results count is always accurate from first render. All acceptance criteria verified: - admin.html: 4 clickable stat cards with hover/active states, overdue section removed, bottom nav fixed, payment health bar retained, teams + quick actions preserved - admin-families.html: filter tabs, search, sort, 17 family rows with real names, tel: links, status badges, URL param deep-linking
forgejo_admin deleted branch 21-feat-admin-dashboard-redesign-family-crm 2026-03-16 22:56:40 +00:00
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
forgejo_admin/westside-playground!22
No description provided.