import { useState } from "react"; import styled from "styled-components"; import { defaultBorderRadius, MainContainerWithBorder, secondaryDark, vscBackground, } from "."; import { RangeInFile, FileEdit } from "../../../src/client"; import CodeBlock from "./CodeBlock"; import SubContainer from "./SubContainer"; import { ChevronDown, ChevronRight } from "@styled-icons/heroicons-outline"; export interface IterationContext { codeSelections: RangeInFile[]; instruction: string; suggestedChanges: FileEdit[]; status: "waiting" | "accepted" | "rejected"; summary?: string; action: string; error?: string; } interface IterationContainerProps { iterationContext: IterationContext; } const IterationContainerDiv = styled.div<{ open: boolean }>` background-color: ${(props) => (props.open ? vscBackground : secondaryDark)}; border-radius: ${defaultBorderRadius}; padding: ${(props) => (props.open ? "2px" : "8px")}; `; function IterationContainer(props: IterationContainerProps) { const [open, setOpen] = useState(false); return (

setOpen((prev) => !prev)} > {open ? : } {props.iterationContext.summary || props.iterationContext.codeSelections .map((cs) => cs.filepath) .join("\n")}

{open && ( <> {props.iterationContext.action} {props.iterationContext.error && ( {props.iterationContext.error} )} {props.iterationContext.suggestedChanges.map((sc) => { return ( {sc.filepath} {sc.replacement} ); })} )}
); } export default IterationContainer;