UNPKG

@easyx.ai/dumi-theme-easyxai

Version:

@easyx.ai/dumi-theme-easyxai 是为 dumi2 打造的一款文档站主题包,提供了更加美观、易用的研发与阅读体验

103 lines 3.97 kB
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);