// ============ Yap — mock data ============
// Avatar colors pull from the playful companion palette (CSS vars).
const AVATAR_VARS = ['--c-coral','--c-amber','--c-teal','--c-violet','--c-lime','--c-pink','--c-sky','--c-grape'];

function initials(name) {
  const parts = name.trim().split(/\s+/);
  if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();
  return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();
}

const ME = { id: 'me', name: 'Toi', handle: '@toi', hue: 0 };

// People (id -> person). hue index picks an avatar color.
const PEOPLE = {
  lila:   { id: 'lila',   name: 'Lila Moreau',     handle: '@lila',     hue: 5, online: true },
  theo:   { id: 'theo',   name: 'Théo',            handle: '@theoo',    hue: 0, online: true },
  ines:   { id: 'ines',   name: 'Inès K.',         handle: '@ineskz',   hue: 2, online: false },
  noah:   { id: 'noah',   name: 'Noah',            handle: '@noah',     hue: 6, online: true },
  jade:   { id: 'jade',   name: 'Jade',            handle: '@jadelaa',  hue: 4, online: false },
  sami:   { id: 'sami',   name: 'Sami R.',         handle: '@samir',    hue: 1, online: true },
  manon:  { id: 'manon',  name: 'Manon',           handle: '@mnon',     hue: 7, online: false },
  yanis:  { id: 'yanis',  name: 'Yanis',           handle: '@yns',      hue: 3, online: true },
  camille:{ id: 'camille',name: 'Camille',         handle: '@cam',      hue: 2, online: false },
};

function person(id) { return PEOPLE[id] || ME; }

// Group thread participants
const GROUP_RESTO = { id: 'g_resto', name: 'Resto vendredi 🍜', isGroup: true, hue: 3,
  members: ['lila','theo','sami','noah'] };
const GROUP_TEAM = { id: 'g_team', name: 'Projet Aurora', isGroup: true, hue: 6,
  members: ['ines','yanis','camille'] };

// Conversations (most-recent first). messages: {id, from, text, time, reactions?, kind?}
const CONVERSATIONS = [
  {
    id: 'c1', peer: 'lila', unread: 2, pinned: true, time: '14:32',
    messages: [
      { id: 'm1', from: 'lila', text: 'okk je te montre la palette que j\'ai faite hier', time: '14:20' },
      { id: 'm2', from: 'lila', text: 'attends', time: '14:20' },
      { id: 'm3', from: 'me',   text: 'vas-y je suis chaud 🔥', time: '14:21' },
      { id: 'm4', from: 'lila', kind: 'image', text: 'palette_v3', time: '14:22' },
      { id: 'm5', from: 'me',   text: 'oh c\'est trop beau le indigo', time: '14:24', reactions: ['❤️'] },
      { id: 'm6', from: 'lila', text: 'mercii 🥹 j\'hésite avec le violet en accent', time: '14:31' },
      { id: 'm7', from: 'lila', text: 'tu préfères lequel toi ?', time: '14:32' },
    ],
  },
  {
    id: 'c2', group: GROUP_RESTO, unread: 5, time: '13:58',
    messages: [
      { id: 'm1', from: 'theo', text: 'donc on dit 20h c\'est bon pour tout le monde ?', time: '13:40' },
      { id: 'm2', from: 'sami', text: 'oui parfait', time: '13:41' },
      { id: 'm3', from: 'noah', text: 'je serai ptet 10 min en retard désolé', time: '13:50' },
      { id: 'm4', from: 'lila', text: 'pas de souci on commande des nems en attendant 😋', time: '13:55', reactions: ['😂','👍'] },
      { id: 'm5', from: 'theo', text: 'genie. j\'ai hâte', time: '13:58' },
    ],
  },
  {
    id: 'c3', peer: 'theo', unread: 0, time: '11:12',
    messages: [
      { id: 'm1', from: 'me',   text: 'tu as vu le dernier épisode ?', time: '10:40' },
      { id: 'm2', from: 'theo', text: 'NON me spoil pas 🙈', time: '11:10' },
      { id: 'm3', from: 'me',   text: 'mdr ok ok', time: '11:11' },
      { id: 'm4', from: 'theo', text: 'on en parle ce soir', time: '11:12', reactions: ['👌'] },
    ],
  },
  {
    id: 'c4', peer: 'ines', unread: 0, time: 'hier',
    messages: [
      { id: 'm1', from: 'ines', text: 'merci pour hier c\'était top !', time: 'hier' },
      { id: 'm2', from: 'me',   text: 'avec plaisir 🤍 on remet ça', time: 'hier' },
    ],
  },
  {
    id: 'c5', group: GROUP_TEAM, unread: 0, time: 'hier',
    messages: [
      { id: 'm1', from: 'yanis', text: 'j\'ai push la maquette du profil', time: 'hier' },
      { id: 'm2', from: 'camille', text: 'nickel je regarde ça demain matin', time: 'hier' },
      { id: 'm3', from: 'ines', text: 'top, bonne soirée 👋', time: 'hier' },
    ],
  },
  {
    id: 'c6', peer: 'noah', unread: 0, time: 'lun.',
    messages: [
      { id: 'm1', from: 'noah', text: 'on court dimanche ? 🏃', time: 'lun.' },
      { id: 'm2', from: 'me', text: '9h au parc ?', time: 'lun.' },
      { id: 'm3', from: 'noah', text: 'parfait', time: 'lun.', reactions: ['🔥'] },
    ],
  },
  {
    id: 'c7', peer: 'jade', unread: 0, time: 'dim.',
    messages: [
      { id: 'm1', from: 'jade', text: 'joyeux anniversaire en retard 🎂🎉', time: 'dim.' },
      { id: 'm2', from: 'me', text: 'merci jade !!', time: 'dim.' },
    ],
  },
];

