تخطَّ إلى المحتوى الرئيسي

Developer Page Specifications

Listing Pages

Landing + 8 scoped listings. CalendarLandingPage rails + EventListingPage with filter rail.

مكتمل

المسارات: /:lang/calendar (الهبوط — شرائط، ليس استعلام)، /:lang/calendar/events (قائمة كاملة، كل الفلاتر)، /:lang/calendar/events/countries/{countrySlug}، /:lang/calendar/events/categories/{categorySlug}، /:lang/calendar/events/audiences/{audienceSlug}، /:lang/calendar/events/stages/{stageSlug}، /:lang/calendar/this-week، /:lang/calendar/closing-soon. 8 مسارات، 2 مكوّنات: CalendarLandingPage (شرائط) + EventListingPage (فلتر+شبكة، مُعاد استخدامه عبر route.data.scope).

أقسام صفحة الهبوط (/:lang/calendar)

  1. A · Hero (eyebrow + H1 + lede سطر-واحد + 2 CTAs: "Submit an event" + "View all events")
  2. B · شريط This-week (scroll أفقي، فعاليات ضمن ±7 أيام من NOW)
  3. C · شريط Closing-soon (مواعيد ضمن 7 أيام، شرائح موعد warning-tinted)
  4. D · شبكة By-country (16 بلاطة علم، كل واحدة تَربط لـ /calendar/events/countries/{slug} مع عدد فعاليات حيّ)
  5. E · شبكة By-category (17 بلاطة فئة)
  6. F · Spotlight (على الأكثر فعالية واحدة editorialPriority=spotlight، banner عرض-كامل)
  7. G · كتلة CTA submit-an-event (pitch سطر-واحد → routerLink لـ /:lang/calendar/submit)
  8. H · Footer

أقسام صفحة القائمة (/:lang/calendar/events*)

  1. A · Hero (عنوان مَحصور — "All events" / "Events in Egypt" / "Demo days" — + عدد النتائج + شرائح فلتر نشطة)
  2. B · شريط الفلتر (يسار desktop sticky، drawer-أسفل موبايل): country / category / audience / stage / status / mode (physical/online/hybrid)
  3. C · الشبكة (3 أعمدة سطح المكتب، 2 تابلت، 1 موبايل)
  4. D · عَدَّاد في الأسفل ("Showing X of Y events")
  5. E · لا ترقيم — scroll لانهائي، 24 كرت/دفعة

حقول كرت الفعالية (<app-event-card> القياسي)

chip التاريخ
العنصر اللا-يَنطوي أبداً. مُهيمن في هرمية الكرت. الصيغة: D-{N} للقادم، "LIVE NOW" لـ status=live، "+{N}d" للمُكتمل، تاريخ كامل مُهيَّأ لـ ≥30 يوم.
chip علم + دولة
المصدر: Event.CountryCode + Country.NameLang. العرض: علم emoji + اسم دولة مُختصر حين الكرت ضيّق.
إيقونة + تسمية الفئة
المصدر: Event.Category. اعثر على الإيقونة من CATEGORY_ICONS (مثلاً demo-day → إيقونة presentation، hackathon → إيقونة terminal).
شارة الحالة
محتسبة من الأوقات. الصبغات: upcoming=neutral / open=primary / closing-soon=warning / live=accent pulse / completed=muted / postponed=amber / cancelled=destructive.
العنوان + المنظِّم
المصدر: EventLang.Title + Event.OrganizerName. العنوان H3، المنظِّم t-meta أسفل.
chip الوضع
المصدر: Event.Mode (physical | online | hybrid). chip صغير في قدم الكرت.
CTAs
الأساسي: routerLink لـ /:lang/calendar/events/{slug}. الثانوي (حين registrationUrl أو applyUrl): خارجي لذلك الـ URL مع target=_blank.