// data.jsx — sample Polish data, category/status maps, helpers

// ── Kategorie ogłoszeń (kolor + ikona) ──
const ANN_CATS = {
  info:     { label: 'Informacja',    color: 'info',         icon: 'info' },
  awaria:   { label: 'Awaria',        color: 'danger',       icon: 'alert' },
  wydarzenie:{ label: 'Wydarzenie',   color: 'accent',       icon: 'sparkles' },
  finanse:  { label: 'Finanse',       color: 'accent-warm',  icon: 'wallet' },
  bezp:     { label: 'Bezpieczeństwo',color: 'danger',       icon: 'shield' },
};

// ── Kategorie usterek (kolor kategorialny + ikona) ──
const FAULT_CATS = {
  hydraulika: { label: 'Hydraulika',     color: 'cat-hydraulika', icon: 'droplet' },
  elektryka:  { label: 'Elektryka',      color: 'cat-elektryka',  icon: 'zap' },
  winda:      { label: 'Winda',          color: 'cat-winda',      icon: 'elevator' },
  czystosc:   { label: 'Czystość',       color: 'cat-czystosc',   icon: 'sparkles' },
  zielone:    { label: 'Tereny zielone', color: 'cat-zielone',    icon: 'leaf' },
  inne:       { label: 'Inne',           color: 'text-secondary', icon: 'wrench' },
};

// ── Statusy usterek ──
const FAULT_STATUS = {
  nowe:      { label: 'Nowe',      tone: 'info' },
  przyjete:  { label: 'Przyjęte',  tone: 'info' },
  wtrakcie:  { label: 'W trakcie', tone: 'warning' },
  rozwiazane:{ label: 'Rozwiązane',tone: 'success' },
  zamkniete: { label: 'Zamknięte', tone: 'text-muted' },
};
const FAULT_FLOW = ['nowe', 'przyjete', 'wtrakcie', 'rozwiazane', 'zamkniete'];

// ── Ogłoszenia ──
const ANNOUNCEMENTS = [
  {
    id: 1, cat: 'awaria', pinned: true, requireAck: true, acked: false,
    title: 'Planowane wyłączenie wody — wtorek 3.06',
    excerpt: 'W związku z wymianą zaworów głównych woda będzie niedostępna w budynku B w godz. 9:00–14:00.',
    body: 'Szanowni Mieszkańcy,\n\nw związku z planową wymianą zaworów głównych informujemy, że w dniu wtorek 3 czerwca 2026 r. nastąpi czasowe wyłączenie dostawy wody w budynku B.\n\nPrzewidywany czas przerwy: 9:00 – 14:00. Prosimy o wcześniejsze zabezpieczenie zapasu wody.\n\nZa utrudnienia przepraszamy.',
    author: 'Administracja Osiedla', scope: 'Budynek B', time: '2 godz. temu', date: '28 maja 2026, 12:10',
    attachments: [{ name: 'Harmonogram_prac.pdf', kind: 'pdf' }],
  },
  {
    id: 2, cat: 'wydarzenie', pinned: false, requireAck: false,
    title: 'Piknik sąsiedzki na zielonym dziedzińcu',
    excerpt: 'Zapraszamy wszystkich mieszkańców w sobotę 7 czerwca od 12:00. Grill, muzyka i strefa dla dzieci.',
    body: 'Drodzy Sąsiedzi,\n\nserdecznie zapraszamy na coroczny piknik sąsiedzki, który odbędzie się w sobotę 7 czerwca 2026 r. od godziny 12:00 na zielonym dziedzińcu między budynkami A i C.\n\nW programie: grill, muzyka na żywo, strefa zabaw dla dzieci oraz kącik wymiany roślin.\n\nDo zobaczenia!',
    author: 'Rada Osiedla', scope: 'Cała wspólnota', time: '1 dzień temu', date: '27 maja 2026, 09:30',
    attachments: [],
  },
  {
    id: 3, cat: 'finanse', pinned: false, requireAck: true, acked: true, ackDate: '26 maja, 18:42',
    title: 'Sprawozdanie finansowe za 2025 r. dostępne',
    excerpt: 'Udostępniliśmy roczne sprawozdanie finansowe wspólnoty. Dokument znajdziesz w sekcji Dokumenty.',
    body: 'Informujemy, że roczne sprawozdanie finansowe wspólnoty za rok 2025 zostało udostępnione w sekcji Dokumenty.\n\nProsimy o zapoznanie się z treścią przed najbliższym zebraniem wspólnoty.',
    author: 'Administracja Osiedla', scope: 'Właściciele lokali', time: '3 dni temu', date: '26 maja 2026, 18:00',
    attachments: [{ name: 'Sprawozdanie_2025.pdf', kind: 'pdf' }],
  },
  {
    id: 4, cat: 'info', pinned: false, requireAck: false,
    title: 'Nowy harmonogram wywozu odpadów',
    excerpt: 'Od 1 czerwca zmienia się dzień odbioru odpadów segregowanych — będzie to czwartek zamiast wtorku.',
    body: 'Uprzejmie informujemy, że od 1 czerwca 2026 r. zmienia się harmonogram odbioru odpadów segregowanych. Nowy dzień odbioru: czwartek.\n\nProsimy o wystawianie pojemników do godziny 7:00.',
    author: 'Administracja Osiedla', scope: 'Cała wspólnota', time: '4 dni temu', date: '25 maja 2026, 10:15',
    attachments: [],
  },
];

