// shared.jsx – wspólne dane i komponenty pomocnicze dla 3 wariantów

const STEPS = [
  {
    n: '01',
    title: 'Wybór formy prawnej',
    short: 'JDG, sp. z o.o. czy spółka partnerska – co się opłaca?',
    time: '1–3 dni',
    cost: '0–600 zł',
    bullets: [
      'JDG – najszybciej, ale pełna odpowiedzialność majątkiem',
      'Sp. z o.o. – ograniczona odpowiedzialność, więcej formalności',
      'Spółka partnerska – tylko dla wolnych zawodów',
    ],
  },
  {
    n: '02',
    title: 'Lokal i wymagania sanepidu',
    short: 'Odbiór sanitarny, instalacje, dostępność dla niepełnosprawnych.',
    time: '4–8 tygodni',
    cost: 'od 15 000 zł',
    bullets: [
      'Wymogi rozporządzenia MZ z 26 marca 2019 r.',
      'Decyzja PSSE / pozytywna opinia sanepidu',
      'Dostępność dla osób z niepełnosprawnościami',
    ],
  },
  {
    n: '03',
    title: 'Personel i kwalifikacje',
    short: 'Kierownik medyczny, kadra, badania, BHP.',
    time: '2–6 tygodni',
    cost: 'wg etatu',
    bullets: [
      'Kierownik z prawem wykonywania zawodu',
      'Umowy z personelem (B2B / etat / kontrakt)',
      'Polisa OC obowiązkowa',
    ],
  },
  {
    n: '04',
    title: 'Wpis do RPWDL',
    short: 'Rejestr Podmiotów Wykonujących Działalność Leczniczą.',
    time: '14–30 dni',
    cost: '~600 zł',
    bullets: [
      'Wniosek przez profil zaufany',
      'Wpis do księgi rejestrowej wojewody',
      'Numer księgi rejestrowej dla NZOZ',
    ],
  },
  {
    n: '05',
    title: 'Dokumentacja i RODO',
    short: 'Regulamin, polityki, EDM, IOD jeśli wymagany.',
    time: '1–2 tygodnie',
    cost: 'od 2 500 zł',
    bullets: [
      'Regulamin organizacyjny podmiotu',
      'Polityka ochrony danych + rejestr czynności',
      'Elektroniczna dokumentacja medyczna (EDM)',
    ],
  },
  {
    n: '06',
    title: 'Kontrakt z NFZ',
    short: 'Konkurs ofert, kolejka oczekujących, sprawozdawczość. Krok opcjonalny.',
    time: '3–6 miesięcy',
    cost: '–',
    bullets: [
      'Konkurs ofert NFZ – terminy ogłaszane regionalnie',
      'Wymagana sprawozdawczość P1 / SZOI',
      'Możliwość startu komercyjnego bez kontraktu',
    ],
  },
];

const FAQ = [
  {
    q: 'Czy mogę założyć NZOZ jako jednoosobowa działalność?',
    a: 'Tak. Lekarz wykonujący zawód w ramach JDG może zarejestrować praktykę jako podmiot leczniczy w RPWDL. Sp. z o.o. wybiera się głównie dla ograniczenia odpowiedzialności i optymalizacji podatkowej powyżej pewnej skali.',
  },
  {
    q: 'Ile kosztuje uruchomienie małego NZOZ?',
    a: 'Realny minimalny budżet to ok. 80 000–150 000 zł, zakładając wynajem lokalu, podstawowe wyposażenie, dokumentację, system EDM i 3 miesiące rezerwy operacyjnej. Pełny gabinet z USG i diagnostyką to 250 000+.',
  },
  {
    q: 'Czy potrzebuję kierownika medycznego?',
    a: 'Tak – każdy podmiot leczniczy musi wskazać osobę kierującą. W jednoosobowej praktyce lekarskiej kierownikiem jest sam lekarz. W NZOZ z personelem trzeba wskazać konkretną osobę z prawem wykonywania zawodu.',
  },
  {
    q: 'Ile trwa cała procedura?',
    a: 'Zakładając równoległe prowadzenie wątków: 8–14 tygodni od decyzji do otwarcia. Najwięcej czasu zabiera dostosowanie lokalu i odbiór sanepidu. Wpis do RPWDL trwa ustawowo do 30 dni.',
  },
  {
    q: 'Czy muszę mieć kontrakt z NFZ?',
    a: 'Nie. Wiele NZOZ działa wyłącznie komercyjnie. Kontrakt z NFZ daje stabilny przychód, ale wiąże się z kolejką oczekujących, sprawozdawczością i ograniczeniami cenowymi.',
  },
];

const COSTS = {
  registration: { label: 'Rejestracja i wpisy', base: 1500 },
  legal: { label: 'Doradztwo prawne i regulaminy', base: 4500 },
  premises: { label: 'Adaptacja lokalu', base: 35000 },
  equipment: { label: 'Wyposażenie medyczne', base: 28000 },
  software: { label: 'EDM i oprogramowanie (rok)', base: 4800 },
  marketing: { label: 'Marka i strona www', base: 6500 },
  reserve: { label: 'Rezerwa operacyjna (3 mies.)', base: 45000 },
};

// ── Interaktywny wizard hook ────────────────────────────────────
function useWizard(initial = 0) {
  const [step, setStep] = React.useState(initial);
  const [done, setDone] = React.useState(() => new Set());
  const toggle = (i) => setDone((s) => {
    const n = new Set(s);
    if (n.has(i)) n.delete(i); else n.add(i);
    return n;
  });
  return { step, setStep, done, toggle };
}

// ── Kalkulator hook ─────────────────────────────────────────────
function useCalculator() {
  const [size, setSize] = React.useState(60); // m²
  const [rooms, setRooms] = React.useState(2);
  const [staff, setStaff] = React.useState(3);
  const [nfz, setNfz] = React.useState(false);

  const items = React.useMemo(() => {
    const sizeMul = 1 + (size - 60) / 100;
    const roomMul = 0.7 + rooms * 0.3;
    const staffMul = 0.8 + staff * 0.15;
    return {
      registration: COSTS.registration.base + (nfz ? 800 : 0),
      legal: Math.round(COSTS.legal.base * (1 + (nfz ? 0.4 : 0))),
      premises: Math.round(COSTS.premises.base * sizeMul),
      equipment: Math.round(COSTS.equipment.base * roomMul),
      software: Math.round(COSTS.software.base * staffMul),
      marketing: COSTS.marketing.base,
      reserve: Math.round(COSTS.reserve.base * staffMul),
    };
  }, [size, rooms, staff, nfz]);

  const total = Object.values(items).reduce((a, b) => a + b, 0);
  return { size, setSize, rooms, setRooms, staff, setStaff, nfz, setNfz, items, total };
}

const fmtPLN = (n) => new Intl.NumberFormat('pl-PL').format(n) + ' zł';

// ── FAQ akordeon ────────────────────────────────────────────────
function useAccordion(initial = -1) {
  const [open, setOpen] = React.useState(initial);
  return { open, toggle: (i) => setOpen((c) => (c === i ? -1 : i)) };
}

Object.assign(window, {
  STEPS, FAQ, COSTS, useWizard, useCalculator, useAccordion, fmtPLN,
});
