import { Database, Globe } from 'lucide-react'; import { FormikErrors } from 'formik'; import { PropsWithChildren } from 'react'; import { Button } from '@@/buttons'; import { SimpleForm } from './SimpleForm'; import { Values } from './types'; import { AdvancedForm } from './AdvancedForm'; import { RateLimits } from './RateLimits'; export function ImageConfigFieldset({ onRateLimit, children, autoComplete, values, errors, onChangeImage, setFieldValue, }: PropsWithChildren<{ values: Values; errors?: FormikErrors<Values>; autoComplete?: boolean; onRateLimit?: (limited?: boolean) => void; onChangeImage?: (name: string) => void; setFieldValue: <T>(field: string, value: T) => void; }>) { const Component = values.useRegistry ? SimpleForm : AdvancedForm; return ( <div className="row"> <Component autoComplete={autoComplete} values={values} errors={errors} onChangeImage={onChangeImage} setFieldValue={setFieldValue} /> <div className="form-group"> <div className="col-sm-12"> {values.useRegistry ? ( <Button size="small" color="link" icon={Globe} className="!ml-0 p-0 hover:no-underline" onClick={() => setFieldValue('useRegistry', false)} data-cy="image-config-advanced-button" > Advanced mode </Button> ) : ( <Button size="small" color="link" icon={Database} className="!ml-0 p-0 hover:no-underline" onClick={() => setFieldValue('useRegistry', true)} data-cy="image-config-simple-button" > Simple mode </Button> )} </div> </div> {children} {onRateLimit && values.useRegistry && ( <RateLimits registryId={values.registryId} onRateLimit={onRateLimit} /> )} </div> ); }