From 8f0ff9d47ae9870511c7f95b669c9b6c9ab94745 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 15 Jun 2026 11:07:41 +0200 Subject: [PATCH] fix: mobile-first UI redesign - bump all text to 12px+, 44px+ touch targets, reduced content density --- src/app/forum/[threadId]/page.tsx | 14 +++---- src/app/forum/page.tsx | 28 +++++++------- src/app/globals.css | 45 +++++++++++++++++++++- src/app/halal-monitor/page.tsx | 18 ++++----- src/app/layout.tsx | 10 ++--- src/app/login/page.tsx | 2 +- src/app/nur/page.tsx | 16 ++++---- src/app/page.tsx | 56 ++++++++++++++-------------- src/app/profile/page.tsx | 26 ++++++------- src/app/register/page.tsx | 2 +- src/app/souq/page.tsx | 50 ++++++++++++------------- src/app/upgrade/page.tsx | 2 +- src/app/wallet/page.tsx | 18 ++++----- src/components/BottomNav.tsx | 42 +++++++++++++-------- src/components/NotificationPanel.tsx | 2 +- src/components/PremiumBadge.tsx | 4 +- 16 files changed, 192 insertions(+), 143 deletions(-) diff --git a/src/app/forum/[threadId]/page.tsx b/src/app/forum/[threadId]/page.tsx index 2293a9a..8d66fdc 100644 --- a/src/app/forum/[threadId]/page.tsx +++ b/src/app/forum/[threadId]/page.tsx @@ -248,7 +248,7 @@ export default function ThreadDetailPage() { )} -
+
{thread.category.name} · {timeAgo(thread.createdAt)} @@ -259,7 +259,7 @@ export default function ThreadDetailPage() { const Icon = SHARIAH_LABELS[thread.shariahStatus].icon; return ; })()} - {SHARIAH_LABELS[thread.shariahStatus].label} + {SHARIAH_LABELS[thread.shariahStatus].label}
@@ -310,7 +310,7 @@ export default function ThreadDetailPage() { )} -
+
{timeAgo(post.createdAt)}
@@ -324,7 +324,7 @@ export default function ThreadDetailPage() { {/* Shariah compliance label */}
- {shariahInfo.label} + {shariahInfo.label}
); @@ -342,7 +342,7 @@ export default function ThreadDetailPage() {

@@ -278,7 +278,7 @@ export default function ForumPage() { placeholder="Search threads..." value={searchQuery} onChange={(e) => setSearchQuery(e.target.value)} - className="w-full bg-[#111118] border border-gray-800/60 rounded-xl pl-10 pr-4 py-2.5 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition" + className="w-full bg-[#111118] border border-gray-800/60 rounded-xl pl-10 pr-4 py-3 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition" /> @@ -363,7 +363,7 @@ export default function ForumPage() { setCreateError(null); setShowCreateModal(true); }} - className="mt-4 flex items-center gap-2 bg-[#D4AF37]/15 border border-[#D4AF37]/30 rounded-xl px-4 py-2.5 active:bg-[#D4AF37]/25 transition" + className="mt-4 flex items-center gap-2 bg-[#D4AF37]/15 border border-[#D4AF37]/30 rounded-xl px-4 py-3 active:bg-[#D4AF37]/25 transition" > Start Discussion @@ -395,7 +395,7 @@ export default function ForumPage() { {/* Meta row */} -
+
by
- {shariahInfo.label} + {shariahInfo.label}
·
- {timeAgo(thread.createdAt)} + {timeAgo(thread.createdAt)}
@@ -480,7 +480,7 @@ export default function ForumPage() { setCreateForm((f) => ({ ...f, categoryId: e.target.value })) } required - className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl px-3.5 py-2.5 text-sm text-white focus:outline-none focus:border-[#D4AF37]/40 transition appearance-none" + className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl px-3.5 py-3 text-sm text-white focus:outline-none focus:border-[#D4AF37]/40 transition appearance-none" style={{ backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E")`, backgroundRepeat: "no-repeat", @@ -508,7 +508,7 @@ export default function ForumPage() { placeholder="What's on your mind?" required maxLength={200} - className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl px-3.5 py-2.5 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition" + className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl px-3.5 py-3 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition" />
@@ -525,7 +525,7 @@ export default function ForumPage() { required maxLength={10000} rows={5} - className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl px-3.5 py-2.5 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition resize-none" + className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl px-3.5 py-3 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition resize-none" /> @@ -539,14 +539,14 @@ export default function ForumPage() { ) : ( -
+
✅ Claimed
)} @@ -228,7 +228,7 @@ export default function HomePage() { )} {/* XP hint */} -

+

+{Math.min(10 + currentStreak * 2, 100)} XP also awarded on claim

@@ -237,17 +237,17 @@ export default function HomePage() { {/* Quick Actions */}

Quick Actions

-
+
- +
{/* Stats Row */}
-
+

Activity

- View all + View all
@@ -270,7 +270,7 @@ export default function HomePage() { {/* Premium upsell at bottom for free users */} {!isPremium && ( -
+
@@ -283,7 +283,7 @@ export default function HomePage() {

Premium gives you unlimited AI, halal monitor, 2x FLH earning, and marketplace access.

+ className="inline-block mt-3 text-xs font-semibold text-[#D4AF37] border border-[#D4AF37]/40 rounded-full px-6 py-3 active:bg-[#D4AF37]/10 transition hover:shadow-[0_0_12px_rgba(212,175,55,0.3)] min-h-[44px] leading-tight"> See Plans
@@ -300,17 +300,17 @@ function QuickAction({ href, icon: Icon, label, color }: { href: string; icon: a
- {label} + {label} ); } function StatCard({ label, value, icon: Icon, color }: { label: string; value: string; icon: any; color: string }) { return ( -
- +
+

{value}

-

{label}

+

{label}

); } diff --git a/src/app/profile/page.tsx b/src/app/profile/page.tsx index 352bf64..c9df82a 100644 --- a/src/app/profile/page.tsx +++ b/src/app/profile/page.tsx @@ -187,7 +187,7 @@ export default function ProfilePage() { }`}> {tier === "pro" ? "Pro Member" : "Premium Member"}

-

+

{tier === "pro" ? "Unlimited everything + 0% marketplace fees" : "Enhanced AI + marketplace access"} @@ -253,7 +253,7 @@ export default function ProfilePage() { type="text" value={name} onChange={(e) => setName(e.target.value)} - className="w-full bg-[#1a1a24] border border-gray-800/60 rounded-xl px-4 py-3 text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/50 focus:ring-1 focus:ring-[#D4AF37]/30 transition" + className="w-full bg-[#1a1a24] border border-gray-800/60 rounded-xl px-4 py-4 text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/50 focus:ring-1 focus:ring-[#D4AF37]/30 transition min-h-[48px]" />

@@ -267,7 +267,7 @@ export default function ProfilePage() { value={preferredName} onChange={(e) => setPreferredName(e.target.value)} placeholder="How Nur AI should address you" - className="w-full bg-[#1a1a24] border border-gray-800/60 rounded-xl px-4 py-3 text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/50 focus:ring-1 focus:ring-[#D4AF37]/30 transition" + className="w-full bg-[#1a1a24] border border-gray-800/60 rounded-xl px-4 py-4 text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/50 focus:ring-1 focus:ring-[#D4AF37]/30 transition min-h-[48px]" />
@@ -279,7 +279,7 @@ export default function ProfilePage() { setMadhab(e.target.value)} - className="w-full bg-[#1a1a24] border border-gray-800/60 rounded-xl px-4 py-3 text-white focus:outline-none focus:border-[#D4AF37]/50 focus:ring-1 focus:ring-[#D4AF37]/30 transition appearance-none" + className="w-full bg-[#1a1a24] border border-gray-800/60 rounded-xl px-4 py-4 text-white focus:outline-none focus:border-[#D4AF37]/50 focus:ring-1 focus:ring-[#D4AF37]/30 transition appearance-none min-h-[48px]" > {VALID_MADHABS.map((m) => ( @@ -319,14 +319,14 @@ export default function ProfilePage() { onChange={(e) => setCoachingGoals(e.target.value)} placeholder="What would you like to work on?" rows={3} - className="w-full bg-[#1a1a24] border border-gray-800/60 rounded-xl px-4 py-3 text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/50 focus:ring-1 focus:ring-[#D4AF37]/30 transition resize-none" + className="w-full bg-[#1a1a24] border border-gray-800/60 rounded-xl px-4 py-4 text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/50 focus:ring-1 focus:ring-[#D4AF37]/30 transition resize-none min-h-[48px]" />
@@ -267,7 +267,7 @@ export default function SouqPage() {
-

+

Platform fee: 1.5% for standard listings, 0% for Pro sellers. All prices in FLH (Falah Coins).

@@ -283,7 +283,7 @@ export default function SouqPage() { placeholder="Search listings..." value={searchQuery} onChange={(e) => setSearchQuery(e.target.value)} - className="w-full bg-[#111118] border border-gray-800/60 rounded-xl pl-10 pr-4 py-2.5 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition" + className="w-full bg-[#111118] border border-gray-800/60 rounded-xl pl-10 pr-4 py-3 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition" />
@@ -354,7 +354,7 @@ export default function SouqPage() { setCreateError(null); setShowCreateModal(true); }} - className="mt-4 flex items-center gap-2 bg-[#D4AF37]/15 border border-[#D4AF37]/30 rounded-xl px-4 py-2.5 active:bg-[#D4AF37]/25 transition" + className="mt-4 flex items-center gap-2 bg-[#D4AF37]/15 border border-[#D4AF37]/30 rounded-xl px-4 py-3 active:bg-[#D4AF37]/25 transition" > Create Listing @@ -410,7 +410,7 @@ export default function SouqPage() { placeholder="e.g. Tafsir Ibn Kathir PDF" required maxLength={100} - className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl px-3.5 py-2.5 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition" + className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl px-3.5 py-3 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition" />
@@ -427,7 +427,7 @@ export default function SouqPage() { required maxLength={2000} rows={3} - className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl px-3.5 py-2.5 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition resize-none" + className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl px-3.5 py-3 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition resize-none" />
@@ -440,7 +440,7 @@ export default function SouqPage() { onChange={(e) => setCreateForm((f) => ({ ...f, category: e.target.value })) } - className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl px-3.5 py-2.5 text-sm text-white focus:outline-none focus:border-[#D4AF37]/40 transition appearance-none" + className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl px-3.5 py-3 text-sm text-white focus:outline-none focus:border-[#D4AF37]/40 transition appearance-none" style={{ backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E")`, backgroundRepeat: "no-repeat", @@ -469,7 +469,7 @@ export default function SouqPage() { placeholder="100" required min={1} - className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl pl-3.5 pr-10 py-2.5 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition" + className="w-full bg-[#0a0a0f] border border-gray-800/60 rounded-xl pl-3.5 pr-10 py-3 text-sm text-white placeholder-gray-600 focus:outline-none focus:border-[#D4AF37]/40 transition" /> FLH @@ -487,14 +487,14 @@ export default function SouqPage() { @@ -572,12 +572,12 @@ export default function SouqPage() { FLH
- From: - + From: + {showConfirmDialog.listing.seller.name} {showConfirmDialog.listing.seller.isPro && ( - + Pro )} @@ -621,7 +621,7 @@ export default function SouqPage() { setPurchaseResult(null); }} disabled={!!purchasingId} - className="flex-1 py-2.5 rounded-xl text-sm font-medium text-gray-500 bg-gray-800/40 border border-gray-800/60 active:bg-gray-700/40 transition disabled:opacity-40" + className="flex-1 py-3 rounded-xl text-sm font-medium text-gray-500 bg-gray-800/40 border border-gray-800/60 active:bg-gray-700/40 transition disabled:opacity-40" > Cancel @@ -631,7 +631,7 @@ export default function SouqPage() { purchasingId === showConfirmDialog.listing.id || user.flhBalance < showConfirmDialog.listing.priceFlh } - className="flex-1 py-2.5 rounded-xl text-sm font-semibold text-[#0a0a0f] bg-[#D4AF37] active:bg-[#c5a233] transition flex items-center justify-center gap-2 disabled:opacity-60" + className="flex-1 py-3 rounded-xl text-sm font-semibold text-[#0a0a0f] bg-[#D4AF37] active:bg-[#c5a233] transition flex items-center justify-center gap-2 disabled:opacity-60" > {purchasingId === showConfirmDialog.listing.id ? ( <> @@ -678,7 +678,7 @@ function ListingCard({ {listing.featured && (
- Featured + Featured
)}
@@ -688,14 +688,14 @@ function ListingCard({

{listing.title}

-

+

{listing.description}

{/* Seller info */}
- by - + by + {listing.seller.name} {listing.seller.isPro && ( @@ -705,7 +705,7 @@ function ListingCard({ )} {listing.seller.isPro && ( - + 0% fee @@ -719,12 +719,12 @@ function ListingCard({ {listing.priceFlh.toLocaleString()} - FLH + FLH
diff --git a/src/app/wallet/page.tsx b/src/app/wallet/page.tsx index 5aa2721..dbe6977 100644 --- a/src/app/wallet/page.tsx +++ b/src/app/wallet/page.tsx @@ -215,7 +215,7 @@ export default function WalletPage() { @@ -247,13 +247,13 @@ export default function WalletPage() { Top Up FLH -
+
{TOP_UP_OPTIONS.map((opt) => (