@uxf/cms 10.0.0-beta.7 → 10.0.0-beta.71

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.
Files changed (45) hide show
  1. package/lib/layout/breadcrumbs.js +3 -3
  2. package/lib/layout/layout-container.js +3 -3
  3. package/lib/layout/layout.js +22 -21
  4. package/lib/layout/sidebar.js +33 -19
  5. package/lib/layout/types.d.ts +1 -0
  6. package/lib/login-layout/login-layout.js +6 -8
  7. package/lib/menu/factory.d.ts +4 -4
  8. package/lib/menu/factory.js +6 -4
  9. package/lib/menu/mobile-bar.d.ts +4 -2
  10. package/lib/menu/mobile-bar.js +8 -10
  11. package/lib/menu/model.d.ts +6 -2
  12. package/lib/menu/model.js +7 -0
  13. package/lib/menu/ui/list-item/list-item.js +16 -15
  14. package/lib/menu/ui/list-item/types.d.ts +5 -4
  15. package/lib/menu/ui/menu-custom-item.js +2 -4
  16. package/lib/menu/ui/menu-item.js +10 -11
  17. package/lib/menu/ui/menu-super-section-item.js +3 -5
  18. package/lib/menu/ui/menu.js +1 -1
  19. package/lib/menu/ui/sub-menu/{sub-menuItem.js → sub-menu-item.js} +4 -6
  20. package/lib/menu/ui/sub-menu/sub-menu-mobile.js +4 -4
  21. package/lib/menu/ui/sub-menu/sub-menu.js +4 -4
  22. package/lib/menu/ui/sub-menu/use-sub-menu.d.ts +2 -2
  23. package/lib/menu/ui/sub-menu/use-sub-menu.js +1 -1
  24. package/lib/menu/ui/user-menu.js +12 -12
  25. package/package.json +15 -38
  26. package/pages/grid-page/grid-page.js +2 -2
  27. package/ui/avatar/avatar.d.ts +11 -0
  28. package/ui/avatar/avatar.js +47 -0
  29. package/ui/avatar/get-avatar-user-letters.d.ts +1 -0
  30. package/ui/avatar/get-avatar-user-letters.js +17 -0
  31. package/ui/avatar/index.d.ts +3 -0
  32. package/ui/avatar/index.js +5 -0
  33. package/ui/avatar/theme.d.ts +11 -0
  34. package/ui/avatar/theme.js +2 -0
  35. package/ui/styles/avatar.css +50 -0
  36. package/ui/styles/breadcrumbs.css +30 -0
  37. package/ui/styles/layout.css +132 -0
  38. package/ui/styles/login-layout.css +52 -0
  39. package/ui/styles/menu.css +217 -0
  40. package/ui/styles/mobile-bar.css +34 -0
  41. package/ui/styles/sidebar.css +108 -0
  42. package/utils/icons.config.js +1 -1
  43. package/utils/styles.css +7 -43
  44. package/utils/tailwind.config.js +5 -0
  45. /package/lib/menu/ui/sub-menu/{sub-menuItem.d.ts → sub-menu-item.d.ts} +0 -0
@@ -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,10 +1,10 @@
1
1
  import { MenuItem, UserMenuData } from "./model";
2
2
  import { IconName } from "@uxf/ui/icon/types";
3
- import { ReactNode } from "react";
3
+ import { ReactElement, ReactNode } from "react";
4
4
  export declare function createCustomContent(title: string, content: ReactNode): MenuItem;
5
5
  export declare function createSuperSection(title: string, children?: MenuItem[]): MenuItem;
6
6
  export declare function createSection(title: string, icon?: IconName, children?: MenuItem[]): MenuItem;
7
- export declare function createLink(title: string, routeName: string, routeParams?: any, icon?: IconName): MenuItem;
8
- export declare function createExternalLink(title: string, href: string, icon?: IconName): MenuItem;
7
+ export declare function createLink(title: string, routeName: string, routeParams?: any, icon?: IconName, endElement?: ReactElement): MenuItem;
8
+ export declare function createExternalLink(title: string, href: string, icon?: IconName, endElement?: ReactElement): MenuItem;
9
9
  export declare function createUserMenu(userMenuData: UserMenuData, children?: MenuItem[]): MenuItem;
10
- export declare function createTableLink(title: string, entityAlias: string, icon?: IconName): MenuItem;
10
+ export declare function createTableLink(title: string, entityAlias: string, icon?: IconName, endElement?: ReactElement): MenuItem;
@@ -15,25 +15,27 @@ function createSection(title, icon, children) {
15
15
  return model_1.MenuItem.create(title, "section").setIcon(icon).setChildren(children);
16
16
  }
17
17
  exports.createSection = createSection;
