diff --git a/web-player/src/lib/components/ui/overlay/GlassMenu.svelte b/web-player/src/lib/components/ui/overlay/GlassMenu.svelte index af452f3..9b7dbde 100644 --- a/web-player/src/lib/components/ui/overlay/GlassMenu.svelte +++ b/web-player/src/lib/components/ui/overlay/GlassMenu.svelte @@ -1,6 +1,8 @@
{@render children()} diff --git a/web-player/src/lib/components/ui/overlay/Modal.svelte b/web-player/src/lib/components/ui/overlay/Modal.svelte index a9e0391..557ec30 100644 --- a/web-player/src/lib/components/ui/overlay/Modal.svelte +++ b/web-player/src/lib/components/ui/overlay/Modal.svelte @@ -3,8 +3,7 @@ import X from '@lucide/svelte/icons/x'; import IconButton from '../primitives/IconButton.svelte'; import { fade } from 'svelte/transition'; - import { expoOut } from 'svelte/easing'; - import type { TransitionConfig } from 'svelte/transition'; + import { pop } from '$lib/utils/transitions'; interface Props { open: boolean; @@ -48,15 +47,6 @@ ); } - function pop(node: Element, { duration = 200 }: { duration?: number } = {}): TransitionConfig { - return { - duration, - easing: expoOut, - css: (t) => - `opacity: ${t}; transform: scale(${0.98 + 0.02 * t}) translateY(${0.25 * (1 - t)}rem);` - }; - } - function onWindowKeydown(event: KeyboardEvent) { if (!open) return; if (event.key === 'Escape') { diff --git a/web-player/src/lib/utils/transitions.ts b/web-player/src/lib/utils/transitions.ts new file mode 100644 index 0000000..de4ed78 --- /dev/null +++ b/web-player/src/lib/utils/transitions.ts @@ -0,0 +1,14 @@ +import { expoOut } from 'svelte/easing'; +import type { TransitionConfig } from 'svelte/transition'; + +export function pop( + node: Element, + { duration = 200 }: { duration?: number } = {} +): TransitionConfig { + return { + duration, + easing: expoOut, + css: (t) => + `opacity: ${t}; transform: scale(${0.98 + 0.02 * t}) translateY(${0.25 * (1 - t)}rem);` + }; +}