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
+19
View File
@@ -3757,4 +3757,23 @@ export default {
'messaging.checkingKey': 'جاري التحقق من مفتاح التشفير...',
'messaging.send': 'إرسال',
'messaging.sending': 'جاري الإرسال...',
// Mobile Home Layout
'mobile.greeting': 'مرحباً',
'mobile.home': 'الرئيسية',
'mobile.citizen': 'مواطن',
'mobile.referral': 'إحالة',
'mobile.memberSince': 'عضو منذ',
'mobile.role': 'الدور',
'mobile.totalScore': 'النقاط الإجمالية',
'mobile.trustScore': 'نقاط الثقة',
'mobile.referralScore': 'نقاط الإحالة',
'mobile.stakingScore': 'نقاط الستاكينغ',
'mobile.tikiScore': 'نقاط التيكي',
'mobile.kycStatus': 'حالة KYC',
'mobile.connectWallet': 'ربط المحفظة',
'mobile.apply': 'تقديم',
'mobile.joinUs': 'انضم إلينا',
'mobile.signInUp': 'تسجيل الدخول / التسجيل',
'mobile.loginToSeeRoles': 'سجل الدخول لرؤية الأدوار',
};
+19
View File
@@ -3747,4 +3747,23 @@ export default {
'messaging.checkingKey': 'کلیلی شفرکردن پشکنین دەکرێت...',
'messaging.send': 'بنێرە',
'messaging.sending': 'دەنێردرێت...',
// Mobile Home Layout
'mobile.greeting': 'ڕۆژباش',
'mobile.home': 'ماڵەوە',
'mobile.citizen': 'هاوڵاتی',
'mobile.referral': 'ئاماژە',
'mobile.memberSince': 'ئەندام لە',
'mobile.role': 'ڕۆڵ',
'mobile.totalScore': 'کۆی خاڵ',
'mobile.trustScore': 'خاڵی متمانە',
'mobile.referralScore': 'خاڵی ئاماژە',
'mobile.stakingScore': 'خاڵی ستەیکینگ',
'mobile.tikiScore': 'خاڵی تیکی',
'mobile.kycStatus': 'بارودۆخی KYC',
'mobile.connectWallet': 'جزدان ببەستە',
'mobile.apply': 'داواکاری',
'mobile.joinUs': 'پەیوەست ببە',
'mobile.signInUp': 'چوونەژوورەوە / تۆمارکردن',
'mobile.loginToSeeRoles': 'بۆ بینینی ڕۆڵەکان بچۆ ژوورەوە',
};
+19
View File
@@ -3795,4 +3795,23 @@ export default {
'messaging.checkingKey': 'Checking encryption key...',
'messaging.send': 'Send',
'messaging.sending': 'Sending...',
// Mobile Home Layout
'mobile.greeting': 'Rojbaş',
'mobile.home': 'Home',
'mobile.citizen': 'Citizen',
'mobile.referral': 'Referral',
'mobile.memberSince': 'Member Since',
'mobile.role': 'Role',
'mobile.totalScore': 'Total Score',
'mobile.trustScore': 'Trust Score',
'mobile.referralScore': 'Referral Score',
'mobile.stakingScore': 'Staking Score',
'mobile.tikiScore': 'Tiki Score',
'mobile.kycStatus': 'KYC Status',
'mobile.connectWallet': 'Connect wallet',
'mobile.apply': 'Apply',
'mobile.joinUs': 'Join Us',
'mobile.signInUp': 'Sign In / Up',
'mobile.loginToSeeRoles': 'Login to see roles',
}
+19
View File
@@ -3791,4 +3791,23 @@ export default {
'messaging.checkingKey': 'بررسی کلید رمزنگاری...',
'messaging.send': 'ارسال',
'messaging.sending': 'در حال ارسال...',
// Mobile Home Layout
'mobile.greeting': 'سلام',
'mobile.home': 'خانه',
'mobile.citizen': 'شهروند',
'mobile.referral': 'ارجاع',
'mobile.memberSince': 'عضو از',
'mobile.role': 'نقش',
'mobile.totalScore': 'امتیاز کل',
'mobile.trustScore': 'امتیاز اعتماد',
'mobile.referralScore': 'امتیاز ارجاع',
'mobile.stakingScore': 'امتیاز استیکینگ',
'mobile.tikiScore': 'امتیاز تیکی',
'mobile.kycStatus': 'وضعیت KYC',
'mobile.connectWallet': 'اتصال کیف پول',
'mobile.apply': 'درخواست',
'mobile.joinUs': 'به ما بپیوندید',
'mobile.signInUp': 'ورود / ثبت نام',
'mobile.loginToSeeRoles': 'برای دیدن نقش‌ها وارد شوید',
};
+19
View File
@@ -3774,4 +3774,23 @@ export default {
'messaging.checkingKey': 'Mifteya şîfrekirinê tê kontrol kirin...',
'messaging.send': 'Bişîne',
'messaging.sending': 'Tê şandin...',
// Mobile Home Layout
'mobile.greeting': 'Rojbaş',
'mobile.home': 'Mal',
'mobile.citizen': 'Welatî',
'mobile.referral': 'Referans',
'mobile.memberSince': 'Endam ji',
'mobile.role': 'Rol',
'mobile.totalScore': 'Pûana Giştî',
'mobile.trustScore': 'Pûana Pêbaweriyê',
'mobile.referralScore': 'Pûana Referansê',
'mobile.stakingScore': 'Pûana Stakingê',
'mobile.tikiScore': 'Pûana Tikiyê',
'mobile.kycStatus': 'Rewşa KYC',
'mobile.connectWallet': 'Cîzdanê girêde',
'mobile.apply': 'Serlêdan',
'mobile.joinUs': 'Tevlî me bibe',
'mobile.signInUp': 'Têkeve / Tomar bibe',
'mobile.loginToSeeRoles': 'Ji bo rolan têkeve',
};
+19
View File
@@ -3777,4 +3777,23 @@ export default {
'messaging.checkingKey': 'Şifreleme anahtarı kontrol ediliyor...',
'messaging.send': 'Gönder',
'messaging.sending': 'Gönderiliyor...',
// Mobile Home Layout
'mobile.greeting': 'Rojbaş',
'mobile.home': 'Ana Sayfa',
'mobile.citizen': 'Vatandaş',
'mobile.referral': 'Referans',
'mobile.memberSince': 'Üyelik Tarihi',
'mobile.role': 'Rol',
'mobile.totalScore': 'Toplam Puan',
'mobile.trustScore': 'Güven Puanı',
'mobile.referralScore': 'Referans Puanı',
'mobile.stakingScore': 'Staking Puanı',
'mobile.tikiScore': 'Tiki Puanı',
'mobile.kycStatus': 'KYC Durumu',
'mobile.connectWallet': 'Cüzdan bağla',
'mobile.apply': 'Başvur',
'mobile.joinUs': 'Bize Katil',
'mobile.signInUp': 'Giris / Kayit',
'mobile.loginToSeeRoles': 'Rolleri gormek icin giris yap',
};