@zat-design/sisyphus-react 3.1.4 → 3.1.5-beta.10
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.
- package/.dumi/theme/builtins/Alert.tsx +19 -0
- package/.dumi/theme/builtins/Previewer.tsx +232 -0
- package/.dumi/theme/builtins/SourceCode.tsx +64 -0
- package/.dumi/theme/hooks/useCodeSandbox.tsx +197 -0
- package/.dumi/theme/hooks/useTheme.tsx +707 -0
- package/.dumi/theme/layouts/BasicLayout.tsx +88 -0
- package/.dumi/theme/layouts/components/Dark.less +157 -0
- package/.dumi/theme/layouts/components/Dark.tsx +78 -0
- package/.dumi/theme/layouts/components/Navbar.tsx +83 -0
- package/.dumi/theme/layouts/components/SideMenu.tsx +61 -0
- package/.dumi/theme/layouts/index.tsx +26 -0
- package/.dumi/theme/layouts/layout.less +87 -0
- package/.dumi/theme/typings.d.ts +7 -0
- package/dist/index.esm.css +122 -249
- package/es/ProAction/index.less +3 -2
- package/es/ProConfigProvider/index.d.ts +2 -0
- package/es/ProConfigProvider/index.js +18 -2
- package/es/ProDrawerForm/index.js +5 -3
- package/es/ProDrawerForm/style/index.less +15 -11
- package/es/ProEditLabel/style/index.less +2 -2
- package/es/ProEditTable/style/index.less +15 -8
- package/es/ProEditTable/utils/config.js +11 -4
- package/es/ProEnum/style/index.less +1 -1
- package/es/ProForm/components/base/RangePicker/index.js +0 -3
- package/es/ProForm/components/base/TextArea/index.less +1 -1
- package/es/ProForm/components/combination/Container/style/index.less +0 -1
- package/es/ProForm/components/combination/FormList/style/index.less +20 -19
- package/es/ProForm/components/combination/Group/index.js +2 -2
- package/es/ProForm/components/combination/ProAddressBar/index.js +81 -61
- package/es/ProForm/components/combination/ProAddressBar/propsType.d.ts +3 -2
- package/es/ProForm/components/combination/ProModalSelect/index.js +75 -13
- package/es/ProForm/components/combination/ProModalSelect/propsType.d.ts +1 -0
- package/es/ProForm/components/combination/ProModalSelect/style/index.less +3 -3
- package/es/ProForm/components/combination/ProNumberRange/style/index.less +1 -1
- package/es/ProForm/components/combination/ProRangeLimit/index.d.ts +1 -1
- package/es/ProForm/components/combination/ProTimeLimit/index.d.ts +10 -5
- package/es/ProForm/components/combination/ProTimeLimit/style/index.less +1 -1
- package/es/ProForm/components/old/EnumSelect/style/index.less +7 -8
- package/es/ProForm/components/render/RenderFields.js +10 -5
- package/es/ProForm/components/render/propsType.d.ts +5 -4
- package/es/ProForm/index.js +5 -0
- package/es/ProForm/style/index.less +55 -169
- package/es/ProForm/utils/useShouldUpdate.js +16 -16
- package/es/ProLayout/components/Layout/Menu/OpenMenu/style/index.less +2 -2
- package/es/ProLayout/components/ProCollapse/style/index.less +4 -4
- package/es/ProLayout/components/ProHeader/components/ProBackBtn/style/index.less +21 -0
- package/es/ProLayout/components/ProHeader/components/index.d.ts +1 -0
- package/es/ProLayout/components/ProHeader/components/index.js +2 -1
- package/es/ProLayout/components/ProHeader/index.js +4 -2
- package/es/ProLayout/components/ProHeader/style/index.less +16 -7
- package/es/ProStep/style/index.less +0 -1
- package/es/ProTable/components/RenderColumn/index.d.ts +5 -5
- package/es/ProTable/components/RenderColumn/index.js +41 -25
- package/es/ProTable/index.js +3 -2
- package/es/ProTable/propsType.d.ts +2 -0
- package/es/ProTable/style/index.less +14 -1
- package/es/ProTable/utils.d.ts +1 -1
- package/es/ProTable/utils.js +258 -201
- package/es/ProTabs/style/index.less +1 -1
- package/es/ProThemeTools/component/PrdTools/index.js +1 -1
- package/es/ProThemeTools/component/PrdTools/style/index.less +3 -3
- package/es/ProThemeTools/index.d.ts +2 -2
- package/es/ProThemeTools/index.js +24 -17
- package/es/ProThemeTools/propsType.d.ts +8 -6
- package/es/ProThemeTools/style/index.less +2 -2
- package/es/ProThemeTools/utils/index.d.ts +7 -0
- package/es/ProThemeTools/utils/index.js +19 -1
- package/es/ProTree/components/ProTree.js +1 -1
- package/es/ProTree/components/SearchTitle.d.ts +2 -2
- package/es/ProTree/components/SearchTitle.js +11 -1
- package/es/ProTree/components/Tree.js +6 -1
- package/es/ProTree/style/index.less +193 -141
- package/es/ProTreeModal/style/index.less +2 -6
- package/es/ProUpload/style/index.less +41 -39
- package/es/index.d.ts +2 -1
- package/es/index.js +2 -1
- package/es/locale/en_US.d.ts +69 -0
- package/es/locale/en_US.js +68 -0
- package/es/locale/index.d.ts +7 -0
- package/es/locale/index.js +21 -0
- package/es/locale/zh_CN.d.ts +69 -0
- package/es/locale/zh_CN.js +68 -0
- package/es/old/ProEditableTable/style/index.less +1 -2
- package/es/style/components.less +0 -1
- package/es/style/core/normalize.less +1 -1
- package/es/style/theme/antd.less +3 -4
- package/es/style/theme/index.less +80 -79
- package/es/style/theme/tokens.less +1 -0
- package/lib/ProAction/index.less +3 -2
- package/lib/ProConfigProvider/index.d.ts +2 -0
- package/lib/ProConfigProvider/index.js +17 -2
- package/lib/ProDrawerForm/index.js +5 -3
- package/lib/ProDrawerForm/style/index.less +15 -11
- package/lib/ProEditLabel/style/index.less +2 -2
- package/lib/ProEditTable/style/index.less +15 -8
- package/lib/ProEditTable/utils/config.js +11 -4
- package/lib/ProEnum/style/index.less +1 -1
- package/lib/ProForm/components/base/RangePicker/index.js +0 -3
- package/lib/ProForm/components/base/TextArea/index.less +1 -1
- package/lib/ProForm/components/combination/Container/style/index.less +0 -1
- package/lib/ProForm/components/combination/FormList/style/index.less +20 -19
- package/lib/ProForm/components/combination/Group/index.js +2 -2
- package/lib/ProForm/components/combination/ProAddressBar/index.js +76 -58
- package/lib/ProForm/components/combination/ProAddressBar/propsType.d.ts +3 -2
- package/lib/ProForm/components/combination/ProModalSelect/index.js +75 -13
- package/lib/ProForm/components/combination/ProModalSelect/propsType.d.ts +1 -0
- package/lib/ProForm/components/combination/ProModalSelect/style/index.less +3 -3
- package/lib/ProForm/components/combination/ProNumberRange/style/index.less +1 -1
- package/lib/ProForm/components/combination/ProRangeLimit/index.d.ts +1 -1
- package/lib/ProForm/components/combination/ProTimeLimit/index.d.ts +10 -5
- package/lib/ProForm/components/combination/ProTimeLimit/style/index.less +1 -1
- package/lib/ProForm/components/old/EnumSelect/style/index.less +7 -8
- package/lib/ProForm/components/render/RenderFields.js +9 -4
- package/lib/ProForm/components/render/propsType.d.ts +5 -4
- package/lib/ProForm/index.js +5 -0
- package/lib/ProForm/style/index.less +55 -169
- package/lib/ProForm/utils/useShouldUpdate.js +16 -16
- package/lib/ProLayout/components/Layout/Menu/OpenMenu/style/index.less +2 -2
- package/lib/ProLayout/components/ProCollapse/style/index.less +4 -4
- package/lib/ProLayout/components/ProHeader/components/ProBackBtn/style/index.less +21 -0
- package/lib/ProLayout/components/ProHeader/components/index.d.ts +1 -0
- package/lib/ProLayout/components/ProHeader/components/index.js +8 -1
- package/lib/ProLayout/components/ProHeader/index.js +4 -2
- package/lib/ProLayout/components/ProHeader/style/index.less +16 -7
- package/lib/ProStep/style/index.less +0 -1
- package/lib/ProTable/components/RenderColumn/index.d.ts +5 -5
- package/lib/ProTable/components/RenderColumn/index.js +38 -24
- package/lib/ProTable/index.js +3 -2
- package/lib/ProTable/propsType.d.ts +2 -0
- package/lib/ProTable/style/index.less +14 -1
- package/lib/ProTable/utils.d.ts +1 -1
- package/lib/ProTable/utils.js +258 -201
- package/lib/ProTabs/style/index.less +1 -1
- package/lib/ProThemeTools/component/PrdTools/index.js +1 -1
- package/lib/ProThemeTools/component/PrdTools/style/index.less +3 -3
- package/lib/ProThemeTools/index.d.ts +2 -2
- package/lib/ProThemeTools/index.js +23 -16
- package/lib/ProThemeTools/propsType.d.ts +8 -6
- package/lib/ProThemeTools/style/index.less +2 -2
- package/lib/ProThemeTools/utils/index.d.ts +7 -0
- package/lib/ProThemeTools/utils/index.js +20 -2
- package/lib/ProTree/components/ProTree.js +1 -1
- package/lib/ProTree/components/SearchTitle.d.ts +2 -2
- package/lib/ProTree/components/SearchTitle.js +11 -1
- package/lib/ProTree/components/Tree.js +6 -1
- package/lib/ProTree/style/index.less +193 -141
- package/lib/ProTreeModal/style/index.less +2 -6
- package/lib/ProUpload/style/index.less +41 -39
- package/lib/index.d.ts +2 -1
- package/lib/index.js +13 -1
- package/lib/locale/en_US.d.ts +69 -0
- package/lib/locale/en_US.js +74 -0
- package/lib/locale/index.d.ts +7 -0
- package/lib/locale/index.js +28 -0
- package/lib/locale/zh_CN.d.ts +69 -0
- package/lib/locale/zh_CN.js +74 -0
- package/lib/old/ProEditableTable/style/index.less +1 -2
- package/lib/style/components.less +0 -1
- package/lib/style/core/normalize.less +1 -1
- package/lib/style/theme/antd.less +3 -4
- package/lib/style/theme/index.less +80 -79
- package/lib/style/theme/tokens.less +1 -0
- package/package.json +2 -2
- package/typings.d.ts +2 -0
- package/es/old/ProBackBtn/style/index.less +0 -19
- package/lib/old/ProBackBtn/style/index.less +0 -19
- /package/es/{old → ProLayout/components/ProHeader/components}/ProBackBtn/index.d.ts +0 -0
- /package/es/{old → ProLayout/components/ProHeader/components}/ProBackBtn/index.js +0 -0
- /package/es/{old → ProLayout/components/ProHeader/components}/ProBackBtn/propsType.d.ts +0 -0
- /package/es/{old → ProLayout/components/ProHeader/components}/ProBackBtn/propsType.js +0 -0
- /package/lib/{old → ProLayout/components/ProHeader/components}/ProBackBtn/index.d.ts +0 -0
- /package/lib/{old → ProLayout/components/ProHeader/components}/ProBackBtn/index.js +0 -0
- /package/lib/{old → ProLayout/components/ProHeader/components}/ProBackBtn/propsType.d.ts +0 -0
- /package/lib/{old → ProLayout/components/ProHeader/components}/ProBackBtn/propsType.js +0 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import React, { useContext, useState } from 'react'
|
|
2
|
+
import { IRouteComponentProps } from '@umijs/types'
|
|
3
|
+
import { context, Link } from 'dumi/theme'
|
|
4
|
+
import Navbar from './components/Navbar'
|
|
5
|
+
import SideMenu from './components/SideMenu'
|
|
6
|
+
import SlugList from 'dumi-theme-default/src/components/SlugList'
|
|
7
|
+
import SearchBar from 'dumi-theme-default/src/components/SearchBar'
|
|
8
|
+
import 'dumi-theme-default/src/style/layout.less'
|
|
9
|
+
|
|
10
|
+
const Hero = hero => (
|
|
11
|
+
<>
|
|
12
|
+
<div className="__dumi-default-layout-hero">
|
|
13
|
+
{hero.image && <img src={hero.image} />}
|
|
14
|
+
<h1>{hero.title}</h1>
|
|
15
|
+
<div dangerouslySetInnerHTML={{ __html: hero.desc }} />
|
|
16
|
+
{hero.actions &&
|
|
17
|
+
hero.actions.map(action => (
|
|
18
|
+
<Link to={action.link} key={action.text}>
|
|
19
|
+
<button type="button">{action.text}</button>
|
|
20
|
+
</Link>
|
|
21
|
+
))}
|
|
22
|
+
</div>
|
|
23
|
+
</>
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
const Features = features => (
|
|
27
|
+
<div className="__dumi-default-layout-features">
|
|
28
|
+
{features.map(feat => (
|
|
29
|
+
<dl key={feat.title} style={{ backgroundImage: feat.icon ? `url(${feat.icon})` : undefined }}>
|
|
30
|
+
{feat.link ? (
|
|
31
|
+
<Link to={feat.link}>
|
|
32
|
+
<dt>{feat.title}</dt>
|
|
33
|
+
</Link>
|
|
34
|
+
) : (
|
|
35
|
+
<dt>{feat.title}</dt>
|
|
36
|
+
)}
|
|
37
|
+
<dd dangerouslySetInnerHTML={{ __html: feat.desc }} />
|
|
38
|
+
</dl>
|
|
39
|
+
))}
|
|
40
|
+
</div>
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
const Layout: React.FC<IRouteComponentProps> = ({ children, location }) => {
|
|
44
|
+
const ctx = useContext(context)
|
|
45
|
+
const {
|
|
46
|
+
config: { mode },
|
|
47
|
+
meta
|
|
48
|
+
} = ctx
|
|
49
|
+
const [menuCollapsed, setMenuCollapsed] = useState<boolean>(true)
|
|
50
|
+
const isSiteMode = mode === 'site'
|
|
51
|
+
const showHero = isSiteMode && meta.hero
|
|
52
|
+
const showFeatures = isSiteMode && meta.features
|
|
53
|
+
const showSideMenu = meta.sidemenu !== false && !showHero && !showFeatures && !meta.gapless
|
|
54
|
+
const showSlugs =
|
|
55
|
+
!showHero &&
|
|
56
|
+
!showFeatures &&
|
|
57
|
+
Boolean(meta.slugs?.length) &&
|
|
58
|
+
(meta.toc === 'content' || meta.toc === undefined) &&
|
|
59
|
+
!meta.gapless
|
|
60
|
+
return (
|
|
61
|
+
<div
|
|
62
|
+
className="__dumi-default-layout"
|
|
63
|
+
data-route={location.pathname}
|
|
64
|
+
data-show-sidemenu={String(showSideMenu)}
|
|
65
|
+
data-show-slugs={String(showSlugs)}
|
|
66
|
+
data-site-mode={isSiteMode}
|
|
67
|
+
data-gapless={String(!!meta.gapless)}
|
|
68
|
+
onClick={() => {
|
|
69
|
+
if (menuCollapsed) return
|
|
70
|
+
setMenuCollapsed(true)
|
|
71
|
+
}}
|
|
72
|
+
>
|
|
73
|
+
<Navbar location={location} selectedKeys={[meta?.nav?.path]} navPrefix={<SearchBar />} />
|
|
74
|
+
<SideMenu mobileMenuCollapsed={menuCollapsed} location={location} />
|
|
75
|
+
{showSlugs && <SlugList slugs={meta.slugs} className="__dumi-default-layout-toc" />}
|
|
76
|
+
{showHero && Hero(meta.hero)}
|
|
77
|
+
{showFeatures && Features(meta.features)}
|
|
78
|
+
<div className="__dumi-default-layout-content">
|
|
79
|
+
{children}
|
|
80
|
+
{(showHero || showFeatures) && meta.footer && (
|
|
81
|
+
<div className="__dumi-default-layout-footer" dangerouslySetInnerHTML={{ __html: meta.footer }} />
|
|
82
|
+
)}
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export default Layout
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/* 颜色表 */
|
|
2
|
+
@c-primary: #4569d4;
|
|
3
|
+
@c-heading: #454d64;
|
|
4
|
+
@c-text: #454d64;
|
|
5
|
+
@c-secondary: #717484;
|
|
6
|
+
@c-link: @c-primary;
|
|
7
|
+
@c-border: #ebedf1;
|
|
8
|
+
@c-btn-border: #dadadf;
|
|
9
|
+
@c-light-bg: #f9fafb;
|
|
10
|
+
|
|
11
|
+
/* 尺寸表 */
|
|
12
|
+
@s-nav-height: 64px;
|
|
13
|
+
@s-mobile-nav-height: 50px;
|
|
14
|
+
@s-menu-width: 260px;
|
|
15
|
+
@s-site-menu-width: 300px;
|
|
16
|
+
@s-menu-mobile-width: 240px;
|
|
17
|
+
@s-content-margin: 58px;
|
|
18
|
+
|
|
19
|
+
@img-logo: 'data:image/png;base64,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';
|
|
20
|
+
@prefix: __dumi-default;
|
|
21
|
+
@mobile: ~'only screen and (max-width: 767px)';
|
|
22
|
+
@desktop: ~'only screen and (min-width: 768px)';
|
|
23
|
+
@icons: 'data:image/png;base64,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';
|
|
24
|
+
|
|
25
|
+
.@{prefix}-icon {
|
|
26
|
+
background: url(@icons) no-repeat ~'0 0/230px auto';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* 颜色表 - dark */
|
|
30
|
+
@c-bg-dark: #141414;
|
|
31
|
+
@c-light-bg-dark: rgba(255,255,255,0.08);
|
|
32
|
+
@c-primary-dark: #7395f7;
|
|
33
|
+
@c-heading-dark: rgba(255, 255, 255, 0.85);
|
|
34
|
+
@c-text-dark: rgba(255, 255, 255, 0.85);
|
|
35
|
+
@c-secondary-dark: rgba(255,255,255,0.65);
|
|
36
|
+
@c-border-dark: #6b6c6d;
|
|
37
|
+
@c-btn-border-dark: #464646;
|
|
38
|
+
|
|
39
|
+
.@{prefix}-dark {
|
|
40
|
+
position: fixed;
|
|
41
|
+
right: 20px;
|
|
42
|
+
top: 16px;
|
|
43
|
+
|
|
44
|
+
[data-mode="doc"] & {
|
|
45
|
+
position: relative;
|
|
46
|
+
top: 0;
|
|
47
|
+
right: 0;
|
|
48
|
+
display: inline-block;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@media @mobile {
|
|
52
|
+
position: relative;
|
|
53
|
+
top: 6px;
|
|
54
|
+
right: auto;
|
|
55
|
+
display: flex;
|
|
56
|
+
justify-content: center;
|
|
57
|
+
|
|
58
|
+
.@{prefix}-navbar & {
|
|
59
|
+
display: none;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&-sun,
|
|
64
|
+
&-moon,
|
|
65
|
+
&-auto {
|
|
66
|
+
position: relative;
|
|
67
|
+
border-radius: 50%;
|
|
68
|
+
outline: none;
|
|
69
|
+
cursor: pointer;
|
|
70
|
+
width: 30px;
|
|
71
|
+
height: 30px;
|
|
72
|
+
display: flex;
|
|
73
|
+
justify-content: center;
|
|
74
|
+
align-items: center;
|
|
75
|
+
|
|
76
|
+
svg {
|
|
77
|
+
transition: all 0.3s linear;
|
|
78
|
+
&:hover {
|
|
79
|
+
transform: scale(1.2);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
&-sun,
|
|
85
|
+
&-moon,
|
|
86
|
+
&-auto {
|
|
87
|
+
border: 1px solid @c-btn-border;
|
|
88
|
+
background-color: @c-light-bg;
|
|
89
|
+
|
|
90
|
+
svg {
|
|
91
|
+
fill: @c-text;
|
|
92
|
+
[data-prefers-color=dark] & {
|
|
93
|
+
fill: @c-text-dark;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
[data-prefers-color=dark] & {
|
|
98
|
+
border-color: @c-btn-border-dark;
|
|
99
|
+
background-color: @c-bg-dark;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&-switch {
|
|
104
|
+
[data-mode=doc] & {
|
|
105
|
+
display: flex;
|
|
106
|
+
button + button {
|
|
107
|
+
margin-left: 4px;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
@media @mobile {
|
|
112
|
+
display: flex;
|
|
113
|
+
button + button {
|
|
114
|
+
margin-left: 10px;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
&-active {
|
|
119
|
+
.@{prefix}-menu & {
|
|
120
|
+
border-color: @c-primary;
|
|
121
|
+
[data-prefers-color=dark] & {
|
|
122
|
+
border-color: @c-primary-dark;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
[data-mode=doc][data-mobile-show=true] & {
|
|
128
|
+
margin-bottom: 10px;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
button {
|
|
132
|
+
z-index: 102;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
&-list {
|
|
136
|
+
animation: dropDown 0.2s linear 0s 1;
|
|
137
|
+
|
|
138
|
+
button {
|
|
139
|
+
z-index: 101;
|
|
140
|
+
margin-top: 4px;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
[data-mode="doc"] & {
|
|
144
|
+
position: absolute;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@keyframes dropDown {
|
|
151
|
+
0% {
|
|
152
|
+
margin-top: -100%;
|
|
153
|
+
}
|
|
154
|
+
100% {
|
|
155
|
+
margin-top: 0;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { FC } from 'react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { usePrefersColor } from 'dumi/theme';
|
|
4
|
+
import './Dark.less';
|
|
5
|
+
|
|
6
|
+
interface darkProps {
|
|
7
|
+
darkSwitch: boolean;
|
|
8
|
+
isSideMenu: boolean;
|
|
9
|
+
onDarkSwitchClick?: (ev) => void;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const Dark: FC<darkProps> = ({ darkSwitch, onDarkSwitchClick, isSideMenu }) => {
|
|
13
|
+
const allState = ['dark', 'light', 'auto'];
|
|
14
|
+
const [color, setColor] = usePrefersColor();
|
|
15
|
+
const prefersColor = color;
|
|
16
|
+
|
|
17
|
+
const sunSvg = <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4026" width="22" height="22"><path d="M915.2 476.16h-43.968c-24.704 0-44.736 16-44.736 35.84s20.032 35.904 44.736 35.904H915.2c24.768 0 44.8-16.064 44.8-35.904s-20.032-35.84-44.8-35.84zM512 265.6c-136.704 0-246.464 109.824-246.464 246.4 0 136.704 109.76 246.464 246.464 246.464S758.4 648.704 758.4 512c0-136.576-109.696-246.4-246.4-246.4z m0 425.6c-99.008 0-179.2-80.128-179.2-179.2 0-98.944 80.192-179.2 179.2-179.2S691.2 413.056 691.2 512c0 99.072-80.192 179.2-179.2 179.2zM197.44 512c0-19.84-19.136-35.84-43.904-35.84H108.8c-24.768 0-44.8 16-44.8 35.84s20.032 35.904 44.8 35.904h44.736c24.768 0 43.904-16.064 43.904-35.904zM512 198.464c19.776 0 35.84-20.032 35.84-44.8v-44.8C547.84 84.032 531.84 64 512 64s-35.904 20.032-35.904 44.8v44.8c0 24.768 16.128 44.864 35.904 44.864z m0 627.136c-19.776 0-35.904 20.032-35.904 44.8v44.736C476.096 940.032 492.16 960 512 960s35.84-20.032 35.84-44.8v-44.736c0-24.768-16.064-44.864-35.84-44.864z m329.92-592.832c17.472-17.536 20.288-43.072 6.4-57.024-14.016-14.016-39.488-11.2-57.024 6.336-4.736 4.864-26.496 26.496-31.36 31.36-17.472 17.472-20.288 43.008-6.336 57.024 13.952 14.016 39.488 11.2 57.024-6.336 4.8-4.864 26.496-26.56 31.296-31.36zM213.376 759.936c-4.864 4.8-26.56 26.624-31.36 31.36-17.472 17.472-20.288 42.944-6.4 56.96 14.016 13.952 39.552 11.2 57.024-6.336 4.8-4.736 26.56-26.496 31.36-31.36 17.472-17.472 20.288-43.008 6.336-56.96-14.016-13.952-39.552-11.072-56.96 6.336z m19.328-577.92c-17.536-17.536-43.008-20.352-57.024-6.336-14.08 14.016-11.136 39.488 6.336 57.024 4.864 4.864 26.496 26.56 31.36 31.424 17.536 17.408 43.008 20.288 56.96 6.336 14.016-14.016 11.264-39.488-6.336-57.024-4.736-4.864-26.496-26.56-31.296-31.424z m527.168 628.608c4.864 4.864 26.624 26.624 31.36 31.424 17.536 17.408 43.072 20.224 57.088 6.336 13.952-14.016 11.072-39.552-6.4-57.024-4.864-4.8-26.56-26.496-31.36-31.36-17.472-17.408-43.072-20.288-57.024-6.336-13.952 14.016-11.008 39.488 6.336 56.96z" p-id="4027"></path></svg>;
|
|
18
|
+
const moonSvg = <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3854" width="22" height="22"><path d="M991.816611 674.909091a69.166545 69.166545 0 0 0-51.665455-23.272727 70.795636 70.795636 0 0 0-27.438545 5.585454A415.674182 415.674182 0 0 1 754.993338 698.181818c-209.594182 0-393.472-184.785455-393.472-395.636363 0-52.363636 38.539636-119.621818 69.515637-173.614546 4.887273-8.610909 9.634909-16.756364 14.103272-24.901818A69.818182 69.818182 0 0 0 384.631156 0a70.842182 70.842182 0 0 0-27.438545 5.585455C161.678429 90.298182 14.362065 307.898182 14.362065 512c0 282.298182 238.824727 512 532.38691 512a522.286545 522.286545 0 0 0 453.957818-268.334545A69.818182 69.818182 0 0 0 991.816611 674.909091zM546.679156 954.181818c-248.785455 0-462.941091-192-462.941091-442.181818 0-186.647273 140.637091-372.829091 300.939637-442.181818-36.817455 65.629091-92.578909 151.970909-92.578909 232.727273 0 250.181818 214.109091 465.454545 462.917818 465.454545a488.331636 488.331636 0 0 0 185.181091-46.545455 453.003636 453.003636 0 0 1-393.565091 232.727273z m103.656728-669.323636l-14.266182 83.781818a34.909091 34.909091 0 0 0 50.362182 36.770909l74.775272-39.563636 74.752 39.563636a36.142545 36.142545 0 0 0 16.174546 3.956364 34.909091 34.909091 0 0 0 34.210909-40.727273l-14.289455-83.781818 60.509091-59.345455a35.025455 35.025455 0 0 0-19.223272-59.578182l-83.61891-12.101818-37.376-76.101818a34.56 34.56 0 0 0-62.254545 0l-37.376 76.101818-83.618909 12.101818a34.909091 34.909091 0 0 0-19.246546 59.578182z m70.423272-64.698182a34.280727 34.280727 0 0 0 26.135273-19.083636l14.312727-29.090909 14.336 29.090909a34.257455 34.257455 0 0 0 26.135273 19.083636l32.046546 4.887273-23.272728 22.574545a35.234909 35.234909 0 0 0-10.007272 30.952727l5.46909 32.116364-28.625454-15.127273a34.490182 34.490182 0 0 0-32.302546 0l-28.695272 15.127273 5.469091-32.116364a35.141818 35.141818 0 0 0-9.984-30.952727l-23.272728-22.574545z" p-id="3855"></path></svg>;
|
|
19
|
+
const autoSvg = <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11002" width="22" height="22"><path d="M127.658667 492.885333c0-51.882667 10.24-101.717333 30.378666-149.162666s47.786667-88.064 81.92-122.538667 75.093333-61.781333 122.538667-81.92 96.938667-30.378667 149.162667-30.378667 101.717333 10.24 149.162666 30.378667 88.405333 47.786667 122.88 81.92 61.781333 75.093333 81.92 122.538667 30.378667 96.938667 30.378667 149.162666-10.24 101.717333-30.378667 149.162667-47.786667 88.405333-81.92 122.88-75.093333 61.781333-122.88 81.92-97.28 30.378667-149.162666 30.378667-101.717333-10.24-149.162667-30.378667-88.064-47.786667-122.538667-81.92-61.781333-75.093333-81.92-122.88-30.378667-96.938667-30.378666-149.162667z m329.045333 0c0 130.048 13.994667 244.394667 41.984 343.381334h12.970667c46.762667 0 91.136-9.216 133.461333-27.306667s78.848-42.666667 109.568-73.386667 54.954667-67.242667 73.386667-109.568 27.306667-86.698667 27.306666-133.461333c0-46.421333-9.216-90.794667-27.306666-133.12s-42.666667-78.848-73.386667-109.568-67.242667-54.954667-109.568-73.386667-86.698667-27.306667-133.461333-27.306666h-11.605334c-28.672 123.562667-43.349333 237.909333-43.349333 343.722666z" p-id="11003"></path></svg>;
|
|
20
|
+
|
|
21
|
+
const list = allState.filter(state => state !== prefersColor);
|
|
22
|
+
|
|
23
|
+
const changeColor = (ev, toColor) => {
|
|
24
|
+
if (!isSideMenu && onDarkSwitchClick) {
|
|
25
|
+
onDarkSwitchClick(ev);
|
|
26
|
+
}
|
|
27
|
+
if (toColor === prefersColor) return;
|
|
28
|
+
setColor(toColor);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const getSvg = (baseColor) => {
|
|
32
|
+
switch (baseColor) {
|
|
33
|
+
case 'dark':
|
|
34
|
+
return (
|
|
35
|
+
<button key="dumi-dark-btn-moon" title="Dark theme" onClick={ev => changeColor(ev, baseColor)} className={`__dumi-default-dark-moon ${baseColor === prefersColor ? '__dumi-default-dark-switch-active' : ''}`}>
|
|
36
|
+
{moonSvg}
|
|
37
|
+
</button>
|
|
38
|
+
);
|
|
39
|
+
case 'light':
|
|
40
|
+
return (
|
|
41
|
+
<button key="dumi-dark-btn-sun" title="Light theme" onClick={ev => changeColor(ev, baseColor)} className={`__dumi-default-dark-sun ${baseColor === prefersColor ? '__dumi-default-dark-switch-active' : ''}`}>
|
|
42
|
+
{sunSvg}
|
|
43
|
+
</button>
|
|
44
|
+
);
|
|
45
|
+
case 'auto':
|
|
46
|
+
return (
|
|
47
|
+
<button key="dumi-dark-btn-auto" title="Default to system" onClick={ev => changeColor(ev, baseColor)} className={`__dumi-default-dark-auto ${baseColor === prefersColor ? '__dumi-default-dark-switch-active' : ''}`}>
|
|
48
|
+
{autoSvg}
|
|
49
|
+
</button>
|
|
50
|
+
)
|
|
51
|
+
default:
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<div className="__dumi-default-dark">
|
|
57
|
+
<div
|
|
58
|
+
className={`__dumi-default-dark-switch ${!isSideMenu && darkSwitch ? "__dumi-default-dark-switch-open" : ""}`}>
|
|
59
|
+
{isSideMenu ? (
|
|
60
|
+
allState.map(item => (
|
|
61
|
+
getSvg(item)
|
|
62
|
+
))
|
|
63
|
+
) : getSvg(prefersColor)}
|
|
64
|
+
</div>
|
|
65
|
+
{!isSideMenu && darkSwitch && (
|
|
66
|
+
<div className="__dumi-default-dark-switch-list" onClick={()=> onDarkSwitchClick(false)}>
|
|
67
|
+
{
|
|
68
|
+
list.map(item => (
|
|
69
|
+
getSvg(item)
|
|
70
|
+
))
|
|
71
|
+
}
|
|
72
|
+
</div>
|
|
73
|
+
)}
|
|
74
|
+
</div>
|
|
75
|
+
)
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export default Dark;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import React, { useContext, useState } from 'react'
|
|
2
|
+
import { Menu } from 'antd'
|
|
3
|
+
import { context, Link, NavLink } from 'dumi/theme'
|
|
4
|
+
import 'dumi-theme-default/src/components/Navbar.less'
|
|
5
|
+
import Dark from './Dark';
|
|
6
|
+
|
|
7
|
+
const Navbar = ({ navPrefix, location, selectedKeys }) => {
|
|
8
|
+
const [darkSwitch, setDarkSwitch] = useState(false);
|
|
9
|
+
const ctxt = useContext(context);
|
|
10
|
+
console.log(ctxt);
|
|
11
|
+
|
|
12
|
+
const {
|
|
13
|
+
base,
|
|
14
|
+
config: { mode, title, logo },
|
|
15
|
+
nav: navItems
|
|
16
|
+
} = ctxt;
|
|
17
|
+
|
|
18
|
+
const lang = localStorage.getItem('locale') || 'zh-CN';
|
|
19
|
+
|
|
20
|
+
const changeLanguage = (val) => {
|
|
21
|
+
const value = val === 'zh-CN' ? 'en-US' : 'zh-CN';
|
|
22
|
+
const pathname = location.pathname;
|
|
23
|
+
localStorage.setItem('locale', value);
|
|
24
|
+
if(value === 'en-US' && !pathname.startsWith('/en-US')){
|
|
25
|
+
const origin = window.location.origin;
|
|
26
|
+
window.location.href = origin+ '/en-US' + pathname;
|
|
27
|
+
} else if(value === 'zh-CN' && pathname.startsWith('/en-US')){
|
|
28
|
+
const origin = window.location.origin;
|
|
29
|
+
window.location.href = origin+pathname.replace('/en-US', '');
|
|
30
|
+
}else{
|
|
31
|
+
window.location.reload();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return (
|
|
36
|
+
<div className="__dumi-default-navbar" data-mode={mode}>
|
|
37
|
+
<span>
|
|
38
|
+
{/* logo & title */}
|
|
39
|
+
<Link
|
|
40
|
+
className="__dumi-default-navbar-logo"
|
|
41
|
+
style={{
|
|
42
|
+
backgroundImage: logo && `url('${logo}')`
|
|
43
|
+
}}
|
|
44
|
+
to={base}
|
|
45
|
+
data-plaintext={logo === false || undefined}
|
|
46
|
+
>
|
|
47
|
+
{title}
|
|
48
|
+
</Link>
|
|
49
|
+
</span>
|
|
50
|
+
{/* nav */}
|
|
51
|
+
<Menu mode="horizontal" selectedKeys={selectedKeys} className="__amiya-nav">
|
|
52
|
+
<Menu.Item key="search-button">
|
|
53
|
+
{navPrefix}
|
|
54
|
+
</Menu.Item>
|
|
55
|
+
{navItems.map(nav => {
|
|
56
|
+
return (
|
|
57
|
+
<Menu.Item key={nav.path}>
|
|
58
|
+
{nav.path ? (
|
|
59
|
+
<NavLink to={nav.path} key={nav.path}>
|
|
60
|
+
{nav.title}
|
|
61
|
+
</NavLink>
|
|
62
|
+
) : (
|
|
63
|
+
nav.title
|
|
64
|
+
)}
|
|
65
|
+
</Menu.Item>
|
|
66
|
+
)
|
|
67
|
+
})}
|
|
68
|
+
</Menu>
|
|
69
|
+
<div className="__dumi-default-navbar-tool">
|
|
70
|
+
<div onClick={() => changeLanguage(lang)} className="__dumi-default-locale-select" style={{ cursor: 'pointer',border: '1px solid #dadadf',padding: '0 16px 0 16px', color: 'var(--zaui-text-weak)',borderRadius: '14px'}}>
|
|
71
|
+
{
|
|
72
|
+
lang === 'zh-CN' ? '中文' : 'English'
|
|
73
|
+
}
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
<>
|
|
77
|
+
<Dark darkSwitch={darkSwitch} isSideMenu={false} onDarkSwitchClick={setDarkSwitch} />
|
|
78
|
+
</>
|
|
79
|
+
</div>
|
|
80
|
+
)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export default Navbar
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React, { useContext, useMemo } from 'react'
|
|
2
|
+
import { context, Link } from 'dumi/theme'
|
|
3
|
+
import { Menu } from 'antd'
|
|
4
|
+
|
|
5
|
+
const { ItemGroup, Item: MenuItem } = Menu
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 渲染菜单
|
|
9
|
+
* @param menuList 菜单列表
|
|
10
|
+
*/
|
|
11
|
+
const renderMenu = (menuList: any[], p: any[]) => {
|
|
12
|
+
if (!menuList || !menuList.length) {
|
|
13
|
+
return null
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return menuList.map(menu => {
|
|
17
|
+
let newParent = [...p, menu]
|
|
18
|
+
|
|
19
|
+
if (menu.children && menu.children.some(item => item.visible !== false)) {
|
|
20
|
+
return (
|
|
21
|
+
<ItemGroup key={menu.path} title={menu.title}>
|
|
22
|
+
{menu.children && renderMenu(menu.children, newParent)}
|
|
23
|
+
</ItemGroup>
|
|
24
|
+
)
|
|
25
|
+
} else {
|
|
26
|
+
return (
|
|
27
|
+
<MenuItem icon={menu.icon} key={menu.path}>
|
|
28
|
+
<Link to={menu.path}>{menu.title}</Link>
|
|
29
|
+
</MenuItem>
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export default function SideMenu(props) {
|
|
36
|
+
const {
|
|
37
|
+
config: { mode },
|
|
38
|
+
menu,
|
|
39
|
+
meta
|
|
40
|
+
} = useContext(context)
|
|
41
|
+
const isHiddenMenus =
|
|
42
|
+
Boolean((meta.hero || meta.features || meta.gapless) && mode === 'site') || meta.sidemenu === false || undefined
|
|
43
|
+
|
|
44
|
+
const { pathname } = props.location
|
|
45
|
+
|
|
46
|
+
if (isHiddenMenus) {
|
|
47
|
+
return null
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const openKeys = useMemo(() => {
|
|
51
|
+
return menu.filter(item => item.children && item.children.length).map(item => item.path)
|
|
52
|
+
}, [menu])
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<div className="__amiya-menu">
|
|
56
|
+
<Menu mode="inline" selectedKeys={[pathname]} openKeys={openKeys}>
|
|
57
|
+
{renderMenu(menu, [])}
|
|
58
|
+
</Menu>
|
|
59
|
+
</div>
|
|
60
|
+
)
|
|
61
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import Layout from './BasicLayout'
|
|
3
|
+
import { ConfigProvider } from 'antd'
|
|
4
|
+
import { IRouteComponentProps } from 'umi'
|
|
5
|
+
import zhCN from 'antd/es/locale/zh_CN'
|
|
6
|
+
// import jaJP from 'antd/es/locale/ja_JP'
|
|
7
|
+
import enUS from 'antd/es/locale/en_US'
|
|
8
|
+
import moment from 'moment'
|
|
9
|
+
import 'moment/locale/zh-cn'
|
|
10
|
+
import './layout.less'
|
|
11
|
+
moment.locale('zh-cn')
|
|
12
|
+
|
|
13
|
+
let localeMap = {
|
|
14
|
+
'zh-CN': zhCN,
|
|
15
|
+
'en-US': enUS,
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
let locale = localStorage.getItem('locale') || 'zh-CN'
|
|
19
|
+
|
|
20
|
+
export default ({ children, ...props }: IRouteComponentProps) => {
|
|
21
|
+
return (
|
|
22
|
+
<ConfigProvider locale={localeMap[locale]}>
|
|
23
|
+
<Layout {...props}>{children}</Layout>
|
|
24
|
+
</ConfigProvider>
|
|
25
|
+
)
|
|
26
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
.__amiya {
|
|
2
|
+
&-theme {
|
|
3
|
+
right : 100px;
|
|
4
|
+
bottom : 100px;
|
|
5
|
+
z-index : 10;
|
|
6
|
+
position: fixed !important;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
&-nav {
|
|
10
|
+
flex : 1;
|
|
11
|
+
border-bottom : none !important;
|
|
12
|
+
display : flex;
|
|
13
|
+
justify-content: flex-end;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
&-theme-color {
|
|
17
|
+
width : 1em;
|
|
18
|
+
height : 1em;
|
|
19
|
+
margin-right : 4px;
|
|
20
|
+
border-radius: 2px;
|
|
21
|
+
display : flex;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
&-menu {
|
|
25
|
+
position : fixed;
|
|
26
|
+
z-index : 100;
|
|
27
|
+
top : 60px;
|
|
28
|
+
left : 0;
|
|
29
|
+
bottom : 0;
|
|
30
|
+
width : 260px;
|
|
31
|
+
background-color: #f2f5fa;
|
|
32
|
+
box-sizing : border-box;
|
|
33
|
+
transition : left 0.3s;
|
|
34
|
+
margin-left : 40px;
|
|
35
|
+
|
|
36
|
+
.ant-menu {
|
|
37
|
+
height : 100%;
|
|
38
|
+
padding : 24px 0;
|
|
39
|
+
overflow : hidden;
|
|
40
|
+
overflow-y: auto;
|
|
41
|
+
|
|
42
|
+
&.ant-menu-inline .ant-menu-item:not(:last-child) {
|
|
43
|
+
margin-bottom: 0;
|
|
44
|
+
margin-top : 0;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&.ant-menu-inline .ant-menu-item::after {
|
|
48
|
+
display: none;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&.ant-menu-inline .ant-menu-item {
|
|
52
|
+
width: calc(98%);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
|
|
57
|
+
border-radius: 8px;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
.__dumi-default-previewer-actions {
|
|
64
|
+
background-color: #fff;
|
|
65
|
+
justify-content : center;
|
|
66
|
+
|
|
67
|
+
>span {
|
|
68
|
+
display: none;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
[data-prefers-color='dark'] .__dumi-default-previewer-actions {
|
|
73
|
+
background-color: unset;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.__dumi-default-layout[data-site-mode='true'] {
|
|
77
|
+
padding-top: 90px;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
img {
|
|
81
|
+
max-width: 100%;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.deleted-sign.deleted.prefix,
|
|
85
|
+
.inserted-sign.inserted.prefix {
|
|
86
|
+
user-select: none;
|
|
87
|
+
}
|