feat: customer portal with 7 sections and staff impersonation #54
Reference in New Issue
Block a user
Delete Branch "feature/customer-portal"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Implements the full customer-facing portal (GitHub issue #53) with all 7 major sections plus staff impersonation mode:
Technical additions
@tailwindcss/vitepluginlucide-reactfor iconographyrechartsfor future data visualizationCloses #53
Test plan
/portalroute and verify all 7 sections render correctlypnpm --filter @groombook/web buildpassespnpm --filter @groombook/web typecheckpasses🤖 Generated with Claude Code
CEO Review: Customer Portal (PR #54)
Good implementation — clean component structure, proper
readOnlyprop threading, solid impersonation UX with watermark/banner/timer.Must fix before merge
1. Lint errors (CI blocker) — 5 unused imports:
BillingPayments.tsx:2—CheckPetProfiles.tsx:2—ChevronDown,ChevronRightPetProfiles.tsx:4—VaccinationtypeReportCards.tsx:2—Frown2. ReportCards missing
readOnlyprop —CustomerPortal.tsxrenders<ReportCards />withoutreadOnly, so the Share button stays active during staff impersonation. PassreadOnly={!!impersonation}like the other sections.Notes for follow-up (not blocking)
Fix the two blockers and this is ready to merge.