---
import path from "node:path";

import DefaultLayout from "../../layouts/DefaultLayout.astro";
import SectionRenderer from "../../components/sections/SectionRenderer.astro";
import InternetCards from "../../islands/Internet/InternetCards.jsx";

import { loadYamlFile } from "../../lib/loadYaml";

type SeoYaml = any;

type InternetParam = { klucz: string; label: string; value: string | number };
type InternetCena = { budynek: number | string; umowa: number | string; miesiecznie: number; aktywacja?: number };
type InternetCard = { nazwa: string; widoczny?: boolean; popularny?: boolean; parametry?: InternetParam[]; ceny?: InternetCena[] };
type InternetCardsYaml = {
  tytul?: string;
  opis?: string;
  waluta?: string;
  cena_opis?: string;
  cards?: InternetCard[];
};

// TELEFON YAML (twój format)
type PhoneParam = { klucz: string; label: string; value: string | number };
type PhoneCard = { nazwa: string; widoczny?: boolean; popularny?: boolean; cena?: { wartosc: number; opis?: string }; parametry?: PhoneParam[] };
type PhoneCardsYaml = { cards?: PhoneCard[] };

// ADDONS YAML (twój format)
type Addon = { id: string; nazwa: string; typ?: string; ilosc?: boolean; min?: number; max?: number; krok?: number; opis?: string; cena: number };
type AddonsYaml = { cena_opis?: string; dodatki?: Addon[] };

const seo = loadYamlFile<SeoYaml>(
  path.join(process.cwd(), "src", "content", "internet-swiatlowodowy", "seo.yaml"),
);

const data = loadYamlFile<InternetCardsYaml>(
  path.join(process.cwd(), "src", "content", "internet-swiatlowodowy", "cards.yaml"),
);

const phoneData = loadYamlFile<PhoneCardsYaml>(
  path.join(process.cwd(), "src", "content", "telefon", "cards.yaml"),
);

const addonsData = loadYamlFile<AddonsYaml>(
  path.join(process.cwd(), "src", "content", "internet-swiatlowodowy", "addons.yaml"),
);

const tytul = data?.tytul ?? "";
const opis = data?.opis ?? "Wybierz rodzaj budynku i czas trwania umowy";

const waluta = data?.waluta ?? "PLN";
const cenaOpis = data?.cena_opis ?? "zł/mies.";

const cards: InternetCard[] = Array.isArray(data?.cards)
  ? data.cards.filter((c) => c?.widoczny === true)
  : [];

const phoneCards: PhoneCard[] = Array.isArray(phoneData?.cards)
  ? phoneData.cards.filter((c) => c?.widoczny === true)
  : [];

const addons: Addon[] = Array.isArray(addonsData?.dodatki)
  ? addonsData.dodatki
  : [];

// jeśli chcesz, możesz nadpisać cenaOpis w modalu z addons.yaml:
const addonsCenaOpis = addonsData?.cena_opis ?? cenaOpis;

type SwitchOption = { id: string | number; nazwa: string };
type SwitchDef = {
  id: string;
  etykieta?: string;
  title?: string;
  domyslny?: string | number;
  opcje: SwitchOption[];
};
type SwitchesYaml = { switches?: SwitchDef[] };

const switchesData = loadYamlFile<SwitchesYaml>(
  path.join(process.cwd(), "src", "content", "site", "switches.yaml"),
);

const switches: SwitchDef[] = Array.isArray(switchesData?.switches)
  ? switchesData.switches
  : [];
---

<DefaultLayout seo={seo}>
  <section class="f-section">
    <div class="f-section-grid-single md:grid-cols-1">
      <InternetCards
        client:load
        title={tytul}
        description={opis}
        cards={cards}
        waluta={waluta}
        cenaOpis={cenaOpis}
        phoneCards={phoneCards}
        addons={addons}
        addonsCenaOpis={addonsCenaOpis}
        switches={switches}
      />
    </div>
  </section>

  <SectionRenderer src="./src/content/internet-swiatlowodowy/section.yaml" />
</DefaultLayout>
