// Curated catalogs reused across screens:
//   • REWARD_PRESETS  — pakai dari Rewards screen + step Reward di Campaign Builder
//   • LANDING_TEMPLATES — pakai dari Landing Customizer (galeri di atas form)
//
// Data adalah satu sumber kebenaran (frontend-only) — tidak butuh DB. Owner
// pilih preset, system salin field-fieldnya ke campaign config. Per-campaign
// customization tetap bisa setelah di-apply.

// ─── Reward presets ──────────────────────────────────────────────────────
// Tipe ke kolom `reward_config.reward_type` (voucher | e_wallet | promo_code |
// digital_access | none). `valueOrLink` masuk ke `reward_config.value_or_link`.
// `quota` adalah saran default — owner bebas overwrite.
const REWARD_PRESETS = [
  {
    id: 'voucher-tokopedia-10k',
    emoji: '🎟️',
    name: 'Voucher Tokopedia 10K',
    type: 'voucher',
    value: 'Rp 10.000',
    valueOrLink: 'Voucher Tokopedia Rp 10.000',
    quota: 500,
    bg: 'oklch(0.96 0.04 145)',
    color: 'oklch(0.42 0.14 145)',
    tag: 'Populer',
    desc: 'Kode unik dari Tokopedia, dikirim via WhatsApp setelah submit',
  },
  {
    id: 'voucher-shopee-25k',
    emoji: '🛍️',
    name: 'Voucher Shopee 25K',
    type: 'voucher',
    value: 'Rp 25.000',
    valueOrLink: 'Voucher Shopee Rp 25.000',
    quota: 200,
    bg: 'oklch(0.96 0.05 25)',
    color: 'oklch(0.55 0.16 25)',
    desc: 'Hadiah lebih besar untuk respons riset mendalam',
  },
  {
    id: 'gopay-10k',
    emoji: '💚',
    name: 'GoPay Cashback 10K',
    type: 'e_wallet',
    value: 'Rp 10.000',
    valueOrLink: 'GoPay Cashback Rp 10.000',
    quota: 500,
    bg: 'oklch(0.96 0.05 155)',
    color: 'oklch(0.42 0.14 155)',
    tag: 'Cepat',
    desc: 'Cashback otomatis ke akun GoPay responden',
  },
  {
    id: 'ovo-25k',
    emoji: '🟣',
    name: 'OVO Cashback 25K',
    type: 'e_wallet',
    value: 'Rp 25.000',
    valueOrLink: 'OVO Cashback Rp 25.000',
    quota: 200,
    bg: 'oklch(0.95 0.06 305)',
    color: 'oklch(0.45 0.18 305)',
    desc: 'Top-up OVO langsung — populer untuk segmen urban',
  },
  {
    id: 'dana-50k',
    emoji: '🔵',
    name: 'DANA Cashback 50K',
    type: 'e_wallet',
    value: 'Rp 50.000',
    valueOrLink: 'DANA Cashback Rp 50.000',
    quota: 100,
    bg: 'oklch(0.95 0.06 230)',
    color: 'oklch(0.50 0.18 230)',
    tag: 'Premium',
    desc: 'Reward besar untuk responden riset panjang / B2B',
  },
  {
    id: 'pulsa-5k',
    emoji: '📱',
    name: 'Pulsa 5K',
    type: 'voucher',
    value: 'Rp 5.000',
    valueOrLink: 'Pulsa Rp 5.000 (semua operator)',
    quota: 1000,
    bg: 'oklch(0.95 0.05 75)',
    color: 'oklch(0.50 0.16 75)',
    desc: 'Hadiah ringan untuk survei singkat / massal',
  },
  {
    id: 'paket-data-1gb',
    emoji: '🌐',
    name: 'Paket Data 1GB',
    type: 'voucher',
    value: '1 GB / 7 hari',
    valueOrLink: 'Paket Data 1GB berlaku 7 hari',
    quota: 500,
    bg: 'oklch(0.95 0.06 200)',
    color: 'oklch(0.48 0.16 200)',
    desc: 'Cocok untuk responden Gen Z / mahasiswa',
  },
  {
    id: 'diskon-20',
    emoji: '🏷️',
    name: 'Diskon 20% di Outlet',
    type: 'promo_code',
    value: 'DISKON20',
    valueOrLink: 'DISKON20 — berlaku semua outlet, min. transaksi Rp 30rb',
    quota: 0,
    bg: 'oklch(0.96 0.05 35)',
    color: 'oklch(0.55 0.16 35)',
    desc: 'Drive traffic balik ke outlet brand kamu sendiri',
  },
  {
    id: 'b1g1',
    emoji: '☕',
    name: 'Beli 1 Gratis 1',
    type: 'promo_code',
    value: 'B1G1FREE',
    valueOrLink: 'B1G1FREE — beli 1 menu, dapat 1 gratis (max Rp 35rb)',
    quota: 0,
    bg: 'oklch(0.96 0.04 75)',
    color: 'oklch(0.52 0.16 75)',
    tag: 'F&B',
    desc: 'Akuisisi-driven — paling efektif untuk coffee shop & resto',
  },
  {
    id: 'free-coffee',
    emoji: '🍵',
    name: 'Kopi Gratis 1 Cup',
    type: 'promo_code',
    value: 'COFFEEFREE',
    valueOrLink: 'COFFEEFREE — 1 cup kopi reguler di outlet kamu',
    quota: 0,
    bg: 'oklch(0.95 0.04 65)',
    color: 'oklch(0.45 0.14 65)',
    desc: 'Foot traffic ke outlet — bagus untuk awareness lokal',
  },
  {
    id: 'pdf-report',
    emoji: '📊',
    name: 'PDF Laporan Riset',
    type: 'digital_access',
    value: 'Download Eksklusif',
    valueOrLink: 'Link download PDF hasil riset publik',
    quota: 0,
    bg: 'oklch(0.95 0.05 265)',
    color: 'oklch(0.45 0.18 265)',
    desc: 'Cocok untuk audiens profesional / B2B — biaya nol',
  },
  {
    id: 'sticker-pack',
    emoji: '🎨',
    name: 'Sticker Pack Limited',
    type: 'voucher',
    value: '1 Set',
    valueOrLink: 'Sticker pack edisi terbatas brand kamu',
    quota: 200,
    bg: 'oklch(0.95 0.06 320)',
    color: 'oklch(0.50 0.18 320)',
    desc: 'Build community — souvenir fisik yang bisa diunggah ke IG',
  },
];

