main-site/src/routes/services/+page.svelte

44 lines
957 B
Svelte

<svelte:options runes={true} />
<script lang="ts">
import ServiceCard from '$lib/components/ServiceCard.svelte';
import type { Service } from '$lib/types/data-types';
let services: readonly Service[] = $state.frozen([]);
let icons: readonly string[] = $state.frozen([]);
async function get(url: string): Promise<any> {
let res = await fetch(url)
if (res.ok) {
let data = await res.json()
return data
}
else {
return Promise.reject()
}
}
$effect(() => {
get("/data/services").then((data: Service[]) => {
services = data
})
})
$effect(() => {
get("/assets/icons").then((data: string[]) => {
icons = data
})
})
</script>
<svelte:head>
<title>Services</title>
<meta name="description" content="Overview of Services running on neshweb.net" />
</svelte:head>
<div class="flex h-full flex-row flex-wrap justify-center gap-10 overflow-auto p-8">
{#each services as service}
<Card {service} />
{/each}
</div>