gui/modules/ui/src/tabs/tabs.svelte
Neil 05e31f4798
New top bar (#334)
* #333 new top-bar

* package page adjustments

---------

Co-authored-by: neil molina <neil@neils-MacBook-Pro.local>
2023-03-24 15:19:37 +08:00

38 lines
825 B
Svelte

<script lang="ts">
import type { Tab } from "../types";
import { afterUpdate } from "svelte";
let clazz = "";
export { clazz as class };
import Button from "../button/button.svelte";
export let tabs: Tab[] = [];
let active: string;
afterUpdate(() => {
if (tabs.length && !active) {
active = tabs[0].label;
}
});
</script>
<section class={`relative h-auto ${clazz || ""}`}>
<menu class="flex gap-1">
{#each tabs as tab}
<div class="border border-x-0 border-t-0 border-gray text-white">
<Button onClick={() => (active = tab.label)}>
<span class={tab.label === active ? "text-white" : ""}>{tab.label}</span>
</Button>
</div>
{/each}
</menu>
{#each tabs as tab}
{#if tab.label === active}
<svelte:component this={tab.component} {...tab.props} />
{/if}
{/each}
</section>