Files
CodeNomad/packages/ui/src/components/tool-call/diagnostics-section.tsx
Shantur Rathore 5b1e21345f feat(ui): localize UI strings
Converts hardcoded UI copy to i18n keys across the app, adds global translation for non-component modules, and splits the English catalog into feature modules with duplicate-key detection.
2026-01-26 12:26:12 +00:00

55 lines
2.0 KiB
TypeScript

import { For, Show } from "solid-js"
import type { DiagnosticEntry } from "./diagnostics"
export function renderDiagnosticsSection(
t: (key: string, params?: Record<string, unknown>) => string,
entries: DiagnosticEntry[],
expanded: boolean,
toggle: () => void,
fileLabel: string,
) {
if (entries.length === 0) return null
return (
<div class="tool-call-diagnostics-wrapper">
<button
type="button"
class="tool-call-diagnostics-heading"
aria-expanded={expanded}
onClick={toggle}
>
<span class="tool-call-icon" aria-hidden="true">
{expanded ? "▼" : "▶"}
</span>
<span class="tool-call-emoji" aria-hidden="true">
🛠
</span>
<span class="tool-call-summary">{t("toolCall.diagnostics.title")}</span>
<span class="tool-call-diagnostics-file" title={fileLabel}>
{fileLabel}
</span>
</button>
<Show when={expanded}>
<div class="tool-call-diagnostics" role="region" aria-label={t("toolCall.diagnostics.ariaLabel")}>
<div class="tool-call-diagnostics-body" role="list">
<For each={entries}>
{(entry) => (
<div class="tool-call-diagnostic-row" role="listitem">
<span class={`tool-call-diagnostic-chip tool-call-diagnostic-${entry.tone}`}>
<span class="tool-call-diagnostic-chip-icon">{entry.icon}</span>
<span>{entry.label}</span>
</span>
<span class="tool-call-diagnostic-path" title={entry.filePath}>
{entry.displayPath}
<span class="tool-call-diagnostic-coords">:L{entry.line || "-"}:C{entry.column || "-"}</span>
</span>
<span class="tool-call-diagnostic-message">{entry.message}</span>
</div>
)}
</For>
</div>
</div>
</Show>
</div>
)
}