@easyx.ai/dumi-theme-easyxai
Version:
@easyx.ai/dumi-theme-easyxai 是为 dumi2 打造的一款文档站主题包,提供了更加美观、易用的研发与阅读体验
103 lines • 3.97 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import { memo, useEffect } from 'react';
import { AppNavIcon } from "../../components/AppNavIcon";
import { useResponsive } from 'antd-style';
import { usePrefersColor } from 'dumi';
import LangSwitch from "dumi/theme/slots/LangSwitch";
import Logo from "dumi/theme/slots/Logo";
import Navbar from "dumi/theme/slots/Navbar";
import SearchBar from "dumi/theme/slots/SearchBar";
import { Flexbox } from 'react-layout-kit';
import Burger from "../../components/Burger";
import GithubButton from "../../components/GithubButton";
import ThemeSwitch from "../../components/ThemeSwitch";
import { useThemeColor } from "../../hooks/useThemeColor";
import { useSiteStore } from "../../store/useSiteStore";
import { useThemeStore } from "../../store/useThemeStore";
import { useStyle } from "./style";
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 Switcher = function Switcher() {
var allowSwitchTheme = useSiteStore(function (s) {
return s.siteData.themeConfig.prefersColor.switch;
});
var themeMode = useThemeStore(function (s) {
return s.themeMode;
});
var _usePrefersColor = usePrefersColor(),
_usePrefersColor2 = _slicedToArray(_usePrefersColor, 3),
color = _usePrefersColor2[0],
prefersColor = _usePrefersColor2[1],
setColorMode = _usePrefersColor2[2];
var _useThemeColor = useThemeColor(),
_useThemeColor2 = _slicedToArray(_useThemeColor, 2),
setThemeColor = _useThemeColor2[1];
useEffect(function () {
setColorMode(themeMode);
}, [themeMode]);
useEffect(function () {
setThemeColor(color);
}, [color]);
return allowSwitchTheme ? /*#__PURE__*/_jsx(ThemeSwitch, {
value: themeMode,
onChange: function onChange(mode) {
useThemeStore.setState({
themeMode: mode
});
}
}) : null;
};
var Header = function Header() {
var hasHeader = useSiteStore(function (s) {
return !!s.routeMeta.frontmatter;
});
var appNavConfig = useSiteStore(function (s) {
return s.siteData.themeConfig.appNavConfig;
});
var _useResponsive = useResponsive(),
mobile = _useResponsive.mobile;
var _useStyle = useStyle(),
styles = _useStyle.styles;
return !hasHeader ? null : /*#__PURE__*/_jsx("div", {
className: styles.header,
children: /*#__PURE__*/_jsx(Flexbox, {
horizontal: true,
distribution: 'space-between',
align: 'center',
width: 'auto',
className: styles.content,
children: mobile ? /*#__PURE__*/_jsxs(_Fragment, {
children: [appNavConfig && /*#__PURE__*/_jsx(AppNavIcon, {
config: appNavConfig
}), /*#__PURE__*/_jsx(Flexbox, {
children: /*#__PURE__*/_jsx(Burger, {})
}), /*#__PURE__*/_jsx(Flexbox, {
horizontal: true,
className: styles.left,
children: /*#__PURE__*/_jsx(Logo, {})
}), /*#__PURE__*/_jsx(Flexbox, {
children: /*#__PURE__*/_jsx(Switcher, {})
})]
}) : /*#__PURE__*/_jsxs(_Fragment, {
children: [/*#__PURE__*/_jsxs(Flexbox, {
horizontal: true,
className: styles.left,
children: [appNavConfig && /*#__PURE__*/_jsx(AppNavIcon, {
config: appNavConfig
}), /*#__PURE__*/_jsx(Logo, {})]
}), /*#__PURE__*/_jsxs("section", {
className: styles.right,
children: [/*#__PURE__*/_jsx("div", {}), /*#__PURE__*/_jsxs(Flexbox, {
gap: 16,
horizontal: true,
align: 'center',
className: "dumi-default-header-right-aside",
children: [/*#__PURE__*/_jsx(SearchBar, {}), /*#__PURE__*/_jsx(Navbar, {}), /*#__PURE__*/_jsx(LangSwitch, {}), /*#__PURE__*/_jsx(GithubButton, {}), /*#__PURE__*/_jsx(Switcher, {})]
})]
})]
})
})
});
};
export default /*#__PURE__*/memo(Header);