diff --git a/frontend/src/webapp/screens/InstallGuideScreen.svelte b/frontend/src/webapp/screens/InstallGuideScreen.svelte index 0656143..2d41206 100644 --- a/frontend/src/webapp/screens/InstallGuideScreen.svelte +++ b/frontend/src/webapp/screens/InstallGuideScreen.svelte @@ -14,7 +14,7 @@ Share2, Smartphone, } from "$components/ui/icons.js"; - import { AttentionDot } from "$components/ui/index.js"; + import { AttentionDot, Spinner } from "$components/ui/index.js"; import { Select } from "$components/ui/primitives.js"; import Button from "$components/ui/button.svelte"; import Card from "$components/ui/card.svelte"; @@ -335,9 +335,14 @@ {#if guideState?.loading && !guideState?.loaded} - -

{t("wa_install_loading", {}, "Loading instructions...")}

-
+
+ + {t("wa_install_loading", {}, "Loading instructions...")} +
{:else if !guideState?.enabled || !config || !platforms.length}

{t("wa_install_unavailable", {}, "Instructions are unavailable.")}

@@ -553,6 +558,22 @@ gap: 14px; } + .install-loading { + display: grid; + min-height: min(360px, 48dvh); + place-items: center; + align-content: center; + gap: 12px; + color: var(--muted); + font-size: 13px; + font-weight: 700; + animation: install-loader-enter 0.16s ease-out both; + } + + .install-loading :global(.ui-spinner) { + color: var(--accent); + } + .install-selector-block { display: grid; gap: 9px; @@ -1047,4 +1068,16 @@ transform: scale(1); } } + + @keyframes install-loader-enter { + from { + opacity: 0; + transform: translateY(4px); + } + + to { + opacity: 1; + transform: translateY(0); + } + }