import { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Button, Form, Input, InputNumber, Select, Space, Typography } from 'antd'; import { Controller, useFormContext } from 'react-hook-form'; import { FormField } from '@/components/form/rhf'; import { VLESS_AUTH_LABEL_KEYS, type VlessAuthKind } from '@/lib/xray/vless-encryption'; interface VlessFieldsProps { saving: boolean; selectedVlessAuth: string; vlessAuthKind: VlessAuthKind | null; network: string; security: string; getNewVlessEnc: (kind: VlessAuthKind) => void; clearVlessEnc: () => void; } export default function VlessFields({ saving, selectedVlessAuth, vlessAuthKind, network, security, getNewVlessEnc, clearVlessEnc, }: VlessFieldsProps) { const { t } = useTranslation(); const { control } = useFormContext(); const [authKind, setAuthKind] = useState(vlessAuthKind ?? 'x25519'); const [syncedAuthKind, setSyncedAuthKind] = useState(vlessAuthKind); if (vlessAuthKind !== syncedAuthKind) { setSyncedAuthKind(vlessAuthKind); setAuthKind(vlessAuthKind ?? 'x25519'); } const authOptions = (Object.entries(VLESS_AUTH_LABEL_KEYS) as [VlessAuthKind, string][]).map( ([value, labelKey]) => ({ value, label: t(labelKey) }), ); return ( <>