"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Trash2, Plus } from "lucide-react"; import type { RedirectRule } from "@/lib/models/proxy-hosts"; type Props = { initialData?: RedirectRule[] }; export function RedirectsFields({ initialData = [] }: Props) { const [rules, setRules] = useState(initialData); const addRule = () => setRules((r) => [...r, { from: "", to: "", status: 301 }]); const removeRule = (i: number) => setRules((r) => r.filter((_, idx) => idx !== i)); const updateRule = (i: number, key: keyof RedirectRule, value: string | number) => setRules((r) => r.map((rule, idx) => (idx === i ? { ...rule, [key]: value } : rule))); return (

Redirects

{rules.length > 0 && (
From Path To URL / Path Status
{rules.map((rule, i) => (
updateRule(i, "from", e.target.value)} className="h-8 text-sm" /> updateRule(i, "to", e.target.value)} className="h-8 text-sm" />
))}
)}
); }