#!/usr/bin/env python3
"""DMark Carousel — 10 Slide Listikel Tips (style referensi Bos)
BG: #FFF2E9 (cream), Teks: #FF6A00 (orange)
Tanpa header DMARK, tanpa page number, tanpa footer
Judul start ~y=320, body start ~y=540
Font: Poppins Bold 100px judul, Regular 36px body
Margin kiri ~35px
"""

from PIL import Image, ImageDraw, ImageFont
import os

OUT_DIR = os.path.expanduser("~/.openclaw/workspace-atun/dmark_tips_listicle")
os.makedirs(OUT_DIR, exist_ok=True)

W, H = 1080, 1350
BG = (255, 242, 233)
TXT = (255, 106, 0)

FONT_DIR = os.path.expanduser("~/.fonts")
TITLE = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 100)
BODY = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 36)
NUM = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 50)
SEMI = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-SemiBold.ttf"), 32)
COVER_TITLE = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 120)

M = 35
NO = 75
JUDUL_START_Y = 320

def wrap_text(draw, text, font, max_w=1010):
    lines = []
    for para in text.split("\n"):
        words = para.split()
        cur = ""
        for w in words:
            test = cur + " " + w if cur else w
            if draw.textbbox((0,0), test, font=font)[2] > max_w and cur:
                lines.append(cur)
                cur = w
            else:
                cur = test
        if cur: lines.append(cur)
    return lines

def draw_title(draw, texts, start_y, font=TITLE, fill=TXT, max_w=1010, ls=1.3):
    all_lines = []
    for t in texts:
        all_lines.extend(wrap_text(draw, t, font, max_w))
    cy = start_y
    for line in all_lines:
        draw.text((M, cy), line, font=font, fill=fill)
        lh = draw.textbbox((0,0), line, font=font)[3] - draw.textbbox((0,0), line, font=font)[1]
        cy += int(lh * ls)
    return cy

def new_slide():
    return Image.new("RGB", (W, H), BG)

titles_map = {
    "02/10": "kenali_audiens",
    "03/10": "konsistensi_branding",
    "04/10": "optimalkan_seo",
    "05/10": "konten_visual",
    "06/10": "iklan_berbayar",
    "07/10": "email_marketing",
    "08/10": "data_analitik",
    "09/10": "kolaborasi_influencer",
    "10/10": "evaluasi_optimasi",
}

# ===== SLIDE 1: COVER =====
d = ImageDraw.Draw(new_slide())
ey = draw_title(d, ["10 TIPS DIGITAL", "MARKETING"], JUDUL_START_Y)
cy = ey + 120
d.text((M, cy), "Strategi jitu untuk mengembangkan", font=BODY, fill=TXT)
cy += 50
d.text((M, cy), "bisnis Anda di era digital.", font=BODY, fill=TXT)
cy += 50
d.text((M, cy), "Dari DMARK untuk Anda.", font=BODY, fill=TXT)
d._image.save(os.path.join(OUT_DIR, "01_cover.png"))

# ===== SLIDE 2-10: Tips =====
tips_data = [
    ("02/10", ["KENALI AUDIENS ANDA"],
     [("Riset Audiens", "Pahami demografi, minat, dan kebiasaan target pasar."),
      ("Persona Buyer", "Buat profil pelanggan ideal untuk strategi yang lebih tepat."),
      ("Social Listening", "Pantau percakapan online tentang brand dan kompetitor.")]),
    
    ("03/10", ["KONSISTENSI BRANDING"],
     [("Identitas Visual", "Logo, warna, font yang seragam di semua platform."),
      ("Tone of Voice", "Pilih karakter brand: formal, santai, atau quirky."),
      ("Storytelling", "Cerita yang konsisten membangun kepercayaan pelanggan.")]),
    
    ("04/10", ["OPTIMALKAN SEO"],
     [("Keyword Research", "Cari kata kunci yang relevan dengan bisnis Anda."),
      ("Konten Berkualitas", "Artikel dan halaman yang informatif dan bermanfaat."),
      ("Technical SEO", "Kecepatan situs, mobile friendly, struktur URL yang rapi.")]),
    
    ("05/10", ["KONTEN VISUAL", "BERKUALITAS"],
     [("Desain Profesional", "Gunakan template yang rapi dan tipografi yang jelas."),
      ("Video Marketing", "Konten video pendek sangat efektif di media sosial."),
      ("Infografis", "Sajikan data kompleks dengan visual yang mudah dicerna.")]),
    
    ("06/10", ["IKLAN BERBAYAR", "(PAID ADS)"],
     [("Google Ads", "Target audiens yang sedang mencari produk Anda."),
      ("Meta Ads", "Jangkau audiens potensial di IG dan Facebook."),
      ("Retargeting", "Kejar pengunjung yang sudah tertarik tapi belum membeli.")]),
    
    ("07/10", ["EMAIL MARKETING"],
     [("Newsletter", "Kirim update rutin ke subscriber dengan konten bernilai."),
      ("Segmentasi", "Pisahkan audiens berdasarkan minat dan perilaku."),
      ("Automasi", "Kirim email otomatis di momen yang tepat (welcome, promo).")]),
    
    ("08/10", ["MANFAATKAN DATA", "DAN ANALITIK"],
     [("Pantau KPI", "Analisa metrik seperti reach, engagement, dan konversi."),
      ("A/B Testing", "Uji dua versi konten untuk temukan yang paling efektif."),
      ("Dashboard", "Buat laporan berkala untuk evaluasi strategi marketing.")]),
    
    ("09/10", ["COLLABORATION", "DAN INFLUENCER"],
     [("Pilih Influencer", "Cari yang relevan dengan niche dan audiens bisnis Anda."),
      ("Micro Influencer", "Engagement lebih tinggi, biaya lebih terjangkau."),
      ("User Generated", "Ajak pelanggan buat konten tentang brand Anda.")]),
    
    ("10/10", ["EVALUASI DAN", "OPTIMALISASI"],
     [("Review Rutin", "Evaluasi strategi setiap bulan, bukan setahun sekali."),
      ("Iterasi Cepat", "Jangan takut gagal — yang penting belajar dan adaptasi."),
      ("Tetap Update", "Ikuti tren digital marketing terbaru dan sesuaikan strategi.")]),
]

for page, title, tips in tips_data:
    d = ImageDraw.Draw(new_slide())
    ey = draw_title(d, title, JUDUL_START_Y)
    cy = ey + 120
    
    for i, (t, desc) in enumerate(tips):
        # Nomor 01, 02, 03
        num = f"{i+1:02d}"
        d.text((M, cy + 5), num, font=NUM, fill=TXT)
        # Judul tip — SemiBold 32px
        d.text((M + NO, cy + 2), t, font=SEMI, fill=TXT)
        cy += 55
        # Deskripsi
        lines = wrap_text(d, desc, BODY, 1000)
        for line in lines:
            d.text((M + NO, cy), line, font=BODY, fill=TXT)
            cy += 44
        cy += 40
    
    fname = titles_map.get(page, page.replace("/", "_")) + ".png"
    d._image.save(os.path.join(OUT_DIR, fname))

print(f"✅ 10 slide listikel tips selesai! File di: {OUT_DIR}")
for f in sorted(os.listdir(OUT_DIR)):
    print(f"  {f}")
