feat(mvp): phase 5 - board, section & widget system

Add board/section/widget CRUD APIs with permission filtering, board view
page with collapsible sections and app widgets in responsive grid, form-based
board editor, and 9 Svelte components (Board, Section, Widget families).
This commit is contained in:
2026-03-24 21:05:00 +03:00
parent 4d941f566f
commit b0d77d3c29
23 changed files with 1564 additions and 27 deletions
+45
View File
@@ -0,0 +1,45 @@
<script lang="ts">
import Section from '$lib/components/section/Section.svelte';
interface SectionData {
id: string;
title: string;
icon: string | null;
order: number;
isExpandedByDefault: boolean;
widgets: Array<{
id: string;
type: string;
order: number;
config: string;
appId: string | null;
app: {
id: string;
name: string;
url: string;
icon: string | null;
iconType: string;
description: string | null;
statuses: Array<{ status: string; responseTime: number | null }>;
} | null;
}>;
}
interface Props {
sections: SectionData[];
}
let { sections }: Props = $props();
</script>
<div class="space-y-6">
{#if sections.length === 0}
<div class="rounded-lg border border-gray-700 bg-gray-800/50 p-12 text-center">
<p class="text-gray-400">This board has no sections yet.</p>
</div>
{:else}
{#each sections as section (section.id)}
<Section {section} />
{/each}
{/if}
</div>