It's a bit sad that this is using Svelte 3 instead of Svelte 5, which changed its reactivity model to signals!