mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
39 lines
2.3 KiB
JavaScript
39 lines
2.3 KiB
JavaScript
// 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; |