// ─── Landing templates ──────────────────────────────────────────────────
// Tiap template membundel: layout (`template`), warna theme, background style,
// dan copy default (headline / subhead / cta). Owner pilih → form di-prefill,
// lalu boleh tweak.
const LANDING_TEMPLATES = [
  {
    id: 'survey-tom',
    name: 'Survey TOM Classic',
    category: 'Top of Mind',
    description: 'Hero gradient ungu — branding Survey TOM resmi',
    config: {
      template: 'hero',
      color: 'oklch(0.52 0.18 265)',
      bg: 'gradient',
      headline: 'Suara kamu menentukan brand favorit Indonesia',
      subhead: 'Isi survei singkat (2 menit) dan dapatkan hadiah langsung ke WhatsApp kamu.',
      cta: 'Mulai Survei',
    },
  },
  {
    id: 'customer-feedback',
    name: 'Customer Feedback',
    category: 'NPS / CSAT',
    description: 'Minimal biru — tone empatik untuk customer existing',
    config: {
      template: 'minimal',
      color: 'oklch(0.55 0.16 230)',
      bg: 'gradient',
      headline: 'Bantu kami jadi lebih baik untukmu',
      subhead: 'Pendapatmu langsung kami baca — 90 detik aja, plus ada hadiah kecil.',
      cta: 'Kasih Masukan',
    },
  },
  {
    id: 'concept-test',
    name: 'Concept Test',
    category: 'Pre-Launch',
    description: 'Split orange — energi konsep produk baru',
    config: {
      template: 'split',
      color: 'oklch(0.62 0.16 35)',
      bg: 'gradient',
      headline: 'Coba dulu konsep baru kami — kasih kesan pertama',
      subhead: 'Lihat 3 ide produk yang sedang kami rancang. Kamu yang menentukan mana yang lanjut.',
      cta: 'Lihat Konsep',
    },
  },
  {
    id: 'umkm-friendly',
    name: 'UMKM Friendly',
    category: 'F&B / Retail',
    description: 'Hero hangat amber — gaya warung & UMKM lokal',
    config: {
      template: 'hero',
      color: 'oklch(0.62 0.16 75)',
      bg: 'gradient',
      headline: 'Halo, kami pengen kenal kamu lebih dekat 👋',
      subhead: '2 menit aja, dan kamu dapat voucher langsung. Asli, bukan janji 😄',
      cta: 'Yuk Mulai',
    },
  },
  {
    id: 'premium-brand',
    name: 'Premium Brand',
    category: 'Brand Awareness',
    description: 'Minimal dark — elegan untuk brand premium',
    config: {
      template: 'minimal',
      color: 'oklch(0.30 0.04 265)',
      bg: 'gradient',
      headline: 'Riset eksklusif untuk pelanggan terpilih',
      subhead: 'Bagikan pengalamanmu dalam 3 menit. Kontribusimu membantu kami menyempurnakan produk.',
      cta: 'Mulai Eksklusif',
    },
  },
  {
    id: 'retail-mass',
    name: 'Retail Mass-Market',
    category: 'Retail',
    description: 'Split hijau — energi cashback / promo retail',
    config: {
      template: 'split',
      color: 'oklch(0.55 0.15 145)',
      bg: 'gradient',
      headline: 'Survei + Cashback langsung. Bisa 2-2-nya.',
      subhead: 'Pilih jawaban, kirim, dan terima reward dalam 5 menit. Tidak ada syarat ribet.',
      cta: 'Klaim Sekarang',
    },
  },
];

