svelte-website/src/components/galaxies/galaxy.svelte

47 lines
1.1 KiB
Svelte

<script lang="ts">
import { ApiURL } from '../misc/guestbook.svelte';
export let link = '';
async function isOnline(link: string) {
const res = await fetch(ApiURL + '/checkonline', {
method: 'POST',
body: JSON.stringify({
url: link
})
})
.then((res) => res.json())
.then((data) => {
return data;
});
if (res.status) {
return true;
}
return false;
}
</script>
<div class="rounded bg-red-100 dark:bg-slate-800 dark:ring-2 dark:ring-slate-400 mt-2 break-words">
<div class="rounded-t bg-slate-400 flex dark:bg-slate-700 min-h-fit px-3 py-1">
<div class="grow">
<a href={link} class="underline underline-offset-1 hover:underline-offset-4"><slot name="title" /></a>
</div>
<div class="w-fit">
{#await isOnline(link)}
<span class="text-yellow-300">Waiting</span>
{:then status}
{#if status}
<span class="text-green-400 dark:text-green-400">Online</span>
{:else}
<span class="text-red-500">Offline</span>
{/if}
{:catch error}
<span class="text-red-500">Error</span>
{/await}
</div>
</div>
<div class="px-3 py-2">
<p class=""><slot name="text" /></p>
</div>
</div>