dumi-theme-lobehub 1.8.4 → 1.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/builtins/Container/index.js +9 -15
  2. package/dist/builtins/Previewer/index.js +9 -3
  3. package/dist/components/Analytics/Clarity.d.ts +5 -0
  4. package/dist/components/Analytics/Clarity.js +12 -0
  5. package/dist/components/Analytics/GoogleAnalytics.d.ts +5 -0
  6. package/dist/components/Analytics/GoogleAnalytics.js +20 -0
  7. package/dist/components/Analytics/Plausible.d.ts +6 -0
  8. package/dist/components/Analytics/Plausible.js +12 -0
  9. package/dist/components/Analytics/index.d.ts +2 -0
  10. package/dist/components/Analytics/index.js +21 -0
  11. package/dist/components/StoreUpdater/index.js +4 -0
  12. package/dist/layouts/DemoLayout/GlobalStyle.d.ts +3 -0
  13. package/dist/layouts/DemoLayout/GlobalStyle.js +8 -0
  14. package/dist/layouts/DemoLayout/index.js +39 -9
  15. package/dist/layouts/DocLayout/DocumentLayout.js +4 -4
  16. package/dist/layouts/DocLayout/GlobalStyle.js +1 -1
  17. package/dist/layouts/DocLayout/Head/Favicons.js +56 -0
  18. package/dist/layouts/DocLayout/Head/Og.d.ts +3 -0
  19. package/dist/layouts/DocLayout/Head/Og.js +74 -0
  20. package/dist/layouts/DocLayout/index.js +4 -2
  21. package/dist/pages/Changelog/index.js +3 -8
  22. package/dist/pages/Docs/index.js +3 -3
  23. package/dist/slots/ApiHeader/index.js +2 -2
  24. package/dist/slots/Content/index.js +2 -2
  25. package/dist/slots/Content/style.js +1 -1
  26. package/dist/slots/ContentFooter/index.js +2 -2
  27. package/dist/slots/Features/index.js +2 -2
  28. package/dist/slots/Footer/index.js +2 -2
  29. package/dist/slots/Header/Burger.js +2 -2
  30. package/dist/slots/Header/DiscordButton.js +2 -2
  31. package/dist/slots/Header/GithubButton.js +77 -4
  32. package/dist/slots/Header/index.js +1 -1
  33. package/dist/slots/Hero/index.js +14 -4
  34. package/dist/slots/Logo/index.js +2 -2
  35. package/dist/slots/Navbar/index.js +2 -2
  36. package/dist/slots/Toc/index.js +2 -2
  37. package/dist/store/index.d.ts +0 -15
  38. package/dist/store/index.js +1 -18
  39. package/dist/store/initialState.d.ts +1 -0
  40. package/dist/store/initialState.js +20 -3
  41. package/dist/store/selectors/apiHeader.d.ts +4 -3
  42. package/dist/store/selectors/apiHeader.js +8 -5
  43. package/dist/store/selectors/hero.d.ts +7 -22
  44. package/dist/store/selectors/hero.js +29 -28
  45. package/dist/store/selectors/index.d.ts +3 -23
  46. package/dist/store/selectors/index.js +3 -71
  47. package/dist/store/selectors/site.d.ts +60 -0
  48. package/dist/store/selectors/site.js +111 -0
  49. package/dist/store/useSiteStore.d.ts +2 -5
  50. package/dist/types/config.d.ts +36 -2
  51. package/package.json +1 -1
  52. package/dist/builtins/Container/style.d.ts +0 -5
  53. package/dist/builtins/Container/style.js +0 -27
  54. package/dist/components/Favicons/index.js +0 -43
  55. package/dist/store/selectors/siteBasicInfo.d.ts +0 -11
  56. package/dist/store/selectors/siteBasicInfo.js +0 -27
  57. package/dist/store/selectors/token.d.ts +0 -2
  58. package/dist/store/selectors/token.js +0 -5
  59. /package/dist/{components/Favicons/index.d.ts → layouts/DocLayout/Head/Favicons.d.ts} +0 -0
@@ -1,26 +1,20 @@
1
- import { Alert } from 'antd';
2
- import { useStyles } from "./style";
1
+ import { Alert, Typography } from '@lobehub/ui';
3
2
  import { jsx as _jsx } from "react/jsx-runtime";
