/ src / lib / components / PageTransition.svelte
PageTransition.svelte
 1  <script lang="ts">
 2    import { fly } from 'svelte/transition';
 3    import { cubicOut } from 'svelte/easing';
 4  
 5    // Propiedades para personalizar la transición
 6    export let duration = 300;
 7    export let delay = 0;
 8    export let y = 20; // Distancia de desplazamiento vertical
 9    export let x = 0; // Distancia de desplazamiento horizontal
10    export let opacity = 0; // Opacidad inicial
11    export let key: any = undefined; // Clave para controlar cuándo reiniciar la animación
12  </script>
13  
14  {#key key}
15    <div 
16      in:fly={{ y, x, duration, delay, easing: cubicOut, opacity }}
17      out:fly={{ y: -5, duration: 250, easing: cubicOut, opacity }} 
18      class="page-transition"
19    >
20      <slot />
21    </div>
22  {/key}
23  
24  <style>
25    .page-transition {
26      width: 100%;
27      height: 100%;
28      display: contents;
29    }
30  </style>