// JT Atelier — site data

const CONTACT = {
  email: 'inquiries@jtatelier.shop',
  phone: '',
};

Object.assign(window, { PRODUCTS: window.PRODUCTS || [], CONTACT });

// Apply product overrides (deletions, custom additions, stock/size availability) from Supabase.
// Fires once on load; dispatches 'products-updated' so React re-renders.
(function applyProductOverrides() {
  fetch('/api/product-overrides')
    .then(r => r.json())
    .then(({ deleted = [], added = [], stock = {}, prices = {}, luxury = {}, descriptions = {}, furCollars = [] }) => {
      const deletedSet = new Set(deleted);
      // Apply deletions and additions
      window.PRODUCTS = [
        ...window.PRODUCTS.filter(p => !deletedSet.has(p.id)),
        ...added,
      ];
      // Apply price overrides from admin (prices is product_id → retail price number)
      if (Object.keys(prices).length > 0) {
        window.PRODUCTS = window.PRODUCTS.map(p => {
          const ov = prices[p.id];
          if (ov == null) return p;
          return { ...p, price: ov };
        });
      }
      // Apply Luxury flags from admin → set season so the Luxury collection picks them up
      if (Object.keys(luxury).length > 0) {
        window.PRODUCTS = window.PRODUCTS.map(p => {
          const lux = luxury[p.id];
          if (lux === undefined) return p;
          if (lux === true) return { ...p, season: 'Luxury' };
          if (p.season === 'Luxury') return { ...p, season: 'Ready to Wear' };
          return p;
        });
      }
      // Apply stock overrides: mark unavailable sizes
      if (Object.keys(stock).length > 0) {
        window.PRODUCTS = window.PRODUCTS.map(p => {
          const unavail = stock[p.id];
          if (!unavail || unavail.length === 0) return p;
          return {
            ...p,
            sizes: p.sizes ? p.sizes.map(sz => unavail.includes(sz) ? sz + '__soldout' : sz) : p.sizes,
            _unavailableSizes: unavail,
          };
        });
      }
      // Apply published description overrides (AI-drafted / edited in admin)
      if (Object.keys(descriptions).length > 0) {
        window.PRODUCTS = window.PRODUCTS.map(p => {
          const d = descriptions[p.id];
          return d ? { ...p, desc: d } : p;
        });
      }
      // Apply fur-collar tags → enables the Real-Fur (+$200) collar option
      if (furCollars.length > 0) {
        const furSet = new Set(furCollars);
        window.PRODUCTS = window.PRODUCTS.map(p => furSet.has(p.id) ? { ...p, furCollar: true } : p);
      }
      window.STOCK_OVERRIDES = stock;
      window.dispatchEvent(new CustomEvent('products-updated'));
    })
    .catch(() => {});
})();