4
3
  var Container = function Container(_ref) {
5
4
  var type = _ref.type,
6
5
  title = _ref.title,
7
6
  children = _ref.children;
8
- var _useStyles = useStyles(),
9
- styles = _useStyles.styles,
10
- cx = _useStyles.cx;
11
- return /*#__PURE__*/_jsx("div", {
12
- className: styles.container,
13
- "data-type": type,
7
+ return /*#__PURE__*/_jsx(Typography, {
8
+ fontSize: 14,
9
+ headerMultiple: 0.25,
10
+ marginMultiple: 0,
14
11
  children: /*#__PURE__*/_jsx(Alert, {
15
- className: styles.alert,
16
- description: /*#__PURE__*/_jsx("div", {
17
- className: cx(styles.desc,
18
- // 为了让 markdown 的样式生效,需要在这里添加一个额外的 class
19
- 'markdown'),
20
- children: children
21
- }),
12
+ description: children,
22
13
  message: title || type.toUpperCase(),
23
14
  showIcon: true,
15
+ style: {
16
+ marginBlock: '1em'
17
+ },
24
18
  type: type
25
19
  })
26
20
  });
@@ -7,6 +7,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
7
7
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
8
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
9
9
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
10
+ import { Typography } from '@lobehub/ui';
10
11
  import Previewer from 'dumi/theme-default/builtins/Previewer';
11
12
  import { useStyles } from "./style";
12
13
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -19,8 +20,13 @@ export default (function (_ref) {
19
20
  var _useStyles = useStyles(pure),
20
21
  styles = _useStyles.styles,
21
22
  cx = _useStyles.cx;
22
- return /*#__PURE__*/_jsx("div", {
23
- className: cx(styles.container, pure && styles.pure, center && styles.center, nopadding && styles.nopadding, styles[codePlacement]),
24
- children: /*#__PURE__*/_jsx(Previewer, _objectSpread({}, props))
23
+ return /*#__PURE__*/_jsx(Typography, {
24
+ fontSize: 14,
25
+ headerMultiple: 0.25,
26
+ marginMultiple: 0,
27
+ children: /*#__PURE__*/_jsx("div", {
28
+ className: cx(styles.container, pure && styles.pure, center && styles.center, nopadding && styles.nopadding, styles[codePlacement]),
29
+ children: /*#__PURE__*/_jsx(Previewer, _objectSpread({}, props))
30
+ })
25
31
  });
26
32
  });
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ declare const MicrosoftClarity: import("react").NamedExoticComponent<{
3
+ projectId: string;
4
+ }>;
5
+ export default MicrosoftClarity;
@@ -0,0 +1,12 @@
1
+ import { memo } from 'react';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ var MicrosoftClarity = /*#__PURE__*/memo(function (_ref) {
4
+ var projectId = _ref.projectId;
5
+ return /*#__PURE__*/_jsx("script", {
6
+ dangerouslySetInnerHTML: {
7
+ __html: "\n (function(c,l,a,r,i,t,y){\n c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};\n t=l.createElement(r);t.async=1;t.src=\"https://www.clarity.ms/tag/\"+i;\n y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);\n })(window, document, \"clarity\", \"script\", \"".concat(projectId, "\");\n ")
8
+ },
9
+ id: "microsoft-clarity-init"
10
+ });
11
+ });
12
+ export default MicrosoftClarity;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ declare const GoogleAnalytics: import("react").NamedExoticComponent<{
3
+ measurementId: string;
4
+ }>;
5
+ export default GoogleAnalytics;
@@ -0,0 +1,20 @@
1
+ import { memo } from 'react';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Fragment as _Fragment } from "react/jsx-runtime";
4
+ import { jsxs as _jsxs } from "react/jsx-runtime";
5
+ var GoogleAnalytics = /*#__PURE__*/memo(function (_ref) {
6
+ var measurementId = _ref.measurementId;
7
+ return /*#__PURE__*/_jsxs(_Fragment, {
8
+ children: [/*#__PURE__*/_jsx("script", {
9
+ async: true,
10
+ src: "https://www.googletagmanager.com/gtag/js?id=".concat(measurementId)
11
+ }), /*#__PURE__*/_jsx("script", {
12
+ dangerouslySetInnerHTML: {
13
+ __html: "\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n\n gtag('config', '".concat(measurementId, "');\n")
14
+ },
15
+ id: "google-analytics",
16
+ type: "text/javascript"
17
+ })]
18
+ });
19
+ });
20
+ export default GoogleAnalytics;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ declare const PlausibleAnalytics: import("react").NamedExoticComponent<{
3
+ domain: string;
4
+ scriptBaseUrl: string;
5
+ }>;
6
+ export default PlausibleAnalytics;
@@ -0,0 +1,12 @@
1
+ import { memo } from 'react';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ var PlausibleAnalytics = /*#__PURE__*/memo(function (_ref) {
4
+ var domain = _ref.domain,
5
+ scriptBaseUrl = _ref.scriptBaseUrl;
6
+ return /*#__PURE__*/_jsx("script", {
7
+ "data-domain": domain,
8
+ defer: true,
9
+ src: "".concat(scriptBaseUrl, "/js/script.js")
10
+ });
11
+ });
12
+ export default PlausibleAnalytics;
@@ -0,0 +1,2 @@
1
+ declare const Analytics: () => import("react/jsx-runtime").JSX.Element;
2
+ export default Analytics;
@@ -0,0 +1,21 @@
1
+ import { siteSelectors, useSiteStore } from "../../store";
2
+ import ClarityAnalytics from "./Clarity";
3
+ import GoogleAnalytics from "./GoogleAnalytics";
4
+ import Plausible from "./Plausible";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ import { Fragment as _Fragment } from "react/jsx-runtime";
7
+ import { jsxs as _jsxs } from "react/jsx-runtime";
8
+ var Analytics = function Analytics() {
9
+ var analytics = useSiteStore(siteSelectors.analytics);
10
+ return /*#__PURE__*/_jsxs(_Fragment, {
11
+ children: [(analytics === null || analytics === void 0 ? void 0 : analytics.googleAnalytics) && /*#__PURE__*/_jsx(GoogleAnalytics, {
12
+ measurementId: analytics.googleAnalytics.measurementId
13
+ }), (analytics === null || analytics === void 0 ? void 0 : analytics.clarity) && /*#__PURE__*/_jsx(ClarityAnalytics, {
14
+ projectId: analytics.clarity.projectId
15
+ }), (analytics === null || analytics === void 0 ? void 0 : analytics.plausible) && /*#__PURE__*/_jsx(Plausible, {
16
+ domain: analytics.plausible.domain,
17
+ scriptBaseUrl: analytics.plausible.scriptBaseUrl
18
+ })]
19
+ });
20
+ };
21
+ export default Analytics;
@@ -72,6 +72,8 @@ export var StoreUpdater = /*#__PURE__*/memo(function () {
72
72
  var locale = useLocale();
73
73
  var storeApi = useStoreApi();
74
74
  useRouteMeta();
75
+
76
+ // @ts-ignore
75
77
  useSyncState('siteData', siteData, function () {
76
78
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
77
79
  var setLoading = siteData.setLoading,
@@ -81,6 +83,8 @@ export var StoreUpdater = /*#__PURE__*/memo(function () {
81
83
  _ = _storeApi$getState$si.setLoading,
82
84
  prevData = _objectWithoutProperties(_storeApi$getState$si, _excluded2);
83
85
  if (isEqual(data, prevData)) return;
86
+
87
+ // @ts-ignore
84
88
  storeApi.setState({
85
89
  siteData: siteData
86
90
  });
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const GlobalStyle: import("react").NamedExoticComponent<object>;
3
+ export default GlobalStyle;
@@ -0,0 +1,8 @@
1
+ var _templateObject;
2
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
3
+ import { createGlobalStyle } from 'antd-style';
4
+ var GlobalStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n #root {\n min-height: 100vh;\n }\n\n #nprogress {\n .bar {\n background: ", ";\n }\n\n .peg {\n display: none !important;\n }\n\n .spinner {\n display: none;\n }\n }\n"])), function (_ref) {
5
+ var theme = _ref.theme;
6
+ return theme.colorText;
7
+ });
8
+ export default GlobalStyle;
@@ -1,21 +1,51 @@
1
+ import { useLocation } from "../../../example/.dumi/tmp/exports";
1
2
  import { ThemeProvider } from '@lobehub/ui';
2
- import { useOutlet } from 'dumi';
3
+ import { useLocale, useNavData, useOutlet, useRouteMeta, useSidebarData, useSiteData, useTabMeta } from 'dumi';
3
4
  import isEqual from 'fast-deep-equal';
4
- import { memo } from 'react';
5
- import Favicons from "../../components/Favicons";
6
- import { useThemeStore } from "../../store";
5
+ import { memo, useMemo } from 'react';
6
+ import Analytics from "../../components/Analytics";
7
+ import { Provider, createStore as _createStore, useThemeStore } from "../../store";
8
+ import Favicons from "../DocLayout/Head/Favicons";
9
+ import Og from "../DocLayout/Head/Og";
10
+ import GlobalStyle from "./GlobalStyle";
7
11
  import { jsx as _jsx } from "react/jsx-runtime";
8
- import { Fragment as _Fragment } from "react/jsx-runtime";
9
12
  import { jsxs as _jsxs } from "react/jsx-runtime";
10
- export default /*#__PURE__*/memo(function () {
13
+ var App = /*#__PURE__*/memo(function (_ref) {
14
+ var initState = _ref.initState;
11
15
  var themeMode = useThemeStore(function (st) {
12
16
  return st.themeMode;
13
17
  }, isEqual);
14
18
  var outlet = useOutlet();
15
- return /*#__PURE__*/_jsxs(_Fragment, {
16
- children: [/*#__PURE__*/_jsx(Favicons, {}), /*#__PURE__*/_jsx(ThemeProvider, {
19
+ return /*#__PURE__*/_jsxs(Provider, {
20
+ createStore: function createStore() {
21
+ return _createStore(initState);
22
+ },
23
+ children: [/*#__PURE__*/_jsx(Favicons, {}), /*#__PURE__*/_jsx(Og, {}), /*#__PURE__*/_jsx(Analytics, {}), /*#__PURE__*/_jsxs(ThemeProvider, {
17
24
  themeMode: themeMode,
18
- children: outlet
25
+ children: [/*#__PURE__*/_jsx(GlobalStyle, {}), outlet]
19
26
  })]
20
27
  });
28
+ });
29
+ export default /*#__PURE__*/memo(function () {
30
+ var siteData = useSiteData();
31
+ var sidebar = useSidebarData();
32
+ var routeMeta = useRouteMeta();
33
+ var tabMeta = useTabMeta();
34
+ var navData = useNavData();
35
+ var location = useLocation();
36
+ var locale = useLocale();
37
+ var initState = useMemo(function () {
38
+ return {
39
+ locale: locale,
40
+ location: location,
41
+ navData: navData,
42
+ routeMeta: routeMeta,
43
+ sidebar: sidebar,
44
+ siteData: siteData,
45
+ tabMeta: tabMeta
46
+ };
47
+ }, []);
48
+ return /*#__PURE__*/_jsx(App, {
49
+ initState: initState
50
+ });
21
51
  });
@@ -10,7 +10,7 @@ import Footer from "dumi/theme/slots/Footer";
10
10
  import Header from "dumi/theme/slots/Header";
11
11
  import Sidebar from "dumi/theme/slots/Sidebar";
12
12
  import Toc from "dumi/theme/slots/Toc";
13
- import { isHeroPageSel, siteTitleSel, tocAnchorItemSel, useSiteStore } from "../../store";
13
+ import { heroSelectors, siteSelectors, useSiteStore } from "../../store";
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
15
  import { jsxs as _jsxs } from "react/jsx-runtime";
16
16
  import { Fragment as _Fragment } from "react/jsx-runtime";
@@ -24,7 +24,7 @@ var DocumentLayout = /*#__PURE__*/memo(function () {
24
24
  laptop = _useResponsive.laptop;
25
25
  var _useSiteStore = useSiteStore(function (s) {
26
26
  var isChanlogPage = s.location.pathname === '/changelog';
27
- var isHomePage = isHeroPageSel(s);
27
+ var isHomePage = heroSelectors.isHeroPage(s);
28
28
  var page;
29
29
  if (isHomePage) {
30
30
  page = 'home';
@@ -35,9 +35,9 @@ var DocumentLayout = /*#__PURE__*/memo(function () {
35
35
  }
36
36
  return {
37
37
  loading: s.siteData.loading,
38
- noToc: tocAnchorItemSel(s).length === 0,
38
+ noToc: siteSelectors.tocAnchorItem(s).length === 0,
39
39
  page: page,
40
- siteTitle: siteTitleSel(s)
40
+ siteTitle: siteSelectors.siteTitle(s)
41
41
  };
42
42
  }),
43
43
  loading = _useSiteStore.loading,
@@ -1,7 +1,7 @@
1
1
  var _templateObject;
2
2
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
3
3
  import { createGlobalStyle } from 'antd-style';
4
- var GlobalStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\n#nprogress {\n .bar {\n background: ", ";\n }\n\t\n .peg {\n\t display: none !important;\n }\n\n .spinner {\n display: none;\n }\n}\n\n\n\n\n"])), function (_ref) {
4
+ var GlobalStyle = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n #root {\n min-height: 100vh;\n }\n\n #nprogress {\n .bar {\n background: ", ";\n }\n\n .peg {\n display: none !important;\n }\n\n .spinner {\n display: none;\n }\n }\n"])), function (_ref) {
5
5
  var theme = _ref.theme;
6
6
  return theme.colorText;
7
7
  });
@@ -0,0 +1,56 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import { Helmet } from 'dumi';
8
+ import isEqual from 'fast-deep-equal';
9
+ import { memo } from 'react';
10
+ import { siteSelectors, useSiteStore } from "../../../store";
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ import { jsxs as _jsxs } from "react/jsx-runtime";
13
+ var Favicons = /*#__PURE__*/memo(function () {
14
+ var _metadata$icons, _metadata$icons2, _metadata$icons3;
15
+ var _useSiteStore = useSiteStore(function (s) {
16
+ return [siteSelectors.siteTitle(s), siteSelectors.logo(s)];
17
+ }),
18
+ _useSiteStore2 = _slicedToArray(_useSiteStore, 2),
19
+ title = _useSiteStore2[0],
20
+ logo = _useSiteStore2[1];
21
+ var metadata = useSiteStore(siteSelectors.metadata, isEqual);
22
+ return /*#__PURE__*/_jsxs(Helmet, {
23
+ children: [/*#__PURE__*/_jsx("link", {
24
+ href: (metadata === null || metadata === void 0 || (_metadata$icons = metadata.icons) === null || _metadata$icons === void 0 ? void 0 : _metadata$icons.apple) || logo,
25
+ rel: "apple-touch-icon",
26
+ sizes: "180x180"
27
+ }), /*#__PURE__*/_jsx("link", {
28
+ href: (metadata === null || metadata === void 0 || (_metadata$icons2 = metadata.icons) === null || _metadata$icons2 === void 0 ? void 0 : _metadata$icons2.shortcut) || logo,
29
+ rel: "icon",
30
+ sizes: "32x32",
31
+ type: "image/png"
32
+ }), /*#__PURE__*/_jsx("link", {
33
+ href: (metadata === null || metadata === void 0 || (_metadata$icons3 = metadata.icons) === null || _metadata$icons3 === void 0 ? void 0 : _metadata$icons3.shortcut) || logo,
34
+ rel: "shortcut icon",
35
+ type: "image/x-icon"
36
+ }), (metadata === null || metadata === void 0 ? void 0 : metadata.manifest) && /*#__PURE__*/_jsx("link", {
37
+ href: metadata === null || metadata === void 0 ? void 0 : metadata.manifest,
38
+ rel: "manifest"
39
+ }), /*#__PURE__*/_jsx("meta", {
40
+ content: title,
41
+ name: "apple-mobile-web-app-title"
42
+ }), /*#__PURE__*/_jsx("meta", {
43
+ content: title,
44
+ name: "application-name"
45
+ }), /*#__PURE__*/_jsx("meta", {
46
+ content: "#f8f8f8",
47
+ media: "(prefers-color-scheme: light)",
48
+ name: "theme-color"
49
+ }), /*#__PURE__*/_jsx("meta", {
50
+ content: "#000",
51
+ media: "(prefers-color-scheme: dark)",
52
+ name: "theme-color"
53
+ })]
54
+ });
55
+ });
56
+ export default Favicons;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const Og: import("react").MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
3
+ export default Og;
@@ -0,0 +1,74 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import { Helmet } from 'dumi';
8
+ import isEqual from 'fast-deep-equal';
9
+ import { memo } from 'react';
10
+ import { siteSelectors, useSiteStore } from "../../../store";
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ import { jsxs as _jsxs } from "react/jsx-runtime";
13
+ var Og = /*#__PURE__*/memo(function () {
14
+ var _metadata$openGraph, _metadata$openGraph2, _metadata$openGraph3, _metadata$openGraph4, _metadata$openGraph5, _metadata$twitter, _metadata$twitter2, _metadata$twitter3, _metadata$openGraph6, _metadata$twitter4, _metadata$openGraph7, _metadata$twitter5, _metadata$openGraph8;
15
+ var _useSiteStore = useSiteStore(function (s) {
16
+ return [siteSelectors.siteTitle(s), siteSelectors.siteDesc(s), siteSelectors.logo(s)];
17
+ }),
18
+ _useSiteStore2 = _slicedToArray(_useSiteStore, 3),
19
+ title = _useSiteStore2[0],
20
+ desc = _useSiteStore2[1],
21
+ logo = _useSiteStore2[2];
22
+ var metadata = useSiteStore(siteSelectors.metadata, isEqual);
23
+ return /*#__PURE__*/_jsxs(Helmet, {
24
+ children: [/*#__PURE__*/_jsx("title", {
25
+ children: (metadata === null || metadata === void 0 ? void 0 : metadata.title) || title
26
+ }), /*#__PURE__*/_jsx("meta", {
27
+ content: (metadata === null || metadata === void 0 ? void 0 : metadata.description) || desc,
28
+ name: "description"
29
+ }), /*#__PURE__*/_jsx("meta", {
30
+ content: (metadata === null || metadata === void 0 || (_metadata$openGraph = metadata.openGraph) === null || _metadata$openGraph === void 0 ? void 0 : _metadata$openGraph.title) || title,
31
+ property: "og:title"
32
+ }), /*#__PURE__*/_jsx("meta", {
33
+ content: (metadata === null || metadata === void 0 || (_metadata$openGraph2 = metadata.openGraph) === null || _metadata$openGraph2 === void 0 ? void 0 : _metadata$openGraph2.description) || desc,
34
+ property: "og:description"
35
+ }), /*#__PURE__*/_jsx("meta", {
36
+ content: location.origin,
37
+ property: "og:url"
38
+ }), /*#__PURE__*/_jsx("meta", {
39
+ content: metadata === null || metadata === void 0 || (_metadata$openGraph3 = metadata.openGraph) === null || _metadata$openGraph3 === void 0 ? void 0 : _metadata$openGraph3.siteName,
40
+ property: "og:site_name"
41
+ }), /*#__PURE__*/_jsx("meta", {
42
+ content: "en",
43
+ property: "og:locale"
44
+ }), /*#__PURE__*/_jsx("meta", {
45
+ content: (metadata === null || metadata === void 0 || (_metadata$openGraph4 = metadata.openGraph) === null || _metadata$openGraph4 === void 0 ? void 0 : _metadata$openGraph4.title) || title,
46
+ property: "og:image:alt"
47
+ }), /*#__PURE__*/_jsx("meta", {
48
+ content: (metadata === null || metadata === void 0 || (_metadata$openGraph5 = metadata.openGraph) === null || _metadata$openGraph5 === void 0 ? void 0 : _metadata$openGraph5.image) || logo,
49
+ property: "og:image"
50
+ }), /*#__PURE__*/_jsx("meta", {
51
+ content: "website",
52
+ property: "og:type"
53
+ }), /*#__PURE__*/_jsx("meta", {
54
+ content: "summary_large_image",
55
+ name: "twitter:card"
56
+ }), /*#__PURE__*/_jsx("meta", {
57
+ content: metadata === null || metadata === void 0 || (_metadata$twitter = metadata.twitter) === null || _metadata$twitter === void 0 ? void 0 : _metadata$twitter.site,
58
+ name: "twitter:site"
59
+ }), /*#__PURE__*/_jsx("meta", {
60
+ content: metadata === null || metadata === void 0 || (_metadata$twitter2 = metadata.twitter) === null || _metadata$twitter2 === void 0 ? void 0 : _metadata$twitter2.site,
61
+ name: "twitter:creator"
62
+ }), /*#__PURE__*/_jsx("meta", {
63
+ content: (metadata === null || metadata === void 0 || (_metadata$twitter3 = metadata.twitter) === null || _metadata$twitter3 === void 0 ? void 0 : _metadata$twitter3.title) || (metadata === null || metadata === void 0 || (_metadata$openGraph6 = metadata.openGraph) === null || _metadata$openGraph6 === void 0 ? void 0 : _metadata$openGraph6.title) || title,
64
+ name: "twitter:title"
65
+ }), /*#__PURE__*/_jsx("meta", {
66
+ content: (metadata === null || metadata === void 0 || (_metadata$twitter4 = metadata.twitter) === null || _metadata$twitter4 === void 0 ? void 0 : _metadata$twitter4.description) || (metadata === null || metadata === void 0 || (_metadata$openGraph7 = metadata.openGraph) === null || _metadata$openGraph7 === void 0 ? void 0 : _metadata$openGraph7.description) || desc,
67
+ name: "twitter:description"
68
+ }), /*#__PURE__*/_jsx("meta", {
69
+ content: (metadata === null || metadata === void 0 || (_metadata$twitter5 = metadata.twitter) === null || _metadata$twitter5 === void 0 ? void 0 : _metadata$twitter5.image) || (metadata === null || metadata === void 0 || (_metadata$openGraph8 = metadata.openGraph) === null || _metadata$openGraph8 === void 0 ? void 0 : _metadata$openGraph8.image) || logo,
70
+ name: "twitter:image"
71
+ })]
72
+ });
73
+ });
74
+ export default Og;
@@ -1,9 +1,11 @@
1
1
  import { useLocale, useLocation, useNavData, useRouteMeta, useSidebarData, useSiteData, useTabMeta } from 'dumi';
2
2
  import { memo, useMemo } from 'react';
3
- import Favicons from "../../components/Favicons";
3
+ import Analytics from "../../components/Analytics";
4
4
  import { StoreUpdater } from "../../components/StoreUpdater";
5
5
  import { Provider, createStore as _createStore } from "../../store";
6
6
  import DocumentLayout from "./DocumentLayout";
7
+ import Favicons from "./Head/Favicons";
8
+ import Og from "./Head/Og";
7
9
  import ThemeProvider from "./ThemeProvider";
8
10
  import { jsx as _jsx } from "react/jsx-runtime";
9
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -13,7 +15,7 @@ var App = /*#__PURE__*/memo(function (_ref) {
13
15
  createStore: function createStore() {
14
16
  return _createStore(initState);
15
17
  },
16
- children: [/*#__PURE__*/_jsx(Favicons, {}), /*#__PURE__*/_jsx(StoreUpdater, {}), /*#__PURE__*/_jsx(ThemeProvider, {
18
+ children: [/*#__PURE__*/_jsx(Favicons, {}), /*#__PURE__*/_jsx(Og, {}), /*#__PURE__*/_jsx(Analytics, {}), /*#__PURE__*/_jsx(StoreUpdater, {}), /*#__PURE__*/_jsx(ThemeProvider, {
17
19
  children: /*#__PURE__*/_jsx(DocumentLayout, {})
18
20
  })]
19
21
  });
@@ -6,25 +6,20 @@ import { Center } from 'react-layout-kit';
6
6
  import { ApiHeader } from "../../components/ApiHeader";
7
7
  import { useStyles } from "../Docs/styles";
8
8
  import Content from "dumi/theme/slots/Content";
9
- import { githubSel, useSiteStore } from "../../store";
9
+ import { siteSelectors, useSiteStore } from "../../store";
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
12
  var Changelog = /*#__PURE__*/memo(function () {
13
13
  var outlet = useOutlet();
14
14
  var _useResponsive = useResponsive(),
15
15
  mobile = _useResponsive.mobile;
16
+ var repoBase = useSiteStore(siteSelectors.github);
16
17
  var _useSiteStore = useSiteStore(function (s) {
17
- return {
18
- repoBase: githubSel(s)
19
- };
20
- }),
21
- repoBase = _useSiteStore.repoBase;
22
- var _useSiteStore2 = useSiteStore(function (s) {
23
18
  return {
24
19
  fm: s.routeMeta.frontmatter
25
20
  };
26
21
  }, isEqual),
27
- fm = _useSiteStore2.fm;
22
+ fm = _useSiteStore.fm;
28
23
  var _useStyles = useStyles(),
29
24
  styles = _useStyles.styles;
30
25
  useEffect(function () {
@@ -5,7 +5,7 @@ import { memo, useCallback, useEffect } from 'react';
5
5
  import { Center } from 'react-layout-kit';
6
6
  import ApiHeader from "dumi/theme/slots/ApiHeader";
7
7
  import Content from "dumi/theme/slots/Content";
8
- import { giscusSel, isApiPageSel, useSiteStore } from "../../store";
8
+ import { apiHeaderSelectors, siteSelectors, useSiteStore } from "../../store";
9
9
  import { useStyles } from "./styles";
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -15,8 +15,8 @@ var Documents = /*#__PURE__*/memo(function () {
15
15
  mobile = _useResponsive.mobile;
16
16
  var _useSiteStore = useSiteStore(function (st) {
17
17
  return {
18
- giscus: giscusSel(st),
19
- isApiPage: isApiPageSel(st)
18
+ giscus: siteSelectors.giscus(st),
19
+ isApiPage: apiHeaderSelectors.isApiPage(st)
20
20
  };
21
21
  }),
22
22
  isApiPage = _useSiteStore.isApiPage,
@@ -8,7 +8,7 @@ function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("
8
8
  import isEqual from 'fast-deep-equal';
9
9
  import { memo, useMemo } from 'react';
10
10
  import { ApiHeader as Header } from "../../components/ApiHeader";
11
- import { apiHeaderSel, useSiteStore } from "../../store";
11
+ import { apiHeaderSelectors, useSiteStore } from "../../store";
12
12
  import BundlephobiaFilled from "./BundlephobiaFilled";
13
13
  import Graph from "./Graph";
14
14
  import NpmFilled from "./NpmFilled";
@@ -17,7 +17,7 @@ import Unpkg from "./Unpkg";
17
17
  import { jsx as _jsx } from "react/jsx-runtime";
18
18
  var ApiHeader = /*#__PURE__*/memo(function (_ref) {
19
19
  var rest = Object.assign({}, (_objectDestructuringEmpty(_ref), _ref));
20
- var props = useSiteStore(apiHeaderSel, isEqual);
20
+ var props = useSiteStore(apiHeaderSelectors.apiHeader, isEqual);
21
21
  var pkg = props.pkg;
22
22
  var packages = useMemo(function () {
23
23
  var packageURL = encodeURIComponent(String(pkg));
@@ -14,7 +14,7 @@ import isEqual from 'fast-deep-equal';
14
14
  import { memo, useEffect } from 'react';
15
15
  import { Flexbox } from 'react-layout-kit';
16
16
  import ContentFooter from "dumi/theme/slots/ContentFooter";
17
- import { themeConfig, useSiteStore } from "../../store";
17
+ import { siteSelectors, useSiteStore } from "../../store";
18
18
  import { useStyles } from "./style";
19
19
  import { jsx as _jsx } from "react/jsx-runtime";
20
20
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -24,7 +24,7 @@ var Content = /*#__PURE__*/memo(function (_ref) {
24
24
  var loading = useSiteStore(function (s) {
25
25
  return s.siteData.loading;
26
26
  });
27
- var _useSiteStore = useSiteStore(themeConfig, isEqual),
27
+ var _useSiteStore = useSiteStore(siteSelectors.themeConfig, isEqual),
28
28
  docStyle = _useSiteStore.docStyle;
29
29
  var _useStyles = useStyles(docStyle === 'pure'),
30
30
  styles = _useStyles.styles;
@@ -7,6 +7,6 @@ export var useStyles = createStyles(function (_ref, isPure) {
7
7
  responsive = _ref.responsive,
8
8
  css = _ref.css;
9
9
  return {
10
- content: cx(!isPure && css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: 24px 48px;\n background-color: ", ";\n border-radius: 10px;\n\n ", " {\n padding: 8px 16px;\n border-radius: 0;\n }\n "])), token.colorBgContainer, responsive.mobile), css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n flex: 1;\n box-sizing: border-box;\n width: 100%;\n min-height: 400px;\n\n &:has([data-page-tabs='true']) {\n padding-top: 8px;\n }\n "]))))
10
+ content: cx(!isPure && css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: 24px 48px;\n background-color: ", ";\n border-radius: 10px;\n\n ", " {\n padding: 8px 16px;\n border-radius: 0;\n }\n "])), token.colorBgContainer, responsive.mobile), css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n flex: 1;\n box-sizing: border-box;\n width: 100%;\n min-height: 400px;\n\n &:has([data-page-tabs='true']) {\n padding-top: 8px;\n }\n\n .dumi-default-table-content {\n overflow: visible !important;\n font-size: 14px;\n }\n\n .dumi-default-badge {\n &:not([type]) {\n color: ", ";\n background: ", ";\n border: 1px solid ", ";\n }\n\n &[type='warning'] {\n color: ", ";\n background: ", ";\n border: 1px solid ", ";\n }\n\n &[type='error'] {\n color: ", ";\n background: ", ";\n border: 1px solid ", ";\n }\n\n &[type='success'] {\n color: ", ";\n background: ", ";\n border: 1px solid ", ";\n }\n }\n "])), token.colorInfoText, token.colorInfoBg, token.colorInfoBorder, token.colorWarningText, token.colorWarningBg, token.colorWarningBorder, token.colorErrorText, token.colorErrorBg, token.colorErrorBorder, token.colorSuccessText, token.colorSuccessBg, token.colorSuccessBorder))
11
11
  };
12
12
  });
@@ -8,12 +8,12 @@ import { useResponsive } from 'antd-style';
8
8
  import isEqual from 'fast-deep-equal';
9
9
  import { memo } from 'react';
10
10
  import { Flexbox } from 'react-layout-kit';
11
- import { contentBottomSel, useSiteStore } from "../../store";
11
+ import { siteSelectors, useSiteStore } from "../../store";
12
12
  import Linker from "./Linker";
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
15
15
  var ContentFooter = /*#__PURE__*/memo(function () {
16
- var _useSiteStore = useSiteStore(contentBottomSel, isEqual),
16
+ var _useSiteStore = useSiteStore(siteSelectors.contentBottom, isEqual),
17
17
  prev = _useSiteStore.prev,
18
18
  next = _useSiteStore.next;
19
19
  var _useResponsive = useResponsive(),
@@ -2,10 +2,10 @@ import { Features as F } from '@lobehub/ui';
2
2
  import { useTheme } from 'antd-style';
3
3
  import isEqual from 'fast-deep-equal';
4
4
  import { memo } from 'react';
5
- import { featuresSel, useSiteStore } from "../../store";
5
+ import { heroSelectors, useSiteStore } from "../../store";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  var Features = /*#__PURE__*/memo(function () {
8
- var features = useSiteStore(featuresSel, isEqual);
8
+ var features = useSiteStore(heroSelectors.features, isEqual);
9
9
  var theme = useTheme();
10
10
  if (!(features !== null && features !== void 0 && features.length)) return;
11
11
  return /*#__PURE__*/_jsx(F, {
@@ -4,7 +4,7 @@ import { useResponsive } from 'antd-style';
4
4
  import isEqual from 'fast-deep-equal';
5
5
  import { memo } from 'react';
6
6
  import { Center, Flexbox } from 'react-layout-kit';
7
- import { githubSel, useSiteStore } from "../../store";
7
+ import { siteSelectors, useSiteStore } from "../../store";
8
8
  import { getColumns } from "./columns";
9
9
  import { useStyles } from "./style";
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -17,7 +17,7 @@ var Footer = /*#__PURE__*/memo(function () {
17
17
  pkg = _useSiteStore.pkg;
18
18
  var footerConfig = themeConfig.footerConfig,
19
19
  footer = themeConfig.footer;
20
- var githubUrl = useSiteStore(githubSel);
20
+ var githubUrl = useSiteStore(siteSelectors.github);
21
21
  var _useStyles = useStyles(),
22
22
  styles = _useStyles.styles,
23
23
  theme = _useStyles.theme;
@@ -9,7 +9,7 @@ import { Link } from 'dumi';
9
9
  import isEqual from 'fast-deep-equal';
10
10
  import { uniq } from 'lodash-es';
11
11
  import { memo, useMemo, useState } from 'react';
12
- import { activePathSel, useSiteStore } from "../../store";
12
+ import { siteSelectors, useSiteStore } from "../../store";
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
14
  var Burger = /*#__PURE__*/memo(function () {
15
15
  var _useState = useState(false),
@@ -24,7 +24,7 @@ var Burger = /*#__PURE__*/memo(function () {
24
24
  }, isEqual);
25
25
  var _useSiteStore = useSiteStore(function (s) {
26
26
  return {
27
- activePath: activePathSel(s),
27
+ activePath: siteSelectors.activePath(s),
28
28
  pathname: s.location.pathname
29
29
  };
30
30
  }),