diff --git a/dist/layout.js b/dist/layout.js index f3555d8..c098962 100644 --- a/dist/layout.js +++ b/dist/layout.js @@ -1,208 +1,165 @@ -import { jsx as e, jsxs as g, Fragment as F } from "react/jsx-runtime"; -import { Box as I, HStack as u, VStack as C, Image as j, Text as s, useDisclosure as J, Stack as K, Tooltip as T, IconButton as Z, Icon as d, Drawer as q, DrawerOverlay as $, DrawerContent as _, DrawerCloseButton as AA, DrawerHeader as eA, DrawerBody as oA, SimpleGrid as nA, Link as tA } from "@chakra-ui/react"; -import { useRef as rA, Children as gA, isValidElement as lA, forwardRef as aA } from "react"; -import { FiMoreHorizontal as iA } from "react-icons/fi/index.js"; -import { IoExit as cA } from "react-icons/io5/index.js"; -import { usePermission as IA, logoutKeycloakFromRuntime as sA } from "./core-runtime.js"; -const dA = "data:image/webp;base64,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MCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE4LTA4LTEzVDE0OjI1OjUzKzA0OjMwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE4LTA4LTEzVDE0OjI1OjUzKzA0OjMwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOC0wOC0xM1QxNDoyNTo1MyswNDozMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOC0wOC0xM1QxNDoyNTo1MyswNDozMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDoxMDU3ZjgxNy03YTEzLThiNGEtODc1Ni1lYWM1MWEyZDRiYTY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTgtMDgtMTNUMTQ6MjU6NTMrMDQ6MzA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MDZjNmM4ODYtZDY2My1jMzQzLTkwZTUtNjQ4ZWJlYTkxYzgxPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjEwNTdmODE3LTdhMTMtOGI0YS04NzU2LWVhYzUxYTJkNGJhNjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NWI3ZmJlNDgtMDc0ZS01NzRhLWFlNTctN2RmYjA4NmI1N2Q3PC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjA2YzZjODg2LWQ2NjMtYzM0My05MGU1LTY0OGViZWE5MWM4MTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9maWxlPnNSR0IgSUVDNjE5NjYtMi4xPC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4KICAgICAgICAgICAgPHJkZjpCYWc+CiAgICAgICAgICAgICAgIDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmEwYjgxNWMzLTkzYjMtODU0MC04NmY0LTA0OTEyZTY5Y2Y4NTwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpCYWc+CiAgICAgICAgIDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4K"; -function CA({ children: o, ...A }) { - return /* @__PURE__ */ e( +import { jsx as o, jsxs as g, Fragment as $ } from "react/jsx-runtime"; +import { Box as I, HStack as u, VStack as C, Image as B, Text as d, useDisclosure as _, Stack as AA, Tooltip as P, IconButton as f, Icon as s, Drawer as oA, DrawerOverlay as eA, DrawerContent as nA, DrawerCloseButton as rA, DrawerHeader as tA, DrawerBody as gA, SimpleGrid as lA, Link as aA } from "@chakra-ui/react"; +import { forwardRef as x, useRef as iA, Children as cA, isValidElement as IA } from "react"; +import { usePermission as dA, logoutKeycloakFromRuntime as sA } from "./core-runtime.js"; +const CA = "data:image/webp;base64,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MCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE4LTA4LTEzVDE0OjI1OjUzKzA0OjMwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE4LTA4LTEzVDE0OjI1OjUzKzA0OjMwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxOC0wOC0xM1QxNDoyNTo1MyswNDozMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOC0wOC0xM1QxNDoyNTo1MyswNDozMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDoxMDU3ZjgxNy03YTEzLThiNGEtODc1Ni1lYWM1MWEyZDRiYTY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTgtMDgtMTNUMTQ6MjU6NTMrMDQ6MzA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MDZjNmM4ODYtZDY2My1jMzQzLTkwZTUtNjQ4ZWJlYTkxYzgxPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjEwNTdmODE3LTdhMTMtOGI0YS04NzU2LWVhYzUxYTJkNGJhNjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NWI3ZmJlNDgtMDc0ZS01NzRhLWFlNTctN2RmYjA4NmI1N2Q3PC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjA2YzZjODg2LWQ2NjMtYzM0My05MGU1LTY0OGViZWE5MWM4MTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9maWxlPnNSR0IgSUVDNjE5NjYtMi4xPC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4KICAgICAgICAgICAgPHJkZjpCYWc+CiAgICAgICAgICAgICAgIDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmEwYjgxNWMzLTkzYjMtODU0MC04NmY0LTA0OTEyZTY5Y2Y4NTwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpCYWc+CiAgICAgICAgIDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4K"; +function pA({ children: e, ...A }) { + return /* @__PURE__ */ o( I, { as: "header", w: "100%", - h: { base: "64px", lg: "110px" }, - flexShrink: 0, + h: "110px", borderBottom: "1px", borderColor: "gray.200", bg: "#4299E1", - px: { base: 3, sm: 4, lg: "20px" }, + px: "20px", + zIndex: 10, + position: "fixed", color: "white", ...A, - children: /* @__PURE__ */ e( - u, - { - h: "100%", - w: "100%", - minW: 0, - alignItems: "center", - justifyContent: "space-between", - children: o - } - ) + children: /* @__PURE__ */ o(u, { h: "100%", alignItems: "center", justifyContent: "space-between", children: e }) } ); } -function bA({ children: o, ...A }) { - return /* @__PURE__ */ e( - u, - { - alignItems: "center", - h: "100%", - minW: 0, - flex: "1", - spacing: { base: 2.5, lg: 3 }, - py: { base: "6px", lg: "10px" }, - ...A, - children: o - } - ); +function bA({ children: e, ...A }) { + return /* @__PURE__ */ o(u, { alignItems: "center", h: "100%", py: "10px", ...A, children: e }); } -function pA(o) { - return /* @__PURE__ */ e( - j, - { - loading: "lazy", - alt: "logo", - w: { base: "46px", lg: "80px" }, - maxW: { base: "46px", lg: "80px" }, - maxH: { base: "48px", lg: "80px" }, - objectFit: "contain", - flexShrink: 0, - ...o - } - ); +function hA(e) { + return /* @__PURE__ */ o(B, { loading: "lazy", alt: "logo", maxW: "80px", maxH: "80px", ...e }); } -function hA({ children: o, ...A }) { - return /* @__PURE__ */ e( +function uA({ children: e, ...A }) { + return /* @__PURE__ */ o( C, { alignItems: "start", justifyContent: "center", h: "100%", - minW: 0, - flex: "1", - spacing: { base: 0, lg: 1 }, + spacing: 1, ...A, - children: o + children: e } ); } -function uA({ children: o, ...A }) { - return /* @__PURE__ */ e( - s, - { - w: "100%", - fontWeight: "bold", - fontSize: { base: "15px", lg: "20px" }, - lineHeight: "short", - noOfLines: 1, - ...A, - children: o - } - ); +function xA({ children: e, ...A }) { + return /* @__PURE__ */ o(d, { fontWeight: "bold", fontSize: "20px", ...A, children: e }); } -function xA({ children: o, ...A }) { - return /* @__PURE__ */ e( - s, - { - w: "100%", - fontSize: { base: "10px", sm: "11px", lg: "16px" }, - lineHeight: { base: "shorter", lg: "normal" }, - noOfLines: 1, - ...A, - children: o - } - ); +function mA({ children: e, ...A }) { + return /* @__PURE__ */ o(d, { ...A, children: e }); } -function mA({ logoSrc: o = dA, ...A }) { +function RA({ logoSrc: e = CA, ...A }) { return /* @__PURE__ */ g( C, { w: "fit-content", - flexShrink: 0, alignItems: "center", justifyContent: "center", - spacing: { base: 0, lg: 1 }, - py: { base: "6px", lg: "10px" }, + py: "10px", ...A, children: [ - /* @__PURE__ */ e( - j, - { - src: o, - alt: "نشان مؤسسه باقرالعلوم", - loading: "lazy", - w: { base: "38px", lg: "90px" }, - maxH: { base: "46px", lg: "72px" }, - objectFit: "contain" - } - ), - /* @__PURE__ */ e( - s, - { - display: { base: "none", lg: "block" }, - fontSize: "xs", - fontWeight: "bold", - textAlign: "center", - whiteSpace: "nowrap", - children: "مؤسسه تولید سیستم‌های خبره و هوشمند اسلامی باقرالعلوم(ع)" - } - ) + /* @__PURE__ */ o(B, { src: e, loading: "lazy", maxW: "90px" }), + /* @__PURE__ */ o(d, { fontSize: "xs", fontWeight: "bold", textAlign: "center", children: "مؤسسه تولید سیستم‌های خبره و هوشمند اسلامی باقرالعلوم(ع)" }) ] } ); } -const SA = Object.assign(CA, { +const WA = Object.assign(pA, { BrandSection: bA, - Logo: pA, - Brand: hA, - Title: uA, - Description: xA, - Bi: mA -}), E = (o = "") => { - const A = String(o).split(/[?#]/)[0] || ""; - return !A || A === "/" ? A || "/" : A.replace(/\/+$/, ""); -}, P = (o, A) => { - const t = E(o); - return [A == null ? void 0 : A.path, ...(A == null ? void 0 : A.aliases) || []].filter(Boolean).map(E).some( - (l) => t === l || t.startsWith(`${l}/`) - ); -}, MA = (o = [], A) => o.find((t) => P(A, t)), G = aA( - ({ linkComponent: o, href: A, children: t, ...r }, l) => /* @__PURE__ */ e(tA, { ref: l, href: A, ...o ? { as: o } : {}, ...r, children: t }) + Logo: hA, + Brand: uA, + Title: xA, + Description: mA, + Bi: RA +}), v = x( + ({ title: e, children: A, width: r = "1em", height: t = "1em", ...l }, a) => /* @__PURE__ */ g( + "svg", + { + ref: a, + xmlns: "http://www.w3.org/2000/svg", + width: r, + height: t, + viewBox: "0 0 24 24", + fill: "none", + stroke: "currentColor", + strokeWidth: "2", + strokeLinecap: "round", + strokeLinejoin: "round", + "aria-hidden": e ? void 0 : !0, + role: e ? "img" : void 0, + ...l, + children: [ + e && /* @__PURE__ */ o("title", { children: e }), + A + ] + } + ) ); -G.displayName = "SidebarLink"; -const RA = ({ - item: o, +v.displayName = "SvgIcon"; +const Q = x((e, A) => /* @__PURE__ */ g(v, { ref: A, strokeWidth: "3", ...e, children: [ + /* @__PURE__ */ o("circle", { cx: "12", cy: "12", r: "1" }), + /* @__PURE__ */ o("circle", { cx: "19", cy: "12", r: "1" }), + /* @__PURE__ */ o("circle", { cx: "5", cy: "12", r: "1" }) +] })); +Q.displayName = "MoreHorizontalIcon"; +const O = x((e, A) => /* @__PURE__ */ g(v, { ref: A, strokeWidth: "3", ...e, children: [ + /* @__PURE__ */ o("path", { d: "m16 17 5-5-5-5" }), + /* @__PURE__ */ o("path", { d: "M21 12H9" }), + /* @__PURE__ */ o("path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" }) +] })); +O.displayName = "ExitIcon"; +const T = (e = "") => { + const A = String(e).split(/[?#]/)[0] || ""; + return !A || A === "/" ? A || "/" : A.replace(/\/+$/, ""); +}, L = (e, A) => { + const r = T(e); + return [A == null ? void 0 : A.path, ...(A == null ? void 0 : A.aliases) || []].filter(Boolean).map(T).some( + (l) => r === l || r.startsWith(`${l}/`) + ); +}, MA = (e = [], A) => e.find((r) => L(A, r)), W = x( + ({ linkComponent: e, href: A, children: r, ...t }, l) => /* @__PURE__ */ o(aA, { ref: l, href: A, ...e ? { as: e } : {}, ...t, children: r }) +); +W.displayName = "SidebarLink"; +const yA = ({ + item: e, isActive: A, - isDisabled: t, - linkComponent: r, + isDisabled: r, + linkComponent: t, onNavigate: l }) => { const a = { variant: A ? "solid" : "ghost", colorScheme: A ? "blue" : void 0, - icon: /* @__PURE__ */ e(d, { as: o.icon }), + icon: /* @__PURE__ */ o(s, { as: e.icon }), fontSize: "xl", size: { base: "sm", lg: "lg" }, - "aria-label": o.title, + "aria-label": e.title, "aria-current": A ? "page" : void 0 }; - let b; - if (t || A) - b = /* @__PURE__ */ e( - Z, + let p; + if (r || A) + p = /* @__PURE__ */ o( + f, { ...a, - isDisabled: t, - cursor: A && !t ? "default" : void 0 + isDisabled: r, + cursor: A && !r ? "default" : void 0 } ); else { - const x = r ? { as: r, href: o.path } : { as: "a", href: o.path }; - b = /* @__PURE__ */ e( - Z, + const m = t ? { as: t, href: e.path } : { as: "a", href: e.path }; + p = /* @__PURE__ */ o( + f, { ...a, - ...x, + ...m, onClick: l } ); } - return /* @__PURE__ */ e( - T, + return /* @__PURE__ */ o( + P, { - label: t ? "عدم دسترسی" : o.title, + label: r ? "عدم دسترسی" : e.title, placement: "left-start", hasArrow: !0, rounded: "md", @@ -210,14 +167,14 @@ const RA = ({ px: 4, fontWeight: "bold", closeDelay: 150, - children: /* @__PURE__ */ e(I, { as: "span", children: b }) + children: /* @__PURE__ */ o(I, { as: "span", children: p }) } ); -}, fA = ({ - item: o, +}, wA = ({ + item: e, isActive: A, - isDisabled: t, - linkComponent: r, + isDisabled: r, + linkComponent: t, onNavigate: l }) => { const a = /* @__PURE__ */ g( @@ -232,12 +189,12 @@ const RA = ({ borderRadius: "xl", color: A ? "blue.600" : "gray.600", bg: A ? "blue.50" : "transparent", - opacity: t ? 0.4 : 1, + opacity: r ? 0.4 : 1, transition: "background-color 150ms ease, color 150ms ease", children: [ - /* @__PURE__ */ e(d, { as: o.icon, boxSize: 5 }), - /* @__PURE__ */ e( - s, + /* @__PURE__ */ o(s, { as: e.icon, boxSize: 5 }), + /* @__PURE__ */ o( + d, { as: "span", w: "full", @@ -246,28 +203,28 @@ const RA = ({ lineHeight: "short", textAlign: "center", noOfLines: 1, - children: o.mobileTitle || o.title + children: e.mobileTitle || e.title } ) ] } ); - return t || A ? /* @__PURE__ */ e( + return r || A ? /* @__PURE__ */ o( I, { flex: "1", minW: 0, display: "flex", alignItems: "center", - "aria-disabled": t ? "true" : void 0, + "aria-disabled": r ? "true" : void 0, "aria-current": A ? "page" : void 0, children: a } - ) : /* @__PURE__ */ e( - G, + ) : /* @__PURE__ */ o( + W, { - linkComponent: r, - href: o.path, + linkComponent: t, + href: e.path, flex: "1", minW: 0, display: "flex", @@ -278,29 +235,29 @@ const RA = ({ children: a } ); -}, B = () => null, wA = ({ - items: o = [], +}, V = () => null, DA = ({ + items: e = [], currentPath: A, - linkComponent: t, - onNavigate: r, + linkComponent: r, + onNavigate: t, children: l, primaryMobileCount: a = 4, - moreTitle: b = "بیشتر", - moreDrawerTitle: x = "سایر بخش‌های سامانه", - desktopProps: Q, - mobileProps: O + moreTitle: p = "بیشتر", + moreDrawerTitle: m = "سایر بخش‌های سامانه", + desktopProps: U, + mobileProps: H }) => { - var k, Y; - const { isOpen: L, onOpen: V, onClose: m } = J(), W = rA(), { cannot: U } = IA(), c = gA.toArray(l).find( - (n) => lA(n) && n.type === B - ), R = !!c, f = ((k = c == null ? void 0 : c.props) == null ? void 0 : k.title) || "خروج", v = ((Y = c == null ? void 0 : c.props) == null ? void 0 : Y.icon) || cA, H = A ?? (typeof window < "u" ? `${window.location.pathname}${window.location.search}` : ""), X = o.slice(0, a), w = o.slice(a), D = (n) => (Array.isArray(n == null ? void 0 : n.perm) ? n.perm : [n == null ? void 0 : n.perm]).filter(Boolean).some((i) => U(i)), p = (n) => P(H, n), y = w.some(p), S = w.length > 0 || R, M = (n) => { - r == null || r(n), m(); - }, z = () => { - m(), sA(); + var N, E; + const { isOpen: X, onOpen: F, onClose: R } = _(), M = iA(), { cannot: J } = dA(), c = cA.toArray(l).find( + (n) => IA(n) && n.type === V + ), y = !!c, w = ((N = c == null ? void 0 : c.props) == null ? void 0 : N.title) || "خروج", S = ((E = c == null ? void 0 : c.props) == null ? void 0 : E.icon) || O, K = A ?? (typeof window < "u" ? `${window.location.pathname}${window.location.search}` : ""), q = e.slice(0, a), D = e.slice(a), Z = (n) => (Array.isArray(n == null ? void 0 : n.perm) ? n.perm : [n == null ? void 0 : n.perm]).filter(Boolean).some((i) => J(i)), b = (n) => L(K, n), G = D.some(b), z = D.length > 0 || y, k = (n) => { + t == null || t(n), R(); + }, Y = () => { + R(), sA(); }; - return /* @__PURE__ */ g(F, { children: [ - /* @__PURE__ */ e( - K, + return /* @__PURE__ */ g($, { children: [ + /* @__PURE__ */ o( + AA, { py: 6, as: "nav", @@ -316,23 +273,23 @@ const RA = ({ msOverflowStyle: "none" }, display: { base: "none", lg: "flex" }, - ...Q, + ...U, children: /* @__PURE__ */ g(C, { spacing: 2, children: [ - o.map((n) => /* @__PURE__ */ e( - RA, + e.map((n) => /* @__PURE__ */ o( + yA, { item: n, - isDisabled: D(n), - isActive: p(n), - linkComponent: t, - onNavigate: () => r == null ? void 0 : r(n) + isDisabled: Z(n), + isActive: b(n), + linkComponent: r, + onNavigate: () => t == null ? void 0 : t(n) }, n.path )), - R && /* @__PURE__ */ e( - T, + y && /* @__PURE__ */ o( + P, { - label: f, + label: w, placement: "left-start", hasArrow: !0, rounded: "md", @@ -340,15 +297,15 @@ const RA = ({ px: 4, fontWeight: "bold", closeDelay: 150, - children: /* @__PURE__ */ e( - Z, + children: /* @__PURE__ */ o( + f, { variant: "ghost", - icon: /* @__PURE__ */ e(d, { as: v }), + icon: /* @__PURE__ */ o(s, { as: S }), fontSize: "xl", size: { base: "sm", lg: "lg" }, - "aria-label": f, - onClick: z + "aria-label": w, + onClick: Y } ) } @@ -356,7 +313,7 @@ const RA = ({ ] }) } ), - /* @__PURE__ */ e( + /* @__PURE__ */ o( I, { as: "nav", @@ -371,24 +328,24 @@ const RA = ({ borderColor: "gray.200", boxShadow: "0 -6px 18px rgba(0, 0, 0, 0.08)", pb: "env(safe-area-inset-bottom)", - ...O, + ...H, children: /* @__PURE__ */ g(u, { h: "56px", px: 1.5, spacing: 1, align: "stretch", children: [ - X.map((n) => /* @__PURE__ */ e( - fA, + q.map((n) => /* @__PURE__ */ o( + wA, { item: n, - isDisabled: D(n), - isActive: p(n), - linkComponent: t, - onNavigate: () => M(n) + isDisabled: Z(n), + isActive: b(n), + linkComponent: r, + onNavigate: () => k(n) }, n.path )), - S && /* @__PURE__ */ e( + z && /* @__PURE__ */ o( I, { as: "button", - ref: W, + ref: M, type: "button", flex: "1", minW: 0, @@ -401,7 +358,7 @@ const RA = ({ alignItems: "center", justifyContent: "center", cursor: "pointer", - onClick: V, + onClick: F, "aria-label": "نمایش سایر بخش‌ها", children: /* @__PURE__ */ g( C, @@ -411,17 +368,17 @@ const RA = ({ py: 1, px: 1, borderRadius: "xl", - color: y ? "blue.600" : "gray.600", - bg: y ? "blue.50" : "transparent", + color: G ? "blue.600" : "gray.600", + bg: G ? "blue.50" : "transparent", children: [ - /* @__PURE__ */ e(d, { as: iA, boxSize: 5 }), - /* @__PURE__ */ e( - s, + /* @__PURE__ */ o(s, { as: Q, boxSize: 5 }), + /* @__PURE__ */ o( + d, { fontSize: "10px", - fontWeight: y ? "bold" : "medium", + fontWeight: G ? "bold" : "medium", lineHeight: "short", - children: b + children: p } ) ] @@ -432,27 +389,27 @@ const RA = ({ ] }) } ), - S && /* @__PURE__ */ g( - q, + z && /* @__PURE__ */ g( + oA, { - isOpen: L, + isOpen: X, placement: "bottom", - onClose: m, - finalFocusRef: W, + onClose: R, + finalFocusRef: M, children: [ - /* @__PURE__ */ e($, {}), + /* @__PURE__ */ o(eA, {}), /* @__PURE__ */ g( - _, + nA, { borderTopRadius: "2xl", maxH: "min(78dvh, 620px)", pb: "env(safe-area-inset-bottom)", children: [ - /* @__PURE__ */ e(AA, { insetInlineEnd: 3, insetInlineStart: "auto" }), - /* @__PURE__ */ e(eA, { borderBottomWidth: "1px", fontSize: "md", children: x }), - /* @__PURE__ */ g(oA, { py: 4, overflowY: "auto", children: [ - /* @__PURE__ */ e(nA, { columns: 4, spacing: 2, children: w.map((n) => { - const h = D(n), i = p(n), N = /* @__PURE__ */ g( + /* @__PURE__ */ o(rA, { insetInlineEnd: 3, insetInlineStart: "auto" }), + /* @__PURE__ */ o(tA, { borderBottomWidth: "1px", fontSize: "md", children: m }), + /* @__PURE__ */ g(gA, { py: 4, overflowY: "auto", children: [ + /* @__PURE__ */ o(lA, { columns: 4, spacing: 2, children: D.map((n) => { + const h = Z(n), i = b(n), j = /* @__PURE__ */ g( C, { h: "70px", @@ -467,9 +424,9 @@ const RA = ({ color: i ? "blue.700" : "gray.700", opacity: h ? 0.4 : 1, children: [ - /* @__PURE__ */ e(d, { as: n.icon, boxSize: 5, flexShrink: 0 }), - /* @__PURE__ */ e( - s, + /* @__PURE__ */ o(s, { as: n.icon, boxSize: 5, flexShrink: 0 }), + /* @__PURE__ */ o( + d, { w: "full", fontSize: "10px", @@ -483,28 +440,28 @@ const RA = ({ ] } ); - return h || i ? /* @__PURE__ */ e( + return h || i ? /* @__PURE__ */ o( I, { "aria-disabled": h ? "true" : void 0, "aria-current": i ? "page" : void 0, - children: N + children: j }, n.path - ) : /* @__PURE__ */ e( - G, + ) : /* @__PURE__ */ o( + W, { - linkComponent: t, + linkComponent: r, href: n.path, _hover: { textDecoration: "none" }, - onClick: () => M(n), + onClick: () => k(n), "aria-current": i ? "page" : void 0, - children: N + children: j }, n.path ); }) }), - R && /* @__PURE__ */ e(I, { mt: 4, pt: 4, borderTopWidth: "1px", borderColor: "gray.200", children: /* @__PURE__ */ g( + y && /* @__PURE__ */ o(I, { mt: 4, pt: 4, borderTopWidth: "1px", borderColor: "gray.200", children: /* @__PURE__ */ g( u, { as: "button", @@ -517,10 +474,10 @@ const RA = ({ color: "red.600", bg: "red.50", cursor: "pointer", - onClick: z, + onClick: Y, children: [ - /* @__PURE__ */ e(d, { as: v, boxSize: 5 }), - /* @__PURE__ */ e(s, { fontWeight: "bold", children: f }) + /* @__PURE__ */ o(s, { as: S, boxSize: 5 }), + /* @__PURE__ */ o(d, { fontWeight: "bold", children: w }) ] } ) }) @@ -532,12 +489,12 @@ const RA = ({ } ) ] }); -}, zA = Object.assign(wA, { - Exit: B +}, SA = Object.assign(DA, { + Exit: V }); export { - SA as Header, - zA as Sidebar, + WA as Header, + SA as Sidebar, MA as getActiveSidebarItem, - P as isSidebarPathActive + L as isSidebarPathActive }; diff --git a/package.json b/package.json index d6bd43f..cccb3c7 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,6 @@ "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", "react-hook-form": "^7.0.0", - "react-icons": "^5.0.0", "react-select": "^5.0.0", "next-query-params": "^5.1.0", "use-query-params": "^2.2.2" @@ -101,9 +100,6 @@ "react-hook-form": { "optional": true }, - "react-icons": { - "optional": true - }, "react-select": { "optional": true }, @@ -128,7 +124,6 @@ "react": "^18.0.0", "react-dom": "^18.0.0", "react-hook-form": "^7.0.0", - "react-icons": "^5.0.0", "react-select": "5", "vite": "5.4.19", "next-query-params": "^5.1.0", diff --git a/src/icons/NavigationIcons.jsx b/src/icons/NavigationIcons.jsx new file mode 100644 index 0000000..b9fc33f --- /dev/null +++ b/src/icons/NavigationIcons.jsx @@ -0,0 +1,46 @@ +import { forwardRef } from "react"; + +const SvgIcon = forwardRef( + ({ title, children, width = "1em", height = "1em", ...props }, ref) => ( + + {title && {title}} + {children} + + ), +); + +SvgIcon.displayName = "SvgIcon"; + +export const MoreHorizontalIcon = forwardRef((props, ref) => ( + + + + + +)); + +MoreHorizontalIcon.displayName = "MoreHorizontalIcon"; + +export const ExitIcon = forwardRef((props, ref) => ( + + + + + +)); + +ExitIcon.displayName = "ExitIcon"; diff --git a/src/layout/Header.jsx b/src/layout/Header.jsx index bf9c333..99d7955 100644 --- a/src/layout/Header.jsx +++ b/src/layout/Header.jsx @@ -8,22 +8,17 @@ function HeaderRoot({ children, ...props }) { - + {children} @@ -32,33 +27,14 @@ function HeaderRoot({ children, ...props }) { function BrandSection({ children, ...props }) { return ( - + {children} ); } function Logo(props) { - return ( - logo - ); + return logo; } function Brand({ children, ...props }) { @@ -67,9 +43,7 @@ function Brand({ children, ...props }) { alignItems="start" justifyContent="center" h="100%" - minW={0} - flex="1" - spacing={{ base: 0, lg: 1 }} + spacing={1} {...props} > {children} @@ -79,60 +53,27 @@ function Brand({ children, ...props }) { function Title({ children, ...props }) { return ( - + {children} ); } function Description({ children, ...props }) { - return ( - - {children} - - ); + return {children}; } function Bi({ logoSrc = biLogo, ...props }) { return ( - نشان مؤسسه باقرالعلوم - - + + مؤسسه تولید سیستم‌های خبره و هوشمند اسلامی باقرالعلوم(ع) diff --git a/src/layout/Sidebar.jsx b/src/layout/Sidebar.jsx index c84a7f0..689cdb5 100644 --- a/src/layout/Sidebar.jsx +++ b/src/layout/Sidebar.jsx @@ -20,8 +20,7 @@ import { useDisclosure, } from "@chakra-ui/react"; import { Children, forwardRef, isValidElement, useRef } from "react"; -import { FiMoreHorizontal } from "react-icons/fi/index.js"; -import { IoExit } from "react-icons/io5/index.js"; +import { ExitIcon, MoreHorizontalIcon } from "../icons/NavigationIcons.jsx"; import { logoutKeycloakFromRuntime, usePermission, @@ -211,7 +210,7 @@ const SidebarRoot = ({ ); const hasExit = Boolean(exitElement); const logoutTitle = exitElement?.props?.title || "خروج"; - const logoutIcon = exitElement?.props?.icon || IoExit; + const logoutIcon = exitElement?.props?.icon || ExitIcon; const resolvedCurrentPath = @@ -355,7 +354,7 @@ const SidebarRoot = ({ color={isSecondaryItemActive ? "blue.600" : "gray.600"} bg={isSecondaryItemActive ? "blue.50" : "transparent"} > - + { return ( externalPackages.includes(id) || id.startsWith("react-dom/") || - id.startsWith("react-icons/") || id.startsWith("@emotion/") || id.startsWith("react-select/") || id.startsWith("next-query-params/") diff --git a/yarn.lock b/yarn.lock index 1f44fc5..aa1a9de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1326,11 +1326,6 @@ react-hook-form@^7.0.0: resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.80.0.tgz#028e142324d592239599ab7cf1c0d82167696194" integrity sha512-4P+fk6oXsxY+6xSj7Euhc2sumQD8zQqCuVHoJwoyp9EchP+IUW9OESB7uHFJOKsIBQ4MQqYE84INJFqUCYNoOg== -react-icons@^5.0.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-5.6.0.tgz#27bcc4acbc836e762548d76041cf9b9fef4e3837" - integrity sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA== - react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"