@blocklet/ui-react 2.1.9 → 2.1.13
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/Footer/brand.js +67 -0
- package/lib/Footer/copyright.js +44 -0
- package/lib/Footer/index.js +67 -30
- package/lib/Footer/links.js +129 -0
- package/lib/Footer/row.js +59 -0
- package/lib/Footer/social-media.js +75 -0
- package/lib/Header/index.js +12 -2
- package/lib/Icon/index.js +81 -0
- package/lib/utils.js +34 -0
- package/package.json +5 -4
- package/src/Footer/brand.js +70 -0
- package/src/Footer/copyright.js +26 -0
- package/src/Footer/index.js +51 -71
- package/src/Footer/links.js +202 -0
- package/src/Footer/row.js +53 -0
- package/src/Footer/social-media.js +52 -0
- package/src/Header/index.js +7 -1
- package/src/Icon/index.js +45 -0
- package/src/utils.js +16 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = Brand;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
13
|
+
|
|
14
|
+
var _useTheme = _interopRequireDefault(require("@mui/styles/useTheme"));
|
|
15
|
+
|
|
16
|
+
const _excluded = ["name", "logo", "description"];
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
function Brand(_ref) {
|
|
25
|
+
let {
|
|
26
|
+
name,
|
|
27
|
+
logo,
|
|
28
|
+
description
|
|
29
|
+
} = _ref,
|
|
30
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
31
|
+
|
|
32
|
+
const theme = (0, _useTheme.default)();
|
|
33
|
+
|
|
34
|
+
if (!name && !logo && !description) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const logoElement = /*#__PURE__*/_react.default.isValidElement(logo) ? logo : /*#__PURE__*/_react.default.createElement("img", {
|
|
39
|
+
src: logo,
|
|
40
|
+
alt: name
|
|
41
|
+
});
|
|
42
|
+
return /*#__PURE__*/_react.default.createElement(Root, Object.assign({}, rest, {
|
|
43
|
+
$theme: theme
|
|
44
|
+
}), /*#__PURE__*/_react.default.createElement("div", null, logo && /*#__PURE__*/_react.default.createElement("div", {
|
|
45
|
+
className: "footer-brand-logo"
|
|
46
|
+
}, logoElement), name && /*#__PURE__*/_react.default.createElement("div", {
|
|
47
|
+
className: "footer-brand-name"
|
|
48
|
+
}, name)), description && /*#__PURE__*/_react.default.createElement("div", {
|
|
49
|
+
className: "footer-brand-desc"
|
|
50
|
+
}, description));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
Brand.propTypes = {
|
|
54
|
+
name: _propTypes.default.node,
|
|
55
|
+
logo: _propTypes.default.node,
|
|
56
|
+
description: _propTypes.default.string
|
|
57
|
+
};
|
|
58
|
+
Brand.defaultProps = {
|
|
59
|
+
name: '',
|
|
60
|
+
logo: '',
|
|
61
|
+
description: ''
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const Root = _styledComponents.default.div.withConfig({
|
|
65
|
+
displayName: "brand__Root",
|
|
66
|
+
componentId: "sc-6z2c3k-0"
|
|
67
|
+
})(["display:flex;flex-direction:column;width:240px;font-size:14px;a{text-decoration:none;color:inherit;}> div:first-child{display:flex;align-items:center;}.footer-brand-logo{height:32px;margin-right:8px;img,svg{max-width:100%;max-height:100%;}}.footer-brand-name{font-size:16px;font-weight:bold;}.footer-brand-desc{margin-top:16px;}", "{width:auto;}"], props => props.$theme.breakpoints.down('sm'));
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = Copyright;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
13
|
+
|
|
14
|
+
const _excluded = ["owner", "year"];
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
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; }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
function Copyright(_ref) {
|
|
23
|
+
let {
|
|
24
|
+
owner,
|
|
25
|
+
year
|
|
26
|
+
} = _ref,
|
|
27
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
28
|
+
|
|
29
|
+
return /*#__PURE__*/_react.default.createElement(Root, rest, "Copyright \xA9 ", year, " ", owner);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
Copyright.propTypes = {
|
|
33
|
+
owner: _propTypes.default.string,
|
|
34
|
+
year: _propTypes.default.string
|
|
35
|
+
};
|
|
36
|
+
Copyright.defaultProps = {
|
|
37
|
+
owner: 'ArcBlock, Inc.',
|
|
38
|
+
year: "".concat(new Date().getFullYear())
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const Root = _styledComponents.default.p.withConfig({
|
|
42
|
+
displayName: "copyright__Root",
|
|
43
|
+
componentId: "sc-g2r3zf-0"
|
|
44
|
+
})(["margin:0;font-size:14px;"]);
|
package/lib/Footer/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default =
|
|
6
|
+
exports.default = void 0;
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
@@ -11,9 +11,25 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
|
11
11
|
|
|
12
12
|
var _useTheme = _interopRequireDefault(require("@mui/styles/useTheme"));
|
|
13
13
|
|
|
14
|
+
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
15
|
+
|
|
14
16
|
var _Container = _interopRequireDefault(require("@mui/material/Container"));
|
|
15
17
|
|
|
16
|
-
var
|
|
18
|
+
var _reactErrorBoundary = require("react-error-boundary");
|
|
19
|
+
|
|
20
|
+
var _ErrorBoundary = require("@arcblock/ux/lib/ErrorBoundary");
|
|
21
|
+
|
|
22
|
+
var _brand = _interopRequireDefault(require("./brand"));
|
|
23
|
+
|
|
24
|
+
var _links = _interopRequireDefault(require("./links"));
|
|
25
|
+
|
|
26
|
+
var _socialMedia = _interopRequireDefault(require("./social-media"));
|
|
27
|
+
|
|
28
|
+
var _copyright = _interopRequireDefault(require("./copyright"));
|
|
29
|
+
|
|
30
|
+
var _row = _interopRequireDefault(require("./row"));
|
|
31
|
+
|
|
32
|
+
var _utils = require("../utils");
|
|
17
33
|
|
|
18
34
|
var _types = require("../types");
|
|
19
35
|
|
|
@@ -21,6 +37,12 @@ const _excluded = ["meta"];
|
|
|
21
37
|
|
|
22
38
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
39
|
|
|
40
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
41
|
+
|
|
42
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
43
|
+
|
|
44
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
45
|
+
|
|
24
46
|
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; }
|
|
25
47
|
|
|
26
48
|
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; }
|
|
@@ -45,35 +67,44 @@ function Footer(_ref) {
|
|
|
45
67
|
appLogo,
|
|
46
68
|
appName,
|
|
47
69
|
theme: blockletTheme,
|
|
48
|
-
navigation = []
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
70
|
+
navigation = [],
|
|
71
|
+
copyrightOwner,
|
|
72
|
+
footerNavigation,
|
|
73
|
+
footerLinks,
|
|
74
|
+
socialMedia
|
|
75
|
+
} = blocklet;
|
|
76
|
+
const navMenuItems = (0, _utils.mapRecursive)( // TODO: 需要讨论 blocklet.yml 是否需要专门为 footer navigation 提供配置, 暂时与 header 共用 navigation 配置
|
|
77
|
+
footerNavigation || navigation, item => _objectSpread(_objectSpread({}, item), {}, {
|
|
78
|
+
label: item.title,
|
|
79
|
+
link: item.link
|
|
80
|
+
}), 'items');
|
|
57
81
|
return /*#__PURE__*/_react.default.createElement(Root, Object.assign({}, rest, {
|
|
58
82
|
$bgcolor: blockletTheme === null || blockletTheme === void 0 ? void 0 : blockletTheme.background,
|
|
59
83
|
$theme: theme
|
|
60
|
-
}), /*#__PURE__*/_react.default.createElement(_Container.default, null, /*#__PURE__*/_react.default.createElement(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
},
|
|
70
|
-
|
|
71
|
-
}))
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
84
|
+
}), /*#__PURE__*/_react.default.createElement(_Container.default, null, /*#__PURE__*/_react.default.createElement(_row.default, null, /*#__PURE__*/_react.default.createElement(_Box.default, null, /*#__PURE__*/_react.default.createElement(_brand.default, {
|
|
85
|
+
name: appName,
|
|
86
|
+
logo: appLogo,
|
|
87
|
+
description: "Official DID Wallet webapp implementation that makes it possible to manage your digital identities and assets from the browser."
|
|
88
|
+
}), /*#__PURE__*/_react.default.createElement(_socialMedia.default, {
|
|
89
|
+
items: socialMedia,
|
|
90
|
+
style: {
|
|
91
|
+
marginTop: 24
|
|
92
|
+
}
|
|
93
|
+
})), /*#__PURE__*/_react.default.createElement(_links.default, {
|
|
94
|
+
links: navMenuItems
|
|
95
|
+
})), /*#__PURE__*/_react.default.createElement(_row.default, {
|
|
96
|
+
autoCenter: true,
|
|
97
|
+
style: {
|
|
98
|
+
marginTop: 72
|
|
99
|
+
}
|
|
100
|
+
}, /*#__PURE__*/_react.default.createElement(_copyright.default, {
|
|
101
|
+
owner: copyrightOwner || appName
|
|
102
|
+
}), /*#__PURE__*/_react.default.createElement(_links.default, {
|
|
103
|
+
flowLayout: true,
|
|
104
|
+
links: footerLinks,
|
|
105
|
+
style: {
|
|
106
|
+
color: '#999'
|
|
107
|
+
}
|
|
77
108
|
}))));
|
|
78
109
|
}
|
|
79
110
|
|
|
@@ -87,9 +118,15 @@ Footer.defaultProps = {
|
|
|
87
118
|
const Root = _styledComponents.default.div.withConfig({
|
|
88
119
|
displayName: "Footer__Root",
|
|
89
120
|
componentId: "sc-1iwl1nd-0"
|
|
90
|
-
})(["padding:
|
|
121
|
+
})(["padding:48px 0;border-top:1px solid #eee;color:", ";", ""], props => props.$theme.palette.grey[600], _ref2 => {
|
|
91
122
|
let {
|
|
92
123
|
$bgcolor
|
|
93
124
|
} = _ref2;
|
|
94
125
|
return $bgcolor && "background-color: ".concat($bgcolor, ";");
|
|
95
|
-
}
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
var _default = (0, _reactErrorBoundary.withErrorBoundary)(Footer, {
|
|
129
|
+
FallbackComponent: _ErrorBoundary.ErrorFallback
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
exports.default = _default;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = Links;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
13
|
+
|
|
14
|
+
var _useTheme = _interopRequireDefault(require("@mui/styles/useTheme"));
|
|
15
|
+
|
|
16
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
17
|
+
|
|
18
|
+
const _excluded = ["links", "flowLayout"];
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
+
|
|
24
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
+
|
|
26
|
+
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; }
|
|
27
|
+
|
|
28
|
+
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; }
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* footer 中的 links (支持分组, 最多支持 2 级)
|
|
32
|
+
* TODO: dark/light theme
|
|
33
|
+
*/
|
|
34
|
+
function Links(_ref) {
|
|
35
|
+
let {
|
|
36
|
+
links,
|
|
37
|
+
flowLayout
|
|
38
|
+
} = _ref,
|
|
39
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
40
|
+
|
|
41
|
+
const theme = (0, _useTheme.default)();
|
|
42
|
+
const [activeIndex, setActiveIndex] = (0, _react.useState)(-1);
|
|
43
|
+
|
|
44
|
+
if (!(links !== null && links !== void 0 && links.length)) {
|
|
45
|
+
return null;
|
|
46
|
+
} // 只要发现一项元素有子元素, 就认为是分组 (大字号突出 group title)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
const isGroupMode = links.some(item => {
|
|
50
|
+
var _item$items;
|
|
51
|
+
|
|
52
|
+
return (_item$items = item.items) === null || _item$items === void 0 ? void 0 : _item$items.length;
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
const renderItem = _ref2 => {
|
|
56
|
+
let {
|
|
57
|
+
label,
|
|
58
|
+
link,
|
|
59
|
+
render,
|
|
60
|
+
props
|
|
61
|
+
} = _ref2;
|
|
62
|
+
let result = label;
|
|
63
|
+
|
|
64
|
+
if (render) {
|
|
65
|
+
result = render({
|
|
66
|
+
label,
|
|
67
|
+
link,
|
|
68
|
+
props
|
|
69
|
+
});
|
|
70
|
+
} else if (link) {
|
|
71
|
+
result = /*#__PURE__*/_react.default.createElement("a", Object.assign({
|
|
72
|
+
href: link
|
|
73
|
+
}, props), label);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return result;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
return /*#__PURE__*/_react.default.createElement(Root, Object.assign({}, rest, {
|
|
80
|
+
className: (0, _clsx.default)(rest.className, {
|
|
81
|
+
'footer-links--grouped': isGroupMode,
|
|
82
|
+
'footer-links--flow': flowLayout
|
|
83
|
+
}),
|
|
84
|
+
$theme: theme
|
|
85
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
86
|
+
className: "footer-links-inner"
|
|
87
|
+
}, flowLayout && links.map((item, i) => /*#__PURE__*/_react.default.createElement("span", {
|
|
88
|
+
key: i,
|
|
89
|
+
className: "footer-links-item"
|
|
90
|
+
}, renderItem(item))), !flowLayout && links.map((item, i) => {
|
|
91
|
+
const {
|
|
92
|
+
items
|
|
93
|
+
} = item;
|
|
94
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
95
|
+
key: i,
|
|
96
|
+
className: (0, _clsx.default)('footer-links-group', {
|
|
97
|
+
'footer-links-group--active': i === activeIndex
|
|
98
|
+
}),
|
|
99
|
+
onClick: () => setActiveIndex(activeIndex === i ? -1 : i)
|
|
100
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
101
|
+
className: "footer-links-item"
|
|
102
|
+
}, renderItem(item)), !!(items !== null && items !== void 0 && items.length) && /*#__PURE__*/_react.default.createElement("div", {
|
|
103
|
+
className: "footer-links-sub"
|
|
104
|
+
}, items.map((child, j) => /*#__PURE__*/_react.default.createElement("span", {
|
|
105
|
+
key: j,
|
|
106
|
+
className: "footer-links-item"
|
|
107
|
+
}, renderItem(child)))));
|
|
108
|
+
})));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
Links.propTypes = {
|
|
112
|
+
links: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
113
|
+
label: _propTypes.default.string,
|
|
114
|
+
link: _propTypes.default.string,
|
|
115
|
+
render: _propTypes.default.func,
|
|
116
|
+
props: _propTypes.default.object
|
|
117
|
+
})),
|
|
118
|
+
// 流动布局, 简单的从左到右排列
|
|
119
|
+
flowLayout: _propTypes.default.bool
|
|
120
|
+
};
|
|
121
|
+
Links.defaultProps = {
|
|
122
|
+
links: [],
|
|
123
|
+
flowLayout: false
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const Root = _styledComponents.default.div.withConfig({
|
|
127
|
+
displayName: "links__Root",
|
|
128
|
+
componentId: "sc-19wysi2-0"
|
|
129
|
+
})(["overflow:hidden;color:", ";.footer-links-inner{display:flex;justify-content:space-between;margin:0 -8px;}.footer-links-group,.footer-links-sub{display:flex;flex-direction:column;}.footer-links-item{display:inline-block;padding:0 8px;font-size:14px;line-height:1.6;}.footer-links-group + .footer-links-group{margin-left:128px;}&.footer-links--grouped{.footer-links-group{> .footer-links-item{font-weight:bold;}.footer-links-sub{margin-top:8px;}}}a{color:inherit;text-decoration:none;&:hover{text-decoration:underline;}}&.footer-links--flow{display:inline-flex;.footer-links-inner{justify-content:center;flex-wrap:wrap;margin:0 -8px;.footer-links-item{padding:0 8px;}}}", "{.footer-links-group + .footer-links-group{margin-left:56px;}}", "{.footer-links-group + .footer-links-group{margin-left:40px;}}", "{.footer-links-inner{flex-direction:column;margin:0;}.footer-links-sub{display:none;}.footer-links-group{padding:12px 0;border-top:1px solid ", ";}.footer-links-group + .footer-links-group{margin-left:0;}.footer-links-group--active{.footer-links-sub{display:flex;flex-direction:row;flex-wrap:wrap;.footer-links-item{flex:0 0 50%;}}}.footer-links-item{padding:0;font-size:13px;}&.footer-links--grouped{.footer-links-group{> .footer-links-item{font-size:14px;}}}&.footer-links--flow{.footer-links-inner{flex-direction:row;}}}"], props => props.$theme.palette.grey[600], props => props.$theme.breakpoints.down('lg'), props => props.$theme.breakpoints.down('lg'), props => props.$theme.breakpoints.down('sm'), props => props.$theme.palette.grey[200]);
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = Row;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
13
|
+
|
|
14
|
+
var _useTheme = _interopRequireDefault(require("@mui/styles/useTheme"));
|
|
15
|
+
|
|
16
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
17
|
+
|
|
18
|
+
const _excluded = ["children", "autoCenter"];
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
26
|
+
function Row(_ref) {
|
|
27
|
+
let {
|
|
28
|
+
children,
|
|
29
|
+
autoCenter
|
|
30
|
+
} = _ref,
|
|
31
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
32
|
+
|
|
33
|
+
const theme = (0, _useTheme.default)();
|
|
34
|
+
|
|
35
|
+
if (!children) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement(RowRoot, Object.assign({}, rest, {
|
|
40
|
+
className: (0, _clsx.default)(rest.className, {
|
|
41
|
+
'footer-row-auto-center': autoCenter
|
|
42
|
+
}),
|
|
43
|
+
$theme: theme
|
|
44
|
+
}), children);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
Row.propTypes = {
|
|
48
|
+
children: _propTypes.default.any,
|
|
49
|
+
autoCenter: _propTypes.default.bool
|
|
50
|
+
};
|
|
51
|
+
Row.defaultProps = {
|
|
52
|
+
children: null,
|
|
53
|
+
autoCenter: false
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const RowRoot = _styledComponents.default.div.withConfig({
|
|
57
|
+
displayName: "row__RowRoot",
|
|
58
|
+
componentId: "sc-11upj1u-0"
|
|
59
|
+
})(["display:flex;justify-content:space-between;& + &{margin-top:24px;}&.footer-row-auto-center > *:only-child{margin:0 auto;}", "{align-items:stretch;flex-direction:column;gap:16px;> *{flex:1 0 100%;}&.footer-row-auto-center > *{margin:0 auto;}}"], props => props.$theme.breakpoints.down('md'));
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = SocialMedia;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
13
|
+
|
|
14
|
+
var _useTheme = _interopRequireDefault(require("@mui/styles/useTheme"));
|
|
15
|
+
|
|
16
|
+
var _Icon = _interopRequireDefault(require("../Icon"));
|
|
17
|
+
|
|
18
|
+
const _excluded = ["items"];
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
26
|
+
function SocialMedia(_ref) {
|
|
27
|
+
let {
|
|
28
|
+
items
|
|
29
|
+
} = _ref,
|
|
30
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
31
|
+
|
|
32
|
+
const theme = (0, _useTheme.default)();
|
|
33
|
+
|
|
34
|
+
if (!(items !== null && items !== void 0 && items.length)) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return /*#__PURE__*/_react.default.createElement(Root, rest, items.map((item, i) => {
|
|
39
|
+
return (
|
|
40
|
+
/*#__PURE__*/
|
|
41
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
42
|
+
_react.default.createElement("a", {
|
|
43
|
+
key: i,
|
|
44
|
+
href: item.link,
|
|
45
|
+
target: "_blank",
|
|
46
|
+
rel: "noreferrer"
|
|
47
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
48
|
+
icon: item.icon,
|
|
49
|
+
sx: {
|
|
50
|
+
bgcolor: theme.palette.grey[600],
|
|
51
|
+
color: '#fff'
|
|
52
|
+
},
|
|
53
|
+
size: 44,
|
|
54
|
+
variant: "rounded",
|
|
55
|
+
component: "span"
|
|
56
|
+
}))
|
|
57
|
+
);
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
SocialMedia.propTypes = {
|
|
62
|
+
items: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
63
|
+
// icon 对应 Icon#icon prop, 支持 iconify name 和 url 2 种形式:
|
|
64
|
+
icon: _propTypes.default.string,
|
|
65
|
+
link: _propTypes.default.string
|
|
66
|
+
}))
|
|
67
|
+
};
|
|
68
|
+
SocialMedia.defaultProps = {
|
|
69
|
+
items: null
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const Root = _styledComponents.default.div.withConfig({
|
|
73
|
+
displayName: "social-media__Root",
|
|
74
|
+
componentId: "sc-w4ariy-0"
|
|
75
|
+
})(["display:inline-flex;align-items:center;a + a{margin-left:12px;}"]);
|
package/lib/Header/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default =
|
|
6
|
+
exports.default = void 0;
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
@@ -13,6 +13,10 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
|
13
13
|
|
|
14
14
|
var _styles = require("@mui/material/styles");
|
|
15
15
|
|
|
16
|
+
var _reactErrorBoundary = require("react-error-boundary");
|
|
17
|
+
|
|
18
|
+
var _ErrorBoundary = require("@arcblock/ux/lib/ErrorBoundary");
|
|
19
|
+
|
|
16
20
|
var _Theme = require("@arcblock/ux/lib/Theme");
|
|
17
21
|
|
|
18
22
|
var _Header = require("@arcblock/ux/lib/Header");
|
|
@@ -205,4 +209,10 @@ const StyledUxHeader = (0, _styledComponents.default)(_Header.ResponsiveHeader).
|
|
|
205
209
|
$bgcolor
|
|
206
210
|
} = _ref3;
|
|
207
211
|
return "background-color: ".concat($bgcolor || '#fff', ";");
|
|
208
|
-
});
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
var _default = (0, _reactErrorBoundary.withErrorBoundary)(Header, {
|
|
215
|
+
FallbackComponent: _ErrorBoundary.ErrorFallback
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
exports.default = _default;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = Icon;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _Avatar = _interopRequireDefault(require("@mui/material/Avatar"));
|
|
13
|
+
|
|
14
|
+
require("@iconify/iconify");
|
|
15
|
+
|
|
16
|
+
var _utils = require("../utils");
|
|
17
|
+
|
|
18
|
+
const _excluded = ["icon", "size"];
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
23
|
+
|
|
24
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
25
|
+
|
|
26
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
27
|
+
|
|
28
|
+
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; }
|
|
29
|
+
|
|
30
|
+
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; }
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Icon 组件, 基于 mui Avatar 组件扩展对 iconify 的支持
|
|
34
|
+
*/
|
|
35
|
+
function Icon(_ref) {
|
|
36
|
+
let {
|
|
37
|
+
icon,
|
|
38
|
+
size
|
|
39
|
+
} = _ref,
|
|
40
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
41
|
+
|
|
42
|
+
const sx = _objectSpread({}, rest.sx);
|
|
43
|
+
|
|
44
|
+
if (size) {
|
|
45
|
+
sx.width = size;
|
|
46
|
+
sx.height = size;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if ((0, _utils.isUrl)(icon)) {
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement(_Avatar.default, Object.assign({}, rest, {
|
|
51
|
+
src: icon,
|
|
52
|
+
sx: sx
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (icon) {
|
|
57
|
+
// y = 0.6 * x + 4
|
|
58
|
+
const iconHeight = size ? 0.6 * size + 4 : 0;
|
|
59
|
+
return /*#__PURE__*/_react.default.createElement(_Avatar.default, Object.assign({}, rest, {
|
|
60
|
+
sx: sx
|
|
61
|
+
}), /*#__PURE__*/_react.default.createElement("span", Object.assign({
|
|
62
|
+
className: "iconify",
|
|
63
|
+
"data-icon": icon
|
|
64
|
+
}, iconHeight && {
|
|
65
|
+
'data-height': iconHeight
|
|
66
|
+
})));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
Icon.propTypes = {
|
|
73
|
+
// icon 支持 2 种形式:
|
|
74
|
+
// 1. iconify icon name: <prefix>:<name>
|
|
75
|
+
// 2. url
|
|
76
|
+
icon: _propTypes.default.string.isRequired,
|
|
77
|
+
size: _propTypes.default.number
|
|
78
|
+
};
|
|
79
|
+
Icon.defaultProps = {
|
|
80
|
+
size: null
|
|
81
|
+
};
|
package/lib/utils.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.mapRecursive = exports.isUrl = void 0;
|
|
7
|
+
|
|
8
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
9
|
+
|
|
10
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
11
|
+
|
|
12
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
13
|
+
|
|
14
|
+
const mapRecursive = function mapRecursive(array, fn) {
|
|
15
|
+
let childrenKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'children';
|
|
16
|
+
return array.map(item => {
|
|
17
|
+
if (Array.isArray(item[childrenKey])) {
|
|
18
|
+
return fn(_objectSpread(_objectSpread({}, item), {}, {
|
|
19
|
+
[childrenKey]: mapRecursive(item[childrenKey], fn, childrenKey)
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return fn(item);
|
|
24
|
+
});
|
|
25
|
+
}; // "http://", "https://", "//" 开头的 3 种情况
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
exports.mapRecursive = mapRecursive;
|
|
29
|
+
|
|
30
|
+
const isUrl = str => {
|
|
31
|
+
return /^(https?:)?\/\//.test(str);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
exports.isUrl = isUrl;
|