👱‍♂️ Adds layout manager

This commit is contained in:
Rune Harlyk
2024-08-18 01:06:21 +02:00
committed by Rune Harlyk
parent 5e2f34f792
commit d8659f8ed5
7 changed files with 219 additions and 20 deletions
@@ -0,0 +1,36 @@
<script lang="ts">
import { WidgetComponents, type WidgetContainerConfig, isWidgetConfig } from './LayoutManager';
import Widget from './Widget.svelte';
export let container: WidgetContainerConfig;
</script>
<div class="w-full h-full flex flex-col">
{#if container.header}
<div class="bg-base-300">
<div class="bg-base-100 p-2 w-min">{container.header}</div>
</div>
{/if}
<div
class="flex w-full h-full"
class:flex-row={container.layout === 'column'}
class:flex-col={container.layout === 'row'}
>
{#each container.widgets as widget, index (widget.id + '-' + index)}
<Widget size={widget.size ?? 1}>
{#if isWidgetConfig(widget)}
<svelte:component this={WidgetComponents[widget.component]} {...widget.props} />
{:else if widget.widgets}
<svelte:self container={widget} />
{/if}
</Widget>
{#if index !== container.widgets.length - 1}
<div
class="divider bg-base-300 m-0"
class:divider-horizontal={container.layout === 'column'}
></div>
{/if}
{/each}
</div>
</div>