From 4b9e797665d85ccf6d4582f81d216b8b68c396e6 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Mon, 20 Oct 2025 15:35:25 +0330 Subject: [PATCH] product list --- src/components/Switch.tsx | 50 ++++++++++ src/config/Paths.tsx | 6 ++ src/index.css | 4 + src/pages/order/List.tsx | 11 +++ src/pages/order/MyOrders.tsx | 118 ----------------------- src/pages/order/NewOrder.tsx | 73 -------------- src/pages/order/OrderDetail.tsx | 154 ------------------------------ src/pages/order/enum/OrderEnum.ts | 7 -- src/pages/product/List.tsx | 102 ++++++++++++++++++++ src/router/MainRouter.tsx | 10 +- 10 files changed, 177 insertions(+), 358 deletions(-) create mode 100644 src/components/Switch.tsx create mode 100644 src/pages/order/List.tsx delete mode 100644 src/pages/order/MyOrders.tsx delete mode 100644 src/pages/order/NewOrder.tsx delete mode 100644 src/pages/order/OrderDetail.tsx delete mode 100644 src/pages/order/enum/OrderEnum.ts create mode 100644 src/pages/product/List.tsx diff --git a/src/components/Switch.tsx b/src/components/Switch.tsx new file mode 100644 index 0000000..3701f48 --- /dev/null +++ b/src/components/Switch.tsx @@ -0,0 +1,50 @@ +import { Fragment } from 'react' +import { Switch } from '@headlessui/react' +import MoonLoader from 'react-spinners/MoonLoader' + +interface Props { + active: boolean, + onChange: (value: boolean) => void, + isLoading?: boolean, + label?: string, +} + +const SwitchComponent = (props: Props) => { + + const handleChange = (value: boolean) => { + props.onChange(value) + } + + if (props.isLoading) { + return ( + + ) + } + + return ( +
+ + {({ checked }) => ( + + )} + + { + props.label && +
+ : {props.label} +
+ } +
+ ) +} + +export default SwitchComponent diff --git a/src/config/Paths.tsx b/src/config/Paths.tsx index d7adeb6..e1a3751 100644 --- a/src/config/Paths.tsx +++ b/src/config/Paths.tsx @@ -2,6 +2,12 @@ export const Paths = { requests: { list: '/requests', }, + product: { + list: '/product/list' + }, + order: { + list: '/order/list' + }, home: '/home', myOrders: '/my-orders', proformaInvoice: '/proforma-invoice', diff --git a/src/index.css b/src/index.css index a0e1f33..02f1f61 100644 --- a/src/index.css +++ b/src/index.css @@ -75,3 +75,7 @@ tbody tr:nth-child(odd) { .rowTwoInput { @apply flex flex-col items-start sm:flex-row sm:gap-5 gap-5; } + +.dltr { + direction: ltr; +} diff --git a/src/pages/order/List.tsx b/src/pages/order/List.tsx new file mode 100644 index 0000000..2af3ea6 --- /dev/null +++ b/src/pages/order/List.tsx @@ -0,0 +1,11 @@ +import { type FC } from 'react' + +const OrdersList: FC = () => { + return ( +
+

سفارش ها

+
+ ) +} + +export default OrdersList \ No newline at end of file diff --git a/src/pages/order/MyOrders.tsx b/src/pages/order/MyOrders.tsx deleted file mode 100644 index c4dc0d3..0000000 --- a/src/pages/order/MyOrders.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import Tabs from '@/components/Tabs' -import { useState, type FC } from 'react' -import { TabMyOrdersEnum } from './enum/OrderEnum' -import Filters from '@/components/Filters' -import Button from '@/components/Button' -import { AddSquare } from 'iconsax-react' -import Table from '@/components/Table' - -const MyOrders: FC = () => { - - const [activeTab, setActiveTab] = useState(TabMyOrdersEnum.ALL) - return ( -
-

- سفارشات من -

- -
- setActiveTab(tab as TabMyOrdersEnum)} - /> -
- -
- { }} - /> - - -
- -
- - - - ) -} - -export default MyOrders \ No newline at end of file diff --git a/src/pages/order/NewOrder.tsx b/src/pages/order/NewOrder.tsx deleted file mode 100644 index cfeffbe..0000000 --- a/src/pages/order/NewOrder.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import Button from '@/components/Button' -import Input from '@/components/Input' -import Select from '@/components/Select' -import UploadBox from '@/components/UploadBox' -import VoiceRecorder from '@/components/VoiceRecorder' -import { COLORS } from '@/constants/colors' -import { AddSquare } from 'iconsax-react' -import { type FC } from 'react' - -const NewOrder: FC = () => { - return ( -
-

- سفارش جدید -

- -
-
اطلاعات سفارش
- -
- - - -
- -
- { - console.log('ضبط صدا تکمیل شد:', blob) - }} - /> -
- -
- -
- -
- -
-
-
- ) -} - -export default NewOrder \ No newline at end of file diff --git a/src/pages/order/OrderDetail.tsx b/src/pages/order/OrderDetail.tsx deleted file mode 100644 index 4646308..0000000 --- a/src/pages/order/OrderDetail.tsx +++ /dev/null @@ -1,154 +0,0 @@ -import { type FC, useState } from 'react' -import { Microphone, Paperclip2, Receipt1 } from 'iconsax-react' -import Button from '@/components/Button' -import UploadBox from '@/components/UploadBox' -import Input from '@/components/Input' - -const OrderDetail: FC = () => { - const [message, setMessage] = useState('') - const [files, setFiles] = useState([]) - - const orderData = { - orderId: '۱۲۲۴۵', - title: 'شاپینگ بک', - designer: 'عباس حسینی', - quantity: '۱۰۰', - estimatedDate: '۱۴۰۵/۰۶/۰۶/۱۳', - description: 'لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاق...' - } - - const handleSubmit = () => { - console.log('Submit:', { message, files }) - } - - return ( -
- {/* Header Section */} -
- - -
- سفارش #{orderData.orderId} -
-
- - {/* Order Information Section */} -
-
-

اطلاعات سفارش

- - - - پیش فاکتور - -
-
- {/* Product Image */} -
-
- - {/* Order Details */} -
-
-
عنوان:
-
{orderData.title}
-
-
-
نام طرح:
-
{orderData.designer}
-
-
-
تعداد:
-
{orderData.quantity}
-
-
-
تخمین زمان:
-
{orderData.estimatedDate}
-
-
-
- - {/* Order Description */} -
-
شرح سفارش:
-

- {orderData.description} -

-
-
- - {/* Bottom Section - White Card */} -
- {/* Designer Name */} -
- -
- -
-
- لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، -
- -
-
- -
loremipsum.pdf
-
-
-
- -
' -
-
-
طراح :
-
عباس حسینی
-
-
- لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، -
-
-
- - - -
-
پیام شما
-
-