Commit 261639e395f2cffcb5aaabca742ab823a267bacd

Authored by ly525
Committed by 小小鲁班
1 parent edb8b7d8

chore: migrate landing-page repo

Showing 78 changed files with 0 additions and 4120 deletions

Too many changes to show.

To preserve performance only 78 of 79 files are displayed.

front-end/landing-page/.umirc.js deleted 100644 → 0
1   -var path = require('path')
2   -
3   -export default {
4   - publicPath: "/luban-h5/",
5   - history: 'hash',
6   - disableCSSModules: true,
7   - plugins: [
8   - [
9   - 'umi-plugin-react', {
10   - // dynamicImport: true,
11   - antd: true,
12   - }
13   - ],
14   - ],
15   - chainWebpack(config) {
16   - config.resolve.alias.set('@', path.resolve(__dirname, 'src'));
17   - },
18   -}
19 0 \ No newline at end of file
front-end/landing-page/README.md deleted 100644 → 0
1   -## The Landing Page for LubanH5
2   -
3   -## 鲁班H5 首页
4 0 \ No newline at end of file
front-end/landing-page/deploy.sh deleted 100755 → 0
1   -# scp -r dist/* centos@aliyun:/home/centos/codebase/luban/luban-h5-dist/landing-page
2   -
3   -# 生成静态文件
4   -npm run build
5   -
6   -# 进入生成的文件夹
7   -cd dist
8   -
9   -# 如果是发布到自定义域名
10   -# echo 'www.example.com' > CNAME
11   -
12   -git init
13   -git add -A
14   -git commit -m 'deploy'
15   -
16   -# 如果发布到 https://<USERNAME>.github.io
17   -# git push -f git@github.com:<USERNAME>/<USERNAME>.github.io.git master
18   -
19   -# 如果发布到 https://<USERNAME>.github.io/<REPO>
20   -# git push -f git@gitee.com:ly525/luban-h5.git master:gh-pages-landing-page
21   -git push -f git@github.com:ly525/luban-h5.git master:gh-pages-landing-page
22   -
23   -cd -
24 0 \ No newline at end of file
front-end/landing-page/package.json deleted 100644 → 0
1   -{
2   - "name": "landing-page",
3   - "version": "1.0.0",
4   - "main": "index.js",
5   - "license": "MIT",
6   - "dependencies": {
7   - "antd": "^3.23.6",
8   - "enquire-js": "^0.2.1",
9   - "qrcode.react": "^0.9.3",
10   - "rc-banner-anim": "^2.4.2",
11   - "rc-queue-anim": "^1.8.2",
12   - "rc-scroll-anim": "^2.6.2",
13   - "rc-tween-one": "^2.6.5",
14   - "react": "^16.10.2",
15   - "react-document-title": "^2.0.3",
16   - "react-dom": "^16.10.2",
17   - "umi-plugin-react": "^1.14.7"
18   - },
19   - "devDependencies": {
20   - "atool-build": "^1.0.8",
21   - "umi": "^2.10.2"
22   - },
23   - "scripts": {
24   - "dev": "umi dev",
25   - "build": "umi build",
26   - "deploy": "rm -rf dist && ./deploy.sh"
27   - }
28   -}
front-end/landing-page/src/Index-En/Banner.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import PropTypes from 'prop-types';
3   -import QueueAnim from 'rc-queue-anim';
4   -import { Button, Icon } from 'antd';
5   -import BannerImage from './BannerImage';
6   -
7   -const ButtonGroup = Button.Group;
8   -
9   -const LubanIcon = Icon.createFromIconfontCN({
10   - scriptUrl: '//at.alicdn.com/t/font_1455736_n0ivu1iicd.js',
11   -});
12   -
13   -class Banner extends React.PureComponent {
14   - static propTypes = {
15   - className: PropTypes.string,
16   - }
17   - static defaultProps = {
18   - className: 'home-banner',
19   - }
20   - render() {
21   - const { className } = this.props;
22   - return (
23   - <div className={`home-layout-wrapper ${className}`}>
24   - <div className="home-layout">
25   - <QueueAnim className={`${className}-content-wrapper`} delay={300} ease="easeOutQuart">
26   - <h1 key="h1">
27   - Minimalist production, a key presentation
28   - </h1>
29   - <p key="p">An mobile page builder&generator with easy drag&drop editing features</p>
30   - <span key="button">
31   - <Button
32   - type="primary"
33   - onClick={() => {
34   - window.open('https://h5.luban-h5.com')
35   - }}
36   - >
37   - Start Using
38   - </Button>
39   - </span>
40   - <span key="button2">
41   - <ButtonGroup>
42   - <Button type="link" size="small" title="Gitee" onClick={() => {
43   - window.open("https://gitee.com/ly525/luban-h5");
44   - }}><LubanIcon type="iconmayun"/></Button>
45   - <Button type="link" size="small" title="GitHub" onClick={() => {
46   - window.open('https://github.com/ly525/luban-h5');
47   - }}><img alt="GitHub stars" src="https://img.shields.io/github/stars/ly525/luban-h5?style=social" /></Button>
48   - </ButtonGroup>
49   - </span>
50   - </QueueAnim>
51   - <div className={`${className}-image-wrapper`}>
52   - <BannerImage />
53   - </div>
54   - </div>
55   - </div>
56   - );
57   - }
58   -}
59   -
60   -export default Banner;
front-end/landing-page/src/Index-En/BannerImage.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import TweenOne from 'rc-tween-one';
3   -import SvgDrawPlugin from 'rc-tween-one/lib/plugin/SvgDrawPlugin';
4   -import BannerImg from '../assets/home/banner.svg'
5   -
6   -TweenOne.plugins.push(SvgDrawPlugin);
7   -
8   -export default function BannerImage() {
9   - return <img src={BannerImg} width={510} />;
10   -}
front-end/landing-page/src/Index-En/Footer.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import { footer } from './data';
3   -
4   -function antCloudFooter() {
5   - const children = footer.map((item, i) => (<div key={i}><a href={item.src} target="_blank">{item.text}</a></div>));
6   - return (<div>
7   - <div className="logo" key="logo">
8   - {/* <img src="https://gw.alipayobjects.com/zos/rmsportal/dnIbXmAgGbRxQJksRsJL.svg" width="72" height="82" /> */}
9   - <h1 style={{color: 'white'}}>Luban H5</h1>
10   - </div>
11   - <div key="nav" className="home-footer-nav-wrapper">
12   - {children}
13   - </div>
14   - </div>
15   - );
16   -}
17   -
18   -function Footer() {
19   - return (
20   - <div className="home-layout-wrapper home-footer-wrapper">
21   - <div className="home-layout">
22   - {antCloudFooter()}
23   - <p key="cop" className="copy">©2019 - 2019 Metrix-Transform All Rights Reserved</p>
24   - </div>
25   - </div>
26   - );
27   -}
28   -
29   -export default Footer;
front-end/landing-page/src/Index-En/Header.jsx deleted 100755 → 0
1   -import React from 'react';
2   -
3   -export default function Header(props) {
4   - return (
5   - <header {...props}>
6   - <div className="header-content">
7   - <h1>
8   - <a>
9   - <span>鲁班H5</span>
10   - </a>
11   - <span>移动建站平台</span>
12   - </h1>
13   - </div>
14   - </header>
15   - );
16   -}
front-end/landing-page/src/Index-En/Page1.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import QueueAnim from 'rc-queue-anim';
3   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
4   -import { Row, Col } from 'antd';
5   -import { page1 } from './data';
6   -
7   -export default function Page1() {
8   - const children = page1.map((d, i) => (
9   - <QueueAnim
10   - component={Col}
11   - key={i}
12   - type="bottom"
13   - className="col"
14   - componentProps={{ span: 8 }}
15   - >
16   - <div key="image" className="image" style={{ backgroundImage: `url(${d.src})`, backgroundSize: 'contain' }} />
17   - <h3 key="h3">{d.title}</h3>
18   - <p key="p">{d.content}</p>
19   - </QueueAnim>
20   - ));
21   - return (
22   - <div className="home-layout-wrapper home-func-wrapper" id="home-func" >
23   - <h2>Features</h2>
24   - <i className="line" />
25   - <OverPack className="home-layout" location="home-func" playScale={0.4}>
26   - <QueueAnim className="home-func" type="bottom" key="home-func" ease="easeOutQuart" leaveReverse>
27   - <QueueAnim
28   - key="content"
29   - component={Row}
30   - type="bottom"
31   - componentProps={{ gutter: 171 }}
32   - >
33   - {children}
34   - </QueueAnim>
35   - </QueueAnim>
36   - </OverPack>
37   - </div>);
38   -}
front-end/landing-page/src/Index-En/Page2.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import QueueAnim from 'rc-queue-anim';
3   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
4   -import QRCode from 'qrcode.react';
5   -import { Row, Col } from 'antd';
6   -import { page2 } from './data';
7   -
8   -export default function Page2() {
9   - const children = page2.map((d, i) => {
10   - if (i > 2) {
11   - return null;
12   - }
13   - return (
14   - <Col key={i} className="col" span={8}>
15   - <div className="content-wrapper home-hover">
16   - <div className="image" style={{ backgroundImage: `url(${d.image})` }} />
17   - <div className="code-wrapper">
18   - <h4>Scan Qr code to preview</h4>
19   - <QRCode value={d.url} size={160} />
20   - </div>
21   - </div>
22   - </Col>);
23   - });
24   - return (
25   - <div className="home-layout-wrapper home-case-wrapper">
26   - <OverPack className="home-layout" playScale={0.4}>
27   - <QueueAnim className="home-case" type="bottom" key="home-case" ease="easeOutQuart" leaveReverse>
28   - <h2 key="h2">scan the qr codes for great examples</h2>
29   - <i key="i" className="line" />
30   - <QueueAnim
31   - key="content"
32   - component={Row}
33   - type="bottom"
34   - componentProps={{ gutter: 171 }}
35   - >
36   - {children}
37   - </QueueAnim>
38   - </QueueAnim>
39   - </OverPack>
40   - </div>);
41   -}
front-end/landing-page/src/Index-En/Page3.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import QueueAnim from 'rc-queue-anim';
3   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
4   -import { Row, Col } from 'antd';
5   -import { page3 } from './data';
6   -
7   -export default function Page3() {
8   - const children = page3.map((d, i) => (
9   - <Col span={8} className="col" key={i.toString()}>
10   - <QueueAnim
11   - type="bottom"
12   - className="content-wrapper home-hover"
13   - onClick={() => { }}
14   - >
15   - <div key="image" className="image">{d.svg}</div>
16   - <h3 key="h3">{d.title}</h3>
17   - {d.content}
18   - {d.exp && <div className="exp" key="exp">{d.exp}</div>}
19   - </QueueAnim>
20   - </Col>
21   - ));
22   - return (
23   - <div className="home-layout-wrapper home-serve-wrapper">
24   - <OverPack className="home-layout" playScale={0.4}>
25   - <QueueAnim className="home-serve" type="bottom" key="home-func" ease="easeOutQuart" leaveReverse>
26   - <h2 key="h2">Plans</h2>
27   - <i key="i" className="line" />
28   - <QueueAnim
29   - key="content"
30   - component={Row}
31   - type="bottom"
32   - componentProps={{ gutter: 96 }}
33   - >
34   - {children}
35   - </QueueAnim>
36   - </QueueAnim>
37   - </OverPack>
38   - </div>);
39   -}
front-end/landing-page/src/Index-En/Page4.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import QueueAnim from 'rc-queue-anim';
3   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
4   -import { Row, Col } from 'antd';
5   -import { page4 } from './data';
6   -
7   -function getLi(num, d, i) {
8   - const t = num + 1;
9   - if (i > t * 4 - 1 || i < num * 4) {
10   - return null;
11   - }
12   - return (
13   - <Col className="col" span={4} key={i} offset={!(i % 4) ? 1 : 2}>
14   - <i style={{ backgroundImage: `url(${d})` }} />
15   - </Col>
16   - );
17   -}
18   -export default function Page4() {
19   - const children = [];
20   - for (let i = 0; i < Math.floor(page4.length / 4); i++) {
21   - children.push((
22   - <QueueAnim
23   - component={Row}
24   - type="bottom"
25   - key={i}
26   - >
27   - {page4.map(getLi.bind(this, i)).filter(item => item)}
28   - </QueueAnim>));
29   - }
30   - return (
31   - <div className="home-layout-wrapper home-user-wrapper">
32   - <OverPack className="home-layout" playScale={0.4}>
33   - <QueueAnim className="home-user" type="bottom" key="home-func" ease="easeOutQuart" leaveReverse>
34   - <h2 key="h2">我们的用户</h2>
35   - <i key="i" className="line" />
36   - {children}
37   - </QueueAnim>
38   - </OverPack>
39   - </div>
40   - );
41   -}
front-end/landing-page/src/Index-En/data.js deleted 100755 → 0
1   -import React from 'react';
2   -import { H5_HOST } from '@/constants/config';
3   -
4   -export const page1 = [
5   - {
6   - title: 'Easy to set up',
7   - content: 'Integrating dynamic effects, music, video and images, users can easily achieve Html5 card',
8   - src: 'http://qiniu-image.luban-h5.wxjcart.com/landing-page/home-feature/quick-make.svg',
9   - },
10   - {
11   - title: 'Form Collection',
12   - content: 'Collect and organize information.Get answers from users fast.',
13   - src: 'http://qiniu-image.luban-h5.wxjcart.com/landing-page/home-feature/submit-form.svg',
14   - },
15   - {
16   - title: 'PSD to HTML5',
17   - content: 'Upload PSD, and parse it to HTML5, just seconds',
18   - src: 'http://qiniu-image.luban-h5.wxjcart.com/landing-page/home-feature/import-psd.svg',
19   - },
20   -];
21   -
22   -export const page2 = [
23   - {
24   - title: 'Invitation',
25   - url: `${H5_HOST}/works/preview/1552`,
26   - image: 'https://i.loli.net/2019/12/04/haEim2C6QnzVPOY.png',
27   - },
28   - {
29   - title: 'Good Morning',
30   - url: `${H5_HOST}/works/preview/1551`,
31   - image: 'https://i.loli.net/2019/12/04/qBCmSl4Du8jn2XZ.png',
32   - },
33   - {
34   - title: 'Day of the Programmer',
35   - url: `${H5_HOST}/works/preview/833`,
36   - image: 'https://i.loli.net/2019/12/04/s7S1no4YcuJe8Qb.png',
37   - },
38   -];
39   -
40   -export const page3 = [
41   - {
42   - title: 'Personal',
43   - content: [
44   - <p key="1">Create Mobile Page</p>,
45   - <p key="2">Manage Templates</p>,
46   - <p key="3">Form Collection</p>,
47   - <p key="3">Data statistics</p>,
48   - ],
49   - // exp: '免费使用',
50   - svg: (<svg width="32px" height="32px" viewBox="0 0 32 32">
51   - <defs>
52   - <linearGradient x1="50%" y1="0%" x2="50%" y2="98.8500478%" id="linearGradient-1">
53   - <stop stopColor="#FFD24C" offset="0%" />
54   - <stop stopColor="#FFB800" offset="100%" />
55   - </linearGradient>
56   - </defs>
57   - <path
58   - d="M11.2,19.9763991 L1.43301577,25.9589289
59   - C0.542750835,26.5042392 1.20441457e-15,27.4731633 1.33226763e-15,28.5171628
60   - L0,28.5171628 L0,30 C1.3527075e-16,31.1045695 0.8954305,32 2,32
61   - L30,32 C31.1045695,32 32,31.1045695 32,30 L32,30 L32,28.5391533
62   - C32,27.4832633 31.4449138,26.5051178 30.53843,25.9636469 L30.53843,25.9636469
63   - L20.8,20.1465799 L20.8,18.1051172 C22.2729985,16.7867478 23.2,14.8708611 23.2,12.7384615
64   - L23.2,7.2 C23.2,3.2235498 19.9764502,-7.30462051e-16 16,0
65   - C12.0235498,7.30462051e-16 8.8,3.2235498 8.8,7.2 L8.8,7.2
66   - L8.8,12.7384615 C8.8,14.8708611 9.72700154,16.7867478 11.2,18.1051172 L11.2,19.9763991 Z"
67   - fill="#D9D9D9"
68   - />
69   - <path
70   - d="M11.2,19.9763991 L1.43301577,25.9589289
71   - C0.542750835,26.5042392 1.20441457e-15,27.4731633 1.33226763e-15,28.5171628
72   - L0,28.5171628 L0,30 C1.3527075e-16,31.1045695 0.8954305,32 2,32
73   - L30,32 C31.1045695,32 32,31.1045695 32,30 L32,30 L32,28.5391533
74   - C32,27.4832633 31.4449138,26.5051178 30.53843,25.9636469 L30.53843,25.9636469
75   - L20.8,20.1465799 L20.8,18.1051172 C22.2729985,16.7867478 23.2,14.8708611 23.2,12.7384615
76   - L23.2,7.2 C23.2,3.2235498 19.9764502,-7.30462051e-16 16,0
77   - C12.0235498,7.30462051e-16 8.8,3.2235498 8.8,7.2 L8.8,7.2
78   - L8.8,12.7384615 C8.8,14.8708611 9.72700154,16.7867478 11.2,18.1051172 L11.2,19.9763991 Z"
79   - fill="url(#linearGradient-1)"
80   - className="icon-hover"
81   - />
82   - </svg>),
83   - },
84   - {
85   - title: 'Enterprise',
86   - content: [
87   - <p key="1">Create Mobile Page</p>,
88   - <p key="2">Manage Templates</p>,
89   - <p key="3">Form Collection</p>,
90   - <p key="3">Data statistics</p>,
91   - <p key="3">PSD to HTML5</p>,
92   - ],
93   - svg: (
94   - <svg width="32px" height="32px" viewBox="0 0 32 32">
95   - <path
96   - d="M22.3555358,32 L9.93657149,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30
97   - L0,18 C-1.3527075e-16,16.8954305 0.8954305,16 2,16 L2,16 L6.78535432,16 L6.78535432,2
98   - L6.78535432,2 C6.78535432,0.8954305 7.68078482,2.02906125e-16 8.78535432,0 L21.7853543,0
99   - C22.8899238,-2.02906125e-16 23.7853543,0.8954305 23.7853543,2 L23.7853543,7 L30,7
100   - C31.1045695,7 32,7.8954305 32,9 L32,30 C32,31.1045695 31.1045695,32 30,32 L22.3555358,32
101   - Z M10,4 L10,8 L14,8 L14,4 L10,4 Z M10,12 L10,16 L14,16 L14,12 L10,12 Z M10,20 L10,24 L14,24
102   - L14,20 L10,20 Z M3,20 L3,24 L7,24 L7,20 L3,20 Z M17,4 L17,8 L21,8 L21,4 L17,4 Z M17,12 L17,16
103   - L21,16 L21,12 L17,12 Z M17,20 L17,24 L21,24 L21,20 L17,20 Z M24,20 L24,24 L28,24 L28,20 L24,20
104   - Z M24,12 L24,16 L28,16 L28,12 L24,12 Z"
105   - fill="#D9D9D9"
106   - />
107   - <path
108   - d="M22.3555358,32 L9.93657149,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30
109   - L0,18 C-1.3527075e-16,16.8954305 0.8954305,16 2,16 L2,16 L6.78535432,16 L6.78535432,2
110   - L6.78535432,2 C6.78535432,0.8954305 7.68078482,2.02906125e-16 8.78535432,0 L21.7853543,0
111   - C22.8899238,-2.02906125e-16 23.7853543,0.8954305 23.7853543,2 L23.7853543,7 L30,7
112   - C31.1045695,7 32,7.8954305 32,9 L32,30 C32,31.1045695 31.1045695,32 30,32 L22.3555358,32
113   - Z M10,4 L10,8 L14,8 L14,4 L10,4 Z M10,12 L10,16 L14,16 L14,12 L10,12 Z M10,20 L10,24 L14,24
114   - L14,20 L10,20 Z M3,20 L3,24 L7,24 L7,20 L3,20 Z M17,4 L17,8 L21,8 L21,4 L17,4 Z M17,12 L17,16
115   - L21,16 L21,12 L17,12 Z M17,20 L17,24 L21,24 L21,20 L17,20 Z M24,20 L24,24 L28,24 L28,20 L24,20
116   - Z M24,12 L24,16 L28,16 L28,12 L24,12 Z"
117   - fill="url(#linearGradient-1)"
118   - className="icon-hover"
119   - />
120   - </svg>),
121   - },
122   - {
123   - title: 'Enterprise VIP',
124   - content: [
125   - <p key="1">Create Mobile Page</p>,
126   - <p key="2">Manage Templates</p>,
127   - <p key="3">Form Collection</p>,
128   - <p key="3">Data statistics</p>,
129   - <p key="3">PSD to HTML5</p>,
130   - <p key="3">Custom Script</p>,
131   - <p key="6">User Management</p>,
132   - <p key="6">Project Management</p>,
133   - ],
134   - svg: (
135   - <svg width="32px" height="32px" viewBox="0 0 32 32">
136   - <path
137   - d="M21.1504124,8.82079742 L16.5552541,3.32558694
138   - C16.5324137,3.29827282 16.5071873,3.27304601 16.4798736,3.25020514
139   - C16.2256714,3.03763068 15.8472742,3.07137659 15.6346998,3.32557875
140   - L15.6346998,3.32557875 L10.966694,8.90770327 L8.07603504,6.76607715
141   - L8.07603504,6.76607715 C7.80977712,6.56881247 7.43401779,6.62474254 7.23675311,6.89100046
142   - C7.13505771,7.02826378 7.09669461,7.20236809 7.13128245,7.36966081 L8.29535756,13
143   - L15.9998162,13 L23.7045714,13 L24.8686535,7.36962696
144   - C24.9357456,7.0451192 24.727069,6.72766477 24.4025612,6.66057265
145   - C24.2352715,6.62598542 24.0611703,6.66434651 23.9239079,6.76603807
146   - L21.1504124,8.82079742 Z M2,14 L30,14 C31.1045695,14 32,14.8954305 32,16
147   - L32,30 C32,31.1045695 31.1045695,32 30,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30
148   - L0,16 C-1.3527075e-16,14.8954305 0.8954305,14 2,14 L2,14 Z M16,2 C15.4477153,2 15,1.55228475 15,1
149   - C15,0.44771525 15.4477153,0 16,0 C16.5522847,0 17,0.44771525 17,1 C17,1.55228475 16.5522847,2 16,2 Z
150   - M6,6 C5.44771525,6 5,5.55228475 5,5 C5,4.44771525 5.44771525,4 6,4 C6.55228475,4 7,4.44771525 7,5
151   - C7,5.55228475 6.55228475,6 6,6 Z M26,6 C25.4477153,6 25,5.55228475 25,5
152   - C25,4.44771525 25.4477153,4 26,4 C26.5522847,4 27,4.44771525 27,5
153   - C27,5.55228475 26.5522847,6 26,6 Z M14.0979687,19.25
154   - C14.1648524,19.04375 14.177013,18.94375 14.1526917,18.825
155   - C14.1101294,18.6375 13.9094785,18.5 13.7149079,18.5
156   - C13.6237029,18.5 13.5264176,18.53125 13.459534,18.59375
157   - C13.368329,18.675 13.3257667,18.75625 13.2588831,18.9625 L11.0821247,25.80625
158   - L8.90536631,18.9625 C8.83848268,18.75625 8.79592036,18.675 8.7047154,18.59375
159   - C8.63783176,18.53125 8.54054647,18.5 8.44934151,18.5
160   - C8.25477093,18.5 8.05412002,18.6375 8.0115577,18.825
161   - C7.98723638,18.94375 7.99939704,19.04375 8.06628068,19.25 L10.5713769,26.98125
162   - C10.6260999,27.15625 10.6929835,27.3 10.7659475,27.36875
163   - C10.8632328,27.46875 10.9544378,27.5 11.0821247,27.5
164   - C11.2037313,27.5 11.2949363,27.46875 11.3983019,27.36875
165   - C11.4712659,27.3 11.5381495,27.15625 11.5928725,26.98125
166   - L14.0979687,19.25 Z M16.5726622,19.15 C16.5726622,18.9 16.5605016,18.81875 16.4875376,18.7
167   - C16.4145736,18.58125 16.274726,18.5 16.1044768,18.5 C15.9342275,18.5 15.7943799,18.58125 15.7214159,18.7
168   - C15.648452,18.81875 15.6362913,18.9 15.6362913,19.15 L15.6362913,26.85
169   - C15.6362913,27.1 15.648452,27.18125 15.7214159,27.3 C15.7943799,27.41875 15.9342275,27.5 16.1044768,27.5
170   - C16.274726,27.5 16.4145736,27.41875 16.4875376,27.3 C16.5605016,27.18125 16.5726622,27.1 16.5726622,26.85
171   - L16.5726622,19.15 Z M19.0777579,19.13125 L19.0777579,26.85
172   - C19.0777579,27.1 19.0899186,27.18125 19.1628825,27.3
173   - C19.2358465,27.41875 19.3756941,27.5 19.5459434,27.5
174   - C19.7161926,27.5 19.8560402,27.41875 19.9290042,27.3
175   - C20.0019682,27.18125 20.0141288,27.1 20.0141288,26.85
176   - L20.0141288,23.7875 L22.3124938,23.7875 C23.8872995,23.7875 25,22.75 25,21.1625
177   - C25,19.575 23.8872995,18.55 22.3124938,18.55 L19.6432287,18.55
178   - C19.4973007,18.55 19.3331318,18.55 19.2054449,18.68125
179   - C19.0777579,18.8125 19.0777579,18.98125 19.0777579,19.13125 Z M22.2395299,19.4
180   - C23.3218287,19.4 24.0575487,19.9875 24.0575487,21.1625
181   - C24.0575487,22.3375 23.3218287,22.9375 22.2395299,22.9375 L20.0141288,22.9375
182   - L20.0141288,19.4 L22.2395299,19.4 Z"
183   - fill="#D9D9D9"
184   - />
185   - <path
186   - d="M21.1504124,8.82079742 L16.5552541,3.32558694
187   - C16.5324137,3.29827282 16.5071873,3.27304601 16.4798736,3.25020514
188   - C16.2256714,3.03763068 15.8472742,3.07137659 15.6346998,3.32557875
189   - L15.6346998,3.32557875 L10.966694,8.90770327 L8.07603504,6.76607715
190   - L8.07603504,6.76607715 C7.80977712,6.56881247 7.43401779,6.62474254 7.23675311,6.89100046
191   - C7.13505771,7.02826378 7.09669461,7.20236809 7.13128245,7.36966081 L8.29535756,13
192   - L15.9998162,13 L23.7045714,13 L24.8686535,7.36962696
193   - C24.9357456,7.0451192 24.727069,6.72766477 24.4025612,6.66057265
194   - C24.2352715,6.62598542 24.0611703,6.66434651 23.9239079,6.76603807
195   - L21.1504124,8.82079742 Z M2,14 L30,14 C31.1045695,14 32,14.8954305 32,16
196   - L32,30 C32,31.1045695 31.1045695,32 30,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30
197   - L0,16 C-1.3527075e-16,14.8954305 0.8954305,14 2,14 L2,14 Z M16,2 C15.4477153,2 15,1.55228475 15,1
198   - C15,0.44771525 15.4477153,0 16,0 C16.5522847,0 17,0.44771525 17,1 C17,1.55228475 16.5522847,2 16,2 Z
199   - M6,6 C5.44771525,6 5,5.55228475 5,5 C5,4.44771525 5.44771525,4 6,4 C6.55228475,4 7,4.44771525 7,5
200   - C7,5.55228475 6.55228475,6 6,6 Z M26,6 C25.4477153,6 25,5.55228475 25,5
201   - C25,4.44771525 25.4477153,4 26,4 C26.5522847,4 27,4.44771525 27,5
202   - C27,5.55228475 26.5522847,6 26,6 Z M14.0979687,19.25
203   - C14.1648524,19.04375 14.177013,18.94375 14.1526917,18.825
204   - C14.1101294,18.6375 13.9094785,18.5 13.7149079,18.5
205   - C13.6237029,18.5 13.5264176,18.53125 13.459534,18.59375
206   - C13.368329,18.675 13.3257667,18.75625 13.2588831,18.9625 L11.0821247,25.80625
207   - L8.90536631,18.9625 C8.83848268,18.75625 8.79592036,18.675 8.7047154,18.59375
208   - C8.63783176,18.53125 8.54054647,18.5 8.44934151,18.5
209   - C8.25477093,18.5 8.05412002,18.6375 8.0115577,18.825
210   - C7.98723638,18.94375 7.99939704,19.04375 8.06628068,19.25 L10.5713769,26.98125
211   - C10.6260999,27.15625 10.6929835,27.3 10.7659475,27.36875
212   - C10.8632328,27.46875 10.9544378,27.5 11.0821247,27.5
213   - C11.2037313,27.5 11.2949363,27.46875 11.3983019,27.36875
214   - C11.4712659,27.3 11.5381495,27.15625 11.5928725,26.98125
215   - L14.0979687,19.25 Z M16.5726622,19.15 C16.5726622,18.9 16.5605016,18.81875 16.4875376,18.7
216   - C16.4145736,18.58125 16.274726,18.5 16.1044768,18.5 C15.9342275,18.5 15.7943799,18.58125 15.7214159,18.7
217   - C15.648452,18.81875 15.6362913,18.9 15.6362913,19.15 L15.6362913,26.85
218   - C15.6362913,27.1 15.648452,27.18125 15.7214159,27.3 C15.7943799,27.41875 15.9342275,27.5 16.1044768,27.5
219   - C16.274726,27.5 16.4145736,27.41875 16.4875376,27.3 C16.5605016,27.18125 16.5726622,27.1 16.5726622,26.85
220   - L16.5726622,19.15 Z M19.0777579,19.13125 L19.0777579,26.85
221   - C19.0777579,27.1 19.0899186,27.18125 19.1628825,27.3
222   - C19.2358465,27.41875 19.3756941,27.5 19.5459434,27.5
223   - C19.7161926,27.5 19.8560402,27.41875 19.9290042,27.3
224   - C20.0019682,27.18125 20.0141288,27.1 20.0141288,26.85
225   - L20.0141288,23.7875 L22.3124938,23.7875 C23.8872995,23.7875 25,22.75 25,21.1625
226   - C25,19.575 23.8872995,18.55 22.3124938,18.55 L19.6432287,18.55
227   - C19.4973007,18.55 19.3331318,18.55 19.2054449,18.68125
228   - C19.0777579,18.8125 19.0777579,18.98125 19.0777579,19.13125 Z M22.2395299,19.4
229   - C23.3218287,19.4 24.0575487,19.9875 24.0575487,21.1625
230   - C24.0575487,22.3375 23.3218287,22.9375 22.2395299,22.9375 L20.0141288,22.9375
231   - L20.0141288,19.4 L22.2395299,19.4 Z"
232   - fill="url(#linearGradient-1)"
233   - className="icon-hover"
234   - />
235   - </svg>),
236   - },
237   -];
238   -
239   -export const page4 = [
240   - 'https://gw.alipayobjects.com/zos/rmsportal/kJPmZttedahfIvsZDGTd.svg',
241   - 'https://gw.alipayobjects.com/zos/rmsportal/ktLOdfjNyExgKyWjiCvm.svg',
242   - 'https://gw.alipayobjects.com/zos/rmsportal/gNNxbrNqlHdnRuMjUXrL.svg',
243   - 'https://gw.alipayobjects.com/zos/rmsportal/qWaneWxxMVpASpiCOcsT.svg',
244   - 'https://gw.alipayobjects.com/zos/rmsportal/kyCpvqWFloOpAOqzOlBg.svg',
245   - 'https://gw.alipayobjects.com/zos/rmsportal/bBzJNEnPvyhNUhyHipvO.svg',
246   - 'https://gw.alipayobjects.com/zos/rmsportal/UbEpCMXGBmDgkJXfIgMx.svg',
247   - 'https://gw.alipayobjects.com/zos/rmsportal/xsWGKOdkRoJnzHIZlRiD.svg',
248   -];
249   -
250   -export const footer = [
251   - { text: '中文文档', src: 'https://ly525.github.io/luban-h5' },
252   - { text: 'English Document', src: 'https://ly525.github.io/luban-h5' },
253   - { text: 'Gitter', src: 'https://gitter.im/luban-h5/community' },
254   -];
front-end/landing-page/src/Index-En/index.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import DocumentTitle from 'react-document-title';
3   -// import Header from './Header';
4   -import Banner from './Banner';
5   -import Page1 from './Page1';
6   -import Page2 from './Page2';
7   -import Page3 from './Page3';
8   -// import Page4 from './Page4';
9   -import Footer from './Footer';
10   -import './static/style';
11   -
12   -// 不支持移动端
13   -class Home extends React.PureComponent {
14   - render() {
15   - return (
16   - <div className="home-page">
17   - {/* <Header key="header" /> */}
18   - <Banner key="banner" />
19   - <Page1 key="page1" />
20   - <Page2 key="page2" />
21   - <Page3 key="page3" />
22   - {/* <Page4 key="page4" /> */}
23   - <Footer key="footer" />
24   - <DocumentTitle title="鲁班H5 - 移动建站平台" />
25   - </div>
26   - );
27   - }
28   -}
29   -export default Home;
front-end/landing-page/src/Index-En/static/custom.less deleted 100755 → 0
1   -body {
2   - // overflow: hidden;
3   -}
4   -
5   -.text-center {
6   - text-align: center!important;
7   -}
front-end/landing-page/src/Index-En/static/default.less deleted 100755 → 0
1   -@import "~antd/lib/style/themes/default.less";
2   -// 品牌色
3   -@color-fengdie: #ffbf00;
4   -// 线框
5   -@border-color: #D9D9D9;
6   -// 分割线
7   -@separate-line-color: #E9E9E9;
8   -// 多行文本
9   -@font-color: rgba(0,0,0,.65);
10   -// 标题、单行
11   -@font-important-color: rgba(0,0,0,.85);
12   -@font-active-color: #666;
13   -// 辅助信息
14   -@font-tip-color: rgba(0,0,0,.43);
15   -// 警告色
16   -@font-warning: #f56a00;
17   -// 失败色
18   -@font-fail: #f04134;
19   -
20   -// 主按钮颜色
21   -@button-primary-color: #ffbf00;
22   -@label-color: #666;
23   -@border-active-color: #ffbf00;
24   -@background-active-color: #FFF8EF;
25   -@link-color: #50A4DB;
26   -@selected-color: #FFBC40;
27   -@moved-color: #FFF1E0;
28   -@header-background-color: #222222;
29   -
30   -@status-released-color: #00A854;
31   -@status-editing-color: #2DB7F5;
32   -@status-previewing-color: #7265E6;
33   -@status-approve_waiting-color: #FAC450;
34   -@status-approve_refused-color: #FF6600;
35   -@status-release_fail-color: #FF6600;
36   -@status-noop-color: #999;
37   -@search-input-border-color: #F59F16;
38   -
39   -
40   -@approveButtonBackgroundColor: #f7f7f7;
41   -@weekBackgroundColor: #FBFBFB;
42   -
43   -@highlight-font-color: @search-input-border-color;
44   -
45   -@white-background-color: #fff;
46   -
47   -@bgColor: #F7F7F7;
48   -@titleColor: fade(#000, 85);
49   -@contentColor: fade(#000, 43);
50 0 \ No newline at end of file
front-end/landing-page/src/Index-En/static/footer.less deleted 100755 → 0
1   -.home-page .home-footer-wrapper {
2   - height: 336px;
3   - background: #404040 !important;
4   - color: fade(#fff, 65);
5   - font-size: 14px;
6   - .home-layout {
7   - padding: 72px 32px 0;
8   - .copy{
9   - color: fade(#fff, 43);
10   - }
11   - }
12   - .home-footer-nav-wrapper {
13   - margin: 48px auto 16px;
14   - > div {
15   - display: inline-block;
16   - padding: 0 36px;
17   - border-right: 1px solid #fff;
18   - &:last-child {
19   - border-right: none;
20   - }
21   - a {
22   - display: block;
23   - color: fade(#fff, 65);
24   - font-size: 16px;
25   - line-height: 16px;
26   - }
27   - }
28   - }
29   - .logo{ margin-bottom: 5px; }
30   -}
31 0 \ No newline at end of file
front-end/landing-page/src/Index-En/static/header.less deleted 100755 → 0
1   -header {
2   - width: 100%;
3   - z-index: 1000;
4   - top: 0;
5   - background-color: #fff;
6   - .header-content {
7   - display: flex;
8   - justify-content: space-between;
9   - align-items: center;
10   - height: 64px;
11   - font-size: 14px;
12   - padding: 0 24px;
13   - width: 1152px;
14   - margin: 0 auto;
15   - h1 {
16   - position: relative;
17   - &:before {
18   - content: "";
19   - position: absolute;
20   - top: 10px;
21   - left: 144px;
22   - width: 1px;
23   - height: 12px;
24   - background: #999;
25   - }
26   - a {
27   - display: block;
28   - width: 120px;
29   - height: 32px;
30   - background: url(https://gw.alipayobjects.com/zos/rmsportal/qdWihUzYxihpnOMVhFPV.png) no-repeat 0 50%;
31   - background-size: 120px 32px;
32   - text-indent: -999em;
33   - }
34   - span{
35   - position: absolute;
36   - font-size: 14px;
37   - font-weight: 400;
38   - top: 6px;
39   - left: 168px;
40   - color: rgba(0,0,0,.65);
41   - white-space: nowrap;
42   - }
43   - }
44   - }
45   -}
46 0 \ No newline at end of file
front-end/landing-page/src/Index-En/static/home.less deleted 100755 → 0
1   -@import './default.less';
2   -.home-page {
3   - .fd-content {
4   - min-width: 1216px;
5   - background: #FFF;
6   - font-family: PingFangSC, Helvetica Neue, Helvetica, PingFang SC-Light, Hiragino Sans GB, Microsoft YaHei, SimSun, sans-serif;
7   - }
8   - h2,
9   - h3,
10   - h4,
11   - h5 {
12   - font-weight: 100;
13   - }
14   - .home-layout-wrapper {
15   - width: 100%;
16   - height: 720px;
17   - text-align: center;
18   - overflow: hidden;
19   - .home-layout {
20   - margin: 0 auto;
21   - width: 1152px;
22   - padding: 0 24px;
23   - overflow: hidden;
24   - height: 100%;
25   - >div {
26   - float: left;
27   - width: 100%;
28   - }
29   - .col {
30   - .content-wrapper {
31   - border-radius: 4px;
32   - background: #fff;
33   - cursor: pointer;
34   - overflow: hidden;
35   - position: relative;
36   - }
37   - }
38   - }
39   - &:nth-of-type(odd) {
40   - background: #fff;
41   - }
42   - &:nth-of-type(even) {
43   - background-color: @bgColor;
44   - }
45   - }
46   - h2,
47   - h3 {
48   - text-align: center;
49   - font-weight: normal;
50   - }
51   - h2 {
52   - font-size: 30px;
53   - line-height: 38px;
54   - color: @titleColor;
55   - margin-top: 88px;
56   - }
57   - h3 {
58   - font-size: 24px;
59   - line-height: 32px;
60   - margin-bottom: 16px;
61   - color: @titleColor;
62   - }
63   - .line {
64   - width: 40px;
65   - height: 2px;
66   - display: block;
67   - background: #FFBF00;
68   - margin: 16px auto 72px;
69   - }
70   - /* banner 区域 */
71   - .home-banner {
72   - height: 656px;
73   - color: #fff;
74   - g,
75   - ellipse {
76   - transform-box: fill-box;
77   - }
78   - .home-layout {
79   - height: 100%;
80   - display: flex;
81   - align-items: center;
82   - padding-top: 0;
83   - text-align: left;
84   - }
85   - .home-banner-content-wrapper,
86   - .home-banner-image-wrapper {
87   - width: 50%;
88   - display: inline-block;
89   - }
90   - .home-banner-content-wrapper {
91   - height: 178px;
92   - margin-bottom: 40px;
93   - }
94   - h1 {
95   - font-size: 38px;
96   - line-height: 46px;
97   - margin-bottom: 16px;
98   - font-weight: normal;
99   - color: @titleColor;
100   - }
101   - p {
102   - margin-bottom: 40px;
103   - font-size: 20px;
104   - line-height: 28px;
105   - color: @contentColor;
106   - }
107   - span {
108   - display: inline-block;
109   - }
110   - button {
111   - width: 168px;
112   - height: 48px;
113   - font-size: 20px;
114   - }
115   -
116   - .ant-btn-group button {
117   - width: 48px;
118   - }
119   - .home-banner-image-wrapper {
120   - text-align: center;
121   - margin-top: -120px;
122   - }
123   - }
124   - /* 功能介绍 */
125   - .home-func-wrapper {
126   - height: 720px;
127   - text-align: center;
128   - .image {
129   - height: 240px;
130   - position: relative;
131   - background-position: bottom center;
132   - background-repeat: no-repeat;
133   - background-size: 90% auto;
134   - margin-bottom: 62px;
135   - }
136   - .col {
137   - height: 400px;
138   - }
139   - p {
140   - font-size: 16px;
141   - color: @contentColor;
142   - }
143   - }
144   - .home-hover {
145   - border: 1px solid #E9E9E9;
146   - transition: transform .45s cubic-bezier(0.645, 0.045, 0.355, 1), box-shadow .45s cubic-bezier(0.645, 0.045, 0.355, 1), border .45s cubic-bezier(0.645, 0.045, 0.355, 1);
147   - &:hover {
148   - transform: translateY(-4px);
149   - box-shadow: 0 2px 24px fade(#000, 10);
150   - border-color: #fff;
151   - }
152   - }
153   - /* 案例 */
154   - .home-case-wrapper {
155   - .col {
156   - .content-wrapper {
157   - height: 360px;
158   - padding: 16px;
159   - .image {
160   - width: 100%;
161   - height: 100%;
162   - border-radius: 2px;
163   - background-position: center;
164   - background-repeat: no-repeat;
165   - background-size: cover;
166   - }
167   - &:hover {
168   - .code-wrapper {
169   - opacity: 1;
170   - }
171   - }
172   - }
173   - .code-wrapper {
174   - position: absolute;
175   - background: fade(#fff, 90);
176   - width: 100%;
177   - height: 100%;
178   - top: 0;
179   - left: 0;
180   - opacity: 0;
181   - transition: opacity 0.45s cubic-bezier(0.165, 0.84, 0.44, 1);
182   - h4 {
183   - font-size: 16px;
184   - font-weight: normal;
185   - margin: 72px auto 12px;
186   - color: @titleColor;
187   - }
188   - }
189   - }
190   - }
191   - .home-serve-wrapper {
192   - height: 788px;
193   - text-align: center;
194   - .col {
195   - font-size: 16px;
196   - .content-wrapper {
197   - padding: 24px 16px;
198   - height: 440px;
199   - .icon-hover {
200   - opacity: 0;
201   - transition: opacity .45s;
202   - }
203   - &:hover {
204   - .icon-hover {
205   - opacity: 1;
206   - }
207   - p {
208   - color: fade(#000000, 65);
209   - }
210   - }
211   - }
212   - .image {
213   - width: 32px;
214   - height: 32px;
215   - margin: 8px auto 12px;
216   - }
217   - h3 {
218   - margin-bottom: 24px;
219   - }
220   - p {
221   - margin-bottom: 12px;
222   - color: @contentColor;
223   - transition: color .3s;
224   - font-weight: 400;
225   - }
226   - .exp {
227   - position: absolute;
228   - bottom: 24px;
229   - left: 0;
230   - width: 100%;
231   - font-size: 20px;
232   - color: fade(#000, 25);
233   - }
234   - }
235   - }
236   - .home-user-wrapper {
237   - height: 440px;
238   - h2 {
239   - margin-top: 64px;
240   - }
241   - .col {
242   - margin-bottom: 32px;
243   - i {
244   - display: block;
245   - width: 170px;
246   - height: 56px;
247   - background-repeat: no-repeat;
248   - background-position: center;
249   - margin: auto;
250   - }
251   - }
252   - }
253   -}
254 0 \ No newline at end of file
front-end/landing-page/src/Index-En/static/responsive.less deleted 100755 → 0
front-end/landing-page/src/Index-En/static/style.js deleted 100755 → 0
1   -import './header.less';
2   -import './home.less';
3   -import './footer.less';
4   -import './responsive.less';
front-end/landing-page/src/Index/Banner.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import PropTypes from 'prop-types';
3   -import QueueAnim from 'rc-queue-anim';
4   -import { Button, Icon } from 'antd';
5   -import BannerImage from './BannerImage';
6   -
7   -const ButtonGroup = Button.Group;
8   -
9   -const LubanIcon = Icon.createFromIconfontCN({
10   - scriptUrl: '//at.alicdn.com/t/font_1455736_n0ivu1iicd.js',
11   -});
12   -
13   -class Banner extends React.PureComponent {
14   - static propTypes = {
15   - className: PropTypes.string,
16   - }
17   - static defaultProps = {
18   - className: 'home-banner',
19   - }
20   - render() {
21   - const { className } = this.props;
22   - return (
23   - <div className={`home-layout-wrapper ${className}`}>
24   - <div className="home-layout">
25   - <QueueAnim className={`${className}-content-wrapper`} delay={300} ease="easeOutQuart">
26   - <h1 key="h1">
27   - 极简制作,一键呈现
28   - </h1>
29   - <p key="p">为您提供专业的云上建站服务,满足不同行业的个性化需求</p>
30   - <span key="button">
31   - <Button
32   - type="primary"
33   - onClick={() => {
34   - window.open('https://h5.luban-h5.com')
35   - }}
36   - >
37   - 开始使用
38   - </Button>
39   - </span>
40   - <span key="button2">
41   - <ButtonGroup>
42   - <Button type="link" size="small" title="Gitee" onClick={() => {
43   - window.open("https://gitee.com/ly525/luban-h5");
44   - }}><LubanIcon type="iconmayun"/></Button>
45   - <Button type="link" size="small" title="GitHub" onClick={() => {
46   - window.open('https://github.com/ly525/luban-h5');
47   - }}><img alt="GitHub stars" src="https://img.shields.io/github/stars/ly525/luban-h5?style=social" /></Button>
48   - </ButtonGroup>
49   - </span>
50   - </QueueAnim>
51   - <div className={`${className}-image-wrapper`}>
52   - <BannerImage />
53   - </div>
54   - </div>
55   - </div>
56   - );
57   - }
58   -}
59   -
60   -export default Banner;
front-end/landing-page/src/Index/BannerImage.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import TweenOne from 'rc-tween-one';
3   -import SvgDrawPlugin from 'rc-tween-one/lib/plugin/SvgDrawPlugin';
4   -import BannerImg from '../assets/home/banner.svg'
5   -
6   -TweenOne.plugins.push(SvgDrawPlugin);
7   -
8   -export default function BannerImage() {
9   - return <img src={BannerImg} width={510} />;
10   -}
front-end/landing-page/src/Index/Footer.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import { footer } from './data';
3   -
4   -function antCloudFooter() {
5   - const children = footer.map((item, i) => (<div key={i}><a href={item.src} target="_blank">{item.text}</a></div>));
6   - return (<div>
7   - <div className="logo" key="logo">
8   - {/* <img src="https://gw.alipayobjects.com/zos/rmsportal/dnIbXmAgGbRxQJksRsJL.svg" width="72" height="82" /> */}
9   - <h1 style={{color: 'white'}}>鲁班 H5</h1>
10   - </div>
11   - <div key="nav" className="home-footer-nav-wrapper">
12   - {children}
13   - </div>
14   - </div>
15   - );
16   -}
17   -
18   -function Footer() {
19   - return (
20   - <div className="home-layout-wrapper home-footer-wrapper">
21   - <div className="home-layout">
22   - {antCloudFooter()}
23   - <p key="cop" className="copy">©2019 - 2019 Metrix-Transform All Rights Reserved</p>
24   - </div>
25   - </div>
26   - );
27   -}
28   -
29   -export default Footer;
front-end/landing-page/src/Index/Header.jsx deleted 100755 → 0
1   -import React from 'react';
2   -
3   -export default function Header(props) {
4   - return (
5   - <header {...props}>
6   - <div className="header-content">
7   - <h1>
8   - <a>
9   - <span>鲁班H5</span>
10   - </a>
11   - <span>移动建站平台</span>
12   - </h1>
13   - </div>
14   - </header>
15   - );
16   -}
front-end/landing-page/src/Index/Page1.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import QueueAnim from 'rc-queue-anim';
3   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
4   -import { Row, Col } from 'antd';
5   -import { page1 } from './data';
6   -
7   -export default function Page1() {
8   - const children = page1.map((d, i) => (
9   - <QueueAnim
10   - component={Col}
11   - key={i}
12   - type="bottom"
13   - className="col"
14   - componentProps={{ span: 8 }}
15   - >
16   - <div key="image" className="image" style={{ backgroundImage: `url(${d.src})`, backgroundSize: 'contain' }} />
17   - <h3 key="h3">{d.title}</h3>
18   - <p key="p">{d.content}</p>
19   - </QueueAnim>
20   - ));
21   - return (
22   - <div className="home-layout-wrapper home-func-wrapper" id="home-func" >
23   - <h2>功能介绍</h2>
24   - <i className="line" />
25   - <OverPack className="home-layout" location="home-func" playScale={0.4}>
26   - <QueueAnim className="home-func" type="bottom" key="home-func" ease="easeOutQuart" leaveReverse>
27   - <QueueAnim
28   - key="content"
29   - component={Row}
30   - type="bottom"
31   - componentProps={{ gutter: 171 }}
32   - >
33   - {children}
34   - </QueueAnim>
35   - </QueueAnim>
36   - </OverPack>
37   - </div>);
38   -}
front-end/landing-page/src/Index/Page2.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import QueueAnim from 'rc-queue-anim';
3   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
4   -import QRCode from 'qrcode.react';
5   -import { Row, Col } from 'antd';
6   -import { page2 } from './data';
7   -
8   -export default function Page2() {
9   - const children = page2.map((d, i) => {
10   - if (i > 2) {
11   - return null;
12   - }
13   - return (
14   - <Col key={i} className="col" span={8}>
15   - <div className="content-wrapper home-hover">
16   - <div className="image" style={{ backgroundImage: `url(${d.image})` }} />
17   - <div className="code-wrapper">
18   - <h4>扫码预览</h4>
19   - <QRCode value={d.url} size={160} />
20   - </div>
21   - </div>
22   - </Col>);
23   - });
24   - return (
25   - <div className="home-layout-wrapper home-case-wrapper">
26   - <OverPack className="home-layout" playScale={0.4}>
27   - <QueueAnim className="home-case" type="bottom" key="home-case" ease="easeOutQuart" leaveReverse>
28   - <h2 key="h2">精品案例扫一扫</h2>
29   - <i key="i" className="line" />
30   - <QueueAnim
31   - key="content"
32   - component={Row}
33   - type="bottom"
34   - componentProps={{ gutter: 171 }}
35   - >
36   - {children}
37   - </QueueAnim>
38   - </QueueAnim>
39   - </OverPack>
40   - </div>);
41   -}
front-end/landing-page/src/Index/Page3.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import QueueAnim from 'rc-queue-anim';
3   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
4   -import { Row, Col } from 'antd';
5   -import { page3 } from './data';
6   -
7   -export default function Page3() {
8   - const children = page3.map((d, i) => (
9   - <Col span={8} className="col" key={i.toString()}>
10   - <QueueAnim
11   - type="bottom"
12   - className="content-wrapper home-hover"
13   - onClick={() => { }}
14   - >
15   - <div key="image" className="image">{d.svg}</div>
16   - <h3 key="h3">{d.title}</h3>
17   - {d.content}
18   - {d.exp && <div className="exp" key="exp">{d.exp}</div>}
19   - </QueueAnim>
20   - </Col>
21   - ));
22   - return (
23   - <div className="home-layout-wrapper home-serve-wrapper">
24   - <OverPack className="home-layout" playScale={0.4}>
25   - <QueueAnim className="home-serve" type="bottom" key="home-func" ease="easeOutQuart" leaveReverse>
26   - <h2 key="h2">服务方案</h2>
27   - <i key="i" className="line" />
28   - <QueueAnim
29   - key="content"
30   - component={Row}
31   - type="bottom"
32   - componentProps={{ gutter: 96 }}
33   - >
34   - {children}
35   - </QueueAnim>
36   - </QueueAnim>
37   - </OverPack>
38   - </div>);
39   -}
front-end/landing-page/src/Index/Page4.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import QueueAnim from 'rc-queue-anim';
3   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
4   -import { Row, Col } from 'antd';
5   -import { page4 } from './data';
6   -
7   -function getLi(num, d, i) {
8   - const t = num + 1;
9   - if (i > t * 4 - 1 || i < num * 4) {
10   - return null;
11   - }
12   - return (
13   - <Col className="col" span={4} key={i} offset={!(i % 4) ? 1 : 2}>
14   - <i style={{ backgroundImage: `url(${d})` }} />
15   - </Col>
16   - );
17   -}
18   -export default function Page4() {
19   - const children = [];
20   - for (let i = 0; i < Math.floor(page4.length / 4); i++) {
21   - children.push((
22   - <QueueAnim
23   - component={Row}
24   - type="bottom"
25   - key={i}
26   - >
27   - {page4.map(getLi.bind(this, i)).filter(item => item)}
28   - </QueueAnim>));
29   - }
30   - return (
31   - <div className="home-layout-wrapper home-user-wrapper">
32   - <OverPack className="home-layout" playScale={0.4}>
33   - <QueueAnim className="home-user" type="bottom" key="home-func" ease="easeOutQuart" leaveReverse>
34   - <h2 key="h2">我们的用户</h2>
35   - <i key="i" className="line" />
36   - {children}
37   - </QueueAnim>
38   - </OverPack>
39   - </div>
40   - );
41   -}
front-end/landing-page/src/Index/data.js deleted 100755 → 0
1   -import React from 'react';
2   -import { H5_HOST } from '@/constants/config';
3   -
4   -export const page1 = [
5   - {
6   - title: '轻松建站',
7   - content: '丰富的组件系统、支持可视化编辑、自由拖拽排版、实时预览、在线访问',
8   - src: 'http://qiniu-image.luban-h5.wxjcart.com/landing-page/home-feature/quick-make.svg',
9   - },
10   - {
11   - title: '表单提交',
12   - content: '支持表单组件,即时倾听用户反馈,可以在后台查看和下载用户数据',
13   - src: 'http://qiniu-image.luban-h5.wxjcart.com/landing-page/home-feature/submit-form.svg',
14   - },
15   - {
16   - title: '导入 PSD',
17   - content: '支持一键导入PSD,将设计师的创意转换为 H5,快速查看效果、反馈、上线',
18   - src: 'http://qiniu-image.luban-h5.wxjcart.com/landing-page/home-feature/import-psd.svg',
19   - },
20   -];
21   -
22   -export const page2 = [
23   - {
24   - title: 'Invitation',
25   - url: `${H5_HOST}/works/preview/1552`,
26   - image: 'https://i.loli.net/2019/12/04/haEim2C6QnzVPOY.png',
27   - },
28   - {
29   - title: 'Good Morning',
30   - url: `${H5_HOST}/works/preview/1551`,
31   - image: 'https://i.loli.net/2019/12/04/qBCmSl4Du8jn2XZ.png',
32   - },
33   - {
34   - title: 'Day of the Programmer',
35   - url: `${H5_HOST}/works/preview/833`,
36   - image: 'https://i.loli.net/2019/12/04/s7S1no4YcuJe8Qb.png',
37   - },
38   -];
39   -
40   -export const page3 = [
41   - {
42   - title: '个人版',
43   - content: [
44   - <p key="1">支持 H5 站点制作</p>,
45   - <p key="2">支持模板管理</p>,
46   - <p key="3">支持表单提交</p>,
47   - <p key="3">支持数据统计</p>,
48   - ],
49   - // exp: '免费使用',
50   - svg: (<svg width="32px" height="32px" viewBox="0 0 32 32">
51   - <defs>
52   - <linearGradient x1="50%" y1="0%" x2="50%" y2="98.8500478%" id="linearGradient-1">
53   - <stop stopColor="#FFD24C" offset="0%" />
54   - <stop stopColor="#FFB800" offset="100%" />
55   - </linearGradient>
56   - </defs>
57   - <path
58   - d="M11.2,19.9763991 L1.43301577,25.9589289
59   - C0.542750835,26.5042392 1.20441457e-15,27.4731633 1.33226763e-15,28.5171628
60   - L0,28.5171628 L0,30 C1.3527075e-16,31.1045695 0.8954305,32 2,32
61   - L30,32 C31.1045695,32 32,31.1045695 32,30 L32,30 L32,28.5391533
62   - C32,27.4832633 31.4449138,26.5051178 30.53843,25.9636469 L30.53843,25.9636469
63   - L20.8,20.1465799 L20.8,18.1051172 C22.2729985,16.7867478 23.2,14.8708611 23.2,12.7384615
64   - L23.2,7.2 C23.2,3.2235498 19.9764502,-7.30462051e-16 16,0
65   - C12.0235498,7.30462051e-16 8.8,3.2235498 8.8,7.2 L8.8,7.2
66   - L8.8,12.7384615 C8.8,14.8708611 9.72700154,16.7867478 11.2,18.1051172 L11.2,19.9763991 Z"
67   - fill="#D9D9D9"
68   - />
69   - <path
70   - d="M11.2,19.9763991 L1.43301577,25.9589289
71   - C0.542750835,26.5042392 1.20441457e-15,27.4731633 1.33226763e-15,28.5171628
72   - L0,28.5171628 L0,30 C1.3527075e-16,31.1045695 0.8954305,32 2,32
73   - L30,32 C31.1045695,32 32,31.1045695 32,30 L32,30 L32,28.5391533
74   - C32,27.4832633 31.4449138,26.5051178 30.53843,25.9636469 L30.53843,25.9636469
75   - L20.8,20.1465799 L20.8,18.1051172 C22.2729985,16.7867478 23.2,14.8708611 23.2,12.7384615
76   - L23.2,7.2 C23.2,3.2235498 19.9764502,-7.30462051e-16 16,0
77   - C12.0235498,7.30462051e-16 8.8,3.2235498 8.8,7.2 L8.8,7.2
78   - L8.8,12.7384615 C8.8,14.8708611 9.72700154,16.7867478 11.2,18.1051172 L11.2,19.9763991 Z"
79   - fill="url(#linearGradient-1)"
80   - className="icon-hover"
81   - />
82   - </svg>),
83   - },
84   - {
85   - title: '企业版',
86   - content: [
87   - <p key="1">支持 H5 站点制作</p>,
88   - // <p key="2">支持模板管理,实现模板共享</p>,
89   - // <p key="3">支持工作组管理,实现多人协作</p>,
90   - // <p key="4">支持自定义发布审批流</p>,
91   - // <p key="5">支持自定义域名</p>,
92   - <p key="2">支持模板管理</p>,
93   - <p key="3">支持表单提交</p>,
94   - <p key="3">支持数据统计</p>,
95   - <p key="3">支持PSD导入</p>,
96   - ],
97   - svg: (
98   - <svg width="32px" height="32px" viewBox="0 0 32 32">
99   - <path
100   - d="M22.3555358,32 L9.93657149,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30
101   - L0,18 C-1.3527075e-16,16.8954305 0.8954305,16 2,16 L2,16 L6.78535432,16 L6.78535432,2
102   - L6.78535432,2 C6.78535432,0.8954305 7.68078482,2.02906125e-16 8.78535432,0 L21.7853543,0
103   - C22.8899238,-2.02906125e-16 23.7853543,0.8954305 23.7853543,2 L23.7853543,7 L30,7
104   - C31.1045695,7 32,7.8954305 32,9 L32,30 C32,31.1045695 31.1045695,32 30,32 L22.3555358,32
105   - Z M10,4 L10,8 L14,8 L14,4 L10,4 Z M10,12 L10,16 L14,16 L14,12 L10,12 Z M10,20 L10,24 L14,24
106   - L14,20 L10,20 Z M3,20 L3,24 L7,24 L7,20 L3,20 Z M17,4 L17,8 L21,8 L21,4 L17,4 Z M17,12 L17,16
107   - L21,16 L21,12 L17,12 Z M17,20 L17,24 L21,24 L21,20 L17,20 Z M24,20 L24,24 L28,24 L28,20 L24,20
108   - Z M24,12 L24,16 L28,16 L28,12 L24,12 Z"
109   - fill="#D9D9D9"
110   - />
111   - <path
112   - d="M22.3555358,32 L9.93657149,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30
113   - L0,18 C-1.3527075e-16,16.8954305 0.8954305,16 2,16 L2,16 L6.78535432,16 L6.78535432,2
114   - L6.78535432,2 C6.78535432,0.8954305 7.68078482,2.02906125e-16 8.78535432,0 L21.7853543,0
115   - C22.8899238,-2.02906125e-16 23.7853543,0.8954305 23.7853543,2 L23.7853543,7 L30,7
116   - C31.1045695,7 32,7.8954305 32,9 L32,30 C32,31.1045695 31.1045695,32 30,32 L22.3555358,32
117   - Z M10,4 L10,8 L14,8 L14,4 L10,4 Z M10,12 L10,16 L14,16 L14,12 L10,12 Z M10,20 L10,24 L14,24
118   - L14,20 L10,20 Z M3,20 L3,24 L7,24 L7,20 L3,20 Z M17,4 L17,8 L21,8 L21,4 L17,4 Z M17,12 L17,16
119   - L21,16 L21,12 L17,12 Z M17,20 L17,24 L21,24 L21,20 L17,20 Z M24,20 L24,24 L28,24 L28,20 L24,20
120   - Z M24,12 L24,16 L28,16 L28,12 L24,12 Z"
121   - fill="url(#linearGradient-1)"
122   - className="icon-hover"
123   - />
124   - </svg>),
125   - },
126   - {
127   - title: '企业 VIP 版',
128   - content: [
129   - // <p key="1">支持通过 OpenAPI 调用制作流程</p>,
130   - // <p key="2">可以指定可用模板,企业内共享模板</p>,
131   - // <p key="3">支持创建多个企业级账户</p>,
132   - // <p key="4">支持自定义发布审批流</p>,
133   - // <p key="5">支持自定义域名</p>],
134   - <p key="2">支持模板管理</p>,
135   - <p key="3">支持表单提交</p>,
136   - <p key="3">支持数据统计</p>,
137   - <p key="3">支持PSD导入</p>,
138   - <p key="3">支持自定义脚本</p>,
139   - <p key="6">支持成员管理</p>,
140   - <p key="6">支持项目管理</p>,
141   - ],
142   - svg: (
143   - <svg width="32px" height="32px" viewBox="0 0 32 32">
144   - <path
145   - d="M21.1504124,8.82079742 L16.5552541,3.32558694
146   - C16.5324137,3.29827282 16.5071873,3.27304601 16.4798736,3.25020514
147   - C16.2256714,3.03763068 15.8472742,3.07137659 15.6346998,3.32557875
148   - L15.6346998,3.32557875 L10.966694,8.90770327 L8.07603504,6.76607715
149   - L8.07603504,6.76607715 C7.80977712,6.56881247 7.43401779,6.62474254 7.23675311,6.89100046
150   - C7.13505771,7.02826378 7.09669461,7.20236809 7.13128245,7.36966081 L8.29535756,13
151   - L15.9998162,13 L23.7045714,13 L24.8686535,7.36962696
152   - C24.9357456,7.0451192 24.727069,6.72766477 24.4025612,6.66057265
153   - C24.2352715,6.62598542 24.0611703,6.66434651 23.9239079,6.76603807
154   - L21.1504124,8.82079742 Z M2,14 L30,14 C31.1045695,14 32,14.8954305 32,16
155   - L32,30 C32,31.1045695 31.1045695,32 30,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30
156   - L0,16 C-1.3527075e-16,14.8954305 0.8954305,14 2,14 L2,14 Z M16,2 C15.4477153,2 15,1.55228475 15,1
157   - C15,0.44771525 15.4477153,0 16,0 C16.5522847,0 17,0.44771525 17,1 C17,1.55228475 16.5522847,2 16,2 Z
158   - M6,6 C5.44771525,6 5,5.55228475 5,5 C5,4.44771525 5.44771525,4 6,4 C6.55228475,4 7,4.44771525 7,5
159   - C7,5.55228475 6.55228475,6 6,6 Z M26,6 C25.4477153,6 25,5.55228475 25,5
160   - C25,4.44771525 25.4477153,4 26,4 C26.5522847,4 27,4.44771525 27,5
161   - C27,5.55228475 26.5522847,6 26,6 Z M14.0979687,19.25
162   - C14.1648524,19.04375 14.177013,18.94375 14.1526917,18.825
163   - C14.1101294,18.6375 13.9094785,18.5 13.7149079,18.5
164   - C13.6237029,18.5 13.5264176,18.53125 13.459534,18.59375
165   - C13.368329,18.675 13.3257667,18.75625 13.2588831,18.9625 L11.0821247,25.80625
166   - L8.90536631,18.9625 C8.83848268,18.75625 8.79592036,18.675 8.7047154,18.59375
167   - C8.63783176,18.53125 8.54054647,18.5 8.44934151,18.5
168   - C8.25477093,18.5 8.05412002,18.6375 8.0115577,18.825
169   - C7.98723638,18.94375 7.99939704,19.04375 8.06628068,19.25 L10.5713769,26.98125
170   - C10.6260999,27.15625 10.6929835,27.3 10.7659475,27.36875
171   - C10.8632328,27.46875 10.9544378,27.5 11.0821247,27.5
172   - C11.2037313,27.5 11.2949363,27.46875 11.3983019,27.36875
173   - C11.4712659,27.3 11.5381495,27.15625 11.5928725,26.98125
174   - L14.0979687,19.25 Z M16.5726622,19.15 C16.5726622,18.9 16.5605016,18.81875 16.4875376,18.7
175   - C16.4145736,18.58125 16.274726,18.5 16.1044768,18.5 C15.9342275,18.5 15.7943799,18.58125 15.7214159,18.7
176   - C15.648452,18.81875 15.6362913,18.9 15.6362913,19.15 L15.6362913,26.85
177   - C15.6362913,27.1 15.648452,27.18125 15.7214159,27.3 C15.7943799,27.41875 15.9342275,27.5 16.1044768,27.5
178   - C16.274726,27.5 16.4145736,27.41875 16.4875376,27.3 C16.5605016,27.18125 16.5726622,27.1 16.5726622,26.85
179   - L16.5726622,19.15 Z M19.0777579,19.13125 L19.0777579,26.85
180   - C19.0777579,27.1 19.0899186,27.18125 19.1628825,27.3
181   - C19.2358465,27.41875 19.3756941,27.5 19.5459434,27.5
182   - C19.7161926,27.5 19.8560402,27.41875 19.9290042,27.3
183   - C20.0019682,27.18125 20.0141288,27.1 20.0141288,26.85
184   - L20.0141288,23.7875 L22.3124938,23.7875 C23.8872995,23.7875 25,22.75 25,21.1625
185   - C25,19.575 23.8872995,18.55 22.3124938,18.55 L19.6432287,18.55
186   - C19.4973007,18.55 19.3331318,18.55 19.2054449,18.68125
187   - C19.0777579,18.8125 19.0777579,18.98125 19.0777579,19.13125 Z M22.2395299,19.4
188   - C23.3218287,19.4 24.0575487,19.9875 24.0575487,21.1625
189   - C24.0575487,22.3375 23.3218287,22.9375 22.2395299,22.9375 L20.0141288,22.9375
190   - L20.0141288,19.4 L22.2395299,19.4 Z"
191   - fill="#D9D9D9"
192   - />
193   - <path
194   - d="M21.1504124,8.82079742 L16.5552541,3.32558694
195   - C16.5324137,3.29827282 16.5071873,3.27304601 16.4798736,3.25020514
196   - C16.2256714,3.03763068 15.8472742,3.07137659 15.6346998,3.32557875
197   - L15.6346998,3.32557875 L10.966694,8.90770327 L8.07603504,6.76607715
198   - L8.07603504,6.76607715 C7.80977712,6.56881247 7.43401779,6.62474254 7.23675311,6.89100046
199   - C7.13505771,7.02826378 7.09669461,7.20236809 7.13128245,7.36966081 L8.29535756,13
200   - L15.9998162,13 L23.7045714,13 L24.8686535,7.36962696
201   - C24.9357456,7.0451192 24.727069,6.72766477 24.4025612,6.66057265
202   - C24.2352715,6.62598542 24.0611703,6.66434651 23.9239079,6.76603807
203   - L21.1504124,8.82079742 Z M2,14 L30,14 C31.1045695,14 32,14.8954305 32,16
204   - L32,30 C32,31.1045695 31.1045695,32 30,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30
205   - L0,16 C-1.3527075e-16,14.8954305 0.8954305,14 2,14 L2,14 Z M16,2 C15.4477153,2 15,1.55228475 15,1
206   - C15,0.44771525 15.4477153,0 16,0 C16.5522847,0 17,0.44771525 17,1 C17,1.55228475 16.5522847,2 16,2 Z
207   - M6,6 C5.44771525,6 5,5.55228475 5,5 C5,4.44771525 5.44771525,4 6,4 C6.55228475,4 7,4.44771525 7,5
208   - C7,5.55228475 6.55228475,6 6,6 Z M26,6 C25.4477153,6 25,5.55228475 25,5
209   - C25,4.44771525 25.4477153,4 26,4 C26.5522847,4 27,4.44771525 27,5
210   - C27,5.55228475 26.5522847,6 26,6 Z M14.0979687,19.25
211   - C14.1648524,19.04375 14.177013,18.94375 14.1526917,18.825
212   - C14.1101294,18.6375 13.9094785,18.5 13.7149079,18.5
213   - C13.6237029,18.5 13.5264176,18.53125 13.459534,18.59375
214   - C13.368329,18.675 13.3257667,18.75625 13.2588831,18.9625 L11.0821247,25.80625
215   - L8.90536631,18.9625 C8.83848268,18.75625 8.79592036,18.675 8.7047154,18.59375
216   - C8.63783176,18.53125 8.54054647,18.5 8.44934151,18.5
217   - C8.25477093,18.5 8.05412002,18.6375 8.0115577,18.825
218   - C7.98723638,18.94375 7.99939704,19.04375 8.06628068,19.25 L10.5713769,26.98125
219   - C10.6260999,27.15625 10.6929835,27.3 10.7659475,27.36875
220   - C10.8632328,27.46875 10.9544378,27.5 11.0821247,27.5
221   - C11.2037313,27.5 11.2949363,27.46875 11.3983019,27.36875
222   - C11.4712659,27.3 11.5381495,27.15625 11.5928725,26.98125
223   - L14.0979687,19.25 Z M16.5726622,19.15 C16.5726622,18.9 16.5605016,18.81875 16.4875376,18.7
224   - C16.4145736,18.58125 16.274726,18.5 16.1044768,18.5 C15.9342275,18.5 15.7943799,18.58125 15.7214159,18.7
225   - C15.648452,18.81875 15.6362913,18.9 15.6362913,19.15 L15.6362913,26.85
226   - C15.6362913,27.1 15.648452,27.18125 15.7214159,27.3 C15.7943799,27.41875 15.9342275,27.5 16.1044768,27.5
227   - C16.274726,27.5 16.4145736,27.41875 16.4875376,27.3 C16.5605016,27.18125 16.5726622,27.1 16.5726622,26.85
228   - L16.5726622,19.15 Z M19.0777579,19.13125 L19.0777579,26.85
229   - C19.0777579,27.1 19.0899186,27.18125 19.1628825,27.3
230   - C19.2358465,27.41875 19.3756941,27.5 19.5459434,27.5
231   - C19.7161926,27.5 19.8560402,27.41875 19.9290042,27.3
232   - C20.0019682,27.18125 20.0141288,27.1 20.0141288,26.85
233   - L20.0141288,23.7875 L22.3124938,23.7875 C23.8872995,23.7875 25,22.75 25,21.1625
234   - C25,19.575 23.8872995,18.55 22.3124938,18.55 L19.6432287,18.55
235   - C19.4973007,18.55 19.3331318,18.55 19.2054449,18.68125
236   - C19.0777579,18.8125 19.0777579,18.98125 19.0777579,19.13125 Z M22.2395299,19.4
237   - C23.3218287,19.4 24.0575487,19.9875 24.0575487,21.1625
238   - C24.0575487,22.3375 23.3218287,22.9375 22.2395299,22.9375 L20.0141288,22.9375
239   - L20.0141288,19.4 L22.2395299,19.4 Z"
240   - fill="url(#linearGradient-1)"
241   - className="icon-hover"
242   - />
243   - </svg>),
244   - },
245   -];
246   -
247   -export const page4 = [
248   - 'https://gw.alipayobjects.com/zos/rmsportal/kJPmZttedahfIvsZDGTd.svg',
249   - 'https://gw.alipayobjects.com/zos/rmsportal/ktLOdfjNyExgKyWjiCvm.svg',
250   - 'https://gw.alipayobjects.com/zos/rmsportal/gNNxbrNqlHdnRuMjUXrL.svg',
251   - 'https://gw.alipayobjects.com/zos/rmsportal/qWaneWxxMVpASpiCOcsT.svg',
252   - 'https://gw.alipayobjects.com/zos/rmsportal/kyCpvqWFloOpAOqzOlBg.svg',
253   - 'https://gw.alipayobjects.com/zos/rmsportal/bBzJNEnPvyhNUhyHipvO.svg',
254   - 'https://gw.alipayobjects.com/zos/rmsportal/UbEpCMXGBmDgkJXfIgMx.svg',
255   - 'https://gw.alipayobjects.com/zos/rmsportal/xsWGKOdkRoJnzHIZlRiD.svg',
256   -];
257   -
258   -export const footer = [
259   - // { text: '解决方案', src: '#' },
260   - { text: '中文文档', src: 'https://ly525.github.io/luban-h5' },
261   - { text: 'English Document', src: 'https://ly525.github.io/luban-h5' },
262   - // { text: '模板开发文档', src: '#' },
263   - { text: '联系我们', src: 'https://github.com/ly525/luban-h5#%E4%BA%A4%E6%B5%81%E7%BE%A4' },
264   - // { text: '联系我们', src: 'mailto:zhao.wuz@antfin.com' },
265   -];
front-end/landing-page/src/Index/index.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import DocumentTitle from 'react-document-title';
3   -// import Header from './Header';
4   -import Banner from './Banner';
5   -import Page1 from './Page1';
6   -import Page2 from './Page2';
7   -import Page3 from './Page3';
8   -// import Page4 from './Page4';
9   -import Footer from './Footer';
10   -import './static/style';
11   -
12   -// 不支持移动端
13   -class Home extends React.PureComponent {
14   - render() {
15   - return (
16   - <div className="home-page">
17   - {/* <Header key="header" /> */}
18   - <Banner key="banner" />
19   - <Page1 key="page1" />
20   - <Page2 key="page2" />
21   - <Page3 key="page3" />
22   - {/* <Page4 key="page4" /> */}
23   - <Footer key="footer" />
24   - <DocumentTitle title="鲁班H5 - 移动建站平台" />
25   - </div>
26   - );
27   - }
28   -}
29   -export default Home;
front-end/landing-page/src/Index/static/custom.less deleted 100755 → 0
1   -body {
2   - // overflow: hidden;
3   -}
4   -
5   -.text-center {
6   - text-align: center!important;
7   -}
front-end/landing-page/src/Index/static/default.less deleted 100755 → 0
1   -@import "~antd/lib/style/themes/default.less";
2   -// 品牌色
3   -@color-fengdie: #ffbf00;
4   -// 线框
5   -@border-color: #D9D9D9;
6   -// 分割线
7   -@separate-line-color: #E9E9E9;
8   -// 多行文本
9   -@font-color: rgba(0,0,0,.65);
10   -// 标题、单行
11   -@font-important-color: rgba(0,0,0,.85);
12   -@font-active-color: #666;
13   -// 辅助信息
14   -@font-tip-color: rgba(0,0,0,.43);
15   -// 警告色
16   -@font-warning: #f56a00;
17   -// 失败色
18   -@font-fail: #f04134;
19   -
20   -// 主按钮颜色
21   -@button-primary-color: #ffbf00;
22   -@label-color: #666;
23   -@border-active-color: #ffbf00;
24   -@background-active-color: #FFF8EF;
25   -@link-color: #50A4DB;
26   -@selected-color: #FFBC40;
27   -@moved-color: #FFF1E0;
28   -@header-background-color: #222222;
29   -
30   -@status-released-color: #00A854;
31   -@status-editing-color: #2DB7F5;
32   -@status-previewing-color: #7265E6;
33   -@status-approve_waiting-color: #FAC450;
34   -@status-approve_refused-color: #FF6600;
35   -@status-release_fail-color: #FF6600;
36   -@status-noop-color: #999;
37   -@search-input-border-color: #F59F16;
38   -
39   -
40   -@approveButtonBackgroundColor: #f7f7f7;
41   -@weekBackgroundColor: #FBFBFB;
42   -
43   -@highlight-font-color: @search-input-border-color;
44   -
45   -@white-background-color: #fff;
46   -
47   -@bgColor: #F7F7F7;
48   -@titleColor: fade(#000, 85);
49   -@contentColor: fade(#000, 43);
50 0 \ No newline at end of file
front-end/landing-page/src/Index/static/footer.less deleted 100755 → 0
1   -.home-page .home-footer-wrapper {
2   - height: 336px;
3   - background: #404040 !important;
4   - color: fade(#fff, 65);
5   - font-size: 14px;
6   - .home-layout {
7   - padding: 72px 32px 0;
8   - .copy{
9   - color: fade(#fff, 43);
10   - }
11   - }
12   - .home-footer-nav-wrapper {
13   - margin: 48px auto 16px;
14   - > div {
15   - display: inline-block;
16   - padding: 0 36px;
17   - border-right: 1px solid #fff;
18   - &:last-child {
19   - border-right: none;
20   - }
21   - a {
22   - display: block;
23   - color: fade(#fff, 65);
24   - font-size: 16px;
25   - line-height: 16px;
26   - }
27   - }
28   - }
29   - .logo{ margin-bottom: 5px; }
30   -}
31 0 \ No newline at end of file
front-end/landing-page/src/Index/static/header.less deleted 100755 → 0
1   -header {
2   - width: 100%;
3   - z-index: 1000;
4   - top: 0;
5   - background-color: #fff;
6   - .header-content {
7   - display: flex;
8   - justify-content: space-between;
9   - align-items: center;
10   - height: 64px;
11   - font-size: 14px;
12   - padding: 0 24px;
13   - width: 1152px;
14   - margin: 0 auto;
15   - h1 {
16   - position: relative;
17   - &:before {
18   - content: "";
19   - position: absolute;
20   - top: 10px;
21   - left: 144px;
22   - width: 1px;
23   - height: 12px;
24   - background: #999;
25   - }
26   - a {
27   - display: block;
28   - width: 120px;
29   - height: 32px;
30   - background: url(https://gw.alipayobjects.com/zos/rmsportal/qdWihUzYxihpnOMVhFPV.png) no-repeat 0 50%;
31   - background-size: 120px 32px;
32   - text-indent: -999em;
33   - }
34   - span{
35   - position: absolute;
36   - font-size: 14px;
37   - font-weight: 400;
38   - top: 6px;
39   - left: 168px;
40   - color: rgba(0,0,0,.65);
41   - white-space: nowrap;
42   - }
43   - }
44   - }
45   -}
46 0 \ No newline at end of file
front-end/landing-page/src/Index/static/home.less deleted 100755 → 0
1   -@import './default.less';
2   -.home-page {
3   - .fd-content {
4   - min-width: 1216px;
5   - background: #FFF;
6   - font-family: PingFangSC, Helvetica Neue, Helvetica, PingFang SC-Light, Hiragino Sans GB, Microsoft YaHei, SimSun, sans-serif;
7   - }
8   - h2,
9   - h3,
10   - h4,
11   - h5 {
12   - font-weight: 100;
13   - }
14   - .home-layout-wrapper {
15   - width: 100%;
16   - height: 720px;
17   - text-align: center;
18   - overflow: hidden;
19   - .home-layout {
20   - margin: 0 auto;
21   - width: 1152px;
22   - padding: 0 24px;
23   - overflow: hidden;
24   - height: 100%;
25   - >div {
26   - float: left;
27   - width: 100%;
28   - }
29   - .col {
30   - .content-wrapper {
31   - border-radius: 4px;
32   - background: #fff;
33   - cursor: pointer;
34   - overflow: hidden;
35   - position: relative;
36   - }
37   - }
38   - }
39   - &:nth-of-type(odd) {
40   - background: #fff;
41   - }
42   - &:nth-of-type(even) {
43   - background-color: @bgColor;
44   - }
45   - }
46   - h2,
47   - h3 {
48   - text-align: center;
49   - font-weight: normal;
50   - }
51   - h2 {
52   - font-size: 30px;
53   - line-height: 38px;
54   - color: @titleColor;
55   - margin-top: 88px;
56   - }
57   - h3 {
58   - font-size: 24px;
59   - line-height: 32px;
60   - margin-bottom: 16px;
61   - color: @titleColor;
62   - }
63   - .line {
64   - width: 40px;
65   - height: 2px;
66   - display: block;
67   - background: #FFBF00;
68   - margin: 16px auto 72px;
69   - }
70   - /* banner 区域 */
71   - .home-banner {
72   - height: 656px;
73   - color: #fff;
74   - g,
75   - ellipse {
76   - transform-box: fill-box;
77   - }
78   - .home-layout {
79   - height: 100%;
80   - display: flex;
81   - align-items: center;
82   - padding-top: 0;
83   - text-align: left;
84   - }
85   - .home-banner-content-wrapper,
86   - .home-banner-image-wrapper {
87   - width: 50%;
88   - display: inline-block;
89   - }
90   - .home-banner-content-wrapper {
91   - height: 178px;
92   - margin-bottom: 40px;
93   - }
94   - h1 {
95   - font-size: 38px;
96   - line-height: 46px;
97   - margin-bottom: 16px;
98   - font-weight: normal;
99   - color: @titleColor;
100   - }
101   - p {
102   - margin-bottom: 40px;
103   - font-size: 20px;
104   - line-height: 28px;
105   - color: @contentColor;
106   - }
107   - span {
108   - display: inline-block;
109   - }
110   - button {
111   - width: 168px;
112   - height: 48px;
113   - font-size: 20px;
114   - }
115   -
116   - .ant-btn-group button {
117   - width: 48px;
118   - }
119   - .home-banner-image-wrapper {
120   - text-align: center;
121   - margin-top: -120px;
122   - }
123   - }
124   - /* 功能介绍 */
125   - .home-func-wrapper {
126   - height: 720px;
127   - text-align: center;
128   - .image {
129   - height: 240px;
130   - position: relative;
131   - background-position: bottom center;
132   - background-repeat: no-repeat;
133   - background-size: 90% auto;
134   - margin-bottom: 62px;
135   - }
136   - .col {
137   - height: 400px;
138   - }
139   - p {
140   - font-size: 16px;
141   - color: @contentColor;
142   - }
143   - }
144   - .home-hover {
145   - border: 1px solid #E9E9E9;
146   - transition: transform .45s cubic-bezier(0.645, 0.045, 0.355, 1), box-shadow .45s cubic-bezier(0.645, 0.045, 0.355, 1), border .45s cubic-bezier(0.645, 0.045, 0.355, 1);
147   - &:hover {
148   - transform: translateY(-4px);
149   - box-shadow: 0 2px 24px fade(#000, 10);
150   - border-color: #fff;
151   - }
152   - }
153   - /* 案例 */
154   - .home-case-wrapper {
155   - .col {
156   - .content-wrapper {
157   - height: 360px;
158   - padding: 16px;
159   - .image {
160   - width: 100%;
161   - height: 100%;
162   - border-radius: 2px;
163   - background-position: center;
164   - background-repeat: no-repeat;
165   - background-size: cover;
166   - }
167   - &:hover {
168   - .code-wrapper {
169   - opacity: 1;
170   - }
171   - }
172   - }
173   - .code-wrapper {
174   - position: absolute;
175   - background: fade(#fff, 90);
176   - width: 100%;
177   - height: 100%;
178   - top: 0;
179   - left: 0;
180   - opacity: 0;
181   - transition: opacity 0.45s cubic-bezier(0.165, 0.84, 0.44, 1);
182   - h4 {
183   - font-size: 16px;
184   - font-weight: normal;
185   - margin: 72px auto 12px;
186   - color: @titleColor;
187   - }
188   - }
189   - }
190   - }
191   - .home-serve-wrapper {
192   - height: 788px;
193   - text-align: center;
194   - .col {
195   - font-size: 16px;
196   - .content-wrapper {
197   - padding: 24px 16px;
198   - height: 440px;
199   - .icon-hover {
200   - opacity: 0;
201   - transition: opacity .45s;
202   - }
203   - &:hover {
204   - .icon-hover {
205   - opacity: 1;
206   - }
207   - p {
208   - color: fade(#000000, 65);
209   - }
210   - }
211   - }
212   - .image {
213   - width: 32px;
214   - height: 32px;
215   - margin: 8px auto 12px;
216   - }
217   - h3 {
218   - margin-bottom: 24px;
219   - }
220   - p {
221   - margin-bottom: 12px;
222   - color: @contentColor;
223   - transition: color .3s;
224   - font-weight: 400;
225   - }
226   - .exp {
227   - position: absolute;
228   - bottom: 24px;
229   - left: 0;
230   - width: 100%;
231   - font-size: 20px;
232   - color: fade(#000, 25);
233   - }
234   - }
235   - }
236   - .home-user-wrapper {
237   - height: 440px;
238   - h2 {
239   - margin-top: 64px;
240   - }
241   - .col {
242   - margin-bottom: 32px;
243   - i {
244   - display: block;
245   - width: 170px;
246   - height: 56px;
247   - background-repeat: no-repeat;
248   - background-position: center;
249   - margin: auto;
250   - }
251   - }
252   - }
253   -}
254 0 \ No newline at end of file
front-end/landing-page/src/Index/static/responsive.less deleted 100755 → 0
front-end/landing-page/src/Index/static/style.js deleted 100755 → 0
1   -import './header.less';
2   -import './home.less';
3   -import './footer.less';
4   -import './responsive.less';
front-end/landing-page/src/Page2/Banner0.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import { Button, Icon } from 'antd';
3   -import QueueAnim from 'rc-queue-anim';
4   -import TweenOne from 'rc-tween-one';
5   -
6   -class Banner extends React.PureComponent {
7   - render() {
8   - const { ...currentProps } = this.props;
9   - const { dataSource } = currentProps;
10   - delete currentProps.dataSource;
11   - delete currentProps.isMobile;
12   - return (
13   - <div {...currentProps} {...dataSource.wrapper}>
14   - <QueueAnim
15   - key="QueueAnim"
16   - type={['bottom', 'top']}
17   - delay={200}
18   - {...dataSource.textWrapper}
19   - >
20   - <div key="title" {...dataSource.title}>
21   - {dataSource.title.children.match(
22   - /\.(svg|gif|jpg|jpeg|png|JPG|PNG|GIF|JPEG)$/
23   - ) ? (
24   - <img src={dataSource.title.children} width="100%" alt="img" />
25   - ) : (
26   - dataSource.title.children
27   - )}
28   - </div>
29   - <div key="content" {...dataSource.content}>
30   - {dataSource.content.children}
31   - </div>
32   - <Button ghost key="button" {...dataSource.button}>
33   - {dataSource.button.children}
34   - </Button>
35   - </QueueAnim>
36   - <TweenOne
37   - animation={{
38   - y: '-=20',
39   - yoyo: true,
40   - repeat: -1,
41   - duration: 1000,
42   - }}
43   - className="banner0-icon"
44   - key="icon"
45   - >
46   - <Icon type="down" />
47   - </TweenOne>
48   - </div>
49   - );
50   - }
51   -}
52   -export default Banner;
front-end/landing-page/src/Page2/Content0.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import QueueAnim from 'rc-queue-anim';
3   -import { Row, Col } from 'antd';
4   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
5   -
6   -class Content extends React.PureComponent {
7   - getBlockChildren = data => data.map((item, i) => {
8   - const children = item.children;
9   - return (
10   - <Col key={i.toString()} {...item}>
11   - <div {...children.icon}>
12   - <img src={children.icon.children} width="100%" alt="img" />
13   - </div>
14   - <h3 {...children.title}>{children.title.children}</h3>
15   - <p {...children.content}>{children.content.children}</p>
16   - </Col>
17   - );
18   - });
19   -
20   - render() {
21   - const { ...props } = this.props;
22   - const { dataSource } = props;
23   - delete props.dataSource;
24   - delete props.isMobile;
25   - const listChildren = this.getBlockChildren(dataSource.block.children);
26   - return (
27   - <div {...props} {...dataSource.wrapper}>
28   - <div {...dataSource.page}>
29   - <div {...dataSource.titleWrapper}>
30   - {dataSource.titleWrapper.children.map((item, i) => React.createElement(
31   - item.name.indexOf('title') === 0 ? 'h1' : 'div',
32   - { key: i.toString(), ...item },
33   - item.children.match(
34   - /\.(svg|gif|jpg|jpeg|png|JPG|PNG|GIF|JPEG)$/
35   - )
36   - ? React.createElement('img', {
37   - src: item.children,
38   - height: '100%',
39   - alt: 'img',
40   - })
41   - : item.children
42   - )
43   - )}
44   - </div>
45   - <OverPack {...dataSource.OverPack}>
46   - <QueueAnim
47   - type="bottom"
48   - key="block"
49   - leaveReverse
50   - {...dataSource.block}
51   - component={Row}
52   - >
53   - {listChildren}
54   - </QueueAnim>
55   - </OverPack>
56   - </div>
57   - </div>
58   - );
59   - }
60   -}
61   -
62   -export default Content;
front-end/landing-page/src/Page2/Content12.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import { Row, Col } from 'antd';
3   -import { TweenOneGroup } from 'rc-tween-one';
4   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
5   -
6   -class Content12 extends React.PureComponent {
7   - getChildrenToRender = data => data.map((item) => {
8   - return (
9   - <Col key={item.name} {...item}>
10   - <div {...item.children.wrapper}>
11   - <span {...item.children.img}>
12   - <img src={item.children.img.children} alt="img" />
13   - </span>
14   - </div>
15   - </Col>
16   - );
17   - });
18   -
19   - render() {
20   - const { ...props } = this.props;
21   - const { dataSource } = props;
22   - delete props.dataSource;
23   - delete props.isMobile;
24   - const childrenToRender = this.getChildrenToRender(
25   - dataSource.block.children
26   - );
27   - return (
28   - <div {...props} {...dataSource.wrapper}>
29   - <div {...dataSource.page}>
30   - <div key="title" {...dataSource.titleWrapper}>
31   - {dataSource.titleWrapper.children.map((item, i) => React.createElement(
32   - item.name.indexOf('title') === 0 ? 'h1' : 'div',
33   - { key: i.toString(), ...item },
34   - item.children.match(
35   - /\.(svg|gif|jpg|jpeg|png|JPG|PNG|GIF|JPEG)$/
36   - )
37   - ? React.createElement('img', {
38   - src: item.children,
39   - alt: 'img',
40   - })
41   - : item.children
42   - )
43   - )}
44   - </div>
45   - <OverPack
46   - className={`content-template ${props.className}`}
47   - {...dataSource.OverPack}
48   - >
49   - <TweenOneGroup
50   - component={Row}
51   - key="ul"
52   - enter={{
53   - y: '+=30',
54   - opacity: 0,
55   - type: 'from',
56   - ease: 'easeOutQuad',
57   - }}
58   - leave={{ y: '+=30', opacity: 0, ease: 'easeOutQuad' }}
59   - {...dataSource.block}
60   - >
61   - {childrenToRender}
62   - </TweenOneGroup>
63   - </OverPack>
64   - </div>
65   - </div>
66   - );
67   - }
68   -}
69   -
70   -export default Content12;
front-end/landing-page/src/Page2/Content13.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
3   -import QueueAnim from 'rc-queue-anim';
4   -
5   -class Content13 extends React.PureComponent {
6   - render() {
7   - const { ...props } = this.props;
8   - const { dataSource } = props;
9   - delete props.dataSource;
10   - delete props.isMobile;
11   - return (
12   - <OverPack {...props} {...dataSource.OverPack}>
13   - <QueueAnim
14   - type="bottom"
15   - leaveReverse
16   - key="page"
17   - delay={[0, 100]}
18   - {...dataSource.titleWrapper}
19   - >
20   - {dataSource.titleWrapper.children.map((item, i) => React.createElement(
21   - item.name.indexOf('title') === 0 ? 'h1' : 'div',
22   - { key: i.toString(), ...item },
23   - item.children.match(/\.(svg|gif|jpg|jpeg|png|JPG|PNG|GIF|JPEG)$/)
24   - ? React.createElement('img', { src: item.children, alt: 'img' })
25   - : item.children
26   - )
27   - )}
28   - </QueueAnim>
29   - </OverPack>
30   - );
31   - }
32   -}
33   -
34   -export default Content13;
front-end/landing-page/src/Page2/Content7.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import TweenOne from 'rc-tween-one';
3   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
4   -import { Tabs, Icon, Row, Col } from 'antd';
5   -
6   -const TabPane = Tabs.TabPane;
7   -
8   -class Content7 extends React.Component {
9   - constructor(props) {
10   - super(props);
11   - this.state = {
12   - current: 1,
13   - };
14   - }
15   -
16   - onChange = (key) => {
17   - this.setState({ current: parseFloat(key) });
18   - };
19   -
20   - getBlockChildren = (item, i) => {
21   - const { tag, content } = item;
22   - const { text, img } = content;
23   - const textChildren = text.children;
24   - const { icon } = tag;
25   - const iconChildren = icon.children;
26   - const tagText = tag.text;
27   - return (
28   - <TabPane
29   - key={i + 1}
30   - tab={(
31   - <div className={tag.className}>
32   - <Icon type={iconChildren} className={icon.className} />
33   - <div {...tagText}>{tagText.children}</div>
34   - </div>
35   - )}
36   - className={item.className}
37   - >
38   - <TweenOne.TweenOneGroup
39   - enter={{
40   - y: 30,
41   - delay: 300,
42   - opacity: 0,
43   - type: 'from',
44   - ease: 'easeOutQuad',
45   - }}
46   - leave={null}
47   - component=""
48   - >
49   - {this.state.current === i + 1 && (
50   - <Row
51   - key="content"
52   - className={content.className}
53   - gutter={content.gutter}
54   - >
55   - <Col className={text.className} xs={text.xs} md={text.md}>
56   - {textChildren}
57   - </Col>
58   - <Col className={img.className} xs={img.xs} md={img.md}>
59   - <img src={img.children} width="100%" alt="img" />
60   - </Col>
61   - </Row>
62   - )}
63   - </TweenOne.TweenOneGroup>
64   - </TabPane>
65   - );
66   - };
67   -
68   - render() {
69   - const { ...props } = this.props;
70   - const { dataSource } = props;
71   - delete props.dataSource;
72   - delete props.isMobile;
73   - const tabsChildren = dataSource.block.children.map(this.getBlockChildren);
74   - return (
75   - <div {...props} {...dataSource.wrapper}>
76   - <div {...dataSource.page}>
77   - <div {...dataSource.titleWrapper}>
78   - {dataSource.titleWrapper.children.map((item, i) => React.createElement(
79   - item.name.indexOf('title') === 0 ? 'h1' : 'div',
80   - { key: i.toString(), ...item },
81   - item.children.match(
82   - /\.(svg|gif|jpg|jpeg|png|JPG|PNG|GIF|JPEG)$/
83   - )
84   - ? React.createElement('img', {
85   - src: item.children,
86   - alt: 'img',
87   - })
88   - : item.children
89   - )
90   - )}
91   - </div>
92   -
93   - <OverPack {...dataSource.OverPack}>
94   - <TweenOne.TweenOneGroup
95   - key="tabs"
96   - enter={{
97   - y: 30,
98   - opacity: 0,
99   - delay: 200,
100   - type: 'from',
101   - }}
102   - leave={{ y: 30, opacity: 0 }}
103   - {...dataSource.tabsWrapper}
104   - >
105   - <Tabs
106   - key="tabs"
107   - onChange={this.onChange}
108   - activeKey={`${this.state.current}`}
109   - {...dataSource.block}
110   - >
111   - {tabsChildren}
112   - </Tabs>
113   - </TweenOne.TweenOneGroup>
114   - </OverPack>
115   - </div>
116   - </div>
117   - );
118   - }
119   -}
120   -
121   -export default Content7;
front-end/landing-page/src/Page2/data.source.js deleted 100755 → 0
1   -import React from 'react';
2   -
3   -export const Banner00DataSource = {
4   - wrapper: { className: 'banner0' },
5   - textWrapper: { className: 'banner0-text-wrapper' },
6   - title: {
7   - className: 'banner0-title',
8   - children: 'https://zos.alipayobjects.com/rmsportal/HqnZZjBjWRbjyMr.png',
9   - },
10   - content: {
11   - className: 'banner0-content',
12   - children: (
13   - <span>
14   - <p>dsdf</p>
15   - <p>aaaaa</p>
16   - </span>
17   - ),
18   - },
19   - button: { className: 'banner0-button', children: 'Learn More' },
20   -};
21   -export const Content00DataSource = {
22   - wrapper: { className: 'home-page-wrapper content0-wrapper' },
23   - page: { className: 'home-page content0' },
24   - OverPack: { playScale: 0.3, className: '' },
25   - titleWrapper: {
26   - className: 'title-wrapper',
27   - children: [{ name: 'title', children: '产品与服务' }],
28   - },
29   - block: {
30   - className: 'block-wrapper',
31   - children: [
32   - {
33   - name: 'block0',
34   - className: 'block',
35   - md: 8,
36   - xs: 24,
37   - children: {
38   - icon: {
39   - className: 'icon',
40   - children:
41   - 'https://zos.alipayobjects.com/rmsportal/WBnVOjtIlGWbzyQivuyq.png',
42   - },
43   - title: { children: '一站式业务接入' },
44   - content: { children: '支付、结算、核算接入产品效率翻四倍' },
45   - },
46   - },
47   - {
48   - name: 'block1',
49   - className: 'block',
50   - md: 8,
51   - xs: 24,
52   - children: {
53   - icon: {
54   - className: 'icon',
55   - children:
56   - 'https://zos.alipayobjects.com/rmsportal/YPMsLQuCEXtuEkmXTTdk.png',
57   - },
58   - title: { children: '一站式事中风险监控' },
59   - content: { children: '在所有需求配置环节事前风险控制和质量控制能力' },
60   - },
61   - },
62   - {
63   - name: 'block2',
64   - className: 'block',
65   - md: 8,
66   - xs: 24,
67   - children: {
68   - icon: {
69   - className: 'icon',
70   - children:
71   - 'https://zos.alipayobjects.com/rmsportal/EkXWVvAaFJKCzhMmQYiX.png',
72   - },
73   - title: { children: '一站式数据运营' },
74   - content: { children: '沉淀产品接入效率和运营小二工作效率数据' },
75   - },
76   - },
77   - ],
78   - },
79   -};
80   -export const Content70DataSource = {
81   - wrapper: { className: 'home-page-wrapper content7-wrapper' },
82   - page: { className: 'home-page content7' },
83   - OverPack: {},
84   - titleWrapper: {
85   - className: 'title-wrapper',
86   - children: [
87   - {
88   - name: 'title',
89   - children: '蚂蚁金融云提供专业的服务',
90   - className: 'title-h1',
91   - },
92   - { name: 'content', children: '基于阿里云计算强大的基础资源' },
93   - ],
94   - },
95   - tabsWrapper: { className: 'content7-tabs-wrapper' },
96   - block: {
97   - children: [
98   - {
99   - name: 'block0',
100   - tag: {
101   - className: 'content7-tag',
102   - text: { children: 'PHONE', className: 'content7-tag-name' },
103   - icon: { children: 'mobile' },
104   - },
105   - content: {
106   - className: 'content7-content',
107   - text: {
108   - className: 'content7-text',
109   - md: 14,
110   - xs: 24,
111   - children: (
112   - <span>
113   - <h3>技术</h3>
114   - <p>
115   - 丰富的技术组件,简单组装即可快速搭建金融级应用,丰富的技术组件,简单组装即可快速搭建金融级应用。
116   - </p>
117   - <br />
118   - <h3>融合</h3>
119   - <p>
120   - 解放业务及技术生产力,推动金融服务底层创新,推动金融服务底层创新。解放业务及技术生产力,推动金融服务底层创新。
121   - </p>
122   - <br />
123   - <h3>
124   - 开放
125   - </h3>
126   - 符合金融及要求的安全可靠、高可用、高性能的服务能力,符合金融及要求的安全可靠、高可用、高性能的服务能力。
127   - </span>
128   - ),
129   - },
130   - img: {
131   - className: 'content7-img',
132   - children:
133   - 'https://zos.alipayobjects.com/rmsportal/xBrUaDROgtFBRRL.png',
134   - md: 10,
135   - xs: 24,
136   - },
137   - },
138   - },
139   - {
140   - name: 'block1',
141   - tag: {
142   - className: 'content7-tag',
143   - icon: { children: 'tablet' },
144   - text: { className: 'content7-tag-name', children: 'TABLET' },
145   - },
146   - content: {
147   - className: 'content7-content',
148   - text: {
149   - className: 'content7-text',
150   - md: 14,
151   - xs: 24,
152   - children: (
153   - <span>
154   - <h3>技术</h3>
155   - <p>
156   - 丰富的技术组件,简单组装即可快速搭建金融级应用,丰富的技术组件,简单组装即可快速搭建金融级应用。
157   - </p>
158   - <br />
159   - <h3>融合</h3>
160   - <p>
161   - 解放业务及技术生产力,推动金融服务底层创新,推动金融服务底层创新。解放业务及技术生产力,推动金融服务底层创新。
162   - </p>
163   - <br />
164   - <h3>
165   - 开放
166   - </h3>
167   - 符合金融及要求的安全可靠、高可用、高性能的服务能力,符合金融及要求的安全可靠、高可用、高性能的服务能力。
168   - </span>
169   - ),
170   - },
171   - img: {
172   - className: 'content7-img',
173   - md: 10,
174   - xs: 24,
175   - children:
176   - 'https://zos.alipayobjects.com/rmsportal/xBrUaDROgtFBRRL.png',
177   - },
178   - },
179   - },
180   - {
181   - name: 'block2',
182   - tag: {
183   - className: 'content7-tag',
184   - text: { children: 'DESKTOP', className: 'content7-tag-name' },
185   - icon: { children: 'laptop' },
186   - },
187   - content: {
188   - className: 'content7-content',
189   - text: {
190   - className: 'content7-text',
191   - md: 14,
192   - xs: 24,
193   - children: (
194   - <span>
195   - <h3>技术</h3>
196   - <p>
197   - 丰富的技术组件,简单组装即可快速搭建金融级应用,丰富的技术组件,简单组装即可快速搭建金融级应用。
198   - </p>
199   - <br />
200   - <h3>融合</h3>
201   - <p>
202   - 解放业务及技术生产力,推动金融服务底层创新,推动金融服务底层创新。解放业务及技术生产力,推动金融服务底层创新。
203   - </p>
204   - <br />
205   - <h3>
206   - 开放
207   - </h3>
208   - 符合金融及要求的安全可靠、高可用、高性能的服务能力,符合金融及要求的安全可靠、高可用、高性能的服务能力。
209   - </span>
210   - ),
211   - },
212   - img: {
213   - className: 'content7-img',
214   - md: 10,
215   - xs: 24,
216   - children:
217   - 'https://zos.alipayobjects.com/rmsportal/xBrUaDROgtFBRRL.png',
218   - },
219   - },
220   - },
221   - ],
222   - },
223   -};
224   -export const Content130DataSource = {
225   - OverPack: {
226   - className:
227   - 'home-page-wrapper content13-wrapper home-page-wrapper content13-wrapper jnwq7vhwgqg-editor_css',
228   - playScale: 0.3,
229   - },
230   - titleWrapper: {
231   - className: 'title-wrapper',
232   - children: [
233   - { name: 'title', children: '丰富的特色展台', className: 'title-h1' },
234   - {
235   - name: 'content',
236   - children:
237   - '特色展台包括 Ant Design 、AntV、AntG、Egg 等明星产品,更有产品专家',
238   - className: 'title-content',
239   - },
240   - {
241   - name: 'content2',
242   - children: '现场问诊,为你答疑解难',
243   - className: 'title-content',
244   - },
245   - ],
246   - },
247   -};
248   -export const Content120DataSource = {
249   - wrapper: { className: 'home-page-wrapper content12-wrapper' },
250   - page: { className: 'home-page content12' },
251   - OverPack: { playScale: 0.3, className: '' },
252   - titleWrapper: {
253   - className: 'title-wrapper',
254   - children: [{ name: 'title', children: '特别鸣谢', className: 'title-h1' }],
255   - },
256   - block: {
257   - className: 'img-wrapper',
258   - children: [
259   - {
260   - name: 'block0',
261   - className: 'block',
262   - md: 8,
263   - xs: 24,
264   - children: {
265   - wrapper: { className: 'block-content' },
266   - img: {
267   - children:
268   - 'https://gw.alipayobjects.com/zos/rmsportal/TFicUVisNHTOEeMYXuQF.svg',
269   - },
270   - },
271   - },
272   - {
273   - name: 'block1',
274   - className: 'block',
275   - md: 8,
276   - xs: 24,
277   - children: {
278   - wrapper: { className: 'block-content' },
279   - img: {
280   - children:
281   - 'https://gw.alipayobjects.com/zos/rmsportal/hkLGkrlCEkGZeMQlnEkD.svg',
282   - },
283   - },
284   - },
285   - {
286   - name: 'block2',
287   - className: 'block',
288   - md: 8,
289   - xs: 24,
290   - children: {
291   - wrapper: { className: 'block-content' },
292   - img: {
293   - children:
294   - 'https://gw.alipayobjects.com/zos/rmsportal/bqyPRSZmhvrsfJrBvASi.svg',
295   - },
296   - },
297   - },
298   - {
299   - name: 'block3',
300   - className: 'block',
301   - md: 8,
302   - xs: 24,
303   - children: {
304   - wrapper: { className: 'block-content' },
305   - img: {
306   - children:
307   - 'https://gw.alipayobjects.com/zos/rmsportal/UcsyszzOabdCYDkoPPnM.svg',
308   - },
309   - },
310   - },
311   - {
312   - name: 'block4',
313   - className: 'block',
314   - md: 8,
315   - xs: 24,
316   - children: {
317   - wrapper: { className: 'block-content' },
318   - img: {
319   - children:
320   - 'https://gw.alipayobjects.com/zos/rmsportal/kRBeaICGexAmVjqBEqgw.svg',
321   - },
322   - },
323   - },
324   - {
325   - name: 'block5',
326   - className: 'block',
327   - md: 8,
328   - xs: 24,
329   - children: {
330   - wrapper: { className: 'block-content' },
331   - img: {
332   - children:
333   - 'https://gw.alipayobjects.com/zos/rmsportal/ftBIiyJcCHpHEioRvPsV.svg',
334   - },
335   - },
336   - },
337   - ],
338   - },
339   -};
340   -export const Footer00DataSource = {
341   - wrapper: { className: 'home-page-wrapper footer0-wrapper' },
342   - OverPack: { className: 'home-page footer0', playScale: 0.05 },
343   - // copyright: {
344   - // className: 'copyright',
345   - // children: (
346   - // <span>
347   - // ©2018
348   - // {' '}
349   - // <a href="https://motion.ant.design">Ant Motion</a>
350   - // {' '}
351   - // All Rights Reserved
352   - // </span>
353   - // ),
354   - // },
355   -};
front-end/landing-page/src/Page2/documentation.md deleted 100755 → 0
1   -# 如何使用:
2   -
3   -- umi 里如何使用[请查看](https://landing.ant.design/docs/use/umi)。
4   -- 其它脚手架使用[请查看](https://landing.ant.design/docs/use/getting-started)。
front-end/landing-page/src/Page2/index.jsx deleted 100755 → 0
1   -/* eslint no-undef: 0 */
2   -/* eslint arrow-parens: 0 */
3   -import React from 'react';
4   -import { enquireScreen } from 'enquire-js';
5   -
6   -// import Nav0 from './Nav0';
7   -import Banner0 from './Banner0';
8   -import Content0 from './Content0';
9   -import Content7 from './Content7';
10   -import Content13 from './Content13';
11   -import Content12 from './Content12';
12   -// import Footer0 from './Footer0';
13   -
14   -import {
15   - // Nav00DataSource,
16   - Banner00DataSource,
17   - Content00DataSource,
18   - Content70DataSource,
19   - Content130DataSource,
20   - Content120DataSource,
21   - // Footer00DataSource,
22   -} from './data.source.js';
23   -
24   -let isMobile;
25   -enquireScreen((b) => {
26   - isMobile = b;
27   -});
28   -
29   -const location = window.location;
30   -
31   -export default class Home extends React.Component {
32   - constructor(props) {
33   - super(props);
34   - this.state = {
35   - isMobile,
36   - show: !location.port, // 如果不是 dva 2.0 请删除
37   - };
38   - }
39   -
40   - componentDidMount() {
41   - // 适配手机屏幕;
42   - enquireScreen((b) => {
43   - this.setState({ isMobile: !!b });
44   - });
45   - // dva 2.0 样式在组件渲染之后动态加载,导致滚动组件不生效;线上不影响;
46   - /* 如果不是 dva 2.0 请删除 start */
47   - if (location.port) {
48   - // 样式 build 时间在 200-300ms 之间;
49   - setTimeout(() => {
50   - this.setState({
51   - show: true,
52   - });
53   - }, 500);
54   - }
55   - /* 如果不是 dva 2.0 请删除 end */
56   - }
57   -
58   - render() {
59   - const children = [
60   - // <Nav0
61   - // id="Nav0_0"
62   - // key="Nav0_0"
63   - // dataSource={Nav00DataSource}
64   - // isMobile={this.state.isMobile}
65   - // />,
66   - <Banner0
67   - id="Banner0_0"
68   - key="Banner0_0"
69   - dataSource={Banner00DataSource}
70   - isMobile={this.state.isMobile}
71   - />,
72   - <Content0
73   - id="Content0_0"
74   - key="Content0_0"
75   - dataSource={Content00DataSource}
76   - isMobile={this.state.isMobile}
77   - />,
78   - <Content7
79   - id="Content7_0"
80   - key="Content7_0"
81   - dataSource={Content70DataSource}
82   - isMobile={this.state.isMobile}
83   - />,
84   - <Content13
85   - id="Content13_0"
86   - key="Content13_0"
87   - dataSource={Content130DataSource}
88   - isMobile={this.state.isMobile}
89   - />,
90   - <Content12
91   - id="Content12_0"
92   - key="Content12_0"
93   - dataSource={Content120DataSource}
94   - isMobile={this.state.isMobile}
95   - />,
96   - // <Footer0
97   - // id="Footer0_0"
98   - // key="Footer0_0"
99   - // dataSource={Footer00DataSource}
100   - // isMobile={this.state.isMobile}
101   - // />,
102   - ];
103   - return (
104   - <div
105   - className="templates-wrapper"
106   - ref={(d) => {
107   - this.dom = d;
108   - }}
109   - >
110   - {/* 如果不是 dva 2.0 替换成 {children} start */}
111   - {this.state.show && children}
112   - {/* 如果不是 dva 2.0 替换成 {children} end */}
113   - </div>
114   - );
115   - }
116   -}
front-end/landing-page/src/Page2/less/antMotionStyle.less deleted 100755 → 0
1   -@import './common.less';
2   -@import './custom.less';
3   -@import './content.less';
4   -@import './nav0.less';
5   -@import './banner0.less';
6   -@import './content0.less';
7   -@import './content7.less';
8   -@import './content13.less';
9   -@import './content12.less';
10   -@import './footer0.less';
11   -@import './edit.less';
front-end/landing-page/src/Page2/less/banner0.less deleted 100755 → 0
1   -@import './custom.less';
2   -@banner0: banner0;
3   -.@{banner0} {
4   - width: 100%; // 如果在第一屏且导航位置为 relative, 一屏为 height: calc(~"100vh - 64px");
5   - height: 100vh;
6   - position: relative;
7   - text-align: center;
8   - border-color: #666;
9   - background-image: url("https://zos.alipayobjects.com/rmsportal/gGlUMYGEIvjDOOw.jpg");
10   - background-size: cover;
11   - background-attachment: fixed;
12   - background-position: center;
13   - & &-text-wrapper {
14   - display: inline-block;
15   - position: absolute;
16   - top: 20%;
17   - margin: auto;
18   - left: 0;
19   - right: 0;
20   - font-size: 14px;
21   - color: @template-text-color-light;
22   - width: 550px;
23   - >.queue-anim-leaving {
24   - position: relative !important;
25   - }
26   - }
27   - & &-title {
28   - width: 350px;
29   - left: 30px;
30   - min-height: 60px;
31   - margin: auto;
32   - display: inline-block;
33   - font-size: 40px;
34   - position: relative;
35   - }
36   - & &-content {
37   - margin-bottom: 20px;
38   - word-wrap: break-word;
39   - min-height: 24px;
40   - }
41   - & &-button {
42   - border: 1px solid #fff;
43   - color: #fff;
44   - background: transparent;
45   - box-shadow: 0 0 0 transparent;
46   - line-height: 40px;
47   - font-size: 16px;
48   - height: 40px;
49   - transition: background .45s @ease-out, box-shadow .45s @ease-out;
50   - &:hover {
51   - color: #fff;
52   - border-color: #fff;
53   - background: rgba(255, 255, 255, 0.1);
54   - box-shadow: 0 0 10px rgba(50, 250, 255, 0.75);
55   - }
56   - &:focus {
57   - color: #fff;
58   - border-color: #fff;
59   - }
60   - &.queue-anim-leaving {
61   - width: auto;
62   - }
63   - }
64   - & &-icon {
65   - bottom: 20px;
66   - font-size: 24px;
67   - position: absolute;
68   - left: 50%;
69   - margin-left: -12px;
70   - color: @template-text-color-light;
71   - }
72   -}
73   -
74   -@media screen and (max-width: 767px) {
75   - .@{banner0} {
76   - background-attachment: inherit;
77   - & &-text-wrapper {
78   - width: 90%;
79   - }
80   - & &-title {
81   - width: 90%;
82   - left: 0;
83   - }
84   - }
85   -}
front-end/landing-page/src/Page2/less/common.less deleted 100755 → 0
1   -body {
2   - word-wrap: break-word;
3   -}
4   -
5   -/* .content-wrapper > .tween-one-leaving,
6   -.queue-anim-leaving {
7   - // position: absolute !important;
8   - // width: 100%;
9   -} */
10   -
11   -.video {
12   - max-width: 800px;
13   -}
14   -
15   -#react-content {
16   - min-height: 100%;
17   -}
front-end/landing-page/src/Page2/less/content.less deleted 100755 → 0
1   -@homepage: home-page;
2   -.@{homepage}-wrapper {
3   - width: 100%;
4   - position: relative;
5   - overflow: hidden;
6   - .@{homepage} {
7   - height: 100%;
8   - max-width: 1200px;
9   - position: relative;
10   - margin: auto;
11   - will-change: transform;
12   - }
13   - .title-wrapper > h1, > h1 {
14   - font-size: 32px;
15   - color: @text-color;
16   - margin-bottom: 16px;
17   - }
18   - .title-wrapper {
19   - margin: 0 auto 64px;
20   - text-align: center;
21   - }
22   -}
23   -
24   -.@{homepage} {
25   - // padding: 128px 24px;
26   - padding: 24px;
27   -}
28   -
29   -@media screen and (max-width: 767px) {
30   - .@{homepage}-wrapper {
31   - .@{homepage} {
32   - padding: 56px 24px;
33   - >h1 {
34   - font-size: 24px;
35   - margin: 0 auto 32px;
36   - &.title-h1 {
37   - margin-bottom: 8px;
38   - }
39   - }
40   - >p {
41   - margin-bottom: 32px;
42   - }
43   - }
44   - }
45   -}
front-end/landing-page/src/Page2/less/content0.less deleted 100755 → 0
1   -@import './custom.less';
2   -@content0: content0;
3   -.@{content0}-wrapper {
4   - height: 446px;
5   - overflow: hidden;
6   - .@{content0} {
7   - overflow: hidden;
8   - height: 100%;
9   - padding: 64px 24px;
10   - > .title-wrapper {
11   - margin: 0 auto 48px;
12   - }
13   - .block-wrapper {
14   - position: relative;
15   - height: 100%;
16   - overflow: hidden;
17   - top: 25%;
18   - padding: 20px 0;
19   - .block {
20   - padding: 0 4%;
21   - display: inline-block;
22   - text-align: center;
23   - height: 200px;
24   - margin-bottom: 48px;
25   - &.queue-anim-leaving {
26   - position: relative !important;
27   - }
28   - .icon {
29   - width: 100px;
30   - height: 100px;
31   - margin: auto;
32   - display: flex;
33   - align-items: center;
34   - }
35   - >h3 {
36   - line-height: 32px;
37   - margin: 10px auto;
38   - }
39   - }
40   - }
41   - }
42   -}
43   -
44   -@media screen and (max-width: 767px) {
45   - .@{content0}-wrapper {
46   - height: 880px;
47   - }
48   -}
front-end/landing-page/src/Page2/less/content12.less deleted 100755 → 0
1   -@import './custom.less';
2   -@content12: content12;
3   -.@{content12}-wrapper {
4   - background-color: #fafafa;
5   - min-height: 470px;
6   - .@{content12} {
7   - padding: 64px 24px;
8   - >p {
9   - text-align: center;
10   - }
11   - }
12   - .img-wrapper {
13   - margin: 0 auto;
14   - left: 0;
15   - right: 0;
16   - .block {
17   - margin-bottom: 40px;
18   - .block-content {
19   - display: flex;
20   - border-radius: 4px;
21   - text-align: center;
22   - position: relative;
23   - overflow: hidden;
24   - border: none;
25   - height: 64px;
26   - align-items: center;
27   - transition: box-shadow .3s @ease-out, transform .3s @ease-out;
28   - & > span {
29   - width: 100%;
30   - display: block;
31   - }
32   - }
33   - }
34   - }
35   -}
36   -
37   -@media screen and (max-width: 767px) {
38   - .@{content12}-wrapper {
39   - overflow: hidden;
40   - .@{content12} {
41   - ul {
42   - li {
43   - display: block;
44   - width: 100%;
45   - padding: 2%;
46   - span {
47   - height: 168px;
48   - }
49   - }
50   - }
51   - }
52   - }
53   -}
front-end/landing-page/src/Page2/less/content13.less deleted 100755 → 0
1   -@import './custom.less';
2   -@content13: content13;
3   -.@{content13}-wrapper {
4   - min-height: 380px;
5   - background: url("https://gw.alipayobjects.com/zos/rmsportal/ZsWYzLOItgeaWDSsXdZd.svg") no-repeat bottom;
6   - background-size: cover;
7   - background-size: 100%;
8   - margin: 0 auto;
9   - overflow: hidden;
10   - padding: 96px 0;
11   - &.home-page-wrapper {
12   - .title-wrapper {
13   - margin-bottom: 32px;
14   - }
15   - }
16   - .title-content {
17   - line-height: 32px;
18   - }
19   -}
20   -
21   -@media screen and (max-width: 767px) {
22   - .@{content13}-wrapper {
23   - padding-bottom: 0;
24   - }
25   -}
front-end/landing-page/src/Page2/less/content7.less deleted 100755 → 0
1   -@import './custom.less';
2   -@content7: content7;
3   -.@{content7}-wrapper {
4   - min-height: 720px;
5   - .@{content7} {
6   - >h1,
7   - >p {
8   - text-align: center;
9   - }
10   - &-tag {
11   - & i {
12   - width: 12px;
13   - height: 14px;
14   - display: inline-block;
15   - vertical-align: middle;
16   - margin-right: 5px;
17   - }
18   - &-name {
19   - display: inline-block;
20   - }
21   - }
22   - .ant-tabs-bar {
23   - text-align: center;
24   - }
25   - .ant-tabs {
26   - .ant-tabs-nav {
27   - float: none;
28   - text-align: center;
29   - }
30   - }
31   - &-tabs-wrapper {
32   - position: relative;
33   - margin-top: 24px;
34   - }
35   - &-content {
36   - display: flex;
37   - align-items: center;
38   - }
39   - &-text {
40   - padding: 24px 48px;
41   - }
42   - &-img {
43   - padding: 24px 48px;
44   - }
45   - .ant-tabs-tabpane {
46   - margin-top: 40px;
47   - }
48   - }
49   -}
50   -
51   -@media screen and (max-width: 767px) {
52   - .@{content7}-wrapper {
53   - min-height: 980px;
54   - overflow: hidden;
55   - .@{content7} {
56   - max-width: 100%;
57   - &-content {
58   - display: block;
59   - }
60   - &-text,
61   - &-img {
62   - text-align: left;
63   - padding: 0;
64   - }
65   - &-img {
66   - margin-top: 32px;
67   - }
68   - .ant-tabs-bar {
69   - width: auto;
70   - .ant-tabs-nav {
71   - float: left;
72   - }
73   - }
74   - }
75   - }
76   -}
front-end/landing-page/src/Page2/less/custom.less deleted 100755 → 0
1   -@import "~antd/lib/style/v2-compatible-reset.less";
2   -@import "~antd/lib/style/themes/default.less";
3   -
4   -@line-color: #e9e9e9;
5   -
6   -@shadow-color: rgba(0, 0, 0, 0.15);
7   -
8   -// @template-bg-color: #001529;
9   -@template-bg-color: #fff;
10   -@template-bg-color-light: #ececec;
11   -@template-nav-bg-color: fade(@template-bg-color, 95%);
12   -@template-text-color: #ccc;
13   -@template-text-title-color: #bcbcbc;
14   -@template-text-color-light: #fff;
15   -@template-footer-text-color: #999;
16   -
17   -@animate-duration: .45s;
18   -
19   -// 详细页图片或框框的样式;
20   -.page-shadow() {
21   - box-shadow: 0 5px 8px @shadow-color;
22   -}
23   -
24   -.page-pro() {
25   - border-radius: 6px;
26   - border: 1px solid @line-color;
27   - transform: translateY(0);
28   - transition: transform .3s @ease-out, box-shadow .3s @ease-out;
29   - &:hover {
30   - .page-shadow();
31   - transform: translateY(-5px);
32   - }
33   -}
front-end/landing-page/src/Page2/less/edit.less deleted 100755 → 0
1   -div > .templates-wrapper > .jnwq7vhwgqg-editor_css {
2   - background-image: none;
3   -}
front-end/landing-page/src/Page2/less/footer0.less deleted 100755 → 0
1   -@import './custom.less';
2   -.footer0-wrapper {
3   - background-color: @template-bg-color;
4   - height: 80px;
5   - overflow: hidden;
6   - .footer0 {
7   - height: 100%;
8   - padding: 0 24px;
9   - line-height: 80px;
10   - text-align: center;
11   - color: @template-footer-text-color;
12   - position: relative;
13   - }
14   -}
15   -
16   -@media screen and (max-width: 767px) {
17   - .footer0-wrapper {
18   - .footer0 {
19   - font-size: 12px;
20   - &.home-page {
21   - padding: 0;
22   - }
23   - >div {
24   - width: 90%;
25   - margin: auto;
26   - }
27   - }
28   - }
29   -}
front-end/landing-page/src/Page2/less/nav0.less deleted 100755 → 0
1   -@import './custom.less';
2   -@header: header0;
3   -.@{header} {
4   - background: @template-nav-bg-color;
5   - width: 100%;
6   - z-index: 1;
7   - box-shadow: 0 5px 8px fade(#000, 15);
8   - position: relative;
9   - top: 0;
10   - .home-page {
11   - padding: 0 24px;
12   - }
13   - &-logo {
14   - display: inline-block;
15   - position: relative;
16   - width: 150px;
17   - line-height: 64px;
18   - & img {
19   - vertical-align: middle;
20   - display: inline-block;
21   - }
22   - & a {
23   - display: block;
24   - }
25   - }
26   - &-menu {
27   - float: right;
28   - >.ant-menu {
29   - line-height: 62px;
30   - background: transparent;
31   - color: @template-text-color-light;
32   - height: 64px;
33   - border-bottom-color: transparent;
34   - position: relative;
35   - a {
36   - // color: @template-text-color-light;
37   - &:hover {
38   - color: @primary-color;
39   - }
40   - }
41   - }
42   - }
43   - .ant-menu-item-selected a {
44   - color: @primary-color;
45   - }
46   -}
47   -
48   -@media screen and (max-width: 767px) {
49   - .@{header} {
50   - &-logo {
51   - z-index: 101;
52   - }
53   - &.home-page-wrapper .home-page {
54   - padding: 0 24px;
55   - }
56   - & &-menu {
57   - height: auto;
58   - float: inherit;
59   - position: relative;
60   - left: -24px;
61   - width: ~"calc(100% + 48px)";
62   - opacity: 0;
63   - transition: opacity .3s @ease-in-out, height .3s @ease-in-out;
64   - & li {
65   - padding: 0 24px;
66   - &.ant-menu-submenu {
67   - padding: 0;
68   - }
69   - }
70   - & .ant-menu-submenu .ant-menu-sub {
71   - padding: 0 24px;
72   - }
73   - }
74   - &-mobile-menu {
75   - width: 16px;
76   - height: 14px;
77   - cursor: pointer;
78   - position: absolute;
79   - top: 24px;
80   - right: 24px;
81   - z-index: 100;
82   - em {
83   - display: block;
84   - width: 100%;
85   - height: 2px;
86   - background: #fff;
87   - margin-top: 4px;
88   - transition: transform .3s @ease-in-out, opacity .3s @ease-in-out;
89   - }
90   - :first-child {
91   - margin-top: 0;
92   - }
93   - }
94   - .ant-menu {
95   - height: auto;
96   - overflow: hidden;
97   -
98   - background: @template-bg-color;
99   - .ant-menu-item-selected {
100   - border: none;
101   - }
102   - a {
103   - color: @template-text-color-light;
104   - &:hover {
105   - color: @template-text-color-light;
106   - }
107   - }
108   - .ant-menu-item-selected a {
109   - color: @template-text-color-light;
110   - }
111   - }
112   - & .open {
113   - height: auto;
114   - .@{header}-mobile-menu {
115   - em {
116   - &:nth-child(1) {
117   - transform: translateY(6px) rotate(45deg);
118   - }
119   - &:nth-child(2) {
120   - opacity: 0;
121   - }
122   - &:nth-child(3) {
123   - transform: translateY(-6px) rotate(-45deg);
124   - }
125   - }
126   - }
127   - >.@{header}-menu {
128   - opacity: 1;
129   - pointer-events: auto;
130   - }
131   - }
132   - }
133   -}
front-end/landing-page/src/assets/home/banner.svg deleted 100644 → 0
1   -<svg id="f2059cf3-5beb-4c16-b86e-a491cbb2d73f" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1096.46" height="805.97" viewBox="0 0 1096.46 805.97"><defs><linearGradient id="fe3366dc-1c26-4135-9415-0b0409d0ae5c" x1="699.46" y1="846.78" x2="699.46" y2="546.12" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="gray" stop-opacity="0.25"/><stop offset="0.54" stop-color="gray" stop-opacity="0.12"/><stop offset="1" stop-color="gray" stop-opacity="0.1"/></linearGradient></defs><title>mobile marketing</title><path d="M693.59,158.42c-64.72-2.25-126.36-23.14-185.22-46S391.21,64.23,328,52.12C287.41,44.33,240.94,43.23,208.2,65c-31.5,21-41.68,57.15-47.15,90.72-4.12,25.27-6.54,51.85,4.74,75.5,7.84,16.42,21.74,30.22,31.36,46,33.47,54.72,9.81,122.2-26.45,175.63-17,25.06-36.75,49-49.88,75.66s-19.2,57.25-7.71,84.46c11.38,27,38.51,47.24,67.9,61.5,59.69,28.94,130,37.23,198.61,41.92,151.83,10.39,304.46,5.89,456.69,1.39,56.34-1.67,112.92-3.36,168.34-12.07,30.78-4.84,62.55-12.52,84.89-31,28.37-23.53,35.4-63.38,16.39-92.88-31.88-49.49-120-61.79-142.31-114.9-12.26-29.23.33-61.8,18.16-88.91,38.24-58.17,102.33-109.19,105.7-175.68,2.32-45.66-28.49-91.39-76.13-113-49.93-22.65-119.18-19.8-156,17.69C817.4,145.55,750.74,160.4,693.59,158.42Z" transform="translate(-51.77 -47.02)" fill="#74adff" opacity="0.1"/><g opacity="0.9"><rect x="708.33" y="248.78" width="8.86" height="73.02" rx="2.29" ry="2.29" fill="#3a3768"/><rect x="413.89" y="191.58" width="4.97" height="24.04" rx="2.29" ry="2.29" fill="#3a3768"/><rect x="413.71" y="235.59" width="5.6" height="41.84" rx="2.29" ry="2.29" fill="#3a3768"/><rect x="413.8" y="292.07" width="5.33" height="42.2" rx="2.29" ry="2.29" fill="#3a3768"/><rect x="416.71" y="112.14" width="296.4" height="602.39" rx="38.99" ry="38.99" fill="#3a3768"/><rect x="536.31" y="130.12" width="41.39" height="8.4" rx="3.87" ry="3.87" fill="#e6e8ec"/><circle cx="588.73" cy="134.33" r="4.77" fill="#e6e8ec"/></g><ellipse cx="238.04" cy="728.39" rx="199.97" ry="20.38" fill="#74adff" opacity="0.1"/><ellipse cx="682.68" cy="796.42" rx="93.68" ry="9.55" fill="#74adff" opacity="0.1"/><ellipse cx="1002.78" cy="748.3" rx="93.68" ry="9.55" fill="#74adff" opacity="0.1"/><path d="M723,174.84H689.1v4.09a19.38,19.38,0,0,1-19.38,19.38H561.54a19.38,19.38,0,0,1-19.38-19.38v-4.09H510.32a23.53,23.53,0,0,0-23.53,23.54V722.31a23.53,23.53,0,0,0,23.53,23.54H723a23.54,23.54,0,0,0,23.54-23.54V198.38A23.54,23.54,0,0,0,723,174.84Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M867.49,132.73s-84.2-5.08-74.27,53.92c0,0-2,10.43,7.48,15.16,0,0,.15-4.37,8.63-2.89a38.44,38.44,0,0,0,9.15.44,19,19,0,0,0,11.19-4.61h0s23.66-9.78,32.87-48.46c0,0,6.81-8.44,6.54-10.61l-14.21,6.07s4.85,10.25,1,18.77c0,0-.46-18.4-3.19-18-.56.08-7.39,3.55-7.39,3.55s8.36,17.85,2,30.83c0,0,2.39-22-4.66-29.54l-10,5.84s9.76,18.44,3.15,33.49c0,0,1.69-23.08-5.25-32.07l-9.06,7.07s9.17,18.17,3.58,30.65c0,0-.74-26.86-5.55-28.89,0,0-7.93,7-9.14,9.86,0,0,6.28,13.2,2.39,20.16,0,0-2.39-17.9-4.35-18,0,0-7.9,11.86-8.72,20,0,0,.34-12.09,6.8-21.12,0,0-7.63,1.31-12.09,6.26,0,0,1.23-8.38,14-9.12,0,0,6.53-9,8.28-9.54,0,0-12.75-1.07-20.48,2.36,0,0,6.8-7.91,22.82-4.31l8.94-7.31s-16.78-2.29-23.9.24c0,0,8.2-7,26.32-1.9l9.74-5.82s-14.31-3.09-22.84-2c0,0,9-4.85,25.69.41l7-3.13s-10.49-2.06-13.56-2.39-3.23-1.17-3.23-1.17A36.35,36.35,0,0,1,853,139.19S867.74,133.66,867.49,132.73Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M781.13,106.49s-38-2.29-33.56,24.37c0,0-.89,4.71,3.38,6.85,0,0,.07-2,3.9-1.31a17.51,17.51,0,0,0,4.13.2,8.62,8.62,0,0,0,5.06-2.08h0s10.69-4.42,14.85-21.9c0,0,3.08-3.81,3-4.79l-6.42,2.74s2.19,4.63.46,8.48c0,0-.2-8.31-1.44-8.12-.25,0-3.33,1.61-3.33,1.61s3.77,8.06.92,13.93c0,0,1.08-9.94-2.1-13.35l-4.52,2.64s4.41,8.33,1.42,15.13c0,0,.77-10.43-2.37-14.49l-4.1,3.2s4.15,8.21,1.62,13.85c0,0-.33-12.14-2.5-13.06,0,0-3.59,3.16-4.13,4.46,0,0,2.83,6,1.07,9.11,0,0-1.08-8.09-2-8.13,0,0-3.57,5.36-3.94,9a19.46,19.46,0,0,1,3.07-9.54,10.71,10.71,0,0,0-5.46,2.83s.55-3.79,6.34-4.12c0,0,2.95-4.07,3.74-4.32,0,0-5.76-.48-9.25,1.07,0,0,3.07-3.57,10.31-2l4-3.3s-7.58-1-10.8.11c0,0,3.71-3.16,11.89-.86l4.4-2.63s-6.46-1.39-10.31-.89c0,0,4.06-2.19,11.6.18l3.15-1.41s-4.73-.93-6.12-1.08-1.46-.53-1.46-.53a16.36,16.36,0,0,1,8.89,1S781.24,106.91,781.13,106.49Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><ellipse cx="40.21" cy="678.57" rx="40.21" ry="6.8" fill="#74adff"/><path d="M108.6,714.46a11.63,11.63,0,0,0,3.84-5.78c.49-2.3-.49-5-2.68-5.89-2.46-.95-5.09.76-7.08,2.48s-4.28,3.69-6.89,3.32A10.47,10.47,0,0,0,99,698.78a4,4,0,0,0-.9-2c-1.36-1.46-3.84-.83-5.48.32-5.2,3.66-6.65,10.72-6.67,17.08-.53-2.3-.09-4.69-.1-7s-.66-5-2.64-6.22a8,8,0,0,0-4-.95c-2.34-.08-4.94.15-6.54,1.86-2,2.12-1.47,5.69.26,8s4.35,3.8,6.76,5.42a14.92,14.92,0,0,1,4.84,4.61,4.41,4.41,0,0,1,.36.82H99.54A40.77,40.77,0,0,0,108.6,714.46Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M882.34,630.54s8.65,11.32-4,28.4-23.07,31.5-18.85,42.15c0,0,19.08-31.72,34.61-32.17S899.42,649.62,882.34,630.54Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M882.34,630.54a14.25,14.25,0,0,1,1.77,3.55c15.15,17.8,23.22,34.42,8.65,34.83-13.56.39-29.84,24.65-33.73,30.77a11.46,11.46,0,0,0,.46,1.4s19.08-31.72,34.61-32.17S899.42,649.62,882.34,630.54Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M898.42,645c0,4-.45,7.21-1,7.21s-1-3.23-1-7.21.56-2.1,1.11-2.1S898.42,641,898.42,645Z" transform="translate(-51.77 -47.02)" fill="#ffd037"/><path d="M903.94,649.72c-3.5,1.9-6.54,3.06-6.81,2.57s2.36-2.42,5.86-4.33,2.11-.51,2.38,0S907.44,647.81,903.94,649.72Z" transform="translate(-51.77 -47.02)" fill="#ffd037"/><path d="M836.64,630.54s-8.65,11.32,4,28.4,23.07,31.5,18.86,42.15c0,0-19.08-31.72-34.61-32.17S819.56,649.62,836.64,630.54Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M836.64,630.54a13.85,13.85,0,0,0-1.77,3.55c-15.15,17.8-23.22,34.42-8.66,34.83,13.57.39,29.84,24.65,33.74,30.77a13.48,13.48,0,0,1-.46,1.4s-19.08-31.72-34.61-32.17S819.56,649.62,836.64,630.54Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M820.55,645c0,4,.45,7.21,1,7.21s1-3.23,1-7.21-.56-2.1-1.11-2.1S820.55,641,820.55,645Z" transform="translate(-51.77 -47.02)" fill="#ffd037"/><path d="M815,649.72c3.49,1.9,6.54,3.06,6.8,2.57s-2.35-2.42-5.85-4.33-2.12-.51-2.38,0S811.54,647.81,815,649.72Z" transform="translate(-51.77 -47.02)" fill="#ffd037"/><path d="M823.31,699.61s24.19-.75,31.48-5.94,37.21-11.39,39-3.06,36.35,41.41,9,41.63-63.46-4.26-70.73-8.69S823.31,699.61,823.31,699.61Z" transform="translate(-51.77 -47.02)" fill="#a8a8a8"/><path d="M903.34,729.34c-27.31.22-63.46-4.26-70.73-8.69-5.55-3.37-7.75-15.48-8.49-21.07l-.81,0s1.53,19.51,8.81,23.94,43.42,8.91,70.73,8.69c7.88-.07,10.61-2.87,10.46-7C912.21,727.72,909.21,729.29,903.34,729.34Z" transform="translate(-51.77 -47.02)" opacity="0.2"/><rect x="584.53" y="487.87" width="78.03" height="78.03" fill="#3a3768" opacity="0.3"/><rect x="469.53" y="384.87" width="78.03" height="78.03" fill="#3a3768" opacity="0.3"/><rect x="477.03" y="589.11" width="78.03" height="78.03" fill="#3a3768" opacity="0.3"/><rect x="459.62" y="193.28" width="78.03" height="78.03" fill="#fff"/><path d="M565.55,265.79l-2.77,2.76a9.77,9.77,0,0,1,0,13.83l2.77,2.78a13.7,13.7,0,0,0,0-19.37Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M571.09,260.46l-2.73,2.73a17.38,17.38,0,0,1,0,24.56l2.73,2.73a21.22,21.22,0,0,0,0-30Zm-13,10.22v-12.5h-3.85l-11.52,9.6H527.36l-3.84,1.92v13.45l3.84,1.92L537,300.44h5.76l-3.6-15.37h3.6l11.52,7.69h3.85v-12.5a4.91,4.91,0,0,0,0-9.58Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><rect x="656.92" y="522.77" width="78.03" height="78.03" transform="translate(-248.8 565.21) rotate(-42.14)" fill="#fff"/><path d="M673.34,551.14,679,546,710,580.17l-5.7,5.16Zm13.37,32,5.7-5.15,9,10-5.7,5.15Zm11.94-21.16,5.7-5.16,14.17,15.67-5.69,5.15Zm.81-16.28,5.7-5.16,21.91,24.21-5.7,5.16Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><rect x="583.24" y="287.31" width="78.03" height="78.03" fill="#fff"/><path d="M688.84,364l-10.47,16a5.7,5.7,0,0,1,1.3,3.64,5.77,5.77,0,0,1-11.53,0,6.36,6.36,0,0,1,.1-1.07l-6.92-4a5.79,5.79,0,0,1-6.83.86l-7.36,6.89v6.87a5.14,5.14,0,0,0,5.13,5.13H695.8a5.15,5.15,0,0,0,5.13-5.13V367.67l-7-4.67a5.7,5.7,0,0,1-3.53,1.22,5.87,5.87,0,0,1-1.52-.21Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M657.33,368.66a5.76,5.76,0,0,1,5.77,5.76c0,.25,0,.51-.05.75l7.22,4a5.67,5.67,0,0,1,3.65-1.3,5.54,5.54,0,0,1,1.24.14l10.5-16.26a5.76,5.76,0,1,1,10.46-3.34,6,6,0,0,1-.16,1.36l5,3.31v-9.62a5.14,5.14,0,0,0-5.13-5.12H652.26a5.13,5.13,0,0,0-5.13,5.12V381l4.8-4.6a5.82,5.82,0,0,1-.36-2A5.76,5.76,0,0,1,657.33,368.66Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><rect x="484.6" y="374.31" width="78.03" height="78.03" fill="#fff"/><path d="M598.93,435.49l-48,26a1,1,0,0,0,.07,1.79l8.19,3.09a2,2,0,0,1,1.08,1l6.36,13.1c.12.58,1.19.74,1.2.15l-1-10.83a3.85,3.85,0,0,1,.88-2.19l24.88-24.38a.62.62,0,0,1,.55-.16.57.57,0,0,1,.31.91L572,470.19a4.79,4.79,0,0,0-.84,2.16l-1.28,9.35c.1.82.74,1.13,1.26.4l4.62-5.43a1,1,0,0,1,1.36-.22l11.91,8.68a1,1,0,0,0,1.51-.59l9.77-48a1,1,0,0,0-1.4-1.08Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M1023.61,779.61c4.54.59,9.25,1,13.6-.46.67-.21,1.44-.67,1.35-1.36a1.6,1.6,0,0,0-.31-.66,42.41,42.41,0,0,1-4.13-7.83.64.64,0,0,0-.25-.35.61.61,0,0,0-.44,0c-2,.52-3.74,1.82-5.74,2.37a8.2,8.2,0,0,1-3.12.24c-.9-.1-2.14-.85-2.95-.76C1022.12,773.77,1023.26,776.58,1023.61,779.61Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M1109.54,772c3-2,6.1-4.22,7.87-7.39a1.21,1.21,0,0,0,.21-.63,1.3,1.3,0,0,0-.25-.62,25.62,25.62,0,0,0-6.39-6.9,18.89,18.89,0,0,0-3.57,3.29c-.75.79-2.83,2.09-2.85,3.27,0,.71.79,1.48,1.16,2,.5.74,1,1.5,1.43,2.26C1107.38,767.74,1109.76,771.88,1109.54,772Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M1041.41,788.79a3,3,0,0,1-.54,2,2.67,2.67,0,0,1-1.15.67c-6.36,2.27-13.68-.57-20,1.68-1.31.46-2.54,1.12-3.85,1.56a20.85,20.85,0,0,1-4.77.85c-2.25.22-4.5.35-6.75.41a16.33,16.33,0,0,1-5.08-.44,6.15,6.15,0,0,1-3.9-3.09,3,3,0,0,1-.19-2.2,2.49,2.49,0,0,1,.41-.71,6.09,6.09,0,0,1,1.5-1.21l2.34-1.51a15.63,15.63,0,0,1,3.54-1.88c.92-.3,1.91-.43,2.84-.7,3.29-1,5.79-3.57,8.12-6.07l3.18-3.39a3.11,3.11,0,0,1,1.1-.88,3,3,0,0,1,1.36-.14,18.37,18.37,0,0,1,8.67,2.92,12.51,12.51,0,0,0,2.14,1.26,7.64,7.64,0,0,0,6-.75c.82-.43.64-.7,1-1.47s1.18-1.27,1.9-.56a2.09,2.09,0,0,1,.45.86c.7,2.27.43,4.7.43,7.07a3.14,3.14,0,0,0,.14,1.1,6.69,6.69,0,0,0,.62,1,1.58,1.58,0,0,1,.13.26A6.94,6.94,0,0,1,1041.41,788.79Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><path d="M1041.41,788.79a3,3,0,0,1-.54,2,2.67,2.67,0,0,1-1.15.67c-6.36,2.27-13.68-.57-20,1.68-1.31.46-2.54,1.12-3.85,1.56a20.85,20.85,0,0,1-4.77.85c-2.25.22-4.5.35-6.75.41a16.33,16.33,0,0,1-5.08-.44,6.15,6.15,0,0,1-3.9-3.09,3,3,0,0,1-.19-2.2,2.49,2.49,0,0,1,.41-.71c.38.78.65,1.8.88,2.17a4.44,4.44,0,0,0,3,2.15,7.61,7.61,0,0,0,2.71-.35c5.76-1.43,11.88-1.45,17.4-3.61a41.57,41.57,0,0,1,5.7-2.19,45.28,45.28,0,0,1,6.16-.5c3.25-.26,6.39-1.24,9.6-1.75A6.94,6.94,0,0,1,1041.41,788.79Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M1124.06,771.61c-.3,2.41-1.83,4.49-3.51,6.25a40.07,40.07,0,0,0-4.9,5.37c-1.66,2.52-2.39,5.63-4.53,7.76a12.27,12.27,0,0,1-2.72,2,18.8,18.8,0,0,1-3.53,1.62c-3.19,1-6.63.79-10,.55a8.89,8.89,0,0,1-3.16-.62,9.18,9.18,0,0,1-1.34-.81,6.36,6.36,0,0,1-2-2.07,2.08,2.08,0,0,1-.19-1.49,3.4,3.4,0,0,1,1-1.46,22.6,22.6,0,0,1,2.41-2.17,14.31,14.31,0,0,0,3.14-2.76,9,9,0,0,0,1.21-2.76,24.73,24.73,0,0,0,.88-5.25,16.54,16.54,0,0,1,.37-3.51c.51-1.8,1.85-3.43,1.69-5.3a1.36,1.36,0,0,1,.07-.8,1.25,1.25,0,0,1,.63-.39,11.4,11.4,0,0,1,3.28-.75,3.78,3.78,0,0,1,3,1.19c.47.56.77,1.34,1.46,1.59a2.42,2.42,0,0,0,1,0c1.68-.17,3.47-.38,4.76-1.47a6,6,0,0,0,2-4.37c0-.62-.28-1.27.67-1.4.73-.1,1.3.66,1.67,1.16a16.32,16.32,0,0,1,3.21,5.85,1.62,1.62,0,0,1,.61-.12,2.61,2.61,0,0,1,2.18,1.12A4.32,4.32,0,0,1,1124.06,771.61Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><path d="M1124.06,771.61c-.3,2.41-1.83,4.49-3.51,6.25a40.07,40.07,0,0,0-4.9,5.37c-1.66,2.52-2.39,5.63-4.53,7.76a12.27,12.27,0,0,1-2.72,2,18.8,18.8,0,0,1-3.53,1.62c-3.19,1-6.63.79-10,.55a8.89,8.89,0,0,1-3.16-.62,9.18,9.18,0,0,1-1.34-.81,6.36,6.36,0,0,1-2-2.07,4.87,4.87,0,0,1,2.06-.49c1.49.08,2.57,1.48,4,1.91,2,.61,4-.82,6.09-1.31,1.34-.31,2.76-.22,4.07-.65a10.05,10.05,0,0,0,3-1.82,15.23,15.23,0,0,0,3.21-3.1,19.76,19.76,0,0,0,1.89-3.76,53.71,53.71,0,0,1,3.81-7.29,4.84,4.84,0,0,1,.78-1c.31-.29.7-.5,1-.76,1.37-1,1.94-2.77,2.42-4.41a7.38,7.38,0,0,1,.54-1.47,2.61,2.61,0,0,1,2.18,1.12A4.32,4.32,0,0,1,1124.06,771.61Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M980.4,558a14.52,14.52,0,0,1,4.08,4.77c1,1.88,6.49,16.48,6.17,18.57,1.8-1.82,8.94-2.12,10.73-3.93.76-.76,4.87-4.56,5.48-5.44s5.19-2.77,5.69-3.67c1.87-3.35-13.26-16-11.33-19.36a.82.82,0,0,0,.16-.52.8.8,0,0,0-.25-.4,24.08,24.08,0,0,0-4.38-3,7,7,0,0,1-3.34-4,14.37,14.37,0,0,0-3.87,2.62q-4.15,3.55-8.18,7.28c-1.06,1-3.08,2.27-3.57,3.66S979.39,557.18,980.4,558Z" transform="translate(-51.77 -47.02)" fill="#a1616a"/><path d="M1004.89,552.61a43.84,43.84,0,0,0-6.48,5.3c-1.88,1.85-3.66,4-4.13,6.61-.19,1-.16,2.06-.32,3.09-.67,4.48-4.56,7.77-6.27,12a20.52,20.52,0,0,0-1.1,4,47.15,47.15,0,0,0-.78,7.86c0,2.56,2.46,4.32,3.38,6.71a40.7,40.7,0,0,1,1.63,7.27,88.58,88.58,0,0,0,4.09,13.5c3.38,9.33,14.33,35.13,17.71,44.47,10.35-2.6,37.91-8.57,47.07-14,3.06-1.82-21.2-22.38-17.93-23.8a1.65,1.65,0,0,0,.91-.69,1.58,1.58,0,0,0,0-1c-3.26-14.29-13.49-26-18.12-40-1.61-4.83-4.5-8.95-6.7-13.55-2-4.16-3.05-8.75-5.42-12.7a8.49,8.49,0,0,0-1.73-2.17,10.61,10.61,0,0,0-1.92-1.15C1007.47,553.66,1006.21,553.27,1004.89,552.61Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><circle cx="929.18" cy="493.15" r="16.2" fill="#a1616a"/><path d="M997.43,547.78a5.43,5.43,0,0,1,6.09-.87,3,3,0,0,1,1.81,2.92l8,.12a16.74,16.74,0,0,1,3.81.35,5.54,5.54,0,0,1,3.18,2c.1.13.21.28.37.31a.64.64,0,0,0,.37-.13,7.05,7.05,0,0,1,4-.72c4.34.28,8.36,2.46,11.76,5.17a3.81,3.81,0,0,1,1.4,1.71c.28.91,0,2.08.66,2.7,0,7.55,2.59,14.58,4.32,21.93.3,1.31,1.56,2.46,2.43,3.49a14,14,0,0,1,2.6,3.88c1.46,3.81-.56,8.28.87,12.11a19.5,19.5,0,0,0,2.76,4.35,11.21,11.21,0,0,1,2.35,5.62c.06.92-.06,1.84,0,2.77a16.88,16.88,0,0,0,.66,3.64c.58,2.21,1.2,4.42,1.84,6.62,1,3.56,2.4,7.41,5.59,9.31-7.71,1.31-15.83,2.58-23.18-.09a12,12,0,0,1-2.89-1.45c-2.65-1.89-3.93-5.13-5.07-8.18-1.28-3.43-2.58-6.91-2.84-10.56a12.08,12.08,0,0,0-.48-3.45c-.75-2-2.73-3.19-4.55-4.29a21.89,21.89,0,0,1-5.47-4.26,8.5,8.5,0,0,1-2.22-6.4c.14-1.13.58-2.22.63-3.36a2.69,2.69,0,0,0-1.56-2.77c-5.61-1.7-8.29-8.34-9.54-14.07a44.89,44.89,0,0,1-.72-9l-.07-5.79a7.68,7.68,0,0,1-2.52-5.54,6.22,6.22,0,0,0,0-1.83,5.13,5.13,0,0,0-1.28-2A16.9,16.9,0,0,1,997.43,547.78Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M980.17,566.31c-.18,1.81.23,3.66-.18,5.44-.16.68-.43,1.33-.63,2a11.8,11.8,0,0,0,.75,7.62,42.35,42.35,0,0,0,3.89,6.75,10.28,10.28,0,0,1,1.25,2.33,12.07,12.07,0,0,1,.48,2.67,81.32,81.32,0,0,0,1.91,10.74c.76,3.08,1.75,6.19,3.78,8.63a2.62,2.62,0,0,0,1.56,1.06,2.82,2.82,0,0,0,1.33-.28l4.14-1.57a2.89,2.89,0,0,0,1-.52,2.51,2.51,0,0,0,.58-1.62c.29-3.34-.71-6.65-1.82-9.81-3.36-9.54-7.82-18.73-10-28.6-.61-2.76-.93-7-2.94-9.15-.83-.9-.55-.52-1.54,0a12.54,12.54,0,0,0-1.45.77A4.75,4.75,0,0,0,980.17,566.31Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M1059.24,625.68" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M992.65,584.41q1.65,8.73,3.37,17.47l16.08-4.22c.13-1.68-.77-3.24-1.39-4.81-1.47-3.68-1.5-7.77-2.69-11.55-.9-2.88-2.46-5.53-3.3-8.43-.49-1.68-.73-3.44-1.21-5.13a39.19,39.19,0,0,0-1.89-4.89,31.16,31.16,0,0,0-3.51-6.51c-2.06.77-4.25,1.66-5.42,3.51a7.46,7.46,0,0,0-1,3.46c-.28,3.62,1,7.25.59,10.83A32,32,0,0,0,992.65,584.41Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M1012.37,662c.9,3.44-.41,7-1.47,10.42a80.92,80.92,0,0,0-3.28,15.69,13,13,0,0,1-.81,4,37.42,37.42,0,0,1-1.95,3.2c-1.62,2.86-1.58,6.36-1.23,9.63.23,2.16.58,4.31,1,6.44.53,2.59,1.18,5.31.42,7.84,1.27-.28,2.14,1.36,2.09,2.67s-.51,2.71.11,3.86c1.58.57,1.6,2.74,1.55,4.41a37.19,37.19,0,0,0,1.09,8.64q3.58,17.19,7.6,34.29c5.79,1.8,12.55,3.67,18.07,1.18a3.55,3.55,0,0,0,2.29-2.3,4.14,4.14,0,0,0-.22-1.77l-2.62-9.52a17.53,17.53,0,0,1-.94-7c.26-1.77,1-3.67.16-5.22-.3-.53-.76-1-1.1-1.46-1.38-2-.66-4.69-.54-7.13a5.58,5.58,0,0,0-.12-1.63,8.56,8.56,0,0,0-.77-1.79,27.33,27.33,0,0,1-3-13.6,3.34,3.34,0,0,0-.24-1.78,4.08,4.08,0,0,1-.44-.72,1.93,1.93,0,0,1,.14-1.31,11.38,11.38,0,0,1-2.11-2,3,3,0,0,0,.5-4.62,1.54,1.54,0,0,0,.74-2.65c-.34-.24-.78-.34-1-.68-.37-.5-.07-1.21.23-1.75l1.6-2.89c1.19-2.14,1.46-4.79,2.74-6.88a51.62,51.62,0,0,0,4.22-9.63l4.56-12.7,3.1,2.69a9.71,9.71,0,0,1,2.55,2.91,12.28,12.28,0,0,1,.82,3.48c1.14,6.9,5.49,12.88,7.1,19.69a13.27,13.27,0,0,0,1.46,4.4,9.52,9.52,0,0,1,.84,1.26,6.64,6.64,0,0,1,.35,2.09,9.74,9.74,0,0,0,4.11,7c1.52,1,3.45,1.77,4.25,3.43a6.77,6.77,0,0,0,.7,1.46c.74.89,2.34,1,2.66,2.11.17.63-.16,1.37.2,1.92a1.75,1.75,0,0,0,.75.56l4.47,2.24c5,2.49,7.52,8.2,11.21,12.39a25.73,25.73,0,0,1,3.35,4.44c1.59,2.84,2.33,6.41,5,8.24a7.77,7.77,0,0,1,1.94,1.44c.85,1.11.54,2.67.61,4.07s1.15,3.06,2.48,2.64a9.65,9.65,0,0,0,0,5.17,26.06,26.06,0,0,0,15.8-6.4c1.3-1.14,2.56-2.59,2.57-4.31a1.67,1.67,0,0,0-.19-.86,2.34,2.34,0,0,0-1-.76c-4.17-2.26-5.43-7.5-7.52-11.76-1.85-3.75-4.57-7-6.88-10.48-5-7.5-8.34-16.57-15.85-21.53-1.65-1.09-3.57-2.06-4.39-3.86a30.79,30.79,0,0,1-.88-3.2,2.69,2.69,0,0,0-2.35-2,14.27,14.27,0,0,0,.54-5,6.22,6.22,0,0,0-.25-2.15,10.16,10.16,0,0,0-1.1-2.12,20.55,20.55,0,0,1-2.83-11c.06-2,.41-4-.19-5.91-.3-1-.82-1.83-1.19-2.76a17.21,17.21,0,0,1-.86-5.15l-.41-6.59a31.55,31.55,0,0,0-.85-6.51c-1.39-5.11-2.72-26.52-7.43-28.93s-12.75,14.06-18,14.39a24,24,0,0,0-6.88,1.32c-3.51,1.32-6.46,3.78-9.33,6.19l-9.72,8.16A35.42,35.42,0,0,1,1012.37,662Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M965.74,522.18a12.22,12.22,0,0,1,9.43-4.6,22,22,0,0,1,10.42,2.62,13.43,13.43,0,0,0,3,1.25c1.72.35,3.62-.12,5.17.7,2.06,1.09,2.45,3.87,2.27,6.19s-.61,4.86.62,6.85a19,19,0,0,1,1.19,1.78,5.94,5.94,0,0,1-.11,3.81,30.6,30.6,0,0,1-2-2.51c-.72-.79-1.95-1.33-2.83-.74s-.88,1.68-.92,2.65-.3,2.14-1.22,2.46a2,2,0,0,1-2-.8c-1.57-1.92-.94-5-2.49-6.92-.89-1.1-2.36-1.63-3.18-2.78-.64-.9-.8-2.07-1.36-3s-1.87-1.69-2.75-1a3.74,3.74,0,0,0-.73,1,4.21,4.21,0,0,1-5,1.5,8.77,8.77,0,0,0-2.17-.93,2.67,2.67,0,0,0-2.47,1.34,5.32,5.32,0,0,0-.65,2.86c0,1.35.24,2.83-.54,3.93a4.06,4.06,0,0,1-1.16,1c-1.15.73-2.72,1.22-3.8.39a2.86,2.86,0,0,1-.85-2.66,21.88,21.88,0,0,1,.81-2.81c.6-2.12-.18-4.51.48-6.51A20.49,20.49,0,0,1,965.74,522.18Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M974.42,570.51a2.5,2.5,0,0,0,.15,1.49,2.42,2.42,0,0,0,.81.78,16.78,16.78,0,0,0,7.64,2.47,2.3,2.3,0,0,1,1,.27,1.89,1.89,0,0,1,.45,2.13,5.67,5.67,0,0,0-.48,2.26c.2,1.43,1.89,2.08,3.33,2.26a7.72,7.72,0,0,0,5.79-1.12,8.93,8.93,0,0,0,2.39-3.59c3.93-9,5.31-19,9.29-28a5.69,5.69,0,0,0,.6-1.87,1.86,1.86,0,0,0-.74-1.73c-.74-.46-1.89-.2-2.39-.91-.25-.37-.22-.86-.44-1.24-.46-.82-1.66-.72-2.49-1.16-.64-.35-1.09-1-1.8-1.19a2.3,2.3,0,0,0-1.88.81c-2.33,2.18-3.56,5.27-4.86,8.19a97.27,97.27,0,0,1-7,12.91c.31-.48-1.48-4.13-2.18-4.27-1.22-.25-2.8,1.9-3.46,2.71A17.16,17.16,0,0,0,974.42,570.51Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><rect x="930.83" y="536.29" width="78.03" height="78.03" fill="#fff"/><path d="M1022.22,609.51V599.27H996.64v46.1h49.95V609.51Zm-15.35,30.73h-5.11v-5.12h5.11Zm0-10.24h-5.11v-5.12h5.11Zm0-10.24h-5.11v-5.13h5.11Zm0-10.25h-5.11v-5.13h5.11Zm10.23,30.73H1012v-5.12h5.11Zm0-10.24H1012v-5.12h5.11Zm0-10.24H1012v-5.13h5.11Zm0-10.25H1012v-5.13h5.11Zm24.38,30.73h-19.26v-5.12h5.11V630h-5.11v-5.12h5.11v-5.13h-5.11v-5.12h19.26ZM1037,619.76h-5.11v5.13H1037v-5.13Zm0,10.24h-5.11v5.13H1037Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><path d="M1060,626.29a31.53,31.53,0,0,0-3.7,3.88,7.73,7.73,0,0,0-1.7,5,2.57,2.57,0,0,0,.48,1.46,1.25,1.25,0,0,0,1.39.43,2,2,0,0,0,.68-.61,32,32,0,0,1,2.3-2.5c.3-.29.68-.6,1.08-.49a1.14,1.14,0,0,1,.47.31,3.18,3.18,0,0,1,1,1.51,3.58,3.58,0,0,1-1.06,2.91,7.54,7.54,0,0,0-1.79,2.65,1.13,1.13,0,0,0,0,.85,1.39,1.39,0,0,0,.53.46,7.72,7.72,0,0,0,6.47.42c1.39-.55,2.59-1.51,4-2a9.61,9.61,0,0,0,1.77-.66,3.64,3.64,0,0,0,1.57-2.34,10,10,0,0,0,.11-2.89,33,33,0,0,0-2.41-10.9,1.3,1.3,0,0,0-.39-.58,1.37,1.37,0,0,0-.66-.19c-1.75-.18-4.63-1.08-6.32-.43a4.32,4.32,0,0,0-1.49,1.33C1061.94,624.26,1060,625.83,1060,626.29Z" transform="translate(-51.77 -47.02)" fill="#a1616a"/><path d="M1059.4,624.74c0-1.68-2.08-5.71,1.21-6,0-1.78-2.53-2.9-2.07-4.78.16-.64.67-1.15.75-1.79.21-1.83-3.09-2.82-2.55-4.58.2-.67.93-1.08,1.09-1.76.37-1.58-2.46-2.29-2.51-3.91,0-.55.3-1.07.28-1.61,0-.69-.6-1.21-.93-1.8-.85-1.53-.44-3.9-2-4.68,1,.08,1.39-1.45.95-2.39s-1.3-1.75-1.3-2.79a4.43,4.43,0,0,0,0-1.15c-.29-1-1.93-1.07-2.2-2.07a10.67,10.67,0,0,1,0-1.13c-.1-.78-.9-1.26-1.65-1.49a6.56,6.56,0,0,1-2.2-.78c-.48-.37-1-1-1.55-.65-.19.11-.29.33-.44.5-.61.71-1.78.4-2.56-.13-2.29-1.55-3.42-4.34-3.92-7.06s-.47-5.53-1.07-8.23A18.85,18.85,0,0,0,1036,564a12.73,12.73,0,0,1-1.16-2.46c-.12-1.57,3.14-.5,4.38-.34a19.44,19.44,0,0,1,3.56.67,37.65,37.65,0,0,1,3.63,1.59c5,2.19,10.92,2.46,14.9,6.13,1.31,1.21,2.41,2.79,4.1,3.33a20.93,20.93,0,0,1,2.3.6c1.89.89,2.18,3.39,3.21,5.2a11.11,11.11,0,0,1,.85,1.5,5.91,5.91,0,0,1,.27,1.92l.14,4.75c.23,8,.47,15.93-.38,23.84-.28,2.6-.67,5.29.09,7.8.2.68.49,1.33.66,2a13.62,13.62,0,0,1,.26,2.47l.11,3.07a1,1,0,0,1-.15.71,1,1,0,0,1-.83.2c-4.29-.38-8.61-2.8-12.66-1.34" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M979.66,612.21a1.32,1.32,0,0,0-.48.4,3.41,3.41,0,0,0,0,4.06,1.37,1.37,0,0,1,.24.4,1.18,1.18,0,0,1-.12.68,2.25,2.25,0,0,0,.31,2.52c.31.26.73.39.93.73.35.58-.14,1.32-.06,2,.1.89,1.15,1.33,2,1.44a2.13,2.13,0,0,0,1.95-.52,1.62,1.62,0,0,0,0-1.77,4.74,4.74,0,0,0-1.32-1.32A2,2,0,0,0,985,619a2.84,2.84,0,0,0-1.14-2.49c-.18-.15-.4-.3-.45-.54s.19-.57.41-.8c1-1,1.77-3.45-.11-4a4.63,4.63,0,0,0-2,.09c-.48.15-.48.44-.85.64S980.08,612,979.66,612.21Z" transform="translate(-51.77 -47.02)" fill="#a1616a"/><path d="M999.31,543.14a3.3,3.3,0,0,0-2.54,1.28,7.31,7.31,0,0,0-1.06,3.4,29.81,29.81,0,0,1-4,10.86" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M1002.81,545.88a3.88,3.88,0,0,0-3.32,2,11.1,11.1,0,0,0-.84,3.39,18.42,18.42,0,0,1-3.33,7.11" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M357.66,609.59c.58,6.32-4.19,12.44-2.8,18.62.3,1.32.87,2.57,1.08,3.9.57,3.67-1.62,7.15-3.71,10.22l-17.94,26.34a17.07,17.07,0,0,1-2.57,3.17c-3.44,3-8.58,2.73-13.09,3.64a22.45,22.45,0,0,0-8.76,3.88.57.57,0,0,0-.12.79,7.55,7.55,0,0,0,6.52,3.06c.47.62,0,1.53-.65,2-1,.67-2.29.84-2.48,2.48a2.68,2.68,0,0,0,.33,1.64,5.07,5.07,0,0,0,3.14,2.18c6.21,1.9,12.93-1.43,17.57-6s8-10.27,12.56-14.9c2.53-2.55,5.4-4.75,8-7.23,5.2-4.94,9.23-11,13.13-17a18.87,18.87,0,0,0,2.84-5.78c.48-2.06.26-4.23.82-6.27.72-2.66,2.68-4.79,4.3-7,3.19-4.38,5.31-9.75,4.89-15.15s-3.76-10.74-8.86-12.57a7.93,7.93,0,0,0-5-.31c-2.09.65-3.63,2.38-5.06,4l-3.4,3.94a9.08,9.08,0,0,0-2,3,3.15,3.15,0,0,0,.7,3.35" transform="translate(-51.77 -47.02)" fill="#fbbebe"/><path d="M357.66,609.59c.58,6.32-4.19,12.44-2.8,18.62.3,1.32.87,2.57,1.08,3.9.57,3.67-1.62,7.15-3.71,10.22l-17.94,26.34a17.07,17.07,0,0,1-2.57,3.17c-3.44,3-8.58,2.73-13.09,3.64a22.45,22.45,0,0,0-8.76,3.88.57.57,0,0,0-.12.79,7.55,7.55,0,0,0,6.52,3.06c.47.62,0,1.53-.65,2-1,.67-2.29.84-2.48,2.48a2.68,2.68,0,0,0,.33,1.64,5.07,5.07,0,0,0,3.14,2.18c6.21,1.9,12.93-1.43,17.57-6s8-10.27,12.56-14.9c2.53-2.55,5.4-4.75,8-7.23,5.2-4.94,9.23-11,13.13-17a18.87,18.87,0,0,0,2.84-5.78c.48-2.06.26-4.23.82-6.27.72-2.66,2.68-4.79,4.3-7,3.19-4.38,5.31-9.75,4.89-15.15s-3.76-10.74-8.86-12.57a7.93,7.93,0,0,0-5-.31c-2.09.65-3.63,2.38-5.06,4l-3.4,3.94a9.08,9.08,0,0,0-2,3,3.15,3.15,0,0,0,.7,3.35" transform="translate(-51.77 -47.02)" opacity="0.05"/><path d="M221,636.44c1,3.16,2,6.32,3.21,9.4A79.54,79.54,0,0,0,232.52,661a109.23,109.23,0,0,0,6.87,9c3.06,3.61,6.48,7.24,7.56,11.85.63,2.66.42,5.45.68,8.17s1.15,5.61,3.35,7.24a12.45,12.45,0,0,0,5.52,1.82c1.38.22,3.11.29,3.83-.91a3.41,3.41,0,0,0,.38-1.58l.34-4c.07-.86.37-2,1.23-2s1.3,1.11,2,1.62a2.17,2.17,0,0,0,3-1,5,5,0,0,0,.08-3.5,16.62,16.62,0,0,0-8.53-10.57,25.64,25.64,0,0,1-4.16-2.17,14.15,14.15,0,0,1-3.27-4.12c-7.56-12.45-15.16-25-20.5-38.51a28.49,28.49,0,0,1-2.11-7.59,49,49,0,0,1,.33-8,45.79,45.79,0,0,0-1.32-14.28,11.23,11.23,0,0,0-1.37-3.47c-2.19-3.34-7.36-3.83-10.62-1.53a10.94,10.94,0,0,0-4.22,7.72c-.24,2.69,1.32,5.5,2.11,8Q217.37,624.81,221,636.44Z" transform="translate(-51.77 -47.02)" fill="#a1616a"/><path d="M221,636.44c1,3.16,2,6.32,3.21,9.4A79.54,79.54,0,0,0,232.52,661a109.23,109.23,0,0,0,6.87,9c3.06,3.61,6.48,7.24,7.56,11.85.63,2.66.42,5.45.68,8.17s1.15,5.61,3.35,7.24a12.45,12.45,0,0,0,5.52,1.82c1.38.22,3.11.29,3.83-.91a3.41,3.41,0,0,0,.38-1.58l.34-4c.07-.86.37-2,1.23-2s1.3,1.11,2,1.62a2.17,2.17,0,0,0,3-1,5,5,0,0,0,.08-3.5,16.62,16.62,0,0,0-8.53-10.57,25.64,25.64,0,0,1-4.16-2.17,14.15,14.15,0,0,1-3.27-4.12c-7.56-12.45-15.16-25-20.5-38.51a28.49,28.49,0,0,1-2.11-7.59,49,49,0,0,1,.33-8,45.79,45.79,0,0,0-1.32-14.28,11.23,11.23,0,0,0-1.37-3.47c-2.19-3.34-7.36-3.83-10.62-1.53a10.94,10.94,0,0,0-4.22,7.72c-.24,2.69,1.32,5.5,2.11,8Q217.37,624.81,221,636.44Z" transform="translate(-51.77 -47.02)" opacity="0.05"/><path d="M372.75,755.18c-3.92,2.39-8.8,2.53-13.36,2-.73-.09-1.6-.15-2.07.42-.68.82.12,2,.95,2.7a19.88,19.88,0,0,0,9.18,3.77,62.62,62.62,0,0,0,9,.6c8.19.14,16.42.27,24.53-.91a3.25,3.25,0,0,0,1.34-.39,2.54,2.54,0,0,0,1-1.54,6.13,6.13,0,0,0-2.14-5.84,18,18,0,0,0-5.72-3.07l-7.12-2.77c-1.67-.65-4.36-2.38-6.17-2.24C378.81,748.13,375.58,753.52,372.75,755.18Z" transform="translate(-51.77 -47.02)" fill="#3f3d56"/><path d="M390.64,771.91a17.49,17.49,0,0,1-11.95,4.46c-1.12,0-2.68.21-2.68,1.33a1.76,1.76,0,0,0,.32.93,11,11,0,0,0,6.18,4.84,22,22,0,0,0,7.46.47l7.3-.38c1.38-.07,2.77-.14,4.14-.31s2.86-.45,4.29-.67a57.22,57.22,0,0,1,10.63-.5,3.09,3.09,0,0,0,2.62-.7c.65-.82.27-2,.06-3-.44-2.11,0-4.33-.41-6.46-.7-3.72-3.9-6.58-7.45-7.93-3.28-1.25-9.1-2.68-12.21-.6C395.6,765.6,393.59,769.24,390.64,771.91Z" transform="translate(-51.77 -47.02)" fill="#3f3d56"/><path d="M376.22,677.45c-3,3.95-6,8.51-5.3,13.39.4,2.63,1.87,4.95,2.95,7.39a52.09,52.09,0,0,1,3,10.38c1.11,5.17,2.22,10.35,2.91,15.59a97.36,97.36,0,0,1,.65,17.9c-.09,1.44-.25,3-1.25,4-.4.4-.92.73-1.09,1.27a2.15,2.15,0,0,0,.23,1.5,16.61,16.61,0,0,0,8.9,8.19,34.09,34.09,0,0,0,12.1,2.26,3.4,3.4,0,0,0,1.62-.21,3.12,3.12,0,0,0,1.25-1.43c3-5.7,1.33-12.58,1.38-19,0-5.37,1.3-10.69,1.07-16.06-.19-4.3-1.34-8.5-1.76-12.79-.69-7,.6-14.1,1.89-21.05,1-5.32,2-10.65,3.25-15.92a30.36,30.36,0,0,1,3.44-9.24c1.4-2.21,3.3-4.06,4.9-6.14a27.87,27.87,0,0,0,5.48-20.37c-.1-.72-10.3,2.58-11.18,3a34.66,34.66,0,0,0-10,6.41c-2.36,2.24-4.21,5.24-6.28,7.76Q390,659.61,385.76,665,380.92,671.18,376.22,677.45Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M376.22,677.45c-3,3.95-6,8.51-5.3,13.39.4,2.63,1.87,4.95,2.95,7.39a52.09,52.09,0,0,1,3,10.38c1.11,5.17,2.22,10.35,2.91,15.59a97.36,97.36,0,0,1,.65,17.9c-.09,1.44-.25,3-1.25,4-.4.4-.92.73-1.09,1.27a2.15,2.15,0,0,0,.23,1.5,16.61,16.61,0,0,0,8.9,8.19,34.09,34.09,0,0,0,12.1,2.26,3.4,3.4,0,0,0,1.62-.21,3.12,3.12,0,0,0,1.25-1.43c3-5.7,1.33-12.58,1.38-19,0-5.37,1.3-10.69,1.07-16.06-.19-4.3-1.34-8.5-1.76-12.79-.69-7,.6-14.1,1.89-21.05,1-5.32,2-10.65,3.25-15.92a30.36,30.36,0,0,1,3.44-9.24c1.4-2.21,3.3-4.06,4.9-6.14a27.87,27.87,0,0,0,5.48-20.37c-.1-.72-10.3,2.58-11.18,3a34.66,34.66,0,0,0-10,6.41c-2.36,2.24-4.21,5.24-6.28,7.76Q390,659.61,385.76,665,380.92,671.18,376.22,677.45Z" transform="translate(-51.77 -47.02)" opacity="0.05"/><path d="M397.88,647.07c.64,3.06,3.61,5.4,3.69,8.53.07,2.5-1.71,4.6-3,6.75a45.27,45.27,0,0,0-3.06,6.94,105.82,105.82,0,0,1-9,17.87c-1.71,2.72-3.63,5.67-3.23,8.86a13.08,13.08,0,0,0,1.55,4.23l5.14,10.21a29.3,29.3,0,0,1,2.62,6.45c.45,1.94.49,4,.75,5.92.81,6.26,3.74,12.56,2,18.63-.15.52-.7,1.15-1.11.79,1.7,3.17,3.07,6.37,2.93,10-.06,1.89-.64,3.85.06,5.61A6.12,6.12,0,0,1,398,760c0,.51-.24,1-.29,1.51-.14,1.44,1.18,2.65,2.56,3.11s2.88.43,4.27.84c2.68.8,4.58,3.1,6.88,4.7a14.45,14.45,0,0,0,7.89,2.57,2,2,0,0,0,1.16-.23,1.9,1.9,0,0,0,.65-1.41,7.84,7.84,0,0,0-2.83-6.81,3.15,3.15,0,0,1-1-1.1,2.67,2.67,0,0,1-.1-1.23,91.21,91.21,0,0,0-.3-16.85,26,26,0,0,1-.26-5.36,21.91,21.91,0,0,0,.43-4.47,22.82,22.82,0,0,0-1.37-4.27c-.79-2.55-.57-5.29-.65-8a70.12,70.12,0,0,0-2.26-13.69,10.39,10.39,0,0,0-2.13-4.94c-1.07-1.12-2.8-2.18-2.39-3.67a4.24,4.24,0,0,1,1-1.46,5.86,5.86,0,0,0,1.23-4.47,2,2,0,0,0,2.3-1.08,36,36,0,0,0,18.08-20.56,6.68,6.68,0,0,1,.81-1.83c.77-1.08,2.12-1.55,3.31-2.15,3.74-1.88,6.32-5.41,8.69-8.86a20.61,20.61,0,0,0,3.36-6.43,21.18,21.18,0,0,0,.46-4.64l.21-8a4.59,4.59,0,0,0-.15-1.57,4,4,0,0,0-.87-1.28,15.53,15.53,0,0,0-8.54-4.6c-2.19-.39-4.43-.32-6.65-.5-4.3-.36-8.55-1.69-12.86-1.38-6.76.5-12.78,5.19-16,11.17C401.46,645.2,400.28,647,397.88,647.07Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M173.49,769.54a10.89,10.89,0,0,0,4.6.55c.11-1.27,1.82-1.55,3.09-1.49A3.55,3.55,0,0,1,183,769c.32.2.56.5.87.71a3.74,3.74,0,0,0,1.8.46l6.62.56c2.95.25,6,.48,8.78-.58a2.87,2.87,0,0,0,1.41-.94c.75-1.07,0-2.61-1-3.39s-2.37-1.14-3.41-1.94c-2.3-1.75-2.61-5-3.83-7.64a22.05,22.05,0,0,0-3.16-4.59,17.57,17.57,0,0,0-3.13-3.2c-2.65-1.92-5.71-1.88-8.82-2.15-2.2-.2-4.27-.33-5.85,1.62-1.95,2.42-1.17,7.3-1.05,10.19A72.94,72.94,0,0,0,173.49,769.54Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><path d="M173.49,769.54a10.89,10.89,0,0,0,4.6.55c.11-1.27,1.82-1.55,3.09-1.49A3.55,3.55,0,0,1,183,769c.32.2.56.5.87.71a3.74,3.74,0,0,0,1.8.46l6.62.56c2.95.25,6,.48,8.78-.58a2.87,2.87,0,0,0,1.41-.94c.75-1.07,0-2.61-1-3.39s-2.37-1.14-3.41-1.94c-2.3-1.75-2.61-5-3.83-7.64a22.05,22.05,0,0,0-3.16-4.59,17.57,17.57,0,0,0-3.13-3.2c-2.65-1.92-5.71-1.88-8.82-2.15-2.2-.2-4.27-.33-5.85,1.62-1.95,2.42-1.17,7.3-1.05,10.19A72.94,72.94,0,0,0,173.49,769.54Z" transform="translate(-51.77 -47.02)" opacity="0.05"/><path d="M176.17,640.86c-2,.65-2.9,3.17-2.53,5.27s1.63,3.9,2.67,5.75c2.94,5.27,4.22,11.3,6.69,16.8,1.85,4.11,4.35,7.91,6.18,12s3,8.77,1.85,13.14c-.54,2.13-1.58,4.09-2.28,6.17a35,35,0,0,0-1.34,7,132.68,132.68,0,0,0-.48,24.16,7.34,7.34,0,0,0,.61,2.86c.41.8,1.13,1.64.78,2.47-.14.33-.44.57-.59.9-.42.92.43,1.88,1.2,2.53a2.07,2.07,0,0,1-1.3,1,3.07,3.07,0,0,1,1.31,3.42c-.69.1-.73,1.15-.29,1.7s1.11.9,1.42,1.52a2.13,2.13,0,0,1-1.17,2.68,5.48,5.48,0,0,1-3.19.24,34.58,34.58,0,0,1-5.34-1.17,4.8,4.8,0,0,1-1.64-.75,4.87,4.87,0,0,1-1.47-3.24,58.55,58.55,0,0,1-.37-10c.29-16.16,0-32.34-.7-48.49-.29-6.5-2.24-12.84-4.76-18.84a96.67,96.67,0,0,0-4.64-9c-3.62-6.66-6.84-14-6-21.55.09-.81.39-1.79,1.19-1.92a1.73,1.73,0,0,1,.92.15,42.53,42.53,0,0,1,4.85,2.68A18.38,18.38,0,0,0,176.17,640.86Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M176.17,640.86c-2,.65-2.9,3.17-2.53,5.27s1.63,3.9,2.67,5.75c2.94,5.27,4.22,11.3,6.69,16.8,1.85,4.11,4.35,7.91,6.18,12s3,8.77,1.85,13.14c-.54,2.13-1.58,4.09-2.28,6.17a35,35,0,0,0-1.34,7,132.68,132.68,0,0,0-.48,24.16,7.34,7.34,0,0,0,.61,2.86c.41.8,1.13,1.64.78,2.47-.14.33-.44.57-.59.9-.42.92.43,1.88,1.2,2.53a2.07,2.07,0,0,1-1.3,1,3.07,3.07,0,0,1,1.31,3.42c-.69.1-.73,1.15-.29,1.7s1.11.9,1.42,1.52a2.13,2.13,0,0,1-1.17,2.68,5.48,5.48,0,0,1-3.19.24,34.58,34.58,0,0,1-5.34-1.17,4.8,4.8,0,0,1-1.64-.75,4.87,4.87,0,0,1-1.47-3.24,58.55,58.55,0,0,1-.37-10c.29-16.16,0-32.34-.7-48.49-.29-6.5-2.24-12.84-4.76-18.84a96.67,96.67,0,0,0-4.64-9c-3.62-6.66-6.84-14-6-21.55.09-.81.39-1.79,1.19-1.92a1.73,1.73,0,0,1,.92.15,42.53,42.53,0,0,1,4.85,2.68A18.38,18.38,0,0,0,176.17,640.86Z" transform="translate(-51.77 -47.02)" opacity="0.05"/><path d="M148.85,621.21a7.11,7.11,0,0,0-3.52-1.11A7.14,7.14,0,0,0,141.5,622a40.17,40.17,0,0,0-3.8,3.34,20.33,20.33,0,0,0-4.54,20.11c1.21,3.59,3.4,6.76,5.56,9.86l4.4,6.32c6.71,9.64,13.43,19.28,20.46,28.69a1.08,1.08,0,0,0,.76,1c.26.07.57.06.73.27a.78.78,0,0,1,.09.43,6.53,6.53,0,0,1-.39,2,.93.93,0,0,0-.08.69c.22.53,1.19.23,1.49.73.21.32,0,.75-.32,1s-.6.59-.55,1,.72.79.69,1.29c0,.28-.24.49-.41.71a1.81,1.81,0,0,0,.22,2.31c.46,4.6-2,8.95-2.53,13.55-.79,7.23,2.48,14.29,2.88,21.55a5.77,5.77,0,0,0,.45,2.38c.68,1.25,2.42,2,2.36,3.43a13.09,13.09,0,0,1-.49,1.73,13.91,13.91,0,0,0,.26,2.47c0,.83-.7,1.82-1.47,1.5q.87,2.88,1.54,5.81l15.4,1.27a13.83,13.83,0,0,0-.14-4.16c-.32-1.48-1-2.87-1.34-4.35a5.13,5.13,0,0,1,.61-4.35,1.7,1.7,0,0,1-1.7-1.4,6.86,6.86,0,0,1,0-2.39c.41-4-1.28-8-1.23-12,.05-3.18,1.16-6.23,1.73-9.35,1.2-6.68-.05-13.93,2.92-20,1.8-3.68,4.29-7.76,2.27-11.32-1-1.76-2.75-3-3.89-4.62a18.77,18.77,0,0,1-2.09-5c-2.38-7.36-6.21-14.15-9.58-21.12a22.23,22.23,0,0,1-2.06-5.55,28.21,28.21,0,0,1-.25-5.12,78.48,78.48,0,0,0-.57-9.2,8.61,8.61,0,0,0-1.12-3.81,8.53,8.53,0,0,0-2.4-2.19C160.32,626.07,154.3,624.08,148.85,621.21Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M167.3,775.18a10.89,10.89,0,0,0,4.6.55c.12-1.27,1.82-1.55,3.09-1.49a3.55,3.55,0,0,1,1.77.41c.32.2.56.5.88.71a3.68,3.68,0,0,0,1.8.46l6.61.56c2.95.25,6,.48,8.79-.58a2.89,2.89,0,0,0,1.4-.94c.75-1.07,0-2.61-1-3.39s-2.37-1.14-3.42-1.94c-2.29-1.75-2.61-5-3.83-7.64a22.05,22.05,0,0,0-3.16-4.59,17.52,17.52,0,0,0-3.12-3.2c-2.66-1.92-5.71-1.88-8.82-2.15-2.21-.2-4.28-.33-5.85,1.62-2,2.42-1.18,7.3-1.06,10.19A74.3,74.3,0,0,0,167.3,775.18Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><rect x="199.03" y="612.17" width="78.03" height="78.03" fill="#fff"/><path d="M312.87,695.59c0,8.9-4.17,14.5-10.76,14.5-3.37,0-5.94-1.8-6.39-4.47h-.48a7,7,0,0,1-6.93,4.31c-5.86,0-9.77-4.7-9.77-11.69,0-6.71,3.94-11.38,9.69-11.38a7,7,0,0,1,6.57,3.93h.48v-3.34h4.79V703a2.78,2.78,0,0,0,3,3.1c3.32,0,5.44-4,5.44-10.3,0-10-7.5-16.69-18.57-16.69s-18.75,8-18.75,19.28c0,11.55,7.72,18.93,19.74,18.93a36.21,36.21,0,0,0,6.53-.56,1.9,1.9,0,0,1,.8,3.71,33.24,33.24,0,0,1-7.52.82c-14.61,0-24-9-24-23,0-13.68,9.55-23.07,23.46-23.07C303.6,675.14,312.87,683.49,312.87,695.59Zm-29.15,2.76c0,4.44,2.08,7.13,5.48,7.13,3.58,0,5.84-2.76,5.84-7.13s-2.26-7.07-5.78-7.07S283.72,693.9,283.72,698.35Z" transform="translate(-51.77 -47.02)" fill="#74adff"/><circle cx="183.77" cy="532.28" r="15.25" fill="#a1616a"/><path d="M221.16,583.82c-2.19,1.89-5.32,2-8.19,2.32a51.19,51.19,0,0,0-17.62,5.1,6.29,6.29,0,0,0-2,1.4,5.77,5.77,0,0,0-1,2.18,14.42,14.42,0,0,0-.58,5.3,15.28,15.28,0,0,0,1.47,5,26.84,26.84,0,0,0,9.46,10.78A6.87,6.87,0,0,0,205,617c2,.42,3.95-.75,5.92-1.27a9.7,9.7,0,0,1,5.47.18c1.66.55,3.41,1.56,5,.89a5.22,5.22,0,0,0,2.28-2.59,87.89,87.89,0,0,0,4.16-9.11,34.52,34.52,0,0,1,1.51-3.54c1.77-3.37,4.83-6,6.35-9.46a2.08,2.08,0,0,0,.14-1.78,2.47,2.47,0,0,0-1.12-.86,26.73,26.73,0,0,1-6.09-4.78c-1-1-2.85-3.56-4.29-3.79C222.75,580.68,222.26,582.88,221.16,583.82Z" transform="translate(-51.77 -47.02)" fill="#a1616a"/><path d="M221.52,614.81c-1.77.85-3.85.47-5.77.07-4.94-1-9.93-2.08-14.5-4.22a7.76,7.76,0,0,1-3.56-2.73,8.73,8.73,0,0,1-1-3.42l-.84-5.67c-.29-2,.22-3.82.26-5.82a1.7,1.7,0,0,0-.33-1.27,1.37,1.37,0,0,0-1-.31c-2.29,0-3.67,2.43-5.28,4.06a9.75,9.75,0,0,1-3.24,2.18c-1.47.6-3.28,1-3.87,2.49-.25.61-.22,1.31-.47,1.92-1,2.44-5.4,1.63-6.51,4-.32.68-.3,1.54-.83,2.08s-1.5.52-2.3.66c-3.18.52-4.73,4.2-7.45,5.93-2.29,1.46-5.24,1.43-7.7,2.57a29.48,29.48,0,0,1-4,2,18.9,18.9,0,0,1-4.64.23,1.25,1.25,0,0,0-.93.3,1.28,1.28,0,0,0-.15,1,28.07,28.07,0,0,0,17.35,21.73,6.12,6.12,0,0,1,1.48.71c1.39,1,1.63,3.27,3.2,4a3.31,3.31,0,0,0,3.34-.72,29.05,29.05,0,0,0,2.41-2.66,9.6,9.6,0,0,1,5.37-2.82c1.89-.3,4-.08,5.53-1.24a17,17,0,0,0,1.74-1.86,10.91,10.91,0,0,1,4-2.36A40,40,0,0,1,204.33,633c4-.23,8.15.14,11.94-1.17a7,7,0,0,0,2.66-1.5,8,8,0,0,0,1.78-3.09A23.59,23.59,0,0,0,221.52,614.81Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><path d="M201.86,592.34c1.13-.1,2.26,0,3.39,0,1.33,0,2.64-.32,4-.33a9.86,9.86,0,0,1,9.3,7.08,1.8,1.8,0,0,1,.06,1,.71.71,0,0,1-.77.52,16.9,16.9,0,0,0-1.71-3.43,9.71,9.71,0,0,0-5.12-3.56,13.29,13.29,0,0,0-6.3-.23c-.86.16-1.71.39-2.56.63L198,595.14c-.75.2-1.5.41-2.23.68-.56.2-1.53,1-2.08,1-.75,0-.14-.65.19-1.09a5.34,5.34,0,0,1,2.66-1.93A22.38,22.38,0,0,1,201.86,592.34Z" transform="translate(-51.77 -47.02)" fill="#514e7f"/><path d="M212.14,638.15c1,3.16,2,6.32,3.21,9.4a79.54,79.54,0,0,0,8.32,15.16,109.23,109.23,0,0,0,6.87,9c3.06,3.61,6.48,7.24,7.56,11.85.63,2.66.42,5.45.68,8.17s1.15,5.61,3.35,7.24a12.45,12.45,0,0,0,5.52,1.82c1.38.22,3.11.29,3.83-.91a3.41,3.41,0,0,0,.38-1.58l.33-4c.08-.86.38-2,1.24-2s1.3,1.11,2,1.62a2.17,2.17,0,0,0,3-1,5.07,5.07,0,0,0,.08-3.5A16.62,16.62,0,0,0,250,678.84a25.64,25.64,0,0,1-4.16-2.17,14,14,0,0,1-3.27-4.12c-7.57-12.45-15.17-25-20.5-38.51a28.49,28.49,0,0,1-2.11-7.59,49,49,0,0,1,.33-8A45.79,45.79,0,0,0,219,604.15a11.23,11.23,0,0,0-1.37-3.47c-2.19-3.34-7.36-3.83-10.62-1.53a10.94,10.94,0,0,0-4.22,7.72c-.24,2.69,1.32,5.5,2.11,8Q208.52,626.52,212.14,638.15Z" transform="translate(-51.77 -47.02)" fill="#a1616a"/><path d="M257.73,568.52c.12-1.27-1-2.42-2.31-3.23a32.25,32.25,0,0,1-3.92-2.4c-1.16-1-1.79-2.31-2.95-3.31a13,13,0,0,0-4.4-2.19,33.4,33.4,0,0,0-10.52-1.89,18.53,18.53,0,0,0-10.07,2.66,6,6,0,0,0-1.71,1.59,7,7,0,0,0-.83,2.53,50,50,0,0,1-2.63,8c-1.13,2.88-2.34,5.86-5,8.08-2.85,2.38-7.22,3.75-9.1,6.62a2.15,2.15,0,0,0-.41,1.85c.27.72,1.14,1.21,1.93,1.67,4.63,2.66,8.62,6.1,10.68,10.22a11.85,11.85,0,0,1-.94,12.75c-1.07,1.4-2.55,3.06-1.5,4.47,1.59,2.14,7.08.92,8.34,3.18a4.52,4.52,0,0,1,.17,2.34c0,2.37,2.29,4.49,5.07,5.58a28.27,28.27,0,0,0,9.12,1.5,7.88,7.88,0,0,0,.23-5.9,2.36,2.36,0,0,1-.23-1.34,3.22,3.22,0,0,1,1-1.29c3.35-3.16,2.64-7.81.63-11.56s-5.13-7.19-6.29-11.14c-.58-2-.59-4.17,1-5.8a20.2,20.2,0,0,1,2.87-2.1,10.91,10.91,0,0,0,4-5c.93-2.6.79-5.73,3.53-7.45s6.29-1.16,9.18-2.27C255,573.76,257.55,570.37,257.73,568.52Z" transform="translate(-51.77 -47.02)" fill="#464353"/><circle cx="291.47" cy="526.89" r="16.63" fill="#fbbebe"/><path d="M358.21,573.21a21.56,21.56,0,0,0,13.8,9.65l-1.25,4.54c-2.16,7.82-4.6,16.1-10.64,21.52a10.06,10.06,0,0,0-1.69-7.78,29.46,29.46,0,0,0-5.64-5.9l-9.57-8.33a2.61,2.61,0,0,1-.72-.8,2.44,2.44,0,0,1,0-1.82c1.22-3.8,4.7-6.17,7.52-8.73a26.52,26.52,0,0,0,3.79-4.41C355.77,568.45,357,571.18,358.21,573.21Z" transform="translate(-51.77 -47.02)" fill="#fbbebe"/><path d="M360.33,594.72a9,9,0,0,1-.49,3.67,2.58,2.58,0,0,1-3,1.54c.35-.79-.57-1.69-1.43-1.59a2.69,2.69,0,0,0-1.9,1.61,6,6,0,0,0-.55,3.72c.27,1.58,1.18,3.09.94,4.67-.19,1.31-1.16,2.62-.64,3.85a6.18,6.18,0,0,0,1.24,1.48,4.2,4.2,0,0,1-.45,5.76l13,.25c-.48,2.17.5,4.39,1.61,6.31a39.73,39.73,0,0,0,29.62,19.34,2.58,2.58,0,0,0-.62,3.94c1.06,1.05,2.84.92,4.16.24a31.58,31.58,0,0,0,3.57-2.67,10.91,10.91,0,0,1,7.32-2c1.63.15,3.2.67,4.83.76,4.8.26,8.93-3.2,13.52-4.61,3.37-1,7.18-1,10-3.14,1.22-.9,2.22-2.38,1.86-3.86a6.29,6.29,0,0,0-1.4-2.26c-1.63-2.11-2.58-4.64-3.75-7a41.79,41.79,0,0,0-9.37-12.54,82.71,82.71,0,0,0-9.28-7.05,15.71,15.71,0,0,0-2.52-1.51,25.81,25.81,0,0,1-3.44-1.4c-1.53-1-2.4-2.65-3.57-4-2.57-3-6.52-4.37-9.69-6.73-2.12-1.58-4-3.66-6.53-4.43-1.23-.37-2.55-.4-3.78-.77-2.8-.85-4.84-3.34-7.59-4.34-2.17-.8-4.57-.59-6.87-.88a16,16,0,0,1-7.06-2.67,8.49,8.49,0,0,0-2.28-1.34c-3.47-1-3.75,5.42-4.08,7.66C361.19,588,360.33,591.35,360.33,594.72Z" transform="translate(-51.77 -47.02)" fill="#3f3d56"/><path d="M363.72,616.43c.58,6.31-4.19,12.43-2.8,18.62.3,1.32.86,2.57,1.07,3.9.58,3.67-1.61,7.14-3.7,10.21l-18,26.34a16,16,0,0,1-2.56,3.17c-3.44,3.05-8.58,2.73-13.09,3.65a22.41,22.41,0,0,0-8.77,3.88.57.57,0,0,0-.11.78,7.52,7.52,0,0,0,6.52,3.06c.47.62,0,1.54-.65,2-1,.67-2.29.85-2.48,2.48a2.78,2.78,0,0,0,.32,1.65,5.12,5.12,0,0,0,3.15,2.18c6.21,1.9,12.92-1.44,17.57-6s8-10.27,12.56-14.9c2.53-2.56,5.4-4.75,8-7.23,5.19-5,9.23-11,13.13-17a18.92,18.92,0,0,0,2.84-5.79c.48-2.05.26-4.23.82-6.26.72-2.67,2.67-4.8,4.3-7,3.19-4.39,5.31-9.75,4.89-15.16s-3.77-10.73-8.86-12.57a7.93,7.93,0,0,0-5-.3c-2.09.64-3.63,2.37-5.06,4l-3.41,3.94a9.36,9.36,0,0,0-2,3,3.15,3.15,0,0,0,.7,3.35" transform="translate(-51.77 -47.02)" fill="#fbbebe"/><path d="M372.8,590.5c-2.36.14-5,.37-6.63,2a9.26,9.26,0,0,0-1.66,2.62c-1.62,3.29-3.2,6.74-3.31,10.41-.1,2.93.75,5.8,1.2,8.7.37,2.41-.57,4.87-.75,7.31a49.91,49.91,0,0,0,9.44-3.63,31.56,31.56,0,0,1,5.53-2.87c2.81-.94,7.55.67,10.21,2,.15-1.88-1.26-5.15-1.11-7a7.67,7.67,0,0,1,.42-2.33,13.89,13.89,0,0,1,1.41-2.25,9.21,9.21,0,0,0-.83-10.81c-2.37-2.67-6.09-3.67-9.64-4.09a42.16,42.16,0,0,0-6.74-.23" transform="translate(-51.77 -47.02)" fill="#3f3d56"/><path d="M321.33,557.19l-.38-3.13c2.63.67,5.12-1.55,6.8-3.86s3.23-5,5.78-6c3.11-1.17,6.4.7,9.37,2.24A29.33,29.33,0,0,0,353.65,550a7.61,7.61,0,0,1,1.78.29c1.93.69,2.85,3.11,3.13,5.31s.2,4.54,1.15,6.5c.73,1.48,2,2.59,2.72,4,2,3.93.07,9.31,2.22,13.17l-5.33-4.88c-.49-.45-1.18-.92-1.71-.54s-.46,1-.64,1.47a2.79,2.79,0,0,1-3.79,1.38,10.39,10.39,0,0,1-3.39-3.1,20.72,20.72,0,0,0-8.46-6.41,10.81,10.81,0,0,0-8.95.53c-2.49,1.41-4.31,4.68-7.36,4.79-4.18.16-5.92-7.62-7.85-10.69a3.79,3.79,0,0,0,1.1-4.72C318.56,557,321.27,556.71,321.33,557.19Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M770.23,840.52c-.81-3.43-1.3-6.43-1.3-6.43a13.32,13.32,0,0,0-1.49-6.53v-.94h0v-6.9a22.81,22.81,0,0,1,1.74-3.61c1.24-2.16,0-10.1,0-10.1s-4.6-11.19-3.49-18.29-9.44-31.53-9.44-31.53a31.15,31.15,0,0,1,1-7,5.05,5.05,0,0,0,.13-1.46,1.09,1.09,0,0,0,0-.18v.06c-.16-4.68-3.86-13.46-3.86-13.46l.5-16.72s2.36-9.87-1.49-23.11c-1.35-4.62-2.21-8.31-2.76-11.17-.06-.32-.12-.63-.17-.93,7.93-1.21,14-2.22,14-2.22s-4.6-19.25-7.71-22.62-5.59-13.95-5.59-13.95-1.62-13.6,1-17.57,3-10.83,3-10.83,6-4.33,6.71-6.26a31.7,31.7,0,0,0,2-8.54c0-2.29-.75-4.33-.5-5.54s-1.74-5.77-.74-7.94a5.81,5.81,0,0,0,.39-2.09.13.13,0,0,0,0-.06v0a29.73,29.73,0,0,0-.53-5.65,16,16,0,0,0-5.9-3.16l-.13-.51-.34-1.35a4.56,4.56,0,0,0-.59-.35v-.5l0-2,.93-4.4c1.84-7.63-8.36-8.77-8.36-8.77a5.38,5.38,0,0,0-2.89-2.54c-2-.72-.34,11.5.62,12.28.72.58,3,4.42,4,6.3h0l.18.31a4.06,4.06,0,0,0-.47.49l.39,2.65.06.41a10.89,10.89,0,0,0-1.63,2.77s1.87,2.05,1.49,4.34a13.6,13.6,0,0,0,.62,5.29c-.11-.13-1.42-1.55-2.73-1.2s-5,1.44-5,1.44-2.74.48-2.49,1.08-1.86,3.25-1.86,3.25l-7.35-7c-.08-.21-.15-.42-.22-.63a16.8,16.8,0,0,1-.63-3,16.33,16.33,0,0,0,2.34-.75,5.07,5.07,0,0,0,2-1.3,7.94,7.94,0,0,0,1.18-3.17c.58-2.14,1.83-4.05,2.73-6.08A19.78,19.78,0,0,0,739,562a7.22,7.22,0,0,0-1.12-3.2c-1.2-1.65-3.38-2.32-5-3.64s-2.6-3.32-4.45-4.31a8.77,8.77,0,0,0-5.58-.48,29.82,29.82,0,0,0-10.41,3.78c-1.08.64-2.25,1.37-3.49,1.15a4.71,4.71,0,0,1-2.51-1.84.49.49,0,0,1,0-.11l-.09-.09a13.17,13.17,0,0,0-1.14,5.5c0,.29,0,.58,0,.88,0,.1,0,.2,0,.3a2.26,2.26,0,0,1,0,.26h0a1.76,1.76,0,0,1-.06.39,2.83,2.83,0,0,1-.68,1,4.43,4.43,0,0,0-.6.82c0-.1.06-.2.1-.3a4.34,4.34,0,0,0-.77,2.31,2.3,2.3,0,0,0,.56,1.66,8,8,0,0,0,1.19,1,14,14,0,0,0-.21,2.44,14.22,14.22,0,0,0,6.92,12.13l.25.63a17.49,17.49,0,0,1,1.33,8c0,.2,0,.39-.09.59l-.26.3h0s-12.14.12-15-2.47-7.21,6.32-7.21,6.32-4.35.85-5.22,0-6-.12-6-.12a11,11,0,0,0-7.58-2.76,22.27,22.27,0,0,0-5.57-3.1h0l-.14-.05h0a6.22,6.22,0,0,0-2.74-.34s-6-4.94-7.7-7.58-10-12.47-10.07-12.52l0-.47-.1-1.43a5.58,5.58,0,0,1-.74.07c0-.15-.1-.31-.17-.5a27,27,0,0,0-1.76-4s0-1.8.53-2.25-.22-7.07-.22-7.07-5.38-12.57-10.19-3.19c0,0-9.11,6.07-1.47,13.15,0,0,3,1.47,3.48,2.64.29.76,1.32,2.89,2,4.3l.31.63-.09.07.12,1.18,0,.46c-1.44.81-2.41,1.62-2.18,2.24a13.16,13.16,0,0,1,.87,3.25s10.57,13.23,11.94,18.89c0,0,28.34,16.84,37.66,18.05l-1.61,8.42a66.59,66.59,0,0,0-.37,6.86c.12,1.8-1.12,10-1.12,10s-1.62,12-3,13.71-1.12,8.91-1.12,8.91a60.09,60.09,0,0,1-1.86,10.22c-1.37,4.58-.37,10.23-.37,10.23s-4.73,10.83,6.59,3.49c0,0,5.55-.34,12-.56,0,.21,0,.42,0,.64,0,.82,0,1.71,0,2.65-.08,6.2-.12,14.75.16,21.22.5,11.43,4,34,4,34v11.36a15.89,15.89,0,0,0-.32,3.25,21.06,21.06,0,0,0,3.06,11.38l.87,7.58s2,5,2.08,8a3.93,3.93,0,0,1-.09.72,5.38,5.38,0,0,0-.1,1.16c-.11,3.44,2,11.68,2,11.68s.13,8.3,1.37,8.78c1.06.41-1.42,4.79-2.16,6a2,2,0,0,1-.05-.24c-.09.16-.15.25-.15.25a5.83,5.83,0,0,0-.39,2.1,3,3,0,0,0,1.38,2.92c2.36,1.45,3.63,2.65,1.63,3.13a19.86,19.86,0,0,0-2.19.46c0-.09-.08-.19-.11-.28A1.34,1.34,0,0,0,705,824a6.15,6.15,0,0,0,.75,2.81,30,30,0,0,0,3.36,6.14l1-.11a4.72,4.72,0,0,1-.56,1,3.87,3.87,0,0,1-1.4,1.24,4.48,4.48,0,0,1-1.7.59,4.74,4.74,0,0,0-3.52,1.71c-1.24,1.6-2,3.79.43,5.71l8.89,3.06s15.29,2,14.48-1.44-1.3-6.43-1.3-6.43a13.57,13.57,0,0,0-1.25-6.09,6,6,0,0,0-.54-.9l.54-.06s1.12-7.58,2.61-9c.35-.33.43-.59.34-.79.16-.41-.23-.65-.73-.79l-.11.3a7.5,7.5,0,0,0-1.48-.16s-.5-4,1.11-5.42a1.53,1.53,0,0,0,.32-1.18,6.8,6.8,0,0,0-.17-1.62l-.06.1a57.75,57.75,0,0,0-3.57-9.33s-.12-3.61.87-5.06-.12-19.61-.12-19.61.37-8.78-.75-12.87,1.37-8.91,1.37-8.91l0-.26,0-.06s-.06-.54-.15-1.39l0,.09c-.25-2.33-.72-6.54-1.07-8.48-.5-2.77.12-16,.12-16l2.24-5.65,4,9.74,4.22,13a11.05,11.05,0,0,1,2.15,5.52c0,.14,0,.28,0,.41a6.53,6.53,0,0,0,0,.87,7.76,7.76,0,0,0,1.29,4.63s1.12,6.14,2.86,7.7,1.74,4.57,1.74,4.57,2.11,8.91,3.11,10.47c.84,1.32.88,4.94.87,6h0v.33s.29,3.18.28,5.86c0,.32,0,.65,0,1v-.07a9.32,9.32,0,0,1-.26,2.16l0,.13c0-.15,0-.31,0-.45a22.26,22.26,0,0,0-.64,5.55c-.06,3.2.43,7,2.37,9.21,3.36,3.85,5.47,3.37,5.47,3.37s-1.62,4.81-3.61,5.78a1.2,1.2,0,0,0-.21.13c0-.09,0-.19-.05-.28a2.35,2.35,0,0,0-.58,1.8,12.88,12.88,0,0,0,2.46,7.13,3.94,3.94,0,0,0,1.68,1l-.31.19a7,7,0,0,1-.69.33,3.26,3.26,0,0,1-1,.26,4.74,4.74,0,0,0-3.52,1.71c-1.24,1.6-2,3.79.43,5.71l8.89,3.06S771,844,770.23,840.52Z" transform="translate(-51.77 -47.02)" fill="url(#fe3366dc-1c26-4135-9415-0b0409d0ae5c)"/><path d="M711.83,846.2l-8.61-3.06c-2.37-1.92-1.61-4.11-.41-5.71a4.53,4.53,0,0,1,3.4-1.71,4.21,4.21,0,0,0,1.65-.59,3.9,3.9,0,0,0,1.36-1.24,6.33,6.33,0,0,0,1-3.33s9.45-2.76,12,0a7.06,7.06,0,0,1,1.15,1.68,14,14,0,0,1,1.2,6.09s.48,3,1.26,6.43S711.83,846.2,711.83,846.2Z" transform="translate(-51.77 -47.02)" fill="#2d293d"/><path d="M753.94,842l-8.6-3.06c-2.38-1.92-1.62-4.11-.42-5.7a4.52,4.52,0,0,1,3.41-1.72,3.11,3.11,0,0,0,1-.26,5.06,5.06,0,0,0,.66-.33c2.41-1.32,2.35-4.57,2.35-4.57s9.44-2.77,12,0a6.69,6.69,0,0,1,.9,1.23,13.74,13.74,0,0,1,1.45,6.54s.48,3,1.26,6.43S753.94,842,753.94,842Z" transform="translate(-51.77 -47.02)" fill="#2d293d"/><path d="M722.23,830.56a7.06,7.06,0,0,1,1.15,1.68h0l-14.16,1.64a6.33,6.33,0,0,0,1-3.33S719.65,827.8,722.23,830.56Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M765.25,827.55v2.65c-2.2,3.63-12.85,2.84-15.94,1a5.06,5.06,0,0,0,.66-.33c2.41-1.32,2.35-4.57,2.35-4.57s9.44-2.77,12,0A6.69,6.69,0,0,1,765.25,827.55Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M766.94,816.12a23.62,23.62,0,0,0-1.69,3.61v9.51c-2.4,4-14.92,2.65-16.6.48s-3.49-7.82-1.57-8.78,3.49-5.78,3.49-5.78-2,.48-5.29-3.37S743,799.4,743.6,797.35s0-8.9,0-8.9.12-4.81-.84-6.38-3-10.47-3-10.47,0-3-1.68-4.57-2.77-7.7-2.77-7.7a7.89,7.89,0,0,1-1.2-5.17c.36-3-2.05-6.26-2.05-6.26l-4.09-13-3.85-9.75-2.16,5.65s-.61,13.24-.12,16,1.2,10.1,1.2,10.1-2.41,4.82-1.32,8.91.72,12.87.72,12.87,1.08,18.17.12,19.62-.84,5-.84,5,4.93,10.59,3.36,12-1.08,5.42-1.08,5.42,3.37,0,1.93,1.44-2.53,9-2.53,9L708.83,833a30.8,30.8,0,0,1-3.26-6.14c-1.92-4.45.36-4,2.3-4.45s.71-1.68-1.58-3.13-1-4.69-1-4.69,3.49-5.9,2.29-6.38-1.33-8.78-1.33-8.78-2.4-9.87-1.8-12.51-1.93-9-1.93-9l-.84-7.58A20.84,20.84,0,0,1,699.08,756V744.29s-3.37-22.62-3.86-34c-.3-7.32-.22-17.31-.12-23.55.06-3.49.12-5.81.12-5.81l52-5.41a43.08,43.08,0,0,0,.95,7.72c.53,2.85,1.36,6.55,2.66,11.17,3.73,13.23,1.45,23.1,1.45,23.1l-.48,16.72s4.57,11.19,3.61,15a31.76,31.76,0,0,0-1,7s10.23,24.43,9.15,31.53S766.94,806,766.94,806,768.14,814,766.94,816.12Z" transform="translate(-51.77 -47.02)" fill="#464353"/><path d="M737.22,753.44,753,751.33S744.08,760.47,737.22,753.44Z" transform="translate(-51.77 -47.02)" opacity="0.05"/><path d="M750.75,735.87s.55,5.59-2.88,7.7C747.87,743.57,754,742.61,750.75,735.87Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M749.78,718.06s-13.22,10.89-18,10S749.78,718.06,749.78,718.06Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M717.6,758.55s-10,2.29-10.34,6.32S717.6,758.55,717.6,758.55Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M719.81,808.72s-14.19,2.65-10.16,4.46a68.8,68.8,0,0,0,10.65,3.24S724.87,816.66,719.81,808.72Z" transform="translate(-51.77 -47.02)" opacity="0.05"/><g opacity="0.05"><path d="M706.78,816a2.81,2.81,0,0,1-1.3-2.06l-.14.26s-1.33,3.24,1,4.69c.26.16.51.33.74.49.42-.08.88-.14,1.31-.25C710.29,818.69,709.07,817.48,706.78,816Z" transform="translate(-51.77 -47.02)"/><path d="M725.07,815.08c.39-.36.37-1.29.14-2.48a6.71,6.71,0,0,0-.81,3.49A2.67,2.67,0,0,1,725.07,815.08Z" transform="translate(-51.77 -47.02)"/><path d="M722.88,755.22a16.56,16.56,0,0,0-1,4.42,17.48,17.48,0,0,1,1.1-3S723,756.06,722.88,755.22Z" transform="translate(-51.77 -47.02)"/><path d="M755.39,748.9a5.72,5.72,0,0,0,.13-1.32c-.18.9-.3,1.74-.39,2.47C755.21,749.67,755.29,749.29,755.39,748.9Z" transform="translate(-51.77 -47.02)"/><path d="M722.54,798a7.57,7.57,0,0,0,.36-2.67,8.81,8.81,0,0,0-.69,3.37A3.24,3.24,0,0,1,722.54,798Z" transform="translate(-51.77 -47.02)"/><path d="M725.52,820.68a48.12,48.12,0,0,0-1.65,7.39l-14.55,1.69a30.14,30.14,0,0,1-3.26-6.14,10.72,10.72,0,0,1-.41-1.06c-.87.4-1.22,1.3-.07,4a29.79,29.79,0,0,0,3.26,6.13L723.38,831s1.09-7.58,2.53-9C726.62,821.23,726.17,820.87,725.52,820.68Z" transform="translate(-51.77 -47.02)"/><path d="M706.3,799.07s.12,8.31,1.32,8.79h0c.61-1.37,1-2.67.47-2.89-1.2-.48-1.32-8.78-1.32-8.78s-2.41-9.87-1.8-12.52-1.93-9-1.93-9l-.84-7.58a20.88,20.88,0,0,1-2.65-14.32V741.08s-3.37-22.62-3.85-34.05c-.31-7.32-.22-17.31-.12-23.55,0-1.12,0-2.12,0-3l-.41,0s-.06,2.31-.12,5.81c-.1,6.23-.19,16.23.12,23.55.48,11.43,3.85,34.05,3.85,34.05v11.67A20.81,20.81,0,0,0,701.73,770l.84,7.58s2.53,6.37,1.92,9S706.3,799.07,706.3,799.07Z" transform="translate(-51.77 -47.02)"/><path d="M749.13,826.51a14,14,0,0,1-2.3-5.72c-1.49,1.34.22,6.55,1.82,8.61s14.2,3.49,16.61-.49v-2.29C762,829.85,750.73,828.56,749.13,826.51Z" transform="translate(-51.77 -47.02)"/><path d="M767.42,812.91a24.05,24.05,0,0,0-1.68,3.61v1.69c.27-.62.66-1.44,1.2-2.41a7.29,7.29,0,0,0,.53-3Z" transform="translate(-51.77 -47.02)"/><path d="M749.87,814.81a23.17,23.17,0,0,0,1.19-2.86s-2,.48-5.3-3.37c-2.36-2.8-2.49-8.09-2.16-11.55-.6,2.05-1.57,10.59,1.68,14.44C747.41,814,749,814.65,749.87,814.81Z" transform="translate(-51.77 -47.02)"/><path d="M743.6,788.13a66.12,66.12,0,0,1,.24,7.13c.08-.47.17-.85.24-1.12.61-2,0-8.9,0-8.9s.12-4.82-.84-6.38-3-10.47-3-10.47,0-3-1.68-4.57-2.77-7.7-2.77-7.7a7.89,7.89,0,0,1-1.21-5.17c.37-3-2-6.26-2-6.26l-4.09-13L724.59,722l-2.17,5.65s0,.71-.07,1.83l1.76-4.59,3.85,9.74,4.09,13s2.4,3.25,2,6.25A7.91,7.91,0,0,0,735.3,759s1.08,6.13,2.76,7.7,1.69,4.57,1.69,4.57,2,8.9,3,10.47S743.6,788.13,743.6,788.13Z" transform="translate(-51.77 -47.02)"/></g><path d="M753.7,566.75l-.9,4.4.05,2,0,1.44-5,.52-.56-1h0c-1-1.88-3.2-5.71-3.9-6.3-.93-.78-2.58-13-.6-12.27a5.24,5.24,0,0,1,2.8,2.53S755.48,559.11,753.7,566.75Z" transform="translate(-51.77 -47.02)" fill="#ffcdd3"/><path d="M752.89,574.54l-5,.52-.56-1h0a4.42,4.42,0,0,1,5.54-.91Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M754.15,576.92l-6.61,1.54-.14-1-.38-2.65a4.55,4.55,0,0,1,6.41-.88l.33,1.35Z" transform="translate(-51.77 -47.02)" fill="#dce6f2"/><path d="M646.91,567.23l-7.06,3.8-.64-1.34c-.68-1.41-1.68-3.53-2-4.29-.42-1.17-3.37-2.65-3.37-2.65-7.4-7.07,1.41-13.14,1.41-13.14,4.67-9.39,9.87,3.18,9.87,3.18s.72,6.63.21,7.07-.51,2.26-.51,2.26a27.49,27.49,0,0,1,1.71,4C646.8,566.82,646.91,567.23,646.91,567.23Z" transform="translate(-51.77 -47.02)" fill="#ffcdd3"/><path d="M646.91,567.23l-7.06,3.8-.64-1.34c1-.83,4.53-3.7,5.69-3.57a8.28,8.28,0,0,0,1.68,0C646.8,566.82,646.91,567.23,646.91,567.23Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M647.63,569.37l-7.94,3.91-.16-1.71-.11-1.17s4.6-3.95,6-3.8a7.38,7.38,0,0,0,2.08,0l.09,1.43Z" transform="translate(-51.77 -47.02)" fill="#dce6f2"/><path d="M734.45,595.93s-34.63,3.91-28.16,1.81c4.51-1.47,6.3-4.33,6.68-7.51a18.29,18.29,0,0,0-1.29-8,34.77,34.77,0,0,0-3.1-6.26s26.47-14.56,21.18-1.32a20.76,20.76,0,0,0-1.5,6.27,17.68,17.68,0,0,0,.67,6.34A18.91,18.91,0,0,0,734.45,595.93Z" transform="translate(-51.77 -47.02)" fill="#ffcdd3"/><path d="M729.76,574.64a20.76,20.76,0,0,0-1.5,6.27c-2.5,2.09-5.23,2-8.74,2-2.7,0-5.69.66-7.84-.64a34.77,34.77,0,0,0-3.1-6.26S735.05,561.4,729.76,574.64Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><circle cx="667.28" cy="522.45" r="14.32" fill="#ffcdd3"/><path d="M734.45,595.93s-34.63,3.91-28.16,1.81c4.51-1.47,6.3-4.33,6.68-7.51,1.72-1.87,5.18-3.22,7.41-3.93a10.33,10.33,0,0,1,6.27-.1,8.36,8.36,0,0,1,2.28,1A18.91,18.91,0,0,0,734.45,595.93Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M754.15,576.92l-6.61,1.54-.14-1a5.84,5.84,0,0,1,6.36-2.18Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M647.63,569.37l-7.94,3.91-.16-1.71a58.44,58.44,0,0,1,8-3.54Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M748.15,683.19c-13.41,2.11-32.5,4.87-35.53,3.95-2.51-.77-10.53-.69-17.52-.45.06-3.49.12-5.81.12-5.81l52-5.41A43.08,43.08,0,0,0,748.15,683.19Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M761.52,680s-44.16,7.58-48.9,6.13-29.07.13-29.07.13c-10.95,7.33-6.37-3.49-6.37-3.49s-1-5.66.36-10.23a62.65,62.65,0,0,0,1.8-10.23s-.24-7.22,1.08-8.9,2.89-13.72,2.89-13.72,1.21-8.18,1.09-10,.36-6.85.36-6.85l1.56-8.43c-9-1.2-36.46-18.05-36.46-18.05-1.32-5.65-11.55-18.89-11.55-18.89a13.93,13.93,0,0,0-.84-3.25c-.72-1.92,10.11-5.77,10.11-5.77s8.06,9.87,9.74,12.51,7.46,7.58,7.46,7.58a5.83,5.83,0,0,1,2.65.35l.14,0h0a21.34,21.34,0,0,1,5.38,3.09,10.43,10.43,0,0,1,7.34,2.77s4.94-.72,5.78.12,5,0,5,0,4.22-8.9,7-6.32,14.51,2.47,14.51,2.47c1.57-2.08,5.37-3.57,7.76-4.34a10.33,10.33,0,0,1,6.27-.1,7.76,7.76,0,0,1,2.48,1.2l7.12,7s2-2.65,1.81-3.25,2.41-1.08,2.41-1.08,3.49-1.08,4.81-1.45,2.54,1.08,2.64,1.2a14.09,14.09,0,0,1-.6-5.29,6,6,0,0,0-1.44-4.33C750.09,570.3,759.6,579,759.6,579s1.08,5.65.12,7.82,1,6.74.72,7.94.48,3.25.48,5.53a32.9,32.9,0,0,1-1.92,8.55c-.73,1.92-6.5,6.25-6.5,6.25s-.36,6.86-2.89,10.83-1,17.57-1,17.57,2.4,10.59,5.41,14S761.52,680,761.52,680Z" transform="translate(-51.77 -47.02)" fill="#3f3d56"/><path d="M697.15,600.87s-1.32-4-2.53-4.34a28.49,28.49,0,0,1-3.49-1.56l.78-1.48s4.52,1.24,5.24,2.56S697.15,600.87,697.15,600.87Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M673,592.08c-.24,1.21-10.94,2.29-10.94,2.29l5.41-5.43h0l.14.05h0A21.34,21.34,0,0,1,673,592.08Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><circle cx="590.21" cy="528.55" r="0.96" fill="#575988"/><circle cx="591.44" cy="530.48" r="0.96" fill="#575988"/><circle cx="592.65" cy="532.25" r="0.96" fill="#575988"/><circle cx="593.91" cy="534.18" r="0.96" fill="#575988"/><circle cx="707.33" cy="534.07" r="0.78" fill="#575988"/><circle cx="707.45" cy="535.85" r="0.78" fill="#575988"/><circle cx="707.55" cy="537.62" r="0.78" fill="#575988"/><path d="M697.21,633.47c-.11-.14,27,34.11,48.07,14.32C745.28,647.79,712,652.3,697.21,633.47Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M681.63,651.28s16.23.44,17.93,5.11v4.86a3.11,3.11,0,0,1-3,0c-1.64-.88-11.45-5.87-14.91-3.47Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M681.93,651.28s15.52.42,17.15,4.87v4.64a3,3,0,0,1-2.89,0c-1.57-.85-11-5.6-14.26-3.31Z" transform="translate(-51.77 -47.02)" fill="#3f3d56"/><path d="M690.49,616a52.28,52.28,0,0,0,6.29,10.79,42.15,42.15,0,0,0,9.86,9.52S690.76,618.27,690.49,616Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M685.18,597.18s2.71,11.69,9.68,15.66Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M681,598.36c-.07-.22-2.41,9.24,9,14.48C690,612.84,685.18,611.2,681,598.36Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M751.9,590.52c-.18,0,5.62,3.7,7.2,5.41C759.1,595.93,755.33,590.28,751.9,590.52Z" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M715.18,582.44a3.05,3.05,0,0,0,1.11,1.94,3.13,3.13,0,0,0,1.35.3c4.37.27,8.91.46,13-1.22a4.84,4.84,0,0,0,2-1.31A7.79,7.79,0,0,0,733.7,579c.57-2.14,1.78-4,2.65-6.08A20.43,20.43,0,0,0,737.76,562a7.31,7.31,0,0,0-1.09-3.2c-1.16-1.65-3.27-2.32-4.8-3.64s-2.52-3.33-4.3-4.32a8.36,8.36,0,0,0-5.4-.48,28.53,28.53,0,0,0-10.08,3.79c-1,.64-2.18,1.37-3.37,1.15a4.63,4.63,0,0,1-2.48-1.9,13.32,13.32,0,0,0-1.07,6.23,3,3,0,0,1,0,.94,3,3,0,0,1-.67,1c-1.08,1.25-1.75,3.23-.69,4.49.47.55,1.18.85,1.63,1.41.81,1,.53,2.45.51,3.74a2,2,0,0,0,.32,1.27,1.86,1.86,0,0,0,1.77.42,4.84,4.84,0,0,1,1.88-.18,3.17,3.17,0,0,1,1.64,1.26C713.54,576.54,714.33,579.35,715.18,582.44Z" transform="translate(-51.77 -47.02)" fill="#2d293d"/><g opacity="0.1"><path d="M733,581.05a4.73,4.73,0,0,1-2,1.3c-4,1.69-8.58,1.49-12.94,1.22a2.94,2.94,0,0,1-1.35-.3,3,3,0,0,1-1.12-1.93c-.85-3.09-1.63-5.91-3.65-8.47a3.12,3.12,0,0,0-1.64-1.26,4.84,4.84,0,0,0-1.88.18,1.86,1.86,0,0,1-1.77-.42,1.94,1.94,0,0,1-.31-1.27c0-1.29.29-2.74-.52-3.74-.45-.56-1.16-.86-1.63-1.41a2.82,2.82,0,0,1-.27-2.88c-.77,1.22-1.1,2.78-.21,3.84.47.55,1.18.85,1.63,1.41.81,1,.53,2.45.51,3.74a2,2,0,0,0,.32,1.27,1.85,1.85,0,0,0,1.77.42,4.84,4.84,0,0,1,1.88-.18,3.17,3.17,0,0,1,1.64,1.26c2,2.57,2.8,5.38,3.65,8.47a3.05,3.05,0,0,0,1.11,1.94,3.13,3.13,0,0,0,1.35.3c4.37.27,8.91.46,13-1.22a4.91,4.91,0,0,0,2-1.31,3.81,3.81,0,0,0,.62-1.16C733.13,580.92,733.09,581,733,581.05Z" transform="translate(-51.77 -47.02)"/><path d="M705.18,560.19a2,2,0,0,0,.44-.73,3,3,0,0,0,0-.94,13.2,13.2,0,0,1,.67-5.18l-.08-.09a13.2,13.2,0,0,0-1.07,6.23A4.21,4.21,0,0,1,705.18,560.19Z" transform="translate(-51.77 -47.02)"/></g><path d="M712.62,591.12s17.89,2.37,19.5-.32" transform="translate(-51.77 -47.02)" opacity="0.1"/><path d="M747.4,583.72s9.93,0,12.12,3.74" transform="translate(-51.77 -47.02)" opacity="0.1"/></svg>
2 0 \ No newline at end of file
front-end/landing-page/src/constants/config.js deleted 100644 → 0
1   -export const H5_HOST = 'https://h5.luban-h5.com'
2 0 \ No newline at end of file
front-end/landing-page/src/global.less deleted 100644 → 0
1   -@import './Page2/less/antMotionStyle.less';
2   -@import './Page2/less/nav0.less';
3   -@import './Page2/less/footer0.less';
front-end/landing-page/src/layouts/Footer0.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import TweenOne from 'rc-tween-one';
3   -import OverPack from 'rc-scroll-anim/lib/ScrollOverPack';
4   -
5   -class Footer extends React.PureComponent {
6   - render() {
7   - const { ...props } = this.props;
8   - const { dataSource } = props;
9   - delete props.dataSource;
10   - delete props.isMobile;
11   - return (
12   - <div {...props} {...dataSource.wrapper}>
13   - <OverPack {...dataSource.OverPack}>
14   - <TweenOne
15   - animation={{ y: '+=30', opacity: 0, type: 'from' }}
16   - key="footer"
17   - {...dataSource.copyright}
18   - >
19   - {dataSource.copyright.children}
20   - </TweenOne>
21   - </OverPack>
22   - </div>
23   - );
24   - }
25   -}
26   -
27   -export default Footer;
front-end/landing-page/src/layouts/Nav0.jsx deleted 100755 → 0
1   -import React from 'react';
2   -import { findDOMNode } from 'react-dom';
3   -import TweenOne from 'rc-tween-one';
4   -import { Menu, Popover, Icon } from 'antd';
5   -import NavLink from 'umi/navlink';
6   -
7   -const Item = Menu.Item;
8   -const { SubMenu } = Menu;
9   -
10   -class Header extends React.Component {
11   - constructor(props) {
12   - super(props);
13   - this.state = {
14   - phoneOpen: false,
15   - menuHeight: 0,
16   - };
17   - }
18   -
19   - phoneClick = () => {
20   - const menu = findDOMNode(this.menu);
21   - const phoneOpen = !this.state.phoneOpen;
22   - this.setState({
23   - phoneOpen,
24   - menuHeight: phoneOpen ? menu.scrollHeight : 0,
25   - });
26   - };
27   -
28   - render() {
29   - const { ...props } = this.props;
30   - const { dataSource, isMobile } = props;
31   - delete props.dataSource;
32   - delete props.isMobile;
33   - const { menuHeight, phoneOpen } = this.state;
34   - const navData = dataSource.Menu.children;
35   - const navChildren = Object.keys(navData).map((key, i) => (
36   - <Item key={i.toString()} {...navData[key]}>
37   - <NavLink
38   - {...navData[key].a}
39   - href={navData[key].a.href}
40   - to={navData[key].a.href}
41   - target={navData[key].a.target}
42   - >
43   - {navData[key].a.children}
44   - </NavLink>
45   - </Item>
46   - ));
47   - return (
48   - <TweenOne
49   - component="header"
50   - animation={{ opacity: 0, type: 'from' }}
51   - {...dataSource.wrapper}
52   - {...props}
53   - >
54   - <div
55   - {...dataSource.page}
56   - className={`${dataSource.page.className}${phoneOpen ? ' open' : ''}`}
57   - >
58   - <TweenOne
59   - animation={{ x: -30, type: 'from', ease: 'easeOutQuad' }}
60   - {...dataSource.logo}
61   - >
62   - {/* <img width="100%" src={dataSource.logo.children} alt="img" /> */}
63   - <h1>
64   - <a href="/">Luban H5</a>
65   - </h1>
66   - </TweenOne>
67   - <TweenOne
68   - animation={{ x: -30, type: 'from', ease: 'easeOutQuad' }}
69   - {...dataSource.logo}
70   - >
71   - <span style={{color: 'rgba(0,0,0,.65)'}}>移动建站平台</span>
72   - </TweenOne>
73   - {isMobile && (
74   - <div
75   - {...dataSource.mobileMenu}
76   - onClick={() => {
77   - this.phoneClick();
78   - }}
79   - >
80   - <em />
81   - <em />
82   - <em />
83   - </div>
84   - )}
85   - <TweenOne
86   - {...dataSource.Menu}
87   - animation={{ x: 30, type: 'from', ease: 'easeOutQuad' }}
88   - ref={(c) => {
89   - this.menu = c;
90   - }}
91   - style={isMobile ? { height: menuHeight } : null}
92   - >
93   - <Menu
94   - mode={isMobile ? 'inline' : 'horizontal'}
95   - defaultSelectedKeys={['0']}
96   - theme={isMobile ? 'dark' : 'default'}
97   - >
98   - {navChildren}
99   - <SubMenu
100   - style={{color: 'black'}}
101   - title={
102   - <span className="submenu-title-wrapper">
103   - {/* <Icon type="appstore" /> */}
104   - 🔗Links
105   - </span>
106   - }
107   - >
108   - <Menu.ItemGroup title="Project URL">
109   - <Menu.Item key="setting:3" onClick={() => {
110   - window.open('https://h5.luban-h5.com')
111   - }}>Website</Menu.Item>
112   - <Menu.Item key="setting:3.1" onClick={() => {
113   - window.open('https://github.com/ly525/luban-h5')
114   - }}>GitHub</Menu.Item>
115   - <Menu.Item key="setting:4" onClick={() => {
116   - window.open('https://gitee.com/ly525/luban-h5')
117   - }}>Gitee</Menu.Item>
118   - </Menu.ItemGroup>
119   - <Menu.ItemGroup title="Contact">
120   - <Menu.Item key="setting:5.0" onClick={() => {
121   - window.open('https://gitter.im/luban-h5/community')
122   - }}>Gitter</Menu.Item>
123   - <Menu.Item key="setting:5.0" onClick={() => {
124   - window.open('https://support.qq.com/products/93432/')
125   - }}>论坛</Menu.Item>
126   - <Menu.Item key="setting:5" onClick={() => {
127   - window.open('https://gitee.com/ly525/luban-h5#%E4%BA%A4%E6%B5%81%E7%BE%A4')
128   - }}>钉钉群</Menu.Item>
129   - <Menu.Item key="setting:6" onClick={() => {
130   - window.open('https://gitee.com/ly525/luban-h5#%E4%BA%A4%E6%B5%81%E7%BE%A4')
131   - }}>微信群</Menu.Item>
132   - </Menu.ItemGroup>
133   - <Menu.ItemGroup title="Document">
134   - <Menu.Item key="setting:1" onClick={() => {
135   - window.open('https://ly525.github.io/luban-h5/zh/')
136   - }}>中文文档</Menu.Item>
137   - <Menu.Item key="setting:2" onClick={() => {
138   - window.open('https://ly525.github.io/luban-h5')
139   - }}>English Doc</Menu.Item>
140   - </Menu.ItemGroup>
141   - </SubMenu>
142   - </Menu>
143   - </TweenOne>
144   - </div>
145   - </TweenOne>
146   - );
147   - }
148   -}
149   -
150   -export default Header;
front-end/landing-page/src/layouts/data.source.js deleted 100755 → 0
1   -import React from 'react';
2   -
3   -export const Nav00DataSource = {
4   - wrapper: { className: 'header0 home-page-wrapper' },
5   - page: { className: 'home-page' },
6   - logo: {
7   - className: 'header0-logo',
8   - children: 'https://os.alipayobjects.com/rmsportal/mlcYmsRilwraoAe.svg',
9   - },
10   - Menu: {
11   - className: 'header0-menu',
12   - children: [
13   - { name: 'item0', a: { children: '中文', href: '/' } },
14   - { name: 'item1', a: { children: 'EN', href: '/index-en' } },
15   - // { name: 'item2', a: { children: '导航三', href: '/page2' } },
16   - // { name: 'item3', a: { children: '导航四', href: '' } },
17   - ],
18   - },
19   - mobileMenu: { className: 'header0-mobile-menu' },
20   -};
21   -
22   -export const Footer00DataSource = {
23   - wrapper: { className: 'home-page-wrapper footer0-wrapper' },
24   - OverPack: { className: 'home-page footer0', playScale: 0.05 },
25   - copyright: {
26   - className: 'copyright',
27   - children: (
28   - <span>
29   - ©2018
30   - {' '}
31   - <a href="https://motion.ant.design">Ant Motion</a>
32   - {' '}
33   - All Rights Reserved
34   - </span>
35   - ),
36   - },
37   -};
front-end/landing-page/src/layouts/footer0.less deleted 100755 → 0
1   -@import './custom.less';
2   -.footer0-wrapper {
3   - background-color: @template-bg-color;
4   - height: 80px;
5   - overflow: hidden;
6   - .footer0 {
7   - height: 100%;
8   - padding: 0 24px;
9   - line-height: 80px;
10   - text-align: center;
11   - color: @template-footer-text-color;
12   - position: relative;
13   - }
14   -}
15   -
16   -@media screen and (max-width: 767px) {
17   - .footer0-wrapper {
18   - .footer0 {
19   - font-size: 12px;
20   - &.home-page {
21   - padding: 0;
22   - }
23   - >div {
24   - width: 90%;
25   - margin: auto;
26   - }
27   - }
28   - }
29   -}
front-end/landing-page/src/layouts/index.js deleted 100644 → 0
1   -import React, { Component } from 'react';
2   -import { enquireScreen } from 'enquire-js';
3   -import Header from './Nav0';
4   -import Footer from './Footer0';
5   -
6   -import {
7   - Nav00DataSource,
8   - Footer00DataSource,
9   -} from './data.source.js';
10   -
11   -let isMobile;
12   -class Layout extends Component {
13   - constructor(props) {
14   - super(props);
15   - this.state = {
16   - isMobile,
17   - };
18   - }
19   -
20   - componentDidMount() {
21   - // 适配手机屏幕;
22   - enquireScreen((b) => {
23   - this.setState({ isMobile: !!b });
24   - });
25   - }
26   -
27   - render() {
28   - return (
29   - <>
30   - <Header dataSource={Nav00DataSource} isMobile={this.state.isMobile} />
31   - {this.props.children}
32   - {/* <Footer dataSource={Footer00DataSource} isMobile={this.state.isMobile} /> */}
33   - </>
34   - );
35   - }
36   -}
37   -
38   -export default Layout;
39 0 \ No newline at end of file
front-end/landing-page/src/layouts/nav0.less deleted 100755 → 0
1   -@import './custom.less';
2   -@header: header0;
3   -.@{header} {
4   - background: @template-nav-bg-color;
5   - width: 100%;
6   - z-index: 1;
7   - box-shadow: 0 5px 8px fade(#000, 15);
8   - position: relative;
9   - top: 0;
10   - .home-page {
11   - padding: 0 24px;
12   - }
13   - &-logo {
14   - display: inline-block;
15   - position: relative;
16   - width: 150px;
17   - line-height: 64px;
18   - & img {
19   - vertical-align: middle;
20   - display: inline-block;
21   - }
22   - & a {
23   - display: block;
24   - }
25   - }
26   - &-menu {
27   - float: right;
28   - >.ant-menu {
29   - line-height: 62px;
30   - background: transparent;
31   - color: @template-text-color-light;
32   - height: 64px;
33   - border-bottom-color: transparent;
34   - position: relative;
35   - a {
36   - color: @template-text-color-light;
37   - &:hover {
38   - color: @primary-color;
39   - }
40   - }
41   - }
42   - }
43   - .ant-menu-item-selected a {
44   - color: @primary-color;
45   - }
46   -}
47   -
48   -@media screen and (max-width: 767px) {
49   - .@{header} {
50   - &-logo {
51   - z-index: 101;
52   - }
53   - &.home-page-wrapper .home-page {
54   - padding: 0 24px;
55   - }
56   - & &-menu {
57   - height: auto;
58   - float: inherit;
59   - position: relative;
60   - left: -24px;
61   - width: ~"calc(100% + 48px)";
62   - opacity: 0;
63   - transition: opacity .3s @ease-in-out, height .3s @ease-in-out;
64   - & li {
65   - padding: 0 24px;
66   - &.ant-menu-submenu {
67   - padding: 0;
68   - }
69   - }
70   - & .ant-menu-submenu .ant-menu-sub {
71   - padding: 0 24px;
72   - }
73   - }
74   - &-mobile-menu {
75   - width: 16px;
76   - height: 14px;
77   - cursor: pointer;
78   - position: absolute;
79   - top: 24px;
80   - right: 24px;
81   - z-index: 100;
82   - em {
83   - display: block;
84   - width: 100%;
85   - height: 2px;
86   - background: #fff;
87   - margin-top: 4px;
88   - transition: transform .3s @ease-in-out, opacity .3s @ease-in-out;
89   - }
90   - :first-child {
91   - margin-top: 0;
92   - }
93   - }
94   - .ant-menu {
95   - height: auto;
96   - overflow: hidden;
97   -
98   - background: @template-bg-color;
99   - .ant-menu-item-selected {
100   - border: none;
101   - }
102   - a {
103   - color: @template-text-color-light;
104   - &:hover {
105   - color: @template-text-color-light;
106   - }
107   - }
108   - .ant-menu-item-selected a {
109   - color: @template-text-color-light;
110   - }
111   - }
112   - & .open {
113   - height: auto;
114   - .@{header}-mobile-menu {
115   - em {
116   - &:nth-child(1) {
117   - transform: translateY(6px) rotate(45deg);
118   - }
119   - &:nth-child(2) {
120   - opacity: 0;
121   - }
122   - &:nth-child(3) {
123   - transform: translateY(-6px) rotate(-45deg);
124   - }
125   - }
126   - }
127   - >.@{header}-menu {
128   - opacity: 1;
129   - pointer-events: auto;
130   - }
131   - }
132   - }
133   -}
front-end/landing-page/src/pages/.umi/history.js deleted 100644 → 0
1   -// create history
2   -const history = require('history/createHashHistory').default({ basename: '/' });
3   -window.g_history = history;
4   -export default history;
front-end/landing-page/src/pages/.umi/polyfills.js deleted 100644 → 0
1   -import 'core-js';
2   -import 'regenerator-runtime/runtime';
3   -
front-end/landing-page/src/pages/.umi/router.js deleted 100644 → 0
1   -import React from 'react';
2   -import {
3   - Router as DefaultRouter,
4   - Route,
5   - Switch,
6   - StaticRouter,
7   -} from 'react-router-dom';
8   -import dynamic from 'umi/dynamic';
9   -import renderRoutes from 'umi/lib/renderRoutes';
10   -import history from '@@/history';
11   -
12   -const Router = DefaultRouter;
13   -
14   -const routes = [
15   - {
16   - path: '/',
17   - component: require('../../layouts/index.js').default,
18   - routes: [
19   - {
20   - path: '/index-en',
21   - exact: true,
22   - component: require('../index-en.js').default,
23   - },
24   - {
25   - path: '/',
26   - exact: true,
27   - component: require('../index.js').default,
28   - },
29   - {
30   - path: '/page2',
31   - exact: true,
32   - component: require('../page2.js').default,
33   - },
34   - {
35   - component: () =>
36   - React.createElement(
37   - require('/Users/lambert/Documents/Code/Self/openSource/luban-h5/front-end/landing-page/node_modules/umi-build-dev/lib/plugins/404/NotFound.js')
38   - .default,
39   - { pagesPath: 'src/pages', hasRoutesInConfig: false },
40   - ),
41   - },
42   - ],
43   - },
44   - {
45   - component: () =>
46   - React.createElement(
47   - require('/Users/lambert/Documents/Code/Self/openSource/luban-h5/front-end/landing-page/node_modules/umi-build-dev/lib/plugins/404/NotFound.js')
48   - .default,
49   - { pagesPath: 'src/pages', hasRoutesInConfig: false },
50   - ),
51   - },
52   -];
53   -window.g_routes = routes;
54   -const plugins = require('umi/_runtimePlugin');
55   -plugins.applyForEach('patchRoutes', { initialValue: routes });
56   -
57   -export { routes };
58   -
59   -export default class RouterWrapper extends React.Component {
60   - unListen() {}
61   -
62   - constructor(props) {
63   - super(props);
64   -
65   - // route change handler
66   - function routeChangeHandler(location, action) {
67   - plugins.applyForEach('onRouteChange', {
68   - initialValue: {
69   - routes,
70   - location,
71   - action,
72   - },
73   - });
74   - }
75   - this.unListen = history.listen(routeChangeHandler);
76   - // dva 中 history.listen 会初始执行一次
77   - // 这里排除掉 dva 的场景,可以避免 onRouteChange 在启用 dva 后的初始加载时被多执行一次
78   - const isDva =
79   - history.listen
80   - .toString()
81   - .indexOf('callback(history.location, history.action)') > -1;
82   - if (!isDva) {
83   - routeChangeHandler(history.location);
84   - }
85   - }
86   -
87   - componentWillUnmount() {
88   - this.unListen();
89   - }
90   -
91   - render() {
92   - const props = this.props || {};
93   - return <Router history={history}>{renderRoutes(routes, props)}</Router>;
94   - }
95   -}
front-end/landing-page/src/pages/.umi/umi.js deleted 100644 → 0
1   -import './polyfills';
2   -import history from './history';
3   -
4   -import React from 'react';
5   -import ReactDOM from 'react-dom';
6   -import findRoute, {
7   - getUrlQuery,
8   -} from '/Users/lambert/Documents/Code/Self/openSource/luban-h5/front-end/landing-page/node_modules/umi-build-dev/lib/findRoute.js';
9   -
10   -// runtime plugins
11   -const plugins = require('umi/_runtimePlugin');
12   -window.g_plugins = plugins;
13   -plugins.init({
14   - validKeys: [
15   - 'patchRoutes',
16   - 'render',
17   - 'rootContainer',
18   - 'modifyRouteProps',
19   - 'onRouteChange',
20   - 'modifyInitialProps',
21   - 'initialProps',
22   - ],
23   -});
24   -
25   -// render
26   -let clientRender = async () => {
27   - window.g_isBrowser = true;
28   - let props = {};
29   - // Both support SSR and CSR
30   - if (window.g_useSSR) {
31   - // 如果开启服务端渲染则客户端组件初始化 props 使用服务端注入的数据
32   - props = window.g_initialData;
33   - } else {
34   - const pathname = location.pathname;
35   - const activeRoute = findRoute(require('@@/router').routes, pathname);
36   - // 在客户端渲染前,执行 getInitialProps 方法
37   - // 拿到初始数据
38   - if (
39   - activeRoute &&
40   - activeRoute.component &&
41   - activeRoute.component.getInitialProps
42   - ) {
43   - const initialProps = plugins.apply('modifyInitialProps', {
44   - initialValue: {},
45   - });
46   - props = activeRoute.component.getInitialProps
47   - ? await activeRoute.component.getInitialProps({
48   - route: activeRoute,
49   - isServer: false,
50   - location,
51   - ...initialProps,
52   - })
53   - : {};
54   - }
55   - }
56   - const rootContainer = plugins.apply('rootContainer', {
57   - initialValue: React.createElement(require('./router').default, props),
58   - });
59   - ReactDOM[window.g_useSSR ? 'hydrate' : 'render'](
60   - rootContainer,
61   - document.getElementById('root'),
62   - );
63   -};
64   -const render = plugins.compose(
65   - 'render',
66   - { initialValue: clientRender },
67   -);
68   -
69   -const moduleBeforeRendererPromises = [];
70   -// client render
71   -if (__IS_BROWSER) {
72   - Promise.all(moduleBeforeRendererPromises)
73   - .then(() => {
74   - render();
75   - })
76   - .catch(err => {
77   - window.console && window.console.error(err);
78   - });
79   -}
80   -
81   -// export server render
82   -let serverRender, ReactDOMServer;
83   -if (!__IS_BROWSER) {
84   - const { matchRoutes } = require('react-router-config');
85   - const { StaticRouter } = require('react-router');
86   - // difference: umi-history has query object
87   - const { createLocation } = require('umi-history');
88   - // don't remove, use stringify html map
89   - const stringify = require('serialize-javascript');
90   - const router = require('./router');
91   -
92   - /**
93   - * 1. Load dynamicImport Component
94   - * 2. Get Component initialProps function data
95   - * return Component props
96   - * @param pathname
97   - * @param props
98   - */
99   - const getInitialProps = async (pathname, props) => {
100   - const { routes } = router;
101   - const matchedComponents = matchRoutes(routes, pathname)
102   - .map(({ route }) => {
103   - if (route.component) {
104   - return !route.component.preload
105   - ? // 同步
106   - route.component
107   - : // 异步,支持 dynamicImport
108   - route.component.preload().then(component => component.default);
109   - }
110   - })
111   - .filter(c => c);
112   - const loadedComponents = await Promise.all(matchedComponents);
113   -
114   - // get Store
115   - const initialProps = plugins.apply('modifyInitialProps', {
116   - initialValue: {},
117   - });
118   - // support getInitialProps
119   - const promises = loadedComponents.map(component => {
120   - if (component && component.getInitialProps) {
121   - return component.getInitialProps({
122   - isServer: true,
123   - ...props,
124   - ...initialProps,
125   - });
126   - }
127   - return Promise.resolve(null);
128   - });
129   -
130   - return Promise.all(promises);
131   - };
132   -
133   - serverRender = async (ctx = {}) => {
134   - // ctx.req.url may be `/bar?locale=en-US`
135   - const [pathname] = (ctx.req.url || '').split('?');
136   - // global
137   - global.req = {
138   - url: ctx.req.url,
139   - };
140   - const location = createLocation(ctx.req.url);
141   - const activeRoute = findRoute(router.routes, pathname);
142   - // omit component
143   - const { component, ...restRoute } = activeRoute || {};
144   - // router context hook
145   - // get current router status 40x / 30x, share with server
146   - const context = {};
147   - // TODO: getInitialProps timeout handle
148   - const initialData = await getInitialProps(pathname, {
149   - route: restRoute,
150   - // only exist in server
151   - req: ctx.req || {},
152   - res: ctx.res || {},
153   - context,
154   - location,
155   - });
156   -
157   - // 当前路由(不包含 Layout)的 getInitialProps 有返回值
158   - // Page 值为 undefined 时,有 getInitialProps 无返回,此时 return dva model
159   - const pageData = initialData[initialData.length - 1];
160   - if (pageData === undefined) {
161   - initialData[initialData.length - 1] = plugins.apply('initialProps', {
162   - initialValue: pageData,
163   - });
164   - }
165   -
166   - // reduce all match component getInitialProps
167   - // in the same object key
168   - // page data key will override layout key
169   - const props = Array.isArray(initialData)
170   - ? initialData.reduce(
171   - (acc, curr) => ({
172   - ...acc,
173   - ...curr,
174   - }),
175   - {},
176   - )
177   - : {};
178   -
179   - const App = React.createElement(
180   - StaticRouter,
181   - {
182   - location: ctx.req.url,
183   - context,
184   - },
185   - React.createElement(router.default, props),
186   - );
187   -
188   - // render rootContainer for htmlTemplateMap
189   - const rootContainer = plugins.apply('rootContainer', {
190   - initialValue: App,
191   - });
192   - const htmlTemplateMap = {};
193   - const matchPath = activeRoute ? activeRoute.path : undefined;
194   - return {
195   - htmlElement: matchPath ? htmlTemplateMap[matchPath] : '',
196   - rootContainer,
197   - matchPath,
198   - g_initialData: props,
199   - context,
200   - };
201   - };
202   - // using project react-dom version
203   - // https://github.com/facebook/react/issues/13991
204   - ReactDOMServer = require('react-dom/server');
205   -}
206   -
207   -export { ReactDOMServer };
208   -export default (__IS_BROWSER ? null : serverRender);
209   -
210   -require('../../global.less');
211   -
212   -// hot module replacement
213   -if (__IS_BROWSER && module.hot) {
214   - module.hot.accept('./router', () => {
215   - clientRender();
216   - });
217   -}
front-end/landing-page/src/pages/.umi/umiExports.js deleted 100644 → 0
front-end/landing-page/src/pages/.umi/umiExports.ts deleted 100644 → 0
front-end/landing-page/src/pages/document.ejs deleted 100644 → 0
1   -<!doctype html>
2   -<html>
3   -<head>
4   - <meta charset="utf-8" />
5   - <title>鲁班-H5</title>
6   - <meta content="拖拽生成,拖拽生成页面,页面可视化,鲁班可视化搭建平台,鲁班,鲁班H5,可视化搭建,可视化平台,可视化搭建平台,开源易企秀,开源人人秀,开源百度H5,lubanh5,luban-h5,webpage buiilder,page builder,h5 builder" name="keywords" />
7   - <meta content="鲁班H5-是一款基于Vue2.0 + 常见业务组件,可以通过拖拽的形式生成页面,类似易企秀、百度 H5 的可视化搭建系统;我们的初心也是希望能通过工程化的手段,大幅度提高简单H5页面的制作效率,提高工程师的幸福感,从这种需求频繁变更的简单任务中解脱出来" name="description" />
8   -</head>
9   -<body>
10   - <div id="root"></div>
11   -</body>
12   -</html>
13 0 \ No newline at end of file
front-end/landing-page/src/pages/index-en.js deleted 100755 → 0
1   -import Index from '../Index-En';
2   -
3   -export default function () {
4   - return (
5   - <Index />
6   - );
7   -}
8 0 \ No newline at end of file
front-end/landing-page/src/pages/index.css deleted 100755 → 0
1   -
2   -.normal {
3   - background: #C6F279;
4   -}
front-end/landing-page/src/pages/index.js deleted 100755 → 0
1   -import Index from '../Index';
2   -
3   -export default function () {
4   - return (
5   - <Index />
6   - );
7   -}
8 0 \ No newline at end of file
front-end/landing-page/src/pages/page2.js deleted 100644 → 0
1   -import Page2 from '../Page2';
2   -
3   -export default function () {
4   - return (
5   - <Page2 />
6   - );
7   -}