feat: add mobile layout with native app UX, identity page with ID card & passport

Mobile users (<768px) now see a native app-style home page with:
- Green gradient header with avatar, greeting, language/wallet/notification
- Horizontal scrollable score cards (auth-aware: login prompt for guests)
- App grid sections (Finance, Governance, Social, Education) with 4-col layout
- Bottom tab bar (Home / Citizen / Referral)
- MobileShell wrapper for consistent mobile navigation across pages

BeCitizen page redesigned for mobile with full-viewport hero screen,
scroll-to-reveal content, and compact benefits/process cards.

New Identity page (/identity) with realistic Kurdistan Republic ID card
and passport design. Users can fill personal info, upload photo from
camera/gallery, and save to device (localStorage only).

Desktop layout completely untouched. i18n keys added for all 6 languages.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-07 23:39:21 +03:00
parent 5f104fed31
commit e39a1f192a
12 changed files with 1302 additions and 11 deletions
+2
View File
@@ -33,6 +33,7 @@ const AdminPanel = lazy(() => import('@/pages/AdminPanel'));
const WalletDashboard = lazy(() => import('./pages/WalletDashboard'));
const ReservesDashboardPage = lazy(() => import('./pages/ReservesDashboardPage'));
const BeCitizen = lazy(() => import('./pages/BeCitizen'));
const Identity = lazy(() => import('./pages/Identity'));
const Citizens = lazy(() => import('./pages/Citizens'));
const CitizensIssues = lazy(() => import('./pages/citizens/CitizensIssues'));
const GovernmentEntrance = lazy(() => import('./pages/citizens/GovernmentEntrance'));
@@ -145,6 +146,7 @@ function App() {
<Route path="/development" element={<Development />} />
<Route path="/local" element={<Local />} />
<Route path="/be-citizen" element={<BeCitizen />} />
<Route path="/identity" element={<Identity />} />
<Route path="/citizens" element={<Citizens />} />
<Route path="/citizens/issues" element={<CitizensIssues />} />
<Route path="/citizens/government" element={<GovernmentEntrance />} />