import { Info, Plus, Trash2 } from "lucide-react" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import { FieldDescription } from "@/components/ui/field" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import type { RecordDTO } from "@/api/types" const RECORD_TYPES = ["A", "AAAA", "CNAME", "MX", "TXT", "SRV", "NS", "SOA"] as const const typeItems = RECORD_TYPES.map((t) => ({ value: t, label: t })) const DEFAULT_TTL = 3600 function emptyRecord(): RecordDTO { return { type: "A", name: "", ttl: DEFAULT_TTL, values: [""] } } export function RecordEditor({ value, onChange, }: { value: RecordDTO[] onChange: (records: RecordDTO[]) => void }) { function updateRecord(index: number, patch: Partial) { onChange(value.map((r, i) => (i === index ? { ...r, ...patch } : r))) } function addRecord() { onChange([...value, emptyRecord()]) } function removeRecord(index: number) { onChange(value.filter((_, i) => i !== index)) } return (
Используйте {"{{domain_name}}"} в имени или значении записи — при проверке домена подставится имя его зоны (без завершающей точки). {value.map((record, index) => (
updateRecord(index, { name: e.target.value })} /> updateRecord(index, { ttl: Number(e.target.value) })} />