// icons.jsx — platform glyphs, UI icons, mock data. Exports to window.
/* global React */

// ── UI icons ────────────────────────────────────────────────────────────────
const I = {
  upload: (p) => (<svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M12 16V4m0 0L7.5 8.5M12 4l4.5 4.5"/><path d="M4 14v3.5A2.5 2.5 0 0 0 6.5 20h11a2.5 2.5 0 0 0 2.5-2.5V14"/></svg>),
  check: (p) => (<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2.6" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M4.5 12.5 9.5 17.5 19.5 6.5"/></svg>),
  clock: (p) => (<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" {...p}><circle cx="12" cy="12" r="8.2"/><path d="M12 7.5V12l3 2"/></svg>),
  x: (p) => (<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2.6" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M6.5 6.5 17.5 17.5M17.5 6.5 6.5 17.5"/></svg>),
  xsm: (p) => (<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" strokeWidth="2.4" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M6.5 6.5 17.5 17.5M17.5 6.5 6.5 17.5"/></svg>),
  dash: (p) => (<svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" strokeWidth="2.4" strokeLinecap="round" {...p}><path d="M7 12h10"/></svg>),
  retry: (p) => (<svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M19 8a7.5 7.5 0 1 0 1.2 5"/><path d="M19.5 3.5V8H15"/></svg>),
  sun: (p) => (<svg viewBox="0 0 24 24" width="19" height="19" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" {...p}><circle cx="12" cy="12" r="4"/><path d="M12 2.5v2M12 19.5v2M4.5 12h-2M21.5 12h-2M5.6 5.6 4.2 4.2M19.8 19.8l-1.4-1.4M18.4 5.6l1.4-1.4M4.2 19.8l1.4-1.4"/></svg>),
  moon: (p) => (<svg viewBox="0 0 24 24" width="19" height="19" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M20 14.5A8 8 0 0 1 9.5 4 8 8 0 1 0 20 14.5Z"/></svg>),
  bolt: (p) => (<svg viewBox="0 0 24 24" width="20" height="20" fill="currentColor" {...p}><path d="M13 2 4 13.5h6L9 22l9-11.5h-6L13 2Z"/></svg>),
  send: (p) => (<svg viewBox="0 0 24 24" width="21" height="21" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M21 3 3 10.5l6.5 2.5M21 3l-7 18-3.5-7.5M21 3 9.5 13"/></svg>),
  grid: (p) => (<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" {...p}><rect x="3.5" y="3.5" width="7" height="7" rx="1.5"/><rect x="13.5" y="3.5" width="7" height="7" rx="1.5"/><rect x="3.5" y="13.5" width="7" height="7" rx="1.5"/><rect x="13.5" y="13.5" width="7" height="7" rx="1.5"/></svg>),
  list: (p) => (<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M8 6.5h12M8 12h12M8 17.5h12"/><circle cx="4" cy="6.5" r="1.2" fill="currentColor" stroke="none"/><circle cx="4" cy="12" r="1.2" fill="currentColor" stroke="none"/><circle cx="4" cy="17.5" r="1.2" fill="currentColor" stroke="none"/></svg>),
  search: (p) => (<svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" {...p}><circle cx="11" cy="11" r="6.5"/><path d="m16 16 4 4"/></svg>),
  pin: (p) => (<svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M12 21s6.5-5.6 6.5-10.5A6.5 6.5 0 0 0 5.5 10.5C5.5 15.4 12 21 12 21Z"/><circle cx="12" cy="10.3" r="2.3"/></svg>),
  calendar: (p) => (<svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" {...p}><rect x="3.5" y="5" width="17" height="15.5" rx="2.5"/><path d="M3.5 9.5h17M8 3v3.5M16 3v3.5"/></svg>),
  trash: (p) => (<svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M4 6.5h16M9 6.5V4.5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2M6 6.5l1 13a1.5 1.5 0 0 0 1.5 1.4h7A1.5 1.5 0 0 0 17 19.5l1-13"/></svg>),
  mail: (p) => (<svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" {...p}><rect x="3" y="5" width="18" height="14" rx="2.5"/><path d="m3.5 7 8.5 6 8.5-6"/></svg>),
  lock: (p) => (<svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" {...p}><rect x="4.5" y="10.5" width="15" height="9.5" rx="2.5"/><path d="M8 10.5V8a4 4 0 0 1 8 0v2.5"/></svg>),
  eye: (p) => (<svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z"/><circle cx="12" cy="12" r="2.8"/></svg>),
  eyeoff: (p) => (<svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M9.9 5.7A9.6 9.6 0 0 1 12 5.5c6 0 9.5 6.5 9.5 6.5a16 16 0 0 1-2.4 3.2M6.3 7.3A15.6 15.6 0 0 0 2.5 12S6 18.5 12 18.5a9.2 9.2 0 0 0 3.7-.8M3 3l18 18M10.2 10.2a2.8 2.8 0 0 0 3.8 3.8"/></svg>),
  play: (p) => (<svg viewBox="0 0 24 24" width="16" height="16" fill="currentColor" {...p}><path d="M8 5.5v13l11-6.5z"/></svg>),
  swap: (p) => (<svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M7 9 4 6l3-3M4 6h11M17 15l3 3-3 3M20 18H9"/></svg>),
  film: (p) => (<svg viewBox="0 0 24 24" width="26" height="26" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" {...p}><rect x="3.5" y="4.5" width="17" height="15" rx="2.5"/><path d="M8 4.5v15M16 4.5v15M3.5 9.5h4.5M3.5 14.5h4.5M16 9.5h4.5M16 14.5h4.5"/></svg>),
  link: (p) => (<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M9.5 14.5 14.5 9.5M8.2 12.2l-1.7 1.7a3.4 3.4 0 0 0 4.8 4.8l1.7-1.7M15.8 11.8l1.7-1.7a3.4 3.4 0 0 0-4.8-4.8l-1.7 1.7"/></svg>),
  chev: (p) => (<svg viewBox="0 0 24 24" width="17" height="17" fill="none" stroke="currentColor" strokeWidth="2.1" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="m6 9 6 6 6-6"/></svg>),
  ext: (p) => (<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M14 4h6v6M20 4l-8.5 8.5M18 14v3.5a2 2 0 0 1-2 2H6.5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2H10"/></svg>),
  shield: (p) => (<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M12 3 5 5.8v5.4c0 4.3 3 7.2 7 8.6 4-1.4 7-4.3 7-8.6V5.8z"/><path d="m9 11.5 2 2 4-4"/></svg>),
  copy: (p) => (<svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" {...p}><rect x="9" y="9" width="11" height="11" rx="2.2"/><path d="M5.5 15A2 2 0 0 1 4 13V6a2 2 0 0 1 2-2h7a2 2 0 0 1 2 1.5"/></svg>),
  spark: (p) => (<svg viewBox="0 0 24 24" width="15" height="15" fill="currentColor" {...p}><path d="M12 2.5c.5 4.2 1.8 5.5 6 6-4.2.5-5.5 1.8-6 6-.5-4.2-1.8-5.5-6-6 4.2-.5 5.5-1.8 6-6Z"/></svg>),
  plug: (p) => (<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" strokeWidth="1.9" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M9 3v5M15 3v5M7 8h10v2a5 5 0 0 1-4 4.9V21h-2v-6.1A5 5 0 0 1 7 10z"/></svg>),
  logout: (p) => (<svg viewBox="0 0 24 24" width="19" height="19" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M15 4.5h2.5A2.5 2.5 0 0 1 20 7v10a2.5 2.5 0 0 1-2.5 2.5H15M10 12h9.5M16.5 8.5 20 12l-3.5 3.5"/></svg>),
};

// ── Platform brand glyphs (app-tile style) ───────────────────────────────────
function PlatGlyph({ id, size = 38, radius }) {
  const r = radius != null ? radius : Math.round(size * 0.29);
  const tile = (bg, kids, ring) => (
    <span style={{ width: size, height: size, borderRadius: r, background: bg,
      display: 'grid', placeItems: 'center', boxShadow: ring }}>
      <svg viewBox="0 0 24 24" width={size * 0.62} height={size * 0.62}>{kids}</svg>
    </span>
  );
  switch (id) {
    case 'facebook':
      return tile('#1877F2', <path fill="#fff" d="M13.6 21v-7h2.3l.4-2.8h-2.7V9.4c0-.8.25-1.36 1.43-1.36H16.4V5.5a19 19 0 0 0-2.2-.12c-2.2 0-3.7 1.34-3.7 3.8v2.02H8.2V14h2.3v7z"/>);
    case 'instagram':
      return tile('linear-gradient(135deg,#FEDA77,#F58529 28%,#DD2A7B 62%,#8134AF 88%,#515BD4)',
        <g fill="none" stroke="#fff" strokeWidth="1.9"><rect x="5" y="5" width="14" height="14" rx="4.4"/><circle cx="12" cy="12" r="3.4"/><circle cx="16.4" cy="7.6" r="1.05" fill="#fff" stroke="none"/></g>);
    case 'youtube':
      return tile('#FF0000', <g><rect x="3.5" y="6.5" width="17" height="11" rx="3.2" fill="#fff" opacity="0"/><path fill="#fff" d="M10 9.2v5.6l5-2.8z"/></g>);
    case 'tiktok':
      return tile('#111', <path fill="#fff" d="M14.2 4.5c.28 1.9 1.5 3.2 3.4 3.35V10.4c-1.2.03-2.35-.34-3.4-1.02v4.85a4.55 4.55 0 1 1-4.55-4.55c.27 0 .53.02.79.07v2.66a1.9 1.9 0 1 0 1.32 1.82V4.5z"/>);
    case 'shopee':
      return tile('#EE4D2D', <g fill="none" stroke="#fff" strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round"><path d="M7.2 8.5 7.8 18.6a1.4 1.4 0 0 0 1.4 1.3h5.6a1.4 1.4 0 0 0 1.4-1.3l.6-10.1z"/><path d="M9.2 8.5V7.4a2.8 2.8 0 0 1 5.6 0v1.1"/><path d="M10.4 13.3c0 1 .8 1.5 1.7 1.7s1.6.6 1.6 1.5-1 1.4-1.8 1.3a2 2 0 0 1-1.6-.9"/></g>);
    case 'website':
      return tile('#0d6b58', <g fill="none" stroke="#fff" strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round"><circle cx="12" cy="12" r="7.6"/><path d="M4.4 12h15.2M12 4.4c2.1 2.4 2.1 12.8 0 15.2M12 4.4c-2.1 2.4-2.1 12.8 0 15.2"/></g>);
    default: return tile('#888', null);
  }
}

// ── Data ──────────────────────────────────────────────────────────────────
const PLATFORMS = [
  { id: 'facebook',  name: 'Facebook',  sub: 'Reels & Feed',  limit: 63206 },
  { id: 'instagram', name: 'Instagram', sub: 'Reels',         limit: 2200  },
  { id: 'youtube',   name: 'YouTube',   sub: 'Shorts',        limit: 100   },
  { id: 'tiktok',    name: 'TikTok',    sub: 'Video',         limit: 2200  },
  { id: 'shopee',    name: 'Shopee',    sub: 'Video produk',  limit: 5000, attach: true },
  { id: 'website',   name: 'Website',   sub: 'Video Shorts',  limit: 2200, attach: true },
];
const PLAT_LABEL = Object.fromEntries(PLATFORMS.map(p => [p.id, p.name]));

const PRODUCTS = [
  { id: 'p1', name: 'Madu Hutan Assuffah 500 ml',     sku: 'AS-MD-500' },
  { id: 'p2', name: 'Kurma Ajwa Premium 1 kg',         sku: 'AS-KJ-1000' },
  { id: 'p3', name: 'Buku Iqro Set Jilid 1–6',         sku: 'AS-BK-IQ6' },
  { id: 'p4', name: 'Minyak Habbatussauda 120 kapsul', sku: 'AS-HB-120' },
  { id: 'p5', name: 'Sajadah Travel Lipat',            sku: 'AS-SJ-TR' },
  { id: 'p6', name: 'Parfum Non-Alkohol Misk 20 ml',   sku: 'AS-PF-MK' },
];

// history seed — statuses: success | processing | failed | idle
const SEED_HISTORY = [
  { id: 'h1', title: 'Review Madu Hutan Assuffah 500 ml', hue: 38, dur: '00:58', when: 'Hari ini, 06:12',
    targets: { facebook: 'success', instagram: 'success', youtube: 'success', tiktok: 'success', shopee: 'success' }, product: 'p1' },
  { id: 'h2', title: 'Unboxing Kurma Ajwa Premium 1 kg', hue: 18, dur: '00:31', when: 'Hari ini, 09:40',
    targets: { facebook: 'success', instagram: 'success', youtube: 'idle', tiktok: 'processing', shopee: 'success' }, product: 'p2' },
  { id: 'h3', title: 'Cara Pakai Minyak Habbatussauda', hue: 150, dur: '01:24', when: 'Kemarin, 19:05',
    targets: { facebook: 'success', instagram: 'failed', youtube: 'success', tiktok: 'success', shopee: 'success' }, product: 'p4' },
  { id: 'h4', title: 'Sajadah Travel Lipat — Ringan Dibawa', hue: 200, dur: '00:45', when: 'Kemarin, 14:22',
    targets: { facebook: 'success', instagram: 'success', youtube: 'success', tiktok: 'failed', shopee: 'success' }, product: 'p5' },
  { id: 'h5', title: 'Parfum Non-Alkohol Misk, Wangi Tahan Lama', hue: 280, dur: '01:02', when: '9 Jun, 20:18',
    targets: { facebook: 'success', instagram: 'success', youtube: 'success', tiktok: 'success', shopee: 'success' }, product: 'p6' },
  { id: 'h6', title: 'Testimoni Pelanggan Madu Hutan', hue: 44, dur: '00:38', when: '9 Jun, 15:02',
    targets: { facebook: 'success', instagram: 'success', youtube: 'idle', tiktok: 'success', shopee: 'idle' }, product: 'p1' },
  { id: 'h7', title: 'Tips Memilih Kurma Berkualitas', hue: 24, dur: '00:52', when: '9 Jun, 11:30',
    targets: { facebook: 'success', instagram: 'success', youtube: 'success', tiktok: 'success', shopee: 'idle' } },
  { id: 'h8', title: 'Manfaat Habbatussauda untuk Imun', hue: 158, dur: '01:10', when: '8 Jun, 18:45',
    targets: { facebook: 'failed', instagram: 'success', youtube: 'success', tiktok: 'success', shopee: 'success' }, product: 'p4' },
  { id: 'h9', title: 'Promo Bundling Iqro + Sajadah', hue: 210, dur: '00:29', when: '8 Jun, 10:15',
    targets: { facebook: 'success', instagram: 'success', youtube: 'idle', tiktok: 'idle', shopee: 'success' }, product: 'p3' },
  { id: 'h10', title: 'Restock Kurma Ajwa — Stok Terbatas', hue: 12, dur: '00:21', when: '7 Jun, 21:00',
    targets: { facebook: 'success', instagram: 'success', youtube: 'success', tiktok: 'success', shopee: 'success' }, product: 'p2' },
  { id: 'h11', title: 'Cara Order Lewat Shopee Assuffah', hue: 16, dur: '01:33', when: '7 Jun, 16:40',
    targets: { facebook: 'success', instagram: 'success', youtube: 'success', tiktok: 'failed', shopee: 'success' }, product: 'p1' },
  { id: 'h12', title: 'Madu Hutan Murni vs Madu Biasa', hue: 40, dur: '00:47', when: '7 Jun, 09:12',
    targets: { facebook: 'success', instagram: 'success', youtube: 'success', tiktok: 'success', shopee: 'idle' }, product: 'p1' },
  { id: 'h13', title: 'Buku Iqro untuk Belajar Anak', hue: 220, dur: '00:55', when: '6 Jun, 19:50',
    targets: { facebook: 'success', instagram: 'failed', youtube: 'success', tiktok: 'success', shopee: 'success' }, product: 'p3' },
  { id: 'h14', title: 'Flash Sale Akhir Pekan', hue: 320, dur: '00:18', when: '6 Jun, 12:00',
    targets: { facebook: 'success', instagram: 'success', youtube: 'idle', tiktok: 'success', shopee: 'success' }, product: 'p6' },
  { id: 'h15', title: 'Behind the Scene Packing Order', hue: 184, dur: '01:05', when: '5 Jun, 17:25',
    targets: { facebook: 'success', instagram: 'success', youtube: 'success', tiktok: 'success', shopee: 'idle' } },
  { id: 'h16', title: 'Minyak Habbatussauda Kemasan Baru', hue: 146, dur: '00:42', when: '5 Jun, 08:30',
    targets: { facebook: 'success', instagram: 'success', youtube: 'success', tiktok: 'idle', shopee: 'success' }, product: 'p4' },
  { id: 'h17', title: 'Highlight Produk Terlaris Bulan Ini', hue: 264, dur: '01:14', when: '4 Jun, 20:05',
    targets: { facebook: 'success', instagram: 'success', youtube: 'success', tiktok: 'success', shopee: 'success' }, product: 'p2' },
  { id: 'h18', title: 'Ucapan Terima Kasih Pelanggan', hue: 96, dur: '00:33', when: '4 Jun, 13:48',
    targets: { facebook: 'success', instagram: 'success', youtube: 'idle', tiktok: 'success', shopee: 'idle' } },
];

// integration / API connection metadata per platform
const INTEGRATIONS = {
  facebook: {
    account: 'Assuffah Official', via: null,
    fields: [
      { k: 'appId', label: 'App ID', ph: '1024xxxxxxxx1234' },
      { k: 'appSecret', label: 'App Secret', ph: 'a1b2c3…', secret: true },
      { k: 'pageToken', label: 'Page Access Token', ph: 'EAAG…', secret: true, wide: true },
    ],
    scopes: ['pages_manage_posts', 'pages_read_engagement', 'publish_video'],
    docs: 'developers.facebook.com',
  },
  instagram: {
    account: '@assuffah.official', via: 'facebook',
    fields: [
      { k: 'igId', label: 'IG Business Account ID', ph: '17841xxxxxxxxxx' },
    ],
    scopes: ['instagram_content_publish', 'instagram_basic'],
    docs: 'developers.facebook.com',
  },
  youtube: {
    account: 'Assuffah Channel', via: null,
    fields: [
      { k: 'clientId', label: 'OAuth Client ID', ph: 'xxxx.apps.googleusercontent.com', wide: true },
      { k: 'clientSecret', label: 'Client Secret', ph: 'GOCSPX-…', secret: true },
    ],
    scopes: ['youtube.upload', 'youtube.readonly'],
    docs: 'console.cloud.google.com',
  },
  tiktok: {
    account: '@assuffah', via: null,
    fields: [
      { k: 'clientKey', label: 'Client Key', ph: 'awxxxxxxxxxxxx' },
      { k: 'clientSecret', label: 'Client Secret', ph: '••••••••', secret: true },
    ],
    scopes: ['video.upload', 'video.publish'],
    docs: 'developers.tiktok.com',
  },
  shopee: {
    account: 'Toko Assuffah', via: null,
    fields: [
      { k: 'partnerId', label: 'Partner ID', ph: '200xxxx' },
      { k: 'partnerKey', label: 'Partner Key', ph: '••••••••', secret: true },
      { k: 'shopId', label: 'Shop ID', ph: '8812xxxx' },
    ],
    scopes: ['media_space.upload', 'product.video_attach'],
    docs: 'open.shopee.com',
  },
  website: {
    account: 'Assuffah Store', via: null,
    fields: [
      { k: 'email', label: 'Email Staff', ph: 'admin@assuffah.co.id', wide: true },
      { k: 'password', label: 'Kata Sandi', ph: '••••••••', secret: true },
    ],
    scopes: ['dashboard.videos'],
    docs: 'seller.assuffah.co.id',
  },
};

// seed connection state — status: connected | expired | disconnected | connecting
const SEED_CONN = {
  facebook:  { status: 'connected',    account: 'Assuffah Official',  since: 'Tersambung 8 Jun 2026' },
  instagram: { status: 'connected',    account: '@assuffah.official', since: 'via Facebook Business' },
  youtube:   { status: 'connected',    account: 'Assuffah Channel',   since: 'Tersambung 2 Jun 2026' },
  tiktok:    { status: 'expired',      account: '@assuffah',          since: 'Token kedaluwarsa 10 Jun' },
  shopee:    { status: 'disconnected', account: null,                 since: null },
  website:   { status: 'disconnected', account: null,                 since: null },
};

Object.assign(window, { I, PlatGlyph, PLATFORMS, PLAT_LABEL, PRODUCTS, SEED_HISTORY, INTEGRATIONS, SEED_CONN });
