const cdn = require("./src/_data/cdn.json");

module.exports = function(eleventyConfig) {
  // Locale-aware content: `t` resolves to the content bundle for the page's locale (fr by default)
  eleventyConfig.addGlobalData("eleventyComputed", {
    locale: (data) => data.locale || "fr",
    t: (data) => data.i18n[data.locale || "fr"]
  });

  // Serve local images through the BunnyCDN pull zone; leaves external URLs untouched
  eleventyConfig.addFilter("cdn", (path) => {
    if (typeof path !== "string" || !path.startsWith("/")) return path;
    return cdn.url + path;
  });

  // Copy assets folders to output
  eleventyConfig.addPassthroughCopy("src/assets");

  // Copy SEO files
  eleventyConfig.addPassthroughCopy("src/robots.txt");
  eleventyConfig.addPassthroughCopy("src/sitemap.xml");

  // Copy Apache security headers config to the site root
  eleventyConfig.addPassthroughCopy({ "src/.htaccess": ".htaccess" });

  // Watch CSS files for changes
  eleventyConfig.addWatchTarget("src/assets/css/");

  // Watch JS files for changes
  eleventyConfig.addWatchTarget("src/assets/js/");

  // Configure browser sync to reload on CSS changes
  eleventyConfig.setBrowserSyncConfig({
    files: ['_site/assets/css/**/*.css', '_site/assets/js/**/*.js']
  });

  return {
    dir: {
      input: "src",
      output: "_site",
      includes: "_includes",
      data: "_data"
    },
    templateFormats: ["html", "md", "njk", "liquid"],
    htmlTemplateEngine: "njk",
    markdownTemplateEngine: "njk"
  };
};
