diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx
index 86e154817..8cef26126 100644
--- a/src/components/Footer/index.tsx
+++ b/src/components/Footer/index.tsx
@@ -1,17 +1,21 @@
-import { Link } from 'gatsby-plugin-react-i18next';
import React from 'react';
import { FaYoutube, FaGithub, FaSlack, FaLinkedin } from 'react-icons/fa';
import { FaXTwitter } from 'react-icons/fa6';
import RandomContributor from '../RandomContributor';
import LanguageSelector from '../LanguageSelector';
-import { Trans } from 'gatsby-plugin-react-i18next';
+import { Link, Trans, useTranslation } from 'gatsby-plugin-react-i18next';
+import LeavingSiteDisclaimerModal from '../LeavingSiteDisclaimerModal';
import './Footer.scss';
const Footer = (): JSX.Element => {
+
+ const {t} = useTranslation();
+
return (
<>
@@ -51,7 +55,12 @@ const Footer = (): JSX.Element => {
-
+
diff --git a/src/components/LeavingSiteDisclaimerModal/__tests__/LeavingSiteDisclaimerModal.test.tsx b/src/components/LeavingSiteDisclaimerModal/__tests__/LeavingSiteDisclaimerModal.test.tsx
new file mode 100644
index 000000000..55a74b7b9
--- /dev/null
+++ b/src/components/LeavingSiteDisclaimerModal/__tests__/LeavingSiteDisclaimerModal.test.tsx
@@ -0,0 +1,26 @@
+import React from 'react';
+import userEvent from '@testing-library/user-event';
+import { render, screen } from '@testing-library/react';
+import { describe, expect, it, vi } from 'vitest'
+import LeavingSiteDisclaimerModal from '..';
+
+describe('LeavingSiteDisclaimerModal component', () => {
+ it('LeavingSiteDisclaimerModal renders correctly', () => {
+ const { container } = render(
+
+ );
+ expect(container).toMatchSnapshot();
+ });
+
+ it('LeavingSiteDisclaimerModal continue correctly', async () => {
+ const { container } = render(
+
+ );
+
+ const cancelButton = container.querySelector('button[class="btn btn-primary"]');
+
+ await userEvent.click(cancelButton).then(async() => {
+ expect(container).toMatchSnapshot();
+ });
+ });
+});
diff --git a/src/components/LeavingSiteDisclaimerModal/__tests__/__snapshots__/LeavingSiteDisclaimerModal.test.tsx.snap b/src/components/LeavingSiteDisclaimerModal/__tests__/__snapshots__/LeavingSiteDisclaimerModal.test.tsx.snap
new file mode 100644
index 000000000..407a66baf
--- /dev/null
+++ b/src/components/LeavingSiteDisclaimerModal/__tests__/__snapshots__/LeavingSiteDisclaimerModal.test.tsx.snap
@@ -0,0 +1,121 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`LeavingSiteDisclaimerModal component > LeavingSiteDisclaimerModal continue correctly 1`] = `
+
+`;
+
+exports[`LeavingSiteDisclaimerModal component > LeavingSiteDisclaimerModal renders correctly 1`] = `
+
+`;
diff --git a/src/components/LeavingSiteDisclaimerModal/index.tsx b/src/components/LeavingSiteDisclaimerModal/index.tsx
new file mode 100644
index 000000000..de91d5544
--- /dev/null
+++ b/src/components/LeavingSiteDisclaimerModal/index.tsx
@@ -0,0 +1,55 @@
+import React, { useState } from "react";
+import { Trans } from 'gatsby-plugin-react-i18next';
+
+const LeavingSiteDisclaimerModal = () => {
+
+ const [message, setMessage] = useState('');
+ const [location, setLocation] = useState('');
+
+ if (typeof window !== `undefined`) {
+ window.addEventListener('show.bs.modal', (event: Event) => {
+ let button = event.relatedTarget;
+ setMessage(button.getAttribute('data-bs-message'))
+ setLocation(button.getAttribute('data-bs-location'))
+ });
+ }
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+
+export default LeavingSiteDisclaimerModal;