From f531a8e988823d3659d2d88fd855127243779cf2 Mon Sep 17 00:00:00 2001 From: DarrellRoberts Date: Thu, 27 Nov 2025 17:36:00 +0100 Subject: [PATCH 1/7] chor: fixed style bugs --- src/app/(home)/books/library/page.tsx | 7 ++-- src/app/(home)/brothers/library/page.tsx | 6 +++- src/components/books/library/BookSkeleton.tsx | 4 +-- .../library/BrothersLoadingProfile.tsx | 36 +++++++++---------- src/components/misc/search/Search.tsx | 8 ++++- 5 files changed, 36 insertions(+), 25 deletions(-) diff --git a/src/app/(home)/books/library/page.tsx b/src/app/(home)/books/library/page.tsx index aa76d3d..9f3c2ff 100644 --- a/src/app/(home)/books/library/page.tsx +++ b/src/app/(home)/books/library/page.tsx @@ -50,11 +50,14 @@ const Booklibrary: React.FC = () => { return () => clearTimeout(timer) }, [limit, loadingBooks]) - console.log(bookData) return ( <>
- + diff --git a/src/app/(home)/brothers/library/page.tsx b/src/app/(home)/brothers/library/page.tsx index be8d2ec..84aa232 100644 --- a/src/app/(home)/brothers/library/page.tsx +++ b/src/app/(home)/brothers/library/page.tsx @@ -30,7 +30,11 @@ const Brothercat: React.FC = () => { return ( <>
- +
{loadingUsers && loadingBooks ? ( <> diff --git a/src/components/books/library/BookSkeleton.tsx b/src/components/books/library/BookSkeleton.tsx index e0dcb24..a9a99e1 100644 --- a/src/components/books/library/BookSkeleton.tsx +++ b/src/components/books/library/BookSkeleton.tsx @@ -20,7 +20,7 @@ const BookSkeleton = ({ freq, noTitle }: Props) => { }, [freq]) return ( -
+
{skeletonArray?.map((node) => (
{noTitle ? null : ( @@ -33,7 +33,7 @@ const BookSkeleton = ({ freq, noTitle }: Props) => { { const isDarkMode = useAppSelector((state) => state.darkMode.darkMode) + const handleDesktop = useMediaQuery({ query: "(min-device-width: 640px)" }) return ( -
-
+
+
-
+
- + Click the photo on the left to view more details diff --git a/src/components/forms/bookform-delete/DeleteBook.tsx b/src/components/forms/bookform-delete/DeleteBook.tsx index 35b32e3..27c2e6d 100644 --- a/src/components/forms/bookform-delete/DeleteBook.tsx +++ b/src/components/forms/bookform-delete/DeleteBook.tsx @@ -2,6 +2,7 @@ import { Button, Popconfirm } from "antd" import useForm from "@/hooks/crud-hooks/useForm" +import { config } from "@/configs/config" type Props = { id: string | string[] @@ -9,7 +10,7 @@ type Props = { const DeleteBook: React.FC = ({ id }) => { const { handleSubmit, error } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/${id}`, + `${config.API_URL}/books/${id}`, "DELETE" ) diff --git a/src/components/forms/bookform-randomise/CreateUnreadBookForm.tsx b/src/components/forms/bookform-randomise/CreateUnreadBookForm.tsx index bf18c2d..84d2e10 100644 --- a/src/components/forms/bookform-randomise/CreateUnreadBookForm.tsx +++ b/src/components/forms/bookform-randomise/CreateUnreadBookForm.tsx @@ -5,6 +5,7 @@ import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useEffect, useState } from "react" import { editBookButtonSlice } from "@/store/lib/features/books/editBookButtonsSlice" import { setShowCreate } from "@/store/lib/features/auth/editButtonsSlice" +import { config } from "@/configs/config" const { Option } = Select @@ -18,7 +19,7 @@ const CreateBook: React.FC = () => { }) const [noImageMessage, setNoImageMessage] = useState() const { handleSubmit, error, enterLoading, loadings, setError } = useForm( - "https://bookclubbrothers-backend.onrender.com/books/unread/create", + `${config.API_URL}/books/unread/create`, "POST" ) const formData = useAppSelector((state) => state.bookFormData.formData) diff --git a/src/components/forms/bookform-randomise/DeleteBook.tsx b/src/components/forms/bookform-randomise/DeleteBook.tsx index 4b0cd85..9901b99 100644 --- a/src/components/forms/bookform-randomise/DeleteBook.tsx +++ b/src/components/forms/bookform-randomise/DeleteBook.tsx @@ -4,6 +4,7 @@ import { Button, Popconfirm } from "antd" import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch } from "@/store/lib/hooks" import { setIsRefresh } from "@/store/lib/features/auth/editButtonsSlice" +import { config } from "@/configs/config" type Props = { id: string @@ -11,7 +12,7 @@ type Props = { const DeleteBook: React.FC = ({ id }) => { const { handleSubmit, error } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/${id}`, + `${config.API_URL}/books/${id}`, "DELETE" ) diff --git a/src/components/forms/bookform-randomise/SelectBook.tsx b/src/components/forms/bookform-randomise/SelectBook.tsx index 9bd5917..3de1748 100644 --- a/src/components/forms/bookform-randomise/SelectBook.tsx +++ b/src/components/forms/bookform-randomise/SelectBook.tsx @@ -1,5 +1,6 @@ import { Button, Form } from "antd" import useForm from "@/hooks/crud-hooks/useForm" +import { config } from "@/configs/config" type Props = { bookId: string @@ -7,7 +8,7 @@ type Props = { const SelectBook: React.FC = ({ bookId }) => { const { handleSubmit, loadings } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/${bookId}`, + `${config.API_URL}/books/${bookId}`, "PUT", { read: true, diff --git a/src/components/forms/bookform-randomise/edit/EditForm.tsx b/src/components/forms/bookform-randomise/edit/EditForm.tsx index d0859b8..6d9b9c1 100644 --- a/src/components/forms/bookform-randomise/edit/EditForm.tsx +++ b/src/components/forms/bookform-randomise/edit/EditForm.tsx @@ -10,6 +10,7 @@ import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { setShowEdit } from "@/store/lib/features/auth/editButtonsSlice" +import { config } from "@/configs/config" type Props = { inAuthor: string @@ -39,7 +40,7 @@ const EditForm: React.FC = ({ imageURL: false, }) const { handleSubmit, error, loadings, enterLoading } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/${id}`, + `${config.API_URL}/books/${id}`, "PUT" ) diff --git a/src/components/forms/brotherform/EditCityAndCountry.tsx b/src/components/forms/brotherform/EditCityAndCountry.tsx index 0f40d58..277f1bb 100644 --- a/src/components/forms/brotherform/EditCityAndCountry.tsx +++ b/src/components/forms/brotherform/EditCityAndCountry.tsx @@ -3,6 +3,7 @@ import { useState } from "react" import { Button, Form, Input } from "antd" import { useAppSelector } from "@/store/lib/hooks" +import { config } from "@/configs/config" interface props { id: string @@ -21,19 +22,16 @@ const EditCityAndCountry: React.FC = ({ id, inCity, inCountry }) => { const handleSubmit = async () => { try { setError(null) - const response = await fetch( - `https://bookclubbrothers-backend.onrender.com/users/${id}`, - { - method: "PUT", - headers: { - "Content-Type": "application/json", - Authorization: `Bearer ${token}`, - }, - body: JSON.stringify({ - userInfo: { residence: { country, city } }, - }), - } - ) + const response = await fetch(`${config.API_URL}/users/${id}`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + body: JSON.stringify({ + userInfo: { residence: { country, city } }, + }), + }) const data = await response.json() if (!response.ok) { setError(data.error) diff --git a/src/components/forms/brotherform/EditGenre.tsx b/src/components/forms/brotherform/EditGenre.tsx index 596ccfa..24ec5c1 100644 --- a/src/components/forms/brotherform/EditGenre.tsx +++ b/src/components/forms/brotherform/EditGenre.tsx @@ -3,6 +3,7 @@ import { useState } from "react" import { Button, Form, Select, Space } from "antd" import { useAppSelector } from "@/store/lib/hooks" +import { config } from "@/configs/config" const { Option } = Select @@ -21,19 +22,16 @@ const EditGenre: React.FC = ({ id, inGenre }) => { const handleSubmit = async () => { try { setError(null) - const response = await fetch( - `https://bookclubbrothers-backend.onrender.com/users/${id}`, - { - method: "PUT", - headers: { - "Content-Type": "application/json", - Authorization: `Bearer ${token}`, - }, - body: JSON.stringify({ - userInfo: { favGenre }, - }), - } - ) + const response = await fetch(`${config.API_URL}/users/${id}`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + body: JSON.stringify({ + userInfo: { favGenre }, + }), + }) const data = await response.json() if (!response.ok) { setError(data.error) diff --git a/src/components/forms/brotherform/EditUsername.tsx b/src/components/forms/brotherform/EditUsername.tsx index 81827ff..456fca9 100644 --- a/src/components/forms/brotherform/EditUsername.tsx +++ b/src/components/forms/brotherform/EditUsername.tsx @@ -3,6 +3,7 @@ import { useState } from "react" import { Button, Form, Input } from "antd" import { useAppSelector } from "@/store/lib/hooks" +import { config } from "@/configs/config" interface props { id: string @@ -19,19 +20,16 @@ const EditUsername: React.FC = ({ id, inUsername }) => { const handleSubmit = async () => { try { setError(null) - const response = await fetch( - `https://bookclubbrothers-backend.onrender.com/users/username/${id}`, - { - method: "PUT", - headers: { - "Content-Type": "application/json", - Authorization: `Bearer ${token}`, - }, - body: JSON.stringify({ - username, - }), - } - ) + const response = await fetch(`${config.API_URL}/users/username/${id}`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + body: JSON.stringify({ + username, + }), + }) const data = await response.json() if (!response.ok) { setError(data.error) diff --git a/src/components/forms/brotherform/PictureUpload.tsx b/src/components/forms/brotherform/PictureUpload.tsx index 8ec322d..d182b2e 100644 --- a/src/components/forms/brotherform/PictureUpload.tsx +++ b/src/components/forms/brotherform/PictureUpload.tsx @@ -5,6 +5,7 @@ import axios from "axios" import { PlusOutlined } from "@ant-design/icons" import { Upload, Form, Button } from "antd" import { useAppSelector } from "@/store/lib/hooks" +import { config } from "@/configs/config" const normFile = (e) => { if (Array.isArray(e)) { @@ -43,15 +44,11 @@ const PictureUpload: React.FC = ({ id, inImage }) => { try { const formData = new FormData() formData.append("avatar", image, image?.name) - await axios.post( - `https://bookclubbrothers-backend.onrender.com/users/upload/${id}`, - formData, - { - headers: { - Authorization: `Bearer ${token}`, - }, - } - ) + await axios.post(`${config.API_URL}/users/upload/${id}`, formData, { + headers: { + Authorization: `Bearer ${token}`, + }, + }) } catch (error) { setError(error) console.error(error) @@ -100,16 +97,13 @@ const PictureUpload: React.FC = ({ id, inImage }) => { > false} >
- +
Upload
diff --git a/src/components/forms/commentform/CommentForm.tsx b/src/components/forms/commentform/CommentForm.tsx index 563af3a..95463c3 100644 --- a/src/components/forms/commentform/CommentForm.tsx +++ b/src/components/forms/commentform/CommentForm.tsx @@ -4,6 +4,7 @@ import { Button, Form, Input } from "antd" import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" +import { config } from "@/configs/config" const { TextArea } = Input @@ -20,7 +21,7 @@ const CommentForm = ({ id, handleCancel }: Props) => { const dispatch = useAppDispatch() const { handleSubmit, error, enterLoading, loadings } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/comment/${id}`, + `${config.API_URL}/books/comment/${id}`, "POST", { comments } ) diff --git a/src/components/forms/commentform/EditCommentForm.tsx b/src/components/forms/commentform/EditCommentForm.tsx index 515201d..7ee1936 100644 --- a/src/components/forms/commentform/EditCommentForm.tsx +++ b/src/components/forms/commentform/EditCommentForm.tsx @@ -4,6 +4,7 @@ import { Button, Form, Input } from "antd" import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" +import { config } from "@/configs/config" const { TextArea } = Input @@ -21,7 +22,7 @@ const EditCommentForm: React.FC = ({ id, inComment, handleCancel }) => { const dispatch = useAppDispatch() const { handleSubmit, error, enterLoading, loadings } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/comment/edit/${id}`, + `${config.API_URL}/books/comment/edit/${id}`, "PUT", { comments } ) diff --git a/src/components/forms/editbookform-single-book/author/EditAuthor.tsx b/src/components/forms/editbookform-single-book/author/EditAuthor.tsx index cf3a404..e8201ce 100644 --- a/src/components/forms/editbookform-single-book/author/EditAuthor.tsx +++ b/src/components/forms/editbookform-single-book/author/EditAuthor.tsx @@ -1,5 +1,6 @@ "use client" +import { config } from "@/configs/config" import useForm from "@/hooks/crud-hooks/useForm" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" @@ -16,7 +17,7 @@ const EditBookAuthor: React.FC = ({ id, inAuthor }) => { const dispatch = useAppDispatch() const { handleSubmit, error, enterLoading, loadings } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/${id}`, + `${config.API_URL}/books/${id}`, "PUT", { author } ) diff --git a/src/components/forms/editbookform-single-book/datemeeting/EditActualDate.tsx b/src/components/forms/editbookform-single-book/datemeeting/EditActualDate.tsx index e8d6a06..0533a77 100644 --- a/src/components/forms/editbookform-single-book/datemeeting/EditActualDate.tsx +++ b/src/components/forms/editbookform-single-book/datemeeting/EditActualDate.tsx @@ -1,5 +1,6 @@ "use client" +import { config } from "@/configs/config" import useForm from "@/hooks/crud-hooks/useForm" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" @@ -17,7 +18,7 @@ const EditActualDate: React.FC = ({ id }) => { const dispatch = useAppDispatch() const { handleSubmit, error, enterLoading, loadings } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/${id}`, + `${config.API_URL}/books/${id}`, "PUT", { actualDateOfMeeting } ) diff --git a/src/components/forms/editbookform-single-book/datemeeting/EditDate.tsx b/src/components/forms/editbookform-single-book/datemeeting/EditDate.tsx index 6bef5d6..e591274 100644 --- a/src/components/forms/editbookform-single-book/datemeeting/EditDate.tsx +++ b/src/components/forms/editbookform-single-book/datemeeting/EditDate.tsx @@ -1,5 +1,6 @@ "use client" +import { config } from "@/configs/config" import useForm from "@/hooks/crud-hooks/useForm" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" @@ -17,7 +18,7 @@ const EditDate: React.FC = ({ id }) => { const dispatch = useAppDispatch() const { handleSubmit, error, enterLoading, loadings } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/${id}`, + `${config.API_URL}/books/${id}`, "PUT", { dateOfMeeting } ) diff --git a/src/components/forms/editbookform-single-book/genre/EditGenre.tsx b/src/components/forms/editbookform-single-book/genre/EditGenre.tsx index 542cd52..bdf4ce3 100644 --- a/src/components/forms/editbookform-single-book/genre/EditGenre.tsx +++ b/src/components/forms/editbookform-single-book/genre/EditGenre.tsx @@ -4,6 +4,7 @@ import { Button, Form, Select, Space } from "antd" import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" +import { config } from "@/configs/config" const { Option } = Select @@ -18,7 +19,7 @@ const EditGenre: React.FC = ({ id, inGenre }) => { const dispatch = useAppDispatch() const { handleSubmit, error, enterLoading, loadings } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/${id}`, + `${config.API_URL}/books/${id}`, "PUT", { genre } ) diff --git a/src/components/forms/editbookform-single-book/image/EditImage.tsx b/src/components/forms/editbookform-single-book/image/EditImage.tsx index cbc6da4..be4fe67 100644 --- a/src/components/forms/editbookform-single-book/image/EditImage.tsx +++ b/src/components/forms/editbookform-single-book/image/EditImage.tsx @@ -5,6 +5,7 @@ import axios from "axios" import { Button, Form, Upload } from "antd" import { PlusOutlined } from "@ant-design/icons" import { useAppSelector } from "@/store/lib/hooks" +import { config } from "@/configs/config" const normFile = (e) => { if (Array.isArray(e)) { @@ -43,7 +44,7 @@ const EditImage: React.FC = ({ id }) => { const formData = new FormData() formData.append("picture", image, image?.name) await axios.post( - `https://bookclubbrothers-backend.onrender.com/books/${id}`, + `${config.API_URL}/books/${id}`, formData, { headers: { @@ -92,16 +93,13 @@ const EditImage: React.FC = ({ id }) => { > false} >
- +
Upload
diff --git a/src/components/forms/editbookform-single-book/pages/EditPages.tsx b/src/components/forms/editbookform-single-book/pages/EditPages.tsx index 06f012d..fa963af 100644 --- a/src/components/forms/editbookform-single-book/pages/EditPages.tsx +++ b/src/components/forms/editbookform-single-book/pages/EditPages.tsx @@ -4,6 +4,7 @@ import { Button, Form, Input } from "antd" import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" +import { config } from "@/configs/config" type Props = { id: string | string[] @@ -16,7 +17,7 @@ const EditPages: React.FC = ({ id, inPages }) => { const dispatch = useAppDispatch() const { handleSubmit, error, enterLoading, loadings } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/${id}`, + `${config.API_URL}/books/${id}`, "PUT", { pages } ) diff --git a/src/components/forms/editbookform-single-book/published/EditPublished.tsx b/src/components/forms/editbookform-single-book/published/EditPublished.tsx index 16ed5dc..bdd9434 100644 --- a/src/components/forms/editbookform-single-book/published/EditPublished.tsx +++ b/src/components/forms/editbookform-single-book/published/EditPublished.tsx @@ -4,6 +4,7 @@ import { Button, Form, Input } from "antd" import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" +import { config } from "@/configs/config" type Props = { id: string | string[] @@ -18,7 +19,7 @@ const EditPublished: React.FC = ({ id, inPublish }) => { const dispatch = useAppDispatch() const { handleSubmit, error, enterLoading, loadings } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/${id}`, + `${config.API_URL}/books/${id}`, "PUT", { yearPublished } ) diff --git a/src/components/forms/editbookform-single-book/title/EditTitle.tsx b/src/components/forms/editbookform-single-book/title/EditTitle.tsx index 07ca293..2cee115 100644 --- a/src/components/forms/editbookform-single-book/title/EditTitle.tsx +++ b/src/components/forms/editbookform-single-book/title/EditTitle.tsx @@ -1,5 +1,6 @@ "use client" +import { config } from "@/configs/config" import useForm from "@/hooks/crud-hooks/useForm" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" @@ -16,7 +17,7 @@ const EditTitle: React.FC = ({ id, inTitle }) => { const dispatch = useAppDispatch() const { handleSubmit, error, enterLoading, loadings } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/${id}`, + `${config.API_URL}/books/${id}`, "PUT", { title } ) diff --git a/src/components/forms/ratingform/AnthologyRatingForm.tsx b/src/components/forms/ratingform/AnthologyRatingForm.tsx index cad10fc..53ec213 100644 --- a/src/components/forms/ratingform/AnthologyRatingForm.tsx +++ b/src/components/forms/ratingform/AnthologyRatingForm.tsx @@ -5,6 +5,7 @@ import { Book } from "@/types/BookInterface" import { useMemo, useState } from "react" import { handleMultipleSubmits } from "@/utils/handleMultipleSubmits" import { useAppSelector } from "@/store/lib/hooks" +import { config } from "@/configs/config" type Props = { id: string | string[] @@ -30,7 +31,7 @@ const AnthologyRatingForm: React.FC = ({ id, singleBook }) => { for (let i = 0; i < singleBook.shortStories.length; i++) { promiseArr.push( await handleMultipleSubmits( - `https://bookclubbrothers-backend.onrender.com/books/${id}/${singleBook?.shortStories[i]._id}`, + `${config.API_URL}/books/${id}/${singleBook?.shortStories[i]._id}`, { rating: Object.values(raterStoriesObject)[i] }, "POST", token diff --git a/src/components/forms/ratingform/EditAnthologyRatingForm.tsx b/src/components/forms/ratingform/EditAnthologyRatingForm.tsx index edbfa1e..9f2552a 100644 --- a/src/components/forms/ratingform/EditAnthologyRatingForm.tsx +++ b/src/components/forms/ratingform/EditAnthologyRatingForm.tsx @@ -5,6 +5,7 @@ import { Book } from "@/types/BookInterface" import { useEffect, useMemo, useState } from "react" import { handleMultipleSubmits } from "@/utils/handleMultipleSubmits" import { useAppSelector } from "@/store/lib/hooks" +import { config } from "@/configs/config" type Props = { id: string | string[] @@ -35,7 +36,7 @@ const EditAnthologyRatingForm: React.FC = ({ for (let i = 0; i < singleBook.shortStories.length; i++) { promiseArr.push( await handleMultipleSubmits( - `https://bookclubbrothers-backend.onrender.com/books/${id}/${singleBook?.shortStories[i]._id}`, + `${config.API_URL}/books/${id}/${singleBook?.shortStories[i]._id}`, { rating: Object.values(raterStoriesObject)[i] }, "PUT", token diff --git a/src/components/forms/ratingform/EditRatingForm.tsx b/src/components/forms/ratingform/EditRatingForm.tsx index 5a389cb..290d10c 100644 --- a/src/components/forms/ratingform/EditRatingForm.tsx +++ b/src/components/forms/ratingform/EditRatingForm.tsx @@ -7,6 +7,7 @@ import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useEffect } from "react" import { User } from "@/types/UserInterface" import ScorePreview from "./ScorePreview" +import { config } from "@/configs/config" type Props = { id: string | string[] @@ -30,7 +31,7 @@ const EditRatingForm: React.FC = ({ const dispatch = useAppDispatch() const { handleSubmit, error, loadings, enterLoading } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/rating/edit/${id}`, + `${config.API_URL}/books/rating/edit/${id}`, "PUT", { rating } ) diff --git a/src/components/forms/ratingform/RatingForm.tsx b/src/components/forms/ratingform/RatingForm.tsx index 9af31b8..ebc8751 100644 --- a/src/components/forms/ratingform/RatingForm.tsx +++ b/src/components/forms/ratingform/RatingForm.tsx @@ -7,6 +7,7 @@ import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { User } from "@/types/UserInterface" import ScorePreview from "./ScorePreview" import { useEffect } from "react" +import { config } from "@/configs/config" type Props = { id: string | string[] @@ -28,7 +29,7 @@ const RatingForm: React.FC = ({ const dispatch = useAppDispatch() const { handleSubmit, error, enterLoading, loadings } = useForm( - `https://bookclubbrothers-backend.onrender.com/books/rating/${id}`, + `${config.API_URL}/books/rating/${id}`, "POST", { rating } ) diff --git a/src/components/forms/ratingform/ScorePreview.tsx b/src/components/forms/ratingform/ScorePreview.tsx index f5c6ca8..b4140b2 100644 --- a/src/components/forms/ratingform/ScorePreview.tsx +++ b/src/components/forms/ratingform/ScorePreview.tsx @@ -1,3 +1,4 @@ +import { config } from "@/configs/config" import useBookFetch from "@/hooks/fetch-hooks/useReadBookFetch" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" @@ -15,10 +16,7 @@ type Props = { } const ScorePreview = ({ users, rating, bookTitle, initialRating }: Props) => { - const { bookData } = useBookFetch( - "https://bookclubbrothers-backend.onrender.com/books", - null - ) + const { bookData } = useBookFetch(`${config.API_URL}/books`, null) const token = useAppSelector((state) => state.token.tokenState) const { decodedToken }: { decodedToken?: { username: string; _id: string } } = useJwt(token) diff --git a/src/components/user/LoginForm.tsx b/src/components/user/LoginForm.tsx index 6aaf777..2def2a1 100644 --- a/src/components/user/LoginForm.tsx +++ b/src/components/user/LoginForm.tsx @@ -3,6 +3,7 @@ import { Button, Form, Input } from "antd" import { useState } from "react" import { useAuth } from "@/hooks/auth-hooks/useAuth" +import { config } from "@/configs/config" interface Login { setLoginOpen: React.Dispatch> @@ -20,14 +21,11 @@ const LoginForm: React.FC = ({ setLoginOpen }) => { try { setError(null) setLoadings([true]) - const response = await fetch( - "https://bookclubbrothers-backend.onrender.com/users/login", - { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ username, password }), - } - ) + const response = await fetch(`${config.API_URL}/users/login`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ username, password }), + }) const data = await response.json() diff --git a/src/components/user/LoginForm3D.tsx b/src/components/user/LoginForm3D.tsx index eeb7a40..a7728f6 100644 --- a/src/components/user/LoginForm3D.tsx +++ b/src/components/user/LoginForm3D.tsx @@ -1,5 +1,6 @@ "use client" +import { config } from "@/configs/config" import { Button, Form, Input } from "antd" import { useState } from "react" @@ -16,14 +17,11 @@ const LoginForm3D: React.FC = ({ setLoginOpen }) => { const handleSubmit = async () => { try { setError(null) - const response = await fetch( - "https://bookclubbrothers-backend.onrender.com/users/login", - { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ username, password }), - } - ) + const response = await fetch(`${config.API_URL}/users/login`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ username, password }), + }) const data = await response.json() diff --git a/src/configs/config.ts b/src/configs/config.ts new file mode 100644 index 0000000..41146bc --- /dev/null +++ b/src/configs/config.ts @@ -0,0 +1,3 @@ +export const config = { + API_URL: process.env.NEXT_PUBLIC_API_URL, +} diff --git a/src/utils/handleLogout.ts b/src/utils/handleLogout.ts index b867645..fbf009b 100644 --- a/src/utils/handleLogout.ts +++ b/src/utils/handleLogout.ts @@ -1,25 +1,24 @@ +import { config } from "@/configs/config" + export const handleLogout = async (token) => { try { - const response = await fetch( - "https://bookclubbrothers-backend.onrender.com/users/logout", - { - method: "PUT", - headers: { - "Content-Type": "application/json", - Authorization: `Bearer ${token}`, - }, - } - ); - console.log(response); + const response = await fetch(`${config.API_URL}/users/logout`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + }) + console.log(response) - const data = await response.json(); + const data = await response.json() - console.log(data); + console.log(data) if (!response.ok) { - console.error(data.error); + console.error(data.error) } } catch (err) { - console.error(err); + console.error(err) } -}; +} From ed5dbdff6edaf7e6255e783329264b276eaae399 Mon Sep 17 00:00:00 2001 From: DarrellRoberts Date: Mon, 22 Dec 2025 19:45:27 +0100 Subject: [PATCH 5/7] theme: updated antd w/ configprovider --- package-lock.json | 1690 +++++++++-------- package.json | 2 +- src/app/(home)/books/library/page.tsx | 7 +- src/app/(home)/books/page.tsx | 46 +- src/app/(home)/books/randomiser/page.tsx | 1 + src/app/(home)/brothers/page.tsx | 31 +- src/app/(home)/club/page.tsx | 30 +- src/app/(home)/layout.tsx | 30 +- src/app/globals.css | 10 +- src/components/3d/threeJS/Base.tsx | 16 +- .../3d/threeJS/components/TextInfo.tsx | 11 +- .../books/randomiser/Randomiser.tsx | 9 +- .../brothers/dashboard/BrotherBanner.tsx | 9 +- .../forms/bookform-delete/DeleteBook.tsx | 13 +- .../bookform-randomise/CreateUnreadBook.tsx | 37 +- .../CreateUnreadBookForm.tsx | 48 +- .../forms/bookform-randomise/DeleteBook.tsx | 9 +- .../forms/bookform-randomise/SelectBook.tsx | 10 +- .../bookform-randomise/edit/EditForm.tsx | 15 +- .../edit/EditUnreadBook.tsx | 17 +- .../forms/brotherform/EditCityAndCountry.tsx | 28 +- .../brotherform/EditCityAndCountryButton.tsx | 21 +- .../forms/brotherform/EditGenre.tsx | 15 +- .../forms/brotherform/EditGenreButton.tsx | 21 +- .../forms/brotherform/EditUsername.tsx | 20 +- .../forms/brotherform/EditUsernameButton.tsx | 21 +- .../forms/brotherform/PictureUpload.tsx | 23 +- .../forms/brotherform/PictureUploadButton.tsx | 21 +- .../forms/commentform/CommentButton.tsx | 17 +- .../forms/commentform/CommentForm.tsx | 13 +- .../forms/commentform/EditCommentButton.tsx | 17 +- .../forms/commentform/EditCommentForm.tsx | 13 +- .../author/EditAuthor.tsx | 14 +- .../author/EditAuthorButton.tsx | 28 +- .../datemeeting/EditActualDate.tsx | 14 +- .../datemeeting/EditActualDateButton.tsx | 28 +- .../datemeeting/EditDate.tsx | 14 +- .../datemeeting/EditDateButton.tsx | 28 +- .../genre/EditGenre.tsx | 14 +- .../genre/EditGenreButton.tsx | 28 +- .../image/EditImage.tsx | 18 +- .../image/EditImageButton.tsx | 29 +- .../pages/EditPages.tsx | 14 +- .../pages/EditPagesButton.tsx | 28 +- .../published/EditPublishButton.tsx | 28 +- .../published/EditPublished.tsx | 14 +- .../title/EditTitle.tsx | 14 +- .../title/EditTitleButton.tsx | 22 +- .../ratingform/EditAnthologyRatingForm.tsx | 15 +- .../forms/ratingform/EditRatingButton.tsx | 20 +- .../forms/ratingform/EditRatingForm.tsx | 15 +- .../forms/ratingform/RatingButton.tsx | 20 +- .../forms/ratingform/RatingForm.tsx | 14 +- src/components/misc/badges/BadgeTemplate.tsx | 5 +- src/components/misc/search/Search.tsx | 32 +- src/components/misc/search/search.module.css | 1 + src/components/ui/button/UiButton.tsx | 80 + src/components/ui/input/UiInput.tsx | 33 + src/components/ui/modal/UiModal.tsx | 47 + src/components/ui/popover/UiPopover.tsx | 26 + src/components/user/Login.tsx | 33 +- src/components/user/Login3D.tsx | 32 +- src/components/user/LoginForm.tsx | 12 +- src/components/user/Logout.tsx | 25 +- src/components/user/Logout3D.tsx | 17 +- src/theme/theme.config.ts | 12 + 66 files changed, 1614 insertions(+), 1431 deletions(-) create mode 100644 src/components/ui/button/UiButton.tsx create mode 100644 src/components/ui/input/UiInput.tsx create mode 100644 src/components/ui/modal/UiModal.tsx create mode 100644 src/components/ui/popover/UiPopover.tsx create mode 100644 src/theme/theme.config.ts diff --git a/package-lock.json b/package-lock.json index ff6b708..7cc0ab0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@reduxjs/toolkit": "^2.5.1", "@tailwindcss/postcss": "^4.1.11", "@tanstack/react-query": "^5.61.4", - "antd": "^5.14.0", + "antd": "^6.0.0", "axios": "^1.6.7", "chart.js": "^4.4.4", "gsap": "^3.12.5", @@ -82,41 +82,67 @@ } }, "node_modules/@ant-design/colors": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.0.2.tgz", - "integrity": "sha512-7KJkhTiPiLHSu+LmMJnehfJ6242OCxSlR3xHVBecYxnMW8MS/878NXct1GqYARyL59fyeFdKRxXTfvR9SnDgJg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-8.0.0.tgz", + "integrity": "sha512-6YzkKCw30EI/E9kHOIXsQDHmMvTllT8STzjMb4K2qzit33RW2pqCJP0sk+hidBntXxE+Vz4n1+RvCTfBw6OErw==", + "license": "MIT", "dependencies": { - "@ctrl/tinycolor": "^3.6.1" + "@ant-design/fast-color": "^3.0.0" } }, "node_modules/@ant-design/cssinjs": { - "version": "1.18.4", - "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.18.4.tgz", - "integrity": "sha512-IrUAOj5TYuMG556C9gdbFuOrigyhzhU5ZYpWb3gYTxAwymVqRbvLzFCZg6OsjLBR6GhzcxYF3AhxKmjB+rA2xA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-2.0.1.tgz", + "integrity": "sha512-Lw1Z4cUQxdMmTNir67gU0HCpTl5TtkKCJPZ6UBvCqzcOTl/QmMFB6qAEoj8qFl0CuZDX9qQYa3m9+rEKfaBSbA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.1", "@emotion/hash": "^0.8.0", "@emotion/unitless": "^0.7.5", - "classnames": "^2.3.1", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1", "csstype": "^3.1.3", - "rc-util": "^5.35.0", - "stylis": "^4.0.13" + "stylis": "^4.3.4" }, "peerDependencies": { "react": ">=16.0.0", "react-dom": ">=16.0.0" } }, + "node_modules/@ant-design/cssinjs-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@ant-design/cssinjs-utils/-/cssinjs-utils-2.0.2.tgz", + "integrity": "sha512-Mq3Hm6fJuQeFNKSp3+yT4bjuhVbdrsyXE2RyfpJFL0xiYNZdaJ6oFaE3zFrzmHbmvTd2Wp3HCbRtkD4fU+v2ZA==", + "license": "MIT", + "dependencies": { + "@ant-design/cssinjs": "^2.0.1", + "@babel/runtime": "^7.23.2", + "@rc-component/util": "^1.4.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@ant-design/fast-color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-3.0.0.tgz", + "integrity": "sha512-eqvpP7xEDm2S7dUzl5srEQCBTXZMmY3ekf97zI+M2DHOYyKdJGH0qua0JACHTqbkRnD/KHFQP9J1uMJ/XWVzzA==", + "license": "MIT", + "engines": { + "node": ">=8.x" + } + }, "node_modules/@ant-design/icons": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.3.0.tgz", - "integrity": "sha512-69FgBsIkeCjw72ZU3fJpqjhmLCPrzKGEllbrAZK7MUdt1BrKsyG6A8YDCBPKea27UQ0tRXi33PcjR4tp/tEXMg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-6.1.0.tgz", + "integrity": "sha512-KrWMu1fIg3w/1F2zfn+JlfNDU8dDqILfA5Tg85iqs1lf8ooyGlbkA+TkwfOKKgqpUmAiRY1PTFpuOU2DAIgSUg==", + "license": "MIT", "dependencies": { - "@ant-design/colors": "^7.0.0", + "@ant-design/colors": "^8.0.0", "@ant-design/icons-svg": "^4.4.0", - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "rc-util": "^5.31.1" + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" }, "engines": { "node": ">=8" @@ -129,12 +155,14 @@ "node_modules/@ant-design/icons-svg": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz", - "integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==" + "integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==", + "license": "MIT" }, "node_modules/@ant-design/react-slick": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.0.2.tgz", - "integrity": "sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.1.2.tgz", + "integrity": "sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.4", "classnames": "^2.2.5", @@ -810,14 +838,6 @@ "node": ">=18" } }, - "node_modules/@ctrl/tinycolor": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", - "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", - "engines": { - "node": ">=10" - } - }, "node_modules/@emnapi/core": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.0.tgz", @@ -852,12 +872,14 @@ "node_modules/@emotion/hash": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "license": "MIT" }, "node_modules/@emotion/unitless": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "license": "MIT" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", @@ -1089,9 +1111,9 @@ } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -1677,17 +1699,19 @@ } }, "node_modules/@next/env": { - "version": "14.2.31", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.31.tgz", - "integrity": "sha512-X8VxxYL6VuezrG82h0pUA1V+DuTSJp7Nv15bxq3ivrFqZLjx81rfeHMWOE9T0jm1n3DtHGv8gdn6B0T0kr0D3Q==" + "version": "14.2.35", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.35.tgz", + "integrity": "sha512-DuhvCtj4t9Gwrx80dmz2F4t/zKQ4ktN8WrMwOuVzkJfBilwAwGr6v16M5eI8yCuZ63H9TTuEU09Iu2HqkzFPVQ==", + "license": "MIT" }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.31", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.31.tgz", - "integrity": "sha512-dTHKfaFO/xMJ3kzhXYgf64VtV6MMwDs2viedDOdP+ezd0zWMOQZkxcwOfdcQeQCpouTr9b+xOqMCUXxgLizl8Q==", + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.33.tgz", + "integrity": "sha512-HqYnb6pxlsshoSTubdXKu15g3iivcbsMXg4bYpjL2iS/V6aQot+iyF4BUc2qA/J/n55YtvE4PHMKWBKGCF/+wA==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1697,12 +1721,13 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.31", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.31.tgz", - "integrity": "sha512-iSavebQgeMukUAfjfW8Fi2Iz01t95yxRl2w2wCzjD91h5In9la99QIDKcKSYPfqLjCgwz3JpIWxLG6LM/sxL4g==", + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.33.tgz", + "integrity": "sha512-8HGBeAE5rX3jzKvF593XTTFg3gxeU4f+UWnswa6JPhzaR6+zblO5+fjltJWIZc4aUalqTclvN2QtTC37LxvZAA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1712,12 +1737,13 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.31", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.31.tgz", - "integrity": "sha512-XJb3/LURg1u1SdQoopG6jDL2otxGKChH2UYnUTcby4izjM0il7ylBY5TIA7myhvHj9lG5pn9F2nR2s3i8X9awQ==", + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.33.tgz", + "integrity": "sha512-JXMBka6lNNmqbkvcTtaX8Gu5by9547bukHQvPoLe9VRBx1gHwzf5tdt4AaezW85HAB3pikcvyqBToRTDA4DeLw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -1727,12 +1753,13 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.31", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.31.tgz", - "integrity": "sha512-IInDAcchNCu3BzocdqdCv1bKCmUVO/bKJHnBFTeq3svfaWpOPewaLJ2Lu3GL4yV76c/86ZvpBbG/JJ1lVIs5MA==", + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.33.tgz", + "integrity": "sha512-Bm+QulsAItD/x6Ih8wGIMfRJy4G73tu1HJsrccPW6AfqdZd0Sfm5Imhgkgq2+kly065rYMnCOxTBvmvFY1BKfg==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -1742,12 +1769,13 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.31", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.31.tgz", - "integrity": "sha512-YTChJL5/9e4NXPKW+OJzsQa42RiWUNbE+k+ReHvA+lwXk+bvzTsVQboNcezWOuCD+p/J+ntxKOB/81o0MenBhw==", + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.33.tgz", + "integrity": "sha512-FnFn+ZBgsVMbGDsTqo8zsnRzydvsGV8vfiWwUo1LD8FTmPTdV+otGSWKc4LJec0oSexFnCYVO4hX8P8qQKaSlg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -1757,12 +1785,13 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.31", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.31.tgz", - "integrity": "sha512-A0JmD1y4q/9ufOGEAhoa60Sof++X10PEoiWOH0gZ2isufWZeV03NnyRlRmJpRQWGIbRkJUmBo9I3Qz5C10vx4w==", + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.33.tgz", + "integrity": "sha512-345tsIWMzoXaQndUTDv1qypDRiebFxGYx9pYkhwY4hBRaOLt8UGfiWKr9FSSHs25dFIf8ZqIFaPdy5MljdoawA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -1772,12 +1801,13 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.31", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.31.tgz", - "integrity": "sha512-nowJ5GbMeDOMzbTm29YqrdrD6lTM8qn2wnZfGpYMY7SZODYYpaJHH1FJXE1l1zWICHR+WfIMytlTDBHu10jb8A==", + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.33.tgz", + "integrity": "sha512-nscpt0G6UCTkrT2ppnJnFsYbPDQwmum4GNXYTeoTIdsmMydSKFz9Iny2jpaRupTb+Wl298+Rh82WKzt9LCcqSQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -1787,12 +1817,13 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.31", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.31.tgz", - "integrity": "sha512-pk9Bu4K0015anTS1OS9d/SpS0UtRObC+xe93fwnm7Gvqbv/W1ZbzhK4nvc96RURIQOux3P/bBH316xz8wjGSsA==", + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.33.tgz", + "integrity": "sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -1802,12 +1833,13 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.31", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.31.tgz", - "integrity": "sha512-LwFZd4JFnMHGceItR9+jtlMm8lGLU/IPkgjBBgYmdYSfalbHCiDpjMYtgDQ2wtwiAOSJOCyFI4m8PikrsDyA6Q==", + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.33.tgz", + "integrity": "sha512-nOjfZMy8B94MdisuzZo9/57xuFVLHJaDj5e/xrduJp9CV2/HrfxTRH2fbyLe+K9QT41WBLUd4iXX3R7jBp0EUg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -1891,15 +1923,73 @@ "node": ">=18" } }, + "node_modules/@rc-component/async-validator": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@rc-component/async-validator/-/async-validator-5.0.4.tgz", + "integrity": "sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.4" + }, + "engines": { + "node": ">=14.x" + } + }, + "node_modules/@rc-component/cascader": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rc-component/cascader/-/cascader-1.7.0.tgz", + "integrity": "sha512-Cg8AlH+9N7vht7n+bKMkJCP5ERn9HJXMYLuaLC2wVq+Fapzr+3Ei7lNr7F4OjLkXdtMhkgiX4AZBEqja8+goxw==", + "license": "MIT", + "dependencies": { + "@rc-component/select": "~1.2.0", + "@rc-component/tree": "~1.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/checkbox": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/checkbox/-/checkbox-1.0.1.tgz", + "integrity": "sha512-08yTH8m+bSm8TOqbybbJ9KiAuIATti6bDs2mVeSfu4QfEnyeF6X0enHVvD1NEAyuBWEAo56QtLe++MYs2D9XiQ==", + "license": "MIT", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/collapse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rc-component/collapse/-/collapse-1.1.2.tgz", + "integrity": "sha512-ilBYk1dLLJHu5Q74dF28vwtKUYQ42ZXIIDmqTuVy4rD8JQVvkXOs+KixVNbweyuIEtJYJ7+t+9GVD9dPc6N02w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/motion": "^1.1.4", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, "node_modules/@rc-component/color-picker": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-1.5.1.tgz", - "integrity": "sha512-onyAFhWKXuG4P162xE+7IgaJkPkwM94XlOYnQuu69XdXWMfxpeFi6tpJBsieIMV7EnyLV5J3lDzdLiFeK0iEBA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-3.0.3.tgz", + "integrity": "sha512-V7gFF9O7o5XwIWafdbOtqI4BUUkEUkgdBwp6favy3xajMX/2dDqytFaiXlcwrpq6aRyPLp5dKLAG5RFKLXMeGA==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.6", - "@ctrl/tinycolor": "^3.6.1", - "classnames": "^2.2.6", - "rc-util": "^5.38.1" + "@ant-design/fast-color": "^3.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" }, "peerDependencies": { "react": ">=16.9.0", @@ -1907,37 +1997,74 @@ } }, "node_modules/@rc-component/context": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@rc-component/context/-/context-1.4.0.tgz", - "integrity": "sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/context/-/context-2.0.1.tgz", + "integrity": "sha512-HyZbYm47s/YqtP6pKXNMjPEMaukyg7P0qVfgMLzr7YiFNMHbK2fKTAGzms9ykfGHSfyf75nBbgWw+hHkp+VImw==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.10.1", - "rc-util": "^5.27.0" + "@rc-component/util": "^1.3.0" }, "peerDependencies": { "react": ">=16.9.0", "react-dom": ">=16.9.0" } }, - "node_modules/@rc-component/mini-decimal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz", - "integrity": "sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==", + "node_modules/@rc-component/dialog": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@rc-component/dialog/-/dialog-1.5.1.tgz", + "integrity": "sha512-by4Sf/a3azcb89WayWuwG19/Y312xtu8N81HoVQQtnsBDylfs+dog98fTAvLinnpeoWG52m/M7QLRW6fXR3l1g==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.18.0" + "@rc-component/motion": "^1.1.3", + "@rc-component/portal": "^2.0.0", + "@rc-component/util": "^1.0.1", + "clsx": "^2.1.1" }, - "engines": { - "node": ">=8.x" + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" } }, - "node_modules/@rc-component/mutate-observer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz", - "integrity": "sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==", + "node_modules/@rc-component/drawer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rc-component/drawer/-/drawer-1.2.0.tgz", + "integrity": "sha512-RZ8IoNUv/soNVMYIWdjelKXX/3LWhVrKUQAeoc966Y55cIGc+PQKni025xshsvTY/+ntq10wqlBw1WCi77MvYQ==", + "license": "MIT", + "dependencies": { + "@rc-component/motion": "^1.1.4", + "@rc-component/portal": "^2.0.0", + "@rc-component/util": "^1.2.1", + "classnames": "^2.2.6" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/dropdown": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rc-component/dropdown/-/dropdown-1.0.2.tgz", + "integrity": "sha512-6PY2ecUSYhDPhkNHHb4wfeAya04WhpmUSKzdR60G+kMNVUCX2vjT/AgTS0Lz0I/K6xrPMJ3enQbwVpeN3sHCgg==", + "license": "MIT", + "dependencies": { + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.11.0", + "react-dom": ">=16.11.0" + } + }, + "node_modules/@rc-component/form": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@rc-component/form/-/form-1.4.0.tgz", + "integrity": "sha512-C8MN/2wIaW9hSrCCtJmcgCkWTQNIspN7ARXLFA4F8PGr8Qxk39U5pS3kRK51/bUJNhb/fEtdFnaViLlISGKI2A==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.18.0", - "classnames": "^2.3.2", - "rc-util": "^5.24.4" + "@rc-component/async-validator": "^5.0.3", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" }, "engines": { "node": ">=8.x" @@ -1947,33 +2074,119 @@ "react-dom": ">=16.9.0" } }, - "node_modules/@rc-component/portal": { + "node_modules/@rc-component/image": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@rc-component/image/-/image-1.5.3.tgz", + "integrity": "sha512-/NR7QW9uCN8Ugar+xsHZOPvzPySfEhcW2/vLcr7VPRM+THZMrllMRv7LAUgW7ikR+Z67Ab67cgPp5K5YftpJsQ==", + "license": "MIT", + "dependencies": { + "@rc-component/motion": "^1.0.0", + "@rc-component/portal": "^2.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/input": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.2.tgz", - "integrity": "sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==", + "resolved": "https://registry.npmjs.org/@rc-component/input/-/input-1.1.2.tgz", + "integrity": "sha512-Q61IMR47piUBudgixJ30CciKIy9b1H95qe7GgEKOmSJVJXvFRWJllJfQry9tif+MX2cWFXWJf/RXz4kaCeq/Fg==", + "license": "MIT", + "dependencies": { + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@rc-component/input-number": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@rc-component/input-number/-/input-number-1.6.2.tgz", + "integrity": "sha512-Gjcq7meZlCOiWN1t1xCC+7/s85humHVokTBI7PJgTfoyw5OWF74y3e6P8PHX104g9+b54jsodFIzyaj6p8LI9w==", + "license": "MIT", + "dependencies": { + "@rc-component/mini-decimal": "^1.0.1", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/mentions": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@rc-component/mentions/-/mentions-1.5.5.tgz", + "integrity": "sha512-m39JW6ZyR0+foE1ojgOx2+GH8kMaJS279A2cI0vV0gIEZMp+2hOpPhJgKR7vMOGdhvkiXwgfM49EaPw30NonNw==", + "license": "MIT", + "dependencies": { + "@rc-component/input": "~1.1.0", + "@rc-component/menu": "~1.1.0", + "@rc-component/textarea": "~1.1.0", + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/menu": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rc-component/menu/-/menu-1.1.5.tgz", + "integrity": "sha512-+TlOCjrvm0JFk3OtSbOLX4klXK1bBdwTSJeEg1lM8P0BfdJOYxLFmKyAoUILioP4dO2A9u+lZENZOleAmA4g+A==", + "license": "MIT", + "dependencies": { + "@rc-component/motion": "^1.1.4", + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1", + "rc-overflow": "^1.3.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/mini-decimal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz", + "integrity": "sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.18.0", - "classnames": "^2.3.2", - "rc-util": "^5.24.4" + "@babel/runtime": "^7.18.0" }, "engines": { "node": ">=8.x" + } + }, + "node_modules/@rc-component/motion": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@rc-component/motion/-/motion-1.1.6.tgz", + "integrity": "sha512-aEQobs/YA0kqRvHIPjQvOytdtdRVyhf/uXAal4chBjxDu6odHckExJzjn2D+Ju1aKK6hx3pAs6BXdV9+86xkgQ==", + "license": "MIT", + "dependencies": { + "@rc-component/util": "^1.2.0", + "clsx": "^2.1.1" }, "peerDependencies": { "react": ">=16.9.0", "react-dom": ">=16.9.0" } }, - "node_modules/@rc-component/tour": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/@rc-component/tour/-/tour-1.12.3.tgz", - "integrity": "sha512-U4mf1FiUxGCwrX4ed8op77Y8VKur+8Y/61ylxtqGbcSoh1EBC7bWd/DkLu0ClTUrKZInqEi1FL7YgFtnT90vHA==", + "node_modules/@rc-component/mutate-observer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/mutate-observer/-/mutate-observer-2.0.1.tgz", + "integrity": "sha512-AyarjoLU5YlxuValRi+w8JRH2Z84TBbFO2RoGWz9d8bSu0FqT8DtugH3xC3BV7mUwlmROFauyWuXFuq4IFbH+w==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.18.0", - "@rc-component/portal": "^1.0.0-9", - "@rc-component/trigger": "^1.3.6", - "classnames": "^2.3.2", - "rc-util": "^5.24.4" + "@rc-component/util": "^1.2.0" }, "engines": { "node": ">=8.x" @@ -1983,17 +2196,15 @@ "react-dom": ">=16.9.0" } }, - "node_modules/@rc-component/trigger": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-1.18.3.tgz", - "integrity": "sha512-Ksr25pXreYe1gX6ayZ1jLrOrl9OAUHUqnuhEx6MeHnNa1zVM5Y2Aj3Q35UrER0ns8D2cJYtmJtVli+i+4eKrvA==", + "node_modules/@rc-component/notification": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rc-component/notification/-/notification-1.2.0.tgz", + "integrity": "sha512-OX3J+zVU7rvoJCikjrfW7qOUp7zlDeFBK2eA3SFbGSkDqo63Sl4Ss8A04kFP+fxHSxMDIS9jYVEZtU1FNCFuBA==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.2", - "@rc-component/portal": "^1.1.0", - "classnames": "^2.3.2", - "rc-motion": "^2.0.0", - "rc-resize-observer": "^1.3.1", - "rc-util": "^5.38.0" + "@rc-component/motion": "^1.1.4", + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" }, "engines": { "node": ">=8.x" @@ -2003,71 +2214,458 @@ "react-dom": ">=16.9.0" } }, - "node_modules/@react-spring/animated": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.6.1.tgz", - "integrity": "sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==", + "node_modules/@rc-component/pagination": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rc-component/pagination/-/pagination-1.2.0.tgz", + "integrity": "sha512-YcpUFE8dMLfSo6OARJlK6DbHHvrxz7pMGPGmC/caZSJJz6HRKHC1RPP001PRHCvG9Z/veD039uOQmazVuLJzlw==", + "license": "MIT", "dependencies": { - "@react-spring/shared": "~9.6.1", - "@react-spring/types": "~9.6.1" + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/@react-spring/core": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.6.1.tgz", - "integrity": "sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==", + "node_modules/@rc-component/picker": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@rc-component/picker/-/picker-1.6.0.tgz", + "integrity": "sha512-5gmNlnsK18Xu8W9xqluz8JzfRBHwPKfdUnkTwMmhGg7P8vjVUveYRHGQbyPZAE2Q11maE42x457l36FlXi4Hyw==", + "license": "MIT", "dependencies": { - "@react-spring/animated": "~9.6.1", - "@react-spring/rafz": "~9.6.1", - "@react-spring/shared": "~9.6.1", - "@react-spring/types": "~9.6.1" + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/trigger": "^3.6.15", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1", + "rc-overflow": "^1.3.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/react-spring/donate" + "engines": { + "node": ">=8.x" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "date-fns": ">= 2.x", + "dayjs": ">= 1.x", + "luxon": ">= 3.x", + "moment": ">= 2.x", + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + } } }, - "node_modules/@react-spring/rafz": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.6.1.tgz", - "integrity": "sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==" - }, - "node_modules/@react-spring/shared": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.6.1.tgz", - "integrity": "sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==", + "node_modules/@rc-component/portal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/portal/-/portal-2.0.1.tgz", + "integrity": "sha512-46KYuA7Udb1LAaLIdDrfmDz3wzyeEZxIURJCn+heoQVbhtW5PQkhBSQtRus+DUdsknmTFQulxSnqrbX3CI4yXw==", + "license": "MIT", "dependencies": { - "@react-spring/rafz": "~9.6.1", - "@react-spring/types": "~9.6.1" + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=12.x" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": ">=18.0.0", + "react-dom": ">=18.0.0" } }, - "node_modules/@react-spring/three": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@react-spring/three/-/three-9.6.1.tgz", - "integrity": "sha512-Tyw2YhZPKJAX3t2FcqvpLRb71CyTe1GvT3V+i+xJzfALgpk10uPGdGaQQ5Xrzmok1340DAeg2pR/MCfaW7b8AA==", + "node_modules/@rc-component/progress": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rc-component/progress/-/progress-1.0.2.tgz", + "integrity": "sha512-WZUnH9eGxH1+xodZKqdrHke59uyGZSWgj5HBM5Kwk5BrTMuAORO7VJ2IP5Qbm9aH3n9x3IcesqHHR0NWPBC7fQ==", + "license": "MIT", "dependencies": { - "@react-spring/animated": "~9.6.1", - "@react-spring/core": "~9.6.1", - "@react-spring/shared": "~9.6.1", - "@react-spring/types": "~9.6.1" + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" }, "peerDependencies": { - "@react-three/fiber": ">=6.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "three": ">=0.126" + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/@react-spring/types": { - "version": "9.6.1", + "node_modules/@rc-component/qrcode": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@rc-component/qrcode/-/qrcode-1.1.1.tgz", + "integrity": "sha512-LfLGNymzKdUPjXUbRP+xOhIWY4jQ+YMj5MmWAcgcAq1Ij8XP7tRmAXqyuv96XvLUBE/5cA8hLFl9eO1JQMujrA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.7" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/rate": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/rate/-/rate-1.0.1.tgz", + "integrity": "sha512-bkXxeBqDpl5IOC7yL7GcSYjQx9G8H+6kLYQnNZWeBYq2OYIv1MONd6mqKTjnnJYpV0cQIU2z3atdW0j1kttpTw==", + "license": "MIT", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/resize-observer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/resize-observer/-/resize-observer-1.0.1.tgz", + "integrity": "sha512-r+w+Mz1EiueGk1IgjB3ptNXLYSLZ5vnEfKHH+gfgj7JMupftyzvUUl3fRcMZe5uMM04x0n8+G2o/c6nlO2+Wag==", + "license": "MIT", + "dependencies": { + "@rc-component/util": "^1.2.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/segmented": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rc-component/segmented/-/segmented-1.2.3.tgz", + "integrity": "sha512-L7G4S6zUpqHclOXK0wKKN2/VyqHa9tfDNxkoFjWOTPtQ0ROFaBwZhbf1+9sdZfIFkxJkpcShAmDOMEIBaFFqkw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.1", + "@rc-component/motion": "^1.1.4", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@rc-component/select": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@rc-component/select/-/select-1.2.7.tgz", + "integrity": "sha512-qfhcB7oVUwuLtf67q4m2l2nOt7dp4axn9+fFmSHHcHy7FOFVFPIwWVMs6XFKAtxEEhZaHadQxLJFQLMRIp+Afw==", + "license": "MIT", + "dependencies": { + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1", + "rc-overflow": "^1.5.0", + "rc-virtual-list": "^3.5.2" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@rc-component/slider": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rc-component/slider/-/slider-1.0.1.tgz", + "integrity": "sha512-uDhEPU1z3WDfCJhaL9jfd2ha/Eqpdfxsn0Zb0Xcq1NGQAman0TWaR37OWp2vVXEOdV2y0njSILTMpTfPV1454g==", + "license": "MIT", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/steps": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rc-component/steps/-/steps-1.2.2.tgz", + "integrity": "sha512-/yVIZ00gDYYPHSY0JP+M+s3ZvuXLu2f9rEjQqiUDs7EcYsUYrpJ/1bLj9aI9R7MBR3fu/NGh6RM9u2qGfqp+Nw==", + "license": "MIT", + "dependencies": { + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/switch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rc-component/switch/-/switch-1.0.3.tgz", + "integrity": "sha512-Jgi+EbOBquje/XNdofr7xbJQZPYJP+BlPfR0h+WN4zFkdtB2EWqEfvkXJWeipflwjWip0/17rNbxEAqs8hVHfw==", + "license": "MIT", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/table": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@rc-component/table/-/table-1.8.2.tgz", + "integrity": "sha512-GUuuXIGx2M3KVEcqhze8cDs0cwkSby9VRnOrm6zbnryMFUr+WUL1eu7NA1j4Gi43Rd3/CIL8OmXhRdUz1L/Xug==", + "license": "MIT", + "dependencies": { + "@rc-component/context": "^2.0.1", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/util": "^1.1.0", + "clsx": "^2.1.1", + "rc-virtual-list": "^3.14.2" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/tabs": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@rc-component/tabs/-/tabs-1.6.0.tgz", + "integrity": "sha512-2OY02yhS7E0y0Yr5LBI3o5KdM7h4yJ5lBR6V4PEC1dx/sUZggEw7vAHGCArqCcpsZ6pzjOGJbGiVhz7dSMiehA==", + "license": "MIT", + "dependencies": { + "@rc-component/dropdown": "~1.0.0", + "@rc-component/menu": "~1.1.0", + "@rc-component/motion": "^1.1.3", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/textarea": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rc-component/textarea/-/textarea-1.1.2.tgz", + "integrity": "sha512-9rMUEODWZDMovfScIEHXWlVZuPljZ2pd1LKNjslJVitn4SldEzq5vO1CL3yy3Dnib6zZal2r2DPtjy84VVpF6A==", + "license": "MIT", + "dependencies": { + "@rc-component/input": "~1.1.0", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/tooltip": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@rc-component/tooltip/-/tooltip-1.3.4.tgz", + "integrity": "sha512-wbxvH/UBVgGnpivBPDiGirNr2B9BhUBF4QJTWHK8hOMh6qWg/yf0g4UspH9+GlnSwSLoYOhcChmdLLFxSULBDQ==", + "license": "MIT", + "dependencies": { + "@rc-component/trigger": "^3.6.15", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/tour": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@rc-component/tour/-/tour-2.2.1.tgz", + "integrity": "sha512-BUCrVikGJsXli38qlJ+h2WyDD6dYxzDA9dV3o0ij6gYhAq6ooT08SUMWOikva9v4KZ2BEuluGl5bPcsjrSoBgQ==", + "license": "MIT", + "dependencies": { + "@rc-component/portal": "^2.0.0", + "@rc-component/trigger": "^3.0.0", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/tree": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rc-component/tree/-/tree-1.0.2.tgz", + "integrity": "sha512-h4P2P3N004VmUonkBzhisjrwME2njSxmUzZPhkFHGllAzbcRUSUGSx0dvRr0FCxYYittpMpGUHE6OMvbVX2c8Q==", + "license": "MIT", + "dependencies": { + "@rc-component/motion": "^1.0.0", + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1", + "rc-virtual-list": "^3.5.1" + }, + "engines": { + "node": ">=10.x" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@rc-component/tree-select": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@rc-component/tree-select/-/tree-select-1.3.1.tgz", + "integrity": "sha512-aWbsJ0c7Saqu4Fpn0RPx0EeprttyBbAeH1HQ8cG8vPHOrkG+kg4Wg3TWB+e5uVo36dneH8NJHfOICLzdblQEhA==", + "license": "MIT", + "dependencies": { + "@rc-component/select": "~1.2.0", + "@rc-component/tree": "~1.0.1", + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@rc-component/trigger": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-3.7.1.tgz", + "integrity": "sha512-+YNP8FywxKJpdqzlAp6TN8UbSK6YsQtIs3kI13mHfm87qi3qUd5Q9AGW8Unfv76kXFUSu7U7D0FygRsGH+6MiA==", + "license": "MIT", + "dependencies": { + "@rc-component/motion": "^1.1.4", + "@rc-component/portal": "^2.0.0", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/util": "^1.2.1", + "clsx": "^2.1.1" + }, + "engines": { + "node": ">=8.x" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@rc-component/upload": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rc-component/upload/-/upload-1.1.0.tgz", + "integrity": "sha512-LIBV90mAnUE6VK5N4QvForoxZc4XqEYZimcp7fk+lkE4XwHHyJWxpIXQQwMU8hJM+YwBbsoZkGksL1sISWHQxw==", + "license": "MIT", + "dependencies": { + "@rc-component/util": "^1.3.0", + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/@rc-component/util": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@rc-component/util/-/util-1.6.0.tgz", + "integrity": "sha512-YbjuIVAm8InCnXVoA4n6G+uh31yESTxQ6fSY2frZ2/oMSvktoB+bumFUfNN7RKh7YeOkZgOvN2suGtEDhJSX0A==", + "license": "MIT", + "dependencies": { + "is-mobile": "^5.0.0", + "react-is": "^18.2.0" + }, + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" + } + }, + "node_modules/@react-spring/animated": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.6.1.tgz", + "integrity": "sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==", + "dependencies": { + "@react-spring/shared": "~9.6.1", + "@react-spring/types": "~9.6.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/core": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.6.1.tgz", + "integrity": "sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==", + "dependencies": { + "@react-spring/animated": "~9.6.1", + "@react-spring/rafz": "~9.6.1", + "@react-spring/shared": "~9.6.1", + "@react-spring/types": "~9.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-spring/donate" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/rafz": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.6.1.tgz", + "integrity": "sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==" + }, + "node_modules/@react-spring/shared": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.6.1.tgz", + "integrity": "sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==", + "dependencies": { + "@react-spring/rafz": "~9.6.1", + "@react-spring/types": "~9.6.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/three": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@react-spring/three/-/three-9.6.1.tgz", + "integrity": "sha512-Tyw2YhZPKJAX3t2FcqvpLRb71CyTe1GvT3V+i+xJzfALgpk10uPGdGaQQ5Xrzmok1340DAeg2pR/MCfaW7b8AA==", + "dependencies": { + "@react-spring/animated": "~9.6.1", + "@react-spring/core": "~9.6.1", + "@react-spring/shared": "~9.6.1", + "@react-spring/types": "~9.6.1" + }, + "peerDependencies": { + "@react-three/fiber": ">=6.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "three": ">=0.126" + } + }, + "node_modules/@react-spring/types": { + "version": "9.6.1", "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.6.1.tgz", "integrity": "sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==" }, @@ -3346,65 +3944,66 @@ } }, "node_modules/antd": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/antd/-/antd-5.14.0.tgz", - "integrity": "sha512-LdRJnYd8dTykR2xr483zNE0mBKmWHMLqmjkfcX4otQRD0kaZjOwSmN74vMC70jnMM8oqhWILFjWy3dEy/E1W6w==", - "dependencies": { - "@ant-design/colors": "^7.0.2", - "@ant-design/cssinjs": "^1.18.4", - "@ant-design/icons": "^5.3.0", - "@ant-design/react-slick": "~1.0.2", - "@ctrl/tinycolor": "^3.6.1", - "@rc-component/color-picker": "~1.5.1", - "@rc-component/mutate-observer": "^1.1.0", - "@rc-component/tour": "~1.12.3", - "@rc-component/trigger": "^1.18.3", - "classnames": "^2.5.1", - "copy-to-clipboard": "^3.3.3", - "dayjs": "^1.11.10", - "qrcode.react": "^3.1.0", - "rc-cascader": "~3.21.2", - "rc-checkbox": "~3.1.0", - "rc-collapse": "~3.7.2", - "rc-dialog": "~9.3.4", - "rc-drawer": "~7.0.0", - "rc-dropdown": "~4.1.0", - "rc-field-form": "~1.41.0", - "rc-image": "~7.5.1", - "rc-input": "~1.4.3", - "rc-input-number": "~9.0.0", - "rc-mentions": "~2.10.1", - "rc-menu": "~9.12.4", - "rc-motion": "^2.9.0", - "rc-notification": "~5.3.0", - "rc-pagination": "~4.0.4", - "rc-picker": "~4.0.0-alpha.43", - "rc-progress": "~3.5.1", - "rc-rate": "~2.12.0", - "rc-resize-observer": "^1.4.0", - "rc-segmented": "~2.3.0", - "rc-select": "~14.11.0", - "rc-slider": "~10.5.0", - "rc-steps": "~6.0.1", - "rc-switch": "~4.1.0", - "rc-table": "~7.39.0", - "rc-tabs": "~14.0.0", - "rc-textarea": "~1.6.3", - "rc-tooltip": "~6.1.3", - "rc-tree": "~5.8.5", - "rc-tree-select": "~5.17.0", - "rc-upload": "~4.5.2", - "rc-util": "^5.38.1", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/antd/-/antd-6.0.0.tgz", + "integrity": "sha512-OoalcsmgsLFI8UWLkfDJftABP2KmNDiU9REaTApb0s7cd3vZfIok7OnHKuNGQ3tCNY1NKPDvoRtWKXlpaq7zWQ==", + "license": "MIT", + "dependencies": { + "@ant-design/colors": "^8.0.0", + "@ant-design/cssinjs": "^2.0.0", + "@ant-design/cssinjs-utils": "^2.0.0", + "@ant-design/fast-color": "^3.0.0", + "@ant-design/icons": "^6.1.0", + "@ant-design/react-slick": "~1.1.2", + "@rc-component/cascader": "~1.7.0", + "@rc-component/checkbox": "~1.0.0", + "@rc-component/collapse": "~1.1.1", + "@rc-component/color-picker": "~3.0.2", + "@rc-component/dialog": "~1.5.0", + "@rc-component/drawer": "~1.2.0", + "@rc-component/dropdown": "~1.0.0", + "@rc-component/form": "~1.4.0", + "@rc-component/image": "~1.5.1", + "@rc-component/input": "~1.1.0", + "@rc-component/input-number": "~1.6.2", + "@rc-component/mentions": "~1.5.5", + "@rc-component/menu": "~1.1.4", + "@rc-component/motion": "~1.1.4", + "@rc-component/mutate-observer": "^2.0.0", + "@rc-component/notification": "~1.2.0", + "@rc-component/pagination": "~1.2.0", + "@rc-component/picker": "~1.6.0", + "@rc-component/progress": "~1.0.1", + "@rc-component/qrcode": "~1.1.0", + "@rc-component/rate": "~1.0.0", + "@rc-component/resize-observer": "^1.0.0", + "@rc-component/segmented": "~1.2.2", + "@rc-component/select": "~1.2.1", + "@rc-component/slider": "~1.0.0", + "@rc-component/steps": "~1.2.1", + "@rc-component/switch": "~1.0.2", + "@rc-component/table": "~1.8.1", + "@rc-component/tabs": "~1.6.0", + "@rc-component/textarea": "~1.1.2", + "@rc-component/tooltip": "~1.3.3", + "@rc-component/tour": "~2.2.0", + "@rc-component/tree": "~1.0.1", + "@rc-component/tree-select": "~1.3.0", + "@rc-component/trigger": "^3.6.15", + "@rc-component/upload": "~1.1.0", + "@rc-component/util": "^1.4.0", + "clsx": "^2.1.1", + "dayjs": "^1.11.11", "scroll-into-view-if-needed": "^3.1.0", - "throttle-debounce": "^5.0.0" + "throttle-debounce": "^5.0.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/ant-design" }, "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" + "react": ">=18.0.0", + "react-dom": ">=18.0.0" } }, "node_modules/anymatch": { @@ -3480,12 +4079,7 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-tree-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", - "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" - }, - "node_modules/array-union": { + "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", @@ -3600,11 +4194,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/async-validator": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", - "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -3663,9 +4252,10 @@ } }, "node_modules/axios": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", - "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", @@ -4084,7 +4674,8 @@ "node_modules/classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" }, "node_modules/client-only": { "version": "0.0.1", @@ -4175,6 +4766,15 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -4240,14 +4840,6 @@ "dev": true, "license": "MIT" }, - "node_modules/copy-to-clipboard": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", - "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", - "dependencies": { - "toggle-selection": "^1.0.6" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -4382,9 +4974,10 @@ } }, "node_modules/dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "license": "MIT" }, "node_modules/debounce": { "version": "1.2.1", @@ -5535,9 +6128,9 @@ } }, "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, "license": "ISC", "dependencies": { @@ -6134,6 +6727,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-mobile": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-5.0.0.tgz", + "integrity": "sha512-Tz/yndySvLAEXh+Uk8liFCxOwVH6YutuR74utvOcu7I9Di+DwM0mtdPVZNaVvvBUM2OXxne/NhOs1zAO7riusQ==", + "license": "MIT" + }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -7263,10 +7862,11 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -7356,6 +7956,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", "integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==", + "license": "MIT", "dependencies": { "string-convert": "^0.2.0" } @@ -7965,11 +8566,12 @@ "dev": true }, "node_modules/next": { - "version": "14.2.31", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.31.tgz", - "integrity": "sha512-Wyw1m4t8PhqG+or5a1U/Deb888YApC4rAez9bGhHkTsfwAy4SWKVro0GhEx4sox1856IbLhvhce2hAA6o8vkog==", + "version": "14.2.35", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.35.tgz", + "integrity": "sha512-KhYd2Hjt/O1/1aZVX3dCwGXM1QmOV4eNM2UTacK5gipDdPN/oHHK/4oVGy7X8GMfPMsUTUEmGlsy0EY1YGAkig==", + "license": "MIT", "dependencies": { - "@next/env": "14.2.31", + "@next/env": "14.2.35", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -7984,15 +8586,15 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.31", - "@next/swc-darwin-x64": "14.2.31", - "@next/swc-linux-arm64-gnu": "14.2.31", - "@next/swc-linux-arm64-musl": "14.2.31", - "@next/swc-linux-x64-gnu": "14.2.31", - "@next/swc-linux-x64-musl": "14.2.31", - "@next/swc-win32-arm64-msvc": "14.2.31", - "@next/swc-win32-ia32-msvc": "14.2.31", - "@next/swc-win32-x64-msvc": "14.2.31" + "@next/swc-darwin-arm64": "14.2.33", + "@next/swc-darwin-x64": "14.2.33", + "@next/swc-linux-arm64-gnu": "14.2.33", + "@next/swc-linux-arm64-musl": "14.2.33", + "@next/swc-linux-x64-gnu": "14.2.33", + "@next/swc-linux-x64-musl": "14.2.33", + "@next/swc-win32-arm64-msvc": "14.2.33", + "@next/swc-win32-ia32-msvc": "14.2.33", + "@next/swc-win32-x64-msvc": "14.2.33" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -8680,14 +9282,6 @@ ], "license": "MIT" }, - "node_modules/qrcode.react": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-3.1.0.tgz", - "integrity": "sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -8708,234 +9302,11 @@ } ] }, - "node_modules/rc-cascader": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.21.2.tgz", - "integrity": "sha512-J7GozpgsLaOtzfIHFJFuh4oFY0ePb1w10twqK6is3pAkqHkca/PsokbDr822KIRZ8/CK8CqevxohuPDVZ1RO/A==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "array-tree-filter": "^2.1.0", - "classnames": "^2.3.1", - "rc-select": "~14.11.0", - "rc-tree": "~5.8.1", - "rc-util": "^5.37.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-checkbox": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-3.1.0.tgz", - "integrity": "sha512-PAwpJFnBa3Ei+5pyqMMXdcKYKNBMS+TvSDiLdDnARnMJHC8ESxwPfm4Ao1gJiKtWLdmGfigascnCpwrHFgoOBQ==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.3.2", - "rc-util": "^5.25.2" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-collapse": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.7.2.tgz", - "integrity": "sha512-ZRw6ipDyOnfLFySxAiCMdbHtb5ePAsB9mT17PA6y1mRD/W6KHRaZeb5qK/X9xDV1CqgyxMpzw0VdS74PCcUk4A==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.3.4", - "rc-util": "^5.27.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-dialog": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.3.4.tgz", - "integrity": "sha512-975X3018GhR+EjZFbxA2Z57SX5rnu0G0/OxFgMMvZK4/hQWEm3MHaNvP4wXpxYDoJsp+xUvVW+GB9CMMCm81jA==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "@rc-component/portal": "^1.0.0-8", - "classnames": "^2.2.6", - "rc-motion": "^2.3.0", - "rc-util": "^5.21.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-drawer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.0.0.tgz", - "integrity": "sha512-ePcS4KtQnn57bCbVXazHN2iC8nTPCXlWEIA/Pft87Pd9U7ZeDkdRzG47jWG2/TAFXFlFltRAMcslqmUM8NPCGA==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "@rc-component/portal": "^1.1.1", - "classnames": "^2.2.6", - "rc-motion": "^2.6.1", - "rc-util": "^5.36.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-dropdown": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.1.0.tgz", - "integrity": "sha512-VZjMunpBdlVzYpEdJSaV7WM7O0jf8uyDjirxXLZRNZ+tAC+NzD3PXPEtliFwGzVwBBdCmGuSqiS9DWcOLxQ9tw==", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@rc-component/trigger": "^1.7.0", - "classnames": "^2.2.6", - "rc-util": "^5.17.0" - }, - "peerDependencies": { - "react": ">=16.11.0", - "react-dom": ">=16.11.0" - } - }, - "node_modules/rc-field-form": { - "version": "1.41.0", - "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.41.0.tgz", - "integrity": "sha512-k9AS0wmxfJfusWDP/YXWTpteDNaQ4isJx9UKxx4/e8Dub4spFeZ54/EuN2sYrMRID/+hUznPgVZeg+Gf7XSYCw==", - "dependencies": { - "@babel/runtime": "^7.18.0", - "async-validator": "^4.1.0", - "rc-util": "^5.32.2" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-image": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.5.1.tgz", - "integrity": "sha512-Z9loECh92SQp0nSipc0MBuf5+yVC05H/pzC+Nf8xw1BKDFUJzUeehYBjaWlxly8VGBZJcTHYri61Fz9ng1G3Ag==", - "dependencies": { - "@babel/runtime": "^7.11.2", - "@rc-component/portal": "^1.0.2", - "classnames": "^2.2.6", - "rc-dialog": "~9.3.4", - "rc-motion": "^2.6.2", - "rc-util": "^5.34.1" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-input": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.4.3.tgz", - "integrity": "sha512-aHyQUAIRmTlOnvk5EcNqEpJ+XMtfMpYRAJayIlJfsvvH9cAKUWboh4egm23vgMA7E+c/qm4BZcnrDcA960GC1w==", - "dependencies": { - "@babel/runtime": "^7.11.1", - "classnames": "^2.2.1", - "rc-util": "^5.18.1" - }, - "peerDependencies": { - "react": ">=16.0.0", - "react-dom": ">=16.0.0" - } - }, - "node_modules/rc-input-number": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-9.0.0.tgz", - "integrity": "sha512-RfcDBDdWFFetouWFXBA+WPEC8LzBXyngr9b+yTLVIygfFu7HiLRGn/s/v9wwno94X7KFvnb28FNynMGj9XJlDQ==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "@rc-component/mini-decimal": "^1.0.1", - "classnames": "^2.2.5", - "rc-input": "~1.4.0", - "rc-util": "^5.28.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-mentions": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.10.1.tgz", - "integrity": "sha512-72qsEcr/7su+a07ndJ1j8rI9n0Ka/ngWOLYnWMMv0p2mi/5zPwPrEDTt6Uqpe8FWjWhueDJx/vzunL6IdKDYMg==", - "dependencies": { - "@babel/runtime": "^7.22.5", - "@rc-component/trigger": "^1.5.0", - "classnames": "^2.2.6", - "rc-input": "~1.4.0", - "rc-menu": "~9.12.0", - "rc-textarea": "~1.6.1", - "rc-util": "^5.34.1" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-menu": { - "version": "9.12.4", - "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.12.4.tgz", - "integrity": "sha512-t2NcvPLV1mFJzw4F21ojOoRVofK2rWhpKPx69q2raUsiHPDP6DDevsBILEYdsIegqBeSXoWs2bf6CueBKg3BFg==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "@rc-component/trigger": "^1.17.0", - "classnames": "2.x", - "rc-motion": "^2.4.3", - "rc-overflow": "^1.3.1", - "rc-util": "^5.27.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-motion": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.9.0.tgz", - "integrity": "sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ==", - "dependencies": { - "@babel/runtime": "^7.11.1", - "classnames": "^2.2.1", - "rc-util": "^5.21.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-notification": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-5.3.0.tgz", - "integrity": "sha512-WCf0uCOkZ3HGfF0p1H4Sgt7aWfipxORWTPp7o6prA3vxwtWhtug3GfpYls1pnBp4WA+j8vGIi5c2/hQRpGzPcQ==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.9.0", - "rc-util": "^5.20.1" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, "node_modules/rc-overflow": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.3.2.tgz", - "integrity": "sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.5.0.tgz", + "integrity": "sha512-Lm/v9h0LymeUYJf0x39OveU52InkdRXqnn2aYXfWmo8WdOonIKB2kfau+GF0fWq6jPgtdO9yMqveGcK6aIhJmg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.1", "classnames": "^2.2.1", @@ -8947,97 +9318,15 @@ "react-dom": ">=16.9.0" } }, - "node_modules/rc-pagination": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-4.0.4.tgz", - "integrity": "sha512-GGrLT4NgG6wgJpT/hHIpL9nELv27A1XbSZzECIuQBQTVSf4xGKxWr6I/jhpRPauYEWEbWVw22ObG6tJQqwJqWQ==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.3.2", - "rc-util": "^5.38.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-picker": { - "version": "4.0.0-alpha.43", - "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.0.0-alpha.43.tgz", - "integrity": "sha512-Rw9zYPZ+PsqfwfK0XoN9+l8elZOa63OwILaz+KzXh36itdSOwJNw27Sm4VMUqp2ssmhsWDrPF19Joq4DNszq7g==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "@rc-component/trigger": "^1.5.0", - "classnames": "^2.2.1", - "rc-overflow": "^1.3.2", - "rc-resize-observer": "^1.4.0", - "rc-util": "^5.38.1" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "date-fns": ">= 2.x", - "dayjs": ">= 1.x", - "luxon": ">= 3.x", - "moment": ">= 2.x", - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - }, - "peerDependenciesMeta": { - "date-fns": { - "optional": true - }, - "dayjs": { - "optional": true - }, - "luxon": { - "optional": true - }, - "moment": { - "optional": true - } - } - }, - "node_modules/rc-progress": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.5.1.tgz", - "integrity": "sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6", - "rc-util": "^5.16.1" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-rate": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.12.0.tgz", - "integrity": "sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-util": "^5.0.1" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, "node_modules/rc-resize-observer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.4.0.tgz", - "integrity": "sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.4.3.tgz", + "integrity": "sha512-YZLjUbyIWox8E9i9C3Tm7ia+W7euPItNWSPX5sCcQTYbnwDb5uNpnLHQCG1f22oZWUhLw4Mv2tFmeWe68CDQRQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.7", "classnames": "^2.2.1", - "rc-util": "^5.38.0", + "rc-util": "^5.44.1", "resize-observer-polyfill": "^1.5.1" }, "peerDependencies": { @@ -9045,214 +9334,11 @@ "react-dom": ">=16.9.0" } }, - "node_modules/rc-segmented": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.3.0.tgz", - "integrity": "sha512-I3FtM5Smua/ESXutFfb8gJ8ZPcvFR+qUgeeGFQHBOvRiRKyAk4aBE5nfqrxXx+h8/vn60DQjOt6i4RNtrbOobg==", - "dependencies": { - "@babel/runtime": "^7.11.1", - "classnames": "^2.2.1", - "rc-motion": "^2.4.4", - "rc-util": "^5.17.0" - }, - "peerDependencies": { - "react": ">=16.0.0", - "react-dom": ">=16.0.0" - } - }, - "node_modules/rc-select": { - "version": "14.11.0", - "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.11.0.tgz", - "integrity": "sha512-8J8G/7duaGjFiTXCBLWfh5P+KDWyA3KTlZDfV3xj/asMPqB2cmxfM+lH50wRiPIRsCQ6EbkCFBccPuaje3DHIg==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "@rc-component/trigger": "^1.5.0", - "classnames": "2.x", - "rc-motion": "^2.0.1", - "rc-overflow": "^1.3.1", - "rc-util": "^5.16.1", - "rc-virtual-list": "^3.5.2" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, - "node_modules/rc-slider": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.5.0.tgz", - "integrity": "sha512-xiYght50cvoODZYI43v3Ylsqiw14+D7ELsgzR40boDZaya1HFa1Etnv9MDkQE8X/UrXAffwv2AcNAhslgYuDTw==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-util": "^5.27.0" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-steps": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-6.0.1.tgz", - "integrity": "sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==", - "dependencies": { - "@babel/runtime": "^7.16.7", - "classnames": "^2.2.3", - "rc-util": "^5.16.1" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-switch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-4.1.0.tgz", - "integrity": "sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==", - "dependencies": { - "@babel/runtime": "^7.21.0", - "classnames": "^2.2.1", - "rc-util": "^5.30.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-table": { - "version": "7.39.0", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.39.0.tgz", - "integrity": "sha512-7fHLMNsm/2DlGwyIMkdH2xIeRzb5I69bLsFaEVtX+gqmGhByy0wtOAgHkiOew3PtXozSJyh+iXifjLgQzWdczw==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "@rc-component/context": "^1.4.0", - "classnames": "^2.2.5", - "rc-resize-observer": "^1.1.0", - "rc-util": "^5.37.0", - "rc-virtual-list": "^3.11.1" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-tabs": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-14.0.0.tgz", - "integrity": "sha512-lp1YWkaPnjlyhOZCPrAWxK6/P6nMGX/BAZcAC3nuVwKz0Byfp+vNnQKK8BRCP2g/fzu+SeB5dm9aUigRu3tRkQ==", - "dependencies": { - "@babel/runtime": "^7.11.2", - "classnames": "2.x", - "rc-dropdown": "~4.1.0", - "rc-menu": "~9.12.0", - "rc-motion": "^2.6.2", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.34.1" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-textarea": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.6.3.tgz", - "integrity": "sha512-8k7+8Y2GJ/cQLiClFMg8kUXOOdvcFQrnGeSchOvI2ZMIVvX5a3zQpLxoODL0HTrvU63fPkRmMuqaEcOF9dQemA==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1", - "rc-input": "~1.4.0", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.27.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-tooltip": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.1.3.tgz", - "integrity": "sha512-HMSbSs5oieZ7XddtINUddBLSVgsnlaSb3bZrzzGWjXa7/B7nNedmsuz72s7EWFEro9mNa7RyF3gOXKYqvJiTcQ==", - "dependencies": { - "@babel/runtime": "^7.11.2", - "@rc-component/trigger": "^1.18.0", - "classnames": "^2.3.1" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/rc-tree": { - "version": "5.8.5", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.8.5.tgz", - "integrity": "sha512-PRfcZtVDNkR7oh26RuNe1hpw11c1wfgzwmPFL0lnxGnYefe9lDAO6cg5wJKIAwyXFVt5zHgpjYmaz0CPy1ZtKg==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.0.1", - "rc-util": "^5.16.1", - "rc-virtual-list": "^3.5.1" - }, - "engines": { - "node": ">=10.x" - }, - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, - "node_modules/rc-tree-select": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.17.0.tgz", - "integrity": "sha512-7sRGafswBhf7n6IuHyCEFCildwQIgyKiV8zfYyUoWfZEFdhuk7lCH+DN0aHt+oJrdiY9+6Io/LDXloGe01O8XQ==", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-select": "~14.11.0-0", - "rc-tree": "~5.8.1", - "rc-util": "^5.16.1" - }, - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, - "node_modules/rc-upload": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.5.2.tgz", - "integrity": "sha512-QO3ne77DwnAPKFn0bA5qJM81QBjQi0e0NHdkvpFyY73Bea2NfITiotqJqVjHgeYPOJu5lLVR32TNGP084aSoXA==", - "dependencies": { - "@babel/runtime": "^7.18.3", - "classnames": "^2.2.5", - "rc-util": "^5.2.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, "node_modules/rc-util": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.38.1.tgz", - "integrity": "sha512-e4ZMs7q9XqwTuhIK7zBIVFltUtMSjphuPPQXHoHlzRzNdOwUxDejo0Zls5HYaJfRKNURcsS/ceKVULlhjBrxng==", + "version": "5.44.4", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.44.4.tgz", + "integrity": "sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", "react-is": "^18.2.0" @@ -9263,9 +9349,10 @@ } }, "node_modules/rc-virtual-list": { - "version": "3.11.4", - "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.11.4.tgz", - "integrity": "sha512-NbBi0fvyIu26gP69nQBiWgUMTPX3mr4FcuBQiVqagU0BnuX8WQkiivnMs105JROeuUIFczLrlgUhLQwTWV1XDA==", + "version": "3.19.2", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.19.2.tgz", + "integrity": "sha512-Ys6NcjwGkuwkeaWBDqfI3xWuZ7rDiQXlH1o2zLfFzATfEgXcqpk8CkgMfbJD81McqjcJVez25a3kPxCR807evA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", "classnames": "^2.2.6", @@ -9505,7 +9592,8 @@ "node_modules/resize-observer-polyfill": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", + "license": "MIT" }, "node_modules/resolve-cwd": { "version": "3.0.0", @@ -9909,7 +9997,8 @@ "node_modules/string-convert": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", - "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==" + "integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==", + "license": "MIT" }, "node_modules/string-length": { "version": "4.0.2", @@ -10178,9 +10267,10 @@ } }, "node_modules/stylis": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", - "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==" + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" }, "node_modules/supports-color": { "version": "7.2.0", @@ -10368,9 +10458,10 @@ "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==" }, "node_modules/throttle-debounce": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.0.tgz", - "integrity": "sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz", + "integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==", + "license": "MIT", "engines": { "node": ">=12.22" } @@ -10414,11 +10505,6 @@ "node": ">=8.0" } }, - "node_modules/toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" - }, "node_modules/tough-cookie": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", diff --git a/package.json b/package.json index 668f48a..141da6b 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "@reduxjs/toolkit": "^2.5.1", "@tailwindcss/postcss": "^4.1.11", "@tanstack/react-query": "^5.61.4", - "antd": "^5.14.0", + "antd": "^6.0.0", "axios": "^1.6.7", "chart.js": "^4.4.4", "gsap": "^3.12.5", diff --git a/src/app/(home)/books/library/page.tsx b/src/app/(home)/books/library/page.tsx index 9f3c2ff..3354df3 100644 --- a/src/app/(home)/books/library/page.tsx +++ b/src/app/(home)/books/library/page.tsx @@ -6,7 +6,7 @@ import Loader from "@/components/loader/Loader" import BookCover from "@/components/books/library/BookCover" import Link from "next/link" import Search from "@/components/misc/search/Search" -import { Button } from "antd" +import { Button, ConfigProvider } from "antd" import BookImageCover from "@/components/books/library/BookImageCover" import { handleHideScores_NoSetter } from "@/utils/time-functions/hideScores" import useBookFetch from "@/hooks/fetch-hooks/useReadBookFetch" @@ -14,6 +14,7 @@ import { Book } from "@/types/BookInterface" import useScrollRef from "@/hooks/scroll-hooks/useScrollRef" import useLimit from "@/hooks/scroll-hooks/useLimit" import BookSkeleton from "@/components/books/library/BookSkeleton" +import { UiButton } from "@/components/ui/button/UiButton" const Booklibrary: React.FC = () => { const [searchBar, setSearchBar] = useState("") @@ -58,9 +59,7 @@ const Booklibrary: React.FC = () => { filteredBooks={filteredResults} isDisabled={books.length === 0} /> - - - +

Book Library diff --git a/src/app/(home)/books/page.tsx b/src/app/(home)/books/page.tsx index 63637a2..3661a77 100644 --- a/src/app/(home)/books/page.tsx +++ b/src/app/(home)/books/page.tsx @@ -1,8 +1,25 @@ -/* eslint-disable react/react-in-jsx-scope */ -import { Button } from "antd" -import Link from "next/link" +import React from "react" +import { UiButton } from "@/components/ui/button/UiButton" const BookHomepage: React.FC = () => { + const dashboardLinks = [ + { + text: "Library", + link: "/books/library", + }, + { + text: "Randomiser", + link: "/books/randomiser", + }, + { + text: "Quiz", + link: "/books/quiz", + }, + { + text: "Stats", + link: "/books/stats", + }, + ] return (

@@ -10,21 +27,14 @@ const BookHomepage: React.FC = () => {

- - - - - - - - - - - - - - - + {dashboardLinks.map((btn) => ( + + ))}
{ const [randomiserBooks, setRandomiserBooks] = useState([]) diff --git a/src/app/(home)/brothers/page.tsx b/src/app/(home)/brothers/page.tsx index 47b1888..92645b9 100644 --- a/src/app/(home)/brothers/page.tsx +++ b/src/app/(home)/brothers/page.tsx @@ -1,8 +1,19 @@ /* eslint-disable react/react-in-jsx-scope */ +import { UiButton } from "@/components/ui/button/UiButton" import { Button } from "antd" import Link from "next/link" const BrothersHomepage: React.FC = () => { + const dashboardLinks = [ + { + text: "Brothers Library", + link: "/brothers/library", + }, + { + text: "Brothers Stats", + link: "/brothers/stats", + }, + ] return (

@@ -10,13 +21,25 @@ const BrothersHomepage: React.FC = () => {

- - + {dashboardLinks.map((btn) => ( + + ))} + {/* + - - + + */}
{ + const dashboardLinks = [ + { + text: "About Us", + link: "/club/about", + }, + { + text: "Badges", + link: "/club/badges", + }, + ] return (

The Club

- - - - - - - + {dashboardLinks.map((btn) => ( + + ))}
) { return ( - - - - - - - - - {children} -
- - - + + + + + + + + + + {children} +
+ + + + ) } diff --git a/src/app/globals.css b/src/app/globals.css index f849a43..7dfbc59 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -61,7 +61,7 @@ body:has(#theme:checked) { border-color: var(--tertiaryColor); } -:where(.css-dev-only-do-not-override-1rqnfsa).ant-btn-default, +/* :where(.css-dev-only-do-not-override-1rqnfsa).ant-btn-default, :where( .css-dev-only-do-not-override-1rqnfsa ).ant-btn-color-dangerous.ant-btn-variant-outlined, @@ -177,7 +177,7 @@ body:has(#theme:checked) { } /* button */ -:where(.css-dev-only-do-not-override-1rqnfsa).ant-btn-default { +/* :where(.css-dev-only-do-not-override-1rqnfsa).ant-btn-default { background-color: black; color: white; } @@ -277,10 +277,10 @@ body:has(#theme:checked) { :where(.css-dev-only-do-not-override-1rqnfsa).ant-form-item .ant-form-item-control-input-content { color: white; -} +} */ /* deployed version */ -:where(.css-1rqnfsa).ant-modal .ant-modal-content { +/* :where(.css-1rqnfsa).ant-modal .ant-modal-content { background-color: var(--tertiaryColor); } @@ -320,4 +320,4 @@ body:has(#theme:checked) { :where(.css-1rqnfsa).ant-radio-wrapper span.ant-radio + * { color: white; -} +} */ diff --git a/src/components/3d/threeJS/Base.tsx b/src/components/3d/threeJS/Base.tsx index 45abb3e..ca65506 100644 --- a/src/components/3d/threeJS/Base.tsx +++ b/src/components/3d/threeJS/Base.tsx @@ -7,6 +7,7 @@ import Loader from "@/components/loader/Loader" import { Book } from "@/types/BookInterface" import { Button } from "antd" import { div } from "three/webgpu" +import { UiButton } from "@/components/ui/button/UiButton" type Props = { readBooks: string[] @@ -57,15 +58,12 @@ export default function Base({ readBooks, readIds, readBooksJson }: Props) { token={token} /> {readBooks.length - 1 !== renderIds.length ? ( - +
+ +
) : null}
)} diff --git a/src/components/3d/threeJS/components/TextInfo.tsx b/src/components/3d/threeJS/components/TextInfo.tsx index d84b172..ace469f 100644 --- a/src/components/3d/threeJS/components/TextInfo.tsx +++ b/src/components/3d/threeJS/components/TextInfo.tsx @@ -2,6 +2,7 @@ import React from "react" import Link from "next/link" import { Button } from "antd" import { Book } from "@/types/BookInterface" +import { UiButton } from "@/components/ui/button/UiButton" type Props = { readBooksJson: Book[] @@ -26,9 +27,13 @@ export default function TextInfo({ clickId, readBooksJson }: Props) { Score: {bookInfo?.totalScore} - - - +
+ +
) } diff --git a/src/components/books/randomiser/Randomiser.tsx b/src/components/books/randomiser/Randomiser.tsx index 646c1e2..93baf3c 100644 --- a/src/components/books/randomiser/Randomiser.tsx +++ b/src/components/books/randomiser/Randomiser.tsx @@ -7,6 +7,7 @@ import { } from "@/store/lib/features/randomise/randomiseSlice" import { useAuth } from "@/hooks/auth-hooks/useAuth" import { useCallback } from "react" +import { UiButton } from "@/components/ui/button/UiButton" type Props = { bookLength: number @@ -34,9 +35,11 @@ const Randomiser: React.FC = ({ bookLength, bookId }) => {
{showRandom ? ( <> - + {adminId === decodedToken?._id ? ( ) : null} diff --git a/src/components/brothers/dashboard/BrotherBanner.tsx b/src/components/brothers/dashboard/BrotherBanner.tsx index 5278252..ca36ff5 100644 --- a/src/components/brothers/dashboard/BrotherBanner.tsx +++ b/src/components/brothers/dashboard/BrotherBanner.tsx @@ -20,6 +20,7 @@ import { } from "@/utils/stat-functions/scoreFunctions" import { useAuth } from "@/hooks/auth-hooks/useAuth" import { Button } from "antd" +import { UiButton } from "@/components/ui/button/UiButton" type Props = { user: User @@ -139,12 +140,8 @@ const BrotherBanner: React.FC = ({ user, readBooks }) => {
- - + +
) diff --git a/src/components/forms/bookform-delete/DeleteBook.tsx b/src/components/forms/bookform-delete/DeleteBook.tsx index 35b32e3..d02862d 100644 --- a/src/components/forms/bookform-delete/DeleteBook.tsx +++ b/src/components/forms/bookform-delete/DeleteBook.tsx @@ -2,6 +2,7 @@ import { Button, Popconfirm } from "antd" import useForm from "@/hooks/crud-hooks/useForm" +import { UiButton } from "@/components/ui/button/UiButton" type Props = { id: string | string[] @@ -23,23 +24,25 @@ const DeleteBook: React.FC = ({ id }) => { }, 3000) }) return ( - <> +
- + {error ? (

{error}

) : null} - +
) } diff --git a/src/components/forms/bookform-randomise/CreateUnreadBook.tsx b/src/components/forms/bookform-randomise/CreateUnreadBook.tsx index 928f7b9..a98d96a 100644 --- a/src/components/forms/bookform-randomise/CreateUnreadBook.tsx +++ b/src/components/forms/bookform-randomise/CreateUnreadBook.tsx @@ -1,8 +1,10 @@ import { useState } from "react" -import { Modal, Button } from "antd" +import { Modal, Button, ConfigProvider } from "antd" import CreateBookForm from "./CreateUnreadBookForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setShowCreate } from "@/store/lib/features/auth/editButtonsSlice" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiModal } from "@/components/ui/modal/UiModal" const CreateBook = () => { const [modalText, setModalText] = useState() @@ -26,21 +28,28 @@ const CreateBook = () => { } return ( <> -
- +
+
- -

{modalText}

-
+ +
{modalText}
+
+ ) } diff --git a/src/components/forms/bookform-randomise/CreateUnreadBookForm.tsx b/src/components/forms/bookform-randomise/CreateUnreadBookForm.tsx index bf18c2d..8f67530 100644 --- a/src/components/forms/bookform-randomise/CreateUnreadBookForm.tsx +++ b/src/components/forms/bookform-randomise/CreateUnreadBookForm.tsx @@ -5,6 +5,7 @@ import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useEffect, useState } from "react" import { editBookButtonSlice } from "@/store/lib/features/books/editBookButtonsSlice" import { setShowCreate } from "@/store/lib/features/auth/editButtonsSlice" +import { UiInput } from "@/components/ui/input/UiInput" const { Option } = Select @@ -75,12 +76,12 @@ const CreateBook: React.FC = () => { }, ]} > - + dispatch(setFormData({ ...formData, title: e.target.value })) } value={formData["title"]} + type="text" /> @@ -109,12 +110,12 @@ const CreateBook: React.FC = () => { }, ]} > - + dispatch(setFormData({ ...formData, author: e.target.value })) } value={formData["author"]} + type="text" /> @@ -137,7 +138,7 @@ const CreateBook: React.FC = () => { }, ]} > - dispatch( @@ -145,6 +146,15 @@ const CreateBook: React.FC = () => { ) } value={formData["pages"]} + /> */} + + dispatch( + setFormData({ ...formData, pages: Number(e.target.value) }) + ) + } + value={formData["pages"]} + type="number" /> @@ -168,7 +178,7 @@ const CreateBook: React.FC = () => { }, ]} > - dispatch( @@ -179,6 +189,18 @@ const CreateBook: React.FC = () => { ) } value={formData["yearPublished"]} + /> */} + + dispatch( + setFormData({ + ...formData, + yearPublished: Number(e.target.value), + }) + ) + } + value={formData["yearPublished"]} + type="number" /> @@ -355,12 +377,19 @@ const CreateBook: React.FC = () => { }, ]} > - dispatch(setFormData({ ...formData, imageURL: e.target.value })) } value={formData["imageURL"]} + /> */} + + dispatch(setFormData({ ...formData, imageURL: e.target.value })) + } + value={formData["imageURL"]} + type="text" /> @@ -372,7 +401,6 @@ const CreateBook: React.FC = () => { }} > + {error ? (
diff --git a/src/components/forms/bookform-randomise/SelectBook.tsx b/src/components/forms/bookform-randomise/SelectBook.tsx index 9bd5917..0aea77b 100644 --- a/src/components/forms/bookform-randomise/SelectBook.tsx +++ b/src/components/forms/bookform-randomise/SelectBook.tsx @@ -1,5 +1,6 @@ import { Button, Form } from "antd" import useForm from "@/hooks/crud-hooks/useForm" +import { UiButton } from "@/components/ui/button/UiButton" type Props = { bookId: string @@ -18,9 +19,12 @@ const SelectBook: React.FC = ({ bookId }) => { return ( <>
- + ) diff --git a/src/components/forms/bookform-randomise/edit/EditForm.tsx b/src/components/forms/bookform-randomise/edit/EditForm.tsx index d0859b8..00fc0c3 100644 --- a/src/components/forms/bookform-randomise/edit/EditForm.tsx +++ b/src/components/forms/bookform-randomise/edit/EditForm.tsx @@ -10,6 +10,7 @@ import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { setShowEdit } from "@/store/lib/features/auth/editButtonsSlice" +import { UiButton } from "@/components/ui/button/UiButton" type Props = { inAuthor: string @@ -129,15 +130,13 @@ const EditForm: React.FC = ({ span: 16, }} > - + clickHandler={() => handleForm()} + loading={loadings} + ghost + /> {inputError ?

{inputError}

: null} diff --git a/src/components/forms/bookform-randomise/edit/EditUnreadBook.tsx b/src/components/forms/bookform-randomise/edit/EditUnreadBook.tsx index c5bab38..a79ecb1 100644 --- a/src/components/forms/bookform-randomise/edit/EditUnreadBook.tsx +++ b/src/components/forms/bookform-randomise/edit/EditUnreadBook.tsx @@ -2,6 +2,8 @@ import { Modal, Button } from "antd" import EditForm from "./EditForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setShowEdit } from "@/store/lib/features/auth/editButtonsSlice" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiModal } from "@/components/ui/modal/UiModal" type Props = { id: string @@ -33,16 +35,13 @@ const EditUnreadBook: React.FC = ({ } return ( <> -
- +
+
- = ({ inGenre={inGenre} inImageURL={inImageURL} /> - + ) } diff --git a/src/components/forms/brotherform/EditCityAndCountry.tsx b/src/components/forms/brotherform/EditCityAndCountry.tsx index 0f40d58..9651b41 100644 --- a/src/components/forms/brotherform/EditCityAndCountry.tsx +++ b/src/components/forms/brotherform/EditCityAndCountry.tsx @@ -1,8 +1,10 @@ "use client" import { useState } from "react" -import { Button, Form, Input } from "antd" +import { Form, Input } from "antd" import { useAppSelector } from "@/store/lib/hooks" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiInput } from "@/components/ui/input/UiInput" interface props { id: string @@ -92,11 +94,11 @@ const EditCityAndCountry: React.FC = ({ id, inCity, inCountry }) => { }, ]} > - setCountry(e.target.value)} + setCountry(e.target.value)} defaultValue={country} value={country} + type="text" /> @@ -110,11 +112,11 @@ const EditCityAndCountry: React.FC = ({ id, inCity, inCountry }) => { }, ]} > - setCity(e.target.value)} + setCity(e.target.value)} defaultValue={city} value={city} + type="text" /> @@ -125,15 +127,13 @@ const EditCityAndCountry: React.FC = ({ id, inCity, inCountry }) => { span: 16, }} > - + ghost + /> {error ?

{error}

: null} diff --git a/src/components/forms/brotherform/EditCityAndCountryButton.tsx b/src/components/forms/brotherform/EditCityAndCountryButton.tsx index bb7971a..08e6488 100644 --- a/src/components/forms/brotherform/EditCityAndCountryButton.tsx +++ b/src/components/forms/brotherform/EditCityAndCountryButton.tsx @@ -1,10 +1,12 @@ "use client" -import { Modal, Button } from "antd" +import { Modal } from "antd" import { useState } from "react" import EditCityAndCountry from "./EditCityAndCountry" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setShowCountry } from "@/store/lib/features/auth/editButtonsSlice" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiModal } from "@/components/ui/modal/UiModal" type Props = { id: string @@ -41,19 +43,16 @@ const EditCityAndCountryButton: React.FC = ({ } return ( <> - - showModal()} textContent="Edit" /> + -

{modalText}

-
+ {modalText} + ) } diff --git a/src/components/forms/brotherform/EditGenre.tsx b/src/components/forms/brotherform/EditGenre.tsx index 596ccfa..43a8e7f 100644 --- a/src/components/forms/brotherform/EditGenre.tsx +++ b/src/components/forms/brotherform/EditGenre.tsx @@ -1,8 +1,9 @@ "use client" import { useState } from "react" -import { Button, Form, Select, Space } from "antd" +import { Form, Select, Space } from "antd" import { useAppSelector } from "@/store/lib/hooks" +import { UiButton } from "@/components/ui/button/UiButton" const { Option } = Select @@ -217,15 +218,13 @@ const EditGenre: React.FC = ({ id, inGenre }) => { span: 16, }} > - + ghost + /> {error ?

{error}

: null} diff --git a/src/components/forms/brotherform/EditGenreButton.tsx b/src/components/forms/brotherform/EditGenreButton.tsx index cf3acee..eb38333 100644 --- a/src/components/forms/brotherform/EditGenreButton.tsx +++ b/src/components/forms/brotherform/EditGenreButton.tsx @@ -1,10 +1,12 @@ "use client" -import { Button, Modal } from "antd" +import { Modal } from "antd" import { useState } from "react" import EditGenre from "./EditGenre" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setShowGenre } from "@/store/lib/features/auth/editButtonsSlice" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiModal } from "@/components/ui/modal/UiModal" type Props = { id: string @@ -36,21 +38,18 @@ const EditGenreButton: React.FC = ({ id, inGenre }) => { <>
{showGenre ? null : ( - + showModal()} textContent="Edit" /> )}
- -

{modalText}

-
+ {modalText} + ) } diff --git a/src/components/forms/brotherform/EditUsername.tsx b/src/components/forms/brotherform/EditUsername.tsx index 81827ff..395402c 100644 --- a/src/components/forms/brotherform/EditUsername.tsx +++ b/src/components/forms/brotherform/EditUsername.tsx @@ -3,6 +3,8 @@ import { useState } from "react" import { Button, Form, Input } from "antd" import { useAppSelector } from "@/store/lib/hooks" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiInput } from "@/components/ui/input/UiInput" interface props { id: string @@ -91,11 +93,11 @@ const EditUsername: React.FC = ({ id, inUsername }) => { }, ]} > - setUsername(e.target.value)} + setUsername(e.target.value)} defaultValue={username} value={username} + type="text" /> @@ -106,15 +108,13 @@ const EditUsername: React.FC = ({ id, inUsername }) => { span: 16, }} > - + ghost + /> {error ?

{error}

: null} diff --git a/src/components/forms/brotherform/EditUsernameButton.tsx b/src/components/forms/brotherform/EditUsernameButton.tsx index ecb5fdd..80d20aa 100644 --- a/src/components/forms/brotherform/EditUsernameButton.tsx +++ b/src/components/forms/brotherform/EditUsernameButton.tsx @@ -1,10 +1,12 @@ "use client" -import { Button, Modal } from "antd" +import { Modal } from "antd" import { useState } from "react" import EditUsername from "./EditUsername" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setShowUsername } from "@/store/lib/features/auth/editButtonsSlice" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiModal } from "@/components/ui/modal/UiModal" type Props = { id: string @@ -36,21 +38,18 @@ const EditUsernameButton: React.FC = ({ id, inUsername }) => { <>
{showUsername ? null : ( - + showModal()} textContent="Edit" /> )}
- -

{modalText}

-
+ {modalText} + ) } diff --git a/src/components/forms/brotherform/PictureUpload.tsx b/src/components/forms/brotherform/PictureUpload.tsx index 8ec322d..f74006d 100644 --- a/src/components/forms/brotherform/PictureUpload.tsx +++ b/src/components/forms/brotherform/PictureUpload.tsx @@ -5,6 +5,7 @@ import axios from "axios" import { PlusOutlined } from "@ant-design/icons" import { Upload, Form, Button } from "antd" import { useAppSelector } from "@/store/lib/hooks" +import { UiButton } from "@/components/ui/button/UiButton" const normFile = (e) => { if (Array.isArray(e)) { @@ -106,28 +107,20 @@ const PictureUpload: React.FC = ({ id, inImage }) => { beforeUpload={() => false} >
- +
Upload
- - - + clickHandler={() => enterLoading(0)} + htmlType="submit" + ghost + /> {error ?

{error}

: null} ) diff --git a/src/components/forms/brotherform/PictureUploadButton.tsx b/src/components/forms/brotherform/PictureUploadButton.tsx index c8458c1..abf3c85 100644 --- a/src/components/forms/brotherform/PictureUploadButton.tsx +++ b/src/components/forms/brotherform/PictureUploadButton.tsx @@ -1,10 +1,12 @@ "use client" -import { Button, Modal } from "antd" +import { Modal } from "antd" import { useState } from "react" import PictureUpload from "./PictureUpload" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setShowImage } from "@/store/lib/features/auth/editButtonsSlice" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiModal } from "@/components/ui/modal/UiModal" type Props = { id: string @@ -36,20 +38,17 @@ const PictureUploadButton: React.FC = ({ id, inImage }) => { return ( <>
- + showModal()} textContent="Change Image" />
- -

{modalText}

-
+ {modalText} + ) } diff --git a/src/components/forms/commentform/CommentButton.tsx b/src/components/forms/commentform/CommentButton.tsx index 215112f..954c0c4 100644 --- a/src/components/forms/commentform/CommentButton.tsx +++ b/src/components/forms/commentform/CommentButton.tsx @@ -3,6 +3,8 @@ import { useState } from "react" import { Button, Modal } from "antd" import CommentForm from "./CommentForm" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiModal } from "@/components/ui/modal/UiModal" interface props { setAddComment: React.Dispatch> @@ -20,19 +22,16 @@ const CommentButton: React.FC = ({ setAddComment, addComment, id }) => { return ( <> -
- +
+ showModal()} textContent="Add comment" />
- - + ) } diff --git a/src/components/forms/commentform/CommentForm.tsx b/src/components/forms/commentform/CommentForm.tsx index 563af3a..6f56196 100644 --- a/src/components/forms/commentform/CommentForm.tsx +++ b/src/components/forms/commentform/CommentForm.tsx @@ -4,6 +4,7 @@ import { Button, Form, Input } from "antd" import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" +import { UiButton } from "@/components/ui/button/UiButton" const { TextArea } = Input @@ -71,17 +72,13 @@ const CommentForm = ({ id, handleCancel }: Props) => { span: 16, }} > - + /> {error ?

{error}

: null} diff --git a/src/components/forms/commentform/EditCommentButton.tsx b/src/components/forms/commentform/EditCommentButton.tsx index 807c5e6..bc3d4ed 100644 --- a/src/components/forms/commentform/EditCommentButton.tsx +++ b/src/components/forms/commentform/EditCommentButton.tsx @@ -3,6 +3,8 @@ import { useState } from "react" import { Modal, Button } from "antd" import EditCommentForm from "./EditCommentForm" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiModal } from "@/components/ui/modal/UiModal" interface props { setShowEditComment: React.Dispatch> @@ -33,23 +35,20 @@ const EditRatingButton = ({ } return ( <> -
- +
+ showModal()} textContent="Edit comment" />
- - + ) } diff --git a/src/components/forms/commentform/EditCommentForm.tsx b/src/components/forms/commentform/EditCommentForm.tsx index 515201d..8cafb9a 100644 --- a/src/components/forms/commentform/EditCommentForm.tsx +++ b/src/components/forms/commentform/EditCommentForm.tsx @@ -4,6 +4,7 @@ import { Button, Form, Input } from "antd" import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" +import { UiButton } from "@/components/ui/button/UiButton" const { TextArea } = Input @@ -75,17 +76,13 @@ const EditCommentForm: React.FC = ({ id, inComment, handleCancel }) => { span: 16, }} > - + /> {error ?

{error}

: null} diff --git a/src/components/forms/editbookform-single-book/author/EditAuthor.tsx b/src/components/forms/editbookform-single-book/author/EditAuthor.tsx index cf3a404..613e880 100644 --- a/src/components/forms/editbookform-single-book/author/EditAuthor.tsx +++ b/src/components/forms/editbookform-single-book/author/EditAuthor.tsx @@ -1,5 +1,6 @@ "use client" +import { UiButton } from "@/components/ui/button/UiButton" import useForm from "@/hooks/crud-hooks/useForm" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" @@ -62,15 +63,12 @@ const EditBookAuthor: React.FC = ({ id, inAuthor }) => { span: 16, }} > - + loading={loadings} + /> {error ?

{error}

: null} diff --git a/src/components/forms/editbookform-single-book/author/EditAuthorButton.tsx b/src/components/forms/editbookform-single-book/author/EditAuthorButton.tsx index 208b1bd..826d7d3 100644 --- a/src/components/forms/editbookform-single-book/author/EditAuthorButton.tsx +++ b/src/components/forms/editbookform-single-book/author/EditAuthorButton.tsx @@ -1,3 +1,4 @@ +import { UiButton } from "@/components/ui/button/UiButton" import { setShowAuthor } from "@/store/lib/features/books/editBookButtonsSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Button } from "antd" @@ -6,27 +7,12 @@ const EditAuthorButton = () => { const showAuthor = useAppSelector((state) => state.editBookButtons.showAuthor) const dispatch = useAppDispatch() return ( - <> -
- {showAuthor ? ( - - ) : ( - - )} -
- +
+ dispatch(setShowAuthor())} + /> +
) } diff --git a/src/components/forms/editbookform-single-book/datemeeting/EditActualDate.tsx b/src/components/forms/editbookform-single-book/datemeeting/EditActualDate.tsx index e8d6a06..41926fe 100644 --- a/src/components/forms/editbookform-single-book/datemeeting/EditActualDate.tsx +++ b/src/components/forms/editbookform-single-book/datemeeting/EditActualDate.tsx @@ -1,5 +1,6 @@ "use client" +import { UiButton } from "@/components/ui/button/UiButton" import useForm from "@/hooks/crud-hooks/useForm" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" @@ -58,15 +59,12 @@ const EditActualDate: React.FC = ({ id }) => { span: 16, }} > - + loading={loadings} + /> {error ?

{error}

: null} diff --git a/src/components/forms/editbookform-single-book/datemeeting/EditActualDateButton.tsx b/src/components/forms/editbookform-single-book/datemeeting/EditActualDateButton.tsx index 81fea8d..cb2eaf9 100644 --- a/src/components/forms/editbookform-single-book/datemeeting/EditActualDateButton.tsx +++ b/src/components/forms/editbookform-single-book/datemeeting/EditActualDateButton.tsx @@ -1,3 +1,4 @@ +import { UiButton } from "@/components/ui/button/UiButton" import { setShowDate } from "@/store/lib/features/books/editBookButtonsSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Button } from "antd" @@ -6,27 +7,12 @@ const EditActualDateButton = () => { const showDate = useAppSelector((state) => state.editBookButtons.showDate) const dispatch = useAppDispatch() return ( - <> -
- {showDate ? ( - - ) : ( - - )} -
- +
+ dispatch(setShowDate())} + /> +
) } diff --git a/src/components/forms/editbookform-single-book/datemeeting/EditDate.tsx b/src/components/forms/editbookform-single-book/datemeeting/EditDate.tsx index 6bef5d6..54770dd 100644 --- a/src/components/forms/editbookform-single-book/datemeeting/EditDate.tsx +++ b/src/components/forms/editbookform-single-book/datemeeting/EditDate.tsx @@ -1,5 +1,6 @@ "use client" +import { UiButton } from "@/components/ui/button/UiButton" import useForm from "@/hooks/crud-hooks/useForm" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" @@ -56,15 +57,12 @@ const EditDate: React.FC = ({ id }) => { span: 16, }} > - + loading={loadings} + /> {error ?

{error}

: null} diff --git a/src/components/forms/editbookform-single-book/datemeeting/EditDateButton.tsx b/src/components/forms/editbookform-single-book/datemeeting/EditDateButton.tsx index 7d63315..3000154 100644 --- a/src/components/forms/editbookform-single-book/datemeeting/EditDateButton.tsx +++ b/src/components/forms/editbookform-single-book/datemeeting/EditDateButton.tsx @@ -1,3 +1,4 @@ +import { UiButton } from "@/components/ui/button/UiButton" import { setShowDate } from "@/store/lib/features/books/editBookButtonsSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Button } from "antd" @@ -6,27 +7,12 @@ const EditDateButton = () => { const showDate = useAppSelector((state) => state.editBookButtons.showDate) const dispatch = useAppDispatch() return ( - <> -
- {showDate ? ( - - ) : ( - - )} -
- +
+ dispatch(setShowDate())} + /> +
) } diff --git a/src/components/forms/editbookform-single-book/genre/EditGenre.tsx b/src/components/forms/editbookform-single-book/genre/EditGenre.tsx index 542cd52..4dfc74d 100644 --- a/src/components/forms/editbookform-single-book/genre/EditGenre.tsx +++ b/src/components/forms/editbookform-single-book/genre/EditGenre.tsx @@ -4,6 +4,7 @@ import { Button, Form, Select, Space } from "antd" import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" +import { UiButton } from "@/components/ui/button/UiButton" const { Option } = Select @@ -174,15 +175,12 @@ const EditGenre: React.FC = ({ id, inGenre }) => { span: 16, }} > - + loading={loadings} + /> {error ?

{error}

: null} diff --git a/src/components/forms/editbookform-single-book/genre/EditGenreButton.tsx b/src/components/forms/editbookform-single-book/genre/EditGenreButton.tsx index f61b5d4..cc590dc 100644 --- a/src/components/forms/editbookform-single-book/genre/EditGenreButton.tsx +++ b/src/components/forms/editbookform-single-book/genre/EditGenreButton.tsx @@ -1,3 +1,4 @@ +import { UiButton } from "@/components/ui/button/UiButton" import { setShowGenre } from "@/store/lib/features/books/editBookButtonsSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Button } from "antd" @@ -6,27 +7,12 @@ const EditGenreButton = () => { const showGenre = useAppSelector((state) => state.editBookButtons.showGenre) const dispatch = useAppDispatch() return ( - <> -
- {showGenre ? ( - - ) : ( - - )} -
- +
+ dispatch(setShowGenre())} + /> +
) } diff --git a/src/components/forms/editbookform-single-book/image/EditImage.tsx b/src/components/forms/editbookform-single-book/image/EditImage.tsx index cbc6da4..b8315aa 100644 --- a/src/components/forms/editbookform-single-book/image/EditImage.tsx +++ b/src/components/forms/editbookform-single-book/image/EditImage.tsx @@ -5,6 +5,7 @@ import axios from "axios" import { Button, Form, Upload } from "antd" import { PlusOutlined } from "@ant-design/icons" import { useAppSelector } from "@/store/lib/hooks" +import { UiButton } from "@/components/ui/button/UiButton" const normFile = (e) => { if (Array.isArray(e)) { @@ -98,25 +99,18 @@ const EditImage: React.FC = ({ id }) => { beforeUpload={() => false} >
- +
Upload
- + /> {error ?

{error}

: null} diff --git a/src/components/forms/editbookform-single-book/image/EditImageButton.tsx b/src/components/forms/editbookform-single-book/image/EditImageButton.tsx index 32ca859..38bc472 100644 --- a/src/components/forms/editbookform-single-book/image/EditImageButton.tsx +++ b/src/components/forms/editbookform-single-book/image/EditImageButton.tsx @@ -1,6 +1,6 @@ +import { UiButton } from "@/components/ui/button/UiButton" import { setShowBookImage } from "@/store/lib/features/books/editBookButtonsSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" -import { Button } from "antd" const EditImageButton = () => { const showBookImage = useAppSelector( @@ -9,27 +9,12 @@ const EditImageButton = () => { const dispatch = useAppDispatch() return ( - <> -
- {showBookImage ? ( - - ) : ( - - )} -
- +
+ dispatch(setShowBookImage())} + /> +
) } diff --git a/src/components/forms/editbookform-single-book/pages/EditPages.tsx b/src/components/forms/editbookform-single-book/pages/EditPages.tsx index 06f012d..948d1bb 100644 --- a/src/components/forms/editbookform-single-book/pages/EditPages.tsx +++ b/src/components/forms/editbookform-single-book/pages/EditPages.tsx @@ -4,6 +4,7 @@ import { Button, Form, Input } from "antd" import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" +import { UiButton } from "@/components/ui/button/UiButton" type Props = { id: string | string[] @@ -67,15 +68,12 @@ const EditPages: React.FC = ({ id, inPages }) => { span: 16, }} > - + loading={loadings} + /> {error ?

{error}

: null} diff --git a/src/components/forms/editbookform-single-book/pages/EditPagesButton.tsx b/src/components/forms/editbookform-single-book/pages/EditPagesButton.tsx index 68f5065..4da3c6f 100644 --- a/src/components/forms/editbookform-single-book/pages/EditPagesButton.tsx +++ b/src/components/forms/editbookform-single-book/pages/EditPagesButton.tsx @@ -1,3 +1,4 @@ +import { UiButton } from "@/components/ui/button/UiButton" import { setShowPage } from "@/store/lib/features/books/editBookButtonsSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Button } from "antd" @@ -6,27 +7,12 @@ const EditPagesButton = () => { const showPage = useAppSelector((state) => state.editBookButtons.showPage) const dispatch = useAppDispatch() return ( - <> -
- {showPage ? ( - - ) : ( - - )} -
- +
+ dispatch(setShowPage())} + /> +
) } diff --git a/src/components/forms/editbookform-single-book/published/EditPublishButton.tsx b/src/components/forms/editbookform-single-book/published/EditPublishButton.tsx index dc64b7f..7d0626d 100644 --- a/src/components/forms/editbookform-single-book/published/EditPublishButton.tsx +++ b/src/components/forms/editbookform-single-book/published/EditPublishButton.tsx @@ -1,3 +1,4 @@ +import { UiButton } from "@/components/ui/button/UiButton" import { setShowPublish } from "@/store/lib/features/books/editBookButtonsSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Button } from "antd" @@ -8,27 +9,12 @@ const EditPublishButton = () => { ) const dispatch = useAppDispatch() return ( - <> -
- {showPublish ? ( - - ) : ( - - )} -
- +
+ dispatch(setShowPublish())} + /> +
) } diff --git a/src/components/forms/editbookform-single-book/published/EditPublished.tsx b/src/components/forms/editbookform-single-book/published/EditPublished.tsx index 16ed5dc..3c0df83 100644 --- a/src/components/forms/editbookform-single-book/published/EditPublished.tsx +++ b/src/components/forms/editbookform-single-book/published/EditPublished.tsx @@ -4,6 +4,7 @@ import { Button, Form, Input } from "antd" import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" +import { UiButton } from "@/components/ui/button/UiButton" type Props = { id: string | string[] @@ -72,15 +73,12 @@ const EditPublished: React.FC = ({ id, inPublish }) => { span: 16, }} > - + loading={loadings} + /> {error ?

