# 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-label` on 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) 1. Login with tenant that has bundles activated 2. Create venue → branch → menu → item flow 3. Create reservation and confirm via row action 4. Verify kitchen auto-refresh on display page 5. 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`.