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);`
+ };
+}