"use client"; import { Button } from "@/components/ui/button"; import { Form, FormControl, FormField, FormItem } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import APIClient from "@/lib/api"; import { Plus } from "lucide-react"; import { useRouter } from "next/navigation"; import { useForm, SubmitErrorHandler } from "react-hook-form"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { toast } from "@/components/ui/use-toast"; const formSchema = z.object({ url: z.string().url({ message: "The link must be a valid URL" }), }); export default function AddLink() { const router = useRouter(); const form = useForm>({ resolver: zodResolver(formSchema), }); async function onSubmit(value: z.infer) { const [_resp, error] = await APIClient.bookmarkLink(value.url); if (error) { toast({ description: error.message, variant: "destructive" }); return; } router.refresh(); } const onError: SubmitErrorHandler> = (errors) => { toast({ description: Object.values(errors) .map((v) => v.message) .join("\n"), variant: "destructive", }); }; return (
{ return ( ); }} />
); }