beer-assembly-biz 1.1.1-alpha.8 → 1.1.2-alpha.1
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/AppLayout.d.ts +13 -5
- package/AppLayout.js +27 -13
- package/BackPageContainer.d.ts +7 -0
- package/BackPageContainer.js +33 -0
- package/InlineContainer.d.ts +6 -0
- package/InlineContainer.js +28 -0
- package/MediaModals.d.ts +32 -0
- package/MediaModals.js +372 -0
- package/MyPageContainer.d.ts +16 -0
- package/MyPageContainer.js +71 -0
- package/Permission.d.ts +8 -0
- package/Permission.js +7 -0
- package/Upgrade.d.ts +7 -0
- package/Upgrade.js +46 -0
- package/auth/AuthPassword.d.ts +5 -0
- package/auth/AuthPassword.js +11 -5
- package/auth/AuthStyle01.d.ts +19 -1
- package/auth/AuthStyle01.js +9 -4
- package/auth/AuthStyle02.d.ts +19 -1
- package/auth/AuthStyle02.js +9 -4
- package/content/ParentContext.d.ts +8 -0
- package/content/ParentContext.js +9 -0
- package/content/PermissionContext.d.ts +4 -0
- package/content/PermissionContext.js +12 -0
- package/icon/directory.svg +11 -8
- package/icon/empty.svg +40 -40
- package/icon/media.png +0 -0
- package/icon/volc.svg +96 -0
- package/package.json +6 -6
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import { css } from '@emotion/css';
|
|
3
|
+
import { PageContainer } from '@ant-design/pro-components';
|
|
4
|
+
import { message, Modal, Tabs } from 'antd';
|
|
5
|
+
import { Outlet, useLocation } from 'react-router-dom';
|
|
6
|
+
import ParentContext from './content/ParentContext';
|
|
7
|
+
const pathPartition = (sessionStorage.getItem('DETAIL_PARTITION') || '') === ''
|
|
8
|
+
? ['CREATE', 'EDIT', 'COPY', 'AUDIT', 'PREVIEW', 'DETAIL', 'READ', 'IN', 'INPUT', 'OUTPUT']
|
|
9
|
+
: JSON.parse(sessionStorage.getItem('DETAIL_PARTITION') || '[]');
|
|
10
|
+
export const Component = (props) => {
|
|
11
|
+
const location = useLocation();
|
|
12
|
+
const [messageApi, contextHolder] = message.useMessage();
|
|
13
|
+
const [modal, contextModalHolder] = Modal.useModal();
|
|
14
|
+
const [isSubpage, setIsSubpage] = useState(false);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
const partition = pathPartition.find(path => {
|
|
17
|
+
return location.pathname.toUpperCase()
|
|
18
|
+
.indexOf(`/${path}/`) > -1;
|
|
19
|
+
});
|
|
20
|
+
if (partition !== undefined) {
|
|
21
|
+
setIsSubpage(true);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
setIsSubpage(false);
|
|
25
|
+
}
|
|
26
|
+
}, [location]);
|
|
27
|
+
return React.createElement(React.Fragment, null,
|
|
28
|
+
React.createElement(ParentContext.Provider, { value: {
|
|
29
|
+
messageApi,
|
|
30
|
+
modal,
|
|
31
|
+
active: () => {
|
|
32
|
+
props?.onRefresh?.();
|
|
33
|
+
}
|
|
34
|
+
} },
|
|
35
|
+
contextHolder,
|
|
36
|
+
contextModalHolder,
|
|
37
|
+
React.createElement(PageContainer, { style: { display: isSubpage ? 'none' : 'block' }, className: css `
|
|
38
|
+
.ant-page-header-heading {
|
|
39
|
+
padding-block-start: 0 !important;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.ant-page-header-heading-title {
|
|
43
|
+
font-size: 15px;
|
|
44
|
+
line-height: 1.5;
|
|
45
|
+
color: #333;
|
|
46
|
+
}
|
|
47
|
+
`, header: {
|
|
48
|
+
style: {
|
|
49
|
+
background: '#fff',
|
|
50
|
+
padding: (props?.tabList?.length || 0) <= 0 ? '10px 24px 10px 24px' : '10px 24px 2px 24px',
|
|
51
|
+
borderBottom: (props?.tabList?.length || 0) <= 0 ? '1px solid rgba(0, 0, 0, 0.06)' : undefined
|
|
52
|
+
}
|
|
53
|
+
}, title: props.title, ghost: true, childrenContentStyle: {
|
|
54
|
+
padding: '0'
|
|
55
|
+
} },
|
|
56
|
+
(props?.tabList?.length || 0) > 0 ? React.createElement(React.Fragment, null,
|
|
57
|
+
React.createElement(Tabs, { size: "small", items: props?.tabList, className: css `
|
|
58
|
+
background: #fff;
|
|
59
|
+
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
|
|
60
|
+
|
|
61
|
+
.ant-tabs-nav::before {
|
|
62
|
+
display: none;
|
|
63
|
+
}
|
|
64
|
+
`, tabBarStyle: { margin: '0 24px' }, onChange: (e) => props?.onTabChange?.(e) })) : undefined,
|
|
65
|
+
props?.banner,
|
|
66
|
+
React.createElement("div", { className: css `
|
|
67
|
+
padding: 12px 16px;
|
|
68
|
+
` }, props.children)),
|
|
69
|
+
React.createElement(Outlet, null)));
|
|
70
|
+
};
|
|
71
|
+
export default Component;
|
package/Permission.d.ts
ADDED
package/Permission.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import PermissionContext from './content/PermissionContext';
|
|
3
|
+
export const Component = (props) => {
|
|
4
|
+
const { isPermission } = useContext(PermissionContext);
|
|
5
|
+
return React.createElement(React.Fragment, null, isPermission(props.domain, props.permission) ? props?.children : undefined);
|
|
6
|
+
};
|
|
7
|
+
export default Component;
|
package/Upgrade.d.ts
ADDED
package/Upgrade.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
|
+
import { Modal } from 'antd';
|
|
3
|
+
const TIME_KEY = 'VERSION_TIME';
|
|
4
|
+
const App = (props) => {
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
// 每5分钟执行一次
|
|
7
|
+
setTimeout(async () => {
|
|
8
|
+
// 读取缓存的上次弹出更新时间
|
|
9
|
+
const lastTime = Number(localStorage.getItem(TIME_KEY) || 0);
|
|
10
|
+
if (Number.isNaN(lastTime)) {
|
|
11
|
+
localStorage.removeItem(TIME_KEY);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
// 30分钟执行一次
|
|
15
|
+
if (new Date().getTime() <= lastTime + 1800000) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
// 更新刷新时间
|
|
19
|
+
localStorage.setItem(TIME_KEY, new Date().getTime()
|
|
20
|
+
.toString());
|
|
21
|
+
const newVersion = await props.request?.();
|
|
22
|
+
if (newVersion === undefined || newVersion === '') {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (newVersion === props.localVersion) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// 弹出提示框
|
|
29
|
+
Modal.confirm({
|
|
30
|
+
title: '版本更新提示',
|
|
31
|
+
content: React.createElement(React.Fragment, null,
|
|
32
|
+
React.createElement("p", { style: {
|
|
33
|
+
fontSize: '15px',
|
|
34
|
+
lineHeight: '26px'
|
|
35
|
+
} }, "\u60A8\u5DF2\u7ECF\u957F\u65F6\u95F4\u672A\u4F7F\u7528\u6B64\u9875\u9762\uFF0C\u5728\u6B64\u671F\u95F4\u5E73\u53F0\u6709\u8FC7\u66F4\u65B0\uFF0C\u5982\u60A8\u6B64\u65F6\u5728\u9875\u9762\u4E2D\u6CA1\u6709\u586B\u5199\u76F8\u5173\u4FE1\u606F\u7B49\u64CD\u4F5C\uFF0C\u8BF7\u70B9\u51FB\u5237\u65B0\u9875\u9762\u4F7F\u7528\u6700\u65B0\u7248\u672C\uFF01")),
|
|
36
|
+
okText: '确定',
|
|
37
|
+
cancelText: '取消',
|
|
38
|
+
onOk: () => {
|
|
39
|
+
window.location.reload();
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}, 5000);
|
|
43
|
+
}, []);
|
|
44
|
+
return React.createElement(React.Fragment, null);
|
|
45
|
+
};
|
|
46
|
+
export default App;
|
package/auth/AuthPassword.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { Slider, SliderCodeToken } from 'beer-assembly/SliderCode';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export declare type AuthPasswordProps = {
|
|
4
|
+
/**
|
|
5
|
+
* 是否启用企业登录.
|
|
6
|
+
*/
|
|
7
|
+
companyStatus?: boolean;
|
|
4
8
|
/**
|
|
5
9
|
* HTML 协议.
|
|
6
10
|
*/
|
|
@@ -22,6 +26,7 @@ export declare type AuthPasswordProps = {
|
|
|
22
26
|
requestLogin?: (code: string | undefined, slider: Slider | undefined, params: {
|
|
23
27
|
username: string;
|
|
24
28
|
password: string;
|
|
29
|
+
companyName: string | undefined;
|
|
25
30
|
}) => Promise<boolean>;
|
|
26
31
|
/**
|
|
27
32
|
* 发出错误消息
|
package/auth/AuthPassword.js
CHANGED
|
@@ -33,14 +33,20 @@ const App = (props) => {
|
|
|
33
33
|
};
|
|
34
34
|
const onConfirmLogin = async (code, slider) => {
|
|
35
35
|
const params = form.getFieldsValue();
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
const func = props?.requestLogin;
|
|
37
|
+
if (func !== undefined) {
|
|
38
|
+
const result = await func(code, slider, params);
|
|
39
|
+
if (!result) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
40
42
|
}
|
|
41
|
-
|
|
43
|
+
// 如果处理成功, 关闭Loading
|
|
44
|
+
setIsLoading(false);
|
|
45
|
+
return true;
|
|
42
46
|
};
|
|
43
47
|
return React.createElement(Form, { form: form },
|
|
48
|
+
props?.companyStatus ? React.createElement(Form.Item, { name: "companyName", style: { marginBottom: 12 } },
|
|
49
|
+
React.createElement(Input, { className: "companyName", maxLength: 32, placeholder: "\u8BF7\u8F93\u5165\u4F01\u4E1A\u540D\u79F0", style: { height: 36 } })) : undefined,
|
|
44
50
|
React.createElement(Form.Item, { name: "username", style: { marginBottom: 12 } },
|
|
45
51
|
React.createElement(Input, { className: "input", maxLength: 32, placeholder: "\u8BF7\u8F93\u5165\u8D26\u53F7", style: { height: 36 } })),
|
|
46
52
|
React.createElement(Form.Item, { name: "password", style: { marginBottom: 12 } },
|
package/auth/AuthStyle01.d.ts
CHANGED
|
@@ -8,7 +8,16 @@ declare type AuthStyleProps = {
|
|
|
8
8
|
/**
|
|
9
9
|
* Logo 图片.
|
|
10
10
|
*/
|
|
11
|
-
logo:
|
|
11
|
+
logo: {
|
|
12
|
+
/**
|
|
13
|
+
* 路径
|
|
14
|
+
*/
|
|
15
|
+
path: string;
|
|
16
|
+
/**
|
|
17
|
+
* 高度
|
|
18
|
+
*/
|
|
19
|
+
height?: number;
|
|
20
|
+
};
|
|
12
21
|
/**
|
|
13
22
|
* 侧边栏图片
|
|
14
23
|
*/
|
|
@@ -21,6 +30,10 @@ declare type AuthStyleProps = {
|
|
|
21
30
|
* HTML 协议.
|
|
22
31
|
*/
|
|
23
32
|
protocol?: string;
|
|
33
|
+
/**
|
|
34
|
+
* 企业状态.
|
|
35
|
+
*/
|
|
36
|
+
companyStatus?: boolean;
|
|
24
37
|
/**
|
|
25
38
|
* HTML 关于.
|
|
26
39
|
*/
|
|
@@ -38,6 +51,7 @@ declare type AuthStyleProps = {
|
|
|
38
51
|
* @param params 参数
|
|
39
52
|
*/
|
|
40
53
|
systemLogin?: (params: {
|
|
54
|
+
companyName: string;
|
|
41
55
|
account: string;
|
|
42
56
|
password: string;
|
|
43
57
|
authCode: string;
|
|
@@ -48,6 +62,10 @@ declare type AuthStyleProps = {
|
|
|
48
62
|
code: string;
|
|
49
63
|
data?: {};
|
|
50
64
|
}>;
|
|
65
|
+
/**
|
|
66
|
+
* 登录处理.
|
|
67
|
+
*/
|
|
68
|
+
login?: (userInfo: any) => void;
|
|
51
69
|
};
|
|
52
70
|
declare const App: FC<AuthStyleProps>;
|
|
53
71
|
export default App;
|
package/auth/AuthStyle01.js
CHANGED
|
@@ -11,6 +11,7 @@ const App = (props) => {
|
|
|
11
11
|
const result = await props?.systemLogin?.({
|
|
12
12
|
account: params.username.trim(),
|
|
13
13
|
password: params.password.trim(),
|
|
14
|
+
companyName: params.companyName?.trim() || '',
|
|
14
15
|
authCode: slider?.authCode || '',
|
|
15
16
|
code: code || ''
|
|
16
17
|
});
|
|
@@ -20,7 +21,11 @@ const App = (props) => {
|
|
|
20
21
|
}
|
|
21
22
|
if (result.success) {
|
|
22
23
|
setErrorMessage('');
|
|
23
|
-
|
|
24
|
+
if (props?.login === undefined) {
|
|
25
|
+
Session.login(result.data);
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
props?.login?.(result.data);
|
|
24
29
|
}
|
|
25
30
|
else {
|
|
26
31
|
// 如果是1201 则是重新加载验证码
|
|
@@ -66,10 +71,10 @@ const App = (props) => {
|
|
|
66
71
|
padding: 30px 40px 0 40px;
|
|
67
72
|
` },
|
|
68
73
|
React.createElement("img", { className: css `
|
|
69
|
-
height:
|
|
74
|
+
height: ${props?.logo?.height || 42}px;
|
|
70
75
|
margin: 0 auto 0 auto;
|
|
71
76
|
display: block;
|
|
72
|
-
`, src: props?.logo, alt: "" }),
|
|
77
|
+
`, src: props?.logo?.path, alt: "" }),
|
|
73
78
|
React.createElement("p", { className: css `
|
|
74
79
|
font-size: 13px;
|
|
75
80
|
margin: 6px auto 10px auto;
|
|
@@ -90,7 +95,7 @@ const App = (props) => {
|
|
|
90
95
|
padding: '6px 10px',
|
|
91
96
|
fontWeight: '500'
|
|
92
97
|
}, message: errorMessage, type: "error", showIcon: true }) : undefined,
|
|
93
|
-
React.createElement(AuthPassword, { protocol: props?.protocol, requestSlider: props?.requestSlider, sliderToken: props?.sliderToken, requestLogin: onConfirmLogin, onErrorMessage: (message) => setErrorMessage(message) }))
|
|
98
|
+
React.createElement(AuthPassword, { companyStatus: props?.companyStatus, protocol: props?.protocol, requestSlider: props?.requestSlider, sliderToken: props?.sliderToken, requestLogin: onConfirmLogin, onErrorMessage: (message) => setErrorMessage(message) }))
|
|
94
99
|
}
|
|
95
100
|
] })),
|
|
96
101
|
React.createElement("p", { className: css `
|
package/auth/AuthStyle02.d.ts
CHANGED
|
@@ -8,11 +8,24 @@ declare type AuthStyleProps = {
|
|
|
8
8
|
/**
|
|
9
9
|
* Logo 图片.
|
|
10
10
|
*/
|
|
11
|
-
logo:
|
|
11
|
+
logo: {
|
|
12
|
+
/**
|
|
13
|
+
* 路径
|
|
14
|
+
*/
|
|
15
|
+
path: string;
|
|
16
|
+
/**
|
|
17
|
+
* 高度
|
|
18
|
+
*/
|
|
19
|
+
height?: number;
|
|
20
|
+
};
|
|
12
21
|
/**
|
|
13
22
|
* 描述.
|
|
14
23
|
*/
|
|
15
24
|
description?: string;
|
|
25
|
+
/**
|
|
26
|
+
* 是否允许企业
|
|
27
|
+
*/
|
|
28
|
+
companyStatus?: boolean;
|
|
16
29
|
/**
|
|
17
30
|
* HTML 协议.
|
|
18
31
|
*/
|
|
@@ -34,6 +47,7 @@ declare type AuthStyleProps = {
|
|
|
34
47
|
* @param params 参数
|
|
35
48
|
*/
|
|
36
49
|
systemLogin?: (params: {
|
|
50
|
+
companyName: string;
|
|
37
51
|
account: string;
|
|
38
52
|
password: string;
|
|
39
53
|
authCode: string;
|
|
@@ -44,6 +58,10 @@ declare type AuthStyleProps = {
|
|
|
44
58
|
code: string;
|
|
45
59
|
data?: {};
|
|
46
60
|
}>;
|
|
61
|
+
/**
|
|
62
|
+
* 登录处理.
|
|
63
|
+
*/
|
|
64
|
+
login?: (userInfo: any) => void;
|
|
47
65
|
};
|
|
48
66
|
declare const App: FC<AuthStyleProps>;
|
|
49
67
|
export default App;
|
package/auth/AuthStyle02.js
CHANGED
|
@@ -11,6 +11,7 @@ const App = (props) => {
|
|
|
11
11
|
const result = await props?.systemLogin?.({
|
|
12
12
|
account: params.username.trim(),
|
|
13
13
|
password: params.password.trim(),
|
|
14
|
+
companyName: params?.companyName?.trim() || '',
|
|
14
15
|
authCode: slider?.authCode || '',
|
|
15
16
|
code: code || ''
|
|
16
17
|
});
|
|
@@ -20,7 +21,11 @@ const App = (props) => {
|
|
|
20
21
|
}
|
|
21
22
|
if (result.success) {
|
|
22
23
|
setErrorMessage('');
|
|
23
|
-
|
|
24
|
+
if (props?.login === undefined) {
|
|
25
|
+
Session.login(result.data);
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
props?.login?.(result.data);
|
|
24
29
|
}
|
|
25
30
|
else {
|
|
26
31
|
// 如果是1201 则是重新加载验证码
|
|
@@ -59,10 +64,10 @@ const App = (props) => {
|
|
|
59
64
|
padding: 30px 40px 0 40px;
|
|
60
65
|
` },
|
|
61
66
|
React.createElement("img", { className: css `
|
|
62
|
-
height:
|
|
67
|
+
height: ${props?.logo?.height || 42}px;
|
|
63
68
|
margin: 0 auto 0 auto;
|
|
64
69
|
display: block;
|
|
65
|
-
`, src: props
|
|
70
|
+
`, src: props?.logo?.path, alt: "" }),
|
|
66
71
|
React.createElement("p", { className: css `
|
|
67
72
|
font-size: 13px;
|
|
68
73
|
margin: 6px auto 10px auto;
|
|
@@ -83,7 +88,7 @@ const App = (props) => {
|
|
|
83
88
|
padding: '6px 10px',
|
|
84
89
|
fontWeight: '500'
|
|
85
90
|
}, message: errorMessage, type: "error", showIcon: true }) : undefined,
|
|
86
|
-
React.createElement(AuthPassword, { protocol: props?.protocol, requestSlider: props?.requestSlider, sliderToken: props?.sliderToken, requestLogin: onConfirmLogin, onErrorMessage: (message) => setErrorMessage(message) }))
|
|
91
|
+
React.createElement(AuthPassword, { companyStatus: props?.companyStatus, protocol: props?.protocol, requestSlider: props?.requestSlider, sliderToken: props?.sliderToken, requestLogin: onConfirmLogin, onErrorMessage: (message) => setErrorMessage(message) }))
|
|
87
92
|
}
|
|
88
93
|
] })),
|
|
89
94
|
React.createElement("p", { className: css `
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MessageInstance } from 'antd/es/message/interface';
|
|
2
|
+
import type { HookAPI } from 'antd/es/modal/useModal';
|
|
3
|
+
declare const ParentContext: import("react").Context<{
|
|
4
|
+
messageApi: MessageInstance | undefined;
|
|
5
|
+
modal: HookAPI | undefined;
|
|
6
|
+
active: () => void;
|
|
7
|
+
}>;
|
|
8
|
+
export default ParentContext;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createContext } from 'react';
|
|
2
|
+
const PermissionContext = createContext({
|
|
3
|
+
isPermission: (domain, permission) => {
|
|
4
|
+
console.log('parent context' + domain);
|
|
5
|
+
console.log('parent context' + permission);
|
|
6
|
+
if (!permission) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
export default PermissionContext;
|
package/icon/directory.svg
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="23" fill="none" viewBox="0 0 28 23" x="150" y="130"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="23" fill="none" viewBox="0 0 28 23" x="150" y="130"
|
|
2
|
+
data-name="spacearea" data-svg-id="ea31b1f100">
|
|
3
|
+
<path fill-rule="evenodd" clip-rule="evenodd"
|
|
4
|
+
d="M2.25 22.5A2.25 2.25 0 0 1 0 20.25V2.583A2.25 2.25 0 0 1 2.25.333h7.083l2.334 2.334H25.75A2.25 2.25 0 0 1 28 4.917V20.25a2.25 2.25 0 0 1-2.25 2.25H2.25z"
|
|
5
|
+
fill="url(#g)"/>
|
|
6
|
+
<defs>
|
|
7
|
+
<linearGradient id="g" x1="-13.917" y1="11.351" x2="7.53" y2="38.443" gradientUnits="userSpaceOnUse">
|
|
8
|
+
<stop stop-color="#6BBEFE"/>
|
|
9
|
+
<stop offset=".999" stop-color="#59ABFE"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
</defs>
|
|
9
12
|
</svg>
|
package/icon/empty.svg
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" width="130" height="80">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
</g>
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient x1="52.348%" y1="74.611%" x2="52.348%" y2="-17.635%" id="a">
|
|
4
|
+
<stop stop-color="#DEDEDE" stop-opacity="0" offset="0%"/>
|
|
5
|
+
<stop stop-color="#A9A9A9" stop-opacity=".3" offset="100%"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient x1="44.79%" y1="100%" x2="44.79%" y2="0%" id="b">
|
|
8
|
+
<stop stop-color="#FFF" stop-opacity="0" offset="0%"/>
|
|
9
|
+
<stop stop-color="#96A1C5" stop-opacity=".373" offset="100%"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
<linearGradient x1="50%" y1="100%" x2="50%" y2="-19.675%" id="c">
|
|
12
|
+
<stop stop-color="#FFF" stop-opacity="0" offset="0%"/>
|
|
13
|
+
<stop stop-color="#919191" stop-opacity=".15" offset="100%"/>
|
|
14
|
+
</linearGradient>
|
|
15
|
+
<linearGradient x1="50%" y1="0%" x2="50%" y2="44.95%" id="d">
|
|
16
|
+
<stop stop-color="#5389F5" offset="0%"/>
|
|
17
|
+
<stop stop-color="#416FDC" offset="100%"/>
|
|
18
|
+
</linearGradient>
|
|
19
|
+
<linearGradient x1="63.345%" y1="100%" x2="63.345%" y2="-5.316%" id="e">
|
|
20
|
+
<stop stop-color="#DCE9FF" offset="0%"/>
|
|
21
|
+
<stop stop-color="#B6CFFF" offset="100%"/>
|
|
22
|
+
</linearGradient>
|
|
23
|
+
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="f">
|
|
24
|
+
<stop stop-color="#7CA5F7" offset="0%"/>
|
|
25
|
+
<stop stop-color="#C4D6FC" offset="100%"/>
|
|
26
|
+
</linearGradient>
|
|
27
|
+
</defs>
|
|
28
|
+
<g transform="translate(-1.866 .364)" fill="none" fill-rule="evenodd">
|
|
29
|
+
<path d="M27.94 14.864c1.326-4.192 2.56-6.802 3.7-7.831 3.157-2.848 7.522-1.298 8.45-1.076 3.26.782 2.2-4.364 4.997-5.41 1.864-.697 3.397.155 4.6 2.556C50.752.863 52.375-.163 54.556.02c3.272.277 4.417 11.328 8.913 8.909 4.497-2.42 10.01-2.973 12.365.623.509.778.704-.429 4.166-4.55C83.462.88 86.914-.936 93.996 1.464c3.22 1.09 5.868 4.045 7.947 8.864 0 6.878 5.06 10.95 15.178 12.213 15.179 1.895 3.397 18.214-15.178 22.993-18.576 4.78-61.343 7.36-84.551-4.716C1.92 32.769 5.436 24.117 27.939 14.864z"
|
|
30
|
+
fill="url(#a)" opacity=".8"/>
|
|
31
|
+
<ellipse fill="url(#b)" cx="66" cy="69.166" rx="27.987" ry="6.478"/>
|
|
32
|
+
<path d="M113.25 77.249c-21.043 5.278-92.87-.759-100.515-3.516-3.721-1.343-7.075-3.868-10.061-7.576a2.822 2.822 0 0 1 2.198-4.593h125.514c2.605 6.938-3.107 12.166-17.136 15.685z"
|
|
33
|
+
fill="url(#c)" opacity=".675"/>
|
|
34
|
+
<g fill-rule="nonzero">
|
|
35
|
+
<path d="M43.396 12.098L33.825.906a2.434 2.434 0 0 0-1.837-.86h-20.58c-.706 0-1.377.324-1.837.86L0 12.098v6.144h43.396v-6.144z"
|
|
36
|
+
fill="url(#d)" transform="translate(44.08 39.707)"/>
|
|
37
|
+
<path d="M40.684 18.468L32.307 8.72a2.136 2.136 0 0 0-1.622-.725H12.711c-.617 0-1.22.256-1.622.725l-8.377 9.748v5.354h37.972v-5.354z"
|
|
38
|
+
fill="url(#e)" transform="translate(44.08 39.707)"/>
|
|
39
|
+
<path d="M43.396 25.283c0 .853-.384 1.62-.99 2.134l-.123.1a2.758 2.758 0 0 1-1.67.56H2.784c-.342 0-.669-.062-.971-.176l-.15-.06A2.802 2.802 0 0 1 0 25.282V12.165h10.529c1.163 0 2.1.957 2.1 2.118v.015c0 1.162.948 2.099 2.111 2.099h13.916a2.113 2.113 0 0 0 2.111-2.107c0-1.166.938-2.125 2.1-2.125h10.53z"
|
|
40
|
+
fill="url(#f)" transform="translate(44.08 39.707)"/>
|
|
42
41
|
</g>
|
|
42
|
+
</g>
|
|
43
43
|
</svg>
|
package/icon/media.png
ADDED
|
Binary file
|