85 lines
2.3 KiB
TypeScript
85 lines
2.3 KiB
TypeScript
"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";
|
|
import CommentTable from "@/components/table/comment/comment-table";
|
|
|
|
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 AdvertisePage() {
|
|
const { isOpen, onOpen, onOpenChange, onClose } = useDisclosure();
|
|
const MySwal = withReactContent(Swal);
|
|
|
|
const [refresh, setRefresh] = useState(false);
|
|
const [isHeader, setIsHeader] = useState(false);
|
|
|
|
const [files, setFiles] = useState<File[]>([]);
|
|
|
|
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<typeof createArticleSchema>;
|
|
const {
|
|
control,
|
|
handleSubmit,
|
|
formState: { errors },
|
|
} = useForm<UserSettingSchema>(formOptions);
|
|
|
|
return (
|
|
<div className="overflow-x-hidden overflow-y-scroll">
|
|
<div className="px-2 md:px-4 md:py-4 w-full">
|
|
<div className="bg-white shadow-lg dark:bg-[#18181b] rounded-xl p-3">
|
|
<CommentTable triggerRefresh={refresh} />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|