@blocklet/launcher-layout 2.13.32 → 2.13.33
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/lib/LaunchResultMessage/demo/default.js +75 -11
- package/lib/LaunchResultMessage/result-message.stories.js +15 -1
- package/lib/Layout/demo/child-progress-in-memory-mode.js +7 -22
- package/lib/Layout/demo/child-progress.js +7 -22
- package/lib/Layout/demo/constants.js +45 -1
- package/lib/Layout/demo/default.js +7 -22
- package/lib/Layout/demo/extra-nav.js +108 -0
- package/lib/Layout/demo/logo-url.js +7 -22
- package/lib/Layout/demo/longest-steps-for-launch.js +7 -22
- package/lib/Layout/demo/memory-mode.js +7 -22
- package/lib/Layout/demo/old-code-compatible.js +2 -10
- package/lib/Layout/demo/optional-step.js +7 -22
- package/lib/Layout/demo/show-child.js +7 -22
- package/lib/Layout/layout.stories.js +9 -2
- package/lib/assets/blocklet-default-logo.png +0 -0
- package/lib/content.js +1 -1
- package/lib/header.js +4 -3
- package/lib/index.js +52 -40
- package/lib/markdown-body.js +1 -1
- package/lib/nav.js +56 -8
- package/lib/page-header.js +3 -3
- package/lib/small-circle-progress.js +2 -2
- package/package.json +3 -3
|
@@ -1,18 +1,82 @@
|
|
|
1
|
+
import { Grid } from '@mui/material';
|
|
1
2
|
import Button from '@arcblock/ux/lib/Button';
|
|
2
3
|
import LaunchResultMessage from '../../launch-result-message';
|
|
3
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
5
|
export default function Demo() {
|
|
5
|
-
return /*#__PURE__*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
return /*#__PURE__*/_jsxs(Grid, {
|
|
7
|
+
container: true,
|
|
8
|
+
spacing: 12,
|
|
9
|
+
mt: 2,
|
|
10
|
+
children: [/*#__PURE__*/_jsx(Grid, {
|
|
11
|
+
item: true,
|
|
12
|
+
xs: 12,
|
|
13
|
+
sm: 6,
|
|
14
|
+
md: 3,
|
|
15
|
+
children: /*#__PURE__*/_jsx(LaunchResultMessage, {
|
|
16
|
+
variant: "success",
|
|
17
|
+
title: "Success Title",
|
|
18
|
+
subTitle: "This is a success message.",
|
|
19
|
+
footer: /*#__PURE__*/_jsx("div", {
|
|
20
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
21
|
+
color: "primary",
|
|
22
|
+
variant: "contained",
|
|
23
|
+
children: "Success Action"
|
|
24
|
+
})
|
|
25
|
+
})
|
|
14
26
|
})
|
|
15
|
-
})
|
|
27
|
+
}), /*#__PURE__*/_jsx(Grid, {
|
|
28
|
+
item: true,
|
|
29
|
+
xs: 12,
|
|
30
|
+
sm: 6,
|
|
31
|
+
md: 3,
|
|
32
|
+
children: /*#__PURE__*/_jsx(LaunchResultMessage, {
|
|
33
|
+
variant: "error",
|
|
34
|
+
title: "Error Title",
|
|
35
|
+
subTitle: "This is an error message.",
|
|
36
|
+
footer: /*#__PURE__*/_jsx("div", {
|
|
37
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
38
|
+
color: "primary",
|
|
39
|
+
variant: "contained",
|
|
40
|
+
children: "Error Action"
|
|
41
|
+
})
|
|
42
|
+
})
|
|
43
|
+
})
|
|
44
|
+
}), /*#__PURE__*/_jsx(Grid, {
|
|
45
|
+
item: true,
|
|
46
|
+
xs: 12,
|
|
47
|
+
sm: 6,
|
|
48
|
+
md: 3,
|
|
49
|
+
children: /*#__PURE__*/_jsx(LaunchResultMessage, {
|
|
50
|
+
variant: "info",
|
|
51
|
+
title: "Info Title",
|
|
52
|
+
subTitle: "This is an info message.",
|
|
53
|
+
footer: /*#__PURE__*/_jsx("div", {
|
|
54
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
55
|
+
color: "primary",
|
|
56
|
+
variant: "contained",
|
|
57
|
+
children: "Info Action"
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
}), /*#__PURE__*/_jsx(Grid, {
|
|
62
|
+
item: true,
|
|
63
|
+
xs: 12,
|
|
64
|
+
sm: 6,
|
|
65
|
+
md: 3,
|
|
66
|
+
children: /*#__PURE__*/_jsx(LaunchResultMessage, {
|
|
67
|
+
variant: "loading",
|
|
68
|
+
title: "Loading Title",
|
|
69
|
+
subTitle: "This is a loading message.",
|
|
70
|
+
footer: /*#__PURE__*/_jsx("div", {
|
|
71
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
72
|
+
color: "primary",
|
|
73
|
+
variant: "contained",
|
|
74
|
+
disabled: true,
|
|
75
|
+
children: "Loading Action"
|
|
76
|
+
})
|
|
77
|
+
})
|
|
78
|
+
})
|
|
79
|
+
})]
|
|
16
80
|
});
|
|
17
81
|
}
|
|
18
82
|
Demo.propTypes = {};
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
import { Container } from '@mui/material';
|
|
2
|
+
import { ThemeProvider } from '@arcblock/ux/lib/Theme';
|
|
3
|
+
import { ThemeModeToggle } from '@arcblock/ux/lib/Config';
|
|
1
4
|
import Default from './demo/default';
|
|
5
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
6
|
export default {
|
|
3
7
|
title: 'Blocklet-Launcher/ResultMessage',
|
|
4
8
|
parameters: {
|
|
@@ -6,7 +10,17 @@ export default {
|
|
|
6
10
|
readme: {
|
|
7
11
|
sidebar: '<!-- PROPS -->'
|
|
8
12
|
}
|
|
9
|
-
}
|
|
13
|
+
},
|
|
14
|
+
decorators: [Story => /*#__PURE__*/_jsxs(ThemeProvider, {
|
|
15
|
+
prefer: "system",
|
|
16
|
+
children: [/*#__PURE__*/_jsx(Container, {
|
|
17
|
+
sx: {
|
|
18
|
+
textAlign: 'right',
|
|
19
|
+
py: 1
|
|
20
|
+
},
|
|
21
|
+
children: /*#__PURE__*/_jsx(ThemeModeToggle, {})
|
|
22
|
+
}), /*#__PURE__*/_jsx(Story, {})]
|
|
23
|
+
})]
|
|
10
24
|
};
|
|
11
25
|
Default.argTypes = {};
|
|
12
26
|
Default.storyName = 'ResultMessage';
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
-
import
|
|
3
|
-
import LauncherLogoNotext from '@arcblock/icons/lib/LauncherLogoNotext';
|
|
4
|
-
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
|
|
5
|
-
import Button from '@mui/material/IconButton';
|
|
2
|
+
import { useTheme } from '@mui/material';
|
|
6
3
|
import Layout from '../../index';
|
|
7
4
|
import { StepProvider, useStepContext } from '../../context/step';
|
|
8
5
|
import staticDemo from './static-demo-data.json';
|
|
9
|
-
import { BodyContainer, Content } from './constants';
|
|
6
|
+
import { BodyContainer, Content, HeaderEndAddons, getNavLogo } from './constants';
|
|
10
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
8
|
const testSteps = [{
|
|
12
9
|
key: 'wizard',
|
|
@@ -51,6 +48,9 @@ function TestContent() {
|
|
|
51
48
|
});
|
|
52
49
|
}
|
|
53
50
|
export default function Demo() {
|
|
51
|
+
const {
|
|
52
|
+
palette
|
|
53
|
+
} = useTheme();
|
|
54
54
|
return /*#__PURE__*/_jsx(BodyContainer, {
|
|
55
55
|
children: /*#__PURE__*/_jsx(StepProvider, {
|
|
56
56
|
steps: testSteps,
|
|
@@ -58,23 +58,8 @@ export default function Demo() {
|
|
|
58
58
|
children: /*#__PURE__*/_jsx(Layout, {
|
|
59
59
|
locale: "zh",
|
|
60
60
|
blockletMeta: staticDemo,
|
|
61
|
-
headerEndAddons: /*#__PURE__*/_jsx(
|
|
62
|
-
|
|
63
|
-
style: {
|
|
64
|
-
fontSize: 28
|
|
65
|
-
}
|
|
66
|
-
})
|
|
67
|
-
}),
|
|
68
|
-
navLogo: {
|
|
69
|
-
desktop: /*#__PURE__*/_jsx(LauncherLogo, {
|
|
70
|
-
width: "145",
|
|
71
|
-
height: "48"
|
|
72
|
-
}),
|
|
73
|
-
mobile: /*#__PURE__*/_jsx(LauncherLogoNotext, {
|
|
74
|
-
width: 32,
|
|
75
|
-
height: 32
|
|
76
|
-
})
|
|
77
|
-
},
|
|
61
|
+
headerEndAddons: /*#__PURE__*/_jsx(HeaderEndAddons, {}),
|
|
62
|
+
navLogo: getNavLogo(palette.mode),
|
|
78
63
|
children: /*#__PURE__*/_jsx(Content, {
|
|
79
64
|
children: /*#__PURE__*/_jsx(TestContent, {})
|
|
80
65
|
})
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import LauncherLogoNotext from '@arcblock/icons/lib/LauncherLogoNotext';
|
|
3
|
-
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
|
|
4
|
-
import Button from '@mui/material/IconButton';
|
|
1
|
+
import { useTheme } from '@mui/material';
|
|
5
2
|
import Layout from '../../index';
|
|
6
3
|
import { StepProvider } from '../../context/step';
|
|
7
4
|
import staticDemo from './static-demo-data.json';
|
|
8
|
-
import { BodyContainer, Content } from './constants';
|
|
5
|
+
import { BodyContainer, Content, HeaderEndAddons, getNavLogo } from './constants';
|
|
9
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
7
|
const testSteps = [{
|
|
11
8
|
key: 'wizard',
|
|
@@ -34,29 +31,17 @@ const testSteps = [{
|
|
|
34
31
|
path: ''
|
|
35
32
|
}];
|
|
36
33
|
export default function Demo() {
|
|
34
|
+
const {
|
|
35
|
+
palette
|
|
36
|
+
} = useTheme();
|
|
37
37
|
return /*#__PURE__*/_jsx(BodyContainer, {
|
|
38
38
|
children: /*#__PURE__*/_jsx(StepProvider, {
|
|
39
39
|
steps: testSteps,
|
|
40
40
|
children: /*#__PURE__*/_jsx(Layout, {
|
|
41
41
|
locale: "zh",
|
|
42
42
|
blockletMeta: staticDemo,
|
|
43
|
-
headerEndAddons: /*#__PURE__*/_jsx(
|
|
44
|
-
|
|
45
|
-
style: {
|
|
46
|
-
fontSize: 28
|
|
47
|
-
}
|
|
48
|
-
})
|
|
49
|
-
}),
|
|
50
|
-
navLogo: {
|
|
51
|
-
desktop: /*#__PURE__*/_jsx(LauncherLogo, {
|
|
52
|
-
width: "145",
|
|
53
|
-
height: "48"
|
|
54
|
-
}),
|
|
55
|
-
mobile: /*#__PURE__*/_jsx(LauncherLogoNotext, {
|
|
56
|
-
width: 32,
|
|
57
|
-
height: 32
|
|
58
|
-
})
|
|
59
|
-
},
|
|
43
|
+
headerEndAddons: /*#__PURE__*/_jsx(HeaderEndAddons, {}),
|
|
44
|
+
navLogo: getNavLogo(palette.mode),
|
|
60
45
|
children: /*#__PURE__*/_jsx(Content, {
|
|
61
46
|
children: /*#__PURE__*/_jsx("p", {
|
|
62
47
|
children: "set children in steps data"
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import styled from '@emotion/styled';
|
|
2
|
+
import IconButton from '@mui/material/IconButton';
|
|
3
|
+
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
|
|
4
|
+
import { ThemeModeToggle } from '@arcblock/ux/lib/Config';
|
|
5
|
+
import LauncherLogo from '@arcblock/icons/lib/LauncherLogo';
|
|
6
|
+
import LauncherLogoNotext from '@arcblock/icons/lib/LauncherLogoNotext';
|
|
7
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
8
|
export const steps = [{
|
|
3
9
|
key: 'wizard',
|
|
4
10
|
name: 'Name1 Wizard',
|
|
@@ -20,6 +26,15 @@ export const BodyContainer = styled.div`
|
|
|
20
26
|
position: relative;
|
|
21
27
|
width: 100%;
|
|
22
28
|
height: 100%;
|
|
29
|
+
min-height: 700px;
|
|
30
|
+
display: flex;
|
|
31
|
+
flex-direction: column;
|
|
32
|
+
> div {
|
|
33
|
+
flex: 1;
|
|
34
|
+
}
|
|
35
|
+
.ll-container {
|
|
36
|
+
flex: 1;
|
|
37
|
+
}
|
|
23
38
|
`;
|
|
24
39
|
export const Content = styled.div`
|
|
25
40
|
box-sizing: border-box;
|
|
@@ -29,4 +44,33 @@ export const Content = styled.div`
|
|
|
29
44
|
align-items: center;
|
|
30
45
|
width: 100%;
|
|
31
46
|
height: 100%;
|
|
32
|
-
`;
|
|
47
|
+
`;
|
|
48
|
+
export function HeaderEndAddons() {
|
|
49
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
50
|
+
children: [/*#__PURE__*/_jsx(ThemeModeToggle, {}), /*#__PURE__*/_jsx(IconButton, {
|
|
51
|
+
children: /*#__PURE__*/_jsx(HelpOutlineIcon, {
|
|
52
|
+
style: {
|
|
53
|
+
fontSize: 28
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
})]
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
export function getNavLogo(mode) {
|
|
60
|
+
return {
|
|
61
|
+
desktop: /*#__PURE__*/_jsx(LauncherLogo, {
|
|
62
|
+
style: {
|
|
63
|
+
filter: mode === 'dark' ? 'invert(1)' : 'none'
|
|
64
|
+
},
|
|
65
|
+
width: "145",
|
|
66
|
+
height: "48"
|
|
67
|
+
}),
|
|
68
|
+
mobile: /*#__PURE__*/_jsx(LauncherLogoNotext, {
|
|
69
|
+
style: {
|
|
70
|
+
filter: mode === 'dark' ? 'invert(1)' : 'none'
|
|
71
|
+
},
|
|
72
|
+
width: 32,
|
|
73
|
+
height: 32
|
|
74
|
+
})
|
|
75
|
+
};
|
|
76
|
+
}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import LauncherLogoNotext from '@arcblock/icons/lib/LauncherLogoNotext';
|
|
3
|
-
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
|
|
4
|
-
import Button from '@mui/material/IconButton';
|
|
1
|
+
import { useTheme } from '@mui/material';
|
|
5
2
|
import Layout from '../../index';
|
|
6
3
|
import { StepProvider } from '../../context/step';
|
|
7
4
|
import staticDemo from './static-demo-data.json';
|
|
8
|
-
import { BodyContainer, Content } from './constants';
|
|
5
|
+
import { BodyContainer, Content, getNavLogo, HeaderEndAddons } from './constants';
|
|
9
6
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
7
|
export default function Demo() {
|
|
11
8
|
const testSteps = [{
|
|
@@ -24,29 +21,17 @@ export default function Demo() {
|
|
|
24
21
|
path: '',
|
|
25
22
|
description: 'I am desc 3'
|
|
26
23
|
}];
|
|
24
|
+
const {
|
|
25
|
+
palette
|
|
26
|
+
} = useTheme();
|
|
27
27
|
return /*#__PURE__*/_jsx(BodyContainer, {
|
|
28
28
|
children: /*#__PURE__*/_jsx(StepProvider, {
|
|
29
29
|
steps: testSteps,
|
|
30
30
|
children: /*#__PURE__*/_jsx(Layout, {
|
|
31
31
|
locale: "zh",
|
|
32
32
|
blockletMeta: staticDemo,
|
|
33
|
-
headerEndAddons: /*#__PURE__*/_jsx(
|
|
34
|
-
|
|
35
|
-
style: {
|
|
36
|
-
fontSize: 28
|
|
37
|
-
}
|
|
38
|
-
})
|
|
39
|
-
}),
|
|
40
|
-
navLogo: {
|
|
41
|
-
desktop: /*#__PURE__*/_jsx(LauncherLogo, {
|
|
42
|
-
width: "145",
|
|
43
|
-
height: "48"
|
|
44
|
-
}),
|
|
45
|
-
mobile: /*#__PURE__*/_jsx(LauncherLogoNotext, {
|
|
46
|
-
width: 32,
|
|
47
|
-
height: 32
|
|
48
|
-
})
|
|
49
|
-
},
|
|
33
|
+
headerEndAddons: /*#__PURE__*/_jsx(HeaderEndAddons, {}),
|
|
34
|
+
navLogo: getNavLogo(palette.mode),
|
|
50
35
|
children: /*#__PURE__*/_jsxs(Content, {
|
|
51
36
|
children: [/*#__PURE__*/_jsxs("p", {
|
|
52
37
|
children: [/*#__PURE__*/_jsx("b", {
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { useTheme } from '@mui/material';
|
|
2
|
+
import AppsIcon from '@mui/icons-material/Apps';
|
|
3
|
+
import Layout from '../../index';
|
|
4
|
+
import { StepProvider } from '../../context/step';
|
|
5
|
+
import staticDemo from './static-demo-data.json';
|
|
6
|
+
import { BodyContainer, getNavLogo, HeaderEndAddons } from './constants';
|
|
7
|
+
|
|
8
|
+
// helper to remove icon for display
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
function getSerializable(obj) {
|
|
11
|
+
const {
|
|
12
|
+
icon,
|
|
13
|
+
...rest
|
|
14
|
+
} = obj;
|
|
15
|
+
return rest;
|
|
16
|
+
}
|
|
17
|
+
export default function Demo() {
|
|
18
|
+
const testSteps = [{
|
|
19
|
+
key: 'wizard',
|
|
20
|
+
name: 'Name1 Wizard',
|
|
21
|
+
path: '/',
|
|
22
|
+
description: 'I am desc 1'
|
|
23
|
+
}, {
|
|
24
|
+
key: 'select-node',
|
|
25
|
+
name: 'Name2 select node',
|
|
26
|
+
path: '/launch/select',
|
|
27
|
+
description: 'I am desc 2'
|
|
28
|
+
}, {
|
|
29
|
+
key: 'launch-app',
|
|
30
|
+
name: 'Name3 launch app',
|
|
31
|
+
path: '',
|
|
32
|
+
description: 'I am desc 3'
|
|
33
|
+
}];
|
|
34
|
+
const {
|
|
35
|
+
palette
|
|
36
|
+
} = useTheme();
|
|
37
|
+
|
|
38
|
+
// Example 2: With Tooltip and Description
|
|
39
|
+
const tooltipExtraNav = {
|
|
40
|
+
link: 'https://www.baidu.com',
|
|
41
|
+
text: 'My Apps',
|
|
42
|
+
appText: 'View My Apps',
|
|
43
|
+
icon: /*#__PURE__*/_jsx(AppsIcon, {}),
|
|
44
|
+
tooltipText: 'View my apps',
|
|
45
|
+
description: 'Your apps will be shown here'
|
|
46
|
+
};
|
|
47
|
+
return /*#__PURE__*/_jsx(BodyContainer, {
|
|
48
|
+
children: /*#__PURE__*/_jsx(StepProvider, {
|
|
49
|
+
steps: testSteps,
|
|
50
|
+
children: /*#__PURE__*/_jsxs(Layout, {
|
|
51
|
+
locale: "en",
|
|
52
|
+
blockletMeta: staticDemo,
|
|
53
|
+
headerEndAddons: /*#__PURE__*/_jsx(HeaderEndAddons, {}),
|
|
54
|
+
navLogo: getNavLogo(palette.mode),
|
|
55
|
+
extraNav: tooltipExtraNav,
|
|
56
|
+
children: [/*#__PURE__*/_jsxs("div", {
|
|
57
|
+
children: [/*#__PURE__*/_jsxs("p", {
|
|
58
|
+
children: [/*#__PURE__*/_jsx("b", {
|
|
59
|
+
children: "extraNav"
|
|
60
|
+
}), " is used to add additional navigation items to the navigation bar, supporting the following features:"]
|
|
61
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
62
|
+
children: [/*#__PURE__*/_jsx("h4", {
|
|
63
|
+
children: "Property Description"
|
|
64
|
+
}), /*#__PURE__*/_jsxs("ul", {
|
|
65
|
+
children: [/*#__PURE__*/_jsxs("li", {
|
|
66
|
+
children: [/*#__PURE__*/_jsx("b", {
|
|
67
|
+
children: "text"
|
|
68
|
+
}), ": Main display text"]
|
|
69
|
+
}), /*#__PURE__*/_jsxs("li", {
|
|
70
|
+
children: [/*#__PURE__*/_jsx("b", {
|
|
71
|
+
children: "appText"
|
|
72
|
+
}), ": Optional alternative text (displayed on mobile)"]
|
|
73
|
+
}), /*#__PURE__*/_jsxs("li", {
|
|
74
|
+
children: [/*#__PURE__*/_jsx("b", {
|
|
75
|
+
children: "link"
|
|
76
|
+
}), ": Link to navigate to when clicked"]
|
|
77
|
+
}), /*#__PURE__*/_jsxs("li", {
|
|
78
|
+
children: [/*#__PURE__*/_jsx("b", {
|
|
79
|
+
children: "icon"
|
|
80
|
+
}), ": Optional icon (supports any React node)"]
|
|
81
|
+
}), /*#__PURE__*/_jsxs("li", {
|
|
82
|
+
children: [/*#__PURE__*/_jsx("b", {
|
|
83
|
+
children: "tooltipText"
|
|
84
|
+
}), ": Optional tooltip text"]
|
|
85
|
+
}), /*#__PURE__*/_jsxs("li", {
|
|
86
|
+
children: [/*#__PURE__*/_jsx("b", {
|
|
87
|
+
children: "description"
|
|
88
|
+
}), ": Optional description text"]
|
|
89
|
+
}), /*#__PURE__*/_jsxs("li", {
|
|
90
|
+
children: [/*#__PURE__*/_jsx("b", {
|
|
91
|
+
children: "buttonProps"
|
|
92
|
+
}), ": Custom button properties (supports all MUI Button props)"]
|
|
93
|
+
})]
|
|
94
|
+
})]
|
|
95
|
+
})]
|
|
96
|
+
}), /*#__PURE__*/_jsx("pre", {
|
|
97
|
+
style: {
|
|
98
|
+
background: '#f5f5f5',
|
|
99
|
+
padding: 16,
|
|
100
|
+
borderRadius: 4
|
|
101
|
+
},
|
|
102
|
+
children: JSON.stringify(getSerializable(tooltipExtraNav), null, 2)
|
|
103
|
+
})]
|
|
104
|
+
})
|
|
105
|
+
})
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
Demo.propTypes = {};
|
|
@@ -1,37 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import LauncherLogoNotext from '@arcblock/icons/lib/LauncherLogoNotext';
|
|
3
|
-
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
|
|
4
|
-
import Button from '@mui/material/IconButton';
|
|
1
|
+
import { useTheme } from '@mui/material';
|
|
5
2
|
import Layout from '../../index';
|
|
6
3
|
import { StepProvider } from '../../context/step';
|
|
7
4
|
import staticDemo from './static-demo-data.json';
|
|
8
|
-
import { BodyContainer, Content, steps } from './constants';
|
|
5
|
+
import { BodyContainer, Content, steps, HeaderEndAddons, getNavLogo } from './constants';
|
|
9
6
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
7
|
export default function Demo() {
|
|
8
|
+
const {
|
|
9
|
+
palette
|
|
10
|
+
} = useTheme();
|
|
11
11
|
return /*#__PURE__*/_jsx(BodyContainer, {
|
|
12
12
|
children: /*#__PURE__*/_jsx(StepProvider, {
|
|
13
13
|
steps: steps,
|
|
14
14
|
children: /*#__PURE__*/_jsx(Layout, {
|
|
15
15
|
locale: "zh",
|
|
16
16
|
blockletMeta: staticDemo,
|
|
17
|
-
headerEndAddons: /*#__PURE__*/_jsx(
|
|
18
|
-
children: /*#__PURE__*/_jsx(HelpOutlineIcon, {
|
|
19
|
-
style: {
|
|
20
|
-
fontSize: 28
|
|
21
|
-
}
|
|
22
|
-
})
|
|
23
|
-
}),
|
|
17
|
+
headerEndAddons: /*#__PURE__*/_jsx(HeaderEndAddons, {}),
|
|
24
18
|
logoUrl: "https://store.blocklet.dev/assets/z8ia4e5vAeDsQEE2P26bQqz9oWR1Lxg9qUMaV/logo.png",
|
|
25
|
-
navLogo:
|
|
26
|
-
desktop: /*#__PURE__*/_jsx(LauncherLogo, {
|
|
27
|
-
width: "145",
|
|
28
|
-
height: "48"
|
|
29
|
-
}),
|
|
30
|
-
mobile: /*#__PURE__*/_jsx(LauncherLogoNotext, {
|
|
31
|
-
width: 32,
|
|
32
|
-
height: 32
|
|
33
|
-
})
|
|
34
|
-
},
|
|
19
|
+
navLogo: getNavLogo(palette.mode),
|
|
35
20
|
children: /*#__PURE__*/_jsx(Content, {
|
|
36
21
|
children: /*#__PURE__*/_jsxs("p", {
|
|
37
22
|
children: [/*#__PURE__*/_jsx("b", {
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
-
import
|
|
3
|
-
import LauncherLogoNotext from '@arcblock/icons/lib/LauncherLogoNotext';
|
|
4
|
-
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
|
|
5
|
-
import Button from '@mui/material/IconButton';
|
|
2
|
+
import { useTheme } from '@mui/material';
|
|
6
3
|
import Layout from '../../index';
|
|
7
4
|
import { StepProvider, useStepContext } from '../../context/step';
|
|
8
5
|
import staticDemo from './static-demo-data.json';
|
|
9
|
-
import { BodyContainer, Content } from './constants';
|
|
6
|
+
import { BodyContainer, Content, HeaderEndAddons, getNavLogo } from './constants';
|
|
10
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
8
|
const testSteps = [{
|
|
12
9
|
key: 'introduction',
|
|
@@ -76,6 +73,9 @@ function TestContent() {
|
|
|
76
73
|
});
|
|
77
74
|
}
|
|
78
75
|
export default function Demo() {
|
|
76
|
+
const {
|
|
77
|
+
palette
|
|
78
|
+
} = useTheme();
|
|
79
79
|
return /*#__PURE__*/_jsx(BodyContainer, {
|
|
80
80
|
children: /*#__PURE__*/_jsx(StepProvider, {
|
|
81
81
|
steps: testSteps,
|
|
@@ -83,23 +83,8 @@ export default function Demo() {
|
|
|
83
83
|
children: /*#__PURE__*/_jsx(Layout, {
|
|
84
84
|
locale: "zh",
|
|
85
85
|
blockletMeta: staticDemo,
|
|
86
|
-
headerEndAddons: /*#__PURE__*/_jsx(
|
|
87
|
-
|
|
88
|
-
style: {
|
|
89
|
-
fontSize: 28
|
|
90
|
-
}
|
|
91
|
-
})
|
|
92
|
-
}),
|
|
93
|
-
navLogo: {
|
|
94
|
-
desktop: /*#__PURE__*/_jsx(LauncherLogo, {
|
|
95
|
-
width: "145",
|
|
96
|
-
height: "48"
|
|
97
|
-
}),
|
|
98
|
-
mobile: /*#__PURE__*/_jsx(LauncherLogoNotext, {
|
|
99
|
-
width: 32,
|
|
100
|
-
height: 32
|
|
101
|
-
})
|
|
102
|
-
},
|
|
86
|
+
headerEndAddons: /*#__PURE__*/_jsx(HeaderEndAddons, {}),
|
|
87
|
+
navLogo: getNavLogo(palette.mode),
|
|
103
88
|
children: /*#__PURE__*/_jsx(Content, {
|
|
104
89
|
children: /*#__PURE__*/_jsx(TestContent, {})
|
|
105
90
|
})
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
-
import
|
|
3
|
-
import LauncherLogoNotext from '@arcblock/icons/lib/LauncherLogoNotext';
|
|
4
|
-
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
|
|
5
|
-
import Button from '@mui/material/IconButton';
|
|
2
|
+
import { useTheme } from '@mui/material';
|
|
6
3
|
import Layout from '../../index';
|
|
7
4
|
import { StepProvider, useStepContext } from '../../context/step';
|
|
8
5
|
import staticDemo from './static-demo-data.json';
|
|
9
|
-
import { BodyContainer, Content } from './constants';
|
|
6
|
+
import { BodyContainer, Content, HeaderEndAddons, getNavLogo } from './constants';
|
|
10
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
8
|
const testSteps = [{
|
|
12
9
|
key: 'wizard',
|
|
@@ -30,6 +27,9 @@ function TestContent() {
|
|
|
30
27
|
});
|
|
31
28
|
}
|
|
32
29
|
export default function Demo() {
|
|
30
|
+
const {
|
|
31
|
+
palette
|
|
32
|
+
} = useTheme();
|
|
33
33
|
return /*#__PURE__*/_jsx(BodyContainer, {
|
|
34
34
|
children: /*#__PURE__*/_jsx(StepProvider, {
|
|
35
35
|
steps: testSteps,
|
|
@@ -37,23 +37,8 @@ export default function Demo() {
|
|
|
37
37
|
children: /*#__PURE__*/_jsx(Layout, {
|
|
38
38
|
locale: "zh",
|
|
39
39
|
blockletMeta: staticDemo,
|
|
40
|
-
headerEndAddons: /*#__PURE__*/_jsx(
|
|
41
|
-
|
|
42
|
-
style: {
|
|
43
|
-
fontSize: 28
|
|
44
|
-
}
|
|
45
|
-
})
|
|
46
|
-
}),
|
|
47
|
-
navLogo: {
|
|
48
|
-
desktop: /*#__PURE__*/_jsx(LauncherLogo, {
|
|
49
|
-
width: "145",
|
|
50
|
-
height: "48"
|
|
51
|
-
}),
|
|
52
|
-
mobile: /*#__PURE__*/_jsx(LauncherLogoNotext, {
|
|
53
|
-
width: 32,
|
|
54
|
-
height: 32
|
|
55
|
-
})
|
|
56
|
-
},
|
|
40
|
+
headerEndAddons: /*#__PURE__*/_jsx(HeaderEndAddons, {}),
|
|
41
|
+
navLogo: getNavLogo(palette.mode),
|
|
57
42
|
children: /*#__PURE__*/_jsx(Content, {
|
|
58
43
|
children: /*#__PURE__*/_jsx(TestContent, {})
|
|
59
44
|
})
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import LauncherLogo from '@arcblock/icons/lib/LauncherLogo';
|
|
2
2
|
import LauncherLogoNotext from '@arcblock/icons/lib/LauncherLogoNotext';
|
|
3
|
-
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
|
|
4
|
-
import Button from '@mui/material/IconButton';
|
|
5
3
|
import { useTheme } from '@mui/material/styles';
|
|
6
4
|
import useMediaQuery from '@mui/material/useMediaQuery';
|
|
7
5
|
import Layout from '../../index';
|
|
8
6
|
import { StepProvider } from '../../context/step';
|
|
9
7
|
import staticDemo from './static-demo-data.json';
|
|
10
|
-
import { BodyContainer, Content, LogoContainer, steps } from './constants';
|
|
8
|
+
import { BodyContainer, Content, LogoContainer, steps, HeaderEndAddons } from './constants';
|
|
11
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
10
|
export default function Demo() {
|
|
13
11
|
const theme = useTheme();
|
|
@@ -26,13 +24,7 @@ export default function Demo() {
|
|
|
26
24
|
steps: steps,
|
|
27
25
|
children: /*#__PURE__*/_jsx(Layout, {
|
|
28
26
|
blockletMeta: staticDemo,
|
|
29
|
-
headerEndAddons: /*#__PURE__*/_jsx(
|
|
30
|
-
children: /*#__PURE__*/_jsx(HelpOutlineIcon, {
|
|
31
|
-
style: {
|
|
32
|
-
fontSize: 28
|
|
33
|
-
}
|
|
34
|
-
})
|
|
35
|
-
}),
|
|
27
|
+
headerEndAddons: /*#__PURE__*/_jsx(HeaderEndAddons, {}),
|
|
36
28
|
navLogo: logo,
|
|
37
29
|
children: /*#__PURE__*/_jsx(Content, {
|
|
38
30
|
children: "I am test content"
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
-
import
|
|
3
|
-
import LauncherLogoNotext from '@arcblock/icons/lib/LauncherLogoNotext';
|
|
4
|
-
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
|
|
5
|
-
import Button from '@mui/material/IconButton';
|
|
2
|
+
import { useTheme } from '@mui/material';
|
|
6
3
|
import Layout from '../../index';
|
|
7
4
|
import { StepProvider, useStepContext } from '../../context/step';
|
|
8
5
|
import staticDemo from './static-demo-data.json';
|
|
9
|
-
import { BodyContainer, Content } from './constants';
|
|
6
|
+
import { BodyContainer, Content, HeaderEndAddons, getNavLogo } from './constants';
|
|
10
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
8
|
const testSteps = [{
|
|
12
9
|
key: 'wizard',
|
|
@@ -42,6 +39,9 @@ function TestContent() {
|
|
|
42
39
|
});
|
|
43
40
|
}
|
|
44
41
|
export default function Demo() {
|
|
42
|
+
const {
|
|
43
|
+
palette
|
|
44
|
+
} = useTheme();
|
|
45
45
|
return /*#__PURE__*/_jsx(BodyContainer, {
|
|
46
46
|
children: /*#__PURE__*/_jsx(StepProvider, {
|
|
47
47
|
steps: testSteps,
|
|
@@ -49,23 +49,8 @@ export default function Demo() {
|
|
|
49
49
|
children: /*#__PURE__*/_jsx(Layout, {
|
|
50
50
|
locale: "zh",
|
|
51
51
|
blockletMeta: staticDemo,
|
|
52
|
-
headerEndAddons: /*#__PURE__*/_jsx(
|
|
53
|
-
|
|
54
|
-
style: {
|
|
55
|
-
fontSize: 28
|
|
56
|
-
}
|
|
57
|
-
})
|
|
58
|
-
}),
|
|
59
|
-
navLogo: {
|
|
60
|
-
desktop: /*#__PURE__*/_jsx(LauncherLogo, {
|
|
61
|
-
width: "145",
|
|
62
|
-
height: "48"
|
|
63
|
-
}),
|
|
64
|
-
mobile: /*#__PURE__*/_jsx(LauncherLogoNotext, {
|
|
65
|
-
width: 32,
|
|
66
|
-
height: 32
|
|
67
|
-
})
|
|
68
|
-
},
|
|
52
|
+
headerEndAddons: /*#__PURE__*/_jsx(HeaderEndAddons, {}),
|
|
53
|
+
navLogo: getNavLogo(palette.mode),
|
|
69
54
|
children: /*#__PURE__*/_jsx(Content, {
|
|
70
55
|
children: /*#__PURE__*/_jsx(TestContent, {})
|
|
71
56
|
})
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
-
import
|
|
3
|
-
import LauncherLogoNotext from '@arcblock/icons/lib/LauncherLogoNotext';
|
|
4
|
-
import HelpOutlineIcon from '@mui/icons-material/HelpOutline';
|
|
5
|
-
import Button from '@mui/material/IconButton';
|
|
2
|
+
import { useTheme } from '@mui/material';
|
|
6
3
|
import Layout from '../../index';
|
|
7
4
|
import { StepProvider, useStepContext } from '../../context/step';
|
|
8
5
|
import staticDemo from './static-demo-data.json';
|
|
9
|
-
import { BodyContainer, Content } from './constants';
|
|
6
|
+
import { BodyContainer, Content, HeaderEndAddons, getNavLogo } from './constants';
|
|
10
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
8
|
const testSteps = [{
|
|
12
9
|
key: 'start-app',
|
|
@@ -74,6 +71,9 @@ function TestContent() {
|
|
|
74
71
|
});
|
|
75
72
|
}
|
|
76
73
|
export default function Demo() {
|
|
74
|
+
const {
|
|
75
|
+
palette
|
|
76
|
+
} = useTheme();
|
|
77
77
|
return /*#__PURE__*/_jsx(BodyContainer, {
|
|
78
78
|
children: /*#__PURE__*/_jsx(StepProvider, {
|
|
79
79
|
steps: testSteps,
|
|
@@ -81,23 +81,8 @@ export default function Demo() {
|
|
|
81
81
|
children: /*#__PURE__*/_jsx(Layout, {
|
|
82
82
|
locale: "zh",
|
|
83
83
|
blockletMeta: staticDemo,
|
|
84
|
-
headerEndAddons: /*#__PURE__*/_jsx(
|
|
85
|
-
|
|
86
|
-
style: {
|
|
87
|
-
fontSize: 28
|
|
88
|
-
}
|
|
89
|
-
})
|
|
90
|
-
}),
|
|
91
|
-
navLogo: {
|
|
92
|
-
desktop: /*#__PURE__*/_jsx(LauncherLogo, {
|
|
93
|
-
width: "145",
|
|
94
|
-
height: "48"
|
|
95
|
-
}),
|
|
96
|
-
mobile: /*#__PURE__*/_jsx(LauncherLogoNotext, {
|
|
97
|
-
width: 32,
|
|
98
|
-
height: 32
|
|
99
|
-
})
|
|
100
|
-
},
|
|
84
|
+
headerEndAddons: /*#__PURE__*/_jsx(HeaderEndAddons, {}),
|
|
85
|
+
navLogo: getNavLogo(palette.mode),
|
|
101
86
|
children: /*#__PURE__*/_jsx(Content, {
|
|
102
87
|
children: /*#__PURE__*/_jsx(TestContent, {})
|
|
103
88
|
})
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ThemeProvider } from '@arcblock/ux/lib/Theme';
|
|
1
2
|
import Default from './demo/default';
|
|
2
3
|
import LogoUrl from './demo/logo-url';
|
|
3
4
|
import ChildProgress from './demo/child-progress';
|
|
@@ -7,6 +8,8 @@ import ChildProgressInMemoryMode from './demo/child-progress-in-memory-mode';
|
|
|
7
8
|
import ShowChild from './demo/show-child';
|
|
8
9
|
import LongestStepsForLaunch from './demo/longest-steps-for-launch';
|
|
9
10
|
import OldCodeCompatible from './demo/old-code-compatible';
|
|
11
|
+
import ExtraNav from './demo/extra-nav';
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
13
|
export default {
|
|
11
14
|
title: 'Blocklet-Launcher/Layout',
|
|
12
15
|
parameters: {
|
|
@@ -14,8 +17,12 @@ export default {
|
|
|
14
17
|
readme: {
|
|
15
18
|
sidebar: '<!-- PROPS -->'
|
|
16
19
|
}
|
|
17
|
-
}
|
|
20
|
+
},
|
|
21
|
+
decorators: [Story => /*#__PURE__*/_jsx(ThemeProvider, {
|
|
22
|
+
prefer: "system",
|
|
23
|
+
children: /*#__PURE__*/_jsx(Story, {})
|
|
24
|
+
})]
|
|
18
25
|
};
|
|
19
26
|
Default.argTypes = {};
|
|
20
27
|
Default.storyName = 'Default';
|
|
21
|
-
export { Default, LogoUrl, ChildProgress, MemoryMode, OptionalStep, ChildProgressInMemoryMode, ShowChild, LongestStepsForLaunch, OldCodeCompatible };
|
|
28
|
+
export { Default, LogoUrl, ChildProgress, MemoryMode, OptionalStep, ChildProgressInMemoryMode, ShowChild, LongestStepsForLaunch, OldCodeCompatible, ExtraNav };
|
|
Binary file
|
package/lib/content.js
CHANGED
package/lib/header.js
CHANGED
|
@@ -171,6 +171,7 @@ function AppTitle({
|
|
|
171
171
|
});
|
|
172
172
|
}
|
|
173
173
|
return /*#__PURE__*/_jsx(AppLink, {
|
|
174
|
+
className: "app-link",
|
|
174
175
|
target: "_blank",
|
|
175
176
|
href: joinUrl(blockletMeta?.registryUrl || '', `/blocklets/${blockletMeta?.did}`),
|
|
176
177
|
title: name,
|
|
@@ -203,7 +204,7 @@ AppTitle.defaultProps = {
|
|
|
203
204
|
};
|
|
204
205
|
export default AppHeader;
|
|
205
206
|
const AppLink = styled.a`
|
|
206
|
-
color: ${props => props.theme.palette.
|
|
207
|
+
color: ${props => props.theme.palette.text.primary};
|
|
207
208
|
text-decoration: none;
|
|
208
209
|
overflow: hidden;
|
|
209
210
|
text-overflow: ellipsis;
|
|
@@ -264,7 +265,7 @@ const Container = styled.div`
|
|
|
264
265
|
flex-shrink: 0;
|
|
265
266
|
font-size: 14px;
|
|
266
267
|
font-weight: 600;
|
|
267
|
-
color: ${props => props.theme.palette.
|
|
268
|
+
color: ${props => props.theme.palette.text.secondary};
|
|
268
269
|
${props => props.theme.breakpoints.up('md')} {
|
|
269
270
|
margin-bottom: 4px;
|
|
270
271
|
}
|
|
@@ -313,7 +314,7 @@ const Container = styled.div`
|
|
|
313
314
|
align-items: center;
|
|
314
315
|
flex: 1;
|
|
315
316
|
height: 100%;
|
|
316
|
-
color: ${props => props.theme.palette.
|
|
317
|
+
color: ${props => props.theme.palette.text.primary};
|
|
317
318
|
font-weight: 700;
|
|
318
319
|
${props => props.theme.breakpoints.up('sm')} {
|
|
319
320
|
font-size: 18px;
|
package/lib/index.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import Center from '@arcblock/ux/lib/Center';
|
|
2
|
-
import {
|
|
2
|
+
import { deepmerge } from '@arcblock/ux/lib/Theme';
|
|
3
3
|
import { ThemeProvider as EmotionThemeProvider } from '@emotion/react';
|
|
4
|
-
import styled from '@
|
|
5
|
-
import { CircularProgress, Hidden, StyledEngineProvider, ThemeProvider, Typography, useMediaQuery } from '@mui/material';
|
|
4
|
+
import { CircularProgress, Hidden, styled, StyledEngineProvider, ThemeProvider, Typography, useMediaQuery, useTheme } from '@mui/material';
|
|
6
5
|
import isObject from 'lodash/isObject';
|
|
7
6
|
import PropTypes from 'prop-types';
|
|
8
7
|
import { Suspense, isValidElement } from 'react';
|
|
@@ -14,7 +13,7 @@ import Nav from './nav';
|
|
|
14
13
|
import SmallCircleProgress from './small-circle-progress';
|
|
15
14
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
16
15
|
const HEADER_HEIGHT_MD = '72px';
|
|
17
|
-
const MobileContent = styled
|
|
16
|
+
const MobileContent = styled('div')`
|
|
18
17
|
box-sizing: border-box;
|
|
19
18
|
display: flex;
|
|
20
19
|
overflow: hidden;
|
|
@@ -22,13 +21,15 @@ const MobileContent = styled.div`
|
|
|
22
21
|
height: 100%;
|
|
23
22
|
padding-top: ${HEADER_HEIGHT_MD};
|
|
24
23
|
`;
|
|
25
|
-
const PcContent = styled
|
|
24
|
+
const PcContent = styled('div')`
|
|
26
25
|
display: flex;
|
|
27
26
|
min-width: 900px;
|
|
28
27
|
max-width: ${props => props.contentMaxWidth};
|
|
29
28
|
max-height: 880px;
|
|
30
29
|
border-radius: 8px;
|
|
31
|
-
background-color:
|
|
30
|
+
background-color: ${({
|
|
31
|
+
theme
|
|
32
|
+
}) => theme.palette.background.paper};
|
|
32
33
|
width: ${props => props.width || '80%'};
|
|
33
34
|
height: ${props => props.height || '80%'};
|
|
34
35
|
|
|
@@ -38,21 +39,6 @@ const PcContent = styled.div`
|
|
|
38
39
|
max-height: 100%;
|
|
39
40
|
}
|
|
40
41
|
`;
|
|
41
|
-
const theme = create({
|
|
42
|
-
typography: {
|
|
43
|
-
fontSize: 14
|
|
44
|
-
},
|
|
45
|
-
palette: {
|
|
46
|
-
primary: {
|
|
47
|
-
main: '#1dc1c7',
|
|
48
|
-
contrastText: '#fff'
|
|
49
|
-
},
|
|
50
|
-
secondary: {
|
|
51
|
-
main: '#1976d2',
|
|
52
|
-
contrastText: '#fff'
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
42
|
function Layout({
|
|
57
43
|
blockletMeta: tmpBlockletMeta,
|
|
58
44
|
loading,
|
|
@@ -69,8 +55,11 @@ function Layout({
|
|
|
69
55
|
navSubTitle,
|
|
70
56
|
contentMaxWidth,
|
|
71
57
|
theme: userTheme,
|
|
58
|
+
themeOverrides,
|
|
59
|
+
extraNav,
|
|
72
60
|
...rest
|
|
73
61
|
}) {
|
|
62
|
+
const parentTheme = useTheme();
|
|
74
63
|
const isMobile = useMediaQuery(t => t.breakpoints.down('md'));
|
|
75
64
|
const {
|
|
76
65
|
activeStep,
|
|
@@ -90,13 +79,13 @@ function Layout({
|
|
|
90
79
|
});
|
|
91
80
|
}
|
|
92
81
|
}
|
|
93
|
-
const
|
|
82
|
+
const mergedTheme = deepmerge(parentTheme, userTheme || {}, themeOverrides || {});
|
|
94
83
|
return /*#__PURE__*/_jsx(StyledEngineProvider, {
|
|
95
84
|
injectFirst: true,
|
|
96
85
|
children: /*#__PURE__*/_jsx(ThemeProvider, {
|
|
97
|
-
theme:
|
|
86
|
+
theme: mergedTheme,
|
|
98
87
|
children: /*#__PURE__*/_jsx(EmotionThemeProvider, {
|
|
99
|
-
theme:
|
|
88
|
+
theme: mergedTheme,
|
|
100
89
|
children: /*#__PURE__*/_jsxs(Root, {
|
|
101
90
|
...rest,
|
|
102
91
|
children: [/*#__PURE__*/_jsxs(Header, {
|
|
@@ -115,6 +104,23 @@ function Layout({
|
|
|
115
104
|
style: {
|
|
116
105
|
marginLeft: 3
|
|
117
106
|
}
|
|
107
|
+
}), extraNav && /*#__PURE__*/_jsx(Typography, {
|
|
108
|
+
variant: "caption",
|
|
109
|
+
className: "extra-nav-text",
|
|
110
|
+
onClick: () => {
|
|
111
|
+
if (extraNav.link) {
|
|
112
|
+
window.open(extraNav.link, '_blank');
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
sx: {
|
|
116
|
+
ml: 1,
|
|
117
|
+
color: 'primary.main',
|
|
118
|
+
cursor: 'pointer',
|
|
119
|
+
'&:hover': {
|
|
120
|
+
opacity: 0.8
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
children: extraNav.appText || extraNav.text
|
|
118
124
|
})]
|
|
119
125
|
}),
|
|
120
126
|
logoUrl: logoUrl,
|
|
@@ -140,7 +146,8 @@ function Layout({
|
|
|
140
146
|
logoUrl: logoUrl,
|
|
141
147
|
useOfSkeleton: useOfSkeleton,
|
|
142
148
|
subTitle: navSubTitle,
|
|
143
|
-
loading: loading
|
|
149
|
+
loading: loading,
|
|
150
|
+
extraNav: extraNav
|
|
144
151
|
})
|
|
145
152
|
}), /*#__PURE__*/_jsx(Typography, {
|
|
146
153
|
component: "div",
|
|
@@ -178,7 +185,10 @@ Layout.propTypes = {
|
|
|
178
185
|
useOfSkeleton: PropTypes.bool,
|
|
179
186
|
stepTip: PropTypes.string,
|
|
180
187
|
navSubTitle: PropTypes.string,
|
|
181
|
-
|
|
188
|
+
/** @deprecated Please use themeOverrides instead */
|
|
189
|
+
theme: PropTypes.object,
|
|
190
|
+
themeOverrides: PropTypes.object,
|
|
191
|
+
extraNav: PropTypes.object
|
|
182
192
|
};
|
|
183
193
|
Layout.defaultProps = {
|
|
184
194
|
loading: false,
|
|
@@ -194,7 +204,9 @@ Layout.defaultProps = {
|
|
|
194
204
|
useOfSkeleton: true,
|
|
195
205
|
stepTip: '',
|
|
196
206
|
navSubTitle: '',
|
|
197
|
-
theme: null
|
|
207
|
+
theme: null,
|
|
208
|
+
themeOverrides: null,
|
|
209
|
+
extraNav: null
|
|
198
210
|
};
|
|
199
211
|
|
|
200
212
|
// 针对 safari 下的 chrome 适配
|
|
@@ -203,7 +215,7 @@ let injectStyle = '';
|
|
|
203
215
|
if (ua.includes('iphone os') && ua.includes('crios')) {
|
|
204
216
|
injectStyle = 'height: calc(100vh - 60px);';
|
|
205
217
|
}
|
|
206
|
-
const Header = styled
|
|
218
|
+
const Header = styled('header')`
|
|
207
219
|
width: ${props => props.width || '80%'};
|
|
208
220
|
min-width: 900px;
|
|
209
221
|
box-sizing: border-box;
|
|
@@ -215,7 +227,7 @@ const Header = styled.header`
|
|
|
215
227
|
height: 68px;
|
|
216
228
|
align-items: center;
|
|
217
229
|
|
|
218
|
-
${props => props.theme.breakpoints.up('sm')} and (min-height: 900px) {
|
|
230
|
+
${props => `${props.theme.breakpoints.up('sm')} and (min-height: 900px)`} {
|
|
219
231
|
justify-content: flex-end;
|
|
220
232
|
}
|
|
221
233
|
|
|
@@ -224,7 +236,9 @@ const Header = styled.header`
|
|
|
224
236
|
width: 100%;
|
|
225
237
|
height: ${HEADER_HEIGHT_MD};
|
|
226
238
|
justify-content: space-between;
|
|
227
|
-
background:
|
|
239
|
+
background-color: ${({
|
|
240
|
+
theme
|
|
241
|
+
}) => theme.palette.mode === 'dark' ? theme.palette.background.default : theme.palette.grey[100]};
|
|
228
242
|
}
|
|
229
243
|
|
|
230
244
|
.left {
|
|
@@ -233,12 +247,15 @@ const Header = styled.header`
|
|
|
233
247
|
align-items: center;
|
|
234
248
|
}
|
|
235
249
|
`;
|
|
236
|
-
const Root = styled
|
|
250
|
+
const Root = styled('div')`
|
|
237
251
|
display: flex;
|
|
238
252
|
flex-direction: column;
|
|
239
253
|
justify-content: center;
|
|
240
254
|
align-items: center;
|
|
241
255
|
letter-spacing: normal;
|
|
256
|
+
background: ${({
|
|
257
|
+
theme
|
|
258
|
+
}) => theme.palette.mode === 'dark' ? theme.palette.background.default : theme.palette.grey[100]};
|
|
242
259
|
${injectStyle}
|
|
243
260
|
|
|
244
261
|
header:empty {
|
|
@@ -270,21 +287,16 @@ const Root = styled.div`
|
|
|
270
287
|
flex-grow: 1;
|
|
271
288
|
height: 100%;
|
|
272
289
|
padding: 32px;
|
|
290
|
+
background-color: ${({
|
|
291
|
+
theme
|
|
292
|
+
}) => theme.palette.background.paper};
|
|
273
293
|
|
|
274
294
|
${props => props.theme.breakpoints.down('md')} {
|
|
275
295
|
padding: 16px;
|
|
276
296
|
}
|
|
277
297
|
}
|
|
278
|
-
|
|
279
|
-
${props => props.theme.breakpoints.up('sm')} {
|
|
280
|
-
background: #f6f8fa;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
${props => props.theme.breakpoints.down('md')} {
|
|
284
|
-
background: ${props => props.theme.palette.common.white};
|
|
285
|
-
}
|
|
286
298
|
`;
|
|
287
|
-
const LogoContainer = styled
|
|
299
|
+
const LogoContainer = styled('div')`
|
|
288
300
|
display: block;
|
|
289
301
|
margin-top: 4px;
|
|
290
302
|
`;
|
package/lib/markdown-body.js
CHANGED
package/lib/nav.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import styled from '@emotion/styled';
|
|
2
2
|
import Check from '@mui/icons-material/Check';
|
|
3
|
-
import { Skeleton } from '@mui/material';
|
|
3
|
+
import { Button, Skeleton, Tooltip, Typography } from '@mui/material';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import { useStepContext } from './context/step';
|
|
6
6
|
import AppHeader from './header';
|
|
@@ -11,7 +11,8 @@ function Nav({
|
|
|
11
11
|
locale,
|
|
12
12
|
useOfSkeleton,
|
|
13
13
|
subTitle,
|
|
14
|
-
loading
|
|
14
|
+
loading,
|
|
15
|
+
extraNav
|
|
15
16
|
}) {
|
|
16
17
|
const {
|
|
17
18
|
steps,
|
|
@@ -123,14 +124,55 @@ function Nav({
|
|
|
123
124
|
})]
|
|
124
125
|
}, step.key);
|
|
125
126
|
})
|
|
127
|
+
}), extraNav && /*#__PURE__*/_jsxs("div", {
|
|
128
|
+
className: "extra-nav",
|
|
129
|
+
children: [extraNav.tooltipText ? /*#__PURE__*/_jsx(Tooltip, {
|
|
130
|
+
title: extraNav.tooltipText,
|
|
131
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
132
|
+
variant: extraNav.buttonProps?.variant || 'text',
|
|
133
|
+
onClick: () => {
|
|
134
|
+
if (extraNav.link) {
|
|
135
|
+
window.open(extraNav.link, '_blank');
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
startIcon: extraNav.icon,
|
|
139
|
+
className: "extra-nav-button",
|
|
140
|
+
size: "small",
|
|
141
|
+
...extraNav.buttonProps,
|
|
142
|
+
children: extraNav.text
|
|
143
|
+
})
|
|
144
|
+
}) : /*#__PURE__*/_jsx(Button, {
|
|
145
|
+
variant: extraNav.buttonProps?.variant || 'text',
|
|
146
|
+
onClick: () => {
|
|
147
|
+
if (extraNav.link) {
|
|
148
|
+
window.open(extraNav.link, '_blank');
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
startIcon: extraNav.icon,
|
|
152
|
+
size: "small",
|
|
153
|
+
className: "extra-nav-button",
|
|
154
|
+
...extraNav.buttonProps,
|
|
155
|
+
children: extraNav.text
|
|
156
|
+
}), extraNav.description && /*#__PURE__*/_jsx(Typography, {
|
|
157
|
+
variant: "caption",
|
|
158
|
+
sx: {
|
|
159
|
+
color: 'text.secondary',
|
|
160
|
+
mt: 0.5
|
|
161
|
+
},
|
|
162
|
+
component: "p",
|
|
163
|
+
className: "extra-nav-description",
|
|
164
|
+
children: extraNav.description
|
|
165
|
+
})]
|
|
126
166
|
})]
|
|
127
167
|
});
|
|
128
168
|
}
|
|
129
169
|
const Div = styled.div`
|
|
130
170
|
overflow-y: auto;
|
|
171
|
+
display: flex;
|
|
172
|
+
flex-direction: column;
|
|
131
173
|
${props => props.theme.breakpoints.up('md')} {
|
|
132
174
|
padding: 24px;
|
|
133
|
-
border-right: 1px solid ${props => props.theme.palette.
|
|
175
|
+
border-right: 1px solid ${props => props.theme.palette.divider};
|
|
134
176
|
flex: 0 0 280px;
|
|
135
177
|
min-height: 48px;
|
|
136
178
|
|
|
@@ -169,11 +211,15 @@ const Div = styled.div`
|
|
|
169
211
|
animation: none !important;
|
|
170
212
|
}
|
|
171
213
|
}
|
|
214
|
+
.extra-nav-button {
|
|
215
|
+
cursor: pointer;
|
|
216
|
+
}
|
|
172
217
|
`;
|
|
173
218
|
const StepContainer = styled.div`
|
|
174
219
|
display: flex;
|
|
175
220
|
flex-direction: column;
|
|
176
221
|
margin-top: 60px;
|
|
222
|
+
flex: 1;
|
|
177
223
|
|
|
178
224
|
@media (max-height: 900px) {
|
|
179
225
|
margin-top: 32px;
|
|
@@ -354,7 +400,7 @@ const StepContainer = styled.div`
|
|
|
354
400
|
height: 24px;
|
|
355
401
|
line-height: 24px;
|
|
356
402
|
font-size: 14px;
|
|
357
|
-
color:
|
|
403
|
+
color: ${props => props.theme.palette.grey[500]};
|
|
358
404
|
transition: all ease 0.3s;
|
|
359
405
|
&:first-of-type {
|
|
360
406
|
margin-top: 8px;
|
|
@@ -363,11 +409,11 @@ const StepContainer = styled.div`
|
|
|
363
409
|
padding-bottom: 40px;
|
|
364
410
|
}
|
|
365
411
|
&.step-child-block-active {
|
|
366
|
-
color: ${props => props.theme.palette.
|
|
412
|
+
color: ${props => props.theme.palette.text.primary};
|
|
367
413
|
font-weight: 700;
|
|
368
414
|
}
|
|
369
415
|
&.step-child-block-checked {
|
|
370
|
-
color: ${props => props.theme.palette.
|
|
416
|
+
color: ${props => props.theme.palette.text.primary};
|
|
371
417
|
}
|
|
372
418
|
}
|
|
373
419
|
}
|
|
@@ -393,13 +439,15 @@ Nav.propTypes = {
|
|
|
393
439
|
locale: PropTypes.string,
|
|
394
440
|
useOfSkeleton: PropTypes.bool,
|
|
395
441
|
subTitle: PropTypes.string,
|
|
396
|
-
loading: PropTypes.bool
|
|
442
|
+
loading: PropTypes.bool,
|
|
443
|
+
extraNav: PropTypes.object
|
|
397
444
|
};
|
|
398
445
|
Nav.defaultProps = {
|
|
399
446
|
logoUrl: '',
|
|
400
447
|
locale: '',
|
|
401
448
|
useOfSkeleton: false,
|
|
402
449
|
subTitle: '',
|
|
403
|
-
loading: false
|
|
450
|
+
loading: false,
|
|
451
|
+
extraNav: null
|
|
404
452
|
};
|
|
405
453
|
export default Nav;
|
package/lib/page-header.js
CHANGED
|
@@ -30,7 +30,7 @@ const Content = styled.div`
|
|
|
30
30
|
.title {
|
|
31
31
|
font-size: 24px;
|
|
32
32
|
font-weight: 700;
|
|
33
|
-
color: ${props => props.theme.palette.
|
|
33
|
+
color: ${props => props.theme.palette.text.primary};
|
|
34
34
|
|
|
35
35
|
${props => props.theme.breakpoints.down('md')} {
|
|
36
36
|
font-size: 20px;
|
|
@@ -39,7 +39,7 @@ const Content = styled.div`
|
|
|
39
39
|
|
|
40
40
|
.sub-title {
|
|
41
41
|
font-size: 14px;
|
|
42
|
-
color: ${props => props.theme.palette.
|
|
42
|
+
color: ${props => props.theme.palette.text.secondary};
|
|
43
43
|
padding: 0 14px;
|
|
44
44
|
font-weight: 400;
|
|
45
45
|
}
|
|
@@ -48,7 +48,7 @@ const Content = styled.div`
|
|
|
48
48
|
position: absolute;
|
|
49
49
|
left: 0;
|
|
50
50
|
top: 8px;
|
|
51
|
-
color:
|
|
51
|
+
color: ${props => props.theme.palette.grey[500]};
|
|
52
52
|
font-size: 18px;
|
|
53
53
|
cursor: pointer;
|
|
54
54
|
}
|
|
@@ -22,8 +22,8 @@ export default function SmallCircleProgress({
|
|
|
22
22
|
size: size,
|
|
23
23
|
"aria-label": "decorative progress bar",
|
|
24
24
|
thickness: 10,
|
|
25
|
-
|
|
26
|
-
color: '
|
|
25
|
+
sx: {
|
|
26
|
+
color: 'grey.300'
|
|
27
27
|
}
|
|
28
28
|
}), /*#__PURE__*/_jsx(CircularProgress, {
|
|
29
29
|
variant: "determinate",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blocklet/launcher-layout",
|
|
3
|
-
"version": "2.13.
|
|
3
|
+
"version": "2.13.33",
|
|
4
4
|
"description": "Common ux components of launcher",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"react": "^18.2.0"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@arcblock/icons": "^2.13.
|
|
47
|
+
"@arcblock/icons": "^2.13.33",
|
|
48
48
|
"@blocklet/meta": "^1.16.43",
|
|
49
49
|
"@emotion/react": "^11.13.0",
|
|
50
50
|
"@emotion/styled": "^11.13.0",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"babel-plugin-inline-react-svg": "^2.0.2",
|
|
66
66
|
"glob": "^10.4.5"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "b835dedcd8f2e473082e4c1aee0a8cb3ed0e78ec"
|
|
69
69
|
}
|