Skip to content

Commit 0fcf12d

Browse files
feat: handle v1 migration
1 parent 65e0242 commit 0fcf12d

File tree

5 files changed

+56
-0
lines changed

5 files changed

+56
-0
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
"svelte-exmarkdown": "^4.0.3",
5555
"svelte-meta-tags": "^4.2.0",
5656
"svelte-persisted-store": "^0.12.0",
57+
"svelte-sonner": "^0.3.28",
5758
"tailwind-merge": "^3.0.2",
5859
"tailwind-variants": "^1.0.0",
5960
"tailwindcss": "^4.0.14",

pnpm-lock.yaml

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { default as Toaster } from "./sonner.svelte";
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<script lang="ts">
2+
import { Toaster as Sonner, type ToasterProps as SonnerProps } from "svelte-sonner";
3+
import { mode } from "mode-watcher";
4+
5+
let { ...restProps }: SonnerProps = $props();
6+
</script>
7+
8+
<Sonner
9+
theme={$mode}
10+
class="toaster group"
11+
toastOptions={{
12+
classes: {
13+
toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
14+
description: "group-[.toast]:text-muted-foreground",
15+
actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
16+
cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",
17+
},
18+
}}
19+
{...restProps}
20+
/>

src/routes/+layout.svelte

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
import { dev } from "$app/environment";
55
import { page } from "$app/state";
66
import { deepMerge, MetaTags } from "svelte-meta-tags";
7+
import { toast } from "svelte-sonner";
78
import { ChevronDown, type Icon, Monitor, Moon, Sun, X } from "@lucide/svelte";
89
import { ProgressBar } from "@prgm/sveltekit-progress-bar";
910
import { ModeWatcher, resetMode, setMode } from "mode-watcher";
1011
import { news } from "$lib/news/news.json";
1112
import { cn } from "$lib/utils";
1213
import ScreenSize from "$lib/components/ScreenSize.svelte";
1314
import { buttonVariants, Button } from "$lib/components/ui/button";
15+
import { Toaster } from "$lib/components/ui/sonner";
1416
import * as DropdownMenu from "$lib/components/ui/dropdown-menu";
1517
1618
let { data, children } = $props();
@@ -58,6 +60,25 @@
5860
? localStorage["mode-watcher-mode"].replace(/"/g, "")
5961
: "system";
6062
63+
// v2 migration
64+
if ("token" in localStorage) {
65+
toast.success("Welcome to svelte-changelog v2!", {
66+
description: "Thanks for visiting this site since v1 :)",
67+
duration: 7_500
68+
});
69+
localStorage.removeItem("token");
70+
}
71+
for (const key of [
72+
"displaySvelteBetaReleases",
73+
"displayKitBetaReleases",
74+
"displayOtherBetaReleases",
75+
"svelteMostRecentUpdate",
76+
"kitMostRecentUpdate",
77+
"othersMostRecentUpdate"
78+
]) {
79+
localStorage.removeItem(key);
80+
}
81+
6182
// News
6283
const closedNews = getClosedNewsIds();
6384
const now = new Date();
@@ -72,6 +93,7 @@
7293
{/if}
7394
<ModeWatcher />
7495
<ProgressBar class="text-primary" zIndex={100} />
96+
<Toaster />
7597
<MetaTags {...metaTags} />
7698

7799
<header

0 commit comments

Comments
 (0)