pluralchat / src /routes /settings /+layout.svelte
Andrew
Raise 'Saved' toast above overlays
f5bb818
<script lang="ts">
import { base } from "$app/paths";
import { afterNavigate, goto } from "$app/navigation";
import { useSettingsStore } from "$lib/stores/settings";
import CarbonCheckmark from "~icons/carbon/checkmark";
import Modal from "$lib/components/Modal.svelte";
interface Props {
children?: import("svelte").Snippet;
}
let { children }: Props = $props();
let previousPage: string = $state(base || "/");
afterNavigate(({ from }) => {
if (from?.url && !from.url.pathname.includes("settings")) {
previousPage = from.url.toString() || previousPage || base || "/";
}
});
const settings = useSettingsStore();
</script>
<Modal
onclose={() => goto(previousPage)}
disableFly={true}
width="border dark:border-gray-700 h-[95dvh] w-[90dvw] pb-0 overflow-hidden rounded-2xl bg-white shadow-2xl outline-none dark:bg-gray-800 dark:text-gray-200 sm:h-[95dvh] xl:w-[1200px] xl:h-[70dvh]"
>
{@render children?.()}
{#if $settings.recentlySaved}
<div
class="absolute bottom-4 right-4 z-[200] m-2 flex items-center gap-1.5 rounded-full border bg-black px-3 py-1 text-white dark:border-white/10 dark:bg-gray-700 dark:text-gray-100"
>
<CarbonCheckmark class="text-white" />
Saved
</div>
{/if}
</Modal>