2 import type { Component } from 'svelte';
3 import { Button, type ButtonVariant } from '$lib/components/ui/button';
19 IconComponent: Component;
23 buttonVariant?: ButtonVariant;
25 wrapperClass?: string;
26 summary?: { show: boolean; verb: string; items: DatabaseConversation[] };
29 let sectionButtonClass = $derived(buttonClass ?? 'justify-start justify-self-start md:w-auto');
30 let sectionButtonVariant = $derived(buttonVariant ?? 'outline');
33 <div class="grid gap-1 {wrapperClass ?? ''}">
34 <h4 class="mt-0 mb-2 text-sm font-medium {titleClass ?? ''}">{title}</h4>
36 <p class="mb-4 text-sm text-muted-foreground">{description}</p>
38 <Button class={sectionButtonClass} {onclick} variant={sectionButtonVariant}>
39 <IconComponent class="mr-2 h-4 w-4" />
44 {#if summary && summary.show && summary.items.length > 0}
45 <div class="mt-4 grid overflow-x-auto rounded-lg border border-border/50 bg-muted/30 p-4">
46 <h5 class="mb-2 text-sm font-medium">
48 {summary.items.length} conversation{summary.items.length === 1 ? '' : 's'}
51 <ul class="space-y-1 text-sm text-muted-foreground">
52 {#each summary.items.slice(0, 10) as conv (conv.id)}
53 <li class="truncate">• {conv.name || 'Untitled conversation'}</li>
56 {#if summary.items.length > 10}
57 <li class="italic">... and {summary.items.length - 10} more</li>