const normalizeUrl = (value: string) => (value.endsWith('/') ? value : `${value}/`);

const resolvedSiteUrl =
  import.meta.env.PUBLIC_SITE_URL ||
  process.env.PUBLIC_SITE_URL ||
  'https://electron-rare.github.io/';

const parsedSiteUrl = new URL(normalizeUrl(resolvedSiteUrl));
const resolvedBasePath = parsedSiteUrl.pathname === '/' ? '' : parsedSiteUrl.pathname.replace(/\/$/, '');

export const SITE_URL = parsedSiteUrl.href;
export const SITE_BASE_PATH = resolvedBasePath;
export const SITE_IS_SUBPATH_BUILD = SITE_BASE_PATH !== '';

export const CANONICAL_URL = 'https://www.lelectronrare.fr/';
export const PUBLIC_SITE_ROOT_URL = SITE_IS_SUBPATH_BUILD ? SITE_URL : CANONICAL_URL;

export function withSiteBase(value: string) {
  if (!value) {
    return SITE_BASE_PATH || '/';
  }

  if (/^(?:[a-z]+:)?\/\//i.test(value) || value.startsWith('mailto:') || value.startsWith('tel:')) {
    return value;
  }

  if (value.startsWith('#') || value.startsWith('?')) {
    return value;
  }

  const normalizedPath = value.startsWith('/') ? value : `/${value}`;
  return SITE_BASE_PATH ? `${SITE_BASE_PATH}${normalizedPath}` : normalizedPath;
}

export function stripSiteBase(pathname: string) {
  if (!pathname) {
    return '/';
  }

  if (!SITE_BASE_PATH) {
    return pathname;
  }

  if (pathname === SITE_BASE_PATH) {
    return '/';
  }

  if (pathname.startsWith(`${SITE_BASE_PATH}/`)) {
    return pathname.slice(SITE_BASE_PATH.length) || '/';
  }

  return pathname;
}

export const SITE_META = {
  title: "Systèmes électroniques spécifiques | L'électron rare",
  description:
    "Conception, mise au point et fiabilisation de systèmes électroniques spécifiques. Électronique, automatisme, énergie, stockage, instrumentation et projets multi-techniques.",
  ogDescription:
    "L'Électron Rare conçoit et fiabilise des systèmes électroniques spécifiques en électronique, automatisme, énergie et stockage, avec les partenaires adaptés quand le projet devient multi-technique.",
  twitterDescription:
    "Électronique, automatisme, énergie, stockage : systèmes spécifiques, mise au point et coordination multi-technique avec les bons partenaires.",
  ogImagePath: 'assets/og-cover.jpg',
  themeColor: '#5bd1d8',
  keywords: 'systèmes électroniques spécifiques, conception électronique sur mesure, prototype électronique, PCB KiCad, automatisme industriel, ESP32, STM32, IoT embarqué, formation électronique, énergie stockage batterie, CEM EMC, spectacle vivant DMX, consultant électronique France, IA embarquée, intelligence artificielle électronique',
  author: 'Clément Saillant',
  locale: 'fr_FR'
} as const;

export const SITE_OG_IMAGE_URL = new URL(SITE_META.ogImagePath, PUBLIC_SITE_ROOT_URL).href;

export const GTM_CONTAINER_ID_DEFAULT = 'GTM-5SLM67QF';
