@wener/console
Version:
Base console UI toolkit
56 lines (55 loc) • 2.03 kB
JavaScript
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