Spaces:
Paused
Paused
| <script lang="ts"> | |
| import { t } from "$lib/i18n/translations"; | |
| import IconComet from "@tabler/icons-svelte/IconComet.svelte"; | |
| </script> | |
| <div id="update-notification" role="alert" aria-atomic="true"> | |
| <button class="update-button" on:click={() => window.location.reload()}> | |
| <div class="update-icon"> | |
| <IconComet /> | |
| </div> | |
| <div class="update-text"> | |
| <div>{$t("notification.update.title")}</div> | |
| <div class="subtext">{$t("notification.update.subtext")}</div> | |
| </div> | |
| </button> | |
| </div> | |
| <style> | |
| #update-notification { | |
| position: absolute; | |
| display: flex; | |
| justify-content: end; | |
| align-items: center; | |
| width: 100%; | |
| pointer-events: none; | |
| z-index: 2; | |
| } | |
| .update-button { | |
| padding: 8px 12px 8px 8px; | |
| pointer-events: all; | |
| gap: 8px; | |
| margin: var(--padding); | |
| margin-top: calc(env(safe-area-inset-top) + var(--padding)); | |
| box-shadow: | |
| var(--button-box-shadow), | |
| 0 0 10px 0px var(--button-elevated-hover); | |
| border-radius: 14px; | |
| animation: slide-in-top 0.4s; | |
| } | |
| .update-icon { | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| background-color: var(--button-elevated-hover); | |
| padding: 3px; | |
| border-radius: 6px; | |
| } | |
| .update-icon :global(svg) { | |
| stroke-width: 1.5px; | |
| width: 25px; | |
| height: 25px; | |
| will-change: transform; | |
| } | |
| .update-text { | |
| display: flex; | |
| flex-direction: column; | |
| text-align: start; | |
| font-size: 13px; | |
| } | |
| .subtext { | |
| padding: 0; | |
| user-select: none; | |
| -webkit-user-select: none; | |
| } | |
| .update-text, | |
| .subtext { | |
| line-height: 1.2; | |
| } | |
| @keyframes slide-in-top { | |
| from { | |
| transform: translateY(-150px); | |
| } | |
| 100% { | |
| transform: none; | |
| } | |
| } | |
| @media screen and (max-width: 535px) { | |
| #update-notification { | |
| bottom: var(--sidebar-height-mobile); | |
| justify-content: center; | |
| animation: slide-in-bottom 0.4s; | |
| } | |
| @keyframes slide-in-bottom { | |
| from { | |
| transform: translateY(300px); | |
| } | |
| 100% { | |
| transform: none; | |
| } | |
| } | |
| } | |
| </style> | |