| | <script> |
| | import { getContext, onMount } from 'svelte'; |
| | const i18n = getContext('i18n'); |
| | |
| | import { WEBUI_BASE_URL } from '$lib/constants'; |
| | |
| | import Marquee from './common/Marquee.svelte'; |
| | import SlideShow from './common/SlideShow.svelte'; |
| | import ArrowRightCircle from './icons/ArrowRightCircle.svelte'; |
| | |
| | export let show = true; |
| | export let getStartedHandler = () => {}; |
| | |
| | function setLogoImage() { |
| | const logo = document.getElementById('logo'); |
| | |
| | if (logo) { |
| | const isDarkMode = document.documentElement.classList.contains('dark'); |
| | |
| | if (isDarkMode) { |
| | const darkImage = new Image(); |
| | darkImage.src = `${WEBUI_BASE_URL}/static/favicon-dark.png`; |
| | |
| | darkImage.onload = () => { |
| | logo.src = `${WEBUI_BASE_URL}/static/favicon-dark.png`; |
| | logo.style.filter = ''; |
| | }; |
| | |
| | darkImage.onerror = () => { |
| | logo.style.filter = 'invert(1)'; |
| | }; |
| | } |
| | } |
| | } |
| | |
| | $: if (show) { |
| | setLogoImage(); |
| | } |
| | </script> |
| |
|
| | {#if show} |
| | <div class="w-full h-screen max-h-[100dvh] text-white relative"> |
| | <div class="fixed m-10 z-50"> |
| | <div class="flex space-x-2"> |
| | <div class=" self-center"> |
| | <img |
| | id="logo" |
| | crossorigin="anonymous" |
| | src="{WEBUI_BASE_URL}/static/favicon.png" |
| | class=" w-6 rounded-full" |
| | alt="logo" |
| | /> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | <SlideShow duration={5000} /> |
| |
|
| | <div |
| | class="w-full h-full absolute top-0 left-0 bg-linear-to-t from-20% from-black to-transparent" |
| | ></div> |
| |
|
| | <div class="w-full h-full absolute top-0 left-0 backdrop-blur-xs bg-black/50"></div> |
| |
|
| | <div class="relative bg-transparent w-full h-screen max-h-[100dvh] flex z-10"> |
| | <div class="flex flex-col justify-end w-full items-center pb-10 text-center"> |
| | <div class="text-5xl lg:text-7xl font-secondary"> |
| | <Marquee |
| | duration={5000} |
| | words={[ |
| | $i18n.t('Explore the cosmos'), |
| | $i18n.t('Unlock mysteries'), |
| | $i18n.t('Chart new frontiers'), |
| | $i18n.t('Dive into knowledge'), |
| | $i18n.t('Discover wonders'), |
| | $i18n.t('Ignite curiosity'), |
| | $i18n.t('Forge new paths'), |
| | $i18n.t('Unravel secrets'), |
| | $i18n.t('Pioneer insights'), |
| | $i18n.t('Embark on adventures') |
| | ]} |
| | /> |
| |
|
| | <div class="mt-0.5">{$i18n.t(`wherever you are`)}</div> |
| | </div> |
| |
|
| | <div class="flex justify-center mt-8"> |
| | <div class="flex flex-col justify-center items-center"> |
| | <button |
| | aria-labelledby="get-started" |
| | class="relative z-20 flex p-1 rounded-full bg-white/5 hover:bg-white/10 transition font-medium text-sm" |
| | on:click={() => { |
| | getStartedHandler(); |
| | }} |
| | > |
| | <ArrowRightCircle className="size-6" /> |
| | </button> |
| | <div id="get-started" class="mt-1.5 font-primary text-base font-medium"> |
| | {$i18n.t(`Get started`)} |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | {/if} |
| |
|