diff --git a/apps/svelte.dev/content/blog/2017-12-31-sapper-towards-the-ideal-web-app-framework.md b/apps/svelte.dev/content/blog/2017-12-31-sapper-towards-the-ideal-web-app-framework.md index 86514fc279..c4c5643699 100644 --- a/apps/svelte.dev/content/blog/2017-12-31-sapper-towards-the-ideal-web-app-framework.md +++ b/apps/svelte.dev/content/blog/2017-12-31-sapper-towards-the-ideal-web-app-framework.md @@ -77,4 +77,4 @@ I believe the next frontier of web performance is 'whole-app optimisation'. Curr Speaking of Glimmer, the idea of compiling components to bytecode is one that we'll probably steal in 2018. A framework like Sapper could conceivably determine which compilation mode to use based on the characteristics of your app. It could even serve JavaScript for the initial route for the fastest possible startup time, then lazily serve a bytecode interpreter for subsequent routes, resulting in the optimal combination of startup size and total app size. -Mostly, though, we want the direction of Sapper to be determined by its users. If you're the kind of developer who enjoys life on the bleeding edge and would like to help shape the future of how we build web apps, please join us on [GitHub](https://github.com/sveltejs/svelte) and [Discord](https://svelte.dev/chat). +Mostly, though, we want the direction of Sapper to be determined by its users. If you're the kind of developer who enjoys life on the bleeding edge and would like to help shape the future of how we build web apps, please join us on [GitHub](https://github.com/sveltejs/svelte) and [Discord](/chat). diff --git a/apps/svelte.dev/content/blog/2018-04-18-version-2.md b/apps/svelte.dev/content/blog/2018-04-18-version-2.md index 58f420fcd6..3043319b7d 100644 --- a/apps/svelte.dev/content/blog/2018-04-18-version-2.md +++ b/apps/svelte.dev/content/blog/2018-04-18-version-2.md @@ -11,7 +11,7 @@ Almost a year after we first started talking about version 2 on the Svelte issue ## tl;dr -Each of these items is described in more depth below. If you get stuck, ask for help in our friendly [Discord chatroom](https://svelte.dev/chat). +Each of these items is described in more depth below. If you get stuck, ask for help in our friendly [Discord chatroom](/chat). - Install Svelte v2 from npm - Upgrade your templates with [svelte-upgrade](https://github.com/sveltejs/svelte-upgrade) @@ -198,4 +198,4 @@ Before, there was a `svelte.validate` method which checked your component was va ## My app is broken! Help! -Hopefully this covers everything, and the update should be easier for you than it was for us. But if you find bugs, or discover things that aren't mentioned here, swing by [Discord chatroom](https://svelte.dev/chat) or raise an issue on the [tracker](https://github.com/sveltejs/svelte/issues). +Hopefully this covers everything, and the update should be easier for you than it was for us. But if you find bugs, or discover things that aren't mentioned here, swing by [Discord chatroom](/chat) or raise an issue on the [tracker](https://github.com/sveltejs/svelte/issues). diff --git a/apps/svelte.dev/content/blog/2019-01-31-svelte-on-the-changelog.md b/apps/svelte.dev/content/blog/2019-01-31-svelte-on-the-changelog.md index ca5805ac6d..d94d928795 100644 --- a/apps/svelte.dev/content/blog/2019-01-31-svelte-on-the-changelog.md +++ b/apps/svelte.dev/content/blog/2019-01-31-svelte-on-the-changelog.md @@ -14,7 +14,7 @@ Earlier this month, I had the privilege of appearing on [The Changelog](https:// ...and, most importantly, Svelte 3. -Unless you hang out in our [Discord server](https://svelte.dev/chat) or follow [@sveltejs](https://twitter.com/sveltejs) on Twitter, you might not know that Svelte 3 is just around the corner, and it's going to be a huge release. We've rethought the developer experience from the ground up, and while it _will_ be a nuisance if you need to upgrade a Svelte 2 app (more on that soon) we think you're going to love it. +Unless you hang out in our [Discord server](/chat) or follow [@sveltejs](https://twitter.com/sveltejs) on Twitter, you might not know that Svelte 3 is just around the corner, and it's going to be a huge release. We've rethought the developer experience from the ground up, and while it _will_ be a nuisance if you need to upgrade a Svelte 2 app (more on that soon) we think you're going to love it. On the podcast [Adam](https://twitter.com/adamstac), [Jerod](https://twitter.com/jerodsanto) and I talk about some of the changes and why we're making them. You can listen here or on the [podcast page](https://changelog.com/podcast/332). diff --git a/apps/svelte.dev/content/blog/2019-04-16-svelte-for-new-developers.md b/apps/svelte.dev/content/blog/2019-04-16-svelte-for-new-developers.md index c0ad2add2b..b12aabaad7 100644 --- a/apps/svelte.dev/content/blog/2019-04-16-svelte-for-new-developers.md +++ b/apps/svelte.dev/content/blog/2019-04-16-svelte-for-new-developers.md @@ -9,7 +9,7 @@ This short guide is designed to help you — someone who has looked at the [tuto If there are things that don't make sense, or that we're glossing over, feel free to [raise an issue](https://github.com/sveltejs/svelte/issues) or [suggest edits to this page](https://github.com/sveltejs/svelte/blob/master/site/content/blog/2019-04-16-svelte-for-new-developers.md) that will help us help more people. -If you get stuck at any point following this guide, the best place to ask for help is in the [chatroom](https://svelte.dev/chat). +If you get stuck at any point following this guide, the best place to ask for help is in the [chatroom](/chat). ## First things first diff --git a/apps/svelte.dev/content/blog/2019-04-22-svelte-3-rethinking-reactivity.md b/apps/svelte.dev/content/blog/2019-04-22-svelte-3-rethinking-reactivity.md index a5270a4f70..7577994897 100644 --- a/apps/svelte.dev/content/blog/2019-04-22-svelte-3-rethinking-reactivity.md +++ b/apps/svelte.dev/content/blog/2019-04-22-svelte-3-rethinking-reactivity.md @@ -99,4 +99,4 @@ We don't take this lightly: hopefully once you've experienced Svelte 3 you'll un As grueling as this release has been, we're nowhere near finished. We have a ton of ideas for generating smarter, more compact code, and a long feature wish-list. [Sapper](https://sapper.svelte.dev), our Next.js-style app framework, is still in the middle of being updated to use Svelte 3. The [Svelte Native](https://svelte-native.technology/) community project, which allows you to write Android and iOS apps in Svelte, is making solid progress but deserves more complete support from core. We don't yet have the bounty of editor extensions, syntax highlighters, component kits, devtools and so on that other frameworks have, and we should fix that. We _really_ want to add first-class TypeScript support. -But in the meantime we think Svelte 3 is the best way to build web apps yet. Take an hour to go through the [tutorial](/tutorial) and we hope to convince you of the same. Either way, we'd love to see you in our [Discord chatroom](https://svelte.dev/chat) and on [GitHub](https://github.com/sveltejs/svelte) — everyone is welcome, especially you. +But in the meantime we think Svelte 3 is the best way to build web apps yet. Take an hour to go through the [tutorial](/tutorial) and we hope to convince you of the same. Either way, we'd love to see you in our [Discord chatroom](/chat) and on [GitHub](https://github.com/sveltejs/svelte) — everyone is welcome, especially you. diff --git a/apps/svelte.dev/content/blog/2020-10-01-whats-new-in-svelte-october-2020.md b/apps/svelte.dev/content/blog/2020-10-01-whats-new-in-svelte-october-2020.md index acf397c544..22e7496df0 100644 --- a/apps/svelte.dev/content/blog/2020-10-01-whats-new-in-svelte-october-2020.md +++ b/apps/svelte.dev/content/blog/2020-10-01-whats-new-in-svelte-october-2020.md @@ -9,10 +9,10 @@ Welcome to the first edition of our "What's new in Svelte" series! We'll try to ## New features -1. `use:obj.method` allows functions defined within objects to be used within actions ([Example](https://svelte.dev/repl/c305722adb4a4545b27b198ea8ff9bde?version=3.27.0), **3.26.0**, warning removed in **3.27.0**) -2. `_` is now supported as a "numerical separator", similar to a `.` or `,` ([Example](https://svelte.dev/repl/844c39e91d1248649fe54af839fab570?version=3.26.0), **3.26.0**) -3. `import.meta` now works in template expressions ([Example](https://svelte.dev/repl/9630de41957a4c80a4fce264360a6bc7?version=3.26.0), **3.26.0**) -4. CSS Selectors with `~` and `+` combinators are now supported ([Example](https://svelte.dev/repl/91ad9257d2d1430185a504a18cc60172?version=3.29.0), **3.27.0**, with a compiler fix in **3.29.0**) +1. `use:obj.method` allows functions defined within objects to be used within actions ([Example](/playground/c305722adb4a4545b27b198ea8ff9bde?version=3.27.0), **3.26.0**, warning removed in **3.27.0**) +2. `_` is now supported as a "numerical separator", similar to a `.` or `,` ([Example](/playground/844c39e91d1248649fe54af839fab570?version=3.26.0), **3.26.0**) +3. `import.meta` now works in template expressions ([Example](/playground/9630de41957a4c80a4fce264360a6bc7?version=3.26.0), **3.26.0**) +4. CSS Selectors with `~` and `+` combinators are now supported ([Example](/playground/91ad9257d2d1430185a504a18cc60172?version=3.29.0), **3.27.0**, with a compiler fix in **3.29.0**) 5. The `{#key}` block is now available to key arbitrary content on an expression. Whenever the expression changes, the contents inside the `{#key}` block will be destroyed and recreated. For an in-depth explanation and to find out how it's implemented, check out the [new blog post](https://lihautan.com/contributing-to-svelte-implement-key-block/) of Svelte Team member Tan Li Hau. ([More info](https://github.com/sveltejs/svelte/issues/1469), **3.29.0**) 6. Slots can now be forwarded through child components! This used to only be possible by adding extra wrapper `
`s ([More info](https://github.com/sveltejs/svelte/issues/2079), **3.29.0**) 7. When using TypeScript, you can now type the `createEventDispatcher` method: @@ -43,7 +43,7 @@ In addition, Sapper's CSS handling has been rewritten over the course of recent ## Impactful bug fixes -- CSS compilation will no longer remove rules for the `open` attribute on `
` elements ([Example](https://svelte.dev/repl/ab4c0c177d1f4fab92f46eb8539cea9a?version=3.26.0), **3.26.0**) +- CSS compilation will no longer remove rules for the `open` attribute on `
` elements ([Example](/playground/ab4c0c177d1f4fab92f46eb8539cea9a?version=3.26.0), **3.26.0**) - `prettier-plugin-svelte` will do a better job now at dealing with whitespaces, especially around inline elements. It will also preserve formatting inside `
` tags and will no longer format languages which are not supported by Prettier, like SASS, Pug or Stylus.
 
 ## Coming up
@@ -56,8 +56,8 @@ For all the features and bugfixes see the CHANGELOG for [Svelte](https://github.
 
 ## Svelte Showcase
 
-- [This CustomMenu example](https://svelte.dev/repl/3a33725c3adb4f57b46b597f9dade0c1?version=3.25.0) demos how to replace the OS right-click menu
-- [GitHub Tetris](https://svelte.dev/repl/cc1eaa7c66964fedb5e70e3ecbbaa0e1?version=3.25.1) lets you play a Tetris-like game in a git commit history
+- [This CustomMenu example](/playground/3a33725c3adb4f57b46b597f9dade0c1?version=3.25.0) demos how to replace the OS right-click menu
+- [GitHub Tetris](/playground/cc1eaa7c66964fedb5e70e3ecbbaa0e1?version=3.25.1) lets you play a Tetris-like game in a git commit history
 - [Who are my representatives?](https://whoaremyrepresentatives.us/) is a website built with Svelte to help US residents get more info on their congressional representatives
 - [Pick Palette](https://github.com/bluwy/pick-palette) is a color palette manager made with Svelte!
 
@@ -72,7 +72,7 @@ For all the features and bugfixes see the CHANGELOG for [Svelte](https://github.
 - [svelte-zoom](https://github.com/vaheqelyan/svelte-zoom) brings "nearly native" pan-and-zoom to images on desktop and mobile
 - [svelte-materialify](https://github.com/TheComputerM/svelte-materialify) is a Material component library for Svelte with over 50 components
 - [svelte-undoable](https://github.com/macfja/svelte-undoable) makes it easy to introduce undo and redo functionality using `bind:`
-- [This Tilt component](https://svelte.dev/repl/7b23ad9d2693424482cd411b0378b55b?version=3.24.1) implements a common UX pattern where the hovered element tilts to follow the mouse
+- [This Tilt component](/playground/7b23ad9d2693424482cd411b0378b55b?version=3.24.1) implements a common UX pattern where the hovered element tilts to follow the mouse
 
 ### Lots of examples of how use JS tech came out this month:
 
diff --git a/apps/svelte.dev/content/blog/2020-11-01-whats-new-in-svelte-november-2020.md b/apps/svelte.dev/content/blog/2020-11-01-whats-new-in-svelte-november-2020.md
index 93ae099c7d..8700e116e7 100644
--- a/apps/svelte.dev/content/blog/2020-11-01-whats-new-in-svelte-november-2020.md
+++ b/apps/svelte.dev/content/blog/2020-11-01-whats-new-in-svelte-november-2020.md
@@ -10,8 +10,8 @@ Welcome back to the "What's new in Svelte" series! This month, we're covering ne
 ## New features & impactful bug fixes
 
 1. Destructuring Promises now works as expected by using the `{#await}` syntax
-   (**3.29.3**, [Example](https://svelte.dev/repl/3fd4e2cecfa14d629961478f1dac2445?version=3.29.3))
-2. Slot forwarding (released in 3.29.0) should no longer hang during compilation (**3.29.3**, [Example](https://svelte.dev/repl/29959e70103f4868a6525c0734934936?version=3.29.3))
+   (**3.29.3**, [Example](/playground/3fd4e2cecfa14d629961478f1dac2445?version=3.29.3))
+2. Slot forwarding (released in 3.29.0) should no longer hang during compilation (**3.29.3**, [Example](/playground/29959e70103f4868a6525c0734934936?version=3.29.3))
 3. Better typings for the `get` function in `svelte/store` and on lifecycle hooks (**3.29.1**)
 
 ### What's going on in Sapper?
diff --git a/apps/svelte.dev/content/blog/2020-11-05-whats-the-deal-with-sveltekit.md b/apps/svelte.dev/content/blog/2020-11-05-whats-the-deal-with-sveltekit.md
index a89181fc6a..29baaf5c0c 100644
--- a/apps/svelte.dev/content/blog/2020-11-05-whats-the-deal-with-sveltekit.md
+++ b/apps/svelte.dev/content/blog/2020-11-05-whats-the-deal-with-sveltekit.md
@@ -91,4 +91,4 @@ Keep your eyes peeled for announcements about when we'll launch the public beta
 
 ## Where can I learn more?
 
-Follow [@sveltejs](https://twitter.com/sveltejs) and [@SvelteSociety](https://twitter.com/SvelteSociety) on Twitter, and visit [svelte.dev/chat](https://svelte.dev/chat). You should also subscribe to [Svelte Radio](https://www.svelteradio.com/), where Kevin and his co-hosts will grill me about this project on an upcoming episode (and between now and next week when we record it, [reply to this Twitter thread](https://twitter.com/Rich_Harris/status/1323376048571121665) with your additional questions).
+Follow [@sveltejs](https://twitter.com/sveltejs) and [@SvelteSociety](https://twitter.com/SvelteSociety) on Twitter, and visit [svelte.dev/chat](/chat). You should also subscribe to [Svelte Radio](https://www.svelteradio.com/), where Kevin and his co-hosts will grill me about this project on an upcoming episode (and between now and next week when we record it, [reply to this Twitter thread](https://twitter.com/Rich_Harris/status/1323376048571121665) with your additional questions).
diff --git a/apps/svelte.dev/content/blog/2020-12-01-whats-new-in-svelte-december-2020.md b/apps/svelte.dev/content/blog/2020-12-01-whats-new-in-svelte-december-2020.md
index 5f8442fbe4..2cdb968cd2 100644
--- a/apps/svelte.dev/content/blog/2020-12-01-whats-new-in-svelte-december-2020.md
+++ b/apps/svelte.dev/content/blog/2020-12-01-whats-new-in-svelte-december-2020.md
@@ -9,10 +9,10 @@ It's the last "What's new in Svelte" of the year and there's lots to celebrate!
 
 ## New features & impactful bug fixes
 
-1. `$$props`, `$$restProps`, and `$$slots` are all now supported in custom web components (**3.29.5**, [Example](https://svelte.dev/repl/ad8e6f39cd20403dacd1be84d71e498d?version=3.29.5)) and `slot` components now support spread props: `` (**3.30.0**)
+1. `$$props`, `$$restProps`, and `$$slots` are all now supported in custom web components (**3.29.5**, [Example](/playground/ad8e6f39cd20403dacd1be84d71e498d?version=3.29.5)) and `slot` components now support spread props: `` (**3.30.0**)
 2. A new `hasContext` lifecycle function makes it easy to check whether a `key` has been set in the context of a parent component (**3.30.0** & **3.30.1**, [Docs](https://v4.svelte.dev/docs#run-time-svelte-hascontext))
 3. There is now a new `SvelteComponentTyped` class which makes it easier to add strongly typed components that extend base Svelte components. Component library and framework authors rejoice! An example: `export class YourComponent extends SvelteComponentTyped<{aProp: boolean}, {click: MouseEvent}, {default: {aSlot: string}}> {}` (**3.31.0**, [RFC](https://github.com/sveltejs/rfcs/pull/37))
-4. Transitions within `{:else}` blocks should now complete successfully (**3.29.5**, [Example](https://svelte.dev/repl/49cef205e5da459594ef2eafcbd41593?version=3.29.5))
+4. Transitions within `{:else}` blocks should now complete successfully (**3.29.5**, [Example](/playground/49cef205e5da459594ef2eafcbd41593?version=3.29.5))
 5. Svelte now includes an export map, which explicitly states which files can be imported from its npm package (**3.29.5** with some fixes in **3.29.6**, **3.29.7** and **3.30.0**)
 6. `rollup-plugin-svelte` had a new [7.0.0 release](https://github.com/sveltejs/rollup-plugin-svelte/blob/master/CHANGELOG.md). The biggest change is that the `css` option was removed. Users who were using that option should add another plugin like `rollup-plugin-css-only` as demonstrated [in the template](https://github.com/sveltejs/template/blob/5b1135c286f7a649daa99825a077586655051649/rollup.config.js#L48)
 
@@ -22,7 +22,7 @@ Lots of new TypeScript definition improvements to make editing Sapper apps even
 
 ## What's the deal with SvelteKit?
 
-We're glad you asked! If you didn't catch Rich's blog post from early last month, [you can find it here](https://svelte.dev/blog/whats-the-deal-with-sveltekit)!
+We're glad you asked! If you didn't catch Rich's blog post from early last month, [you can find it here](/blog/whats-the-deal-with-sveltekit)!
 
 For all the features and bugfixes see the CHANGELOGs for [Svelte](https://github.com/sveltejs/svelte/blob/master/CHANGELOG.md) and [Sapper](https://github.com/sveltejs/sapper/blob/master/CHANGELOG.md).
 
@@ -44,8 +44,8 @@ For all the features and bugfixes see the CHANGELOGs for [Svelte](https://github
 
 - [u/loopcake got SSR working in Java Spring Boot](https://www.reddit.com/r/sveltejs/comments/jkh5up/svelte_ssr_but_its_java_spring_boot_and_its_native/) for all the Java shops out there looking to render Svelte server-side.
 - [svelte-liquid-swipe](https://github.com/tncrazvan/svelte-liquid-swipe) shows off a fancy interaction pattern using svg paths.
-- [Crossfade Link Animation](https://svelte.dev/repl/7f68e148caf04b2787bb6f296208f870?version=3.29.7) demonstrates how to animate between navigation links using a crossfade (made by Blu, from the Discord community)
-- [Clip-Path Transitions](https://svelte.dev/repl/b5ad281ae8024b629b545c70c9e8764d?version=3.29.7) showcases how to use clip paths and custom transitions to create magical in-and-out transitions (made by Faber, from the Discord community)
+- [Crossfade Link Animation](/playground/7f68e148caf04b2787bb6f296208f870?version=3.29.7) demonstrates how to animate between navigation links using a crossfade (made by Blu, from the Discord community)
+- [Clip-Path Transitions](/playground/b5ad281ae8024b629b545c70c9e8764d?version=3.29.7) showcases how to use clip paths and custom transitions to create magical in-and-out transitions (made by Faber, from the Discord community)
 
 ### Learning Resources
 
diff --git a/apps/svelte.dev/content/blog/2021-01-01-whats-new-in-svelte-january-2021.md b/apps/svelte.dev/content/blog/2021-01-01-whats-new-in-svelte-january-2021.md
index 32b6da1e26..18985f7ee4 100644
--- a/apps/svelte.dev/content/blog/2021-01-01-whats-new-in-svelte-january-2021.md
+++ b/apps/svelte.dev/content/blog/2021-01-01-whats-new-in-svelte-january-2021.md
@@ -9,7 +9,7 @@ Happy new year from Svelte! In the last month we made progress on Sapper's upcom
 
 ## What's changed in Svelte?
 
-A new minor release replaces the `SvelteComponent` class with a `SvelteComponentTyped` class. This renaming should help with backwards compatibility. We've updated [last month's blog post](https://svelte.dev/blog/whats-new-in-svelte-december-2020) to avoid any confusion with the name change.
+A new minor release replaces the `SvelteComponent` class with a `SvelteComponentTyped` class. This renaming should help with backwards compatibility. We've updated [last month's blog post](/blog/whats-new-in-svelte-december-2020) to avoid any confusion with the name change.
 
 If you're using `SvelteComponent` or the new `SvelteComponentTyped` in your project or library, let us know what you're using it for and we'll add it to the showcase!
 
@@ -25,7 +25,7 @@ To avoid too much churn during development, SvelteKit is still being worked on i
 
 In the meantime, you can explore the current build by running `npm init svelte@next` from your command line.
 
-As cautioned in _[What's the deal with SvelteKit?](https://svelte.dev/blog/whats-the-deal-with-sveltekit)_, there are no docs or support available yet... So use at your own risk / for your own enjoyment!
+As cautioned in _[What's the deal with SvelteKit?](/blog/whats-the-deal-with-sveltekit)_, there are no docs or support available yet... So use at your own risk / for your own enjoyment!
 
 ---
 
@@ -55,7 +55,7 @@ As cautioned in _[What's the deal with SvelteKit?](https://svelte.dev/blog/whats
 - [svelte-standalone-router](https://github.com/hjalmar/svelte-standalone-router) is a standalone router with an API based on [standalone-router](https://github.com/hjalmar/standalone-router)
 - [svelte-datepicker](https://github.com/beyonk-adventures/svelte-datepicker) is a datepicker component with variations for time selection, date ranges and responsive themes
 - [svelte-slimscroll](https://github.com/MelihAltintas/svelte-slimscroll) is a action for Svelte.js, which can transforms any div into a scrollable area with a nice scrollbar.
-- [Svelte Zoomable](https://svelte.dev/repl/58dfe87756ee4db897c281b52fdef7b7?version=3.31.0) is a custom transition with a nice zoom effect
+- [Svelte Zoomable](/playground/58dfe87756ee4db897c281b52fdef7b7?version=3.31.0) is a custom transition with a nice zoom effect
 
 **Have a component you'd like to share?** [Submit your own component](https://sveltesociety.dev/help/submitting?type=package) to the list of [packages](https://sveltesociety.dev/packages) on the Svelte Society site.
 
diff --git a/apps/svelte.dev/content/blog/2021-02-01-whats-new-in-svelte-february-2021.md b/apps/svelte.dev/content/blog/2021-02-01-whats-new-in-svelte-february-2021.md
index 3b8dd1d6c5..e69828afd6 100644
--- a/apps/svelte.dev/content/blog/2021-02-01-whats-new-in-svelte-february-2021.md
+++ b/apps/svelte.dev/content/blog/2021-02-01-whats-new-in-svelte-february-2021.md
@@ -51,11 +51,11 @@ New changes to the Svelte Society website include [a new cheat sheet](https://sv
 
 - [Svelte Reactive Debugger](https://addons.mozilla.org/en-US/firefox/addon/svelte-reactive-debugger/) is a way to monitor Svelte reactive statements in Firefox devtools
 - [svelte-actions](https://github.com/sw-yx/svelte-actions) is a set of prototype Svelte actions for inclusion into official actions in future. [See RFC](https://github.com/sveltejs/rfcs/pull/24) and [Discuss High Level Policy](https://github.com/sw-yx/svelte-actions/issues/7).
-- [This css grid gallery](https://svelte.dev/repl/3a1b7fae13b242fe9cd4a4f7aa092fa4?version=3.31.2) made by @joja (in the Svelte Discord) features grid transitions based on a user's mouse position
+- [This css grid gallery](/playground/3a1b7fae13b242fe9cd4a4f7aa092fa4?version=3.31.2) made by @joja (in the Svelte Discord) features grid transitions based on a user's mouse position
 - [Patchcab](https://github.com/spectrome/patchcab) is a modular Eurorack style synthesizer made with Web Audio.
 - [svelte-knob](https://github.com/MelihAltintas/svelte-knob) is a knob control to help with speedometer-style visualization
 - [descent-ripple](https://github.com/micha-lmxt/descent-ripple) is a highly customizable javascript ripple animation for buttons
-- [makeItSnow](https://github.com/florianlouvet/make-it-snow/blob/main/makeItSnowAction.js) is a Svelte action made by @MrPoule (in the Svelte Discord) that can be used to add ❄️snow❄️ to any component ([Demo](https://svelte.dev/repl/de5223beb45540a5a11c9bd7b318304f?version=3.31.2))
+- [makeItSnow](https://github.com/florianlouvet/make-it-snow/blob/main/makeItSnowAction.js) is a Svelte action made by @MrPoule (in the Svelte Discord) that can be used to add ❄️snow❄️ to any component ([Demo](/playground/de5223beb45540a5a11c9bd7b318304f?version=3.31.2))
 - [svelte-video-player](https://github.com/meigo/svelte-video-player) is a customizable `VideoPlayer` component
 - [svelte-readonly](https://github.com/Crisfole/svelte-readonly) is a very small store that exposes only a readable interface.
 
diff --git a/apps/svelte.dev/content/blog/2021-03-01-whats-new-in-svelte-march-2021.md b/apps/svelte.dev/content/blog/2021-03-01-whats-new-in-svelte-march-2021.md
index b4d4449d64..0fdc637c9c 100644
--- a/apps/svelte.dev/content/blog/2021-03-01-whats-new-in-svelte-march-2021.md
+++ b/apps/svelte.dev/content/blog/2021-03-01-whats-new-in-svelte-march-2021.md
@@ -11,11 +11,11 @@ Let's dive into the news 🐬
 
 ## What's new in `sveltejs/svelte`
 
-- SSR store handling has been reworked to subscribe and unsubscribe as in DOM mode. SSR stores should work much more consistently now (**3.31.2**, see [custom stores](https://svelte.dev/examples/custom-stores) and [Server-side component API ](https://v4.svelte.dev/docs#run-time-server-side-component-api))
-- Multiple instances of the same action are now allowed on an element (**3.32.0**, [example](https://svelte.dev/repl/01a14375951749dab9579cb6860eccde?version=3.32.0))
+- SSR store handling has been reworked to subscribe and unsubscribe as in DOM mode. SSR stores should work much more consistently now (**3.31.2**, see [custom stores](/playground/custom-stores) and [Server-side component API ](https://v4.svelte.dev/docs#run-time-server-side-component-api))
+- Multiple instances of the same action are now allowed on an element (**3.32.0**, [example](/playground/01a14375951749dab9579cb6860eccde?version=3.32.0))
 - The new `foreign` namespace should make it easier for alternative compile targets (like Svelte Native and SvelteGUI) by disabling certain HTML5-specific behaviour and checks (**3.32.0**, [more info](https://github.com/sveltejs/svelte/pull/5652))
 - Support for inline comment sourcemaps in code from preprocessors (**3.32.0**)
-- Destructured defaults are now allowed to refer to other variables (**3.33.0**, [example](https://svelte.dev/repl/0ee7227e1b45465b9b47d7a5ae2d1252?version=3.33.0))
+- Destructured defaults are now allowed to refer to other variables (**3.33.0**, [example](/playground/0ee7227e1b45465b9b47d7a5ae2d1252?version=3.33.0))
 - Custom elements will now call `onMount` functions when connecting and clean up when disconnecting (**3.33.0**, checkout [this PR](https://github.com/sveltejs/svelte/pull/4522) for an interesting conversation on how folks are using Svelte with Web Components)
 - A `cssHash` option has been added to the compiler options to control the classname used for CSS scoping (**3.34.0**, [docs](https://v4.svelte.dev/docs#compile-time-svelte-compile))
 - Continued improvement to TypeScript definitions
@@ -76,9 +76,9 @@ Haven't tried the language-tools yet? Check out [Svelte Extension for VSCode](ht
 - [Svelte Dark](https://marketplace.visualstudio.com/items?itemName=NickScialli.svelte-dark) is a VSCode theme inspired by the svelte.dev REPL
 - [Import Cost](https://marketplace.visualstudio.com/items?itemName=wix.vscode-import-cost) has been updated to support Svelte libraries and help developers keep their bundle size under control.
 - [Tree-sitter-svelte](https://github.com/Himujjal/tree-sitter-svelte) provides tree-sitter grammar for svelte
-- [Svelte Ripple](https://svelte.dev/repl/b73224a0fd4248178e3eab41943d41a9?version=3.31.2) is a Material Design ripple effect that doesn't depend on `@material/ripple` (made by @karakara in the Svelte Discord)
-- [Analog SVG Clock](https://svelte.dev/repl/270e83f43e7a48918d8f2d497760904f?version=3.32.1) is a great example of easing functions (made by @tonmcg in the Svelte Discord)
-- [Console Log Styler](https://svelte.dev/repl/11f609d0d90746f08da6d3d90bba84fc?version=3.32.0) lets you generate a styled console log using pseudo HTML and CSS (made by @EmNudge in the Svelte Discord)
+- [Svelte Ripple](/playground/b73224a0fd4248178e3eab41943d41a9?version=3.31.2) is a Material Design ripple effect that doesn't depend on `@material/ripple` (made by @karakara in the Svelte Discord)
+- [Analog SVG Clock](/playground/270e83f43e7a48918d8f2d497760904f?version=3.32.1) is a great example of easing functions (made by @tonmcg in the Svelte Discord)
+- [Console Log Styler](/playground/11f609d0d90746f08da6d3d90bba84fc?version=3.32.0) lets you generate a styled console log using pseudo HTML and CSS (made by @EmNudge in the Svelte Discord)
 - [svelte-heroicons](https://github.com/martinse/svelte-heroicons) is a handy wrapper for the Heroicons icon library
 - [supabase-ui-svelte](https://github.com/joshnuss/supabase-ui-svelte) are UI components for Supabase authentication
 
diff --git a/apps/svelte.dev/content/blog/2021-04-01-whats-new-in-svelte-april-2021.md b/apps/svelte.dev/content/blog/2021-04-01-whats-new-in-svelte-april-2021.md
index 66a1a8f7ec..634254d989 100644
--- a/apps/svelte.dev/content/blog/2021-04-01-whats-new-in-svelte-april-2021.md
+++ b/apps/svelte.dev/content/blog/2021-04-01-whats-new-in-svelte-april-2021.md
@@ -9,7 +9,7 @@ Two projects that have been months (even years) in the making have made their wa
 
 ## What's up with SvelteKit?
 
-[SvelteKit](https://kit.svelte.dev/) - Svelte's versatile framework for building SSR, serverless applications, or SPAs - is now officially in public beta. Expect bugs! Lots more detail in the [latest blog post](https://svelte.dev/blog/sveltekit-beta). Want to know when 1.0 is close? Check out the milestone on [github](https://github.com/sveltejs/kit/milestone/2).
+[SvelteKit](https://kit.svelte.dev/) - Svelte's versatile framework for building SSR, serverless applications, or SPAs - is now officially in public beta. Expect bugs! Lots more detail in the [latest blog post](/blog/sveltekit-beta). Want to know when 1.0 is close? Check out the milestone on [github](https://github.com/sveltejs/kit/milestone/2).
 
 Want to learn more about how to get started, what's different compared to Sapper, new features and migration paths? Check out this week's [episode of Svelte Radio](https://www.svelteradio.com/episodes/svelte-kit-public-beta) for a deep dive with Antony, Kev and Swyx.
 
diff --git a/apps/svelte.dev/content/blog/2021-05-01-whats-new-in-svelte-may-2021.md b/apps/svelte.dev/content/blog/2021-05-01-whats-new-in-svelte-may-2021.md
index eb3ebb8ec4..73e0923609 100644
--- a/apps/svelte.dev/content/blog/2021-05-01-whats-new-in-svelte-may-2021.md
+++ b/apps/svelte.dev/content/blog/2021-05-01-whats-new-in-svelte-may-2021.md
@@ -9,7 +9,7 @@ Last week, Svelte Summit blew us away with a mountain of content! [Check out the
 
 ## New features in the Svelte Compiler
 
-- `:global()` is now supported as part of compound CSS selectors (**3.38.0**, [Example](https://svelte.dev/repl/54148fd2af484f2c84977c94e523c7c5?version=3.38.0))
+- `:global()` is now supported as part of compound CSS selectors (**3.38.0**, [Example](/playground/54148fd2af484f2c84977c94e523c7c5?version=3.38.0))
 - CSS custom properties can now be passed to components for use cases such as theming (**3.38.0**, [Docs coming soon](https://github.com/sveltejs/svelte/issues/6268))
 
 ## New in SvelteKit
diff --git a/apps/svelte.dev/content/blog/2021-11-01-whats-new-in-svelte-november-2021.md b/apps/svelte.dev/content/blog/2021-11-01-whats-new-in-svelte-november-2021.md
index c5381b1931..850ce287ce 100644
--- a/apps/svelte.dev/content/blog/2021-11-01-whats-new-in-svelte-november-2021.md
+++ b/apps/svelte.dev/content/blog/2021-11-01-whats-new-in-svelte-november-2021.md
@@ -13,7 +13,7 @@ Now onto what's new!
 
 ## New in Svelte and SvelteKit
 
-- [svelte.dev](https://svelte.dev/) now runs on SvelteKit alongside [sveltesociety.dev](https://sveltesociety.dev). svelte.dev is a relatively complicated site with live code editing, authentication, and a markdown-based blog - making it a great way for us to really test out SvelteKit
+- [svelte.dev](/) now runs on SvelteKit alongside [sveltesociety.dev](https://sveltesociety.dev). svelte.dev is a relatively complicated site with live code editing, authentication, and a markdown-based blog - making it a great way for us to really test out SvelteKit
 - A new compiler option, `enableSourcemap`, provides more control over the compiler output for JS and CSS sourcemaps (**3.44.0**). With this new feature, SvelteKit and the Vite Svelte plugin can now properly handle environment variables in `.svelte` templates (See [sveltejs/kit#720](https://github.com/sveltejs/kit/issues/720) and [sveltejs/vite-plugin-svelte#201](https://github.com/sveltejs/vite-plugin-svelte/pull/201))
 - The Svelte Language Tools now support reading the configuration of the VS Code CSS settings ([#1219](https://github.com/sveltejs/language-tools/issues/1219))
 - `vite-plugin-svelte` added a new `experimental.prebundleSvelteLibraries` option that makes it much faster to load Svelte libraries with many components like icon libraries and UI frameworks. The option can be set in the root of `svelte.config.js`. Please test it out and give us feedback!
diff --git a/apps/svelte.dev/content/blog/2022-01-01-whats-new-in-svelte-january-2022.md b/apps/svelte.dev/content/blog/2022-01-01-whats-new-in-svelte-january-2022.md
index 8fda4e52f4..d4822ea0f2 100644
--- a/apps/svelte.dev/content/blog/2022-01-01-whats-new-in-svelte-january-2022.md
+++ b/apps/svelte.dev/content/blog/2022-01-01-whats-new-in-svelte-january-2022.md
@@ -22,7 +22,7 @@ Happy new year, Svelte Community! Lots to share this month across Svelte, Svelte
 
 - [Svelte 3.44.3](https://github.com/sveltejs/svelte/blob/master/CHANGELOG.md#3443) is out with a few bug fixes in the binding and loop code
 - Svelte Language Tools has introduced support for the then/catch shorthands from Svelte 3.41 and TypeScript's "go to" functionality ([105.8.0 and later](https://github.com/sveltejs/language-tools/releases/tag/extensions-105.8.0))
-- The Svelte REPL got a nice upgrade as well - letting you delete saved REPLs. Try it out by logging in at [svelte.dev/apps](https://svelte.dev/apps)
+- The Svelte REPL got a nice upgrade as well - letting you delete saved REPLs. Try it out by logging in at [svelte.dev/apps](/apps)
 
 ---
 
@@ -38,7 +38,7 @@ Happy new year, Svelte Community! Lots to share this month across Svelte, Svelte
 - [Version 0.2 of Tangent](http://tangentnotes.com/Download), a Svelte-based note writing app, is now in beta
 - [Intl Explorer](https://github.com/jesperorb/intl-explorer) is a tool for viewing output for all possible formatters for Intl
 
-A lot of work this month has gone into migrating the Svelte main website and Svelte REPL to live in the https://github.com/sveltejs/sites repository - including a brand new homepage for [svelte.dev](https://svelte.dev/). Thanks to all the contributors who made this possible!
+A lot of work this month has gone into migrating the Svelte main website and Svelte REPL to live in the https://github.com/sveltejs/sites repository - including a brand new homepage for [svelte.dev](/). Thanks to all the contributors who made this possible!
 
 If you're looking for a fun SvelteKit project to work on, [you can contribute to the Svelte Society site rewrite](https://github.com/svelte-society/sveltesociety-2021/issues) 💅
 
diff --git a/apps/svelte.dev/content/blog/2022-01-13-accelerating-sveltes-development.md b/apps/svelte.dev/content/blog/2022-01-13-accelerating-sveltes-development.md
index bd2f092ae8..2704c71a4c 100644
--- a/apps/svelte.dev/content/blog/2022-01-13-accelerating-sveltes-development.md
+++ b/apps/svelte.dev/content/blog/2022-01-13-accelerating-sveltes-development.md
@@ -41,7 +41,7 @@ We’ve also been working closely with the [Vite](https://vitejs.dev) team to ir
 
 ## A growing community
 
-[SvelteSociety](https://sveltesociety.dev/) just hosted the [4th Svelte Summit](https://sveltesummit.com/) — [read a summary here](https://svelte.dev/blog/whats-new-in-svelte-december-2021#What-happened-at-Svelte-Summit) — and Kevin Åberg Kultalahti is [going full-time to lead SvelteSociety](https://twitter.com/kevmodrome/status/1463151477174714373). In addition to hosting Svelte Summit, Kevin and SvelteSociety host and manage the [Svelte Radio podcast](https://www.svelteradio.com/), the [SvelteSociety YouTube channel](https://www.youtube.com/SvelteSociety), and the [Svelte subreddit](https://www.reddit.com/r/sveltejs). SvelteSociety has become the home of all things related to the Svelte community, with the sveltejs/community and sveltejs/integrations repos being retired in favor of [sveltesociety.dev](https://sveltesociety.dev/), which has been redesigned and rebuilt in SvelteKit. In October [Brittney Postma](https://github.com/brittneypostma), [Willow aka GHOST](https://ghostdev.xyz), [Steph Dietz](https://github.com/StephDietz), and [Gen Ashley](https://twitter.com/coderinheels) founded [Svelte Sirens](https://sveltesirens.dev/), a group for women & non-binary community members and their allies.
+[SvelteSociety](https://sveltesociety.dev/) just hosted the [4th Svelte Summit](https://sveltesummit.com/) — [read a summary here](/blog/whats-new-in-svelte-december-2021#What-happened-at-Svelte-Summit) — and Kevin Åberg Kultalahti is [going full-time to lead SvelteSociety](https://twitter.com/kevmodrome/status/1463151477174714373). In addition to hosting Svelte Summit, Kevin and SvelteSociety host and manage the [Svelte Radio podcast](https://www.svelteradio.com/), the [SvelteSociety YouTube channel](https://www.youtube.com/SvelteSociety), and the [Svelte subreddit](https://www.reddit.com/r/sveltejs). SvelteSociety has become the home of all things related to the Svelte community, with the sveltejs/community and sveltejs/integrations repos being retired in favor of [sveltesociety.dev](https://sveltesociety.dev/), which has been redesigned and rebuilt in SvelteKit. In October [Brittney Postma](https://github.com/brittneypostma), [Willow aka GHOST](https://ghostdev.xyz), [Steph Dietz](https://github.com/StephDietz), and [Gen Ashley](https://twitter.com/coderinheels) founded [Svelte Sirens](https://sveltesirens.dev/), a group for women & non-binary community members and their allies.
 
 Hundreds of developers join the Svelte Discord every week to chat about Svelte. You may have noticed that, as of recently, some members of the server have purple names. These are people with the ambassadors role, which was created to recognise some of the community’s most valued members and help manage the demands of a rapidly growing community. Svelte ambassadors are people who are well known for their helpfulness and contributions and for upholding Svelte’s reputation as a friendly, welcoming community, and we’re deeply grateful for their involvement. The initial ambassadors in alphabetical order are:
 
@@ -66,4 +66,4 @@ SvelteKit is continuing to progress towards 1.0 and, in just the past week, we h
 
 While a lot of effort has been going into SvelteKit recently, we continue to progress the entire ecosystem. [Svelte 3.46.0](https://github.com/sveltejs/svelte/blob/master/CHANGELOG.md#3460) was one of our biggest releases in awhile with two major new features added: [constants in markup](https://github.com/sveltejs/rfcs/blob/master/text/0007-markup-constants.md) and [style directives](https://github.com/sveltejs/rfcs/blob/master/text/0008-style-directives.md).
 
-Svelte and SvelteKit’s trajectories have been accelerated by the numerous investments above and there will be many more updates to come — subscribe to the [blog](/blog) via [RSS](https://svelte.dev/blog/rss.xml) or check monthly to be the first to get them.
+Svelte and SvelteKit’s trajectories have been accelerated by the numerous investments above and there will be many more updates to come — subscribe to the [blog](/blog) via [RSS](/blog/rss.xml) or check monthly to be the first to get them.
diff --git a/apps/svelte.dev/content/blog/2022-02-01-whats-new-in-svelte-february-2022.md b/apps/svelte.dev/content/blog/2022-02-01-whats-new-in-svelte-february-2022.md
index f5f56201b5..97b95686a6 100644
--- a/apps/svelte.dev/content/blog/2022-02-01-whats-new-in-svelte-february-2022.md
+++ b/apps/svelte.dev/content/blog/2022-02-01-whats-new-in-svelte-february-2022.md
@@ -14,7 +14,7 @@ Let's take a look...
 - **3.45.0** brought a [new a11y warning `a11y-no-redundant-roles`](https://v4.svelte.dev/docs#accessibility-warnings-a11y-no-redundant-roles), destructuring and caching fixes
 - **3.46.0** added the much requested [`{@const}` tag](https://v4.svelte.dev/docs#template-syntax-const) and [`style:` directive](https://v4.svelte.dev/docs#template-syntax-element-directives-style-property)
 - Check out **3.46.1 - 3.46.3** for fixes to the `{@const}` tag and `style:` directive, along with a number of fixes to animations
-- [AST output is now available in the Svelte REPL](https://svelte.dev/repl/hello-world)
+- [AST output is now available in the Svelte REPL](/playground/hello-world)
 
 ## What's new in SvelteKit
 
@@ -68,7 +68,7 @@ Want to work on a SvelteKit site with others, [try contributing to the Svelte So
 
 _To Read_
 
-- [Accelerating Svelte's Development](https://svelte.dev/blog/accelerating-sveltes-development) by Ben McCann
+- [Accelerating Svelte's Development](/blog/accelerating-sveltes-development) by Ben McCann
 - [Storybook for Vite](https://storybook.js.org/blog/storybook-for-vite/)
 - [Let's learn SvelteKit by building a static Markdown blog from scratch](https://joshcollinsworth.com/blog/build-static-sveltekit-markdown-blog) by Josh Collinsworth
 - [Building an iOS app with Svelte, Capacitor and Firebase](https://harryherskowitz.com/2022/01/05/tapedrop-app.html) by Harry Herskowitz
diff --git a/apps/svelte.dev/content/blog/2022-03-01-whats-new-in-svelte-march-2022.md b/apps/svelte.dev/content/blog/2022-03-01-whats-new-in-svelte-march-2022.md
index 1f2b88b236..9e741845bd 100644
--- a/apps/svelte.dev/content/blog/2022-03-01-whats-new-in-svelte-march-2022.md
+++ b/apps/svelte.dev/content/blog/2022-03-01-whats-new-in-svelte-march-2022.md
@@ -42,7 +42,7 @@ More on that and other new features and fixes below!
 - [The Making Known](https://the-making-known.com/) is a narrated encounter with posters designed by the Nazi German government to communicate with the occupied nations of Belgium, France, and Luxembourg during the Second World War
 - [Svelte Kanban](https://github.com/V-Py/svelte-kanban) is a simple Svelte Kanban made in pure CSS
 - [fngrng](https://github.com/nvlgzr/fngrng) is a typing trainer focussed on accuracy over speed
-- [Generative grids](https://svelte.dev/repl/873988ce33db43f097c0ca69df57b3ac?version=3.46.4) is a neat little generative SVG grid in a Svelte REPL, with randomly generated color palettes and shapes
+- [Generative grids](/playground/873988ce33db43f097c0ca69df57b3ac?version=3.46.4) is a neat little generative SVG grid in a Svelte REPL, with randomly generated color palettes and shapes
 - [LifeHash](https://github.com/BlockchainCommons/lifehash.info) is a method of hash visualization that creates beautiful, deterministic icons
 - [TypedWebhook.tools](https://typedwebhook.tools/) is a webhook testing tool for checking payloads, with automatic type generation
 - [Speedskating](https://github.com/spiegelgraphics/speedskating) is an animation widget to show olympic speedskating runs. Built with Svelte, D3 and regl
diff --git a/apps/svelte.dev/content/blog/2022-09-01-whats-new-in-svelte-september-2022.md b/apps/svelte.dev/content/blog/2022-09-01-whats-new-in-svelte-september-2022.md
index 7ff272f3f8..be53ed623a 100644
--- a/apps/svelte.dev/content/blog/2022-09-01-whats-new-in-svelte-september-2022.md
+++ b/apps/svelte.dev/content/blog/2022-09-01-whats-new-in-svelte-september-2022.md
@@ -91,8 +91,8 @@ _To Read_
 - [sveltekit-flash-message](https://www.npmjs.com/package/sveltekit-flash-message) is a Sveltekit library that passes temporary data to the next request, usually from endpoints
 - [svelte-particles](https://github.com/matteobruni/tsparticles#svelte) is a lightweight TypeScript library for creating particles
 - [svelte-claps](https://github.com/bufgix/svelte-claps) adds clap button (like Medium) to any page for your SvelteKit apps
-- [Neon Flicker](https://svelte.dev/repl/fd5e3b2be7da42fe8afddf89661af7d7?version=3.49.0) is a Svelte component to make your text flicker in a cyberpunk style
-- [ComboBox](https://svelte.dev/repl/144f22d18c6943abb1fdd00f13e23fde?version=3.49.0) is a search input to help users select from a large list of items
+- [Neon Flicker](/playground/fd5e3b2be7da42fe8afddf89661af7d7?version=3.49.0) is a Svelte component to make your text flicker in a cyberpunk style
+- [ComboBox](/playground/144f22d18c6943abb1fdd00f13e23fde?version=3.49.0) is a search input to help users select from a large list of items
 - [@svelte-put](https://github.com/vnphanquang/svelte-put) is useful svelte stuff to put in your projects
 - [vite-plugin-svelte-bridge](https://github.com/joshnuss/vite-plugin-svelte-bridge) lets you write Svelte components and use them from React & Vue
 
diff --git a/apps/svelte.dev/content/blog/2022-11-01-whats-new-in-svelte-november-2022.md b/apps/svelte.dev/content/blog/2022-11-01-whats-new-in-svelte-november-2022.md
index 55f9282e47..75e8b7ca0d 100644
--- a/apps/svelte.dev/content/blog/2022-11-01-whats-new-in-svelte-november-2022.md
+++ b/apps/svelte.dev/content/blog/2022-11-01-whats-new-in-svelte-november-2022.md
@@ -25,9 +25,9 @@ There's also a _huge_ showcase to cover... so let's jump in!
 ## Svelte changes
 
 - New accessibility warnings, `a11y-click-events-have-key-events` and `a11y-no-noninteractive-tabindex`, will now warn when your components lack required key events or tabindex. While `a11y-role-has-required-aria-props` will no longer warn when elements match their semantic role (**3.51.0**)
-- `--style-props` are now supported on `` and `` (**3.51.0**, Component Example: [Before](https://svelte.dev/repl/48984f20503f4959b70f24f4130d164b?version=3.47.0) and [After](https://svelte.dev/repl/48984f20503f4959b70f24f4130d164b?version=3.51.0), SVG Example: [Before](https://svelte.dev/repl/b7a3f94255914044b35462234ccaea43?version=3.50.0) and [After](https://svelte.dev/repl/b7a3f94255914044b35462234ccaea43?version=3.51.0))
-- "nullish" values for component event handlers are now supported (**3.51.0**, [Example](https://svelte.dev/repl/9228022922af4c76af68ce42349ccbf9?version=3.51.0))
-- Scoped styles can now be applied to `` (**3.51.0**, [Example](https://svelte.dev/repl/23d982fc6f4f4f06a6aa227860fa2d84?version=3.51.0))
+- `--style-props` are now supported on `` and `` (**3.51.0**, Component Example: [Before](/playground/48984f20503f4959b70f24f4130d164b?version=3.47.0) and [After](/playground/48984f20503f4959b70f24f4130d164b?version=3.51.0), SVG Example: [Before](/playground/b7a3f94255914044b35462234ccaea43?version=3.50.0) and [After](/playground/b7a3f94255914044b35462234ccaea43?version=3.51.0))
+- "nullish" values for component event handlers are now supported (**3.51.0**, [Example](/playground/9228022922af4c76af68ce42349ccbf9?version=3.51.0))
+- Scoped styles can now be applied to `` (**3.51.0**, [Example](/playground/23d982fc6f4f4f06a6aa227860fa2d84?version=3.51.0))
 - You can now use `important` in inline style tags: `style:foo|important` (**3.52.0**, [#7365](https://github.com/sveltejs/svelte/issues/7365))
 - A warning will now be thrown when using `` without `rel="noreferrer"` (**3.52.0**, [#6188](https://github.com/sveltejs/svelte/issues/6188))
 
diff --git a/apps/svelte.dev/content/blog/2022-12-14-announcing-sveltekit-1.0.md b/apps/svelte.dev/content/blog/2022-12-14-announcing-sveltekit-1.0.md
index 3fd84120a8..1c6fe2e46d 100644
--- a/apps/svelte.dev/content/blog/2022-12-14-announcing-sveltekit-1.0.md
+++ b/apps/svelte.dev/content/blog/2022-12-14-announcing-sveltekit-1.0.md
@@ -100,6 +100,6 @@ If you have an app built with pre-release versions of SvelteKit, we recommend up
 
 SvelteKit 1.0 is the beginning, not the end. It’s ready for production use today, but we’re just getting started. Our roadmap includes built-in i18n support, incremental static regeneration, granular control over deployment region and runtime, image optimisation, and many other improvements. Next year we’ll also start work on Svelte 4 — more on that later.
 
-But don’t let us have the final word. Svelte is a community project, and many of our best ideas aren’t really ours at all — they’re yours. Subscribe to Svelte Society on [Twitter](https://twitter.com/SvelteSociety) and [YouTube](https://youtube.com/sveltesociety) to stay up to date, and join us in our [Discord server](https://svelte.dev/chat) and on [GitHub](https://github.com/sveltejs) to contribute back.
+But don’t let us have the final word. Svelte is a community project, and many of our best ideas aren’t really ours at all — they’re yours. Subscribe to Svelte Society on [Twitter](https://twitter.com/SvelteSociety) and [YouTube](https://youtube.com/sveltesociety) to stay up to date, and join us in our [Discord server](/chat) and on [GitHub](https://github.com/sveltejs) to contribute back.
 
 We can’t wait to see what you build.
diff --git a/apps/svelte.dev/content/blog/2023-01-01-whats-new-in-svelte-january-2023.md b/apps/svelte.dev/content/blog/2023-01-01-whats-new-in-svelte-january-2023.md
index 058cf20830..51747c2c4b 100644
--- a/apps/svelte.dev/content/blog/2023-01-01-whats-new-in-svelte-january-2023.md
+++ b/apps/svelte.dev/content/blog/2023-01-01-whats-new-in-svelte-january-2023.md
@@ -5,7 +5,7 @@ author: Dani Sandoval
 authorURL: https://dreamindani.com
 ---
 
-It's been just two weeks since the release of [SvelteKit 1.0](https://svelte.dev/blog/announcing-sveltekit-1.0)! If you haven't yet, check out the [livestream](https://www.youtube.com/watch?v=N4BRVkQVoMc), [new website](https://kit.svelte.dev/) and [tutorial](/tutorial) to learn all the features of SvelteKit step-by-step.
+It's been just two weeks since the release of [SvelteKit 1.0](/blog/announcing-sveltekit-1.0)! If you haven't yet, check out the [livestream](https://www.youtube.com/watch?v=N4BRVkQVoMc), [new website](https://kit.svelte.dev/) and [tutorial](/tutorial) to learn all the features of SvelteKit step-by-step.
 
 Let's dive into the details...
 
diff --git a/apps/svelte.dev/content/blog/2023-03-01-whats-new-in-svelte-march-2023.md b/apps/svelte.dev/content/blog/2023-03-01-whats-new-in-svelte-march-2023.md
index 33c0b0ae50..3c1794ae31 100644
--- a/apps/svelte.dev/content/blog/2023-03-01-whats-new-in-svelte-march-2023.md
+++ b/apps/svelte.dev/content/blog/2023-03-01-whats-new-in-svelte-march-2023.md
@@ -5,7 +5,7 @@ author: Dani Sandoval
 authorURL: https://dreamindani.com
 ---
 
-March is _coming in hot_ with a number of essential features having been added to SvelteKit following its 1.0 launch. Check out [last week's blog post](https://svelte.dev/blog/streaming-snapshots-sveltekit) for more details.
+March is _coming in hot_ with a number of essential features having been added to SvelteKit following its 1.0 launch. Check out [last week's blog post](/blog/streaming-snapshots-sveltekit) for more details.
 
 Svelte Society also launched [SvelteHack](https://hack.sveltesociety.dev/) last month with over $12,000 in prizes - calling all Svelte developers, new and old, to make something awesome before the April 17th deadline!
 
@@ -56,7 +56,7 @@ Now let's jump into this month's changes...
 
 _Featuring Svelte Contributors and Ambassadors_
 
-- [Streaming, snapshots, and other new features since SvelteKit 1.0](https://svelte.dev/blog/streaming-snapshots-sveltekit) by Geoff Rich (on the Svelte Blog)
+- [Streaming, snapshots, and other new features since SvelteKit 1.0](/blog/streaming-snapshots-sveltekit) by Geoff Rich (on the Svelte Blog)
 - [View Transition Experiments with Svelte](https://geoffrich.net/posts/view-transition-experiments/) and [Native Page Transitions in SvelteKit (updated for 2023)](https://geoffrich.net/posts/page-transitions-1/) by Geoff Rich
 - [Ron Au's story and how to be whimsical!](https://www.svelteradio.com/episodes/ron-aus-story-and-how-to-be-whimsical) by Svelte Radio
 - [SvelteKit 1.0 with Rich Harris](https://podrocket.logrocket.com/sveltekit) by PodRocket
diff --git a/apps/svelte.dev/content/blog/2023-04-01-whats-new-in-svelte-april-2023.md b/apps/svelte.dev/content/blog/2023-04-01-whats-new-in-svelte-april-2023.md
index 0233a58a0d..7388b400dc 100644
--- a/apps/svelte.dev/content/blog/2023-04-01-whats-new-in-svelte-april-2023.md
+++ b/apps/svelte.dev/content/blog/2023-04-01-whats-new-in-svelte-april-2023.md
@@ -36,7 +36,7 @@ For all the changes to the Svelte compiler, including unreleased changes, check
 - You can now get all cookies for a request with `cookies.getAll` (**1.10.0**, [#9287](https://github.com/sveltejs/kit/pull/9287), [Docs](/docs/kit/@sveltejs-kit#Cookies))
 - Easily manage the submission status of (multiple) forms with the new exposed `submitter` parameter in `use:enhance` (**1.12.0**, [#9425](https://github.com/sveltejs/kit/pull/9425), [Docs](/docs/kit/@sveltejs-kit#SubmitFunction))
 - The default error page now has dark mode styles (**1.13.0**, [#9460](https://github.com/sveltejs/kit/pull/9460))
-- You can now omit types on all methods and variables with special meaning to SvelteKit and still benefit from full type safety! Read more about it in the [announcement blog post](https://svelte.dev/blog/zero-config-type-safety)
+- You can now omit types on all methods and variables with special meaning to SvelteKit and still benefit from full type safety! Read more about it in the [announcement blog post](/blog/zero-config-type-safety)
 
 ---
 
@@ -60,7 +60,7 @@ For all the changes to the Svelte compiler, including unreleased changes, check
 
 _Featuring Svelte Contributors and Ambassadors_
 
-- [Streaming, snapshots, and other new features since SvelteKit 1.0](https://svelte.dev/blog/streaming-snapshots-sveltekit) by Geoff Rich on the svelte.dev Blog
+- [Streaming, snapshots, and other new features since SvelteKit 1.0](/blog/streaming-snapshots-sveltekit) by Geoff Rich on the svelte.dev Blog
 - [Dev Vlog: Rich Harris shows us what's new in Svelte and Kit, March 2023](https://www.youtube.com/watch?v=vgXgex5E-8g) from Svelte Society
   - If you missed this one live, check out [the next one](https://www.youtube.com/watch?v=MJHO6FSioPI) - scheduled for April 5th
 - [Svelte Society - London February 2023](https://www.youtube.com/watch?v=RkQ_f7XxdMI)
diff --git a/apps/svelte.dev/content/blog/2023-07-01-whats-new-in-svelte-july-2023.md b/apps/svelte.dev/content/blog/2023-07-01-whats-new-in-svelte-july-2023.md
index e67216b6ed..27092c1cd2 100644
--- a/apps/svelte.dev/content/blog/2023-07-01-whats-new-in-svelte-july-2023.md
+++ b/apps/svelte.dev/content/blog/2023-07-01-whats-new-in-svelte-july-2023.md
@@ -9,7 +9,7 @@ Svelte 4 is out and folks have been building! There's a bunch of new showcases,
 
 ## What's new in Svelte
 
-The big news this month was the release of Svelte 4.0! You can read all about it in the [Announcing Svelte 4 post](https://svelte.dev/blog/svelte-4). From performance fixes and developer experience improvements to [a brand new site, docs and tutorial](https://svelte.dev/blog/svelte-dev-overhaul)... this new release sets the stage for Svelte 5 with minimal breaking changes.
+The big news this month was the release of Svelte 4.0! You can read all about it in the [Announcing Svelte 4 post](/blog/svelte-4). From performance fixes and developer experience improvements to [a brand new site, docs and tutorial](/blog/svelte-dev-overhaul)... this new release sets the stage for Svelte 5 with minimal breaking changes.
 
 If you're already on Node.js 16, it's possible you won't see any breaking changes in your project. But be sure to read the [migration guide](/docs/svelte/v4-migration-guide) for all the details.
 
@@ -44,8 +44,8 @@ For adapter-specific changes, check out the CHANGELOGs in each of [the `adapter`
 
 ### Learning Resources
 
-- [Announcing Svelte 4 post](https://svelte.dev/blog/svelte-4)
-- [svelte.dev: A complete overhaul](https://svelte.dev/blog/svelte-dev-overhaul)
+- [Announcing Svelte 4 post](/blog/svelte-4)
+- [svelte.dev: A complete overhaul](/blog/svelte-dev-overhaul)
 
 _Featuring Svelte Contributors and Ambassadors_
 
diff --git a/apps/svelte.dev/content/blog/2023-09-01-whats-new-in-svelte-september-2023.md b/apps/svelte.dev/content/blog/2023-09-01-whats-new-in-svelte-september-2023.md
index 966328ca0c..5abf6af7a2 100644
--- a/apps/svelte.dev/content/blog/2023-09-01-whats-new-in-svelte-september-2023.md
+++ b/apps/svelte.dev/content/blog/2023-09-01-whats-new-in-svelte-september-2023.md
@@ -17,7 +17,7 @@ Before we jump in, a warm welcome to the new Svelte Ambassadors: [@cainux](https
 
 - `URL` is now accepted in the `redirect` function (**1.23.0**, [Docs](/docs/kit/@sveltejs-kit#redirect), [#10570](https://github.com/sveltejs/kit/pull/10570))
 - Mistyped route filenames will now throw a warning (**1.23.0**, [#10558](https://github.com/sveltejs/kit/pull/10558))
-- The new `onNavigate` lifecycle function enables view transitions - Check out the [blog post](https://svelte.dev/blog/view-transitions) for more info (**1.24.0**, [Docs](/docs/kit/$app-navigation#onNavigate), [#9605](https://github.com/sveltejs/kit/pull/9605))
+- The new `onNavigate` lifecycle function enables view transitions - Check out the [blog post](/blog/view-transitions) for more info (**1.24.0**, [Docs](/docs/kit/$app-navigation#onNavigate), [#9605](https://github.com/sveltejs/kit/pull/9605))
 
 But that's just the new features! For all the patches and performance updates from this month, check out the [SvelteKit CHANGELOG](https://github.com/sveltejs/kit/blob/master/packages/kit/CHANGELOG.md). You can also find adapter-specific CHANGELOGs in each of [the `adapter` directories](https://github.com/sveltejs/kit/tree/master/packages).
 
diff --git a/apps/svelte.dev/content/blog/2023-10-01-hacktoberfest.md b/apps/svelte.dev/content/blog/2023-10-01-hacktoberfest.md
index 62188b4797..02c181a023 100644
--- a/apps/svelte.dev/content/blog/2023-10-01-hacktoberfest.md
+++ b/apps/svelte.dev/content/blog/2023-10-01-hacktoberfest.md
@@ -19,6 +19,6 @@ If you need inspiration when looking for an issue to fix, check out the [low han
 
 It's a good idea to communicate clearly and often about what you're trying to solve or take on. You can do this by commenting on the issues you intend to take on. This helps avoid duplicate work and ensures that your contribution is in line with the project's goals. Nobody likes to have their work rejected, so it's best to ask questions early and often!
 
-Join our [Discord](https://svelte.dev/chat) and ask questions in the dedicated `#hacktoberfest` channel. We're happy to help you get started!
+Join our [Discord](/chat) and ask questions in the dedicated `#hacktoberfest` channel. We're happy to help you get started!
 
 We're excited to see what you've got in store for SvelteKit! Happy hacking! 🎃
diff --git a/apps/svelte.dev/content/blog/2023-10-01-whats-new-in-svelte-october-2023.md b/apps/svelte.dev/content/blog/2023-10-01-whats-new-in-svelte-october-2023.md
index 02660924a6..2a2294d705 100644
--- a/apps/svelte.dev/content/blog/2023-10-01-whats-new-in-svelte-october-2023.md
+++ b/apps/svelte.dev/content/blog/2023-10-01-whats-new-in-svelte-october-2023.md
@@ -5,7 +5,7 @@ author: Dani Sandoval
 authorURL: https://dreamindani.com
 ---
 
-Svelte 5 isn't out yet (you can, however, [preview it now](https://svelte-5-preview.vercel.app/)), but that doesn't mean we don't get a sneak peek! Most notably are [Runes](https://svelte.dev/blog/runes) - a simpler way to manage reactive variables in Svelte code. There's lots of links the showcase section for deeper dives on all things Runes, but let's talk about what else been released this month...
+Svelte 5 isn't out yet (you can, however, [preview it now](https://svelte-5-preview.vercel.app/)), but that doesn't mean we don't get a sneak peek! Most notably are [Runes](/blog/runes) - a simpler way to manage reactive variables in Svelte code. There's lots of links the showcase section for deeper dives on all things Runes, but let's talk about what else been released this month...
 
 ## What's new in Svelte & Language Tools
 
diff --git a/apps/svelte.dev/content/blog/2023-11-01-whats-new-in-svelte-november-2023.md b/apps/svelte.dev/content/blog/2023-11-01-whats-new-in-svelte-november-2023.md
index 56f9e4ee7a..6cffddbbed 100644
--- a/apps/svelte.dev/content/blog/2023-11-01-whats-new-in-svelte-november-2023.md
+++ b/apps/svelte.dev/content/blog/2023-11-01-whats-new-in-svelte-november-2023.md
@@ -5,7 +5,7 @@ author: Dani Sandoval
 authorURL: https://dreamindani.com
 ---
 
-Mark your calendars! [Svelte Summit Fall](https://www.sveltesummit.com/2023/fall) is on November 11th. Join us on [YouTube](https://www.youtube.com/@SvelteSociety/streams) and in the [Discord](https://svelte.dev/chat) for hours of Svelte-focused fun 🎥
+Mark your calendars! [Svelte Summit Fall](https://www.sveltesummit.com/2023/fall) is on November 11th. Join us on [YouTube](https://www.youtube.com/@SvelteSociety/streams) and in the [Discord](/chat) for hours of Svelte-focused fun 🎥
 
 Every month, maintainers within the Svelte ecosystem fix bugs, improve performance and bring new features to Svelte, SvelteKit and the tooling around them. This month's releases brings an improved developer experience with better [block folding](https://code.visualstudio.com/docs/editor/codebasics#_folding), inferred types and configuration for `use:enhance`.
 
diff --git a/apps/svelte.dev/content/blog/2024-01-01-whats-new-in-svelte-january-2024.md b/apps/svelte.dev/content/blog/2024-01-01-whats-new-in-svelte-january-2024.md
index bd23816ce1..644597f38a 100644
--- a/apps/svelte.dev/content/blog/2024-01-01-whats-new-in-svelte-january-2024.md
+++ b/apps/svelte.dev/content/blog/2024-01-01-whats-new-in-svelte-january-2024.md
@@ -5,7 +5,7 @@ author: Dani Sandoval
 authorURL: https://dreamindani.com
 ---
 
-Happy New Year! It's been a busy month for the Svelte maintainers - with tons of new features dropping in the Svelte 5 preview and the [release of SvelteKit 2](https://svelte.dev/blog/sveltekit-2)!
+Happy New Year! It's been a busy month for the Svelte maintainers - with tons of new features dropping in the Svelte 5 preview and the [release of SvelteKit 2](/blog/sveltekit-2)!
 
 You can find all the new features in both projects below, along with a bunch of resources and sites built with Svelte in the Community Showcase.
 
@@ -53,7 +53,7 @@ For all the release notes going forward, check out [the CHANGELOG on main](https
   and common developer docs
 - [hintable](https://github.com/willuhmjs/hintable) is an exciting word guessing game
 - [domian.io](https://domian.io/) retrieves a list of the most likely misspellings for your domain, their availability, and an easy way to register them
-- [Story Scroller](https://svelte.dev/repl/6182be0c3ada4a15b5046f7d0d031727?version=4.2.8) is a REPL showcasing how Svelte can be used to make a scrollable cards list
+- [Story Scroller](/playground/6182be0c3ada4a15b5046f7d0d031727?version=4.2.8) is a REPL showcasing how Svelte can be used to make a scrollable cards list
 - [The Atlas of Sustainable Development Goals 2023](https://datatopics.worldbank.org/sdgatlas?lang=en) presents interactive storytelling and data visualizations about the 17 Sustainable Development Goals.
 - [Lingotrack](https://lingotrack.com/) is a social platform for you as a language learner to track your progress and find engaging new media
 - [Lofi Flow](https://github.com/nico-mayer/lofi-flow) lets you save your best-loved YouTube lofi live radios and videos in one spot
diff --git a/apps/svelte.dev/content/blog/2024-06-01-whats-new-in-svelte-june-2024.md b/apps/svelte.dev/content/blog/2024-06-01-whats-new-in-svelte-june-2024.md
index fb2f8e85b0..c11fe27a5f 100644
--- a/apps/svelte.dev/content/blog/2024-06-01-whats-new-in-svelte-june-2024.md
+++ b/apps/svelte.dev/content/blog/2024-06-01-whats-new-in-svelte-june-2024.md
@@ -5,7 +5,7 @@ author: Dani Sandoval
 authorURL: https://dreamindani.com
 ---
 
-The maintainers have been hard at work getting the [Svelte 5 Release Candidate](https://svelte.dev/blog/svelte-5-release-candidate) ready for release. In this month's newsletter, you'll find highlights from the pre-release [CHANGELOG](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md) and a host of items from our community showcase.
+The maintainers have been hard at work getting the [Svelte 5 Release Candidate](/blog/svelte-5-release-candidate) ready for release. In this month's newsletter, you'll find highlights from the pre-release [CHANGELOG](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md) and a host of items from our community showcase.
 
 Let's dive in!
 
diff --git a/apps/svelte.dev/content/blog/2024-09-01-whats-new-in-svelte-september-2024.md b/apps/svelte.dev/content/blog/2024-09-01-whats-new-in-svelte-september-2024.md
index c7da4ebc83..b004afa165 100644
--- a/apps/svelte.dev/content/blog/2024-09-01-whats-new-in-svelte-september-2024.md
+++ b/apps/svelte.dev/content/blog/2024-09-01-whats-new-in-svelte-september-2024.md
@@ -69,7 +69,7 @@ _To Watch_
 
 ### Libraries, Tools & Components
 
-- [This gooey tooltip](https://svelte.dev/repl/790fd75f954846be83afaa9e5ea821a8?version=4.2.18) is fluid and satisfying
+- [This gooey tooltip](/playground/790fd75f954846be83afaa9e5ea821a8?version=4.2.18) is fluid and satisfying
 - [select-kit](https://github.com/snehalbaghel/select-kit) is a one-stop solution for all your select/combobox/autocomplete needs
 - [ssgoi](https://github.com/meursyphus/ssgoi) is a page transition library thats support animated page transition with every browser - including Safari
 - [@svelte-put/preaction](https://svelte-put-next.vnphanquang.com/docs/preaction) is a proof-of-concept Svelte preprocessor that allows usage of "preaction" - an extension to Svelte action with the ability to add static attributes on server-side
diff --git a/apps/svelte.dev/content/blog/2024-11-01-whats-new-in-svelte-november-2024.md b/apps/svelte.dev/content/blog/2024-11-01-whats-new-in-svelte-november-2024.md
index 7d70021378..49c424ec59 100644
--- a/apps/svelte.dev/content/blog/2024-11-01-whats-new-in-svelte-november-2024.md
+++ b/apps/svelte.dev/content/blog/2024-11-01-whats-new-in-svelte-november-2024.md
@@ -5,7 +5,7 @@ author: Dani Sandoval
 authorURL: https://dreamindani.com
 ---
 
-In case you missed the [announcement post](https://svelte.dev/blog/svelte-5-is-alive), the brand new [omnisite](https://svelte.dev/blog/the-omnisite) or the maintainers [shipping it LIVE during Svelte Summit](https://www.youtube.com/live/fAPFsRP-mbc?si=Atd1WNpoMddssSna&t=13084)... Svelte 5 is out!
+In case you missed the [announcement post](/blog/svelte-5-is-alive), the brand new [omnisite](/blog/the-omnisite) or the maintainers [shipping it LIVE during Svelte Summit](https://www.youtube.com/live/fAPFsRP-mbc?si=Atd1WNpoMddssSna&t=13084)... Svelte 5 is out!
 
 Also announced at Svelte Summit was [SvelteHack 2024: A Svelte Hackathon (with not-so-svelte prizes)](https://hack.sveltesociety.dev/2024). The submission period ends January 9 and only projects started after October 18th are eligible. So get those `$`s ready and start hacking!
 
@@ -25,7 +25,7 @@ To see all the amazing work that has gone into making the Svelte compiler better
 ## What's new in SvelteKit, Svelte CLI and Language Tools
 
 - `adapter-auto` now supports the Bun package manager (**3.3.1**, [#12854](https://github.com/sveltejs/kit/pull/12854))
-- The [Svelte CLI](https://svelte.dev/blog/sv-the-svelte-cli) now supports a number of add-ons for new and existing projects. You can find the entire list of add ons in [the CLI Repository](https://github.com/sveltejs/cli) or by running `npx sv create` from your command line.
+- The [Svelte CLI](/blog/sv-the-svelte-cli) now supports a number of add-ons for new and existing projects. You can find the entire list of add ons in [the CLI Repository](https://github.com/sveltejs/cli) or by running `npx sv create` from your command line.
 - The Svelte extension now provides a Svelte 5 component migration command (**extensions-109.1.0**)
 
 ---
diff --git a/apps/svelte.dev/content/docs/kit/98-reference/10-@sveltejs-kit.md b/apps/svelte.dev/content/docs/kit/98-reference/10-@sveltejs-kit.md
index 6b1077b2ce..0927822697 100644
--- a/apps/svelte.dev/content/docs/kit/98-reference/10-@sveltejs-kit.md
+++ b/apps/svelte.dev/content/docs/kit/98-reference/10-@sveltejs-kit.md
@@ -184,7 +184,7 @@ function text(
 ## Action
 
 Shape of a form action method that is part of `export const actions = {..}` in `+page.server.js`.
-See [form actions](https://svelte.dev/docs/kit/form-actions) for more information.
+See [form actions](/docs/kit/form-actions) for more information.
 
 
@@ -275,7 +275,7 @@ type ActionResult< ## Actions Shape of the `export const actions = {..}` object in `+page.server.js`. -See [form actions](https://svelte.dev/docs/kit/form-actions) for more information. +See [form actions](/docs/kit/form-actions) for more information.
@@ -296,7 +296,7 @@ type Actions< ## Adapter -[Adapters](https://svelte.dev/docs/kit/adapters) are responsible for taking the production build and turning it into something that can be deployed to a platform of your choosing. +[Adapters](/docs/kit/adapters) are responsible for taking the production build and turning it into something that can be deployed to a platform of your choosing.
@@ -384,7 +384,7 @@ during dev, build and prerendering ## AfterNavigate -The argument passed to [`afterNavigate`](https://svelte.dev/docs/kit/$app-navigation#afterNavigate) callbacks. +The argument passed to [`afterNavigate`](/docs/kit/$app-navigation#afterNavigate) callbacks.
@@ -443,7 +443,7 @@ type AwaitedActions< ## BeforeNavigate -The argument passed to [`beforeNavigate`](https://svelte.dev/docs/kit/$app-navigation#beforeNavigate) callbacks. +The argument passed to [`beforeNavigate`](/docs/kit/$app-navigation#beforeNavigate) callbacks.
@@ -955,8 +955,8 @@ and returns an `App.Platform` object ## Handle -The [`handle`](https://svelte.dev/docs/kit/hooks#Server-hooks-handle) hook runs every time the SvelteKit server receives a [request](https://svelte.dev/docs/kit/web-standards#Fetch-APIs-Request) and -determines the [response](https://svelte.dev/docs/kit/web-standards#Fetch-APIs-Response). +The [`handle`](/docs/kit/hooks#Server-hooks-handle) hook runs every time the SvelteKit server receives a [request](/docs/kit/web-standards#Fetch-APIs-Request) and +determines the [response](/docs/kit/web-standards#Fetch-APIs-Response). It receives an `event` object representing the request and a function called `resolve`, which renders the route and generates a `Response`. This allows you to modify response headers or bodies, or bypass SvelteKit entirely (for implementing routes programmatically, for example). @@ -976,7 +976,7 @@ type Handle = (input: { ## HandleClientError -The client-side [`handleError`](https://svelte.dev/docs/kit/hooks#Shared-hooks-handleError) hook runs when an unexpected error is thrown while navigating. +The client-side [`handleError`](/docs/kit/hooks#Shared-hooks-handleError) hook runs when an unexpected error is thrown while navigating. If an unexpected error is thrown during loading or the following render, this function will be called with the error and the event. Make sure that this function _never_ throws an error. @@ -996,7 +996,7 @@ type HandleClientError = (input: { ## HandleFetch -The [`handleFetch`](https://svelte.dev/docs/kit/hooks#Server-hooks-handleFetch) hook allows you to modify (or replace) a `fetch` request that happens inside a `load` function that runs on the server (or during pre-rendering) +The [`handleFetch`](/docs/kit/hooks#Server-hooks-handleFetch) hook allows you to modify (or replace) a `fetch` request that happens inside a `load` function that runs on the server (or during pre-rendering)
@@ -1012,7 +1012,7 @@ type HandleFetch = (input: { ## HandleServerError -The server-side [`handleError`](https://svelte.dev/docs/kit/hooks#Shared-hooks-handleError) hook runs when an unexpected error is thrown while responding to a request. +The server-side [`handleError`](/docs/kit/hooks#Shared-hooks-handleError) hook runs when an unexpected error is thrown while responding to a request. If an unexpected error is thrown during loading or rendering, this function will be called with the error and the event. Make sure that this function _never_ throws an error. @@ -1032,7 +1032,7 @@ type HandleServerError = (input: { ## HttpError -The object returned by the [`error`](https://svelte.dev/docs/kit/@sveltejs-kit#error) function. +The object returned by the [`error`](/docs/kit/@sveltejs-kit#error) function.
@@ -1087,7 +1087,7 @@ type LessThan< ## Load -The generic form of `PageLoad` and `LayoutLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#Generated-types)) +The generic form of `PageLoad` and `LayoutLoad`. You should import those from `./$types` (see [generated types](/docs/kit/types#Generated-types)) rather than using `Load` directly.
@@ -1119,7 +1119,7 @@ type Load< ## LoadEvent -The generic form of `PageLoadEvent` and `LayoutLoadEvent`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#Generated-types)) +The generic form of `PageLoadEvent` and `LayoutLoadEvent`. You should import those from `./$types` (see [generated types](/docs/kit/types#Generated-types)) rather than using `LoadEvent` directly.
@@ -1559,7 +1559,7 @@ type NumericRange< ## OnNavigate -The argument passed to [`onNavigate`](https://svelte.dev/docs/kit/$app-navigation#onNavigate) callbacks. +The argument passed to [`onNavigate`](/docs/kit/$app-navigation#onNavigate) callbacks.
@@ -1732,7 +1732,7 @@ Filled only after a form submission. See [form actions](https://svelte.dev/docs/ ## ParamMatcher -The shape of a param matcher. See [matching](https://svelte.dev/docs/kit/advanced-routing#Matching) for more info. +The shape of a param matcher. See [matching](/docs/kit/advanced-routing#Matching) for more info.
@@ -1754,7 +1754,7 @@ type PrerenderOption = boolean | 'auto'; ## Redirect -The object returned by the [`redirect`](https://svelte.dev/docs/kit/@sveltejs-kit#redirect) function +The object returned by the [`redirect`](/docs/kit/@sveltejs-kit#redirect) function
@@ -2003,7 +2003,7 @@ isSubRequest: boolean; A `(event: RequestEvent) => Response` function exported from a `+server.js` file that corresponds to an HTTP verb (`GET`, `PUT`, `PATCH`, etc) and handles requests with that method. -It receives `Params` as the first generic argument, which you can skip by using [generated types](https://svelte.dev/docs/kit/types#Generated-types) instead. +It receives `Params` as the first generic argument, which you can skip by using [generated types](/docs/kit/types#Generated-types) instead.
@@ -2022,7 +2022,7 @@ type RequestHandler< ## Reroute -The [`reroute`](https://svelte.dev/docs/kit/hooks#Universal-hooks-reroute) hook allows you to modify the URL before it is used to determine which route to render. +The [`reroute`](/docs/kit/hooks#Universal-hooks-reroute) hook allows you to modify the URL before it is used to determine which route to render.
@@ -2359,7 +2359,7 @@ A function that turns an asset filename into a `ReadableStream`. Required for th ## ServerLoad -The generic form of `PageServerLoad` and `LayoutServerLoad`. You should import those from `./$types` (see [generated types](https://svelte.dev/docs/kit/types#Generated-types)) +The generic form of `PageServerLoad` and `LayoutServerLoad`. You should import those from `./$types` (see [generated types](/docs/kit/types#Generated-types)) rather than using `ServerLoad` directly.
diff --git a/apps/svelte.dev/content/docs/kit/98-reference/20-$app-navigation.md b/apps/svelte.dev/content/docs/kit/98-reference/20-$app-navigation.md index 8763e1b6ff..eb6fae486a 100644 --- a/apps/svelte.dev/content/docs/kit/98-reference/20-$app-navigation.md +++ b/apps/svelte.dev/content/docs/kit/98-reference/20-$app-navigation.md @@ -227,7 +227,7 @@ function preloadData(href: string): Promise< ## pushState -Programmatically create a new history entry with the given `$page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](https://svelte.dev/docs/kit/shallow-routing). +Programmatically create a new history entry with the given `$page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](/docs/kit/shallow-routing).
@@ -244,7 +244,7 @@ function pushState( ## replaceState -Programmatically replace the current history entry with the given `$page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](https://svelte.dev/docs/kit/shallow-routing). +Programmatically replace the current history entry with the given `$page.state`. To use the current URL, you can pass `''` as the first argument. Used for [shallow routing](/docs/kit/shallow-routing).
diff --git a/apps/svelte.dev/content/docs/kit/98-reference/20-$app-paths.md b/apps/svelte.dev/content/docs/kit/98-reference/20-$app-paths.md index d2a5123db5..eb2416e52c 100644 --- a/apps/svelte.dev/content/docs/kit/98-reference/20-$app-paths.md +++ b/apps/svelte.dev/content/docs/kit/98-reference/20-$app-paths.md @@ -11,7 +11,7 @@ import { assets, base, resolveRoute } from '$app/paths'; ## assets -An absolute path that matches [`config.kit.paths.assets`](https://svelte.dev/docs/kit/configuration#paths). +An absolute path that matches [`config.kit.paths.assets`](/docs/kit/configuration#paths). > [!NOTE] If a value for `config.kit.paths.assets` is specified, it will be replaced with `'/_svelte_kit_assets'` during `vite dev` or `vite preview`, since the assets don't yet live at their eventual URL. @@ -31,7 +31,7 @@ let assets: ## base -A string that matches [`config.kit.paths.base`](https://svelte.dev/docs/kit/configuration#paths). +A string that matches [`config.kit.paths.base`](/docs/kit/configuration#paths). Example usage: `Link` diff --git a/apps/svelte.dev/content/docs/kit/98-reference/20-$app-stores.md b/apps/svelte.dev/content/docs/kit/98-reference/20-$app-stores.md index 395e326054..2698387c39 100644 --- a/apps/svelte.dev/content/docs/kit/98-reference/20-$app-stores.md +++ b/apps/svelte.dev/content/docs/kit/98-reference/20-$app-stores.md @@ -67,7 +67,7 @@ const page: import('svelte/store').Readable< ## updated -A readable store whose initial value is `false`. If [`version.pollInterval`](https://svelte.dev/docs/kit/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update the store value to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling. +A readable store whose initial value is `false`. If [`version.pollInterval`](/docs/kit/configuration#version) is a non-zero value, SvelteKit will poll for new versions of the app and update the store value to `true` when it detects one. `updated.check()` will force an immediate check, regardless of polling. On the server, this store can only be subscribed to during component initialization. In the browser, it can be subscribed to at any time. diff --git a/apps/svelte.dev/content/docs/kit/98-reference/27-$service-worker.md b/apps/svelte.dev/content/docs/kit/98-reference/27-$service-worker.md index b875501564..0fe6457a17 100644 --- a/apps/svelte.dev/content/docs/kit/98-reference/27-$service-worker.md +++ b/apps/svelte.dev/content/docs/kit/98-reference/27-$service-worker.md @@ -43,7 +43,7 @@ const build: string[]; ## files -An array of URL strings representing the files in your static directory, or whatever directory is specified by `config.kit.files.assets`. You can customize which files are included from `static` directory using [`config.kit.serviceWorker.files`](https://svelte.dev/docs/kit/configuration) +An array of URL strings representing the files in your static directory, or whatever directory is specified by `config.kit.files.assets`. You can customize which files are included from `static` directory using [`config.kit.serviceWorker.files`](/docs/kit/configuration)
@@ -72,7 +72,7 @@ const prerendered: string[]; ## version -See [`config.kit.version`](https://svelte.dev/docs/kit/configuration#version). It's useful for generating unique cache names inside your service worker, so that a later deployment of your app can invalidate old caches. +See [`config.kit.version`](/docs/kit/configuration#version). It's useful for generating unique cache names inside your service worker, so that a later deployment of your app can invalidate old caches.
diff --git a/apps/svelte.dev/content/docs/kit/98-reference/54-types.md b/apps/svelte.dev/content/docs/kit/98-reference/54-types.md index a690e97eee..6e22a754dd 100644 --- a/apps/svelte.dev/content/docs/kit/98-reference/54-types.md +++ b/apps/svelte.dev/content/docs/kit/98-reference/54-types.md @@ -175,7 +175,7 @@ message: string; ## Locals -The interface that defines `event.locals`, which can be accessed in server [hooks](https://svelte.dev/docs/kit/hooks) (`handle`, and `handleError`), server-only `load` functions, and `+server.js` files. +The interface that defines `event.locals`, which can be accessed in server [hooks](/docs/kit/hooks) (`handle`, and `handleError`), server-only `load` functions, and `+server.js` files.
@@ -187,7 +187,7 @@ interface Locals {} ## PageData -Defines the common shape of the [$page.data store](https://svelte.dev/docs/kit/$app-stores#page) - that is, the data that is shared between all pages. +Defines the common shape of the [$page.data store](/docs/kit/$app-stores#page) - that is, the data that is shared between all pages. The `Load` and `ServerLoad` functions in `./$types` will be narrowed accordingly. Use optional properties for data that is only present on specific pages. Do not add an index signature (`[key: string]: any`). @@ -201,7 +201,7 @@ interface PageData {} ## PageState -The shape of the `$page.state` object, which can be manipulated using the [`pushState`](https://svelte.dev/docs/kit/$app-navigation#pushState) and [`replaceState`](https://svelte.dev/docs/kit/$app-navigation#replaceState) functions from `$app/navigation`. +The shape of the `$page.state` object, which can be manipulated using the [`pushState`](/docs/kit/$app-navigation#pushState) and [`replaceState`](/docs/kit/$app-navigation#replaceState) functions from `$app/navigation`.
@@ -213,7 +213,7 @@ interface PageState {} ## Platform -If your adapter provides [platform-specific context](https://svelte.dev/docs/kit/adapters#Platform-specific-context) via `event.platform`, you can specify it here. +If your adapter provides [platform-specific context](/docs/kit/adapters#Platform-specific-context) via `event.platform`, you can specify it here.
diff --git a/apps/svelte.dev/content/docs/svelte/98-reference/20-svelte.md b/apps/svelte.dev/content/docs/svelte/98-reference/20-svelte.md index f5315b7943..e647351f91 100644 --- a/apps/svelte.dev/content/docs/svelte/98-reference/20-svelte.md +++ b/apps/svelte.dev/content/docs/svelte/98-reference/20-svelte.md @@ -82,7 +82,7 @@ Use callback props and/or the `$host()` rune instead — see https://svelte.dev/ -Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs/svelte/legacy-on#Component-events). +Creates an event dispatcher that can be used to dispatch [component events](/docs/svelte/legacy-on#Component-events). Event dispatchers are functions that can take two arguments: `name` and `detail`. Component events created with `createEventDispatcher` create a @@ -279,7 +279,7 @@ it can be called from an external module). If a function is returned _synchronously_ from `onMount`, it will be called when the component is unmounted. -`onMount` does not run inside [server-side components](https://svelte.dev/docs/svelte/svelte-server#render). +`onMount` does not run inside [server-side components](/docs/svelte/svelte-server#render).
@@ -344,7 +344,7 @@ function unmount(component: Record): void; ## untrack -When used inside a [`$derived`](https://svelte.dev/docs/svelte/$derived) or [`$effect`](https://svelte.dev/docs/svelte/$effect), +When used inside a [`$derived`](/docs/svelte/$derived) or [`$effect`](/docs/svelte/$effect), any state read inside `fn` will not be treated as a dependency. ```ts @@ -733,7 +733,7 @@ let { banner }: { banner: Snippet<[{ text: string }]> } = $props(); ``` You can only call a snippet through the `{@render ...}` tag. -https://svelte.dev/docs/svelte/snippet +/docs/svelte/snippet
@@ -763,7 +763,7 @@ interface Snippet {/*…*/} This was the base class for Svelte components in Svelte 4. Svelte 5+ components are completely different under the hood. For typing, use `Component` instead. To instantiate components, use `mount` instead`. -See [migration guide](https://svelte.dev/docs/svelte/v5-migration-guide#Components-are-no-longer-classes) for more info. +See [migration guide](/docs/svelte/v5-migration-guide#Components-are-no-longer-classes) for more info.
diff --git a/apps/svelte.dev/content/docs/svelte/98-reference/21-svelte-compiler.md b/apps/svelte.dev/content/docs/svelte/98-reference/21-svelte-compiler.md index 476fe2f031..229a67b459 100644 --- a/apps/svelte.dev/content/docs/svelte/98-reference/21-svelte-compiler.md +++ b/apps/svelte.dev/content/docs/svelte/98-reference/21-svelte-compiler.md @@ -21,7 +21,7 @@ import { The current version, as set in package.json. -https://svelte.dev/docs/svelte-compiler#svelte-version +/docs/svelte-compiler#svelte-version
diff --git a/apps/svelte.dev/content/docs/svelte/98-reference/21-svelte-transition.md b/apps/svelte.dev/content/docs/svelte/98-reference/21-svelte-transition.md index ee626f94ca..a555815ddf 100644 --- a/apps/svelte.dev/content/docs/svelte/98-reference/21-svelte-transition.md +++ b/apps/svelte.dev/content/docs/svelte/98-reference/21-svelte-transition.md @@ -42,7 +42,7 @@ function blur( ## crossfade -The `crossfade` function creates a pair of [transitions](https://svelte.dev/docs/svelte/transition) called `send` and `receive`. When an element is 'sent', it looks for a corresponding element being 'received', and generates a transition that transforms the element to its counterpart's position and fades it out. When an element is 'received', the reverse happens. If there is no counterpart, the `fallback` transition is used. +The `crossfade` function creates a pair of [transitions](/docs/svelte/transition) called `send` and `receive`. When an element is 'sent', it looks for a corresponding element being 'received', and generates a transition that transforms the element to its counterpart's position and fades it out. When an element is 'received', the reverse happens. If there is no counterpart, the `fallback` transition is used.
diff --git a/apps/svelte.dev/scripts/sync-docs/index.ts b/apps/svelte.dev/scripts/sync-docs/index.ts index 56cfd864ca..66d399a4a3 100644 --- a/apps/svelte.dev/scripts/sync-docs/index.ts +++ b/apps/svelte.dev/scripts/sync-docs/index.ts @@ -1,3 +1,4 @@ +import { strip_origin } from '@sveltejs/site-kit/markdown'; import { preprocess } from '@sveltejs/site-kit/markdown/preprocess'; import path from 'node:path'; import fs from 'node:fs'; @@ -6,7 +7,7 @@ import ts from 'typescript'; import glob from 'tiny-glob/sync'; import chokidar from 'chokidar'; import { fileURLToPath } from 'node:url'; -import { clone_repo, migrate_meta_json, strip_origin } from './utils'; +import { clone_repo, migrate_meta_json } from './utils'; import { get_types, read_d_ts_file, read_types } from './types'; import type { Modules } from '@sveltejs/site-kit/markdown'; diff --git a/apps/svelte.dev/scripts/sync-docs/types.ts b/apps/svelte.dev/scripts/sync-docs/types.ts index 2e7f054d75..592b0ed21c 100644 --- a/apps/svelte.dev/scripts/sync-docs/types.ts +++ b/apps/svelte.dev/scripts/sync-docs/types.ts @@ -1,8 +1,12 @@ import fs from 'node:fs'; import ts from 'typescript'; import { format } from 'prettier'; -import { strip_origin } from './utils'; -import type { Modules, Declaration, TypeElement } from '@sveltejs/site-kit/markdown'; +import { + type Modules, + type Declaration, + type TypeElement, + strip_origin +} from '@sveltejs/site-kit/markdown'; export async function read_types(base: string, modules: Modules) { { diff --git a/apps/svelte.dev/scripts/sync-docs/utils.ts b/apps/svelte.dev/scripts/sync-docs/utils.ts index 93871e874f..c5f41c0279 100644 --- a/apps/svelte.dev/scripts/sync-docs/utils.ts +++ b/apps/svelte.dev/scripts/sync-docs/utils.ts @@ -56,13 +56,3 @@ export function migrate_meta_json(path: string) { fs.writeFileSync(file.replace('meta.json', 'index.md'), new_content); } } - -/** - * Type declarations include fully qualified URLs so that they become links when - * you hover over names in an editor with TypeScript enabled. We need to remove - * the origin so that they become root-relative, so that they work in preview - * deployments and when developing locally - */ -export function strip_origin(str: string) { - return str.replaceAll('https://svelte.dev', ''); -} diff --git a/packages/site-kit/src/lib/markdown/index.ts b/packages/site-kit/src/lib/markdown/index.ts index c5ee6ecb17..3fe58b19a7 100644 --- a/packages/site-kit/src/lib/markdown/index.ts +++ b/packages/site-kit/src/lib/markdown/index.ts @@ -1,6 +1,6 @@ export { render_content_markdown } from './renderer'; -export { transform, slugify, clean } from './utils'; +export { transform, slugify, clean, strip_origin } from './utils'; // TODO none of these really belong here export type Modules = Array<{ diff --git a/packages/site-kit/src/lib/markdown/preprocess.ts b/packages/site-kit/src/lib/markdown/preprocess.ts index 41a6cf7b65..cdb7155065 100644 --- a/packages/site-kit/src/lib/markdown/preprocess.ts +++ b/packages/site-kit/src/lib/markdown/preprocess.ts @@ -1,6 +1,6 @@ import fs from 'node:fs'; import path from 'node:path'; -import { SHIKI_LANGUAGE_MAP } from './utils'; +import { SHIKI_LANGUAGE_MAP, strip_origin } from './utils'; import type { Declaration, TypeElement, Modules } from './index'; /** @@ -126,7 +126,7 @@ function render_declaration(declaration: Declaration, full: boolean) { } if (declaration.comment) { - content += declaration.comment + '\n\n'; + content += strip_origin(declaration.comment) + '\n\n'; } return ( @@ -194,7 +194,7 @@ function stringify_module(module: Modules[0]) { } if (module.comment) { - content += `${module.comment}\n\n`; + content += `${strip_origin(module.comment)}\n\n`; } for (const declaration of module.exports || []) { diff --git a/packages/site-kit/src/lib/markdown/utils.ts b/packages/site-kit/src/lib/markdown/utils.ts index d12d453c42..71bafd9f90 100644 --- a/packages/site-kit/src/lib/markdown/utils.ts +++ b/packages/site-kit/src/lib/markdown/utils.ts @@ -136,3 +136,13 @@ const parse = (str: string) => { return str; } }; + +/** + * Type declarations include fully qualified URLs so that they become links when + * you hover over names in an editor with TypeScript enabled. We need to remove + * the origin so that they become root-relative, so that they work in preview + * deployments and when developing locally + */ +export function strip_origin(str: string) { + return str.replaceAll('https://svelte.dev', ''); +}