From 259fc8af9779dfbb04052829f2e53279c0d151b2 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Sat, 29 Nov 2025 09:28:10 +0330 Subject: [PATCH] create category themee --- src/config/Pages.ts | 5 ++ src/pages/theme/Create.tsx | 90 +++++++++++++++++++++++ src/pages/theme/List.tsx | 31 ++++++++ src/pages/theme/enum/Enum.ts | 4 + src/pages/theme/hooks/useThemeData.ts | 19 +++++ src/pages/theme/service/ThemeService.ts | 12 +++ src/pages/theme/type/Types.ts | 6 ++ src/router/Main.tsx | 5 ++ src/shared/components/ProductsSubMenu.tsx | 5 ++ 9 files changed, 177 insertions(+) create mode 100644 src/pages/theme/Create.tsx create mode 100644 src/pages/theme/List.tsx create mode 100644 src/pages/theme/enum/Enum.ts create mode 100644 src/pages/theme/hooks/useThemeData.ts create mode 100644 src/pages/theme/service/ThemeService.ts create mode 100644 src/pages/theme/type/Types.ts diff --git a/src/config/Pages.ts b/src/config/Pages.ts index 3ba84e5..265e62c 100644 --- a/src/config/Pages.ts +++ b/src/config/Pages.ts @@ -154,6 +154,11 @@ export const Pages = { attributes: "/products/category/attributes/", }, products: { + theme: { + list: "/products/theme", + create: "/products/theme/create", + update: "/products/theme/update/", + }, create: "/products/create", list: "/products/list", variants: "/products/variants/", diff --git a/src/pages/theme/Create.tsx b/src/pages/theme/Create.tsx new file mode 100644 index 0000000..0755f8e --- /dev/null +++ b/src/pages/theme/Create.tsx @@ -0,0 +1,90 @@ +import PageTitle from '@/components/PageTitle' +import { useFormik } from 'formik' +import { type FC } from 'react' +import type { CreateThemeType } from './type/Types' +import { ThemeInputType } from './enum/Enum' +import * as Yup from 'yup' +import Input from '@/components/Input' +import Select from '@/components/Select' +import { useCreateTheme } from './hooks/useThemeData' +import { useNavigate } from 'react-router-dom' +import { Pages } from '@/config/Pages' +import { extractErrorMessage } from '@/helpers/utils' +import { toast } from 'react-toastify' +import Button from '@/components/Button' +import { TickCircle } from 'iconsax-react' + +const CreateTheme: FC = () => { + + const navigate = useNavigate() + const { mutate: createTheme, isPending } = useCreateTheme(); + + + const formik = useFormik({ + initialValues: { + title: '', + inputType: ThemeInputType.Color, + }, + validationSchema: Yup.object({ + title: Yup.string().required('عنوان تم الزامی است'), + inputType: Yup.string().required('نوع ورودی تم الزامی است'), + }), + onSubmit: (values) => { + createTheme(values, { + onSuccess: () => { + navigate(Pages.products.theme.list) + }, + onError: (error) => { + toast.error(extractErrorMessage(error)) + } + }) + }, + }) + + return ( +
+ + +
+
+ +
+ +
+