Samlingsnoder med `metadata.traits` rendres nå som egne sider på /collection/[id]. Hvert trait-navn mappes til en dedikert Svelte-komponent som viser relevant UI. Traits uten egen komponent vises med et generisk panel. Komponenter for 9 traits: editor, chat, kanban, podcast, publishing, rss, calendar, recording, transcription. Mottak-siden viser traits som pills og lenker til samlingssiden. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
29 lines
706 B
Svelte
29 lines
706 B
Svelte
<script lang="ts">
|
|
import TraitPanel from './TraitPanel.svelte';
|
|
|
|
interface Props {
|
|
name: string;
|
|
config: Record<string, unknown>;
|
|
}
|
|
|
|
let { name, config }: Props = $props();
|
|
|
|
const configKeys = $derived(Object.keys(config));
|
|
</script>
|
|
|
|
<TraitPanel {name} label={name}>
|
|
{#snippet children()}
|
|
{#if configKeys.length > 0}
|
|
<dl class="space-y-1 text-sm">
|
|
{#each configKeys as key (key)}
|
|
<div class="flex gap-2">
|
|
<dt class="text-xs text-gray-500">{key}:</dt>
|
|
<dd class="text-xs text-gray-700">{JSON.stringify(config[key])}</dd>
|
|
</div>
|
|
{/each}
|
|
</dl>
|
|
{:else}
|
|
<p class="text-xs text-gray-400">Aktivert, ingen konfigurasjon.</p>
|
|
{/if}
|
|
{/snippet}
|
|
</TraitPanel>
|