diff --git a/.claude/settings.local.json b/.claude/settings.local.json
new file mode 100644
index 0000000..a48b55d
--- /dev/null
+++ b/.claude/settings.local.json
@@ -0,0 +1,11 @@
+{
+ "permissions": {
+ "allow": [
+ "Bash(git add:*)",
+ "Bash(git commit:*)",
+ "Bash(cat:*)"
+ ],
+ "deny": [],
+ "ask": []
+ }
+}
diff --git a/assets/js/donation-tabs.js b/assets/js/donation-tabs.js
deleted file mode 100644
index 6325a54..0000000
--- a/assets/js/donation-tabs.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Gestion des onglets de donation (ponctuel / mensuel)
- */
-document.addEventListener('DOMContentLoaded', function() {
- const tabButtons = document.querySelectorAll('.nav--tabs__btn');
- const donationLinks = document.querySelectorAll('.btn--donation[data-amount]');
-
- if (tabButtons.length === 0 || donationLinks.length === 0) return;
-
- tabButtons.forEach(button => {
- button.addEventListener('click', function() {
- // Retirer la classe is-selected de tous les boutons
- tabButtons.forEach(btn => btn.classList.remove('is-selected'));
-
- // Ajouter la classe is-selected au bouton cliqué
- this.classList.add('is-selected');
-
- // Récupérer l'intervalle (o = ponctuel, m = mensuel)
- const interval = this.getAttribute('data-interval');
-
- // Mettre à jour les liens de donation
- donationLinks.forEach(link => {
- const amount = link.getAttribute('data-amount');
- const currentHref = link.getAttribute('href');
-
- // Remplacer l'intervalle dans l'URL
- const newHref = currentHref.replace(
- /default_interval=[om]/,
- `default_interval=${interval}`
- );
-
- link.setAttribute('href', newHref);
-
- // Mettre à jour le texte (ajouter /mois pour mensuel)
- const amountSpan = link.querySelector('.amount-value');
- const boldText = link.querySelector('.bold');
-
- if (amountSpan && boldText) {
- if (interval === 'm') {
- boldText.innerHTML = `${amount}€/mois`;
- } else {
- boldText.innerHTML = `${amount}€`;
- }
- }
- });
-
- // Mettre à jour aussi le lien "Montant libre"
- const freeAmountLink = document.querySelector('.btn--donation:not([data-amount])');
- if (freeAmountLink) {
- const currentHref = freeAmountLink.getAttribute('href');
- const newHref = currentHref.replace(
- /default_interval=[om]/,
- `default_interval=${interval}`
- );
- freeAmountLink.setAttribute('href', newHref);
- }
- });
- });
-});
diff --git a/assets/js/script.js b/assets/js/script.js
new file mode 100644
index 0000000..7e121fe
--- /dev/null
+++ b/assets/js/script.js
@@ -0,0 +1,51 @@
+function updateLinkInterval(link, interval) {
+ const currentHref = link.getAttribute("href");
+ const newHref = currentHref.replace(
+ /default_interval=[om]/,
+ `default_interval=${interval}`
+ );
+ link.setAttribute("href", newHref);
+}
+
+function updateAmountDisplay(link, amount, interval) {
+ const boldText = link.querySelector(".bold");
+ if (!boldText) return;
+
+ const suffix = interval === "m" ? "€/mois" : "€";
+ boldText.innerHTML = `${amount}${suffix}`;
+}
+
+function switchActiveTab(clickedButton, allButtons) {
+ allButtons.forEach((btn) => btn.classList.remove("is-selected"));
+ clickedButton.classList.add("is-selected");
+}
+
+function handleDonationIntervalChange(interval) {
+ const donationLinks = document.querySelectorAll(".btn--donation[data-amount]");
+ const freeAmountLink = document.querySelector(".btn--donation:not([data-amount])");
+
+ donationLinks.forEach((link) => {
+ const amount = link.getAttribute("data-amount");
+ updateLinkInterval(link, interval);
+ updateAmountDisplay(link, amount, interval);
+ });
+
+ if (freeAmountLink) {
+ updateLinkInterval(freeAmountLink, interval);
+ }
+}
+
+document.addEventListener("DOMContentLoaded", function () {
+ const tabButtons = document.querySelectorAll(".nav--tabs__btn");
+ const donationLinks = document.querySelectorAll(".btn--donation[data-amount]");
+
+ if (tabButtons.length === 0 || donationLinks.length === 0) return;
+
+ tabButtons.forEach((button) => {
+ button.addEventListener("click", function () {
+ const interval = this.getAttribute("data-interval");
+ switchActiveTab(this, tabButtons);
+ handleDonationIntervalChange(interval);
+ });
+ });
+});
diff --git a/site/snippets/footer.php b/site/snippets/footer.php
index c6f66be..0e1fcd2 100644
--- a/site/snippets/footer.php
+++ b/site/snippets/footer.php
@@ -1,3 +1,3 @@
-
+