···11export { default as Navigation } from "./header/Navigation.svelte";
22export { default as Footer } from "./footer/Main.svelte";
33export { default as ThemeToggle } from "./header/ThemeToggle.svelte";
44+export { default as HeaderMain } from "./header/Main.svelte";
+67
src/lib/components/shared/NoScriptFallback.svelte
···11+<noscript>
22+ <div
33+ class="fixed inset-0 bg-black bg-opacity-70 backdrop-blur-md flex justify-center items-center z-50 p-4 sm:p-6"
44+ role="alertdialog"
55+ aria-modal="true"
66+ tabindex="0"
77+ >
88+ <div
99+ class="w-full max-w-xs sm:max-w-sm md:max-w-md bg-card rounded-lg shadow-lg overflow-hidden"
1010+ >
1111+ <article class="flex flex-col p-4 sm:p-5">
1212+ <header class="flex flex-col items-start gap-1 sm:gap-2 mb-3 sm:mb-4">
1313+ <h3
1414+ class="text-base sm:text-lg font-semibold m-0 text-[var(--link-color)] leading-tight"
1515+ >
1616+ JavaScript is disabled. Please enable it to use this site.
1717+ </h3>
1818+ <p class="text-xs opacity-60">
1919+ Sorry for the inconvenience, but the site needs JavaScript to work
2020+ properly.
2121+ </p>
2222+ </header>
2323+2424+ <div class="text-sm sm:text-base text-[var(--text-color)]">
2525+ <p class="mb-3 sm:mb-4">
2626+ Here’s how to enable JavaScript in your browser:
2727+ </p>
2828+ <ul class="list-disc list-inside mb-3 sm:mb-4 space-y-1 sm:space-y-2">
2929+ <a
3030+ href="https://www.ionos.co.uk/digitalguide/websites/web-development/enable-javascript-in-safari/"
3131+ target="_blank"
3232+ rel="noopener noreferrer"
3333+ lang="en-gb"
3434+ class="font-semibold text-[var(--link-color)] underline hover:text-[var(--link-hover-color)] focus:outline-none focus:ring-2 focus:ring-[var(--link-color)]"
3535+ >
3636+ Enable JavaScript in Safari
3737+ </a>
3838+ <a
3939+ href="https://www.ionos.co.uk/digitalguide/websites/web-development/enable-javascript/"
4040+ target="_blank"
4141+ rel="noopener noreferrer"
4242+ lang="en-gb"
4343+ class="font-semibold text-[var(--link-color)] underline hover:text-[var(--link-hover-color)] focus:outline-none focus:ring-2 focus:ring-[var(--link-color)]"
4444+ >
4545+ Enable JavaScript in Chrome
4646+ </a>
4747+ <a
4848+ href="https://www.ionos.co.uk/digitalguide/websites/web-development/enable-javascript-in-firefox/"
4949+ target="_blank"
5050+ rel="noopener noreferrer"
5151+ lang="en-gb"
5252+ class="font-semibold text-[var(--link-color)] underline hover:text-[var(--link-hover-color)] focus:outline-none focus:ring-2 focus:ring-[var(--link-color)]"
5353+ >
5454+ Enable JavaScript in Firefox
5555+ </a>
5656+ </ul>
5757+ <p>
5858+ This website relies heavily on JavaScript to load content, manage
5959+ navigation, and provide interactive features. Without JavaScript
6060+ enabled, many parts of the site won’t function correctly, and you
6161+ may miss out on the full experience.
6262+ </p>
6363+ </div>
6464+ </article>
6565+ </div>
6666+ </div>
6767+</noscript>
+1
src/lib/components/shared/index.ts
···11export * from "./interfaces";
22export { default as NotFoundMessage } from "./NotFoundMessage.svelte";
33+export { default as NoScriptMessage } from "./NoScriptFallback.svelte";
+6-2
src/routes/+layout.svelte
···33 import { getStores } from "$app/stores";
44 const { page } = getStores();
55 import Profile from "$components/profile/Profile.svelte";
66- import { Footer } from "$components/layout";
77- import HeaderMain from "$components/layout/header/Main.svelte";
66+ import { Footer, HeaderMain } from "$components/layout";
77+ import { NoScriptMessage } from "$components/shared";
8899 let { data, children } = $props();
1010···1616 const isBlogIndex = $derived($page.route.id === "/blog");
1717</script>
18181919+<!-- NoScript fallback -->
2020+<NoScriptMessage />
2121+2222+<!-- Main layout structure -->
1923<div class="box-border mx-auto px-4 sm:px-8 max-w-[1000px] pb-8">
2024 <HeaderMain {isHomePage} {isBlogIndex} />
2125