@yueglobal/ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +148 -0
  3. package/dist/assets/gw-logo.png +0 -0
  4. package/dist/assets/hs-logo.png +0 -0
  5. package/dist/assets/hs-wx.png +0 -0
  6. package/dist/assets/platform-logo.png +0 -0
  7. package/dist/assets/yldm-applet.png +0 -0
  8. package/dist/assets/ylqq-title.png +0 -0
  9. package/dist/assets/yxh-applet.png +0 -0
  10. package/dist/components/svg-icon/declaration.svg +23 -0
  11. package/dist/components/svg-icon/expo.svg +23 -0
  12. package/dist/components/svg-icon/home.svg +13 -0
  13. package/dist/components/svg-icon/hwc.svg +20 -0
  14. package/dist/components/svg-icon/index.d.ts +20 -0
  15. package/dist/components/svg-icon/index.js +95 -0
  16. package/dist/components/svg-icon/insurance.svg +14 -0
  17. package/dist/components/svg-icon/law.svg +23 -0
  18. package/dist/components/svg-icon/location.svg +9 -0
  19. package/dist/components/svg-icon/selection.svg +16 -0
  20. package/dist/components/svg-icon/single-window.svg +8 -0
  21. package/dist/components/svg-icon/taxation.svg +13 -0
  22. package/dist/components/svg-icon/trade-data.svg +18 -0
  23. package/dist/components/svg-icon/training.svg +17 -0
  24. package/dist/index.d.ts +4 -0
  25. package/dist/index.js +2 -0
  26. package/dist/yue-page-footer/data/privacy-policy.d.ts +3 -0
  27. package/dist/yue-page-footer/data/privacy-policy.js +97 -0
  28. package/dist/yue-page-footer/data/terms-of-service.d.ts +3 -0
  29. package/dist/yue-page-footer/data/terms-of-service.js +129 -0
  30. package/dist/yue-page-footer/index.d.ts +7 -0
  31. package/dist/yue-page-footer/index.js +93 -0
  32. package/dist/yue-page-footer/index.less +168 -0
  33. package/dist/yue-page-footer/info-modal/index.d.ts +6 -0
  34. package/dist/yue-page-footer/info-modal/index.js +56 -0
  35. package/dist/yue-page-header/breadcrumb/index.d.ts +5 -0
  36. package/dist/yue-page-header/breadcrumb/index.js +82 -0
  37. package/dist/yue-page-header/first-menus/index.d.ts +7 -0
  38. package/dist/yue-page-header/first-menus/index.js +115 -0
  39. package/dist/yue-page-header/first-menus/index.less +86 -0
  40. package/dist/yue-page-header/helper.d.ts +71 -0
  41. package/dist/yue-page-header/helper.js +326 -0
  42. package/dist/yue-page-header/index.d.ts +23 -0
  43. package/dist/yue-page-header/index.js +75 -0
  44. package/dist/yue-page-header/index.less +43 -0
  45. package/dist/yue-page-header/right-content/index.d.ts +10 -0
  46. package/dist/yue-page-header/right-content/index.js +50 -0
  47. package/dist/yue-page-header/right-content/index.less +35 -0
  48. package/dist/yue-page-header/second-menus/index.d.ts +8 -0
  49. package/dist/yue-page-header/second-menus/index.js +132 -0
  50. package/dist/yue-page-header/second-menus/index.less +161 -0
  51. package/package.json +67 -0
