diff --git a/src/app/profile/lib/action.ts b/src/app/profile/lib/action.ts index 0728cf5..76f0c63 100644 --- a/src/app/profile/lib/action.ts +++ b/src/app/profile/lib/action.ts @@ -1,3 +1,4 @@ +"use server"; import { getServerSession } from "next-auth/next"; import { authOptions } from "../../api/auth/[...nextauth]/route"; import prisma from "@/lib/prisma"; diff --git a/src/app/validation/analyze.schema.ts b/src/app/validation/analyze.schema.ts new file mode 100644 index 0000000..31750f4 --- /dev/null +++ b/src/app/validation/analyze.schema.ts @@ -0,0 +1,31 @@ +import z from "zod"; + +// const brandEnum = z.enum([ +// "APPLE", +// "ASUS", +// "ACER", +// "LENOVO", +// "HP", +// "DELL", +// "MSI", +// "AXIOO", +// "ADVAN", +// "ZYREX", +// "OTHER", +// ]); + +const professionEnum = z.enum([ + "PROGRAMMER", + "STUDENT", + "GAMER", + "DESIGNER", + "OTHER", +]); + +export const analyzeSchema = z.object({ + profession: professionEnum, +// brands: brandEnum, + url1: z.string().min(10, "Tautan 1 minimal 10 karakter"), + url2: z.string().min(10, "Tautan 2 minimal 10 karakter"), + url3: z.string().optional().or(z.literal("")), +}); diff --git a/src/components/dashboards/AnalysisClient.tsx b/src/components/dashboards/AnalysisClient.tsx index 9693819..c16780d 100644 --- a/src/components/dashboards/AnalysisClient.tsx +++ b/src/components/dashboards/AnalysisClient.tsx @@ -13,150 +13,242 @@ import { Input } from "../ui/input"; import { Button } from "../ui/button"; import ResultSection from "./ResultSection"; import { professionItems } from "@/src/utils/const"; +import { Controller } from "react-hook-form"; export default function AnalysisClient() { const { - url1, - url2, - url3, - profession, + control, + register, + handleSubmit, + onSubmit, + setValue, + errors, + isValid, loading, result, - disabled, showField, - handleAnalyze, - setProfession, - setUrl1, - setUrl2, - setDisabled, - setUrl3, setShowField, } = useAnalyseText(); return (