import { useState } from "react"; import { Pressable, Text, View } from "react-native"; import type { MobileMessage } from "../lib/api"; import { useI18n } from "../lib/i18n"; import { useMobileTokens } from "../lib/native"; import { NativeSymbol } from "./native-symbol"; /** A run's earlier step messages, folded behind one line above its latest message. */ export function RunSteps({ steps }: { steps: readonly MobileMessage[] }) { const tokens = useMobileTokens(); const { t } = useI18n(); const [open, setOpen] = useState(false); const label = steps.length === 1 ? t("1 step") : t("{count} steps", { count: steps.length }); return ( setOpen((current) => !current)} hitSlop={8} style={{ flexDirection: "row", alignItems: "center", gap: 4, alignSelf: "flex-start" }} > {label} {open ? ( {steps.map((step) => ( {step.blocks .flatMap((block) => (block.kind === "text" ? [block.text] : [])) .join("\n")} ))} ) : null} ); }