diff --git a/app/(admin)/admin/advertise/page.tsx b/app/(admin)/admin/advertise/page.tsx new file mode 100644 index 0000000..e9b192e --- /dev/null +++ b/app/(admin)/admin/advertise/page.tsx @@ -0,0 +1,290 @@ +"use client"; +import { AddIcon, CloudUploadIcon, TimesIcon } from "@/components/icons"; +import AdvertiseTable from "@/components/table/advertise/advertise-table"; + +import { + Button, + Card, + Chip, + Input, + Modal, + ModalBody, + ModalContent, + ModalFooter, + ModalHeader, + Switch, + Textarea, + useDisclosure, +} from "@heroui/react"; +import Link from "next/link"; +import { useRouter } from "next/navigation"; +import * as z from "zod"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { Controller, useForm } from "react-hook-form"; +import { Fragment, useEffect, useState } from "react"; +import Swal from "sweetalert2"; +import withReactContent from "sweetalert2-react-content"; + +import { useDropzone } from "react-dropzone"; +import { close, error, loading } from "@/config/swal"; +import Image from "next/image"; + +const createArticleSchema = z.object({ + title: z.string().min(2, { + message: "Judul harus diisi", + }), + url: z.string().min(2, { + message: "Link harus diisi", + }), + description: z.string().min(2, { + message: "Deskripsi harus diisi", + }), +}); + +export default function BasicPage() { + const { isOpen, onOpen, onOpenChange, onClose } = useDisclosure(); + const MySwal = withReactContent(Swal); + + const [refresh, setRefresh] = useState(false); + const [isHeader, setIsHeader] = useState(false); + + const [files, setFiles] = useState([]); + + const formOptions = { + resolver: zodResolver(createArticleSchema), + defaultValues: { title: "", description: "", url: "" }, + }; + + const { getRootProps, getInputProps } = useDropzone({ + onDrop: (acceptedFiles) => { + setFiles(acceptedFiles.map((file) => Object.assign(file))); + }, + maxFiles: 1, + accept: { + "image/*": [], + }, + }); + type UserSettingSchema = z.infer; + const { + control, + handleSubmit, + formState: { errors }, + } = useForm(formOptions); + + const onSubmit = async (values: z.infer) => { + loading(); + const formData = { + title: values.title, + description: values.description, + isHeader: isHeader, + url: values.url, + }; + console.log("dataas", formData); + close(); + // setRefresh(!refresh); + // MySwal.fire({ + // title: "Sukses", + // icon: "success", + // confirmButtonColor: "#3085d6", + // confirmButtonText: "OK", + // }).then((result) => { + // if (result.isConfirmed) { + // } + // }); + }; + + const handleRemoveFile = (file: File) => { + const uploadedFiles = files; + const filtered = uploadedFiles.filter((i) => i.name !== file.name); + setFiles([...filtered]); + }; + + return ( +
+
+
+ + +
+
+ + + {() => ( + <> + + Advertise + + +
+
+

Judul

+ ( + + )} + /> + {errors?.title && ( +

+ {errors.title?.message} +

+ )} +
+
+

Deskripsi

+ ( +