// data/advertisements.data.js import { Megaphone, Image, BellRing, PanelRight } from "lucide-react"; // ─── Types ────────────────────────────────────────────────────────────────── // Drives: filter dropdown options, type badge label/icon on each card, // and which fields the Add/Edit form shows (hero needs headline/description/ctas, // banner/popup/sidebar are closer to image-only). export const ADVERTISEMENT_TYPES = [ { value: "hero", label: "Hero", icon: Megaphone, description: "Large featured banner with headline, description, and CTAs" }, { value: "banner", label: "Banner", icon: Image, description: "Simple image banner" }, { value: "popup", label: "Popup", icon: BellRing, description: "Modal-style popup shown on page load" }, { value: "sidebar", label: "Sidebar", icon: PanelRight, description: "Compact image placed in a sidebar slot" }, ]; export const ADVERTISEMENT_TYPE_MAP = Object.fromEntries( ADVERTISEMENT_TYPES.map((t) => [t.value, t]) ); // Types that show the rich content fields (headline, description, CTAs) in the form export const RICH_CONTENT_TYPES = ["hero"]; // ─── Statuses ─────────────────────────────────────────────────────────────── // Drives: filter dropdown options, status badge color/label on each card. export const ADVERTISEMENT_STATUSES = [ { value: "draft", label: "Draft", badgeClass: "bg-muted text-muted-foreground" }, { value: "active", label: "Active", badgeClass: "bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-400" }, { value: "scheduled", label: "Scheduled", badgeClass: "bg-blue-100 text-blue-700 dark:bg-blue-900/40 dark:text-blue-400" }, { value: "expired", label: "Expired", badgeClass: "bg-muted text-muted-foreground" }, { value: "archived", label: "Archived", badgeClass: "bg-muted text-muted-foreground" }, ]; export const ADVERTISEMENT_STATUS_MAP = Object.fromEntries( ADVERTISEMENT_STATUSES.map((s) => [s.value, s]) ); // Max number of CTAs allowed per advertisement (matches backend normalizeCtas slice(0,2)) export const MAX_CTAS = 2;