// Content.jsx — NGUỒN DUY NHẤT cho nội dung website www.swo.vn.
// - SITE_DEFAULTS: nội dung mặc định (fallback khi chưa cấu hình / offline).
// - mergeSite(saved): merge bản lưu DB (cms_settings key 'site') đè lên defaults (theo từng section; mảng thay nguyên khối).
// - loadSiteContent(cfg): fetch anon từ Supabase → trả object đã merge (lỗi/timeout → defaults).
// File này được nạp ở CẢ website (/site) lẫn portal (editor "Thiết lập trang") — không React, thuần data.
const SITE_DEFAULTS = {
  logoUrl: '',       // trống = dùng SVG mặc định /site/assets/logo-swo-horizontal.svg
  logoDarkUrl: '',   // logo cho nền tối (footer); trống = dùng logoUrl, trống nữa = SVG dark mặc định
  hero: {
    badge: 'Chuyển đổi số toàn diện cho SME',
    title1: 'S.W.O —', title2: 'Smart Works,', title3: 'Optimal & Simple.',
    lead: 'Đối tác tin cậy trong hành trình chuyển đổi số của doanh nghiệp — biến công nghệ phức tạp thành công cụ vận hành đơn giản nhất.',
    ctaPrimary: 'Khám phá dịch vụ', ctaSecondary: 'Yêu cầu tư vấn',
    stats: [
      { n: '5+', l: 'Năm kinh nghiệm' }, { n: '100+', l: 'Dự án thành công' },
      { n: '24/7', l: 'Hỗ trợ kỹ thuật' }, { n: '100%', l: 'Đúng hạn' },
    ],
  },
  about: {
    eyebrow: 'Về S.W.O Tech', heading: 'Giá Trị Cốt Lõi & Định Hướng',
    lead: 'Tại S.W.O, chúng tôi định nghĩa lại sự phức tạp của công nghệ bằng những giải pháp Smart · Optimal · Simple.',
    values: [
      { en: 'Smart', vi: 'Thông minh', d: 'Làm việc thông minh hơn, không phải vất vả hơn.' },
      { en: 'Optimal', vi: 'Tối ưu', d: 'Hiệu quả cao nhất trên mức đầu tư thấp nhất.' },
      { en: 'Simple', vi: 'Đơn giản', d: 'Công nghệ dễ dùng, quy trình tinh gọn, triển khai thần tốc.' },
    ],
    visionTitle: 'Đối tác số #1 cho SME',
    vision: 'Trở thành đối tác số số 1 cho các doanh nghiệp SME, biến công nghệ phức tạp thành công cụ vận hành đơn giản nhất.',
    missionTitle: 'Phổ cập chuyển đổi số',
    mission: 'Phổ cập giải pháp Thông minh – Tối ưu – Đơn giản để mọi doanh nghiệp đều có thể chuyển đổi số thành công với chi phí thấp nhất.',
  },
  band: {
    eyebrow: 'Tại sao chọn S.W.O?', heading: 'Con số khẳng định chất lượng',
    stats: [
      { n: '5+', l: 'Năm kinh nghiệm' }, { n: '100+', l: 'Dự án thành công' },
      { n: '24/7', l: 'Hỗ trợ kỹ thuật' }, { n: '100%', l: 'Cam kết đúng hạn' },
    ],
  },
  solutions: {
    eyebrow: 'Lĩnh vực hoạt động', heading: 'Sản phẩm & Giải pháp',
    lead: 'Danh mục dịch vụ chuyển đổi số được thiết kế riêng cho doanh nghiệp vừa và nhỏ.',
    // mỗi giải pháp: h (tên) · p (mô tả) · img (ảnh minh hoạ, trống = icon mặc định) — thêm/xoá tự do
    items: [
      { h: 'Chuyển đổi số AppSheet', p: 'Số hóa toàn bộ quy trình vận hành với Google AppSheet — thay thế Excel rời rạc, nhóm Zalo và hồ sơ giấy.', img: '' },
      { h: 'Quản lý căn hộ thông minh 4.0', p: 'Giải pháp toàn diện trên nền tảng AppSheet (Google Cloud) giúp BQL tối ưu vận hành & minh bạch tài chính.', img: '' },
      { h: 'PC Health Check Annual', p: 'Quản trị chủ động hạ tầng IT qua 10 hạng mục kiểm tra chuyên sâu — biến máy tính từ "chi phí" thành "tài sản".', img: '' },
      { h: 'Tổng đài Cloud VoIP', p: 'Giải pháp giao tiếp thông minh thay thế tổng đài truyền thống cồng kềnh — bứt phá hiệu suất, tiết kiệm chi phí.', img: '' },
    ],
  },
  projects: {
    eyebrow: 'Dự án tiêu biểu', heading: 'Các dự án đã triển khai',
    // nhiều dự án — thêm/xoá tự do; mỗi dự án có ảnh riêng
    items: [
      {
        tag: 'Software · AppSheet', title: 'Hệ thống quản lý toàn diện khu công nghiệp',
        client: 'Kizuna JV Corporation',
        points: [
          'Quản lý toàn diện nhà xưởng & dịch vụ khu công nghiệp',
          'Số hóa quy trình vận hành trên nền tảng AppSheet',
          'Báo cáo & dữ liệu thời gian thực cho ban quản lý',
        ],
        imageUrl: '', ctaLabel: 'Xem chi tiết dự án',
      },
    ],
  },
  clients: {
    eyebrow: 'Khách hàng', heading: 'Đã tin tưởng chúng tôi',
    // mỗi khách: logoUrl (ảnh, trống = chữ lockup `mark`) · name · cat — thêm/xoá tự do
    items: [
      { name: 'Kizuna JV Corporation', cat: 'Nhà xưởng dịch vụ', mark: 'KIZUNA', logoUrl: '' },
      { name: 'Kyanon.digital', cat: 'IT / Software', mark: 'kyanon', logoUrl: '' },
      { name: 'TSD', cat: 'Solution', mark: 'TSD', logoUrl: '' },
      { name: 'SEMITEC Việt Nam', cat: 'Linh kiện điện tử', mark: 'SEMITEC', logoUrl: '' },
    ],
    partnersEyebrow: 'Mạng lưới hợp tác', partnersHeading: 'Đối tác công nghệ',
    partners: ['DASS', 'NTS', 'HQG', 'VIETTEL IDC', 'AIPOWER', 'Onecad', 'CN Ngọc Minh'],
  },
  contact: {
    eyebrow: 'Liên hệ ngay',
    heading: 'Để lại thông tin,\nS.W.O phản hồi trong 24h.',
    lead: 'Bắt đầu hành trình chuyển đổi số của doanh nghiệp bạn — Thông minh, Tối ưu và Đơn giản.',
    address: 'Số 4, Đường số 4, KDC Tân Thành Lập, P. Tân Mỹ, TP. Hồ Chí Minh',
    phone: '08888 202 89',
    email: 'info@swo.vn',
  },
  footer: {
    desc: 'Smart Works – Optimal & Simple. Đối tác chuyển đổi số tin cậy cho doanh nghiệp SME.',
    company: 'CÔNG TY TNHH CÔNG NGHỆ S.W.O',
    copyright: '© 2026 S.W.O TECHNOLOGY. All Rights Reserved.',
    mst: '0315378557',
  },
};