// ── Usterki ──
const FAULTS = [
  {
    id: 1247, cat: 'winda', status: 'wtrakcie', priority: 'wysoki', mine: true,
    title: 'Winda w klatce B2 zatrzymuje się między piętrami',
    location: 'Część wspólna · Budynek B, klatka 2',
    desc: 'Winda od rana zatrzymuje się między 3. a 4. piętrem i nie reaguje na przyciski. Słychać niepokojący dźwięk.',
    reporter: 'Ty', time: '5 godz. temu', photos: 1,
    assignee: 'Serwis WindTech',
    timeline: [
      { status: 'nowe',     date: '29 maja, 07:42', by: 'Ty', note: 'Zgłoszenie utworzone.' },
      { status: 'przyjete', date: '29 maja, 08:10', by: 'Administracja', note: 'Zgłoszenie przyjęte i zweryfikowane.' },
      { status: 'wtrakcie', date: '29 maja, 09:30', by: 'Administracja', note: 'Przekazano do serwisu WindTech. Przyjazd technika do 14:00.' },
    ],
    comments: [
      { author: 'Administracja', system: false, time: '08:12', text: 'Dziękujemy za zgłoszenie. Winda została wyłączona ze względów bezpieczeństwa.' },
    ],
  },
  {
    id: 1243, cat: 'hydraulika', status: 'rozwiazane', priority: 'średni', mine: true, rated: false,
    title: 'Cieknący kran w łazience',
    location: 'Mój lokal · B/24',
    desc: 'Kran w łazience kapie nieprzerwanie, nie można go dokręcić.',
    reporter: 'Ty', time: '2 dni temu', photos: 2,
    assignee: 'Serwis Hydro-Fix',
    timeline: [
      { status: 'nowe',     date: '27 maja, 16:20', by: 'Ty' },
      { status: 'przyjete', date: '27 maja, 16:55', by: 'Administracja' },
      { status: 'wtrakcie', date: '28 maja, 10:00', by: 'Serwis Hydro-Fix' },
      { status: 'rozwiazane', date: '28 maja, 12:30', by: 'Serwis Hydro-Fix', note: 'Wymieniono uszczelkę i głowicę. Prosimy o ocenę.' },
    ],
    comments: [],
  },
  {
    id: 1251, cat: 'czystosc', status: 'nowe', priority: 'niski', mine: false,
    title: 'Rozsypane śmieci przy wiacie na odpady',
    location: 'Część wspólna · Wiata B',
    desc: 'Worki rozerwane, śmieci wokół wiaty.', reporter: 'Mieszkaniec B/12', time: '3 godz. temu', photos: 1,
    timeline: [{ status: 'nowe', date: '29 maja, 09:50', by: 'Mieszkaniec B/12' }],
    comments: [],
  },
  {
    id: 1239, cat: 'zielone', status: 'zamkniete', priority: 'niski', mine: false,
    title: 'Połamana gałąź nad parkingiem rowerowym',
    location: 'Część wspólna · Dziedziniec A', desc: 'Gałąź wisi nad stojakami.', reporter: 'Mieszkaniec A/8', time: '6 dni temu', photos: 0,
    timeline: [{ status: 'zamkniete', date: '24 maja', by: 'Administracja' }],
    comments: [],
  },
];

