/
Netrunners
/
Millenium_UI
Обзор
Документация
Войти
/
Netrunners
/
Millenium_UI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/lib/components/NotificationToast.svelte
53 строки
1 KB
Валерий Конюхов
first_commit
08 июл 2025, 22:20
08 июл 2025, 22:20
a4e8dc9
Код
Авторство
О чём код?
<script lang="ts"> import { settings, playingNotificationSound, isLastActiveTab } from '$lib/stores'; import DOMPurify from 'dompurify'; import { marked } from 'marked'; import { createEventDispatcher, onMount } from 'svelte'; const dispatch = createEventDispatcher(); export let onClick: Function = () => {}; export let title: string = 'HI'; export let content: string; onMount(() => { if (!navigator.userActivation.hasBeenActive) { return; } if ($settings?.notificationSound ?? true) { if (!$playingNotificationSound && $isLastActiveTab) { playingNotificationSound.set(true); const audio = new Audio(`/audio/notification.mp3`); audio.play().finally(() => { // Ensure the global state is reset after the sound finishes playingNotificationSound.set(false); }); } } }); </script> <button class="flex gap-2.5 text-left min-w-[var(--width)] w-full dark:bg-gray-850 dark:text-white bg-white text-black border border-gray-100 dark:border-gray-850 rounded-xl px-3.5 py-3.5" on:click={() => { onClick(); dispatch('closeToast'); }} > <div class="shrink-0 self-top -translate-y-0.5"> <img src={'/static/favicon.png'} alt="favicon" class="size-7 rounded-full" /> </div> <div> {#if title} <div class=" text-[13px] font-medium mb-0.5 line-clamp-1 capitalize">{title}</div> {/if} <div class=" line-clamp-2 text-xs self-center dark:text-gray-300 font-normal"> {@html DOMPurify.sanitize(marked(content))} </div> </div> </button>