web/UpdateNotification: replace animation with a springy transition

so cute :3
This commit is contained in:
wukko 2025-02-27 21:05:29 +06:00
parent 64680e162a
commit 66401c6c5f
No known key found for this signature in database
GPG Key ID: 3E30B3F26C7B4AA2

View File

@ -1,11 +1,19 @@
<script lang="ts"> <script lang="ts">
import { t } from "$lib/i18n/translations"; import { t } from "$lib/i18n/translations";
import IconComet from "@tabler/icons-svelte/IconComet.svelte"; import IconComet from "@tabler/icons-svelte/IconComet.svelte";
let dismissed = false;
</script> </script>
<div id="update-notification" role="alert" aria-atomic="true"> <div id="update-notification" role="alert" aria-atomic="true">
<button class="button update-button" on:click={() => window.location.reload()}> <button
class="button update-button"
class:visible={!dismissed}
on:click={() => {
dismissed = true;
window.location.reload()
}}
>
<div class="update-icon"> <div class="update-icon">
<IconComet /> <IconComet />
</div> </div>
@ -38,7 +46,13 @@
var(--button-box-shadow), var(--button-box-shadow),
0 0 10px 0px var(--button-elevated-hover); 0 0 10px 0px var(--button-elevated-hover);
border-radius: 14px; border-radius: 14px;
animation: slide-in-top 0.4s;
transform: translateY(-150px);
transition: transform 0.4s cubic-bezier(0.53, 0.05, 0.23, 1.15);
}
.update-button.visible {
transform: none;
} }
.update-icon { .update-icon {
@ -75,33 +89,15 @@
line-height: 1.2; line-height: 1.2;
} }
@keyframes slide-in-top {
from {
transform: translateY(-150px);
}
100% {
transform: none;
}
}
@media screen and (max-width: 535px) { @media screen and (max-width: 535px) {
#update-notification { #update-notification {
bottom: calc(var(--sidebar-height-mobile) + 5px); bottom: calc(var(--sidebar-height-mobile) + 5px);
justify-content: center; justify-content: center;
animation: slide-in-bottom 0.4s;
} }
.update-button { .update-button {
transform: translateY(300px);
margin-right: var(--padding); margin-right: var(--padding);
} }
@keyframes slide-in-bottom {
from {
transform: translateY(300px);
}
100% {
transform: none;
}
}
} }
</style> </style>