diff --git a/web/src/components/dialog/PickerItem.svelte b/web/src/components/dialog/PickerItem.svelte
index 6fd0ebe0..c636e8c7 100644
--- a/web/src/components/dialog/PickerItem.svelte
+++ b/web/src/components/dialog/PickerItem.svelte
@@ -10,10 +10,17 @@
import IconPhoto from "@tabler/icons-svelte/IconPhoto.svelte";
import IconGif from "@tabler/icons-svelte/IconGif.svelte";
- export let item: DialogPickerItem;
- export let number: number;
+ type Props = {
+ item: DialogPickerItem;
+ number: number;
+ };
- let imageLoaded = false;
+ const { item, number }: Props = $props();
+
+ const itemType = $derived(item.type ?? "photo");
+
+ let imageLoaded = $state(false);
+ let hideSkeleton = $state(false);
let validUrl = false;
try {
@@ -23,12 +30,19 @@
const isTunnel = validUrl && new URL(item.url).pathname === "/tunnel";
- $: itemType = item.type ?? "photo";
+ const loaded = () => {
+ imageLoaded = true;
+
+ // remove the skeleton after the image is done fading in
+ setTimeout(() => {
+ hideSkeleton = true;
+ }, 200)
+ }