diff --git a/ui/src/pages/AppsTab/AppDeploymentPage/ConfigTabs/VariablesTab.tsx b/ui/src/pages/AppsTab/AppDeploymentPage/ConfigTabs/VariablesTab.tsx new file mode 100644 index 00000000..b29884ad --- /dev/null +++ b/ui/src/pages/AppsTab/AppDeploymentPage/ConfigTabs/VariablesTab.tsx @@ -0,0 +1,60 @@ +import { Button, Input } from '@cameleer/design-system'; +import type { VariablesFormState } from '../hooks/useDeploymentPageState'; +import styles from '../AppDeploymentPage.module.css'; + +interface Props { + value: VariablesFormState; + onChange: (next: VariablesFormState) => void; + disabled?: boolean; +} + +export function VariablesTab({ value, onChange, disabled }: Props) { + function updateRow(index: number, field: 'key' | 'value', v: string) { + const next = value.envVars.map((row, i) => (i === index ? { ...row, [field]: v } : row)); + onChange({ envVars: next }); + } + + function removeRow(index: number) { + onChange({ envVars: value.envVars.filter((_, i) => i !== index) }); + } + + function addRow() { + onChange({ envVars: [...value.envVars, { key: '', value: '' }] }); + } + + return ( +