diff --git a/app/blog/[slug]/page.js b/app/blog/[slug]/page.js index 165a233..57c57aa 100644 --- a/app/blog/[slug]/page.js +++ b/app/blog/[slug]/page.js @@ -1,6 +1,5 @@ import axios from "axios"; import BlogPage from "@/components/blog"; -import articles from "@/data/articles.json"; import Layout from "@/components/layout/StLayout"; async function Blog({ params: { slug } }) { @@ -11,7 +10,6 @@ async function Blog({ params: { slug } }) { const resBlog = blog.data; const resBlogs = blogs.data; - console.log(resBlogs); return ( diff --git a/app/component/EditField.js b/app/component/EditField.js index 495a107..5981b0e 100644 --- a/app/component/EditField.js +++ b/app/component/EditField.js @@ -20,7 +20,7 @@ function EditField({ { if (typeof option === "string") return option; diff --git a/app/dashboard/page.js b/app/dashboard/page.js index 1128b56..615a402 100644 --- a/app/dashboard/page.js +++ b/app/dashboard/page.js @@ -2,6 +2,7 @@ import Content from "@/components/dashboard/Content"; import { defineAbilitiesFor } from "@/lib/ability"; import { getUser } from "@/lib/auth"; import { getStateInfo } from "@/lib/getStateInfo"; +import axios from "axios"; import { cookies, headers } from "next/headers"; import { redirect } from "next/navigation"; @@ -11,6 +12,16 @@ export default async function Dashboard() { const ability = defineAbilitiesFor(user); const cookieStore = cookies(); const token = cookieStore.get("access_token"); + const uuid = "9ef7c050-6e81-4aa2-8248-283a16635624"; + const response = await axios.get( + `https://back-dev.clinic-pro.ir/api/v1/user-profile/9ef7c050-6e81-4aa2-8248-283a16635624`, + { + headers: { + Authorization: `Bearer ${token.value}`, + }, + } + ); + const dashboard = response.data; if (!ability.can("access", "Dashboard")) { return redirect("/"); @@ -21,8 +32,9 @@ export default async function Dashboard() { return ( ); diff --git a/components/dashboard/Content.js b/components/dashboard/Content.js index 0580d01..b9c8ffd 100644 --- a/components/dashboard/Content.js +++ b/components/dashboard/Content.js @@ -6,10 +6,11 @@ import userData from "@/data/userData.json"; import DashboardPage from "@/components/dashboard"; import UserAccountPage from "./userAccount"; -function Content({ matchedCity, logged, initialIsOpenSide }) { +function Content({ matchedCity, logged, initialIsOpenSide, dataUser }) { const [value, setValue] = useState(0); const [isOpenSide, setIsOpenSide] = useState(initialIsOpenSide); const [isTurnsDetails, setIsTurnsDetails] = useState(false); + console.log(dataUser); return ( , diff --git a/components/dashboard/userAccount/detailUser/information/Form.js b/components/dashboard/userAccount/detailUser/information/Form.js index 2686a82..e5481a9 100644 --- a/components/dashboard/userAccount/detailUser/information/Form.js +++ b/components/dashboard/userAccount/detailUser/information/Form.js @@ -1,6 +1,5 @@ import Content from "./Content"; import EditField from "@/app/component/EditField"; -import AutoCompleteSelect from "@/app/component/element/AutoCompleteSelect"; import DateBirthday from "./DateBirthday"; import { insurance, @@ -10,8 +9,11 @@ import { education, job, } from "./listSelector"; +import AutoSelector from "@/app/component/element/AutoSelector"; + +function Form({ data, changeData, selected, updateSelect }) { + const findVal = (list, name) => list.find((g) => g.id === selected[name]); -function Form({ data, changeData, updateSelect }) { return (
@@ -44,8 +46,11 @@ function Form({ data, changeData, updateSelect }) { /> - + updateSelect(name, data === "زن" ? "female" : "male") + } + value={findVal(gender, "gender")} label="جنسیت" name="gender" list={gender} @@ -68,8 +73,9 @@ function Form({ data, changeData, updateSelect }) { /> - - + updateSelect(name, blood_group.find((g) => g.label === value).id) + } + value={findVal(blood_group, "blood_group")} label="گروه خونی" name="blood_group" list={blood_group} /> - + updateSelect(name, marital_status.find((g) => g.label === value).id) + } + value={findVal(marital_status, "marital_status")} label="وضعیت تاهل" name="marital_status" list={marital_status} @@ -112,16 +124,22 @@ function Form({ data, changeData, updateSelect }) { /> - + updateSelect(name, education.find((g) => g.label === value).id) + } + value={findVal(education, "education")} label="تحصیلات" name="education" list={education} /> - + updateSelect(name, job.find((g) => g.label === value).id) + } + value={findVal(job, "job")} label="شغل" name="job" list={job} diff --git a/components/dashboard/userAccount/detailUser/information/index.js b/components/dashboard/userAccount/detailUser/information/index.js index 5356dbf..38e6947 100644 --- a/components/dashboard/userAccount/detailUser/information/index.js +++ b/components/dashboard/userAccount/detailUser/information/index.js @@ -3,27 +3,29 @@ import Form from "./Form"; import { Button } from "@mui/material"; import ArrowLeftWhiteD from "@/components/icons/ArrowLeftWhiteD"; -function Information({ user }) { +function Information({ user, dataUser }) { + const [disable, setDisable] = useState(true); const [data, setData] = useState({ - phone: { value: user.phone, isEdit: true }, - national_code: { value: user.national_code, isEdit: true }, - name: { value: user.name, isEdit: true }, - date_of_birth: { value: user.date_of_birth, isEdit: true }, - father_name: { value: user.father_name, isEdit: true }, - insurance_number: { value: user.insurance_number, isEdit: true }, - home_phone: { value: user.home_phone, isEdit: true }, + phone: { value: dataUser.work_phone, isEdit: true }, + national_code: { value: dataUser.national_code, isEdit: true }, + name: { value: dataUser.name, isEdit: true }, + date_of_birth: { value: dataUser.birthday, isEdit: true }, + father_name: { value: dataUser.fathers_name, isEdit: true }, + insurance_number: { value: dataUser.supplementary_insurance, isEdit: true }, + home_phone: { value: dataUser.home_phone, isEdit: true }, work_phone: { value: user.work_phone, isEdit: true }, }); const [selected, setSelected] = useState({ - gender: "", - blood_group: "", - insurance: "", - marital_status: "", - education: "", - job: "", + gender: dataUser.gender, + blood_group: dataUser.blood_type, + insurance: dataUser.supplementary_insurance, + marital_status: dataUser.marital_status, + education: dataUser.education, + job: dataUser.job, }); - const changeData = (value, type, name) => + const changeData = (value, type, name) => { + disable && setDisable(false); setData({ ...data, [name]: { @@ -31,17 +33,28 @@ function Information({ user }) { [type]: value, }, }); + }; - const updateSelect = (event, name) => + const updateSelect = (name, event) => { + disable && setDisable(false); setSelected({ ...selected, [name]: event }); + }; return (
-
+ + + ))} + + + ); +} + +export default List; diff --git a/components/doctor/detailDoctor/Share.js b/components/doctor/detailDoctor/Share.js index ec4c231..07d83ee 100644 --- a/components/doctor/detailDoctor/Share.js +++ b/components/doctor/detailDoctor/Share.js @@ -1,27 +1,18 @@ "use client"; -import { useState } from "react"; +import { useRef, useState } from "react"; import { styleDefault } from "@/mui"; import ShareDI from "@/components/icons/ShareDI"; import { Box, Button, Modal } from "@mui/material"; // Icons -import CopyBlueD from "@/components/icons/CopyBlueD"; import CloseModalD from "@/components/icons/CloseModalD"; -import WhatsappBlueD from "@/components/icons/WhatsappBlueD"; -import TelegramBlueD from "@/components/icons/TelegramBlueD"; -import LinkedingBlueD from "@/components/icons/LinkedingBlueD"; +import List from "./List"; +import Poster from "../poster"; -const listIcons = [ - { name: "واتساپ", icon: }, - { name: "تلگرام", icon: }, - { name: "لینکدین", icon: }, - { name: "کپی لینک", icon: }, - { name: "دانلود", icon: }, -]; - -function Share() { +function Share({ data }) { + const hiddenRef = useRef(); const [open, setOpen] = useState(false); const handleOpen = () => setOpen(true); @@ -37,12 +28,17 @@ function Share() {

اشتراک گذاری

+
+
+ +
+

@@ -60,31 +56,7 @@ function Share() {

شما می توانید این پزشک را با دیگران به اشتراک بگذارید:

-
    - {listIcons.map((item, idx) => ( -
  • - -
  • - ))} -
+
diff --git a/components/doctor/detailDoctor/index.js b/components/doctor/detailDoctor/index.js index 5492451..ff94166 100644 --- a/components/doctor/detailDoctor/index.js +++ b/components/doctor/detailDoctor/index.js @@ -9,7 +9,7 @@ function DetailDoctor({ doctor }) { return (
- +
<Link /> diff --git a/components/icons/DownloadBlue.js b/components/icons/DownloadBlue.js new file mode 100644 index 0000000..ae8295a --- /dev/null +++ b/components/icons/DownloadBlue.js @@ -0,0 +1,35 @@ +function DownloadBlue() { + return ( + <svg + xmlns="http://www.w3.org/2000/svg" + width="24" + height="24" + viewBox="0 0 24 24" + fill="none" + > + <path + d="M16.4405 8.89999C20.0405 9.20999 21.5105 11.06 21.5105 15.11V15.24C21.5105 19.71 19.7205 21.5 15.2505 21.5H8.74047C4.27047 21.5 2.48047 19.71 2.48047 15.24V15.11C2.48047 11.09 3.93047 9.23999 7.47047 8.90999" + stroke="#5559CE" + strokeWidth="1.5" + strokeLinecap="round" + strokeLinejoin="round" + /> + <path + d="M12 2V14.88" + stroke="#5559CE" + strokeWidth="1.5" + strokeLinecap="round" + strokeLinejoin="round" + /> + <path + d="M15.3484 12.65L11.9984 16L8.64844 12.65" + stroke="#5559CE" + strokeWidth="1.5" + strokeLinecap="round" + strokeLinejoin="round" + /> + </svg> + ); +} + +export default DownloadBlue; diff --git a/components/register/verificationPage/SendReq.js b/components/register/verificationPage/SendReq.js index 0312ae7..3753700 100644 --- a/components/register/verificationPage/SendReq.js +++ b/components/register/verificationPage/SendReq.js @@ -32,6 +32,13 @@ function SendReq({ secure: true, sameSite: "strict", }); + + Cookies.set("uuid", uuid, { + expires: refreshTokenExpires, + path: "/", + secure: true, + sameSite: "strict", + }); }; const handleReq = async () => { diff --git a/package-lock.json b/package-lock.json index 9de7c18..33601cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,10 +25,12 @@ "axios": "^1.7.7", "date-fns": "^3.6.0", "dayjs": "^1.11.13", + "html2canvas": "^1.4.1", "i": "^0.3.7", "jalaali-react-date-picker": "^1.0.18", "jalali-moment": "^3.3.11", "js-cookie": "^3.0.5", + "jspdf": "^3.0.1", "next": "^14.2.20", "next-themes": "^0.3.0", "npm": "^10.8.2", @@ -5730,6 +5732,13 @@ "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==", "license": "MIT" }, + "node_modules/@types/raf": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz", + "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==", + "license": "MIT", + "optional": true + }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", @@ -6835,6 +6844,18 @@ "node": ">= 4.0.0" } }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, "node_modules/autoprefixer": { "version": "10.4.20", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", @@ -7156,6 +7177,15 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -7360,6 +7390,18 @@ "node-int64": "^0.4.0" } }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -7550,6 +7592,26 @@ ], "license": "CC-BY-4.0" }, + "node_modules/canvg": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.11.tgz", + "integrity": "sha512-5ON+q7jCTgMp9cjpu4Jo6XbvfYwSB2Ow3kzHKfIyJfaCAOHLbdKPQqGKgfED/R5B+3TFFfe8pegYA+b423SRyA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/raf": "^3.4.0", + "core-js": "^3.8.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "rgbcolor": "^1.0.1", + "stackblur-canvas": "^2.0.0", + "svg-pathdata": "^6.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", @@ -8224,6 +8286,15 @@ "postcss": "^8.4" } }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "license": "MIT", + "dependencies": { + "utrie": "^1.0.2" + } + }, "node_modules/css-loader": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", @@ -9179,6 +9250,16 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz", + "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optional": true, + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "node_modules/domutils": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", @@ -10471,6 +10552,12 @@ "bser": "2.1.1" } }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" + }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -11536,6 +11623,19 @@ } } }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "license": "MIT", + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", @@ -13830,6 +13930,24 @@ "node": ">=0.10.0" } }, + "node_modules/jspdf": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-3.0.1.tgz", + "integrity": "sha512-qaGIxqxetdoNnFQQXxTKUD9/Z7AloLaw94fFsOiJMxbfYdBbrBuhWmbzI8TVjrw7s3jBY1PFHofBKMV/wZPapg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.7", + "atob": "^2.1.2", + "btoa": "^1.2.1", + "fflate": "^0.8.1" + }, + "optionalDependencies": { + "canvg": "^3.0.11", + "core-js": "^3.6.0", + "dompurify": "^3.2.4", + "html2canvas": "^1.0.0-rc.5" + } + }, "node_modules/jss": { "version": "10.10.0", "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", @@ -19538,12 +19656,6 @@ "node": ">=14" } }, - "node_modules/react-app-polyfill/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "license": "MIT" - }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", @@ -19950,6 +20062,12 @@ "node": ">=4" } }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", @@ -20233,6 +20351,16 @@ "node": ">=0.10.0" } }, + "node_modules/rgbcolor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", + "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==", + "license": "MIT OR SEE LICENSE IN FEEL-FREE.md", + "optional": true, + "engines": { + "node": ">= 0.8.15" + } + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -21115,6 +21243,16 @@ "node": ">=8" } }, + "node_modules/stackblur-canvas": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz", + "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.14" + } + }, "node_modules/stackframe": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", @@ -21805,6 +21943,16 @@ "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", "license": "MIT" }, + "node_modules/svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/svgo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", @@ -22173,6 +22321,15 @@ "node": ">=8" } }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "license": "MIT", + "dependencies": { + "utrie": "^1.0.2" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -22717,6 +22874,15 @@ "node": ">= 0.4.0" } }, + "node_modules/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "license": "MIT", + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, "node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", diff --git a/package.json b/package.json index 2fdcd99..531dca0 100644 --- a/package.json +++ b/package.json @@ -26,10 +26,12 @@ "axios": "^1.7.7", "date-fns": "^3.6.0", "dayjs": "^1.11.13", + "html2canvas": "^1.4.1", "i": "^0.3.7", "jalaali-react-date-picker": "^1.0.18", "jalali-moment": "^3.3.11", "js-cookie": "^3.0.5", + "jspdf": "^3.0.1", "next": "^14.2.20", "next-themes": "^0.3.0", "npm": "^10.8.2", diff --git a/utils/index.js b/utils/index.js index d03e027..0e0c2c3 100644 --- a/utils/index.js +++ b/utils/index.js @@ -3,6 +3,7 @@ import Cookies from "js-cookie"; const removeToken = () => { Cookies.remove("access_token", { path: "/" }); Cookies.remove("refresh_token", { path: "/" }); + Cookies.remove("uuid", { path: "/" }); }; export { removeToken };