@uxf/cms 10.0.0-beta.5 → 10.0.0-beta.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,9 +11,9 @@ const Breadcrumbs = (props) => {
11
11
  if (props.items.length === 0) {
12
12
  return null;
13
13
  }
14
- return (react_1.default.createElement("div", { className: "uxf-typo-body mb-4 flex flex-wrap items-center text-lightLow" }, props.items.map((item, index) => (react_1.default.createElement("span", { className: "mr-2 last:mr-0", key: index },
15
- !!index && react_1.default.createElement(icon_1.Icon, { className: "mr-2 inline", name: "angleRight", size: 16 }),
16
- item.href ? (react_1.default.createElement(link_1.default, { href: item.href, className: "transition-colors hover:text-lightHigh" },
14
+ return (react_1.default.createElement("div", { className: "uxf-cms-breadcrumbs" }, props.items.map((item, index) => (react_1.default.createElement("span", { className: "uxf-cms-breadcrumbs__item", key: index },
15
+ !!index && react_1.default.createElement(icon_1.Icon, { className: "uxf-cms-breadcrumbs__divide-icon", name: "angleRight", size: 16 }),
16
+ item.href ? (react_1.default.createElement(link_1.default, { href: item.href, className: "uxf-cms-breadcrumbs__link" },
17
17
  react_1.default.createElement("span", null, item.title))) : (react_1.default.createElement("span", null, item.title)))))));
18
18
  };
19
19
  exports.Breadcrumbs = Breadcrumbs;
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.LayoutContainer = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const maxWidthClassName = {
9
- narrow: "max-w-[788px]",
10
- wide: "max-w-[1024px]",
9
+ narrow: "uxf-cms-layout__container--narrow",
10
+ wide: "uxf-cms-layout__container--wide",
11
11
  fullWidth: "",
12
12
  none: "",
13
13
  };
@@ -17,6 +17,6 @@ const LayoutContainer = (props) => {
17
17
  if (type === "none") {
18
18
  return react_1.default.createElement(react_1.default.Fragment, null, props.children);
19
19
  }
20
- return (react_1.default.createElement("div", { className: `${maxWidthClassName[type]} mx-auto px-4 md:px-10 ${(_b = props.className) !== null && _b !== void 0 ? _b : ""}` }, props.children));
20
+ return (react_1.default.createElement("div", { className: `${maxWidthClassName[type]} uxf-cms-layout__container ${(_b = props.className) !== null && _b !== void 0 ? _b : ""}` }, props.children));
21
21
  };
22
22
  exports.LayoutContainer = LayoutContainer;
@@ -13,31 +13,32 @@ const breadcrumbs_1 = require("./breadcrumbs");
13
13
  const loader_1 = require("@uxf/ui/loader/loader");
14
14
  const layout_container_1 = require("./layout-container");
15
15
  const Layout = (props) => {
16
- var _a;
17
- // eslint-disable-next-line react/destructuring-assignment
18
- const { Header, Logo, MessageBar, TitleRightContainer, ToolbarRight, breadcrumbs, children, containerType, headerContainerType, loading, mainClassName, menuConfiguration, subtitle, title, stickyHeader, CustomHeader, } = props;
16
+ var _a, _b;
19
17
  return (react_1.default.createElement(react_1.default.Fragment, null,
20
18
  react_1.default.createElement(head_1.default, null,
21
19
  react_1.default.createElement("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }),
22
20
  react_1.default.createElement("meta", { charSet: "utf-8" }),
23
- react_1.default.createElement("title", null, `${title} | ${(_a = config_1.config.get("app-name")) !== null && _a !== void 0 ? _a : ""}`)),
24
- react_1.default.createElement("div", { className: "flex" },
25
- react_1.default.createElement("div", { className: "flex w-full bg-gray-100 dark:bg-gray-900 dark:text-darkHigh" },
26
- react_1.default.createElement(sidebar_1.Sidebar, { menuConfiguration: menuConfiguration, Logo: Logo }),
27
- react_1.default.createElement("main", { className: `min-h-screen w-full pb-16 md:ml-[var(--drawerWidth)] md:w-[calc(100%_-_var(--drawerWidth))] md:pb-0 ${mainClassName !== null && mainClassName !== void 0 ? mainClassName : ""}`, style: { "--drawerWidth": `${styles_1.drawerWidth}px` } }, loading ? (react_1.default.createElement("div", { className: "flex h-96 flex-col items-center justify-center" },
28
- react_1.default.createElement("div", { className: "text-center" },
21
+ react_1.default.createElement("title", null, `${props.title} | ${config_1.config.get("app-name") || ""}`)),
22
+ react_1.default.createElement("div", { className: "uxf-cms-layout" },
23
+ react_1.default.createElement("div", { className: "uxf-cms-layout__wrapper" },
24
+ react_1.default.createElement(sidebar_1.Sidebar, { menuConfiguration: props.menuConfiguration, Logo: props.Logo }),
25
+ react_1.default.createElement("main", { className: `uxf-cms-layout__main ${(_a = props.mainClassName) !== null && _a !== void 0 ? _a : ""}`, style: { "--drawer-width": `${styles_1.drawerWidth}px` } }, props.loading ? (react_1.default.createElement("div", { className: "uxf-cms-layout__loading" },
26
+ react_1.default.createElement("div", { className: "uxf-cms-layout__loading-inner" },
29
27
  react_1.default.createElement(loader_1.Loader, null),
30
- react_1.default.createElement("p", { className: "mt-2" }, "Na\u010D\u00EDt\u00E1m\u2026")))) : (react_1.default.createElement(react_1.default.Fragment, null,
31
- CustomHeader ? (CustomHeader) : (react_1.default.createElement("div", { className: `${Header ? "bg-white dark:bg-gray-950" : ""} ${stickyHeader ? "sticky top-0 z-10 bg-white shadow-md dark:bg-gray-950" : ""}` },
32
- ToolbarRight && (react_1.default.createElement("div", { className: "flex h-12 items-center justify-end bg-sidebar-background px-6 text-darkMedium" }, ToolbarRight)),
33
- MessageBar,
34
- react_1.default.createElement(layout_container_1.LayoutContainer, { type: headerContainerType !== null && headerContainerType !== void 0 ? headerContainerType : containerType, className: "pb-9 pt-12" },
35
- breadcrumbs && react_1.default.createElement(breadcrumbs_1.Breadcrumbs, { items: breadcrumbs }),
36
- react_1.default.createElement("div", { className: "flex items-center justify-between" },
37
- react_1.default.createElement("h1", { className: "uxf-typo-h4" }, title),
38
- TitleRightContainer),
39
- subtitle,
40
- Header))),
41
- react_1.default.createElement(layout_container_1.LayoutContainer, { type: containerType }, children))))))));
28
+ react_1.default.createElement("p", { className: "uxf-cms-layout__loading-text" }, "Na\u010D\u00EDt\u00E1m\u2026")))) : (react_1.default.createElement(react_1.default.Fragment, null,
29
+ props.CustomHeader ? (props.CustomHeader) : (react_1.default.createElement("div", { className: `${props.Header ? "uxf-cms-layout__header" : ""} ${props.stickyHeader ? "uxf-cms-layout__header--sticky" : ""}` },
30
+ props.ToolbarRight && (react_1.default.createElement("div", { className: "uxf-cms-layout__toolbar" }, props.ToolbarRight)),
31
+ props.MessageBar,
32
+ react_1.default.createElement(layout_container_1.LayoutContainer, { type: (_b = props.headerContainerType) !== null && _b !== void 0 ? _b : props.containerType, className: "uxf-cms-layout__container--basic" },
33
+ react_1.default.createElement("div", { className: "uxf-cms-layout__avatar-title-wrapper" },
34
+ props.Avatar,
35
+ react_1.default.createElement("div", { className: "uxf-cms-layout__breadcrumbs-title-wrapper" },
36
+ props.breadcrumbs && react_1.default.createElement(breadcrumbs_1.Breadcrumbs, { items: props.breadcrumbs }),
37
+ react_1.default.createElement("div", { className: "uxf-cms-layout__title-wrapper" },
38
+ react_1.default.createElement("h1", { className: "uxf-cms-layout__title" }, props.title),
39
+ props.TitleRightContainer),
40
+ props.subtitle,
41
+ props.Header))))),
42
+ react_1.default.createElement(layout_container_1.LayoutContainer, { type: props.containerType }, props.children))))))));
42
43
  };
43
44
  exports.Layout = Layout;
@@ -29,34 +29,48 @@ const menu_1 = require("../menu");
29
29
  const styles_1 = require("./styles");
30
30
  const user_menu_1 = require("../menu/ui/user-menu");
31
31
  const mobile_bar_1 = require("../menu/mobile-bar");
32
- const useOnMount_1 = require("@uxf/core/hooks/useOnMount");
32
+ const tw_screens_1 = require("../../ui/tw-tokens/tw-screens");
33
33
  const uxfLogo = (react_1.default.createElement("svg", { width: "134", height: "30", viewBox: "0 0 179 40" },
34
34
  react_1.default.createElement("path", { fill: "#FFF", fillRule: "evenodd", d: "M33.563 12.874a9.103 9.103 0 0 0 0-12.874L20.69 12.874l.107.105a9.103 9.103 0 0 0 12.766-.105Zm-20.69-6.437a9.103 9.103 0 0 1 .106 12.766l-.105.107L0 6.437a9.103 9.103 0 0 1 12.874 0ZM40 33.563 27.127 20.69l-.106.107a9.103 9.103 0 0 0 12.98 12.766Zm-20.69-6.437-.107-.105A9.103 9.103 0 0 0 6.437 40l12.874-12.874Z", clipRule: "evenodd" }),
35
35
  react_1.default.createElement("path", { fill: "#FFF", fillRule: "evenodd", d: "m84.325 7.295 5.133 8.675h.199l5.158-8.675h6.078l-7.768 12.727 7.942 12.727h-6.19l-5.22-8.687h-.199l-5.22 8.687h-6.165l7.967-12.727-7.818-12.727h6.103Zm-24.194 0v16.07c0 .97.214 1.832.64 2.586a4.58 4.58 0 0 0 1.809 1.777c.779.431 1.686.647 2.722.647 1.044 0 1.953-.216 2.728-.647a4.591 4.591 0 0 0 1.802-1.777c.427-.754.64-1.616.64-2.585V7.296h5.382v16.53c0 1.856-.441 3.48-1.324 4.872-.882 1.392-2.115 2.475-3.697 3.25-1.583.775-3.426 1.162-5.531 1.162-2.113 0-3.96-.387-5.543-1.162-1.583-.775-2.813-1.858-3.692-3.25-.878-1.392-1.317-3.016-1.317-4.872V7.296h5.381ZM170.25 13.41c2.411 0 4.311.51 5.698 1.529 1.388 1.019 2.198 2.407 2.43 4.164l-4.847.298a2.555 2.555 0 0 0-.534-1.125 2.942 2.942 0 0 0-1.075-.808c-.444-.203-.972-.304-1.585-.304-.821 0-1.512.172-2.076.515-.563.344-.845.802-.845 1.374 0 .456.182.84.547 1.156.364.315.99.567 1.877.758l3.455.696c1.856.381 3.24.994 4.151 1.84.912.845 1.367 1.955 1.367 3.33 0 1.252-.366 2.35-1.1 3.294-.733.945-1.736 1.68-3.007 2.206-1.272.526-2.737.79-4.394.79-2.527 0-4.539-.529-6.034-1.585-1.496-1.057-2.372-2.496-2.629-4.32l5.208-.273c.157.77.538 1.357 1.143 1.759.605.402 1.38.603 2.324.603.928 0 1.676-.18 2.244-.54.567-.361.855-.827.864-1.4-.009-.48-.212-.875-.609-1.186-.398-.31-1.011-.55-1.84-.715l-3.306-.659c-1.864-.372-3.25-1.019-4.157-1.938-.908-.92-1.361-2.093-1.361-3.518 0-1.226.333-2.283 1-3.17.667-.886 1.608-1.57 2.821-2.05 1.214-.48 2.637-.72 4.27-.72Zm-36.686.373a12.285 12.285 0 0 0-3.051-.373c-1.525 0-2.865.23-4.021.69-1.156.46-2.098 1.114-2.827 1.964-.73.849-1.219 1.854-1.467 3.014l4.897.397c.182-.63.555-1.153 1.119-1.572.563-.418 1.321-.627 2.274-.627.903 0 1.601.215 2.094.646.493.43.74 1.04.74 1.827v.075c0 .405-.153.712-.46.92-.307.206-.8.362-1.479.465-.68.104-1.574.214-2.685.33-.944.09-1.845.248-2.703.472a7.698 7.698 0 0 0-2.293.994 4.727 4.727 0 0 0-1.591 1.74c-.39.721-.584 1.612-.584 2.673 0 1.259.275 2.31.826 3.15a5.147 5.147 0 0 0 2.256 1.902c.953.427 2.038.64 3.257.64.944 0 1.777-.126 2.498-.38a5.55 5.55 0 0 0 1.852-1.055 5.31 5.31 0 0 0 1.23-1.573h.149v2.648h5.022V19.873c0-1.135-.22-2.11-.659-2.927a5.655 5.655 0 0 0-1.796-2.007 8.039 8.039 0 0 0-2.598-1.156Zm-13.424-2.05V7.294h-16.853v25.454h5.381V22.235h10.354v-4.438h-10.354v-6.065h11.472Zm32.603 1.677c1.326 0 2.482.29 3.468.87.986.58 1.753 1.407 2.3 2.48.546 1.073.82 2.35.82 3.834V32.75h-5.295V21.539c.008-1.169-.29-2.082-.895-2.74-.605-.66-1.437-.989-2.498-.989-.713 0-1.34.153-1.883.46a3.166 3.166 0 0 0-1.268 1.336c-.302.584-.458 1.286-.466 2.107V32.75h-5.295V13.659h5.047v3.368H147a5.358 5.358 0 0 1 2.126-2.641c.994-.65 2.2-.976 3.616-.976Zm-20.061 10.782c.286-.087.512-.184.678-.292v2.026c0 .671-.17 1.272-.51 1.802-.34.53-.808.951-1.404 1.262-.597.31-1.285.466-2.064.466-.812 0-1.481-.189-2.007-.566-.526-.377-.789-.925-.789-1.646 0-.497.128-.914.385-1.25.257-.335.617-.602 1.082-.801a6.547 6.547 0 0 1 1.628-.435l.969-.143a24.15 24.15 0 0 0 1.069-.186c.356-.071.677-.15.963-.237Z", clipRule: "evenodd" })));
36
36
  const Sidebar = (props) => {
37
- // eslint-disable-next-line react/destructuring-assignment
38
- const { menuConfiguration, Logo, CustomSidebar } = props;
37
+ var _a, _b;
39
38
  const [deviceHeight, setDeviceHeight] = (0, react_1.useState)(0);
40
39
  const [isMenuOpen, setIsMenuOpen] = (0, react_1.useState)(false);
41
40
  const toggleMenu = () => setIsMenuOpen((prev) => !prev);
42
- (0, useOnMount_1.useOnMount)(() => {
43
- const handleDeviceHeight = () => {
44
- var _a, _b;
45
- setDeviceHeight((_b = (_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : window.innerHeight);
41
+ (0, react_1.useEffect)(() => {
42
+ const handler = () => { var _a, _b; return setDeviceHeight((_b = (_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : window.innerHeight); };
43
+ handler();
44
+ window.addEventListener("resize", handler);
45
+ return () => {
46
+ window.removeEventListener("resize", handler);
47
+ };
48
+ }, []);
49
+ (0, react_1.useEffect)(() => {
50
+ const handler = () => {
51
+ if (!window.matchMedia(`(min-width: ${tw_screens_1.twScreens.md})`).matches && isMenuOpen) {
52
+ document.body.style.overflow = "hidden";
53
+ }
54
+ else {
55
+ document.body.style.overflow = "";
56
+ }
46
57
  };
47
- handleDeviceHeight();
48
- window.addEventListener("resize", handleDeviceHeight);
58
+ handler();
59
+ window.addEventListener("resize", handler);
49
60
  return () => {
50
- window.removeEventListener("resize", handleDeviceHeight);
61
+ document.body.style.overflow = "";
62
+ window.removeEventListener("resize", handler);
51
63
  };
52
- });
53
- return (CustomSidebar !== null && CustomSidebar !== void 0 ? CustomSidebar : (react_1.default.createElement("div", { className: "sidebar fixed z-1 flex w-full flex-col max-md:z-[15] md:w-[var(--drawerWidth)]", style: { "--drawerWidth": `${styles_1.drawerWidth}px` } },
54
- react_1.default.createElement("div", { className: `h-[calc(var(--deviceHeight)_-_48px)] flex-col bg-sidebar-background pt-5 md:h-screen ${isMenuOpen ? "flex" : "hidden md:flex"}`, style: { "--deviceHeight": `${deviceHeight}px` } },
55
- react_1.default.createElement("div", { className: "sidebar__logo px-4" }, Logo !== null && Logo !== void 0 ? Logo : uxfLogo),
56
- menuConfiguration && menuConfiguration.length > 0 && (react_1.default.createElement(react_1.default.Fragment, null,
57
- react_1.default.createElement("div", { className: `sidebar__nav grow overflow-auto px-2 md:px-0 ${menuConfiguration[0].type === "super-section" ? "mt-4" : "mt-8"}` },
58
- react_1.default.createElement(menu_1.Menu, { menu: menuConfiguration })),
59
- react_1.default.createElement(user_menu_1.UserMenu, { menu: menuConfiguration })))),
60
- menuConfiguration && react_1.default.createElement(mobile_bar_1.MobileBar, { menuConfiguration: menuConfiguration, toggleMenu: toggleMenu }))));
64
+ }, [isMenuOpen]);
65
+ return ((_a = props.CustomSidebar) !== null && _a !== void 0 ? _a : (react_1.default.createElement("div", { className: "uxf-cms-sidebar", style: { "--drawer-width": `${styles_1.drawerWidth}px` } },
66
+ react_1.default.createElement("div", { className: `uxf-cms-sidebar__content ${isMenuOpen ? "uxf-cms-sidebar__content--open" : "uxf-cms-sidebar__content--closed"}`, style: { "--device-height": `${deviceHeight}px` } },
67
+ react_1.default.createElement("div", { className: "uxf-cms-sidebar__logo" }, (_b = props.Logo) !== null && _b !== void 0 ? _b : uxfLogo),
68
+ props.menuConfiguration && props.menuConfiguration.length > 0 && (react_1.default.createElement(react_1.default.Fragment, null,
69
+ react_1.default.createElement("div", { className: `uxf-cms-sidebar__nav ${props.menuConfiguration[0].type === "super-section"
70
+ ? "uxf-cms-sidebar__nav--super-section"
71
+ : ""}` },
72
+ react_1.default.createElement(menu_1.Menu, { menu: props.menuConfiguration })),
73
+ react_1.default.createElement(user_menu_1.UserMenu, { menu: props.menuConfiguration })))),
74
+ props.menuConfiguration && (react_1.default.createElement(mobile_bar_1.MobileBar, { menuConfiguration: props.menuConfiguration, toggleMenu: toggleMenu })))));
61
75
  };
62
76
  exports.Sidebar = Sidebar;
@@ -6,6 +6,7 @@ export interface LayoutContainerProps extends HTMLAttributes<HTMLDivElement> {
6
6
  type?: LayoutContainerType;
7
7
  }
8
8
  export type LayoutProps = SidebarProps & {
9
+ Avatar?: ReactNode;
9
10
  children?: ReactNode;
10
11
  containerType?: LayoutContainerType;
11
12
  headerContainerType?: LayoutContainerType;
@@ -8,14 +8,12 @@ const head_1 = __importDefault(require("next/head"));
8
8
  const react_1 = __importDefault(require("react"));
9
9
  const paper_1 = require("@uxf/ui/paper/paper");
10
10
  const LoginLayout = (props) => {
11
- // eslint-disable-next-line react/destructuring-assignment
12
- const { hideTitle, title, subTitle, pageTitle, children, Logo } = props;
13
- return (react_1.default.createElement("div", { className: "flex min-h-screen flex-col items-center justify-center bg-gray-100 p-4 dark:bg-gray-900 dark:text-darkHigh" },
11
+ return (react_1.default.createElement("div", { className: "uxf-cms-login-layout" },
14
12
  react_1.default.createElement(head_1.default, null,
15
- react_1.default.createElement("title", null, pageTitle || "")),
16
- Logo && react_1.default.createElement("div", { className: "mb-8" }, Logo),
17
- title && react_1.default.createElement("h1", { className: hideTitle ? "sr-only" : "uxf-typo-h4" }, title),
18
- subTitle && react_1.default.createElement("p", { className: "uxf-typo-body mt-2 text-lightMedium" }, subTitle),
19
- react_1.default.createElement(paper_1.Paper, { className: "mt-8 w-[448px] max-w-full p-6 dark:bg-gray-950" }, children)));
13
+ react_1.default.createElement("title", null, props.pageTitle || "")),
14
+ props.Logo && react_1.default.createElement("div", { className: "uxf-cms-login-layout__logo-wrapper" }, props.Logo),
15
+ props.title && (react_1.default.createElement("h1", { className: `uxf-cms-login-layout__title ${props.hideTitle ? "uxf-cms-login-layout__title--hidden" : ""}` }, props.title)),
16
+ props.subTitle && react_1.default.createElement("p", { className: "uxf-cms-login-layout__subtitle" }, props.subTitle),
17
+ react_1.default.createElement(paper_1.Paper, { className: "uxf-cms-login-layout__body" }, props.children)));
20
18
  };
21
19
  exports.LoginLayout = LoginLayout;
@@ -1,6 +1,8 @@
1
1
  import { FC } from "react";
2
2
  import { MenuItem } from "./model";
3
- export declare const MobileBar: FC<{
3
+ interface Props {
4
4
  menuConfiguration: MenuItem[];
5
5
  toggleMenu: () => void;
6
- }>;
6
+ }
7
+ export declare const MobileBar: FC<Props>;
8
+ export {};
@@ -12,11 +12,9 @@ const config_1 = require("../../config");
12
12
  const avatar_1 = require("@uxf/ui/avatar");
13
13
  const cx_1 = require("@uxf/core/utils/cx");
14
14
  const MobileBar = (props) => {
15
- // eslint-disable-next-line react/destructuring-assignment
16
- const { menuConfiguration, toggleMenu } = props;
17
15
  const useLoggedUser = config_1.container.get("useLoggedUser");
18
16
  const loggedUser = useLoggedUser();
19
- const mobileBarMenu = menuConfiguration
17
+ const mobileBarMenu = props.menuConfiguration
20
18
  .flatMap((item) => {
21
19
  if (item.type === "link" || item.type === "section") {
22
20
  return item;
@@ -32,16 +30,16 @@ const MobileBar = (props) => {
32
30
  .filter((i) => i)
33
31
  .filter((item) => (item === null || item === void 0 ? void 0 : item.isVisible(loggedUser)) && (!item.children.length || item.hasVisibleChildren(loggedUser)))
34
32
  .splice(0, 4);
35
- const buttonClassName = (0, cx_1.cx)("flex h-10 grow items-center justify-center shrink-0", mobileBarMenu.length === 2 && "w-1/3", mobileBarMenu.length === 3 && "w-1/4", mobileBarMenu.length === 4 && "w-1/5");
36
- return (react_1.default.createElement("div", { className: "fixed inset-x-0 bottom-0 flex h-16 items-center border-t border-gray-700 bg-sidebar-background px-1 text-darkMedium md:hidden" },
33
+ const buttonClassName = (0, cx_1.cx)("uxf-cms-mobile-bar__button", mobileBarMenu.length === 2 && "w-1/3", mobileBarMenu.length === 3 && "w-1/4", mobileBarMenu.length === 4 && "w-1/5");
34
+ return (react_1.default.createElement("div", { className: "uxf-cms-mobile-bar" },
37
35
  mobileBarMenu.map((item, index) => {
38
36
  var _a, _b, _c, _d;
39
37
  if (item.children.length) {
40
38
  return (react_1.default.createElement(sub_menu_mobile_1.SubMenuMobile, { key: index, content: item.children, title: item.title },
41
39
  react_1.default.createElement("button", { type: "button", className: buttonClassName }, item.userMenuData ? (react_1.default.createElement(react_1.default.Fragment, null,
42
- react_1.default.createElement(avatar_1.Avatar, { className: "h-7 w-7", src: item.userMenuData.avatar }))) : (react_1.default.createElement(react_1.default.Fragment, null,
40
+ react_1.default.createElement(avatar_1.Avatar, { className: "uxf-cms-mobile-bar__avatar", src: item.userMenuData.avatar }))) : (react_1.default.createElement(react_1.default.Fragment, null,
43
41
  react_1.default.createElement(icon_1.Icon, { name: (_a = item.icon) !== null && _a !== void 0 ? _a : "", size: 24 }),
44
- react_1.default.createElement(icon_1.Icon, { name: "caretDown", size: 16, className: "ml-1" }))))));
42
+ react_1.default.createElement(icon_1.Icon, { name: "caretDown", size: 16, className: "uxf-cms-mobile-bar__caret" }))))));
45
43
  }
46
44
  if (item.url || item.route) {
47
45
  return (react_1.default.createElement(link_1.default, { key: index, href: (_b = item.url) !== null && _b !== void 0 ? _b : config_1.container.get("route")(item.route, item.routeParams), target: item.isExternal ? "_blank" : undefined, rel: item.isExternal ? "noreferrer noopener" : undefined, className: buttonClassName },
@@ -50,7 +48,7 @@ const MobileBar = (props) => {
50
48
  return (react_1.default.createElement("span", { key: index, className: buttonClassName },
51
49
  react_1.default.createElement(icon_1.Icon, { name: (_d = item.icon) !== null && _d !== void 0 ? _d : "user", size: 24 })));
52
50
  }),
53
- react_1.default.createElement("button", { type: "button", className: buttonClassName, onClick: toggleMenu },
51
+ react_1.default.createElement("button", { type: "button", className: buttonClassName, onClick: props.toggleMenu },
54
52
  react_1.default.createElement(icon_1.Icon, { name: "bars", size: 24 }))));
55
53
  };
56
54
  exports.MobileBar = MobileBar;
@@ -9,27 +9,27 @@ const icon_1 = require("@uxf/ui/icon");
9
9
  const link_1 = __importDefault(require("next/link"));
10
10
  const sub_menu_1 = require("../sub-menu/sub-menu");
11
11
  const config_1 = require("../../../../config");
12
+ const classes_1 = require("@uxf/core/constants/classes");
12
13
  const ListItem = (props) => {
14
+ var _a, _b, _c, _d;
15
+ const hasSubMenu = !!((_a = props.subMenu) === null || _a === void 0 ? void 0 : _a.length);
16
+ const Content = (_b = props.children) !== null && _b !== void 0 ? _b : (react_1.default.createElement("div", { className: `uxf-cms-menu__item uxf-cms-menu__item--basic ${props.selected ? classes_1.CLASSES.IS_SELECTED : ""}` },
17
+ react_1.default.createElement("div", { className: `uxf-cms-menu__icon-wrapper ${props.level === 1 ? "uxf-cms-menu__icon-wrapper--level-one" : ""}` }, !!props.icon && props.level !== 1 && react_1.default.createElement(icon_1.Icon, { name: props.icon, size: 16 })),
18
+ react_1.default.createElement("div", { className: "uxf-cms-menu__item-label" }, props.label),
19
+ hasSubMenu && (react_1.default.createElement(icon_1.Icon, { name: "caretDown", size: 16, className: `uxf-cms-menu__caret ${!props.isOpen ? classes_1.CLASSES.IS_OPEN : ""}` }))));
13
20
  // eslint-disable-next-line react/destructuring-assignment
14
- const { children, icon, label, level = 0, selected, href, route, params, subMenu, isOpen, toggle, isInitiallyOpen, isExternal, } = props;
15
- const hasSubMenu = !!(subMenu === null || subMenu === void 0 ? void 0 : subMenu.length);
16
- const Content = children !== null && children !== void 0 ? children : (react_1.default.createElement("div", { className: `mb-0.5 flex cursor-pointer items-center rounded-lg py-2.5 pl-2.5 pr-1 hover:bg-sidebar-hover ${selected ? "bg-sidebar-highlight font-bold text-darkHigh" : "bg-sidebar-background text-darkMedium"}` },
17
- react_1.default.createElement("div", { className: level === 1 ? "w-9" : "w-7" }, !!icon && level !== 1 && react_1.default.createElement(icon_1.Icon, { name: icon, size: 16 })),
18
- react_1.default.createElement("div", { className: "uxf-typo-body2" }, label),
19
- hasSubMenu && (react_1.default.createElement(icon_1.Icon, { name: "caretDown", size: 16, className: `ml-auto mr-2 ${!isOpen ? "-rotate-90" : ""}` }))));
20
- // eslint-disable-next-line react/destructuring-assignment
21
- const Button = ({ className }) => (react_1.default.createElement("button", { type: "button", onClick: toggle, className: className }, Content));
22
- if (href || route) {
23
- if (hasSubMenu && !isInitiallyOpen) {
21
+ const Button = ({ className }) => (react_1.default.createElement("button", { type: "button", onClick: props.toggle, className: className }, Content));
22
+ if (props.href || props.route) {
23
+ if (props.subMenu && hasSubMenu && !props.isInitiallyOpen) {
24
24
  return (react_1.default.createElement(react_1.default.Fragment, null,
25
- react_1.default.createElement(sub_menu_1.SubMenu, { content: subMenu },
26
- react_1.default.createElement(link_1.default, { href: href !== null && href !== void 0 ? href : config_1.container.get("route")(route, params), target: isExternal ? "_blank" : undefined, rel: isExternal ? "noreferrer noopener" : undefined }, Content)),
27
- react_1.default.createElement(Button, { className: "w-full md:hidden" })));
25
+ react_1.default.createElement(sub_menu_1.SubMenu, { content: props.subMenu },
26
+ react_1.default.createElement(link_1.default, { href: (_c = props.href) !== null && _c !== void 0 ? _c : config_1.container.get("route")(props.route, props.params), target: props.isExternal ? "_blank" : undefined, rel: props.isExternal ? "noreferrer noopener" : undefined }, Content)),
27
+ react_1.default.createElement(Button, { className: "uxf-cms-menu__submenu-button uxf-cms-menu__submenu-button--initially-closed" })));
28
28
  }
29
29
  if (hasSubMenu) {
30
- return react_1.default.createElement(Button, { className: "w-full md:pointer-events-none" });
30
+ return react_1.default.createElement(Button, { className: "uxf-cms-menu__submenu-button uxf-cms-menu__submenu-button--initially-open" });
31
31
  }
32
- return (react_1.default.createElement(link_1.default, { href: href !== null && href !== void 0 ? href : config_1.container.get("route")(route, params), target: isExternal ? "_blank" : undefined, rel: isExternal ? "noreferrer noopener" : undefined }, Content));
32
+ return (react_1.default.createElement(link_1.default, { href: (_d = props.href) !== null && _d !== void 0 ? _d : config_1.container.get("route")(props.route, props.params), target: props.isExternal ? "_blank" : undefined, rel: props.isExternal ? "noreferrer noopener" : undefined }, Content));
33
33
  }
34
34
  return Content;
35
35
  };
@@ -7,13 +7,11 @@ exports.MenuCustomItem = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const config_1 = require("../../../config");
9
9
  const MenuCustomItem = (props) => {
10
- // eslint-disable-next-line react/destructuring-assignment
11
- const { item } = props;
12
10
  const useLoggedUser = config_1.container.get("useLoggedUser");
13
11
  const loggedUser = useLoggedUser();
14
- if (!item.isVisible(loggedUser)) {
12
+ if (!props.item.isVisible(loggedUser)) {
15
13
  return null;
16
14
  }
17
- return react_1.default.createElement("div", null, item.content);
15
+ return react_1.default.createElement("div", { className: "uxf-cms-menu__item-wrapper uxf-cms-menu__item-wrapper--custom" }, props.item.content);
18
16
  };
19
17
  exports.MenuCustomItem = MenuCustomItem;
@@ -30,25 +30,24 @@ const list_item_1 = require("./list-item");
30
30
  const router_1 = require("next/router");
31
31
  const MenuItem = (props) => {
32
32
  var _a, _b, _c, _d;
33
- // eslint-disable-next-line react/destructuring-assignment
34
- const { item } = props;
35
33
  const router = (0, router_1.useRouter)();
36
34
  const activeRoute = config_1.container.get("useActiveRoute")();
37
- const isActive = item.isActive(router, activeRoute);
38
- const hasActiveChildren = item.hasActiveChildren(router, activeRoute);
35
+ const isActive = props.item.isActive(router, activeRoute);
36
+ const hasActiveChildren = props.item.hasActiveChildren(router, activeRoute);
39
37
  const useLoggedUser = config_1.container.get("useLoggedUser");
40
38
  const loggedUser = useLoggedUser();
41
- const visibleChildren = item.children.filter((i) => i.isVisible(loggedUser));
39
+ const visibleChildren = props.item.children.filter((i) => i.isVisible(loggedUser));
42
40
  const firstVisibleChild = visibleChildren.length !== 0 ? visibleChildren[0] : undefined;
43
- const isInitiallyOpen = (isActive || hasActiveChildren) && item.children.length > 0;
41
+ const isInitiallyOpen = (isActive || hasActiveChildren) && props.item.children.length > 0;
44
42
  const [isSubmenuOpen, setIsSubmenuOpen] = (0, react_1.useState)(isInitiallyOpen);
45
43
  const toggle = () => setIsSubmenuOpen((prev) => !prev);
46
- if (!item.isVisible(loggedUser) || (item.children.length !== 0 && !item.hasVisibleChildren(loggedUser))) {
44
+ if (!props.item.isVisible(loggedUser) ||
45
+ (props.item.children.length !== 0 && !props.item.hasVisibleChildren(loggedUser))) {
47
46
  return null;
48
47
  }
49
- return (react_1.default.createElement(react_1.default.Fragment, null,
50
- react_1.default.createElement(list_item_1.ListItem, { label: item.title, icon: item.icon, href: (_a = item.url) !== null && _a !== void 0 ? _a : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.url, route: (_b = item.route) !== null && _b !== void 0 ? _b : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.route, params: (_d = (_c = item.routeParams) !== null && _c !== void 0 ? _c : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.routeParams) !== null && _d !== void 0 ? _d : null, selected: isActive, subMenu: item.children, isOpen: isSubmenuOpen, toggle: toggle, isInitiallyOpen: isInitiallyOpen, isExternal: item.isExternal }),
51
- isSubmenuOpen && (react_1.default.createElement("div", null, visibleChildren.map((i) => {
48
+ return (react_1.default.createElement("div", { className: "uxf-cms-menu__item-wrapper uxf-cms-menu__item-wrapper--basic" },
49
+ react_1.default.createElement(list_item_1.ListItem, { label: props.item.title, icon: props.item.icon, href: (_a = props.item.url) !== null && _a !== void 0 ? _a : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.url, route: (_b = props.item.route) !== null && _b !== void 0 ? _b : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.route, params: (_d = (_c = props.item.routeParams) !== null && _c !== void 0 ? _c : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.routeParams) !== null && _d !== void 0 ? _d : null, selected: isActive, subMenu: props.item.children, isOpen: isSubmenuOpen, toggle: toggle, isInitiallyOpen: isInitiallyOpen, isExternal: props.item.isExternal }),
50
+ isSubmenuOpen && (react_1.default.createElement("div", { className: "uxf-cms-menu__submenu-list" }, visibleChildren.map((i) => {
52
51
  const isSelected = i.isActive(router, activeRoute);
53
52
  return (react_1.default.createElement(list_item_1.ListItem, { key: i.title, label: i.title, href: i.url, icon: i.icon, route: i.route, params: i.routeParams, level: 1, selected: isSelected, isExternal: i.isExternal }));
54
53
  })))));
@@ -29,13 +29,11 @@ const config_1 = require("../../../config");
29
29
  const menu_item_1 = require("./menu-item");
30
30
  const menu_custom_item_1 = require("./menu-custom-item");
31
31
  const MenuSuperSectionItem = (props) => {
32
- // eslint-disable-next-line react/destructuring-assignment
33
- const { item } = props;
34
32
  const useLoggedUser = config_1.container.get("useLoggedUser");
35
33
  const loggedUser = useLoggedUser();
36
- return (react_1.default.createElement("div", { className: item.userMenuData ? "md:hidden" : undefined },
37
- item.isVisible(loggedUser) && (react_1.default.createElement("p", { className: "uxf-typo-overline mb-3 mt-6 pl-2 uppercase text-darkLow" }, item.title)),
38
- item.children.map((i, index) => (react_1.default.createElement(react_1.Fragment, { key: index },
34
+ return (react_1.default.createElement("div", { className: `uxf-cms-menu__item-wrapper uxf-cms-menu__item-wrapper--super ${props.item.userMenuData ? "uxf-cms-menu__item-wrapper--user-menu" : ""}` },
35
+ props.item.isVisible(loggedUser) && (react_1.default.createElement("p", { className: "uxf-cms-menu__item uxf-cms-menu__item--super" }, props.item.title)),
36
+ props.item.children.map((i, index) => (react_1.default.createElement(react_1.Fragment, { key: index },
39
37
  i.type === "custom" && react_1.default.createElement(menu_custom_item_1.MenuCustomItem, { item: i }),
40
38
  (i.type === "section" || i.type === "link") && react_1.default.createElement(menu_item_1.MenuItem, { item: i }))))));
41
39
  };
@@ -29,7 +29,7 @@ const menu_item_1 = require("./menu-item");
29
29
  const menu_custom_item_1 = require("./menu-custom-item");
30
30
  const menu_super_section_item_1 = require("./menu-super-section-item");
31
31
  const Menu = (props) => {
32
- return (react_1.default.createElement("div", { className: "bg-sidebar-background px-2 pb-4" }, props.menu.map((item, index) => (react_1.default.createElement(react_1.Fragment, { key: index },
32
+ return (react_1.default.createElement("div", { className: "uxf-cms-menu" }, props.menu.map((item, index) => (react_1.default.createElement(react_1.Fragment, { key: index },
33
33
  item.type === "custom" && react_1.default.createElement(menu_custom_item_1.MenuCustomItem, { item: item }),
34
34
  item.type === "super-section" && react_1.default.createElement(menu_super_section_item_1.MenuSuperSectionItem, { item: item }),
35
35
  (item.type === "section" || item.type === "link") && react_1.default.createElement(menu_item_1.MenuItem, { item: item }))))));
@@ -9,16 +9,14 @@ const config_1 = require("../../../../config");
9
9
  const link_1 = __importDefault(require("next/link"));
10
10
  const SubMenuItem = (props) => {
11
11
  var _a;
12
- // eslint-disable-next-line react/destructuring-assignment
13
- const { item } = props;
14
12
  const useLoggedUser = config_1.container.get("useLoggedUser");
15
13
  const loggedUser = useLoggedUser();
16
- if (!item.isVisible(loggedUser)) {
14
+ if (!props.item.isVisible(loggedUser)) {
17
15
  return null;
18
16
  }
19
- const Content = (react_1.default.createElement("div", { className: "hover:text-darkLight w-full bg-sidebar-highlight px-4 py-3.5 text-body text-darkMedium hover:bg-sidebar-background md:text-body2" }, item.title));
20
- if (item.url || item.route) {
21
- return (react_1.default.createElement(link_1.default, { href: (_a = item.url) !== null && _a !== void 0 ? _a : config_1.container.get("route")(item.route, item.routeParams), target: item.isExternal ? "_blank" : undefined, rel: item.isExternal ? "noreferrer noopener" : undefined }, Content));
17
+ const Content = react_1.default.createElement("div", { className: "uxf-cms-sub-menu__item" }, props.item.title);
18
+ if (props.item.url || props.item.route) {
19
+ return (react_1.default.createElement(link_1.default, { href: (_a = props.item.url) !== null && _a !== void 0 ? _a : config_1.container.get("route")(props.item.route, props.item.routeParams), target: props.item.isExternal ? "_blank" : undefined, rel: props.item.isExternal ? "noreferrer noopener" : undefined }, Content));
22
20
  }
23
21
  return Content;
24
22
  };
@@ -28,7 +28,7 @@ const react_1 = __importStar(require("react"));
28
28
  const forwardRef_1 = require("@uxf/core/utils/forwardRef");
29
29
  const use_sub_menu_1 = require("./use-sub-menu");
30
30
  const composeRefs_1 = require("@uxf/core/utils/composeRefs");
31
- const sub_menuItem_1 = require("./sub-menuItem");
31
+ const sub_menu_item_1 = require("./sub-menu-item");
32
32
  exports.SubMenuMobile = (0, forwardRef_1.forwardRef)("SubMenuMobile", ({ children, content, title }, ref) => {
33
33
  const subMenu = (0, use_sub_menu_1.useSubMenu)({ isMobile: true });
34
34
  const stableRef = (0, react_1.useMemo)(() => (0, composeRefs_1.composeRefs)(ref, subMenu.refs.setReference, children.ref), [ref, subMenu.refs.setReference, children]);
@@ -39,10 +39,10 @@ exports.SubMenuMobile = (0, forwardRef_1.forwardRef)("SubMenuMobile", ({ childre
39
39
  "data-state": subMenu.open ? "open" : "closed",
40
40
  })),
41
41
  subMenu.open && (react_1.default.createElement("div", { ...subMenu.getFloatingProps({
42
- className: "sidebar__scrollbar bg-sidebar-background rounded-xl overflow-y-auto z-dropdown w-[calc(100vw_-_32px)] shadow-lg left-4",
42
+ className: "uxf-cms-sidebar__scrollbar uxf-cms-sub-menu__wrapper-mobile",
43
43
  ref: subMenu.refs.setFloating,
44
44
  style: subMenu.floatingStyles,
45
45
  }) },
46
- react_1.default.createElement("div", { className: "uxf-typo-body w-full bg-sidebar-background px-4 py-3.5 font-bold text-darkHigh" }, title),
47
- content.map((item, index) => (react_1.default.createElement(sub_menuItem_1.SubMenuItem, { key: index, item: item })))))));
46
+ react_1.default.createElement("div", { className: "uxf-cms-sub-menu__title" }, title),
47
+ content.map((item, index) => (react_1.default.createElement(sub_menu_item_1.SubMenuItem, { key: index, item: item })))))));
48
48
  });
@@ -28,11 +28,11 @@ const react_1 = __importStar(require("react"));
28
28
  const forwardRef_1 = require("@uxf/core/utils/forwardRef");
29
29
  const use_sub_menu_1 = require("./use-sub-menu");
30
30
  const composeRefs_1 = require("@uxf/core/utils/composeRefs");
31
- const sub_menuItem_1 = require("./sub-menuItem");
31
+ const sub_menu_item_1 = require("./sub-menu-item");
32
32
  exports.SubMenu = (0, forwardRef_1.forwardRef)("SubMenu", ({ children, content }, ref) => {
33
33
  const subMenu = (0, use_sub_menu_1.useSubMenu)({ isMobile: false });
34
34
  const stableRef = (0, react_1.useMemo)(() => (0, composeRefs_1.composeRefs)(ref, subMenu.refs.setReference, children.ref), [ref, subMenu.refs.setReference, children]);
35
- return (react_1.default.createElement("div", { className: "hidden md:block" },
35
+ return (react_1.default.createElement("div", { className: "uxf-cms-sub-menu" },
36
36
  (0, react_1.cloneElement)(children, subMenu.getReferenceProps({
37
37
  ref: stableRef,
38
38
  ...children.props,
@@ -41,6 +41,6 @@ exports.SubMenu = (0, forwardRef_1.forwardRef)("SubMenu", ({ children, content }
41
41
  subMenu.open && (react_1.default.createElement("div", { ...subMenu.getFloatingProps({
42
42
  ref: subMenu.refs.setFloating,
43
43
  style: subMenu.floatingStyles,
44
- className: "sidebar__scrollbar bg-sidebar-highlight rounded-xl overflow-y-auto z-dropdown max-w-64 shadow-lg w-full",
45
- }) }, content.map((item, index) => (react_1.default.createElement(sub_menuItem_1.SubMenuItem, { key: index, item: item })))))));
44
+ className: "uxf-cms-sidebar__scrollbar uxf-cms-sub-menu__wrapper",
45
+ }) }, content.map((item, index) => (react_1.default.createElement(sub_menu_item_1.SubMenuItem, { key: index, item: item })))))));
46
46
  });
@@ -7,7 +7,7 @@ function useSubMenu(options) {
7
7
  const [open, setOpen] = (0, react_1.useState)(false);
8
8
  const data = (0, react_2.useFloating)({
9
9
  middleware: [
10
- (0, react_2.offset)(options.isMobile ? 24 : 16),
10
+ (0, react_2.offset)(options.isMobile ? 12 : 16),
11
11
  (0, react_2.flip)(),
12
12
  (0, react_2.shift)({ padding: 8 }),
13
13
  (0, react_2.size)({
@@ -28,24 +28,23 @@ const react_1 = __importStar(require("react"));
28
28
  const avatar_1 = require("@uxf/ui/avatar");
29
29
  const icon_1 = require("@uxf/ui/icon");
30
30
  const list_item_1 = require("./list-item");
31
+ const classes_1 = require("@uxf/core/constants/classes");
31
32
  const Component = (props) => {
32
33
  const [isSubmenuOpen, setIsSubmenuOpen] = (0, react_1.useState)(false);
33
34
  const hasSubmenu = props.submenu.length > 0;
34
35
  const toggle = hasSubmenu ? () => setIsSubmenuOpen((prev) => !prev) : undefined;
35
- return (react_1.default.createElement("div", { className: "hidden border-t border-t-darkLow/10 p-3 pr-5 text-darkMedium md:block" },
36
- react_1.default.createElement("button", { className: "flex w-full items-center text-left", onClick: toggle },
37
- react_1.default.createElement(avatar_1.Avatar, { className: "mr-3 shrink-0", src: props.avatar }),
38
- react_1.default.createElement("div", { className: "truncate" },
39
- react_1.default.createElement("div", { className: "uxf-typo-body2 mb-1" }, props.name),
40
- react_1.default.createElement("div", { className: "uxf-typo-caption truncate text-darkLow" }, props.roles)),
41
- react_1.default.createElement("div", { className: "ml-auto" }, hasSubmenu && (react_1.default.createElement(icon_1.Icon, { name: "caretDown", size: 16, className: `ml-2 ${!isSubmenuOpen ? "-rotate-90" : ""}` })))),
42
- isSubmenuOpen && (react_1.default.createElement("div", { className: "mt-4" }, props.submenu.map((item, index) => (react_1.default.createElement(list_item_1.ListItem, { label: item.title, route: item.route, params: item.routeParams, icon: item.icon, key: index })))))));
36
+ return (react_1.default.createElement("div", { className: `uxf-cms-user-menu ${isSubmenuOpen ? classes_1.CLASSES.IS_OPEN : ""}` },
37
+ react_1.default.createElement("button", { className: "uxf-cms-user-menu__button", onClick: toggle },
38
+ react_1.default.createElement(avatar_1.Avatar, { className: "uxf-cms-user-menu__avatar", src: props.avatar }),
39
+ react_1.default.createElement("div", { className: "uxf-cms-user-menu__label-wrapper" },
40
+ react_1.default.createElement("div", { className: "uxf-cms-user-menu__name" }, props.name),
41
+ react_1.default.createElement("div", { className: "uxf-cms-user-menu__roles" }, props.roles)),
42
+ react_1.default.createElement("div", { className: "uxf-cms-user-menu__caret-wrapper" }, hasSubmenu && (react_1.default.createElement(icon_1.Icon, { name: "caretDown", size: 16, className: `uxf-cms-user-menu__caret ${!isSubmenuOpen ? classes_1.CLASSES.IS_OPEN : ""}` })))),
43
+ isSubmenuOpen && (react_1.default.createElement("div", { className: "uxf-cms-user-menu__sub-menu" }, props.submenu.map((item, index) => (react_1.default.createElement(list_item_1.ListItem, { href: item.url, label: item.title, route: item.route, params: item.routeParams, icon: item.icon, key: index })))))));
43
44
  };
44
45
  const UserMenu = (props) => {
45
46
  var _a, _b, _c, _d, _e, _f;
46
- // eslint-disable-next-line react/destructuring-assignment
47
- const { menu } = props;
48
- const userMenu = menu.find((item) => !!item.userMenuData);
47
+ const userMenu = props.menu.find((item) => !!item.userMenuData);
49
48
  return (react_1.default.createElement(Component, { submenu: (_a = userMenu === null || userMenu === void 0 ? void 0 : userMenu.children) !== null && _a !== void 0 ? _a : [], name: (_c = (_b = userMenu === null || userMenu === void 0 ? void 0 : userMenu.userMenuData) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : "Uživatel", roles: (_e = (_d = userMenu === null || userMenu === void 0 ? void 0 : userMenu.userMenuData) === null || _d === void 0 ? void 0 : _d.roles) !== null && _e !== void 0 ? _e : "nepřihlášený", avatar: (_f = userMenu === null || userMenu === void 0 ? void 0 : userMenu.userMenuData) === null || _f === void 0 ? void 0 : _f.avatar }));
50
49
  };
51
50
  exports.UserMenu = UserMenu;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/cms",
3
- "version": "10.0.0-beta.5",
3
+ "version": "10.0.0-beta.51",
4
4
  "description": "UXF Cms",
5
5
  "author": "UXFans <dev@uxf.cz>",
6
6
  "homepage": "https://gitlab.com/uxf-npm/cms#readme",
@@ -40,52 +40,29 @@
40
40
  "@types/qs": "^6.9.7",
41
41
  "@types/react": "18.2.6",
42
42
  "@types/react-dom": "18.2.4",
43
- "@uxf/core": "^4.5.1",
44
- "@uxf/data-grid": "10.0.0-beta.4",
45
- "@uxf/eslint-config": "^1.3.0",
46
- "@uxf/form": "10.0.0-beta.4",
47
- "@uxf/icons-generator": "^1.3.0",
48
- "@uxf/router": "10.0.0-beta.3",
49
- "@uxf/ui": "10.0.0-beta.4",
50
- "@uxf/wysiwyg": "2.0.0-beta.28",
51
- "autoprefixer": "^10.4.14",
43
+ "@uxf/core": "10.0.0-beta.37",
44
+ "@uxf/data-grid": "10.0.0-beta.50",
45
+ "@uxf/form": "10.0.0-beta.49",
46
+ "@uxf/icons-generator": "10.0.0-beta.19",
47
+ "@uxf/router": "10.0.0-beta.15",
48
+ "@uxf/ui": "10.0.0-beta.49",
49
+ "@uxf/wysiwyg": "10.0.0-beta.51",
52
50
  "axios": "^1.4.0",
53
51
  "axios-hooks": "^4.0.0",
54
- "concurrently": "^8.1.0",
55
- "coordinate-parser": "^1.0.7",
52
+ "coordinate-parser": "1.0.7",
56
53
  "dayjs": "^1.11.7",
57
- "eslint": "^8.41.0",
58
- "eslint-plugin-tailwindcss": "3.12.1",
59
- "express": "^4.18.2",
60
- "express-http-proxy": "^1.6.3",
61
- "http-proxy-middleware": "^2.0.6",
62
54
  "next": "^13.4.4",
63
55
  "path": "^0.12.7",
64
- "postcss": "^8.4.24",
65
- "postcss-focus-visible": "^8.0.2",
66
- "postcss-import": "^15.1.0",
67
- "postcss-pxtorem": "^6.0.0",
68
- "postcss-syntax": "^0.36.2",
69
- "prettier": "^2.8.8",
70
- "prettier-plugin-tailwindcss": "^0.3.0",
71
56
  "qs": "^6.11.2",
72
57
  "react": "^18.2.0",
73
- "react-dom": "^18.2.0",
74
- "redux-devtools-extension": "^2.13.9",
75
- "stylelint": "^15.6.2",
76
- "stylelint-config-standard": "^33.0.0",
77
- "stylelint-config-tailwindcss": "^0.0.7",
78
- "stylelint-use-nesting": "^4.1.0",
79
- "tailwindcss": "^3.3.2",
80
- "ts-node": "^10.9.1",
81
- "typescript": "^5.0.4"
58
+ "react-dom": "^18.2.0"
82
59
  },
83
60
  "peerDependencies": {
84
- "@uxf/core": ">= 4.5.1",
85
- "@uxf/data-grid": "10.0.0-beta.5",
86
- "@uxf/form": "10.0.0-beta.5",
87
- "@uxf/ui": "10.0.0-beta.5",
88
- "@uxf/wysiwyg": "2.0.0-beta.28",
61
+ "@uxf/core": "10.0.0-beta.37",
62
+ "@uxf/data-grid": "10.0.0-beta.50",
63
+ "@uxf/form": "10.0.0-beta.49",
64
+ "@uxf/ui": "10.0.0-beta.49",
65
+ "@uxf/wysiwyg": "10.0.0-beta.51",
89
66
  "axios": "^1.4.0",
90
67
  "axios-hooks": "^4.0.0",
91
68
  "dayjs": "^1.11.7",
@@ -84,7 +84,7 @@ const GridPageComponent = (props) => {
84
84
  ].filter(Boolean);
85
85
  return (react_1.default.createElement(Layout, { key: entityAlias, title: (_a = title !== null && title !== void 0 ? title : metaSchema === null || metaSchema === void 0 ? void 0 : metaSchema.title) !== null && _a !== void 0 ? _a : "" },
86
86
  react_1.default.createElement("div", { className: "mb-10" },
87
- react_1.default.createElement(tailwindui_1.DataGrid, { noBorder: true, callbackRef: callbackRef, schema: gridSchema, initialState: query.filter ? (0, router_1.queryParamToString)(query.filter) : undefined, title: title !== null && title !== void 0 ? title : metaSchema === null || metaSchema === void 0 ? void 0 : metaSchema.title, gridName: entityAlias, loader: loader !== null && loader !== void 0 ? loader : universalLoader, ...hiddenColumnProps, onOpen: onOpen && ((row) => onOpen(entityAlias, row, actionsBag)), getOpenUrl: getOpenUrl && ((row) => getOpenUrl(entityAlias, row)), onEdit: onEdit && ((row) => onEdit(entityAlias, row, actionsBag)), getEditUrl: getEditUrl && ((row) => getEditUrl(entityAlias, row)), onRemove: onRemove && ((row) => onRemove(entityAlias, row, actionsBag)), rowHeight: rowHeight, defaultConfig: defaultConfig, ui: dataGridUi, selectedRows: selectable ? selectedRows : undefined, onChangeSelectedRows: selectable ? setSelectedRows : undefined, customActions: cActions, mode: (_b = uiContextValues === null || uiContextValues === void 0 ? void 0 : uiContextValues.colorScheme.getUserSettings()) !== null && _b !== void 0 ? _b : "light" }))));
87
+ react_1.default.createElement(tailwindui_1.DataGrid, { noBorder: true, callbackRef: callbackRef, schema: gridSchema, initialState: query.filter ? (0, router_1.queryParamToString)(query.filter) : undefined, title: title !== null && title !== void 0 ? title : metaSchema === null || metaSchema === void 0 ? void 0 : metaSchema.title, gridName: entityAlias, loader: loader !== null && loader !== void 0 ? loader : universalLoader, ...hiddenColumnProps, onOpen: onOpen && ((row) => onOpen(entityAlias, row, actionsBag)), getOpenUrl: getOpenUrl && ((row) => getOpenUrl(entityAlias, row)), onEdit: onEdit && ((row) => onEdit(entityAlias, row, actionsBag)), getEditUrl: getEditUrl && ((row) => getEditUrl(entityAlias, row)), onRemove: onRemove && ((row) => onRemove(entityAlias, row, actionsBag)), rowHeight: rowHeight, defaultConfig: defaultConfig, ui: dataGridUi, selectedRows: selectable ? selectedRows : undefined, onChangeSelectedRows: selectable ? setSelectedRows : undefined, customActions: cActions, mode: (_b = uiContextValues === null || uiContextValues === void 0 ? void 0 : uiContextValues.colorScheme.getUserSettings()) !== null && _b !== void 0 ? _b : "light", onCsvDownload: (r) => window.open(`/api/cms/datagrid/export/${entityAlias}?${(0, qs_1.stringify)(r)}`) }))));
88
88
  };
89
89
  GridPageComponent.displayName = "GridPageComponent";
90
90
  const GridPage = (config) => {
@@ -0,0 +1,30 @@
1
+ .uxf-cms-breadcrumbs {
2
+ @apply uxf-typo-body;
3
+
4
+ align-items: center;
5
+ color: theme("colors.lightLow");
6
+ display: flex;
7
+ flex-wrap: wrap;
8
+ margin-bottom: theme("spacing.4");
9
+
10
+ &__item {
11
+ margin-right: theme("spacing.2");
12
+
13
+ &:last-child {
14
+ margin-right: 0;
15
+ }
16
+ }
17
+
18
+ &__divide-icon {
19
+ margin-right: theme("spacing.2");
20
+ display: inline;
21
+ }
22
+
23
+ &__link {
24
+ @apply transition-colors;
25
+
26
+ &:hover {
27
+ color: theme("colors.lightHigh");
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,134 @@
1
+ .uxf-cms-layout {
2
+ display: flex;
3
+
4
+ &__wrapper {
5
+ display: flex;
6
+ width: 100%;
7
+
8
+ :root .light & {
9
+ background-color: theme('colors.gray.100');
10
+ }
11
+
12
+ :root .dark & {
13
+ background-color: theme('colors.gray.900');
14
+ color: theme('colors.darkHigh');
15
+ }
16
+ }
17
+
18
+ &__main {
19
+ --drawer-width: 264px;
20
+
21
+ min-height: 100vh;
22
+ padding-bottom: theme('spacing.16');
23
+ width: 100%;
24
+
25
+ @media screen(md) {
26
+ margin-left: var(--drawer-width);
27
+ padding-bottom: 0;
28
+ width: calc(100% - var(--drawer-width));
29
+ }
30
+
31
+ }
32
+
33
+ &__loading {
34
+ align-items: center;
35
+ display: flex;
36
+ flex-direction: column;
37
+ height: theme('spacing.96');
38
+ justify-content: center;
39
+
40
+ &-inner {
41
+ text-align: center;
42
+ }
43
+
44
+ &-text {
45
+ margin-top: theme('spacing.2');
46
+ }
47
+ }
48
+
49
+ &__header {
50
+ :root .light & {
51
+ background-color: theme('colors.white');
52
+ }
53
+
54
+ :root .dark & {
55
+ background-color: theme('colors.gray.950');
56
+ }
57
+
58
+ &--sticky {
59
+ box-shadow: theme('boxShadow.md');
60
+ position: sticky;
61
+ top: 0;
62
+ z-index: 10;
63
+
64
+ :root .light & {
65
+ background-color: theme('colors.white');
66
+ }
67
+
68
+ :root .dark & {
69
+ background-color: theme('colors.gray.950');
70
+ }
71
+ }
72
+ }
73
+
74
+ &__toolbar {
75
+ align-items: center;
76
+ background-color: theme('colors.sidebar.background');
77
+ display: flex;
78
+ height: theme('spacing.12');
79
+ justify-content: flex-end;
80
+ padding: 0 theme('spacing.6');
81
+
82
+ :root .light & {
83
+ color: theme('colors.darkMedium');
84
+ }
85
+
86
+ :root .dark & {
87
+ color: theme('colors.lightMedium');
88
+ }
89
+
90
+ }
91
+
92
+ &__container {
93
+ margin: 0 auto;
94
+ padding: 0 theme('spacing.4');
95
+
96
+ @media screen(md) {
97
+ padding-left: theme('spacing.10');
98
+ padding-right: theme('spacing.10');
99
+ }
100
+
101
+ &--basic {
102
+ padding-bottom: theme('spacing.9');
103
+ padding-top: theme('spacing.12');
104
+ }
105
+
106
+ &--narrow {
107
+ max-width: 49.25rem;
108
+ }
109
+
110
+ &--wide {
111
+ max-width: 64rem;
112
+ }
113
+ }
114
+
115
+ &__title-wrapper {
116
+ align-items: center;
117
+ display: flex;
118
+ justify-content: space-between;
119
+ }
120
+
121
+ &__avatar-title-wrapper {
122
+ align-items: center;
123
+ display: flex;
124
+ gap: 20px;
125
+ }
126
+
127
+ &__breadcrumbs-title-wrapper {
128
+ width: 100%;
129
+ }
130
+
131
+ &__title {
132
+ @apply uxf-typo-h4;
133
+ }
134
+ }
@@ -0,0 +1,52 @@
1
+ .uxf-cms-login-layout {
2
+ align-items: center;
3
+ display: flex;
4
+ flex-direction: column;
5
+ justify-content: center;
6
+ min-height: 100vh;
7
+ padding: theme('spacing.4');
8
+
9
+ :root .light & {
10
+ background-color: theme('colors.gray.100');
11
+ }
12
+
13
+ :root .dark & {
14
+ background-color: theme('colors.gray.900');
15
+ color: theme('colors.darkHigh');
16
+ }
17
+
18
+ &__logo-wrapper {
19
+ margin-bottom: theme('spacing.8');
20
+ }
21
+
22
+ &__title {
23
+ @apply uxf-typo-h4;
24
+
25
+ &--hidden {
26
+ @apply sr-only;
27
+ }
28
+ }
29
+
30
+ &__subtitle {
31
+ margin-top: theme('spacing.2');
32
+
33
+ :root .light & {
34
+ color: theme('colors.lightMedium');
35
+ }
36
+
37
+ :root .dark & {
38
+ color: theme('colors.darkMedium');
39
+ }
40
+ }
41
+
42
+ &__body {
43
+ margin-top: theme('spacing.8');
44
+ max-width: 100%;
45
+ padding: theme('spacing.6');
46
+ width: 28rem;
47
+
48
+ :root .dark & {
49
+ background-color: theme('colors.gray.950');
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,213 @@
1
+ .uxf-cms-menu {
2
+ background-color: theme('colors.sidebar.background');
3
+ padding: 0 theme('spacing.2') theme('spacing.4');
4
+
5
+ &__item-wrapper {
6
+ &--super {
7
+ &:first-child {
8
+ & > .uxf-cms-menu__item--super {
9
+ margin-top: 0;
10
+ }
11
+ }
12
+ }
13
+
14
+ &--user-menu {
15
+ @media screen(md) {
16
+ display: none;
17
+ }
18
+ }
19
+ }
20
+
21
+ &__item {
22
+ &--super {
23
+ @apply uxf-typo-overline;
24
+
25
+ color: theme('colors.darkLow');
26
+ margin-bottom: theme('spacing.3');
27
+ margin-top: theme('spacing.6');
28
+ padding-left: theme('spacing.2');
29
+ text-transform: uppercase;
30
+ }
31
+
32
+ &--basic {
33
+ align-items: center;
34
+ background-color: theme('colors.sidebar.background');
35
+ border-radius: theme('borderRadius.lg');
36
+ color: theme('colors.darkMedium');
37
+ cursor: pointer;
38
+ display: flex;
39
+ margin-bottom: theme('spacing[0.5]');
40
+ padding: theme('spacing[2.5]') theme('spacing.1') theme('spacing[2.5]') theme('spacing[2.5]');
41
+
42
+ &:hover {
43
+ background-color: theme('colors.sidebar.hover');
44
+ }
45
+
46
+ &.is-selected {
47
+ background-color: theme('colors.sidebar.highlight');
48
+ color: theme('colors.darkHigh');
49
+ font-weight: bold;
50
+ }
51
+
52
+ .uxf-cms-menu__icon-wrapper {
53
+ width: theme('spacing.7');
54
+
55
+ &--level-one {
56
+ width: theme('spacing.9');
57
+ }
58
+ }
59
+
60
+ .uxf-cms-menu__caret {
61
+ margin-left: auto;
62
+ margin-right: theme('spacing.2');
63
+
64
+ &.is-open {
65
+ transform: rotate(-90deg);
66
+ }
67
+ }
68
+ }
69
+ }
70
+
71
+ &__icon-wrapper {
72
+ flex-shrink: 0;
73
+ }
74
+
75
+ &__submenu-button {
76
+ width: 100%;
77
+
78
+ &--initially-closed {
79
+ @media screen(md) {
80
+ display: none;
81
+ }
82
+ }
83
+
84
+ &--initially-open {
85
+ @media screen(md) {
86
+ pointer-events: none;
87
+ }
88
+ }
89
+ }
90
+ }
91
+
92
+ .uxf-cms-user-menu {
93
+ border-top: 1px solid theme('colors.darkBorder');
94
+ color: theme('colors.darkMedium');
95
+ display: none;
96
+
97
+ @media screen(md) {
98
+ display: block;
99
+ }
100
+
101
+ &.is-open {
102
+ background-color: theme('colors.sidebar.hover');
103
+
104
+ .uxf-cms-menu__item {
105
+ background-color: theme('colors.sidebar.hover');
106
+
107
+ &:hover {
108
+ background-color: theme('colors.sidebar.background');
109
+ }
110
+ }
111
+ }
112
+
113
+ &__button {
114
+ align-items: center;
115
+ display: flex;
116
+ text-align: left;
117
+ width: 100%;
118
+ padding: theme("spacing.3") theme("spacing.4");
119
+
120
+ &:hover {
121
+ background-color: theme('colors.sidebar.hover');
122
+ }
123
+ }
124
+
125
+ &__avatar {
126
+ flex-shrink: 0;
127
+ height: 32px;
128
+ margin-right: theme('spacing.3');
129
+ width: 32px;
130
+ }
131
+
132
+ &__label-wrapper {
133
+ @apply truncate;
134
+ }
135
+
136
+ &__name {
137
+ @apply uxf-typo-body2;
138
+ }
139
+
140
+ &__roles {
141
+ @apply uxf-typo-caption truncate;
142
+
143
+ color: theme('colors.darkLow');
144
+ }
145
+
146
+ &__caret-wrapper {
147
+ margin-left: auto;
148
+ }
149
+
150
+ &__caret {
151
+ margin-left: theme('spacing.2');
152
+
153
+ &.is-open {
154
+ transform: rotate(-90deg);
155
+ }
156
+ }
157
+
158
+ &__sub-menu {
159
+ padding: 0 theme("spacing.3") theme("spacing.4");
160
+ }
161
+ }
162
+
163
+ .uxf-cms-sub-menu {
164
+ display: none;
165
+
166
+ @media screen(md) {
167
+ display: block;
168
+ }
169
+
170
+ &__wrapper {
171
+ background-color: theme('colors.sidebar.highlight');
172
+ border-radius: theme('borderRadius.xl');
173
+ box-shadow: theme('boxShadow.lg');
174
+ overflow-y: auto;
175
+ width: 100%;
176
+ z-index: theme('zIndex.dropdown');
177
+ }
178
+
179
+ &__wrapper-mobile {
180
+ background-color: theme('colors.sidebar.background');
181
+ border-radius: theme('borderRadius.xl');
182
+ box-shadow: theme('boxShadow.lg');
183
+ left: theme('spacing.4');
184
+ overflow-y: auto;
185
+ width: calc(100vw - 32px);
186
+ z-index: theme('zIndex.dropdown');
187
+ }
188
+
189
+ &__item {
190
+ @apply md:text-body2;
191
+
192
+ background-color: theme('colors.sidebar.highlight');
193
+ color: theme('colors.darkMedium');
194
+ font-size: theme('fontSize.body');
195
+ padding: theme("spacing[3.5]");
196
+ width: 100%;
197
+
198
+ &:hover {
199
+ background-color: theme('colors.sidebar.background');
200
+ color: theme('colors.darkLow');
201
+ }
202
+ }
203
+
204
+ &__title {
205
+ @apply uxf-typo-body;
206
+
207
+ background-color: theme('colors.sidebar.background');
208
+ color: theme('colors.darkHigh');
209
+ font-weight: bold;
210
+ padding: theme("spacing[3.5]") theme("spacing.4");
211
+ width: 100%;
212
+ }
213
+ }
@@ -0,0 +1,34 @@
1
+ .uxf-cms-mobile-bar {
2
+ align-items: center;
3
+ background-color: theme("colors.sidebar.background");
4
+ bottom: 0;
5
+ color: theme("colors.darkMedium");
6
+ display: flex;
7
+ height: 52px;
8
+ left: 0;
9
+ padding: 0 theme("spacing.1");
10
+ position: fixed;
11
+ right: 0;
12
+
13
+ @media screen(md) {
14
+ display: none;
15
+ }
16
+
17
+ &__button {
18
+ align-items: center;
19
+ display: flex;
20
+ flex-grow: 1;
21
+ flex-shrink: 0;
22
+ height: theme("spacing.11");
23
+ justify-content: center;
24
+ }
25
+
26
+ &__avatar {
27
+ height: theme("spacing.7");
28
+ width: theme("spacing.7");
29
+ }
30
+
31
+ &__caret {
32
+ margin-left: theme("spacing.1");
33
+ }
34
+ }
@@ -0,0 +1,108 @@
1
+ .uxf-cms-sidebar {
2
+ display: flex;
3
+ flex-direction: column;
4
+ position: fixed;
5
+ width: 100%;
6
+ z-index: 15;
7
+
8
+ @screen xs {
9
+ right: 0;
10
+ width: var(--drawer-width);
11
+ }
12
+
13
+ @screen md {
14
+ left: 0;
15
+ right: unset;
16
+ z-index: 1;
17
+ border-bottom: none;
18
+ }
19
+
20
+ &__content {
21
+ --device-height: 100vh;
22
+
23
+ background-color: theme("colors.sidebar.background");
24
+ border-bottom: 1px solid theme("colors.gray.700");
25
+ flex-direction: column;
26
+ height: calc(var(--device-height) - 52px);
27
+ padding-top: theme("spacing.5");
28
+
29
+ @media screen(md) {
30
+ height: 100vh;
31
+ border-bottom: none;
32
+ }
33
+
34
+ &--open {
35
+ display: flex;
36
+ }
37
+
38
+ &--closed {
39
+ display: none;
40
+
41
+ @media screen(md) {
42
+ display: flex;
43
+ }
44
+ }
45
+ }
46
+
47
+ &__logo {
48
+ padding: 0 theme("spacing.4");
49
+ }
50
+
51
+ &__nav {
52
+ flex-grow: 1;
53
+ margin-top: theme("spacing.8");
54
+ overflow: auto;
55
+ padding: 0 0 theme("spacing.4");
56
+
57
+ @media screen(md) {
58
+ padding: 0;
59
+ }
60
+
61
+ &--super-section {
62
+ margin-top: theme("spacing.4");
63
+ }
64
+
65
+ /* width */
66
+ &::-webkit-scrollbar {
67
+ width: 8px;
68
+ }
69
+
70
+ /* Track */
71
+ &::-webkit-scrollbar-track {
72
+ background: theme("colors.sidebar.background");
73
+ }
74
+
75
+ /* Handle */
76
+ &::-webkit-scrollbar-thumb {
77
+ background: theme("colors.sidebar.highlight");
78
+ border-radius: 999px;
79
+ }
80
+
81
+ /* Handle on hover */
82
+ &::-webkit-scrollbar-thumb:hover {
83
+ background: theme("colors.sidebar.hover");
84
+ }
85
+ }
86
+
87
+ &__scrollbar {
88
+ --scrollbar-color: theme("colors.darkBorder");
89
+
90
+ -ms-overflow-style: -ms-autohiding-scrollbar;
91
+ scrollbar-color: var(--scrollbar-color) transparent;
92
+ scrollbar-width: thin;
93
+
94
+ &::-webkit-scrollbar {
95
+ width: theme("spacing.2");
96
+ }
97
+
98
+ &::-webkit-scrollbar-track {
99
+ background: theme("colors.sidebar.highlight");
100
+ }
101
+
102
+ &::-webkit-scrollbar-thumb {
103
+ background-color: var(--scrollbar-color);
104
+ border-radius: 999px;
105
+ border: none;
106
+ }
107
+ }
108
+ }
@@ -2,7 +2,7 @@
2
2
  module.exports = {
3
3
  ...require("@uxf/ui/utils/icons-config"),
4
4
  ...require("@uxf/data-grid/icons-config"),
5
- ...require("@uxf/wysiwyg/icons"),
5
+ ...require("@uxf/wysiwyg/utils/icons-config"),
6
6
  angleRight: {
7
7
  width: 256,
8
8
  height: 512,
package/utils/styles.css CHANGED
@@ -1,43 +1,6 @@
1
- .sidebar__nav {
2
- /* width */
3
- &::-webkit-scrollbar {
4
- width: 4px;
5
- }
6
-
7
- /* Track */
8
- &::-webkit-scrollbar-track {
9
- background: theme("colors.sidebar.background");
10
- }
11
-
12
- /* Handle */
13
- &::-webkit-scrollbar-thumb {
14
- background: theme("colors.sidebar.highlight");
15
- }
16
-
17
- /* Handle on hover */
18
- &::-webkit-scrollbar-thumb:hover {
19
- background: theme("colors.sidebar.hover");
20
- }
21
- }
22
-
23
- .sidebar__scrollbar {
24
- --scrollbar-color: theme("colors.darkBorder");
25
-
26
- -ms-overflow-style: -ms-autohiding-scrollbar;
27
- scrollbar-color: var(--scrollbar-color) transparent;
28
- scrollbar-width: thin;
29
-
30
- &::-webkit-scrollbar {
31
- @apply w-2;
32
- }
33
-
34
- &::-webkit-scrollbar-track {
35
- background: theme("colors.sidebar.highlight");
36
- }
37
-
38
- &::-webkit-scrollbar-thumb {
39
- @apply rounded-full border-none;
40
-
41
- background-color: var(--scrollbar-color);
42
- }
43
- }
1
+ @import url("./../ui/styles/layout.css");
2
+ @import url("./../ui/styles/login-layout.css");
3
+ @import url("./../ui/styles/sidebar.css");
4
+ @import url("./../ui/styles/mobile-bar.css");
5
+ @import url("./../ui/styles/menu.css");
6
+ @import url("./../ui/styles/breadcrumbs.css");