UNPKG

@wener/console

Version:

Base console UI toolkit

56 lines (55 loc) 2.03 kB
import React from "react"; import { SiteLogo } from "@wener/console/console"; import { useContextStore } from "@wener/console/hooks"; import { AutoNavLink, LeftSideMenuBarLayout } from "@wener/console/web"; import { DockLayout } from "../DockLayout/index.js"; const { MenuBarItem } = LeftSideMenuBarLayout; const TitleDivider = ({ children }) => { return /*#__PURE__*/ React.createElement("div", { className: "w-full border-b pt-4 text-center text-[12px] font-bold opacity-40" }, children); }; function renderMenuItems(items) { const NavLink = AutoNavLink; return items.map((item, i) => { if ("type" in item) { if (item.type === "group") { return [ item.title ? /*#__PURE__*/ React.createElement(TitleDivider, { key: item.name || item.title }, item.title) : null, ...renderMenuItems(item.items) ]; } return null; } return [ /*#__PURE__*/ React.createElement(MenuBarItem, { NavLink: NavLink, key: `${i}-${item.title}`, item: item }) ]; }); } const TopItems = [ { title: "\u9996\u9875", href: "/", icon: /*#__PURE__*/ React.createElement(SiteLogo, null) } ]; export const ConsoleLayout = ({ children, ...props }) => { const { useWatch } = useContextStore(); const { top = [], center = [], bottom = [] } = useWatch("console.menu") ?? {}; return /*#__PURE__*/ React.createElement(LeftSideMenuBarLayout, { className: "min-h-screen flex-1", top: renderMenuItems([ ...TopItems, ...top ].concat(props.top || [])), center: renderMenuItems(center.concat(props.center || [])), bottom: renderMenuItems(bottom.concat(props.bottom || [])) }, /*#__PURE__*/ React.createElement(DockLayout, null, children)); }; //# sourceMappingURL=ConsoleLayout.js.map