18
- function createLink(title, routeName, routeParams, icon) {
18
+ function createLink(title, routeName, routeParams, icon, endElement) {
19
19
  return model_1.MenuItem.create(title, "link")
20
20
  .setRoute(routeName, routeParams)
21
21
  .setIcon(icon)
22
+ .setEndElement(endElement)
22
23
  .setActiveResolver(active_item_resolver_1.ActiveItemResolver.anyOf([routeName]));
23
24
  }
24
25
  exports.createLink = createLink;
25
- function createExternalLink(title, href, icon) {
26
- return model_1.MenuItem.create(title, "link").setIsExternal(true).setIcon(icon).setUrl(href);
26
+ function createExternalLink(title, href, icon, endElement) {
27
+ return model_1.MenuItem.create(title, "link").setIsExternal(true).setIcon(icon).setEndElement(endElement).setUrl(href);
27
28
  }
28
29
  exports.createExternalLink = createExternalLink;
29
30
  function createUserMenu(userMenuData, children) {
30
31
  return model_1.MenuItem.create("Můj profil", "super-section").setUserMenuData(userMenuData).setChildren(children);
31
32
  }
32
33
  exports.createUserMenu = createUserMenu;
33
- function createTableLink(title, entityAlias, icon) {
34
+ function createTableLink(title, entityAlias, icon, endElement) {
34
35
  return model_1.MenuItem.create(title, "link")
35
36
  .setRoute("cms/table", { entityAlias })
36
37
  .setIcon(icon)
38
+ .setEndElement(endElement)
37
39
  .setActiveResolver(active_item_resolver_1.ActiveItemResolver.tableLink());
38
40
  }
39
41
  exports.createTableLink = createTableLink;
@@ -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 {};
@@ -9,14 +9,13 @@ const link_1 = __importDefault(require("next/link"));
9
9
  const icon_1 = require("@uxf/ui/icon");
10
10
  const sub_menu_mobile_1 = require("./ui/sub-menu/sub-menu-mobile");
11
11
  const config_1 = require("../../config");
12
- const avatar_1 = require("@uxf/ui/avatar");
12
+ const avatar_1 = require("../../ui/avatar");
13
13
  const cx_1 = require("@uxf/core/utils/cx");
14
+ const get_avatar_user_letters_1 = require("../../ui/avatar/get-avatar-user-letters");
14
15
  const MobileBar = (props) => {
15
- // eslint-disable-next-line react/destructuring-assignment
16
- const { menuConfiguration, toggleMenu } = props;
17
16
  const useLoggedUser = config_1.container.get("useLoggedUser");
18
17
  const loggedUser = useLoggedUser();
19
- const mobileBarMenu = menuConfiguration
18
+ const mobileBarMenu = props.menuConfiguration
20
19
  .flatMap((item) => {
21
20
  if (item.type === "link" || item.type === "section") {
22
21
  return item;
@@ -32,16 +31,15 @@ const MobileBar = (props) => {
32
31
  .filter((i) => i)
33
32
  .filter((item) => (item === null || item === void 0 ? void 0 : item.isVisible(loggedUser)) && (!item.children.length || item.hasVisibleChildren(loggedUser)))
34
33
  .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" },
34
+ 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");
35
+ return (react_1.default.createElement("div", { className: "uxf-cms-mobile-bar" },
37
36
  mobileBarMenu.map((item, index) => {
38
37
  var _a, _b, _c, _d;
39
38
  if (item.children.length) {
40
39
  return (react_1.default.createElement(sub_menu_mobile_1.SubMenuMobile, { key: index, content: item.children, title: item.title },
41
- 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("button", { type: "button", className: buttonClassName }, item.userMenuData ? (react_1.default.createElement(avatar_1.Avatar, { className: "uxf-cms-mobile-bar__avatar", letters: (0, get_avatar_user_letters_1.getAvatarUserLetters)(item.userMenuData.name), size: "sm", src: item.userMenuData.avatar, variant: "rounded" })) : (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;
@@ -2,10 +2,11 @@ import { LoggedUser } from "../../config/container";
2
2
  import { Resolver } from "./types";
3
3
  import { NextRouter } from "next/router";
4
4
  import { IconName } from "@uxf/ui/icon/types";
5
- import { ReactNode } from "react";
5
+ import { ReactElement, ReactNode } from "react";
6
+ import { ImageSource } from "@uxf/core/utils/resizer";
6
7
  type ItemType = "custom" | "super-section" | "section" | "link";
7
8
  export type UserMenuData = {
8
- avatar?: string;
9
+ avatar?: ImageSource;
9
10
  name: string;
10
11
  roles: string;
11
12
  };
@@ -18,6 +19,7 @@ export declare class MenuItem {
18
19
  private _routeParams?;
19
20
  private _isExternal?;
20
21
  private _icon?;
22
+ private _endElement?;
21
23
  private _activeItemResolver?;
22
24
  private _allowedRoles?;
23
25
  private _content?;
@@ -26,6 +28,7 @@ export declare class MenuItem {
26
28
  constructor(title: string, type: ItemType);
27
29
  setContent(content: ReactNode): MenuItem;
28
30
  setIcon(icon?: IconName): MenuItem;
31
+ setEndElement(endElement?: ReactElement): MenuItem;
29
32
  setChildren(children?: MenuItem[]): MenuItem;
30
33
  setRoute(route: string, routeParams?: object): MenuItem;
31
34
  setUrl(url: string): MenuItem;
@@ -45,6 +48,7 @@ export declare class MenuItem {
45
48
  get routeParams(): any;
46
49
  get isExternal(): boolean | undefined;
47
50
  get icon(): IconName | undefined;
51
+ get endElement(): ReactElement | undefined;
48
52
  get allowedRoles(): string[] | undefined;
49
53
  get content(): ReactNode;
50
54
  get userMenuData(): UserMenuData | undefined;
package/lib/menu/model.js CHANGED
@@ -18,6 +18,10 @@ class MenuItem {
18
18
  this._icon = icon;
19
19
  return this;
20
20
  }
21
+ setEndElement(endElement) {
22
+ this._endElement = endElement;
23
+ return this;
24
+ }
21
25
  setChildren(children) {
22
26
  this._children = children !== null && children !== void 0 ? children : [];
23
27
  return this;
@@ -91,6 +95,9 @@ class MenuItem {
91
95
  get icon() {
92
96
  return this._icon;
93
97
  }
98
+ get endElement() {
99
+ return this._endElement;
100
+ }
94
101
  get allowedRoles() {
95
102
  return this._allowedRoles;
96
103
  }
@@ -9,27 +9,28 @@ 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
+ react_1.default.createElement("div", { className: "uxf-cms-menu__item-end-element" }, props.endElement),
20
+ 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
21
  // 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) {
22
+ const Button = ({ className }) => (react_1.default.createElement("button", { type: "button", onClick: props.toggle, className: className }, Content));
23
+ if (props.href || props.route) {
24
+ if (props.subMenu && hasSubMenu && !props.isInitiallyOpen) {
24
25
  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" })));
26
+ react_1.default.createElement(sub_menu_1.SubMenu, { content: props.subMenu },
27
+ 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)),
28
+ react_1.default.createElement(Button, { className: "uxf-cms-menu__submenu-button uxf-cms-menu__submenu-button--initially-closed" })));
28
29
  }
29
30
  if (hasSubMenu) {
30
- return react_1.default.createElement(Button, { className: "w-full md:pointer-events-none" });
31
+ return react_1.default.createElement(Button, { className: "uxf-cms-menu__submenu-button uxf-cms-menu__submenu-button--initially-open" });
31
32
  }
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));
33
+ 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
34
  }
34
35
  return Content;
35
36
  };
@@ -3,16 +3,17 @@ import { IconName } from "@uxf/ui/icon/types";
3
3
  import { MenuItem } from "../../model";
4
4
  export interface ListItemProps<RouteList> {
5
5
  children?: ReactElement;
6
+ endElement?: ReactElement;
7
+ href?: string;
6
8
  icon?: IconName;
9
+ isExternal?: boolean;
10
+ isInitiallyOpen?: boolean;
11
+ isOpen?: boolean;
7
12
  label: string;
8
13
  level?: number;
9
14
  params?: any;
10
15
  route?: keyof RouteList;
11
16
  selected?: boolean;
12
- href?: string;
13
17
  subMenu?: MenuItem[];
14
- isOpen?: boolean;
15
- isInitiallyOpen?: boolean;
16
18
  toggle?: () => void;
17
- isExternal?: boolean;
18
19
  }
@@ -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,27 +30,26 @@ 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, { endElement: props.item.endElement, href: (_a = props.item.url) !== null && _a !== void 0 ? _a : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.url, icon: props.item.icon, isExternal: props.item.isExternal, isInitiallyOpen: isInitiallyOpen, isOpen: isSubmenuOpen, label: props.item.title, params: (_c = (_b = props.item.routeParams) !== null && _b !== void 0 ? _b : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.routeParams) !== null && _c !== void 0 ? _c : null, route: (_d = props.item.route) !== null && _d !== void 0 ? _d : firstVisibleChild === null || firstVisibleChild === void 0 ? void 0 : firstVisibleChild.route, selected: isActive, subMenu: props.item.children, toggle: toggle }),
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
- 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 }));
52
+ return (react_1.default.createElement(list_item_1.ListItem, { endElement: i.endElement, href: i.url, icon: i.icon, isExternal: i.isExternal, key: i.title, label: i.title, level: 1, params: i.routeParams, route: i.route, selected: isSelected }));
54
53
  })))));
55
54
  };
56
55
  exports.MenuItem = MenuItem;
@@ -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
  });