import type { ExpandedQuery } from '../types';
import { InfoTooltip } from './PipelineView';
interface ExpansionColumnState {
status: 'idle' | 'running' | 'done' | 'error';
data?: ExpandedQuery;
error?: string;
}
interface ExpansionColumnProps {
state: ExpansionColumnState;
accent: string;
info: string;
}
function Spinner({ color }: { color: string }) {
return (
);
}
function CompactCard({ label, content }: { label: string; content: string | string[] }) {
const text = Array.isArray(content) ? content.join('\n') : content;
return (
);
}
function VariantSummary({ data }: { data: ExpandedQuery }) {
const count =
(data.lex.trim() ? 1 : 0) +
data.vec.length +
(data.hyde.trim() ? 1 : 0);
if (count === 0) return null;
return (
Expanded into {count} search variant{count !== 1 ? 's' : ''}
);
}
export default function ExpansionColumn({ state, accent, info }: ExpansionColumnProps) {
const isIdle = state.status === 'idle';
const isRunning = state.status === 'running';
const isDone = state.status === 'done';
const isError = state.status === 'error';
return (
Query Expansion
{isRunning && }
{isIdle && (
Awaiting query...
)}
{isRunning && (
Generating...
)}
{isError && (
{state.error}
)}
{isDone && state.data && (
<>
{state.data.note && (
{state.data.note}
)}
{state.data.lex.trim() && (
)}
{state.data.vec.length > 0 && (
)}
{state.data.hyde.trim() && (
)}
>
)}
);
}