@@ -0,0 +1,132 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import { ConfigProvider, Menu } from 'antd';
8
+ import React, { memo, useEffect, useMemo, useState } from 'react';
9
+ import Breadcrumb from "../breadcrumb";
10
+ import { flattenMenuList, flattenTreeList } from "../helper";
11
+ import "./index.less";
12
+ var Index = function Index(_ref) {
13
+ var width = _ref.width,
14
+ pageTitle = _ref.pageTitle,
15
+ pageIcon = _ref.pageIcon,
16
+ breadcrumbs = _ref.breadcrumbs,
17
+ routes = _ref.routes,
18
+ menuItems = _ref.menuItems,
19
+ pathname = _ref.pathname,
20
+ visible = _ref.visible,
21
+ onRouteChange = _ref.onRouteChange;
22
+ var _useState = useState(),
23
+ _useState2 = _slicedToArray(_useState, 2),
24
+ selectedKeys = _useState2[0],
25
+ setSelectedKeys = _useState2[1];
26
+ useEffect(function () {
27
+ if (pathname) setSelectedKeys([pathname]);
28
+ }, [pathname]);
29
+
30
+ // 应用数据
31
+ var moduleData = useMemo(function () {
32
+ var title = pageTitle;
33
+ var icon = pageIcon;
34
+ if (!title || !icon) {
35
+ var menuList = flattenMenuList(true);
36
+ var _window$location = window.location,
37
+ origin = _window$location.origin,
38
+ _pathname = _window$location.pathname;
39
+ var url = origin + _pathname;
40
+ var current = menuList.find(function (m) {
41
+ return !!(m !== null && m !== void 0 && m.key) && url.startsWith("".concat(m.key));
42
+ });
43
+ if (!current && pageTitle) {
44
+ current = menuList.find(function (m) {
45
+ return (m === null || m === void 0 ? void 0 : m.label) === pageTitle;
46
+ });
47
+ }
48
+ if (current) {
49
+ if (!title) {
50
+ title = current.label;
51
+ }
52
+ if (!icon) {
53
+ icon = current.icon;
54
+ }
55
+ }
56
+ }
57
+ return {
58
+ title: title,
59
+ icon: icon
60
+ };
61
+ }, [pageTitle, pageIcon]);
62
+ var onMenuClick = function onMenuClick(_ref2) {
63
+ var key = _ref2.key,
64
+ selectedKeys = _ref2.selectedKeys;
65
+ setSelectedKeys(selectedKeys);
66
+ if (onRouteChange && menuItems !== null && menuItems !== void 0 && menuItems.length) {
67
+ var menuList = flattenTreeList(menuItems);
68
+ var current = menuList.find(function (m) {
69
+ return m.key === key;
70
+ });
71
+ var value = {
72
+ key: key
73
+ };
74
+ if (current !== null && current !== void 0 && current.label) {
75
+ value.label = current.label;
76
+ }
77
+ onRouteChange === null || onRouteChange === void 0 || onRouteChange(value);
78
+ }
79
+ };
80
+ return /*#__PURE__*/React.createElement("div", {
81
+ className: 'yue-page-header-second-menu' + (visible ? ' hidden' : '')
82
+ }, /*#__PURE__*/React.createElement("div", {
83
+ className: "yue-flex wrapper",
84
+ style: {
85
+ width: width
86
+ }
87
+ }, /*#__PURE__*/React.createElement(ConfigProvider, {
88
+ theme: {
89
+ components: {
90
+ Menu: {
91
+ activeBarHeight: 0,
92
+ itemPaddingInline: 0,
93
+ itemColor: '#fff',
94
+ dropdownWidth: '100%',
95
+ horizontalItemSelectedColor: '#17D8B0',
96
+ subMenuItemSelectedColor: '#17D8B0',
97
+ itemHoverColor: '#fff'
98
+ },
99
+ Breadcrumb: {
100
+ itemColor: '#fff',
101
+ lastItemColor: 'rgba(255,255,255,0.9)',
102
+ separatorColor: 'rgba(255,255,255,0.65)',
103
+ separatorMargin: 6
104
+ }
105
+ }
106
+ }
107
+ }, /*#__PURE__*/React.createElement("div", {
108
+ className: "yue-flex left"
109
+ }, /*#__PURE__*/React.createElement("div", {
110
+ className: "yue-flex module-info"
111
+ }, !!moduleData.icon && /*#__PURE__*/React.createElement("span", {
112
+ className: "module-icon"
113
+ }, moduleData.icon), !!moduleData.title && /*#__PURE__*/React.createElement("span", {
114
+ className: "module-title"
115
+ }, moduleData.title)), /*#__PURE__*/React.createElement("div", {
116
+ className: "vr"
117
+ }), /*#__PURE__*/React.createElement("div", {
118
+ className: "menus"
119
+ }, /*#__PURE__*/React.createElement(Menu, {
120
+ items: menuItems,
121
+ mode: "horizontal",
122
+ rootClassName: "yue-second-menu-bar",
123
+ onSelect: onMenuClick,
124
+ selectedKeys: selectedKeys
125
+ }))), /*#__PURE__*/React.createElement(Breadcrumb, {
126
+ breadcrumbs: breadcrumbs,
127
+ routes: routes,
128
+ pathname: pathname,
129
+ onRouteChange: onRouteChange
130
+ }))));
131
+ };
132
+ export default /*#__PURE__*/memo(Index);
@@ -0,0 +1,161 @@
1
+ .yue-page-header-second-menu {
2
+ height: 60px;
3
+ background: linear-gradient(90deg, #17f1a1, #1a4bff);
4
+ opacity: 1;
5
+ transition: opacity 0.2s ease-in-out;
6
+
7
+ &.hidden {
8
+ //opacity: 0;
9
+ }
10
+
11
+ .wrapper {
12
+ margin: 0 auto;
13
+ justify-content: space-between;
14
+ height: 100%;
15
+ color: #fff;
16
+ max-width: 100%;
17
+ }
18
+
19
+ .left {
20
+ gap: 20px;
21
+ height: 100%;
22
+ }
23
+
24
+ .module-info {
25
+ gap: 14px;
26
+ margin-right: 10px;
27
+ flex-shrink: 0;
28
+ }
29
+
30
+ .module-icon {
31
+ font-size: 27px;
32
+ line-height: 0;
33
+ }
34
+
35
+ .module-title {
36
+ font-size: 24px;
37
+ font-weight: bold;
38
+ }
39
+
40
+ .vr {
41
+ width: 1px;
42
+ height: 28px;
43
+ background-color: rgba(255, 255, 255, 85%);
44
+ flex-shrink: 0;
45
+ }
46
+
47
+ .menus {
48
+ //max-width: 82%;
49
+ height: 100%;
50
+ padding-block: 1px;
51
+ flex: 1 1 0%;
52
+ min-width: 0;
53
+ }
54
+
55
+ .breadcrumb {
56
+ gap: 12px;
57
+ flex-shrink: 0;
58
+
59
+ a {
60
+ height: max-content;
61
+ color: #fff;
62
+
63
+ &:hover {
64
+ color: #fff;
65
+ background-color: transparent;
66
+ }
67
+ }
68
+ }
69
+ }
70
+
71
+ .yue-second-menu-bar {
72
+ &.ant-menu-root {
73
+ background-color: transparent;
74
+ font-size: 18px;
75
+ height: 100%;
76
+ border-bottom: none;
77
+ gap: 4px;
78
+
79
+ & > li {
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: center;
83
+ }
84
+
85
+ .ant-menu-submenu-title {
86
+ height: 100%;
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ }
91
+
92
+ .ant-menu-title-content {
93
+ height: 34px;
94
+ line-height: 32px;
95
+ border-radius: 16px;
96
+ padding-inline: 16px;
97
+ }
98
+
99
+ .ant-menu-submenu-active,
100
+ .ant-menu-item-active {
101
+ .ant-menu-title-content {
102
+ background-color: rgba(255, 255, 255, 20%);
103
+ }
104
+ }
105
+
106
+ .ant-menu-submenu-selected,
107
+ .ant-menu-item-selected {
108
+ .ant-menu-title-content {
109
+ background-color: #fff;
110
+ }
111
+ }
112
+ }
113
+
114
+ &.ant-menu-submenu-popup {
115
+ left: 0 !important;
116
+ padding: 0;
117
+ font-size: 18px;
118
+ background-color: rgba(0, 0, 0, 45%);
119
+ border-radius: 0;
120
+ width: 100%;
121
+
122
+ .ant-menu-sub {
123
+ display: flex;
124
+ justify-content: center;
125
+ background-color: transparent;
126
+ border-radius: 0;
127
+ box-shadow: none;
128
+ }
129
+
130
+ .ant-menu-item {
131
+ width: max-content;
132
+ flex: unset;
133
+ color: #fff;
134
+ margin: 0;
135
+ border-radius: 0;
136
+ height: 60px;
137
+ line-height: 30px;
138
+ display: flex;
139
+ align-items: center;
140
+ padding-inline: 25px 18px;
141
+ flex-shrink: 0;
142
+ position: relative;
143
+
144
+ &::before {
145
+ content: '';
146
+ position: absolute;
147
+ left: 10px;
148
+ top: 50%;
149
+ transform: translateY(-50%);
150
+ width: 4px;
151
+ height: 4px;
152
+ border-radius: 50%;
153
+ background-color: rgba(255, 255, 255, 85%);
154
+ }
155
+ }
156
+
157
+ .ant-menu-item-selected {
158
+ background-color: rgba(0, 0, 0, 40%);
159
+ }
160
+ }
161
+ }
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@yueglobal/ui",
3
+ "version": "1.0.0",
4
+ "description": "粤链全球组件库",
5
+ "license": "MIT",
6
+ "module": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "scripts": {
12
+ "build": "father build",
13
+ "prepare": "husky install && dumi setup",
14
+ "prepublishOnly": "father doctor && npm run build",
15
+ "start": "dumi dev"
16
+ },
17
+ "commitlint": {
18
+ "extends": [
19
+ "@commitlint/config-conventional"
20
+ ]
21
+ },
22
+ "lint-staged": {
23
+ "*.{md,json}": [
24
+ "prettier --write --no-error-on-unmatched-pattern"
25
+ ],
26
+ "*.{css,less}": [
27
+ "stylelint --fix",
28
+ "prettier --write"
29
+ ],
30
+ "*.{js,jsx}": [
31
+ "eslint --fix",
32
+ "prettier --write"
33
+ ],
34
+ "*.{ts,tsx}": [
35
+ "eslint --fix",
36
+ "prettier --parser=typescript --write"
37
+ ]
38
+ },
39
+ "devDependencies": {
40
+ "@commitlint/cli": "^17.1.2",
41
+ "@commitlint/config-conventional": "^17.1.0",
42
+ "@types/react": "^18.0.0",
43
+ "@types/react-dom": "^18.0.0",
44
+ "@umijs/lint": "^4.0.0",
45
+ "antd": "^5.11.2",
46
+ "dumi": "^2.4.13",
47
+ "eslint": "^8.23.0",
48
+ "father": "^4.1.0",
49
+ "husky": "^8.0.1",
50
+ "lint-staged": "^13.0.3",
51
+ "prettier": "^2.7.1",
52
+ "prettier-plugin-organize-imports": "^3.0.0",
53
+ "prettier-plugin-packagejson": "^2.2.18",
54
+ "react": "^18.0.0",
55
+ "react-dom": "^18.0.0",
56
+ "stylelint": "^14.9.1"
57
+ },
58
+ "peerDependencies": {
59
+ "antd": ">=4.23.0 || >=5.0.0",
60
+ "react": ">=16.9.0",
61
+ "react-dom": ">=16.9.0"
62
+ },
63
+ "publishConfig": {
64
+ "access": "public"
65
+ },
66
+ "authors": []
67
+ }