// mobile.jsx — Mobile versions of all 4 screens, designed at 390×844 (iPhone) const { useState: _mS, useMemo: _mM } = React; // Mobile status bar (simple, no full iOS chrome since frame handles it) function MobileChrome({ children, dark }) { // Live site: skip bezel + status bar, just render children full-bleed. if (typeof window !== 'undefined' && window.__IS_LIVE_SITE) { return
{children}
; } return (
{/* Dynamic island */}
{/* Status bar */}
9:41 ⬤⬤⬤ 5G
{/* Home indicator */}
{children}
); } // Mobile bottom tab bar function MobileTabBar({ active, onNav, L }) { const items = [ { id: 'home', label: L.nav_explore, icon: 'grid', href: 'index.html' }, { id: 'search', label: lang => 'Ara', icon: 'search', href: 'index.html' }, { id: 'fav', label: L.dash_fav, icon: 'heart', href: 'panelim.html' }, { id: 'dash', label: 'Profil', icon: 'users', href: 'panelim.html' }, ]; const live = typeof window !== 'undefined' && window.__IS_LIVE_SITE; return (
{items.map(it => ( !live && onNav && onNav(it.id)} style={{ flex: 1, display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 2, color: active === it.id ? 'var(--ink)' : 'var(--ink-3)', cursor: 'pointer', textDecoration: 'none', }}> {typeof it.label === 'function' ? 'Ara' : it.label} ))}
); } function HomeMobile({ L, lang, theme, favs, setFavs, onView }) { const [filter, setFilter] = _mS('all'); const chips = [ { k: 'all', label: 'Tümü' }, { k: 'hot', label: '🔥 ' + L.hot_badge }, { k: 'new', label: L.new_badge }, { k: 'travel', label: L.niche_travel }, { k: 'fashion', label: L.niche_fashion }, { k: 'tech', label: L.niche_tech }, { k: 'meme', label: L.niche_meme }, ]; const items = filter === 'all' ? LISTINGS : filter === 'hot' || filter === 'new' ? LISTINGS.filter(l => l.badge === filter) : LISTINGS.filter(l => l.niche === filter); const toggleFav = (id) => setFavs(f => f.includes(id) ? f.filter(x => x !== id) : [...f, id]); return (
{/* Hero */}
{L.hero_kicker}
{L.hero_title.split(',')[0]},
{L.hero_title.split(',')[1]?.trim()}
{/* Chips */}
{chips.map(c => ( ))}
{/* List */}
{items.map(l => ( ))}
); } function iconBtn() { return { width: 36, height: 36, borderRadius: '50%', border: 0, background: 'var(--chip)', color: 'var(--ink-2)', cursor: 'pointer', display: 'grid', placeItems: 'center' }; } function DetailMobile({ L, lang, theme, listing, favs, setFavs, onBack }) { const l = listing || LISTINGS[0]; const isFav = favs.includes(l.id); const toggleFav = () => setFavs(f => f.includes(l.id) ? f.filter(x => x !== l.id) : [...f, l.id]); return (
{/* Hero band */}
{l.handle}
{l.verified && }
{L[`niche_${l.niche}`]} · {l.country}
{[ { n: fmtNum(l.followers), l: L.card_followers }, { n: fmtAge(l.age, lang, L), l: L.card_age }, { n: l.er.toFixed(1) + '%', l: 'ER' }, ].map((s, i) => (
{s.n}
{s.l}
))}
{/* Body */}
{/* Post grid */}
{L.detail_content}
{Array.from({ length: 9 }).map((_, i) => (
))}
{/* Metrics */}
{L.detail_metrics}
{/* Trust */}
{/* Sticky buy bar */}
{L.price_ttl}
{fmtPrice(l.price, lang)}
); } function AuthMobile({ L, lang, theme, onBack }) { const [m, setM] = _mS('login'); return (
{/* top gradient band */}
{L.auth_sub}
{['login','signup'].map(t => ( ))}
{m === 'signup' && }
{L.auth_or}
); } function DashboardMobile({ L, lang, theme, favs, setFavs, onView }) { const [tab, setTab] = _mS('fav'); const favItems = LISTINGS.filter(l => favs.includes(l.id)); return (
{L.dash_hello}
serhat.a
SA
{/* Stat cards */}
{[ { k: 'fav', label: L.dash_fav }, { k: 'watch', label: L.dash_watch }, { k: 'offers', label: L.dash_offers }, { k: 'purchases', label: L.dash_purchases }, ].map(c => ( ))}
{tab === 'fav' && favItems.length === 0 && (
{L.empty_fav}
)} {tab === 'fav' && favItems.map(l => ( setFavs(f => f.filter(x => x !== id))} onView={onView}/> ))} {tab === 'watch' && [LISTINGS[3], LISTINGS[6]].map(l => ( setFavs(f => f.includes(id) ? f.filter(x => x !== id) : [...f, id])} onView={onView}/> ))} {tab === 'offers' && (
)} {tab === 'purchases' && (
{[ { l: LISTINGS[2], date: '12 Nis 2026' }, { l: LISTINGS[5], date: '28 Mar 2026' }, ].map((p, i) => )}
)}
); } function MobileStatCard({ n, l, icon }) { return (
{n}
{l}
); } Object.assign(window, { HomeMobile, DetailMobile, AuthMobile, DashboardMobile, MobileChrome });