Skip to content

Commit ea88631

Browse files
committed
disable client side rendering, removing 99% of javascript
1 parent f5f8c6d commit ea88631

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed

src/app.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<meta name="viewport" content="width=device-width, initial-scale=1" />
66
%sveltekit.head%
77
</head>
8-
<body data-sveltekit-preload-data="hover">
8+
<body>
99
%sveltekit.body%
1010
</body>
1111
</html>

src/routes/+layout.svelte

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,8 @@
22
import Moon from "@lucide/svelte/icons/moon";
33
import Sun from "@lucide/svelte/icons/sun";
44
import SunMoon from "@lucide/svelte/icons/sun-moon";
5-
import type { FormEventHandler } from "svelte/elements";
65
import Logo from "$lib/components/Logo.svelte";
76
8-
const oninput: FormEventHandler<HTMLInputElement> = (e) =>
9-
localStorage.setItem("theme", e.currentTarget.id);
10-
117
let { children } = $props();
128
</script>
139

@@ -29,24 +25,32 @@
2925
</nav>
3026
<theme-picker aria-label="Selector de temas" role="radiogroup">
3127
<label aria-label="Predeterminado">
32-
<input type="radio" name="theme" id="system" {oninput} checked />
28+
<input type="radio" name="theme" id="system" checked />
3329
<SunMoon />
3430
</label>
3531
<label aria-label="Claro">
36-
<input type="radio" name="theme" id="light" {oninput} />
32+
<input type="radio" name="theme" id="light" />
3733
<Sun />
3834
</label>
3935
<label aria-label="Oscuro">
40-
<input type="radio" name="theme" id="dark" {oninput} />
36+
<input type="radio" name="theme" id="dark" />
4137
<Moon />
4238
</label>
4339
</theme-picker>
4440
<script>
45-
// needs to be an inline script so that it runs asap
41+
// this is the only javascript that runs in the entire site
42+
// all it does is saving and loading the saved theme
43+
// all other logic is pure html/css
4644
const theme = localStorage.getItem("theme");
4745
if (theme) {
4846
document.getElementById(theme).checked = true;
4947
}
48+
49+
const oninput = (e) => localStorage.setItem("theme", e.target.id);
50+
51+
document.getElementById("system").addEventListener("input", oninput);
52+
document.getElementById("light").addEventListener("input", oninput);
53+
document.getElementById("dark").addEventListener("input", oninput);
5054
</script>
5155
</header>
5256
{@render children()}

src/routes/+layout.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1+
import { dev } from '$app/environment';
2+
3+
export const csr = dev;
14
export const prerender = true;
25
export const ssr = true;

src/routes/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100
</sponsors-section>
101101
</div>
102102
<enhanced:img
103-
src="$lib/assets/etsii.jpg?w=800;400"
103+
src="$lib/assets/etsii.jpg?w=600;400"
104104
width="400"
105105
sizes="400px"
106106
alt="Edificio de la ETSII"

0 commit comments

Comments
 (0)