// Stories / active-now row (current user first)
const STORIES = [
  { id: 's_me', isMe: true, person: ME, hasStory: false },
  { id: 's1', person: PEOPLE.theo, hasStory: true, seen: false },
  { id: 's2', person: PEOPLE.lila, hasStory: true, seen: false },
  { id: 's3', person: PEOPLE.sami, hasStory: true, seen: false },
  { id: 's4', person: PEOPLE.noah, hasStory: true, seen: true },
  { id: 's5', person: PEOPLE.jade, hasStory: true, seen: true },
  { id: 's6', person: PEOPLE.yanis, hasStory: true, seen: true },
];

// Feed posts
const FEED = [
  { id: 'p1', author: 'lila', time: '2 h', text: 'palette quasi finie pour le projet ✨ indigo + violet, je crois que je tiens un truc',
    image: 'palette finale', likes: 128, comments: 14, liked: false },
  { id: 'p2', author: 'sami', time: '4 h', text: 'petit run matinal, 8km au compteur. la ville à 7h c\'est un autre monde 🌅',
    image: 'photo du run', likes: 86, comments: 9, liked: true },
  { id: 'p3', author: 'theo', time: '6 h', text: 'avis impopulaire : les claviers mécaniques en open space c\'est non 😅',
    image: null, likes: 342, comments: 71, liked: false },
  { id: 'p4', author: 'ines', time: '8 h', text: 'nouvelle plante, nouveau moi. on parie combien de temps elle survit 🪴',
    image: 'la plante', likes: 54, comments: 6, liked: false },
  { id: 'p5', author: 'jade', time: '11 h', text: 'playlist du dimanche prête, lien en bio 🎧',
    image: null, likes: 47, comments: 3, liked: false },
];

// Notifications (grouped)
const NOTIFS = [
  { id: 'n1', group: 'aujourd\'hui', type: 'like',    who: 'lila',  text: 'a aimé ta photo', time: '12 min', unread: true },
  { id: 'n2', group: 'aujourd\'hui', type: 'follow',  who: 'sami',  text: 'a commencé à te suivre', time: '40 min', unread: true },
  { id: 'n3', group: 'aujourd\'hui', type: 'comment', who: 'theo',  text: 'a commenté : « trop vrai 😂 »', time: '1 h', unread: true },
  { id: 'n4', group: 'aujourd\'hui', type: 'react',   who: 'noah',  text: 'a réagi 🔥 à ton message', time: '2 h', unread: false },
  { id: 'n5', group: 'cette semaine', type: 'mention', who: 'ines', text: 't\'a mentionné dans un commentaire', time: 'lun.', unread: false },
  { id: 'n6', group: 'cette semaine', type: 'follow',  who: 'jade', text: 'a commencé à te suivre', time: 'dim.', unread: false },
  { id: 'n7', group: 'cette semaine', type: 'like',    who: 'yanis',text: 'a aimé ton commentaire', time: 'dim.', unread: false },
];

// Profile
const PROFILE = {
  name: 'Alex Dubois',
  handle: '@alexd',
  bio: 'designer produit · amateur de ramen 🍜 · je poste surtout des couchers de soleil',
  posts: 48, followers: '1 240', following: 312,
  grid: ['sunset', 'café', 'studio', 'rando', 'maquette', 'plante', 'concert', 'vélo', 'plage'],
};

Object.assign(window, {
  AVATAR_VARS, initials, ME, PEOPLE, person,
  CONVERSATIONS, STORIES, FEED, NOTIFS, PROFILE,
});