// merge bản lưu đè defaults: object section merge nông; mảng & giá trị đơn thay nguyên khối.
function mergeSite(saved){
  const out = JSON.parse(JSON.stringify(SITE_DEFAULTS));
  if (!saved || typeof saved !== 'object') return out;
  // MIGRATE bản lưu cũ (trước v178): `project` (1 dự án) → `projects.items[0]`
  if (saved.project && !saved.projects) {
    const p = saved.project;
    saved = Object.assign({}, saved, { projects: {
      eyebrow: p.eyebrow, heading: p.heading,
      items: [{ tag:p.tag, title:p.title, client:p.client, points:p.points, imageUrl:p.imageUrl, ctaLabel:p.ctaLabel }],
    } });
  }
  Object.keys(saved).forEach(k => {
    const v = saved[k];
    if (v == null || k === 'project') return;
    if (typeof v === 'object' && !Array.isArray(v) && typeof out[k] === 'object' && !Array.isArray(out[k])) {
      Object.keys(v).forEach(k2 => { if (v[k2] != null) out[k][k2] = v[k2]; });
    } else out[k] = v;
  });
  return out;
}

// fetch anon (PostgREST) → merged content; mọi lỗi → defaults (website không bao giờ trắng trang).
function loadSiteContent(cfg){
  cfg = cfg || {};
  if (!cfg.SUPABASE_URL || !cfg.SUPABASE_ANON_KEY) return Promise.resolve(mergeSite(null));
  const ctl = (typeof AbortController !== 'undefined') ? new AbortController() : null;
  const timer = ctl && setTimeout(() => ctl.abort(), 3500);
  return fetch(cfg.SUPABASE_URL + '/rest/v1/cms_settings?key=eq.site&select=value', {
    headers: { apikey: cfg.SUPABASE_ANON_KEY, Authorization: 'Bearer ' + cfg.SUPABASE_ANON_KEY },
    signal: ctl ? ctl.signal : undefined,
  })
    .then(r => r.ok ? r.json() : [])
    .then(rows => mergeSite(rows && rows[0] && rows[0].value))
    .catch(() => mergeSite(null))
    .finally(() => timer && clearTimeout(timer));
}

Object.assign(window, { SITE_DEFAULTS, mergeSite, loadSiteContent });