// ── Zasoby do rezerwacji ──
const RESOURCES = [
  { id: 'sala',   label: 'Sala wspólna', icon: 'users',    rule: 'maks. 4 godz. · limit 2/mies.', fee: 'bezpłatne', needsApproval: false },
  { id: 'grill',  label: 'Strefa grilla',icon: 'sparkles', rule: 'maks. 5 godz. · limit 1/mies.', fee: '20 zł / rezerwacja', needsApproval: false },
  { id: 'boisko', label: 'Boisko',       icon: 'star',     rule: 'maks. 2 godz.',                  fee: 'bezpłatne', needsApproval: false },
  { id: 'parking',label: 'Parking gościnny', icon: 'mapPin', rule: 'maks. 48 godz.',              fee: 'bezpłatne', needsApproval: true },
];

const UPCOMING = [
  { id: 1, resource: 'Sala wspólna', date: '1 czerwca 2026', time: '17:00–20:00', status: 'potwierdzona' },
];

// ── Uchwała / głosowanie ──
const RESOLUTION = {
  number: 'Uchwała nr 4/2026',
  title: 'Termomodernizacja elewacji budynku B',
  deadline: 'Głosowanie do 10 czerwca 2026',
  status: 'trwa',
  mode: 'Głosowanie liczone według udziałów',
  body: 'Wspólnota Mieszkaniowa „Zielone Tarasy" podejmuje uchwałę w sprawie wykonania termomodernizacji elewacji budynku B wraz z wymianą stolarki okiennej w częściach wspólnych.\n\nSzacowany koszt: 480 000 zł, finansowany z funduszu remontowego oraz kredytu termomodernizacyjnego. Realizacja: III–IV kwartał 2026.',
  quorumLabel: 'Wymagane kworum: 50% udziałów',
  results: { za: 38, przeciw: 9, wstrzym: 4, frekwencja: 51, prog: 50 },
  attachments: [{ name: 'Kosztorys_termomodernizacja.pdf', kind: 'pdf' }, { name: 'Projekt_uchwaly_4-2026.pdf', kind: 'pdf' }],
};

// ── Powiadomienia ──
const NOTIFICATIONS = [
  { id: 1, icon: 'wrench', color: 'cat-winda', title: 'Twoja usterka #1247 zmieniła status', desc: 'W trakcie — przekazano do serwisu WindTech', time: '20 min temu', unread: true },
  { id: 2, icon: 'megaphone', color: 'danger', title: 'Nowy komunikat: wyłączenie wody', desc: 'Wymaga potwierdzenia zapoznania', time: '2 godz. temu', unread: true },
  { id: 3, icon: 'vote', color: 'accent', title: 'Trwa głosowanie nad Uchwałą 4/2026', desc: 'Oddaj głos do 10 czerwca', time: '1 dzień temu', unread: true },
  { id: 4, icon: 'checkCircle', color: 'success', title: 'Usterka #1243 rozwiązana', desc: 'Możesz teraz ocenić obsługę zgłoszenia', time: '1 dzień temu', unread: false },
  { id: 5, icon: 'calendar', color: 'brand', title: 'Rezerwacja potwierdzona', desc: 'Sala wspólna · 1 czerwca, 17:00–20:00', time: '2 dni temu', unread: false },
];

// ── Dokumenty / kontakty (dla sekcji Więcej) ──
const DOC_CATS = [
  { label: 'Regulaminy', count: 4, icon: 'fileText' },
  { label: 'Sprawozdania', count: 7, icon: 'wallet' },
  { label: 'Uchwały', count: 12, icon: 'vote' },
  { label: 'Protokoły zebrań', count: 5, icon: 'users' },
];
const CONTACTS = [
  { name: 'Administracja osiedla', role: 'Biuro zarządcy', phone: '+48 22 100 20 30' },
  { name: 'Pogotowie techniczne', role: 'Awarie 24/7', phone: '+48 600 100 200' },
  { name: 'Ochrona osiedla', role: 'Portiernia bud. A', phone: '+48 600 300 400' },
];

const USER = { name: 'Anna Kowalska', flat: 'ul. Zielona 12B / lok. 24', initials: 'AK', community: 'Zielone Tarasy', isOwner: true };

// avatar color deterministyczny z nazwiska
function avatarHue(str) {
  let h = 0; for (let i = 0; i < str.length; i++) h = (h * 31 + str.charCodeAt(i)) % 360;
  return h;
}

Object.assign(window, {
  ANN_CATS, FAULT_CATS, FAULT_STATUS, FAULT_FLOW,
  ANNOUNCEMENTS, FAULTS, RESOURCES, UPCOMING, RESOLUTION, NOTIFICATIONS,
  DOC_CATS, CONTACTS, USER, avatarHue,
});
