diff --git a/src/index.css b/src/index.css index 2ecae5e..f49305c 100644 --- a/src/index.css +++ b/src/index.css @@ -31,6 +31,7 @@ textarea::placeholder { @theme { --color-primary: black; + --color-primary-foreground: white; --color-secondary: #f4f5f9; --color-border: #d0d0d0; --color-description: #888888; diff --git a/src/pages/food/Create.tsx b/src/pages/food/Create.tsx index ba76cfd..74cd57f 100644 --- a/src/pages/food/Create.tsx +++ b/src/pages/food/Create.tsx @@ -6,18 +6,11 @@ import Input from '@/components/Input' import Select from '@/components/Select' import Textarea from '@/components/Textarea' import Button from '@/components/Button' +import { Checkbox } from '@/components/ui/checkbox' import CreateFoodSidebar from './components/CreateFoodSidebar' +import type { CreateFoodType } from './types/Types' + -type CreateFoodType = { - name: string - categoryId: string - order: string - ingredients: string - price: string - discountedPrice: string - preparationTime: string - description: string -} const CreateFood: FC = () => { const [isActive, setIsActive] = useState(true) @@ -34,29 +27,49 @@ const CreateFood: FC = () => { const formik = useFormik({ initialValues: { - name: '', - categoryId: '', - order: '', - ingredients: '', - price: '', - discountedPrice: '', - preparationTime: '', - description: '' + title: '', + content: '', + categoryIds: [], + price: 0, + discount: 0, + points: 0, + prepareTime: 0, + stock: 0, + stockDefault: 0, + rate: 0, + breakfast: false, + noon: false, + dinner: false, + mon: false, + tue: false, + wed: false, + thu: false, + fri: false, + sat: false, + sun: false, + isPickup: false, + pickupServe: false, + inPlaceServe: false, + isActive: true, + images: [] }, validationSchema: Yup.object().shape({ - name: Yup.string().required('نام غذا الزامی است'), - categoryId: Yup.string().required('دسته‌بندی الزامی است'), - order: Yup.string().required('ترتیب نمایش الزامی است'), - ingredients: Yup.string().required('مواد تشکیل دهنده الزامی است'), - price: Yup.string().required('قیمت الزامی است'), - preparationTime: Yup.string().required('زمان آماده‌سازی الزامی است') + title: Yup.string().required('نام غذا الزامی است'), + categoryIds: Yup.array().min(1, 'حداقل یک دسته‌بندی الزامی است'), + price: Yup.number().required('قیمت الزامی است').min(0, 'قیمت باید مثبت باشد'), + prepareTime: Yup.number().required('زمان آماده‌سازی الزامی است').min(0, 'زمان آماده‌سازی باید مثبت باشد'), + stock: Yup.number().required('موجودی الزامی است').min(0, 'موجودی باید مثبت باشد'), + stockDefault: Yup.number().required('موجودی پیش‌فرض الزامی است').min(0, 'موجودی پیش‌فرض باید مثبت باشد'), + points: Yup.number().min(0, 'امتیاز باید مثبت باشد'), + discount: Yup.number().min(0, 'تخفیف باید مثبت باشد'), + rate: Yup.number().min(0, 'امتیاز باید مثبت باشد').max(5, 'امتیاز نمی‌تواند بیشتر از ۵ باشد') }), onSubmit: async (values) => { + const imageUrls = imageFiles.map(file => URL.createObjectURL(file)) console.log('Form values:', { ...values, isActive, - isSpecial, - images: imageFiles + images: imageUrls }) } }) @@ -85,88 +98,228 @@ const CreateFood: FC = () => {
-
+
{ + const value = e.target.value + formik.setFieldValue('categoryIds', value ? [value] : []) + }} + error_text={formik.touched.categoryIds && formik.errors.categoryIds ? String(formik.errors.categoryIds) : ''} />
-
- -
- -
+
formik.setFieldValue('price', Number(e.target.value))} error_text={formik.touched.price && formik.errors.price ? formik.errors.price : ''} /> formik.setFieldValue('discount', Number(e.target.value))} + error_text={formik.touched.discount && formik.errors.discount ? formik.errors.discount : ''} + /> + + formik.setFieldValue('points', Number(e.target.value))} + error_text={formik.touched.points && formik.errors.points ? formik.errors.points : ''} + /> +
+ +
+ formik.setFieldValue('prepareTime', Number(e.target.value))} + error_text={formik.touched.prepareTime && formik.errors.prepareTime ? formik.errors.prepareTime : ''} + /> + + formik.setFieldValue('stock', Number(e.target.value))} + error_text={formik.touched.stock && formik.errors.stock ? formik.errors.stock : ''} + /> + + formik.setFieldValue('stockDefault', Number(e.target.value))} + error_text={formik.touched.stockDefault && formik.errors.stockDefault ? formik.errors.stockDefault : ''} />
formik.setFieldValue('rate', Number(e.target.value))} + error_text={formik.touched.rate && formik.errors.rate ? formik.errors.rate : ''} />