25 lines
794 B
Svelte
25 lines
794 B
Svelte
<script lang="ts">
|
|
let { body, expanded = false }: { body: string; expanded?: boolean } = $props();
|
|
|
|
const parsed = $derived.by(() => {
|
|
const detailMatch = body.match(/^(.*?)(?:\s+)(Oversight reason|Reason|Required action|Details):\s*(.+)$/i);
|
|
if (!detailMatch) return { summary: body, detailLabel: null, detail: null };
|
|
return {
|
|
summary: detailMatch[1].trim(),
|
|
detailLabel: detailMatch[2].toUpperCase(),
|
|
detail: detailMatch[3].trim()
|
|
};
|
|
});
|
|
</script>
|
|
|
|
<div class="system-message-body" class:expanded>
|
|
<div class="system-message-kicker"><span aria-hidden="true">◇</span><b>ISAC TRANSMISSION</b></div>
|
|
<p>{parsed.summary}</p>
|
|
{#if parsed.detail}
|
|
<div class="system-message-detail">
|
|
<span>{parsed.detailLabel}</span>
|
|
<p>{parsed.detail}</p>
|
|
</div>
|
|
{/if}
|
|
</div>
|