summaryrefslogtreecommitdiffstatshomepage
path: root/frontend/src/lib/components/LabelledBlock.svelte
blob: 8f93667f7fe668fc95f8d7f123a05ee33820f5b8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<script lang="ts">
	import { idFromLabel } from '$lib/Utils';
	import type { Snippet } from 'svelte';

	interface Props {
		label: string;
		side?: Snippet;
		children?: Snippet<[{ id: string }]>;
	}

	let { label, side, children }: Props = $props();

	const id = idFromLabel(label);
</script>

<div class="flex flex-col">
	<div class="flex">
		<label for={id}>{label}</label>
		{#if side}
			<div class="grow"></div>
			{@render side?.()}
		{/if}
	</div>
	{@render children?.({ id })}
</div>