Compare commits

...
150 Commits
Author SHA1 Message Date
zuiidea 587b1f6b9d fix login success redirect;fix css load delay 2017-09-04 11:01:31 +08:00
zuiidea d94580a253 Merge pull request #302 from jackple/patch-1
Update app.js
2017-09-04 09:58:42 +08:00
zuiidea 531e3c0fcc Merge pull request #532 from p2227/patch-1
fixes #529
2017-09-04 09:57:39 +08:00
zuiidea d68de7a30c Merge pull request #378 from chenkang084/remote
fixed:when click breadcrumb back to other page,the left menu displaye…
2017-09-04 09:57:24 +08:00
zuiidea 45cb70f006 Merge pull request #518 from quanpower/patch-1
Update roadhogrc.js
2017-09-04 09:56:18 +08:00
kuang af85384f11 fixes #529 2017-08-28 23:20:38 -05:00
William Zhang 208539134f Update roadhogrc.js
proxy加引号,我这报错了,去掉了正常运行
2017-08-19 18:06:16 +08:00
zuiidea a3f41e3d64 Merge pull request #496 from zuiidea/develop
fix weather
2017-08-13 17:20:42 +08:00
zuiidea 3855c402c9 fix weather 2017-08-13 17:18:46 +08:00
zuiidea 6a58d8434b Merge pull request #493 from zuiidea/develop
fix lint
2017-08-10 19:11:39 +08:00
zuiidea d26a92ce79 fix lint 2017-08-10 19:11:10 +08:00
zuiidea 0d20717c3c Merge pull request #488 from zuiidea/develop
update
2017-08-09 09:46:45 +08:00
zuiidea a0d81dcda9 update 2017-08-08 19:46:38 +08:00
zuiidea 4490af8553 Merge pull request #486 from zuiidea/develop
Develop
2017-08-07 14:43:08 +08:00
zuiidea 75cc86152d 4.3.2 2017-08-07 14:28:32 +08:00
zuiidea 3d9f263330 add Alias 2017-08-07 11:46:42 +08:00
zuiidea 70b5d05f1a format 2017-08-03 14:01:49 +08:00
zuiidea 4da23b9133 version.js 2017-08-03 13:50:43 +08:00
zuiidea da1c52e82b npm run build:new 2017-07-31 17:28:03 +08:00
zuiidea 6ae39bfd55 Merge pull request #453 from phproot/master
fix README.md
2017-07-31 11:51:42 +08:00
Code d86f0ebd78 fix README.md 2017-07-31 11:38:39 +08:00
zuiidea ecbd8bf51e fix little bug 2017-07-31 10:49:15 +08:00
zuiidea 0c9fabe2b4 Merge pull request #452 from zuiidea/develop
fix build:dll
2017-07-30 23:51:07 +08:00
zuiidea 0f27528d2f fix build:dll 2017-07-30 23:50:12 +08:00
zuiidea a36d44d402 Merge pull request #450 from zuiidea/develop
Develop
2017-07-30 14:54:15 +08:00
zuiidea 37deddc911 update 4.3.0 2017-07-30 14:51:02 +08:00
zuiidea 52ee780e40 fix build error 2017-07-30 14:25:04 +08:00
zuiidea 057853cfde fix ejs-loader 2017-07-29 22:30:39 +08:00
zuiidea c0222c3957 add version build 2017-07-28 19:26:05 +08:00
zuiidea 00d8fc5ea5 add build:dll 2017-07-27 20:02:20 +08:00
zuiidea 1e08d7adaa optimized code 2017-07-27 19:13:31 +08:00
zuiidea b2b0aa872f Merge pull request #431 from zuiidea/develop
pagenation style
2017-07-21 19:03:48 +08:00
zuiidea a2b4ee4047 Merge branch 'master' into develop 2017-07-21 19:03:42 +08:00
zuiidea c6b477c993 pagenation style 2017-07-21 19:02:11 +08:00
zuiidea 548d7a8ddb Merge pull request #427 from zuiidea/develop
fix webpack.resoleve.alias module import/no-unresolved
2017-07-19 10:33:14 +08:00
zuiidea 755c1250e5 fix webpack.resoleve.alias module import/no-unresolved 2017-07-19 10:32:39 +08:00
zuiidea c5ebb91980 Merge pull request #413 from afc163/patch-1
No need customzied card style
2017-07-17 10:50:26 +08:00
zuiidea ae12492887 Merge pull request #416 from zuiidea/develop
update package.json
2017-07-17 10:48:01 +08:00
zuiidea 28a5863701 update package.json 2017-07-17 10:47:31 +08:00
偏右 bf65aa5478 Don't need customzied card style
https://github.com/ant-design/ant-design/issues/6833
2017-07-14 13:49:28 +08:00
zuiidea acd3fe8337 Merge pull request #407 from zuiidea/develop
fix permission.visit is null
2017-07-12 19:41:58 +08:00
zuiidea 3ad5a6cfb6 fix permission.visit is null 2017-07-12 19:41:32 +08:00
zuiidea c278c8f6f8 Merge pull request #393 from zuiidea/develop
666
2017-07-10 10:08:26 +08:00
zuiidea 71c75e15ff 666 2017-07-10 10:07:22 +08:00
zuiidea ec8db0e0fb Merge pull request #389 from zuiidea/develop
Develop
2017-07-06 19:16:04 +08:00
zuiidea 2a3587bae5 fix user role and update package.json 2017-07-06 19:15:32 +08:00
zuiidea a33772cbbc Merge branch 'master' into develop 2017-07-06 19:08:06 +08:00
zuiidea 89c58b2f98 Merge pull request #385 from zuiidea/develop
Develop
2017-07-05 19:46:48 +08:00
zuiidea b31bd32ca2 roleType 2017-07-05 19:45:57 +08:00
zuiidea f113fbb238 revise menu property : router => route 2017-07-05 19:29:14 +08:00
rengised a320c77ecb Merge branch 'master' into remote 2017-07-05 15:08:43 +08:00
zuiidea ce1d957212 Merge pull request #382 from zuiidea/develop
Develop
2017-07-05 13:56:00 +08:00
zuiidea 7f40ac6a60 Page Permission 2017-07-05 13:54:57 +08:00
zuiidea 3a01626df9 Permissions Simple Version 2017-07-04 23:41:13 +08:00
zuiidea 6df97916fa webpack alias 2017-07-04 22:44:48 +08:00
chenkang1 7f091d7642 fixed:the error request should be capured in catch method 2017-07-03 14:06:28 +08:00
chenkang1 d8f222f312 fixed:when click breadcrumb back to other page,the left menu displayed the last select item 2017-07-01 16:08:03 +08:00
zuiidea 3378510166 Merge pull request #363 from kuanger/develop
fix logout menu block by show more button
2017-06-19 16:14:49 +08:00
hausir edf1158351 fix logout menu block by show more button 2017-06-19 13:51:03 +08:00
zuiidea e4bd4e9aa0 Merge pull request #355 from blackboyhc/master
Update app.js
2017-06-19 10:18:58 +08:00
zuiidea 5904eae0c9 Merge pull request #349 from zuiidea/develop
Develop
2017-06-19 10:18:42 +08:00
zuiidea 7f26153472 Merge pull request #358 from wuyao1994/dev
showModal return bug
2017-06-19 10:16:59 +08:00
elviswu 4b9e142aa8 showModal return bug 2017-06-16 16:09:22 +08:00
blackboyhc 2679361559 Update app.js
如果在config.js中添加了openPages,比如openPages: ['/login', '/home'],但是进入/home页面仍然要先登录,所以在app model中如果query不成功需要判断当前页面是否被设置成openPages,再决定是否跳转到/login
2017-06-15 17:31:24 +08:00
zuiidea 2d246655e0 add example 2017-06-13 20:36:47 +08:00
zuiidea 04b147d33f proxy example 2017-06-13 20:30:24 +08:00
zuiidea 81801983a6 fix request 2017-06-13 20:26:38 +08:00
zuiidea e484b89518 Merge pull request #340 from zuiidea/develop
add eslint-loader
2017-06-09 10:01:45 +08:00
zuiidea bfff28411d add eslint-loader 2017-06-09 10:00:59 +08:00
zuiidea ae97c9d18a Merge pull request #335 from zuiidea/develop
Develop
2017-06-08 11:22:54 +08:00
zuiidea a063d8be39 fix production className to hash 2017-06-08 11:22:10 +08:00
zuiidea 79eab09941 fix production className to hash 2017-06-08 10:52:05 +08:00
zuiidea 2e3cb5970d pre eslint 2017-06-07 20:16:15 +08:00
zuiidea 460a8c906b Merge pull request #334 from zuiidea/develop
Develop
2017-06-07 19:47:37 +08:00
zuiidea 05a86e2f56 Filename and Classname To Hash 2017-06-07 19:46:56 +08:00
zuiidea 0295da6326 add Posts Page 2017-06-07 14:24:26 +08:00
zuiidea 85e12caf12 update 2017-06-06 19:31:12 +08:00
zuiidea b83c5e7819 user Multiple Option 2017-06-01 20:16:18 +08:00
zuiidea 9cff4e8dfe 666 2017-05-25 13:55:36 +08:00
jackple f6021cbaa4 Update app.js
先判断menu长度,解决当远程加载menu时刷新页面,当前位置不会选中
2017-05-21 20:32:50 +08:00
zuiidea 6ac7e5e815 Merge pull request #296 from darcygail/master
fix YQL bugs:the chat '&' doesn't encoded
2017-05-17 16:59:21 +08:00
darcy e63dfc9291 fix YQL bugs:the chat '&' doesn't encoded 2017-05-17 15:55:40 +08:00
zuiidea 81e7d2bdca Merge pull request #292 from i06/master
Search.js has a mistake var name
2017-05-15 18:59:57 +08:00
i06 1c46693246 Search.js has a mistake var name
the variable named 'handeleSelectChange' seems not right.
turn `handeleSelectChange` to `handleSelectChange`
Hope  accept my advice, thanks
2017-05-15 17:22:55 +08:00
zuiidea 4832a720e6 Merge pull request #288 from zuiidea/develop
Develop
2017-05-13 14:37:37 +08:00
zuiidea 54964fabfb Update README.md 2017-05-13 14:37:18 +08:00
zuiidea b60e593f09 Update README.md 2017-05-13 14:35:53 +08:00
zuiidea 5359efce36 Merge pull request #287 from zuiidea/develop
update 4.2.1
2017-05-12 18:07:53 +08:00
zuiidea 3decccc87d update 4.2.1 2017-05-12 18:06:43 +08:00
zuiidea d92eecb620 Merge pull request #285 from zuiidea/develop
local icon
2017-05-12 15:56:18 +08:00
zuiidea c3c8cf6f9b local icon 2017-05-12 15:55:42 +08:00
zuiidea b4699e75f1 Merge pull request #284 from zuiidea/develop
fix NProgress
2017-05-12 12:26:35 +08:00
zuiidea 47ae7517a8 fix NProgress 2017-05-12 12:25:57 +08:00
zuiidea 19e07aeb7a Merge pull request #277 from zuiidea/develop
favicon
2017-05-11 11:11:49 +08:00
zuiidea c7789f103e favicon 2017-05-11 11:11:21 +08:00
zuiidea 2c74295843 Merge pull request #266 from zuiidea/develop
default.less
2017-05-09 16:36:12 +08:00
zuiidea 44605c6311 default.less 2017-05-09 16:35:37 +08:00
zuiidea 55ef9dfc0e Merge pull request #263 from zuiidea/develop
Develop
2017-05-09 15:25:45 +08:00
zuiidea 664aeba133 fix qureyuser 2017-05-09 15:25:08 +08:00
zuiidea d2595271f8 iconfont 2017-05-09 15:21:50 +08:00
zuiidea 0f03e1aa1a ICONFONT 2017-05-09 11:28:49 +08:00
zuiidea 255b0a95a7 Merge pull request #258 from zuiidea/develop
add:nprogress,dva-loading
2017-05-08 15:34:15 +08:00
zuiidea 839a7c5e0d add:nprogress,dva-loading 2017-05-08 15:32:25 +08:00
zuiidea bf260db940 Update README.md 2017-05-03 17:30:44 +08:00
zuiidea 3e1e782617 Update package.json 2017-05-03 17:29:44 +08:00
zuiidea a1e8f2ed9b Update package.json 2017-05-03 17:15:35 +08:00
zuiidea 88d835cee4 Merge pull request #237 from zuiidea/4.2-dev
Update README.md
2017-05-02 10:45:05 +08:00
zuiidea 2434368b1f Update README.md 2017-05-02 10:44:46 +08:00
zuiidea 058407e442 Update 2017-05-02 10:41:58 +08:00
zuiidea d486fce33e Merge pull request #232 from zhangpenglin/master
fix typo
2017-04-30 19:06:37 +08:00
zuiidea abbcfb8c3c Merge pull request #233 from afc163/master
Fix devDeps
2017-04-30 19:04:01 +08:00
Zhang Penglin 78166e6a83 fix bug 2017-04-30 12:29:48 +08:00
afc163 ca59db9f04 Fix devDeps 2017-04-29 17:35:54 +08:00
Zhang Penglin 5c8286b5cb fix typo 2017-04-28 23:31:50 +08:00
zuiidea ed8555f15e Update README.md 2017-04-28 17:01:27 +08:00
zuiidea 33d4f1679e Merge branch '4.2-dev' 2017-04-28 16:42:59 +08:00
zuiidea 37dd7d011e merge 2017-04-28 16:42:31 +08:00
zuiidea 5641cc61c4 user mocj 2017-04-28 16:34:08 +08:00
zuiidea 30f14769f0 responsive 2017-04-27 20:40:47 +08:00
zuiidea 1b7c076057 filters 2017-04-27 20:26:30 +08:00
zuiidea fbd0fcb5c4 user detail 2017-04-27 17:59:39 +08:00
zuiidea 19ee8eacce user API restful 2017-04-27 17:29:50 +08:00
zuiidea 0b0c7c3f91 update some texts and configs 2017-04-27 14:40:36 +08:00
zuiidea 5d6abb67b6 Merge pull request #219 from HeChengjun/master
修正 arrayToTree 函数中 children 拼写错误
2017-04-26 16:55:17 +08:00
HeChengjun 1a58dcac95 修正 arrayToTree 函数中 children 拼写错误 2017-04-26 16:16:35 +08:00
zuiidea 3d2d524898 Update README.md 2017-04-25 16:17:25 +08:00
zuiidea 2869ead7bd Merge pull request #215 from zuiidea/4.2-dev
fix
2017-04-25 12:34:10 +08:00
zuiidea 25f7a65897 fix 2017-04-25 12:32:42 +08:00
zuiidea 75e6284873 Merge pull request #214 from zuiidea/4.2-dev
Menu defaultSelected
2017-04-25 12:19:03 +08:00
zuiidea 5fbb1b338a Menu defaultSelected 2017-04-25 12:09:20 +08:00
zuiidea ed2b0b25bd Merge pull request #212 from HeChengjun/patch-1
menu.js line 96 : lineChart -> barChart
2017-04-24 17:57:56 +08:00
HeChengjun a4922c7541 menu.js line 96 : lineChart -> barChart 2017-04-24 17:17:10 +08:00
zuiidea 4566171265 Merge pull request #209 from zuiidea/4.2-dev
hot update
2017-04-24 10:10:55 +08:00
zuiidea 6c48480031 hot update 2017-04-24 10:09:10 +08:00
zuiidea 3401215d41 Merge pull request #202 from zuiidea/4.2-dev
fix userInfo
2017-04-21 18:37:36 +08:00
zuiidea 7284cad8aa fix userInfo 2017-04-21 18:36:35 +08:00
zuiidea 53b8ee6e63 Update README.md 2017-04-21 11:06:23 +08:00
zuiidea b5423129f7 Merge pull request #198 from zuiidea/4.2-dev
4.2 dev
2017-04-21 10:49:31 +08:00
zuiidea 4c6deb49d3 fix menu open 2017-04-21 10:47:55 +08:00
zuiidea b6c3cb8a53 rebuild bread,menu,router 2017-04-20 19:26:17 +08:00
zuiidea a42e749c22 Update README.md 2017-04-19 19:27:23 +08:00
zuiidea cfd0172204 error message 2017-04-19 19:10:20 +08:00
zuiidea 4a694b6df8 fix prop-types 2017-04-18 09:56:15 +08:00
zuiidea 3d03fa0695 Merge pull request #184 from zlotus/remote_dev
fix mock error caused by invalid username
2017-04-15 18:45:25 +08:00
ZealotuS 69fbb4742e fix mock error caused by invalid username 2017-04-15 18:13:56 +08:00
zuiidea db8b283def Merge branch '4.1-dev' 2017-04-14 19:47:55 +08:00
zuiidea 4f673b6e3a merge 2017-04-14 19:47:33 +08:00
zuiidea f7616d524b update request 2017-04-01 17:53:06 +08:00
zuiidea 08fdd0d04f Merge pull request #159 from zuiidea/4.0-dev
fix getUserInfo
2017-03-31 21:05:51 +08:00
zuiidea 847f003cd8 fix getUserInfo 2017-03-31 21:04:33 +08:00
154 changed files with 9181 additions and 2590 deletions
+1
View File
@@ -1 +1,2 @@
src/**/*-test.js
src/public
+19 -1
View File
@@ -6,6 +6,7 @@
"comma-dangle": [2, "always-multiline"],
"max-len": 0,
"react/jsx-first-prop-new-line": 0,
"react/jsx-filename-extension": 0,
"space-before-function-paren": [2, "always"],
"no-unused-expressions": [0, {
"allowShortCircuit": true,
@@ -18,9 +19,23 @@
"no-param-reassign": 0,
"no-restricted-syntax": 0,
"no-eval": 0,
"no-continue": 0,
"react/jsx-no-bind": 0,
"no-unused-vars": [2, { "ignoreRestSiblings": true }],
"no-underscore-dangle": 0,
"global-require": 0,
"import/no-unresolved": 0,
"import/extensions": 0,
"jsx-a11y/href-no-hash": 0,
"react/no-array-index-key": 0,
"react/require-default-props": 0,
"react/forbid-prop-types": 0,
"react/no-string-refs": 0,
"react/no-find-dom-node": 0,
"import/no-extraneous-dependencies": 0,
"import/prefer-default-export": 0,
"react/no-danger": 0,
"jsx-a11y/no-static-element-interactions": 0,
},
"parser": "babel-eslint",
"parserOptions": {
@@ -30,5 +45,8 @@
"jsx": true,
"experimentalObjectRestSpread": true
}
}
},
"settings": {
"import/resolver": "node"
}
}
+4 -4
View File
@@ -1,4 +1,4 @@
dist
node_modules
yarn.lock
npm-debug.log
dist
node_modules
yarn.lock
npm-debug.log
+46 -15
View File
@@ -1,26 +1,57 @@
const path = require('path')
const { version } = require('./package.json')
const svgSpriteDirs = [
path.resolve(__dirname, 'src/svg/'),
require.resolve('antd').replace(/index\.js$/, '')
]
export default {
entry: 'src/index.js',
svgSpriteLoaderDirs: svgSpriteDirs,
"theme": "./theme.config.js",
"env": {
"development": {
"extraBabelPlugins": [
"dva-hmr",
"transform-runtime",
["import", { "libraryName": "antd", "style": true }]
entry : 'src/index.js',
svgSpriteLoaderDirs : svgSpriteDirs,
theme : "./theme.config.js",
publicPath : `/${version}/`,
outputPath : `./dist/${version}`,
// 接口代理示例
proxy: {
"/api/v1/weather": {
"target": "https://api.seniverse.com/",
"changeOrigin": true,
"pathRewrite": { "^/api/v1/weather" : "/v3/weather" }
},
// "/api/v2": {
// "target": "http://192.168.0.110",
// "changeOrigin": true,
// "pathRewrite": { "^/api/v2" : "/api/v2" }
// }
},
env : {
development: {
extraBabelPlugins: [
"dva-hmr",
"transform-runtime",
[
"import", {
"libraryName": "antd",
"style": true
}
]
},
"production": {
"extraBabelPlugins": [
"transform-runtime",
["import", { "libraryName": "antd", "style": true}]
]
},
production: {
extraBabelPlugins: [
"transform-runtime",
[
"import", {
"libraryName": "antd",
"style": true
}
]
}
]
}
},
dllPlugin : {
exclude: ["babel-runtime"],
include: ["dva/router", "dva/saga", "dva/fetch"]
}
}
+82 -28
View File
@@ -1,42 +1,72 @@
# Antd Admin
[![React Native](https://img.shields.io/badge/react-^15.4.1-brightgreen.svg?style=flat-square)](https://github.com/facebook/react)
[![Ant Design](https://img.shields.io/badge/ant--design-^2.7.3-yellowgreen.svg?style=flat-square)](https://github.com/ant-design/ant-design)
[![dva](https://img.shields.io/badge/dva-^1.1.0-orange.svg?style=flat-square)](https://github.com/dvajs/dva)
[![React](https://img.shields.io/badge/react-^15.6.1-brightgreen.svg?style=flat-square)](https://github.com/facebook/react)
[![Ant Design](https://img.shields.io/badge/ant--design-^2.11.2-yellowgreen.svg?style=flat-square)](https://github.com/ant-design/ant-design)
[![dva](https://img.shields.io/badge/dva-^1.2.0-orange.svg?style=flat-square)](https://github.com/dvajs/dva)
[![GitHub issues](https://img.shields.io/github/issues/zuiidea/antd-admin.svg?style=flat-square)](https://github.com/zuiidea/antd-admin)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://github.com/zuiidea/antd-admin/pulls)
[![MIT](https://img.shields.io/dub/l/vibe-d.svg?style=flat-square)](http://opensource.org/licenses/MIT)
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com)
演示地址 <http://zuiidea.github.io/antd-admin/>
演示地址 <http://antd-admin.zuiidea.com>
## 特性
- 基于[react](https://github.com/facebook/react),[ant-design](https://github.com/ant-design/ant-design),[dva](https://github.com/dvajs/dva),[Mock](https://github.com/nuysoft/Mock) 企业级后台管理系统最佳实践
- 基于[Mock](https://github.com/nuysoft/Mock)实现脱离后端独立开发
- 基于Antd UI 设计语言,提供后台管理系统常见使用场景
- 基于[dva](https://github.com/dvajs/dva)动态加载 Model 和路由,按需加载
- 浅度响应式设计
- 基于[react](https://github.com/facebook/react),[ant-design](https://github.com/ant-design/ant-design),[dva](https://github.com/dvajs/dva),[Mock](https://github.com/nuysoft/Mock) 企业级后台管理系统最佳实践。
- 基于Antd UI 设计语言,提供后台管理系统常见使用场景。
- 基于[dva](https://github.com/dvajs/dva)动态加载 Model 和路由,按需加载。
- 使用[roadhog](https://github.com/sorrycc/roadhog)本地调试和构建,其中Mock功能实现脱离后端独立开发。
- 浅度响应式设计。
## 更新日志
### 4.1
### 4.3.0
`2017-04-14`
`2017-07-30`
- 升级开发工具为[roadhog](https://github.com/sorrycc/roadhog)
- 使用`roadhog`的mock功能
- 增强`utils/request.js`跨域处理能力
-   更新[roadhog](https://github.com/sorrycc/roadhog)至`1.0.0-beta.7`,得益于`webpack@3.4`,编译速度不减。
-   基于使用roadhog的dll插件,开发时编译耗时减半。
-   新增打包时按项目版本号生成文件目录。[#449](https://github.com/zuiidea/antd-admin/issues/449)
-   更新`eslint`,并适当修改了`.eslintrc`。
### 4.2.3
`2017-07-07`
-   新增用户按权限访问。[#384](https://github.com/zuiidea/antd-admin/issues/384)
### 4.2.2
`2017-06-01`
-   新增用户管理批量删除。[#320](https://github.com/zuiidea/antd-admin/issues/320)
### 4.2.1
`2017-05-12`
-   新增IconFont扩展方案,本地使用方案。[#270](https://github.com/zuiidea/antd-admin/issues/270) [Live](http://47.92.30.98:666/UIElement/iconfont)
-   新增常见场景使用loading。 [dva-loading](https://github.com/dvajs/dva-loading)
### 4.2
`2017-04-28`
- 修改user相关API使用`Restful`风格。
- 增加user页面多条件查询。[#266](https://github.com/zuiidea/antd-admin/issues/226)
- 修复菜单默认高亮。[#201](https://github.com/zuiidea/antd-admin/issues/201)
[More Change Log](https://github.com/zuiidea/antd-admin/wiki/Change-Log)
## 开发构建
### 目录结构
```bash
├── /mock/ # 数据mock的接口文件
├── /dist/ # 项目输出目录
├── /src/ # 项目源码目录
│ ├── /public/ # 公共文件,编译时copy至dist目录
│ ├── /components/ # UI组件及UI相关方法
│ │ ├── skin.less # 全局样式
│ │ └── vars.less # 全局样式变量
@@ -44,10 +74,11 @@
│ │ └── app.js # 路由入口
│ ├── /models/ # 数据模型
│ ├── /services/ # 数据接口
│ ├── /themes/ # 项目样式
│ ├── /mock/ # 数据mock
│ ├── /utils/ # 工具函数
│ │ ├── config.js # 项目常规配置
│ │ ├── menu.js # 侧边菜单配置
│ │ ├── mock.js # 数据拦截配置
│ │ ├── menu.js # 菜单及面包屑配置
│ │ ├── config.js # 项目常规配置
│ │ ├── request.js # 异步请求函数
│ │ └── theme.js # 项目需要在js中使用到样式变量
@@ -55,39 +86,49 @@
│ ├── index.js # 入口文件
│ └── index.html
├── package.json # 项目信息
└── proxy.config.js # 数据mock配置
├── .eslintrc # Eslint配置
└── .roadhogrc.js # roadhog配置
```
文件夹命名说明:
- components:组件(方法)为单位以文件夹保存,文件夹名组件首字母大写(如`DataTable`),方法首字母小写(如`layer`),文件夹内主文件与文件夹同名,多文件以`index.js`导出对象(如`./src/components/Layout`)
- routes:页面为单位以文件夹保存,文件夹名首字母小写(特殊除外,如`UIElement`),文件夹内主文件以`index.js`导出,多文件时可建立`components`文件夹(如`./src/routes/dashboard`),如果有子路由,依次按照路由层次建立文件夹(如`./src/routes/UIElement`)
- components:组件(方法)为单位以文件夹保存,文件夹名组件首字母大写(如`DataTable`),方法首字母小写(如`layer`),文件夹内主文件与文件夹同名,多文件以`index.js`导出对象(如`./src/components/Layout`)。
- routes:页面为单位以文件夹保存,文件夹名首字母小写(特殊除外,如`UIElement`),文件夹内主文件以`index.js`导出,多文件时可建立`components`文件夹(如`./src/routes/dashboard`),如果有子路由,依次按照路由层次建立文件夹(如`./src/routes/UIElement`)。
### 快速开始
克隆项目文件:
git clone https://github.com/zuiidea/antd-admin.git
```bash
git clone https://github.com/zuiidea/antd-admin.git
```
进入目录安装依赖:
npm i 或者 yarn install
npm i roadhog@0.6.0-beta.3 -g
```bash
#开始前请确保没有安装roadhog、webpack到NPM全局目录
npm i 或者 yarn install
```
开发:
```bash
npm run dev # 使用mock拦截请求,数据存储在localStroge里
npm run build:dll #第一次npm run dev时需运行此命令,使开发时编译更快
npm run dev
打开 http://localhost:8000
```
构建:
[详情](https://github.com/zuiidea/antd-admin/issues/269)
```bash
npm run build
将会生成dist目录
将会打包至dist/{version}目录 #package.json里version字段
npm run build:new
将会打包至dist/{version增加1}目录 #package.json里version字段
```
代码检测:
@@ -96,6 +137,19 @@ npm run build
npm run lint
```
## FAQ
- 项目打包后如何部署? [#269](https://github.com/zuiidea/antd-admin/issues/269)
- 如何做权限管理? [#384](https://github.com/zuiidea/antd-admin/issues/384)
- 如何使用mock.js模拟接口,怎么使用线上接口? [#348](https://github.com/zuiidea/antd-admin/issues/348)
- 如何使用Iconfont,如何使用本地的svg图标? [#270](https://github.com/zuiidea/antd-admin/issues/270)
- 怎么按版本打包,上线时不影响正在访问的用户? [#449](https://github.com/zuiidea/antd-admin/issues/449)
- windows处理CRLF?[参考](http://blog.csdn.net/lysc_forever/article/details/42835203)
```bash
git config --global core.autocrlf false
```
## 参考
用户列表:<https://github.com/dvajs/dva/tree/master/examples/user-dashboard>
@@ -106,8 +160,8 @@ dashboard设计稿:<https://dribbble.com/shots/3108122-Dashboard-Admin> (已
web
![](assets/demo4.gif)
![](assets/4.2.1-demo-1.gif)
移动
![](assets/demo3.gif)
![](assets/4.2.1-demo-2.gif)
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

+44 -37
View File
@@ -1,56 +1,63 @@
{
"private": true,
"name": "antd-admin",
"version": "4.3.3",
"dependencies": {
"antd": "^2.9.1",
"antd": "^2.11.2",
"axios": "^0.16.2",
"babel-polyfill": "^6.23.0",
"classnames": "^2.2.5",
"d3-shape": "^1.2.0",
"draftjs-to-markdown": "^0.4.0",
"dva": "^1.1.0",
"dva": "^1.2.0",
"dva-loading": "^0.2.0",
"ejs-loader": "^0.3.0",
"js-beautify": "^1.6.14",
"jsonp": "^0.2.1",
"less-vars-to-js": "^1.1.2",
"lodash": "^4.17.4",
"qs": "^6.2.0",
"react": "^15.4.1",
"react-countup": "1.3.0",
"react-dom": "^15.4.1",
"react-draft-wysiwyg": "^1.8.1",
"react-helmet": "^5.0.0",
"recharts": "^0.19.0"
"mockjs": "^1.0.1-beta3",
"nprogress": "^0.2.0",
"path-to-regexp": "^1.7.0",
"prop-types": "^15.5.10",
"qs": "^6.5.0",
"rc-tween-one": "^1.3.1",
"react": "^15.6.1",
"react-countup": "^2.1.1",
"react-dom": "^15.6.1",
"react-draft-wysiwyg": "^1.10.0",
"react-helmet": "^5.1.3",
"recharts": "^0.22.4",
"roadhog": "^1.2.1"
},
"devDependencies": {
"antd": "^2.9.1",
"axios": "^0.15.3",
"babel-eslint": "^6.1.2",
"babel-eslint": "^7.2.3",
"babel-plugin-dev-expression": "^0.2.1",
"babel-plugin-dva-hmr": "^0.3.2",
"babel-plugin-import": "^1.1.1",
"babel-plugin-transform-runtime": "^6.9.0",
"babel-polyfill": "^6.23.0",
"babel-runtime": "^6.9.2",
"copy-webpack-plugin": "^4.0.1",
"draftjs-to-html": "^0.7.0",
"eslint": "^3.17.1",
"eslint-config-airbnb": "^9.0.1",
"eslint-plugin-import": "^1.16.0",
"eslint-plugin-jsx-a11y": "^1.4.2",
"eslint-plugin-react": "^5.1.1",
"jsonp": "^0.2.1",
"less-vars-to-js": "^1.1.2",
"mockjs": "^1.0.1-beta3",
"rc-tween-one": "^1.0.0",
"redbox-react": "^1.2.10"
"dva-model-extend": "^0.1.1",
"eslint": "^4.1.1",
"eslint-config-airbnb": "^15.0.2",
"eslint-import-resolver-node": "^0.3.1",
"eslint-loader": "^1.9.0",
"eslint-plugin-import": "^2.6.1",
"eslint-plugin-jsx-a11y": "^6.0.2",
"eslint-plugin-react": "^7.1.0",
"html-webpack-plugin": "^2.29.0",
"html-webpack-template": "^5.6.0",
"redbox-react": "^1.2.10",
"roadhog": "1.0.0-beta.7"
},
"pre-commit": [
"lint"
],
"pre-commit": ["lint"],
"scripts": {
"dev": "set BROWSER=none&&roadhog server",
"dev": "set BROWSER=none&&set HOST=0.0.0.0&&roadhog server",
"lint": "eslint --fix --ext .js src",
"build": "roadhog build"
},
"theme": "./src/theme.js",
"standard": {
"parser": "babel-eslint",
"globals": [
"location",
"localStorage"
]
"build": "roadhog build",
"build:dll": "roadhog buildDll",
"build:new": "node version && roadhog build"
}
}
}
+2 -1
View File
@@ -1,4 +1,5 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { TweenOneGroup } from 'rc-tween-one'
const enterAnim = [
+3 -2
View File
@@ -1,6 +1,7 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Table } from 'antd'
import { request } from '../../utils'
import { request } from 'utils'
import lodash from 'lodash'
import './DataTable.less'
+2 -1
View File
@@ -1,4 +1,5 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Dropdown, Button, Icon, Menu } from 'antd'
const DropOption = ({ onMenuClick, menuOptions = [], buttonStyle, dropdownProps }) => {
+1 -1
View File
@@ -1,7 +1,7 @@
import React from 'react'
import { Editor } from 'react-draft-wysiwyg'
import styles from './Editor.less'
import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css'
import styles from './Editor.less'
const DraftEditor = (props) => {
+29
View File
@@ -0,0 +1,29 @@
import React from 'react'
import PropTypes from 'prop-types'
import styles from './FilterItem.less'
const FilterItem = ({
label = '',
children,
}) => {
const labelArray = label.split('')
return (
<div className={styles.filterItem}>
{labelArray.length > 0
? <div className={styles.labelWrap}>
{labelArray.map((item, index) => <span className="labelText" key={index}>{item}</span>)}
</div>
: ''}
<div className={styles.item}>
{children}
</div>
</div>
)
}
FilterItem.propTypes = {
label: PropTypes.string,
children: PropTypes.element.isRequired,
}
export default FilterItem
+17
View File
@@ -0,0 +1,17 @@
.filterItem {
display: flex;
justify-content: space-between;
.labelWrap {
width: 64px;
line-height: 28px;
margin-right: 12px;
justify-content: space-between;
display: flex;
overflow: hidden;
}
.item {
flex: 1;
}
}
+6
View File
@@ -0,0 +1,6 @@
{
"name": "FilterItem",
"version": "0.0.0",
"private": true,
"main": "./FilterItem.js"
}
+13 -6
View File
@@ -1,14 +1,21 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import './iconfont.less'
const Iconfont = ({ type }) => <span
dangerouslySetInnerHTML={{
__html: `<svg class="iconfont" aria-hidden="true"><use xlink:href="#anticon-${type}"></use></svg>`,
}}
/>
const Iconfont = ({ type, colorful }) => {
if (colorful) {
return (<span
dangerouslySetInnerHTML={{
__html: `<svg class="colorful-icon" aria-hidden="true"><use xlink:href="#${type.startsWith('#') ? type.replace(/#/, '') : type}"></use></svg>`,
}}
/>)
}
return <i className={`antdadmin icon-${type}`} />
}
Iconfont.propTypes = {
type: PropTypes.string,
colorful: PropTypes.bool,
}
export default Iconfont
+1 -1
View File
@@ -1,4 +1,4 @@
:global .iconfont {
:global .colorful-icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
+41 -39
View File
@@ -1,48 +1,55 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Breadcrumb, Icon } from 'antd'
import { Link } from 'dva/router'
import pathToRegexp from 'path-to-regexp'
import { queryArray } from 'utils'
import styles from './Bread.less'
import { menu } from '../../utils'
let pathSet = []
const getPathSet = function (menuArray, parentPath) {
parentPath = parentPath || '/'
menuArray.forEach(item => {
pathSet[(parentPath + item.key).replace(/\//g, '-').hyphenToHump()] = {
path: parentPath + item.key,
name: item.name,
icon: item.icon || '',
clickable: item.clickable === undefined,
const Bread = ({ menu, location }) => {
// 匹配当前路由
let pathArray = []
let current
for (let index in menu) {
if (menu[index].route && pathToRegexp(menu[index].route).exec(location.pathname)) {
current = menu[index]
break
}
if (item.child) {
getPathSet(item.child, `${parentPath}${item.key}/`)
}
})
}
getPathSet(menu)
}
function Bread ({ location }) {
let pathNames = []
location.pathname.substr(1).split('/').forEach((item, key) => {
if (key > 0) {
pathNames.push((`${pathNames[key - 1]}-${item}`).hyphenToHump())
} else {
pathNames.push((`-${item}`).hyphenToHump())
const getPathArray = (item) => {
pathArray.unshift(item)
if (item.bpid) {
getPathArray(queryArray(menu, item.bpid, 'id'))
}
})
}
const breadsArray = pathNames.filter(item => (item in pathSet))
const breads = breadsArray.map((item, key) => {
if (!current) {
pathArray.push(menu[0] || {
id: 1,
icon: 'laptop',
name: 'Dashboard',
})
pathArray.push({
id: 404,
name: 'Not Found',
})
} else {
getPathArray(current)
}
// 递归查找父级
const breads = pathArray.map((item, key) => {
const content = (
<span>{pathSet[item].icon
? <Icon type={pathSet[item].icon} style={{ marginRight: 4 }} />
: ''}{pathSet[item].name}</span>
<span>{item.icon
? <Icon type={item.icon} style={{ marginRight: 4 }} />
: ''}{item.name}</span>
)
return (
<Breadcrumb.Item key={key}>
{((breadsArray.length - 1) !== key && pathSet[item].clickable)
? <Link to={pathSet[item].path}>
{content}
{((pathArray.length - 1) !== key)
? <Link to={item.route}>
{content}
</Link>
: content}
</Breadcrumb.Item>
@@ -52,12 +59,6 @@ function Bread ({ location }) {
return (
<div className={styles.bread}>
<Breadcrumb>
<Breadcrumb.Item >
<Link to="/dashboard">
<Icon type="home" />
<span>Home</span>
</Link>
</Breadcrumb.Item>
{breads}
</Breadcrumb>
</div>
@@ -65,6 +66,7 @@ function Bread ({ location }) {
}
Bread.propTypes = {
menu: PropTypes.array,
location: PropTypes.object,
}
+8 -8
View File
@@ -1,8 +1,8 @@
@import "../../themes/vars.less";
.bread {
height: 64px;
line-height: 64px;
padding: 0 24px;
margin-bottom: -24px;
}
@import "~themes/vars";
.bread {
height: 64px;
line-height: 64px;
padding: 0 24px;
margin-bottom: -24px;
}
+3 -3
View File
@@ -1,9 +1,9 @@
import React from 'react'
import { config } from 'utils'
import styles from './Footer.less'
import { config } from '../../utils'
const Footer = () => <div className={styles.footer}>
const Footer = () => (<div className={styles.footer}>
{config.footerText}
</div>
</div>)
export default Footer
+12 -12
View File
@@ -1,12 +1,12 @@
@import "../../themes/vars.less";
.footer {
height: 48px;
line-height: 48px;
text-align: center;
font-size: 12px;
color: #999;
background: #fff;
box-shadow: @shadow-2;
width: 100%;
}
@import "~themes/vars";
.footer {
height: 48px;
line-height: 48px;
text-align: center;
font-size: 12px;
color: #999;
background: #fff;
box-shadow: @shadow-2;
width: 100%;
}
+20 -9
View File
@@ -1,13 +1,16 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Menu, Icon, Popover } from 'antd'
import classnames from 'classnames'
import styles from './Header.less'
import Menus from './Menu'
const SubMenu = Menu.SubMenu
function Header ({ user, logout, switchSider, siderFold, isNavbar, menuPopoverVisible, location, switchMenuPopover, navOpenKeys, changeOpenKeys }) {
const Header = ({ user, logout, switchSider, siderFold, isNavbar, menuPopoverVisible, location, switchMenuPopover, navOpenKeys, changeOpenKeys, menu }) => {
let handleClickMenu = e => e.key === 'logout' && logout()
const menusProps = {
menu,
siderFold: false,
darkTheme: false,
isNavbar,
@@ -24,21 +27,28 @@ function Header ({ user, logout, switchSider, siderFold, isNavbar, menuPopoverVi
<Icon type="bars" />
</div>
</Popover>
: <div className={styles.button} onClick={switchSider}>
<Icon type={siderFold ? 'menu-unfold' : 'menu-fold'} />
: <div
className={styles.button}
onClick={switchSider}
>
<Icon type={classnames({ 'menu-unfold': siderFold, 'menu-fold': !siderFold })} />
</div>}
<div className={styles.rightWarpper}>
<div className={styles.button}>
<Icon type="mail" />
</div>
<Menu mode="horizontal" onClick={handleClickMenu}>
<SubMenu style={{
float: 'right',
}} title={< span > <Icon type="user" />
{user.username} < /span>}
<SubMenu
style={{
float: 'right',
}}
title={<span>
<Icon type="user" />
{user.username}
</span>}
>
<Menu.Item key="logout">
<a>注销</a>
Sign out
</Menu.Item>
</SubMenu>
</Menu>
@@ -48,6 +58,7 @@ function Header ({ user, logout, switchSider, siderFold, isNavbar, menuPopoverVi
}
Header.propTypes = {
menu: PropTypes.array,
user: PropTypes.object,
logout: PropTypes.func,
switchSider: PropTypes.func,
+59 -57
View File
@@ -1,57 +1,59 @@
@import "../../themes/vars.less";
.header {
:global .ant-menu-horizontal {
& > .ant-menu-submenu {
float: right;
}
border: none;
display: inline-block;
}
box-shadow: @shadow-2;
position: relative;
display: flex;
justify-content: space-between;
height: 47px;
background-color: #fff;
.rightWarpper {
display: flex;
}
.button {
width: 47px;
height: 47px;
line-height: 47px;
text-align: center;
font-size: 18px;
cursor: pointer;
transition: @transition-ease-in;
&:hover {
color: @primary-color;
background-color: fade(@primary-color, 15%);
}
}
}
.popovermenu {
width: 280px;
margin-left: 6px;
:global .ant-popover-inner-content {
padding: 0;
.ant-menu-inline .ant-menu-item,
.ant-menu-vertical .ant-menu-item {
border-right: 0;
height: 48px;
line-height: 48px;
}
.ant-menu-inline .ant-menu-item-selected,
.ant-menu-inline .ant-menu-selected {
border-right: 0;
}
}
}
@import "~themes/vars";
.header {
:global .ant-menu-horizontal {
& > .ant-menu-submenu {
float: right;
}
border: none;
display: inline-block;
}
box-shadow: @shadow-2;
position: relative;
display: flex;
justify-content: space-between;
height: 47px;
background-color: #fff;
z-index: 999;
.rightWarpper {
display: flex;
padding-right: 16px;
}
.button {
width: 47px;
height: 47px;
line-height: 47px;
text-align: center;
font-size: 18px;
cursor: pointer;
transition: @transition-ease-in;
&:hover {
color: @primary-color;
background-color: fade(@primary-color, 15%);
}
}
}
.popovermenu {
width: 280px;
margin-left: 6px;
:global .ant-popover-inner-content {
padding: 0;
.ant-menu-inline .ant-menu-item,
.ant-menu-vertical .ant-menu-item {
border-right: 0;
height: 48px;
line-height: 48px;
}
.ant-menu-inline .ant-menu-item-selected,
.ant-menu-inline .ant-menu-selected {
border-right: 0;
}
}
}
+292 -293
View File
@@ -1,293 +1,292 @@
@import "../../themes/vars.less";
.layout {
position: relative;
height: 100vh;
&.withnavbar {
.main {
margin-left: 0;
}
}
&.fold {
.sider {
width: 42px;
.logo {
img {
width: 28px;
margin: 6px 7px;
}
}
:global {
.ant-menu-root {
width: 100%;
overflow: visible;
& > .ant-menu-item {
padding: 0;
text-align: center;
.anticon {
font-size: 14px;
margin-right: 0;
}
}
& > .ant-menu-submenu {
& > .ant-menu-submenu-title {
padding: 0;
text-align: center;
.anticon {
font-size: 14px;
margin-right: 0;
}
&::after {
display: none;
}
}
}
}
}
}
.main {
margin-left: 42px;
}
}
.sider {
width: 224px;
background: #3e3e3e;
position: absolute;
overflow: visible;
padding-bottom: 24px;
height: 100vh;
transition: @transition-ease-out;
box-shadow: @shadow-1;
z-index: 520;
color: #999;
&.light {
background: #fff;
.switchtheme {
background: #fff;
border-top: solid 1px #f8f8f8;
}
}
.logo {
text-align: center;
height: 40px;
line-height: 40px;
cursor: pointer;
margin: 28px 0;
transition: @transition-ease-out;
overflow: hidden;
img {
width: 40px;
margin-right: 8px;
transition: @transition-ease-out;
}
span {
vertical-align: text-bottom;
font-size: 16px;
text-transform: uppercase;
display: inline-block;
}
.anticon {
transition: @transition-ease-out;
}
}
.switchtheme {
width: 100%;
position: absolute;
bottom: 0;
height: 48px;
background-color: @dark-half;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 16px 0 24px;
overflow: hidden;
z-index: 1000;
span {
white-space: nowrap;
overflow: hidden;
}
:global {
.anticon {
min-width: 14px;
margin-right: 8px;
font-size: 14px;
}
}
}
:global {
.ant-menu-dark,
.ant-menu-dark .ant-menu-sub {
color: #999;
}
.ant-menu-root {
height: ~"calc(100vh - 144px)";
overflow-x: hidden;
border-right: none;
&::-webkit-scrollbar-thumb {
background-color: transparent;
}
&:hover {
&::-webkit-scrollbar-thumb {
background-color: rgba(0, 0, 0, 0.2);
}
}
&.ant-menu-vertical {
.ant-menu-sub {
height: 0;
opacity: 0;
transition: none;
}
.ant-menu-submenu-active {
.ant-menu-sub {
height: auto;
opacity: 1;
}
}
}
}
.ant-menu {
transition: @transition-ease-out;
.ant-menu-item,
.ant-menu-submenu-title {
overflow: hidden;
white-space: normal;
}
}
}
}
.main {
margin-left: 224px;
overflow: auto;
height: 100vh;
transition: @transition-ease-out;
:global {
.content-inner {
background: #fff;
padding: 24px;
box-shadow: @shadow-1;
min-height: e("calc(100vh - 184px)");
}
}
.container {
margin: 24px;
}
.content {
min-height: e("calc(100vh - 184px)");
position: relative;
}
}
}
:global .ant-menu-dark {
color: #999;
background-color: #3e3e3e;
.ant-menu-submenu-title:hover,
.ant-menu-submenu:hover {
color: @primary-color;
}
.ant-menu-sub {
color: #999;
}
.ant-menu-submenu-selected {
color: @primary-color;
&:not(.ant-menu-submenu-open) {
background-color: @dark-half;
}
}
.ant-menu-item,
.ant-menu-submenu-title {
& > a {
color: #999;
}
&:hover > a {
color: @primary-color;
}
}
&.ant-menu-inline {
.ant-menu-item-selected {
background-color: @dark-half;
}
}
.ant-menu-item-selected {
color: @primary-color;
background-color: @dark-half;
& > a {
color: @primary-color;
}
&:hover {
background-color: @dark-half;
}
}
}
.spin {
:global .ant-spin-container {
height: 100vh;
}
}
@media (max-width: 767px) {
.layout {
.main {
.container {
margin: 12px;
}
.bread {
padding: 0 12px;
}
.content {
min-height: e("calc(100vh - 160px)");
}
:global {
.content-inner {
padding: 12px;
min-height: e("calc(100vh - 160px)");
}
}
}
}
}
@import "~themes/vars";
.layout {
position: relative;
height: 100vh;
&.withnavbar {
.main {
margin-left: 0;
}
}
&.fold {
.sider {
width: 42px;
.logo {
img {
width: 28px;
margin: 6px 7px;
}
}
:global {
.ant-menu-root {
width: 100%;
overflow: visible;
& > .ant-menu-item {
padding: 0;
text-align: center;
.anticon {
font-size: 14px;
margin-right: 0;
}
}
& > .ant-menu-submenu {
& > .ant-menu-submenu-title {
padding: 0;
text-align: center;
.anticon {
font-size: 14px;
margin-right: 0;
}
&::after {
display: none;
}
}
}
}
}
}
.main {
margin-left: 42px;
}
}
.sider {
width: 224px;
background: #3e3e3e;
position: absolute;
overflow: visible;
padding-bottom: 24px;
height: 100vh;
transition: @transition-ease-out;
box-shadow: @shadow-1;
color: #999;
&.light {
background: #fff;
.switchtheme {
background: #fff;
border-top: solid 1px #f8f8f8;
}
}
.logo {
text-align: center;
height: 40px;
line-height: 40px;
cursor: pointer;
margin: 28px 0;
transition: @transition-ease-out;
overflow: hidden;
img {
width: 40px;
margin-right: 8px;
transition: @transition-ease-out;
}
span {
vertical-align: text-bottom;
font-size: 16px;
text-transform: uppercase;
display: inline-block;
}
.anticon {
transition: @transition-ease-out;
}
}
.switchtheme {
width: 100%;
position: absolute;
bottom: 0;
height: 48px;
background-color: @dark-half;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 16px 0 24px;
overflow: hidden;
z-index: 1000;
span {
white-space: nowrap;
overflow: hidden;
}
:global {
.anticon {
min-width: 14px;
margin-right: 8px;
font-size: 14px;
}
}
}
:global {
.ant-menu-dark,
.ant-menu-dark .ant-menu-sub {
color: #999;
}
.ant-menu-root {
height: ~"calc(100vh - 144px)";
overflow-x: hidden;
border-right: none;
&::-webkit-scrollbar-thumb {
background-color: transparent;
}
&:hover {
&::-webkit-scrollbar-thumb {
background-color: rgba(0, 0, 0, 0.2);
}
}
&.ant-menu-vertical {
.ant-menu-sub {
height: 0;
opacity: 0;
transition: none;
}
.ant-menu-submenu-active {
.ant-menu-sub {
height: auto;
opacity: 1;
}
}
}
}
.ant-menu {
transition: @transition-ease-out;
.ant-menu-item,
.ant-menu-submenu-title {
overflow: hidden;
white-space: normal;
}
}
}
}
.main {
margin-left: 224px;
overflow: auto;
height: 100vh;
transition: @transition-ease-out;
:global {
.content-inner {
background: #fff;
padding: 24px;
box-shadow: @shadow-1;
min-height: e("calc(100vh - 184px)");
}
}
.container {
margin: 24px;
}
.content {
min-height: e("calc(100vh - 184px)");
position: relative;
}
}
}
:global .ant-menu-dark {
color: #999;
background-color: #3e3e3e;
.ant-menu-submenu-title:hover,
.ant-menu-submenu:hover {
color: @primary-color;
}
.ant-menu-sub {
color: #999;
}
.ant-menu-submenu-selected {
color: @primary-color;
&:not(.ant-menu-submenu-open) {
background-color: @dark-half;
}
}
.ant-menu-item,
.ant-menu-submenu-title {
& > a {
color: #999;
}
&:hover > a {
color: @primary-color;
}
}
&.ant-menu-inline {
.ant-menu-item-selected {
background-color: @dark-half;
}
}
.ant-menu-item-selected {
color: @primary-color;
background-color: @dark-half;
& > a {
color: @primary-color;
}
&:hover {
background-color: @dark-half;
}
}
}
.spin {
:global .ant-spin-container {
height: 100vh;
}
}
@media (max-width: 767px) {
.layout {
.main {
.container {
margin: 12px;
}
.bread {
padding: 0 12px;
}
.content {
min-height: e("calc(100vh - 160px)");
}
:global {
.content-inner {
padding: 12px;
min-height: e("calc(100vh - 160px)");
}
}
}
}
}
+84 -31
View File
@@ -1,43 +1,67 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Menu, Icon } from 'antd'
import { Link } from 'dva/router'
import { menu } from '../../utils'
import { arrayToTree, queryArray } from 'utils'
import pathToRegexp from 'path-to-regexp'
const topMenus = menu.map(item => item.key)
const getMenus = function (menuArray, siderFold, parentPath = '/') {
return menuArray.map(item => {
const linkTo = parentPath + item.key
if (item.child) {
const Menus = ({ siderFold, darkTheme, handleClickNavMenu, navOpenKeys, changeOpenKeys, menu, location }) => {
// 生成树状
const menuTree = arrayToTree(menu.filter(_ => _.mpid !== '-1'), 'id', 'mpid')
const levelMap = {}
// 递归生成菜单
const getMenus = (menuTreeN, siderFoldN) => {
return menuTreeN.map((item) => {
if (item.children) {
if (item.mpid) {
levelMap[item.id] = item.mpid
}
return (
<Menu.SubMenu
key={item.id}
title={<span>
{item.icon && <Icon type={item.icon} />}
{(!siderFoldN || !menuTree.includes(item)) && item.name}
</span>}
>
{getMenus(item.children, siderFoldN)}
</Menu.SubMenu>
)
}
return (
<Menu.SubMenu key={linkTo} title={<span>{item.icon ? <Icon type={item.icon} /> : ''}{siderFold && topMenus.indexOf(item.key) >= 0 ? '' : item.name}</span>}>
{getMenus(item.child, siderFold, `${linkTo}/`)}
</Menu.SubMenu>
<Menu.Item key={item.id}>
<Link to={item.route}>
{item.icon && <Icon type={item.icon} />}
{(!siderFoldN || !menuTree.includes(item)) && item.name}
</Link>
</Menu.Item>
)
}
return (
<Menu.Item key={linkTo}>
<Link to={linkTo}>
{item.icon ? <Icon type={item.icon} /> : ''}
{siderFold && topMenus.indexOf(item.key) >= 0 ? '' : item.name}
</Link>
</Menu.Item>
)
})
}
function Menus ({ siderFold, darkTheme, location, handleClickNavMenu, navOpenKeys, changeOpenKeys }) {
const menuItems = getMenus(menu, siderFold)
})
}
const menuItems = getMenus(menuTree, siderFold)
// 保持选中
const getAncestorKeys = (key) => {
const map = {
'/navigation/navigation2': ['/navigation'],
let map = {}
const getParent = (index) => {
const result = [String(levelMap[index])]
if (levelMap[result[0]]) {
result.unshift(getParent(result[0])[0])
}
return result
}
for (let index in levelMap) {
if ({}.hasOwnProperty.call(levelMap, index)) {
map[index] = getParent(index)
}
}
return map[key] || []
}
const onOpenChange = (openKeys) => {
const latestOpenKey = openKeys.find(key => !(navOpenKeys.indexOf(key) > -1))
const latestCloseKey = navOpenKeys.find(key => !(openKeys.indexOf(key) > -1))
const latestOpenKey = openKeys.find(key => !navOpenKeys.includes(key))
const latestCloseKey = navOpenKeys.find(key => !openKeys.includes(key))
let nextOpenKeys = []
if (latestOpenKey) {
nextOpenKeys = getAncestorKeys(latestOpenKey).concat(latestOpenKey)
@@ -53,13 +77,42 @@ function Menus ({ siderFold, darkTheme, location, handleClickNavMenu, navOpenKey
openKeys: navOpenKeys,
} : {}
// 寻找选中路由
let currentMenu
let defaultSelectedKeys
for (let item of menu) {
if (item.route && pathToRegexp(item.route).exec(location.pathname)) {
currentMenu = item
break
}
}
const getPathArray = (array, current, pid, id) => {
let result = [String(current[id])]
const getPath = (item) => {
if (item && item[pid]) {
result.unshift(String(item[pid]))
getPath(queryArray(array, item[pid], id))
}
}
getPath(current)
return result
}
if (currentMenu) {
defaultSelectedKeys = getPathArray(menu, currentMenu, 'mpid', 'id')
}
if (!defaultSelectedKeys) {
defaultSelectedKeys = ['1']
}
return (
<Menu
{...menuProps}
mode={siderFold ? 'vertical' : 'inline'}
theme={darkTheme ? 'dark' : 'light'}
onClick={handleClickNavMenu}
defaultSelectedKeys={[location.pathname !== '/' ? location.pathname : '/dashboard']}
defaultSelectedKeys={defaultSelectedKeys}
>
{menuItems}
</Menu>
@@ -67,13 +120,13 @@ function Menus ({ siderFold, darkTheme, location, handleClickNavMenu, navOpenKey
}
Menus.propTypes = {
menu: PropTypes.array,
siderFold: PropTypes.bool,
darkTheme: PropTypes.bool,
location: PropTypes.object,
isNavbar: PropTypes.bool,
handleClickNavMenu: PropTypes.func,
navOpenKeys: PropTypes.array,
changeOpenKeys: PropTypes.func,
location: PropTypes.object,
}
export default Menus
+8 -5
View File
@@ -1,11 +1,13 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Icon, Switch } from 'antd'
import { config } from 'utils'
import styles from './Layout.less'
import { config } from '../../utils'
import Menus from './Menu'
function Sider ({ siderFold, darkTheme, location, changeTheme, navOpenKeys, changeOpenKeys }) {
const Sider = ({ siderFold, darkTheme, location, changeTheme, navOpenKeys, changeOpenKeys, menu }) => {
const menusProps = {
menu,
siderFold,
darkTheme,
location,
@@ -20,14 +22,15 @@ function Sider ({ siderFold, darkTheme, location, changeTheme, navOpenKeys, chan
</div>
<Menus {...menusProps} />
{!siderFold ? <div className={styles.switchtheme}>
<span><Icon type="bulb" />切换主题</span>
<Switch onChange={changeTheme} defaultChecked={darkTheme} checkedChildren="黑" unCheckedChildren="白" />
<span><Icon type="bulb" />Switch Theme</span>
<Switch onChange={changeTheme} defaultChecked={darkTheme} checkedChildren="Dark" unCheckedChildren="Light" />
</div> : ''}
</div>
)
}
Sider.propTypes = {
menu: PropTypes.array,
siderFold: PropTypes.bool,
darkTheme: PropTypes.bool,
location: PropTypes.object,
+1 -1
View File
@@ -1 +1 @@
@import "../../themes/vars.less";
@import "~themes/vars";
+20
View File
@@ -0,0 +1,20 @@
import React from 'react'
import PropTypes from 'prop-types'
import classNames from 'classnames'
import styles from './Loader.less'
const Loader = ({ spinning }) => {
return (<div className={classNames(styles.loader, { [styles.hidden]: !spinning })}>
<div className={styles.warpper}>
<div className={styles.inner} />
<div className={styles.text} >LOADING</div>
</div>
</div>)
}
Loader.propTypes = {
spinning: PropTypes.bool,
}
export default Loader
+64
View File
@@ -0,0 +1,64 @@
.loader {
display: block;
background-color: #fff;
width: 100%;
position: fixed;
top: 0;
bottom: 0;
left: 0;
z-index: 100000;
display: flex;
justify-content: center;
align-items: center;
opacity: 1;
text-align: center;
.warpper {
width: 100px;
height: 100px;
display: inline-flex;
flex-direction: column;
justify-content: space-around;
}
.inner {
width: 48px;
height: 48px;
margin: 0 auto;
text-indent: -12345px;
border-top: 1px solid rgba(0, 0, 0, 0.08);
border-right: 1px solid rgba(0, 0, 0, 0.08);
border-bottom: 1px solid rgba(0, 0, 0, 0.08);
border-left: 1px solid rgba(0, 0, 0, 0.7);
border-radius: 50%;
z-index: 100001;
:local {
animation: spinner 600ms infinite linear;
}
}
.text {
width: 100px;
height: 20px;
text-align: center;
font-size: 12px;
letter-spacing: 4px;
color: #000;
}
&.hidden {
z-index: -1;
opacity: 0;
transition: opacity 1s ease 0.5s, z-index 0.1s ease 1.5s;
}
}
@keyframes spinner {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
+6
View File
@@ -0,0 +1,6 @@
{
"name": "Loader",
"version": "0.0.0",
"private": true,
"main": "./Loader.js"
}
+6 -5
View File
@@ -1,7 +1,8 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import ReactDOM from 'react-dom'
import styles from './Search.less'
import { Input, Select, Button, Icon } from 'antd'
import styles from './Search.less'
class Search extends React.Component {
state = {
@@ -17,13 +18,13 @@ class Search extends React.Component {
}
if (this.props.onSearch) this.props.onSearch(data)
}
handleInputChange = e => {
handleInputChange = (e) => {
this.setState({
...this.state,
clearVisible: e.target.value !== '',
})
}
handeleSelectChange = value => {
handleSelectChange = (value) => {
this.setState({
...this.state,
selectValue: value,
@@ -41,7 +42,7 @@ class Search extends React.Component {
const { clearVisible } = this.state
return (
<Input.Group compact size={size} className={styles.search} style={style}>
{select && <Select ref="searchSelect" onChange={this.handeleSelectChange} size={size} {...selectProps}>
{select && <Select ref="searchSelect" onChange={this.handleSelectChange} size={size} {...selectProps}>
{selectOptions && selectOptions.map((item, key) => <Select.Option value={item.value} key={key}>{item.name || item.value}</Select.Option>)}
</Select>}
<Input ref="searchInput" size={size} onChange={this.handleInputChange} onPressEnter={this.handleSearch} defaultValue={keyword} />
+5 -1
View File
@@ -3,6 +3,8 @@ import DropOption from './DropOption'
import Iconfont from './Iconfont'
import Search from './Search'
import Editor from './Editor'
import FilterItem from './FilterItem'
import Loader from './Loader'
import * as Layout from './Layout/index.js'
import layer from './layer'
@@ -14,5 +16,7 @@ export {
Iconfont,
Search,
Editor,
FilterItem,
Loader,
layer,
}
}
+6 -3
View File
@@ -1,8 +1,10 @@
/* global document */
import { Modal, message } from 'antd'
import React from 'react'
import ReactDOM from 'react-dom'
import classnames from 'classnames'
import styles from './layer.less'
const { info, success, error, warning, confirm } = Modal
const layer = {
@@ -15,7 +17,7 @@ const layer = {
confirm,
}
layer.close = (index) => new Promise((resolve, reject) => {
layer.close = index => new Promise((resolve, reject) => {
const { prefixCls } = layer
let div = document.getElementById(`${prefixCls}-reference-${index}`)
if (index === undefined) {
@@ -41,7 +43,7 @@ layer.closeAll = () => {
let i = 0
while (i < references.length) {
layer.close()
i++
i += 1
}
}
@@ -50,7 +52,8 @@ layer.open = (config) => {
const { content, ...modalProps } = props
const { className, wrapClassName = '', verticalCenter = true } = modalProps
const { prefixCls } = layer
const index = layer.index++
layer.index += 1
const index = layer.index
let div = document.createElement('div')
div.id = `${prefixCls}-reference-${index}`
div.className = `${prefixCls}-reference`
-20
View File
@@ -1,20 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="/index.css" />
<!--[if lte IE 10]>
<script
src="https://as.alipayobjects.com/g/component/??console-polyfill/0.2.2/index.js,media-match/2.0.2/media.match.min.js"></script>
<![endif]-->
</head>
<body>
<div id="root"></div>
<script src="/index.js"></script>
</body>
</html>
+6 -4
View File
@@ -1,15 +1,17 @@
import './index.html'
import 'babel-polyfill'
import { message } from 'antd'
import dva from 'dva'
import createLoading from 'dva-loading'
import { browserHistory } from 'dva/router'
import 'babel-polyfill'
// 1. Initialize
const app = dva({
...createLoading(),
...createLoading({
effects: true,
}),
history: browserHistory,
onError (error) {
console.error('app onError -- ', error)
message.error(error.message)
},
})
+63
View File
@@ -0,0 +1,63 @@
const Mock = require('mockjs')
const config = require('../utils/config')
const queryArray = (array, key, keyAlias = 'key') => {
if (!(array instanceof Array)) {
return null
}
let data
for (const item of array) {
if (item[keyAlias] === key) {
data = item
break
}
}
if (data) {
return data
}
return null
}
const NOTFOUND = {
message: 'Not Found',
documentation_url: 'http://localhost:8000/request',
}
let postId = 0
const posts = Mock.mock({
'data|100': [
{
id () {
postId += 1
return postId + 10000
},
'status|1-2': 1,
title: '@title',
author: '@last',
categories: '@word',
tags: '@word',
'views|10-200': 1,
'comments|10-200': 1,
visibility: () => {
return Mock.mock('@pick(["Public",'
+ '"Password protected", '
+ '"Private"])')
},
date: '@dateTime',
image () {
return Mock.Random.image('100x100', Mock.Random.color(), '#757575', 'png', this.author.substr(0, 1))
},
},
],
}).data
module.exports = {
queryArray,
NOTFOUND,
Mock,
posts,
config,
}
+2
View File
@@ -1,6 +1,8 @@
import { color } from '../utils/theme'
const Mock = require('mockjs')
const config = require('../utils/config')
const { apiPrefix } = config
const Dashboard = Mock.mock({
+164
View File
@@ -0,0 +1,164 @@
const { config } = require('./common')
const { apiPrefix } = config
let database = [
{
id: '1',
icon: 'laptop',
name: 'Dashboard',
route: '/dashboard',
},
{
id: '2',
bpid: '1',
name: 'Users',
icon: 'user',
route: '/user',
},
{
id: '7',
bpid: '1',
name: 'Posts',
icon: 'shopping-cart',
route: '/post',
},
{
id: '21',
mpid: '-1',
bpid: '2',
name: 'User Detail',
route: '/user/:id',
},
{
id: '3',
bpid: '1',
name: 'Request',
icon: 'api',
route: '/request',
},
{
id: '4',
bpid: '1',
name: 'UI Element',
icon: 'camera-o',
},
{
id: '41',
bpid: '4',
mpid: '4',
name: 'IconFont',
icon: 'heart-o',
route: '/UIElement/iconfont',
},
{
id: '42',
bpid: '4',
mpid: '4',
name: 'DataTable',
icon: 'database',
route: '/UIElement/dataTable',
},
{
id: '43',
bpid: '4',
mpid: '4',
name: 'DropOption',
icon: 'bars',
route: '/UIElement/dropOption',
},
{
id: '44',
bpid: '4',
mpid: '4',
name: 'Search',
icon: 'search',
route: '/UIElement/search',
},
{
id: '45',
bpid: '4',
mpid: '4',
name: 'Editor',
icon: 'edit',
route: '/UIElement/editor',
},
{
id: '46',
bpid: '4',
mpid: '4',
name: 'layer (Function)',
icon: 'credit-card',
route: '/UIElement/layer',
},
{
id: '5',
bpid: '1',
name: 'Recharts',
icon: 'code-o',
},
{
id: '51',
bpid: '5',
mpid: '5',
name: 'LineChart',
icon: 'line-chart',
route: '/chart/lineChart',
},
{
id: '52',
bpid: '5',
mpid: '5',
name: 'BarChart',
icon: 'bar-chart',
route: '/chart/barChart',
},
{
id: '53',
bpid: '5',
mpid: '5',
name: 'AreaChart',
icon: 'area-chart',
route: '/chart/areaChart',
},
{
id: '6',
bpid: '1',
name: 'Test Navigation',
icon: 'setting',
},
{
id: '61',
bpid: '6',
mpid: '6',
name: 'Test Navigation1',
route: '/navigation/navigation1',
},
{
id: '62',
bpid: '6',
mpid: '6',
name: 'Test Navigation2',
route: '/navigation/navigation2',
},
{
id: '621',
bpid: '62',
mpid: '62',
name: 'Test Navigation21',
route: '/navigation/navigation2/navigation1',
},
{
id: '622',
bpid: '62',
mpid: '62',
name: 'Test Navigation22',
route: '/navigation/navigation2/navigation2',
},
]
module.exports = {
[`GET ${apiPrefix}/menus`] (req, res) {
res.status(200).json(database)
},
}
+31
View File
@@ -0,0 +1,31 @@
const { config, posts } = require('./common')
const { apiPrefix } = config
let database = posts
module.exports = {
[`GET ${apiPrefix}/posts`] (req, res) {
const { query } = req
let { pageSize, page, ...other } = query
pageSize = pageSize || 10
page = page || 1
let newData = database
for (let key in other) {
if ({}.hasOwnProperty.call(other, key)) {
newData = newData.filter((item) => {
if ({}.hasOwnProperty.call(item, key)) {
return String(item[key]).trim().indexOf(decodeURI(other[key]).trim()) > -1
}
return true
})
}
}
res.status(200).json({
data: newData.slice((page - 1) * pageSize, page * pageSize),
total: newData.length,
})
},
}
+234
View File
@@ -0,0 +1,234 @@
const qs = require('qs')
const Mock = require('mockjs')
const config = require('../utils/config')
const { apiPrefix } = config
let usersListData = Mock.mock({
'data|80-100': [
{
id: '@id',
name: '@name',
nickName: '@last',
phone: /^1[34578]\d{9}$/,
'age|11-99': 1,
address: '@county(true)',
isMale: '@boolean',
email: '@email',
createTime: '@datetime',
avatar () {
return Mock.Random.image('100x100', Mock.Random.color(), '#757575', 'png', this.nickName.substr(0, 1))
},
},
],
})
let database = usersListData.data
const EnumRoleType = {
ADMIN: 'admin',
DEFAULT: 'guest',
DEVELOPER: 'developer',
}
const userPermission = {
DEFAULT: {
visit: ['1', '2', '21', '7', '5', '51', '52', '53'],
role: EnumRoleType.DEFAULT,
},
ADMIN: {
role: EnumRoleType.ADMIN,
},
DEVELOPER: {
role: EnumRoleType.DEVELOPER,
},
}
const adminUsers = [
{
id: 0,
username: 'admin',
password: 'admin',
permissions: userPermission.ADMIN,
}, {
id: 1,
username: 'guest',
password: 'guest',
permissions: userPermission.DEFAULT,
}, {
id: 2,
username: '吴彦祖',
password: '123456',
permissions: userPermission.DEVELOPER,
},
]
const queryArray = (array, key, keyAlias = 'key') => {
if (!(array instanceof Array)) {
return null
}
let data
for (let item of array) {
if (item[keyAlias] === key) {
data = item
break
}
}
if (data) {
return data
}
return null
}
const NOTFOUND = {
message: 'Not Found',
documentation_url: 'http://localhost:8000/request',
}
module.exports = {
[`POST ${apiPrefix}/user/login`] (req, res) {
const { username, password } = req.body
const user = adminUsers.filter(item => item.username === username)
if (user.length > 0 && user[0].password === password) {
const now = new Date()
now.setDate(now.getDate() + 1)
res.cookie('token', JSON.stringify({ id: user[0].id, deadline: now.getTime() }), {
maxAge: 900000,
httpOnly: true,
})
res.json({ success: true, message: 'Ok' })
} else {
res.status(400).end()
}
},
[`GET ${apiPrefix}/user/logout`] (req, res) {
res.clearCookie('token')
res.status(200).end()
},
[`GET ${apiPrefix}/user`] (req, res) {
const cookie = req.headers.cookie || ''
const cookies = qs.parse(cookie.replace(/\s/g, ''), { delimiter: ';' })
const response = {}
const user = {}
if (!cookies.token) {
res.status(200).send({ message: 'Not Login' })
return
}
const token = JSON.parse(cookies.token)
if (token) {
response.success = token.deadline > new Date().getTime()
}
if (response.success) {
const userItem = adminUsers.filter(_ => _.id === token.id)
if (userItem.length > 0) {
user.permissions = userItem[0].permissions
user.username = userItem[0].username
user.id = userItem[0].id
}
}
response.user = user
res.json(response)
},
[`GET ${apiPrefix}/users`] (req, res) {
const { query } = req
let { pageSize, page, ...other } = query
pageSize = pageSize || 10
page = page || 1
let newData = database
for (let key in other) {
if ({}.hasOwnProperty.call(other, key)) {
newData = newData.filter((item) => {
if ({}.hasOwnProperty.call(item, key)) {
if (key === 'address') {
return other[key].every(iitem => item[key].indexOf(iitem) > -1)
} else if (key === 'createTime') {
const start = new Date(other[key][0]).getTime()
const end = new Date(other[key][1]).getTime()
const now = new Date(item[key]).getTime()
if (start && end) {
return now >= start && now <= end
}
return true
}
return String(item[key]).trim().indexOf(decodeURI(other[key]).trim()) > -1
}
return true
})
}
}
res.status(200).json({
data: newData.slice((page - 1) * pageSize, page * pageSize),
total: newData.length,
})
},
[`DELETE ${apiPrefix}/users`] (req, res) {
const { ids } = req.body
database = database.filter(item => !ids.some(_ => _ === item.id))
res.status(204).end()
},
[`POST ${apiPrefix}/user`] (req, res) {
const newData = req.body
newData.createTime = Mock.mock('@now')
newData.avatar = newData.avatar || Mock.Random.image('100x100', Mock.Random.color(), '#757575', 'png', newData.nickName.substr(0, 1))
newData.id = Mock.mock('@id')
database.unshift(newData)
res.status(200).end()
},
[`GET ${apiPrefix}/user/:id`] (req, res) {
const { id } = req.params
const data = queryArray(database, id, 'id')
if (data) {
res.status(200).json(data)
} else {
res.status(404).json(NOTFOUND)
}
},
[`DELETE ${apiPrefix}/user/:id`] (req, res) {
const { id } = req.params
const data = queryArray(database, id, 'id')
if (data) {
database = database.filter(item => item.id !== id)
res.status(204).end()
} else {
res.status(404).json(NOTFOUND)
}
},
[`PATCH ${apiPrefix}/user/:id`] (req, res) {
const { id } = req.params
const editItem = req.body
let isExist = false
database = database.map((item) => {
if (item.id === id) {
isExist = true
return Object.assign({}, item, editItem)
}
return item
})
if (isExist) {
res.status(201).end()
} else {
res.status(404).json(NOTFOUND)
}
},
}
-186
View File
@@ -1,186 +0,0 @@
const qs = require('qs')
const Mock = require('mockjs')
const config = require('../utils/config')
const { apiPrefix } = config
let usersListData = Mock.mock({
'data|100': [
{
'id|+1': 1,
name: '@cname',
nickName: '@last',
phone: /^1[34578]\d{9}$/,
'age|11-99': 1,
address: '@county(true)',
isMale: '@boolean',
email: '@email',
createTime: '@datetime',
avatar () {
return Mock.Random.image('100x100', Mock.Random.color(), '#757575', 'png', this.nickName.substr(0, 1))
},
},
],
page: {
total: 100,
current: 1,
},
})
const userPermission = {
DEFAULT: [
'dashboard', 'chart',
],
ADMIN: [
'dashboard', 'users', 'UIElement', 'UIElementIconfont', 'chart',
],
DEVELOPER: ['dashboard', 'users', 'UIElement', 'UIElementIconfont', 'chart'],
}
const adminUsers = [
{
id: 0,
username: 'admin',
password: 'admin',
permissions: userPermission.ADMIN,
}, {
id: 1,
username: 'guest',
password: 'guest',
permissions: userPermission.DEFAULT,
}, {
id: 2,
username: '吴彦祖',
password: '123456',
permissions: userPermission.DEVELOPER,
},
]
module.exports = {
[`POST ${apiPrefix}/user/login`] (req, res) {
const { username, password } = req.body
const user = adminUsers.filter((item) => item.username === username)
if (user && user[0].password === password) {
const now = new Date()
now.setDate(now.getDate() + 1)
res.cookie('token', JSON.stringify({ id: user[0].id, deadline: now.getTime() }), {
maxAge: 900000,
httpOnly: true,
})
res.json({ success: true, message: 'Ok' })
} else {
res.status(400).send({ message: 'Bad Request' })
}
},
[`GET ${apiPrefix}/user/logout`] (req, res) {
res.clearCookie('token')
res.status(200).send({ message: 'OK' })
},
[`GET ${apiPrefix}/userInfo`] (req, res) {
const cookies = qs.parse(req.headers.cookie, { delimiter: ';' })
const response = {}
const user = {}
if (!cookies.token) {
res.status(200).send({ message: 'Not Login' })
return
}
const token = JSON.parse(cookies.token)
if (token) {
response.success = token.deadline > new Date().getTime()
}
if (response.success) {
const userItem = adminUsers.filter(_ => _.id === token.id)
if (userItem.length > 0) {
user.permissions = userItem[0].permissions
user.username = userItem[0].username
user.id = userItem[0].id
}
}
response.user = user
res.json(response)
},
[`GET ${apiPrefix}/users`] (req, res) {
const page = req.query
const pageSize = page.pageSize || 10
const currentPage = page.page || 1
let data
let newPage
let newData = usersListData.data.concat()
if (page.field) {
const d = newData.filter((item) => {
return item[page.field].indexOf(decodeURI(page.keyword)) > -1
})
data = d.slice((currentPage - 1) * pageSize, currentPage * pageSize)
newPage = {
current: currentPage * 1,
total: d.length,
}
} else {
data = usersListData.data.slice((currentPage - 1) * pageSize, currentPage * pageSize)
usersListData.page.current = currentPage * 1
newPage = usersListData.page
}
res.json({
success: true,
data,
page: {
...newPage,
pageSize: Number(pageSize),
},
})
},
[`POST ${apiPrefix}/users`] (req, res) {
const newData = req.body
newData.createTime = Mock.mock('@now')
newData.avatar = Mock.Random.image('100x100', Mock.Random.color(), '#757575', 'png', newData.nickName.substr(0, 1))
newData.id = usersListData.data.length + 1
usersListData.data.unshift(newData)
usersListData.page.total = usersListData.data.length
usersListData.page.current = 1
res.json({ success: true, data: usersListData.data, page: usersListData.page })
},
[`DELETE ${apiPrefix}/users`] (req, res) {
const deleteItem = req.body
usersListData.data = usersListData.data.filter((item) => {
if (item.id === deleteItem.id) {
return false
}
return true
})
usersListData.page.total = usersListData.data.length
res.json({ success: true, data: usersListData.data, page: usersListData.page })
},
[`PUT ${apiPrefix}/users`] (req, res) {
const editItem = req.body
editItem.createTime = Mock.mock('@now')
editItem.avatar = Mock.Random.image('100x100', Mock.Random.color(), '#757575', 'png', editItem.nickName.substr(0, 1))
usersListData.data = usersListData.data.map((item) => {
if (item.id === editItem.id) {
return editItem
}
return item
})
res.json({ success: true, data: usersListData.data, page: usersListData.page })
},
}
+109 -79
View File
@@ -1,139 +1,169 @@
import { getUserInfo, logout } from '../services/app'
/* global window */
/* global document */
/* global location */
import { routerRedux } from 'dva/router'
import { parse } from 'qs'
import { config } from '../utils'
import config from 'config'
import { EnumRoleType } from 'enums'
import { query, logout } from 'services/app'
import * as menusService from 'services/menus'
const { prefix } = config
export default {
namespace: 'app',
state: {
user: {},
loginButtonLoading: false,
permissions: {
visit: [],
},
menu: [
{
id: 1,
icon: 'laptop',
name: 'Dashboard',
router: '/dashboard',
},
],
menuPopoverVisible: false,
siderFold: localStorage.getItem(`${prefix}siderFold`) === 'true',
darkTheme: localStorage.getItem(`${prefix}darkTheme`) === 'true',
siderFold: window.localStorage.getItem(`${prefix}siderFold`) === 'true',
darkTheme: window.localStorage.getItem(`${prefix}darkTheme`) === 'true',
isNavbar: document.body.clientWidth < 769,
navOpenKeys: [],
navOpenKeys: JSON.parse(window.localStorage.getItem(`${prefix}navOpenKeys`)) || [],
locationPathname: '',
locationQuery: {},
},
subscriptions: {
setupHistory ({ dispatch, history }) {
history.listen((location) => {
dispatch({
type: 'updateState',
payload: {
locationPathname: location.pathname,
locationQuery: location.query,
},
})
})
},
setup ({ dispatch }) {
dispatch({ type: 'queryUser' })
dispatch({ type: 'query' })
let tid
window.onresize = () => {
dispatch({ type: 'changeNavbar' })
clearTimeout(tid)
tid = setTimeout(() => {
dispatch({ type: 'changeNavbar' })
}, 300)
}
},
},
effects: {
*queryUser ({
* query ({
payload,
}, { call, put }) {
const data = yield call(getUserInfo, parse(payload))
if (data.success && data.user) {
}, { call, put, select }) {
const { success, user } = yield call(query, payload)
const { locationPathname } = yield select(_ => _.app)
if (success && user) {
const { list } = yield call(menusService.query)
const { permissions } = user
let menu = list
if (permissions.role === EnumRoleType.ADMIN || permissions.role === EnumRoleType.DEVELOPER) {
permissions.visit = list.map(item => item.id)
} else {
menu = list.filter((item) => {
const cases = [
permissions.visit.includes(item.id),
item.mpid ? permissions.visit.includes(item.mpid) || item.mpid === '-1' : true,
item.bpid ? permissions.visit.includes(item.bpid) : true,
]
return cases.every(_ => _)
})
}
yield put({
type: 'queryUserSuccess',
payload: data.user,
type: 'updateState',
payload: {
user,
permissions,
menu,
},
})
if (location.pathname === '/login') {
yield put(routerRedux.push('/dashboard'))
}
} else {
if (location.pathname !== '/login') {
let from = location.pathname
if (location.pathname === '/dashboard') {
from = '/dashboard'
}
window.location = `${location.origin}/login?from=${from}`
yield put(routerRedux.push({
pathname: '/dashboard',
}))
}
} else if (config.openPages && config.openPages.indexOf(locationPathname) < 0) {
yield put(routerRedux.push({
pathname: 'login',
query: {
from: locationPathname,
},
}))
}
},
*logout ({
* logout ({
payload,
}, { call, put }) {
const data = yield call(logout, parse(payload))
if (data.success) {
yield put({ type: 'queryUser' })
yield put({ type: 'query' })
} else {
throw (data)
}
},
*switchSider ({
payload,
}, { put }) {
yield put({
type: 'handleSwitchSider',
})
},
*changeTheme ({
payload,
}, { put }) {
yield put({
type: 'handleChangeTheme',
})
},
*changeNavbar ({
payload,
}, { put }) {
if (document.body.clientWidth < 769) {
yield put({ type: 'showNavbar' })
} else {
yield put({ type: 'hideNavbar' })
* changeNavbar (action, { put, select }) {
const { app } = yield (select(_ => _))
const isNavbar = document.body.clientWidth < 769
if (isNavbar !== app.isNavbar) {
yield put({ type: 'handleNavbar', payload: isNavbar })
}
},
*switchMenuPopver ({
payload,
}, { put }) {
yield put({
type: 'handleSwitchMenuPopver',
})
},
},
reducers: {
queryUserSuccess (state, { payload: user }) {
updateState (state, { payload }) {
return {
...state,
user,
...payload,
}
},
showLoginButtonLoading (state) {
return {
...state,
loginButtonLoading: true,
}
},
handleSwitchSider (state) {
localStorage.setItem(`${prefix}siderFold`, !state.siderFold)
switchSider (state) {
window.localStorage.setItem(`${prefix}siderFold`, !state.siderFold)
return {
...state,
siderFold: !state.siderFold,
}
},
handleChangeTheme (state) {
localStorage.setItem(`${prefix}darkTheme`, !state.darkTheme)
switchTheme (state) {
window.localStorage.setItem(`${prefix}darkTheme`, !state.darkTheme)
return {
...state,
darkTheme: !state.darkTheme,
}
},
showNavbar (state) {
return {
...state,
isNavbar: true,
}
},
hideNavbar (state) {
return {
...state,
isNavbar: false,
}
},
handleSwitchMenuPopver (state) {
switchMenuPopver (state) {
return {
...state,
menuPopoverVisible: !state.menuPopoverVisible,
}
},
handleNavbar (state, { payload }) {
return {
...state,
isNavbar: payload,
}
},
handleNavOpenKeys (state, { payload: navOpenKeys }) {
console.log(navOpenKeys)
return {
...state,
...navOpenKeys,
+47
View File
@@ -0,0 +1,47 @@
import modelExtend from 'dva-model-extend'
const model = {
reducers: {
updateState (state, { payload }) {
return {
...state,
...payload,
}
},
},
}
const pageModel = modelExtend(model, {
state: {
list: [],
pagination: {
showSizeChanger: true,
showQuickJumper: true,
showTotal: total => `Total ${total} Items`,
current: 1,
total: 0,
},
},
reducers: {
querySuccess (state, { payload }) {
const { list, pagination } = payload
return {
...state,
list,
pagination: {
...state.pagination,
...pagination,
},
}
},
},
})
module.exports = {
model,
pageModel,
}
+40 -196
View File
@@ -1,177 +1,17 @@
import { myCity, queryWeather, query } from '../services/dashboard'
import { parse } from 'qs'
import modelExtend from 'dva-model-extend'
import { query } from 'services/dashboard'
import { model } from 'models/common'
import * as weatherService from 'services/weather'
// zuimei 摘自 http://www.zuimeitianqi.com/res/js/index.js
let zuimei = {
parseActualData (actual) {
let weather = {
icon: `http://www.zuimeitianqi.com/res/icon/${zuimei.getIconName(actual.wea, 'big')}`,
name: zuimei.getWeatherName(actual.wea),
temperature: actual.tmp,
dateTime: new Date(actual.PTm).format('MM-dd hh:mm'),
}
return weather
},
getIconName (wea, flg) {
let myDate = new Date()
let hour = myDate.getHours()
let num = 0
if (wea.indexOf('/') !== -1) {
let weas = wea.split('/')
if (hour < 12) {
num = zuimei.replaceIcon(weas[0])
if (num < 6) {
num = `${num}_${flg}_night.png`
} else {
num = `${num}_${flg}.png`
}
} else if (hour >= 12) {
num = zuimei.replaceIcon(weas[1])
if (hour >= 18) {
num = `${num}_${flg}_night.png`
} else {
num = `${num}_${flg}.png`
}
}
} else {
if ((hour >= 18 && hour <= 23) || (hour >= 0 && hour <= 6)) {
num = `${num}_${flg}_night.png`
} else {
num = `${num}_${flg}.png`
}
}
return num
},
replaceIcon (num) {
if (num === 21) {
num = 7
} else if (num === 22) {
num = 8
} else if (num === 10 || num === 11 || num === 12 || num === 23 || num === 24 || num === 25) {
num = 9
} else if (num === 13 || num === 15 || num === 26 || num === 27 || num === 34) {
num = 14
} else if (num === 17 || num === 28) {
num = 16
} else if (num === 35) {
num = 18
} else if (num === 31 || num === 32 || num === 33) {
num = 20
} else if (num === 30) {
num = 29
}
return num
},
getWeatherName (wea) {
let name = ''
if (wea.indexOf('/') !== -1) {
let weas = wea.split('/')
name = `${zuimei.getWeatherByCode(weas[0])}转${zuimei.getWeatherByCode(weas[1])}`
} else {
name = zuimei.getWeatherByCode(wea)
}
return name
},
getWeatherByCode (num) {
let wea = ''
if (num === 0) {
wea = '晴'
} else if (num === 1) {
wea = '多云'
} else if (num === 2) {
wea = '阴'
} else if (num === 3) {
wea = '阵雨'
} else if (num === 4) {
wea = '雷阵雨'
} else if (num === 5) {
wea = '雷阵雨并伴有冰雹'
} else if (num === 6) {
wea = '雨夹雪'
} else if (num === 7) {
wea = '小雨'
} else if (num === 8) {
wea = '中雨'
} else if (num === 9) {
wea = '大雨'
} else if (num === 10) {
wea = '暴雨'
} else if (num === 11) {
wea = '大暴雨'
} else if (num === 12) {
wea = '特大暴雨'
} else if (num === 13) {
wea = '阵雪'
} else if (num === 14) {
wea = '小雪'
} else if (num === 15) {
wea = '中雪'
} else if (num === 16) {
wea = '大雪'
} else if (num === 17) {
wea = '暴雪'
} else if (num === 18) {
wea = '雾'
} else if (num === 19) {
wea = '冻雨'
} else if (num === 20) {
wea = '沙尘暴'
} else if (num === 21) {
wea = '小雨-中雨'
} else if (num === 22) {
wea = '中雨-大雨'
} else if (num === 23) {
wea = '大雨-暴雨'
} else if (num === 24) {
wea = '暴雨-大暴雨'
} else if (num === 25) {
wea = '大暴雨-特大暴雨'
} else if (num === 26) {
wea = '小雪-中雪'
} else if (num === 27) {
wea = '中雪-大雪'
} else if (num === 28) {
wea = '大雪-暴雪'
} else if (num === 29) {
wea = '浮沉'
} else if (num === 30) {
wea = '扬沙'
} else if (num === 31) {
wea = '强沙尘暴'
} else if (num === 32) {
wea = '飑'
} else if (num === 33) {
wea = '龙卷风'
} else if (num === 34) {
wea = '若高吹雪'
} else if (num === 35) {
wea = '轻雾'
} else if (num === 53) {
wea = '霾'
} else if (num === 99) {
wea = '未知'
}
return wea
},
}
export default {
export default modelExtend(model, {
namespace: 'dashboard',
state: {
weather: {
city: '成都',
temperature: '5',
city: '深圳',
temperature: '30',
name: '晴',
icon: 'http://www.zuimeitianqi.com/res/icon/0_big.png',
dateTime: new Date().format('MM-dd hh:mm'),
icon: '//s5.sencdn.com/web/icons/3d_50/2.png',
},
sales: [],
quote: {
@@ -188,42 +28,46 @@ export default {
},
},
subscriptions: {
setup ({ dispatch }) {
dispatch({ type: 'query' })
dispatch({ type: 'queryWeather' })
setup ({ dispatch, history }) {
history.listen(({ pathname }) => {
if (pathname === '/dashboard' || pathname === '/') {
dispatch({ type: 'query' })
dispatch({ type: 'queryWeather' })
}
})
},
},
effects: {
*query ({
* query ({
payload,
}, { call, put }) {
const data = yield call(query, parse(payload))
yield put({ type: 'queryWeather', payload: { ...data } })
yield put({
type: 'updateState',
payload: data,
})
},
*queryWeather ({
payload,
* queryWeather ({
payload = {},
}, { call, put }) {
const myCityResult = yield call(myCity, { flg: 0 })
const result = yield call(queryWeather, { cityCode: myCityResult.selectCityCode })
const weather = zuimei.parseActualData(result.data.actual)
weather.city = myCityResult.selectCityName
yield put({ type: 'queryWeatherSuccess', payload: {
weather,
} })
},
},
reducers: {
queryWeatherSuccess (state, action) {
return {
...state,
...action.payload,
}
},
queryWeather (state, action) {
return {
...state,
...action.payload,
payload.location = 'shenzhen'
const result = yield call(weatherService.query, payload)
const { success } = result
if (success) {
const data = result.results[0]
const weather = {
city: data.location.name,
temperature: data.now.temperature,
name: data.now.text,
icon: `//s5.sencdn.com/web/icons/3d_50/${data.now.code}.png`,
}
yield put({
type: 'updateState',
payload: {
weather,
},
})
}
},
},
}
})
+10 -26
View File
@@ -1,24 +1,21 @@
import { login } from '../services/login'
import { routerRedux } from 'dva/router'
import { queryURL } from '../utils'
import { login } from 'services/login'
export default {
namespace: 'login',
state: {
loginLoading: false,
},
state: {},
effects: {
*login ({
* login ({
payload,
}, { put, call }) {
yield put({ type: 'showLoginLoading' })
}, { put, call, select }) {
const data = yield call(login, payload)
yield put({ type: 'hideLoginLoading' })
const { locationQuery } = yield select(_ => _.app)
if (data.success) {
const from = queryURL('from')
yield put({ type: 'app/queryUser' })
if (from) {
const { from } = locationQuery
yield put({ type: 'app/query' })
if (from && from !== '/login') {
yield put(routerRedux.push(from))
} else {
yield put(routerRedux.push('/dashboard'))
@@ -28,18 +25,5 @@ export default {
}
},
},
reducers: {
showLoginLoading (state) {
return {
...state,
loginLoading: true,
}
},
hideLoginLoading (state) {
return {
...state,
loginLoading: false,
}
},
},
}
+45
View File
@@ -0,0 +1,45 @@
import modelExtend from 'dva-model-extend'
import { query } from 'services/posts'
import { pageModel } from 'models/common'
export default modelExtend(pageModel, {
namespace: 'post',
subscriptions: {
setup ({ dispatch, history }) {
history.listen((location) => {
if (location.pathname === '/post') {
dispatch({ type: 'query',
payload: {
status: 2,
...location.query,
} })
}
})
},
},
effects: {
* query ({
payload,
}, { call, put }) {
const data = yield call(query, payload)
if (data.success) {
yield put({
type: 'querySuccess',
payload: {
list: data.data,
pagination: {
current: Number(payload.page) || 1,
pageSize: Number(payload.pageSize) || 10,
total: data.total,
},
},
})
} else {
throw data
}
},
},
})
+115
View File
@@ -0,0 +1,115 @@
/* global window */
import modelExtend from 'dva-model-extend'
import { config } from 'utils'
import { create, remove, update } from 'services/user'
import * as usersService from 'services/users'
import { pageModel } from './common'
const { query } = usersService
const { prefix } = config
export default modelExtend(pageModel, {
namespace: 'user',
state: {
currentItem: {},
modalVisible: false,
modalType: 'create',
selectedRowKeys: [],
isMotion: window.localStorage.getItem(`${prefix}userIsMotion`) === 'true',
},
subscriptions: {
setup ({ dispatch, history }) {
history.listen((location) => {
if (location.pathname === '/user') {
dispatch({
type: 'query',
payload: location.query,
})
}
})
},
},
effects: {
* query ({ payload = {} }, { call, put }) {
const data = yield call(query, payload)
if (data) {
yield put({
type: 'querySuccess',
payload: {
list: data.data,
pagination: {
current: Number(payload.page) || 1,
pageSize: Number(payload.pageSize) || 10,
total: data.total,
},
},
})
}
},
* delete ({ payload }, { call, put, select }) {
const data = yield call(remove, { id: payload })
const { selectedRowKeys } = yield select(_ => _.user)
if (data.success) {
yield put({ type: 'updateState', payload: { selectedRowKeys: selectedRowKeys.filter(_ => _ !== payload) } })
yield put({ type: 'query' })
} else {
throw data
}
},
* multiDelete ({ payload }, { call, put }) {
const data = yield call(usersService.remove, payload)
if (data.success) {
yield put({ type: 'updateState', payload: { selectedRowKeys: [] } })
yield put({ type: 'query' })
} else {
throw data
}
},
* create ({ payload }, { call, put }) {
const data = yield call(create, payload)
if (data.success) {
yield put({ type: 'hideModal' })
yield put({ type: 'query' })
} else {
throw data
}
},
* update ({ payload }, { select, call, put }) {
const id = yield select(({ user }) => user.currentItem.id)
const newUser = { ...payload, id }
const data = yield call(update, newUser)
if (data.success) {
yield put({ type: 'hideModal' })
yield put({ type: 'query' })
} else {
throw data
}
},
},
reducers: {
showModal (state, { payload }) {
return { ...state, ...payload, modalVisible: true }
},
hideModal (state) {
return { ...state, modalVisible: false }
},
switchIsMotion (state) {
window.localStorage.setItem(`${prefix}userIsMotion`, !state.isMotion)
return { ...state, isMotion: !state.isMotion }
},
},
})
+51
View File
@@ -0,0 +1,51 @@
import pathToRegexp from 'path-to-regexp'
import { query } from '../../services/user'
export default {
namespace: 'userDetail',
state: {
data: {},
},
subscriptions: {
setup ({ dispatch, history }) {
history.listen(({ pathname }) => {
const match = pathToRegexp('/user/:id').exec(pathname)
if (match) {
dispatch({ type: 'query', payload: { id: match[1] } })
}
})
},
},
effects: {
* query ({
payload,
}, { call, put }) {
const data = yield call(query, payload)
const { success, message, status, ...other } = data
if (success) {
yield put({
type: 'querySuccess',
payload: {
data: other,
},
})
} else {
throw data
}
},
},
reducers: {
querySuccess (state, { payload }) {
const { data } = payload
return {
...state,
data,
}
},
},
}
-129
View File
@@ -1,129 +0,0 @@
import { create, remove, update, query } from '../services/users'
import { parse } from 'qs'
export default {
namespace: 'users',
state: {
list: [],
currentItem: {},
modalVisible: false,
modalType: 'create',
isMotion: localStorage.getItem('antdAdminUserIsMotion') === 'true',
pagination: {
showSizeChanger: true,
showQuickJumper: true,
showTotal: total => `共 ${total} 条`,
current: 1,
total: null,
},
},
subscriptions: {
setup ({ dispatch, history }) {
history.listen(location => {
if (location.pathname === '/users') {
dispatch({
type: 'query',
payload: location.query,
})
}
})
},
},
effects: {
*query ({ payload }, { call, put }) {
const data = yield call(query, parse(payload))
if (data) {
yield put({
type: 'querySuccess',
payload: {
list: data.data,
pagination: data.page,
},
})
}
},
*'delete' ({ payload }, { call, put }) {
const data = yield call(remove, { id: payload })
if (data && data.success) {
yield put({
type: 'querySuccess',
payload: {
list: data.data,
pagination: {
total: data.page.total,
current: data.page.current,
},
},
})
}
},
*create ({ payload }, { call, put }) {
yield put({ type: 'hideModal' })
const data = yield call(create, payload)
if (data && data.success) {
yield put({
type: 'querySuccess',
payload: {
list: data.data,
pagination: {
total: data.page.total,
current: data.page.current,
},
},
})
}
},
*update ({ payload }, { select, call, put }) {
yield put({ type: 'hideModal' })
const id = yield select(({ users }) => users.currentItem.id)
const newUser = { ...payload, id }
const data = yield call(update, newUser)
if (data && data.success) {
yield put({
type: 'querySuccess',
payload: {
list: data.data,
pagination: {
total: data.page.total,
current: data.page.current,
},
},
})
}
},
*switchIsMotion ({
payload,
}, { put }) {
yield put({
type: 'handleSwitchIsMotion',
})
},
},
reducers: {
querySuccess (state, action) {
const { list, pagination } = action.payload
return { ...state,
list,
pagination: {
...state.pagination,
...pagination,
} }
},
showModal (state, action) {
return { ...state, ...action.payload, modalVisible: true }
},
hideModal (state) {
return { ...state, modalVisible: false }
},
handleSwitchIsMotion (state) {
localStorage.setItem('antdAdminUserIsMotion', !state.isMotion)
return { ...state, isMotion: !state.isMotion }
},
},
}
Binary file not shown.
+927
View File
@@ -0,0 +1,927 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
Created by FontForge 20120731 at Thu May 11 13:24:17 2017
By admin
</metadata>
<defs>
<font id="anticon" horiz-adv-x="1024" >
<font-face
font-family="anticon"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
panose-1="2 0 6 3 0 0 0 0 0 0"
ascent="896"
descent="-128"
x-height="792"
bbox="-0.142858 -128.087 1024.37 896.923"
underline-thickness="0"
underline-position="0"
unicode-range="U+0078-E951"
/>
<missing-glyph
/>
<glyph glyph-name=".notdef"
/>
<glyph glyph-name=".notdef"
/>
<glyph glyph-name=".null" horiz-adv-x="0"
/>
<glyph glyph-name="nonmarkingreturn" horiz-adv-x="341"
/>
<glyph glyph-name="x" unicode="x" horiz-adv-x="1001"
d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
<glyph glyph-name="stepforward" unicode="&#xe600;"
d="M327 820l431 -356v300q0 15 10.5 25.5t25.5 10.5v0q15 0 25.5 -10.5t10.5 -25.5v-760q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v301l-431 -357q-21 -18 -46 -7t-25 39v808q0 28 25 39t46 -7z" />
<glyph glyph-name="stepbackward" unicode="&#xe601;"
d="M759 820l-431 -356v300q0 15 -10.5 25.5t-25.5 10.5v0q-15 0 -25.5 -10.5t-10.5 -25.5v-760q0 -15 10.5 -25.5t25.5 -10.5v0q15 0 25.5 10.5t10.5 25.5v301l431 -357q21 -18 46 -7t25 39v808q0 28 -25 39t-46 -7z" />
<glyph glyph-name="forward" unicode="&#xe602;"
d="M575 790l436 -375q13 -12 13 -30t-13 -29l-436 -378q-18 -17 -40.5 -6.5t-22.5 36.5v377v375q0 26 22.5 36.5t40.5 -6.5zM63 790l436 -375q13 -12 13 -30t-13 -29l-436 -378q-18 -17 -40.5 -6.5t-22.5 36.5v752q0 26 22.5 36.5t40.5 -6.5z" />
<glyph glyph-name="banckward" unicode="&#xe603;" horiz-adv-x="1025"
d="M449 790l-436 -376q-13 -11 -13 -29t13 -30l436 -377q18 -17 40.5 -6.5t22.5 36.5v377v375q0 26 -22.5 36.5t-40.5 -6.5zM961 790l-436 -376q-13 -11 -13 -29t13 -30l436 -377q18 -17 40.5 -6.5t22.5 36.5v752q0 26 -22.5 36.5t-40.5 -6.5z" />
<glyph glyph-name="caretright" unicode="&#xe604;"
d="M393 820l489 -403q14 -13 14 -32t-14 -32l-489 -405q-21 -18 -46 -7t-25 39v808q0 28 25 39t46 -7z" />
<glyph glyph-name="caretleft" unicode="&#xe605;"
d="M631 820l-489 -403q-14 -13 -14 -32t14 -32l489 -405q21 -18 46 -7t25 39v808q0 28 -25 39t-46 -7z" />
<glyph glyph-name="caretdown" unicode="&#xe606;"
d="M76 504l403 -489q13 -15 32 -15t32 15l405 489q18 20 7 45t-39 25h-808q-28 0 -39 -25t7 -45z" />
<glyph glyph-name="caretup" unicode="&#xe607;"
d="M76 263l405 489q13 14 32 14t32 -14l403 -489q18 -20 7 -45.5t-39 -25.5h-808q-28 0 -39 25.5t7 45.5z" />
<glyph glyph-name="rightcircle" unicode="&#xe608;"
d="M512 895q-104 0 -199 -40.5t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5zM681 358l-235 -220q-11 -11 -26 -10.5t-25 11.5t-9.5 26t11.5 25l207 194l-207 195
q-11 10 -11.5 25t9.5 26t25 11.5t26 -9.5l235 -221q12 -11 12 -26.5t-12 -26.5z" />
<glyph glyph-name="leftcircle" unicode="&#xe609;"
d="M512 895q-104 0 -199 -40.5t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5zM629 139q-10 -11 -25 -11.5t-26 9.5l-235 221q-12 11 -12 26.5t11 26.5l236 220q11 11 26 10.5
t25 -11.5t9.5 -26t-11.5 -25l-207 -195l207 -194q11 -10 11.5 -25t-9.5 -26z" />
<glyph glyph-name="upcircle" unicode="&#xe60a;"
d="M512 895q-104 0 -199 -40.5t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5zM757 278.5q-11 -10.5 -25.5 -10t-24.5 11.5l-195 208l-195 -208q-10 -11 -25 -11.5t-25.5 10
t-11 25t9.5 25.5l221 236q10 11 26 11t26 -11l221 -236q10 -11 9.5 -25.5t-11.5 -25z" />
<glyph glyph-name="downcircle" unicode="&#xe60b;"
d="M512 895q-104 0 -199 -40.5t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5zM759 430l-221 -236q-10 -11 -26 -11t-26 11l-221 236q-10 11 -9.5 25.5t11 25t25.5 10t25 -11.5
l195 -208l195 208q10 11 24.5 11.5t25.5 -10t11.5 -25t-9.5 -25.5z" />
<glyph glyph-name="rightcircleo" unicode="&#xe60c;"
d="M511.5 823q89.5 0 171.5 -34q79 -34 140 -95t94 -139q35 -82 35 -171.5t-35 -171.5q-33 -78 -94 -139t-140 -95q-81 -34 -170.5 -34t-171.5 34q-79 34 -140 95t-94 139q-35 82 -35 171.5t35 171.5q33 78 94 139t140 95q81 34 170.5 34zM512 895q-104 0 -199 -40.5
t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5v0zM681 411l-235 220q-11 11 -26 10.5t-25 -11.5t-9.5 -26t11.5 -25l207 -195l-207 -194q-11 -10 -11.5 -25t9.5 -26t25 -11.5
t26 9.5l235 221q12 11 12 26.5t-12 26.5z" />
<glyph glyph-name="leftcircleo" unicode="&#xe60d;"
d="M511.5 823q89.5 0 171.5 -34q79 -34 140 -95t94 -139q35 -82 35 -171.5t-35 -171.5q-33 -78 -94 -139t-140 -95q-81 -34 -170.5 -34t-171.5 34q-79 34 -140 95t-94 139q-35 82 -35 171.5t35 171.5q33 78 94 139t140 95q81 34 170.5 34zM512 895q-104 0 -199 -40.5
t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5v0zM331 384.5q0 -15.5 12 -26.5l235 -221q11 -10 26 -9.5t25 11.5t9.5 26t-11.5 25l-207 194l207 195q11 10 11.5 25t-9.5 26
t-25 11.5t-26 -10.5l-236 -220q-11 -11 -11 -26.5z" />
<glyph glyph-name="upcircleo" unicode="&#xe60e;"
d="M511.5 823q89.5 0 171.5 -34q79 -34 140 -95t94 -139q35 -82 35 -171.5t-35 -171.5q-33 -78 -94 -139t-140 -95q-81 -34 -170.5 -34t-171.5 34q-79 34 -140 95t-94 139q-35 82 -35 171.5t35 171.5q33 78 94 139t140 95q81 34 170.5 34zM512 895q-104 0 -199 -40.5
t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5v0zM512 576q-16 0 -26 -11l-221 -236q-10 -11 -9.5 -25.5t11 -25t25.5 -10t25 11.5l195 208l195 -208q10 -11 24.5 -11.5t25.5 10
t11.5 25t-9.5 25.5l-221 236q-10 11 -26 11z" />
<glyph glyph-name="downcircleo" unicode="&#xe60f;"
d="M511.5 823q89.5 0 171.5 -34q79 -34 140 -95t94 -139q35 -82 35 -171.5t-35 -171.5q-33 -78 -94 -139t-140 -95q-81 -34 -170.5 -34t-171.5 34q-79 34 -140 95t-94 139q-35 82 -35 171.5t35 171.5q33 78 94 139t140 95q81 34 170.5 34zM512 895q-104 0 -199 -40.5
t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5v0zM512 183q-16 0 -26 11l-221 236q-10 11 -9.5 25.5t11 25t25.5 10t25 -11.5l195 -208l195 208q10 11 24.5 11.5t25.5 -10
t11.5 -25t-9.5 -25.5l-221 -236q-10 -11 -26 -11z" />
<glyph glyph-name="verticleleft" unicode="&#xe610;"
d="M273 78l382 307l-380 305q-14 11 -16 29t9.5 32t29.5 16t32 -9l358 -288v262q0 15 10.5 25.5t25.5 10.5h8q15 0 25.5 -10.5t10.5 -25.5v-696q0 -15 -10.5 -25.5t-25.5 -10.5h-8q-15 0 -25.5 10.5t-10.5 25.5v264l-360 -290q-12 -10 -27 -10q-21 0 -35 17q-11 14 -9 32
t16 29z" />
<glyph glyph-name="verticleright" unicode="&#xe611;"
d="M752 78l-382 307l380 305q14 11 16 29t-9.5 32t-29.5 16t-32 -9l-358 -288v262q0 15 -10.5 25.5t-25.5 10.5h-8q-15 0 -25.5 -10.5t-10.5 -25.5v-696q0 -15 10.5 -25.5t25.5 -10.5h8q15 0 25.5 10.5t10.5 25.5v264l360 -290q12 -10 27 -10q21 0 34 17q12 14 10 32t-16 29
z" />
<glyph glyph-name="rollback" unicode="&#xe612;"
d="M811.5 471.5q-88.5 88.5 -213.5 88.5h-336l114 114q12 12 12 28.5t-12 28t-28.5 11.5t-28.5 -12l-183 -183q-12 -12 -12 -28.5t12 -28.5l178 -178q12 -12 28.5 -12t28 11.5t11.5 28t-11 28.5l-113 112h340q92 0 157 -65t65 -157v-192q0 -17 12 -28.5t28.5 -11.5t28 11.5
t11.5 28.5v192q0 125 -88.5 213.5z" />
<glyph glyph-name="retweet" unicode="&#xe613;"
d="M366 579h349l-119 -119q-11 -11 -11 -26t10.5 -25.5t25.5 -10.5t25 11l179 178q11 11 11 25.5t-11 25.5l-184 184q-10 10 -25 10t-25.5 -10.5t-10.5 -25.5t10 -25l120 -120h-344q-124 0 -211.5 -87.5t-87.5 -211.5q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5
q0 94 66.5 160.5t160.5 66.5zM923 455q-15 0 -25.5 -10.5t-10.5 -25.5q0 -94 -66.5 -160.5t-160.5 -66.5h-349l120 120q10 10 10 25t-10.5 25.5t-25.5 10.5t-25 -11l-179 -178q-10 -11 -10 -25.5t10 -25.5l184 -184q10 -10 25 -10t25.5 10.5t10.5 25.5t-10 25l-120 120h344
q124 0 211.5 87.5t87.5 211.5q0 15 -10.5 25.5t-25.5 10.5z" />
<glyph glyph-name="shrink" unicode="&#xe614;"
d="M109 247h211l-232 -232q-13 -13 -13 -31t13 -31t31 -13t31 13l236 236v-210q0 -18 13 -31t31 -13t31 13t13 31v312q0 19 -13 31.5t-31 12.5h-321q-18 0 -31 -12.5t-13 -31t13 -31.5t31 -13zM595 431h321q18 0 31 13t13 31t-13 31t-31 13h-211l232 232q13 13 13 31.5
t-13 31t-31 12.5t-31 -12l-236 -236v209q0 18 -13 31t-31 13t-31 -13t-13 -31v-312q0 -18 13 -31t31 -13z" />
<glyph glyph-name="arrowsalt" unicode="&#xe615;"
d="M430 23h-211l232 232q13 13 13 31.5t-13 31t-31 12.5t-31 -12l-236 -236v209q0 18 -13 31t-31 13t-31 -13t-13 -31v-312q0 -18 13 -31t31 -13h321q18 0 31 13t13 31t-13 31t-31 13zM916 831h-321q-18 0 -31 -13t-13 -31t13 -31t31 -13h211l-232 -232q-13 -13 -13 -31
t13 -31t31 -13t31 13l236 236v-210q0 -18 13 -31t31 -13t31 13t13 31v312q0 18 -13 31t-31 13z" />
<glyph glyph-name="doubleright" unicode="&#xe617;"
d="M431 17q-11 14 -9 32t16 29l381 307l-379 305q-14 11 -16 29t9 32t29 16t32 -9l422 -339q17 -13 17 -34t-17 -34l-424 -341q-12 -10 -27 -10q-21 0 -34 17zM101 17q-11 14 -9 32t16 29l381 307l-379 305q-14 11 -16 29t9 32t29 16t32 -9l422 -339q17 -13 17 -34t-17 -34
l-424 -341q-12 -10 -27 -10q-21 0 -34 17z" />
<glyph glyph-name="doubleleft" unicode="&#xe618;"
d="M559 0q-15 0 -27 10l-424 341q-17 13 -17 34t17 34l422 339q14 11 32 9t29 -16t9 -32t-16 -29l-379 -305l381 -307q14 -11 16 -29t-9 -32q-13 -17 -34 -17zM889 0q-15 0 -27 10l-424 341q-17 13 -17 34t17 34l422 339q14 11 32 9t29 -16t9 -32t-16 -29l-379 -305
l381 -307q14 -11 16 -29t-9 -32q-13 -17 -34 -17z" />
<glyph glyph-name="arrowdown" unicode="&#xe619;"
d="M558 725v-574v0l208 216q13 14 31 14t31.5 -12.5t13.5 -30.5t-12 -32l-284 -294q-13 -14 -31.5 -14t-31.5 14l-285 296q-12 13 -12 30q0 19 14 32q13 13 31 12.5t31 -13.5l208 -216v0v573q0 17 12 30t29 14q19 1 33 -12.5t14 -32.5z" />
<glyph glyph-name="arrowup" unicode="&#xe61a;"
d="M470 43v574v0l-208 -216q-13 -14 -31 -14t-31.5 12.5t-13.5 30.5t12 32l284 294q13 14 31.5 14t31.5 -14l285 -296q12 -13 12 -30q0 -19 -14 -32q-13 -13 -31 -12.5t-31 13.5l-208 216v0v-573q0 -17 -12 -30t-29 -14q-19 -1 -33 12.5t-14 32.5z" />
<glyph glyph-name="arrowright" unicode="&#xe61b;"
d="M173 428h574v0l-216 208q-14 13 -14 31t12.5 31.5t30.5 13.5t32 -12l294 -284q14 -13 14 -31.5t-14 -31.5l-296 -285q-13 -12 -30 -12q-19 0 -32 14q-13 13 -12.5 31t13.5 31l216 208v0h-573q-17 0 -30 12t-14 29q-1 19 12.5 33t32.5 14z" />
<glyph glyph-name="arrowleft" unicode="&#xe61c;"
d="M855 428h-574v0l216 208q14 13 14 31t-12.5 31.5t-30.5 13.5t-32 -12l-294 -284q-14 -13 -14 -31.5t14 -31.5l296 -285q13 -12 30 -12q19 0 32 14q13 13 12.5 31t-13.5 31l-216 208v0h573q17 0 30 12t14 29q1 19 -12.5 33t-32.5 14z" />
<glyph glyph-name="down" unicode="&#xe61d;"
d="M896 596q0 -15 -10 -28l-341 -423q-13 -17 -34 -17t-34 17l-339 422q-11 14 -9 32t16 29t32 9t29 -16l305 -379l307 381q11 14 29 16t32 -9q17 -13 17 -34z" />
<glyph glyph-name="up" unicode="&#xe61e;"
d="M896 236q0 15 -10 28l-341 423q-13 17 -34 17t-34 -17l-339 -422q-11 -14 -9 -32t16 -29t32 -9t29 16l305 379l307 -381q11 -14 29 -16t32 9q17 13 17 34z" />
<glyph glyph-name="right" unicode="&#xe61f;"
d="M301 0q15 0 27 10l424 341q16 13 16 34t-16 34l-422 339q-14 11 -32 9t-29.5 -16t-9.5 -32t16 -29l380 -305l-382 -307q-14 -11 -16 -29t9 -32q14 -17 35 -17z" />
<glyph glyph-name="left" unicode="&#xe620;"
d="M724 0q-15 0 -27 10l-424 341q-16 13 -16 34t16 34l422 339q14 11 32 9t29.5 -16t9.5 -32t-16 -29l-380 -305l382 -307q14 -11 16 -29t-10 -32q-13 -17 -34 -17z" />
<glyph glyph-name="minussquareo" unicode="&#xe621;"
d="M888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0zM732 347h-442q-14 0 -25 10.5t-11 25.5v0q0 15 11 25.5t25 10.5h442q14 0 25 -10.5t11 -25.5v0
q0 -15 -11 -25.5t-25 -10.5z" />
<glyph glyph-name="minuscircle" unicode="&#xe622;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM832 384q0 -15 -10.5 -25.5t-25.5 -10.5h-568q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h568
q15 0 25.5 -10.5t10.5 -25.5v0z" />
<glyph glyph-name="minuscircleo" unicode="&#xe623;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM796 348h-568q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h568q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5z" />
<glyph glyph-name="minus" unicode="&#xe624;"
d="M796 348h-568q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h568q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5z" />
<glyph glyph-name="pluscircleo" unicode="&#xe625;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM732 420h-184v183q0 15 -10.5 25.5t-25.5 10.5v0q-14 0 -25 -10.5t-11 -25.5v-183h-184q-15 0 -25.5 -11t-10.5 -25v0q0 -15 10.5 -25.5t25.5 -10.5h184v-183
q0 -15 11 -25.5t25 -10.5v0q15 0 25.5 10.5t10.5 25.5v183h184q15 0 25.5 10.5t10.5 25.5v0q0 14 -10.5 25t-25.5 11z" />
<glyph glyph-name="pluscircle" unicode="&#xe626;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM768 384q0 -15 -10.5 -25.5t-25.5 -10.5h-184v-183q0 -15 -10.5 -25.5t-25.5 -10.5v0q-14 0 -25 10.5
t-11 25.5v183h-184q-15 0 -25.5 10.5t-10.5 25.5v0q0 14 10.5 25t25.5 11h184v183q0 15 11 25.5t25 10.5v0q15 0 25.5 -10.5t10.5 -25.5v-183h184q15 0 25.5 -11t10.5 -25v0z" />
<glyph glyph-name="plus" unicode="&#xe627;"
d="M866 420h-318v310q0 15 -10.5 25.5t-25.5 10.5v0q-15 0 -25.5 -10.5t-10.5 -25.5v-310h-312q-14 0 -25 -10.5t-11 -25.5v0q0 -15 11 -25.5t25 -10.5h312v-312q0 -14 10.5 -25t25.5 -11v0q15 0 25.5 11t10.5 25v312h318q15 0 25.5 10.5t10.5 25.5v0q0 15 -10.5 25.5
t-25.5 10.5z" />
<glyph glyph-name="infocirlce" unicode="&#xe628;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM509 712q15 0 25.5 -11t10.5 -25.5t-10.5 -25t-25.5 -10.5t-25.5 10.5t-10.5 25t10.5 25.5t25.5 11zM666 154
q0 -15 -10.5 -25.5t-25.5 -10.5h-85h-72h-85q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h85v314h-60q-15 0 -25.5 11t-10.5 25v0q0 15 10.5 25.5t25.5 10.5h60h36v0q15 0 25.5 -10.5t10.5 -25.5v-350h85q15 0 25.5 -10.5t10.5 -25.5v0z" />
<glyph glyph-name="infocirlceo" unicode="&#xe629;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM630 190h-85v350q0 15 -10.5 25.5t-25.5 10.5v0h-36h-60q-15 0 -25.5 -10.5t-10.5 -25.5v0q0 -14 10.5 -25t25.5 -11h60v-314h-85q-15 0 -25.5 -10.5
t-10.5 -25.5v0q0 -15 10.5 -25.5t25.5 -10.5h85h72h85q15 0 25.5 10.5t10.5 25.5v0q0 15 -10.5 25.5t-25.5 10.5zM509 676zM473 675.5q0 14.5 10.5 25.5t25.5 11t25.5 -11t10.5 -25.5t-10.5 -25t-25.5 -10.5t-25.5 10.5t-10.5 25z" />
<glyph glyph-name="info" unicode="&#xe62a;"
d="M660 136h-85v404q0 15 -10.5 25.5t-25.5 10.5v0h-36h-60q-15 0 -25.5 -10.5t-10.5 -25.5v0q0 -14 10.5 -25t25.5 -11h60v-368h-85q-15 0 -25.5 -10.5t-10.5 -25.5v0q0 -15 10.5 -25.5t25.5 -10.5h85h72h85q15 0 25.5 10.5t10.5 25.5v0q0 15 -10.5 25.5t-25.5 10.5z
M539 676zM503 675.5q0 14.5 10.5 25.5t25.5 11t25.5 -11t10.5 -25.5t-10.5 -25t-25.5 -10.5t-25.5 10.5t-10.5 25z" />
<glyph glyph-name="exclamation" unicode="&#xe62b;"
d="M512 193q-17 0 -28.5 11.5t-11.5 28.5v495q0 17 11.5 28.5t28.5 11.5t28.5 -11.5t11.5 -28.5v-495q0 -17 -11.5 -28.5t-28.5 -11.5zM512 83zM467 83q0 19 13 32t32 13t32 -13t13 -32t-13 -32t-32 -13t-32 13t-13 32z" />
<glyph glyph-name="exclamationcircle" unicode="&#xe62c;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM472 665q0 17 11.5 28.5t28.5 11.5t28.5 -11.5t11.5 -28.5v-369q0 -17 -11.5 -28.5t-28.5 -11.5t-28.5 11.5
t-11.5 28.5v369zM512 102q-19 0 -32 13t-13 32t13 32t32 13t32 -13t13 -32t-13 -32t-32 -13z" />
<glyph glyph-name="exclamationcircleo" unicode="&#xe62d;"
d="M512 824q90 0 171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140t-140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171q34 79 95 140t140 94q81 35 171 35zM512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257
t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5v0zM512 256q-17 0 -28.5 11.5t-11.5 28.5v369q0 17 11.5 28.5t28.5 11.5t28.5 -11.5t11.5 -28.5v-369q0 -17 -11.5 -28.5t-28.5 -11.5zM512 147zM467 147q0 19 13 32
t32 13t32 -13t13 -32t-13 -32t-32 -13t-32 13t-13 32z" />
<glyph glyph-name="closecircle" unicode="&#xe62e;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM717 229q11 -10 11 -25t-10.5 -25.5t-25.5 -10.5t-26 10l-154 155l-154 -155q-11 -10 -26 -10t-25.5 10.5
t-10.5 25.5t11 25l154 155l-154 155q-11 10 -11 25t10.5 25.5t25.5 10.5t26 -10l154 -155l154 155q11 10 26 10t25.5 -10.5t10.5 -25t-11 -25.5l-154 -155z" />
<glyph glyph-name="closecircleo" unicode="&#xe62f;"
d="M717.5 589.5q-10.5 10.5 -25.5 10.5t-26 -10l-154 -155l-154 155q-11 10 -26 10t-25.5 -10.5t-10.5 -25.5t11 -25l154 -155l-154 -155q-11 -10 -11 -25t10.5 -25.5t25.5 -10.5t26 10l154 155l154 -155q11 -10 26 -10t25.5 10.5t10.5 25t-11 25.5l-154 155l154 155
q11 10 11 25t-10.5 25.5zM512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140
q-35 81 -35 171t34 171q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140z" />
<glyph glyph-name="checkcircle" unicode="&#xe630;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM772 540l-359 -361v0l-1 -1q-3 -3 -8 -6q-8 -5 -18 -5q-21 0 -31 18l-109 191q-8 13 -4 27t17 21.5t27.5 3.5
t21.5 -17l86 -149l327 328q11 11 26 11t25.5 -10.5t10.5 -25.5t-11 -25z" />
<glyph glyph-name="checkcircleo" unicode="&#xe631;"
d="M721 590l-327 -328l-86 149q-7 13 -21.5 17t-27.5 -3.5t-17 -21.5t4 -27l109 -191q10 -18 31 -18q10 0 18 5q5 3 8 6l1 1l359 360q11 11 11 26t-10.5 25.5t-25.5 10.5t-26 -11zM512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5
t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171
q-34 -79 -95 -140z" />
<glyph glyph-name="check" unicode="&#xe632;"
d="M328 96q-3 0 -5 1q-20 2 -30 20l-159 278q-8 15 -4 31t18.5 24t30.5 3.5t25 -18.5l133 -233l491 492q11 12 28 12t28.5 -11.5t11.5 -28.5t-12 -28l-526 -528l-2 -2q-11 -12 -28 -12z" />
<glyph glyph-name="close" unicode="&#xe633;"
d="M568 381l254 255q12 11 12 27.5t-11.5 28t-28 11.5t-27.5 -12l-255 -254l-255 254q-11 12 -27.5 12t-28 -11.5t-11.5 -28t12 -27.5l254 -255l-254 -255q-12 -11 -12 -27.5t11.5 -28t28 -11.5t27.5 12l255 255l255 -255q11 -12 27.5 -12t28 11.5t11.5 28t-12 27.5z" />
<glyph glyph-name="customerservice" unicode="&#xe634;"
d="M838 579q-6 26 -18 52q-25 59 -72 105q-46 45 -107 70q-63 26 -131 26t-131 -26q-60 -25 -107 -70.5t-72 -104.5q-11 -25 -18 -53q-24 -8 -45 -23q-22 -16 -38 -38q-35 -47 -35 -106q0 -72 51 -123q37 -37 87 -48q4 -1 8 -1q15 0 25 11q10 10 10 25l-1 227q0 107 77 183
q78 76 188.5 76t188.5 -76t78 -183v-236q0 -107 -78 -183q-31 -31 -71 -50q1 11 1 22q-1 46 -34 79t-79 35h-3q-48 0 -82 -34.5t-34 -82.5q0 -47 33.5 -81t80.5 -35v0h2v0h2h1v0v0q66 1 126 26t107 70.5t73 104.5q22 53 26 111q35 13 62 40q51 51 51 123q0 58 -34 104.5
t-88 63.5zM82 355q1 -3 3 -7q-2 5 -3 7zM92 333q2 -4 5 -9q-4 6 -5 9zM160 332l-3 3l3 -3l2 -2zM173 332q-4 3 -7 6q-31 31 -31 73q0 29 14 53q9 17 24 29v-161zM181 316q-1 0 -2 0.5t-1 1.5q1 -1 3 -2v0zM188 571v0q1 5 4 13q-2 -7 -4 -13zM204 248l-10 2q9 -2 10 -2h2h-2z
M210 248h-1h1v0zM237 274v1l-1 227l1 -227v-1zM307 756q7 5 10 7q-6 -4 -10 -7zM382 799q-30 -13 -58 -31q28 18 58 31q1 0 2.5 0.5t2.5 0.5q-3 0 -5 -1zM442 761l2 0.5t3 0.5h2zM742 730q-45 44 -104 69q-1 0 -2.5 0.5t-2.5 0.5q1 0 2.5 -0.5t2.5 -0.5q59 -25 104 -69l6 -6
zM754 718q4 -4 9 -10q-5 6 -9 10zM765 706q2 -3 8 -10q-4 4 -8 10zM404 52v0v3v-3zM512 161h3h-3v0zM544.5 21q-12.5 -13 -30.5 -14h-2q-19 0 -32 13.5t-13 31.5q0 19 13 32.5t32 13.5t32 -13.5t13 -32t-12.5 -31.5zM565 44v8v3v-1v-2v-8zM615 19l1 3l-1 -3q1 1 2.5 1.5
t2.5 0.5q-2 -1 -5 -2zM742 38l-6 -6q1 1 3.5 3t2.5 3l6 6q-3 -4 -6 -6zM784 266v-14v14v236v6v-3v-3v-236zM813 140q-3 -7 -7 -14q4 7 7 14q0 1 1 2.5t1 2.5q-1 -3 -2 -5zM813 628q-3 7 -7 14q4 -7 7 -14q1 -2 3 -7q-1 3 -3 7zM831 572q0 3 -1 7q0 -1 0.5 -3t0.5 -4v0z
M839 510q7 -3 12 -7q-5 4 -12 7v0zM864 332q-11 -11 -25 -18v0q14 7 25 18q0 1 1 1q0 1 1 1q-1 0 -1 -1q-1 0 -1 -1zM858 338q-5 -5 -11 -10v168q17 -13 27 -30q15 -25 15 -55q0 -42 -31 -73zM945 460l-2 6q1 -2 2 -6zM935 485q1 -1 3 -6q-1 1 -1.5 3.5t-1.5 2.5zM943 356
q0 2 2 7q-1 -2 -2 -7z" />
<glyph glyph-name="creditcard" unicode="&#xe635;"
d="M952 766h-880q-30 0 -51 -21t-21 -51v-120v-96v-405q0 -29 21 -50.5t51 -21.5h880q30 0 51 21.5t21 50.5v405v96v120q0 30 -21 51t-51 21zM952 73h-880v405h880v-405zM72 574v120h880v-120h-880zM237 192v0q18 0 31 13t13 31v0q0 18 -13 31t-31 13v0q-18 0 -31 -13
t-13 -31v0q0 -18 13 -31t31 -13zM404 192v0q18 0 31 13t13 31v0q0 18 -13 31t-31 13v0q-19 0 -31.5 -13t-12.5 -31v0q0 -18 12.5 -31t31.5 -13z" />
<glyph glyph-name="codesquareo" unicode="&#xe636;"
d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM888 7h-752v753h752v-753zM203.5 357.5q10.5 -10.5 25.5 -10.5t25 11l140 141q11 10 11 25t-10 26l-141 142q-10 10 -25 10t-25.5 -10.5
t-10.5 -25t10 -25.5l115 -117l-115 -115q-10 -11 -10 -26t10.5 -25.5zM383 384q0 -15 10.5 -25.5t24.5 -10.5l199 -1h1q14 0 25 10.5t11 25.5t-11 25.5t-25 10.5l-199 1v0q-15 0 -25.5 -10.5t-10.5 -25.5z" />
<glyph glyph-name="book" unicode="&#xe637;"
d="M822 832h-259h-72h-121h-72h-94q-29 0 -50.5 -21t-21.5 -51v-753q0 -29 21.5 -50.5t50.5 -21.5h619q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM491 760v-209l-9 8l-33 34q-8 7 -18 7t-17 -7l-44 -44v211h121zM298 760v-277q0 -15 10 -25t25 -10v0
q37 0 63 25l35 35l35 -34q25 -25 60 -26h1q15 0 25.5 10t10.5 25v277h260v-624h-618v624h93zM204 7v57h618v-57h-618z" />
<glyph glyph-name="barschart" unicode="&#xe638;"
d="M203 730v-696q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v696q0 15 10.5 25.5t25.5 10.5v0q15 0 25.5 -10.5t10.5 -25.5zM167 70h694q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5h-694q-15 0 -25.5 10.5t-10.5 25.5v0
q0 15 10.5 25.5t25.5 10.5zM394 537v-371q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v371q0 15 10.5 25.5t25.5 10.5v0q15 0 25.5 -10.5t10.5 -25.5zM777 667v-501q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v501q0 15 10.5 25.5
t25.5 10.5v0q15 0 25.5 -10.5t10.5 -25.5zM585 411v-245q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v245q0 15 10.5 25.5t25.5 10.5v0q14 0 25 -10.5t11 -25.5z" />
<glyph glyph-name="bars" unicode="&#xe639;"
d="M187 639zM124 639q0 26 18.5 44.5t44.5 18.5t44.5 -18.5t18.5 -44.5t-18.5 -44.5t-44.5 -18.5t-44.5 18.5t-18.5 44.5zM856 610h-498q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h498q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5zM187 384
zM124 384q0 26 18.5 44.5t44.5 18.5t44.5 -18.5t18.5 -44.5t-18.5 -44.5t-44.5 -18.5t-44.5 18.5t-18.5 44.5zM856 355h-498q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h498q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5zM187 129zM124 129
q0 26 18.5 44.5t44.5 18.5t44.5 -18.5t18.5 -44.5t-18.5 -44.5t-44.5 -18.5t-44.5 18.5t-18.5 44.5zM856 100h-498q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h498q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5z" />
<glyph glyph-name="question" unicode="&#xe63a;"
d="M644 633q-61 64 -152 64q-84 0 -143.5 -59.5t-59.5 -143.5q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q0 54 38.5 92.5t92.5 38.5h1q59 0 99 -42q35 -37 32 -85q-1 -18 -4 -29t-21 -37.5t-54 -62.5q-43 -43 -66.5 -77t-27.5 -72q-2 -15 7.5 -26.5t24.5 -12.5h4
q14 0 24 9t12 23q3 35 73 105q61 61 79.5 98t20.5 78q5 79 -52 139zM486 80zM443 80q0 18 12.5 30.5t30.5 12.5t30.5 -12.5t12.5 -30.5t-12.5 -30.5t-30.5 -12.5t-30.5 12.5t-12.5 30.5z" />
<glyph glyph-name="questioncircle" unicode="&#xe63b;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM505.5 83q-17.5 0 -30.5 13t-13 31t13 30.5t30.5 12.5t30.5 -12.5t13 -30.5t-13 -31t-30.5 -13zM691 505
q-2 -38 -19.5 -70.5t-67.5 -83.5q-59 -58 -61 -87q-2 -13 -12 -22.5t-24 -9.5h-4q-15 2 -24.5 13.5t-7.5 26.5q3 33 23.5 63t58.5 67q30 30 45.5 52t18 31t2.5 24q2 39 -26 69q-33 34 -81 34v0q-45 0 -76.5 -31.5t-31.5 -75.5q0 -15 -10.5 -25.5t-25.5 -10.5t-25.5 10.5
t-10.5 25.5q0 74 52.5 126.5t126.5 52.5q80 1 134 -56q50 -53 46 -123z" />
<glyph glyph-name="questioncircleo" unicode="&#xe63c;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM546 372zM507 232h-4q-15 2 -24.5 13.5t-7.5 26.5q3 33 23.5 63t58.5 67q30 30 45.5 52t18 31.5t2.5 23.5q2 39 -26 69q-33 35 -81 35v0q-45 0 -76.5 -32
t-31.5 -76q0 -15 -10.5 -25.5t-25.5 -10.5t-25.5 10.5t-10.5 25.5q0 74 52.5 126.5t126.5 53.5q80 0 134 -57q50 -53 46 -123q-2 -37 -19.5 -70t-67.5 -84q-59 -58 -61 -86q-2 -14 -12 -23.5t-24 -9.5zM506 127zM462 127q0 18 13 30.5t30.5 12.5t30.5 -12.5t13 -30.5
t-13 -30.5t-30.5 -12.5t-30.5 12.5t-13 30.5z" />
<glyph glyph-name="pause" unicode="&#xe63d;"
d="M326 704v0q-15 0 -25.5 -11t-10.5 -25v-568q0 -14 10.5 -25t25.5 -11v0q15 0 25 11t9 25v568q1 14 -9 25t-25 11zM698 704v0q-14 0 -25 -11t-11 -25v-568q0 -14 11 -25t25 -11v0q15 0 25.5 11t10.5 25v568q0 14 -10.5 25t-25.5 11z" />
<glyph glyph-name="pausecircle" unicode="&#xe63e;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM393 228q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v312q0 15 10.5 25.5t25.5 10.5v0
q15 0 25.5 -10.5t10.5 -25.5v-312zM703 228q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v312q0 15 10.5 25.5t25.5 10.5v0q15 0 25.5 -10.5t10.5 -25.5v-312z" />
<glyph glyph-name="pausecircleo" unicode="&#xe63f;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM357 576v0q-15 0 -25.5 -10.5t-10.5 -25.5v-312q0 -15 10.5 -25.5t25.5 -10.5v0q15 0 25.5 10.5t10.5 25.5v312q0 15 -10.5 25.5t-25.5 10.5zM667 576v0
q-15 0 -25.5 -10.5t-10.5 -25.5v-312q0 -15 10.5 -25.5t25.5 -10.5v0q15 0 25.5 10.5t10.5 25.5v312q0 15 -10.5 25.5t-25.5 10.5z" />
<glyph glyph-name="clockcircle" unicode="&#xe640;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM769 356q0 -15 -10.5 -25.5t-25.5 -10.5h-185v0q-30 0 -51 21t-21 51v0v240q0 15 10.5 25.5t25.5 10.5v0
q15 0 25.5 -10.5t10.5 -25.5v-240h185q15 0 25.5 -10.5t10.5 -25.5v0z" />
<glyph glyph-name="clockcircleo" unicode="&#xe641;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM733 392h-185v240q0 15 -10.5 25.5t-25.5 10.5v0q-15 0 -25.5 -10.5t-10.5 -25.5v-240v0q0 -30 21 -51t51 -21v0h185q15 0 25.5 10.5t10.5 25.5v0
q0 15 -10.5 25.5t-25.5 10.5z" />
<glyph glyph-name="swap" unicode="&#xe642;"
d="M194 481q-1 0 -1 0.5t-0.5 0.5h-0.5h-0.5h-0.5h-0.5h-0.5v0h-1h-0.5h-0.5v0l-0.5 0.5l-0.5 0.5h-0.5h-0.5h-0.5h-0.5h-1l-1 1v0v0h-0.5h-0.5l-0.5 0.5l-0.5 0.5h-0.5h-0.5h-1v1h-0.5h-0.5l-0.5 0.5l-0.5 0.5h-0.5h-0.5v0.5v0.5h-1l-1 1v0l-0.5 0.5l-0.5 0.5h-1q-1 2 -2 3
q-1 0 -1 0.5v0.5v0l-1 1v1h-1v1v0l-0.5 0.5l-0.5 0.5v0v0.5t-0.5 0.5h-0.5v1l-0.5 0.5l-0.5 0.5v1v0v0.5t-0.5 0.5h-0.5v0.5v0.5q0 1 -0.5 1t-0.5 0.5v1v0.5v0v0v0.5v0.5v0.5v0.5l-1 1v0.5v0.5v0.5v0.5v0v0.5v0.5v1v0v1v4v1v0.5v0.5v0.5v0.5v0.5v0.5v0.5v0.5v0l1 1v0.5v0.5
v0.5v0.5v0v0.5v0.5v0q1 1 1 1.5v0.5v0.5v0.5l0.5 0.5l0.5 0.5v0v0.5v0.5l0.5 0.5l0.5 0.5v0.5t0.5 1l0.5 0.5v0v0v0.5t0.5 0.5t0.5 0.5v0.5l0.5 0.5l0.5 0.5q0 1 1 1v0v1h1l0.5 0.5l0.5 0.5l178 178q10 11 25 11t25 -11v0q11 -11 11 -25.5t-11 -25.5l-116 -116h545
q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5h-631v0h-2h-0.5h-0.5zM830 287q1 0 1 -0.5t0.5 -0.5h0.5h0.5h0.5h0.5h0.5v0v0h2v0v0l0.5 -0.5l0.5 -0.5h0.5h0.5h0.5h0.5h1v-1h1v0h0.5h0.5l0.5 -0.5l0.5 -0.5h0.5h0.5h1v-1h0.5h0.5l0.5 -0.5l0.5 -0.5h0.5h0.5
v-0.5v-0.5h1l1 -1l0.5 -0.5l0.5 -0.5v0h1q1 -2 2 -3q1 0 1 -0.5v-0.5v0l1 -1v-1h1v-1h0.5t0.5 -0.5v-0.5v0v-0.5t0.5 -0.5t0.5 -0.5v-0.5l0.5 -0.5l0.5 -0.5v-0.5v-0.5v-0.5t0.5 -0.5h0.5v-0.5v-0.5v-1l0.5 -0.5t0.5 -1v-0.5v0v-0.5v-0.5v0v-0.5v-0.5l1 -1v-0.5v-0.5v-0.5
v-0.5v0v-0.5v-0.5v-1v0v-1v-4v-1v-0.5v-1v-0.5v0v-0.5v-0.5v-0.5v-0.5v0l-1 -1v-0.5v-0.5v-0.5v-0.5v0v-0.5v-0.5l-1 -1v-0.5v-0.5v-0.5v-0.5l-0.5 -0.5l-0.5 -0.5v0v-0.5v-0.5l-0.5 -0.5l-0.5 -0.5v-0.5t-0.5 -1l-0.5 -0.5v0v0v-0.5t-0.5 -0.5t-0.5 -0.5v-0.5l-1 -1v0
q0 -1 -0.5 -1h-0.5v-1h-1l-0.5 -0.5t-0.5 -1.5l-177 -177q-11 -11 -26 -11t-25 11v0q-11 10 -11 25t11 26l116 116h-545q-14 0 -25 10.5t-11 25.5v0q0 15 11 25.5t25 10.5h632v0h1h1z" />
<glyph glyph-name="swapleft" unicode="&#xe643;"
d="M164 320h-1l-0.5 0.5l-0.5 0.5h-0.5h-0.5h-0.5h-0.5v0h-1h-1v0v0l-0.5 0.5l-0.5 0.5h-0.5h-0.5h-0.5h-0.5h-1l-1 1v0v0h-0.5h-0.5l-0.5 0.5l-0.5 0.5h-0.5h-0.5h-1v1h-0.5h-0.5l-0.5 0.5l-0.5 0.5h-0.5h-0.5v0.5v0.5h-1l-1 1v0l-0.5 0.5l-0.5 0.5h-1q-1 2 -2 3
q-1 0 -1 0.5v0.5v0l-1 1v1h-1v1v0l-0.5 0.5l-0.5 0.5v0v0.5t-0.5 0.5h-0.5v1l-0.5 0.5l-0.5 0.5v1v0v0.5t-0.5 0.5h-0.5v0.5v0.5q0 1 -0.5 1t-0.5 0.5v1v0.5v0v0.5v0.5v0v0.5v0.5l-1 1v0.5v0.5v0.5v0.5v0v0.5v0.5v1v1v0v4v1v0.5v0.5v0.5v0.5v0.5v0.5v0.5v0.5v0l1 1v0.5v0.5
v0.5v0.5v0v0.5v0.5v1q1 0 1 0.5v0.5v0.5v0.5l0.5 0.5l0.5 0.5v0v1v0l0.5 0.5l0.5 0.5v1l0.5 0.5l0.5 0.5v0v0v0.5t0.5 0.5t0.5 0.5v0.5l0.5 0.5l0.5 0.5q0 1 0.5 1h0.5v1h1l0.5 0.5t0.5 1.5l178 177q10 11 25 11t25 -11v0q11 -11 11 -25.5t-11 -25.5l-116 -116h545
q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5h-631v0h-2h-1z" />
<glyph glyph-name="swapright" unicode="&#xe644;"
d="M830 320h1l0.5 0.5l0.5 0.5h0.5h0.5h0.5h0.5v0v0h2v0v0l0.5 0.5l0.5 0.5h0.5h0.5h0.5h0.5h1v1h1v0h0.5h0.5l0.5 0.5l0.5 0.5h0.5h0.5h1v1h0.5h0.5l0.5 0.5l0.5 0.5h0.5h0.5v0.5v0.5h1l1 1v0.5t0.5 0.5h0.5h1q1 2 2 3q1 0 1 0.5v0.5v0l1 1v1h1v1h0.5t0.5 0.5v0.5v0v0.5
t0.5 0.5t0.5 0.5v0.5l0.5 0.5l0.5 0.5v0.5v0.5v0.5t0.5 0.5h0.5v0.5v0.5v1l0.5 0.5t0.5 1v0.5v0v0v0.5v0.5v0.5v0.5l1 1v0.5v0.5v0.5v0.5v0v0.5v0.5v1v1v0v4v1v0.5v0.5v0.5v0.5v0.5v0.5v0.5v0.5v0l-1 1v0.5v0.5v0.5v0.5v0v0.5v0.5l-1 1v0.5v0.5v0.5v0.5l-0.5 0.5l-0.5 0.5v0
v0.5v0.5l-0.5 0.5l-0.5 0.5v0.5t-0.5 1l-0.5 0.5v0v0l-0.5 0.5l-0.5 0.5v0.5v0.5l-0.5 0.5l-0.5 0.5q0 1 -1 1v0l-0.5 0.5l-0.5 0.5l-0.5 0.5t-0.5 1.5l-177 177q-11 11 -26 11t-25 -11v0q-11 -10 -11 -25t11 -26l116 -116h-545q-14 0 -25 -10.5t-11 -25.5v0q0 -15 11 -25.5
t25 -10.5h632v0h1h0.5h0.5z" />
<glyph glyph-name="plussquareo" unicode="&#xe645;"
d="M888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0zM732 420h-184v183q0 15 -10.5 25.5t-25.5 10.5v0q-14 0 -25 -10.5t-11 -25.5v-183h-184
q-15 0 -25.5 -11t-10.5 -25v0q0 -15 10.5 -25.5t25.5 -10.5h184v-183q0 -15 11 -25.5t25 -10.5v0q15 0 25.5 10.5t10.5 25.5v183h184q15 0 25.5 10.5t10.5 25.5v0q0 14 -10.5 25t-25.5 11z" />
<glyph glyph-name="frown" unicode="&#xe646;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM254 454q-25 0 -42.5 17.5t-17.5 42t17.5 42.5t42.5 18t42.5 -18t17.5 -42.5t-17.5 -42t-42.5 -17.5zM640 130
q-15 0 -25.5 11t-10.5 25q0 39 -27 66t-65 27t-65 -27t-27 -66q0 -14 -10.5 -25t-25.5 -11t-25.5 11t-10.5 25q0 68 48 116.5t116 48.5t116 -48.5t48 -116.5q0 -14 -10.5 -25t-25.5 -11zM769.5 454q-24.5 0 -42 17.5t-17.5 42t17.5 42.5t42 18t42.5 -18t18 -42.5t-18 -42
t-42.5 -17.5z" />
<glyph glyph-name="menufold" unicode="&#xe658;"
d="M97 695h828q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-828q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5zM923 450h-565q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h565q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM925 72h-825
q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h825q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM195 281q11 -10 25 -10q15 0 26 11q10 10 10 25t-10 25l-96 94l94 88q11 11 11.5 26t-10 25.5t-25.5 11t-25 -9.5l-121 -114q-12 -11 -12 -26t11 -26z" />
<glyph glyph-name="mail" unicode="&#xe659;"
d="M886 768h-753q-30 0 -51 -21t-21 -51v-626q0 -30 21 -51t51 -21h753q30 0 51 21t21 51v626q0 30 -21 51t-51 21zM809 696l-268 -224l-2 -1l-1 -2q-11 -11 -26 -11h-1q-15 0 -25 11l-2 1l-274 226h599zM886 70h-753v0v597l303 -250q31 -31 76 -31v0q45 0 76 32l298 249
v-597v0z" />
<glyph glyph-name="link" unicode="&#xe65b;"
d="M542 230l-179 -179q-39 -38 -93 -38t-92 38q-39 39 -39 93t39 93l178 179q11 10 11 25t-10.5 25.5t-25.5 10.5t-25 -11l-179 -178q-60 -60 -60 -144t59.5 -143.5t143.5 -59.5t144 59l179 179q10 11 10 26t-10.5 25.5t-25.5 10.5t-25 -11zM899.5 773.5
q-59.5 59.5 -143.5 59.5t-144 -60l-179 -179q-10 -10 -10 -25t10.5 -25.5t25.5 -10.5t25 10l179 179q39 39 93 39t92.5 -38.5t38.5 -93t-39 -92.5l-178 -179q-11 -10 -11 -25t10.5 -25.5t25.5 -10.5t26 10l179 179q59 60 59 144t-59.5 143.5zM486 308l102 102q11 10 11 25
t-10.5 25.5t-25.5 10.5t-25 -11l-102 -102q-11 -10 -11 -25t10.5 -25.5t25.5 -10.5t25 11z" />
<glyph glyph-name="areachart" unicode="&#xe65c;"
d="M923 -64h-824q-15 0 -25.5 10.5t-10.5 25.5v825q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5v-789h788q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5zM192 96l117 209q4 7 12 9.5t16 -0.5l111 -52l118 171q11 15 27 7l110 -56l160 251q7 11 19.5 7.5
t12.5 -16.5v-520q0 -16 -11.5 -27.5t-27.5 -11.5h-646q-11 0 -17 9.5t-1 19.5z" />
<glyph glyph-name="linechart" unicode="&#xe65d;"
d="M923 -64h-824q-15 0 -25.5 10.5t-10.5 25.5v825q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5v-789h788q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5zM385 153q-19 0 -30 16l-157 250q-8 13 -5 27.5t15.5 22.5t27 5t22.5 -15l112 -182l46 177q4 16 19 23
l182 88q13 6 26 2.5t21 -15.5l91 -148l134 403q5 14 18 21t27 2t21 -18t2 -27l-158 -477q-7 -22 -30 -24.5t-35 16.5l-115 186l-137 -66l-62 -240q-6 -23 -29 -26q-3 -1 -6 -1z" />
<glyph glyph-name="home" unicode="&#xe65e;"
d="M932 454l-372 358q-20 18 -48 18t-48 -18l-372 -358q-11 -10 -12 -25t9 -26v0q10 -11 25 -12t26 9l372 358l372 -358q11 -10 26 -9t25 12v0q10 11 9 26t-12 25zM833 321v0q-15 0 -25.5 -10.5t-10.5 -25.5v-277h-143v240q0 30 -21 51t-51 21h-140q-30 0 -51 -21t-21 -51
v-240h-143v277q0 15 -10.5 25.5t-25.5 10.5v0q-15 0 -25.5 -10.5t-10.5 -25.5v-277q0 -30 21 -51t51 -21h570q30 0 51 21t21 51v277q0 15 -10.5 25.5t-25.5 10.5zM442 248h140v-240h-140v240z" />
<glyph glyph-name="laptop" unicode="&#xe65f;"
d="M887 760v0v0v-559v0l-752 -1v0v560v0h752zM887 832h-752q-30 0 -51 -21t-21 -51v-559q0 -30 21 -51t51 -21h752q30 0 51 21t21 51v559q0 30 -21 51t-51 21v0zM923 -16h-824q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h824q15 0 25.5 -10.5t10.5 -25.5v0
q0 -15 -10.5 -25.5t-25.5 -10.5z" />
<glyph glyph-name="star" unicode="&#xe660;"
d="M956 497.5q-8 23.5 -26.5 39t-42.5 19.5l-205 31l-92 195q-11 24 -33 37q-21 13 -45 13t-45 -13q-22 -13 -33 -37l-92 -195l-205 -31q-24 -4 -42.5 -19.5t-26.5 -39t-2.5 -47t22.5 -41.5l151 -154l-36 -218q-6 -40 20 -70.5t66 -30.5q22 0 42 11l181 100l181 -100
q20 -11 42 -11q40 0 66 30.5t20 70.5l-36 218l151 154q17 18 22.5 41.5t-2.5 47z" />
<glyph glyph-name="staro" unicode="&#xe661;"
d="M512 760q9 0 13 -9l105 -222q3 -7 11 -9l235 -35q9 -2 12 -10.5t-4 -14.5l-171 -176q-5 -5 -4 -12l41 -247q1 -7 -3.5 -12t-11.5 -5q-4 0 -7 2l-209 115q-3 2 -7 2t-7 -2l-209 -115q-3 -2 -7 -2q-7 0 -11.5 5t-3.5 12l41 247q1 7 -4 12l-171 176q-7 6 -4 14.5t12 9.5
l235 36q8 1 11 9l105 222q4 9 13 9zM512 832q-24 0 -45 -13q-22 -13 -33 -37l-92 -195l-205 -31q-24 -4 -42.5 -19.5t-26.5 -39t-2.5 -47t22.5 -41.5l151 -154l-36 -218q-6 -40 20 -70.5t66 -30.5q22 0 42 11l181 100l181 -100q20 -11 42 -11q40 0 66 30.5t20 70.5l-36 218
l151 154q17 18 22.5 41.5t-2.5 47t-26.5 39t-42.5 19.5l-205 31l-92 195q-11 24 -33 37q-21 13 -45 13v0z" />
<glyph glyph-name="filter" unicode="&#xe663;"
d="M890.5 719.5q-9.5 23.5 -30.5 37t-46 13.5h-602q-25 0 -46 -13.5t-30.5 -37t-4.5 -48t22 -42.5l273 -263v-262q0 -15 11 -25l125 -129q10 -11 26 -11q6 0 13 2q23 9 23 34v393l248 261q18 18 23 42.5t-4.5 48zM821 680l-259 -272q-10 -10 -10 -25v-322l-54 58v262
q0 15 -10 25l-284 274q-5 5 -2 11.5t10 6.5h602q7 0 9.5 -6.5t-2.5 -11.5z" />
<glyph glyph-name="meho" unicode="&#xe666;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM254 454q-25 0 -42.5 17.5t-17.5 42t17.5 42.5t42.5 18t42.5 -18t17.5 -42.5t-17.5 -42t-42.5 -17.5zM643 118
h-264q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5h264q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5zM769.5 454q-24.5 0 -42 17.5t-17.5 42t17.5 42.5t42 18t42.5 -18t18 -42.5t-18 -42t-42.5 -17.5z" />
<glyph glyph-name="meh" unicode="&#xe667;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM254 514zM194 513.5q0 24.5 17.5 42.5t42.5 18t42.5 -18t17.5 -42.5t-17.5 -42t-42.5 -17.5t-42.5 17.5t-17.5 42zM770 514zM710 513.5q0 24.5 17.5 42.5
t42 18t42.5 -18t18 -42.5t-18 -42t-42.5 -17.5t-42 17.5t-17.5 42zM643 190h-264q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h264q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5z" />
<glyph glyph-name="shoppingcart" unicode="&#xe668;"
d="M923 194h-596l30 61l497 1q13 0 22.5 8t11.5 20l69 386q3 16 -7.5 28t-26.5 12l-632 3l-5 25q-3 12 -13 20t-22 8h-155q-14 0 -24.5 -10.5t-10.5 -25t10.5 -25t24.5 -10.5h126l24 -112l58 -281l-75 -122q-13 -18 -3 -37t32 -19h63q-21 -28 -21 -62q0 -43 30 -73t72.5 -30
t72.5 30t30 73q0 34 -20 62h161q-21 -28 -21 -62q0 -43 30 -73t72.5 -30t72.5 30t30 73q0 34 -20 62h113q15 0 25 10t10 24.5t-10 25t-25 10.5zM306 643l576 -2l-57 -316l-452 -1zM403 30q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5t22 -9.5t9 -22.5t-9 -22.5t-22 -9.5z
M728 30q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5t22 -9.5t9 -22.5t-9 -22.5t-22 -9.5z" />
<glyph glyph-name="save" unicode="&#xe669;"
d="M650 768h-450q-30 0 -51 -21t-21 -51v-623q0 -30 21 -51t51 -21h623q30 0 51 21t21 51v450zM329 696h217v-206q0 -15 -10.5 -25.5t-25.5 -10.5h-145q-15 0 -25.5 10.5t-10.5 25.5v206zM823 73h-623v623h57v-206q0 -45 31.5 -76.5t76.5 -31.5h145q44 0 76 32t32 76v206h2
l203 -203v-420v0zM469 526q15 0 25.5 10.5t10.5 25.5v43q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-43q0 -15 10.5 -25.5t25.5 -10.5z" />
<glyph glyph-name="user" unicode="&#xe66a;"
d="M819 103q-25 60 -71 106t-106 71q-20 9 -42 15q61 20 107 66q81 81 81 195t-81 194.5t-195 80.5t-194.5 -80.5t-80.5 -194.5t80 -195q46 -46 107 -66q-23 -6 -42 -15q-60 -25 -106 -71t-71 -106q-26 -62 -26 -130q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5
q0 108 76.5 185t185 77t185 -76.5t76.5 -185.5q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q-1 68 -27 130zM309 556q0 84 59.5 143.5t143.5 59.5t143.5 -59.5t59.5 -143.5t-59.5 -144t-143.5 -60t-143.5 60t-59.5 144z" />
<glyph glyph-name="videocamera" unicode="&#xe66b;"
d="M1010 573q-11 10 -26 10q-9 0 -18 -5l-126 -67v188q0 29 -20.5 50t-50.5 21h-698q-29 0 -50 -21t-21 -50v-630q0 -29 21 -50t50 -21h698q30 0 50.5 21t20.5 50v203l123 -79q10 -6 22 -6q13 0 25 9q14 12 14 31v316q0 18 -14 30zM945 477v-178l-103 66v57zM761 667v-566
q0 -10 -6.5 -17t-16.5 -7h-636q-9 0 -16 7t-7 17v566q0 10 7 17t16 7h636q10 0 16.5 -7t6.5 -17z" />
<glyph glyph-name="totop" unicode="&#xe66c;"
d="M920 74h-816q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h816q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM365.5 576q14.5 0 25.5 10l85 85v-449q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v449l85 -85q10 -10 25 -10t25.5 10.5t10.5 25.5
t-10 25l-146 146q-11 11 -26 11t-25 -11l-147 -146q-10 -11 -10 -25.5t10.5 -25t25 -10.5z" />
<glyph glyph-name="team" unicode="&#xe66d;"
d="M839 409q-30 30 -67 47q44 23 72 64q35 51 35 113q0 84 -59 142.5t-142 58.5q-65 0 -117 -36q-45 -33 -67 -83q-60 64 -147 64q-84 0 -143 -59t-59 -142q0 -62 35 -113q28 -41 73 -65q-38 -17 -68 -47q-67 -67 -67 -161v-165q0 -37 26.5 -64t64.5 -27h276q27 0 49.5 15.5
t33.5 40.5h248q37 0 64 26.5t27 63.5v165q-1 95 -68 162zM586 725q38 38 92 38t92 -38t38 -91.5t-38 -92t-92 -38.5t-92 38t-38 92t38 92zM216 578q0 54 38 92t92 38t92 -38t38 -92t-38 -92t-92 -38t-92 38t-38 92zM504 27q0 -8 -6 -13.5t-14 -5.5h-276q-8 0 -13.5 5.5
t-5.5 13.5v165q0 65 46 111t111 46t112 -46l1 -1v-1q45 -46 45 -109v-165zM486 372q-21 17 -46 28q62 33 90 96q24 -25 54 -40q-38 -17 -68 -47q-17 -17 -30 -37zM835 82q0 -8 -5.5 -13.5t-13.5 -5.5h-241v129q0 69 -38 126q12 23 29 40q47 47 112 47t111 -46.5t46 -111.5
v-165z" />
<glyph glyph-name="sharealt" unicode="&#xe671;"
d="M814 233q-38 0 -70.5 -18t-53.5 -49l-236 168q6 24 6 48q0 39 -15 75l257 130q45 -51 112 -51q61 0 104.5 43.5t43.5 104.5t-43.5 104.5t-104.5 43.5t-104.5 -43.5t-43.5 -104.5q0 -17 4 -33l-264 -133q-59 62 -144 62q-82 0 -140 -58t-58 -140t58 -140t140 -58
q49 0 91.5 22.5t69.5 60.5l243 -172v-10q0 -61 43.5 -104.5t104.5 -43.5t104.5 43.5t43.5 104.5t-43.5 104.5t-104.5 43.5zM814 760q31 0 53.5 -22.5t22.5 -54t-22.5 -53.5t-53.5 -22t-53.5 22t-22.5 53.5t22.5 54t53.5 22.5zM262 256q-52 0 -89 37t-37 89t37 89t89 37
t89 -37t37 -89t-37 -89t-89 -37zM814 9q-31 0 -53.5 22t-22.5 53.5t22.5 54t53.5 22.5t53.5 -22.5t22.5 -54t-22.5 -53.5t-53.5 -22z" />
<glyph glyph-name="setting" unicode="&#xe672;"
d="M962 456l-4 24l-73 25q-10 30 -24 58l34 69l-14 19q-43 60 -102 103l-20 14l-69 -35q-28 14 -58 24l-24 73l-24 4q-39 6 -72 6t-72 -6l-24 -4l-25 -73q-30 -10 -57 -24l-69 35l-20 -15q-59 -43 -102 -102l-14 -20l34 -69q-14 -28 -24 -57l-73 -25l-4 -24q-6 -39 -6 -72
t6 -72l4 -24l73 -25q10 -30 24 -57l-34 -69l14 -20q22 -30 47 -55q23 -23 55 -47l20 -14l69 34q28 -14 57 -24l25 -73l24 -4q39 -6 72 -6t72 6l24 4l25 73q29 10 57 24l69 -35l20 15q32 23 55 47q24 23 47 55l14 20l-34 69q14 28 24 58l73 24l4 24q6 39 6 72t-6 72zM896 385
v-1q0 -19 -2 -42l-36 -11l-31 -11l-10 -32q-8 -27 -21 -52l-16 -29l32 -63q-14 -17 -28 -31v-1q-14 -14 -32 -27l-62 31l-29 -15q-26 -13 -54 -22l-31 -10l-10 -31l-12 -35q-21 -3 -42 -3q-19 0 -42 3l-11 35l-11 31l-31 10q-28 9 -53 22l-29 15l-30 -15l-33 -16
q-17 13 -31 28q-15 14 -28 31l31 62l-15 29q-14 27 -22 53l-10 32l-66 22q-3 21 -3 42q0 19 3 42l66 22l10 31q8 27 22 53l15 30l-15 29l-16 33q26 33 59 59l62 -31l30 15q25 14 53 22l31 10l10 31l12 36q23 2 42 2q20 0 42 -2l22 -67l31 -9q28 -9 54 -22l29 -16l62 32
q33 -27 60 -60l-32 -62l15 -29q14 -26 23 -53l9 -32l31 -10l36 -12q3 -22 2 -41zM512 558q-72 0 -123 -51t-51 -123t51 -123t123 -51t123 51t51 123t-51 123t-123 51zM584 312q-30 -30 -72 -30t-72 30t-30 72t30 72t72.5 30t72 -30t29.5 -72t-30 -72z" />
<glyph glyph-name="picture" unicode="&#xe674;"
d="M886 768h-752q-30 0 -51 -21.5t-21 -50.5v-626q0 -29 21 -50.5t51 -21.5h752q30 0 51 21.5t21 50.5v626q0 30 -21 51t-51 21zM886 70v0h-752v0v213l186 190l217 -270q9 -10 22.5 -11.5t24.5 5.5l161 109l141 -67v-169zM886 330l-118 48q-21 16 -42 2l-156 -105l-222 275
q-10 12 -26 12t-27 -11l-161 -165v310v0h752v0v-366zM696 622q-42 0 -71.5 -29.5t-29.5 -71.5t29.5 -71.5t71.5 -29.5t71.5 29.5t29.5 71.5t-29.5 71.5t-71.5 29.5zM696 492q-12 0 -20.5 8.5t-8.5 20.5t8.5 20.5t20.5 8.5t20.5 -8.5t8.5 -20.5t-8.5 -20.5t-20.5 -8.5z" />
<glyph glyph-name="phone" unicode="&#xe675;"
d="M914 733q-66 101 -128 101q-36 0 -64 -28q-48 -48 -77 -93q-44 -68 -29 -115q4 -15 17.5 -31t44.5 -47v0q32 -32 38 -41q10 -14 -19 -60q-27 -43 -99 -118q-61 -58 -99 -85q-48 -35 -71 -35q-5 0 -8 2q-9 7 -41 38q-32 32 -47.5 45t-30.5 17q-12 4 -25 4q-43 0 -100 -40
q-40 -27 -82 -70q-33 -32 -28 -73q6 -57 100 -119q78 -50 176 -50q101 0 210.5 53.5t206.5 151.5q68 68 117 144q48 76 70 153q49 170 -32 296zM878 457q-20 -67 -63 -135q-43 -69 -106 -132q-44 -44 -92 -80q-47 -34 -95 -58q-47 -22 -93 -34q-45 -12 -87 -12
q-77 0 -137 39q-35 23 -52 40q-16 16 -17 27q-1 7 8 15q39 39 72 62q39 27 60 27q2 0 3 -1q5 -2 12 -9q11 -9 38 -35q35 -36 49 -46l2 -1q21 -14 48 -14q24 0 52 12q27 11 61 36q41 30 106 91l1 1l2 2q76 80 107 129q16 25 24 47q7 20 8 37q2 31 -15 55q-10 14 -44 48l-2 2
q-26 26 -35 37q-7 9 -9 13q-4 16 21 55q24 37 67 80v0q8 8 14 8q10 0 26 -15q18 -17 42 -54q31 -48 38 -106q6 -62 -14 -131z" />
<glyph glyph-name="paperclip" unicode="&#xe676;"
d="M885 629q-73 72 -177 72v0q-49 0 -94 -18q-46 -18 -82 -53l-233 -231q-42 -41 -41.5 -99.5t42 -100t100.5 -41.5h1q59 0 100 41l205 202q10 10 10 25t-10 25q-11 10 -25.5 10t-25.5 -10l-204 -202q-21 -21 -50 -21h-1q-30 1 -50 21q-21 21 -21 50.5t20 49.5l233 231
q52 50 126 50v0q74 0 126.5 -51.5t52.5 -124.5t-52 -124l-247 -245q-76 -75 -186 -75v0q-110 0 -187 76.5t-77.5 184.5t76.5 184l319 316q10 10 10 24.5t-10 25.5q-11 10 -25.5 10t-25.5 -10l-319 -316q-47 -47 -73 -109q-24 -60 -24 -125t25 -125q25 -62 73 -110
q48 -47 111 -72q60 -25 127 -25v0q66 0 126 24q63 25 110 72l248 245q35 35 54 81q18 45 18 93q0 103 -73 175z" />
<glyph glyph-name="notification" unicode="&#xe677;"
d="M922 518h-57v18q0 20 -14 34.5t-34 14.5h-172q-12 24 -33 24q-70 0 -145 22.5t-132 54.5t-103 63.5t-72 54t-25 22.5q-10 6 -22 6q-19 0 -33 -13.5t-14 -33.5v-801q0 -20 14 -34t33 -14q13 0 24 7q4 6 12.5 15t35 36t55.5 52t73.5 55t89 51.5t101 36.5t111.5 15
q19 0 30 22h4q2 -74 -25 -171q-6 -20 1.5 -39.5t24.5 -31.5q16 -10 35 -10q22 0 40 15q84 69 105 169q7 34 6 68q4 5 10 14q19 29 19 45v23h57q15 0 25.5 10.5t10.5 25.5v138q0 15 -10.5 25.5t-25.5 10.5zM584 275q-92 -6 -186 -46q-84 -36 -167 -98q-48 -37 -93 -81v679
q50 -39 104 -73q83 -51 165 -81q91 -33 177 -37v-2v-7v-253v-1zM793 291q-6 -10 -14 -21q-5 -3 -8 -7q-11 -13 -8 -30v0q4 -27 -3 -60q-13 -62 -59 -109q29 116 18 202q-2 14 -12 23t-24 9h-25v30q0 4 -2 9v176h137v-222zM886 380h-21v66h21v-66z" />
<glyph glyph-name="menuunfold" unicode="&#xe679;"
d="M925 695h-828q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5h828q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5zM99 450h565q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5h-565q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5zM97 72h825
q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5h-825q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5zM827 281q-11 -10 -26 -10t-25 11q-11 10 -11 25t11 25l96 94l-94 88q-11 11 -11.5 26t9.5 25.5t25 11t26 -9.5l121 -114q11 -11 11 -26t-11 -26z" />
<glyph glyph-name="inbox" unicode="&#xe67a;"
d="M885 450v0l-112 286q-4 12 -14 19.5t-23 7.5h-455q-13 0 -23 -8t-14 -20l-105 -282v-1v0q-2 -8 -1 -15v-5v-366q0 -25 17.5 -43t42.5 -18h628q25 0 43 18t18 43v366q0 3 -1 4q1 7 -1 14zM589 493v-16q0 -34 -21.5 -54.5t-55.5 -20.5t-55 20.5t-21 54.5l-1 16h-205l79 193
h399l82 -193h-201zM214 416h158q18 -43 55 -67t85 -24q52 0 90 27q34 24 51 64h157v-334h-596v334z" />
<glyph glyph-name="lock" unicode="&#xe67b;"
d="M801 596q-24 60 -67 106q-43 45 -100 71q-58 26 -122 26t-122 -26q-56 -26 -99.5 -71.5t-67.5 -105.5q-25 -61 -25 -128v-436q0 -26 18 -45t43 -19h505q26 0 44 19t18 45v385v17v34q0 67 -25 128zM414 714h1l1 1q45 21 96 21q50 0 96 -21q45 -20 80 -57t54 -85
q21 -50 21 -105v-27h-502v0v27q0 55 20 105q20 48 55 85t78 56zM763 377v-345v-1h-502v1v345h502zM483 235v-83q0 -12 8.5 -20.5t20.5 -8.5t21 8.5t9 20.5v83q24 16 24 46q0 22 -15.5 38t-38 16t-38.5 -16t-16 -38q0 -30 25 -46z" />
<glyph glyph-name="qrcode" unicode="&#xe67c;"
d="M876 492h-63v-103h-91v103h-153v102h-51v39h51v52h51v63h-51v51h-166v-63h103v-39h-52v-115h52v-90h-52v-52h-90v52h-63v-52h-39v52h-115v-52h-51v-63h63v51h91v-51h51v-102h63v102h102v52h193v-40h-153v-63h51v-102h114v63h-51v39h205v51h39v-51h63v63h-51v103zM466 287
h-63v-166h51v-39h-51v-63h103v-51h63v51h51v63h-63v-51h-39v90h102v64h-154v102zM96 338h63v-63h-63v63zM153 531h154q23 0 40 17t17 40v154q0 23 -17 40t-40 17h-154q-23 0 -40 -17t-17 -40v-154q0 -23 17 -40t40 -17zM159 594v142h142v-142h-142zM198 697h64v-64h-64v64z
M870 799h-154q-23 0 -40 -17t-17 -40v-154q0 -23 17 -40t40 -17h154q24 0 40.5 17t16.5 40v154q0 23 -16.5 40t-40.5 17zM864 736v-142h-142v142h142zM762 697h63v-64h-63v64zM870 236h-154q-23 0 -40 -17t-17 -40v-154q0 -24 17 -40.5t40 -16.5h154q24 0 40.5 16.5
t16.5 40.5v154q0 23 -16.5 40t-40.5 17zM864 173v-142h-142v142h142zM762 133h63v-63h-63v63zM307 236h-154q-23 0 -40 -17t-17 -40v-154q0 -24 17 -40.5t40 -16.5h154q23 0 40 16.5t17 40.5v154q0 23 -17 40t-40 17zM301 173v-142h-142v142h142zM198 133h64v-63h-64v63z
" />
<glyph glyph-name="tags" unicode="&#xe67d;"
d="M910 352l-360 362q-12 13 -30 13h-362q-26 0 -44 -18t-18 -43v-224q0 -17 12 -30l359 -354q18 -18 43.5 -18t44.5 18l28 28l28 -28q19 -18 44 -18t44 18l210 208q18 17 18 42.5t-17 43.5zM280 457q-32 0 -54.5 22.5t-22.5 54.5t22.5 54.5t54.5 22.5t54.5 -22.5
t22.5 -54.5t-22.5 -54.5t-54.5 -22.5v0zM869 306l-210 -207q-2 -2 -4 -2t-4 2l-32 31l142 140q16 16 16 39t-16 39l-319 322h72l355 -358q1 -1 1 -3t-1 -3v0zM869 306zM280 560q-11 0 -18.5 -7.5t-7.5 -18.5t7.5 -18.5t18.5 -7.5t18.5 7.5t7.5 18.5t-7.5 18.5t-18.5 7.5v0z
" />
<glyph glyph-name="tagso" unicode="&#xe67e;"
d="M280 617q-34 0 -58.5 -24t-24.5 -58.5t24.5 -59t58.5 -24.5t58.5 24.5t24.5 59t-24.5 58.5t-58.5 24zM280 514q-8 0 -14 6t-6 14t6 14t14 6t14 -6t6 -14t-6 -14t-14 -6zM910 352l-360 362q-12 13 -30 13h-362q-26 0 -44 -18t-18 -43v-224q0 -17 12 -30l359 -354
q18 -18 43.5 -18t44.5 18l28 28l28 -28q19 -18 44 -18t44 18l210 208q18 17 18 42.5t-17 43.5zM765 266q18 17 18 42.5t-18 43.5l-309 312h56l351 -355l-208 -205l-27 26zM159 451v213h209l351 -355l-140 -138l-37 -36l-31 -31z" />
<glyph glyph-name="cloudo" unicode="&#xe67f;"
d="M702 35h-404q-48 0 -90.5 17t-76.5 50q-34 34 -52 76t-18 90q0 83 53 147q19 23 42 40q0 38 15 71q14 33 41 60l1 1q27 26 61 39.5t72 13.5q12 0 24 -1q24 26 54 46q72 48 159 48q58 0 109 -20q51 -21 92 -61q42 -41 63 -90q14 -34 19 -71q32 -25 55 -60l7 -11v-1
q35 -59 35 -128q0 -52 -19 -99q-20 -46 -58 -83t-84 -56q-47 -18 -100 -18zM263 535q-18 -17 -26 -37v0q-9 -21 -9 -44q0 -7 1 -13l2 -23l-19 -12q-24 -14 -43 -37v0q-36 -44 -36 -101q0 -33 12 -62t36.5 -52.5t53.5 -35.5q29 -11 63 -11h404q39 0 72.5 13.5t61 40
t41.5 59.5t14 71q0 54 -29 98l-2 4q-20 29 -49 49l-14 10l-2 17q-2 34 -15 64q-15 37 -47 67q-31 31 -68 46q-38 15 -82 15q-66 0 -119 -35q-30 -21 -51 -48l-15 -19l-23 6q-14 4 -30 3q-24 0 -44.5 -8t-37.5 -25z" />
<glyph glyph-name="cloud" unicode="&#xe680;"
d="M926 411v1l-1 2q-26 39 -65 66q-3 43 -20 82q-20 48 -59 86t-88 58q-48 19 -103 19q-84 0 -152 -45q-38 -26 -65 -61q-21 5 -42 5q-34 0 -64 -12t-54 -35q-25 -24 -37 -53q-13 -30 -13 -64q0 -10 1 -18q-31 -19 -56 -49q-48 -59 -48 -135q0 -44 16 -83t48 -70t71 -46.5
t84 -15.5h440q50 0 94 17q44 18 79 53q36 35 54 78t18 92q0 70 -38 128z" />
<glyph glyph-name="cloudupload" unicode="&#xe681;"
d="M926 411v1l-1 2q-26 39 -65 66q-3 43 -20 82q-20 48 -59 86t-88 58q-48 19 -103 19q-84 0 -152 -45q-38 -26 -65 -61q-21 5 -42 5q-34 0 -64 -12t-54 -35q-25 -24 -37 -53q-13 -30 -13 -64q0 -10 1 -18q-31 -19 -56 -49q-48 -59 -48 -135q0 -44 16 -83t48 -70t71 -46.5
t84 -15.5h440q50 0 94 17q44 18 79 53q36 35 54 78t18 92q0 70 -38 128zM751.5 367.5q-10.5 -10.5 -25.5 -10.5t-26 11l-68 68v-246q0 -15 -10.5 -25.5t-25.5 -10.5t-25.5 10.5t-10.5 25.5v246l-68 -69q-11 -10 -25.5 -10t-25 10.5t-10.5 25.5t10 25l130 130q10 10 25 10
t25 -10l130 -130q11 -10 11 -25t-10.5 -25.5z" />
<glyph glyph-name="clouddownload" unicode="&#xe682;"
d="M926 411v1l-1 2q-26 39 -65 66q-3 43 -20 82q-20 48 -59 86t-88 58q-48 19 -103 19q-84 0 -152 -45q-38 -26 -65 -61q-21 5 -42 5q-34 0 -64 -12t-54 -35q-25 -24 -37 -53q-13 -30 -13 -64q0 -10 1 -18q-31 -19 -56 -49q-48 -59 -48 -135q0 -44 16 -83t48 -70t71 -46.5
t84 -15.5h440q50 0 94 17q44 18 79 53q36 35 54 78t18 92q0 70 -38 128zM751 294l-129 -130q-11 -10 -26 -10t-25 10l-130 130q-10 10 -10 25t10.5 25.5t25 10.5t25.5 -11l68 -68v246q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5v-246l69 68q10 11 25 11t25.5 -10.5
t10.5 -25.5t-11 -25z" />
<glyph glyph-name="clouddownloado" unicode="&#xe683;"
d="M926 411v1l-1 2q-26 39 -65 66q-3 43 -20 82q-20 48 -59 86t-88 58q-48 19 -103 19q-84 0 -152 -45q-38 -26 -65 -61q-21 5 -42 5q-34 0 -64 -12t-54 -35q-25 -24 -37 -53q-13 -30 -13 -64q0 -10 1 -18q-31 -19 -56 -49q-48 -59 -48 -135q0 -44 16 -83t48 -70t71 -46.5
t84 -15.5h440q50 0 94 17q44 18 79 53q36 35 54 78t18 92q0 70 -38 128zM142 203q-11 25 -11 55q0 25 8 47t24 42h1q17 22 40 35l38 22l-6 43q-1 5 -1 13q0 19 7 36v1q7 16 21 29t31 20t36 7q15 0 28 -4l43 -12l26 36q21 27 51 48q50 33 111 33q42 0 77 -15q36 -14 65 -42
q29 -29 43 -63q13 -29 15 -63l1 -31l27 -18q27 -18 46 -45l2 -3q14 -21 21 -43.5t7 -47.5q0 -35 -13 -65t-38.5 -54.5t-55.5 -36.5q-31 -13 -67 -13h-440q-31 0 -57 11q-25 10 -48 31q-21 21 -31 45v0zM466.5 355q14.5 0 25.5 -11l68 -68v246q0 15 10.5 25.5t25.5 10.5
t25.5 -10.5t10.5 -25.5v-246l69 68q10 11 25 11t25.5 -10.5t10.5 -25.5t-11 -25l-129 -130q-11 -10 -26 -10t-25 10l-130 130q-10 10 -10 25t10.5 25.5t25 10.5z" />
<glyph glyph-name="clouduploado" unicode="&#xe684;"
d="M926 411v1l-1 2q-26 39 -65 66q-3 43 -20 82q-20 48 -59 86t-88 58q-48 19 -103 19q-84 0 -152 -45q-38 -26 -65 -61q-21 5 -42 5q-34 0 -64 -12t-54 -35q-25 -24 -37 -53q-13 -30 -13 -64q0 -10 1 -18q-31 -19 -56 -49q-48 -59 -48 -135q0 -44 16 -83t48 -70t71 -46.5
t84 -15.5h440q50 0 94 17q44 18 79 53q36 35 54 78t18 92q0 70 -38 128zM142 203q-11 25 -11 55q0 25 8 47t24 42h1q17 22 40 35l38 22l-6 43q-1 5 -1 13q0 19 7 36v1q7 16 21 29t31 20t36 7q15 0 28 -4l43 -12l26 36q21 27 51 48q50 33 111 33q42 0 77 -15q36 -14 65 -42
q29 -29 43 -63q13 -29 15 -63l1 -31l27 -18q27 -18 46 -45l2 -3q14 -21 21 -43.5t7 -47.5q0 -35 -13 -65t-38.5 -54.5t-55.5 -36.5q-31 -13 -67 -13h-440q-31 0 -57 11q-25 10 -48 31q-21 21 -31 45v0zM466.5 357q14.5 0 25.5 11l68 68v-246q0 -15 10.5 -25.5t25.5 -10.5
t25.5 10.5t10.5 25.5v246l69 -68q10 -11 25 -11t25.5 10.5t10.5 25.5t-11 25l-129 130q-11 10 -26 10t-25 -10l-130 -130q-10 -10 -10 -25t10.5 -25.5t25 -10.5z" />
<glyph glyph-name="enviroment" unicode="&#xe685;"
d="M512 592q-54 0 -92 -38.5t-38 -92.5t38 -92t92 -38t92 38t38 92t-38 92.5t-92 38.5zM871 621q-31 62 -86 109t-125 74q-71 26 -148 26v0q-77 0 -149 -26q-69 -27 -124 -74t-86 -109q-32 -64 -32 -133q0 -97 47 -197q39 -83 109 -164q92 -108 212 -192q10 -7 22.5 -7
t23.5 7q120 85 212 192q70 82 109 164q47 100 47 197q0 69 -32 133zM655 319q-59 -59 -143 -59t-143 59t-59 142.5t59 142.5t143 59t143 -59t59 -142.5t-59 -142.5z" />
<glyph glyph-name="enviromento" unicode="&#xe686;"
d="M512 663q-84 0 -143 -59t-59 -142.5t59 -142.5t143 -59t143 59t59 142.5t-59 142.5t-143 59zM512 331q-54 0 -92 38t-38 92t38 92.5t92 38.5t92 -38.5t38 -92.5t-38 -92t-92 -38zM871 621q-31 62 -86 109t-125 74q-71 26 -148 26v0q-77 0 -149 -26q-69 -27 -124 -74
t-86 -109q-32 -64 -32 -133q0 -97 47 -197q39 -83 109 -164q92 -108 212 -192q10 -7 22.5 -7t23.5 7q120 85 212 192q70 82 109 164q47 100 47 197q0 69 -32 133zM831 487q0 -81 -40 -166q-34 -73 -98 -148q-77 -90 -181 -166q-104 76 -181 166q-63 75 -98 148
q-40 85 -40 167q0 53 24 102q25 48 69 86q45 39 102 61q60 22 124 22v0q64 0 124 -22q57 -22 102 -61q45 -38 69 -86q24 -50 24 -103z" />
<glyph glyph-name="eye" unicode="&#xe687;"
d="M512 487q-42 0 -72 -30t-30 -72t30 -72t72 -30t72 30t30 72t-30 72t-72 30zM963 384q0 14 -21 62q-26 65 -61 109q-57 71 -139 112q-99 50 -230 50t-231 -50q-80 -41 -138 -112q-34 -43 -61 -109q-21 -48 -21 -62v0v0v0v0q0 -14 21 -62q27 -66 61 -109q57 -71 139 -112
q100 -50 230 -50t230 50q81 41 139 112q35 44 62 109q20 48 20 62v0v0v0v0zM512 212q-72 0 -122.5 50.5t-50.5 122t50.5 122.5t122.5 51t122.5 -51t50.5 -122.5t-50.5 -122t-122.5 -50.5z" />
<glyph glyph-name="eyeo" unicode="&#xe688;"
d="M963 384q0 14 -21 62q-26 65 -61 109q-57 71 -139 112q-99 50 -230 50t-231 -50q-80 -41 -138 -112q-34 -43 -61 -109q-21 -48 -21 -62v0v0v0v0q0 -14 21 -62q27 -66 61 -109q57 -71 139 -112q100 -50 230 -50t230 50q81 41 139 112q35 44 62 109q20 48 20 62v0v0v0v0z
M889 384q-25 -77 -64 -126h-1q-46 -59 -114 -93q-85 -42 -198.5 -42t-198.5 42q-67 34 -114 93q-40 49 -65 126q25 77 65 126q47 59 114 93q85 43 199 43t198 -43q67 -33 114 -93q40 -49 65 -126zM512 558q-72 0 -122.5 -50.5t-50.5 -122.5t50.5 -122.5t122.5 -50.5
t122.5 50.5t50.5 122.5t-50.5 122.5t-122.5 50.5zM614 385q0 -42 -30 -72t-72 -30t-72 30t-30 72t30 72t72 30t72 -30t30 -72z" />
<glyph glyph-name="camera" unicode="&#xe689;"
d="M899 659h-168l-94 100h-1q-10 10 -26 10h-196q-16 0 -27 -10v0l-94 -100h-168q-26 0 -44.5 -18.5t-18.5 -44.5v-532q0 -26 18.5 -44.5t44.5 -18.5l774 -1q26 0 44.5 19t18.5 45v532q0 26 -18.5 44.5t-44.5 18.5zM428 696h168l35 -37h-238zM511 164q-72 0 -123 51t-51 123
t51 123t123 51t123 -51t51 -123t-51 -123t-123 -51zM511 440q-42 0 -72 -30t-30 -72.5t30 -72.5t72.5 -30t72.5 30t30 72.5t-30 72.5t-73 30z" />
<glyph glyph-name="camerao" unicode="&#xe68a;"
d="M511 164q72 0 123 51t51 123t-51 123t-123 51t-123 -51t-51 -123t51 -123t123 -51zM439 410q30 30 72.5 30t72.5 -30t30 -72.5t-30 -72.5t-72.5 -30t-72.5 30t-30 72.5t30 72.5zM899 659h-168l-94 100h-1q-10 10 -26 10h-196q-16 0 -27 -10v0l-94 -100h-168
q-26 0 -44.5 -18.5t-18.5 -44.5v-532q0 -26 18.5 -44.5t44.5 -18.5l774 -1q26 0 44.5 19t18.5 45v532q0 26 -18.5 44.5t-44.5 18.5zM428 696h168l35 -37h-238zM881 81h-739v497h739v-497z" />
<glyph glyph-name="windows" unicode="&#xe68b;"
d="M527 27l434 -71v401h-434v-330zM527 758v-329h434v401zM68 429h367v317l-367 -61v-256zM68 99l367 -60v318h-367v-258z" />
<glyph glyph-name="export2" unicode="&#xe690;"
d="M248.5 473q14.5 0 25 10.5t10.5 25.5v203q0 8 5.5 13.5t13.5 5.5h567q8 0 13 -5.5t5 -13.5v-587q0 -7 -5 -12.5t-13 -5.5h-255q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h255q37 0 63.5 26.5t26.5 63.5v587q0 38 -26.5 64t-63.5 26h-567q-38 0 -64 -26
t-26 -64v-203q0 -15 10.5 -25.5t25 -10.5zM622 263q44 66 55 136q2 14 -7 26t-23 14q-3 1 -5 1q-14 0 -24 -9t-12 -22l-3.5 -17.5t-14 -40t-26.5 -50.5q-70 -104 -206 -104h-4q-14 0 -25 -10.5t-11 -25.5v-42l-100 96l101 84v-35q0 -14 10.5 -24.5t25 -10.5t25 10.5
t10.5 24.5v111q0 23 -20 33q-7 3 -16 3q-12 0 -22 -8l-190 -159q-13 -10 -13 -26q-1 -16 11 -27l190 -181q17 -16 38.5 -7t21.5 33v91q152 13 234 136z" />
<glyph glyph-name="export" unicode="&#xe691;"
d="M838 330q-15 0 -25.5 -10.5t-10.5 -25.5v-204q0 -8 -5.5 -13t-12.5 -5h-567q-8 0 -13.5 5t-5.5 13v587q0 8 5.5 13.5t13.5 5.5h254q15 0 25.5 10.5t10.5 25t-10.5 25t-25.5 10.5h-254q-37 0 -63.5 -26t-26.5 -64v-587q0 -37 26.5 -63.5t63.5 -26.5h567q37 0 63.5 26.5
t26.5 63.5v204q0 15 -10.5 25.5t-25.5 10.5zM464 540q-45 -68 -54 -136q-2 -15 7 -26.5t23 -13.5q2 -1 5 -1q13 0 23.5 9t12.5 22q0 5 3 17.5t14 40t27 50.5q70 103 206 104l3 -1q15 0 25.5 10.5t10.5 25.5v42l101 -95l-101 -84v34q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5
t-10.5 -25.5v-111q0 -22 21 -32q7 -3 15 -3q13 0 23 8l190 158q12 11 13 26q0 17 -11 28l-190 181q-17 16 -39 6.5t-22 -32.5v-91q-152 -13 -234 -136z" />
<glyph glyph-name="circledowno" unicode="&#xe693;"
d="M512 895q-104 0 -199 -40.5t-163.5 -109t-109 -163t-40.5 -199t40.5 -199t109 -163t163.5 -109t199 -40.5t198.5 40.5t163 109t109 163t40.5 199t-40.5 199t-109 163t-163 109t-198.5 40.5zM822 73q-61 -61 -139 -94q-82 -35 -171.5 -35t-171.5 35q-79 33 -139.5 94
t-94.5 140q-34 81 -34 170.5t35 171.5q33 79 94 139.5t140 94.5q81 34 170.5 34t171.5 -34q79 -34 139.5 -95t94.5 -139q34 -82 34 -171.5t-34 -171.5q-34 -78 -95 -139zM768 520q-16 0 -28 -12l-229 -229l-228 228q-12 12 -28.5 12t-28 -11.5t-11.5 -28t12 -28.5l256 -255
q11 -12 27.5 -12t28.5 12l257 256q12 12 12 28.5t-12 27.5q-12 12 -28 12z" />
<glyph glyph-name="circledown" unicode="&#xe694;"
d="M512 895q-104 0 -199 -40.5t-163.5 -109t-109 -163t-40.5 -199t40.5 -199t109 -163t163.5 -109t199 -40.5t198.5 40.5t163 109t109 163t40.5 199t-40.5 199t-109 163t-163 109t-198.5 40.5zM796 452l-258 -256q-11 -12 -27 -12q-17 0 -28 12l-256 255q-12 12 -12 28.5
t11.5 28t28 11.5t28.5 -12l227 -228l230 229q12 12 28.5 12t28 -11.5t11.5 -28.5q0 -16 -12 -28z" />
<glyph glyph-name="hdd" unicode="&#xe69a;"
d="M786 765v0q-4 15 -17 24.5t-29 9.5h-462q-16 0 -29 -9.5t-17 -24.5v0q-3 -8 -68 -243q-68 -245 -68 -248v-257q0 -20 14.5 -34.5t34.5 -14.5h733q20 0 34.5 14.5t14.5 34.5l1 265zM864 224v-193h-705v193h705zM861 287h-699l127 449h440zM588 70q13 0 22.5 9.5t9.5 22.5
v51q0 13 -9.5 22.5t-22.5 9.5t-22 -9.5t-9 -22.5v-51q0 -13 9 -22.5t22 -9.5zM691 70q13 0 22.5 9.5t9.5 22.5v51q0 13 -9.5 22.5t-22.5 9.5t-22 -9.5t-9 -22.5v-51q0 -13 9 -22.5t22 -9.5zM794 70q13 0 22 9.5t9 22.5v51q0 13 -9 22.5t-22 9.5t-22.5 -9.5t-9.5 -22.5v-51
q0 -13 9.5 -22.5t22.5 -9.5z" />
<glyph glyph-name="ie" unicode="&#xe69b;"
d="M878 548q24 66 22 118q-3 57 -37 91q-33 33 -111.5 27.5t-173.5 -47.5q-13 1 -27 1q-65 0 -126 -21q-58 -21 -107 -60q-101 -80 -132 -203l-7 -28l17 22q69 89 150 136q-22 -21 -25 -25q-73 -73 -126 -159q-49 -80 -75 -160q-25 -75 -24 -135t28 -88q37 -36 99 -36
q69 0 160 44q78 -39 168 -39q121 0 219 70t137 184l3 8h-213l-1 -3q-21 -38 -58 -60t-80.5 -22t-80.5 22t-57 60q-18 32 -19 69h319h204l1 5q2 20 2 43q0 100 -49 186zM201 222q45 -111 146 -177q-54 -23 -95 -26q-45 -3 -67 20q-23 23 -19 71t35 112zM859 578
q-30 42 -70 75q-39 32 -85 53q108 42 149 1q37 -38 6 -129zM402 423q5 57 48 96t101 39t100.5 -39t48.5 -96h-298z" />
<glyph glyph-name="delete" unicode="&#xe69f;"
d="M178 -50q-1 0 -3 1l1 -0.5t2 -0.5zM170 -46q-3 2 -5 3q2 -1 5 -3zM950.5 692.5q-10.5 10.5 -26.5 10.5h-184v58q0 29 -21 49.5t-50 20.5h-314q-30 0 -50.5 -20.5t-20.5 -49.5v-58h-185q-15 0 -25.5 -10.5t-10.5 -25t10.5 -25t25.5 -10.5h31v-623q0 -29 21 -49.5t50 -20.5
h632q29 0 50 20.5t21 49.5v623h20q15 0 26 10.5t11 25t-10.5 25zM354 760h315v-57h-315v57zM833 9h-632v623h91h541v-623v0zM511.5 512q-14.5 0 -25 -10.5t-10.5 -25.5v-334q0 -15 10.5 -25.5t25 -10.5t25 10.5t10.5 25.5v334q0 15 -10.5 25.5t-25 10.5zM317 512
q-15 0 -25.5 -10.5t-10.5 -25.5v-334q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v334q0 15 -10.5 25.5t-25.5 10.5zM704 512q-15 0 -25.5 -10.5t-10.5 -25.5v-334q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v334q0 15 -10.5 25.5t-25.5 10.5z" />
<glyph glyph-name="enter" unicode="&#xe6a0;"
d="M900 510v192q0 17 -11.5 28.5t-28 11.5t-28.5 -11.5t-12 -28.5v-192q0 -92 -65 -157t-157 -65h-340l113 112q11 12 11 28.5t-11.5 28t-28 11.5t-28.5 -12l-178 -178q-12 -12 -12 -28.5t12 -28.5l183 -183q12 -12 28.5 -12t28.5 11.5t12 28t-12 28.5l-114 114h336
q125 0 213.5 88.5t88.5 213.5z" />
<glyph glyph-name="pushpino" unicode="&#xe6a1;"
d="M303 728q2 -10 1 -20l-1 -36l29 -23l214 -170l30 -24l37 12q44 15 90 15q49 0 95 -16q26 -10 51 -24l-169 -170l-43 -43l-13 -13v0l-169 -170q-27 45 -36 96q-13 72 10 141l12 37l-24 30l-170 214l-23 29l-36 -1h-1.5h-2.5q-8 0 -16 1zM318 831q-14 0 -24 -10l-219 -219
q-11 -11 -9.5 -27t14.5 -24q48 -31 104 -31h6l170 -215q-28 -84 -11.5 -175.5t74.5 -163.5q11 -13 27 -13q14 0 24 10l206 207l223 -223q10 -10 23.5 -10t23 9.5t9.5 23t-10 23.5l-223 223l206 207q11 11 10 26t-13 25q-98 80 -226 80q-57 0 -112 -18l-215 170q2 60 -30 110
q-10 15 -28 15v0z" />
<glyph glyph-name="pushpin" unicode="&#xe6a2;"
d="M949 -7l-223 223l206 207q11 11 10 26t-13 25q-72 58 -163 74t-175 -12l-215 170q2 60 -30 110q-9 13 -25 14.5t-27 -9.5l-219 -219q-11 -11 -9.5 -27t14.5 -24q50 -33 110 -31l170 -215q-28 -84 -11.5 -175.5t74.5 -163.5q10 -12 25 -13t26 10l206 207l223 -223
q10 -10 23.5 -10t23 9.5t9.5 23t-10 23.5z" />
<glyph glyph-name="heart" unicode="&#xe6a3;" horiz-adv-x="1025"
d="M1000 648q-23 56 -66 99q-84 85 -201 85q-64 0 -121.5 -28t-99.5 -79q-42 51 -99.5 79t-121.5 28q-117 0 -201 -86q-43 -43 -66 -99q-25 -59 -24 -122q1 -69 29 -130.5t79 -104.5q5 -4 9 -8q14 -12 113 -102q208 -191 257 -235q11 -9 25 -9t25 9q33 30 181 165
q158 144 196 179q52 43 81 105t29 132q0 64 -24 122z" />
<glyph glyph-name="hearto" unicode="&#xe6a4;" horiz-adv-x="1025"
d="M1000 648q-23 56 -66 99q-84 85 -201 85q-64 0 -121.5 -28t-99.5 -79q-42 51 -99.5 79t-121.5 28q-117 0 -201 -86q-43 -43 -66 -99q-25 -59 -24 -122q1 -69 29 -130.5t79 -104.5q5 -4 9 -8q14 -12 113 -102q208 -191 257 -235q11 -9 25 -9t25 9q33 30 181 165
q158 144 196 179q52 43 81 105t29 132q0 64 -24 122zM568 672q30 40 73.5 61.5t91.5 21.5q85 0 147 -62q32 -32 49 -74q18 -44 18 -93q0 -53 -22 -101q-22 -46 -60 -77l-2 -2q-62 -55 -197 -180q-108 -98 -154 -140q-58 53 -202 184l-48 44q-76 69 -94 85q-1 2 -2 3
q-6 4 -8 7q-39 32 -60 78.5t-21 97.5q-1 49 18 93q17 42 49 74q62 63 147 63q48 0 91.5 -22t73.5 -61q21 -28 56 -28t56 28z" />
<glyph glyph-name="smile-circle" unicode="&#xe6a7;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM254 454q-25 0 -42.5 17.5t-17.5 42t17.5 42.5t42.5 18t42.5 -18t17.5 -42.5t-17.5 -42t-42.5 -17.5zM512 130
q-68 0 -116 48.5t-48 116.5q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5q0 -38 27 -65.5t65 -27.5t65 27.5t27 65.5q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5q0 -68 -48 -116.5t-116 -48.5zM769.5 454q-24.5 0 -42 17.5t-17.5 42t17.5 42.5t42 18t42.5 -18
t18 -42.5t-18 -42t-42.5 -17.5z" />
<glyph glyph-name="smileo" unicode="&#xe6a8;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM640 331q-15 0 -25.5 -10.5t-10.5 -25.5q0 -38 -27 -65.5t-65 -27.5t-65 27.5t-27 65.5q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5
q0 -68 48 -116.5t116 -48.5t116 48.5t48 116.5q0 15 -10.5 25.5t-25.5 10.5zM254 514zM194 513.5q0 24.5 17.5 42.5t42.5 18t42.5 -18t17.5 -42.5t-17.5 -42t-42.5 -17.5t-42.5 17.5t-17.5 42zM770 514zM710 513.5q0 24.5 17.5 42.5t42 18t42.5 -18t18 -42.5t-18 -42
t-42.5 -17.5t-42 17.5t-17.5 42z" />
<glyph glyph-name="frowno" unicode="&#xe6a9;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM640 130q-15 0 -25.5 11t-10.5 25q0 39 -27 66t-65 27t-65 -27t-27 -66q0 -14 -10.5 -25t-25.5 -11t-25.5 11t-10.5 25q0 68 48 116.5t116 48.5t116 -48.5
t48 -116.5q0 -14 -10.5 -25t-25.5 -11zM254 514zM194 513.5q0 24.5 17.5 42.5t42.5 18t42.5 -18t17.5 -42.5t-17.5 -42t-42.5 -17.5t-42.5 17.5t-17.5 42zM770 514zM710 513.5q0 24.5 17.5 42.5t42 18t42.5 -18t18 -42.5t-18 -42t-42.5 -17.5t-42 17.5t-17.5 42z" />
<glyph glyph-name="calculator" unicode="&#xe6aa;"
d="M857 832h-689q-16 0 -27.5 -11.5t-11.5 -27.5v-818q0 -16 11.5 -27.5t27.5 -11.5h689q16 0 27 11.5t11 27.5v818q0 16 -11 27.5t-27 11.5zM818 14h-612v740h612v-740v0zM324 410h377q16 0 27.5 11.5t11.5 27.5v185q0 16 -11.5 27.5t-27.5 11.5h-377q-16 0 -27.5 -11.5
t-11.5 -27.5v-185q0 -16 11.5 -27.5t27.5 -11.5zM362 595h300v-108h-300v108zM293 189h23v-23q0 -16 11.5 -27.5t27.5 -11.5t27.5 11.5t11.5 27.5v23h23q16 0 27.5 11.5t11.5 27.5t-11.5 27t-27.5 11h-23v24q0 16 -11.5 27t-27.5 11t-27.5 -11t-11.5 -27v-24h-23
q-16 0 -27.5 -11t-11.5 -27t11.5 -27.5t27.5 -11.5zM607 328q-16 0 -27.5 -11t-11.5 -27t11.5 -27.5t27.5 -11.5h124q16 0 27.5 11.5t11.5 27.5t-11.5 27t-27.5 11h-124zM731 162h-124q-16 0 -27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5h124q16 0 27.5 11.5t11.5 27.5
t-11.5 27.5t-27.5 11.5z" />
<glyph glyph-name="chrome" unicode="&#xe6ac;" horiz-adv-x="1025"
d="M258 449l-146 254q71 90 176 141.5t224 51.5q138 0 255.5 -68t185.5 -183h-418q-11 1 -23 1q-90 0 -161 -55.5t-93 -141.5v0zM695 571h294q35 -90 35 -187q0 -103 -40 -197.5t-107.5 -163t-161.5 -109.5t-197 -42l209 363q47 67 47 149q0 110 -79 187v0v0zM326 384
q0 77 54.5 131.5t131.5 54.5t131.5 -54.5t54.5 -131.5t-54.5 -131.5t-131.5 -54.5t-131.5 54.5t-54.5 131.5zM582 131l-146 -253q-122 18 -222 89t-157 181t-57 236q0 135 66 251l209 -362q32 -68 96 -109.5t141 -41.5q36 0 70 9z" />
<glyph glyph-name="github" unicode="&#xe6ad;" horiz-adv-x="1025"
d="M0 371q0 -166 95.5 -298.5t247.5 -185.5q6 -1 10 -1t6.5 1.5t4 3t2 5t0.5 5v6v6.5v88q-37 -4 -66 0.5t-45.5 14t-29 23.5t-17 25.5t-9 24t-5.5 14.5q-9 15 -27 27.5t-27 20t-2 14.5q50 26 113 -66q34 -51 119 -30q10 41 40 70q-116 21 -172 86t-56 158q0 87 55 151
q-22 65 6 137q29 2 65 -11.5t50.5 -23t25.5 -17.5q57 16 128.5 16t129.5 -16q13 9 29 19t49 21.5t61 9.5q27 -71 7 -135q56 -64 56 -151q0 -93 -57 -158.5t-172 -85.5q43 -43 43 -104v-129q0 -1 1 -3q0 -6 0.5 -9t4.5 -6t12 -3q153 52 250.5 185.5t97.5 300.5
q0 104 -40.5 199t-109 163.5t-163.5 109t-199 40.5t-199 -40.5t-163.5 -109t-109 -163.5t-40.5 -199v0z" />
<glyph glyph-name="iconfontdesktop" unicode="&#xe6b4;"
d="M902 766h-779q-23 0 -40 -17t-17 -40v-480q0 -24 17 -40.5t40 -16.5h357v-108h-147q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22t22.5 -9h358q13 0 22.5 9t9.5 22t-9.5 22.5t-22.5 9.5h-148v108h359q24 0 40.5 16.5t16.5 40.5v480q0 23 -16.5 40t-40.5 17zM896 703v-468h-767
v468h767z" />
<glyph glyph-name="caretcircleoup" unicode="&#xe6b5;"
d="M512 895q-104 0 -199 -40.5t-163.5 -109t-109 -163.5t-40.5 -199t40.5 -198.5t109 -163t163.5 -109t199 -40.5t198.5 40.5t163 109t109 163t40.5 198.5t-40.5 199t-109 163.5t-163 109t-198.5 40.5zM828 67q-62 -62 -142 -96q-83 -35 -174 -35t-174 35q-81 34 -143 96
t-96 142q-35 83 -35 174t35 175q34 80 96 142t142 96q83 35 174.5 35t174.5 -35q80 -34 142 -96t96 -142q35 -83 35 -174.5t-35 -174.5q-34 -80 -96 -142zM528 559q-7 7 -16 7h-1q-10 0 -16 -7l-229 -244q-10 -11 -4.5 -25t21.5 -14h457q16 0 22 14t-5 25z" />
<glyph glyph-name="upload" unicode="&#xe6b6;"
d="M488 822q10 10 24 10t24 -10l156 -156q10 -10 10 -24.5t-10 -24.5t-24 -10t-25 10l-96 97v-578q0 -14 -10.5 -24t-24.5 -10t-24.5 10t-10.5 24v578l-97 -97q-10 -10 -24 -10t-24 10t-10 24.5t10 24.5zM924.5 256q-14.5 0 -24.5 -10.5t-10 -24.5v-195q0 -9 -6 -15t-15 -6
h-716q-9 0 -15 6t-6 15v195q0 14 -10 24.5t-24.5 10.5t-24.5 -10.5t-10 -24.5v-223q0 -26 18 -44t44 -18h772q26 0 44 18.5t18 43.5v223q0 14 -10 24.5t-24.5 10.5z" />
<glyph glyph-name="download" unicode="&#xe6b7;"
d="M488 112q10 -10 24 -10t24 10l156 156q11 10 11 24t-10.5 24.5t-24.5 10.5t-24 -11l-97 -96v577q0 15 -10.5 25t-24.5 10t-24 -10t-10 -25v-577l-97 97q-11 10 -25 10t-24 -10.5t-10 -24.5t10 -24zM924.5 256q-14.5 0 -24.5 -10.5t-10 -24.5v-195q0 -9 -6 -15t-15 -6
h-716q-9 0 -15 6t-6 15v195q0 14 -10 24.5t-24.5 10.5t-24.5 -10.5t-10 -24.5v-223q0 -26 18 -44t44 -18h772q26 0 44 18.5t18 43.5v223q0 14 -10 24.5t-24.5 10.5z" />
<glyph glyph-name="piechart" unicode="&#xe6b8;"
d="M467 -128q95 0 180 36t150 101l-330 328v465q-95 0 -181.5 -36.5t-149 -99t-99.5 -148.5t-37 -180.5t37 -181t99.5 -148.5t149 -99t181.5 -37v0v0zM531 404h493q0 100 -39 191t-105 157t-157.5 105t-191.5 39v-492v0zM557 339l332 -327q64 64 99.5 148.5t35.5 178.5h-467
v0z" />
<glyph glyph-name="lock1" unicode="&#xe6b9;"
d="M824 614q-26 64 -73 113q-46 50 -107 77q-63 28 -132 28t-132 -28q-61 -27 -108 -76.5t-72 -113.5q-27 -66 -27 -139v-470q0 -29 19.5 -49t46.5 -20h545q28 0 47.5 20t18.5 49v415l1 19v36q0 72 -27 139zM407 741v0l1 1q49 22 104 22q54 0 104 -22q48 -22 86 -62
q38 -39 59 -92t21 -113v-29h-541v0v29q0 59 22 113q21 53 59 92.5t85 60.5zM783 378v-373q0 -1 -1 -1h-540q-1 0 -1 1v373h542zM480 224v-90q0 -13 9.5 -22t22.5 -9t22.5 9t9.5 22v90q27 17 27 49q0 25 -17.5 42t-41.5 17t-41.5 -17t-17.5 -42q0 -32 27 -49z" />
<glyph glyph-name="unlock" unicode="&#xe6ba;"
d="M241 446v30q0 58 22 113q21 52 59 91q38 40 85 61v0l1 1q49 22 104 22q54 0 104 -22q48 -22 86 -61q21 -23 53 -83q10 -20 31 -20h14q14 0 21.5 11.5t2.5 24.5v0q-26 64 -73 113q-46 50 -107 77q-63 28 -132 28t-132 -28q-61 -27 -108 -76.5t-72 -113.5q-27 -66 -27 -139
v-470q0 -29 19.5 -49t46.5 -20h545q28 0 47 20t19 49l1 377q0 26 -19 45t-45 19h-546v0zM783 5q0 -1 -1 -1h-540q-1 0 -1 1v373h542v-373zM480 224v-90q0 -13 9.5 -22t22.5 -9t22.5 9t9.5 22v90q27 17 27 49q0 25 -17.5 42t-41.5 17t-41.5 -17t-17.5 -42q0 -32 27 -49z" />
<glyph glyph-name="windowso" unicode="&#xe6bc;"
d="M527 27l434 -71v401h-434v-330zM599 285h290v-244l-290 47v197zM527 758v-329h434v401zM889 501h-290v196l290 48v-244zM68 429h367v317l-367 -61v-256zM140 624l223 37v-160h-223v123zM68 99l367 -60v318h-367v-258zM140 285h223v-161l-223 36v125z" />
<glyph glyph-name="dotchart" unicode="&#xe6bd;"
d="M923 8h-788v789q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-825q0 -15 10.5 -25.5t25.5 -10.5h824q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM319 259zM253 259.5q0 27.5 19 46.5t46.5 19t47 -19t19.5 -46.5t-19.5 -47t-47 -19.5t-46.5 19.5t-19 47z
M598 299zM512 299q0 35 25 60t60.5 25t60.5 -25t25 -60t-25 -60t-60.5 -25t-60.5 25t-25 60zM623 514zM563 514q0 25 17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5t-17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5zM850 657zM805 657.5q0 18.5 13 32t32 13.5t32.5 -13.5
t13.5 -32t-13.5 -32t-32.5 -13.5t-32 13.5t-13 32zM863 466zM830 466q0 14 9.5 23.5t23.5 9.5t23.5 -9.5t9.5 -23.5t-9.5 -23.5t-23.5 -9.5t-23.5 9.5t-9.5 23.5z" />
<glyph glyph-name="barchart" unicode="&#xe6be;"
d="M923 -64h-824q-15 0 -25.5 10.5t-10.5 25.5v824q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5v-788h788q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5zM264 523q-29 -1 -50 -22t-22 -50q0 -23 11.5 -41t30.5 -28v-285q0 -13 9.5 -22.5t22.5 -9.5v0
q13 0 22.5 9.5t9.5 22.5v285q19 9 30.5 27t11.5 40q0 31 -22.5 53t-53.5 21zM542 641q-30 -1 -51 -22t-21 -50q-1 -23 10.5 -41t31.5 -28v-403q0 -13 9 -22.5t23 -9.5v0q13 0 22.5 9.5t9.5 22.5v403q18 9 30 27t12 40q0 31 -22.5 53t-53.5 21zM895 438q0 31 -22.5 53
t-53.5 21q-29 -1 -50 -22t-22 -50q0 -23 11.5 -41t30.5 -28v-274q0 -13 9.5 -22.5t22.5 -9.5v0q13 0 22.5 9.5t9.5 22.5v274q19 9 30.5 27t11.5 40z" />
<glyph glyph-name="codesquare" unicode="&#xe6bf;"
d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM229 347q-15 0 -25.5 10.5t-10.5 25.5t10 26l115 115l-115 117q-10 11 -10 25.5t10.5 25t25.5 10.5t25 -10l141 -142q10 -11 10 -26
t-11 -25l-140 -141q-10 -11 -25 -11zM618 347v0l-199 1q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5v0l199 -1q15 0 25.5 -10.5t10.5 -25.5t-11 -25.5t-25 -10.5z" />
<glyph glyph-name="plussquare" unicode="&#xe6c0;"
d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM732 348h-184v-183q0 -15 -10.5 -25.5t-25 -10.5t-25.5 10.5t-11 25.5v183h-184q-15 0 -25.5 10.5t-10.5 25t10.5 25.5t25.5 11h184v183
q0 15 11 25.5t25.5 10.5t25 -10.5t10.5 -25.5v-183h184q15 0 25.5 -11t10.5 -25.5t-10.5 -25t-25.5 -10.5z" />
<glyph glyph-name="minussquare" unicode="&#xe6c1;"
d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM768 383q0 -15 -11 -25.5t-25 -10.5h-442q-14 0 -25 10.5t-11 25.5v0q0 15 11 25.5t25 10.5h442q14 0 25 -10.5t11 -25.5v0z" />
<glyph glyph-name="closesquare" unicode="&#xe6c2;"
d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM717.5 178.5q-10.5 -10.5 -25.5 -10.5t-26 10l-154 155l-154 -155q-11 -10 -26 -10t-25.5 10.5t-10.5 25.5t11 25l154 155l-154 155
q-11 10 -11 25t10.5 25.5t25.5 10.5t26 -10l154 -155l154 155q11 10 26 10t25.5 -10.5t10.5 -25.5t-11 -25l-154 -155l154 -155q11 -11 11 -25.5t-10.5 -25z" />
<glyph glyph-name="closesquareo" unicode="&#xe6c3;"
d="M717.5 589.5q-10.5 10.5 -25.5 10.5t-26 -10l-154 -155l-154 155q-11 10 -26 10t-25.5 -10.5t-10.5 -25.5t11 -25l154 -155l-154 -155q-11 -10 -11 -25t10.5 -25.5t25.5 -10.5t26 10l154 155l154 -155q11 -10 26 -10t25.5 10.5t10.5 25t-11 25.5l-154 155l154 155
q11 10 11 25t-10.5 25.5zM888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0z" />
<glyph glyph-name="checksquare" unicode="&#xe6c4;"
d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM772 539l-359 -360l-1 -1q-3 -3 -8 -6q-8 -5 -18 -5q-21 0 -31 18l-109 191q-8 13 -4 27t17 21.5t27.5 3.5t21.5 -17l86 -149l327 328
q11 11 26 11t25.5 -10.5t10.5 -25.5t-11 -26z" />
<glyph glyph-name="checksquareo" unicode="&#xe6c5;"
d="M721 590l-327 -328l-86 149q-7 13 -21.5 17t-27.5 -3.5t-17 -21.5t4 -27l109 -191q10 -18 31 -18q10 0 18 5q5 3 8 6l1 1l359 360q11 11 11 26t-10.5 25.5t-25.5 10.5t-26 -11zM888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753
q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0z" />
<glyph glyph-name="fastbackward" unicode="&#xe6c6;"
d="M525 414l436 376q18 17 40.5 6.5t22.5 -36.5v-752q0 -26 -22.5 -36.5t-40.5 6.5l-436 377q-13 12 -13 30t13 29zM36 800v0q15 0 25.5 -10.5t10.5 -25.5v-298l377 324q18 17 40.5 6.5t22.5 -36.5v-375v-377q0 -26 -22.5 -36.5t-40.5 6.5l-377 326v-300q0 -15 -10.5 -25.5
t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v760q0 15 10.5 25.5t25.5 10.5z" />
<glyph glyph-name="fastforward" unicode="&#xe6c7;"
d="M499 414l-436 376q-18 17 -40.5 6.5t-22.5 -36.5v-752q0 -26 22.5 -36.5t40.5 6.5l436 378q13 11 13 29t-13 29zM988 800v0q-15 0 -25.5 -10.5t-10.5 -25.5v-298l-377 324q-18 17 -40.5 6.5t-22.5 -36.5v-375v-377q0 -26 22.5 -36.5t40.5 6.5l377 326v-300
q0 -15 10.5 -25.5t25.5 -10.5v0q15 0 25.5 10.5t10.5 25.5v760q0 15 -10.5 25.5t-25.5 10.5z" />
<glyph glyph-name="upsquare" unicode="&#xe6c8;"
d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM757.5 277q-10.5 -10 -25.5 -9.5t-25 10.5l-195 208l-195 -208q-10 -10 -25 -10.5t-26 9.5t-11.5 25t10.5 26l221 236q10 11 26 11t26 -11
l221 -236q10 -11 9.5 -26t-11 -25z" />
<glyph glyph-name="downsquare" unicode="&#xe6c9;"
d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM759 451l-221 -236q-10 -11 -26 -11t-26 11l-221 236q-11 11 -10.5 26t11.5 25t26 9.5t25 -11.5l195 -207l195 207q10 11 25 11.5
t25.5 -9.5t11 -25t-9.5 -26z" />
<glyph glyph-name="leftsquare" unicode="&#xe6ca;"
d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM616 189q11 -10 11.5 -25t-9.5 -25.5t-25 -11t-26 9.5l-236 221q-11 10 -11 26t11 26l236 221q11 11 26 10.5t25 -11.5t9.5 -26t-10.5 -25
l-208 -195z" />
<glyph glyph-name="rightsquare" unicode="&#xe6cb;"
d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM694 358l-236 -221q-11 -10 -26 -9.5t-25 11t-9.5 25.5t10.5 25l208 195l-208 195q-10 10 -10.5 25t9.5 26t25 11.5t26 -10.5l236 -221
q11 -10 11 -26t-11 -26z" />
<glyph glyph-name="rightsquareo" unicode="&#xe6cc;"
d="M888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0zM705 384q0 16 -11 26l-236 221q-11 11 -26 10.5t-25 -11.5t-9.5 -26t10.5 -25l208 -195
l-208 -195q-10 -10 -10.5 -25t9.5 -26t25 -11.5t26 10.5l236 221q11 10 11 26z" />
<glyph glyph-name="leftsquareo" unicode="&#xe6cd;"
d="M888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0zM331 358l236 -221q11 -10 26 -9.5t25 11t9.5 25.5t-11.5 25l-207 195l207 195q11 10 11.5 25
t-9.5 26t-25 11.5t-26 -10.5l-236 -221q-11 -10 -11 -26t11 -26z" />
<glyph glyph-name="down-square-o" unicode="&#xe6ce;"
d="M888 760v0v0v-753h-752v753h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0zM538 215l221 236q10 11 9.5 26t-11 25t-25.5 9.5t-25 -11.5l-195 -207l-195 207q-10 11 -25 11.5
t-26 -9.5t-11.5 -25t10.5 -26l221 -236q10 -11 26 -11t26 11z" />
<glyph glyph-name="up-square-o" unicode="&#xe6cf;"
d="M888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0zM512 575q-16 0 -26 -11l-221 -236q-11 -11 -10.5 -26t11.5 -25t26 -9.5t25 10.5l195 208
l195 -208q10 -10 25 -10.5t25.5 9.5t11 25t-9.5 26l-221 236q-10 11 -26 11z" />
<glyph glyph-name="play" unicode="&#xe6d0;"
d="M512 894q-139 0 -256.5 -68.5t-186 -186t-68.5 -256.5t68.5 -256.5t186 -186t256.5 -68.5t256.5 68.5t186 186t68.5 256.5t-68.5 256.5t-186 186t-256.5 68.5zM712 369l-291 -247q-6 -6 -15 -6q-8 0 -14.5 5.5t-6.5 14.5v495q0 8 6.5 13.5t15 5.5t14.5 -6l291 -247
q6 -6 6 -14t-6 -14z" />
<glyph glyph-name="playcircleo" unicode="&#xe6d1;"
d="M512 894q-139 0 -256.5 -68.5t-186 -186t-68.5 -256.5t68.5 -256.5t186 -186t256.5 -68.5t256.5 68.5t186 186t68.5 256.5t-68.5 256.5t-186 186t-256.5 68.5zM822 73q-60 -61 -139 -95q-82 -34 -171 -34t-171 34q-78 34 -139 95q-61 60 -95 139q-34 82 -34 171t35 171
q33 78 94 140q60 60 139 94q82 34 171 34t171 -34q78 -34 139 -95q61 -60 95 -139q34 -82 34 -171t-35 -171q-33 -79 -94 -139zM712 397l-291 247q-6 6 -15 6q-8 0 -14.5 -5.5t-6.5 -13.5v-495q0 -9 6.5 -14t15 -5t14.5 5l291 247q6 6 6 14t-6 14z" />
<glyph glyph-name="tag" unicode="&#xe6d2;"
d="M963 291v3q-1 9 -4 18q-4 10 -10 19q-4 5 -7 8l-479 483q-4 5 -9 8q-12 7 -25 7h-291q-31 0 -53 -22t-22 -52v-298q0 -5 1 -10l0.5 -1l0.5 -1q1 -4 2 -7q1 -1 1 -2q4 -7 10 -13l477 -472q9 -8 18 -13q17 -9 35 -9q15 0 28 6q14 5 25 16l280 277q3 2 5 5q3 3 5 7q2 3 3 5
q2 3 3 5q0 2 1 3q5 14 5 30zM264.5 560q-29.5 0 -50.5 21t-21 50.5t21 50.5t50.5 21t50.5 -21t21 -50.5t-21 -50.5t-50.5 -21z" />
<glyph glyph-name="tago" unicode="&#xe6d3;"
d="M963 291v3q-1 9 -4 18q-4 10 -10 19q-4 5 -7 8l-479 483q-4 5 -9 8q-12 7 -25 7h-291q-31 0 -52.5 -22t-21.5 -52v-298v-10l0.5 -1l0.5 -1q1 -4 2 -7q1 -1 1 -2q4 -7 10 -13l238 -236l239 -236q9 -8 19 -13q16 -9 34 -9q15 0 28 6q14 5 25 16l280 277q3 2 5 5q3 3 5 7
q2 3 3 5q2 3 3 5q0 2 1 3q5 14 5 30zM891 287v0v0v0v0v0h-1v0l-280 -277v0q-1 -1 -2 -1t-1 1h-0.5h-0.5l-239 236l-231 229v288q0 2 2 2h281l471 -476h1v-1v0v0v-1zM264 632zM193 631.5q0 29.5 21 50.5t50.5 21t50.5 -21t21 -50.5t-21 -50.5t-50.5 -21t-50.5 21t-21 50.5z
" />
<glyph glyph-name="addfile" unicode="&#xe910;"
d="M860 128h-156v156q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-156h-148q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h148v-148q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v148h156q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM875 594
l-278 281q-6 6 -15 11q-2 2 -4 2q-1 1 -3 2q-14 6 -29 6h-346q-30 0 -51 -21t-21 -51v-880q0 -30 21 -51t51 -21h212q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-212v880h312v-240q0 -30 21 -51t51 -21h240v-156q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5
v188q0 29 -21 50zM584 584v202l200 -202h-200z" />
<glyph glyph-name="folder1" unicode="&#xe662;"
d="M952 704h-463l-25 78q-7 22 -26 36t-43 14h-323q-30 0 -51 -21t-21 -51v-688q0 -30 21 -51t51 -21h880q30 0 51 21t21 51v560q0 30 -21 51t-51 21zM72 760h323l18 -56h-341v56zM952 72h-880v560h880v-560z" />
<glyph glyph-name="file1" unicode="&#xe664;"
d="M875 594l-278 281q-6 6 -15 11q-2 2 -4 2q-1 1 -3 2q-14 6 -29 6h-346q-30 0 -51 -21t-21 -51v-880q0 -30 21 -51t51 -21h624q30 0 51 21t21 51v600q0 29 -21 50zM784 584h-200v202zM824 -56h-624v880h312v-240q0 -30 21 -51t51 -21h240v-568z" />
<glyph glyph-name="switcher" unicode="&#xe913;"
d="M572 292h-376q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h376q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM696 568v-624h-624v624h624zM696 640h-624q-30 0 -51 -21t-21 -51v-624q0 -30 21 -51t51 -21h624q30 0 51 21t21 51v624q0 30 -21 51t-51 21z
M952 896h-592q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h592v-596q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v596q0 30 -21 51t-51 21zM824 768h-660q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h660v-660q0 -15 10.5 -25.5t25.5 -10.5
t25.5 10.5t10.5 25.5v660q0 30 -21 51t-51 21z" />
<glyph glyph-name="addfolder" unicode="&#xe914;"
d="M988 256h-156v156q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-156h-148q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h148v-148q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v148h156q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM952 704
h-463l-25 78q-7 22 -26 36t-43 14h-323q-30 0 -51 -21t-21 -51v-688q0 -30 21 -51t51 -21h468q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-468v560h880v-148q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v148q0 30 -21 51t-51 21zM72 704v56h323l18 -56h-341z
" />
<glyph glyph-name="folderopen" unicode="&#xe699;"
d="M960 512v120q0 30 -21 51t-51 21h-399l-25 78q-7 22 -26 36t-43 14h-323q-30 0 -51 -21t-21 -51v-688q0 -5 1 -11v0v-2v-1l0.5 -0.5l0.5 -0.5v-1v-1.5t0.5 -1l0.5 -0.5v-1q0 -2 1 -3v0q5 -17 18 -29v0q1 0 1.5 -0.5l1 -1t0.5 -1.5q1 0 1 -0.5t0.5 -0.5t1 -0.5t1.5 -0.5
v-0.5v-0.5q1 0 1.5 -0.5l1.5 -1.5v0q15 -10 32 -11l1 -1h3h1h1h2h788q25 0 44.5 15.5t25.5 39.5l92 368q8 31 -11 58t-51 31zM72 760h323l41 -128h452v-120h-724q-25 0 -44.5 -15t-25.5 -39l-22 -89v391zM860 72h-788l92 368h788z" />
<glyph glyph-name="search1" unicode="&#xe670;"
d="M950 -2l-206 205q88 107 88 245q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5q138 0 245 88l206 -206q10 -10 25 -10t26 10q10 11 10 26t-10 26zM569 160q-57 -24 -121 -24t-121 24q-56 24 -99.5 67.5t-66.5 99.5
q-25 57 -25 121t25 121q23 56 66.5 99.5t99.5 67.5q57 24 121 24t121 -24q56 -24 99.5 -67.5t67.5 -99.5q24 -57 24 -121t-24 -121q-24 -56 -67.5 -99.5t-99.5 -67.5z" />
<glyph glyph-name="ellipsis1" unicode="&#xe647;"
d="M128 384q0 -27 18.5 -45.5t45.5 -18.5t45.5 18.5t18.5 45.5t-18.5 45.5t-45.5 18.5t-45.5 -18.5t-18.5 -45.5zM448 384q0 -27 18.5 -45.5t45.5 -18.5t45.5 18.5t18.5 45.5t-18.5 45.5t-45.5 18.5t-45.5 -18.5t-18.5 -45.5zM768 384q0 -27 18.5 -45.5t45.5 -18.5
t45.5 18.5t18.5 45.5t-18.5 45.5t-45.5 18.5t-45.5 -18.5t-18.5 -45.5z" />
<glyph glyph-name="calendar" unicode="&#xe6bb;"
d="M888 768h-120v28q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-28h-368v28q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-28h-120q-30 0 -51 -21t-21 -51v-688q0 -30 21 -51t51 -21h752q30 0 51 21t21 51v688q0 30 -21 51t-51 21zM136 696h120v-20
q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v20h368v-20q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v20h120v-112h-752v112zM888 8h-752v504h752v-504zM288 384h64q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5
t22.5 9.5zM480 384h64q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5zM672 384h64q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5zM288 190h64q13 0 22.5 -9.5
t9.5 -22.5t-9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5zM480 190h64q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5z" />
<glyph glyph-name="filetext1" unicode="&#xe698;"
d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
M584 412q0 15 -10.5 25.5t-25.5 10.5h-256q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h256q15 0 25.5 10.5t10.5 25.5zM776 252q0 15 -10.5 25.5t-25.5 10.5h-448q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h448q15 0 25.5 10.5t10.5 25.5zM648 92
q0 15 -10.5 25.5t-25.5 10.5h-320q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h320q15 0 25.5 10.5t10.5 25.5z" />
<glyph glyph-name="copy1" unicode="&#xe648;"
d="M875 658l-214 217q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-281q-30 0 -51.5 -21t-21.5 -51v-56h-56q-29 0 -50.5 -21.5t-21.5 -50.5v-752q0 -30 21.5 -51t50.5 -21h496q29 0 50 21t21 51v56h57q30 0 50.5 21t20.5 51v536q0 30 -20 50zM647 786l137 -138h-137v138z
M695 -56h-495v752h56v-624q0 -30 21.5 -51t51.5 -21h366v-56zM823 72h-495v752h247v-176q0 -30 21.5 -51t51.5 -21h175v-504zM640 476q0 15 -10.5 25.5t-25.5 10.5h-184q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h184q15 0 25.5 10.5t10.5 25.5zM768 348
q0 15 -10.5 25.5t-25.5 10.5h-312q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h312q15 0 25.5 10.5t10.5 25.5zM704 220q0 15 -10.5 25.5t-25.5 10.5h-248q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h248q15 0 25.5 10.5t10.5 25.5z" />
<glyph glyph-name="jpgfile1" unicode="&#xe69c;"
d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
M350 200q0 -18 -5.5 -25t-16.5 -7q-15 0 -25 19l-30 -23q20 -34 61 -34q30 0 45.5 18.5t15.5 47.5v123h-45v-119zM501 319h-64v-186h44v62h22q31 0 52 16t21 48q0 60 -75 60zM500 230h-19v53h18q34 0 34 -25q0 -28 -33 -28zM683 239v-36h30v-30q-6 -5 -18 -5q-50 0 -50 58
q0 27 13 42.5t34 15.5q18 0 34 -15l23 29q-24 24 -59 24q-39 0 -65 -26t-26 -71q0 -46 25.5 -70.5t66.5 -24.5q39 0 61 22v87h-69z" />
<glyph glyph-name="pdffile1" unicode="&#xe6b3;"
d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
M333 320h-67v-192h46v64h22q33 0 54.5 16.5t21.5 49.5q0 62 -77 62zM332 228h-20v56h18q35 0 35 -26q0 -30 -33 -30zM498 320h-56v-192h58q44 0 69 24.5t25 72.5t-25.5 71.5t-70.5 23.5zM495 165h-6v118h6q25 0 38.5 -13t13.5 -45q0 -60 -52 -60zM752 282v38h-122v-192h46
v73h65v38h-65v43h76z" />
<glyph glyph-name="exclefile1" unicode="&#xe6b0;"
d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
M460 229l-56 155h86l16 -57q5 -18 14 -53h2q15 29 30 53l33 57h82l-111 -159l60 -162h-86l-19 63q-4 14 -14 54h-2q-14 -25 -31 -54l-39 -63h-82z" />
<glyph glyph-name="pptfile1" unicode="&#xe6b1;"
d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
M538 390h-112l-57 -334h77l19 119h37q55 0 96 28t51 82q10 56 -21 80.5t-90 24.5zM574 285q-9 -49 -65 -49h-33l16 93h32q29 0 41.5 -10t8.5 -34z" />
<glyph glyph-name="unknowfile1" unicode="&#xe6af;"
d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
M510 329q0 18 -11 28t-29 10q-28 0 -58 -29l-55 51q52 59 125 59q56 0 90.5 -28t34.5 -84q0 -21 -10 -40.5t-24 -34t-27.5 -29t-22 -33t-5.5 -39.5h-88q-5 30 6.5 57t28.5 43.5t31 35.5t14 33zM432 62q0 19 12 31t29.5 12t29.5 -12.5t12 -30.5t-12 -30.5t-29.5 -12.5
t-29.5 12.5t-12 30.5z" />
<glyph glyph-name="wordfile1" unicode="&#xe6b2;"
d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
M559 142q-1 14 -1 46v48l-7 136h-60l-55 -136q-21 -57 -34 -94h-2l5 94l5 136h-73l2 -298h88l49 130q3 8 24 70h2q-2 -35 -1 -70l4 -130h90l104 298h-68l-43 -136q-3 -11 -12.5 -43t-15.5 -51h-1z" />
<glyph glyph-name="dingding" unicode="&#xe923;"
d="M913 513q-3 -11 -12 -31v0l-1 -2q-16 -34 -48.5 -90.5t-56.5 -96.5l-24 -40q0 1 -1 1l-27 -47h131l-251 -335l57 228h-103l36 150q-46 -11 -104 -30q-3 -1 -7 -2.5t-19 -2t-32 4t-44.5 20.5t-56.5 42l-5 5l-11.5 11.5t-13.5 17t-9.5 17.5t-2 16t12.5 11q14 5 136 22
l114 14q-218 -3 -270 5q-38 6 -79 59.5t-52 110.5l-3 15q2 21 49 7q31 -8 118 -27.5t160 -34.5l72 -14q-5 1 -13 3.5t-33 10.5l-50 16t-58.5 19t-63 21t-60.5 21t-53.5 20t-39 16.5t-20.5 11.5q-21 24 -45 99t-20 126q0 2 1 5t6.5 7t14.5 2q271 -124 456 -192
q30 -11 76 -26.5t73.5 -25t62 -23t53.5 -25t36.5 -25.5t22.5 -30t1 -35z" />
<glyph glyph-name="dingding-o" unicode="&#xe925;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM749 415q-1 -6 -7 -19v0v0q-6 -13 -16.5 -32t-20.5 -36.5t-19.5 -33t-15.5 -25.5l-6 -10v1l-17 -28h79
l-151 -201l35 136h-62l21 90q-28 -6 -63 -17q-3 -3 -10.5 -4.5t-32 7.5t-52.5 34l-3 3l-7 7t-8 9.5t-5.5 10t-1 10t7.5 6.5q8 3 81 13l69 9q-131 -2 -162 3q-23 4 -47.5 36t-31.5 66l-2 10q3 11 30 3q18 -5 70.5 -16.5t96 -20.5l43.5 -9q-220 68 -235 84q-12 15 -26.5 59.5
t-12.5 75.5q0 1 0.5 3t4 4.5t8.5 0.5q163 -74 274 -115q19 -7 46.5 -16t43.5 -15t37 -14t32.5 -15t21.5 -15.5t13.5 -18t0.5 -20.5z" />
<glyph glyph-name="mobile1" unicode="&#xe678;"
d="M760 896h-496q-30 0 -51 -21t-21 -51v-880q0 -30 21 -51t51 -21h496q30 0 51 21t21 51v880q0 30 -21 51t-51 21zM542 -64h-60q-15 0 -24.5 9.5t-9.5 22.5t9.5 22.5t24.5 9.5h60q15 0 24.5 -9.5t9.5 -22.5t-9.5 -22.5t-24.5 -9.5zM760 65h-496v704h496v-704z" />
<glyph glyph-name="tablet1" unicode="&#xe66e;"
d="M824 896h-624q-30 0 -51 -21t-21 -51v-880q0 -30 21 -51t51 -21h624q30 0 51 21t21 51v880q0 30 -21 51t-51 21zM542 -64h-60q-15 0 -24.5 9.5t-9.5 22.5t9.5 22.5t24.5 9.5h60q15 0 24.5 -9.5t9.5 -22.5t-9.5 -22.5t-24.5 -9.5zM824 65h-624v759h624v-759z" />
<glyph glyph-name="bells" unicode="&#xe64e;"
d="M860 64h-28v448q0 123 -82 214t-202 104v30q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-30q-120 -13 -202 -104t-82 -214v-448h-28q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h276v-48q0 -30 21 -51t51 -21t51 21t21 51v48h276q15 0 25.5 10.5
t10.5 25.5t-10.5 25.5t-25.5 10.5zM760 64h-496v448q0 103 72.5 175.5t175.5 72.5t175.5 -72.5t72.5 -175.5v-448z" />
<glyph glyph-name="disconnect" unicode="&#xe64f;"
d="M900 772q-60 60 -144.5 60t-143.5 -60l-180 -180q-11 -10 -11 -25t11 -26t26 -11t25 11l180 180q38 38 92.5 38t93 -38.5t38.5 -93t-38 -92.5l-180 -180q-10 -11 -10 -25.5t10.5 -25t25.5 -10.5t25 10l180 180q60 59 60 143.5t-60 144.5zM377 615q15 0 25.5 10.5
t10.5 25.5v145q0 15 -10.5 25.5t-25.5 10.5t-26 -10.5t-11 -25.5v-145q1 -15 11 -26q11 -10 26 -10zM809 139q-11 11 -25 10q-16 0 -26.5 -10.5t-10.5 -25.5t11 -25l102 -103q11 -10 26 -10t25.5 10.5t10.5 25.5t-10 25zM924 285h-145q-16 0 -26 -11q-11 -11 -11 -25.5
t11 -25t26 -10.5h144q15 0 26 10.5t11 25.5t-10.5 25.5t-25.5 10.5zM648 153q-15 0 -25.5 -10.5t-10.5 -25.5v-145q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v145q0 15 -11 25q-10 11 -25 11zM541 227l-180 -180q-38 -39 -92.5 -39t-93.5 39q-38 39 -38 93t38 93
l180 180q10 10 10 25t-10.5 25.5t-25.5 10.5t-25 -10l-180 -180q-60 -60 -60 -144q0 -85 60 -144q60 -60 144 -60q85 0 144 60l180 180q11 10 11 25t-11 25.5t-26 10.5t-25 -10zM215 629q11 -11 26 -11t25.5 10.5t10.5 25.5t-11 26l-102 102q-11 11 -26 11t-25.5 -10.5
t-10.5 -25.5t11 -26zM101 483h145q15 0 25 11q11 10 11 25t-10.5 25.5t-25.5 10.5h-145q-15 0 -25.5 -10.5t-10.5 -25.5q-1 -15 10 -25.5t26 -10.5z" />
<glyph glyph-name="database" unicode="&#xe650;"
d="M824 896h-624q-30 0 -51 -21t-21 -51v-880q0 -30 21 -51t51 -21h624q30 0 51 21t21 51v880q0 30 -21 51t-51 21zM824 -47h-624v244q0 -1 1 -1h622q1 0 1 1v-244zM824 267q0 1 -1 1h-622q-1 0 -1 -1v244q0 -1 1 -1h622q1 0 1 1v-244zM824 581q0 1 -1 1h-622q-1 0 -1 -1
v243h624v-243zM321 75zM285 75q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM321 389zM285 389q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM321 703zM285 703
q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5z" />
<glyph glyph-name="barcode" unicode="&#xe652;"
d="M706 128h70q1 0 1 1v638q0 1 -1 1h-70q-1 0 -1 -1v-638q0 -1 1 -1zM534 72h-70q-1 0 -1 -1v-70q0 -1 1 -1h70q1 0 1 1v70q0 1 -1 1zM640 72h-70q-1 0 -1 -1v-70q0 -1 1 -1h70q1 0 1 1v70q0 1 -1 1zM428 72h-214q-1 0 -1 -1v-70q0 -1 1 -1h214q1 0 1 1v70q0 1 -1 1z
M670 768h-34q-1 0 -1 -1v-638q0 -1 1 -1h34q1 0 1 1v638q0 1 -1 1zM213 767q0 1 -1 1h-34q-1 0 -1 -1v-638q0 -1 1 -1h34q1 0 1 1v638zM1023 768h-70q-1 0 -1 -1v-766q0 -1 1 -1h70q1 0 1 1v766q0 1 -1 1zM916 72h-240q-1 0 -1 -1v-70q0 -1 1 -1h240q1 0 1 1v70q0 1 -1 1z
M916 768h-34q-1 0 -1 -1v-638q0 -1 1 -1h34q1 0 1 1v638q0 1 -1 1zM108 128h34q1 0 1 1v638q0 1 -1 1h-34q-1 0 -1 -1v-638q0 -1 1 -1zM354 128h34q1 0 1 1v638q0 1 -1 1h-34q-1 0 -1 -1v-638q0 -1 1 -1zM424 128h70q1 0 1 1v638q0 1 -1 1h-70q-1 0 -1 -1v-638q0 -1 1 -1z
M530 128h70q1 0 1 1v638q0 1 -1 1h-70q-1 0 -1 -1v-638q0 -1 1 -1zM812 128h34q1 0 1 1v638q0 1 -1 1h-34q-1 0 -1 -1v-638q0 -1 1 -1zM71 768h-70q-1 0 -1 -1v-766q0 -1 1 -1h70q1 0 1 1v766q0 1 -1 1zM178 72h-70q-1 0 -1 -1v-70q0 -1 1 -1h70q1 0 1 1v70q0 1 -1 1z
M248 128h70q1 0 1 1v638q0 1 -1 1h-70q-1 0 -1 -1v-638q0 -1 1 -1z" />
<glyph glyph-name="hourglass" unicode="&#xe653;"
d="M860 8h-92v219l-192 157l192 157v219h92q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-696q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h92v-219l192 -157l-192 -157v-219h-92q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h696q15 0 25.5 10.5
t10.5 25.5t-10.5 25.5t-25.5 10.5zM328 581v179h368v-179l-182 -147l-2 2l-2 -2zM696 8h-368v179l184 149l184 -149v-179z" />
<glyph glyph-name="key" unicode="&#xe654;"
d="M876 427q-77 78 -186.5 84t-193.5 -60l-369 369q-11 11 -26 11t-25.5 -10.5t-10.5 -25.5t11 -25l369 -370q-66 -84 -60 -193.5t84 -186.5q84 -84 203.5 -84t204 84t84 203.5t-84.5 203.5zM825 71q-63 -63 -152.5 -63t-153 63t-63.5 152.5t63.5 153t153 63.5t152.5 -63.5
t63 -153t-63 -152.5zM353 596l76 76q11 10 11 25t-10.5 25.5t-25.5 10.5t-26 -10l-76 -77zM333 768q11 11 11 25.5t-10.5 25t-25.5 10.5t-26 -10l-76 -77l51 -50z" />
<glyph glyph-name="flag" unicode="&#xe655;"
d="M888 640h-176v56q0 30 -21 51t-51 21h-360q-3 27 -23.5 45.5t-48.5 18.5h-72q-30 0 -51 -21t-21 -51v-752q0 -30 21 -51t51 -21h72q30 0 51 21t21 51v256h360v-56q0 -30 21 -51t51 -21h176q30 0 51 21t21 51v360q0 30 -21 51t-51 21zM208 8h-72v752h72v-752zM640 336
h-360v360h360v-360zM888 208h-176v360h176v-360z" />
<glyph glyph-name="layout" unicode="&#xe656;"
d="M136 624zM100 624q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM952 768h-880q-30 0 -51 -21t-21 -51v-624q0 -30 21 -51t51 -21h880q30 0 51 21t21 51v624q0 30 -21 51t-51 21zM256 72h-184v408h184v-408zM952 72
h-624v169q0 -1 1 -1h622q1 0 1 1v-169zM952 311q0 1 -1 1h-622q-1 0 -1 -1v169h624v-169zM952 552h-880v144h880v-144zM240 624zM204 624q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM344 624zM308 624
q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5z" />
<glyph glyph-name="printer" unicode="&#xe673;"
d="M392 144h240v-72h-240v72zM392 312h240v-72h-240v72zM888 648h-120v112q0 30 -21 51t-51 21h-368q-30 0 -51 -21t-21 -51v-112h-120q-30 0 -51 -21t-21 -51v-304q0 -30 21 -51t51 -21h120v-192q0 -30 21 -51t51 -21h368q30 0 51 21t21 51v192h120q30 0 51 21t21 51v304
q0 30 -21 51t-51 21zM328 759q0 1 1 1h366q1 0 1 -1v-110q0 -1 -1 -1h-366q-1 0 -1 1v110zM696 8h-368v368h368v-368zM888 272h-120v104q0 30 -21 51t-51 21h-368q-30 0 -51 -21t-21 -51v-104h-120v304h752v-304zM820 508zM784 508q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5
t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5z" />
<glyph glyph-name="USB" unicode="&#xe6d7;"
d="M768 704v-192h56v-138h-276v330h60l-96 128l-96 -128h60v-440h-276v129q37 17 50 55q6 16 6 32q0 40 -28 68t-68 28t-68 -28t-28 -68q0 -31 18 -56t46 -34v-126q0 -30 21 -51t51 -21h276v-71q-27 -11 -43.5 -35t-16.5 -54q0 -40 28 -68t68 -28t68 28t28 68q0 30 -16.5 54
t-43.5 35v181h276q30 0 51 21t21 51v138h64v192h-192zM160 456q-10 0 -17 7t-7 17t7 17t17 7t17 -7t7 -17t-7 -17t-17 -7zM888 584h-48v48h48v-48z" />
<glyph glyph-name="skin" unicode="&#xe6d8;"
d="M888 832h-259q-2 -5 -3 -11q-13 -36 -44 -58.5t-70 -22.5t-70 22.5t-44 58.5q-1 6 -3 11h-259q-30 0 -51 -21t-21 -51v-368q0 -30 21 -51t51 -21h56v-312q0 -30 21 -51t51 -21h496q30 0 51 21t21 51v312h56q30 0 51 21t21 51v368q0 30 -21 51t-51 21zM888 392h-129
q1 0 1 -1v-382q0 -1 -1 -1h-494q-1 0 -1 1v382q0 1 1 1h-129v368h210q26 -43 70 -69t96 -26t96 26t70 69h210v-368z" />
<glyph glyph-name="tool" unicode="&#xe6d9;"
d="M925 731l-167 -166l-68 67l166 166q-63 40 -139.5 32t-130.5 -63q-43 -42 -57.5 -99.5t0.5 -111.5l-189 -189q-54 15 -111.5 0.5t-99.5 -57.5q-55 -54 -63 -130.5t32 -139.5l166 166l67 -68l-166 -166q63 -42 140.5 -34t132.5 63q43 42 57.5 99.5t-0.5 111.5l189 189
q54 -16 111.5 -1t99.5 57q56 56 63.5 133.5t-33.5 140.5zM395 44q-47 -47 -114 -45l95 95q18 18 18 43t-18 43l-68 68q-18 18 -43.5 18t-43.5 -18l-95 -95q-1 67 46 114q37 37 88 44.5t96 -15.5q21 -12 39 -29q17 -17 28 -39q24 -44 16.5 -95.5t-44.5 -88.5zM468 273
q-13 21 -30 37q-17 18 -37 30l155 155q13 -21 30 -37q17 -18 37 -30zM852 501q-37 -37 -88 -44.5t-96 15.5q-21 12 -39 29q-17 17 -28 39q-24 44 -16.5 95.5t44.5 87.5q47 47 114 46l-95 -95q-18 -18 -18 -43.5t18 -43.5l68 -67q18 -18 43.5 -18t43.5 18l95 95
q1 -67 -46 -114z" />
<glyph glyph-name="car" unicode="&#xe6dc;"
d="M952 448h8l-50 242q-5 29 -30.5 49.5t-55.5 20.5h-624q-30 0 -55 -20.5t-31 -49.5l-50 -242h8q-30 0 -51 -21t-21 -51v-176q0 -28 18.5 -48.5t45.5 -23.5v0q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5h384q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v0
q27 3 45.5 23.5t18.5 48.5v176q0 30 -21 51t-51 21zM182 688h656l50 -240h-752zM952 200h-64v-72q0 -23 -16.5 -39.5t-39.5 -16.5t-39.5 16.5t-16.5 39.5v72h-528v-72q0 -23 -16.5 -39.5t-39.5 -16.5t-39.5 16.5t-16.5 39.5v72h-64v176h880v-176zM192 288zM156 288
q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM832 288zM796 288q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5z" />
<glyph glyph-name="addusergroup" unicode="&#xe6dd;"
d="M420 470q-5 24 -5 48q0 13 1 25q-38 5 -63.5 34.5t-25.5 68.5q0 43 30.5 73.5t73.5 30.5q28 0 52 -14t37 -37q33 18 69 24q-22 45 -64.5 72t-93.5 27q-73 0 -124.5 -51.5t-51.5 -124.5q0 -70 48 -121t117 -55zM777 307q-73 35 -154 35q-146 0 -249 -103t-103 -249
q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q0 116 82 198t198 82q28 0 56 -6q44 33 98 43zM909 142h-88v88q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-88h-88q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h88v-88q0 -15 10.5 -25.5t25.5 -10.5
t25.5 10.5t10.5 25.5v88h88q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM799 518q0 73 -51.5 124.5t-124.5 51.5t-124.5 -51.5t-51.5 -124.5t51.5 -124.5t124.5 -51.5t124.5 51.5t51.5 124.5zM623 414q-43 0 -73.5 30.5t-30.5 73.5t30.5 73.5t73.5 30.5t73.5 -30.5
t30.5 -73.5t-30.5 -73.5t-73.5 -30.5zM454 397q-24 33 -33 73q-94 -3 -172.5 -50.5t-124 -127.5t-45.5 -174q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q0 116 82 198t198 82q11 0 23 -1z" />
<glyph glyph-name="carryout" unicode="&#xe6df;"
d="M162 312h380q14 0 24 10t10 24v4q0 14 -10 24t-24 10h-380q-14 0 -24 -10t-10 -24v-4q0 -14 10 -24t24 -10zM537.5 265.5q-10.5 -10.5 -10.5 -25.5t11 -25l84 -85l1 -1l1 -1l4 -3q10 -10 23.5 -10t23.5 10l224 224q10 10 10 24t-10 23l-3 4q-10 10 -24 10t-24 -10
l-197 -197l-63 63q-10 10 -25 10t-25.5 -10.5zM952 704h-84v28q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-28h-248v28q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-28h-248v28q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-28h-84
q-30 0 -51 -21t-21 -51v-560q0 -30 21 -51t51 -21h880q30 0 51 21t21 51v560q0 30 -21 51t-51 21zM952 72h-880v376h880v-376zM952 520h-880v112h84v-20q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v20h248v-20q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v20
h248v-20q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v20h84v-112zM162 188h252q14 0 24 10t10 24v4q0 14 -10 24t-24 10h-252q-14 0 -24 -10t-10 -24v-4q0 -14 10 -24t24 -10z" />
<glyph glyph-name="deleteuser" unicode="&#xe6e0;"
d="M722 320q-95 63 -210 63q-104 0 -192.5 -51.5t-140 -140t-51.5 -193.5v0v-1v-1q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v2v0q0 130 91.5 221.5t220.5 91.5q58 0 111 -21q46 27 99 30zM787 96l62 62q11 11 11 26t-10.5 25.5t-25.5 10.5t-26 -10l-62 -63l-62 63
q-11 10 -26 10t-25.5 -10.5t-10.5 -25.5t11 -26l62 -62l-62 -62q-11 -10 -11 -25t10.5 -25.5t25.5 -10.5t26 10l62 62l62 -62q11 -10 26 -10t25.5 10.5t10.5 25.5t-11 25zM736 607.5q0 92.5 -65.5 158.5t-158.5 66t-158.5 -66t-65.5 -158.5t65.5 -158.5t158.5 -66t158.5 66
t65.5 158.5zM512 455q-63 0 -107.5 44.5t-44.5 108t44.5 108t107.5 44.5t107.5 -44.5t44.5 -108t-44.5 -108t-107.5 -44.5z" />
<glyph glyph-name="deleteusergroup" unicode="&#xe6e1;"
d="M420 470q-5 24 -5 48q0 13 1 25q-38 5 -63.5 34.5t-25.5 68.5q0 43 30.5 73.5t73.5 30.5q28 0 52 -14t37 -37q33 18 69 24q-22 45 -64.5 72t-93.5 27q-73 0 -124.5 -51.5t-51.5 -124.5q0 -70 48 -121t117 -55zM898 44l-62 62l62 62q11 11 11 26t-10.5 25.5t-25.5 10.5
t-26 -11l-62 -62l-62 62q-11 11 -26 11t-25.5 -10.5t-10.5 -25.5t11 -26l62 -62l-62 -62q-11 -11 -11 -26t10.5 -25.5t25.5 -10.5t26 11l62 62l62 -62q11 -11 26 -11t25.5 10.5t10.5 25.5t-11 26zM777 307q-73 35 -154 35q73 0 124.5 51.5t51.5 124.5t-51.5 124.5
t-124.5 51.5t-124.5 -51.5t-51.5 -124.5t51.5 -124.5t124.5 -51.5q-146 0 -249 -103t-103 -249q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q0 116 82 198t198 82q28 0 56 -6q44 33 98 43zM519 518q0 43 30.5 73.5t73.5 30.5t73.5 -30.5t30.5 -73.5t-30.5 -73.5
t-73.5 -30.5t-73.5 30.5t-30.5 73.5zM454 397q-24 33 -33 73q-94 -3 -172.5 -50.5t-124 -127.5t-45.5 -174q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q0 116 82 198t198 82q11 0 23 -1z" />
<glyph glyph-name="man" unicode="&#xe6e2;"
d="M384 576q-133 0 -226.5 -93.5t-93.5 -226.5t93.5 -226.5t226.5 -93.5t226.5 93.5t93.5 226.5t-93.5 226.5t-226.5 93.5zM384 8q-103 0 -175.5 72.5t-72.5 175.5t72.5 175.5t175.5 72.5t175.5 -72.5t72.5 -175.5t-72.5 -175.5t-175.5 -72.5zM949.5 821.5
q-10.5 10.5 -25.5 10.5h-376q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h340v-340q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v376q0 15 -10.5 25.5z" />
<glyph glyph-name="isv" unicode="&#xe6e3;"
d="M860 292q-15 0 -25.5 -10.5t-10.5 -25.5v-248h-624v248q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-248q0 -30 21 -51t51 -21h624q30 0 51 21t21 51v248q0 15 -10.5 25.5t-25.5 10.5zM888 832h-752q-30 0 -51 -21t-21 -51v-204q0 -71 51 -122t123 -51
q41 0 77 18t60 50q24 -32 60 -50t77 -18q42 0 77.5 18t60.5 49q24 -31 59.5 -49t76.5 -18q72 0 123 51t51 122v204q0 30 -21 51t-51 21zM339 658v-102q0 -42 -29.5 -71.5t-72 -29.5t-72 29.5t-29.5 71.5v204h203v-102zM512 455q-42 0 -71.5 29.5t-29.5 71.5v204h202v-204
v-11q-4 -38 -33 -64t-68 -26zM888 556q0 -42 -29.5 -71.5t-72 -29.5t-72 29.5t-29.5 71.5v204h203v-204z" />
<glyph glyph-name="gift" unicode="&#xe6e4;"
d="M888 576h-248q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5h-248q-30 0 -51 -21t-21 -51v-112q0 -30 21 -51t51 -21h-8v-312q0 -30 21 -51t51 -21h624
q30 0 51 21t21 51v312h-8q30 0 51 21t21 51v112q0 30 -21 51t-51 21zM384 648q-23 0 -39.5 16.5t-16.5 39.5t16.5 39.5t39.5 16.5t39.5 -16.5t16.5 -39.5v-56h-56zM476 8h-276v312h276v-312zM476 392h-340v112h340v-112zM584 704q0 23 16.5 39.5t39.5 16.5t39.5 -16.5
t16.5 -39.5t-16.5 -39.5t-39.5 -16.5h-56v56zM824 8h-276v312h276v-312zM888 392h-340v112h340v-112z" />
<glyph glyph-name="idcard" unicode="&#xe6e5;"
d="M200 128h176q30 0 51 21t21 51v88q0 41 -19 76t-51 57q38 37 38 91q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5q0 -54 38 -91q-32 -22 -51 -57t-19 -76v-88q0 -30 21 -51t51 -21zM288 568q23 0 39.5 -16.5t16.5 -39.5t-16.5 -39.5t-39.5 -16.5t-39.5 16.5
t-16.5 39.5t16.5 39.5t39.5 16.5zM200 283v1v4q0 36 26 62t62 26t62 -26t26 -62v-4v-1v-78q0 -5 -5 -5h-166q-5 0 -5 5v78zM952 768h-880q-30 0 -51 -21t-21 -51v-624q0 -30 21 -51t51 -21h880q30 0 51 21t21 51v624q0 30 -21 51t-51 21zM952 72h-880v624h880v-624zM548 348
h248q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-248q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5zM548 184h184q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-184q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5zM548 512h312q15 0 25.5 10.5
t10.5 25.5t-10.5 25.5t-25.5 10.5h-312q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5z" />
<glyph glyph-name="medicinebox" unicode="&#xe6e6;"
d="M952 584h-120v112q0 30 -21 51t-51 21h-496q-30 0 -51 -21t-21 -51v-112h-120q-30 0 -51 -21t-21 -51v-440q0 -30 21 -51t51 -21h880q30 0 51 21t21 51v440q0 30 -21 51t-51 21zM264 696h496v-112h-496v112zM952 72h-880v440h880v-440zM388 256h88v-88q0 -15 10.5 -25.5
t25.5 -10.5t25.5 10.5t10.5 25.5v88h88q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-88v88q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-88h-88q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5z" />
<glyph glyph-name="redenvelopes" unicode="&#xe6e7;"
d="M512 457l-59 59q-11 10 -25.5 10t-25 -10.5t-10.5 -25t10 -25.5l67 -67h-115q-14 0 -24 -10t-10 -24v-4q0 -14 10 -24t24 -10h122v-64h-90q-14 0 -24 -10t-10 -24v-4q0 -14 10 -24t24 -10h90v-84q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v84h90q14 0 24 10
t10 24v4q0 14 -10 24t-24 10h-90v64h122q14 0 24 10t10 24v4q0 14 -10 24t-24 10h-114l67 68q11 10 11 25t-10.5 25.5t-25.5 10.5t-26 -10zM896 770h-1q-3 26 -23.5 44t-47.5 18h-624q-27 0 -47.5 -18t-23.5 -44h-1h1q-1 -5 -1 -10v-752q0 -30 21 -51t51 -21h624q30 0 51 21
t21 51v752q0 5 -1 10h1zM715 760l-158 -78q-19 -10 -45 -10t-45 10l-157 78h405zM824 8h-624v725l248 -126q26 -14 64 -14t64 14l248 126v-725z" />
<glyph glyph-name="rest" unicode="&#xe6e8;"
d="M275 615q15 0 25.5 10.5t10.5 25.5v209q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-209q0 -15 10.5 -25.5t25.5 -10.5zM888 471h-120q0 30 -21 51t-51 21h-496q-30 0 -51 -21t-21 -51v-248q0 -5 1 -10q-1 -10 -1 -21q0 -133 93.5 -226.5t226.5 -93.5
q119 0 208.5 77.5t107.5 193.5h124q30 0 51 21t21 51v184q0 30 -21 51t-51 21zM696 215h-1q1 -12 1 -23q0 -103 -72.5 -175.5t-175.5 -72.5t-175.5 72.5t-72.5 175.5q0 11 1 23h-1v256h496v-256zM888 223h-112v176h112v-176zM613 615q15 0 25.5 10.5t10.5 25.5v209
q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-209q0 -15 10.5 -25.5t25.5 -10.5zM443 615q15 0 25.5 10.5t10.5 25.5v209q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-209q0 -15 10.5 -25.5t25.5 -10.5z" />
<glyph glyph-name="Safety" unicode="&#xe6ea;"
d="M512 832l-384 -128v-384q0 -159 112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5v384zM824 320q0 -129 -91.5 -220.5t-220.5 -91.5t-220.5 91.5t-91.5 220.5v330l312 110l312 -110v-330zM378 421q-10 10 -25 10t-25.5 -10.5t-10.5 -25.5t11 -25l129 -129l2 -3
q10 -9 24 -9t24 9l224 224q10 10 10 24t-10 24l-3 3q-10 10 -24 10t-24 -10l-197 -197z" />
<glyph glyph-name="wallet" unicode="&#xe6eb;"
d="M620 384zM584 384q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM952 768h-880q-30 0 -51 -21t-21 -51v-624q0 -30 21 -51t51 -21h880q30 0 51 21t21 51v624q0 30 -21 51t-51 21zM952 328h-432v112h432v-112z
M952 512h-432q-30 0 -51 -21t-21 -51v-112q0 -30 21 -51t51 -21h432v-184h-880v624h880v-184z" />
<glyph glyph-name="woman" unicode="&#xe6ec;"
d="M512 320q119 0 203.5 84.5t84.5 203.5t-84.5 203.5t-203.5 84.5t-203.5 -84.5t-84.5 -203.5t84.5 -203.5t203.5 -84.5zM512 824q89 0 152.5 -63.5t63.5 -152.5t-63.5 -152.5t-152.5 -63.5t-152.5 63.5t-63.5 152.5t63.5 152.5t152.5 63.5zM860 256h-696
q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h312v-276q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v276h312q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5z" />
<glyph glyph-name="adduser" unicode="&#xe6ed;"
d="M860 132h-88v88q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-88h-88q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h88v-88q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v88h88q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM736 607.5
q0 92.5 -65.5 158.5t-158.5 66t-158.5 -66t-65.5 -158.5t65.5 -158.5t158.5 -66t158.5 66t65.5 158.5zM512 455q-63 0 -107.5 44.5t-44.5 108t44.5 108t107.5 44.5t107.5 -44.5t44.5 -108t-44.5 -108t-107.5 -44.5zM722 320q-95 63 -210 63q-104 0 -192.5 -51.5t-140 -140
t-51.5 -193.5v0v-1v-1q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v2v0q0 130 91.5 221.5t220.5 91.5q58 0 111 -21q46 27 99 30z" />
<glyph glyph-name="bank" unicode="&#xe6ee;"
d="M940 419l-402 401q-10 11 -25 11t-26 -11l-401 -401q-11 -11 -11 -26t10.5 -25.5t25.5 -10.5t25 11l377 376l376 -376q10 -11 25 -11t25.5 11t10.5 25.5t-10 25.5zM828 292q-15 0 -25.5 -10.5t-10.5 -25.5v-248h-560v248q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5
t-10.5 -25.5v-248q0 -30 21 -51t51 -21h560q30 0 51 21t21 51v248q0 15 -10.5 25.5t-25.5 10.5zM320 358v-4q0 -14 10 -24t24 -10h122v-64h-90q-14 0 -24 -10t-10 -24v-4q0 -14 10 -24t24 -10h90v-84q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v84h90q14 0 24 10
t10 24v4q0 14 -10 24t-24 10h-90v64h122q14 0 24 10t10 24v4q0 14 -10 24t-24 10h-135q2 1 2 2l85 85q11 10 11 25t-10.5 25.5t-25.5 10.5t-26 -10l-59 -60l-60 60q-10 10 -25 10t-25.5 -10.5t-10.5 -25.5t10 -25l85 -85l2 -2h-134q-14 0 -24 -10t-10 -24z" />
<glyph glyph-name="Trophy" unicode="&#xe6ef;"
d="M760 384h8q53 0 90.5 37.5t37.5 90.5v256h-128q-4 27 -24 45.5t-48 18.5h-368q-28 0 -48.5 -18.5t-23.5 -45.5h-128v-256q0 -53 37.5 -90.5t90.5 -37.5h8q19 -75 77 -127t135 -63v-186h-312q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h696q15 0 25.5 10.5
t10.5 25.5t-10.5 25.5t-25.5 10.5h-312v186q77 11 135 63t77 127zM768 696h56v-184q0 -23 -16.5 -39.5t-39.5 -16.5v240zM256 456q-23 0 -39.5 16.5t-16.5 39.5v184h56v-240zM512 264q-76 0 -130 54t-54 130v312h368v-312q0 -76 -54 -130t-130 -54z" />
<glyph glyph-name="loading1" unicode="&#xe6ae;"
d="M512 -128q-104 0 -199 40q-92 39 -163 110t-110 163q-40 95 -40 199q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5q0 -90 35 -171q33 -79 94 -140t140 -95q81 -34 171 -34t171 35q79 33 140 94t95 140q34 81 34 171t-35 171q-33 79 -94 140t-140 95q-81 34 -171 34
q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5q104 0 199 -40q92 -39 163 -110t110 -163q40 -95 40 -199t-40 -199q-39 -92 -110 -163t-163 -110q-95 -40 -199 -40z" />
<glyph glyph-name="loading2" unicode="&#xe64d;"
d="M988 348q-15 0 -25.5 10.5t-10.5 25.5q0 90 -35 171q-33 79 -94 140t-140 95q-81 34 -171 34q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5q104 0 199 -40q92 -39 163 -110t110 -163q40 -95 40 -199q0 -15 -10.5 -25.5t-25.5 -10.5z" />
<glyph glyph-name="like2" unicode="&#xe69d;"
d="M958 421v3q-2 3 -2 4q-15 58 -66 77q-24 8 -50 8h-1h-87h-32.5h-32.5h-21q4 27 7 41q13 67 -5 119q-7 20 -24 66l-9 24q-16 40 -54 56q-29 13 -59 13q-34 0 -66 -17q-51 -26 -50 -83q1 -23 1 -36q1 -41 2 -62q0 -5 -2 -9q-3 -6 -10.5 -19t-11.5 -20q-35 -61 -53 -90
q-12 -18 -32.5 -30t-35.5 -15l-15 -3h-113q-30 0 -51 -21t-21 -51v-368q0 -30 21 -51t51 -21h248h80h80h50h50h94q42 0 72 10q40 13 64.5 44t28.5 73q2 23 -3 45q25 40 23 84q-1 12 -5 24q24 36 23 76q0 15 -5 30q14 21 20 45l4 5v44zM248 8h-112v368h112v-368zM888 391
l-2 -8q-3 -11 -9 -21l-19 -28l9 -32q2 -6 2 -13q1 -17 -11 -33l-18 -28l9 -32q1 -5 2 -9q1 -20 -12 -40l-16 -25l6 -25v0v-3q3 -13 2 -25v0v-1q-2 -20 -13 -33q-11 -14 -30 -21q-19 -6 -50 -6h-94h-24.5h-25h-25.5h-25h-77h-83h-64l1 388q46 22 72 62v1q19 30 53 91l1 1v0
q2 3 14 24q1 1 4 6t4 7q14 24 12 51q-1 22 -2 57v2v16v20q-1 6 2 10q2 4 9 8q16 8 32 8q15 0 31 -7q10 -4 15 -15q7 -21 9 -24q15 -41 23 -64q12 -35 2 -82q-3 -17 -7 -43l-14 -84h106h32h32h88h1v0q13 0 26 -4q15 -6 20 -27q1 0 1.5 -2t0.5 -3v-14z" />
<glyph glyph-name="dislike2" unicode="&#xe69e;"
d="M960 352v44l-4 6q-6 24 -20 44q5 14 5 30q2 40 -23 76q4 12 5 25q2 43 -23 83q5 22 2 46q-3 41 -27.5 72t-64.5 44q-30 10 -72 10h-94h-50h-51h-79h-80h-248q-30 0 -51 -21t-21 -51v-368q0 -30 21 -51t51 -21h113q6 -1 16 -3t32.5 -14.5t34.5 -30.5q18 -29 53 -90
q4 -7 11.5 -20t10.5 -18q2 -5 2 -10q-1 -20 -2 -62q0 -13 -1 -36q-1 -56 50 -83q32 -17 66 -17q30 0 59 12q38 17 54 57l9 24q15 41 24 65q18 53 5 120q-4 19 -7 41h21h32.5h32.5h87h1q26 0 50 8q52 19 66 77l2 4v3zM248 392h-112v368h112v-368zM888 363q0 -1 -1 -3
q0 -2 -1 -2q-5 -21 -20 -27q-13 -4 -26 -4v0h-1h-88h-32h-15.5h-16.5h-106l14 -84q4 -26 7 -43q10 -48 -2 -82q-8 -23 -24 -63q-1 -5 -4.5 -14t-4.5 -10q-4 -12 -14 -16q-16 -7 -31 -7q-16 0 -32 8q-7 4 -10 8q-2 3 -2 10q1 23 1 37v1q1 39 2 57q2 27 -12 51q-1 2 -4 6.5
t-4 6.5q-13 23 -14 24v0l-1 2q-34 60 -53 91h-1q-25 40 -71 62l-1 388h64h83h77h25h25.5h25h24.5h94q31 0 50 -6t30 -21q11 -13 13 -33v-1v0q1 -12 -2 -24v-4v0l-6 -25l16 -25q13 -20 12 -39q0 -5 -2 -9l-9 -33l18 -28q12 -16 11 -33q0 -7 -2 -13l-9 -32l19 -28q6 -10 9 -21
l2 -8v-14z" />
<glyph glyph-name="like1" unicode="&#xe64c;"
d="M184 448h-48q-30 0 -51 -21t-21 -51v-368q0 -30 21 -51t51 -21h48q30 0 51 21t21 51v368q0 30 -21 51t-51 21zM957 422q-11 43 -47 56q-21 6 -42 6h-226q-7 0 -8 1.5t0 8.5q2 10 4.5 26.5t5 30.5t4.5 26q12 62 -4 109q-6 17 -36 97q-10 28 -36 39q-53 22 -102 -3
q-34 -18 -33 -54q0 -10 1 -48t2 -58q1 -18 -8 -33q-73 -125 -76 -130q-4 -6 -28 -32q-17 -18 -24 -30t-7 -29q0 -284 -1 -397q0 -30 21.5 -51t51.5 -21h390q40 0 66 9q32 10 51 34t22 58q2 29 -6 50q-1 4 2 9q28 37 26 76q-1 10 -7 29q-3 7 2 13q26 33 25 69q0 7 -3.5 21
t-3.5 16q-2 6 0 9q19 21 26 53q0 1 1 2v29z" />
<glyph glyph-name="dislike1" unicode="&#xe64b;"
d="M256 392q0 -30 -21 -51t-51 -21h-48q-30 0 -51 21t-21 51v368q0 30 21 51t51 21h48q30 0 51 -21t21 -51v-368zM957 346q-11 -43 -47 -56q-21 -6 -42 -6h-226q-7 0 -8 -1.5t0 -8.5q2 -10 4.5 -26.5t5 -30.5t4.5 -26q12 -62 -4 -109q-6 -17 -36 -97q-10 -28 -36 -39
q-53 -22 -102 3q-34 18 -33 54q0 10 1 48t2 58q1 18 -8 33q-73 125 -76 130q-4 6 -28 32q-17 18 -24 30t-7 29q0 284 -1 397q0 30 21.5 51t51.5 21h390q40 0 66 -9q32 -10 51 -34t22 -58q2 -29 -6 -50q-1 -4 2 -9q28 -37 26 -76q-1 -10 -7 -29q-3 -7 2 -13q26 -33 25 -69
q0 -7 -3.5 -21t-3.5 -15q-2 -7 0 -9q19 -22 26 -54q0 -1 1 -2v-28q-2 -7 -3 -10z" />
<glyph glyph-name="bulb1" unicode="&#xe649;"
d="M640 -56h-256q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h256q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM896 522q0 155 -112.5 264.5t-271.5 109.5t-271.5 -109.5t-112.5 -264.5q0 -102 52 -188.5t140 -135.5v-62q0 -30 21 -51t51 -21h240
q30 0 51 21t21 51v62q88 49 140 135.5t52 188.5zM733 309q-43 -42 -99 -65l-1 -0.5l-1 -0.5v-107h-240v107l-1 0.5l-1 0.5q-56 23 -99 65t-67 96q-24 56 -24 117t24 117q24 54 67 96t99 65q58 24 122 24t122 -24q56 -23 99 -65t67 -96q24 -56 24 -117t-24 -117
q-24 -54 -67 -96z" />
<glyph glyph-name="rocket1" unicode="&#xe90f;"
d="M954 799l-6 21l-21 5q-27 7 -72 7q-111 0 -235 -34q-63 -18 -112 -41q-50 -25 -78 -53q-25 -25 -65 -97q-9 -17 -19 -36q-60 -18 -143 -70q-97 -61 -132 -107q-11 -14 -6 -31.5t22 -23.5q3 -1 10.5 -4t11.5 -4q79 -30 111 -46v0l192 -193q16 -33 46 -112q4 -10 9 -21
q6 -17 23 -22q5 -1 10 -1q12 0 22 7q46 34 106 132q53 84 70 143q21 11 37 19q73 40 98 65q35 35 64.5 106.5t46.5 163.5q16 83 16 152q0 47 -6 75zM293 457q-21 -47 -46 -105q-29 14 -82 34q33 27 76 54q31 19 59 34q-4 -10 -7 -17zM568 113q-27 -43 -54 -76q-20 51 -34 82
q55 23 106 46q1 0 15 7q-14 -28 -33 -59zM888 725q0 -64 -14 -140q-16 -81 -42 -145q-24 -61 -50 -87v0q-17 -17 -82 -52q-58 -32 -144 -71q-56 -25 -126 -54l-126 126q27 65 54 126q39 86 71 144q35 64 52 82q19 19 59 38q43 21 100 36q113 32 216 32q17 0 31 -1
q1 -16 1 -34zM185 144q-29 0 -51.5 -17t-31.5 -44l-37 -125q-1 -2 -1 -5q0 -7 5 -12t12 -5q3 0 5 1l124 37q27 9 44.5 32t17.5 52q0 35 -25.5 60.5t-61.5 25.5zM594.5 466.5q18.5 -18.5 45.5 -18.5t45.5 18.5t18.5 45.5t-18.5 45.5t-45.5 18.5t-45.5 -18.5t-18.5 -45.5
t18.5 -45.5z" />
<glyph glyph-name="select1" unicode="&#xe64a;"
d="M888 832h-752q-30 0 -51 -21t-21 -51v-752q0 -30 21 -51t51 -21h504q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-504v752h752v-504q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v504q0 30 -21 51t-51 21zM634 314l103 103q9 9 4.5 20t-16.5 11h-241
q-15 0 -25.5 -10.5t-10.5 -25.5v-240q0 -13 11 -17.5t20 4.5l103 104l188 -188q11 -11 26 -11t25.5 10.5t10.5 25.5t-10 26z" />
<glyph glyph-name="apple1" unicode="&#xe68c;"
d="M902 547q-21 31 -49 52.5t-55.5 31t-46.5 13.5t-36 4q-35 4 -75 -7.5t-73 -25t-48 -13.5q-17 0 -75 22.5t-94 21.5q-65 -1 -121.5 -35.5t-90.5 -92.5q-32 -56 -40 -128t5.5 -142t39.5 -133.5t60 -112.5q20 -30 34.5 -48t36 -40t44.5 -32.5t47 -9.5q29 1 77.5 21.5
t89.5 20.5q40 0 88 -20.5t81 -20.5q25 1 47 11t42.5 30.5t34 37.5t33.5 47q44 64 71 146v0q-8 3 -17.5 8t-33 22.5t-40.5 38.5t-31.5 58t-14.5 80q-1 36 11 70t24.5 53.5t34 39t26.5 23t14 9.5zM716 896q-39 -2 -81 -23.5t-70 -54.5q-27 -30 -41.5 -73t-9.5 -85
q41 -3 80.5 17.5t68.5 55.5q28 34 43 77t10 86z" />
<glyph glyph-name="apple-o" unicode="&#xe6d4;"
d="M698 577h10h2l2 -1q30 -1 59 -13q13 -5 25 -12q-4 -5 -10 -11q-30 -37 -46 -79q-21 -52 -21 -110q1 -125 88 -210q16 -15 33 -27q-18 -40 -42 -74q-37 -55 -58 -74q-21 -20 -40 -21h-2q-17 0 -47 14q-64 27 -119 27q-56 0 -122 -28q-31 -13 -48 -14h-1q-15 0 -38 22
t-61 77q-66 95 -88 218q-11 65 -5 120q7 57 31 101q25 42 65 67q41 24 86 25h1q23 0 77 -21q58 -24 90 -24q29 0 87 23q63 25 92 25zM698 649q-41 0 -103 -24t-76 -24q-17 0 -74 22.5t-93 22.5h-2q-65 -1 -121.5 -35.5t-90.5 -92.5q-32 -57 -40 -128.5t5.5 -141.5
t39.5 -133.5t60 -112.5q20 -29 34 -47.5t35 -40t43.5 -32t45.5 -10.5h3q30 1 78.5 21.5t89.5 20.5q40 0 87 -20.5t79 -20.5h3q25 1 47 11t42.5 30.5t33.5 37.5t34 47q44 64 71 146v0q-8 3 -17.5 8t-33 22.5t-40.5 38.5t-31.5 58t-15.5 80q0 36 12 70t24.5 53.5t34 39t26 23
t14.5 9.5q-21 31 -49 52.5t-55.5 31t-46.5 13.5t-36 4q-9 1 -17 1zM716 896q-39 -2 -81 -23.5t-70 -54.5q-27 -30 -41.5 -73t-9.5 -85q41 -3 80.5 17.5t68.5 55.5q28 34 43 77t10 86z" />
<glyph glyph-name="android1" unicode="&#xe938;"
d="M888 575q-26 0 -44.5 -18.5t-18.5 -44.5v-247q0 -27 18.5 -45.5t44 -18.5t44 18.5t18.5 45.5v247q0 26 -18 44.5t-44 18.5zM136.5 575q-25.5 0 -44 -18.5t-18.5 -44.5v-247q0 -27 18.5 -45.5t44 -18.5t44 18.5t18.5 45.5v247q0 26 -18.5 44.5t-44 18.5zM236 573v-452
q0 -20 14.5 -34t34.5 -14h55v-138q0 -26 18.5 -44.5t44 -18.5t44 18.5t18.5 44.5v138h97v-138q0 -26 18 -44.5t44 -18.5t44 18.5t18 44.5v138h56q20 0 34 14t14 35v451h-554zM643 807l52 75q5 8 -2 13t-13 -3l-53 -78q-55 22 -115 22t-115 -22l-53 77q-6 9 -13 3
q-7 -4 -2 -13l52 -74q-62 -29 -101.5 -80t-44.5 -114h554q-5 63 -44.5 114t-101.5 80zM395 690q-13 0 -22 9t-9 22t9 22t22 9t22 -9t9 -22t-9 -22t-22 -9zM632.5 690q-12.5 0 -21.5 9t-9 22t9 22t21.5 9t21.5 -9t9 -22t-9 -22t-21.5 -9z" />
<glyph glyph-name="android" unicode="&#xe68d;"
d="M888.5 601.5q-24.5 24.5 -60.5 24.5q-6 0 -13 -1v1h-4q-9 53 -43 100q-32 44 -81 74l29 41v4v2l1 2q1 7 1 10q0 16 -10 26.5t-26 10.5q-18 0 -30 -18l-33 -48q-53 18 -107 18t-107 -18l-33 48q-12 18 -30 18q-16 0 -26 -10.5t-10 -26.5q0 -11 7 -19l26 -37
q-50 -30 -82 -75q-34 -47 -42 -100h-6v-1q-6 1 -12 1q-37 0 -61 -24t-24 -60v-269q0 -36 24 -60.5t60 -24.5q6 0 13 1v-107q0 -25 17.5 -42.5t42.5 -17.5h37v-67q0 -36 24 -60q24 -25 60.5 -25t60.5 24q24 25 24 61v66h73v-66q0 -36 25 -60q24 -25 60 -25t61 25q24 24 24 60
v67h36q25 0 43 17.5t18 42.5v105q6 -1 12 -1q36 0 61 24q24 25 24 61v268q1 36 -23.5 60.5zM209 272q0 -12 -12 -12t-12 12v269q0 12 12 12t12 -12v-269zM358 726q66 48 154 48t154 -48q56 -42 71 -100h-450q15 58 71 100zM403 -45q-1 -10 -12 -10q-12 0 -12 12v67h24v-69z
M646 -45q-2 -10 -12 -10q-13 0 -13 12v67h25v-69zM743 96h-461v457h461v-457zM840 272q0 -12 -12.5 -12t-12.5 12v269q0 12 12.5 12t12.5 -12v-269zM585 712q-16 0 -26 -10.5t-10 -26.5t10 -26t26 -10t26.5 10t10 26t-10.5 26.5t-26 10.5zM439.5 712q-15.5 0 -26 -10.5
t-10.5 -26.5t10.5 -26t26 -10t26 10t10.5 26t-10.5 26.5t-26 10.5z" />
<glyph glyph-name="aliwangwang-o1" unicode="&#xe68f;"
d="M985 560q-37 88 -106 157q-68 69 -158 106q-92 39 -192 39q-83 0 -160 -26q-54 25 -122 40t-105 17.5t-69 2.5h-12q-25 -1 -38.5 -21.5t-4.5 -43.5l84 -211q-69 -117 -69 -253q0 -101 39 -193q38 -88 106 -157q69 -68 158 -106q92 -39 193 -39q100 0 193 39
q88 37 157 106q68 68 106 157q39 92 39 193.5t-39 192.5zM919 202q-32 -75 -91 -134t-134 -91h-1q-78 -33 -164.5 -33t-164.5 33q-76 32 -135 91t-90 134v1q-34 78 -34 164q0 117 59 216l18 30l-83 210q40 -1 82 -7q91 -14 158 -45l26 -12l28 9q65 22 136 22q86 0 164 -33
q76 -32 135 -91t91 -134v0q33 -78 33 -165q0 -86 -33 -165zM511.5 577q-20.5 0 -34.5 -14t-14 -34v-72q0 -20 14 -34.5t34.5 -14.5t34.5 14.5t14 34.5v72q0 20 -14 34t-34.5 14zM740.5 577q-20.5 0 -34.5 -14t-14 -34v-72q0 -20 14 -34.5t34.5 -14.5t34.5 14.5t14 34.5v72
q0 20 -14 34t-34.5 14z" />
<glyph glyph-name="aliwangwang" unicode="&#xe68e;"
d="M985 560q-37 88 -106 157q-68 69 -158 106q-91 39 -192 39q-83 0 -160 -26q-54 25 -122 40t-105 17.5t-69 2.5h-12q-25 -1 -38.5 -21.5t-4.5 -43.5l84 -211q-69 -117 -69 -253q0 -101 39 -193q38 -88 106 -157q69 -68 158 -106q92 -39 193 -39t193 39q88 37 157 106
q68 68 106 157q39 92 39 193.5t-39 192.5zM560 457q0 -20 -14 -34.5t-34.5 -14.5t-34.5 14.5t-14 34.5v72q0 20 14 34t34.5 14t34.5 -14t14 -34v-72zM789 457q0 -20 -14 -34.5t-34.5 -14.5t-34.5 14.5t-14 34.5v72q0 20 14 34t34.5 14t34.5 -14t14 -34v-72z" />
<glyph glyph-name="pay-circle1" unicode="&#xe6a5;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM737 419q0 -14 -10.5 -23.5t-24.5 -9.5h-154v-64h122q14 0 24.5 -10.5t10.5 -24.5v-4q0 -14 -10.5 -23.5
t-24.5 -9.5h-122v-149q0 -15 -10.5 -25.5t-25.5 -10.5t-25.5 10.5t-10.5 25.5v149h-122q-15 0 -24.5 9.5t-9.5 23.5v4q0 14 10 24.5t24 10.5h122v64h-154q-15 0 -25 10t-10 24v3q0 14 10 24.5t25 10.5h166l-2 1l-118 118q-11 11 -11 26t10.5 25.5t25.5 10.5t26 -10l93 -93
l92 92q11 11 25.5 11t25.5 -10.5t10.5 -25.5t-10.5 -25l-118 -118q-1 -1 -2 -1h167q14 0 24.5 -11t10.5 -25v-4z" />
<glyph glyph-name="pay-circle-o1" unicode="&#xe6a6;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 35q-79 33 -140 94t-94 140q-35 81 -35 171t35 171
q33 79 94 140t140 94q81 35 171 35t171 -35q79 -33 140 -94t94 -140q35 -81 35 -171t-35 -171q-33 -79 -94 -140zM702 459h-167q1 0 2 1l118 118q11 10 11 25t-10.5 25.5t-25.5 10.5t-26 -11l-92 -92l-93 93q-11 10 -26 10t-25.5 -10.5t-10.5 -25.5t11 -26l118 -118l2 -1
h-166q-14 0 -24.5 -10.5t-10.5 -24.5v-3q0 -14 10 -24t25 -10h154v-64h-123q-13 0 -23 -10.5t-10 -24.5v-4q0 -14 9.5 -23.5t23.5 -9.5h123v-149q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v149h122q14 0 24.5 9.5t10.5 23.5v4q0 14 -10.5 24.5t-24.5 10.5h-122v64
h154q14 0 24.5 9.5t10.5 23.5v4q0 14 -10.5 25t-24.5 11z" />
<glyph glyph-name="poweroff" unicode="&#xe6d5;"
d="M512 512q15 0 25.5 10.5t10.5 25.5v312q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-312q0 -15 10.5 -25.5t25.5 -10.5zM512 -128q-104 0 -199 40q-92 39 -163 110t-110 163q-40 95 -40 199q0 123 55 231q53 105 147 177q12 9 27 7t24 -14t7 -27t-14 -24
q-81 -61 -127 -151q-47 -94 -47 -199q0 -90 35 -171q33 -79 94 -140t140 -95q81 -34 171 -34t171 35q79 33 140 94t95 140q34 81 34 171q0 105 -47 199q-46 90 -127 151q-12 9 -14 24t7 27t24 14t27 -7q94 -72 147 -177q55 -109 55 -231q0 -104 -40 -200q-39 -91 -110 -162
t-163 -110q-95 -40 -199 -40z" />
<glyph glyph-name="trademark" unicode="&#xe651;"
d="M666.5 397q46.5 43 46.5 115q0 37 -14 69q-14 30 -39 51q-25 19 -59 27.5t-125 8.5h-113v-578h65v264h23l194 -264h82l-196 264q89 0 135.5 43zM516 420h-88v182h91q66 0 96 -22q31 -22 31 -69.5t-32 -69.5q-31 -22 -98 -21zM512 896q-139 0 -257 -68.5t-186.5 -186.5
t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM512 -56q-182 0 -311 129t-129 311t129 311t311 129t311 -129t129 -311t-129 -311t-311 -129z" />
<glyph glyph-name="find" unicode="&#xe6db;"
d="M521 512q-58 4 -99.5 -37.5t-37.5 -99.5l-98 -217l217 98q58 -4 99.5 37.5t37.5 99.5l98 217zM551.5 344.5q-16.5 -16.5 -39.5 -16.5t-39.5 16.5t-16.5 39.5t16.5 39.5t39.5 16.5t39.5 -16.5t16.5 -39.5t-16.5 -39.5zM512 896q-139 0 -257 -68.5t-186.5 -186.5
t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM512 -56q-182 0 -311 129t-129 311t129 311t311 129t311 -129t129 -311t-129 -311t-311 -129z" />
<glyph glyph-name="copyright" unicode="&#xe6de;"
d="M518 176q-79 0 -121 56q-42 53 -42 150q0 96 43 152q44 58 121 58q63 0 101 -29q38 -31 49 -91h80q-14 96 -74 142q-59 46 -156 46q-119 0 -185 -83q-62 -75 -62 -195q0 -121 62 -195q65 -79 184 -79q96 0 156 51q59 50 78 153h-81q-19 -136 -153 -136zM512 896
q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM512 -56q-182 0 -311 129t-129 311t129 311t311 129t311 -129t129 -311t-129 -311t-311 -129z" />
<glyph glyph-name="sound" unicode="&#xe6e9;"
d="M464 731l-233 -155h-166q-27 0 -46 -21t-19 -51v-240q0 -30 19 -51t46 -21h166l233 -155q23 -15 39.5 -5t16.5 40v624q0 30 -16.5 40t-39.5 -5zM448 134l-191 130h-185v240h185l191 127v-497zM640 232q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5
q93 0 158.5 65.5t65.5 158.5t-65.5 158.5t-158.5 65.5q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5q63 0 107.5 -44.5t44.5 -107.5t-44.5 -107.5t-107.5 -44.5zM640 768q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5q129 0 220.5 -91.5t91.5 -220.5
t-91.5 -220.5t-220.5 -91.5q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5z" />
<glyph glyph-name="earth" unicode="&#xe6f1;"
d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM394 808q-46 -39 -80 -104q-31 16 -59 36h-2q65 47 141 68zM198 692q40 -31 87 -54q-35 -94 -41 -204h-169
q17 150 123 258zM72 362h170q4 -126 43 -232q-46 -23 -87 -54q-56 56 -88.5 130t-37.5 156zM253 28h2q28 20 59 36q35 -65 80 -104q-76 21 -141 68zM481 -10q-59 19 -103 100q50 16 103 20v-120zM481 182q-67 -4 -132 -25q-32 92 -35 205h167v-180zM481 434h-165
q6 97 33 177q64 -21 132 -25v-152v0zM481 658q-53 4 -103 20q44 82 103 100v-120zM949 434h-169q-6 110 -41 204q46 23 87 54q106 -108 123 -258zM771 740h-2q-28 -20 -59 -36q-35 65 -81 104q77 -21 142 -68zM553 774q53 -22 93 -96q-45 -15 -93 -19v115zM553 587
q62 4 122 24q27 -80 33 -177h-155v153zM553 362h157q-3 -113 -35 -205q-59 19 -122 24v181zM553 -6v115q48 -4 93 -19q-40 -74 -93 -96zM630 -40q46 39 80 104q31 -16 59 -36h2q-65 -47 -141 -68zM826 76q-40 31 -87 54q39 106 43 232h169q-4 -82 -36.5 -156t-88.5 -130z
" />
<glyph glyph-name="wifi" unicode="&#xe6d6;"
d="M964 576q-92 93 -212 140.5t-241 47.5t-240.5 -47.5t-212.5 -140.5q-10 -10 -10 -25t10.5 -25.5t25.5 -10.5t25 11q82 81 188 123.5t214 42.5t214 -42.5t188 -123.5q10 -11 25 -11t25.5 10.5t10.5 25.5t-10 25zM194 422q-10 -11 -10 -26t10.5 -25.5t25.5 -10.5t25 11
q54 54 124.5 82t141.5 28t141.5 -28t124.5 -82q10 -11 25 -11t25.5 10.5t10.5 25.5t-10 26q-86 86 -201.5 116.5t-231 0t-201.5 -116.5zM693 258v0q-75 75 -181 75t-181 -75q-11 -11 -11 -26t10.5 -25.5t25.5 -10.5t26 11q54 54 130 54t130 -54v0l3 -3q10 -11 25 -11
t25.5 11t10.5 25.5t-10 25.5q-3 2 -3 3zM512 54zM458 54q0 -22 16 -38t38 -16t38 16t16 38t-16 38t-38 16t-38 -16t-16 -38z" />
<glyph glyph-name="sync" unicode="&#xe6da;"
d="M989 384q-15 1 -26 -8.5t-12 -24.5q-7 -83 -42.5 -157.5t-96.5 -131.5t-138.5 -87.5t-161.5 -30.5q-133 0 -243 73q-97 64 -149 167h100q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-184q-15 0 -25.5 -10.5t-10.5 -25.5v-184q0 -15 10.5 -25.5t25.5 -10.5
t25.5 10.5t10.5 25.5v86q59 -100 157 -165q128 -85 283 -85q98 0 188 35.5t161 101.5t112.5 153t48.5 183q2 15 -8 26.5t-25 12.5zM988 768q-15 0 -25.5 -10.5t-10.5 -25.5v-86q-59 100 -157 165q-128 85 -283 85q-98 0 -188 -35.5t-161 -101.5t-112.5 -153t-49.5 -183
q-1 -15 9 -26.5t25 -12.5h2q14 0 24.5 9.5t11.5 23.5q6 83 42 157.5t97 131.5t138.5 87.5t161.5 30.5q133 0 243 -73q97 -64 149 -167h-100q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h184q15 0 25.5 10.5t10.5 25.5v184q0 15 -10.5 25.5t-25.5 10.5z" />
<glyph glyph-name="login" unicode="&#xe657;"
d="M443 274q-11 -11 -11 -26t10.5 -25.5t25.5 -10.5t26 11l136 135q10 11 10 26t-10 26l-136 135q-11 11 -26 11t-25.5 -10.5t-10.5 -25.5t11 -26l74 -74h-481q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h481zM984 583q-39 92 -110 163t-163 110q-95 40 -199 40
q-123 0 -231 -55q-105 -53 -177 -147q-9 -12 -7 -27t14 -24t27 -7t24 14q61 81 151 127q94 47 199 47q90 0 171 -35q79 -33 140 -94t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140t-140 -94q-81 -35 -171 -35q-105 0 -199 47q-90 46 -151 127q-9 12 -24 14t-27 -7
t-14 -24t7 -27q72 -94 177 -147q108 -55 231 -55q104 0 199 40q92 39 163 110t110 163q40 95 40 199t-40 199z" />
<glyph glyph-name="logout" unicode="&#xe65a;"
d="M772 29q-116 -85 -260 -85q-90 0 -171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171q34 79 95 140t140 94q81 35 171 35q144 0 260 -85q12 -9 26.5 -6.5t23.5 14.5t7 26.5t-14 23.5q-135 99 -303 99q-104 0 -199 -40q-92 -39 -163 -110t-110 -163q-40 -95 -40 -199
t40 -199q39 -92 110 -163t163 -110q95 -40 199 -40q168 0 303 99q12 9 14 23.5t-6.5 26.5t-23.5 14.5t-27 -6.5zM1014 410l-136 135q-11 11 -26 11t-25.5 -10.5t-10.5 -25.5t11 -26l74 -74h-481q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h481l-74 -74
q-11 -11 -11 -26t10.5 -25.5t25.5 -10.5t26 11l136 135q10 11 10 26t-10 26z" />
<glyph glyph-name="reload1" unicode="&#xe616;"
d="M954 392q-2 15 -14.5 23.5t-27 6t-23 -14.5t-6.5 -27q5 -28 5 -60q0 -76 -28.5 -144.5t-81.5 -121.5t-122 -81.5t-144 -28.5t-144 28.5t-122 81.5t-81.5 122t-28.5 144t28.5 144t81.5 122t122 81.5t144 28.5h13l-82 -82q-11 -11 -11 -25.5t10.5 -25.5t25.5 -11t26 11
l135 136q11 10 11 25t-11 26l-135 135q-11 11 -26 11t-25.5 -10.5t-10.5 -25.5t11 -25l66 -67q-89 -1 -171 -35q-81 -34 -143 -96t-96 -143q-35 -83 -35 -174t35 -174q34 -81 96 -143t143 -96q83 -35 174 -35t174 35q81 34 143 96t96 142q35 83 35 175q0 37 -6 72z" />
<glyph glyph-name="message1" unicode="&#xe6ab;"
d="M292 471q-23 0 -39 -16t-16 -39t16 -39t39 -16t39 16t16 39t-16 39t-39 16zM732 471q-23 0 -39 -16t-16 -39t16 -39t39 -16t39 16t16 39t-16 39t-39 16zM512 471q-23 0 -39 -16t-16 -39t16 -39t39 -16t39 16t16 39t-16 39t-39 16zM983 604q-39 86 -110 153
q-71 66 -163 102q-94 37 -198 37t-198 -37q-92 -36 -163 -102q-71 -67 -110 -153q-41 -90 -41 -187q0 -88 33 -169.5t94 -147.5l23 -196q3 -19 20 -28q7 -4 16 -4t18 5l148 84q78 -24 160 -24q103 0 198 37q92 37 163 103t110 152q41 89 41 188q0 97 -41 187zM918 259
q-33 -73 -94 -130q-61 -56 -140 -87q-82 -33 -172 -33q-79 0 -152 25q-16 5 -30 -3l-115 -65l-18 155q-1 12 -10 21q-56 56 -85.5 127t-29.5 148q0 82 34 157q33 73 94 130t140 88q82 32 172 32t172 -32q79 -32 140 -88.5t94 -129.5q34 -75 34 -157.5t-34 -157.5z" />
<glyph glyph-name="shake" unicode="&#xe94f;"
d="M760 896h-496q-30 0 -51 -21t-21 -51v-880q0 -30 21 -51t51 -21h464q33 0 68.5 22t35.5 50v880q0 30 -21 51t-51 21zM542 -64h-60q-15 0 -24.5 9.5t-9.5 22.5t9.5 22.5t24.5 9.5h60q15 0 24.5 -9.5t9.5 -22.5t-9.5 -22.5t-24.5 -9.5zM760 65h-496v704h496v-704zM80 870
l-44 -10q-19 -12 -29 -33t-6 -44l127 -832l-75 853q-3 39 27 66zM130 886q-20 -11 -31.5 -31t-10.5 -44l54 -839v856q0 39 32 63zM988 860l-44 10q30 -26 27 -66l-75 -853l127 832q4 23 -6 44t-29 33zM936 812q1 23 -10.5 43t-31.5 31l-44 6q32 -25 32 -64v-856z" />
<glyph glyph-name="API" unicode="&#xe951;"
d="M952 722l-183 106q-8 4 -16.5 4t-15.5 -4l-183 -106q-16 -9 -16 -27v-9l-10 6q-7 4 -15.5 4t-16.5 -4l-10 -6v9q0 18 -16 27l-183 106q-8 4 -16 4t-16 -4l-183 -106q-16 -9 -16 -27v-212q0 -18 16 -27l183 -106q8 -4 16 -4t16 4l10 6v-9q0 -18 16 -27l6 -4l-6 -4
q-16 -9 -16 -27v-212q0 -18 16 -27l183 -106q8 -4 16 -4t16 4l183 106q16 9 16 27v212q0 18 -16 27l-6 4l6 4q16 9 16 27v9l10 -6q7 -4 15.5 -4t16.5 4l183 106q16 9 16 27v212q0 18 -16 27zM271 424l-143 82v166l143 82l143 -82v-28l-101 -58q-16 -9 -16 -27v-120zM414 591
v-85l-71 -40v84zM655 261v-165l-143 -82l-143 82v165l23 13l104 -60q8 -4 16 -4t16 4l104 60zM438 301l74 43l74 -43l-74 -43zM681 355l-23 -13l-130 76q-8 4 -16 4t-16 -4l-130 -76l-23 13v28l127 73q16 9 16 27v150l26 15l26 -15v-150q0 -18 16 -27l127 -74v-27zM681 466
l-71 40v86l71 -41v-85zM896 506l-143 -82l-26 15v120q0 18 -16 27l-101 58v28l143 82l143 -82v-166z" />
<glyph glyph-name="appstore-o" unicode="&#xe695;"
d="M398 760v-262h-262v262h262zM398 832h-262q-30 0 -51 -21t-21 -51v-262q0 -30 21 -51t51 -21h262q30 0 51 21t21 51v262q0 30 -21 51t-51 21zM888 760v-262h-262v262h262zM888 832h-262q-30 0 -51 -21t-21 -51v-262q0 -30 21 -51t51 -21h262q30 0 51 21t21 51v262
q0 30 -21 51t-51 21zM398 270v-262h-262v262h262zM398 342h-262q-30 0 -51 -21t-21 -51v-262q0 -30 21 -51t51 -21h262q30 0 51 21t21 51v262q0 30 -21 51t-51 21zM888 270v-262h-262v262h262zM888 342h-262q-30 0 -51 -21t-21 -51v-262q0 -30 21 -51t51 -21h262q30 0 51 21
t21 51v262q0 30 -21 51t-51 21z" />
<glyph glyph-name="appstore1" unicode="&#xe696;"
d="M398 832h-262q-30 0 -51 -21t-21 -51v-262q0 -30 21 -51t51 -21h262q30 0 51 21t21 51v262q0 30 -21 51t-51 21zM888 832h-262q-30 0 -51 -21t-21 -51v-262q0 -30 21 -51t51 -21h262q30 0 51 21t21 51v262q0 30 -21 51t-51 21zM398 342h-262q-30 0 -51 -21t-21 -51v-262
q0 -30 21 -51t51 -21h262q30 0 51 21t21 51v262q0 30 -21 51t-51 21zM888 342h-262q-30 0 -51 -21t-21 -51v-262q0 -30 21 -51t51 -21h262q30 0 51 21t21 51v262q0 30 -21 51t-51 21z" />
<glyph glyph-name="scan1" unicode="&#xe697;"
d="M768 200v368q0 30 -21 51t-51 21h-368q-30 0 -51 -21t-21 -51v-368q0 -30 21 -51t51 -21h368q30 0 51 21t21 51zM696 200h-368v368h368v-368zM100 572q15 0 25.5 10.5t10.5 25.5v152h152q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-152q-30 0 -51 -21t-21 -51
v-152q0 -15 10.5 -25.5t25.5 -10.5zM288 8h-152v152q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-152q0 -30 21 -51t51 -21h152q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM888 832h-152q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h152v-152
q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v152q0 30 -21 51t-51 21zM924 196q-15 0 -25.5 -10.5t-10.5 -25.5v-152h-152q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h152q30 0 51 21t21 51v152q0 15 -10.5 25.5t-25.5 10.5z" />
<glyph glyph-name="exception1" unicode="&#xe665;"
d="M888 832h-753q-30 0 -51 -21t-21 -51v-752q0 -30 21 -51t51 -21h277q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-277v752h753v-752h-84q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h84q30 0 51 21t21 51v752q0 30 -21 51t-51 21zM640 -28
q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM676 512q-15 0 -25.5 -10.5t-10.5 -25.5v-376q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v376q0 15 -10.5 25.5t-25.5 10.5zM540 640h-312q-15 0 -25.5 -10.5
t-10.5 -25.5t10.5 -25.5t25.5 -10.5h312q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM412 448h-184q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h184q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM412 256h-184q-15 0 -25.5 -10.5t-10.5 -25.5
t10.5 -25.5t25.5 -10.5h184q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5z" />
<glyph glyph-name="contacts" unicode="&#xe6f0;"
d="M256 204q0 15 -10.5 25.5t-25.5 10.5h-120q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h120q15 0 25.5 10.5t10.5 25.5zM100 526h120q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-120q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5zM888 832
h-688q-30 0 -51 -21t-21 -51v-56q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v56h688v-752h-688v54v0v1v1q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-2v0v-54q0 -30 21 -51t51 -21h688q30 0 51 21t21 51v752q0 30 -21 51t-51 21zM100 347h120
q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-120q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5zM575.5 312q-67.5 0 -115.5 48t-48 116t48 116t115.5 48t116 -48t48.5 -116t-48.5 -116t-116 -48zM576 568q-38 0 -65 -27t-27 -65t27 -65t65 -27t65 27t27 65
t-27 65t-65 27zM764 128q-13 0 -23 8t-12 21q-11 55 -54 91t-99.5 36t-99.5 -36t-54 -91q-2 -13 -12 -21t-23 -8q-3 0 -7 1q-14 2 -22.5 14.5t-5.5 27.5q15 80 78 132.5t145.5 52.5t145.5 -52.5t79 -132.5q2 -15 -6 -27.5t-23 -14.5q-3 -1 -7 -1z" />
<glyph glyph-name="solution1" unicode="&#xe66f;"
d="M959 -21q-10 50 -41.5 88t-77.5 56q28 18 43.5 47t15.5 63q0 55 -38.5 93.5t-93 38.5t-93.5 -38.5t-39 -93.5q0 -33 16 -62.5t44 -47.5q-46 -18 -77.5 -56t-41.5 -88q-3 -14 5.5 -26.5t23.5 -15.5t27 5.5t15 23.5q8 43 42 71t78.5 28t78.5 -28t42 -71q3 -13 13 -21.5
t22 -8.5q4 0 7 1q15 3 23.5 15.5t5.5 26.5zM767.5 293q24.5 0 42.5 -17.5t18 -42.5t-18 -42.5t-42.5 -17.5t-42 17.5t-17.5 42.5t17.5 42.5t42 17.5zM888 832h-752q-30 0 -51 -21t-21 -51v-752q0 -30 21 -51t51 -21h276q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5
h-276v752h752v-340q0 -15 11 -25.5t25.5 -10.5t25 10.5t10.5 25.5v340q0 30 -21 51t-51 21zM228 568h312q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-312q-14 0 -25 -10.5t-11 -25.5t11 -25.5t25 -10.5zM412 448h-184q-14 0 -25 -10.5t-11 -25.5t11 -25.5t25 -10.5
h184q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM412 256h-184q-14 0 -25 -10.5t-11 -25.5t11 -25.5t25 -10.5h184q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5z" />
<glyph glyph-name="fork" unicode="&#xe6f2;"
d="M896 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5q0 -43 26 -77t66 -46v-127l-220 -221l-220 221v127q40 12 66 46t26 77q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5q0 -43 25.5 -77t66.5 -46v-157h-1l257 -257v-108q-40 -12 -66 -46t-26 -77
q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5q0 43 -26 77t-66 46v109l256 256v0v157q40 12 66 46t26 77zM200 768q0 23 16.5 39.5t39.5 16.5t39.5 -16.5t16.5 -39.5t-16.5 -39.5t-39.5 -16.5t-39.5 16.5t-16.5 39.5zM568 0q0 -23 -16.5 -39.5t-39.5 -16.5t-39.5 16.5
t-16.5 39.5t16.5 39.5t39.5 16.5t39.5 -16.5t16.5 -39.5zM768 712q-23 0 -39.5 16.5t-16.5 39.5t16.5 39.5t39.5 16.5t39.5 -16.5t16.5 -39.5t-16.5 -39.5t-39.5 -16.5z" />
<glyph glyph-name="edit1" unicode="&#xe692;"
d="M924 8h-824q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h824q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM296 126l236 100q5 2 10 6l397 398q21 21 21 51t-21 51l-79 79q-21 21 -51 21t-51 -21l-397 -397q-5 -5 -7 -11l-100 -235q-8 -20 7 -35t35 -7z
M809 760v0l79 -79l-62 -62l-79 79zM417 368l279 279l79 -79l-279 -279l-137 -58z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.
Binary file not shown.
+65
View File
@@ -0,0 +1,65 @@
@font-face {font-family: "antdadmin";
src: url('iconfont.eot?t=1494298210172'); /* IE9*/
src: url('iconfont.eot?t=1494298210172#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('iconfont.woff?t=1494298210172') format('woff'), /* chrome, firefox */
url('iconfont.ttf?t=1494298210172') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('iconfont.svg?t=1494298210172#antdadmin') format('svg'); /* iOS 4.1- */
}
.antdadmin {
font-family:"antdadmin" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-home:before { content: "\e600"; }
.icon-user:before { content: "\e601"; }
.icon-timelimit:before { content: "\e602"; }
.icon-shopcart:before { content: "\e603"; }
.icon-message:before { content: "\e604"; }
.icon-remind:before { content: "\e605"; }
.icon-service:before { content: "\e606"; }
.icon-shop:before { content: "\e607"; }
.icon-sweep:before { content: "\e609"; }
.icon-express:before { content: "\e60a"; }
.icon-payment:before { content: "\e60b"; }
.icon-search:before { content: "\e60c"; }
.icon-feedback:before { content: "\e60d"; }
.icon-pencil:before { content: "\e60e"; }
.icon-setting:before { content: "\e60f"; }
.icon-refund:before { content: "\e610"; }
.icon-delete:before { content: "\e611"; }
.icon-star:before { content: "\e612"; }
.icon-heart:before { content: "\e613"; }
.icon-share:before { content: "\e615"; }
.icon-location:before { content: "\e616"; }
.icon-position:before { content: "\e617"; }
.icon-console:before { content: "\e618"; }
.icon-mobile:before { content: "\e61a"; }
Binary file not shown.
File diff suppressed because one or more lines are too long
+163
View File
@@ -0,0 +1,163 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
Created by FontForge 20120731 at Tue May 9 10:50:10 2017
By admin
</metadata>
<defs>
<font id="antdadmin" horiz-adv-x="1024" >
<font-face
font-family="antdadmin"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
panose-1="2 0 6 3 0 0 0 0 0 0"
ascent="896"
descent="-128"
x-height="792"
bbox="44 -69 970.781 847"
underline-thickness="0"
underline-position="0"
unicode-range="U+0078-E61A"
/>
<missing-glyph
/>
<glyph glyph-name=".notdef"
/>
<glyph glyph-name=".notdef"
/>
<glyph glyph-name=".null" horiz-adv-x="0"
/>
<glyph glyph-name="nonmarkingreturn" horiz-adv-x="341"
/>
<glyph glyph-name="x" unicode="x" horiz-adv-x="1001"
d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
<glyph glyph-name="home" unicode="&#xe600;"
d="M731 -52h-436q-72 0 -97.5 28.5t-25.5 104.5v457q0 10 7.5 17.5t18 7.5t18 -7.5t7.5 -17.5v-457q0 -56 10.5 -68.5t61.5 -12.5h436q52 0 66.5 13.5t14.5 67.5v457q0 10 7.5 17.5t18.5 7.5t18.5 -7.5t7.5 -17.5v-457q0 -75 -30 -104t-103 -29zM620 -39q-5 0 -9 4t-4 9v243
q0 18 -5.5 22t-27.5 4h-123q-8 0 -11.5 -0.5t-7 -0.5t-4 -3t-1 -4t0 -7.5t0.5 -10.5v-243q0 -5 -3.5 -9t-9 -4t-9.5 4t-4 9v243q0 32 10 42t39 10h123q31 0 45 -10.5t14 -41.5v-243q0 -5 -4 -9t-9 -4zM90 461q-13 0 -20 10q-7 9 -5.5 19.5t10.5 16.5l422 318q9 7 19.5 5.5
t17 -10t5 -19t-10.5 -16.5l-423 -319q-6 -5 -15 -5zM936 461q-9 0 -16 5l-423 319q-8 6 -9.5 16.5t5 19t17 10t18.5 -5.5l423 -318q8 -6 9.5 -16.5t-4.5 -19.5q-8 -10 -20 -10zM287 345q-5 0 -9 4t-4 9v146q0 8 3 10l167 129q10 8 17 -2q9 -12 0 -18l-161 -125v-140
q0 -5 -4 -9t-9 -4zM287 281q-5 0 -9 4t-4 9v13q0 5 4 9t9 4t9 -4t4 -9v-13q0 -5 -4 -9t-9 -4z" />
<glyph glyph-name="user" unicode="&#xe601;"
d="M513 -65h-298q-34 0 -59 24.5t-25 57.5q0 75 65 167.5t144 130.5q10 4 20 0.5t14.5 -13t1 -20t-13.5 -14.5q-68 -33 -123.5 -113.5t-55.5 -137.5q0 -11 10 -20.5t22 -9.5h298q11 0 18.5 -7.5t7.5 -18.5t-7.5 -18.5t-18.5 -7.5zM811 -65h-298q-11 0 -18.5 7.5t-7.5 18.5
t7.5 18.5t18.5 7.5h298q12 0 22 9.5t10 20.5q0 57 -55.5 137.5t-124.5 113.5q-9 4 -13 14.5t1 20t15 13t20 -0.5q79 -38 144 -130.5t65 -167.5q0 -33 -25.5 -57.5t-58.5 -24.5zM516.5 318q-105.5 0 -180 75t-74.5 180.5t74.5 180t180 74.5t180.5 -74.5t75 -180t-75 -180.5
t-180.5 -75zM517 777q-84 0 -143.5 -60t-59.5 -144t59.5 -143.5t143.5 -59.5t143.5 59.5t59.5 143.5t-59.5 144t-143.5 60zM370.5 560q-5.5 0 -9 4t-3.5 9q0 66 46.5 113t112.5 47q5 0 9 -4t4 -9.5t-4 -9t-9 -3.5q-55 0 -94.5 -39.5t-39.5 -94.5q0 -5 -3.5 -9t-9 -4z
M397 520.5q0 -5.5 -3.5 -9t-9 -3.5t-9.5 3.5t-4 9t4 9.5t9.5 4t9 -4t3.5 -9.5z" />
<glyph glyph-name="timelimit" unicode="&#xe602;"
d="M457 362l2 -2q1 0 1 -1q17 -21 44 -21q24 0 40.5 16.5t16.5 40.5q0 25 -19 42q-3 4 -5 5l-230 175q-11 9 -23 0q-6 -5 -7 -13t4 -14zM511 833q-12 0 -20 -8t-8 -19v-178q0 -11 8 -19t19.5 -8t19.5 8t8 19v149q99 -7 182.5 -61.5t133 -142t49.5 -187.5q0 -106 -52.5 -196
t-143 -142.5t-196.5 -52.5t-196.5 52.5t-143 142.5t-52.5 197q0 83 33.5 159t94.5 131q9 8 9.5 19t-7 19.5t-19 9t-20.5 -6.5q-69 -64 -107.5 -150.5t-38.5 -180.5q0 -91 35.5 -174t95.5 -142.5t142.5 -95t173.5 -35.5t173.5 35.5t142.5 95t95.5 142.5t35.5 173t-36.5 172.5
t-96.5 142.5t-142.5 96t-171.5 36zM607 54q2 0 4 1q109 32 177.5 125t68.5 207q0 5 -4 9t-9.5 4t-9.5 -4t-4 -9q0 -105 -63.5 -190.5t-163.5 -115.5q-6 -2 -8.5 -7t-0.5 -10q3 -10 13 -10v0zM511 66q-6 0 -10 -4t-3.5 -10t4.5 -9.5t9 -3.5h1q23 1 45 5q6 1 9 5.5t2 10
t-5.5 9t-10.5 2.5q-20 -4 -41 -5z" />
<glyph glyph-name="shopcart" unicode="&#xe603;"
d="M879 167h-490q-63 0 -76 70l-63 475l-1 9q-2 21 -3.5 33t-10 32.5t-22 31.5t-40.5 20t-64 9q-12 0 -20 -8t-8 -19.5t8 -20t20 -8.5q29 0 45.5 -4t24.5 -16t10.5 -22t3.5 -32l1 -11l63 -477v-1q11 -55 46 -86t86 -31h490q12 0 20 8t8 19.5t-8 20t-20 8.5zM948 709
q-28 31 -76 31h-538q-12 0 -20 -8.5t-8 -20t8 -19.5t20 -8h538q23 0 34 -12t8 -37l-42 -249q-3 -19 -17.5 -37t-41.5 -23l-411 -27q-12 0 -19.5 -9t-6.5 -20t9 -19t19 -8h2l414 28q45 7 73 37.5t34 68.5l42 250l1 1q5 50 -22 81zM820.5 434.5q-5.5 0.5 -10.5 -3t-5 -8.5
q-1 -5 -8 -22q-5 -12 8 -18q2 -1 5 -1q9 0 13 9q8 19 9 28q1 5 -2.5 10t-9 5.5zM844 487l15 90q3 29 -12 47q-16 18 -46 18h-90q-6 0 -10 -4t-4 -10t4 -10t10 -4h90q17 0 25 -9q7 -8 5 -24l-15 -90q-1 -5 2.5 -10t9.5 -6h2q12 0 14 12zM367 83q-27 0 -45.5 -19t-18.5 -46
t18.5 -45.5t45.5 -18.5t46 18.5t19 45.5t-19 46t-46 19zM814.5 83q-26.5 0 -45.5 -19t-19 -46t19 -45.5t45.5 -18.5t45.5 18.5t19 45.5t-19 46t-45.5 19z" />
<glyph glyph-name="message" unicode="&#xe604;"
d="M320 -69q-11 0 -19 7q-14 13 -7 32l32 76q9 19 10 31q-12 19 4 34q8 8 19.5 8t19.5 -8q27 -27 -2 -88l-1 -2l126 69q6 4 13 4q106 0 196.5 46t142.5 125.5t52 172.5q0 87 -53.5 163.5t-144 122t-193.5 45.5q-101 0 -190.5 -45t-143.5 -121.5t-57 -164.5q-2 -77 36 -147
t110 -121q10 -7 11.5 -18t-5 -20.5t-18 -11.5t-20.5 5q-83 59 -127.5 141t-41.5 173q3 103 64.5 192t163.5 141.5t218 52.5q119 0 222 -52.5t164 -142t61 -192.5q0 -107 -59 -198.5t-160 -145.5t-220 -56l-190 -103q-6 -4 -13 -4zM586 489h-250q-6 0 -10 4t-4 10t4 10t10 4
h250q6 0 10 -4t4 -10t-4 -10t-10 -4zM697 489h-42q-5 0 -9 4t-4 10t4 10t9 4h42q6 0 10 -4t4 -10t-4 -10t-10 -4zM503 350h-153q-6 0 -10 4.5t-4 10t4 9.5t10 4h153q5 0 9.5 -4t4.5 -9.5t-4.5 -10t-9.5 -4.5zM586 350h-28q-6 0 -10 4.5t-4 10t4 9.5t10 4h28q6 0 10 -4
t4 -9.5t-4 -10t-10 -4.5z" />
<glyph glyph-name="remind" unicode="&#xe605;"
d="M578 474h-240q-6 0 -10 4t-4 9.5t4 9.5t10 4h240q6 0 10 -4t4 -9.5t-4 -9.5t-10 -4zM685 474h-40q-6 0 -9.5 4t-3.5 9.5t3.5 9.5t9.5 4h40q6 0 9.5 -4t3.5 -9.5t-3.5 -9.5t-9.5 -4zM498 341h-147q-5 0 -9 3.5t-4 9t4 9.5t9 4h147q6 0 9.5 -4t3.5 -9.5t-3.5 -9t-9.5 -3.5z
M578 341h-26q-6 0 -10 3.5t-4 9t4 9.5t10 4h26q6 0 10 -4t4 -9.5t-4 -9t-10 -3.5zM274 167q-69 49 -105.5 116.5t-34.5 140.5q2 85 54 159t138.5 117t183.5 43q104 0 196 -49q-1 6 -1 12q0 23 8 45q-95 46 -203 46q-111 0 -209.5 -50.5t-158 -136t-62.5 -184.5
q-2 -87 40.5 -166.5t122.5 -136.5q9 -6 20 -4.5t17.5 10.5t4.5 20t-11 18zM836 579q51 -73 51 -154q0 -90 -50.5 -166.5t-137.5 -121t-189 -44.5q-7 0 -13 -3l-121 -66l1 1q28 59 2 85q-8 8 -19 8t-19 -8q-15 -15 -4 -33q0 -11 -9 -30l-31 -73q-7 -18 7 -30q8 -7 18 -7
q7 0 13 3l182 100q115 2 212.5 53.5t154 140t56.5 191.5q0 88 -48 168q-26 -13 -56 -14zM956 718.5q0 -46.5 -33 -79t-79.5 -32.5t-79 32.5t-32.5 79t32.5 79t79 32.5t79.5 -32.5t33 -79z" />
<glyph glyph-name="service" unicode="&#xe606;"
d="M512 756q-127 0 -225.5 -78t-127.5 -199q-4 0 -10.5 -1.5t-23.5 -9.5t-29.5 -19.5t-22 -33.5t-8.5 -49.5t13 -48.5t26.5 -31.5t31.5 -16.5t25.5 -7t11.5 -1q3 -1 6.5 -1t13 2.5t11.5 2.5q-26 61 -26 127q0 91 45 168t122 121.5t167.5 44.5t167.5 -44.5t121.5 -121.5
t44.5 -168q0 -109 -63.5 -196t-163.5 -120q-4 -2 -8 -1.5t-7 1.5l-3 1q-22 4 -50 -4q-10 -3 -15 -12t-4 -20q2 -25 23 -29q50 -8 61 15q1 2 2.5 6t3 6t3.5 4.5t5 3.5q76 26 134.5 82t87.5 132q4 0 11 1.5t25 8.5t32 17.5t25.5 31.5t12.5 47.5t-8 48t-23 32.5t-27.5 19
t-23.5 10l-10 2q-30 121 -128.5 199t-225.5 78v0zM512 111q-119 0 -203.5 84.5t-84.5 203t84.5 203t203.5 84.5t203 -84.5t84 -203t-84 -203t-203 -84.5zM511.5 630q-95.5 0 -163.5 -68t-68 -163.5t68 -163.5t163.5 -68t163.5 68t68 163.5t-68 163.5t-163.5 68zM515 204
q-46 0 -86 23q-38 22 -61 60q-8 12 4 19t20 -5q19 -31 51 -50q33 -19 72 -19t72 19q32 19 51 50q8 12 20 5t4 -19q-23 -38 -61 -60q-40 -23 -86 -23zM668 331q-5 0 -9 4q-10 9 -1 20q6 6 6 21q0 6 4 10t10 4t10 -4t4 -10q0 -26 -13 -41q-5 -4 -11 -4z" />
<glyph glyph-name="shop" unicode="&#xe607;"
d="M820.5 287q-10.5 0 -18.5 -8t-8 -18v-154q0 -25 -21.5 -47t-45.5 -22h-456q-23 0 -38.5 21t-15.5 48v154q0 10 -7.5 18t-18.5 8t-19 -8t-8 -18v-154q0 -47 30 -84.5t77 -37.5h456q46 0 83 37.5t37 84.5v154q0 10 -8 18t-18.5 8zM597 90q6 0 10 4t4 9.5t-4 9t-10 3.5h-39
q-5 0 -9 -3.5t-4 -9t4 -9.5t9 -4h39zM742 142v119q0 5 -4 9t-9.5 4t-9.5 -4t-4 -9v-119q0 -11 -8 -18t-13 -8q-6 0 -10 -3.5t-4 -9t4 -9.5t10 -4q14 0 31 14.5t17 37.5zM824 780q-7 5 -16 5h-594q-9 0 -16 -5q-46 -35 -91 -129t-45 -163q0 -66 47 -122t115 -56q47 0 87 19.5
t64 52.5q25 -33 64.5 -51.5t79.5 -18.5t77.5 19t58.5 52q26 -29 63.5 -47t70.5 -24q16 -2 30 -2q56 0 92 36q45 46 44 125q0 58 -44.5 167t-86.5 142zM874 383q-27 -27 -77 -19q-35 6 -72 28.5t-49 54.5v155q0 11 -7.5 18.5t-18.5 7.5t-18.5 -7.5t-7.5 -18.5v-152
q-1 -1 -1 -3q-3 -37 -34.5 -59.5t-69.5 -22.5q-40 0 -75.5 24t-41.5 61q-1 2 -1 5v147q0 11 -8 18.5t-18.5 7.5t-18.5 -7.5t-8 -18.5v-159q-10 -35 -44.5 -57.5t-79.5 -22.5t-77 39.5t-32 85.5q0 55 36.5 133.5t71.5 111.5h575q32 -32 68.5 -124.5t36.5 -137.5
q0 -58 -29 -88zM440 628q-5 0 -9 -4t-4 -9v-40q0 -5 4 -9t9 -4t9 4t4 9v40q0 5 -4 9t-9 4z" />
<glyph glyph-name="sweep" unicode="&#xe609;"
d="M94 526q-12 0 -20.5 8.5t-8.5 20.5v164q0 48 34.5 78.5t87.5 30.5h166q12 0 20.5 -8.5t8.5 -20t-8.5 -20t-20.5 -8.5h-166q-26 0 -45.5 -13t-19.5 -39v-164q0 -12 -8 -20.5t-20 -8.5zM353 -65h-166q-50 0 -86 36t-36 86v166q0 12 8.5 20.5t20.5 8.5t20 -8.5t8 -20.5v-166
q0 -26 19.5 -45t45.5 -19h166q12 0 20.5 -8.5t8.5 -20.5t-8.5 -20.5t-20.5 -8.5v0zM849 -65h-179q-12 0 -20.5 8.5t-8.5 20.5t8.5 20.5t20.5 8.5h179q26 0 39 19t13 45v166q0 12 8 20.5t20 8.5t20.5 -8.5t8.5 -20.5v-166q0 -53 -30.5 -87.5t-78.5 -34.5v0zM929 526
q-12 0 -20 8.5t-8 20.5v164q0 52 -52 52h-179q-12 0 -20.5 8.5t-8.5 20t8.5 20t20.5 8.5h179q51 0 80 -29t29 -80v-164q0 -12 -8.5 -20.5t-20.5 -8.5zM785 367h-706q-6 0 -10 4.5t-4 10.5t4 10t10 4h706q6 0 10.5 -4t4.5 -10t-4.5 -10.5t-10.5 -4.5zM944 367h-101
q-6 0 -10 4.5t-4 10.5t4 10t10 4h101q6 0 10 -4t4 -10t-4 -10.5t-10 -4.5z" />
<glyph glyph-name="express" unicode="&#xe60a;"
d="M931.5 70q-10.5 0 -18.5 8t-8 19v572q0 29 -20.5 49.5t-49.5 20.5h-409q-29 0 -49.5 -20.5t-20.5 -49.5v-70q0 -20 -19 -25q-51 -15 -116.5 -43.5t-93.5 -59.5q-7 -9 -9 -26t0 -29v-4v-308q0 -11 -8 -18.5t-18.5 -7.5t-18.5 7.5t-8 18.5v307q-7 61 23 94q54 62 215 114
v50q0 51 36 87t87 36h409q51 0 87 -36t36 -87v-572q0 -11 -8 -19t-18.5 -8zM314 325h-105q-5 0 -9 4t-4 9t4 9t9 4h105q10 0 16 10t6 22v115q0 5 4 9t9.5 4t9 -4t3.5 -9v-115q0 -23 -13 -40.5t-35 -17.5zM169 325h-20q-5 0 -9 4t-4 9t4 9t9 4h20q6 0 9.5 -4t3.5 -9t-3.5 -9
t-9.5 -4zM309 -28q-48 0 -82 34t-34 82t34 82t82 34t82.5 -34t34.5 -82t-34.5 -82t-82.5 -34zM309.5 152q-26.5 0 -45 -19t-18.5 -45t18.5 -45t45 -19t45 19t18.5 45t-18.5 45t-45 19zM709.5 -28q-48.5 0 -82.5 34t-34 82t34 82t82.5 34t82.5 -34t34 -82t-34 -82t-82.5 -34z
M709.5 152q-26.5 0 -45 -19t-18.5 -45t18.5 -45t45 -19t45 19t18.5 45t-18.5 45t-45 19zM619 62h-210q-11 0 -18.5 7.5t-7.5 18.5t7.5 18.5t18.5 7.5h210q11 0 19 -7.5t8 -18.5t-8 -18.5t-19 -7.5z" />
<glyph glyph-name="payment" unicode="&#xe60b;"
d="M235 87q-21 0 -35.5 15.5t-14.5 37.5v227q0 5 -4 9t-9.5 4t-9.5 -4t-4 -9v-227q0 -33 22.5 -56.5t54.5 -23.5q6 0 9.5 4t3.5 9.5t-3.5 9.5t-9.5 4zM300 87h-13q-6 0 -10 -4t-4 -9.5t4 -9.5t10 -4h13q6 0 9.5 4t3.5 9.5t-3.5 9.5t-9.5 4zM866 407h-54v122q0 30 -20.5 54.5
t-51.5 32.5q2 8 -1 15l-58 154q-3 10 -13.5 14.5t-20.5 1.5l-462 -173q-7 -2 -11 -8h-21q-38 0 -63 -26.5t-25 -64.5v-469q0 -39 25 -66t63 -27h561q39 0 68.5 27.5t29.5 65.5v107h54q38 0 65.5 27t27.5 65v55q0 38 -27.5 65.5t-65.5 27.5zM641 741l45 -121h-370zM759 60
q0 -16 -14 -28t-31 -12h-561q-16 0 -25.5 11.5t-9.5 28.5v469q0 16 9.5 27t25.5 11h561q17 0 31 -11.5t14 -26.5v-122h-81q-39 0 -66 -27.5t-27 -65.5v-55q0 -38 27 -65t66 -27h81v-107zM905 259q0 -16 -11.5 -27.5t-27.5 -11.5h-188q-17 0 -28.5 11.5t-11.5 27.5v55
q0 16 11.5 27.5t28.5 11.5h188q16 0 27.5 -11.5t11.5 -27.5v-55zM705.5 313q-10.5 0 -18 -7.5t-7.5 -18t7.5 -18t18 -7.5t18 7.5t7.5 18t-7.5 18t-18 7.5z" />
<glyph glyph-name="search" unicode="&#xe60c;"
d="M216 525q3 -2 8 -2q9 0 13 8q35 57 93.5 90.5t125.5 33.5q6 0 11 4.5t5 11.5t-5 11.5t-11 4.5q-75 0 -141.5 -37.5t-104.5 -102.5q-3 -6 -1.5 -12.5t7.5 -9.5zM196.5 478.5q-6.5 1.5 -12 -2t-6.5 -9.5q-8 -32 -8 -56q0 -7 4.5 -11.5t11.5 -4.5t11.5 4.5t4.5 11.5
q0 20 7 48q1 7 -2.5 12.5t-10 7zM947 20l-163 163l-1 1q65 99 65 217q0 107 -52.5 197.5t-143 143t-197 52.5t-197 -52.5t-143 -143t-52.5 -197t52.5 -197t143 -143t197.5 -52.5q116 0 213 63l-46 47q-78 -46 -167 -46t-165 44t-120 119.5t-44 164.5t44 165t120 120t165 44
t164.5 -44t119.5 -120t44 -165q0 -127 -86 -221l36 -37q2 -3 5 -5l163 -163q9 -10 22.5 -10t23 9.5t9.5 22.5t-10 23v0z" />
<glyph glyph-name="feedback" unicode="&#xe60d;"
d="M512 -63q-91 0 -174 35.5t-142.5 95.5t-95 142.5t-35.5 173.5q0 90 33.5 171.5t97 144.5t145 97t171.5 34q137 0 250 -77q92 -63 144 -161t52 -209q0 -16 -1 -30q-7 -115 -69 -211t-161.5 -151t-214.5 -55zM512 775q-79 0 -150 -29.5t-126.5 -85t-85.5 -127t-30 -149.5
q0 -106 52.5 -196t142.5 -142.5t197 -52.5q101 0 188 48t141 132t61 185q1 12 1 26q0 97 -45.5 183t-126.5 141q-99 67 -219 67zM177 344q-12 0 -13 13q-2 13 -2 27q0 6 4.5 10t10 4t9.5 -4t4 -10q0 -12 1 -25q1 -6 -3 -10t-9 -5h-2zM302 120q-4 0 -8 3q-84 63 -116 162
q-4 13 9 17.5t17 -8.5q29 -91 106 -148q12 -9 3 -20q-4 -6 -11 -6zM505.5 197q-11.5 0 -20 8.5t-8.5 19.5v136q0 12 8.5 20t19.5 8q49 0 79.5 31t30.5 79q0 46 -30 78t-74 32t-73.5 -31.5t-29.5 -77.5v-24q0 -12 -8.5 -20t-20 -8t-19.5 8t-8 20v24q0 69 46 116.5t113 47.5
t113.5 -47.5t46.5 -117.5q0 -63 -38.5 -108.5t-99.5 -54.5v-111q0 -11 -8 -19.5t-19.5 -8.5zM532 146q0 -11 -8 -19t-19 -8t-19 8t-8 19t8 19t19 8t19 -8t8 -19z" />
<glyph glyph-name="pencil" unicode="&#xe60e;"
d="M97 -61q-12 0 -20 8l-6 6q-11 11 -7 26q8 35 19 74.5t34.5 100t42.5 79.5l562 562q37 37 90 37q57 0 98 -41l6 -6q39 -39 42 -95q4 -58 -35 -97l-561 -561q-20 -20 -81.5 -42t-102 -32.5t-75.5 -18.5h-6v0zM812 776q-30 0 -51 -21l-561 -561q-28 -28 -72 -192
q166 41 194 69l562 562q20 21 18 54q-2 34 -26 58l-6 7q-24 24 -58 24zM860 579q-6 0 -10 4l-150 150q-10 10 -0.5 20t19.5 0l151 -150q10 -10 0 -20q-4 -4 -10 -4zM350.5 69q-5.5 0 -9.5 4l-151 151q-10 10 0 20t20 0l151 -151q9 -10 0 -20q-5 -4 -10.5 -4zM240.5 -2
q-5.5 0 -9.5 4l-97 96q-10 10 0 20t20 0l96 -97q10 -9 0 -19q-4 -4 -9.5 -4zM258 162q-6 0 -10 4q-10 10 0 20l417 417q10 10 20 0t0 -20l-417 -417q-4 -4 -10 -4zM715 619q-6 0 -10 4q-10 10 0 20l52 52q10 10 20 0t0 -20l-52 -52q-4 -4 -10 -4zM304.5 116q-5.5 0 -10.5 4
q-9 10 0 20l510 509q10 10 19.5 0t0.5 -20l-510 -509q-4 -4 -9.5 -4z" />
<glyph glyph-name="setting" unicode="&#xe60f;"
d="M507.5 258q-52.5 0 -89.5 37t-37 89t37 89t89.5 37t89.5 -37t37 -89t-37 -89t-89.5 -37zM507.5 456q-29.5 0 -50.5 -21t-21 -50.5t21 -50.5t50.5 -21t50.5 21t21 50.5t-21 50.5t-50.5 21zM511 -63h-2q-38 0 -69 25.5t-43 65.5q-32 10 -62 26q-32 -18 -66 -18
q-45 0 -75 30l-2 2q-26 26 -30 66t16 77q-12 23 -24 63q-40 12 -64 41.5t-24 67.5v2q0 37 24 67.5t64 42.5q11 38 25 65q-20 36 -16.5 74.5t29.5 64.5l1 2q31 32 79 32q34 0 65 -17q28 14 58 24q10 40 42 65.5t72 25.5h2q40 0 70 -25.5t40 -65.5q30 -10 59 -25q29 18 63 18
q48 0 81 -34l2 -1q28 -28 31.5 -67.5t-17.5 -74.5q18 -36 26 -59q40 -9 66.5 -40.5t26.5 -71.5v-2q0 -40 -26.5 -71.5t-66.5 -40.5q-8 -24 -25 -56q21 -35 17 -76t-33 -69l-2 -3q-33 -33 -77 -33v0q-32 0 -64 19q-28 -15 -63 -26q-11 -40 -41 -65t-67 -25zM334 113
q7 0 13 -4q38 -22 80 -33q17 -4 20 -22q4 -26 22 -44t40 -18h2q23 0 38.5 18.5t18.5 43.5q3 18 21 22q42 12 81 34q16 10 31 -2q21 -17 45 -17v0q22 0 38 16l2 1q17 17 17 42.5t-16 45.5q-12 14 -3 31q22 39 32 75q5 19 26 21q26 2 44 19t18 41v2q0 24 -18 41t-44 20
q-20 1 -25 20q-10 38 -33 78q-10 16 2 31q17 21 17.5 44t-15.5 40l-2 1q-18 18 -43 18t-45 -16q-14 -12 -31 -3q-37 22 -78 33q-18 5 -20 24q-2 26 -18.5 43t-39.5 17h-2q-24 0 -42 -17.5t-21 -43.5q-2 -18 -20 -23q-40 -11 -76 -32q-16 -9 -30 2q-22 16 -48 16
q-25 0 -40 -16l-2 -1q-15 -18 -13.5 -41t16.5 -43q10 -15 1 -30q-21 -36 -33 -82q-5 -17 -21 -20q-26 -5 -42.5 -22t-16.5 -38v-2q0 -21 16.5 -38t42.5 -21q17 -3 22 -20q11 -45 32 -80q9 -15 -2 -30q-15 -22 -15 -47t15 -40l2 -3q13 -13 35 -13q25 0 48 17q8 5 17 5z
M742 460q-9 0 -13 9q-26 68 -87 110t-134 42q-6 0 -10 4t-4 9.5t4 9.5t10 4v0q82 0 150 -46.5t97 -122.5q5 -13 -8 -18q-2 -1 -5 -1zM278 262q-8 0 -12 6q-3 5 -6 14q-3 8 -4 12q-5 13 7.5 18t17.5 -8q2 -6 4.5 -12.5t4.5 -9.5q7 -11 -5 -18q-3 -2 -7 -2zM502 125v0
q-58 0 -111 24.5t-91 69.5q-9 10 1.5 19t19.5 -2q34 -40 81.5 -62t99.5 -22q6 0 10 -4t4 -9.5t-4 -9.5t-10 -4z" />
<glyph glyph-name="refund" unicode="&#xe610;"
d="M848 379q0 -6 4 -9.5t9.5 -3.5t9 3.5t3.5 9.5q0 110 -67 198t-173 117q-13 4 -16.5 -9t9.5 -16q98 -27 159.5 -108t61.5 -182zM547 680q9 0 17 -1h1q5 0 9 3.5t4 9t-3.5 9.5t-8.5 4q-10 1 -19 1q-5 0 -9 -4t-4 -9.5t4 -9t9 -3.5zM536 809q-115 0 -212.5 -56.5
t-154 -154.5t-56.5 -212q0 -26 3 -51l-31 -11q-15 -5 -18 -21q-3 -18 12 -30l89 -73q8 -7 18 -7q20 0 25 24l23 111q3 16 -7 28q-13 15 -31 8l-23 -8q-1 15 -1 30q0 98 48.5 182t133 133t183 49t182.5 -49t133 -133t49 -182.5t-49 -182.5t-133 -133t-183 -49q-136 0 -239 90
q-9 8 -21.5 7t-20.5 -10t-7 -21.5t10 -20.5q119 -104 278 -104q115 0 213 56.5t154.5 154.5t56.5 212.5t-56.5 212.5t-154.5 154.5t-213 56.5zM406 298q-12 0 -18 -5.5t-6 -19.5q0 -25 26 -25h100v-85q0 -17 5.5 -24t21.5 -7t21 7t5 24v85h102q26 0 26 25t-26 25h-102v41
h102q26 0 26 25t-26 25h-74l93 156q7 12 7 20.5t-10 15.5q-10 6 -20 6t-20 -16l-104 -176l-104 176q-9 15 -20.5 15t-19.5 -6t-8 -15.5t5 -19.5l93 -156h-75q-12 0 -18 -5.5t-6 -19.5q0 -25 26 -25h100v-41h-102z" />
<glyph glyph-name="delete" unicode="&#xe611;"
d="M703 -63h-406q-39 0 -62 4.5t-39.5 18.5t-23 39.5t-6.5 68.5v438q0 11 8 19t19.5 8t19 -8t7.5 -19v-438v-31.5t3 -20t6.5 -14.5t13.5 -6t21.5 -4.5t32.5 -0.5h406q23 0 33.5 0.5t22.5 3.5t16 7t8 13t5 21t1 32v438q0 11 8 19t19 8t19 -8t8 -19v-438q0 -77 -30 -104
t-110 -27zM694 655q-11 0 -19 8t-8 19v8q0 58 -15.5 72.5t-69.5 14.5h-163q-29 0 -43.5 -2.5t-22.5 -13.5t-9.5 -24.5t-1.5 -46.5v-8q0 -11 -8 -19t-19 -8t-19 8t-8 19v8q0 80 27.5 110.5t103.5 30.5h163q81 0 110 -33t29 -108v-8q0 -11 -8 -19t-19 -8zM342.5 73
q-5.5 0 -9.5 4t-4 9v27q0 6 4 10t9.5 4t9.5 -4t4 -10v-27q0 -5 -4 -9t-9.5 -4zM342.5 167q-5.5 0 -9.5 4t-4 10v230q0 6 4 10t9.5 4t9.5 -4t4 -10v-230q0 -6 -4 -10t-9.5 -4zM504.5 73q-5.5 0 -9.5 4t-4 9v325q0 6 4 10t9.5 4t9.5 -4t4 -10v-325q0 -5 -4 -9t-9.5 -4zM667 73
q-6 0 -9.5 4t-3.5 9v325q0 6 3.5 10t9.5 4t10 -4t4 -10v-325q0 -5 -4 -9t-10 -4zM951 590q0 -46 -32.5 -78.5t-78.5 -32.5h-657q-46 0 -79 32.5t-33 78.5v7q0 46 33 79t79 33h657q46 0 78.5 -33t32.5 -79v-7zM897 597q0 24 -16.5 41t-40.5 17h-657q-24 0 -40.5 -17
t-16.5 -41v-7q0 -23 16.5 -40t40.5 -17h657q24 0 40.5 17t16.5 40v7z" />
<glyph glyph-name="star" unicode="&#xe612;"
d="M737 -62q-22 0 -43 11l-183 99l-184 -99q-22 -12 -48 -10.5t-46 15.5q-22 14 -32 37.5t-5 48.5l36 215l-156 155q-18 18 -23.5 42t2.5 48t27.5 39.5t44.5 19.5l211 32l92 190q11 23 33 36.5t48 13.5t48 -13.5t33 -36.5l92 -190l211 -32q25 -4 44 -19.5t27 -39.5t2.5 -48
t-23.5 -42l-155 -155l36 -215q4 -25 -6 -48.5t-31 -37.5q-23 -16 -52 -16zM511 106q7 0 13 -4l196 -105q20 -11 38 2q18 12 14 32l-38 229q-2 14 8 24l165 165q15 14 8 34q-7 19 -28 22l-226 34q-14 2 -20 15l-98 203q-10 20 -32.5 20t-31.5 -20l-98 -203q-7 -13 -21 -15
l-225 -34q-22 -3 -28 -22q-7 -20 8 -34l165 -165q10 -10 7 -24l-38 -229q-3 -20 14 -32q19 -13 38 -2l197 105q6 4 13 4v0zM213 437q-11 0 -13 12q-1 5 2.5 9.5t8.5 5.5l9 2q6 1 10.5 -2.5t5.5 -9t-2.5 -10t-8.5 -5.5l-9 -1q-2 -1 -3 -1zM263 445q-11 0 -13 11q-1 6 2 10.5
t9 5.5l146 29l56 127q5 12 17.5 6.5t7.5 -17.5l-58 -134q-3 -6 -10 -8l-154 -29q-2 -1 -3 -1z" />
<glyph glyph-name="heart" unicode="&#xe613;"
d="M512 -27v0q-35 0 -71 36q-38 37 -307 361q-70 71 -70 171q0 101 71 172l7 6q71 72 172 72t172 -72q2 -1 3 -3v0q9 -10 22 -10q14 0 20 9l4 4q71 72 172 72t173 -72l6 -6q71 -71 71 -172q0 -99 -70 -171q-263 -319 -304 -361q-36 -36 -71 -36v0zM314 734q-77 0 -132 -55
l-6 -6q-55 -55 -55 -132t55 -131q1 -1 1 -2q268 -323 304 -359q19 -19 30.5 -19t30.5 19q42 42 302 359l2 2q54 54 54 131t-54 132l-7 6q-54 55 -132 55q-76 0 -130 -53q-24 -32 -66 -32q-40 0 -66 31q-54 54 -131 54zM188 558h-4q-5 2 -8 7t-2 11q11 37 38 65l4 4
q28 27 64.5 37.5t73.5 1.5q6 -1 9 -6t2 -11t-6 -9t-11 -2q-30 7 -59.5 -1t-51.5 -30l-4 -4q-23 -23 -31 -53q-3 -10 -14 -10zM415 620q-6 0 -10 5q-7 7 -15 13q-12 8 -4 19.5t20 3.5q10 -7 19 -16q10 -10 0 -20q-4 -5 -10 -5z" />
<glyph glyph-name="share" unicode="&#xe615;"
d="M746.5 476q-73.5 0 -125.5 52t-52 125.5t52 125.5t125.5 52t125.5 -52t52 -125.5t-52 -125.5t-125.5 -52zM747 774q-50 0 -85.5 -35.5t-35.5 -85t35.5 -85t85.5 -35.5t85 35.5t35 85t-35 85t-85 35.5zM681 683q-4 0 -8 3q-11 7 -4 19q28 41 78 41q5 0 9.5 -4t4.5 -10
t-4.5 -10t-9.5 -4q-35 0 -54 -29q-4 -6 -12 -6zM266 215q-82 0 -140 58t-58 140t58 140.5t140 58.5t140.5 -58.5t58.5 -140.5t-58.5 -140t-140.5 -58zM266 555q-59 0 -100.5 -41.5t-41.5 -100.5t41.5 -100.5t100.5 -41.5t100.5 41.5t41.5 100.5t-41.5 100.5t-100.5 41.5z
M176 399q-6 0 -10 4t-4 10v3q0 6 1 11q1 6 5.5 9.5t10.5 2t9.5 -6t1.5 -10.5v-4.5v-4.5q0 -6 -4 -10t-10 -4zM191 449q-4 0 -8 2q-11 8 -3 20q30 46 86 46q6 0 10 -4t4 -10t-4 -10t-10 -4q-40 0 -63 -34q-4 -6 -12 -6zM732.5 -63q-91.5 0 -156.5 65t-65 156.5t65 156.5
t156.5 65t156.5 -65t65 -156.5t-65 -156.5t-156.5 -65zM732.5 324q-68.5 0 -116.5 -48.5t-48 -116.5t48 -116.5t116.5 -48.5t116.5 48.5t48 116.5t-48 116.5t-116.5 48.5zM633 216q-4 0 -7 2q-12 8 -4 20q16 24 41.5 37.5t54.5 13.5q6 0 10 -4t4 -10t-4 -10t-10 -4
q-47 0 -73 -39q-4 -6 -12 -6zM409 457l-22 52l233 100l22 -52zM410 331l155 -76l-25 -51l-155 76z" />
<glyph glyph-name="location" unicode="&#xe616;"
d="M501 55q-91 0 -168.5 45t-123 122.5t-45.5 169t45.5 169t123 122.5t168.5 45t169 -45t123 -122.5t45 -169t-45 -169t-123 -122.5t-169 -45zM501.5 673q-116.5 0 -199.5 -82.5t-83 -199t83 -199t199.5 -82.5t199 82.5t82.5 199t-82.5 199t-199 82.5zM339 537q-6 0 -10 5
q-9 10 1 19q42 39 97 54q5 1 10 -1.5t6 -8.5q4 -13 -9 -17q-48 -13 -85 -47q-4 -4 -10 -4zM282 451q-2 0 -4 1q-13 4 -9 17q6 17 15 32q6 12 18 5.5t6 -18.5q-8 -14 -13 -28q-3 -9 -13 -9zM508.5 583q-11.5 0 -19.5 8t-8 20v192q0 12 8 20t19.5 8t19.5 -8t8 -20v-192
q0 -12 -8 -20t-19.5 -8zM508.5 -63q-11.5 0 -19.5 8t-8 20v192q0 12 8 20t19.5 8t19.5 -8t8 -20v-192q0 -12 -8 -20t-19.5 -8zM916 350h-193q-11 0 -19 8t-8 19.5t8 19.5t19 8h193q11 0 19 -8t8 -19.5t-8 -19.5t-19 -8zM270 350h-193q-11 0 -19 8t-8 19.5t8 19.5t19 8h193
q11 0 19 -8t8 -19.5t-8 -19.5t-19 -8z" />
<glyph glyph-name="position" unicode="&#xe617;"
d="M512 407q-52 0 -88.5 36.5t-36.5 88.5t36.5 89t88.5 37v0q52 0 89 -37t37 -89t-37 -88.5t-89 -36.5zM512.5 603q-29.5 0 -50 -20.5t-20.5 -50t20.5 -50t50 -20.5t50 20.5t20.5 50t-20.5 50t-50 20.5zM693 561q-11 0 -13 10q-1 5 -2.5 10t-1.5 7q-6 12 6.5 17.5t18.5 -6.5
l3 -12q1 -6 2 -10q1 -5 -1.5 -10t-8.5 -6h-3zM668 619q-7 0 -11 7q-45 70 -127 81q-5 1 -8.5 5.5t-3 10t5 9t10.5 2.5q45 -6 83 -30.5t63 -63.5q7 -11 -5 -19q-3 -2 -7 -2zM512 -63q-61 0 -101 80q-52 101 -122.5 276.5t-70.5 244.5q0 121 86 207t207 86t207 -86t86 -207
q0 -68 -70.5 -245t-120.5 -276q-40 -80 -101 -80zM510.5 776q-98.5 0 -168.5 -70t-70 -168q0 -56 67 -224t120 -272q26 -50 53.5 -50t52.5 50q49 98 116.5 269t67.5 227q0 98 -70 168t-168.5 70z" />
<glyph glyph-name="console" unicode="&#xe618;"
d="M964 34q0 -40 -28 -68.5t-68 -28.5h-714q-40 0 -68.5 28.5t-28.5 68.5v700q0 40 28.5 68.5t68.5 28.5h714q40 0 68 -28.5t28 -68.5v-700zM909 734q0 17 -12 29t-29 12h-714q-17 0 -29 -12t-12 -29v-700q0 -17 12 -29t29 -12h714q17 0 29 12t12 29v700zM931 621h-851
q-6 0 -10 4t-4 10t4 10t10 4h851q6 0 10 -4t4 -10t-4 -10t-10 -4zM177 691h-14q-5 0 -9.5 4t-4.5 10t4.5 10t9.5 4h14q6 0 10 -4t4 -10t-4 -10t-10 -4zM275 691h-14q-6 0 -10 4t-4 10t4 10t10 4h14q6 0 10 -4t4 -10t-4 -10t-10 -4zM373 691h-14q-6 0 -10 4t-4 10t4 10t10 4
h14q6 0 10 -4t4 -10t-4 -10t-10 -4zM361 126q-6 0 -11 5l-128 158q-7 9 0 18l79 97q9 11 20 2t2 -20l-72 -88l121 -149q9 -11 -2 -20q-4 -3 -9 -3zM348 426q-5 0 -8 3q-11 9 -2 20l12 16q9 10 20 1.5t2 -19.5l-13 -16q-4 -5 -11 -5zM664 126q-5 0 -9 3q-11 9 -2 20l121 149
l-121 149q-9 11 2 19.5t19 -1.5l128 -158q8 -9 0 -18l-128 -158q-4 -5 -10 -5zM454 200q-5 0 -9 3q-10 9 -2 20l128 158q9 11 20 2t2 -20l-128 -158q-4 -5 -11 -5z" />
<glyph glyph-name="mobile" unicode="&#xe61a;"
d="M826 34q0 -40 -28.5 -68.5t-68.5 -28.5h-434q-40 0 -68.5 28.5t-28.5 68.5v700q0 40 28.5 68.5t68.5 28.5h434q40 0 68.5 -28.5t28.5 -68.5v-700v0zM770 734q0 17 -12 29t-29 12h-434q-17 0 -29 -12t-12 -29v-700q0 -17 12 -29t29 -12h434q17 0 29 12t12 29v700zM798 119
h-573q-6 0 -10 4t-4 10t4 10t10 4h573q5 0 9 -4t4 -10t-4 -10t-9 -4zM798 677h-573q-6 0 -10 4t-4 10t4 10t10 4h573q5 0 9 -4t4 -10t-4 -10t-9 -4zM547 59q0 -10 -7 -17t-18 -7h-7q-10 0 -17 7t-7 17v7q0 11 7 18t17 7h7q11 0 18 -7t7 -18v-7zM575 429q-2 0 -5 1
q-13 5 -8 18l4 11q4 13 17.5 8t8.5 -18l-4 -11q-3 -9 -13 -9zM522 278h-5q-13 5 -8 18l39 113q5 13 18 8.5t9 -17.5l-40 -113q-3 -9 -13 -9zM465 383q-2 0 -4 1q-14 4 -9 17l58 165q5 14 18 9t8 -18l-58 -165q-3 -9 -13 -9zM438 305q-2 0 -5 1q-13 5 -8 18l8 24q5 13 18 8.5
t9 -17.5l-9 -24q-3 -10 -13 -10z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

+56 -41
View File
@@ -1,12 +1,11 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Router } from 'dva/router'
import App from './routes/app'
import App from 'routes/app'
const cached = {}
const registerModel = (app, model) => {
if (!cached[model.namespace]) {
if (!(app._models.filter(m => m.namespace === model.namespace).length === 1)) {
app.model(model)
cached[model.namespace] = 1
}
}
@@ -16,111 +15,127 @@ const Routers = function ({ history, app }) {
path: '/',
component: App,
getIndexRoute (nextState, cb) {
require.ensure([], require => {
registerModel(app, require('./models/dashboard'))
cb(null, { component: require('./routes/dashboard/') })
require.ensure([], (require) => {
registerModel(app, require('models/dashboard'))
cb(null, { component: require('routes/dashboard/') })
}, 'dashboard')
},
childRoutes: [
{
path: 'dashboard',
getComponent (nextState, cb) {
require.ensure([], require => {
registerModel(app, require('./models/dashboard'))
cb(null, require('./routes/dashboard/'))
require.ensure([], (require) => {
registerModel(app, require('models/dashboard'))
cb(null, require('routes/dashboard/'))
}, 'dashboard')
},
}, {
path: 'users',
path: 'user',
getComponent (nextState, cb) {
require.ensure([], require => {
registerModel(app, require('./models/users'))
cb(null, require('./routes/users/'))
}, 'users')
require.ensure([], (require) => {
registerModel(app, require('models/user'))
cb(null, require('routes/user/'))
}, 'user')
},
}, {
path: 'user/:id',
getComponent (nextState, cb) {
require.ensure([], (require) => {
registerModel(app, require('models/user/detail'))
cb(null, require('routes/user/detail/'))
}, 'user-detail')
},
}, {
path: 'login',
getComponent (nextState, cb) {
require.ensure([], require => {
registerModel(app, require('./models/login'))
cb(null, require('./routes/login/'))
require.ensure([], (require) => {
registerModel(app, require('models/login'))
cb(null, require('routes/login/'))
}, 'login')
},
}, {
path: 'request',
getComponent (nextState, cb) {
require.ensure([], require => {
cb(null, require('./routes/request/'))
require.ensure([], (require) => {
cb(null, require('routes/request/'))
}, 'request')
},
}, {
path: 'UIElement/iconfont',
getComponent (nextState, cb) {
require.ensure([], require => {
cb(null, require('./routes/UIElement/iconfont/'))
require.ensure([], (require) => {
cb(null, require('routes/UIElement/iconfont/'))
}, 'UIElement-iconfont')
},
}, {
path: 'UIElement/search',
getComponent (nextState, cb) {
require.ensure([], require => {
cb(null, require('./routes/UIElement/search/'))
require.ensure([], (require) => {
cb(null, require('routes/UIElement/search/'))
}, 'UIElement-search')
},
}, {
path: 'UIElement/dropOption',
getComponent (nextState, cb) {
require.ensure([], require => {
cb(null, require('./routes/UIElement/dropOption/'))
require.ensure([], (require) => {
cb(null, require('routes/UIElement/dropOption/'))
}, 'UIElement-dropOption')
},
}, {
path: 'UIElement/layer',
getComponent (nextState, cb) {
require.ensure([], require => {
cb(null, require('./routes/UIElement/layer/'))
require.ensure([], (require) => {
cb(null, require('routes/UIElement/layer/'))
}, 'UIElement-layer')
},
}, {
path: 'UIElement/dataTable',
getComponent (nextState, cb) {
require.ensure([], require => {
cb(null, require('./routes/UIElement/dataTable/'))
require.ensure([], (require) => {
cb(null, require('routes/UIElement/dataTable/'))
}, 'UIElement-dataTable')
},
}, {
path: 'UIElement/editor',
getComponent (nextState, cb) {
require.ensure([], require => {
cb(null, require('./routes/UIElement/editor/'))
require.ensure([], (require) => {
cb(null, require('routes/UIElement/editor/'))
}, 'UIElement-editor')
},
}, {
path: 'chart/lineChart',
getComponent (nextState, cb) {
require.ensure([], require => {
cb(null, require('./routes/chart/lineChart/'))
require.ensure([], (require) => {
cb(null, require('routes/chart/lineChart/'))
}, 'chart-lineChart')
},
}, {
path: 'chart/barChart',
getComponent (nextState, cb) {
require.ensure([], require => {
cb(null, require('./routes/chart/barChart/'))
require.ensure([], (require) => {
cb(null, require('routes/chart/barChart/'))
}, 'chart-barChart')
},
}, {
path: 'chart/areaChart',
getComponent (nextState, cb) {
require.ensure([], require => {
cb(null, require('./routes/chart/areaChart/'))
require.ensure([], (require) => {
cb(null, require('routes/chart/areaChart/'))
}, 'chart-areaChart')
},
}, {
path: 'post',
getComponent (nextState, cb) {
require.ensure([], (require) => {
registerModel(app, require('models/post'))
cb(null, require('routes/post/'))
}, 'post')
},
}, {
path: '*',
getComponent (nextState, cb) {
require.ensure([], require => {
cb(null, require('./routes/error/'))
require.ensure([], (require) => {
cb(null, require('routes/error/'))
}, 'error')
},
},
+3 -3
View File
@@ -1,5 +1,5 @@
import React from 'react'
import { DataTable } from '../../../components'
import { DataTable } from 'components'
import { Table, Row, Col, Card, Select } from 'antd'
class DataTablePage extends React.Component {
@@ -35,7 +35,7 @@ class DataTablePage extends React.Component {
dataKey: 'results',
},
columns: [
{ title: 'Name', dataIndex: 'name', render: (text) => `${text.first} ${text.last}` },
{ title: 'Name', dataIndex: 'name', render: text => `${text.first} ${text.last}` },
{ title: 'Phone', dataIndex: 'phone' },
{ title: 'Gender', dataIndex: 'gender' },
],
@@ -53,7 +53,7 @@ class DataTablePage extends React.Component {
dataKey: 'results',
},
columns: [
{ title: 'Name', dataIndex: 'name', render: (text) => `${text.first} ${text.last}` },
{ title: 'Name', dataIndex: 'name', render: text => `${text.first} ${text.last}` },
{ title: 'Phone', dataIndex: 'phone' },
{ title: 'Gender', dataIndex: 'gender' },
],
+3 -3
View File
@@ -1,8 +1,8 @@
import React from 'react'
import { DropOption } from '../../../components'
import { DropOption } from 'components'
import { Table, Row, Col, Card, message } from 'antd'
const DropOptionPage = () => <div className="content-inner">
const DropOptionPage = () => (<div className="content-inner">
<Row gutter={32}>
<Col lg={8} md={12}>
<Card title="默认">
@@ -90,6 +90,6 @@ const DropOptionPage = () => <div className="content-inner">
/>
</Col>
</Row>
</div>
</div>)
export default DropOptionPage
+1 -1
View File
@@ -1,5 +1,5 @@
import React from 'react'
import { Editor } from '../../../components'
import { Editor } from 'components'
import { convertToRaw } from 'draft-js'
import { Row, Col, Card } from 'antd'
import draftToHtml from 'draftjs-to-html'
+8
View File
@@ -0,0 +1,8 @@
import '../../../svg/emoji/vomiting.svg'
import '../../../svg/emoji/smirking.svg'
import '../../../svg/emoji/surprised.svg'
import '../../../svg/emoji/unamused.svg'
import '../../../svg/emoji/zombie.svg'
import '../../../svg/emoji/tired.svg'
import '../../../svg/emoji/tongue.svg'
import '../../../svg/emoji/wink.svg'
+78 -12
View File
@@ -1,15 +1,60 @@
import React from 'react'
import { Iconfont } from '../../../components'
import { Table, Row, Col } from 'antd'
import { Iconfont } from 'components'
import { Table, Row, Col, Icon } from 'antd'
import styles from './index.less'
import './emoji'
const iconlist = ['Cherry', 'Cheese', 'Bread', 'Beer', 'Beet', 'Bacon', 'Banana', 'Asparagus', 'Apple']
const colorfulIcons = ['boluo', 'baixiangguo', 'chengzi', 'boluomei', 'caomei', 'dayouzi', 'chelizi', 'fanqie', 'hamigua', 'ganlan',
'juzi', 'heimei', 'huolongguo', 'hongmei', 'lizi', 'lanmei', 'mangguo', 'mihoutao', 'longyan', 'mugua', 'lizi1', 'ningmeng']
const IcoPage = () => <div className="content-inner">
const flatIcons = ['home', 'user', 'timelimit', 'shopcart', 'message', 'remind', 'service', 'shop', 'sweep', 'express',
'payment', 'search', 'feedback', 'pencil', 'setting', 'refund', 'delete', 'star', 'heart', 'share', 'location', 'console']
const localSVGIcons = ['vomiting', 'smirking', 'surprised', 'unamused', 'zombie', 'tired', 'tongue', 'wink']
const localRequireSVGIcons = [
require('../../../svg/cute/congratulations.svg'),
require('../../../svg/cute/cry.svg'),
require('../../../svg/cute/kiss.svg'),
require('../../../svg/cute/leisurely.svg'),
require('../../../svg/cute/notice.svg'),
require('../../../svg/cute/proud.svg'),
require('../../../svg/cute/shy.svg'),
require('../../../svg/cute/sweat.svg'),
require('../../../svg/cute/think.svg'),
]
const IcoPage = () => (<div className="content-inner">
<Icon type="star-oo" />
<h2 style={{ margin: '16px 0' }}>Colorful Icon</h2>
<ul className={styles.list}>
{iconlist.map(item => <li key={item}><Iconfont className={styles.icon} type={item} /><span className={styles.name}>{item}</span></li>)}
{colorfulIcons.map(item => (<li key={item}>
<Iconfont className={styles.icon} colorful type={item} />
<span className={styles.name}>{item}</span>
</li>))}
</ul>
<h2 style={{ margin: '16px 0' }}>Props</h2>
<h2 style={{ margin: '16px 0' }}>Flat Icon</h2>
<ul className={styles.list}>
{flatIcons.map(item => (<li key={item}>
<Iconfont className={styles.icon} type={item} />
<span className={styles.name}>{item}</span>
</li>))}
</ul>
<h2 style={{ margin: '16px 0' }}>Local SVG</h2>
<ul className={styles.list}>
{localSVGIcons.map(item => (<li key={item}>
<Iconfont className={styles.icon} colorful type={item} />
<span className={styles.name}>{item}</span>
</li>))}
</ul>
<h2 style={{ margin: '16px 0' }}>Local Require SVG</h2>
<ul className={styles.list}>
{localRequireSVGIcons.map(item => (<li key={item.default.id}>
<Iconfont className={styles.icon} colorful type={item.default.id} />
<span className={styles.name}>{item.default.id}</span>
</li>))}
</ul>
<h2 style={{ margin: '16px 0' }}>API</h2>
<Row>
<Col lg={18} md={24}>
<Table
@@ -19,32 +64,53 @@ const IcoPage = () => <div className="content-inner">
scroll={{ x: 800 }}
columns={[
{
title: '参数',
title: 'Property',
dataIndex: 'props',
},
{
title: '说明',
title: 'Description',
dataIndex: 'desciption',
},
{
title: '类型',
title: 'Type',
dataIndex: 'type',
},
{
title: '默认值',
title: 'Default',
dataIndex: 'default',
},
]}
dataSource={[
{
props: 'type',
desciption: '图标类型',
desciption: 'icon type',
type: 'String',
default: '-',
},
{
props: 'colorful',
desciption: "to set the SVG has 'symbol element'",
type: 'Bool',
default: 'false',
}]}
/>
</Col>
</Row>
</div>
<h2 style={{ margin: '16px 0' }}>Thanks</h2>
<div style={{ margin: '16px 0', lineHeight: 2 }}>
<p>
<a href="http://www.iconfont.cn/user/detail?uid=116813">何阿酥</a> colorful fruit icon
<a href="http://www.iconfont.cn/collections/detail?cid=4014" target="_blank" rel="noopener noreferrer"> http://www.iconfont.cn/collections/detail?cid=4014</a>
</p>
<p>
<a href="http://www.iconfont.cn/user/detail?uid=496384">ColinXu</a> colorful &apos;tsundere&apos; emoji icon
<a href="http://www.iconfont.cn/collections/detail?cid=4116" target="_blank" rel="noopener noreferrer"> http://www.iconfont.cn/collections/detail?cid=4116</a>
</p>
<p>
<a href="http://www.iconfont.cn/user/detail?uid=116813">咕噜小莫莫</a> colorful &apos;face cute&apos; emoji icon
<a href="http://www.iconfont.cn/collections/detail?cid=4268" target="_blank" rel="noopener noreferrer"> http://www.iconfont.cn/collections/detail?cid=4268</a>
</p>
</div>
</div>)
export default IcoPage
+26 -6
View File
@@ -2,10 +2,9 @@
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
margin-right: -24px;
li {
width: 160px;
width: 120px;
text-align: center;
cursor: pointer;
height: 100px;
@@ -13,10 +12,10 @@
display: flex;
flex-direction: column;
align-items: center;
margin-right: 24px;
margin-bottom: 24px;
box-sizing: border-box;
border: solid 1px transparent;
justify-content: center;
&:hover {
border: solid 1px #f5f5f5;
@@ -24,10 +23,31 @@
}
.name {
margin-top: 16px;
margin-top: 8px;
}
:global .iconfont {
font-size: 48px;
:global {
.colorful-icon {
font-size: 36px;
}
.antdadmin {
font-size: 32px;
line-height: 1;
}
}
}
@media (min-width: 1600px) {
.list {
li {
width: 160px;
}
}
}
@media (max-width: 767px) {
.list {
li {
width: 100px;
}
}
}
+3 -3
View File
@@ -1,5 +1,5 @@
import React from 'react'
import { layer } from '../../../components'
import { layer } from 'components'
import { Table, Row, Col, Button, Card } from 'antd'
let Enum = {
@@ -26,7 +26,7 @@ const IcoPage = () => {
<h2 style={{ margin: '16px 0' }}>API</h2>
<div style={{ margin: '16px 0' }}>
<h2 style={{ margin: '4px 0' }}>layer.open(config)</h2>
config对象与<a href="https://ant.design/components/modal-cn/#API" target="_blank">Modal</a>的参数基本一致,config属性如下。
config对象与<a href="https://ant.design/components/modal-cn/#API" target="_blank" rel="noopener noreferrer">Modal</a>的参数基本一致,config属性如下。
注意:1.visible属性一般不需要设置;2.afterClose无效,layer.close()可代替;3.layer.open()返回一个唯一的layer Id
</div>
<Row>
@@ -69,7 +69,7 @@ const IcoPage = () => {
},
{
props: 'confirmLoading',
desciption: '确定按钮 loading ',
desciption: '确定按钮 loading',
type: 'boolean',
default: '无',
},
+3 -3
View File
@@ -1,8 +1,8 @@
import React from 'react'
import { Search } from '../../../components'
import { Search } from 'components'
import { Table, Row, Col, Card } from 'antd'
const SearchPage = () => <div className="content-inner">
const SearchPage = () => (<div className="content-inner">
<Row gutter={32}>
<Col lg={8} md={12}>
<Card title="默认">
@@ -93,6 +93,6 @@ const SearchPage = () => <div className="content-inner">
/>
</Col>
</Row>
</div>
</div>)
export default SearchPage
+51 -18
View File
@@ -1,19 +1,42 @@
import React, { PropTypes } from 'react'
/* global window */
import React from 'react'
import NProgress from 'nprogress'
import PropTypes from 'prop-types'
import pathToRegexp from 'path-to-regexp'
import { connect } from 'dva'
import { Layout } from '../components'
import { classnames, config } from '../utils'
import { Layout, Loader } from 'components'
import { classnames, config } from 'utils'
import { Helmet } from 'react-helmet'
import '../themes/index.less'
import './app.less'
import Error from './error'
const { prefix, openPages } = config
const { Header, Bread, Footer, Sider, styles } = Layout
let lastHref
const App = ({ children, location, dispatch, app }) => {
const { user, siderFold, darkTheme, isNavbar, menuPopoverVisible, navOpenKeys } = app
const App = ({ children, dispatch, app, loading, location }) => {
const { user, siderFold, darkTheme, isNavbar, menuPopoverVisible, navOpenKeys, menu, permissions } = app
let { pathname } = location
pathname = pathname.startsWith('/') ? pathname : `/${pathname}`
const { iconFontJS, iconFontCSS, logo } = config
const current = menu.filter(item => pathToRegexp(item.route || '').exec(pathname))
const hasPermission = current.length ? permissions.visit.includes(current[0].id) : false
const href = window.location.href
if (lastHref !== href) {
NProgress.start()
if (!loading.global) {
NProgress.done()
lastHref = href
}
}
const headerProps = {
menu,
user,
siderFold,
location,
isNavbar,
menuPopoverVisible,
navOpenKeys,
@@ -32,41 +55,50 @@ const App = ({ children, location, dispatch, app }) => {
}
const siderProps = {
menu,
location,
siderFold,
darkTheme,
location,
navOpenKeys,
changeTheme () {
dispatch({ type: 'app/changeTheme' })
dispatch({ type: 'app/switchTheme' })
},
changeOpenKeys (openKeys) {
localStorage.setItem('navOpenKeys', JSON.stringify(openKeys))
window.localStorage.setItem(`${prefix}navOpenKeys`, JSON.stringify(openKeys))
dispatch({ type: 'app/handleNavOpenKeys', payload: { navOpenKeys: openKeys } })
},
}
if (config.openPages && config.openPages.indexOf(location.pathname) > -1) {
return <div>{children}</div>
const breadProps = {
menu,
location,
}
if (openPages && openPages.includes(pathname)) {
return (<div>
<Loader spinning={loading.effects['app/query']} />
{children}
</div>)
}
return (
<div>
<Loader spinning={loading.effects['app/query']} />
<Helmet>
<title>ANTD ADMIN</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href={config.logoSrc} type="image/x-icon" />
{config.iconFontUrl ? <script src={config.iconFontUrl}></script> : ''}
<link rel="icon" href={logo} type="image/x-icon" />
{iconFontJS && <script src={iconFontJS} />}
{iconFontCSS && <link rel="stylesheet" href={iconFontCSS} />}
</Helmet>
<div className={classnames(styles.layout, { [styles.fold]: isNavbar ? false : siderFold }, { [styles.withnavbar]: isNavbar })}>
{!isNavbar ? <aside className={classnames(styles.sider, { [styles.light]: !darkTheme })}>
<Sider {...siderProps} />
{siderProps.menu.length === 0 ? null : <Sider {...siderProps} />}
</aside> : ''}
<div className={styles.main}>
<Header {...headerProps} />
<Bread location={location} />
<Bread {...breadProps} />
<div className={styles.container}>
<div className={styles.content}>
{children}
{hasPermission ? children : <Error />}
</div>
</div>
<Footer />
@@ -81,6 +113,7 @@ App.propTypes = {
location: PropTypes.object,
dispatch: PropTypes.func,
app: PropTypes.object,
loading: PropTypes.object,
}
export default connect(({ app }) => ({ app }))(App)
export default connect(({ app, loading }) => ({ app, loading }))(App)
+72
View File
@@ -0,0 +1,72 @@
@import "~themes/vars";
:global {
#nprogress {
pointer-events: none;
.bar {
background: @primary-color;
position: fixed;
z-index: 1024;
top: 0;
left: 0;
right: 0;
width: 100%;
height: 2px;
}
.peg {
display: block;
position: absolute;
right: 0;
width: 100px;
height: 100%;
box-shadow: 0 0 10px @primary-color,0 0 5px @primary-color;
opacity: 1.0;
transform: rotate(3deg) translate(0px,-4px);
}
.spinner {
display: block;
position: fixed;
z-index: 1031;
top: 15px;
right: 15px;
}
.spinner-icon {
width: 18px;
height: 18px;
box-sizing: border-box;
border: solid 2px transparent;
border-top-color: @primary-color;
border-left-color: @primary-color;
border-radius: 50%;
:local {
animation: nprogress-spinner 400ms linear infinite;
}
}
}
.nprogress-custom-parent {
overflow: hidden;
position: relative;
#nprogress {
.bar,
.spinner {
position: absolute;
}
}
}
}
@keyframes nprogress-spinner {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
+6 -5
View File
@@ -1,15 +1,16 @@
import React, { PropTypes } from 'react'
import styles from './Container.less'
import React from 'react'
import PropTypes from 'prop-types'
import { ResponsiveContainer } from 'recharts'
import styles from './Container.less'
const Container = ({ children, ratio = 5 / 2, minHeight = 250, maxHeight = 350 }) => <div className={styles.container} style={{ minHeight, maxHeight }}>
<div style={{ marginTop: `${100 / ratio}%` || '100%' }}></div>
const Container = ({ children, ratio = 5 / 2, minHeight = 250, maxHeight = 350 }) => (<div className={styles.container} style={{ minHeight, maxHeight }}>
<div style={{ marginTop: `${100 / ratio}%` || '100%' }} />
<div className={styles.content} style={{ minHeight, maxHeight }}>
<ResponsiveContainer>
{children}
</ResponsiveContainer>
</div>
</div>
</div>)
Container.propTypes = {
children: PropTypes.element.isRequired,
+48 -34
View File
@@ -1,7 +1,6 @@
import React from 'react'
import { Row, Col, Card, Button } from 'antd'
import Container from '../Container'
import * as d3 from 'd3-shape'
import { Row, Col, Card, Button } from 'antd'
import {
AreaChart,
Area,
@@ -10,6 +9,7 @@ import {
CartesianGrid,
Tooltip,
} from 'recharts'
import Container from '../Container'
const data = [
{
@@ -135,12 +135,14 @@ const colProps = {
const SimpleAreaChart = () => (
<Container>
<AreaChart data={data} margin={{
top: 10,
right: 30,
left: 0,
bottom: 0,
}}>
<AreaChart data={data}
margin={{
top: 10,
right: 30,
left: 0,
bottom: 0,
}}
>
<XAxis dataKey="name" />
<YAxis />
<CartesianGrid strokeDasharray="3 3" />
@@ -152,12 +154,14 @@ const SimpleAreaChart = () => (
const StackedAreaChart = () => (
<Container>
<AreaChart data={mixData} margin={{
top: 10,
right: 30,
left: 0,
bottom: 0,
}}>
<AreaChart data={mixData}
margin={{
top: 10,
right: 30,
left: 0,
bottom: 0,
}}
>
<XAxis dataKey="name" />
<YAxis />
<CartesianGrid strokeDasharray="3 3" />
@@ -192,9 +196,11 @@ const renderTooltipContent = (o) => {
<p className="total">{`${label} (Total: ${total})`}</p>
<ul className="list">
{payload.map((entry, index) => (
<li key={`item-${index}`} style={{
color: entry.color,
}}>
<li key={`item-${index}`}
style={{
color: entry.color,
}}
>
{`${entry.name}: ${entry.value}(${getPercent(entry.value, total)})`}
</li>
))}
@@ -205,12 +211,15 @@ const renderTooltipContent = (o) => {
const PercentAreaChart = () => (
<Container>
<AreaChart data={percentData} stackOffset="expand" margin={{
top: 10,
right: 30,
left: 0,
bottom: 0,
}}>
<AreaChart data={percentData}
stackOffset="expand"
margin={{
top: 10,
right: 30,
left: 0,
bottom: 0,
}}
>
<XAxis dataKey="month" />
<YAxis tickFormatter={toPercent} />
<CartesianGrid strokeDasharray="3 3" />
@@ -226,12 +235,14 @@ const PercentAreaChart = () => (
const cardinal = d3.curveCardinal.tension(0.2)
const CardinalAreaChart = () => (
<Container>
<AreaChart data={mixData} margin={{
top: 10,
right: 30,
left: 0,
bottom: 0,
}}>
<AreaChart data={mixData}
margin={{
top: 10,
right: 30,
left: 0,
bottom: 0,
}}
>
<XAxis dataKey="name" />
<YAxis />
<CartesianGrid strokeDasharray="3 3" />
@@ -244,11 +255,14 @@ const CardinalAreaChart = () => (
const EditorPage = () => (
<div className="content-inner">
<Button type="primary" size="large" style={{
position: 'absolute',
right: 0,
top: -48,
}}>
<Button type="primary"
size="large"
style={{
position: 'absolute',
right: 0,
top: -48,
}}
>
<a href="http://recharts.org/#/en-US/examples/TinyBarChart" target="blank">Show More</a>
</Button>
<Row gutter={32}>
+46 -34
View File
@@ -1,6 +1,6 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Row, Col, Card, Button } from 'antd'
import Container from '../Container'
import {
BarChart,
Bar,
@@ -10,6 +10,7 @@ import {
Tooltip,
Legend,
} from 'recharts'
import Container from '../Container'
const data = [
{
@@ -95,12 +96,14 @@ const colProps = {
const SimpleBarChart = () => (
<Container>
<BarChart data={data} margin={{
top: 5,
right: 30,
left: 20,
bottom: 5,
}}>
<BarChart data={data}
margin={{
top: 5,
right: 30,
left: 20,
bottom: 5,
}}
>
<XAxis dataKey="name" />
<YAxis />
<CartesianGrid strokeDasharray="3 3" />
@@ -114,12 +117,14 @@ const SimpleBarChart = () => (
const StackedBarChart = () => (
<Container>
<BarChart data={data} margin={{
top: 20,
right: 30,
left: 20,
bottom: 5,
}}>
<BarChart data={data}
margin={{
top: 20,
right: 30,
left: 20,
bottom: 5,
}}
>
<XAxis dataKey="name" />
<YAxis />
<CartesianGrid strokeDasharray="3 3" />
@@ -133,12 +138,14 @@ const StackedBarChart = () => (
const MixBarChart = () => (
<Container>
<BarChart data={mixData} margin={{
top: 20,
right: 30,
left: 20,
bottom: 5,
}}>
<BarChart data={mixData}
margin={{
top: 20,
right: 30,
left: 20,
bottom: 5,
}}
>
<XAxis dataKey="name" />
<YAxis />
<CartesianGrid strokeDasharray="3 3" />
@@ -154,8 +161,8 @@ const MixBarChart = () => (
// CustomShapeBarChart
const getPath = (x, y, width, height) => {
return `M${x},${y + height}
C${x + width / 3},${y + height} ${x + width / 2},${y + height / 3} ${x + width / 2}, ${y}
C${x + width / 2},${y + height / 3} ${x + 2 * width / 3},${y + height} ${x + width}, ${y + height}
C${x + (width / 3)},${y + height} ${x + (width / 2)},${y + (height / 3)} ${x + (width / 2)}, ${y}
C${x + (width / 2)},${y + (height / 3)} ${x + (2 * (width / 3))},${y + height} ${x + width}, ${y + height}
Z`
}
@@ -174,27 +181,32 @@ TriangleBar.propTypes = {
const CustomShapeBarChart = () => (
<Container>
<BarChart data={mixData} margin={{
top: 20,
right: 30,
left: 20,
bottom: 5,
}}>
<BarChart data={mixData}
margin={{
top: 20,
right: 30,
left: 20,
bottom: 5,
}}
>
<XAxis dataKey="name" />
<YAxis />
<CartesianGrid strokeDasharray="3 3" />
<Bar dataKey="female" fill="#8884d8" shape={< TriangleBar />} label />
<Bar dataKey="female" fill="#8884d8" shape={<TriangleBar />} label />
</BarChart>
</Container>
)
const EditorPage = () => (
<div className="content-inner">
<Button type="primary" size="large" style={{
position: 'absolute',
right: 0,
top: -48,
}}>
<Button type="primary"
size="large"
style={{
position: 'absolute',
right: 0,
top: -48,
}}
>
<a href="http://recharts.org/#/en-US/examples/TinyBarChart" target="blank">Show More</a>
</Button>
<Row gutter={32}>
+58 -35
View File
@@ -1,6 +1,6 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Row, Col, Card, Button } from 'antd'
import Container from '../Container'
import {
LineChart,
Line,
@@ -10,6 +10,7 @@ import {
Tooltip,
Legend,
} from 'recharts'
import Container from '../Container'
const data = [
{
@@ -57,20 +58,26 @@ const colProps = {
const SimpleLineChart = () => (
<Container>
<LineChart data={data} margin={{
top: 5,
right: 30,
left: 20,
bottom: 5,
}}>
<LineChart data={data}
margin={{
top: 5,
right: 30,
left: 20,
bottom: 5,
}}
>
<XAxis dataKey="name" />
<YAxis />
<CartesianGrid strokeDasharray="3 3" />
<Tooltip />
<Legend />
<Line type="monotone" dataKey="pv" stroke="#8884d8" activeDot={{
r: 8,
}} />
<Line type="monotone"
dataKey="pv"
stroke="#8884d8"
activeDot={{
r: 8,
}}
/>
<Line type="monotone" dataKey="uv" stroke="#82ca9d" />
</LineChart>
</Container>
@@ -78,12 +85,17 @@ const SimpleLineChart = () => (
const VerticalLineChart = () => (
<Container>
<LineChart layout="vertical" width={600} height={300} data={data} margin={{
top: 20,
right: 30,
left: 20,
bottom: 5,
}}>
<LineChart layout="vertical"
width={600}
height={300}
data={data}
margin={{
top: 20,
right: 30,
left: 20,
bottom: 5,
}}
>
<XAxis type="number" />
<YAxis dataKey="name" type="category" />
<CartesianGrid strokeDasharray="3 3" />
@@ -97,12 +109,16 @@ const VerticalLineChart = () => (
const DashedLineChart = () => (
<Container>
<LineChart width={600} height={300} data={data} margin={{
top: 5,
right: 30,
left: 20,
bottom: 5,
}}>
<LineChart width={600}
height={300}
data={data}
margin={{
top: 5,
right: 30,
left: 20,
bottom: 5,
}}
>
<XAxis dataKey="name" />
<YAxis />
<CartesianGrid strokeDasharray="3 3" />
@@ -139,18 +155,22 @@ CustomizedDot.propTypes = {
const CustomizedDotLineChart = () => (
<Container>
<LineChart width={600} height={300} data={data} margin={{
top: 5,
right: 30,
left: 20,
bottom: 5,
}}>
<LineChart width={600}
height={300}
data={data}
margin={{
top: 5,
right: 30,
left: 20,
bottom: 5,
}}
>
<XAxis dataKey="name" />
<YAxis />
<CartesianGrid strokeDasharray="3 3" />
<Tooltip />
<Legend />
<Line type="monotone" dataKey="pv" stroke="#8884d8" dot={< CustomizedDot />} />
<Line type="monotone" dataKey="pv" stroke="#8884d8" dot={<CustomizedDot />} />
<Line type="monotone" dataKey="uv" stroke="#82ca9d" />
</LineChart>
</Container>
@@ -158,11 +178,14 @@ const CustomizedDotLineChart = () => (
const EditorPage = () => (
<div className="content-inner">
<Button type="primary" size="large" style={{
position: 'absolute',
right: 0,
top: -48,
}}>
<Button type="primary"
size="large"
style={{
position: 'absolute',
right: 0,
top: -48,
}}
>
<a href="http://recharts.org/#/en-US/examples/TinyBarChart" target="blank">Show More</a>
</Button>
<Row gutter={32}>
+3 -2
View File
@@ -1,7 +1,8 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Table, Tag } from 'antd'
import { color } from 'utils'
import styles from './browser.less'
import { color } from '../../../utils'
const status = {
1: {
+5 -4
View File
@@ -1,7 +1,8 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Table, Tag } from 'antd'
import { color } from 'utils'
import styles from './comments.less'
import { color } from '../../../utils'
const status = {
1: {
@@ -29,14 +30,14 @@ function Comments ({ data }) {
}, {
title: 'content',
dataIndex: 'content',
render: (text, it) => <div>
render: (text, it) => (<div>
<h5 className={styles.name}>{it.name}</h5>
<p className={styles.content}>{it.content}</p>
<div className={styles.daterow}>
<Tag color={status[it.status].color}>{status[it.status].text}</Tag>
<span className={styles.date}>{it.date}</span>
</div>
</div>,
</div>),
},
]
return (
+43 -43
View File
@@ -1,43 +1,43 @@
@import "../../../themes/vars.less";
.comments {
:global .ant-table-thead > tr > th {
background: #fff;
border-bottom: solid 1px @border-color-base;
}
.avatar {
width: 48px;
height: 48px;
background-position: center;
background-size: cover;
border-radius: 50%;
background: #f8f8f8;
display: inline-block;
}
.content {
text-align: left;
color: #757575;
}
.date {
color: #a3a3a3;
line-height: 30px;
}
.daterow {
display: flex;
justify-content: space-between;
}
.name {
font-size: 14px;
color: #474747;
text-align: left;
}
.avatarcolumn {
vertical-align: top;
}
}
@import "~themes/vars";
.comments {
:global .ant-table-thead > tr > th {
background: #fff;
border-bottom: solid 1px @border-color-base;
}
.avatar {
width: 48px;
height: 48px;
background-position: center;
background-size: cover;
border-radius: 50%;
background: #f8f8f8;
display: inline-block;
}
.content {
text-align: left;
color: #757575;
}
.date {
color: #a3a3a3;
line-height: 30px;
}
.daterow {
display: flex;
justify-content: space-between;
}
.name {
font-size: 14px;
color: #474747;
text-align: left;
}
.avatarcolumn {
vertical-align: top;
}
}
+6 -5
View File
@@ -1,8 +1,9 @@
import React, { PropTypes } from 'react'
import styles from './completed.less'
import React from 'react'
import PropTypes from 'prop-types'
import classnames from 'classnames'
import { color } from '../../../utils'
import { color } from 'utils'
import { AreaChart, Area, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts'
import styles from './completed.less'
function Completed ({ data }) {
return (
@@ -11,7 +12,7 @@ function Completed ({ data }) {
<ResponsiveContainer minHeight={360}>
<AreaChart data={data}>
<Legend verticalAlign="top"
content={prop => {
content={(prop) => {
const { payload } = prop
return (<ul className={classnames({ [styles.legend]: true, clearfix: true })}>
{payload.map((item, key) => <li key={key}><span className={styles.radiusdot} style={{ background: item.color }} />{item.value}</li>)}
@@ -23,7 +24,7 @@ function Completed ({ data }) {
<CartesianGrid vertical={false} stroke={color.borderBase} strokeDasharray="3 3" />
<Tooltip
wrapperStyle={{ border: 'none', boxShadow: '4px 4px 40px rgba(0, 0, 0, 0.05)' }}
content={content => {
content={(content) => {
const list = content.payload.map((item, key) => <li key={key} className={styles.tipitem}><span className={styles.radiusdot} style={{ background: item.color }} />{`${item.name}:${item.value}`}</li>)
return <div className={styles.tooltip}><p className={styles.tiptitle}>{content.label}</p><ul>{list}</ul></div>
}}
+50 -50
View File
@@ -1,50 +1,50 @@
@import "../../../themes/vars.less";
.sales {
.title {
margin-left: 32px;
font-size: 16px;
}
}
.radiusdot {
width: 12px;
height: 12px;
margin-right: 8px;
border-radius: 50%;
display: inline-block;
}
.legend {
color: @dark-half;
text-align: right;
color: #999;
font-size: 14px;
li {
height: 48px;
line-height: 48px;
display: inline-block;
&+li {
margin-left: 24px;
}
}
}
.tooltip {
background: #fff;
padding: 20px;
font-size: 14px;
.tiptitle {
font-weight: 700;
font-size: 16px;
margin-bottom: 8px;
}
.tipitem {
height: 32px;
line-height: 32px;
}
}
@import "~themes/vars";
.sales {
.title {
margin-left: 32px;
font-size: 16px;
}
}
.radiusdot {
width: 12px;
height: 12px;
margin-right: 8px;
border-radius: 50%;
display: inline-block;
}
.legend {
color: @dark-half;
text-align: right;
color: #999;
font-size: 14px;
li {
height: 48px;
line-height: 48px;
display: inline-block;
&+li {
margin-left: 24px;
}
}
}
.tooltip {
background: #fff;
padding: 20px;
font-size: 14px;
.tiptitle {
font-weight: 700;
font-size: 16px;
margin-bottom: 8px;
}
.tipitem {
height: 32px;
line-height: 32px;
}
}
+4 -3
View File
@@ -1,8 +1,9 @@
import React, { PropTypes } from 'react'
import styles from './cpu.less'
import { color } from '../../../utils'
import React from 'react'
import PropTypes from 'prop-types'
import { color } from 'utils'
import CountUp from 'react-countup'
import { LineChart, Line, XAxis, YAxis, CartesianGrid, ResponsiveContainer } from 'recharts'
import styles from './cpu.less'
const countUpProps = {
start: 0,
@@ -1,4 +1,5 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Icon, Card } from 'antd'
import CountUp from 'react-countup'
import styles from './numberCard.less'
+32 -32
View File
@@ -1,32 +1,32 @@
@import "../../../themes/vars.less";
.numberCard {
padding: 32px;
margin-bottom: 24px;
cursor: pointer;
.iconWarp {
font-size: 54px;
float: left;
}
.content {
width: 100%;
padding-left: 78px;
.title {
line-height: 16px;
font-size: 16px;
margin-bottom: 8px;
height: 16px;
.text-overflow();
}
.number {
line-height: 32px;
font-size: 24px;
height: 32px;
.text-overflow();
}
}
}
@import "~themes/vars";
.numberCard {
padding: 32px;
margin-bottom: 24px;
cursor: pointer;
.iconWarp {
font-size: 54px;
float: left;
}
.content {
width: 100%;
padding-left: 78px;
.title {
line-height: 16px;
font-size: 16px;
margin-bottom: 8px;
height: 16px;
.text-overflow();
}
.number {
line-height: 32px;
font-size: 24px;
height: 32px;
.text-overflow();
}
}
}
+2 -1
View File
@@ -1,4 +1,5 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import styles from './quote.less'
function Quote ({ name, content, title, avatar }) {
+52 -52
View File
@@ -1,52 +1,52 @@
@import "../../../themes/vars.less";
.quote {
color: #fff;
height: 100%;
width: 100%;
padding: 24px;
font-size: 16px;
font-weight: 700;
.inner {
text-overflow: ellipsis;
word-wrap: normal;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
overflow: hidden;
text-indent: 24px;
}
.footer {
position: relative;
margin-top: 14px;
.description {
width: 100%;
p {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-right: 64px;
text-align: right;
&:last-child {
font-weight: 100;
}
}
}
.avatar {
width: 48px;
height: 48px;
background-position: center;
background-size: cover;
border-radius: 50%;
position: absolute;
right: 0;
top: 0;
}
}
}
@import "~themes/vars";
.quote {
color: #fff;
height: 100%;
width: 100%;
padding: 24px;
font-size: 16px;
font-weight: 700;
.inner {
text-overflow: ellipsis;
word-wrap: normal;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
overflow: hidden;
text-indent: 24px;
}
.footer {
position: relative;
margin-top: 14px;
.description {
width: 100%;
p {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-right: 64px;
text-align: right;
&:last-child {
font-weight: 100;
}
}
}
.avatar {
width: 48px;
height: 48px;
background-position: center;
background-size: cover;
border-radius: 50%;
position: absolute;
right: 0;
top: 0;
}
}
}
@@ -1,7 +1,8 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Table, Tag } from 'antd'
import { color } from 'utils'
import styles from './recentSales.less'
import { color } from '../../../utils'
const status = {
1: {
@@ -1,8 +1,8 @@
@import "../../../themes/vars.less";
.recentsales {
:global .ant-table-thead > tr > th {
background: #fff;
border-bottom: solid 1px @border-color-base;
}
}
@import "~themes/vars";
.recentsales {
:global .ant-table-thead > tr > th {
background: #fff;
border-bottom: solid 1px @border-color-base;
}
}
+6 -5
View File
@@ -1,8 +1,9 @@
import React, { PropTypes } from 'react'
import styles from './sales.less'
import React from 'react'
import PropTypes from 'prop-types'
import classnames from 'classnames'
import { color } from '../../../utils'
import { color } from 'utils'
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts'
import styles from './sales.less'
function Sales ({ data }) {
return (
@@ -11,7 +12,7 @@ function Sales ({ data }) {
<ResponsiveContainer minHeight={360}>
<LineChart data={data}>
<Legend verticalAlign="top"
content={prop => {
content={(prop) => {
const { payload } = prop
return (<ul className={classnames({ [styles.legend]: true, clearfix: true })}>
{payload.map((item, key) => <li key={key}><span className={styles.radiusdot} style={{ background: item.color }} />{item.value}</li>)}
@@ -23,7 +24,7 @@ function Sales ({ data }) {
<CartesianGrid vertical={false} stroke={color.borderBase} strokeDasharray="3 3" />
<Tooltip
wrapperStyle={{ border: 'none', boxShadow: '4px 4px 40px rgba(0, 0, 0, 0.05)' }}
content={content => {
content={(content) => {
const list = content.payload.map((item, key) => <li key={key} className={styles.tipitem}><span className={styles.radiusdot} style={{ background: item.color }} />{`${item.name}:${item.value}`}</li>)
return <div className={styles.tooltip}><p className={styles.tiptitle}>{content.label}</p><ul>{list}</ul></div>
}}
+50 -50
View File
@@ -1,50 +1,50 @@
@import "../../../themes/vars.less";
.sales {
.title {
margin-left: 32px;
font-size: 16px;
}
}
.radiusdot {
width: 12px;
height: 12px;
margin-right: 8px;
border-radius: 50%;
display: inline-block;
}
.legend {
color: @dark-half;
text-align: right;
color: #999;
font-size: 14px;
li {
height: 48px;
line-height: 48px;
display: inline-block;
&+li {
margin-left: 24px;
}
}
}
.tooltip {
background: #fff;
padding: 20px;
font-size: 14px;
.tiptitle {
font-weight: 700;
font-size: 16px;
margin-bottom: 8px;
}
.tipitem {
height: 32px;
line-height: 32px;
}
}
@import "~themes/vars";
.sales {
.title {
margin-left: 32px;
font-size: 16px;
}
}
.radiusdot {
width: 12px;
height: 12px;
margin-right: 8px;
border-radius: 50%;
display: inline-block;
}
.legend {
color: @dark-half;
text-align: right;
color: #999;
font-size: 14px;
li {
height: 48px;
line-height: 48px;
display: inline-block;
&+li {
margin-left: 24px;
}
}
}
.tooltip {
background: #fff;
padding: 20px;
font-size: 14px;
.tiptitle {
font-weight: 700;
font-size: 16px;
margin-bottom: 8px;
}
.tipitem {
height: 32px;
line-height: 32px;
}
}
+5 -3
View File
@@ -1,8 +1,10 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Button } from 'antd'
import styles from './user.less'
import CountUp from 'react-countup'
import { color } from '../../../utils'
import { color } from 'utils'
import styles from './user.less'
const countUpProps = {
start: 0,
duration: 2.75,
+97 -97
View File
@@ -1,97 +1,97 @@
@import "../../../themes/vars.less";
.user {
.header {
display: flex;
justify-content: center;
text-align: center;
color: #fff;
height: 200px;
background-image: ~ "url(./user-background.png)";
background-repeat: no-repeat;
background-size: cover;
align-items: center;
.headerinner {
z-index: 2;
}
&::after {
content: '';
background: @purple;
position: absolute;
width: 100%;
height: 200px;
left: 0;
top: 0;
opacity: 0.4;
z-index: 1;
}
.avatar {
width: 64px;
height: 64px;
background-position: center;
background-size: cover;
border-radius: 50%;
display: inline-block;
}
.name {
font-size: 16px;
}
}
.number {
display: flex;
height: 116px;
justify-content: space-between;
border-bottom: solid 1px #f5f5f5;
.item {
text-align: center;
height: 116px;
width: 100%;
position: relative;
padding: 30px 0;
&+.item {
&::before {
content: '';
display: block;
width: 1px;
height: 116px;
position: absolute;
background: #f5f5f5;
top: 0;
}
}
p {
color: #757575;
&:first-child {
font-size: 16px;
}
&:last-child {
font-size: 20px;
font-weight: 700;
}
}
}
}
.footer {
height: 116px;
display: flex;
justify-content: center;
align-items: center;
:global .ant-btn {
color: @purple;
border-color: @purple;
padding: 6px 16px;
}
}
}
@import "~themes/vars";
.user {
.header {
display: flex;
justify-content: center;
text-align: center;
color: #fff;
height: 200px;
background-image: ~ "url(./user-background.png)";
background-repeat: no-repeat;
background-size: cover;
align-items: center;
.headerinner {
z-index: 2;
}
&::after {
content: '';
background: @purple;
position: absolute;
width: 100%;
height: 200px;
left: 0;
top: 0;
opacity: 0.4;
z-index: 1;
}
.avatar {
width: 64px;
height: 64px;
background-position: center;
background-size: cover;
border-radius: 50%;
display: inline-block;
}
.name {
font-size: 16px;
}
}
.number {
display: flex;
height: 116px;
justify-content: space-between;
border-bottom: solid 1px #f5f5f5;
.item {
text-align: center;
height: 116px;
width: 100%;
position: relative;
padding: 30px 0;
&+.item {
&::before {
content: '';
display: block;
width: 1px;
height: 116px;
position: absolute;
background: #f5f5f5;
top: 0;
}
}
p {
color: #757575;
&:first-child {
font-size: 16px;
}
&:last-child {
font-size: 20px;
font-weight: 700;
}
}
}
}
.footer {
height: 116px;
display: flex;
justify-content: center;
align-items: center;
:global .ant-btn {
color: @purple;
border-color: @purple;
padding: 6px 16px;
}
}
}
+22 -14
View File
@@ -1,19 +1,26 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { Spin } from 'antd'
import styles from './weather.less'
function Weather ({ city, icon, dateTime, temperature, name }) {
return (<div className={styles.weather}>
<div className={styles.left}>
<div className={styles.icon} style={{
backgroundImage: `url(${icon})`,
}} />
<p>{name}</p>
</div>
<div className={styles.right}>
<h1 className={styles.temperature}>{`${temperature}°`}</h1>
<p className={styles.description}>{city},{dateTime}</p>
</div>
</div>)
function Weather ({ city, icon, dateTime, temperature, name, loading }) {
return (
<Spin spinning={loading}>
<div className={styles.weather}>
<div className={styles.left}>
<div className={styles.icon}
style={{
backgroundImage: `url(${icon})`,
}}
/>
<p>{name}</p>
</div>
<div className={styles.right}>
<h1 className={styles.temperature}>{`${temperature}°`}</h1>
<p className={styles.description}>{city},{dateTime}</p>
</div>
</div>
</Spin>)
}
Weather.propTypes = {
@@ -22,6 +29,7 @@ Weather.propTypes = {
dateTime: PropTypes.string,
temperature: PropTypes.string,
name: PropTypes.string,
loading: PropTypes.bool,
}
export default Weather
+48 -47
View File
@@ -1,47 +1,48 @@
@import "../../../themes/vars.less";
.weather {
color: #fff;
height: 204px;
padding: 24px;
justify-content: space-between;
display: flex;
font-size: 14px;
.left {
display: flex;
flex-direction: column;
width: 64px;
padding-top: 55px;
.icon {
width: 64px;
height: 64px;
background-position: center;
background-size: cover;
}
p {
margin-top: 16px;
}
}
.right {
display: flex;
flex-direction: column;
width: 50%;
.temperature {
font-size: 36px;
text-align: right;
height: 64px;
}
.description {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: right;
}
}
}
@import "~themes/vars";
.weather {
color: #fff;
height: 204px;
padding: 24px;
justify-content: space-between;
display: flex;
font-size: 14px;
.left {
display: flex;
flex-direction: column;
width: 64px;
padding-top: 55px;
.icon {
width: 64px;
height: 64px;
background-position: center;
background-size: contain;
}
p {
margin-top: 16px;
}
}
.right {
display: flex;
flex-direction: column;
width: 50%;
.temperature {
font-size: 36px;
text-align: right;
height: 64px;
color: #fff;
}
.description {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: right;
}
}
}
+86 -70
View File
@@ -1,9 +1,11 @@
import React, { PropTypes } from 'react'
import React from 'react'
import PropTypes from 'prop-types'
import { connect } from 'dva'
import { Row, Col, Card } from 'antd'
import { color } from 'utils'
import { Loader } from 'components'
import { NumberCard, Quote, Sales, Weather, RecentSales, Comments, Completed, Browser, Cpu, User } from './components'
import styles from './index.less'
import { color } from '../../utils'
const bodyStyle = {
bodyStyle: {
@@ -12,82 +14,96 @@ const bodyStyle = {
},
}
function Dashboard ({ dashboard }) {
function Dashboard ({ dashboard, loading }) {
const { weather, sales, quote, numbers, recentSales, comments, completed, browser, cpu, user } = dashboard
const numberCards = numbers.map((item, key) => <Col key={key} lg={6} md={12}>
const numberCards = numbers.map((item, key) => (<Col key={key} lg={6} md={12}>
<NumberCard {...item} />
</Col>)
</Col>))
return (
<Row gutter={24}>
{numberCards}
<Col lg={18} md={24}>
<Card bordered={false} bodyStyle={{
padding: '24px 36px 24px 0',
}}>
<Sales data={sales} />
</Card>
</Col>
<Col lg={6} md={24}>
<Row gutter={24}>
<Col lg={24} md={12}>
<Card bordered={false} className={styles.weather} bodyStyle={{
padding: 0,
height: 204,
background: color.blue,
}}>
<Weather {...weather} />
</Card>
</Col>
<Col lg={24} md={12}>
<Card bordered={false} className={styles.quote} bodyStyle={{
padding: 0,
height: 204,
background: color.peach,
}}>
<Quote {...quote} />
</Card>
</Col>
</Row>
</Col>
<Col lg={12} md={24}>
<Card bordered={false} {...bodyStyle}>
<RecentSales data={recentSales} />
</Card>
</Col>
<Col lg={12} md={24}>
<Card bordered={false} {...bodyStyle}>
<Comments data={comments} />
</Card>
</Col>
<Col lg={24} md={24}>
<Card bordered={false} bodyStyle={{
padding: '24px 36px 24px 0',
}}>
<Completed data={completed} />
</Card>
</Col>
<Col lg={8} md={24}>
<Card bordered={false} {...bodyStyle}>
<Browser data={browser} />
</Card>
</Col>
<Col lg={8} md={24}>
<Card bordered={false} {...bodyStyle}>
<Cpu {...cpu} />
</Card>
</Col>
<Col lg={8} md={24}>
<Card bordered={false} bodyStyle={{ ...bodyStyle.bodyStyle, padding: 0 }}>
<User {...user} />
</Card>
</Col>
</Row>
<div>
<Loader spinning={loading.models.dashboard && sales.length === 0} />
<Row gutter={24}>
{numberCards}
<Col lg={18} md={24}>
<Card bordered={false}
bodyStyle={{
padding: '24px 36px 24px 0',
}}
>
<Sales data={sales} />
</Card>
</Col>
<Col lg={6} md={24}>
<Row gutter={24}>
<Col lg={24} md={12}>
<Card bordered={false}
className={styles.weather}
bodyStyle={{
padding: 0,
height: 204,
background: color.blue,
}}
>
<Weather {...weather} loading={loading.effects['dashboard/queryWeather']} />
</Card>
</Col>
<Col lg={24} md={12}>
<Card bordered={false}
className={styles.quote}
bodyStyle={{
padding: 0,
height: 204,
background: color.peach,
}}
>
<Quote {...quote} />
</Card>
</Col>
</Row>
</Col>
<Col lg={12} md={24}>
<Card bordered={false} {...bodyStyle}>
<RecentSales data={recentSales} />
</Card>
</Col>
<Col lg={12} md={24}>
<Card bordered={false} {...bodyStyle}>
<Comments data={comments} />
</Card>
</Col>
<Col lg={24} md={24}>
<Card bordered={false}
bodyStyle={{
padding: '24px 36px 24px 0',
}}
>
<Completed data={completed} />
</Card>
</Col>
<Col lg={8} md={24}>
<Card bordered={false} {...bodyStyle}>
<Browser data={browser} />
</Card>
</Col>
<Col lg={8} md={24}>
<Card bordered={false} {...bodyStyle}>
<Cpu {...cpu} />
</Card>
</Col>
<Col lg={8} md={24}>
<Card bordered={false} bodyStyle={{ ...bodyStyle.bodyStyle, padding: 0 }}>
<User {...user} />
</Card>
</Col>
</Row>
</div>
)
}
Dashboard.propTypes = {
dashboard: PropTypes.object,
loading: PropTypes.object,
}
export default connect(({ dashboard }) => ({ dashboard }))(Dashboard)
export default connect(({ dashboard, loading }) => ({ dashboard, loading }))(Dashboard)

Some files were not shown because too many files have changed in this diff Show More