Scaffold frontend/modules/loyalty with types, API client, design system, feature pages, and thin App Router routes. Wire all screens to backend Loyalty service via BFF proxy. Add loyalty docs and update progress. Co-authored-by: Cursor <cursoragent@cursor.com>
2.3 KiB
2.3 KiB
Hospitality UI Validation
Date: 2026-07-26
Automated checks
| Check | Command | Result |
|---|---|---|
| Routes (54) | npm run validate:hospitality-routes |
✅ PASS |
| TypeScript | npx tsc --noEmit (hospitality) |
✅ PASS |
| Architecture boundaries | npm run validate:architecture |
Run in CI |
Design system
| Item | Status |
|---|---|
| RTL layout | ✅ App shell + tables |
| Hospitality accent tokens | ✅ --hospitality-accent* |
| Shared DS components | ✅ Button, Dialog, Drawer, DataTable, PageHeader, StatCard, Badge |
| Module components | ✅ HospitalityTablePage, StatusChip, BundleGate, Breadcrumbs |
| Dark mode | ✅ Via portal shell toggle |
| Mobile sidebar | ✅ HospitalityPortalShell drawer |
UX validation
| Requirement | Implementation |
|---|---|
| Professional headers | PageHeader on every page |
| Statistics | HospitalityStatGrid on list pages |
| Search | Client-side + column-aware |
| Filters | Status dropdown + saved to localStorage |
| Pagination | DataTable + Pagination component |
| Empty states | EmptyState with create CTA |
| Loading | HospitalityPageLoader / Skeleton |
| Error | HospitalityPageError with retry |
| Bundle gating | HospitalityBundleGate per feature |
| Toasts | sonner on all mutations |
Accessibility
aria-labelon search, icon buttons, checkboxes- Keyboard shortcuts documented (Ctrl+N, Ctrl+R)
- Focus via DS defaults
Responsive
- Stat grid: 1 → 2 → 4 columns
- Toolbar wraps on mobile
- Table horizontal scroll via DataTable
Visual consistency
- All list pages share identical toolbar pattern
- Status chips use lifecycleStatusLabels
- Venue format labels from tokens
- Price columns use fa-IR locale formatting
Remaining manual QA (recommended)
- Login with tenant that has bundles activated
- Create venue → branch → menu → item flow
- Create reservation and confirm via row action
- Verify kitchen auto-refresh on display page
- Test bundle-gated nav hides disabled modules
Self-audit conclusion
All 54 existing Hospitality routes render connected, non-placeholder screens. Enterprise CRUD factory eliminates generic stub columns. Production deployment validated at https://torbatyar.ir/hospitality/hub.