- Add DataTable.svelte: declarative columns, built-in sorting, sticky headers, text truncation, column alignment, configurable widths, optional pagination/search - 12 built-in renderers: BadgeRenderer, StatusBadgeRenderer (unified risk/severity/ execution/state/type variant mapping), HealthDotRenderer, RelativeTimeRenderer, DateRenderer, DurationRenderer, StatusDotRenderer, SignalActions, ApprovalActions, ActivityAction, ActivityCancel - Migrate Overview (task board), Signals, Ops (3 tables) to DataTable - Refactor EntityTable treegrid to use shared SortHeader, EmptyState, HealthDotRenderer - Create shared components: EmptyState, StatusBadge, FilterTabs - Clean up Knowledge.svelte: replace inline relTime() and typeVariant() with shared utils - Add width, align, truncate column props; table-fixed layout; rounded-xl borders - Bump version to 0.11.0
27 lines
783 B
Svelte
27 lines
783 B
Svelte
<script lang="ts">
|
|
import { Button } from '$lib/components/ui/button'
|
|
import type { Signal } from '$lib/api'
|
|
|
|
let {
|
|
row,
|
|
acting = null,
|
|
onAck,
|
|
onMute,
|
|
onResolve
|
|
}: {
|
|
row: Signal
|
|
acting?: string | null
|
|
onAck?: (id: string) => void
|
|
onMute?: (id: string) => void
|
|
onResolve?: (id: string) => void
|
|
} = $props()
|
|
</script>
|
|
|
|
<div class="flex justify-end gap-2">
|
|
{#if row.state === 'raised'}
|
|
<Button size="sm" variant="outline" disabled={acting === row.id} onclick={() => onAck?.(row.id)}>Ack</Button>
|
|
{/if}
|
|
<Button size="sm" variant="outline" disabled={acting === row.id} onclick={() => onMute?.(row.id)}>Mute 1h</Button>
|
|
<Button size="sm" disabled={acting === row.id} onclick={() => onResolve?.(row.id)}>Resolve</Button>
|
|
</div>
|