const { useState: useStateSL } = React; function ShilletnaLanding() { const [creating, setCreating] = useStateSL(false); const [groupName, setGroupName] = useStateSL(""); const [groupSlug, setGroupSlug] = useStateSL(""); const [fieldError, setFieldError] = useStateSL(""); const [busy, setBusy] = useStateSL(false); const [createError, setCreateError] = useStateSL(""); const groups = Object.values(GROUP_CONFIGS); function handleSlugInput(val) { setGroupSlug(val.toLowerCase().replace(/[^a-z0-9-]/g, "").slice(0, 24)); setFieldError(""); } async function handleCreate() { const slug = groupSlug.trim(); const name = groupName.trim(); if (!name) return setFieldError("اكتب اسم المجموعة"); if (!slug) return setFieldError("اكتب رابط المجموعة"); if (slug.length < 3) return setFieldError("الرابط قصير جداً · ٣ أحرف على الأقل"); if (GROUP_CONFIGS[slug]) return setFieldError("هذا الرابط محجوز بالفعل"); setBusy(true); setCreateError(""); try { const binId = await createGroup(slug, name, "♠"); window.location.href = `/${slug}?bid=${binId}`; } catch { setCreateError("فشل إنشاء المجموعة · تحقق من الاتصال وحاول مرة أخرى"); setBusy(false); } } function resetForm() { setCreating(false); setGroupName(""); setGroupSlug(""); setFieldError(""); setCreateError(""); } return (
{/* Hero */}
شلتنا
سجّل نتائج مجموعتك · طرنيب وتركس
{/* Groups list */}
المجموعات
{groups.map(g => (
{g.icon}
{g.name}
shilletna.com/{g.slug}
))}
{/* Create group */}
مجموعة جديدة
{!creating ? ( ) : (
{ setGroupName(e.target.value); setFieldError(""); }} style={{ marginBottom: 10, display: "block" }} dir="rtl" />
handleSlugInput(e.target.value)} style={{ display: "block", direction: "ltr" }} />
{groupSlug && (
shilletna.com/{groupSlug}
)} {fieldError &&
{fieldError}
} {createError &&
{createError}
}
)}
shilletna.com · لعبتنا لعبتك
); } Object.assign(window, { ShilletnaLanding });