// ─── Indonesian regions ──────────────────────────────────────────────────
// Grouped catalog that powers the campaign target-region picker. Three tiers:
//   1. Nasional & per-pulau   (cakupan paling luas)
//   2. Metro / kota besar     (cakupan menengah)
//   3. Per-provinsi (38 prov) (cakupan formal-administratif)
// Owner pilih dari sini, atau "Custom…" → input bebas (kabupaten/kecamatan).
const INDONESIA_REGIONS = [
  {
    label: 'Nasional & Wilayah Besar',
    items: [
      'Indonesia (Nasional)',
      'Pulau Jawa',
      'Pulau Sumatera',
      'Pulau Kalimantan',
      'Pulau Sulawesi',
      'Bali & Nusa Tenggara',
      'Maluku & Papua',
    ],
  },
  {
    label: 'Metro / Kota Besar',
    items: [
      'Jabodetabek',
      'Jakarta (DKI)',
      'Bandung Raya',
      'Surabaya Raya (Gerbangkertosusila)',
      'Solo Raya',
      'Yogyakarta DIY',
      'Semarang Raya',
      'Malang Raya',
      'Cirebon Raya',
      'Medan & sekitar',
      'Pekanbaru',
      'Padang',
      'Palembang',
      'Bandar Lampung',
      'Batam (Kepri)',
      'Banjarmasin',
      'Pontianak',
      'Balikpapan',
      'Samarinda',
      'Manado',
      'Makassar',
      'Denpasar / Bali',
      'Lombok / Mataram',
      'Kupang',
      'Jayapura',
    ],
  },
  {
    label: 'Per-Provinsi',
    items: [
      'Aceh',
      'Sumatera Utara',
      'Sumatera Barat',
      'Riau',
      'Kepulauan Riau',
      'Jambi',
      'Bengkulu',
      'Sumatera Selatan',
      'Kepulauan Bangka Belitung',
      'Lampung',
      'Banten',
      'DKI Jakarta',
      'Jawa Barat',
      'Jawa Tengah',
      'DI Yogyakarta',
      'Jawa Timur',
      'Bali',
      'Nusa Tenggara Barat',
      'Nusa Tenggara Timur',
      'Kalimantan Barat',
      'Kalimantan Tengah',
      'Kalimantan Selatan',
      'Kalimantan Timur',
      'Kalimantan Utara',
      'Sulawesi Utara',
      'Gorontalo',
      'Sulawesi Tengah',
      'Sulawesi Barat',
      'Sulawesi Selatan',
      'Sulawesi Tenggara',
      'Maluku',
      'Maluku Utara',
      'Papua',
      'Papua Barat',
      'Papua Selatan',
      'Papua Tengah',
      'Papua Pegunungan',
      'Papua Barat Daya',
    ],
  },
];

// Flatten — useful for "all values" checks (e.g. validating freetext input
// against the catalog before recommending Custom).
const INDONESIA_REGIONS_FLAT = INDONESIA_REGIONS.flatMap((g) => g.items);

Object.assign(window, { REWARD_PRESETS, LANDING_TEMPLATES, INDONESIA_REGIONS, INDONESIA_REGIONS_FLAT });
