From 7a311359a63cc7990bd07c29a6d85683ddb0fa87 Mon Sep 17 00:00:00 2001 From: Dev-Zully Date: Sat, 27 Jun 2026 14:47:08 +0000 Subject: [PATCH 1/3] Implemented the initiate and vote converting token --- frontend/components/assets/vote.tsx | 257 ++++++++++++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 frontend/components/assets/vote.tsx diff --git a/frontend/components/assets/vote.tsx b/frontend/components/assets/vote.tsx new file mode 100644 index 000000000..761980a58 --- /dev/null +++ b/frontend/components/assets/vote.tsx @@ -0,0 +1,257 @@ +// // frontend/components/assets/create-asset-modal.tsx +// "use client"; + +// import { useForm } from "react-hook-form"; +// import { zodResolver } from "@hookform/resolvers/zod"; +// import { z } from "zod"; +// import { X } from "lucide-react"; +// import { Button } from "@/components/ui/button"; +// import { Input } from "@/components/ui/input"; +// import { useCreateAsset } from "@/lib/query/hooks/useAssets"; +// import { useDepartments } from "@/lib/query/hooks/useAsset"; +// import { useCategories } from "@/lib/query/hooks/useAssets"; +// import { AssetStatus, AssetCondition } from "@/lib/query/types/asset"; + +// const schema = z.object({ +// name: z.string().min(1, "Asset name is required"), +// categoryId: z.string().min(1, "Category is required"), +// departmentId: z.string().min(1, "Department is required"), +// serialNumber: z.string().optional(), +// manufacturer: z.string().optional(), +// model: z.string().optional(), +// location: z.string().optional(), +// condition: z.nativeEnum(AssetCondition).optional(), +// status: z.nativeEnum(AssetStatus).optional(), +// purchasePrice: z.string().optional(), +// notes: z.string().optional(), +// }); + +// type FormValues = z.infer; + +// interface Props { +// onClose: () => void; +// onSuccess?: () => void; +// } + +// export function CreateAssetModal({ onClose, onSuccess }: Props) { +// const { data: departments = [] } = useDepartments(); +// const { data: categories = [] } = useCategories(); +// const createAsset = useCreateAsset(); + +// const { +// register, +// handleSubmit, +// setError, +// formState: { errors }, +// } = useForm({ +// resolver: zodResolver(schema), +// defaultValues: { +// condition: AssetCondition.NEW, +// status: AssetStatus.ACTIVE, +// }, +// }); + +// const onSubmit = async (values: FormValues) => { +// try { +// await createAsset.mutateAsync({ +// name: values.name, +// categoryId: values.categoryId, +// departmentId: values.departmentId, +// serialNumber: values.serialNumber || undefined, +// manufacturer: values.manufacturer || undefined, +// model: values.model || undefined, +// location: values.location || undefined, +// condition: values.condition, +// status: values.status, +// purchasePrice: values.purchasePrice +// ? Number(values.purchasePrice) +// : undefined, +// notes: values.notes || undefined, +// }); +// onSuccess?.(); +// onClose(); +// } catch (err: unknown) { +// const message = +// (err as { response?: { data?: { message?: string } } })?.response?.data +// ?.message || "Failed to register asset."; +// setError("root", { message }); +// } +// }; + +// return ( +//
+// {/* Backdrop */} +//
+ +// {/* Modal */} +//
+//
+//

+// Register New Asset +//

+// +//
+ +//
+// + +//
+// {/* Category */} +//
+// +// +// {errors.categoryId && ( +//

+// {errors.categoryId.message} +//

+// )} +//
+ +// {/* Department */} +//
+// +// +// {errors.departmentId && ( +//

+// {errors.departmentId.message} +//

+// )} +//
+//
+ +//
+// +// +//
+ +//
+// +// +//
+ +//
+// {/* Condition */} +//
+// +// +//
+ +// +//
+ +//
+// +//