dumi-theme-lobehub
Version:
dumi-theme-lobehub is a documentation site theme package designed for dumi2. It provides a more beautiful and user-friendly development and reading experience based on @lobehub/ui
57 lines • 2.19 kB
JavaScript
var _templateObject;
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
import { Tabs } from '@lobehub/ui';
import { createStyles } from 'antd-style';
import { Link, history } from 'dumi';
import NavbarExtra from 'dumi/theme-default/slots/NavbarExtra';
import { memo } from 'react';
import { siteSelectors, useSiteStore } from "../../store";
import { jsx as _jsx } from "react/jsx-runtime";
import { Fragment as _Fragment } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
var useStyles = createStyles(function (_ref) {
var css = _ref.css,
stylish = _ref.stylish;
return {
link: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", "\n "])), stylish.resetLinkColor)
};
});
var Navbar = /*#__PURE__*/memo(function () {
var _useStyles = useStyles(),
styles = _useStyles.styles;
var regLink = /^(\w+:)\/\/|^(mailto|tel):/;
var nav = useSiteStore(function (s) {
return s.navData;
});
var activePath = useSiteStore(siteSelectors.activePath);
return /*#__PURE__*/_jsxs(_Fragment, {
children: [/*#__PURE__*/_jsx(Tabs, {
activeKey: activePath,
items: nav.map(function (item) {
return {
key: String(item.activePath || item.link),
label: regLink.test(item.link || '') ? /*#__PURE__*/_jsx("a", {
className: styles.link,
href: item.link,
rel: "noreferrer",
target: "_blank",
children: item.title
}) : /*#__PURE__*/_jsx(Link, {
className: styles.link,
to: item.link,
children: item.title
})
};
}),
onChange: function onChange(path) {
var _nav$find;
var url = (_nav$find = nav.find(function (i) {
return i.activePath === path || i.link === path;
})) === null || _nav$find === void 0 ? void 0 : _nav$find.link;
if (!url || regLink.test(url)) return;
history.push(url);
}
}), /*#__PURE__*/_jsx(NavbarExtra, {})]
});
});
export default Navbar;