import React from "react"; import { Box, Text } from "ink"; import { HeaderSwr } from "../../tui-components/HeaderSwr.jsx"; import { DataTable } from "../../tui-components/DataTable.jsx"; import { KeyMaskedDisplay } from "../../tui-components/KeyMaskedDisplay.jsx"; const SCHEMA = [ { key: "label", header: "Label", width: 20 }, { key: "key", header: "Key", width: 24 }, { key: "scope", header: "Scope", width: 12 }, { key: "active", header: "Active", width: 8, formatter: (v) => (v ? "✓" : "✗") }, ]; export default function Keys({ baseUrl, apiKey }) { const fetcher = React.useCallback(async () => { const res = await fetch(`${baseUrl}/api/v1/registered-keys`, { headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : {}, }); return res.ok ? res.json() : []; }, [baseUrl, apiKey]); return ( { const rows = Array.isArray(data) ? data : (data?.keys ?? []); return ( ({ label: k.label ?? k.id, key: k.key ? `${k.key.slice(0, 6)}***${k.key.slice(-4)}` : "***", scope: k.scope ?? "all", active: k.active !== false, }))} schema={SCHEMA} selectable /> ); }} /> [↑↓] select [a] add [r] revoke [R] reveal [c] copy ); }