{error}

: null} diff --git a/src/components/forms/editbookform-single-book/title/EditTitle.tsx b/src/components/forms/editbookform-single-book/title/EditTitle.tsx index 07ca293..679dda8 100644 --- a/src/components/forms/editbookform-single-book/title/EditTitle.tsx +++ b/src/components/forms/editbookform-single-book/title/EditTitle.tsx @@ -1,5 +1,6 @@ "use client" +import { UiButton } from "@/components/ui/button/UiButton" import useForm from "@/hooks/crud-hooks/useForm" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" @@ -65,15 +66,12 @@ const EditTitle: React.FC = ({ id, inTitle }) => { span: 16, }} > - + loading={loadings} + /> {error ?

{error}

: null} diff --git a/src/components/forms/editbookform-single-book/title/EditTitleButton.tsx b/src/components/forms/editbookform-single-book/title/EditTitleButton.tsx index e180c4a..ccdbaf5 100644 --- a/src/components/forms/editbookform-single-book/title/EditTitleButton.tsx +++ b/src/components/forms/editbookform-single-book/title/EditTitleButton.tsx @@ -1,3 +1,4 @@ +import { UiButton } from "@/components/ui/button/UiButton" import { setShowTitle } from "@/store/lib/features/books/editBookButtonsSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Button } from "antd" @@ -8,23 +9,10 @@ const EditTitleButton = () => { return ( <>
- {showTitle ? ( - - ) : ( - - )} + dispatch(setShowTitle())} + />
) diff --git a/src/components/forms/ratingform/EditAnthologyRatingForm.tsx b/src/components/forms/ratingform/EditAnthologyRatingForm.tsx index edbfa1e..20b73e8 100644 --- a/src/components/forms/ratingform/EditAnthologyRatingForm.tsx +++ b/src/components/forms/ratingform/EditAnthologyRatingForm.tsx @@ -5,6 +5,7 @@ import { Book } from "@/types/BookInterface" import { useEffect, useMemo, useState } from "react" import { handleMultipleSubmits } from "@/utils/handleMultipleSubmits" import { useAppSelector } from "@/store/lib/hooks" +import { UiButton } from "@/components/ui/button/UiButton" type Props = { id: string | string[] @@ -119,17 +120,13 @@ const EditAnthologyRatingForm: React.FC = ({ span: 16, }} > - + ghost + /> {/* {error ?

{error}

: null} */} diff --git a/src/components/forms/ratingform/EditRatingButton.tsx b/src/components/forms/ratingform/EditRatingButton.tsx index 8e2daf2..24b9d22 100644 --- a/src/components/forms/ratingform/EditRatingButton.tsx +++ b/src/components/forms/ratingform/EditRatingButton.tsx @@ -5,6 +5,8 @@ import EditRatingForm from "./EditRatingForm" import EditAnthologyRatingForm from "./EditAnthologyRatingForm" import { Book } from "@/types/BookInterface" import { User } from "@/types/UserInterface" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiModal } from "@/components/ui/modal/UiModal" type Props = { setShowEditRating: React.Dispatch> @@ -36,16 +38,16 @@ const EditRatingButton: React.FC = ({ return ( <> -
- +
+ showModal()} + textContent="Change rating" + />
- {showEditRating && !isAnthology && ( = ({ singleBook={singleBook} /> )} - + ) } diff --git a/src/components/forms/ratingform/EditRatingForm.tsx b/src/components/forms/ratingform/EditRatingForm.tsx index 5a389cb..188e518 100644 --- a/src/components/forms/ratingform/EditRatingForm.tsx +++ b/src/components/forms/ratingform/EditRatingForm.tsx @@ -7,6 +7,7 @@ import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useEffect } from "react" import { User } from "@/types/UserInterface" import ScorePreview from "./ScorePreview" +import { UiButton } from "@/components/ui/button/UiButton" type Props = { id: string | string[] @@ -111,17 +112,13 @@ const EditRatingForm: React.FC = ({ span: 16, }} > - + ghost + /> {error ?

{error}

: null} diff --git a/src/components/forms/ratingform/RatingButton.tsx b/src/components/forms/ratingform/RatingButton.tsx index 27c57ef..416ec8a 100644 --- a/src/components/forms/ratingform/RatingButton.tsx +++ b/src/components/forms/ratingform/RatingButton.tsx @@ -7,6 +7,8 @@ import { Book } from "@/types/BookInterface" import AnthologyRatingForm from "./AnthologyRatingForm" import { User } from "@/types/UserInterface" import { useRouter } from "next/navigation" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiModal } from "@/components/ui/modal/UiModal" type Props = { setShowRating: React.Dispatch> @@ -51,16 +53,16 @@ const RatingButton: React.FC = ({ }, []) return ( <> -
- +
+ showModal()} + textContent="Submit rating" + />
- {isAnthology ? ( @@ -72,7 +74,7 @@ const RatingButton: React.FC = ({ handleCancel={handleCancel} /> )} - + ) } diff --git a/src/components/forms/ratingform/RatingForm.tsx b/src/components/forms/ratingform/RatingForm.tsx index 9af31b8..f8613ce 100644 --- a/src/components/forms/ratingform/RatingForm.tsx +++ b/src/components/forms/ratingform/RatingForm.tsx @@ -7,6 +7,7 @@ import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { User } from "@/types/UserInterface" import ScorePreview from "./ScorePreview" import { useEffect } from "react" +import { UiButton } from "@/components/ui/button/UiButton" type Props = { id: string | string[] @@ -102,17 +103,12 @@ const RatingForm: React.FC = ({ span: 16, }} > - + /> {error ?

{error}

: null} diff --git a/src/components/misc/badges/BadgeTemplate.tsx b/src/components/misc/badges/BadgeTemplate.tsx index 00d9b92..02679ce 100644 --- a/src/components/misc/badges/BadgeTemplate.tsx +++ b/src/components/misc/badges/BadgeTemplate.tsx @@ -3,6 +3,7 @@ import { Popover } from "antd" import "./popover.css" import "./icon-number.css" import Image from "next/image" +import { UiPopover } from "@/components/ui/popover/UiPopover" type Props = { badgeImageURL: string @@ -18,7 +19,7 @@ const BadgeTemplate: React.FC = ({ isVertical, }) => { return ( - + = ({ width={isVertical ? 100 : 55} height={isVertical ? 100 : 55} /> - + ) } diff --git a/src/components/misc/search/Search.tsx b/src/components/misc/search/Search.tsx index ce70ca7..588bad0 100644 --- a/src/components/misc/search/Search.tsx +++ b/src/components/misc/search/Search.tsx @@ -102,25 +102,19 @@ const SearchBar: React.FC = ({ }) return ( - <> - - - - - - + + + + + ) } diff --git a/src/components/misc/search/search.module.css b/src/components/misc/search/search.module.css index 3d7a3dc..290c6b7 100644 --- a/src/components/misc/search/search.module.css +++ b/src/components/misc/search/search.module.css @@ -40,4 +40,5 @@ align-items: center; font-size: 1rem; font-family: var(--main); + color: black; } diff --git a/src/components/ui/button/UiButton.tsx b/src/components/ui/button/UiButton.tsx new file mode 100644 index 0000000..6726917 --- /dev/null +++ b/src/components/ui/button/UiButton.tsx @@ -0,0 +1,80 @@ +import { ConfigProvider, Button } from "antd" +import Link from "next/link" +import React from "react" + +type Props = { + bgColor?: string + textColor?: string + hoverBgColor?: string + type?: "link" | "text" | "default" | "primary" | "dashed" + textContent: string + isLink?: boolean + href?: string + clickHandler?: () => void + loading?: boolean + ghost?: boolean + htmlType?: "button" | "submit" | "reset" +} + +export const UiButton = ({ + bgColor = "#000000", + textColor = "#EEEEE6", + hoverBgColor = "#095d09", + type = "primary", + textContent, + isLink = false, + href, + clickHandler, + loading = false, + ghost = false, + htmlType, +}: Props) => { + const buttonType = type === "default" || type === "dashed" ? "primary" : type + + const buttonTheme = { + components: { + Button: { + colorPrimary: bgColor, + colorText: textColor, + + colorPrimaryHover: hoverBgColor, + colorBorder: bgColor, + colorBorderHover: hoverBgColor, + + colorTextLightSolid: textColor, + colorTextHover: textColor, + }, + }, + } + return ghost ? ( + + ) : isLink ? ( + + + + + + ) : ( + + + + ) +} diff --git a/src/components/ui/input/UiInput.tsx b/src/components/ui/input/UiInput.tsx new file mode 100644 index 0000000..e4959f2 --- /dev/null +++ b/src/components/ui/input/UiInput.tsx @@ -0,0 +1,33 @@ +import { ConfigProvider, Input } from "antd" +import React from "react" + +type Props = { + handleChange: (e: any) => void + defaultValue?: T + value: T + type: string +} +export const UiInput = ({ + handleChange, + defaultValue, + value, + type, +}: Props) => { + const inputTheme = { + components: { + Input: { + colorText: "black", + }, + }, + } + return ( + + + + ) +} diff --git a/src/components/ui/modal/UiModal.tsx b/src/components/ui/modal/UiModal.tsx new file mode 100644 index 0000000..cf3bf93 --- /dev/null +++ b/src/components/ui/modal/UiModal.tsx @@ -0,0 +1,47 @@ +import { ConfigProvider, Modal } from "antd" +import React from "react" + +type Props = { + title: string + open: boolean + handleOk?: () => void + handleCancel?: () => void + confirmLoading?: boolean + children: React.ReactNode + bgColor?: string + textColor?: string +} + +export const UiModal = ({ + title, + open, + handleOk, + handleCancel, + confirmLoading, + children, + bgColor = "#095d09", + textColor = "#EEEEE6", +}: Props) => { + const modalTheme = { + components: { + Modal: { + contentBg: bgColor, + colorText: textColor, + }, + }, + } + return ( + + + {children} + + + ) +} diff --git a/src/components/ui/popover/UiPopover.tsx b/src/components/ui/popover/UiPopover.tsx new file mode 100644 index 0000000..7de67e9 --- /dev/null +++ b/src/components/ui/popover/UiPopover.tsx @@ -0,0 +1,26 @@ +import { ConfigProvider, Popover } from "antd" +import React from "react" + +type Props = { + children: React.ReactNode + popContent: React.ReactNode + popTitle: string | React.ReactNode +} + +export const UiPopover = ({ children, popTitle, popContent }: Props) => { + const popoverTheme = { + components: { + Popover: { + colorBgElevated: "#095d09", + fontFamily: "Gentium Book Plus", + }, + }, + } + return ( + + + {children} + + + ) +} diff --git a/src/components/user/Login.tsx b/src/components/user/Login.tsx index b65227b..a0fa51f 100644 --- a/src/components/user/Login.tsx +++ b/src/components/user/Login.tsx @@ -1,8 +1,9 @@ "use client" -import { Button, Modal, Form } from "antd" import { useState } from "react" import LoginForm from "./LoginForm" +import { UiButton } from "../ui/button/UiButton" +import { UiModal } from "../ui/modal/UiModal" const Login: React.FC = () => { const [loginOpen, setLoginOpen] = useState(false) @@ -23,36 +24,22 @@ const Login: React.FC = () => { setModalText() } const handleCancel = () => { - console.log("Clicked cancel button") setLoginOpen(false) } return ( <> -
- +
+
- -

{modalText}

- - {/* Or - { - setLoginOpen(false); - }} - > */} - {/* */} - {/* */} - -
+
{modalText}
+ ) } diff --git a/src/components/user/Login3D.tsx b/src/components/user/Login3D.tsx index e22ea1f..05fd3a2 100644 --- a/src/components/user/Login3D.tsx +++ b/src/components/user/Login3D.tsx @@ -1,8 +1,9 @@ "use client" -import { Button, Modal, Form } from "antd" import { useState } from "react" import LoginForm3D from "./LoginForm3D" +import { UiButton } from "../ui/button/UiButton" +import { UiModal } from "../ui/modal/UiModal" const Login: React.FC = () => { const [loginOpen, setLoginOpen] = useState(false) @@ -28,31 +29,18 @@ const Login: React.FC = () => { } return ( <> -
- +
+
- -

{modalText}

- - {/* Or - { - setLoginOpen(false); - }} - > */} - {/* */} - {/* */} - -
+
{modalText}
+ ) } diff --git a/src/components/user/LoginForm.tsx b/src/components/user/LoginForm.tsx index 6aaf777..2b3943f 100644 --- a/src/components/user/LoginForm.tsx +++ b/src/components/user/LoginForm.tsx @@ -3,6 +3,7 @@ import { Button, Form, Input } from "antd" import { useState } from "react" import { useAuth } from "@/hooks/auth-hooks/useAuth" +import { UiButton } from "../ui/button/UiButton" interface Login { setLoginOpen: React.Dispatch> @@ -117,15 +118,12 @@ const LoginForm: React.FC = ({ setLoginOpen }) => { span: 16, }} > - + />
diff --git a/src/components/user/Logout.tsx b/src/components/user/Logout.tsx index f938409..e853a82 100644 --- a/src/components/user/Logout.tsx +++ b/src/components/user/Logout.tsx @@ -1,8 +1,8 @@ "use client" -import { Button } from "antd" import { useState } from "react" import { useAuth } from "@/hooks/auth-hooks/useAuth" +import { UiButton } from "../ui/button/UiButton" const Logout: React.FC = () => { const [loadings, setLoadings] = useState([]) @@ -18,20 +18,15 @@ const Logout: React.FC = () => { }, 3000) } return ( - <> -
- -
- +
+ +
) } diff --git a/src/components/user/Logout3D.tsx b/src/components/user/Logout3D.tsx index 8bf3f69..8b0aa79 100644 --- a/src/components/user/Logout3D.tsx +++ b/src/components/user/Logout3D.tsx @@ -1,7 +1,7 @@ "use client" -import { Button } from "antd" import { useState } from "react" +import { UiButton } from "../ui/button/UiButton" const Logout3D: React.FC = () => { const [loadings, setLoadings] = useState([]) @@ -16,17 +16,14 @@ const Logout3D: React.FC = () => { } return ( <> -
- + textContent={"Logout"} + htmlType="submit" + />
) diff --git a/src/theme/theme.config.ts b/src/theme/theme.config.ts new file mode 100644 index 0000000..f02a47e --- /dev/null +++ b/src/theme/theme.config.ts @@ -0,0 +1,12 @@ +import type { ThemeConfig } from "antd" + +const theme: ThemeConfig = { + token: { + fontSize: 16, + colorPrimary: "#095d09", + colorTextBase: "#FFFFFF", + colorBgTextHover: "#FFFFFF", + }, +} + +export default theme From f81366c89dce7889e37dfae1b9e167a029dfdba4 Mon Sep 17 00:00:00 2001 From: DarrellRoberts Date: Tue, 23 Dec 2025 21:24:29 +0100 Subject: [PATCH 6/7] theme: update antd & configured provider --- src/app/(home)/books/library/page.tsx | 2 +- src/app/(home)/books/randomiser/page.tsx | 1 - src/app/(home)/brothers/stats/page.tsx | 96 +-- src/components/books/library/BookSkeleton.tsx | 28 +- .../books/randomiser/RandomSectionLeft.tsx | 17 +- .../books/randomiser/RandomSectionRight.tsx | 61 +- .../randomiser/RandomiserSkeletonFilters.tsx | 26 +- src/components/books/stats/BookStatsGenre.tsx | 1 - .../dashboard/BrotherLoadingBanner.tsx | 102 +-- .../dashboard/BrotherLoadingBooksScored.tsx | 19 +- .../dashboard/BrotherLoadingCommentCon.tsx | 69 +- .../library/BrothersLoadingProfile.tsx | 63 +- .../brothers/library/BrothersProfile.tsx | 6 +- .../brothers/stats/BrothersScores.tsx | 48 +- .../brothers/stats/BrothersSuggestedBooks.tsx | 2 +- src/components/forms/InputConfigWrapper.tsx | 26 + .../CreateUnreadBookForm.tsx | 640 +++++++++--------- .../forms/bookform-randomise/DeleteBook.tsx | 30 +- .../bookform-randomise/edit/EditForm.tsx | 2 +- .../edit/author/EditAuthorForm.tsx | 77 ++- .../edit/genre/EditGenreForm.tsx | 253 +++---- .../edit/imageURL/EditImageURLForm.tsx | 58 +- .../edit/pages/EditPagesForm.tsx | 61 +- .../edit/published/EditPublishedForm.tsx | 71 +- .../edit/title/EditTitleForm.tsx | 61 +- .../forms/commentform/CommentForm.tsx | 33 +- .../forms/commentform/EditCommentForm.tsx | 33 +- .../author/EditAuthor.tsx | 37 +- .../datemeeting/EditActualDate.tsx | 23 +- .../datemeeting/EditDate.tsx | 20 +- .../genre/EditGenre.tsx | 253 +++---- .../image/EditImage.tsx | 37 +- .../pages/EditPages.tsx | 43 +- .../published/EditPublished.tsx | 49 +- .../title/EditTitle.tsx | 39 +- .../forms/ratingform/AnthologyRatingForm.tsx | 25 +- .../ratingform/EditAnthologyRatingForm.tsx | 26 +- .../forms/ratingform/EditRatingForm.tsx | 63 +- .../forms/ratingform/RatingForm.tsx | 63 +- src/components/misc/search/Search.tsx | 41 +- .../BrotherSkeletonTableDesktop.tsx | 71 +- .../BrotherSkeletonTableTablet.tsx | 110 ++- src/components/ui/button/UiButton.tsx | 13 +- .../ui/skeleton/UiSkeletonCircle.tsx | 14 + .../ui/skeleton/UiSkeletonComment.tsx | 11 + .../ui/skeleton/UiSkeletonCover.tsx | 7 + .../ui/skeleton/UiSkeletonImage.tsx | 14 + .../ui/skeleton/UiSkeletonInput.tsx | 0 src/components/ui/skeleton/UiSkeletonText.tsx | 11 + .../ui/skeleton/UiSkeletonTitle.tsx | 15 + src/components/user/LoginForm.tsx | 82 ++- src/components/user/LoginForm3D.tsx | 81 ++- 52 files changed, 1447 insertions(+), 1587 deletions(-) create mode 100644 src/components/forms/InputConfigWrapper.tsx create mode 100644 src/components/ui/skeleton/UiSkeletonCircle.tsx create mode 100644 src/components/ui/skeleton/UiSkeletonComment.tsx create mode 100644 src/components/ui/skeleton/UiSkeletonCover.tsx create mode 100644 src/components/ui/skeleton/UiSkeletonImage.tsx create mode 100644 src/components/ui/skeleton/UiSkeletonInput.tsx create mode 100644 src/components/ui/skeleton/UiSkeletonText.tsx create mode 100644 src/components/ui/skeleton/UiSkeletonTitle.tsx diff --git a/src/app/(home)/books/library/page.tsx b/src/app/(home)/books/library/page.tsx index 3354df3..f1c150c 100644 --- a/src/app/(home)/books/library/page.tsx +++ b/src/app/(home)/books/library/page.tsx @@ -57,7 +57,7 @@ const Booklibrary: React.FC = () => {
diff --git a/src/app/(home)/books/randomiser/page.tsx b/src/app/(home)/books/randomiser/page.tsx index 238e87a..e914129 100644 --- a/src/app/(home)/books/randomiser/page.tsx +++ b/src/app/(home)/books/randomiser/page.tsx @@ -8,7 +8,6 @@ import RandomSectionRight from "@/components/books/randomiser/RandomSectionRight import RandomiserFilters from "@/components/books/randomiser/RandomiserFilters" import { useEffect, useState } from "react" import { useAppSelector } from "@/store/lib/hooks" -import { UiModal } from "@/components/ui/modal/UiModal" const RandomiserHomepage: React.FC = () => { const [randomiserBooks, setRandomiserBooks] = useState([]) diff --git a/src/app/(home)/brothers/stats/page.tsx b/src/app/(home)/brothers/stats/page.tsx index dd86cf9..760a18c 100644 --- a/src/app/(home)/brothers/stats/page.tsx +++ b/src/app/(home)/brothers/stats/page.tsx @@ -10,11 +10,12 @@ import useBookFetch from "@/hooks/fetch-hooks/useReadBookFetch" import useUserFetch from "@/hooks/fetch-hooks/useUserFetch" import BrothersScores from "@/components/brothers/stats/BrothersScores" import BrothersSuggestedBooks from "@/components/brothers/stats/BrothersSuggestedBooks" -import React, { useEffect } from "react" -import { Skeleton } from "antd" +import React from "react" import { useAppSelector } from "@/store/lib/hooks" import BrotherLoadingBooksScored from "@/components/brothers/dashboard/BrotherLoadingBooksScored" import { useMediaQuery } from "react-responsive" +import { UiSkeletonTitle } from "@/components/ui/skeleton/UiSkeletonTitle" +import { UiSkeletonCircle } from "@/components/ui/skeleton/UiSkeletonCircle" const BrothersStats: React.FC = () => { const { userData, loadingUsers } = useUserFetch( @@ -53,90 +54,13 @@ max-[450px]:text-center max-[450px]:ml-0 max-[450px]:my-8"

{!readBooks ? ( <> -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
+
+ {Array.from({ length: 5 }).map((_, index) => ( +
+ + +
+ ))}

diff --git a/src/components/books/library/BookSkeleton.tsx b/src/components/books/library/BookSkeleton.tsx index a9a99e1..55f8ab6 100644 --- a/src/components/books/library/BookSkeleton.tsx +++ b/src/components/books/library/BookSkeleton.tsx @@ -1,7 +1,6 @@ import React, { useMemo } from "react" -import { Skeleton } from "antd" -import { useAppSelector } from "@/store/lib/hooks" -import { useMediaQuery } from "react-responsive" +import { UiSkeletonCover } from "@/components/ui/skeleton/UiSkeletonCover" +import { UiSkeletonTitle } from "@/components/ui/skeleton/UiSkeletonTitle" type Props = { freq: number @@ -9,9 +8,6 @@ type Props = { } const BookSkeleton = ({ freq, noTitle }: Props) => { - const handleDesktop = useMediaQuery({ query: "(min-device-width: 601px)" }) - const isDarkMode = useAppSelector((state) => state.darkMode.darkMode) - const skeletonArray = useMemo(() => { const newArr = new Array() newArr.length = freq @@ -23,24 +19,8 @@ const BookSkeleton = ({ freq, noTitle }: Props) => {
{skeletonArray?.map((node) => (
- {noTitle ? null : ( - - )} -
- -
-
-
+ {!noTitle && } +
))}
diff --git a/src/components/books/randomiser/RandomSectionLeft.tsx b/src/components/books/randomiser/RandomSectionLeft.tsx index 1151149..6f1c1f6 100644 --- a/src/components/books/randomiser/RandomSectionLeft.tsx +++ b/src/components/books/randomiser/RandomSectionLeft.tsx @@ -1,5 +1,4 @@ import React from "react" -import LoaderNoText from "@/components/loader/LoaderNoText" import CreateUnreadBook from "@/components/forms/bookform-randomise/CreateUnreadBook" import { Book } from "@/types/BookInterface" import { User } from "@/types/UserInterface" @@ -7,6 +6,7 @@ import { useAuth } from "@/hooks/auth-hooks/useAuth" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setIndex } from "@/store/lib/features/randomise/randomiseSlice" import { Skeleton } from "antd" +import { UiSkeletonImage } from "@/components/ui/skeleton/UiSkeletonImage" type Props = { loadingBooks: boolean @@ -34,18 +34,9 @@ const RandomSectionLeft: React.FC = ({
{loadingBooks && loadingUsers ? ( - - - - +
+ +
) : ( bookData?.map((book) => (
= ({ bookData, error, userData }) => { const showRandom = useAppSelector((state) => state.randomise.showRandom) const { decodedToken } = useAuth() const adminId = process.env.NEXT_PUBLIC_ADMIN_ID - const isDarkMode = useAppSelector((state) => state.darkMode.darkMode) - const handleDesktop = useMediaQuery({ query: "(min-device-width: 601px)" }) const findUser = (id) => { const user = userData?.find((user) => user._id === id) @@ -43,52 +40,24 @@ const RandomSectionRight: React.FC = ({ bookData, error, userData }) => { > {!bookData ? ( <> -
- -
    -
  • - Author:{" "} - +
    + +
      +
    • + Author:
    • -
    • - Published:{" "} - +
    • + Published: +
    • -
    • - Pages:{" "} - +
    • + Pages:
    • -
    • - Genre:{" "} - +
    • + Genre:
    • -
    • - Suggested by: - +
    • + Suggested by:
    diff --git a/src/components/books/randomiser/RandomiserSkeletonFilters.tsx b/src/components/books/randomiser/RandomiserSkeletonFilters.tsx index 18f8f50..5024400 100644 --- a/src/components/books/randomiser/RandomiserSkeletonFilters.tsx +++ b/src/components/books/randomiser/RandomiserSkeletonFilters.tsx @@ -1,3 +1,5 @@ +import { UiSkeletonCircle } from "@/components/ui/skeleton/UiSkeletonCircle" +import { UiSkeletonTitle } from "@/components/ui/skeleton/UiSkeletonTitle" import { useAppSelector } from "@/store/lib/hooks" import { Skeleton } from "antd" import React, { useMemo } from "react" @@ -7,28 +9,12 @@ type Props = { } const RandomiserSkeletonFilters: React.FC = ({ freq }) => { - const isDarkMode = useAppSelector((state) => state.darkMode.darkMode) - - const skeletonArray = useMemo(() => { - const newArr = new Array() - newArr.length = freq - newArr.fill(1) - return newArr.map((_, index) => index * freq) - }, [freq]) return ( <> - {skeletonArray?.map((node) => ( -
    - - + {Array.from({ length: freq }).map((_, index) => ( +
    + +
    ))} diff --git a/src/components/books/stats/BookStatsGenre.tsx b/src/components/books/stats/BookStatsGenre.tsx index 13063de..816a2d1 100644 --- a/src/components/books/stats/BookStatsGenre.tsx +++ b/src/components/books/stats/BookStatsGenre.tsx @@ -1,5 +1,4 @@ import Graph from "@/components/graphs/brothers/Graph" -import LoaderNoText from "@/components/loader/LoaderNoText" import { genreAverageScore } from "@/utils/stat-functions/scoreFunctions" import { Book } from "@/types/BookInterface" import React from "react" diff --git a/src/components/brothers/dashboard/BrotherLoadingBanner.tsx b/src/components/brothers/dashboard/BrotherLoadingBanner.tsx index a29f7ce..2c959d1 100644 --- a/src/components/brothers/dashboard/BrotherLoadingBanner.tsx +++ b/src/components/brothers/dashboard/BrotherLoadingBanner.tsx @@ -1,26 +1,17 @@ import BookSkeleton from "@/components/books/library/BookSkeleton" -import { useAppSelector } from "@/store/lib/hooks" -import { Button, Skeleton } from "antd" +import { UiButton } from "@/components/ui/button/UiButton" +import { UiSkeletonCircle } from "@/components/ui/skeleton/UiSkeletonCircle" +import { UiSkeletonImage } from "@/components/ui/skeleton/UiSkeletonImage" +import { UiSkeletonTitle } from "@/components/ui/skeleton/UiSkeletonTitle" import React from "react" const BrotherLoadingBanner = () => { - const isDarkMode = useAppSelector((state) => state.darkMode.darkMode) return ( <>
    -
    - - +
    + +
    @@ -28,43 +19,16 @@ const BrotherLoadingBanner = () => { Achievements

- - - - + + + +
-
- +
+
@@ -72,56 +36,28 @@ const BrotherLoadingBanner = () => {

Worst book

-
- -
+

Best book

-
- -
+

Books read

-
- -
+

Average Score

- +
- - + +
) diff --git a/src/components/brothers/dashboard/BrotherLoadingBooksScored.tsx b/src/components/brothers/dashboard/BrotherLoadingBooksScored.tsx index 905afe4..d2b76e6 100644 --- a/src/components/brothers/dashboard/BrotherLoadingBooksScored.tsx +++ b/src/components/brothers/dashboard/BrotherLoadingBooksScored.tsx @@ -1,13 +1,20 @@ import React from "react" import { Skeleton } from "antd" import { useAppSelector } from "@/store/lib/hooks" +import { UiSkeletonText } from "@/components/ui/skeleton/UiSkeletonText" +import { UiSkeletonCircle } from "@/components/ui/skeleton/UiSkeletonCircle" const BrotherLoadingBooksScored: React.FC = () => { const isDarkMode = useAppSelector((state) => state.darkMode.darkMode) return ( <>
- + + + + + {/* { shape="circle" size="small" style={{ filter: isDarkMode ? "invert(1)" : "invert(0)" }} - /> + /> */}
+
- + + + {/* @@ -44,7 +55,7 @@ const BrotherLoadingBooksScored: React.FC = () => { + /> */}
) diff --git a/src/components/brothers/dashboard/BrotherLoadingCommentCon.tsx b/src/components/brothers/dashboard/BrotherLoadingCommentCon.tsx index 2d72cb2..0fbca4e 100644 --- a/src/components/brothers/dashboard/BrotherLoadingCommentCon.tsx +++ b/src/components/brothers/dashboard/BrotherLoadingCommentCon.tsx @@ -1,74 +1,17 @@ import React from "react" import { Skeleton } from "antd" import { useAppSelector } from "@/store/lib/hooks" +import { UiSkeletonComment } from "@/components/ui/skeleton/UiSkeletonComment" const BrotherLoadingCommentCon: React.FC = () => { const isDarkMode = useAppSelector((state) => state.darkMode.darkMode) return (
-
- - - - -
-
- - - - -
-
- - - - -
-
- - - - +
+ + + +
) diff --git a/src/components/brothers/library/BrothersLoadingProfile.tsx b/src/components/brothers/library/BrothersLoadingProfile.tsx index aca34bc..97d8cc9 100644 --- a/src/components/brothers/library/BrothersLoadingProfile.tsx +++ b/src/components/brothers/library/BrothersLoadingProfile.tsx @@ -2,26 +2,15 @@ import React from "react" import { Skeleton } from "antd" import { useAppSelector } from "@/store/lib/hooks" import { useMediaQuery } from "react-responsive" +import { UiSkeletonTitle } from "@/components/ui/skeleton/UiSkeletonTitle" +import { UiSkeletonImage } from "@/components/ui/skeleton/UiSkeletonImage" const BrothersLoadingProfile: React.FC = () => { - const isDarkMode = useAppSelector((state) => state.darkMode.darkMode) - const handleDesktop = useMediaQuery({ query: "(min-device-width: 640px)" }) return (
-
- - +
+ +
@@ -29,25 +18,17 @@ const BrothersLoadingProfile: React.FC = () => {
  • Location
  • -
    +
  • - City:{" "} - + City: +
  • -
    +
  • - Country:{" "} - + Country: +
  • @@ -56,31 +37,15 @@ const BrothersLoadingProfile: React.FC = () => { Favourite Genres
    -
    - -
    +
  • Last rating given
  • - Book:{" "} - + Book:
  • - Score:{" "} - + Score:
  • diff --git a/src/components/brothers/library/BrothersProfile.tsx b/src/components/brothers/library/BrothersProfile.tsx index 056a778..2d31b42 100644 --- a/src/components/brothers/library/BrothersProfile.tsx +++ b/src/components/brothers/library/BrothersProfile.tsx @@ -165,11 +165,7 @@ const BrothersProfile: React.FC = ({ user, readBooks, userData }) => {
    - + Click the photo on the left to view more details diff --git a/src/components/brothers/stats/BrothersScores.tsx b/src/components/brothers/stats/BrothersScores.tsx index aa59009..a73c607 100644 --- a/src/components/brothers/stats/BrothersScores.tsx +++ b/src/components/brothers/stats/BrothersScores.tsx @@ -1,47 +1,47 @@ -import Filters from "@/components/graphs/brothers/Filters"; -import Graph from "@/components/graphs/brothers/Graph"; -import LoaderNoText from "@/components/loader/LoaderNoText"; -import { averageScore } from "@/utils/stat-functions/scoreFunctions"; -import { User } from "@/types/UserInterface"; -import React, { useState, useEffect } from "react"; +import Filters from "@/components/graphs/brothers/Filters" +import Graph from "@/components/graphs/brothers/Graph" +import LoaderNoText from "@/components/loader/LoaderNoText" +import { averageScore } from "@/utils/stat-functions/scoreFunctions" +import { User } from "@/types/UserInterface" +import React, { useState, useEffect } from "react" type Props = { - loadingBooks: boolean; - loadingUsers: boolean; - userData: User[]; -}; + loadingBooks: boolean + loadingUsers: boolean + userData: User[] +} const BrothersScores: React.FC = ({ loadingBooks, loadingUsers, userData, }) => { - const [fetchedData, setFetchedData] = useState(); + const [fetchedData, setFetchedData] = useState() - const userGraphData = userData ? [...userData] : []; + const userGraphData = userData ? [...userData] : [] const sortBooksLowest = () => { setFetchedData( userGraphData?.sort((a, b) => averageScore(a) - averageScore(b)) - ); - }; + ) + } const sortBooksHighest = () => { setFetchedData( userGraphData?.sort((a, b) => averageScore(a) - averageScore(b)).reverse() - ); - }; + ) + } const sortBooksDefault = () => { - setFetchedData(userGraphData?.sort()); - }; + setFetchedData(userGraphData?.sort()) + } useEffect(() => { - sortBooksDefault(); - }, [loadingBooks, loadingUsers]); + sortBooksDefault() + }, [loadingBooks, loadingUsers]) return ( <> - {fetchedData?.length <= 0 ? ( + {fetchedData?.length === 0 ? ( ) : ( <> @@ -59,7 +59,7 @@ const BrothersScores: React.FC = ({ )} - ); -}; + ) +} -export default BrothersScores; +export default BrothersScores diff --git a/src/components/brothers/stats/BrothersSuggestedBooks.tsx b/src/components/brothers/stats/BrothersSuggestedBooks.tsx index 039347c..a73e7c6 100644 --- a/src/components/brothers/stats/BrothersSuggestedBooks.tsx +++ b/src/components/brothers/stats/BrothersSuggestedBooks.tsx @@ -38,7 +38,7 @@ const BrothersSuggestedBooks: React.FC = ({ userData, bookData }) => { createSuggestedTitlesMap() return ( <> - {bookData?.length <= 0 ? ( + {bookData?.length === 0 ? ( ) : ( <> diff --git a/src/components/forms/InputConfigWrapper.tsx b/src/components/forms/InputConfigWrapper.tsx new file mode 100644 index 0000000..b89d3c5 --- /dev/null +++ b/src/components/forms/InputConfigWrapper.tsx @@ -0,0 +1,26 @@ +import { ConfigProvider } from "antd" +import React from "react" + +type Props = { + children: React.ReactNode +} + +export const InputConfigWrapper = ({ children }: Props) => { + const inputTheme = { + components: { + Input: { + colorText: "black", + }, + Select: { + colorText: "black", + colorBgBase: "black", + colorBorder: "black", + colorIcon: "red", + }, + DatePicker: { + colorText: "black", + }, + }, + } + return {children} +} diff --git a/src/components/forms/bookform-randomise/CreateUnreadBookForm.tsx b/src/components/forms/bookform-randomise/CreateUnreadBookForm.tsx index 8f67530..3b4a53d 100644 --- a/src/components/forms/bookform-randomise/CreateUnreadBookForm.tsx +++ b/src/components/forms/bookform-randomise/CreateUnreadBookForm.tsx @@ -6,6 +6,8 @@ import { useEffect, useState } from "react" import { editBookButtonSlice } from "@/store/lib/features/books/editBookButtonsSlice" import { setShowCreate } from "@/store/lib/features/auth/editButtonsSlice" import { UiInput } from "@/components/ui/input/UiInput" +import { InputConfigWrapper } from "../InputConfigWrapper" +import { UiButton } from "@/components/ui/button/UiButton" const { Option } = Select @@ -55,343 +57,317 @@ const CreateBook: React.FC = () => { remember: true, }} > - {/* Title */} - + {/* Title */} + - - dispatch(setFormData({ ...formData, title: e.target.value })) - } - value={formData["title"]} - type="text" - /> - + ]} + > + + dispatch(setFormData({ ...formData, title: e.target.value })) + } + value={formData["title"]} + /> + - {/* Author */} - 4 && - value?.length < 30 - ) { - setErrorObject({ ...errorObject, author: true }) - return Promise.resolve() - } - setErrorObject({ ...errorObject, author: false }) - return Promise.reject() + {/* Author */} + 4 && + value?.length < 30 + ) { + setErrorObject({ ...errorObject, author: true }) + return Promise.resolve() + } + setErrorObject({ ...errorObject, author: false }) + return Promise.reject() + }, + message: + "Please write the name of the author. It must be more than 4 characters and no special characters nor numbers are allowed", }, - message: - "Please write the name of the author. It must be more than 4 characters and no special characters nor numbers are allowed", - }, - ]} - > - - dispatch(setFormData({ ...formData, author: e.target.value })) - } - value={formData["author"]} - type="text" - /> - + ]} + > + + dispatch(setFormData({ ...formData, author: e.target.value })) + } + value={formData["author"]} + /> + - - {/* - dispatch( - setFormData({ ...formData, pages: Number(e.target.value) }) - ) - } - value={formData["pages"]} - /> */} - - dispatch( - setFormData({ ...formData, pages: Number(e.target.value) }) - ) - } - value={formData["pages"]} - type="number" - /> - + ]} + > + + dispatch( + setFormData({ ...formData, pages: Number(e.target.value) }) + ) + } + value={formData["pages"]} + /> + - - {/* - dispatch( - setFormData({ - ...formData, - yearPublished: Number(e.target.value), - }) - ) - } - value={formData["yearPublished"]} - /> */} - - dispatch( - setFormData({ - ...formData, - yearPublished: Number(e.target.value), - }) - ) - } - value={formData["yearPublished"]} - type="number" - /> - + ]} + > + + dispatch( + setFormData({ + ...formData, + yearPublished: Number(e.target.value), + }) + ) + } + value={formData["yearPublished"]} + /> + - {/* select genres */} - - - + + - {/* ImageURL */} - - No image URL?? Let me help with that. Click{" "} - - here - {" "} - you lazy bastard, find one you like, right-click and copy - the image URL and paste it in the above field - - ) - return Promise.reject() - } - if (imageRegex.test(value)) { - setErrorObject({ ...errorObject, imageURL: true }) - setNoImageMessage("") - return Promise.resolve() - } else if (value && !imageRegex.test(value)) { - setErrorObject({ ...errorObject, imageURL: false }) - return Promise.reject() - } + {/* ImageURL */} + + No image URL?? Let me help with that. Click{" "} + + here + {" "} + you lazy bastard, find one you like, right-click and + copy the image URL and paste it in the above field + + ) + return Promise.reject() + } + if (imageRegex.test(value)) { + setErrorObject({ ...errorObject, imageURL: true }) + setNoImageMessage("") + return Promise.resolve() + } else if (value && !imageRegex.test(value)) { + setErrorObject({ ...errorObject, imageURL: false }) + return Promise.reject() + } + }, + message: + "URLs must end in either .jpg, .jpeg, .png, .svg, or .webp", }, - message: - "URLs must end in either .jpg, .jpeg, .png, .svg, or .webp", - }, - ]} - > - {/* - dispatch(setFormData({ ...formData, imageURL: e.target.value })) - } - value={formData["imageURL"]} - /> */} - - dispatch(setFormData({ ...formData, imageURL: e.target.value })) - } - value={formData["imageURL"]} - type="text" - /> - + ]} + > + + dispatch(setFormData({ ...formData, imageURL: e.target.value })) + } + value={formData["imageURL"]} + /> + + {/* Submission */} { span: 16, }} > - + clickHandler={() => (error ? null : handleLoading())} + ghost + />
    {error ? ( diff --git a/src/components/forms/bookform-randomise/DeleteBook.tsx b/src/components/forms/bookform-randomise/DeleteBook.tsx index 97633ea..47f487c 100644 --- a/src/components/forms/bookform-randomise/DeleteBook.tsx +++ b/src/components/forms/bookform-randomise/DeleteBook.tsx @@ -1,6 +1,6 @@ "use client" -import { Button, Popconfirm } from "antd" +import { ConfigProvider, Popconfirm } from "antd" import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch } from "@/store/lib/hooks" import { setIsRefresh } from "@/store/lib/features/auth/editButtonsSlice" @@ -25,29 +25,39 @@ const DeleteBook: React.FC = ({ id }) => { setTimeout(() => { resolve(null) dispatch(setIsRefresh(false)) - // document.location.reload() }, 3000) }) + + const popTheme = { + components: { + Popconfirm: { + colorText: "black", + colorTextHeading: "black", + colorBg: "black", + }, + }, + } return ( - <> + - +
    + +
    {error ? (

    {error}

    ) : null} - +
    ) } diff --git a/src/components/forms/bookform-randomise/edit/EditForm.tsx b/src/components/forms/bookform-randomise/edit/EditForm.tsx index 00fc0c3..0f1663f 100644 --- a/src/components/forms/bookform-randomise/edit/EditForm.tsx +++ b/src/components/forms/bookform-randomise/edit/EditForm.tsx @@ -1,4 +1,4 @@ -import { Button, Form } from "antd" +import { Form } from "antd" import React, { useEffect, useState } from "react" import EditAuthorForm from "./author/EditAuthorForm" import EditTitleForm from "./title/EditTitleForm" diff --git a/src/components/forms/bookform-randomise/edit/author/EditAuthorForm.tsx b/src/components/forms/bookform-randomise/edit/author/EditAuthorForm.tsx index 54e4f71..7bc0bfd 100644 --- a/src/components/forms/bookform-randomise/edit/author/EditAuthorForm.tsx +++ b/src/components/forms/bookform-randomise/edit/author/EditAuthorForm.tsx @@ -3,6 +3,7 @@ import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Form, Input } from "antd" +import { InputConfigWrapper } from "../../../InputConfigWrapper" const EditAuthorForm = ({ errorObject, setErrorObject }) => { const formData = useAppSelector((state) => state.bookFormData.formData) @@ -10,44 +11,46 @@ const EditAuthorForm = ({ errorObject, setErrorObject }) => { const dispatch = useAppDispatch() return ( - = 30 - ) { - setErrorObject({ ...errorObject, author: false }) - return Promise.reject() - } - if ( - nameRegex.test(value) && - value.length > 4 && - value.length < 30 - ) { - setErrorObject({ ...errorObject, author: true }) - return Promise.resolve() - } + + = 30 + ) { + setErrorObject({ ...errorObject, author: false }) + return Promise.reject() + } + if ( + nameRegex.test(value) && + value.length > 4 && + value.length < 30 + ) { + setErrorObject({ ...errorObject, author: true }) + return Promise.resolve() + } + }, + message: + "Please write the name of the author. It must be more than 4 characters and no special characters nor numbers are allowed", }, - message: - "Please write the name of the author. It must be more than 4 characters and no special characters nor numbers are allowed", - }, - ]} - > - - dispatch(setFormData({ ...formData, author: e.target.value })) - } - value={author} - /> - + ]} + > + + dispatch(setFormData({ ...formData, author: e.target.value })) + } + value={author} + /> + + ) } diff --git a/src/components/forms/bookform-randomise/edit/genre/EditGenreForm.tsx b/src/components/forms/bookform-randomise/edit/genre/EditGenreForm.tsx index e2753ad..04046c1 100644 --- a/src/components/forms/bookform-randomise/edit/genre/EditGenreForm.tsx +++ b/src/components/forms/bookform-randomise/edit/genre/EditGenreForm.tsx @@ -3,6 +3,7 @@ import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Form, Select, Space } from "antd" +import { InputConfigWrapper } from "../../../InputConfigWrapper" const { Option } = Select @@ -11,131 +12,133 @@ const EditGenreForm = () => { const genre = useAppSelector((state) => state.bookFormData.formData.genre) const dispatch = useAppDispatch() return ( - - - + + + + + ) } diff --git a/src/components/forms/bookform-randomise/edit/imageURL/EditImageURLForm.tsx b/src/components/forms/bookform-randomise/edit/imageURL/EditImageURLForm.tsx index 1e20f8c..1818049 100644 --- a/src/components/forms/bookform-randomise/edit/imageURL/EditImageURLForm.tsx +++ b/src/components/forms/bookform-randomise/edit/imageURL/EditImageURLForm.tsx @@ -3,6 +3,7 @@ import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Form, Input } from "antd" +import { InputConfigWrapper } from "../../../InputConfigWrapper" const EditImageURLForm = ({ errorObject, setErrorObject }) => { const formData = useAppSelector((state) => state.bookFormData.formData) @@ -11,34 +12,37 @@ const EditImageURLForm = ({ errorObject, setErrorObject }) => { ) const dispatch = useAppDispatch() return ( - + - - dispatch(setFormData({ ...formData, imageURL: e.target.value })) - } - value={imageURL} - /> - + ]} + > + + dispatch(setFormData({ ...formData, imageURL: e.target.value })) + } + value={imageURL} + /> + + ) } diff --git a/src/components/forms/bookform-randomise/edit/pages/EditPagesForm.tsx b/src/components/forms/bookform-randomise/edit/pages/EditPagesForm.tsx index 6f27425..3b3bd37 100644 --- a/src/components/forms/bookform-randomise/edit/pages/EditPagesForm.tsx +++ b/src/components/forms/bookform-randomise/edit/pages/EditPagesForm.tsx @@ -3,41 +3,46 @@ import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Form, Input } from "antd" +import { InputConfigWrapper } from "../../../InputConfigWrapper" const EditPagesForm = ({ errorObject, setErrorObject }) => { const formData = useAppSelector((state) => state.bookFormData.formData) const pages = useAppSelector((state) => state.bookFormData.formData.pages) const dispatch = useAppDispatch() return ( - + - - dispatch(setFormData({ ...formData, pages: Number(e.target.value) })) - } - value={pages} - /> - + ]} + > + + dispatch( + setFormData({ ...formData, pages: Number(e.target.value) }) + ) + } + value={pages} + /> + + ) } diff --git a/src/components/forms/bookform-randomise/edit/published/EditPublishedForm.tsx b/src/components/forms/bookform-randomise/edit/published/EditPublishedForm.tsx index 8548fc7..817f026 100644 --- a/src/components/forms/bookform-randomise/edit/published/EditPublishedForm.tsx +++ b/src/components/forms/bookform-randomise/edit/published/EditPublishedForm.tsx @@ -3,6 +3,7 @@ import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Form, Input } from "antd" +import { InputConfigWrapper } from "../../../InputConfigWrapper" const EditPublishedForm = ({ errorObject, setErrorObject }) => { const formData = useAppSelector((state) => state.bookFormData.formData) @@ -11,41 +12,43 @@ const EditPublishedForm = ({ errorObject, setErrorObject }) => { ) const dispatch = useAppDispatch() return ( - + - - dispatch( - setFormData({ - ...formData, - yearPublished: Number(e.target.value), - }) - ) - } - value={yearPublished} - /> - + ]} + > + + dispatch( + setFormData({ + ...formData, + yearPublished: Number(e.target.value), + }) + ) + } + value={yearPublished} + /> + + ) } diff --git a/src/components/forms/bookform-randomise/edit/title/EditTitleForm.tsx b/src/components/forms/bookform-randomise/edit/title/EditTitleForm.tsx index 94eaf93..9ef6ace 100644 --- a/src/components/forms/bookform-randomise/edit/title/EditTitleForm.tsx +++ b/src/components/forms/bookform-randomise/edit/title/EditTitleForm.tsx @@ -3,42 +3,45 @@ import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { Form, Input } from "antd" +import { InputConfigWrapper } from "../../../InputConfigWrapper" const EditTitleForm = ({ errorObject, setErrorObject }) => { const formData = useAppSelector((state) => state.bookFormData.formData) const title = useAppSelector((state) => state.bookFormData.formData.title) const dispatch = useAppDispatch() return ( - = 40) { - setErrorObject({ ...errorObject, title: false }) - return Promise.reject() - } - if (textRegex.test(value) && value.length < 40) { - setErrorObject({ ...errorObject, title: true }) - return Promise.resolve() - } + + = 40) { + setErrorObject({ ...errorObject, title: false }) + return Promise.reject() + } + if (textRegex.test(value) && value.length < 40) { + setErrorObject({ ...errorObject, title: true }) + return Promise.resolve() + } + }, + message: + "Please write the title of the book. No special characters allowed", }, - message: - "Please write the title of the book. No special characters allowed", - }, - ]} - > - - dispatch(setFormData({ ...formData, title: e.target.value })) - } - value={title} - /> - + ]} + > + + dispatch(setFormData({ ...formData, title: e.target.value })) + } + value={title} + /> + + ) } diff --git a/src/components/forms/commentform/CommentForm.tsx b/src/components/forms/commentform/CommentForm.tsx index 6f56196..843c8aa 100644 --- a/src/components/forms/commentform/CommentForm.tsx +++ b/src/components/forms/commentform/CommentForm.tsx @@ -5,6 +5,7 @@ import useForm from "@/hooks/crud-hooks/useForm" import { useAppDispatch, useAppSelector } from "@/store/lib/hooks" import { setFormData } from "@/store/lib/features/books/bookFormDataSlice" import { UiButton } from "@/components/ui/button/UiButton" +import { InputConfigWrapper } from "../InputConfigWrapper" const { TextArea } = Input @@ -49,21 +50,23 @@ const CommentForm = ({ id, handleCancel }: Props) => { }} > {/* comment */} - -