From 52a745fcb8b5fdda5525ba88ae2bfae3790956e8 Mon Sep 17 00:00:00 2001 From: Ehsan Date: Wed, 4 Sep 2024 03:00:36 +0330 Subject: [PATCH] design dashboard comments & messages & modals --- app/dashboard/page.js | 28 ++++ app/dashboard/user-account/page.js | 13 -- components/booking/successPay/index.js | 2 +- components/dashboard/index.js | 4 +- .../dashboard/userAccount/ContentTabs.js | 75 +++++----- components/dashboard/userAccount/Head.js | 4 +- .../dashboard/userAccount/UserAccount.js | 10 +- .../userAccount/tabs/comments/Comment.js | 25 ++++ .../userAccount/tabs/comments/index.js | 2 +- .../userAccount/tabs/comments/modal/index.js | 67 +++++++++ .../userAccount/tabs/messages/Message.js | 26 ++++ .../userAccount/tabs/messages/index.js | 13 +- .../dashboard/userAccount/tabs/turns/List.js | 3 +- .../dashboard/userAccount/tabs/turns/index.js | 4 +- .../tabs/turns/isTurnsDetails/Detail.js | 66 +++++++++ .../tabs/turns/isTurnsDetails/Head.js | 36 +++++ .../tabs/turns/isTurnsDetails/index.js | 17 +++ .../tabs/turns/isTurnsDetails/modal/index.js | 65 +++++++++ components/icons/CalendarD.js | 18 +++ components/icons/CallD.js | 9 ++ components/icons/CalndarD.js | 22 +-- components/icons/CardD.js | 10 +- components/icons/EditTurnsD.js | 11 ++ components/icons/LogoutD.js | 8 +- components/icons/MessageD.js | 6 +- components/icons/MessageNotifD.js | 13 ++ components/icons/NotificationD.js | 8 +- components/icons/ProfileD.js | 8 +- components/icons/TicketD.js | 10 ++ components/icons/TrashOrangeD.js | 13 ++ components/layout/index.js | 4 +- components/layout/sidebar/List.js | 27 ++-- components/layout/sidebar/index.js | 39 ++++-- data/userData.json | 131 ++++++++++++++++-- 34 files changed, 669 insertions(+), 128 deletions(-) create mode 100644 app/dashboard/page.js delete mode 100644 app/dashboard/user-account/page.js create mode 100644 components/dashboard/userAccount/tabs/comments/modal/index.js create mode 100644 components/dashboard/userAccount/tabs/messages/Message.js create mode 100644 components/dashboard/userAccount/tabs/turns/isTurnsDetails/Detail.js create mode 100644 components/dashboard/userAccount/tabs/turns/isTurnsDetails/Head.js create mode 100644 components/dashboard/userAccount/tabs/turns/isTurnsDetails/index.js create mode 100644 components/dashboard/userAccount/tabs/turns/isTurnsDetails/modal/index.js create mode 100644 components/icons/CalendarD.js create mode 100644 components/icons/CallD.js create mode 100644 components/icons/EditTurnsD.js create mode 100644 components/icons/MessageNotifD.js create mode 100644 components/icons/TicketD.js create mode 100644 components/icons/TrashOrangeD.js diff --git a/app/dashboard/page.js b/app/dashboard/page.js new file mode 100644 index 0000000..3160d22 --- /dev/null +++ b/app/dashboard/page.js @@ -0,0 +1,28 @@ +'use client'; + +import { useState } from 'react'; + +import userData from '@/data/userData.json'; +import DashboardPage from "@/components/dashboard"; +import UserAccountPage from "@/components/dashboard/userAccount/UserAccount"; + +function UserAccount() { + + const [value, setValue] = useState(0); + + return ( + + + + ) +} + +export default UserAccount \ No newline at end of file diff --git a/app/dashboard/user-account/page.js b/app/dashboard/user-account/page.js deleted file mode 100644 index 2d88ffd..0000000 --- a/app/dashboard/user-account/page.js +++ /dev/null @@ -1,13 +0,0 @@ -import userData from '@/data/userData.json'; -import DashboardPage from "@/components/dashboard"; -import UserAccountPage from "@/components/dashboard/userAccount/UserAccount"; - -function UserAccount() { - return ( - - - - ) -} - -export default UserAccount \ No newline at end of file diff --git a/components/booking/successPay/index.js b/components/booking/successPay/index.js index e0f03a8..8967e9e 100644 --- a/components/booking/successPay/index.js +++ b/components/booking/successPay/index.js @@ -28,7 +28,7 @@ function SuccessPay({ setStep }) { - + + {/* Content Modal */} + + +
+

حذف نظر

+ +
+ +

آیا این نظر حذف شود؟

+
+ + +
+
+
+ + ) +} + +export default ModalDeleteComment \ No newline at end of file diff --git a/components/dashboard/userAccount/tabs/messages/Message.js b/components/dashboard/userAccount/tabs/messages/Message.js new file mode 100644 index 0000000..fb2acc4 --- /dev/null +++ b/components/dashboard/userAccount/tabs/messages/Message.js @@ -0,0 +1,26 @@ +import CalndarD from '@/components/icons/CalndarD' +import MessageNotifd from '@/components/icons/MessageNotifd' +import React from 'react' + +function Message({ data }) { + return ( +
  • +
    +
    + +
    +

    عنوان پیام

    +
    +
    +

    {data.text}

    +
    + +

    {data.date}

    +
    +
    + +
  • + ) +} + +export default Message \ No newline at end of file diff --git a/components/dashboard/userAccount/tabs/messages/index.js b/components/dashboard/userAccount/tabs/messages/index.js index d7ff1d9..432655b 100644 --- a/components/dashboard/userAccount/tabs/messages/index.js +++ b/components/dashboard/userAccount/tabs/messages/index.js @@ -1,6 +1,15 @@ -function Messages() { +import Message from "./Message"; + +function Messages({ user }) { return ( -
    Messages
    + ) } diff --git a/components/dashboard/userAccount/tabs/turns/List.js b/components/dashboard/userAccount/tabs/turns/List.js index 1d734d2..b26f3a0 100644 --- a/components/dashboard/userAccount/tabs/turns/List.js +++ b/components/dashboard/userAccount/tabs/turns/List.js @@ -3,7 +3,7 @@ import ArrowLeftBlueD from '@/components/icons/ArrowLeftBlueD' import { Button, TableCell, TableRow } from '@mui/material' import Image from 'next/image' -function List({ user }) { +function List({ user, setIsTurnsDetails }) { const tableHead = ['ردیف', 'نام پزشک', 'تخصص', 'تاریخ', 'ساعت', 'مبلغ (تومان)', 'عملیات'] const centerTable = [0, 5]; @@ -39,6 +39,7 @@ function List({ user }) { + +
  • + +

    تلفن: {data.phone}

    +
  • + +
    + +

    مبلغ پرداخت شده : {data.amount_paid} تومان

    +
    + + ) +} + +export default Detail \ No newline at end of file diff --git a/components/dashboard/userAccount/tabs/turns/isTurnsDetails/Head.js b/components/dashboard/userAccount/tabs/turns/isTurnsDetails/Head.js new file mode 100644 index 0000000..00ffa18 --- /dev/null +++ b/components/dashboard/userAccount/tabs/turns/isTurnsDetails/Head.js @@ -0,0 +1,36 @@ +import ArrowRightS from "@/components/icons/ArrowRightS"; +import ArrowLeftD from "@/components/icons/ArrowLeftD"; +import EditTurnsD from "@/components/icons/EditTurnsD"; +import { Button } from "@mui/material"; +import ModalDeleteComment from "./modal"; + +function Head({ user, setIsTurnsDetails }) { + return ( +
    +
    + +

    جزئیات نوبت شما

    +
    +
    + + +
    +
    + ) +} + +export default Head \ No newline at end of file diff --git a/components/dashboard/userAccount/tabs/turns/isTurnsDetails/index.js b/components/dashboard/userAccount/tabs/turns/isTurnsDetails/index.js new file mode 100644 index 0000000..4a07648 --- /dev/null +++ b/components/dashboard/userAccount/tabs/turns/isTurnsDetails/index.js @@ -0,0 +1,17 @@ + +import Detail from "./Detail" +import Head from "./Head" + +function IsTurnsDetails({ user, setIsTurnsDetails }) { + return ( +
    + + +
    + ) +} + +export default IsTurnsDetails \ No newline at end of file diff --git a/components/dashboard/userAccount/tabs/turns/isTurnsDetails/modal/index.js b/components/dashboard/userAccount/tabs/turns/isTurnsDetails/modal/index.js new file mode 100644 index 0000000..d646b60 --- /dev/null +++ b/components/dashboard/userAccount/tabs/turns/isTurnsDetails/modal/index.js @@ -0,0 +1,65 @@ +import { useState } from 'react'; +import { Box, Button, Modal } from '@mui/material'; +import { styleDefault } from '@/mui'; +import CloseModalD from '@/components/icons/CloseModalD'; + +function ModalDeleteComment() { + + const [open, setOpen] = useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + return ( +
    + {/* Button Modal */} + + {/* Content Modal */} + + +
    +

    لغو نوبت

    + +
    + +

    آیا از لغو کردن نوبت مطمئن هستید؟

    +
    + + +
    +
    +
    +
    + ) +} + +export default ModalDeleteComment \ No newline at end of file diff --git a/components/icons/CalendarD.js b/components/icons/CalendarD.js new file mode 100644 index 0000000..b643e51 --- /dev/null +++ b/components/icons/CalendarD.js @@ -0,0 +1,18 @@ +function CalendarD() { + return ( + + + + + + + + + + + + + ) +} + +export default CalendarD \ No newline at end of file diff --git a/components/icons/CallD.js b/components/icons/CallD.js new file mode 100644 index 0000000..0dda34e --- /dev/null +++ b/components/icons/CallD.js @@ -0,0 +1,9 @@ +function CallD() { + return ( + + + + ) +} + +export default CallD \ No newline at end of file diff --git a/components/icons/CalndarD.js b/components/icons/CalndarD.js index 6e7c9b6..40dedd1 100644 --- a/components/icons/CalndarD.js +++ b/components/icons/CalndarD.js @@ -1,16 +1,16 @@ -function CalndarD() { +function CalndarD({ active }) { return ( - - - - - - - - - - + + + + + + + + + + ) } diff --git a/components/icons/CardD.js b/components/icons/CardD.js index dd5e957..4de5d7a 100644 --- a/components/icons/CardD.js +++ b/components/icons/CardD.js @@ -1,10 +1,10 @@ -function CardD() { +function CardD({ active }) { return ( - - - - + + + + ) } diff --git a/components/icons/EditTurnsD.js b/components/icons/EditTurnsD.js new file mode 100644 index 0000000..2f79b97 --- /dev/null +++ b/components/icons/EditTurnsD.js @@ -0,0 +1,11 @@ +function EditTurnsD() { + return ( + + + + + + ) +} + +export default EditTurnsD \ No newline at end of file diff --git a/components/icons/LogoutD.js b/components/icons/LogoutD.js index e4717c1..8d169e5 100644 --- a/components/icons/LogoutD.js +++ b/components/icons/LogoutD.js @@ -1,9 +1,9 @@ -function LogoutD() { +function LogoutD({ active }) { return ( - - - + + + ) } diff --git a/components/icons/MessageD.js b/components/icons/MessageD.js index b186661..61776a9 100644 --- a/components/icons/MessageD.js +++ b/components/icons/MessageD.js @@ -1,8 +1,8 @@ -function MessageD() { +function MessageD({ active }) { return ( - - + + ) } diff --git a/components/icons/MessageNotifD.js b/components/icons/MessageNotifD.js new file mode 100644 index 0000000..0703f4f --- /dev/null +++ b/components/icons/MessageNotifD.js @@ -0,0 +1,13 @@ +function MessageNotifd() { + return ( + + + + + + + + ) +} + +export default MessageNotifd \ No newline at end of file diff --git a/components/icons/NotificationD.js b/components/icons/NotificationD.js index 6cedaa6..178c756 100644 --- a/components/icons/NotificationD.js +++ b/components/icons/NotificationD.js @@ -1,9 +1,9 @@ -function NotificationD() { +function NotificationD({ active }) { return ( - - - + + + ) } diff --git a/components/icons/ProfileD.js b/components/icons/ProfileD.js index 5910ff7..ad963df 100644 --- a/components/icons/ProfileD.js +++ b/components/icons/ProfileD.js @@ -1,10 +1,8 @@ -import React from 'react' - -function ProfileD() { +function ProfileD({ active }) { return ( - - + + ) } diff --git a/components/icons/TicketD.js b/components/icons/TicketD.js new file mode 100644 index 0000000..70508ef --- /dev/null +++ b/components/icons/TicketD.js @@ -0,0 +1,10 @@ +function TicketD() { + return ( + + + + + ) +} + +export default TicketD \ No newline at end of file diff --git a/components/icons/TrashOrangeD.js b/components/icons/TrashOrangeD.js new file mode 100644 index 0000000..23099e6 --- /dev/null +++ b/components/icons/TrashOrangeD.js @@ -0,0 +1,13 @@ +function TrashOrangeD() { + return ( + + + + + + + + ) +} + +export default TrashOrangeD \ No newline at end of file diff --git a/components/layout/index.js b/components/layout/index.js index 287bc3a..227e047 100644 --- a/components/layout/index.js +++ b/components/layout/index.js @@ -9,7 +9,7 @@ import "aos/dist/aos.css"; import { useEffect } from "react"; import Sidebar from './sidebar'; -function Layout({ children, title, name, disableFooter, isSidebar, user }) { +function Layout({ children, title, name, disableFooter, isSidebar, user, value, setValue }) { useEffect(() => { Aos.init({ duration: 1000 }); @@ -31,6 +31,8 @@ function Layout({ children, title, name, disableFooter, isSidebar, user }) { {isSidebar && ( )} {children} diff --git a/components/layout/sidebar/List.js b/components/layout/sidebar/List.js index 7bb8368..6fb7f1f 100644 --- a/components/layout/sidebar/List.js +++ b/components/layout/sidebar/List.js @@ -5,20 +5,17 @@ import MessageD from "@/components/icons/MessageD"; import ProfileD from "@/components/icons/ProfileD"; import NotificationD from "@/components/icons/NotificationD"; import { Button } from "@mui/material"; -import { useState } from "react"; -const listMenu = [ - { name: 'حساب کاربری', icon: }, - { name: 'نوبت های من', icon: }, - { name: 'تراکنش های من', icon: }, - { name: 'نظرات من', icon: }, - { name: 'پیام ها', icon: }, - { name: 'خروج', icon: }, -] +function List({ value, setValue }) { -function List() { - - const [active, setActive] = useState(0); + const listMenu = [ + { name: 'حساب کاربری', icon: }, + { name: 'نوبت های من', icon: }, + { name: 'تراکنش های من', icon: }, + { name: 'نظرات من', icon: }, + { name: 'پیام ها', icon: }, + { name: 'خروج', icon: }, + ]; return (
      @@ -31,17 +28,17 @@ function List() { className={`!flex !py-[24px] hover:!bg-transparent !rounded-none !w-full before:!rounded-[100px] !items-center !justify-start !gap-[8px] !relative before:!absolute before:!right-0 before:!top-1/2 before:!-translate-y-1/2 before:!h-[40px] before:!w-[2px] - ${active === idx ? + ${value === idx ? 'before:!bg-[#5559CE]' : 'before:!bg-transparent' }`} - variant="" + onClick={() => setValue(idx)} > {item.icon}

      {item.name}

      diff --git a/components/layout/sidebar/index.js b/components/layout/sidebar/index.js index f5c0f1e..be2c666 100644 --- a/components/layout/sidebar/index.js +++ b/components/layout/sidebar/index.js @@ -1,17 +1,36 @@ +import { useState } from "react" import Head from "./Head" import List from "./List" -function Sidebar({ user }) { +function Sidebar({ user, value, setValue }) { + + const [open, setOpen] = useState(false); + return ( - + // ${open ? 'lg:w-[39%]' : 'min-w-[80px]'} +
      + + +
      ) } diff --git a/data/userData.json b/data/userData.json index a1bfe7d..32c84dc 100644 --- a/data/userData.json +++ b/data/userData.json @@ -24,19 +24,27 @@ "id": 12345678, "status": "success", "expertise": "دندان پزشکی", + "location": "اهواز، کیانپارس، پهلوان شرقی، مجتمع پزشکی آویسا، واحد 12", + "phone": 6133916589, + "date_turn": "13 خرداد 1403", "date": "1403-03-27", "time": "15:30", - "amount": "2350000" + "amount": "2350000", + "amount_paid": 20000 }, { - "name": "دنیا خلیلی", - "image": "/assets/images/doctor-1.png", + "name": "علی بدیعی زاده", + "image": "/assets/images/doctor.png", "id": 12345678, "status": "success", "expertise": "دندان پزشکی", + "location": "اهواز، کیانپارس، پهلوان شرقی، مجتمع پزشکی آویسا، واحد 12", + "phone": 6133916589, + "date_turn": "13 خرداد 1403", "date": "1403-03-27", "time": "16:30", - "amount": "2350000" + "amount": "2350000", + "amount_paid": 20000 }, { "name": "دنیا خلیلی", @@ -44,9 +52,13 @@ "id": 12345678, "status": "pending", "expertise": "دندان پزشکی", + "location": "اهواز، کیانپارس، پهلوان شرقی، مجتمع پزشکی آویسا، واحد 12", + "phone": 6133916589, + "date_turn": "13 خرداد 1403", "date": "1403-03-27", "time": "17:30", - "amount": "2350000" + "amount": "2350000", + "amount_paid": 20000 }, { "name": "دنیا خلیلی", @@ -54,9 +66,13 @@ "id": 12345678, "status": "pending", "expertise": "دندان پزشکی", + "location": "اهواز، کیانپارس، پهلوان شرقی، مجتمع پزشکی آویسا، واحد 12", + "phone": 6133916589, + "date_turn": "13 خرداد 1403", "date": "1403-03-27", "time": "18:30", - "amount": "2350000" + "amount": "2350000", + "amount_paid": 20000 }, { "name": "دنیا خلیلی", @@ -64,15 +80,22 @@ "id": 12345678, "status": "failed", "expertise": "دندان پزشکی", + "location": "اهواز، کیانپارس، پهلوان شرقی، مجتمع پزشکی آویسا، واحد 12", + "phone": 6133916589, + "date_turn": "13 خرداد 1403", "date": "1403-03-27", "time": "19:30", - "amount": "2350000" + "amount": "2350000", + "amount_paid": 20000 } ], "comments": [ { "id": 1, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "میثم امیری", "location": "اهواز _ خوزستان", @@ -94,6 +117,9 @@ { "id": 1, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "میثم امیری", "location": "اهواز _ خوزستان", @@ -109,13 +135,16 @@ "information": 5, "location": 4, "security": 4, - "value": 3 + "value": 4 }, "replays": [] }, { "id": 2, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "میثم امیری", "location": "اهواز _ خوزستان", @@ -131,13 +160,16 @@ "information": 5, "location": 4, "security": 4, - "value": 3 + "value": 2 }, "replays": [] }, { "id": 3, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "میثم امیری", "location": "اهواز _ خوزستان", @@ -153,7 +185,7 @@ "information": 5, "location": 4, "security": 4, - "value": 3 + "value": 5 }, "replays": [] } @@ -162,6 +194,9 @@ { "id": 2, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "ساغر صابری", "location": "اهواز _ خوزستان", @@ -184,6 +219,9 @@ { "id": 3, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "ساغر صابری", "location": "اهواز _ خوزستان", @@ -206,6 +244,9 @@ { "id": 4, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "ساغر صابری", "location": "اهواز _ خوزستان", @@ -227,6 +268,9 @@ { "id": 1, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "میثم امیری", "location": "اهواز _ خوزستان", @@ -249,6 +293,9 @@ { "id": 2, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "میثم امیری", "location": "اهواز _ خوزستان", @@ -271,6 +318,9 @@ { "id": 3, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "میثم امیری", "location": "اهواز _ خوزستان", @@ -295,6 +345,9 @@ { "id": 5, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "ساغر صابری", "location": "اهواز _ خوزستان", @@ -317,6 +370,9 @@ { "id": 6, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "ساغر صابری", "location": "اهواز _ خوزستان", @@ -338,6 +394,9 @@ { "id": 1, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "میثم امیری", "location": "اهواز _ خوزستان", @@ -360,6 +419,9 @@ { "id": 2, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "میثم امیری", "location": "اهواز _ خوزستان", @@ -382,6 +444,9 @@ { "id": 3, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "میثم امیری", "location": "اهواز _ خوزستان", @@ -406,6 +471,9 @@ { "id": 7, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "ساغر صابری", "location": "اهواز _ خوزستان", @@ -428,6 +496,9 @@ { "id": 8, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "ساغر صابری", "location": "اهواز _ خوزستان", @@ -450,6 +521,9 @@ { "id": 9, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "ساغر صابری", "location": "اهواز _ خوزستان", @@ -472,6 +546,9 @@ { "id": 10, "is_open_answer": false, + "name_doctor": "دکتر مهران امینی", + "date": "1403-03-27", + "expertise": "چشم پزشکی", "profile": "/assets/images/doctor.png", "name": "ساغر صابری", "location": "اهواز _ خوزستان", @@ -491,6 +568,40 @@ }, "replays": [] } + ], + "messages": [ + { + "text": "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است.", + "date": "1402/11/13" + }, + { + "text": "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است.", + "date": "1402/11/14" + }, + { + "text": "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است.", + "date": "1402/11/15" + }, + { + "text": "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است.", + "date": "1402/11/16" + }, + { + "text": "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است.", + "date": "1402/11/17" + }, + { + "text": "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است.", + "date": "1402/11/18" + }, + { + "text": "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است.", + "date": "1402/11/19" + }, + { + "text": "لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است.", + "date": "1402/11/20" + } ] } } \ No newline at end of file