import { createApp } from "vue";
import App from "./App.vue";
import router from "./router/index";
import "./index.css";
import { getHotelHomeContent, getSocialMedia } from "@/lib/hotelApi";
import { applyHotelBranding } from "@/lib/hotelBranding";
import { primeHotelHomeContent } from "@/composables/useHotelHomeContent";
import { getActiveLocale, initializeLocalization, t } from "@/composables/useLanguage";

// Locatide is the primary site now; its pages are hardcoded (no i18n, no
// hotel branding API) so the legacy hotel bootstrap fetches are skipped
// there and only run for the legacy hotel/tour routes under /legacy paths.
const isLocatideLanding = location.pathname === "/" || location.pathname.startsWith("/locatide");

async function bootstrap() {
  document.documentElement.lang = getActiveLocale();

  if (isLocatideLanding) {
    applyHotelBranding(null, { skipTitleAndFavicon: true });
  } else {
    await initializeLocalization().catch(() => undefined);

    try {
      const [payload, socialMedia] = await Promise.all([
        getHotelHomeContent(),
        getSocialMedia().catch(() => []),
      ]);
      primeHotelHomeContent(payload, socialMedia);
      applyHotelBranding(payload);
    } catch (error) {
      applyHotelBranding();
    }
  }

  const app = createApp(App);
  app.config.globalProperties.$t = t;
  app.use(router).mount("#app");
}

bootstrap();
