Commit 4723612ff1d1f707d0f273d127b243cce288a880
1 parent
7f1d0456
add landing-page
Showing
57 changed files
with
3059 additions
and
0 deletions
Too many changes to show.
To preserve performance only 57 of 58 files are displayed.
front-end/landing-page/.umirc.js
0 → 100644
front-end/landing-page/README.md
0 → 100644
front-end/landing-page/deploy.sh
0 → 100755
front-end/landing-page/package.json
0 → 100644
| 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.12.3" | |
| 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 && umi build && ./deploy.sh" | |
| 27 | + } | |
| 28 | +} | ... | ... |
front-end/landing-page/src/Index/Banner.jsx
0 → 100755
| 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://api.luban-h5.wxjcart.com/main') | |
| 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
0 → 100755
| 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
0 → 100755
| 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
0 → 100755
front-end/landing-page/src/Index/Page1.jsx
0 → 100755
| 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
0 → 100755
| 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={window.location.origin + 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
0 → 100755
| 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={() => { window.location.href = '/intro/price '; }} | |
| 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
0 → 100755
| 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
0 → 100755
| 1 | +import React from 'react'; | |
| 2 | + | |
| 3 | +export const page1 = [ | |
| 4 | + { | |
| 5 | + title: '轻松建站', | |
| 6 | + content: '丰富的组件系统、支持可视化编辑、自由拖拽排版、实时预览、在线访问', | |
| 7 | + src: 'http://qiniu-image.luban-h5.wxjcart.com/landing-page/home-feature/quick-make.svg', | |
| 8 | + }, | |
| 9 | + { | |
| 10 | + title: '表单提交', | |
| 11 | + content: '支持表单组件,即时倾听用户反馈,可以在后台查看和下载用户数据', | |
| 12 | + src: 'http://qiniu-image.luban-h5.wxjcart.com/landing-page/home-feature/submit-form.svg', | |
| 13 | + }, | |
| 14 | + { | |
| 15 | + title: '导入 PSD', | |
| 16 | + content: '支持一键导入PSD,将设计师的创意转换为 H5,快速查看效果、反馈、上线', | |
| 17 | + src: 'http://qiniu-image.luban-h5.wxjcart.com/landing-page/home-feature/import-psd.svg', | |
| 18 | + }, | |
| 19 | +]; | |
| 20 | + | |
| 21 | +export const page2 = [ | |
| 22 | + { | |
| 23 | + title: '邀请函', | |
| 24 | + url: '/works/preview/1552', | |
| 25 | + image: 'https://i.loli.net/2019/10/13/RjQkhE3OsrVv7uz.png', | |
| 26 | + }, | |
| 27 | + { | |
| 28 | + title: '早安', | |
| 29 | + url: '/works/preview/1551', | |
| 30 | + image: 'https://i.loli.net/2019/10/13/kyzhsWFbmZT1JrN.png', | |
| 31 | + }, | |
| 32 | + { | |
| 33 | + title: '程序员节', | |
| 34 | + url: '/works/preview/833', | |
| 35 | + image: 'https://i.loli.net/2019/10/10/FtWXY3wDNJLT4GP.png', | |
| 36 | + }, | |
| 37 | +]; | |
| 38 | + | |
| 39 | +export const page3 = [ | |
| 40 | + { | |
| 41 | + title: '个人版', | |
| 42 | + content: [ | |
| 43 | + <p key="1">支持 H5 站点制作</p>, | |
| 44 | + <p key="2">支持模板管理</p>, | |
| 45 | + <p key="3">支持表单提交</p>, | |
| 46 | + <p key="3">支持数据统计</p>, | |
| 47 | + ], | |
| 48 | + // exp: '免费使用', | |
| 49 | + svg: (<svg width="32px" height="32px" viewBox="0 0 32 32"> | |
| 50 | + <defs> | |
| 51 | + <linearGradient x1="50%" y1="0%" x2="50%" y2="98.8500478%" id="linearGradient-1"> | |
| 52 | + <stop stopColor="#FFD24C" offset="0%" /> | |
| 53 | + <stop stopColor="#FFB800" offset="100%" /> | |
| 54 | + </linearGradient> | |
| 55 | + </defs> | |
| 56 | + <path | |
| 57 | + d="M11.2,19.9763991 L1.43301577,25.9589289 | |
| 58 | + C0.542750835,26.5042392 1.20441457e-15,27.4731633 1.33226763e-15,28.5171628 | |
| 59 | + L0,28.5171628 L0,30 C1.3527075e-16,31.1045695 0.8954305,32 2,32 | |
| 60 | + L30,32 C31.1045695,32 32,31.1045695 32,30 L32,30 L32,28.5391533 | |
| 61 | + C32,27.4832633 31.4449138,26.5051178 30.53843,25.9636469 L30.53843,25.9636469 | |
| 62 | + L20.8,20.1465799 L20.8,18.1051172 C22.2729985,16.7867478 23.2,14.8708611 23.2,12.7384615 | |
| 63 | + L23.2,7.2 C23.2,3.2235498 19.9764502,-7.30462051e-16 16,0 | |
| 64 | + C12.0235498,7.30462051e-16 8.8,3.2235498 8.8,7.2 L8.8,7.2 | |
| 65 | + L8.8,12.7384615 C8.8,14.8708611 9.72700154,16.7867478 11.2,18.1051172 L11.2,19.9763991 Z" | |
| 66 | + fill="#D9D9D9" | |
| 67 | + /> | |
| 68 | + <path | |
| 69 | + d="M11.2,19.9763991 L1.43301577,25.9589289 | |
| 70 | + C0.542750835,26.5042392 1.20441457e-15,27.4731633 1.33226763e-15,28.5171628 | |
| 71 | + L0,28.5171628 L0,30 C1.3527075e-16,31.1045695 0.8954305,32 2,32 | |
| 72 | + L30,32 C31.1045695,32 32,31.1045695 32,30 L32,30 L32,28.5391533 | |
| 73 | + C32,27.4832633 31.4449138,26.5051178 30.53843,25.9636469 L30.53843,25.9636469 | |
| 74 | + L20.8,20.1465799 L20.8,18.1051172 C22.2729985,16.7867478 23.2,14.8708611 23.2,12.7384615 | |
| 75 | + L23.2,7.2 C23.2,3.2235498 19.9764502,-7.30462051e-16 16,0 | |
| 76 | + C12.0235498,7.30462051e-16 8.8,3.2235498 8.8,7.2 L8.8,7.2 | |
| 77 | + L8.8,12.7384615 C8.8,14.8708611 9.72700154,16.7867478 11.2,18.1051172 L11.2,19.9763991 Z" | |
| 78 | + fill="url(#linearGradient-1)" | |
| 79 | + className="icon-hover" | |
| 80 | + /> | |
| 81 | + </svg>), | |
| 82 | + }, | |
| 83 | + { | |
| 84 | + title: '企业版', | |
| 85 | + content: [ | |
| 86 | + <p key="1">支持 H5 站点制作</p>, | |
| 87 | + // <p key="2">支持模板管理,实现模板共享</p>, | |
| 88 | + // <p key="3">支持工作组管理,实现多人协作</p>, | |
| 89 | + // <p key="4">支持自定义发布审批流</p>, | |
| 90 | + // <p key="5">支持自定义域名</p>, | |
| 91 | + <p key="2">支持模板管理</p>, | |
| 92 | + <p key="3">支持表单提交</p>, | |
| 93 | + <p key="3">支持数据统计</p>, | |
| 94 | + <p key="3">支持PSD导入</p>, | |
| 95 | + ], | |
| 96 | + svg: ( | |
| 97 | + <svg width="32px" height="32px" viewBox="0 0 32 32"> | |
| 98 | + <path | |
| 99 | + d="M22.3555358,32 L9.93657149,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30 | |
| 100 | + L0,18 C-1.3527075e-16,16.8954305 0.8954305,16 2,16 L2,16 L6.78535432,16 L6.78535432,2 | |
| 101 | + L6.78535432,2 C6.78535432,0.8954305 7.68078482,2.02906125e-16 8.78535432,0 L21.7853543,0 | |
| 102 | + C22.8899238,-2.02906125e-16 23.7853543,0.8954305 23.7853543,2 L23.7853543,7 L30,7 | |
| 103 | + C31.1045695,7 32,7.8954305 32,9 L32,30 C32,31.1045695 31.1045695,32 30,32 L22.3555358,32 | |
| 104 | + 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 | |
| 105 | + 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 | |
| 106 | + 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 | |
| 107 | + Z M24,12 L24,16 L28,16 L28,12 L24,12 Z" | |
| 108 | + fill="#D9D9D9" | |
| 109 | + /> | |
| 110 | + <path | |
| 111 | + d="M22.3555358,32 L9.93657149,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30 | |
| 112 | + L0,18 C-1.3527075e-16,16.8954305 0.8954305,16 2,16 L2,16 L6.78535432,16 L6.78535432,2 | |
| 113 | + L6.78535432,2 C6.78535432,0.8954305 7.68078482,2.02906125e-16 8.78535432,0 L21.7853543,0 | |
| 114 | + C22.8899238,-2.02906125e-16 23.7853543,0.8954305 23.7853543,2 L23.7853543,7 L30,7 | |
| 115 | + C31.1045695,7 32,7.8954305 32,9 L32,30 C32,31.1045695 31.1045695,32 30,32 L22.3555358,32 | |
| 116 | + 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 | |
| 117 | + 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 | |
| 118 | + 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 | |
| 119 | + Z M24,12 L24,16 L28,16 L28,12 L24,12 Z" | |
| 120 | + fill="url(#linearGradient-1)" | |
| 121 | + className="icon-hover" | |
| 122 | + /> | |
| 123 | + </svg>), | |
| 124 | + }, | |
| 125 | + { | |
| 126 | + title: '企业 VIP 版', | |
| 127 | + content: [ | |
| 128 | + // <p key="1">支持通过 OpenAPI 调用制作流程</p>, | |
| 129 | + // <p key="2">可以指定可用模板,企业内共享模板</p>, | |
| 130 | + // <p key="3">支持创建多个企业级账户</p>, | |
| 131 | + // <p key="4">支持自定义发布审批流</p>, | |
| 132 | + // <p key="5">支持自定义域名</p>], | |
| 133 | + <p key="2">支持模板管理</p>, | |
| 134 | + <p key="3">支持表单提交</p>, | |
| 135 | + <p key="3">支持数据统计</p>, | |
| 136 | + <p key="3">支持PSD导入</p>, | |
| 137 | + <p key="3">支持自定义脚本</p>, | |
| 138 | + <p key="6">支持成员管理(TODO)</p>, | |
| 139 | + <p key="6">支持项目管理(TODO)</p>, | |
| 140 | + ], | |
| 141 | + svg: ( | |
| 142 | + <svg width="32px" height="32px" viewBox="0 0 32 32"> | |
| 143 | + <path | |
| 144 | + d="M21.1504124,8.82079742 L16.5552541,3.32558694 | |
| 145 | + C16.5324137,3.29827282 16.5071873,3.27304601 16.4798736,3.25020514 | |
| 146 | + C16.2256714,3.03763068 15.8472742,3.07137659 15.6346998,3.32557875 | |
| 147 | + L15.6346998,3.32557875 L10.966694,8.90770327 L8.07603504,6.76607715 | |
| 148 | + L8.07603504,6.76607715 C7.80977712,6.56881247 7.43401779,6.62474254 7.23675311,6.89100046 | |
| 149 | + C7.13505771,7.02826378 7.09669461,7.20236809 7.13128245,7.36966081 L8.29535756,13 | |
| 150 | + L15.9998162,13 L23.7045714,13 L24.8686535,7.36962696 | |
| 151 | + C24.9357456,7.0451192 24.727069,6.72766477 24.4025612,6.66057265 | |
| 152 | + C24.2352715,6.62598542 24.0611703,6.66434651 23.9239079,6.76603807 | |
| 153 | + L21.1504124,8.82079742 Z M2,14 L30,14 C31.1045695,14 32,14.8954305 32,16 | |
| 154 | + L32,30 C32,31.1045695 31.1045695,32 30,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30 | |
| 155 | + 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 | |
| 156 | + 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 | |
| 157 | + 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 | |
| 158 | + C7,5.55228475 6.55228475,6 6,6 Z M26,6 C25.4477153,6 25,5.55228475 25,5 | |
| 159 | + C25,4.44771525 25.4477153,4 26,4 C26.5522847,4 27,4.44771525 27,5 | |
| 160 | + C27,5.55228475 26.5522847,6 26,6 Z M14.0979687,19.25 | |
| 161 | + C14.1648524,19.04375 14.177013,18.94375 14.1526917,18.825 | |
| 162 | + C14.1101294,18.6375 13.9094785,18.5 13.7149079,18.5 | |
| 163 | + C13.6237029,18.5 13.5264176,18.53125 13.459534,18.59375 | |
| 164 | + C13.368329,18.675 13.3257667,18.75625 13.2588831,18.9625 L11.0821247,25.80625 | |
| 165 | + L8.90536631,18.9625 C8.83848268,18.75625 8.79592036,18.675 8.7047154,18.59375 | |
| 166 | + C8.63783176,18.53125 8.54054647,18.5 8.44934151,18.5 | |
| 167 | + C8.25477093,18.5 8.05412002,18.6375 8.0115577,18.825 | |
| 168 | + C7.98723638,18.94375 7.99939704,19.04375 8.06628068,19.25 L10.5713769,26.98125 | |
| 169 | + C10.6260999,27.15625 10.6929835,27.3 10.7659475,27.36875 | |
| 170 | + C10.8632328,27.46875 10.9544378,27.5 11.0821247,27.5 | |
| 171 | + C11.2037313,27.5 11.2949363,27.46875 11.3983019,27.36875 | |
| 172 | + C11.4712659,27.3 11.5381495,27.15625 11.5928725,26.98125 | |
| 173 | + L14.0979687,19.25 Z M16.5726622,19.15 C16.5726622,18.9 16.5605016,18.81875 16.4875376,18.7 | |
| 174 | + C16.4145736,18.58125 16.274726,18.5 16.1044768,18.5 C15.9342275,18.5 15.7943799,18.58125 15.7214159,18.7 | |
| 175 | + C15.648452,18.81875 15.6362913,18.9 15.6362913,19.15 L15.6362913,26.85 | |
| 176 | + C15.6362913,27.1 15.648452,27.18125 15.7214159,27.3 C15.7943799,27.41875 15.9342275,27.5 16.1044768,27.5 | |
| 177 | + C16.274726,27.5 16.4145736,27.41875 16.4875376,27.3 C16.5605016,27.18125 16.5726622,27.1 16.5726622,26.85 | |
| 178 | + L16.5726622,19.15 Z M19.0777579,19.13125 L19.0777579,26.85 | |
| 179 | + C19.0777579,27.1 19.0899186,27.18125 19.1628825,27.3 | |
| 180 | + C19.2358465,27.41875 19.3756941,27.5 19.5459434,27.5 | |
| 181 | + C19.7161926,27.5 19.8560402,27.41875 19.9290042,27.3 | |
| 182 | + C20.0019682,27.18125 20.0141288,27.1 20.0141288,26.85 | |
| 183 | + L20.0141288,23.7875 L22.3124938,23.7875 C23.8872995,23.7875 25,22.75 25,21.1625 | |
| 184 | + C25,19.575 23.8872995,18.55 22.3124938,18.55 L19.6432287,18.55 | |
| 185 | + C19.4973007,18.55 19.3331318,18.55 19.2054449,18.68125 | |
| 186 | + C19.0777579,18.8125 19.0777579,18.98125 19.0777579,19.13125 Z M22.2395299,19.4 | |
| 187 | + C23.3218287,19.4 24.0575487,19.9875 24.0575487,21.1625 | |
| 188 | + C24.0575487,22.3375 23.3218287,22.9375 22.2395299,22.9375 L20.0141288,22.9375 | |
| 189 | + L20.0141288,19.4 L22.2395299,19.4 Z" | |
| 190 | + fill="#D9D9D9" | |
| 191 | + /> | |
| 192 | + <path | |
| 193 | + d="M21.1504124,8.82079742 L16.5552541,3.32558694 | |
| 194 | + C16.5324137,3.29827282 16.5071873,3.27304601 16.4798736,3.25020514 | |
| 195 | + C16.2256714,3.03763068 15.8472742,3.07137659 15.6346998,3.32557875 | |
| 196 | + L15.6346998,3.32557875 L10.966694,8.90770327 L8.07603504,6.76607715 | |
| 197 | + L8.07603504,6.76607715 C7.80977712,6.56881247 7.43401779,6.62474254 7.23675311,6.89100046 | |
| 198 | + C7.13505771,7.02826378 7.09669461,7.20236809 7.13128245,7.36966081 L8.29535756,13 | |
| 199 | + L15.9998162,13 L23.7045714,13 L24.8686535,7.36962696 | |
| 200 | + C24.9357456,7.0451192 24.727069,6.72766477 24.4025612,6.66057265 | |
| 201 | + C24.2352715,6.62598542 24.0611703,6.66434651 23.9239079,6.76603807 | |
| 202 | + L21.1504124,8.82079742 Z M2,14 L30,14 C31.1045695,14 32,14.8954305 32,16 | |
| 203 | + L32,30 C32,31.1045695 31.1045695,32 30,32 L2,32 C0.8954305,32 1.3527075e-16,31.1045695 0,30 | |
| 204 | + 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 | |
| 205 | + 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 | |
| 206 | + 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 | |
| 207 | + C7,5.55228475 6.55228475,6 6,6 Z M26,6 C25.4477153,6 25,5.55228475 25,5 | |
| 208 | + C25,4.44771525 25.4477153,4 26,4 C26.5522847,4 27,4.44771525 27,5 | |
| 209 | + C27,5.55228475 26.5522847,6 26,6 Z M14.0979687,19.25 | |
| 210 | + C14.1648524,19.04375 14.177013,18.94375 14.1526917,18.825 | |
| 211 | + C14.1101294,18.6375 13.9094785,18.5 13.7149079,18.5 | |
| 212 | + C13.6237029,18.5 13.5264176,18.53125 13.459534,18.59375 | |
| 213 | + C13.368329,18.675 13.3257667,18.75625 13.2588831,18.9625 L11.0821247,25.80625 | |
| 214 | + L8.90536631,18.9625 C8.83848268,18.75625 8.79592036,18.675 8.7047154,18.59375 | |
| 215 | + C8.63783176,18.53125 8.54054647,18.5 8.44934151,18.5 | |
| 216 | + C8.25477093,18.5 8.05412002,18.6375 8.0115577,18.825 | |
| 217 | + C7.98723638,18.94375 7.99939704,19.04375 8.06628068,19.25 L10.5713769,26.98125 | |
| 218 | + C10.6260999,27.15625 10.6929835,27.3 10.7659475,27.36875 | |
| 219 | + C10.8632328,27.46875 10.9544378,27.5 11.0821247,27.5 | |
| 220 | + C11.2037313,27.5 11.2949363,27.46875 11.3983019,27.36875 | |
| 221 | + C11.4712659,27.3 11.5381495,27.15625 11.5928725,26.98125 | |
| 222 | + L14.0979687,19.25 Z M16.5726622,19.15 C16.5726622,18.9 16.5605016,18.81875 16.4875376,18.7 | |
| 223 | + C16.4145736,18.58125 16.274726,18.5 16.1044768,18.5 C15.9342275,18.5 15.7943799,18.58125 15.7214159,18.7 | |
| 224 | + C15.648452,18.81875 15.6362913,18.9 15.6362913,19.15 L15.6362913,26.85 | |
| 225 | + C15.6362913,27.1 15.648452,27.18125 15.7214159,27.3 C15.7943799,27.41875 15.9342275,27.5 16.1044768,27.5 | |
| 226 | + C16.274726,27.5 16.4145736,27.41875 16.4875376,27.3 C16.5605016,27.18125 16.5726622,27.1 16.5726622,26.85 | |
| 227 | + L16.5726622,19.15 Z M19.0777579,19.13125 L19.0777579,26.85 | |
| 228 | + C19.0777579,27.1 19.0899186,27.18125 19.1628825,27.3 | |
| 229 | + C19.2358465,27.41875 19.3756941,27.5 19.5459434,27.5 | |
| 230 | + C19.7161926,27.5 19.8560402,27.41875 19.9290042,27.3 | |
| 231 | + C20.0019682,27.18125 20.0141288,27.1 20.0141288,26.85 | |
| 232 | + L20.0141288,23.7875 L22.3124938,23.7875 C23.8872995,23.7875 25,22.75 25,21.1625 | |
| 233 | + C25,19.575 23.8872995,18.55 22.3124938,18.55 L19.6432287,18.55 | |
| 234 | + C19.4973007,18.55 19.3331318,18.55 19.2054449,18.68125 | |
| 235 | + C19.0777579,18.8125 19.0777579,18.98125 19.0777579,19.13125 Z M22.2395299,19.4 | |
| 236 | + C23.3218287,19.4 24.0575487,19.9875 24.0575487,21.1625 | |
| 237 | + C24.0575487,22.3375 23.3218287,22.9375 22.2395299,22.9375 L20.0141288,22.9375 | |
| 238 | + L20.0141288,19.4 L22.2395299,19.4 Z" | |
| 239 | + fill="url(#linearGradient-1)" | |
| 240 | + className="icon-hover" | |
| 241 | + /> | |
| 242 | + </svg>), | |
| 243 | + }, | |
| 244 | +]; | |
| 245 | + | |
| 246 | +export const page4 = [ | |
| 247 | + 'https://gw.alipayobjects.com/zos/rmsportal/kJPmZttedahfIvsZDGTd.svg', | |
| 248 | + 'https://gw.alipayobjects.com/zos/rmsportal/ktLOdfjNyExgKyWjiCvm.svg', | |
| 249 | + 'https://gw.alipayobjects.com/zos/rmsportal/gNNxbrNqlHdnRuMjUXrL.svg', | |
| 250 | + 'https://gw.alipayobjects.com/zos/rmsportal/qWaneWxxMVpASpiCOcsT.svg', | |
| 251 | + 'https://gw.alipayobjects.com/zos/rmsportal/kyCpvqWFloOpAOqzOlBg.svg', | |
| 252 | + 'https://gw.alipayobjects.com/zos/rmsportal/bBzJNEnPvyhNUhyHipvO.svg', | |
| 253 | + 'https://gw.alipayobjects.com/zos/rmsportal/UbEpCMXGBmDgkJXfIgMx.svg', | |
| 254 | + 'https://gw.alipayobjects.com/zos/rmsportal/xsWGKOdkRoJnzHIZlRiD.svg', | |
| 255 | +]; | |
| 256 | + | |
| 257 | +export const footer = [ | |
| 258 | + // { text: '解决方案', src: '#' }, | |
| 259 | + { text: '中文文档', src: 'https://ly525.github.io/luban-h5' }, | |
| 260 | + { text: 'English Document', src: 'https://www.yuque.com/liuyan-ew1qk/oh5d0n?language=en-us' }, | |
| 261 | + // { text: '模板开发文档', src: '#' }, | |
| 262 | + { text: '联系我们', src: 'https://github.com/ly525/luban-h5#%E4%BA%A4%E6%B5%81%E7%BE%A4' }, | |
| 263 | + // { text: '联系我们', src: 'mailto:zhao.wuz@antfin.com' }, | |
| 264 | +]; | ... | ... |
front-end/landing-page/src/Index/index.jsx
0 → 100755
| 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
0 → 100755
front-end/landing-page/src/Index/static/default.less
0 → 100755
| 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); | |
| 0 | 50 | \ No newline at end of file | ... | ... |
front-end/landing-page/src/Index/static/footer.less
0 → 100755
| 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 | +} | |
| 0 | 31 | \ No newline at end of file | ... | ... |
front-end/landing-page/src/Index/static/header.less
0 → 100755
| 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 | +} | |
| 0 | 46 | \ No newline at end of file | ... | ... |
front-end/landing-page/src/Index/static/home.less
0 → 100755
| 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 | +} | |
| 0 | 254 | \ No newline at end of file | ... | ... |
front-end/landing-page/src/Index/static/responsive.less
0 → 100755
front-end/landing-page/src/Index/static/style.js
0 → 100755
front-end/landing-page/src/Page2/Banner0.jsx
0 → 100755
| 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
0 → 100755
| 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
0 → 100755
| 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
0 → 100755
| 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
0 → 100755
| 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
0 → 100755
| 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: '导航二', href: '' } }, | |
| 15 | + { name: 'item2', a: { children: '导航三', href: '' } }, | |
| 16 | + { name: 'item3', a: { children: '导航四', href: '' } }, | |
| 17 | + ], | |
| 18 | + }, | |
| 19 | + mobileMenu: { className: 'header0-mobile-menu' }, | |
| 20 | +}; | |
| 21 | +export const Banner00DataSource = { | |
| 22 | + wrapper: { className: 'banner0' }, | |
| 23 | + textWrapper: { className: 'banner0-text-wrapper' }, | |
| 24 | + title: { | |
| 25 | + className: 'banner0-title', | |
| 26 | + children: 'https://zos.alipayobjects.com/rmsportal/HqnZZjBjWRbjyMr.png', | |
| 27 | + }, | |
| 28 | + content: { | |
| 29 | + className: 'banner0-content', | |
| 30 | + children: ( | |
| 31 | + <span> | |
| 32 | + <p>dsdf</p> | |
| 33 | + <p>aaaaa</p> | |
| 34 | + </span> | |
| 35 | + ), | |
| 36 | + }, | |
| 37 | + button: { className: 'banner0-button', children: 'Learn More' }, | |
| 38 | +}; | |
| 39 | +export const Content00DataSource = { | |
| 40 | + wrapper: { className: 'home-page-wrapper content0-wrapper' }, | |
| 41 | + page: { className: 'home-page content0' }, | |
| 42 | + OverPack: { playScale: 0.3, className: '' }, | |
| 43 | + titleWrapper: { | |
| 44 | + className: 'title-wrapper', | |
| 45 | + children: [{ name: 'title', children: '产品与服务' }], | |
| 46 | + }, | |
| 47 | + block: { | |
| 48 | + className: 'block-wrapper', | |
| 49 | + children: [ | |
| 50 | + { | |
| 51 | + name: 'block0', | |
| 52 | + className: 'block', | |
| 53 | + md: 8, | |
| 54 | + xs: 24, | |
| 55 | + children: { | |
| 56 | + icon: { | |
| 57 | + className: 'icon', | |
| 58 | + children: | |
| 59 | + 'https://zos.alipayobjects.com/rmsportal/WBnVOjtIlGWbzyQivuyq.png', | |
| 60 | + }, | |
| 61 | + title: { children: '一站式业务接入' }, | |
| 62 | + content: { children: '支付、结算、核算接入产品效率翻四倍' }, | |
| 63 | + }, | |
| 64 | + }, | |
| 65 | + { | |
| 66 | + name: 'block1', | |
| 67 | + className: 'block', | |
| 68 | + md: 8, | |
| 69 | + xs: 24, | |
| 70 | + children: { | |
| 71 | + icon: { | |
| 72 | + className: 'icon', | |
| 73 | + children: | |
| 74 | + 'https://zos.alipayobjects.com/rmsportal/YPMsLQuCEXtuEkmXTTdk.png', | |
| 75 | + }, | |
| 76 | + title: { children: '一站式事中风险监控' }, | |
| 77 | + content: { children: '在所有需求配置环节事前风险控制和质量控制能力' }, | |
| 78 | + }, | |
| 79 | + }, | |
| 80 | + { | |
| 81 | + name: 'block2', | |
| 82 | + className: 'block', | |
| 83 | + md: 8, | |
| 84 | + xs: 24, | |
| 85 | + children: { | |
| 86 | + icon: { | |
| 87 | + className: 'icon', | |
| 88 | + children: | |
| 89 | + 'https://zos.alipayobjects.com/rmsportal/EkXWVvAaFJKCzhMmQYiX.png', | |
| 90 | + }, | |
| 91 | + title: { children: '一站式数据运营' }, | |
| 92 | + content: { children: '沉淀产品接入效率和运营小二工作效率数据' }, | |
| 93 | + }, | |
| 94 | + }, | |
| 95 | + ], | |
| 96 | + }, | |
| 97 | +}; | |
| 98 | +export const Content70DataSource = { | |
| 99 | + wrapper: { className: 'home-page-wrapper content7-wrapper' }, | |
| 100 | + page: { className: 'home-page content7' }, | |
| 101 | + OverPack: {}, | |
| 102 | + titleWrapper: { | |
| 103 | + className: 'title-wrapper', | |
| 104 | + children: [ | |
| 105 | + { | |
| 106 | + name: 'title', | |
| 107 | + children: '蚂蚁金融云提供专业的服务', | |
| 108 | + className: 'title-h1', | |
| 109 | + }, | |
| 110 | + { name: 'content', children: '基于阿里云计算强大的基础资源' }, | |
| 111 | + ], | |
| 112 | + }, | |
| 113 | + tabsWrapper: { className: 'content7-tabs-wrapper' }, | |
| 114 | + block: { | |
| 115 | + children: [ | |
| 116 | + { | |
| 117 | + name: 'block0', | |
| 118 | + tag: { | |
| 119 | + className: 'content7-tag', | |
| 120 | + text: { children: 'PHONE', className: 'content7-tag-name' }, | |
| 121 | + icon: { children: 'mobile' }, | |
| 122 | + }, | |
| 123 | + content: { | |
| 124 | + className: 'content7-content', | |
| 125 | + text: { | |
| 126 | + className: 'content7-text', | |
| 127 | + md: 14, | |
| 128 | + xs: 24, | |
| 129 | + children: ( | |
| 130 | + <span> | |
| 131 | + <h3>技术</h3> | |
| 132 | + <p> | |
| 133 | + 丰富的技术组件,简单组装即可快速搭建金融级应用,丰富的技术组件,简单组装即可快速搭建金融级应用。 | |
| 134 | + </p> | |
| 135 | + <br /> | |
| 136 | + <h3>融合</h3> | |
| 137 | + <p> | |
| 138 | + 解放业务及技术生产力,推动金融服务底层创新,推动金融服务底层创新。解放业务及技术生产力,推动金融服务底层创新。 | |
| 139 | + </p> | |
| 140 | + <br /> | |
| 141 | + <h3> | |
| 142 | + 开放 | |
| 143 | + </h3> | |
| 144 | + 符合金融及要求的安全可靠、高可用、高性能的服务能力,符合金融及要求的安全可靠、高可用、高性能的服务能力。 | |
| 145 | + </span> | |
| 146 | + ), | |
| 147 | + }, | |
| 148 | + img: { | |
| 149 | + className: 'content7-img', | |
| 150 | + children: | |
| 151 | + 'https://zos.alipayobjects.com/rmsportal/xBrUaDROgtFBRRL.png', | |
| 152 | + md: 10, | |
| 153 | + xs: 24, | |
| 154 | + }, | |
| 155 | + }, | |
| 156 | + }, | |
| 157 | + { | |
| 158 | + name: 'block1', | |
| 159 | + tag: { | |
| 160 | + className: 'content7-tag', | |
| 161 | + icon: { children: 'tablet' }, | |
| 162 | + text: { className: 'content7-tag-name', children: 'TABLET' }, | |
| 163 | + }, | |
| 164 | + content: { | |
| 165 | + className: 'content7-content', | |
| 166 | + text: { | |
| 167 | + className: 'content7-text', | |
| 168 | + md: 14, | |
| 169 | + xs: 24, | |
| 170 | + children: ( | |
| 171 | + <span> | |
| 172 | + <h3>技术</h3> | |
| 173 | + <p> | |
| 174 | + 丰富的技术组件,简单组装即可快速搭建金融级应用,丰富的技术组件,简单组装即可快速搭建金融级应用。 | |
| 175 | + </p> | |
| 176 | + <br /> | |
| 177 | + <h3>融合</h3> | |
| 178 | + <p> | |
| 179 | + 解放业务及技术生产力,推动金融服务底层创新,推动金融服务底层创新。解放业务及技术生产力,推动金融服务底层创新。 | |
| 180 | + </p> | |
| 181 | + <br /> | |
| 182 | + <h3> | |
| 183 | + 开放 | |
| 184 | + </h3> | |
| 185 | + 符合金融及要求的安全可靠、高可用、高性能的服务能力,符合金融及要求的安全可靠、高可用、高性能的服务能力。 | |
| 186 | + </span> | |
| 187 | + ), | |
| 188 | + }, | |
| 189 | + img: { | |
| 190 | + className: 'content7-img', | |
| 191 | + md: 10, | |
| 192 | + xs: 24, | |
| 193 | + children: | |
| 194 | + 'https://zos.alipayobjects.com/rmsportal/xBrUaDROgtFBRRL.png', | |
| 195 | + }, | |
| 196 | + }, | |
| 197 | + }, | |
| 198 | + { | |
| 199 | + name: 'block2', | |
| 200 | + tag: { | |
| 201 | + className: 'content7-tag', | |
| 202 | + text: { children: 'DESKTOP', className: 'content7-tag-name' }, | |
| 203 | + icon: { children: 'laptop' }, | |
| 204 | + }, | |
| 205 | + content: { | |
| 206 | + className: 'content7-content', | |
| 207 | + text: { | |
| 208 | + className: 'content7-text', | |
| 209 | + md: 14, | |
| 210 | + xs: 24, | |
| 211 | + children: ( | |
| 212 | + <span> | |
| 213 | + <h3>技术</h3> | |
| 214 | + <p> | |
| 215 | + 丰富的技术组件,简单组装即可快速搭建金融级应用,丰富的技术组件,简单组装即可快速搭建金融级应用。 | |
| 216 | + </p> | |
| 217 | + <br /> | |
| 218 | + <h3>融合</h3> | |
| 219 | + <p> | |
| 220 | + 解放业务及技术生产力,推动金融服务底层创新,推动金融服务底层创新。解放业务及技术生产力,推动金融服务底层创新。 | |
| 221 | + </p> | |
| 222 | + <br /> | |
| 223 | + <h3> | |
| 224 | + 开放 | |
| 225 | + </h3> | |
| 226 | + 符合金融及要求的安全可靠、高可用、高性能的服务能力,符合金融及要求的安全可靠、高可用、高性能的服务能力。 | |
| 227 | + </span> | |
| 228 | + ), | |
| 229 | + }, | |
| 230 | + img: { | |
| 231 | + className: 'content7-img', | |
| 232 | + md: 10, | |
| 233 | + xs: 24, | |
| 234 | + children: | |
| 235 | + 'https://zos.alipayobjects.com/rmsportal/xBrUaDROgtFBRRL.png', | |
| 236 | + }, | |
| 237 | + }, | |
| 238 | + }, | |
| 239 | + ], | |
| 240 | + }, | |
| 241 | +}; | |
| 242 | +export const Content130DataSource = { | |
| 243 | + OverPack: { | |
| 244 | + className: | |
| 245 | + 'home-page-wrapper content13-wrapper home-page-wrapper content13-wrapper jnwq7vhwgqg-editor_css', | |
| 246 | + playScale: 0.3, | |
| 247 | + }, | |
| 248 | + titleWrapper: { | |
| 249 | + className: 'title-wrapper', | |
| 250 | + children: [ | |
| 251 | + { name: 'title', children: '丰富的特色展台', className: 'title-h1' }, | |
| 252 | + { | |
| 253 | + name: 'content', | |
| 254 | + children: | |
| 255 | + '特色展台包括 Ant Design 、AntV、AntG、Egg 等明星产品,更有产品专家', | |
| 256 | + className: 'title-content', | |
| 257 | + }, | |
| 258 | + { | |
| 259 | + name: 'content2', | |
| 260 | + children: '现场问诊,为你答疑解难', | |
| 261 | + className: 'title-content', | |
| 262 | + }, | |
| 263 | + ], | |
| 264 | + }, | |
| 265 | +}; | |
| 266 | +export const Content120DataSource = { | |
| 267 | + wrapper: { className: 'home-page-wrapper content12-wrapper' }, | |
| 268 | + page: { className: 'home-page content12' }, | |
| 269 | + OverPack: { playScale: 0.3, className: '' }, | |
| 270 | + titleWrapper: { | |
| 271 | + className: 'title-wrapper', | |
| 272 | + children: [{ name: 'title', children: '特别鸣谢', className: 'title-h1' }], | |
| 273 | + }, | |
| 274 | + block: { | |
| 275 | + className: 'img-wrapper', | |
| 276 | + children: [ | |
| 277 | + { | |
| 278 | + name: 'block0', | |
| 279 | + className: 'block', | |
| 280 | + md: 8, | |
| 281 | + xs: 24, | |
| 282 | + children: { | |
| 283 | + wrapper: { className: 'block-content' }, | |
| 284 | + img: { | |
| 285 | + children: | |
| 286 | + 'https://gw.alipayobjects.com/zos/rmsportal/TFicUVisNHTOEeMYXuQF.svg', | |
| 287 | + }, | |
| 288 | + }, | |
| 289 | + }, | |
| 290 | + { | |
| 291 | + name: 'block1', | |
| 292 | + className: 'block', | |
| 293 | + md: 8, | |
| 294 | + xs: 24, | |
| 295 | + children: { | |
| 296 | + wrapper: { className: 'block-content' }, | |
| 297 | + img: { | |
| 298 | + children: | |
| 299 | + 'https://gw.alipayobjects.com/zos/rmsportal/hkLGkrlCEkGZeMQlnEkD.svg', | |
| 300 | + }, | |
| 301 | + }, | |
| 302 | + }, | |
| 303 | + { | |
| 304 | + name: 'block2', | |
| 305 | + className: 'block', | |
| 306 | + md: 8, | |
| 307 | + xs: 24, | |
| 308 | + children: { | |
| 309 | + wrapper: { className: 'block-content' }, | |
| 310 | + img: { | |
| 311 | + children: | |
| 312 | + 'https://gw.alipayobjects.com/zos/rmsportal/bqyPRSZmhvrsfJrBvASi.svg', | |
| 313 | + }, | |
| 314 | + }, | |
| 315 | + }, | |
| 316 | + { | |
| 317 | + name: 'block3', | |
| 318 | + className: 'block', | |
| 319 | + md: 8, | |
| 320 | + xs: 24, | |
| 321 | + children: { | |
| 322 | + wrapper: { className: 'block-content' }, | |
| 323 | + img: { | |
| 324 | + children: | |
| 325 | + 'https://gw.alipayobjects.com/zos/rmsportal/UcsyszzOabdCYDkoPPnM.svg', | |
| 326 | + }, | |
| 327 | + }, | |
| 328 | + }, | |
| 329 | + { | |
| 330 | + name: 'block4', | |
| 331 | + className: 'block', | |
| 332 | + md: 8, | |
| 333 | + xs: 24, | |
| 334 | + children: { | |
| 335 | + wrapper: { className: 'block-content' }, | |
| 336 | + img: { | |
| 337 | + children: | |
| 338 | + 'https://gw.alipayobjects.com/zos/rmsportal/kRBeaICGexAmVjqBEqgw.svg', | |
| 339 | + }, | |
| 340 | + }, | |
| 341 | + }, | |
| 342 | + { | |
| 343 | + name: 'block5', | |
| 344 | + className: 'block', | |
| 345 | + md: 8, | |
| 346 | + xs: 24, | |
| 347 | + children: { | |
| 348 | + wrapper: { className: 'block-content' }, | |
| 349 | + img: { | |
| 350 | + children: | |
| 351 | + 'https://gw.alipayobjects.com/zos/rmsportal/ftBIiyJcCHpHEioRvPsV.svg', | |
| 352 | + }, | |
| 353 | + }, | |
| 354 | + }, | |
| 355 | + ], | |
| 356 | + }, | |
| 357 | +}; | |
| 358 | +export const Footer00DataSource = { | |
| 359 | + wrapper: { className: 'home-page-wrapper footer0-wrapper' }, | |
| 360 | + OverPack: { className: 'home-page footer0', playScale: 0.05 }, | |
| 361 | + // copyright: { | |
| 362 | + // className: 'copyright', | |
| 363 | + // children: ( | |
| 364 | + // <span> | |
| 365 | + // ©2018 | |
| 366 | + // {' '} | |
| 367 | + // <a href="https://motion.ant.design">Ant Motion</a> | |
| 368 | + // {' '} | |
| 369 | + // All Rights Reserved | |
| 370 | + // </span> | |
| 371 | + // ), | |
| 372 | + // }, | |
| 373 | +}; | ... | ... |
front-end/landing-page/src/Page2/documentation.md
0 → 100755
front-end/landing-page/src/Page2/index.jsx
0 → 100755
| 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
0 → 100755
| 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
0 → 100755
| 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
0 → 100755
front-end/landing-page/src/Page2/less/content.less
0 → 100755
| 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
0 → 100755
| 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
0 → 100755
| 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
0 → 100755
| 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
0 → 100755
| 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
0 → 100755
| 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
0 → 100755
front-end/landing-page/src/Page2/less/footer0.less
0 → 100755
| 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
0 → 100755
| 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
0 → 100644
| 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> | |
| 0 | 2 | \ No newline at end of file | ... | ... |
front-end/landing-page/src/global.less
0 → 100644
front-end/landing-page/src/layouts/Footer0.jsx
0 → 100755
| 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
0 → 100755
| 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 | + 相关链接 | |
| 105 | + </span> | |
| 106 | + } | |
| 107 | + > | |
| 108 | + <Menu.ItemGroup title="项目地址"> | |
| 109 | + <Menu.Item key="setting:3" onClick={() => { | |
| 110 | + window.open('https://api.luban-h5.wxjcart.com/main') | |
| 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="联系方式"> | |
| 120 | + <Menu.Item key="setting:5.0" onClick={() => { | |
| 121 | + window.open('https://support.qq.com/products/93432/') | |
| 122 | + }}>论坛</Menu.Item> | |
| 123 | + <Menu.Item key="setting:5" onClick={() => { | |
| 124 | + window.open('https://gitee.com/ly525/luban-h5#%E4%BA%A4%E6%B5%81%E7%BE%A4') | |
| 125 | + }}>钉钉群</Menu.Item> | |
| 126 | + <Menu.Item key="setting:6" onClick={() => { | |
| 127 | + window.open('https://gitee.com/ly525/luban-h5#%E4%BA%A4%E6%B5%81%E7%BE%A4') | |
| 128 | + }}>微信群</Menu.Item> | |
| 129 | + </Menu.ItemGroup> | |
| 130 | + <Menu.ItemGroup title="Document"> | |
| 131 | + <Menu.Item key="setting:1" onClick={() => { | |
| 132 | + window.open('https://ly525.github.io/luban-h5/zh/') | |
| 133 | + }}>中文文档</Menu.Item> | |
| 134 | + <Menu.Item key="setting:2" onClick={() => { | |
| 135 | + window.open('https://www.yuque.com/liuyan-ew1qk/oh5d0n?language=en-us') | |
| 136 | + }}>English Doc</Menu.Item> | |
| 137 | + </Menu.ItemGroup> | |
| 138 | + </SubMenu> | |
| 139 | + </Menu> | |
| 140 | + </TweenOne> | |
| 141 | + </div> | |
| 142 | + </TweenOne> | |
| 143 | + ); | |
| 144 | + } | |
| 145 | +} | |
| 146 | + | |
| 147 | +export default Header; | ... | ... |
front-end/landing-page/src/layouts/data.source.js
0 → 100755
| 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: '导航二', href: '/page2' } }, | |
| 15 | + { name: 'item2', a: { children: '导航三', href: '' } }, | |
| 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
0 → 100755
| 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
0 → 100644
| 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; | |
| 0 | 39 | \ No newline at end of file | ... | ... |
front-end/landing-page/src/layouts/nav0.less
0 → 100755
| 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
0 → 100644
front-end/landing-page/src/pages/.umi/polyfills.js
0 → 100644
front-end/landing-page/src/pages/.umi/router.js
0 → 100644
| 1 | +import React from 'react'; | |
| 2 | +import { Router as DefaultRouter, Route, Switch } from 'react-router-dom'; | |
| 3 | +import dynamic from 'umi/dynamic'; | |
| 4 | +import renderRoutes from 'umi/lib/renderRoutes'; | |
| 5 | +import history from '@tmp/history'; | |
| 6 | + | |
| 7 | +const Router = DefaultRouter; | |
| 8 | + | |
| 9 | +const routes = [ | |
| 10 | + { | |
| 11 | + path: '/', | |
| 12 | + component: require('../../layouts/index.js').default, | |
| 13 | + routes: [ | |
| 14 | + { | |
| 15 | + path: '/', | |
| 16 | + exact: true, | |
| 17 | + component: require('../index.js').default, | |
| 18 | + }, | |
| 19 | + { | |
| 20 | + path: '/page2', | |
| 21 | + exact: true, | |
| 22 | + component: require('../page2.js').default, | |
| 23 | + }, | |
| 24 | + { | |
| 25 | + component: () => | |
| 26 | + React.createElement( | |
| 27 | + require('/Users/lambert/Documents/Code/Self/openSource/luban-h5/front-end/landing-page/node_modules/umi-build-dev/lib/plugins/404/NotFound.js') | |
| 28 | + .default, | |
| 29 | + { pagesPath: 'src/pages', hasRoutesInConfig: false }, | |
| 30 | + ), | |
| 31 | + }, | |
| 32 | + ], | |
| 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 | +window.g_routes = routes; | |
| 44 | +const plugins = require('umi/_runtimePlugin'); | |
| 45 | +plugins.applyForEach('patchRoutes', { initialValue: routes }); | |
| 46 | + | |
| 47 | +export { routes }; | |
| 48 | + | |
| 49 | +export default class RouterWrapper extends React.Component { | |
| 50 | + unListen() {} | |
| 51 | + | |
| 52 | + constructor(props) { | |
| 53 | + super(props); | |
| 54 | + | |
| 55 | + // route change handler | |
| 56 | + function routeChangeHandler(location, action) { | |
| 57 | + plugins.applyForEach('onRouteChange', { | |
| 58 | + initialValue: { | |
| 59 | + routes, | |
| 60 | + location, | |
| 61 | + action, | |
| 62 | + }, | |
| 63 | + }); | |
| 64 | + } | |
| 65 | + this.unListen = history.listen(routeChangeHandler); | |
| 66 | + routeChangeHandler(history.location); | |
| 67 | + } | |
| 68 | + | |
| 69 | + componentWillUnmount() { | |
| 70 | + this.unListen(); | |
| 71 | + } | |
| 72 | + | |
| 73 | + render() { | |
| 74 | + const props = this.props || {}; | |
| 75 | + return <Router history={history}>{renderRoutes(routes, props)}</Router>; | |
| 76 | + } | |
| 77 | +} | ... | ... |
front-end/landing-page/src/pages/.umi/umi.js
0 → 100644
| 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('@tmp/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 | + serverRender = async (ctx = {}) => { | |
| 85 | + // ctx.req.url may be `/bar?locale=en-US` | |
| 86 | + const [pathname] = (ctx.req.url || '').split('?'); | |
| 87 | + const history = require('@tmp/history').default; | |
| 88 | + history.push(ctx.req.url); | |
| 89 | + let props = {}; | |
| 90 | + const activeRoute = | |
| 91 | + findRoute(require('./router').routes, pathname) || false; | |
| 92 | + if ( | |
| 93 | + activeRoute && | |
| 94 | + activeRoute.component && | |
| 95 | + activeRoute.component.getInitialProps | |
| 96 | + ) { | |
| 97 | + const initialProps = plugins.apply('modifyInitialProps', { | |
| 98 | + initialValue: {}, | |
| 99 | + }); | |
| 100 | + // patch query object | |
| 101 | + const location = history.location | |
| 102 | + ? { ...history.location, query: getUrlQuery(history.location.search) } | |
| 103 | + : {}; | |
| 104 | + props = await activeRoute.component.getInitialProps({ | |
| 105 | + route: activeRoute, | |
| 106 | + isServer: true, | |
| 107 | + location, | |
| 108 | + // only exist in server | |
| 109 | + req: ctx.req || {}, | |
| 110 | + res: ctx.res || {}, | |
| 111 | + ...initialProps, | |
| 112 | + }); | |
| 113 | + props = plugins.apply('initialProps', { | |
| 114 | + initialValue: props, | |
| 115 | + }); | |
| 116 | + } else { | |
| 117 | + // message activeRoute or getInitialProps not found | |
| 118 | + console.log( | |
| 119 | + !activeRoute | |
| 120 | + ? `${pathname} activeRoute not found` | |
| 121 | + : `${pathname} activeRoute's getInitialProps function not found`, | |
| 122 | + ); | |
| 123 | + } | |
| 124 | + const rootContainer = plugins.apply('rootContainer', { | |
| 125 | + initialValue: React.createElement(require('./router').default, props), | |
| 126 | + }); | |
| 127 | + const htmlTemplateMap = {}; | |
| 128 | + return { | |
| 129 | + htmlElement: | |
| 130 | + activeRoute && activeRoute.path | |
| 131 | + ? htmlTemplateMap[activeRoute.path] | |
| 132 | + : '', | |
| 133 | + rootContainer, | |
| 134 | + matchPath: activeRoute && activeRoute.path, | |
| 135 | + g_initialData: props, | |
| 136 | + }; | |
| 137 | + }; | |
| 138 | + // using project react-dom version | |
| 139 | + // https://github.com/facebook/react/issues/13991 | |
| 140 | + ReactDOMServer = require('react-dom/server'); | |
| 141 | +} | |
| 142 | + | |
| 143 | +export { ReactDOMServer }; | |
| 144 | +export default (__IS_BROWSER ? null : serverRender); | |
| 145 | + | |
| 146 | +require('../../global.less'); | |
| 147 | + | |
| 148 | +// hot module replacement | |
| 149 | +if (__IS_BROWSER && module.hot) { | |
| 150 | + module.hot.accept('./router', () => { | |
| 151 | + clientRender(); | |
| 152 | + }); | |
| 153 | +} | ... | ... |
front-end/landing-page/src/pages/.umi/umiExports.js
0 → 100644
front-end/landing-page/src/pages/index.css
0 → 100755
front-end/landing-page/src/pages/index.js
0 → 100755