import { useEffect, useState } from "react"; import type { EnvVar } from "../../lib/types"; import Button from "../ui/Button"; import { monoInputClass } from "../ui/Field"; interface Props { envVars: EnvVar[]; disabled: boolean; disabledReason?: string; onSave: (vars: EnvVar[]) => Promise; } /** Env-var table. Used inline in Project Home → Config and in global Settings. */ export default function EnvVarsEditor({ envVars: initial, disabled, disabledReason, onSave, }: Props) { const [vars, setVars] = useState(initial); useEffect(() => { setVars(initial); }, [initial]); const updateVar = (index: number, field: keyof EnvVar, value: string) => { const updated = [...vars]; updated[index] = { ...updated[index], [field]: value }; setVars(updated); }; return (
{disabled && disabledReason && (

{disabledReason}

)} {vars.length === 0 && (

No environment variables configured.

)} {vars.map((ev, i) => (
updateVar(i, "key", e.target.value)} onBlur={() => onSave(vars)} placeholder="KEY" aria-label={`Environment variable ${i + 1} name`} disabled={disabled} className={`w-2/5 ${monoInputClass}`} /> updateVar(i, "value", e.target.value)} onBlur={() => onSave(vars)} placeholder="value" aria-label={`Environment variable ${i + 1} value`} disabled={disabled} className={`flex-1 ${monoInputClass}`} />
))}
); }