diff --git a/content/1-reactivity/1-declare-state/svelte/Name.svelte b/content/1-reactivity/1-declare-state/svelte4/Name.svelte
similarity index 100%
rename from content/1-reactivity/1-declare-state/svelte/Name.svelte
rename to content/1-reactivity/1-declare-state/svelte4/Name.svelte
diff --git a/content/1-reactivity/1-declare-state/svelte5/Name.svelte b/content/1-reactivity/1-declare-state/svelte5/Name.svelte
new file mode 100644
index 0000000..7f65226
--- /dev/null
+++ b/content/1-reactivity/1-declare-state/svelte5/Name.svelte
@@ -0,0 +1,5 @@
+
+
+
Hello {name}
diff --git a/content/1-reactivity/2-update-state/svelte/Name.svelte b/content/1-reactivity/2-update-state/svelte4/Name.svelte
similarity index 100%
rename from content/1-reactivity/2-update-state/svelte/Name.svelte
rename to content/1-reactivity/2-update-state/svelte4/Name.svelte
diff --git a/content/1-reactivity/2-update-state/svelte5/Name.svelte b/content/1-reactivity/2-update-state/svelte5/Name.svelte
new file mode 100644
index 0000000..a6a11e1
--- /dev/null
+++ b/content/1-reactivity/2-update-state/svelte5/Name.svelte
@@ -0,0 +1,6 @@
+
+
+Hello {name}
diff --git a/content/1-reactivity/3-computed-state/svelte/DoubleCount.svelte b/content/1-reactivity/3-computed-state/svelte4/DoubleCount.svelte
similarity index 100%
rename from content/1-reactivity/3-computed-state/svelte/DoubleCount.svelte
rename to content/1-reactivity/3-computed-state/svelte4/DoubleCount.svelte
diff --git a/content/1-reactivity/3-computed-state/svelte5/DoubleCount.svelte b/content/1-reactivity/3-computed-state/svelte5/DoubleCount.svelte
new file mode 100644
index 0000000..a685a81
--- /dev/null
+++ b/content/1-reactivity/3-computed-state/svelte5/DoubleCount.svelte
@@ -0,0 +1,6 @@
+
+
+{doubleCount}
diff --git a/content/2-templating/1-minimal-template/svelte/HelloWorld.svelte b/content/2-templating/1-minimal-template/svelte4/HelloWorld.svelte
similarity index 100%
rename from content/2-templating/1-minimal-template/svelte/HelloWorld.svelte
rename to content/2-templating/1-minimal-template/svelte4/HelloWorld.svelte
diff --git a/content/7-webapp-features/1-render-app/svelte/App.svelte b/content/2-templating/1-minimal-template/svelte5/HelloWorld.svelte
similarity index 100%
rename from content/7-webapp-features/1-render-app/svelte/App.svelte
rename to content/2-templating/1-minimal-template/svelte5/HelloWorld.svelte
diff --git a/content/2-templating/2-styling/svelte/CssStyle.svelte b/content/2-templating/2-styling/svelte4/CssStyle.svelte
similarity index 100%
rename from content/2-templating/2-styling/svelte/CssStyle.svelte
rename to content/2-templating/2-styling/svelte4/CssStyle.svelte
diff --git a/content/2-templating/2-styling/svelte5/CssStyle.svelte b/content/2-templating/2-styling/svelte5/CssStyle.svelte
new file mode 100644
index 0000000..dac20ee
--- /dev/null
+++ b/content/2-templating/2-styling/svelte5/CssStyle.svelte
@@ -0,0 +1,8 @@
+I am red
+
+
+
diff --git a/content/2-templating/3-loop/svelte/Colors.svelte b/content/2-templating/3-loop/svelte4/Colors.svelte
similarity index 100%
rename from content/2-templating/3-loop/svelte/Colors.svelte
rename to content/2-templating/3-loop/svelte4/Colors.svelte
diff --git a/content/2-templating/3-loop/svelte5/Colors.svelte b/content/2-templating/3-loop/svelte5/Colors.svelte
new file mode 100644
index 0000000..4ce949e
--- /dev/null
+++ b/content/2-templating/3-loop/svelte5/Colors.svelte
@@ -0,0 +1,9 @@
+
+
+
+ {#each colors as color (color)}
+ - {color}
+ {/each}
+
diff --git a/content/2-templating/4-event-click/svelte/Counter.svelte b/content/2-templating/4-event-click/svelte4/Counter.svelte
similarity index 100%
rename from content/2-templating/4-event-click/svelte/Counter.svelte
rename to content/2-templating/4-event-click/svelte4/Counter.svelte
diff --git a/content/2-templating/4-event-click/svelte5/Counter.svelte b/content/2-templating/4-event-click/svelte5/Counter.svelte
new file mode 100644
index 0000000..1a6eb50
--- /dev/null
+++ b/content/2-templating/4-event-click/svelte5/Counter.svelte
@@ -0,0 +1,10 @@
+
+
+Counter: {count}
+
diff --git a/content/2-templating/5-dom-ref/svelte/InputFocused.svelte b/content/2-templating/5-dom-ref/svelte4/InputFocused.svelte
similarity index 100%
rename from content/2-templating/5-dom-ref/svelte/InputFocused.svelte
rename to content/2-templating/5-dom-ref/svelte4/InputFocused.svelte
diff --git a/content/2-templating/5-dom-ref/svelte5/InputFocused.svelte b/content/2-templating/5-dom-ref/svelte5/InputFocused.svelte
new file mode 100644
index 0000000..f0ae463
--- /dev/null
+++ b/content/2-templating/5-dom-ref/svelte5/InputFocused.svelte
@@ -0,0 +1,9 @@
+
+
+
diff --git a/content/2-templating/6-conditional/svelte/TrafficLight.svelte b/content/2-templating/6-conditional/svelte4/TrafficLight.svelte
similarity index 100%
rename from content/2-templating/6-conditional/svelte/TrafficLight.svelte
rename to content/2-templating/6-conditional/svelte4/TrafficLight.svelte
diff --git a/content/2-templating/6-conditional/svelte5/TrafficLight.svelte b/content/2-templating/6-conditional/svelte5/TrafficLight.svelte
new file mode 100644
index 0000000..634d7d4
--- /dev/null
+++ b/content/2-templating/6-conditional/svelte5/TrafficLight.svelte
@@ -0,0 +1,23 @@
+
+
+
+Light is: {light}
+
+ You must
+ {#if light === "red"}
+ STOP
+ {:else if light === "orange"}
+ SLOW DOWN
+ {:else if light === "green"}
+ GO
+ {/if}
+
diff --git a/content/3-lifecycle/1-on-mount/svelte/PageTitle.svelte b/content/3-lifecycle/1-on-mount/svelte4/PageTitle.svelte
similarity index 100%
rename from content/3-lifecycle/1-on-mount/svelte/PageTitle.svelte
rename to content/3-lifecycle/1-on-mount/svelte4/PageTitle.svelte
diff --git a/content/3-lifecycle/1-on-mount/svelte5/PageTitle.svelte b/content/3-lifecycle/1-on-mount/svelte5/PageTitle.svelte
new file mode 100644
index 0000000..7bf9eab
--- /dev/null
+++ b/content/3-lifecycle/1-on-mount/svelte5/PageTitle.svelte
@@ -0,0 +1,8 @@
+
+
+Page title is: {pageTitle}
diff --git a/content/3-lifecycle/2-on-unmount/svelte/Time.svelte b/content/3-lifecycle/2-on-unmount/svelte4/Time.svelte
similarity index 100%
rename from content/3-lifecycle/2-on-unmount/svelte/Time.svelte
rename to content/3-lifecycle/2-on-unmount/svelte4/Time.svelte
diff --git a/content/3-lifecycle/2-on-unmount/svelte5/Time.svelte b/content/3-lifecycle/2-on-unmount/svelte5/Time.svelte
new file mode 100644
index 0000000..15d303a
--- /dev/null
+++ b/content/3-lifecycle/2-on-unmount/svelte5/Time.svelte
@@ -0,0 +1,13 @@
+
+
+Current time: {time}
diff --git a/content/4-component-composition/1-props/svelte/App.svelte b/content/4-component-composition/1-props/svelte4/App.svelte
similarity index 100%
rename from content/4-component-composition/1-props/svelte/App.svelte
rename to content/4-component-composition/1-props/svelte4/App.svelte
diff --git a/content/4-component-composition/1-props/svelte/UserProfile.svelte b/content/4-component-composition/1-props/svelte4/UserProfile.svelte
similarity index 100%
rename from content/4-component-composition/1-props/svelte/UserProfile.svelte
rename to content/4-component-composition/1-props/svelte4/UserProfile.svelte
diff --git a/content/4-component-composition/1-props/svelte5/App.svelte b/content/4-component-composition/1-props/svelte5/App.svelte
new file mode 100644
index 0000000..4d39c2e
--- /dev/null
+++ b/content/4-component-composition/1-props/svelte5/App.svelte
@@ -0,0 +1,10 @@
+
+
+
diff --git a/content/4-component-composition/1-props/svelte5/UserProfile.svelte b/content/4-component-composition/1-props/svelte5/UserProfile.svelte
new file mode 100644
index 0000000..a18a48d
--- /dev/null
+++ b/content/4-component-composition/1-props/svelte5/UserProfile.svelte
@@ -0,0 +1,13 @@
+
+
+My name is {name}!
+My age is {age}!
+My favourite colors are {favouriteColors.join(", ")}!
+I am {isAvailable ? "available" : "not available"}
diff --git a/content/4-component-composition/2-emit-to-parent/svelte/AnswerButton.svelte b/content/4-component-composition/2-emit-to-parent/svelte4/AnswerButton.svelte
similarity index 100%
rename from content/4-component-composition/2-emit-to-parent/svelte/AnswerButton.svelte
rename to content/4-component-composition/2-emit-to-parent/svelte4/AnswerButton.svelte
diff --git a/content/4-component-composition/2-emit-to-parent/svelte/App.svelte b/content/4-component-composition/2-emit-to-parent/svelte4/App.svelte
similarity index 100%
rename from content/4-component-composition/2-emit-to-parent/svelte/App.svelte
rename to content/4-component-composition/2-emit-to-parent/svelte4/App.svelte
diff --git a/content/4-component-composition/2-emit-to-parent/svelte5/AnswerButton.svelte b/content/4-component-composition/2-emit-to-parent/svelte5/AnswerButton.svelte
new file mode 100644
index 0000000..97630c6
--- /dev/null
+++ b/content/4-component-composition/2-emit-to-parent/svelte5/AnswerButton.svelte
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/content/4-component-composition/2-emit-to-parent/svelte5/App.svelte b/content/4-component-composition/2-emit-to-parent/svelte5/App.svelte
new file mode 100644
index 0000000..a535059
--- /dev/null
+++ b/content/4-component-composition/2-emit-to-parent/svelte5/App.svelte
@@ -0,0 +1,17 @@
+
+
+Are you happy?
+
+{isHappy ? "😀" : "😥"}
diff --git a/content/4-component-composition/3-slot/svelte/App.svelte b/content/4-component-composition/3-slot/svelte4/App.svelte
similarity index 100%
rename from content/4-component-composition/3-slot/svelte/App.svelte
rename to content/4-component-composition/3-slot/svelte4/App.svelte
diff --git a/content/4-component-composition/3-slot/svelte/FunnyButton.svelte b/content/4-component-composition/3-slot/svelte4/FunnyButton.svelte
similarity index 100%
rename from content/4-component-composition/3-slot/svelte/FunnyButton.svelte
rename to content/4-component-composition/3-slot/svelte4/FunnyButton.svelte
diff --git a/content/4-component-composition/3-slot/svelte5/App.svelte b/content/4-component-composition/3-slot/svelte5/App.svelte
new file mode 100644
index 0000000..483f27f
--- /dev/null
+++ b/content/4-component-composition/3-slot/svelte5/App.svelte
@@ -0,0 +1,5 @@
+
+
+Click me!
diff --git a/content/4-component-composition/3-slot/svelte5/FunnyButton.svelte b/content/4-component-composition/3-slot/svelte5/FunnyButton.svelte
new file mode 100644
index 0000000..5f6a3c2
--- /dev/null
+++ b/content/4-component-composition/3-slot/svelte5/FunnyButton.svelte
@@ -0,0 +1,5 @@
+
diff --git a/content/4-component-composition/4-slot-fallback/svelte/App.svelte b/content/4-component-composition/4-slot-fallback/svelte4/App.svelte
similarity index 100%
rename from content/4-component-composition/4-slot-fallback/svelte/App.svelte
rename to content/4-component-composition/4-slot-fallback/svelte4/App.svelte
diff --git a/content/4-component-composition/4-slot-fallback/svelte/FunnyButton.svelte b/content/4-component-composition/4-slot-fallback/svelte4/FunnyButton.svelte
similarity index 100%
rename from content/4-component-composition/4-slot-fallback/svelte/FunnyButton.svelte
rename to content/4-component-composition/4-slot-fallback/svelte4/FunnyButton.svelte
diff --git a/content/4-component-composition/4-slot-fallback/svelte5/App.svelte b/content/4-component-composition/4-slot-fallback/svelte5/App.svelte
new file mode 100644
index 0000000..3d64cf4
--- /dev/null
+++ b/content/4-component-composition/4-slot-fallback/svelte5/App.svelte
@@ -0,0 +1,6 @@
+
+
+
+I got content!
diff --git a/content/4-component-composition/4-slot-fallback/svelte5/FunnyButton.svelte b/content/4-component-composition/4-slot-fallback/svelte5/FunnyButton.svelte
new file mode 100644
index 0000000..6a5cbd3
--- /dev/null
+++ b/content/4-component-composition/4-slot-fallback/svelte5/FunnyButton.svelte
@@ -0,0 +1,7 @@
+
diff --git a/content/4-component-composition/5-context/svelte/App.svelte b/content/4-component-composition/5-context/svelte4/App.svelte
similarity index 100%
rename from content/4-component-composition/5-context/svelte/App.svelte
rename to content/4-component-composition/5-context/svelte4/App.svelte
diff --git a/content/4-component-composition/5-context/svelte/UserProfile.svelte b/content/4-component-composition/5-context/svelte4/UserProfile.svelte
similarity index 100%
rename from content/4-component-composition/5-context/svelte/UserProfile.svelte
rename to content/4-component-composition/5-context/svelte4/UserProfile.svelte
diff --git a/content/4-component-composition/5-context/svelte/createUserStore.js b/content/4-component-composition/5-context/svelte4/createUserStore.js
similarity index 100%
rename from content/4-component-composition/5-context/svelte/createUserStore.js
rename to content/4-component-composition/5-context/svelte4/createUserStore.js
diff --git a/content/4-component-composition/5-context/svelte5/App.svelte b/content/4-component-composition/5-context/svelte5/App.svelte
new file mode 100644
index 0000000..427a055
--- /dev/null
+++ b/content/4-component-composition/5-context/svelte5/App.svelte
@@ -0,0 +1,17 @@
+
+
+Welcome back, {user.value.username}
+
diff --git a/content/4-component-composition/5-context/svelte5/UserProfile.svelte b/content/4-component-composition/5-context/svelte5/UserProfile.svelte
new file mode 100644
index 0000000..7eb0532
--- /dev/null
+++ b/content/4-component-composition/5-context/svelte5/UserProfile.svelte
@@ -0,0 +1,14 @@
+
+
+
+
My Profile
+
Username: {user.value.username}
+
Email: {user.value.email}
+
+
diff --git a/content/4-component-composition/5-context/svelte5/createUserState.js b/content/4-component-composition/5-context/svelte5/createUserState.js
new file mode 100644
index 0000000..a76e93b
--- /dev/null
+++ b/content/4-component-composition/5-context/svelte5/createUserState.js
@@ -0,0 +1,14 @@
+export default function createUserState(initial) {
+ let user = $state(initial);
+ return {
+ get value() {
+ return user;
+ },
+ updateUsername(newUsername) {
+ user = {
+ ...user,
+ username: newUsername,
+ };
+ },
+ };
+}
diff --git a/content/6-form-input/1-input-text/svelte/InputHello.svelte b/content/6-form-input/1-input-text/svelte4/InputHello.svelte
similarity index 100%
rename from content/6-form-input/1-input-text/svelte/InputHello.svelte
rename to content/6-form-input/1-input-text/svelte4/InputHello.svelte
diff --git a/content/6-form-input/1-input-text/svelte5/InputHello.svelte b/content/6-form-input/1-input-text/svelte5/InputHello.svelte
new file mode 100644
index 0000000..b6a5bac
--- /dev/null
+++ b/content/6-form-input/1-input-text/svelte5/InputHello.svelte
@@ -0,0 +1,6 @@
+
+
+{text}
+
diff --git a/content/6-form-input/2-checkbox/svelte/IsAvailable.svelte b/content/6-form-input/2-checkbox/svelte4/IsAvailable.svelte
similarity index 100%
rename from content/6-form-input/2-checkbox/svelte/IsAvailable.svelte
rename to content/6-form-input/2-checkbox/svelte4/IsAvailable.svelte
diff --git a/content/6-form-input/2-checkbox/svelte5/IsAvailable.svelte b/content/6-form-input/2-checkbox/svelte5/IsAvailable.svelte
new file mode 100644
index 0000000..82678ea
--- /dev/null
+++ b/content/6-form-input/2-checkbox/svelte5/IsAvailable.svelte
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/content/6-form-input/3-radio/svelte/PickPill.svelte b/content/6-form-input/3-radio/svelte4/PickPill.svelte
similarity index 100%
rename from content/6-form-input/3-radio/svelte/PickPill.svelte
rename to content/6-form-input/3-radio/svelte4/PickPill.svelte
diff --git a/content/6-form-input/3-radio/svelte5/PickPill.svelte b/content/6-form-input/3-radio/svelte5/PickPill.svelte
new file mode 100644
index 0000000..c206a98
--- /dev/null
+++ b/content/6-form-input/3-radio/svelte5/PickPill.svelte
@@ -0,0 +1,11 @@
+
+
+Picked: {picked}
+
+
+
+
+
+
diff --git a/content/6-form-input/4-select/svelte/ColorSelect.svelte b/content/6-form-input/4-select/svelte4/ColorSelect.svelte
similarity index 100%
rename from content/6-form-input/4-select/svelte/ColorSelect.svelte
rename to content/6-form-input/4-select/svelte4/ColorSelect.svelte
diff --git a/content/6-form-input/4-select/svelte5/ColorSelect.svelte b/content/6-form-input/4-select/svelte5/ColorSelect.svelte
new file mode 100644
index 0000000..62239bf
--- /dev/null
+++ b/content/6-form-input/4-select/svelte5/ColorSelect.svelte
@@ -0,0 +1,18 @@
+
+
+
diff --git a/content/7-webapp-features/1-render-app/svelte4/App.svelte b/content/7-webapp-features/1-render-app/svelte4/App.svelte
new file mode 100644
index 0000000..159202e
--- /dev/null
+++ b/content/7-webapp-features/1-render-app/svelte4/App.svelte
@@ -0,0 +1 @@
+Hello world
diff --git a/content/7-webapp-features/1-render-app/svelte/app.js b/content/7-webapp-features/1-render-app/svelte4/app.js
similarity index 100%
rename from content/7-webapp-features/1-render-app/svelte/app.js
rename to content/7-webapp-features/1-render-app/svelte4/app.js
diff --git a/content/7-webapp-features/1-render-app/svelte/index.html b/content/7-webapp-features/1-render-app/svelte4/index.html
similarity index 100%
rename from content/7-webapp-features/1-render-app/svelte/index.html
rename to content/7-webapp-features/1-render-app/svelte4/index.html
diff --git a/content/7-webapp-features/1-render-app/svelte5/App.svelte b/content/7-webapp-features/1-render-app/svelte5/App.svelte
new file mode 100644
index 0000000..159202e
--- /dev/null
+++ b/content/7-webapp-features/1-render-app/svelte5/App.svelte
@@ -0,0 +1 @@
+Hello world
diff --git a/content/7-webapp-features/1-render-app/svelte5/app.js b/content/7-webapp-features/1-render-app/svelte5/app.js
new file mode 100644
index 0000000..5332616
--- /dev/null
+++ b/content/7-webapp-features/1-render-app/svelte5/app.js
@@ -0,0 +1,7 @@
+import App from "./App.svelte";
+
+const app = new App({
+ target: document.getElementById("app"),
+});
+
+export default app;
diff --git a/content/7-webapp-features/1-render-app/svelte5/index.html b/content/7-webapp-features/1-render-app/svelte5/index.html
new file mode 100644
index 0000000..e66268f
--- /dev/null
+++ b/content/7-webapp-features/1-render-app/svelte5/index.html
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/content/7-webapp-features/2-fetch-data/svelte/App.svelte b/content/7-webapp-features/2-fetch-data/svelte4/App.svelte
similarity index 100%
rename from content/7-webapp-features/2-fetch-data/svelte/App.svelte
rename to content/7-webapp-features/2-fetch-data/svelte4/App.svelte
diff --git a/content/7-webapp-features/2-fetch-data/svelte/useFetchUsers.js b/content/7-webapp-features/2-fetch-data/svelte4/useFetchUsers.js
similarity index 100%
rename from content/7-webapp-features/2-fetch-data/svelte/useFetchUsers.js
rename to content/7-webapp-features/2-fetch-data/svelte4/useFetchUsers.js
diff --git a/content/7-webapp-features/2-fetch-data/svelte5/App.svelte b/content/7-webapp-features/2-fetch-data/svelte5/App.svelte
new file mode 100644
index 0000000..a0a876d
--- /dev/null
+++ b/content/7-webapp-features/2-fetch-data/svelte5/App.svelte
@@ -0,0 +1,23 @@
+
+
+{#if response.isLoading}
+ Fetching users...
+{:else if response.error}
+ An error occured while fetching users
+{:else if response.users}
+
+{/if}
diff --git a/content/7-webapp-features/2-fetch-data/svelte5/useFetchUsers.js b/content/7-webapp-features/2-fetch-data/svelte5/useFetchUsers.js
new file mode 100644
index 0000000..2373dd2
--- /dev/null
+++ b/content/7-webapp-features/2-fetch-data/svelte5/useFetchUsers.js
@@ -0,0 +1,29 @@
+export default function useFetchUsers() {
+ const users = $state();
+ const error = $state();
+ const isLoading = $state(false);
+
+ async function fetchData() {
+ isLoading = true;
+ try {
+ const response = await fetch("https://randomuser.me/api/?results=3");
+ users = (await response.json()).results;
+ } catch (err) {
+ error = err;
+ }
+ isLoading = false;
+ }
+ fetchData();
+
+ return {
+ get isLoading() {
+ return isLoading;
+ },
+ get error() {
+ return error;
+ },
+ get users() {
+ return users;
+ },
+ };
+}
diff --git a/content/7-webapp-features/3-router-link/svelte/sveltekit.md b/content/7-webapp-features/3-router-link/svelte4/sveltekit.md
similarity index 100%
rename from content/7-webapp-features/3-router-link/svelte/sveltekit.md
rename to content/7-webapp-features/3-router-link/svelte4/sveltekit.md
diff --git a/content/7-webapp-features/3-router-link/svelte5/sveltekit.md b/content/7-webapp-features/3-router-link/svelte5/sveltekit.md
new file mode 100644
index 0000000..7f5a043
--- /dev/null
+++ b/content/7-webapp-features/3-router-link/svelte5/sveltekit.md
@@ -0,0 +1,12 @@
+With SvelteKit
+
+```svelte
+
+```
diff --git a/content/7-webapp-features/4-routing/svelte/sveltekit.md b/content/7-webapp-features/4-routing/svelte4/sveltekit.md
similarity index 100%
rename from content/7-webapp-features/4-routing/svelte/sveltekit.md
rename to content/7-webapp-features/4-routing/svelte4/sveltekit.md
diff --git a/content/7-webapp-features/4-routing/svelte5/sveltekit.md b/content/7-webapp-features/4-routing/svelte5/sveltekit.md
new file mode 100644
index 0000000..bde4d68
--- /dev/null
+++ b/content/7-webapp-features/4-routing/svelte5/sveltekit.md
@@ -0,0 +1,10 @@
+With SvelteKit
+
+```
+|-- routes/
+ |-- +page.svelte // index page "/"
+ |-- about/
+ |-- +page.svelte // about page "/about"
+ |-- +error.svelte // handle HTTP errors 404, 500,...
+ |-- +layout.svelte // global app layout
+```
diff --git a/frameworks.mjs b/frameworks.mjs
index a81634c..d8d0c57 100644
--- a/frameworks.mjs
+++ b/frameworks.mjs
@@ -10,11 +10,11 @@ function sortAllFilenames(files, filenamesSorted) {
export default [
{
- id: "svelte",
- title: "Svelte",
+ id: "svelte4",
+ title: "Svelte 4",
img: "framework/svelte.svg",
eslint: {
- files: ["*.svelte"],
+ files: ["**/svelte4/*.svelte"],
parser: "svelte-eslint-parser",
},
playgroundURL: "https://svelte.dev/repl",
@@ -336,4 +336,20 @@ export default [
repositoryLink: "https://github.com/aurelia/framework",
mainPackageName: "aurelia-framework",
},
+ {
+ id: "svelte5",
+ title: "Svelte 5 (preview)",
+ img: "framework/svelte.svg",
+ eslint: {
+ files: ["**/TODO-THIS-IS-DISABLED-svelte5/*.svelte"],
+ parser: "svelte-eslint-parser",
+ },
+ playgroundURL: "https://svelte-5-preview.vercel.app/",
+ documentationURL: "https://svelte-5-preview.vercel.app/docs",
+ filesSorter(files) {
+ return sortAllFilenames(files, ["index.html", "app.js", "App.svelte"]);
+ },
+ repositoryLink: "https://github.com/sveltejs/svelte",
+ mainPackageName: "svelte",
+ },
];
diff --git a/package.json b/package.json
index cba57cf..b685022 100644
--- a/package.json
+++ b/package.json
@@ -85,7 +85,8 @@
}
},
"lint-staged": {
- "*.{js,jsx,ts,tsx,svelte,vue}": "eslint --cache --fix",
+ "*.{js,jsx,ts,tsx,vue}": "eslint --cache --fix",
+ "**/svelte4/*.svelte": "eslint --cache --fix",
"*.{js,jsx,ts,tsx,svelte,vue,html,md,css,hbs}": "prettier --cache --write"
}
}
diff --git a/src/App.svelte b/src/App.svelte
index 544de82..a58021b 100644
--- a/src/App.svelte
+++ b/src/App.svelte
@@ -65,12 +65,14 @@
if (frameworkIdsSelectedOnInit.length === 0) {
const frameworkIdsFromStorage = frameworkIdsStorage.getJSON();
if (frameworkIdsFromStorage?.length > 0) {
- frameworkIdsSelectedOnInit = frameworkIdsFromStorage;
+ frameworkIdsSelectedOnInit = frameworkIdsFromStorage.map((x) =>
+ x === "svelte" ? "svelte4" : x
+ );
}
}
if (frameworkIdsSelectedOnInit.length === 0) {
- frameworkIdsSelectedOnInit = ["svelte", "react"];
+ frameworkIdsSelectedOnInit = ["svelte4", "react"];
}
frameworkIdsSelected = new Set(frameworkIdsSelectedOnInit);
@@ -388,7 +390,9 @@
margin-left: -0.87em;
padding-right: 0.23em;
font-weight: 500;
- transition: color 0.25s, opacity 0.25s;
+ transition:
+ color 0.25s,
+ opacity 0.25s;
opacity: 0;
text-decoration: none;
}