Initial project
This commit is contained in:
commit
ae30de057d
4
.prettierignore
Normal file
4
.prettierignore
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
dist
|
||||||
|
dev/assets/vendor
|
||||||
|
node_modules
|
||||||
|
src/node_modules
|
2
.browserslistrc
Normal file
2
.browserslistrc
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
> 1%
|
||||||
|
last 2 versions
|
21
.eslintrc.js
Normal file
21
.eslintrc.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
env: {
|
||||||
|
node: true,
|
||||||
|
},
|
||||||
|
extends: ['plugin:vue/recommended', '@vue/airbnb'],
|
||||||
|
parserOptions: {
|
||||||
|
parser: 'babel-eslint',
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||||
|
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||||
|
|
||||||
|
semi: ['error', 'never'],
|
||||||
|
'max-len': 'off',
|
||||||
|
'linebreak-style': 'off',
|
||||||
|
camelcase: ['error', { properties: 'never', ignoreDestructuring: true, ignoreImports: true }],
|
||||||
|
'arrow-parens': ['error', 'as-needed'],
|
||||||
|
'vue/multiline-html-element-content-newline': 'off',
|
||||||
|
},
|
||||||
|
}
|
29
.gitignore
vendored
Normal file
29
.gitignore
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
/dist
|
||||||
|
|
||||||
|
# local env files
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# Log files
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.idea
|
||||||
|
.vscode/*
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
||||||
|
|
||||||
|
!.vscode/*.code-snippets
|
||||||
|
|
||||||
|
# script
|
||||||
|
/vuexy-scripts
|
||||||
|
|
||||||
|
# Docs
|
||||||
|
/docs/.temp
|
3
README.md
Normal file
3
README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Vuexy - Vuejs, React, HTML & Laravel Admin Dashboard Template
|
||||||
|
|
||||||
|
**Vuexy – Vuejs, React, HTML & Laravel Admin Dashboard Template** – is the most developer friendly & highly customizable Admin Dashboard Template based on Bootstrap 4, Bootstrap Vue & Reactstrap.
|
5
babel.config.js
Normal file
5
babel.config.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
module.exports = {
|
||||||
|
presets: [
|
||||||
|
'@vue/cli-plugin-babel/preset',
|
||||||
|
],
|
||||||
|
}
|
9
jsconfig.json
Normal file
9
jsconfig.json
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"@/*": ["src/*"],
|
||||||
|
"@core/*": ["src/@core/*"],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
87
package.json
Normal file
87
package.json
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
"name": "vuexy-vuejs-react-html-laravel-admin-dashboard-template",
|
||||||
|
"version": "6.4.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"serve": "vue-cli-service serve",
|
||||||
|
"build": "vue-cli-service build",
|
||||||
|
"lint": "vue-cli-service lint",
|
||||||
|
"tauri:build": "vue-cli-service tauri:build",
|
||||||
|
"tauri:serve": "vue-cli-service tauri:serve"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@casl/ability": "4.1.6",
|
||||||
|
"@casl/vue": "1.1.1",
|
||||||
|
"@fullcalendar/common": "5.x",
|
||||||
|
"@fullcalendar/core": "5.x",
|
||||||
|
"@fullcalendar/daygrid": "5.x",
|
||||||
|
"@fullcalendar/interaction": "5.x",
|
||||||
|
"@fullcalendar/list": "5.x",
|
||||||
|
"@fullcalendar/timegrid": "5.x",
|
||||||
|
"@fullcalendar/vue": "5.x",
|
||||||
|
"@vue/composition-api": "1.0.0-beta.22",
|
||||||
|
"@vueuse/core": "4.0.0",
|
||||||
|
"animate.css": "4.1.1",
|
||||||
|
"apexcharts": "3.23.0",
|
||||||
|
"axios": "0.21.1",
|
||||||
|
"axios-mock-adapter": "1.19.0",
|
||||||
|
"bootstrap": "4.6.0",
|
||||||
|
"bootstrap-vue": "2.21.1",
|
||||||
|
"chart.js": "2.9.4",
|
||||||
|
"core-js": "3.8.1",
|
||||||
|
"echarts": "4.8.0",
|
||||||
|
"jsonwebtoken": "8.5.1",
|
||||||
|
"leaflet": "1.6.0",
|
||||||
|
"portal-vue": "2.1.7",
|
||||||
|
"postcss-rtl": "1.7.3",
|
||||||
|
"prismjs": "1.19.0",
|
||||||
|
"swiper": "5.4.5",
|
||||||
|
"uuid": "8.3.2",
|
||||||
|
"vee-validate": "3.4.5",
|
||||||
|
"vue": "2.x",
|
||||||
|
"vue-apexcharts": "1.6.0",
|
||||||
|
"vue-autosuggest": "2.2.0",
|
||||||
|
"vue-awesome-swiper": "4.1.1",
|
||||||
|
"vue-chartjs": "3.5.0",
|
||||||
|
"vue-cleave-component": "2.1.3",
|
||||||
|
"vue-clipboard2": "0.3.1",
|
||||||
|
"vue-context": "6.0.0",
|
||||||
|
"vue-echarts": "5.0.0-beta.0",
|
||||||
|
"vue-feather-icons": "5.1.0",
|
||||||
|
"vue-flatpickr-component": "8.1.6",
|
||||||
|
"vue-form-wizard": "0.8.4",
|
||||||
|
"vue-good-table": "2.21.0",
|
||||||
|
"vue-i18n": "8.22.2",
|
||||||
|
"vue-perfect-scrollbar": "0.2.1",
|
||||||
|
"vue-prism-component": "1.1.1",
|
||||||
|
"vue-quill-editor": "3.0.6",
|
||||||
|
"vue-ripple-directive": "2.0.1",
|
||||||
|
"vue-router": "3.4.9",
|
||||||
|
"vue-select": "3.11.2",
|
||||||
|
"vue-slider-component": "3.2.11",
|
||||||
|
"vue-sweetalert2": "4.1.1",
|
||||||
|
"vue-toastification": "1.7.8",
|
||||||
|
"vue-tour": "1.5.0",
|
||||||
|
"vue-tree-halower": "1.8.3",
|
||||||
|
"vue2-leaflet": "2.5.2",
|
||||||
|
"vuedraggable": "2.24.3",
|
||||||
|
"vuex": "3.6.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@vue/cli-plugin-babel": "~4.5.9",
|
||||||
|
"@vue/cli-plugin-eslint": "~4.5.9",
|
||||||
|
"@vue/cli-plugin-router": "~4.5.9",
|
||||||
|
"@vue/cli-plugin-vuex": "~4.5.9",
|
||||||
|
"@vue/cli-service": "~4.5.9",
|
||||||
|
"@vue/eslint-config-airbnb": "^5.3.0",
|
||||||
|
"@vuepress/plugin-medium-zoom": "^1.7.1",
|
||||||
|
"babel-eslint": "^10.0.3",
|
||||||
|
"eslint": "6.8.0",
|
||||||
|
"eslint-plugin-import": "^2.22.1",
|
||||||
|
"eslint-plugin-vue": "6.2.2",
|
||||||
|
"sass": "1.32.*",
|
||||||
|
"sass-loader": "^10.1.0",
|
||||||
|
"vue-cli-plugin-tauri": "~1.0.0-beta.3",
|
||||||
|
"vue-template-compiler": "2.x"
|
||||||
|
}
|
||||||
|
}
|
5
postcss.config.js
Normal file
5
postcss.config.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
const rtl = require('postcss-rtl')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
plugins: [rtl()],
|
||||||
|
}
|
BIN
public/favicon.ico
Normal file
BIN
public/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
38
public/index.html
Normal file
38
public/index.html
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1" />
|
||||||
|
|
||||||
|
<!-- Splash Screen/Loader Styles -->
|
||||||
|
<link rel="stylesheet" type="text/css" href="<%= BASE_URL %>loader.css" />
|
||||||
|
|
||||||
|
<link rel="icon" href="<%= BASE_URL %>favicon.ico" />
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;1,400&display=swap"
|
||||||
|
rel="stylesheet"
|
||||||
|
/>
|
||||||
|
<title>Vuexy - Vuejs Admin Dashboard Template</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<noscript>
|
||||||
|
<strong
|
||||||
|
>We're sorry but Vuexy - Vuejs Admin Dashboard Template doesn't work properly without JavaScript enabled. Please
|
||||||
|
enable it to continue.</strong
|
||||||
|
>
|
||||||
|
</noscript>
|
||||||
|
<div id="loading-bg">
|
||||||
|
<div class="loading-logo">
|
||||||
|
<img src="<%= BASE_URL %>logo.png" alt="Logo" />
|
||||||
|
</div>
|
||||||
|
<div class="loading">
|
||||||
|
<div class="effect-1 effects"></div>
|
||||||
|
<div class="effect-2 effects"></div>
|
||||||
|
<div class="effect-3 effects"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="app"></div>
|
||||||
|
<!-- built files will be auto injected -->
|
||||||
|
</body>
|
||||||
|
</html>
|
84
public/loader.css
Normal file
84
public/loader.css
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loading-bg {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: #fff;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.loading-logo {
|
||||||
|
position: absolute;
|
||||||
|
left: calc(50% - 45px);
|
||||||
|
top: 40%;
|
||||||
|
}
|
||||||
|
.loading {
|
||||||
|
position: absolute;
|
||||||
|
left: calc(50% - 35px);
|
||||||
|
top: 50%;
|
||||||
|
width: 55px;
|
||||||
|
height: 55px;
|
||||||
|
border-radius: 50%;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 3px solid transparent;
|
||||||
|
}
|
||||||
|
.loading .effect-1,
|
||||||
|
.loading .effect-2 {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: 3px solid transparent;
|
||||||
|
border-left: 3px solid rgba(121, 97, 249, 1);
|
||||||
|
border-radius: 50%;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading .effect-1 {
|
||||||
|
animation: rotate 1s ease infinite;
|
||||||
|
}
|
||||||
|
.loading .effect-2 {
|
||||||
|
animation: rotateOpacity 1s ease infinite 0.1s;
|
||||||
|
}
|
||||||
|
.loading .effect-3 {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: 3px solid transparent;
|
||||||
|
border-left: 3px solid rgba(121, 97, 249, 1);
|
||||||
|
-webkit-animation: rotateOpacity 1s ease infinite 0.2s;
|
||||||
|
animation: rotateOpacity 1s ease infinite 0.2s;
|
||||||
|
border-radius: 50%;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading .effects {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes rotate {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(1turn);
|
||||||
|
transform: rotate(1turn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes rotateOpacity {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
opacity: 0.1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(1turn);
|
||||||
|
transform: rotate(1turn);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
BIN
public/logo.png
Normal file
BIN
public/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
142
src/@core/app-config/useAppConfig.js
Normal file
142
src/@core/app-config/useAppConfig.js
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
import { computed, watch } from '@vue/composition-api'
|
||||||
|
import store from '@/store'
|
||||||
|
|
||||||
|
export default function usAppConfig() {
|
||||||
|
// ------------------------------------------------
|
||||||
|
// isVerticalMenuCollapsed
|
||||||
|
// ------------------------------------------------
|
||||||
|
const isVerticalMenuCollapsed = computed({
|
||||||
|
get: () => store.state.verticalMenu.isVerticalMenuCollapsed,
|
||||||
|
set: val => {
|
||||||
|
store.commit('verticalMenu/UPDATE_VERTICAL_MENU_COLLAPSED', val)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// RTL
|
||||||
|
// ------------------------------------------------
|
||||||
|
const isRTL = computed({
|
||||||
|
get: () => store.state.appConfig.layout.isRTL,
|
||||||
|
set: val => {
|
||||||
|
store.commit('appConfig/TOGGLE_RTL', val)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// Skin
|
||||||
|
// ------------------------------------------------
|
||||||
|
const skin = computed({
|
||||||
|
get: () => store.state.appConfig.layout.skin,
|
||||||
|
set: val => {
|
||||||
|
store.commit('appConfig/UPDATE_SKIN', val)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const skinClasses = computed(() => {
|
||||||
|
if (skin.value === 'bordered') return 'bordered-layout'
|
||||||
|
if (skin.value === 'semi-dark') return 'semi-dark-layout'
|
||||||
|
|
||||||
|
// Do not return any class for dark layout because dark layout updates class in body
|
||||||
|
// Do not return any class for light layout as that is default layout
|
||||||
|
return null
|
||||||
|
})
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// routerTransition
|
||||||
|
// ------------------------------------------------
|
||||||
|
const routerTransition = computed({
|
||||||
|
get: () => store.state.appConfig.layout.routerTransition,
|
||||||
|
set: val => {
|
||||||
|
store.commit('appConfig/UPDATE_ROUTER_TRANSITION', val)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
// *===============================================---*
|
||||||
|
// *--------- LAYOUT ---------------------------------------*
|
||||||
|
// *===============================================---*
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// layoutType
|
||||||
|
// ------------------------------------------------
|
||||||
|
|
||||||
|
const layoutType = computed({
|
||||||
|
get: () => store.state.appConfig.layout.type,
|
||||||
|
set: val => {
|
||||||
|
store.commit('appConfig/UPDATE_LAYOUT_TYPE', val)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
// Reset skin if skin is semi-dark and move to horizontal layout
|
||||||
|
watch(layoutType, val => {
|
||||||
|
if (val === 'horizontal' && skin.value === 'semi-dark') skin.value = 'light'
|
||||||
|
})
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// Content Width (Full/Boxed)
|
||||||
|
// ------------------------------------------------
|
||||||
|
const contentWidth = computed({
|
||||||
|
get: () => store.state.appConfig.layout.contentWidth,
|
||||||
|
set: val => {
|
||||||
|
store.commit('appConfig/UPDATE_CONTENT_WIDTH', val)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// isNavMenuHidden
|
||||||
|
// ------------------------------------------------
|
||||||
|
const isNavMenuHidden = computed({
|
||||||
|
get: () => store.state.appConfig.layout.menu.hidden,
|
||||||
|
set: val => {
|
||||||
|
store.commit('appConfig/UPDATE_NAV_MENU_HIDDEN', val)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
// *===============================================---*
|
||||||
|
// *--------- NAVBAR ---------------------------------------*
|
||||||
|
// *===============================================---*
|
||||||
|
|
||||||
|
const navbarBackgroundColor = computed({
|
||||||
|
get: () => store.state.appConfig.layout.navbar.backgroundColor,
|
||||||
|
set: val => {
|
||||||
|
store.commit('appConfig/UPDATE_NAVBAR_CONFIG', { backgroundColor: val })
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const navbarType = computed({
|
||||||
|
get: () => store.state.appConfig.layout.navbar.type,
|
||||||
|
set: val => {
|
||||||
|
store.commit('appConfig/UPDATE_NAVBAR_CONFIG', { type: val })
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
// *===============================================---*
|
||||||
|
// *--------- FOOTER ---------------------------------------*
|
||||||
|
// *===============================================---*
|
||||||
|
|
||||||
|
const footerType = computed({
|
||||||
|
get: () => store.state.appConfig.layout.footer.type,
|
||||||
|
set: val => {
|
||||||
|
store.commit('appConfig/UPDATE_FOOTER_CONFIG', { type: val })
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
isVerticalMenuCollapsed,
|
||||||
|
isRTL,
|
||||||
|
skin,
|
||||||
|
skinClasses,
|
||||||
|
routerTransition,
|
||||||
|
|
||||||
|
// Navbar
|
||||||
|
navbarBackgroundColor,
|
||||||
|
navbarType,
|
||||||
|
|
||||||
|
// Footer
|
||||||
|
footerType,
|
||||||
|
|
||||||
|
// Layout
|
||||||
|
layoutType,
|
||||||
|
contentWidth,
|
||||||
|
isNavMenuHidden,
|
||||||
|
}
|
||||||
|
}
|
BIN
src/@core/assets/fonts/feather/fonts/feather.eot
Normal file
BIN
src/@core/assets/fonts/feather/fonts/feather.eot
Normal file
Binary file not shown.
849
src/@core/assets/fonts/feather/fonts/feather.svg
Normal file
849
src/@core/assets/fonts/feather/fonts/feather.svg
Normal file
@ -0,0 +1,849 @@
|
|||||||
|
<?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" >
|
||||||
|
<!--
|
||||||
|
2013-9-30: Created.
|
||||||
|
-->
|
||||||
|
<svg>
|
||||||
|
<metadata>
|
||||||
|
Created by iconfont
|
||||||
|
</metadata>
|
||||||
|
<defs>
|
||||||
|
|
||||||
|
<font id="feather" horiz-adv-x="1024" >
|
||||||
|
<font-face
|
||||||
|
font-family="feather"
|
||||||
|
font-weight="500"
|
||||||
|
font-stretch="normal"
|
||||||
|
units-per-em="1024"
|
||||||
|
ascent="896"
|
||||||
|
descent="-128"
|
||||||
|
/>
|
||||||
|
<missing-glyph />
|
||||||
|
|
||||||
|
<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="alert-octagon" unicode="" d="M128 542.976v-317.952L353.024 0h317.952L896 225.024V542.976L670.976 768H353.024L128 542.976zM335.36 853.333333h353.28a42.666667 42.666667 0 0 0 30.165333-12.501333l250.026667-250.026667A42.666667 42.666667 0 0 0 981.333333 560.64v-353.28a42.666667 42.666667 0 0 0-12.501333-30.165333l-250.026667-250.026667a42.666667 42.666667 0 0 0-30.165333-12.501333H335.36a42.666667 42.666667 0 0 0-30.165333 12.501333l-250.026667 250.026667A42.666667 42.666667 0 0 0 42.666667 207.36V560.64a42.666667 42.666667 0 0 0 12.501333 30.165333l250.026667 250.026667A42.666667 42.666667 0 0 0 335.36 853.333333zM512 213.333333m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM469.333333 554.666667v-170.666667a42.666667 42.666667 0 0 1 85.333334 0V554.666667a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="alert-circle" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM469.333333 554.666667v-170.666667a42.666667 42.666667 0 0 1 85.333334 0V554.666667a42.666667 42.666667 0 0 1-85.333334 0zM512 213.333333m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="activity" unicode="" d="M424.490667 781.482667c-12.970667 38.912-68.010667 38.912-80.981334 0L225.28 426.666667H85.333333a42.666667 42.666667 0 0 1 0-85.333334h170.666667a42.666667 42.666667 0 0 1 40.490667 29.184L384 633.088l215.509333-646.570667c12.970667-38.912 68.010667-38.912 80.981334 0L798.72 341.333333H938.666667a42.666667 42.666667 0 0 1 0 85.333334h-170.666667a42.666667 42.666667 0 0 1-40.490667-29.184L640 134.912 424.490667 781.482667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="alert-triangle" unicode="" d="M402.432 753.237333a128.085333 128.085333 0 0 0 219.136 0L983.296 149.333333A128 128 0 0 0 873.386667-42.666667H150.144a128 128 0 0 0-109.098667 192.597334l361.386667 603.306666zM114.602667 106.666667A42.666667 42.666667 0 0 1 150.613333 42.666667h722.304a42.666667 42.666667 0 0 1 36.821334 63.402666L548.48 709.162667a42.666667 42.666667 0 0 1-72.917333 0.085333L114.602667 106.666667zM512 170.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM469.333333 512v-170.666667a42.666667 42.666667 0 0 1 85.333334 0V512a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="align-center" unicode="" d="M768 512H256a42.666667 42.666667 0 1 1 0-85.333333h512a42.666667 42.666667 0 0 1 0 85.333333zM896 682.666667H128a42.666667 42.666667 0 1 1 0-85.333334h768a42.666667 42.666667 0 0 1 0 85.333334zM896 341.333333H128a42.666667 42.666667 0 0 1 0-85.333333h768a42.666667 42.666667 0 0 1 0 85.333333zM768 170.666667H256a42.666667 42.666667 0 0 1 0-85.333334h512a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="airplay" unicode="" d="M213.333333 213.333333H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V682.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h682.666666a42.666667 42.666667 0 0 0 42.666667-42.666666v-426.666667a42.666667 42.666667 0 0 0-42.666667-42.666667h-42.666666a42.666667 42.666667 0 0 1 0-85.333333h42.666666a128 128 0 0 1 128 128V682.666667a128 128 0 0 1-128 128H170.666667a128 128 0 0 1-128-128v-426.666667a128 128 0 0 1 128-128h42.666666a42.666667 42.666667 0 0 1 0 85.333333zM512 189.354667L389.76 42.666667h244.48L512 189.354667zM725.333333-42.666667H298.666667a42.666667 42.666667 0 0 0-32.768 69.973334l213.333333 256a42.666667 42.666667 0 0 0 65.536 0l213.333333-256A42.666667 42.666667 0 0 0 725.333333-42.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="align-justify" unicode="" d="M896 512H128a42.666667 42.666667 0 1 1 0-85.333333h768a42.666667 42.666667 0 0 1 0 85.333333zM896 682.666667H128a42.666667 42.666667 0 1 1 0-85.333334h768a42.666667 42.666667 0 0 1 0 85.333334zM896 341.333333H128a42.666667 42.666667 0 0 1 0-85.333333h768a42.666667 42.666667 0 0 1 0 85.333333zM896 170.666667H128a42.666667 42.666667 0 0 1 0-85.333334h768a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="align-left" unicode="" d="M725.333333 512H128a42.666667 42.666667 0 1 1 0-85.333333h597.333333a42.666667 42.666667 0 0 1 0 85.333333zM896 682.666667H128a42.666667 42.666667 0 1 1 0-85.333334h768a42.666667 42.666667 0 0 1 0 85.333334zM896 341.333333H128a42.666667 42.666667 0 0 1 0-85.333333h768a42.666667 42.666667 0 0 1 0 85.333333zM725.333333 170.666667H128a42.666667 42.666667 0 0 1 0-85.333334h597.333333a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="align-right" unicode="" d="M896 512H298.666667a42.666667 42.666667 0 1 1 0-85.333333h597.333333a42.666667 42.666667 0 0 1 0 85.333333zM896 682.666667H128a42.666667 42.666667 0 1 1 0-85.333334h768a42.666667 42.666667 0 0 1 0 85.333334zM896 341.333333H128a42.666667 42.666667 0 0 1 0-85.333333h768a42.666667 42.666667 0 0 1 0 85.333333zM896 170.666667H298.666667a42.666667 42.666667 0 0 1 0-85.333334h597.333333a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="arrow-down-left" unicode="" d="M737.834667 670.165333l-512-512a42.666667 42.666667 0 0 1 60.330666-60.330666l512 512a42.666667 42.666667 0 1 1-60.330666 60.330666zM298.666667 512a42.666667 42.666667 0 1 1-85.333334 0v-384a42.666667 42.666667 0 0 1 42.666667-42.666667h384a42.666667 42.666667 0 0 1 0 85.333334H298.666667V512z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="arrow-down-right" unicode="" d="M225.834667 609.834667l512-512a42.666667 42.666667 0 0 1 60.330666 60.330666l-512 512a42.666667 42.666667 0 0 1-60.330666-60.330666zM384 170.666667a42.666667 42.666667 0 0 1 0-85.333334h384a42.666667 42.666667 0 0 1 42.666667 42.666667V512a42.666667 42.666667 0 0 1-85.333334 0v-341.333333H384z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="anchor" unicode="" d="M554.666667 2.346667000000025A384.170667 384.170667 0 0 1 893.653333 341.33333300000004H810.666667a42.666667 42.666667 0 0 0 0 85.333334h128a42.666667 42.666667 0 0 0 42.666666-42.666667c0-259.2-210.133333-469.333333-469.333333-469.333333S42.666667 124.79999999999995 42.666667 384a42.666667 42.666667 0 0 0 42.666666 42.666667h128a42.666667 42.666667 0 0 0 0-85.333334H130.346667A384.170667 384.170667 0 0 1 469.333333 2.346667000000025V554.666667a42.666667 42.666667 0 0 0 85.333334 0v-552.32zM512 512a170.666667 170.666667 0 1 0 0 341.333333 170.666667 170.666667 0 0 0 0-341.333333z m0 85.333333a85.333333 85.333333 0 1 1 0 170.666667 85.333333 85.333333 0 0 1 0-170.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="aperture" unicode="" d="M456.533333-82.09066700000005a469.76 469.76 0 0 0-375.893333 280.917334A467.797333 467.797333 0 0 0 42.666667 384c0 102.954667 33.152 198.186667 89.386666 275.584a42.410667 42.410667 0 0 0 4.650667 6.272 468.608 468.608 0 0 0 424.917333 184.874667 469.76 469.76 0 0 0 381.781334-281.6C967.808 512.426667 981.333333 449.792 981.333333 384a467.2 467.2 0 0 0-89.386666-275.584 42.410667 42.410667 0 0 0-4.650667-6.272 468.608 468.608 0 0 0-424.917333-184.874667 42.410667 42.410667 0 0 0-5.802667 0.64z m-14.72 88.490667L536.661333 170.66666699999996H192.682667a384.213333 384.213333 0 0 1 249.130666-164.266667z m95.317334-5.589333a383.146667 383.146667 0 0 1 266.794666 133.717333L709.12 298.66666699999996 647.68 192.42666699999995a42.666667 42.666667 0 0 0-0.426667-0.725334L537.173333 0.8533330000000205z m122.709333 383.146666L585.941333 512h-147.882666l-73.898667-128 73.898667-128h147.882666l73.898667 128z m86.698667 20.522667l109.952-190.336c25.301333 51.2 39.509333 108.885333 39.509333 169.856 0 44.885333-7.68 87.978667-21.845333 128h-189.696l61.056-105.728a42.624 42.624 0 0 0 1.024-1.792zM149.845333 256h189.696l-61.056 105.728a42.624 42.624 0 0 0-1.024 1.792L167.509333 553.856A382.421333 382.421333 0 0 1 128 384c0-44.885333 7.68-87.978667 21.845333-128z m70.229334 377.472L314.88 469.333333 376.32 575.573333a42.666667 42.666667 0 0 0 0.426667 0.725334L486.826667 767.146667a383.146667 383.146667 0 0 1-266.794667-133.717334z m362.112 128.128L487.338667 597.333333H831.317333a384.213333 384.213333 0 0 1-249.130666 164.266667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="arrow-left" unicode="" d="M853.333333 426.666667H170.666667a42.666667 42.666667 0 0 1 0-85.333334h682.666666a42.666667 42.666667 0 0 1 0 85.333334zM456.832 609.834667a42.666667 42.666667 0 1 1-60.330667 60.330666l-256-256a42.666667 42.666667 0 0 1 0-60.330666l256-256a42.666667 42.666667 0 1 1 60.330667 60.330666L230.997333 384l225.834667 225.834667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="arrow-right" unicode="" d="M170.666667 341.333333h682.666666a42.666667 42.666667 0 0 1 0 85.333334H170.666667a42.666667 42.666667 0 0 1 0-85.333334zM567.168 158.165333a42.666667 42.666667 0 0 1 60.330667-60.330666l256 256a42.666667 42.666667 0 0 1 0 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330667-60.330666L793.002667 384l-225.834667-225.834667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="arrow-down" unicode="" d="M469.333333 725.333333v-682.666666a42.666667 42.666667 0 0 1 85.333334 0V725.333333a42.666667 42.666667 0 0 1-85.333334 0zM286.165333 328.832a42.666667 42.666667 0 1 1-60.330666-60.330667l256-256a42.666667 42.666667 0 0 1 60.330666 0l256 256a42.666667 42.666667 0 0 1-60.330666 60.330667L512 102.997333l-225.834667 225.834667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="arrow-up-left" unicode="" d="M798.165333 158.165333l-512 512a42.666667 42.666667 0 0 1-60.330666-60.330666l512-512a42.666667 42.666667 0 0 1 60.330666 60.330666zM640 597.333333a42.666667 42.666667 0 0 1 0 85.333334H256a42.666667 42.666667 0 0 1-42.666667-42.666667v-384a42.666667 42.666667 0 0 1 85.333334 0V597.333333h341.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="arrow-up-right" unicode="" d="M286.165333 97.83466699999997l512 512a42.666667 42.666667 0 1 1-60.330666 60.330666l-512-512a42.666667 42.666667 0 0 1 60.330666-60.330666zM725.333333 256a42.666667 42.666667 0 0 1 85.333334 0V640a42.666667 42.666667 0 0 1-42.666667 42.666667H384a42.666667 42.666667 0 1 1 0-85.333334h341.333333v-341.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="arrow-up" unicode="" d="M554.666667 42.666667V725.333333a42.666667 42.666667 0 0 1-85.333334 0v-682.666666a42.666667 42.666667 0 0 1 85.333334 0zM737.834667 439.168a42.666667 42.666667 0 0 1 60.330666 60.330667l-256 256a42.666667 42.666667 0 0 1-60.330666 0l-256-256a42.666667 42.666667 0 0 1 60.330666-60.330667L512 665.002667l225.834667-225.834667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="award" unicode="" d="M304.646221 283.538374a341.323094 341.323094 0 1 0 414.792889 0l48.211887-363.210437a42.665387 42.665387 0 0 0-64.254072-42.238733L512-7.0129100000000335l-191.396925-114.812555a42.665387 42.665387 0 0 0-64.211407 42.196067l48.211887 363.210437z m79.9976-45.651964l-31.99904-241.059435 137.382545 82.429527a42.665387 42.665387 0 0 0 43.945348 0l137.382545-82.429527-31.956374 241.059435A340.384455 340.384455 0 0 0 512 213.35381299999995a340.384455 340.384455 0 0 0-127.356179 24.532597zM512 298.68458599999997a255.99232 255.99232 0 1 1 0 511.984641 255.99232 255.99232 0 0 1 0-511.984641z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="bar-chart" unicode="" d="M810.666667 725.333333v-682.666666h85.333333V725.333333h-85.333333z m-42.666667 85.333334h170.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-768a42.666667 42.666667 0 0 0-42.666666-42.666667h-170.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V768a42.666667 42.666667 0 0 0 42.666667 42.666667zM469.333333 512v-469.333333h85.333334V512h-85.333334z m-42.666666 85.333333h170.666666a42.666667 42.666667 0 0 0 42.666667-42.666666v-554.666667a42.666667 42.666667 0 0 0-42.666667-42.666667h-170.666666a42.666667 42.666667 0 0 0-42.666667 42.666667V554.666667a42.666667 42.666667 0 0 0 42.666667 42.666666zM128 42.666667h85.333333v256H128v-256z m-42.666667 341.333333h170.666667a42.666667 42.666667 0 0 0 42.666667-42.666667v-341.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666667v341.333333a42.666667 42.666667 0 0 0 42.666666 42.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="at-sign" unicode="" d="M725.333333 384v-42.666667a85.333333 85.333333 0 1 1 170.666667 0v42.666667a384 384 0 1 1-150.528-304.896 42.666667 42.666667 0 1 0 51.882667-67.754667A469.333333 469.333333 0 1 0 981.333333 384v-42.666667a170.666667 170.666667 0 0 0-309.76-98.901333A213.333333 213.333333 0 1 0 725.333333 384z m-213.333333-128a128 128 0 1 1 0 256 128 128 0 0 1 0-256z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="bar-chart-" unicode="" d="M469.333333 725.333333v-682.666666h85.333334V725.333333h-85.333334z m-42.666666 85.333334h170.666666a42.666667 42.666667 0 0 0 42.666667-42.666667v-768a42.666667 42.666667 0 0 0-42.666667-42.666667h-170.666666a42.666667 42.666667 0 0 0-42.666667 42.666667V768a42.666667 42.666667 0 0 0 42.666667 42.666667zM810.666667 512v-469.333333h85.333333V512h-85.333333z m-42.666667 85.333333h170.666667a42.666667 42.666667 0 0 0 42.666666-42.666666v-554.666667a42.666667 42.666667 0 0 0-42.666666-42.666667h-170.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V554.666667a42.666667 42.666667 0 0 0 42.666667 42.666666zM128 42.666667h85.333333v256H128v-256z m-42.666667 341.333333h170.666667a42.666667 42.666667 0 0 0 42.666667-42.666667v-341.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666667v341.333333a42.666667 42.666667 0 0 0 42.666666 42.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="battery-charging" unicode="" d="M213.333333 170.666667H128a42.666667 42.666667 0 0 0-42.666667 42.666666V554.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h136.106667a42.666667 42.666667 0 1 1 0 85.333334H128a128 128 0 0 1-128-128v-341.333334a128 128 0 0 1 128-128h85.333333a42.666667 42.666667 0 0 1 0 85.333334zM640 597.333333h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-341.333334a42.666667 42.666667 0 0 0-42.666667-42.666666h-136.106666a42.666667 42.666667 0 0 1 0-85.333334H725.333333a128 128 0 0 1 128 128V554.666667a128 128 0 0 1-128 128h-85.333333a42.666667 42.666667 0 0 1 0-85.333334zM1024 341.333333v85.333334a42.666667 42.666667 0 0 1-85.333333 0v-85.333334a42.666667 42.666667 0 0 1 85.333333 0zM348.501333 151.68a42.666667 42.666667 0 0 1 70.997334-47.36l170.666666 256A42.666667 42.666667 0 0 1 554.666667 426.666667H378.410667l126.421333 189.653333a42.666667 42.666667 0 1 1-70.997333 47.36l-170.666667-256A42.666667 42.666667 0 0 1 298.666667 341.333333h176.256l-126.421334-189.653333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="bell-off" unicode="" d="M386.503252 734.704171A255.868761 255.868761 0 0 0 768.131509 511.671902v-170.579174a42.644793 42.644793 0 0 1 85.289586 0V511.671902A341.158348 341.158348 0 0 1 344.626065 808.906112a42.644793 42.644793 0 1 1 41.877187-74.201941zM256.393987 298.447934V511.671902a255.911405 255.911405 0 0 0 28.529367 117.742274A42.644793 42.644793 0 1 1 209.058267 668.604741 341.158348 341.158348 0 0 1 171.1044 511.629257V298.447934a85.289587 85.289587 0 0 0-85.289586-85.289586c-56.84551 0-56.84551-85.289587 0-85.289587h639.671901a42.644793 42.644793 0 0 1 0 85.289587H233.579023c14.49923 25.075139 22.814964 54.201532 22.814964 85.289586z m292.756507-277.105867a42.644793 42.644793 0 0 0-73.775492 0 42.644793 42.644793 0 0 1-73.775493-42.815373 127.93438 127.93438 0 0 1 221.326478 0 42.644793 42.644793 0 0 1-73.775493 42.815373zM13.020151 822.68038l938.185456-938.185456a42.644793 42.644793 0 0 1 60.299738 60.299738l-938.185456 938.185456A42.644793 42.644793 0 1 1 13.020151 822.68038z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="battery" unicode="" d="M85.334187 554.282667v-340.565334c0-23.765333 19.114667-43.050667 42.453333-43.050666h597.76c23.381333 0 42.453333 19.2 42.453333 43.050666V554.24C768.000853 578.048 748.886187 597.333333 725.54752 597.333333H127.78752C104.406187 597.333333 85.334187 578.133333 85.334187 554.282667z m-85.333334 0A128.042667 128.042667 0 0 0 127.78752 682.666667h597.76A128.170667 128.170667 0 0 0 853.334187 554.282667v-340.565334A128.042667 128.042667 0 0 0 725.54752 85.333333H127.78752A128.170667 128.170667 0 0 0 0.000853 213.717333V554.24zM1024.000853 341.333333v85.333334a42.666667 42.666667 0 0 1-85.333333 0v-85.333334a42.666667 42.666667 0 0 1 85.333333 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="bluetooth" unicode="" d="M554.660072 17.7251l131.648983 131.648983L554.660072 281.023065v-263.297965zM686.309055 618.634876L554.660072 750.283859v-263.297966L686.309055 618.634876z m-439.100123-30.160671a42.660072 42.660072 0 0 0 60.321342 60.321342l469.260794-469.260793a42.660072 42.660072 0 0 0 0-60.321342l-234.630397-234.630397c-26.875845-26.875845-72.820743-7.849453-72.820743 30.160671V853.265273c0 37.967464 45.944898 57.036516 72.820743 30.160671l234.630397-234.630397a42.660072 42.660072 0 0 0 0-60.321342l-469.260794-469.260793a42.660072 42.660072 0 1 0-60.321342 60.321342L554.660072 486.985893v-205.962828L247.208932 588.474205z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="bell" unicode="" d="M768 298.66666699999996V512A256 256 0 0 1 256 512v-213.333333c0-31.104-8.32-60.245333-22.826667-85.333334h557.653334A169.898667 169.898667 0 0 0 768 298.66666699999996z m170.666667-170.666667H85.333333c-56.874667 0-56.874667 85.333333 0 85.333333a85.333333 85.333333 0 0 1 85.333334 85.333334V512a341.333333 341.333333 0 0 0 682.666666 0v-213.333333a85.333333 85.333333 0 0 1 85.333334-85.333334c56.874667 0 56.874667-85.333333 0-85.333333zM548.906667 21.418667000000028a42.666667 42.666667 0 0 0-73.813334 0 42.666667 42.666667 0 0 1-73.813333-42.837334 128 128 0 0 1 221.44 0 42.666667 42.666667 0 0 1-73.813333 42.837334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="book" unicode="" d="M853.333333 853.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-853.333334a42.666667 42.666667 0 0 0-42.666667-42.666666H277.333333A149.333333 149.333333 0 0 0 128 64v640A149.333333 149.333333 0 0 0 277.333333 853.333333H853.333333z m-42.666666-640V768H277.333333A64 64 0 0 1 213.333333 704v-505.045333A148.736 148.736 0 0 0 277.333333 213.33333300000004H810.666667z m0-85.333333H277.333333a64 64 0 0 1 0-128H810.666667v128z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="briefcase" unicode="" d="M298.666667 640V682.666667a128 128 0 0 0 128 128h170.666666a128 128 0 0 0 128-128v-42.666667h128.426667A127.914667 127.914667 0 0 0 981.333333 511.744v-426.154667A128.128 128.128 0 0 0 853.76-42.66666699999996H170.24A127.914667 127.914667 0 0 0 42.666667 85.58933300000001V511.744A128.128 128.128 0 0 0 170.24 640H298.666667z m0-85.333333H170.24C147.2 554.666667 128 535.381333 128 511.744v-426.154667A42.581333 42.581333 0 0 1 170.24 42.66666699999996H298.666667V554.666667z m85.333333 0v-512h256V554.666667H384z m341.333333 0v-512h128.426667c23.04 0 42.24 19.285333 42.24 42.922666V511.744A42.581333 42.581333 0 0 1 853.76 554.666667H725.333333zM384 640h256V682.666667a42.666667 42.666667 0 0 1-42.666667 42.666666h-170.666666a42.666667 42.666667 0 0 1-42.666667-42.666666v-42.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="camera-off" unicode="" d="M682.884567 273.415441l328.620778-328.620779a42.644793 42.644793 0 0 0-60.299738-60.299738L878.410944-42.71041300000002H128.459607a127.93438 127.93438 0 0 0-127.93438 127.93438V554.316695a127.93438 127.93438 0 0 0 127.93438 127.93438h24.989849L13.020151 822.68038A42.644793 42.644793 0 1 0 73.319889 882.980118l371.265572-371.265572 1.151409-1.108764 236.038932-236.038932 1.108765-1.151409z m-28.870526-91.686306a213.223967 213.223967 0 0 0-301.157531 301.072241L238.739043 596.961489H128.459607a42.644793 42.644793 0 0 1-42.644793-42.644794v-469.092728a42.644793 42.644793 0 0 1 42.644793-42.644793h664.661751l-139.107317 139.107316z m-60.470317 60.427672L413.326827 422.373704a127.93438 127.93438 0 0 1 180.216897-180.216897z m96.462523 373.781615A42.644793 42.644793 0 0 1 725.486715 596.961489h170.579174a42.644793 42.644793 0 0 0 42.644793-42.644794v-398.302371a42.644793 42.644793 0 0 1 85.289587 0V554.316695a127.93438 127.93438 0 0 1-127.93438 127.93438h-147.764209l-72.624084 108.957448A42.644793 42.644793 0 0 1 640.197128 810.185456H384.328368a42.644793 42.644793 0 1 1 0-85.289587h233.053796l72.624083-108.957447z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="calendar" unicode="" d="M384 768h256V810.666667a42.666667 42.666667 0 0 0 85.333333 0v-42.666667h85.546667A127.786667 127.786667 0 0 0 938.666667 640.213333v-597.76A127.786667 127.786667 0 0 0 810.88-85.33333300000004H213.12A127.786667 127.786667 0 0 0 85.333333 42.45333300000004V640.213333A127.786667 127.786667 0 0 0 213.12 768H298.666667V810.666667a42.666667 42.666667 0 1 0 85.333333 0v-42.666667z m469.333333-341.333333H170.666667v-384.213334c0-23.466667 18.986667-42.453333 42.453333-42.453333h597.76c23.466667 0 42.453333 18.986667 42.453333 42.453333V426.666667zM384 682.666667v-42.666667a42.666667 42.666667 0 1 0-85.333333 0V682.666667H213.12A42.453333 42.453333 0 0 1 170.666667 640.213333V512h682.666666V640.213333A42.453333 42.453333 0 0 1 810.88 682.666667H725.333333v-42.666667a42.666667 42.666667 0 0 0-85.333333 0V682.666667H384z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="bookmark" unicode="" d="M768 82.901333V682.666667a42.666667 42.666667 0 0 1-42.666667 42.666666H298.666667a42.666667 42.666667 0 0 1-42.666667-42.666666v-599.765334l231.210667 165.12a42.666667 42.666667 0 0 0 49.578666 0L768 82.944zM238.122667-34.730667A42.666667 42.666667 0 0 0 170.666667 0V682.666667a128 128 0 0 0 128 128h426.666666a128 128 0 0 0 128-128v-682.666667a42.666667 42.666667 0 0 0-67.456-34.730667L512 160.896l-273.877333-195.626667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="box" unicode="" d="M568.96 872.362667l341.333333-170.666667A128 128 0 0 0 981.333333 587.093333v-406.613333a128 128 0 0 0-70.954666-114.517333l-341.333334-170.666667a128 128 0 0 0-114.517333 0L113.066667 66.00533299999995A127.872 127.872 0 0 0 42.666667 180.90666699999997V587.093333a128 128 0 0 0 70.954666 114.517334L455.04 872.362667a128 128 0 0 0 113.92 0zM512 474.368l331.050667 165.546667-312.106667 156.032a42.624 42.624 0 0 1-37.845333 0L180.949333 639.9573330000001 512 474.368z m384 96.597333l-341.333333-170.666666v-416.810667l317.653333 158.848A42.666667 42.666667 0 0 1 896 180.48000000000002V570.965333zM469.333333-16.725332999999978v417.024l-341.333333 170.666666v-390.357333c-0.128-16.213333 8.96-31.104 23.338667-38.357333L469.333333-16.725332999999978z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="camera" unicode="" d="M334.165333 616.32A42.666667 42.666667 0 0 0 298.666667 597.333333H128a42.666667 42.666667 0 0 1-42.666667-42.666666v-469.333334a42.666667 42.666667 0 0 1 42.666667-42.666666h768a42.666667 42.666667 0 0 1 42.666667 42.666666V554.666667a42.666667 42.666667 0 0 1-42.666667 42.666666h-170.666667a42.666667 42.666667 0 0 0-35.498666 18.986667L617.173333 725.333333h-210.346666L334.165333 616.32zM896 682.666667a128 128 0 0 0 128-128v-469.333334a128 128 0 0 0-128-128H128a128 128 0 0 0-128 128V554.666667a128 128 0 0 0 128 128h147.84l72.661333 109.013333A42.666667 42.666667 0 0 0 384 810.666667h256a42.666667 42.666667 0 0 0 35.498667-18.986667L748.16 682.666667H896zM512 128a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="check-circle" unicode="" d="M896 423.68V384a384 384 0 1 0-227.712 351.018667 42.666667 42.666667 0 1 1 34.730667 77.909333A469.333333 469.333333 0 1 1 981.333333 384v39.722667a42.666667 42.666667 0 0 1-85.333333 0zM414.165333 456.832a42.666667 42.666667 0 0 1-60.330666-60.330667l128-128a42.666667 42.666667 0 0 1 60.330666 0l469.333334 469.333334a42.666667 42.666667 0 1 1-60.330667 60.330666L512 358.997333l-97.834667 97.834667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="check" unicode="" d="M200.832 371.498667a42.666667 42.666667 0 1 1-60.330667-60.330667l213.333334-213.333333a42.666667 42.666667 0 0 1 60.330666 0l469.333334 469.333333a42.666667 42.666667 0 1 1-60.330667 60.330667L384 188.330667l-183.168 183.168z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="check-square" unicode="" d="M371.498667 456.832a42.666667 42.666667 0 0 1-60.330667-60.330667l128-128a42.666667 42.666667 0 0 1 60.330667 0l469.333333 469.333334a42.666667 42.666667 0 1 1-60.330667 60.330666L469.333333 358.997333l-97.834666 97.834667zM810.666667 384v-298.666667a42.666667 42.666667 0 0 0-42.666667-42.666666H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666666V682.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h469.333333a42.666667 42.666667 0 0 1 0 85.333334H170.666667a128 128 0 0 1-128-128v-597.333334a128 128 0 0 1 128-128h597.333333a128 128 0 0 1 128 128v298.666667a42.666667 42.666667 0 0 1-85.333333 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="cast" unicode="" d="M76.8 167.253333a170.666667 170.666667 0 0 0 133.12-133.12 42.666667 42.666667 0 0 1 83.626667 17.066667 256 256 0 0 1-199.68 199.68 42.666667 42.666667 0 0 1-17.066667-83.626667z m3.84 172.202667a341.333333 341.333333 0 0 0 301.482667-301.525333 42.666667 42.666667 0 1 1 84.821333 9.472 426.666667 426.666667 0 0 1-376.874667 376.874666 42.666667 42.666667 0 1 1-9.472-84.821333zM128 554.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667h682.666666a42.666667 42.666667 0 0 0 42.666667-42.666667v-512a42.666667 42.666667 0 0 0-42.666667-42.666667h-256a42.666667 42.666667 0 0 1 0-85.333333h256a128 128 0 0 1 128 128V640a128 128 0 0 1-128 128H170.666667a128 128 0 0 1-128-128v-85.333333a42.666667 42.666667 0 1 1 85.333333 0zM85.333333 42.666667m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="chevron-down" unicode="" d="M286.165333 542.165333a42.666667 42.666667 0 0 1-60.330666-60.330666l256-256a42.666667 42.666667 0 0 1 60.330666 0l256 256a42.666667 42.666667 0 1 1-60.330666 60.330666L512 316.330667 286.165333 542.165333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="chevron-left" unicode="" d="M670.165333 609.834667a42.666667 42.666667 0 1 1-60.330666 60.330666l-256-256a42.666667 42.666667 0 0 1 0-60.330666l256-256a42.666667 42.666667 0 0 1 60.330666 60.330666L444.330667 384l225.834666 225.834667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="chevron-right" unicode="" d="M353.834667 158.165333a42.666667 42.666667 0 0 1 60.330666-60.330666l256 256a42.666667 42.666667 0 0 1 0 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330666-60.330666L579.669333 384l-225.834666-225.834667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="chevron-up" unicode="" d="M737.834667 225.834667a42.666667 42.666667 0 0 1 60.330666 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330666 0l-256-256a42.666667 42.666667 0 0 1 60.330666-60.330666L512 451.669333l225.834667-225.834666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="chevrons-down" unicode="" d="M328.832 371.498667a42.666667 42.666667 0 1 1-60.330667-60.330667l213.333334-213.333333a42.666667 42.666667 0 0 1 60.330666 0l213.333334 213.333333a42.666667 42.666667 0 0 1-60.330667 60.330667L512 188.330667l-183.168 183.168zM328.832 670.165333a42.666667 42.666667 0 0 1-60.330667-60.330666l213.333334-213.333334a42.666667 42.666667 0 0 1 60.330666 0l213.333334 213.333334a42.666667 42.666667 0 1 1-60.330667 60.330666L512 486.997333 328.832 670.165333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="chevrons-right" unicode="" d="M524.501333 200.832a42.666667 42.666667 0 0 1 60.330667-60.330667l213.333333 213.333334a42.666667 42.666667 0 0 1 0 60.330666l-213.333333 213.333334a42.666667 42.666667 0 0 1-60.330667-60.330667L707.669333 384l-183.168-183.168zM225.834667 200.832a42.666667 42.666667 0 0 1 60.330666-60.330667l213.333334 213.333334a42.666667 42.666667 0 0 1 0 60.330666l-213.333334 213.333334a42.666667 42.666667 0 0 1-60.330666-60.330667L409.002667 384l-183.168-183.168z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="chevrons-up" unicode="" d="M695.168 396.501333a42.666667 42.666667 0 0 1 60.330667 60.330667l-213.333334 213.333333a42.666667 42.666667 0 0 1-60.330666 0l-213.333334-213.333333a42.666667 42.666667 0 0 1 60.330667-60.330667L512 579.669333l183.168-183.168zM512 281.002667l183.168-183.168a42.666667 42.666667 0 0 1 60.330667 60.330666l-213.333334 213.333334a42.666667 42.666667 0 0 1-60.330666 0l-213.333334-213.333334a42.666667 42.666667 0 0 1 60.330667-60.330666L512 281.002667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="chevrons-left" unicode="" d="M499.498667 567.168a42.666667 42.666667 0 1 1-60.330667 60.330667l-213.333333-213.333334a42.666667 42.666667 0 0 1 0-60.330666l213.333333-213.333334a42.666667 42.666667 0 0 1 60.330667 60.330667L316.330667 384l183.168 183.168zM798.165333 567.168a42.666667 42.666667 0 1 1-60.330666 60.330667l-213.333334-213.333334a42.666667 42.666667 0 0 1 0-60.330666l213.333334-213.333334a42.666667 42.666667 0 0 1 60.330666 60.330667L614.997333 384l183.168 183.168z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="circle" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="clipboard" unicode="" d="M298.666667 768c0.213333 46.976 38.4 85.333333 85.205333 85.333333h256.256c47.104 0 84.992-37.973333 85.205333-85.333333h42.666667a128 128 0 0 0 128-128v-597.333333a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128V640a128 128 0 0 0 128 128h42.666667z m0-85.333333H256a42.666667 42.666667 0 0 1-42.666667-42.666667v-597.333333a42.666667 42.666667 0 0 1 42.666667-42.666667h512a42.666667 42.666667 0 0 1 42.666667 42.666667V640a42.666667 42.666667 0 0 1-42.666667 42.666667h-42.666667c-0.213333-46.976-38.4-85.333333-85.205333-85.333334H383.872A85.248 85.248 0 0 0 298.666667 682.666667z m85.205333 85.333333c0.341333 0 0.128-0.213333 0.128-0.426667v-84.48C384 682.752 384 682.666667 383.914667 682.666667h256.213333C639.786667 682.666667 640 682.88 640 683.093333V767.573333c0 0.298667 0 0.426667 0.085333 0.426667H383.872z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="chrome" unicode="" d="M462.378667-82.77333299999998a42.410667 42.410667 0 0 0-5.802667 0.682666C223.488-54.65599999999995 42.666667 143.530667 42.666667 384c0 102.954667 33.152 198.186667 89.386666 275.584a42.410667 42.410667 0 0 0 4.650667 6.272A468.608 468.608 0 0 0 512 853.333333a469.418667 469.418667 0 0 0 431.36-284.16c24.448-56.832 37.973333-119.424 37.973333-185.173333 0-259.2-210.133333-469.333333-469.333333-469.333333-16.768 0-33.28 0.853333-49.621333 2.56z m-20.608 89.173333l95.616 165.76a213.333333 213.333333 0 0 0-214.528 113.066667l-155.306667 268.672A382.421333 382.421333 0 0 1 128 384c0-188.074667 135.253333-344.618667 313.770667-377.6z m95.317333-5.589333A384 384 0 0 1 874.154667 512H682.666667c26.794667-35.669333 42.666667-79.957333 42.666666-128 0-41.941333-12.117333-81.066667-33.024-114.090667l-155.221333-269.098666z m82.389333 313.642666l3.2 5.546667c0.554667 0.981333 1.152 1.962667 1.792 2.858667a128 128 0 1 1-226.56 2.986666l3.413334-5.845333c0.554667-0.938667 1.066667-1.92 1.536-2.901333a127.914667 127.914667 0 0 1 216.618666-2.645334zM220.16 633.5146669999999l95.701333-165.589334A213.376 213.376 0 0 0 512 597.333333h319.317333A383.616 383.616 0 0 1 512 768a383.146667 383.146667 0 0 1-291.925333-134.485333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="clock" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM554.666667 640a42.666667 42.666667 0 0 1-85.333334 0v-256a42.666667 42.666667 0 0 1 12.501334-30.165333l128-128a42.666667 42.666667 0 0 1 60.330666 60.330666L554.666667 401.664V640z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="cloud-lightning" unicode="" d="M384.070136 896a383.99632 383.99632 0 0 1-185.939552-719.9931 42.666258 42.666258 0 0 1 41.300938 74.665951A298.663804 298.663804 0 1 0 673.262031 586.669631a42.666258 42.666258 0 0 1 41.300938-31.999693H768.322453a170.665031 170.665031 0 0 0 34.175673-337.916762 42.666258 42.666258 0 0 1 16.98117-83.625865A255.997547 255.997547 0 0 1 768.279787 640.002453h-22.186454a383.99632 383.99632 0 0 1-362.023197 255.997547zM434.160322-61.644156a42.666258 42.666258 0 0 1 70.996653-47.359546l170.665032 255.997547A42.666258 42.666258 0 0 1 640.32368 213.339875h-176.254311l126.420122 189.651516a42.666258 42.666258 0 1 1-70.996653 47.359546l-170.665031-255.997546A42.666258 42.666258 0 0 1 384.326133 128.00736h176.254311l-126.420122-189.651516z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="cloud-drizzle" unicode="" d="M298.831787 85.333333v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a42.666667 42.666667 0 0 1-85.333333 0zM298.831787 341.333333v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a42.666667 42.666667 0 0 1-85.333333 0zM640.16512 85.333333v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a42.666667 42.666667 0 0 1-85.333333 0zM640.16512 341.333333v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a42.666667 42.666667 0 0 1-85.333333 0zM469.498453 0v-85.333333a42.666667 42.666667 0 0 1 85.333334 0v85.333333a42.666667 42.666667 0 0 1-85.333334 0zM469.498453 256v-85.333333a42.666667 42.666667 0 0 1 85.333334 0v85.333333a42.666667 42.666667 0 0 1-85.333334 0zM405.498453 895.36A384 384 0 0 1 144.207787 212.053333a42.666667 42.666667 0 0 1 53.248 66.645334A298.666667 298.666667 0 1 0 673.103787 586.666667a42.666667 42.666667 0 0 1 41.301333-32H768.16512a170.666667 170.666667 0 0 0 68.224-326.997334 42.666667 42.666667 0 0 1 34.218667-78.165333A256 256 0 0 1 768.207787 640h-22.229334A384 384 0 0 1 405.498453 895.36z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="cloud-rain" unicode="" d="M640.16512 341.333333v-341.333333a42.666667 42.666667 0 0 1 85.333333 0v341.333333a42.666667 42.666667 0 0 1-85.333333 0zM298.831787 341.333333v-341.333333a42.666667 42.666667 0 0 1 85.333333 0v341.333333a42.666667 42.666667 0 0 1-85.333333 0zM469.498453 256v-341.333333a42.666667 42.666667 0 0 1 85.333334 0v341.333333a42.666667 42.666667 0 0 1-85.333334 0zM405.498453 895.36A384 384 0 0 1 144.207787 212.053333a42.666667 42.666667 0 0 1 53.248 66.645334A298.666667 298.666667 0 1 0 673.103787 586.666667a42.666667 42.666667 0 0 1 41.301333-32H768.16512a170.666667 170.666667 0 0 0 68.224-326.997334 42.666667 42.666667 0 0 1 34.218667-78.165333A256 256 0 0 1 768.207787 640h-22.229334A384 384 0 0 1 405.498453 895.36z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="cloud-off" unicode="" d="M420.661732 767.370083a42.474214 42.474214 0 0 1-45.971088-38.721472 42.559504 42.559504 0 0 1 38.508249-46.226956 297.3195 297.3195 0 0 0 261.583163-223.885166 42.431569 42.431569 0 0 1 41.109581-32.154174h53.433926a169.38512 169.38512 0 0 0 141.580714-76.248891 171.389425 171.389425 0 0 0 14.840388-160.813516 42.730083 42.730083 0 0 1 22.516451-55.864679 42.303635 42.303635 0 0 1 55.608811 22.60174 257.062815 257.062815 0 0 1-22.260582 241.198952A254.077679 254.077679 0 0 1 769.240273 511.671902h-21.876779a382.054704 382.054704 0 0 1-326.701762 255.698181zM197.544172 719.607914c-153.308032-85.289587-229.215765-264.568299-184.097573-434.763669 45.160836-170.238015 199.748212-287.681777 374.890379-284.86722h380.988585c29.552842 0 58.849815 5.24531 86.568931 15.352126 22.004713 8.059866 33.348228 32.495333 25.373652 54.62798a42.34628 42.34628 0 0 1-54.329467 25.544231c-18.50784-6.737877-37.996511-10.23475-57.655761-10.23475H387.654662a297.276855 297.276855 0 0 0-292.24477 221.539702 299.153226 299.153226 0 0 0 143.158572 338.130567c20.469501 11.38616 27.93234 37.356839 16.631469 57.954274a42.26099 42.26099 0 0 1-57.655761 16.674115zM13.020151 822.68038l938.185456-938.185456a42.644793 42.644793 0 0 1 60.299738 60.299738l-938.185456 938.185456A42.644793 42.644793 0 1 1 13.020151 822.68038z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="codepen" unicode="" d="M535.253333 846.421333l426.666667-277.333333A42.666667 42.666667 0 0 0 981.333333 533.333333v-298.666666a42.666667 42.666667 0 0 0-19.413333-35.754667l-426.666667-277.333333a42.666667 42.666667 0 0 0-46.506666 0l-426.666667 277.333333A42.666667 42.666667 0 0 0 42.666667 234.66666699999996v298.666666a42.666667 42.666667 0 0 0 19.413333 35.754667l426.666667 277.333333a42.666667 42.666667 0 0 0 46.506666 0zM469.333333 732.074667L161.621333 531.9680000000001 298.666667 436.096l170.666666 119.466667V732.032z m85.333334 0V555.52l170.666666-119.466667 137.045334 95.914667L554.666667 732.032zM512 286.72L650.922667 384 512 481.28 373.077333 384 512 286.72z m384 29.866667v134.741333L799.744 384 896 316.58666700000003z m-33.621333-80.64L725.333333 331.904l-170.666666-119.466667v-176.469333l307.712 200.021333z m-700.757334 0L469.333333 35.96799999999996v176.469333l-170.666666 119.466667-137.045334-95.914667zM128 316.58666700000003L224.256 384 128 451.413333v-134.826666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="cloud-snow" unicode="" d="M405.632 852.693333A384 384 0 0 1 144.298667 169.386667a42.666667 42.666667 0 0 1 53.290666 66.645333A298.666667 298.666667 0 1 0 673.194667 544a42.666667 42.666667 0 0 1 41.301333-32h53.76a170.666667 170.666667 0 0 0 68.266667-326.997333 42.666667 42.666667 0 0 1 34.218666-78.165334A256 256 0 0 1 768.341333 597.333333h-22.272a384 384 0 0 1-340.48 255.36zM682.666667 256m-42.666667 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM512 170.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM341.333333 256m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM341.333333 42.666667m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM512-42.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM682.666667 42.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM682.666667 42.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="compass" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM455.253333 440.746667L398.592 270.506667l170.154667 56.746666 56.746666 170.154667-170.154666-56.746667z m278.144 110.677333l-90.453333-271.36a42.666667 42.666667 0 0 0-27.008-27.008l-271.36-90.453333a42.666667 42.666667 0 0 0-53.973333 53.973333l90.453333 271.36a42.666667 42.666667 0 0 0 27.008 27.008l271.36 90.453333a42.666667 42.666667 0 0 0 53.973333-53.973333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="copy" unicode="" d="M426.666667 426.538667v-383.744A42.666667 42.666667 0 0 1 469.461333 0h383.744A42.666667 42.666667 0 0 1 896 42.794667v383.744A42.666667 42.666667 0 0 1 853.205333 469.333333h-383.744A42.666667 42.666667 0 0 1 426.666667 426.538667z m-85.333334 0A128 128 0 0 0 469.461333 554.666667h383.744A128 128 0 0 0 981.333333 426.538667v-383.744A128 128 0 0 0 853.205333-85.333333h-383.744A128 128 0 0 0 341.333333 42.794667v383.744zM213.333333 298.666667H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666666V725.333333a42.666667 42.666667 0 0 0 42.666667 42.666667h384a42.666667 42.666667 0 0 0 42.666666-42.666667v-42.666666a42.666667 42.666667 0 0 1 85.333334 0V725.333333a128 128 0 0 1-128 128H170.666667a128 128 0 0 1-128-128v-384a128 128 0 0 1 128-128h42.666666a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="corner-down-right" unicode="" d="M609.834667 72.832a42.666667 42.666667 0 0 1 60.330666-60.330667l213.333334 213.333334a42.666667 42.666667 0 0 1 0 60.330666l-213.333334 213.333334a42.666667 42.666667 0 0 1-60.330666-60.330667L793.002667 256l-183.168-183.168zM128 725.333333v-298.666666a213.333333 213.333333 0 0 1 213.333333-213.333334h512a42.666667 42.666667 0 0 1 0 85.333334H341.333333a128 128 0 0 0-128 128V725.333333a42.666667 42.666667 0 1 1-85.333333 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="corner-down-left" unicode="" d="M414.165333 439.168a42.666667 42.666667 0 1 1-60.330666 60.330667l-213.333334-213.333334a42.666667 42.666667 0 0 1 0-60.330666l213.333334-213.333334a42.666667 42.666667 0 1 1 60.330666 60.330667L230.997333 256l183.168 183.168zM810.666667 725.333333v-298.666666a128 128 0 0 0-128-128H170.666667a42.666667 42.666667 0 0 1 0-85.333334h512a213.333333 213.333333 0 0 1 213.333333 213.333334V725.333333a42.666667 42.666667 0 0 1-85.333333 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="corner-left-down" unicode="" d="M200.832 286.165333a42.666667 42.666667 0 1 1-60.330667-60.330666l213.333334-213.333334a42.666667 42.666667 0 0 1 60.330666 0l213.333334 213.333334a42.666667 42.666667 0 0 1-60.330667 60.330666L384 102.997333l-183.168 183.168zM853.333333 768h-298.666666a213.333333 213.333333 0 0 1-213.333334-213.333333v-512a42.666667 42.666667 0 0 1 85.333334 0V554.666667a128 128 0 0 0 128 128h298.666666a42.666667 42.666667 0 0 1 0 85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="corner-left-up" unicode="" d="M567.168 481.834667a42.666667 42.666667 0 1 1 60.330667 60.330666l-213.333334 213.333334a42.666667 42.666667 0 0 1-60.330666 0l-213.333334-213.333334a42.666667 42.666667 0 0 1 60.330667-60.330666L384 665.002667l183.168-183.168zM853.333333 85.333333h-298.666666a128 128 0 0 0-128 128V725.333333a42.666667 42.666667 0 1 1-85.333334 0v-512a213.333333 213.333333 0 0 1 213.333334-213.333333h298.666666a42.666667 42.666667 0 0 1 0 85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="corner-up-left" unicode="" d="M414.165333 695.168a42.666667 42.666667 0 1 1-60.330666 60.330667l-213.333334-213.333334a42.666667 42.666667 0 0 1 0-60.330666l213.333334-213.333334a42.666667 42.666667 0 1 1 60.330666 60.330667L230.997333 512l183.168 183.168zM896 42.666667v298.666666a213.333333 213.333333 0 0 1-213.333333 213.333334H170.666667a42.666667 42.666667 0 1 1 0-85.333334h512a128 128 0 0 0 128-128v-298.666666a42.666667 42.666667 0 0 1 85.333333 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="corner-up-right" unicode="" d="M609.834667 328.832a42.666667 42.666667 0 0 1 60.330666-60.330667l213.333334 213.333334a42.666667 42.666667 0 0 1 0 60.330666l-213.333334 213.333334a42.666667 42.666667 0 0 1-60.330666-60.330667L793.002667 512l-183.168-183.168zM213.333333 42.666667v298.666666a128 128 0 0 0 128 128h512a42.666667 42.666667 0 0 1 0 85.333334H341.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-298.666666a42.666667 42.666667 0 0 1 85.333333 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="corner-right-down" unicode="" d="M456.832 286.16533300000003a42.666667 42.666667 0 1 1-60.330667-60.330666l213.333334-213.333334a42.666667 42.666667 0 0 1 60.330666 0l213.333334 213.333334a42.666667 42.666667 0 0 1-60.330667 60.330666L640 102.99733300000003l-183.168 183.168zM170.666667 682.666667h298.666666a128 128 0 0 0 128-128v-512a42.666667 42.666667 0 0 1 85.333334 0V554.666667a213.333333 213.333333 0 0 1-213.333334 213.333333H170.666667a42.666667 42.666667 0 1 1 0-85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="corner-right-up" unicode="" d="M823.168 481.834667a42.666667 42.666667 0 1 1 60.330667 60.330666l-213.333334 213.333334a42.666667 42.666667 0 0 1-60.330666 0l-213.333334-213.333334a42.666667 42.666667 0 1 1 60.330667-60.330666L640 665.002667l183.168-183.168zM170.666667 0h298.666666a213.333333 213.333333 0 0 1 213.333334 213.333333V725.333333a42.666667 42.666667 0 0 1-85.333334 0v-512a128 128 0 0 0-128-128H170.666667a42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="cpu" unicode="" d="M213.333333 640.256v-512.512c0-23.381333 19.029333-42.410667 42.410667-42.410667h512.512a42.453333 42.453333 0 0 1 42.410667 42.410667V640.256A42.453333 42.453333 0 0 1 768.256 682.666667H255.744A42.453333 42.453333 0 0 1 213.333333 640.256z m-85.333333 0A127.786667 127.786667 0 0 0 255.744 768h512.512A127.786667 127.786667 0 0 0 896 640.256v-512.512A127.786667 127.786667 0 0 0 768.256 0H255.744A127.786667 127.786667 0 0 0 128 127.74400000000003V640.256zM426.666667 298.66666699999996h170.666666v170.666666h-170.666666v-170.666666zM384 554.666667h256a42.666667 42.666667 0 0 0 42.666667-42.666667v-256a42.666667 42.666667 0 0 0-42.666667-42.666667H384a42.666667 42.666667 0 0 0-42.666667 42.666667V512a42.666667 42.666667 0 0 0 42.666667 42.666667zM341.333333 853.333333a42.666667 42.666667 0 1 0 85.333334 0v-128a42.666667 42.666667 0 1 0-85.333334 0V853.333333z m256 0a42.666667 42.666667 0 0 0 85.333334 0v-128a42.666667 42.666667 0 0 0-85.333334 0V853.333333zM341.333333 42.66666699999996a42.666667 42.666667 0 0 0 85.333334 0v-128a42.666667 42.666667 0 0 0-85.333334 0v128z m256 0a42.666667 42.666667 0 0 0 85.333334 0v-128a42.666667 42.666667 0 0 0-85.333334 0v128z m256 426.666666a42.666667 42.666667 0 0 0 0 85.333334h128a42.666667 42.666667 0 0 0 0-85.333334h-128z m0-213.333333a42.666667 42.666667 0 0 0 0 85.333333h128a42.666667 42.666667 0 0 0 0-85.333333h-128zM42.666667 469.333333a42.666667 42.666667 0 1 0 0 85.333334h128a42.666667 42.666667 0 1 0 0-85.333334H42.666667z m0-213.333333a42.666667 42.666667 0 0 0 0 85.333333h128a42.666667 42.666667 0 0 0 0-85.333333H42.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="credit-card" unicode="" d="M0 640.256A127.616 127.616 0 0 0 127.616 768H896.426667A127.744 127.744 0 0 0 1024 640.256v-512.512A127.616 127.616 0 0 0 896.384 0H127.573333A127.744 127.744 0 0 0 0 127.74400000000003V640.256zM938.666667 512V640.256A42.410667 42.410667 0 0 1 896.384 682.666667H127.573333A42.282667 42.282667 0 0 1 85.333333 640.256V512h853.333334z m0-85.333333H85.333333v-298.922667c0-23.381333 18.986667-42.410667 42.282667-42.410667H896.426667a42.282667 42.282667 0 0 1 42.282666 42.410667V426.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="crosshair" unicode="" d="M469.333333 2.346667000000025V128a42.666667 42.666667 0 0 0 85.333334 0v-125.653333A384.170667 384.170667 0 0 1 893.653333 341.33333300000004H768a42.666667 42.666667 0 0 0 0 85.333334h125.653333A384.170667 384.170667 0 0 1 554.666667 765.653333V640a42.666667 42.666667 0 0 0-85.333334 0V765.653333A384.170667 384.170667 0 0 1 130.346667 426.666667H256a42.666667 42.666667 0 0 0 0-85.333334H130.346667A384.170667 384.170667 0 0 1 469.333333 2.346667000000025zM512-85.33333300000004C252.8-85.33333300000004 42.666667 124.79999999999995 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="disc" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM512 213.333333a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="delete" unicode="" d="M896 768a128 128 0 0 0 128-128v-512a128 128 0 0 0-128-128H341.333333a42.666667 42.666667 0 0 0-32.128 14.549333l-298.666666 341.333334a42.666667 42.666667 0 0 0 0 56.234666l298.666666 341.333334A42.666667 42.666667 0 0 0 341.333333 768h554.666667z m0-682.666667a42.666667 42.666667 0 0 1 42.666667 42.666667V640a42.666667 42.666667 0 0 1-42.666667 42.666667H360.704l-261.333333-298.666667 261.333333-298.666667H896zM737.834667 542.165333l-256-256a42.666667 42.666667 0 0 1 60.330666-60.330666l256 256a42.666667 42.666667 0 1 1-60.330666 60.330666zM481.834667 481.834667l256-256a42.666667 42.666667 0 0 1 60.330666 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330666-60.330666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="download-cloud" unicode="" d="M512.468907 17.663999999999987l-140.501334 140.501333a42.666667 42.666667 0 1 1-60.330666-60.330666l170.666666-170.666667a42.666667 42.666667 0 0 1 60.330667 0l170.666667 170.666667a42.666667 42.666667 0 0 1-60.330667 60.330666L512.468907 17.663999999999987zM469.80224 341.33333300000004v-384a42.666667 42.666667 0 0 1 85.333333 0v384a42.666667 42.666667 0 0 1-85.333333 0zM427.988907 765.9946669999999a384 384 0 0 1-331.477334-635.989334 42.666667 42.666667 0 0 1 63.914667 56.576A298.666667 298.666667 0 1 0 673.32224 458.666667a42.666667 42.666667 0 0 1 41.344-32.042667H768.468907a170.666667 170.666667 0 0 0 98.346666-310.272 42.666667 42.666667 0 0 1 49.066667-69.802667A256 256 0 0 1 768.468907 512h-22.101334a384 384 0 0 1-318.293333 253.994667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="download" unicode="" d="M85.333333 170.666667v-128a128 128 0 0 1 128-128h597.333334a128 128 0 0 1 128 128v128a42.666667 42.666667 0 0 1-85.333334 0v-128a42.666667 42.666667 0 0 0-42.666666-42.666667H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666667v128a42.666667 42.666667 0 0 1-85.333334 0zM512 273.664l-140.501333 140.501333a42.666667 42.666667 0 1 1-60.330667-60.330666l170.666667-170.666667a42.666667 42.666667 0 0 1 60.330666 0l170.666667 170.666667a42.666667 42.666667 0 0 1-60.330667 60.330666L512 273.664zM469.333333 810.666667v-597.333334a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="droplet" unicode="" d="M301.098667 501.034667a290.986667 290.986667 0 0 1-64.853334-320.64c46.250667-109.952 155.136-181.674667 275.968-181.674667s229.717333 71.68 275.968 181.674667a290.986667 290.986667 0 0 1-64.853333 320.64L512 709.162667 301.098667 501.034667z m241.066666 297.301333l241.493334-237.866667a374.144 374.144 0 0 0 83.328-412.245333C807.594667 6.869333 667.562667-85.333333 512.213333-85.333333c-155.306667 0-295.381333 92.16-354.773333 233.557333a374.144 374.144 0 0 0 83.285333 412.202667l241.066667 237.909333a43.093333 43.093333 0 0 0 60.373333 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="edit-" unicode="" d="M170.666667 195.669333V42.666667h153.002666l512 512L682.666667 707.669333l-512-512zM712.832 798.165333l213.333333-213.333333a42.666667 42.666667 0 0 0 0-60.330667l-554.666666-554.666666A42.666667 42.666667 0 0 0 341.333333-42.666667H128a42.666667 42.666667 0 0 0-42.666667 42.666667v213.333333a42.666667 42.666667 0 0 0 12.501334 30.165334l554.666666 554.666666a42.666667 42.666667 0 0 0 60.330667 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="edit" unicode="" d="M810.666667 270.506667V42.666667a42.666667 42.666667 0 0 0-42.666667-42.666667H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667h227.84a42.666667 42.666667 0 1 1 0 85.333333H170.666667a128 128 0 0 1-128-128v-597.333333a128 128 0 0 1 128-128h597.333333a128 128 0 0 1 128 128v227.84a42.666667 42.666667 0 0 1-85.333333 0zM384 366.336V256h110.336l384 384L768 750.336l-384-384z m414.165333 474.496l170.666667-170.666667a42.666667 42.666667 0 0 0 0-60.330666l-426.666667-426.666667A42.666667 42.666667 0 0 0 512 170.666667H341.333333a42.666667 42.666667 0 0 0-42.666666 42.666666v170.666667a42.666667 42.666667 0 0 0 12.501333 30.165333l426.666667 426.666667a42.666667 42.666667 0 0 0 60.330666 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="edit-1" unicode="" d="M170.666667 323.669333V213.333333h110.336l426.666666 426.666667L597.333333 750.336l-426.666666-426.666667zM627.498667 840.832l170.666666-170.666667a42.666667 42.666667 0 0 0 0-60.330666l-469.333333-469.333334A42.666667 42.666667 0 0 0 298.666667 128H128a42.666667 42.666667 0 0 0-42.666667 42.666667v170.666666a42.666667 42.666667 0 0 0 12.501334 30.165334l469.333333 469.333333a42.666667 42.666667 0 0 0 60.330667 0zM128-85.333333h768a42.666667 42.666667 0 0 1 0 85.333333H128a42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="external-link" unicode="" d="M725.333333 341.333333v-256a42.666667 42.666667 0 0 0-42.666666-42.666666H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666666V554.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h256a42.666667 42.666667 0 0 1 0 85.333334H213.333333a128 128 0 0 1-128-128v-469.333334a128 128 0 0 1 128-128h469.333334a128 128 0 0 1 128 128v256a42.666667 42.666667 0 0 1-85.333334 0zM853.333333 725.333333v-213.333333a42.666667 42.666667 0 0 1 85.333334 0V768a42.666667 42.666667 0 0 1-42.666667 42.666667h-256a42.666667 42.666667 0 0 1 0-85.333334h213.333333zM456.832 268.501333l469.333333 469.333334a42.666667 42.666667 0 1 1-60.330666 60.330666l-469.333334-469.333333a42.666667 42.666667 0 0 1 60.330667-60.330667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="eye" unicode="" d="M109.844053 353.834667c24.533333-37.973333 53.504-75.989333 86.613334-111.36C289.172053 143.744 394.900053 85.333333 512.020053 85.333333c117.12 0 222.890667 58.368 315.52 157.184A789.888 789.888 0 0 1 932.713387 384a789.888 789.888 0 0 1-105.130667 141.482667C734.91072 624.298667 629.140053 682.666667 512.020053 682.666667 394.900053 682.666667 289.129387 624.298667 196.500053 525.482667A789.888 789.888 0 0 1 91.32672 384c5.376-9.301333 11.52-19.413333 18.474667-30.165333zM4.54272 403.072c5.973333 11.989333 17.237333 32 33.621333 57.429333a874.325333 874.325333 0 0 0 96.042667 123.306667C241.556053 698.410667 367.80672 768 512.020053 768c144.213333 0 270.464-69.632 377.813334-184.149333a874.325333 874.325333 0 0 0 96-123.349334c16.426667-25.429333 27.690667-45.44 33.706666-57.429333a42.666667 42.666667 0 0 0 0-38.144c-6.016-11.989333-17.28-32-33.706666-57.429333a874.325333 874.325333 0 0 0-96-123.306667C782.484053 69.589333 656.233387 0 512.020053 0c-144.213333 0-270.464 69.632-377.813333 184.149333a874.325333 874.325333 0 0 0-96 123.349334 648.021333 648.021333 0 0 0-33.706667 57.429333 42.666667 42.666667 0 0 0 0 38.144zM512.020053 213.333333a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="feather" unicode="" d="M230.997333 42.66666699999996l-115.498666-115.498667a42.666667 42.666667 0 1 0-60.330667 60.330667L170.666667 102.99733300000003V448a42.666667 42.666667 0 0 0 12.501333 30.165333l288 288a298.794667 298.794667 0 0 0 422.613333-422.570666l-287.573333-288.426667A42.666667 42.666667 0 0 0 576 42.66666699999996H230.997333z m256 256l241.365334-0.085334 104.96 105.301334a213.504 213.504 0 1 1-301.824 301.952L256 430.336v-242.005333l396.501333 396.501333a42.666667 42.666667 0 0 0 60.330667-60.330667L486.997333 298.66666699999996z m156.373334-85.333334H401.664l-85.333333-85.333333h241.92l85.12 85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="facebook" unicode="" d="M384 597.333333a256 256 0 0 0 256 256h128a42.666667 42.666667 0 0 0 42.666667-42.666666v-170.666667a42.666667 42.666667 0 0 0-42.666667-42.666667h-128v-85.333333h128a42.666667 42.666667 0 0 0 41.386667-53.034667l-42.666667-170.666666A42.666667 42.666667 0 0 0 725.333333 256h-85.333333v-298.666667a42.666667 42.666667 0 0 0-42.666667-42.666666h-170.666666a42.666667 42.666667 0 0 0-42.666667 42.666666v298.666667H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667v170.666666a42.666667 42.666667 0 0 0 42.666667 42.666667h85.333333V597.333333z m341.333333 170.666667h-85.333333a170.666667 170.666667 0 0 1-170.666667-170.666667v-128a42.666667 42.666667 0 0 0-42.666666-42.666666H341.333333v-85.333334h85.333334a42.666667 42.666667 0 0 0 42.666666-42.666666v-298.666667h85.333334v298.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h94.72l21.333334 85.333334H597.333333a42.666667 42.666667 0 0 0-42.666666 42.666666V597.333333a85.333333 85.333333 0 0 0 85.333333 85.333334h85.333333V768z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="file-minus" unicode="" d="M554.666667 768H256a42.666667 42.666667 0 0 1-42.666667-42.666667v-682.666666a42.666667 42.666667 0 0 1 42.666667-42.666667h512a42.666667 42.666667 0 0 1 42.666667 42.666667V512h-213.333334a42.666667 42.666667 0 0 0-42.666666 42.666667V768z m85.333333-60.330667V597.333333h110.336L640 707.669333zM597.333333 853.333333a42.666667 42.666667 0 0 0 30.165334-12.501333l256-256A42.666667 42.666667 0 0 0 896 554.666667v-512a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128V725.333333a128 128 0 0 0 128 128h341.333333zM384 213.33333300000004a42.666667 42.666667 0 0 0 0 85.333334h256a42.666667 42.666667 0 0 0 0-85.333334H384z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="eye-off" unicode="" d="M284.838065 603.144984a42.644793 42.644793 0 1 1-51.77078 67.805221A829.441232 829.441232 0 0 1 5.642602 403.908509a42.644793 42.644793 0 0 1-0.554382-39.23321c5.970271-11.983187 17.228497-31.983595 33.604097-57.399892 27.164733-42.005122 59.148329-83.967598 95.99343-123.243453C241.937402 69.488038 368.123346-0.06562 512.262748-0.06562a472.546956 472.546956 0 0 1 279.152818 96.590457 42.644793 42.644793 0 1 1-51.68549 67.805222A386.788277 386.788277 0 0 0 511.580431 85.223967c-116.420286 0-222.094084 58.338077-314.718575 157.103419a789.483061 789.483061 0 0 0-104.948837 141.282201 744.151646 744.151646 0 0 0 192.925046 219.535397z m571.78139-327.981107a42.644793 42.644793 0 0 1 65.246534-54.926494 831.573472 831.573472 0 0 1 97.102195 143.414441 42.644793 42.644793 0 0 1 0.511737 39.14792c-5.970271 11.983187-17.228497 31.983595-33.604097 57.399892a873.877107 873.877107 0 0 1-95.99343 123.243453C782.588094 697.987004 656.40215 767.540662 512.262748 767.540662a431.352086 431.352086 0 0 1-99.277079-11.343515 42.644793 42.644793 0 0 1 19.446026-83.072057A346.275723 346.275723 0 0 0 512.177458 682.251075c117.145248 0 222.861691-58.338077 315.443537-157.103419a789.483061 789.483061 0 0 0 105.034127-141.324845 746.283885 746.283885 0 0 0-76.035667-108.658934z m-285.165734 47.250431a85.289587 85.289587 0 1 0-120.514186 120.514187 42.644793 42.644793 0 1 1-58.167498 62.431977 170.579174 170.579174 0 1 1 241.113662-241.113662 42.644793 42.644793 0 1 1-62.431978 58.167498zM13.020151 822.68038l938.185456-938.185456a42.644793 42.644793 0 0 1 60.299738 60.299738l-938.185456 938.185456A42.644793 42.644793 0 1 1 13.020151 822.68038z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="fast-forward" unicode="" d="M580.864 51.626667A42.666667 42.666667 0 0 0 512 85.333333V682.666667a42.666667 42.666667 0 0 0 68.864 33.706666l384-298.666666a42.666667 42.666667 0 0 0 0-67.413334l-384-298.666666zM869.12 384L597.333333 595.413333v-422.826666L869.162667 384zM111.530667 51.626667A42.666667 42.666667 0 0 0 42.666667 85.333333V682.666667a42.666667 42.666667 0 0 0 68.864 33.706666l384-298.666666a42.666667 42.666667 0 0 0 0-67.413334l-384-298.666666zM399.786667 384L128 595.413333v-422.826666L399.829333 384z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="file-text" unicode="" d="M554.666667 768H256a42.666667 42.666667 0 0 1-42.666667-42.666667v-682.666666a42.666667 42.666667 0 0 1 42.666667-42.666667h512a42.666667 42.666667 0 0 1 42.666667 42.666667V512h-213.333334a42.666667 42.666667 0 0 0-42.666666 42.666667V768z m85.333333-60.330667V597.333333h110.336L640 707.669333zM597.333333 853.333333a42.666667 42.666667 0 0 0 30.165334-12.501333l256-256A42.666667 42.666667 0 0 0 896 554.666667v-512a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128V725.333333a128 128 0 0 0 128 128h341.333333z m85.333334-469.333333a42.666667 42.666667 0 0 0 0-85.333333H341.333333a42.666667 42.666667 0 0 0 0 85.333333h341.333334z m0-170.666667a42.666667 42.666667 0 0 0 0-85.333333H341.333333a42.666667 42.666667 0 0 0 0 85.333333h341.333334z m-256 341.333334a42.666667 42.666667 0 0 0 0-85.333334H341.333333a42.666667 42.666667 0 1 0 0 85.333334h85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="film" unicode="" d="M42.666667 717.738667A135.68 135.68 0 0 0 178.261333 853.333333h667.477334A135.68 135.68 0 0 0 981.333333 717.738667v-667.477334A135.68 135.68 0 0 0 845.738667-85.33333300000004H178.261333A135.68 135.68 0 0 0 42.666667 50.261333000000036V717.738667zM341.333333 768v-341.333333h341.333334V768H341.333333z m0-768h341.333334v341.333333H341.333333v-341.333333z m554.666667 426.666667V554.666667h-128v-128h128z m0-85.333334h-128v-128h128v128zM128 341.33333300000004v-128h128v128H128z m0 85.333334h128V554.666667H128v-128z m640 341.333333v-128h128V717.738667A50.346667 50.346667 0 0 1 845.738667 768H768z m128-640h-128v-128h77.738667A50.346667 50.346667 0 0 1 896 50.261333000000036V128zM256 768H178.261333A50.346667 50.346667 0 0 1 128 717.738667V640h128V768z m0-768v128H128v-77.738667C128 22.61333300000001 150.570667 0 178.261333 0H256z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="file" unicode="" d="M554.666667 853.333333a42.666667 42.666667 0 0 0 30.165333-12.501333l298.666667-298.666667A42.666667 42.666667 0 0 0 896 512v-469.333333a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128V725.333333a128 128 0 0 0 128 128h298.666667z m-42.666667-341.333333V768H256a42.666667 42.666667 0 0 1-42.666667-42.666667v-682.666666a42.666667 42.666667 0 0 1 42.666667-42.666667h512a42.666667 42.666667 0 0 1 42.666667 42.666667V469.333333h-256a42.666667 42.666667 0 0 0-42.666667 42.666667z m85.333333 195.669333V554.666667h153.002667L597.333333 707.669333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="file-plus" unicode="" d="M554.666667 768H256a42.666667 42.666667 0 0 1-42.666667-42.666667v-682.666666a42.666667 42.666667 0 0 1 42.666667-42.666667h512a42.666667 42.666667 0 0 1 42.666667 42.666667V512h-213.333334a42.666667 42.666667 0 0 0-42.666666 42.666667V768z m85.333333-60.330667V597.333333h110.336L640 707.669333zM597.333333 853.333333a42.666667 42.666667 0 0 0 30.165334-12.501333l256-256A42.666667 42.666667 0 0 0 896 554.666667v-512a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128V725.333333a128 128 0 0 0 128 128h341.333333z m-128-640H384a42.666667 42.666667 0 0 0 0 85.333334h85.333333v85.333333a42.666667 42.666667 0 0 0 85.333334 0v-85.333333h85.333333a42.666667 42.666667 0 0 0 0-85.333334h-85.333333v-85.333333a42.666667 42.666667 0 0 0-85.333334 0v85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="folder" unicode="" d="M170.666667 725.333333a42.666667 42.666667 0 0 1-42.666667-42.666666v-597.333334a42.666667 42.666667 0 0 1 42.666667-42.666666h682.666666a42.666667 42.666667 0 0 1 42.666667 42.666666V554.666667a42.666667 42.666667 0 0 1-42.666667 42.666666h-384a42.666667 42.666667 0 0 0-35.498666 18.986667L361.173333 725.333333H170.666667z m682.666666-42.666666a128 128 0 0 0 128-128v-469.333334a128 128 0 0 0-128-128H170.666667a128 128 0 0 0-128 128V682.666667a128 128 0 0 0 128 128h213.333333a42.666667 42.666667 0 0 0 35.498667-18.986667L492.16 682.666667H853.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="filter" unicode="" d="M384 348.757333l-331.264 391.68A42.666667 42.666667 0 0 0 85.333333 810.666667h853.333334a42.666667 42.666667 0 0 0 32.597333-70.229334L640 348.757333V0a42.666667 42.666667 0 0 0-61.738667-38.144l-170.666666 85.333333A42.666667 42.666667 0 0 0 384 85.33333300000004v263.424zM177.28 725.333333l281.984-333.397333a42.666667 42.666667 0 0 0 10.069333-27.562667v-252.672l85.333334-42.666666V364.373333a42.666667 42.666667 0 0 0 10.069333 27.562667L846.72 725.333333H177.28z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="flag" unicode="" d="M128-42.66666699999996V768a42.666667 42.666667 0 0 0 12.501333 30.165333c9.386667 9.386667 26.197333 20.608 51.626667 30.762667C230.698667 844.373333 280.064 853.333333 341.333333 853.333333c60.458667 0 101.674667-11.776 186.496-45.738666C603.008 777.557333 636.458667 768 682.666667 768c50.730667 0 89.344 7.04 117.504 18.261333 14.549333 5.845333 21.674667 10.624 22.997333 11.946667C850.048 825.045333 896 805.973333 896 768v-512a42.666667 42.666667 0 0 0-12.501333-30.165333c-9.386667-9.386667-26.197333-20.608-51.626667-30.762667-38.528-15.445333-87.893333-24.405333-149.205333-24.405333-60.458667 0-101.674667 11.776-186.496 45.738666C420.992 246.44266700000003 387.541333 256 341.333333 256c-50.730667 0-89.344-7.04-117.504-18.261333a174.677333 174.677333 0 0 1-10.496-4.608V-42.66666699999996a42.666667 42.666667 0 0 0-85.333333 0z m213.333333 384c60.458667 0 101.674667-11.776 186.496-45.738666 75.178667-30.037333 108.629333-39.594667 154.837334-39.594667 50.730667 0 89.344 7.04 117.504 18.261333 4.053333 1.664 7.552 3.2 10.496 4.608v420.693334c-34.986667-10.794667-77.397333-16.896-128-16.896-60.458667 0-101.674667 11.776-186.496 45.738666C420.992 758.442667 387.541333 768 341.333333 768c-50.730667 0-89.344-7.04-117.504-18.261333A174.677333 174.677333 0 0 1 213.333333 745.130667v-420.693334C248.32 335.23199999999997 290.730667 341.33333300000004 341.333333 341.33333300000004z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="globe" unicode="" d="M512-85.33333300000004C252.8-85.33333300000004 42.666667 124.79999999999995 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m211.2 426.666666a695.466667 695.466667 0 0 0-114.176-328.96A384.341333 384.341333 0 0 1 893.653333 341.33333300000004H723.2z m-422.272 0H130.346667a384.341333 384.341333 0 0 1 284.629333-328.96A696.789333 696.789333 0 0 0 300.928 341.33333300000004z m308.096 414.293334A696.789333 696.789333 0 0 0 723.072 426.666667h170.581333a384.341333 384.341333 0 0 1-284.629333 328.96z m-194.048 0A384.341333 384.341333 0 0 1 130.346667 426.666667H300.8a695.466667 695.466667 0 0 0 114.176 328.96zM386.474667 341.33333300000004A610.133333 610.133333 0 0 1 512 23.46666700000003 609.621333 609.621333 0 0 1 637.653333 341.33333300000004H386.474667z m251.050666 85.333334A610.133333 610.133333 0 0 1 512 744.533333 609.621333 609.621333 0 0 1 386.346667 426.666667h251.178666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="grid" unicode="" d="M170.666667 512h213.333333V725.333333H170.666667v-213.333333zM128 810.666667h298.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-298.666667a42.666667 42.666667 0 0 0-42.666666-42.666666H128a42.666667 42.666667 0 0 0-42.666667 42.666666V768a42.666667 42.666667 0 0 0 42.666667 42.666667zM640 512h213.333333V725.333333h-213.333333v-213.333333z m-42.666667 298.666667h298.666667a42.666667 42.666667 0 0 0 42.666667-42.666667v-298.666667a42.666667 42.666667 0 0 0-42.666667-42.666666h-298.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V768a42.666667 42.666667 0 0 0 42.666666 42.666667zM640 42.666667h213.333333v213.333333h-213.333333v-213.333333z m-42.666667 298.666666h298.666667a42.666667 42.666667 0 0 0 42.666667-42.666666v-298.666667a42.666667 42.666667 0 0 0-42.666667-42.666667h-298.666667a42.666667 42.666667 0 0 0-42.666666 42.666667v298.666667a42.666667 42.666667 0 0 0 42.666666 42.666666zM170.666667 42.666667h213.333333v213.333333H170.666667v-213.333333z m-42.666667 298.666666h298.666667a42.666667 42.666667 0 0 0 42.666666-42.666666v-298.666667a42.666667 42.666667 0 0 0-42.666666-42.666667H128a42.666667 42.666667 0 0 0-42.666667 42.666667v298.666667a42.666667 42.666667 0 0 0 42.666667 42.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="heart" unicode="" d="M527.061333 729.472A277.333333 277.333333 0 0 0 1000.618667 533.333333a277.333333 277.333333 0 0 0-81.28-196.138666l-377.173334-377.173334a42.666667 42.666667 0 0 0-60.330666 0l-377.173334 377.173334a277.376 277.376 0 0 0 392.277334 392.277333l15.061333-15.061333 15.061333 15.061333z m286.72-377.173333l45.226667 45.226666a192 192 0 0 1-135.808 327.893334 192 192 0 0 1-135.808-56.32l-45.226667-45.226667a42.666667 42.666667 0 0 0-60.330666 0l-45.226667 45.226667a192.042667 192.042667 0 0 1-271.616-271.573334L512 50.517333l301.781333 301.781334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="home" unicode="" d="M101.802667 545.7066669999999l384 298.666666a42.666667 42.666667 0 0 0 52.394666 0l384-298.666666A42.666667 42.666667 0 0 0 938.666667 512v-469.333333a128 128 0 0 0-128-128H213.333333a128 128 0 0 0-128 128V512a42.666667 42.666667 0 0 0 16.469334 33.706667zM682.666667 0h128a42.666667 42.666667 0 0 1 42.666666 42.666667V491.093333l-341.333333 265.514667-341.333333-265.472V42.66666699999996a42.666667 42.666667 0 0 1 42.666666-42.666667h128v384a42.666667 42.666667 0 0 0 42.666667 42.666667h256a42.666667 42.666667 0 0 0 42.666667-42.666667v-384z m-256 0h170.666666v341.333333h-170.666666v-341.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="github" unicode="" d="M371.754667 83.541333c-91.818667-27.562667-128.896-12.970667-174.805334 43.861334-3.072 3.797333-15.786667 19.968-19.2 24.192-27.477333 33.92-49.408 52.309333-82.048 60.458666a42.666667 42.666667 0 0 1-20.736-82.773333c9.813333-2.474667 19.712-10.752 36.394667-31.36 2.986667-3.626667 15.701333-19.797333 19.2-24.106667 66.304-82.133333 138.026667-110.293333 265.685333-72.021333a42.666667 42.666667 0 0 1-24.490666 81.749333zM960 489.813333a274.773333 274.773333 0 0 1-58.837333 169.856 258.986667 258.986667 0 0 1-12.458667 167.808 42.666667 42.666667 0 0 1-27.093333 24.106667 64.085333 64.085333 0 0 1-8.96 1.877333c-40.064 5.802667-98.858667-10.026667-177.621334-59.989333a613.546667 613.546667 0 0 1-283.392 0C312.874667 843.434667 254.08 859.306667 213.973333 853.461333a64.085333 64.085333 0 0 1-8.96-1.877333 42.666667 42.666667 0 0 1-27.050666-24.106667 258.986667 258.986667 0 0 1-12.458667-167.808A274.773333 274.773333 0 0 1 106.666667 488.32c0-196.778667 87.893333-292.949333 247.466666-329.6a186.453333 186.453333 0 0 1-12.714666-81.92L341.333333-85.333333a42.666667 42.666667 0 0 1 85.333334 0v165.12c-2.133333 31.616 8.106667 59.776 28.117333 80.426666a42.666667 42.666667 0 0 1-25.429333 71.978667C267.52 252.330667 192 315.776 192 488.533333a189.568 189.568 0 0 0 52.224 131.84 42.666667 42.666667 0 0 1 9.088 44.373334 173.653333 173.653333 0 0 0-5.973333 102.058666c2.986667-0.64 6.272-1.493333 9.856-2.56 27.52-7.893333 61.781333-24.490667 103.04-52.181333a42.666667 42.666667 0 0 1 34.944-5.717333 528.213333 528.213333 0 0 0 276.309333 0 42.666667 42.666667 0 0 1 34.944 5.717333c41.258667 27.690667 75.52 44.288 103.04 52.224 3.584 1.024 6.826667 1.877333 9.813333 2.56a173.653333 173.653333 0 0 0-5.930666-102.101333 42.666667 42.666667 0 0 1 9.088-44.373334A189.44 189.44 0 0 0 874.666667 489.813333c0-174.421333-76.032-238.336-236.8-256.256a42.666667 42.666667 0 0 1-25.941334-72.106666 101.12 101.12 0 0 0 28.202667-78.336L640-85.333333a42.666667 42.666667 0 0 1 85.333333 0v165.12a177.237333 177.237333 0 0 1-12.373333 79.658666c158.72 35.2 247.04 132.266667 247.04 330.368z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="image" unicode="" d="M213.333333-42.66666699999996h-0.213333A127.786667 127.786667 0 0 0 85.333333 85.12V682.88A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.66666699999996H213.333333z m640 401.664v323.84A42.453333 42.453333 0 0 1 810.88 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88v-597.76c0-18.261333 11.52-33.792 27.648-39.808L652.501333 499.498667a42.666667 42.666667 0 0 0 60.330667 0L853.333333 358.997333z m0-120.661333l-170.666666 170.666667L316.330667 42.66666699999996h494.506666c23.466667 0 42.496 18.986667 42.496 42.453333v153.173333zM362.666667 426.666667a106.666667 106.666667 0 1 0 0 213.333333 106.666667 106.666667 0 0 0 0-213.333333z m0 85.333333a21.333333 21.333333 0 1 1 0 42.666667 21.333333 21.333333 0 0 1 0-42.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="inbox" unicode="" d="M311.466667 768h401.066666a128 128 0 0 0 117.077334-76.117333l148.053333-333.226667A42.666667 42.666667 0 0 0 981.333333 341.33333300000004v-213.333333a128 128 0 0 0-128-128H170.666667a128 128 0 0 0-128 128v213.333333a42.666667 42.666667 0 0 0 3.669333 17.322667l148.053333 333.226667A128 128 0 0 0 311.466667 768z m561.536-384l-121.386667 273.28A42.666667 42.666667 0 0 1 712.533333 682.666667H311.466667a42.666667 42.666667 0 0 1-39.082667-25.386667L151.04 384H341.333333a42.666667 42.666667 0 0 0 35.498667-18.986667L449.493333 256h125.013334l72.661333 109.013333A42.666667 42.666667 0 0 0 682.666667 384h190.336zM896 128v170.666667h-190.506667l-72.661333-109.013334A42.666667 42.666667 0 0 0 597.333333 170.66666699999996h-170.666666a42.666667 42.666667 0 0 0-35.498667 18.986666L318.506667 298.66666699999996H128v-170.666667a42.666667 42.666667 0 0 1 42.666667-42.666667h682.666666a42.666667 42.666667 0 0 1 42.666667 42.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="layers" unicode="" d="M492.928 848.810667a42.666667 42.666667 0 0 0 38.144 0l426.666667-213.333334a42.666667 42.666667 0 0 0 0-76.288l-426.666667-213.333333a42.666667 42.666667 0 0 0-38.144 0l-426.666667 213.333333a42.666667 42.666667 0 0 0 0 76.288l426.666667 213.333334zM180.736 597.333333L512 431.701333 843.264 597.333333 512 762.965333 180.736 597.333333zM104.405333 208.810667a42.666667 42.666667 0 0 1-38.144-76.288l426.666667-213.333334a42.666667 42.666667 0 0 1 38.144 0l426.666667 213.333334a42.666667 42.666667 0 0 1-38.144 76.288L512 5.034667l-407.594667 203.776zM104.405333 422.144a42.666667 42.666667 0 0 1-38.144-76.288l426.666667-213.333333a42.666667 42.666667 0 0 1 38.144 0l426.666667 213.333333a42.666667 42.666667 0 0 1-38.144 76.288L512 218.368l-407.594667 203.776z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="info" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM554.666667 213.333333v170.666667a42.666667 42.666667 0 0 1-85.333334 0v-170.666667a42.666667 42.666667 0 0 1 85.333334 0zM512 554.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="instagram" unicode="" d="M128 597.546667v-427.093334A170.453333 170.453333 0 0 1 298.453333 0h427.093334A170.453333 170.453333 0 0 1 896 170.453333V597.546667A170.453333 170.453333 0 0 1 725.546667 768H298.453333A170.453333 170.453333 0 0 1 128 597.546667z m-85.333333 0A255.786667 255.786667 0 0 0 298.453333 853.333333h427.093334A255.786667 255.786667 0 0 0 981.333333 597.546667v-427.093334A255.786667 255.786667 0 0 0 725.546667-85.333333H298.453333A255.786667 255.786667 0 0 0 42.666667 170.453333V597.546667zM640.426667 404.608a128 128 0 1 1-253.184-37.546667 128 128 0 0 1 253.226666 37.546667z m84.48 12.544a213.333333 213.333333 0 1 0-422.101334-62.592 213.333333 213.333333 0 0 0 422.058667 62.592zM725.333333 640m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="layout" unicode="" d="M85.333333 682.88A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.66666699999996H213.12A127.786667 127.786667 0 0 0 85.333333 85.12V682.88zM853.333333 554.666667V682.88A42.453333 42.453333 0 0 1 810.88 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88V554.666667h682.666666z m0-85.333334H426.666667v-426.666666h384.213333c23.466667 0 42.453333 18.986667 42.453333 42.453333V469.333333zM341.333333 42.66666699999996V469.333333H170.666667v-384.213333c0-23.466667 18.986667-42.453333 42.453333-42.453333H341.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="link-" unicode="" d="M640 554.666667h128a170.666667 170.666667 0 1 0 0-341.333334h-128a42.666667 42.666667 0 0 1 0-85.333333h128a256 256 0 1 1 0 512h-128a42.666667 42.666667 0 0 1 0-85.333333z m-256-341.333334H256a170.666667 170.666667 0 0 0 0 341.333334h128a42.666667 42.666667 0 1 1 0 85.333333H256a256 256 0 1 1 0-512h128a42.666667 42.666667 0 0 1 0 85.333333zM341.333333 341.333333h341.333334a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="life-buoy" unicode="" d="M272.298667 83.96799999999996A382.378667 382.378667 0 0 1 512 0a382.378667 382.378667 0 0 1 239.701333 83.968l-122.026666 122.026667A212.352 212.352 0 0 0 512 170.66666699999996a212.352 212.352 0 0 0-117.632 35.328l-122.026667-122.026667z m-60.330667 60.330667l122.026667 122.026666A212.352 212.352 0 0 0 298.666667 384c0 43.52 13.013333 83.925333 35.328 117.632l-122.026667 122.026667A382.378667 382.378667 0 0 1 128 384c0-90.666667 31.402667-173.994667 83.968-239.701333z m60.330667 539.733333l122.026666-122.026667A212.352 212.352 0 0 0 512 597.333333c43.52 0 83.925333-13.013333 117.632-35.328l122.026667 122.026667A382.378667 382.378667 0 0 1 512 768a382.378667 382.378667 0 0 1-239.701333-83.968z m539.733333-60.330667l-122.026667-122.026666c22.314667-33.749333 35.328-74.197333 35.328-117.674667 0-43.52-13.013333-83.925333-35.328-117.632l122.026667-122.026667A382.378667 382.378667 0 0 1 896 384a382.378667 382.378667 0 0 1-83.968 239.701333zM512-85.33333300000004C252.8-85.33333300000004 42.666667 124.79999999999995 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 341.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="link" unicode="" d="M392.533333 315.776a256 256 0 0 1 386.005334-27.648l128 128a256 256 0 1 1-361.472 362.496l-73.813334-73.386667a42.666667 42.666667 0 1 1 60.16-60.501333l73.386667 72.96a170.538667 170.538667 0 0 0 238.805333-2.517333 170.666667 170.666667 0 0 0 2.090667-239.232l-127.488-127.488A170.666667 170.666667 0 0 0 460.8 366.933333a42.666667 42.666667 0 1 1-68.352-51.114666zM631.466667 452.224a256 256 0 0 1-386.005334 27.648l-128-128a256 256 0 1 1 361.472-362.496l73.472 73.472a42.666667 42.666667 0 0 1-60.330666 60.330667l-72.96-72.96c-66.432-64.170667-172.885333-63.232-238.72 2.602666a170.666667 170.666667 0 0 0-2.090667 239.232l127.488 127.488a170.666667 170.666667 0 0 0 257.365333-18.432 42.666667 42.666667 0 1 1 68.352 51.114667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="log-in" unicode="" d="M597.333333-85.333333h213.333334a128 128 0 0 1 128 128V725.333333a128 128 0 0 1-128 128h-213.333334a42.666667 42.666667 0 0 1 0-85.333333h213.333334a42.666667 42.666667 0 0 0 42.666666-42.666667v-682.666666a42.666667 42.666667 0 0 0-42.666666-42.666667h-213.333334a42.666667 42.666667 0 0 1 0-85.333333zM439.168 243.498667a42.666667 42.666667 0 0 1 60.330667-60.330667l170.666666 170.666667a42.666667 42.666667 0 0 1 0 60.330666l-170.666666 170.666667a42.666667 42.666667 0 0 1-60.330667-60.330667L579.669333 384l-140.501333-140.501333zM640 426.666667H128a42.666667 42.666667 0 0 1 0-85.333334h512a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="list" unicode="" d="M341.333333 597.333333h554.666667a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 1 1 0-85.333334zM341.333333 341.333333h554.666667a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334zM341.333333 85.333333h554.666667a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334zM128 640m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM128 384m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM128 128m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="lock" unicode="" d="M256 469.333333V597.333333a256 256 0 1 0 512 0v-128h42.88A127.957333 127.957333 0 0 0 938.666667 341.674667v-299.349334A127.701333 127.701333 0 0 0 810.88-85.33333300000004H213.12A127.957333 127.957333 0 0 0 85.333333 42.325333v299.349334A127.701333 127.701333 0 0 0 213.12 469.333333H256z m-85.333333-127.658666v-299.349334c0-23.168 19.157333-42.325333 42.453333-42.325333h597.76c23.466667 0 42.453333 18.944 42.453333 42.325333v299.349334a42.624 42.624 0 0 1-42.453333 42.325333H213.12a42.368 42.368 0 0 1-42.453333-42.325333z m170.666666 127.786666h341.333334V597.333333a170.666667 170.666667 0 1 1-341.333334 0v-127.872z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="log-out" unicode="" d="M426.666667 0H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666667V725.333333a42.666667 42.666667 0 0 0 42.666666 42.666667h213.333334a42.666667 42.666667 0 0 1 0 85.333333H213.333333a128 128 0 0 1-128-128v-682.666666a128 128 0 0 1 128-128h213.333334a42.666667 42.666667 0 0 1 0 85.333333zM695.168 243.498667a42.666667 42.666667 0 0 1 60.330667-60.330667l170.666666 170.666667a42.666667 42.666667 0 0 1 0 60.330666l-170.666666 170.666667a42.666667 42.666667 0 0 1-60.330667-60.330667L835.669333 384l-140.501333-140.501333zM896 426.666667H384a42.666667 42.666667 0 0 1 0-85.333334h512a42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="loader" unicode="" d="M469.333333 810.666667v-170.666667a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0zM469.333333 128v-170.666667a42.666667 42.666667 0 0 1 85.333334 0v170.666667a42.666667 42.666667 0 0 1-85.333334 0zM180.181333 655.488l120.746667-120.746667a42.666667 42.666667 0 0 1 60.330667 60.330667l-120.746667 120.746667a42.666667 42.666667 0 0 1-60.330667-60.330667zM662.741333 172.928l120.746667-120.746667a42.666667 42.666667 0 0 1 60.330667 60.330667l-120.746667 120.746667a42.666667 42.666667 0 0 1-60.330667-60.330667zM85.333333 341.333333h170.666667a42.666667 42.666667 0 0 1 0 85.333334H85.333333a42.666667 42.666667 0 0 1 0-85.333334zM768 341.333333h170.666667a42.666667 42.666667 0 0 1 0 85.333334h-170.666667a42.666667 42.666667 0 0 1 0-85.333334zM240.512 52.181333l120.746667 120.746667a42.666667 42.666667 0 0 1-60.330667 60.330667l-120.746667-120.746667a42.666667 42.666667 0 0 1 60.330667-60.330667zM723.072 534.741333l120.746667 120.746667a42.666667 42.666667 0 1 1-60.330667 60.330667l-120.746667-120.746667a42.666667 42.666667 0 1 1 60.330667-60.330667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="mail" unicode="" d="M170.666667 768h682.666666c70.485333 0 128-57.514667 128-128v-512c0-70.485333-57.514667-128-128-128H170.666667c-70.485333 0-128 57.514667-128 128V640c0 70.485333 57.514667 128 128 128z m720.768-108.970667A42.922667 42.922667 0 0 1 853.333333 682.666667H170.666667c-16.554667 0-31.061333-9.685333-38.101334-23.637334L512 393.429333l379.434667 265.6zM896 558.0799999999999l-359.552-251.648a42.666667 42.666667 0 0 0-48.896 0L128 558.037333V128c0-23.381333 19.285333-42.666667 42.666667-42.666667h682.666666c23.381333 0 42.666667 19.285333 42.666667 42.666667V558.0799999999999z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="maximize-" unicode="" d="M853.333333 725.333333v-213.333333a42.666667 42.666667 0 0 1 85.333334 0V768a42.666667 42.666667 0 0 1-42.666667 42.666667h-256a42.666667 42.666667 0 0 1 0-85.333334h213.333333zM170.666667 256a42.666667 42.666667 0 0 1-85.333334 0v-256a42.666667 42.666667 0 0 1 42.666667-42.666667h256a42.666667 42.666667 0 0 1 0 85.333334H170.666667v213.333333zM865.834667 798.165333l-298.666667-298.666666a42.666667 42.666667 0 1 1 60.330667-60.330667l298.666666 298.666667a42.666667 42.666667 0 1 1-60.330666 60.330666zM158.165333-30.165333l298.666667 298.666666a42.666667 42.666667 0 0 1-60.330667 60.330667l-298.666666-298.666667a42.666667 42.666667 0 0 1 60.330666-60.330666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="map" unicode="" d="M640 613.6320000000001l-256 128v-587.264l256-128V613.6320000000001z m85.333333 1.621333v-584.405333l213.333334 121.898667V737.152L725.333333 615.253333zM319.530667 847.36a42.453333 42.453333 0 0 0 41.642666 1.066667l320.170667-160.042667 278.826667 159.317333A42.666667 42.666667 0 0 0 1024 810.666667v-682.666667a42.666667 42.666667 0 0 0-21.504-37.034667l-298.666667-170.666666a42.666667 42.666667 0 0 0-40.234666-1.109334l-320.938667 160.426667-278.826667-159.317333A42.666667 42.666667 0 0 0 0-42.66666699999996V640a42.666667 42.666667 0 0 0 21.504 37.034667L319.530667 847.36zM298.666667 737.152L85.333333 615.253333v-584.405333l213.333334 121.898667V737.152z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="map-pin" unicode="" d="M545.408-7.253333a1243.946667 1243.946667 0 0 1 127.616 116.608C786.218667 228.821333 853.333333 351.872 853.333333 469.333333a341.333333 341.333333 0 0 1-682.666666 0c0-117.461333 67.114667-240.469333 180.309333-359.978666A1243.946667 1243.946667 0 0 1 512-32.981333c10.325333 7.68 21.546667 16.213333 33.408 25.685333z m189.568 57.898666a1328.298667 1328.298667 0 0 0-181.504-158.976c-8.32-6.016-14.378667-10.24-17.792-12.501333a42.666667 42.666667 0 0 0-47.36 0c-3.413333 2.304-9.472 6.485333-17.792 12.501333a1328.298667 1328.298667 0 0 0-181.504 158.976C162.218667 184.490667 85.333333 325.461333 85.333333 469.333333 85.333333 704.981333 276.352 896 512 896s426.666667-191.018667 426.666667-426.666667c0-143.872-76.885333-284.842667-203.690667-418.688zM512 298.666667a170.666667 170.666667 0 1 0 0 341.333333 170.666667 170.666667 0 0 0 0-341.333333z m0 85.333333a85.333333 85.333333 0 1 1 0 170.666667 85.333333 85.333333 0 0 1 0-170.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="menu" unicode="" d="M128 341.333333h768a42.666667 42.666667 0 0 1 0 85.333334H128a42.666667 42.666667 0 0 1 0-85.333334zM128 597.333333h768a42.666667 42.666667 0 0 1 0 85.333334H128a42.666667 42.666667 0 1 1 0-85.333334zM128 85.333333h768a42.666667 42.666667 0 0 1 0 85.333334H128a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="message-circle" unicode="" d="M357.717333 121.557333a42.666667 42.666667 0 0 0 32.725334-2.389333A314.965333 314.965333 0 0 1 533.333333 85.333333a320.085333 320.085333 0 0 1 286.165334 177.066667A314.88 314.88 0 0 1 853.333333 405.248l0.085334 19.114667C844.458667 586.752 714.752 716.373333 554.666667 725.333333h-21.461334a315.093333 315.093333 0 0 1-142.933333-33.92A320 320 0 0 1 213.333333 405.205333a314.88 314.88 0 0 1 33.834667-142.762666 42.666667 42.666667 0 0 0 2.389333-32.725334L195.413333 67.413333l162.261334 54.101334z m538.026667 102.570667A405.333333 405.333333 0 0 0 533.504 0a400.213333 400.213333 0 0 0-165.12 35.157333L141.525333-40.533333a42.666667 42.666667 0 0 0-53.973333 53.973333l75.648 226.901333A405.248 405.248 0 0 0 351.957333 767.701333 400.085333 400.085333 0 0 0 533.333333 810.666667l23.68-0.085334C762.88 799.232 927.232 634.88 938.666667 426.666667v-21.290667a400.042667 400.042667 0 0 0-42.88-181.248z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="message-square" unicode="" d="M268.501333 200.832A42.666667 42.666667 0 0 0 298.666667 213.333333h512a42.666667 42.666667 0 0 1 42.666666 42.666667V682.666667a42.666667 42.666667 0 0 1-42.666666 42.666666H213.333333a42.666667 42.666667 0 0 1-42.666666-42.666666v-579.669334l97.834666 97.834667z m-110.336-230.997333C131.285333-57.045333 85.333333-38.016 85.333333 0V682.666667a128 128 0 0 0 128 128h597.333334a128 128 0 0 0 128-128v-426.666667a128 128 0 0 0-128-128H316.330667l-158.165334-158.165333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="minimize-" unicode="" d="M384 42.666667a42.666667 42.666667 0 0 1 85.333333 0v256a42.666667 42.666667 0 0 1-42.666666 42.666666H170.666667a42.666667 42.666667 0 0 1 0-85.333333h213.333333v-213.333333zM640 725.333333a42.666667 42.666667 0 0 1-85.333333 0v-256a42.666667 42.666667 0 0 1 42.666666-42.666666h256a42.666667 42.666667 0 0 1 0 85.333333h-213.333333V725.333333zM627.498667 439.168l298.666666 298.666667a42.666667 42.666667 0 1 1-60.330666 60.330666l-298.666667-298.666666a42.666667 42.666667 0 1 1 60.330667-60.330667zM158.165333-30.165333l298.666667 298.666666a42.666667 42.666667 0 0 1-60.330667 60.330667l-298.666666-298.666667a42.666667 42.666667 0 0 1 60.330666-60.330666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="mic-off" unicode="" d="M13.020151 822.68038l938.185456-938.185456a42.644793 42.644793 0 0 1 60.299738 60.299738l-938.185456 938.185456A42.644793 42.644793 0 1 1 13.020151 822.68038zM341.683574 511.671902v-127.934381a170.579174 170.579174 0 0 1 291.136005-120.599476 42.644793 42.644793 0 0 1-60.299738 60.385028A85.289587 85.289587 0 0 0 426.973161 383.737521V511.671902a42.644793 42.644793 0 1 1-85.289587 0z m341.158348-14.49923V724.895869a170.579174 170.579174 0 0 1-337.746764 34.07319 42.644793 42.644793 0 0 1 83.583795-16.972628 85.289587 85.289587 0 0 0 168.873382-17.057917V497.172672a42.644793 42.644793 0 0 1 85.289587 0zM695.038333 202.497149A255.868761 255.868761 0 0 0 256.393987 383.439008V469.027108a42.644793 42.644793 0 1 1-85.289587 0v-85.289587a341.158348 341.158348 0 0 1 584.830698-240.943083 42.644793 42.644793 0 0 1-60.896765 59.702711zM768.131509 469.027108v-85.289587c0-15.053612-1.364633-30.064579-4.008611-44.904967a42.644793 42.644793 0 1 1 83.924954-15.096257A341.158348 341.158348 0 0 1 853.421095 383.737521V469.027108a42.644793 42.644793 0 0 1-85.289586 0zM469.617955 85.223967v-170.579174a42.644793 42.644793 0 0 1 85.289586 0v170.579174a42.644793 42.644793 0 0 1-85.289586 0zM341.683574-128h341.158348a42.644793 42.644793 0 0 1 0 85.289587H341.683574a42.644793 42.644793 0 0 1 0-85.289587z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="minus-circle" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM341.333333 341.333333h341.333334a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="mic" unicode="" d="M682.666667 725.333333v-341.333333a170.666667 170.666667 0 1 0-341.333334 0V725.333333a170.666667 170.666667 0 1 0 341.333334 0z m-170.666667 85.333334a85.333333 85.333333 0 0 1-85.333333-85.333334v-341.333333a85.333333 85.333333 0 1 1 170.666666 0V725.333333a85.333333 85.333333 0 0 1-85.333333 85.333334zM768 469.333333v-85.333333a256 256 0 0 0-512 0v85.333333a42.666667 42.666667 0 1 1-85.333333 0v-85.333333a341.333333 341.333333 0 0 1 682.666666 0v85.333333a42.666667 42.666667 0 0 1-85.333333 0zM469.333333 85.333333v-170.666666a42.666667 42.666667 0 0 1 85.333334 0v170.666666a42.666667 42.666667 0 0 1-85.333334 0zM341.333333-128h341.333334a42.666667 42.666667 0 0 1 0 85.333333H341.333333a42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="minus-square" unicode="" d="M170.666667 682.88v-597.76c0-23.466667 18.986667-42.453333 42.453333-42.453333h597.76c23.466667 0 42.453333 18.986667 42.453333 42.453333V682.88A42.453333 42.453333 0 0 1 810.88 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88z m-85.333334 0A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.666667H213.12A127.786667 127.786667 0 0 0 85.333333 85.12V682.88zM341.333333 341.333333h341.333334a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="minus" unicode="" d="M213.333333 341.333333h597.333334a42.666667 42.666667 0 0 1 0 85.333334H213.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="moon" unicode="" d="M476.202667 348.245333a342.058667 342.058667 0 0 0-79.786667 358.229334 341.973333 341.973333 0 1 1 438.016-438.016 342.058667 342.058667 0 0 0-358.229333 79.786666z m462.250666-2.773333A427.477333 427.477333 0 1 0 473.472 810.496c36.778667 3.413333 60.245333-38.272 38.314667-67.968a256.469333 256.469333 0 0 1 358.698666-358.741333c29.696 21.973333 71.381333-1.536 67.968-38.314667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="monitor" unicode="" d="M554.666667 128v-85.333333h128a42.666667 42.666667 0 0 0 0-85.333334H341.333333a42.666667 42.666667 0 0 0 0 85.333334h128v85.333333H170.24A127.914667 127.914667 0 0 0 42.666667 256.256V682.410667A128.128 128.128 0 0 0 170.24 810.666667h683.52A127.914667 127.914667 0 0 0 981.333333 682.410667v-426.154667A128.128 128.128 0 0 0 853.76 128H554.666667zM128 682.410667v-426.154667A42.581333 42.581333 0 0 1 170.24 213.33333300000004h683.52c23.04 0 42.24 19.285333 42.24 42.922667V682.410667A42.581333 42.581333 0 0 1 853.76 725.333333H170.24C147.2 725.333333 128 706.048 128 682.410667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="more-vertical" unicode="" d="M512 256a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334zM512 597.333333a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333334a42.666667 42.666667 0 1 1 0 85.333333 42.666667 42.666667 0 0 1 0-85.333333zM512-85.333333a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333333 42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="more-horizontal" unicode="" d="M512 256a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334zM853.333333 256a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334zM170.666667 256a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="move" unicode="" d="M243.498667 481.834667a42.666667 42.666667 0 0 1-60.330667 60.330666l-128-128a42.666667 42.666667 0 0 1 0-60.330666l128-128a42.666667 42.666667 0 1 1 60.330667 60.330666L145.664 384l97.834667 97.834667zM609.834667 652.501333a42.666667 42.666667 0 0 1 60.330666 60.330667l-128 128a42.666667 42.666667 0 0 1-60.330666 0l-128-128a42.666667 42.666667 0 0 1 60.330666-60.330667L512 750.336l97.834667-97.834667zM414.165333 115.498667a42.666667 42.666667 0 1 1-60.330666-60.330667l128-128a42.666667 42.666667 0 0 1 60.330666 0l128 128a42.666667 42.666667 0 0 1-60.330666 60.330667L512 17.664l-97.834667 97.834667zM780.501333 286.165333a42.666667 42.666667 0 0 1 60.330667-60.330666l128 128a42.666667 42.666667 0 0 1 0 60.330666l-128 128a42.666667 42.666667 0 0 1-60.330667-60.330666L878.336 384l-97.834667-97.834667zM85.333333 341.333333h853.333334a42.666667 42.666667 0 0 1 0 85.333334H85.333333a42.666667 42.666667 0 0 1 0-85.333334zM469.333333 810.666667v-853.333334a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="music" unicode="" d="M426.666667 646.528V85.33333300000004a128 128 0 0 0-128-128H213.333333a128 128 0 0 0 0 256h128V682.666667a42.666667 42.666667 0 0 0 35.669334 42.069333l512 85.333333A42.666667 42.666667 0 0 0 938.666667 768v-597.333333a128 128 0 0 0-128-128h-85.333334a128 128 0 0 0 0 256h128V717.653333L426.666667 646.528zM341.333333 128H213.333333a42.666667 42.666667 0 0 1 0-85.333333h85.333334a42.666667 42.666667 0 0 1 42.666666 42.666666v42.666667z m512 85.333333h-128a42.666667 42.666667 0 0 1 0-85.333333h85.333334a42.666667 42.666667 0 0 1 42.666666 42.666667v42.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="navigation-" unicode="" d="M293.845333 52.48l196.992 112.554667a42.666667 42.666667 0 0 0 42.325334 0l196.992-112.554667L512 644.565333 293.845333 52.48z m-59.306666-132.181333c-34.602667-19.754667-75.008 14.421333-61.226667 51.797333l298.666667 810.666667c13.696 37.205333 66.346667 37.205333 80.042666 0l298.666667-810.666667c13.781333-37.376-26.624-71.552-61.184-51.797333L512 78.848l-277.504-158.549333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="navigation" unicode="" d="M479.701333 340.053333a42.666667 42.666667 0 0 0 31.018667-31.018666l56.405333-225.706667 281.856 594.986667-594.986666-281.856 225.706666-56.405334z m-362.069333 2.56c-38.826667 9.728-44.117333 62.805333-7.893333 79.957334l810.666666 384c36.266667 17.152 73.984-20.608 56.832-56.832l-384-810.666667c-17.152-36.224-70.229333-30.933333-79.957333 7.893333l-79.146667 316.501334-316.501333 79.146666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="octagon" unicode="" d="M128 542.976v-317.952L353.024 0h317.952L896 225.024V542.976L670.976 768H353.024L128 542.976zM335.36 853.333333h353.28a42.666667 42.666667 0 0 0 30.165333-12.501333l250.026667-250.026667A42.666667 42.666667 0 0 0 981.333333 560.64v-353.28a42.666667 42.666667 0 0 0-12.501333-30.165333l-250.026667-250.026667a42.666667 42.666667 0 0 0-30.165333-12.501333H335.36a42.666667 42.666667 0 0 0-30.165333 12.501333l-250.026667 250.026667A42.666667 42.666667 0 0 0 42.666667 207.36V560.64a42.666667 42.666667 0 0 0 12.501333 30.165333l250.026667 250.026667A42.666667 42.666667 0 0 0 335.36 853.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="package" unicode="" d="M568.96 872.362667l341.333333-170.666667A128 128 0 0 0 981.333333 587.093333v-406.613333a128 128 0 0 0-70.954666-114.517333l-341.333334-170.666667a128 128 0 0 0-114.517333 0L113.066667 66.00533299999995A127.872 127.872 0 0 0 42.666667 180.90666699999997V587.093333a128 128 0 0 0 70.954666 114.517334L455.04 872.362667a128 128 0 0 0 113.92 0z m274.090667-232.490667l-312.106667 156.074667a42.624 42.624 0 0 1-37.845333 0L394.282667 746.624 725.333333 581.034667l117.717334 58.88zM896 570.965333l-151.125333-75.562666a42.837333 42.837333 0 0 0-0.853334-0.426667L554.666667 400.298667v-416.810667l317.653333 158.848A42.666667 42.666667 0 0 1 896 180.48000000000002V570.965333zM469.333333-16.725332999999978v417.024l-341.333333 170.666666v-390.357333c-0.128-16.213333 8.96-31.104 23.338667-38.357333L469.333333-16.725332999999978zM298.88 698.837333L180.949333 639.914667 512 474.368 629.930667 533.333333 298.88 698.88z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="pause-circle" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM469.333333 256V512a42.666667 42.666667 0 0 1-85.333333 0v-256a42.666667 42.666667 0 0 1 85.333333 0zM640 256V512a42.666667 42.666667 0 0 1-85.333333 0v-256a42.666667 42.666667 0 0 1 85.333333 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="pause" unicode="" d="M298.666667 682.666667v-597.333334h85.333333V682.666667H298.666667zM256 768h170.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-682.666666a42.666667 42.666667 0 0 0-42.666666-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V725.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM640 682.666667v-597.333334h85.333333V682.666667h-85.333333z m-42.666667 85.333333h170.666667a42.666667 42.666667 0 0 0 42.666667-42.666667v-682.666666a42.666667 42.666667 0 0 0-42.666667-42.666667h-170.666667a42.666667 42.666667 0 0 0-42.666666 42.666667V725.333333a42.666667 42.666667 0 0 0 42.666666 42.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="percent" unicode="" d="M780.501333 712.832l-597.333333-597.333333a42.666667 42.666667 0 0 1 60.330667-60.330667l597.333333 597.333333a42.666667 42.666667 0 1 1-60.330667 60.330667zM277.333333 469.333333a149.333333 149.333333 0 1 0 0 298.666667 149.333333 149.333333 0 0 0 0-298.666667z m0 85.333334a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM746.666667 0a149.333333 149.333333 0 1 0 0 298.666667 149.333333 149.333333 0 0 0 0-298.666667z m0 85.333333a64 64 0 1 1 0 128 64 64 0 0 1 0-128z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="phone-call" unicode="" d="M981.333333 3.5839999999999463a128 128 0 0 0-140.288-127.914667 886.613333 886.613333 0 0 0-386.474666 137.386667 874.24 874.24 0 0 0-268.928 268.8A887.68 887.68 0 0 0 47.957333 671.146667 128 128 0 0 0 175.36 810.666667H302.933333a128.085333 128.085333 0 0 0 128.042667-110.506667c4.992-37.76 14.250667-74.837333 27.52-110.421333a128.085333 128.085333 0 0 0-28.970667-135.253334l-30.592-30.549333a640 640 0 0 1 195.669334-195.669333l30.72 30.762666a128 128 0 0 0 134.997333 28.842667c35.669333-13.312 72.746667-22.570667 110.933333-27.605333A128 128 0 0 0 981.333333 130.986667v-127.36z m-85.333333 127.829333c0.554667 22.698667-15.232 41.344-36.266667 44.330667a590.72 590.72 0 0 0-129.365333 32.213333 42.581333 42.581333 0 0 1-44.8-9.429333l-54.186667-54.186667a42.666667 42.666667 0 0 0-51.285333-6.912 725.333333 725.333333 0 0 0-272 272 42.666667 42.666667 0 0 0 6.912 51.242667l54.016 54.016a42.666667 42.666667 0 0 1 9.557333 45.098667 589.525333 589.525333 0 0 0-32.128 128.853333A42.794667 42.794667 0 0 1 303.36 725.333333h-128a42.666667 42.666667 0 0 1-42.496-45.824 802.133333 802.133333 0 0 1 124.586667-351.573333 789.802667 789.802667 0 0 1 243.2-243.072 801.024 801.024 0 0 1 348.842666-124.288A42.666667 42.666667 0 0 1 896 3.413332999999966v128zM633.984 598.144a42.666667 42.666667 0 0 0 16.298667 83.712 256 256 0 0 0 202.24-202.24 42.666667 42.666667 0 1 0-83.712-16.298667 170.666667 170.666667 0 0 1-134.826667 134.826667z m3.413333 170.112a42.666667 42.666667 0 1 0 9.429334 84.821333 426.666667 426.666667 0 0 0 376.917333-376.405333 42.666667 42.666667 0 0 0-84.821333-9.557333 341.333333 341.333333 0 0 1-301.482667 301.141333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="phone-forwarded" unicode="" d="M780.478569 499.510231a42.665422 42.665422 0 1 1 60.328907-60.328907l170.661689 170.661689a42.665422 42.665422 0 0 1 0 60.328907l-170.661689 170.661689a42.665422 42.665422 0 0 1-60.328907-60.328907L920.975805 640.007466l-140.497236-140.497235zM639.981334 597.342044h341.323378a42.665422 42.665422 0 0 1 0 85.330845h-341.323378a42.665422 42.665422 0 0 1 0-85.330845zM895.547213 129.174366a43.049411 43.049411 0 0 1-36.521601 44.45737 594.542659 594.542659 0 0 0-129.958876 32.34039 42.836084 42.836084 0 0 1-45.097352-9.471724l-54.441079-54.355748c-13.652935-13.652935-34.729654-16.468853-51.53983-6.954464a728.384089 728.384089 0 0 0-273.35736 272.888041 42.750753 42.750753 0 0 0 6.954464 51.454499l54.270417 54.185087c11.775657 11.903653 15.572879 29.524472 9.642385 45.225347-15.65821 41.897445-26.495227 85.37351-32.297724 129.27623-3.029245 21.332711-21.375377 37.033587-43.305404 36.820259H171.259005a42.921415 42.921415 0 0 1-42.708088-45.993325 803.859221 803.859221 0 0 1 125.180349-352.672381 793.107534 793.107534 0 0 1 244.47287-243.918219 805.949826 805.949826 0 0 1 350.581774-124.668363 42.921415 42.921415 0 0 1 46.718638 42.96408v128.422921zM981.304712 0.922106a128.33759 128.33759 0 0 0-41.684118-95.143891 129.190899 129.190899 0 0 0-99.325103-33.193699 892.091314 892.091314 0 0 0-388.468669 137.809314 877.883728 877.883728 0 0 0-270.28545 269.7308 889.574054 889.574054 0 0 0-138.363965 390.559275 128.294925 128.294925 0 0 0 33.108368 98.130471A128.764244 128.764244 0 0 0 171.21634 810.669155H299.511264a128.678914 128.678914 0 0 0 128.678914-110.844767c5.03452-37.886895 14.292916-75.091143 27.647193-110.802101 17.663485-46.931964 6.399813-99.837088-29.097818-135.676043l-30.761769-30.719104a642.669255 642.669255 0 0 1 196.687597-196.260942l30.889765 30.8471a128.764244 128.764244 0 0 0 135.633378 28.927156c35.838955-13.354277 73.128534-22.612674 111.484748-27.689859a128.508252 128.508252 0 0 0 110.63144-129.745549v-127.78294z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="phone-missed" unicode="" d="M951.140258 840.833609l-255.992533-255.992534a42.665422 42.665422 0 1 1 60.328907-60.328907l255.992533 255.992534a42.665422 42.665422 0 1 1-60.328907 60.328907zM695.147725 780.504702l255.992533-255.992534a42.665422 42.665422 0 0 1 60.328907 60.328907l-255.992533 255.992534a42.665422 42.665422 0 0 1-60.328907-60.328907zM895.547213 129.174366a43.049411 43.049411 0 0 1-36.521601 44.45737 594.542659 594.542659 0 0 0-129.958876 32.34039 42.836084 42.836084 0 0 1-45.097352-9.471724l-54.441079-54.355748c-13.652935-13.652935-34.729654-16.468853-51.53983-6.954464a728.384089 728.384089 0 0 0-273.35736 272.888041 42.750753 42.750753 0 0 0 6.954464 51.454499l54.270417 54.185087c11.775657 11.903653 15.572879 29.524472 9.642385 45.225347-15.65821 41.897445-26.495227 85.37351-32.297724 129.27623-3.029245 21.332711-21.375377 37.033587-43.305404 36.820259H171.259005a42.921415 42.921415 0 0 1-42.708088-45.993325 803.859221 803.859221 0 0 1 125.180349-352.672381 793.107534 793.107534 0 0 1 244.47287-243.918219 805.949826 805.949826 0 0 1 350.581774-124.668363 42.921415 42.921415 0 0 1 46.718638 42.96408v128.422921zM981.304712 0.922106a128.33759 128.33759 0 0 0-41.684118-95.143891 129.190899 129.190899 0 0 0-99.325103-33.193699 892.091314 892.091314 0 0 0-388.468669 137.809314 877.883728 877.883728 0 0 0-270.28545 269.7308 889.574054 889.574054 0 0 0-138.363965 390.559275 128.294925 128.294925 0 0 0 33.108368 98.130471A128.764244 128.764244 0 0 0 171.21634 810.669155H299.511264a128.678914 128.678914 0 0 0 128.678914-110.844767c5.03452-37.886895 14.292916-75.091143 27.647193-110.802101 17.663485-46.931964 6.399813-99.837088-29.097818-135.676043l-30.761769-30.719104a642.669255 642.669255 0 0 1 196.687597-196.260942l30.889765 30.8471a128.764244 128.764244 0 0 0 135.633378 28.927156c35.838955-13.354277 73.128534-22.612674 111.484748-27.689859a128.508252 128.508252 0 0 0 110.63144-129.745549v-127.78294z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="phone-off" unicode="" d="M485.596263 358.022711a42.644793 42.644793 0 1 1-60.299738-60.299738 724.961489 724.961489 0 0 1 154.502087-117.78492 42.644793 42.644793 0 0 1 51.216397 6.908457l54.158887 54.158888a42.559504 42.559504 0 0 0 44.819678 9.381854c41.791898-15.56535 85.119008-26.354482 129.256369-32.154174a42.559504 42.559504 0 0 0 36.290719-42.644793v-128.318184a42.730083 42.730083 0 0 0-46.482825-42.815373 800.613352 800.613352 0 0 0-348.663831 124.224284c-49.041512 31.130699-94.244994 67.378774-135.056061 108.232485a42.644793 42.644793 0 1 1-60.299738-60.299737 870.806682 870.806682 0 0 1 149.299422-119.703936 886.158808 886.158808 0 0 1 386.276539-137.316235A127.93438 127.93438 0 0 1 980.830249 47.44068V175.204481a127.806446 127.806446 0 0 1-110.023567 127.507933 505.895185 505.895185 0 0 0-110.876463 27.591181 127.93438 127.93438 0 0 1-134.885482-28.82788l-30.746896-30.746896a639.671902 639.671902 0 0 0-108.701578 87.293892z m-228.490803 14.371295a801.295669 801.295669 0 0 0-124.309573 349.431438A42.644793 42.644793 0 0 0 175.312746 767.540662H303.204481c21.834134 0.213224 40.086106-15.48006 43.071242-36.674522 5.757047-43.753558 16.54618-87.080668 32.111529-128.787276a42.644793 42.644793 0 0 0-9.552434-45.075547L314.84651 503.015009a42.644793 42.644793 0 0 1 60.299738-60.299738l54.158888 54.158887a128.01967 128.01967 0 0 1 28.998459 135.141351A504.70113 504.70113 0 0 0 430.712414 742.380234a128.01967 128.01967 0 0 1-127.934381 110.40737H175.270101a127.93438 127.93438 0 0 1-127.337353-139.448474 887.310217 887.310217 0 0 1 137.614748-387.385304 42.644793 42.644793 0 0 1 71.557964 46.397535zM950.68038 882.980118l-938.185456-938.185456a42.644793 42.644793 0 0 1 60.299738-60.299738l938.185456 938.185456A42.644793 42.644793 0 1 1 950.68038 882.980118z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="phone-incoming" unicode="" d="M725.312178 768.003733a42.665422 42.665422 0 0 1-85.330844 0v-255.992533a42.665422 42.665422 0 0 1 42.665422-42.665423h255.992534a42.665422 42.665422 0 0 1 0 85.330845h-213.327112V768.003733zM951.140258 840.833609l-298.657955-298.657956a42.665422 42.665422 0 1 1 60.328907-60.328907l298.657955 298.657956a42.665422 42.665422 0 1 1-60.328907 60.328907zM895.547213 129.174366a43.049411 43.049411 0 0 1-36.521601 44.45737 594.542659 594.542659 0 0 0-129.958876 32.34039 42.836084 42.836084 0 0 1-45.097352-9.471724l-54.441079-54.355748c-13.652935-13.652935-34.729654-16.468853-51.53983-6.954464a728.384089 728.384089 0 0 0-273.35736 272.888041 42.750753 42.750753 0 0 0 6.954464 51.454499l54.270417 54.185087c11.775657 11.903653 15.572879 29.524472 9.642385 45.225347-15.65821 41.897445-26.495227 85.37351-32.297724 129.27623-3.029245 21.332711-21.375377 37.033587-43.305404 36.820259H171.259005a42.921415 42.921415 0 0 1-42.708088-45.993325 803.859221 803.859221 0 0 1 125.180349-352.672381 793.107534 793.107534 0 0 1 244.47287-243.918219 805.949826 805.949826 0 0 1 350.581774-124.668363 42.921415 42.921415 0 0 1 46.718638 42.96408v128.422921zM981.304712 0.922106a128.33759 128.33759 0 0 0-41.684118-95.143891 129.190899 129.190899 0 0 0-99.325103-33.193699 892.091314 892.091314 0 0 0-388.468669 137.809314 877.883728 877.883728 0 0 0-270.28545 269.7308 889.574054 889.574054 0 0 0-138.363965 390.559275 128.294925 128.294925 0 0 0 33.108368 98.130471A128.764244 128.764244 0 0 0 171.21634 810.669155H299.511264a128.678914 128.678914 0 0 0 128.678914-110.844767c5.03452-37.886895 14.292916-75.091143 27.647193-110.802101 17.663485-46.931964 6.399813-99.837088-29.097818-135.676043l-30.761769-30.719104a642.669255 642.669255 0 0 1 196.687597-196.260942l30.889765 30.8471a128.764244 128.764244 0 0 0 135.633378 28.927156c35.838955-13.354277 73.128534-22.612674 111.484748-27.689859a128.508252 128.508252 0 0 0 110.63144-129.745549v-127.78294z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="phone" unicode="" d="M895.573333 171.818667a43.050667 43.050667 0 0 1-36.522666 44.458666 594.56 594.56 0 0 0-129.962667 32.341334 42.837333 42.837333 0 0 1-45.098667-9.472l-54.442666-54.357334c-13.653333-13.653333-34.730667-16.469333-51.541334-6.954666a728.405333 728.405333 0 0 0-273.365333 272.896 42.752 42.752 0 0 0 6.954667 51.456l54.272 54.186666c11.776 11.904 15.573333 29.525333 9.642666 45.226667-15.658667 41.898667-26.496 85.376-32.298666 129.28-3.029333 21.333333-21.376 37.034667-43.306667 36.821333H171.264a42.922667 42.922667 0 0 1-42.709333-45.994666 803.882667 803.882667 0 0 1 125.184-352.682667 793.130667 793.130667 0 0 1 244.48-243.925333 805.973333 805.973333 0 0 1 350.592-124.672 42.922667 42.922667 0 0 1 46.72 42.965333v128.426667zM981.333333 43.562667a128.341333 128.341333 0 0 0-41.685333-95.146667 129.194667 129.194667 0 0 0-99.328-33.194667 892.117333 892.117333 0 0 0-388.48 137.813334 877.909333 877.909333 0 0 0-270.293333 269.738666 889.6 889.6 0 0 0-138.368 390.570667 128.298667 128.298667 0 0 0 33.109333 98.133333A128.768 128.768 0 0 0 171.221333 853.333333H299.52a128.682667 128.682667 0 0 0 128.682667-110.848c5.034667-37.888 14.293333-75.093333 27.648-110.805333 17.664-46.933333 6.4-99.84-29.098667-135.68l-30.762667-30.72a642.688 642.688 0 0 1 196.693334-196.266667l30.890666 30.848a128.768 128.768 0 0 0 135.637334 28.928c35.84-13.354667 73.130667-22.613333 111.488-27.690666a128.512 128.512 0 0 0 110.634666-129.749334v-127.786666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="phone-outgoing" unicode="" d="M938.63929 768.003733v-213.327111a42.665422 42.665422 0 0 1 85.330844 0V810.669155a42.665422 42.665422 0 0 1-42.665422 42.665423h-255.992534a42.665422 42.665422 0 0 1 0-85.330845h213.327112zM712.81121 481.846746l298.657955 298.657956a42.665422 42.665422 0 1 1-60.328907 60.328907l-298.657955-298.657956a42.665422 42.665422 0 1 1 60.328907-60.328907zM895.973867 131.435633c0.55465 22.698005-15.231556 41.342794-36.265608 44.329374a590.702771 590.702771 0 0 0-129.361561 32.212394 42.580091 42.580091 0 0 1-44.798693-9.429059l-54.185086-54.185086a42.665422 42.665422 0 0 0-51.283838-6.911798 725.312178 725.312178 0 0 0-271.992067 271.992067 42.665422 42.665422 0 0 0 6.911799 51.241172l54.014424 54.014424a42.665422 42.665422 0 0 1 9.557055 45.097352 589.508139 589.508139 0 0 0-32.127063 128.849575A42.793419 42.793419 0 0 1 303.351152 725.338311h-127.996267a42.665422 42.665422 0 0 1-42.49476-45.822664 802.109938 802.109938 0 0 1 124.583033-351.563079 789.779631 789.779631 0 0 1 243.192907-243.064911 801.000637 801.000637 0 0 1 348.832492-124.284375A42.665422 42.665422 0 0 1 895.973867 3.439366v127.996267z m85.330845-130.513527a128.33759 128.33759 0 0 0-41.684118-95.143891 129.190899 129.190899 0 0 0-99.325103-33.193699 892.091314 892.091314 0 0 0-388.468669 137.809314 877.883728 877.883728 0 0 0-270.28545 269.7308 889.574054 889.574054 0 0 0-138.363965 390.559275 128.294925 128.294925 0 0 0 33.108368 98.130471A128.764244 128.764244 0 0 0 171.21634 810.669155H299.511264a128.678914 128.678914 0 0 0 128.678914-110.844767c5.03452-37.886895 14.292916-75.091143 27.647193-110.802101 17.663485-46.931964 6.399813-99.837088-29.097818-135.676043l-30.761769-30.719104a642.669255 642.669255 0 0 1 196.687597-196.260942l30.889765 30.8471a128.764244 128.764244 0 0 0 135.633378 28.927156c35.838955-13.354277 73.128534-22.612674 111.484748-27.689859a128.508252 128.508252 0 0 0 110.63144-129.745549v-127.78294z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="pie-chart" unicode="" d="M865.664 234.666667A384 384 0 1 0 358.4 736.085333a42.666667 42.666667 0 0 1-34.133333 78.250667A469.333333 469.333333 0 1 1 944.256 201.386667a42.666667 42.666667 0 0 1-78.592 33.194666zM981.333333 384a42.666667 42.666667 0 0 0-42.666666-42.666667H512a42.666667 42.666667 0 0 0-42.666667 42.666667V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666 469.333333 469.333333 0 0 0 469.333333-469.333333z m-197.802666 271.530667A384 384 0 0 1 554.666667 765.610667V426.666667h338.944a384 384 0 0 1-110.08 228.864z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="play-circle" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM469.333333 293.077333L605.738667 384 469.333333 474.922667v-181.845334z m-18.986666 297.088l256-170.666666a42.666667 42.666667 0 0 0 0-70.997334l-256-170.666666A42.666667 42.666667 0 0 0 384 213.333333V554.666667a42.666667 42.666667 0 0 0 66.346667 35.498666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="play" unicode="" d="M256 78.165333L731.733333 384 256 689.834667v-611.669334z m-19.626667 725.76l597.333334-384a42.666667 42.666667 0 0 0 0-71.808l-597.333334-384A42.666667 42.666667 0 0 0 170.666667 0V768a42.666667 42.666667 0 0 0 65.706666 35.882667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="plus-square" unicode="" d="M170.666667 682.88v-597.76c0-23.466667 18.986667-42.453333 42.453333-42.453333h597.76c23.466667 0 42.453333 18.986667 42.453333 42.453333V682.88A42.453333 42.453333 0 0 1 810.88 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88z m-85.333334 0A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.666667H213.12A127.786667 127.786667 0 0 0 85.333333 85.12V682.88zM469.333333 554.666667v-341.333334a42.666667 42.666667 0 0 1 85.333334 0V554.666667a42.666667 42.666667 0 0 1-85.333334 0zM341.333333 341.333333h341.333334a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="plus-circle" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM469.333333 554.666667v-341.333334a42.666667 42.666667 0 0 1 85.333334 0V554.666667a42.666667 42.666667 0 0 1-85.333334 0zM341.333333 341.333333h341.333334a42.666667 42.666667 0 0 1 0 85.333334H341.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="plus" unicode="" d="M469.333333 682.666667v-597.333334a42.666667 42.666667 0 0 1 85.333334 0V682.666667a42.666667 42.666667 0 0 1-85.333334 0zM213.333333 341.333333h597.333334a42.666667 42.666667 0 0 1 0 85.333334H213.333333a42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="pocket" unicode="" d="M128 682.666667v-256a384 384 0 1 1 768 0V682.666667a42.666667 42.666667 0 0 1-42.666667 42.666666H170.666667a42.666667 42.666667 0 0 1-42.666667-42.666666z m725.333333 128a128 128 0 0 0 128-128v-256c0-259.2-210.133333-469.333333-469.333333-469.333334A469.333333 469.333333 0 0 0 42.666667 426.666667V682.666667a128 128 0 0 0 128 128h682.666666zM371.498667 499.498667a42.666667 42.666667 0 1 1-60.330667-60.330667l170.666667-170.666667a42.666667 42.666667 0 0 1 60.330666 0l170.666667 170.666667a42.666667 42.666667 0 1 1-60.330667 60.330667L512 358.997333 371.498667 499.498667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="printer" unicode="" d="M298.666667 554.666667h426.666666V768H298.666667v-213.333333zM213.333333 554.666667V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h512a42.666667 42.666667 0 0 0 42.666667-42.666666v-256h42.666666a128 128 0 0 0 128-128v-213.333334a128 128 0 0 0-128-128h-85.333333a42.666667 42.666667 0 0 0 0 85.333334h85.333333a42.666667 42.666667 0 0 1 42.666667 42.666666v213.333334a42.666667 42.666667 0 0 1-42.666667 42.666666H170.666667a42.666667 42.666667 0 0 1-42.666667-42.666666v-213.333334a42.666667 42.666667 0 0 1 42.666667-42.666666h85.333333a42.666667 42.666667 0 0 0 0-85.333334H170.666667a128 128 0 0 0-128 128v213.333334a128 128 0 0 0 128 128h42.666666zM298.666667 0h426.666666v256H298.666667v-256z m-42.666667 341.333333h512a42.666667 42.666667 0 0 0 42.666667-42.666666v-341.333334a42.666667 42.666667 0 0 0-42.666667-42.666666H256a42.666667 42.666667 0 0 0-42.666667 42.666666v341.333334a42.666667 42.666667 0 0 0 42.666667 42.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="power" unicode="" d="M753.408 582.528a341.333333 341.333333 0 1 0-482.816 0 42.666667 42.666667 0 1 1-60.330667 60.330667c-166.613333-166.656-166.570667-436.778667 0.042667-603.349334 166.613333-166.613333 436.778667-166.613333 603.392 0 166.613333 166.570667 166.656 436.693333 0.042667 603.349334a42.666667 42.666667 0 1 1-60.330667-60.330667zM469.333333 810.666667v-426.666667a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="radio" unicode="" d="M512 256a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334zM662.741333 534.741333a213.333333 213.333333 0 0 0 0-301.866666 42.666667 42.666667 0 1 1 60.330667-60.373334 298.666667 298.666667 0 0 1 0 422.613334 42.666667 42.666667 0 1 1-60.330667-60.373334z m-301.482666-301.482666a213.333333 213.333333 0 0 0 0 301.866666 42.666667 42.666667 0 0 1-60.330667 60.373334 298.666667 298.666667 0 0 1 0-422.613334 42.666667 42.666667 0 1 1 60.330667 60.373334z m422.229333 422.229333a384 384 0 0 0 0-542.976 42.666667 42.666667 0 1 1 60.330667-60.330667c183.210667 183.253333 183.210667 480.384 0 663.637334a42.666667 42.666667 0 1 1-60.330667-60.330667zM240.512 112.512a384 384 0 0 0 0 542.976 42.666667 42.666667 0 0 1-60.330667 60.330667c-183.210667-183.253333-183.210667-480.384 0-663.637334a42.666667 42.666667 0 1 1 60.330667 60.330667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="repeat" unicode="" d="M695.074022 542.346875a42.644776 42.644776 0 1 1 60.299713-60.299713l170.579103 170.579103a42.644776 42.644776 0 0 1 0 60.299713l-170.579103 170.579103a42.644776 42.644776 0 0 1-60.299713-60.299713L835.503268 682.776122l-140.429246-140.429247zM170.841795 426.907468V512.197019a127.934327 127.934327 0 0 0 127.934327 127.934327h597.026859a42.644776 42.644776 0 0 1 0 85.289551H298.776122a213.223878 213.223878 0 0 1-213.223879-213.223878v-85.289551a42.644776 42.644776 0 0 1 85.289552 0zM328.925978 226.178508a42.644776 42.644776 0 0 1-60.299713 60.299713l-170.579103-170.579103a42.644776 42.644776 0 0 1 0-60.299712l170.579103-170.579103a42.644776 42.644776 0 1 1 60.299713 60.299713L188.496732 85.749262l140.429246 140.429246zM853.158205 341.617916v-85.289551a127.934327 127.934327 0 0 0-127.934327-127.934327H128.197019a42.644776 42.644776 0 0 1 0-85.289552h597.026859a213.223878 213.223878 0 0 1 213.223879 213.223879v85.289551a42.644776 42.644776 0 0 1-85.289552 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="refresh-ccw" unicode="" d="M85.378987 725.333333a42.666667 42.666667 0 1 1-85.333334 0v-256a42.666667 42.666667 0 0 1 42.666667-42.666666h256a42.666667 42.666667 0 0 1 0 85.333333H85.378987V725.333333zM938.71232 42.666667a42.666667 42.666667 0 0 1 85.333333 0v256a42.666667 42.666667 0 0 1-42.666666 42.666666h-256a42.666667 42.666667 0 0 1 0-85.333333h213.333333v-213.333333zM914.52032 526.250667a426.666667 426.666667 0 0 1-704 159.274666L13.485653 500.437333a42.666667 42.666667 0 0 1 58.453334-62.208l197.973333 186.026667a341.973333 341.973333 0 0 0 317.696 92.586667 341.333333 341.333333 0 0 0 246.442667-219.093334 42.666667 42.666667 0 0 1 80.469333 28.501334z m37.632-196.48l-197.973333-186.026667a341.973333 341.973333 0 0 0-317.696-92.586667 341.333333 341.333333 0 0 0-246.442667 219.093334 42.666667 42.666667 0 0 1-80.469333-28.501334 426.666667 426.666667 0 0 1 704-159.274666l197.034666 185.088a42.666667 42.666667 0 0 1-58.453333 62.208z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="rewind" unicode="" d="M426.666667 595.413333L154.837333 384 426.666667 172.586667v422.826666z m16.469333-543.744l-384 298.666667a42.666667 42.666667 0 0 0 0 67.328l384 298.666667A42.666667 42.666667 0 0 0 512 682.666667v-597.333334a42.666667 42.666667 0 0 0-68.864-33.706666zM896 172.586667v422.826666L624.170667 384 896 172.586667z m16.469333-120.917334l-384 298.666667a42.666667 42.666667 0 0 0 0 67.328l384 298.666667A42.666667 42.666667 0 0 0 981.333333 682.666667v-597.333334a42.666667 42.666667 0 0 0-68.864-33.706666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="rotate-ccw" unicode="" d="M128 725.333333a42.666667 42.666667 0 1 1-85.333333 0v-256a42.666667 42.666667 0 0 1 42.666666-42.666666h256a42.666667 42.666667 0 0 1 0 85.333333H128V725.333333zM152.192 242.218667a426.666667 426.666667 0 1 1 100.949333 443.733333l-197.034666-185.173333a42.666667 42.666667 0 1 1 58.453333-62.165334l197.973333 186.026667a341.76 341.76 0 0 0 407.210667 58.069333 341.333333 341.333333 0 1 0-487.082667-412.16 42.666667 42.666667 0 1 1-80.469333-28.330666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="refresh-cw" unicode="" d="M725.378987 512a42.666667 42.666667 0 0 1 0-85.333333h256a42.666667 42.666667 0 0 1 42.666666 42.666666V725.333333a42.666667 42.666667 0 0 1-85.333333 0v-213.333333h-213.333333zM85.378987 256h213.333333a42.666667 42.666667 0 0 1 0 85.333333H42.71232a42.666667 42.666667 0 0 1-42.666667-42.666666v-256a42.666667 42.666667 0 0 1 85.333334 0v213.333333zM190.04032 497.749333a341.333333 341.333333 0 0 0 563.2 127.445334l198.912-186.965334a42.666667 42.666667 0 0 1 58.453333 62.208l-197.973333 186.026667A426.026667 426.026667 0 0 1 417.666987 800a426.666667 426.666667 0 0 1-308.053334-273.792 42.666667 42.666667 0 0 1 80.426667-28.501333zM13.485653 267.562667l197.973334-186.026667a426.026667 426.026667 0 0 1 394.965333-113.578667 426.666667 426.666667 0 0 1 308.053333 273.792 42.666667 42.666667 0 0 1-80.426666 28.501334 341.333333 341.333333 0 0 0-563.2-127.445334l-198.912 186.965334a42.666667 42.666667 0 0 1-58.453334-62.208z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="rotate-cw" unicode="" d="M682.666667 512a42.666667 42.666667 0 0 1 0-85.333333h256a42.666667 42.666667 0 0 1 42.666666 42.666666V725.333333a42.666667 42.666667 0 0 1-85.333333 0v-213.333333h-213.333333zM791.338667 270.208a341.333333 341.333333 0 1 0-80.384 354.986667l198.442666-186.922667a42.666667 42.666667 0 0 1 58.538667 62.122667l-197.546667 186.026666c-133.418667 133.546667-340.48 162.901333-506.88 71.125334a426.666667 426.666667 0 1 1 608.298667-515.754667 42.666667 42.666667 0 1 1-80.469333 28.416z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="save" unicode="" d="M341.333333 725.333333v-128h298.666667a42.666667 42.666667 0 0 0 0-85.333333H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V725.333333H213.333333a42.666667 42.666667 0 0 1-42.666666-42.666666v-597.333334a42.666667 42.666667 0 0 1 42.666666-42.666666h42.666667v298.666666a42.666667 42.666667 0 0 0 42.666667 42.666667h426.666666a42.666667 42.666667 0 0 0 42.666667-42.666667v-298.666666h42.666667a42.666667 42.666667 0 0 1 42.666666 42.666666V537.002667L665.002667 725.333333H341.333333z m341.333334-682.666666v256H341.333333v-256h341.333334z m128-85.333334H213.333333a128 128 0 0 0-128 128V682.666667a128 128 0 0 0 128 128h469.333334a42.666667 42.666667 0 0 0 30.165333-12.501334l213.333333-213.333333A42.666667 42.666667 0 0 0 938.666667 554.666667v-469.333334a128 128 0 0 0-128-128z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="search" unicode="" d="M732.842667 223.48800000000006l193.322666-193.28a42.666667 42.666667 0 0 0-60.330666-60.373333l-193.322667 193.322666a362.666667 362.666667 0 1 0 60.330667 60.330667zM448 170.66666699999996a277.333333 277.333333 0 1 1 0 554.666666 277.333333 277.333333 0 0 1 0-554.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="server" unicode="" d="M128 725.418667v-170.837334A42.24 42.24 0 0 1 170.24 512h683.52c23.125333 0 42.24 19.157333 42.24 42.581333V725.418667A42.24 42.24 0 0 1 853.76 768H170.24a42.624 42.624 0 0 1-42.24-42.581333z m-85.333333 0A127.957333 127.957333 0 0 0 170.24 853.333333h683.52A127.573333 127.573333 0 0 0 981.333333 725.418667v-170.837334A127.957333 127.957333 0 0 0 853.76 426.666667H170.24A127.573333 127.573333 0 0 0 42.666667 554.581333V725.418667zM128 213.418667v-170.837334a42.24 42.24 0 0 1 42.24-42.581333h683.52c23.125333 0 42.24 19.157333 42.24 42.581333v170.837334a42.24 42.24 0 0 1-42.24 42.581333H170.24a42.624 42.624 0 0 1-42.24-42.581333z m-85.333333 0A127.957333 127.957333 0 0 0 170.24 341.333333h683.52A127.573333 127.573333 0 0 0 981.333333 213.418667v-170.837334A127.957333 127.957333 0 0 0 853.76-85.333333H170.24A127.573333 127.573333 0 0 0 42.666667 42.581333v170.837334zM298.666667 128m-42.666667 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM298.666667 640m-42.666667 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="scissors" unicode="" d="M298.666667 469.333333a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666zM298.666667-42.66666699999996a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666zM494.336 384L358.954667 519.381333a42.666667 42.666667 0 0 0 60.330666 60.330667L554.666667 444.330667l311.168 311.168a42.666667 42.666667 0 0 0 60.330666-60.330667l-506.88-506.88a42.666667 42.666667 0 1 0-60.330666 60.330667L494.336 384z m135.594667-136.021333a42.666667 42.666667 0 0 0 60.245333 60.416l235.946667-235.52a42.666667 42.666667 0 0 0-60.245334-60.416l-235.946666 235.52z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="share-" unicode="" d="M768 512a170.666667 170.666667 0 1 0 0 341.333333 170.666667 170.666667 0 0 0 0-341.333333z m0 85.333333a85.333333 85.333333 0 1 1 0 170.666667 85.333333 85.333333 0 0 1 0-170.666667zM256 213.33333300000004a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666zM768-85.33333300000004a170.666667 170.666667 0 1 0 0 341.333333 170.666667 170.666667 0 0 0 0-341.333333z m0 85.333333a85.333333 85.333333 0 1 1 0 170.666667 85.333333 85.333333 0 0 1 0-170.666667zM345.045333 282.709333a42.666667 42.666667 0 1 0 42.922667 73.728l291.413333-169.813333a42.666667 42.666667 0 1 0-42.922666-73.728l-291.413334 169.813333z m290.944 372.394667a42.666667 42.666667 0 1 0 43.008-73.728l-290.986666-169.813333a42.666667 42.666667 0 1 0-43.008 73.728l290.986666 169.813333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="share" unicode="" d="M128 384v-341.333333a128 128 0 0 1 128-128h512a128 128 0 0 1 128 128v341.333333a42.666667 42.666667 0 0 1-85.333333 0v-341.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v341.333333a42.666667 42.666667 0 0 1-85.333333 0zM652.501333 609.834667a42.666667 42.666667 0 0 1 60.330667 60.330666l-170.666667 170.666667a42.666667 42.666667 0 0 1-60.330666 0l-170.666667-170.666667a42.666667 42.666667 0 0 1 60.330667-60.330666L512 750.336l140.501333-140.501333zM469.333333 810.666667v-554.666667a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="shield" unicode="" d="M531.072-80.810667a42.666667 42.666667 0 0 0-38.144 0 738.56 738.56 0 0 0-56.874667 32.64 958.506667 958.506667 0 0 0-122.837333 90.709334C198.229333 143.232 128 257.322667 128 384V725.333333a42.666667 42.666667 0 0 0 32.298667 41.386667l341.333333 85.333333a42.666667 42.666667 0 0 0 20.736 0l341.333333-85.333333A42.666667 42.666667 0 0 0 896 725.333333v-341.333333c0-126.72-70.229333-240.810667-185.216-341.461333a958.506667 958.506667 0 0 0-122.837333-90.709334 738.56 738.56 0 0 0-56.874667-32.64z m11.648 104.96a874.24 874.24 0 0 1 111.829333 82.645334C752.896 192.810667 810.666667 286.677333 810.666667 384V692.053333l-298.666667 74.666667-298.666667-74.666667V384c0-97.28 57.770667-191.189333 156.117334-277.205333A874.24 874.24 0 0 1 512 5.845333c9.429333 5.376 19.754667 11.477333 30.72 18.346667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="settings" unicode="" d="M512 213.333333a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666zM272.768 680.234667l-2.56 2.56a42.666667 42.666667 0 1 1-60.416-60.416l2.901333-2.901334c32.298667-33.024 41.258667-82.432 23.637334-122.197333A113.365333 113.365333 0 0 0 131.84 423.253333H128a42.666667 42.666667 0 0 1 0-85.333333h7.424a112.896 112.896 0 0 0 103.253333-68.096 113.237333 113.237333 0 0 0-22.912-125.056l-2.56-2.56a42.666667 42.666667 0 1 1 60.416-60.416l2.901334 2.901333c33.024 32.298667 82.432 41.258667 122.197333 23.637334a113.365333 113.365333 0 0 0 74.026667-104.490667V0a42.666667 42.666667 0 0 1 85.333333 0v7.424a112.896 112.896 0 0 0 68.096 103.253333 113.237333 113.237333 0 0 0 125.056-22.912l2.56-2.56a42.666667 42.666667 0 1 1 60.416 60.416l-2.901333 2.901334a113.066667 113.066667 0 0 0-22.613334 124.714666A112.981333 112.981333 0 0 0 892.16 341.333333H896a42.666667 42.666667 0 0 1 0 85.333334h-7.424a113.066667 113.066667 0 0 0-103.466667 68.522666l-3.456 8.064v4.266667a113.28 113.28 0 0 0 26.581334 115.712l2.56 2.56a42.666667 42.666667 0 1 1-60.416 60.416l-2.901334-2.901333a112.896 112.896 0 0 0-124.288-22.784A113.109333 113.109333 0 0 0 554.666667 764.16V768a42.666667 42.666667 0 0 1-85.333334 0v-7.424a113.066667 113.066667 0 0 0-68.522666-103.466667l-8.064-3.456h-4.266667a113.28 113.28 0 0 0-115.712 26.581334zM888.746667 512H896a128 128 0 0 0 0-256h-3.669333a27.733333 27.733333 0 0 1-25.386667-16.810667 27.733333 27.733333 0 0 1 5.034667-30.677333l2.56-2.56a128 128 0 1 0-181.077334-181.077333l-2.218666 2.218666a27.904 27.904 0 0 1-31.018667 5.376 27.690667 27.690667 0 0 1-16.810667-25.216V0a128 128 0 0 0-256 0 29.781333 29.781333 0 0 1-20.650666 29.226667 27.605333 27.605333 0 0 1-30.250667-5.205334l-2.56-2.56a128 128 0 1 0-181.077333 181.077334l2.218666 2.218666a27.904 27.904 0 0 1 5.376 31.018667 27.690667 27.690667 0 0 1-25.216 16.810667H128a128 128 0 0 0 0 256 29.781333 29.781333 0 0 1 29.226667 20.650666 27.605333 27.605333 0 0 1-5.205334 30.250667l-2.56 2.56a128 128 0 1 0 181.077334 181.077333l2.218666-2.218666a27.733333 27.733333 0 0 1 30.592-5.546667l8.234667 3.626667A25.258667 25.258667 0 0 1 384 760.746667V768a128 128 0 0 0 256 0v-3.669333c0.042667-11.093333 6.656-21.034667 17.237333-25.6a27.605333 27.605333 0 0 1 30.250667 5.248l2.56 2.56a128 128 0 1 0 181.077333-181.077334l-2.218666-2.218666a27.733333 27.733333 0 0 1-5.546667-30.592l3.626667-8.234667c5.12-8.277333 13.184-12.373333 21.76-12.416z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="skip-back" unicode="" d="M768 636.586667L452.266667 384l315.733333-252.586667V636.586667z m16-627.2l-426.666667 341.333333a42.666667 42.666667 0 0 0 0 66.56l426.666667 341.333333A42.666667 42.666667 0 0 0 853.333333 725.333333v-682.666666a42.666667 42.666667 0 0 0-69.333333-33.28zM256 85.333333V682.666667a42.666667 42.666667 0 1 1-85.333333 0v-597.333334a42.666667 42.666667 0 0 1 85.333333 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="shuffle" unicode="" d="M853.333333 554.666667a42.666667 42.666667 0 0 1 85.333334 0V768a42.666667 42.666667 0 0 1-42.666667 42.666667h-213.333333a42.666667 42.666667 0 0 1 0-85.333334h170.666666v-170.666666zM200.832 12.501333l725.333333 725.333334a42.666667 42.666667 0 1 1-60.330666 60.330666l-725.333334-725.333333a42.666667 42.666667 0 0 1 60.330667-60.330667zM682.666667 42.666667a42.666667 42.666667 0 0 1 0-85.333334h213.333333a42.666667 42.666667 0 0 1 42.666667 42.666667v213.333333a42.666667 42.666667 0 0 1-85.333334 0v-170.666666h-170.666666zM609.834667 225.834667l256-256a42.666667 42.666667 0 0 1 60.330666 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330666-60.330666zM140.501333 695.168l213.333334-213.333333a42.666667 42.666667 0 1 1 60.330666 60.330666l-213.333333 213.333334a42.666667 42.666667 0 0 1-60.330667-60.330667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="sidebar" unicode="" d="M85.333333 682.88A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.66666699999996H213.12A127.786667 127.786667 0 0 0 85.333333 85.12V682.88zM341.333333 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88v-597.76c0-23.466667 18.986667-42.453333 42.453333-42.453333H341.333333V725.333333z m85.333334 0v-682.666666h384.213333c23.466667 0 42.453333 18.986667 42.453333 42.453333V682.88A42.453333 42.453333 0 0 1 810.88 725.333333H426.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="skip-forward" unicode="" d="M256 131.413333L571.733333 384 256 636.586667v-505.173334z m-16 627.2l426.666667-341.333333a42.666667 42.666667 0 0 0 0-66.56l-426.666667-341.333333A42.666667 42.666667 0 0 0 170.666667 42.666667V725.333333a42.666667 42.666667 0 0 0 69.333333 33.28zM768 682.666667v-597.333334a42.666667 42.666667 0 0 1 85.333333 0V682.666667a42.666667 42.666667 0 0 1-85.333333 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="slack" unicode="" d="M983.271856 524.026176c103.487213-343.691869 14.332936-507.582171-330.937263-611.495959C308.514752-190.956996 144.539135-101.845377 40.540031 243.339506-62.947182 587.074033 26.207095 750.964335 371.477293 854.920781 716.320916 958.706596 879.614012 870.405471 983.271856 524.026176z m-81.817179-24.52809C811.361935 800.788351 695.632005 863.324318 396.090699 773.14626 95.781557 682.754914 32.477754 566.342464 122.357209 267.952912c90.434003-300.223827 206.889111-363.527629 505.363979-273.690832 300.309142 90.434003 363.612944 206.803796 273.733489 505.236006zM495.866705 626.61758l152.714024-443.638505a42.657549 42.657549 0 0 1 80.708082 27.727406l-152.714024 443.638506a42.657549 42.657549 0 0 1-80.708082-27.727407zM294.523076 557.512352l152.714024-443.638506a42.657549 42.657549 0 0 1 80.708082 27.727407l-152.714024 443.638505a42.657549 42.657549 0 0 1-80.708082-27.727406zM685.308879 601.492284l-443.638506-152.714024a42.657549 42.657549 0 0 1 27.727407-80.708082l443.638505 152.714024a42.657549 42.657549 0 0 1-27.727406 80.708082zM754.414107 400.148655l-443.638505-152.714024a42.657549 42.657549 0 0 1 27.727406-80.708082l443.638506 152.714024a42.657549 42.657549 0 0 1-27.727407 80.708082z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="slash" unicode="" d="M512-85.33333300000004C252.8-85.33333300000004 42.666667 124.79999999999995 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m239.701333 169.301333L211.968 623.701333a384 384 0 0 1 539.733333-539.733333zM272.298667 684.032l539.733333-539.733333a384 384 0 0 1-539.733333 539.733333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="smartphone" unicode="" d="M256 725.76v-683.52c0-23.04 19.285333-42.24 42.922667-42.24h426.154666A42.581333 42.581333 0 0 1 768 42.24V725.76c0 23.04-19.285333 42.24-42.922667 42.24H298.922667A42.581333 42.581333 0 0 1 256 725.76z m-85.333333 0A127.914667 127.914667 0 0 0 298.922667 853.333333h426.154666A128.128 128.128 0 0 0 853.333333 725.76v-683.52A127.914667 127.914667 0 0 0 725.077333-85.333333H298.922667A128.128 128.128 0 0 0 170.666667 42.24V725.76zM512 128m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="square" unicode="" d="M170.666667 682.88v-597.76c0-23.466667 18.986667-42.453333 42.453333-42.453333h597.76c23.466667 0 42.453333 18.986667 42.453333 42.453333V682.88A42.453333 42.453333 0 0 1 810.88 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88z m-85.333334 0A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.666667H213.12A127.786667 127.786667 0 0 0 85.333333 85.12V682.88z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="speaker" unicode="" d="M213.333333 725.76v-683.52c0-23.125333 19.114667-42.24 42.410667-42.24h512.512a42.410667 42.410667 0 0 1 42.410667 42.24V725.76a42.538667 42.538667 0 0 1-42.410667 42.24H255.744A42.410667 42.410667 0 0 1 213.333333 725.76z m-85.333333 0A127.744 127.744 0 0 0 255.744 853.333333h512.512A127.872 127.872 0 0 0 896 725.76v-683.52A127.744 127.744 0 0 0 768.256-85.333333H255.744A127.872 127.872 0 0 0 128 42.24V725.76zM512 640m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0ZM512 85.333333a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333334a128 128 0 1 1 0 256 128 128 0 0 1 0-256z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="star" unicode="" d="M418.432 525.056a42.666667 42.666667 0 0 0-32.085333-23.338667l-209.365334-30.549333 151.466667-147.370667c10.069333-9.770667 14.634667-23.893333 12.288-37.717333l-35.754667-208.085333 187.178667 98.304a42.666667 42.666667 0 0 0 39.68 0l187.178667-98.304-35.754667 208.085333a42.581333 42.581333 0 0 0 12.288 37.717333l151.466667 147.370667-209.365334 30.549333a42.666667 42.666667 0 0 0-32.085333 23.338667L512 714.410667 418.432 525.056z m55.296 304.512a42.666667 42.666667 0 0 0 76.544 0l121.898667-246.741333 272.64-39.808a42.624 42.624 0 0 0 23.637333-72.704l-197.248-191.914667 46.506667-271.146667a42.666667 42.666667 0 0 0-61.866667-44.928L512 90.410667l-243.84-128.085334a42.666667 42.666667 0 0 0-61.866667 44.928l46.506667 271.146667-197.248 191.914667a42.624 42.624 0 0 0 23.594667 72.704l272.64 39.808 121.941333 246.741333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="stop-circle" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM426.666667 469.333333v-170.666666h170.666666v170.666666h-170.666666zM384 554.666667h256a42.666667 42.666667 0 0 0 42.666667-42.666667v-256a42.666667 42.666667 0 0 0-42.666667-42.666667H384a42.666667 42.666667 0 0 0-42.666667 42.666667V512a42.666667 42.666667 0 0 0 42.666667 42.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="sun" unicode="" d="M512 128a256 256 0 1 0 0 512 256 256 0 0 0 0-512z m0 85.333333a170.666667 170.666667 0 1 1 0 341.333334 170.666667 170.666667 0 0 1 0-341.333334zM469.333333 853.333333v-85.333333a42.666667 42.666667 0 0 1 85.333334 0V853.333333a42.666667 42.666667 0 0 1-85.333334 0zM469.333333 0v-85.333333a42.666667 42.666667 0 0 1 85.333334 0v85.333333a42.666667 42.666667 0 0 1-85.333334 0zM149.888 685.781333l60.586667-60.586666a42.666667 42.666667 0 0 1 60.330666 60.330666l-60.586666 60.586667a42.666667 42.666667 0 0 1-60.330667-60.330667zM753.194667 82.474667l60.586666-60.586667a42.666667 42.666667 0 0 1 60.330667 60.330667l-60.586667 60.586666a42.666667 42.666667 0 0 1-60.330666-60.330666zM42.666667 341.333333h85.333333a42.666667 42.666667 0 0 1 0 85.333334H42.666667a42.666667 42.666667 0 0 1 0-85.333334zM896 341.333333h85.333333a42.666667 42.666667 0 0 1 0 85.333334h-85.333333a42.666667 42.666667 0 0 1 0-85.333334zM210.218667 21.888l60.586666 60.586667a42.666667 42.666667 0 0 1-60.330666 60.330666l-60.586667-60.586666a42.666667 42.666667 0 0 1 60.330667-60.330667zM813.525333 625.194667l60.586667 60.586666a42.666667 42.666667 0 1 1-60.330667 60.330667l-60.586666-60.586667a42.666667 42.666667 0 1 1 60.330666-60.330666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="sunrise" unicode="" d="M768 128a256 256 0 1 1-512 0 42.666667 42.666667 0 0 1 85.333333 0 170.666667 170.666667 0 1 0 341.333334 0 42.666667 42.666667 0 0 1 85.333333 0zM469.333333 810.666667v-298.666667a42.666667 42.666667 0 0 1 85.333334 0V810.666667a42.666667 42.666667 0 0 1-85.333334 0zM149.888 429.781333l60.586667-60.586666a42.666667 42.666667 0 1 1 60.330666 60.330666l-60.586666 60.586667a42.666667 42.666667 0 1 1-60.330667-60.330667zM42.666667 85.333333h85.333333a42.666667 42.666667 0 0 1 0 85.333334H42.666667a42.666667 42.666667 0 0 1 0-85.333334zM896 85.333333h85.333333a42.666667 42.666667 0 0 1 0 85.333334h-85.333333a42.666667 42.666667 0 0 1 0-85.333334zM813.525333 369.194667l60.586667 60.586666a42.666667 42.666667 0 1 1-60.330667 60.330667l-60.586666-60.586667a42.666667 42.666667 0 0 1 60.330666-60.330666zM981.333333 0H42.666667a42.666667 42.666667 0 0 1 0-85.333333h938.666666a42.666667 42.666667 0 0 1 0 85.333333zM652.501333 609.834667a42.666667 42.666667 0 0 1 60.330667 60.330666l-170.666667 170.666667a42.666667 42.666667 0 0 1-60.330666 0l-170.666667-170.666667a42.666667 42.666667 0 0 1 60.330667-60.330666L512 750.336l140.501333-140.501333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="tablet" unicode="" d="M810.666667 42.24V725.76a42.538667 42.538667 0 0 1-42.410667 42.24H255.744A42.410667 42.410667 0 0 1 213.333333 725.76v-683.52c0-23.125333 19.114667-42.24 42.410667-42.24h512.512a42.410667 42.410667 0 0 1 42.410667 42.24z m85.333333 0A127.744 127.744 0 0 0 768.256-85.333333H255.744A127.872 127.872 0 0 0 128 42.24V725.76A127.744 127.744 0 0 0 255.744 853.333333h512.512A127.872 127.872 0 0 0 896 725.76v-683.52zM512 128m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="tag" unicode="" d="M841.813333 417.536l-351.146666 351.146667H127.317333V405.333333l351.146667-350.72a42.325333 42.325333 0 0 1 59.904 0l303.36 303.36a42.282667 42.282667 0 0 1 0.085333 59.562667z m59.946667-119.253333l-303.530667-303.488a126.976 126.976 0 0 0-179.626666-0.042667l-363.52 363.093333A42.325333 42.325333 0 0 0 42.666667 387.84V811.093333C42.666667 834.346667 61.610667 853.333333 84.992 853.333333h423.210667c11.221333 0 21.973333-4.48 29.909333-12.373333l363.648-363.648a126.976 126.976 0 0 0 0-179.029333zM298.666667 597.333333m-42.666667 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="sunset" unicode="" d="M768 128a256 256 0 1 1-512 0 42.666667 42.666667 0 0 1 85.333333 0 170.666667 170.666667 0 1 0 341.333334 0 42.666667 42.666667 0 0 1 85.333333 0zM554.666667 512V810.666667a42.666667 42.666667 0 0 1-85.333334 0v-298.666667a42.666667 42.666667 0 0 1 85.333334 0zM149.888 429.781333l60.586667-60.586666a42.666667 42.666667 0 1 1 60.330666 60.330666l-60.586666 60.586667a42.666667 42.666667 0 1 1-60.330667-60.330667zM42.666667 85.333333h85.333333a42.666667 42.666667 0 0 1 0 85.333334H42.666667a42.666667 42.666667 0 0 1 0-85.333334zM896 85.333333h85.333333a42.666667 42.666667 0 0 1 0 85.333334h-85.333333a42.666667 42.666667 0 0 1 0-85.333334zM813.525333 369.194667l60.586667 60.586666a42.666667 42.666667 0 1 1-60.330667 60.330667l-60.586666-60.586667a42.666667 42.666667 0 0 1 60.330666-60.330666zM981.333333 0H42.666667a42.666667 42.666667 0 0 1 0-85.333333h938.666666a42.666667 42.666667 0 0 1 0 85.333333zM371.498667 712.832a42.666667 42.666667 0 0 1-60.330667-60.330667l170.666667-170.666666a42.666667 42.666667 0 0 1 60.330666 0l170.666667 170.666666a42.666667 42.666667 0 1 1-60.330667 60.330667L512 572.330667 371.498667 712.832z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="target" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM512 85.333333a298.666667 298.666667 0 1 0 0 597.333334 298.666667 298.666667 0 0 0 0-597.333334z m0 85.333334a213.333333 213.333333 0 1 1 0 426.666666 213.333333 213.333333 0 0 1 0-426.666666zM512 256a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="thermometer" unicode="" d="M715.216338 38.506413A234.660898 234.660898 0 1 0 341.337529 287.673621V746.670338a149.329662 149.329662 0 0 0 298.659324 0v-459.039382a234.660898 234.660898 0 0 0 75.219485-249.167208zM554.665618 266.255481V746.670338a63.998427 63.998427 0 0 1-127.996854 0v-480.414857a42.665618 42.665618 0 0 0-18.943534-35.455128 149.329662 149.329662 0 1 1 165.883922 0A42.665618 42.665618 0 0 0 554.665618 266.255481z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="thumbs-up" unicode="" d="M850.005333 554.666667a130.730667 130.730667 0 0 0 99.456-43.989334c25.002667-28.373333 36.138667-66.090667 30.378667-103.253333l-59.733333-383.957333c-9.685333-63.146667-65.109333-109.525333-129.365334-108.8H302.421333c-23.893333 0-43.306667 19.114667-43.306666 42.666666V426.666667c0 5.973333 1.28 11.861333 3.754666 17.322666l173.141334 384c6.954667 15.402667 22.442667 25.344 39.552 25.344 95.658667 0 173.184-76.373333 173.184-170.666666v-128h201.258666z m-58.794666-554.666667a43.093333 43.093333 0 0 1 43.306666 36.352l59.733334 383.914667a42.24 42.24 0 0 1-10.112 34.389333 43.861333 43.861333 0 0 1-33.664 14.677333H605.44c-23.893333 0-43.264 19.114667-43.264 42.666667V682.666667c0 38.101333-25.344 70.357333-60.288 81.322666l-156.16-346.368V0h445.482667z m-532.053334 384h-86.613333c-23.893333 0-43.306667-19.114667-43.306667-42.666667v-298.666666c0-23.552 19.413333-42.666667 43.306667-42.666667h86.613333v384z m43.264-469.333333H172.544C100.821333-85.333333 42.666667-28.032 42.666667 42.666667v298.666666c0 70.698667 58.154667 128 129.877333 128h129.877333c23.893333 0 43.264-19.114667 43.264-42.666666v-469.333334c0-23.552-19.370667-42.666667-43.264-42.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="thumbs-down" unicode="" d="M173.482667 213.333333a130.005333 130.005333 0 0 0-98.858667 43.733334 127.104 127.104 0 0 0-30.464 103.637333l59.818667 383.914667A128.853333 128.853333 0 0 0 232.832 853.333333H721.92a42.666667 42.666667 0 0 0 42.666667-42.666666v-469.333334a42.666667 42.666667 0 0 0-3.754667-17.578666l-173.44-384a42.666667 42.666667 0 0 0-38.869333-25.088c-95.274667 0-172.757333 76.245333-172.757334 170.666666v128h-202.24z m58.88 554.666667a43.648 43.648 0 0 1-44.074667-36.437333l-59.818667-383.957334a41.728 41.728 0 0 1 10.112-34.048c8.448-9.557333 20.906667-15.061333 34.432-14.933333h245.376a42.666667 42.666667 0 0 0 42.666667-42.666667v-170.666666c0-38.229333 25.856-70.741333 61.568-81.493334l156.586667 346.709334V768H232.362667z m532.181333-384h73.813333A57.088 57.088 0 0 1 896 429.952V721.92c-4.906667 26.794667-29.141333 46.506667-58.325333 46.037333H764.586667v-384z m-42.666667 469.333333h115.029334C909.184 854.528 971.178667 802.133333 980.906667 731.093333L981.333333 725.333333v-298.666666l-0.426666-5.845334A142.122667 142.122667 0 0 0 837.674667 298.666667H721.92a42.666667 42.666667 0 0 0-42.666667 42.666666V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="toggle-left" unicode="" d="M85.333333 384c0-141.184 114.602667-256 255.616-256h342.101334A255.786667 255.786667 0 0 1 938.666667 384c0 141.184-114.602667 256-255.616 256H340.906667A255.786667 255.786667 0 0 1 85.333333 384z m-85.333333 0c0 188.501333 152.618667 341.333333 340.949333 341.333333h342.101334C871.253333 725.333333 1024 572.288 1024 384c0-188.501333-152.618667-341.333333-340.949333-341.333333H340.906667C152.746667 42.666667 0 195.712 0 384zM341.333333 213.333333a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="toggle-right" unicode="" d="M85.333333 384c0-141.184 114.602667-256 255.616-256h342.101334A255.786667 255.786667 0 0 1 938.666667 384c0 141.184-114.602667 256-255.616 256H340.906667A255.786667 255.786667 0 0 1 85.333333 384z m-85.333333 0c0 188.501333 152.618667 341.333333 340.949333 341.333333h342.101334C871.253333 725.333333 1024 572.288 1024 384c0-188.501333-152.618667-341.333333-340.949333-341.333333H340.906667C152.746667 42.666667 0 195.712 0 384zM682.666667 213.333333a170.666667 170.666667 0 1 0 0 341.333334 170.666667 170.666667 0 0 0 0-341.333334z m0 85.333334a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="trash-" unicode="" d="M128 597.333333h768a42.666667 42.666667 0 0 1 0 85.333334H128a42.666667 42.666667 0 1 1 0-85.333334zM768 640v-597.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 1 1-85.333333 0v-597.333333a128 128 0 0 1 128-128h426.666666a128 128 0 0 1 128 128V640a42.666667 42.666667 0 0 1-85.333333 0zM384 640V725.333333a42.666667 42.666667 0 0 0 42.666667 42.666667h170.666666a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 1 85.333333 0V725.333333a128 128 0 0 1-128 128h-170.666666a128 128 0 0 1-128-128v-85.333333a42.666667 42.666667 0 1 1 85.333333 0zM384 426.666667v-256a42.666667 42.666667 0 0 1 85.333333 0v256a42.666667 42.666667 0 0 1-85.333333 0zM554.666667 426.666667v-256a42.666667 42.666667 0 0 1 85.333333 0v256a42.666667 42.666667 0 0 1-85.333333 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="trash" unicode="" d="M128 597.333333h768a42.666667 42.666667 0 0 1 0 85.333334H128a42.666667 42.666667 0 1 1 0-85.333334zM768 640v-597.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 1 1-85.333333 0v-597.333333a128 128 0 0 1 128-128h426.666666a128 128 0 0 1 128 128V640a42.666667 42.666667 0 0 1-85.333333 0zM384 640V725.333333a42.666667 42.666667 0 0 0 42.666667 42.666667h170.666666a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 1 85.333333 0V725.333333a128 128 0 0 1-128 128h-170.666666a128 128 0 0 1-128-128v-85.333333a42.666667 42.666667 0 1 1 85.333333 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="trending-up" unicode="" d="M392.832 478.165333a42.666667 42.666667 0 0 1-60.330667 0l-320-320a42.666667 42.666667 0 0 1 60.330667-60.330666L362.666667 387.669333l183.168-183.168a42.666667 42.666667 0 0 1 60.330666 0l405.333334 405.333334a42.666667 42.666667 0 1 1-60.330667 60.330666L576 294.997333 392.832 478.165333zM938.666667 384a42.666667 42.666667 0 0 1 85.333333 0V640a42.666667 42.666667 0 0 1-42.666667 42.666667h-256a42.666667 42.666667 0 0 1 0-85.333334h213.333334v-213.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="trending-down" unicode="" d="M72.832 670.165333A42.666667 42.666667 0 0 1 12.501333 609.834667l320-320a42.666667 42.666667 0 0 1 60.330667 0L576 473.002667l375.168-375.168a42.666667 42.666667 0 0 1 60.330667 60.330666l-405.333334 405.333334a42.666667 42.666667 0 0 1-60.330666 0L362.666667 380.330667 72.832 670.165333zM725.333333 170.666667a42.666667 42.666667 0 0 1 0-85.333334h256a42.666667 42.666667 0 0 1 42.666667 42.666667v256a42.666667 42.666667 0 0 1-85.333333 0v-213.333333h-213.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="triangle" unicode="" d="M402.517333 753.237333a128.128 128.128 0 0 0 219.136 0L983.466667 149.333333a128 128 0 0 0-109.909334-192H150.144a128 128 0 0 0-109.098667 192.597334l361.472 603.306666zM114.602667 106.666667A42.666667 42.666667 0 0 1 150.613333 42.666667h722.474667a42.666667 42.666667 0 0 1 36.821333 63.402666L548.565333 709.162667a42.666667 42.666667 0 0 1-72.96 0.085333L114.645333 106.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="type" unicode="" d="M213.333333 682.666667h597.333334v-85.333334a42.666667 42.666667 0 0 1 85.333333 0V725.333333a42.666667 42.666667 0 0 1-42.666667 42.666667H170.666667a42.666667 42.666667 0 0 1-42.666667-42.666667v-128a42.666667 42.666667 0 1 1 85.333333 0V682.666667zM384 0h256a42.666667 42.666667 0 0 1 0 85.333333H384a42.666667 42.666667 0 0 1 0-85.333333zM469.333333 725.333333v-682.666666a42.666667 42.666667 0 0 1 85.333334 0V725.333333a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="twitter" unicode="" d="M956.843947 759.765333c32.213333 22.741333 75.349333-6.698667 66.048-45.056a372.736 372.736 0 0 0-85.12-161.28c0.64-6.869333 0.938667-13.866667 0.981333-20.864C938.75328 25.856 450.390613-234.410667 22.01728 3.925333c-39.253333 21.802667-22.485333 81.792 22.442667 80a453.461333 453.461333 0 0 1 207.957333 41.344c-94.037333 58.026667-154.24 134.869333-183.808 225.792-30.506667 93.866667-26.026667 192.512-0.597333 286.208 7.68 28.330667 15.530667 49.664 21.077333 62.208a42.666667 42.666667 0 0 0 73.898667 7.168A412.032 412.032 0 0 1 469.419947 532.309333a234.112 234.112 0 0 0 150.4 220.288 233.6 233.6 0 0 0 239.274666-44.202666 422.186667 422.186667 0 0 1 97.706667 51.370666z m-97.109334-141.226666a42.666667 42.666667 0 0 0-44.501333 12.885333 148.352 148.352 0 0 1-164.949333 41.344A148.906667 148.906667 0 0 1 554.75328 531.285333v-42.709333a42.666667 42.666667 0 0 0-41.557333-42.709333c-139.093333-3.626667-272.042667 51.2-367.872 148.906666-16.853333-72.832-18.090667-147.925333 4.437333-217.258666 28.885333-88.917333 95.018667-161.066667 208.981333-211.797334 30.592-13.610667 34.346667-55.552 6.656-74.368a538.922667 538.922667 0 0 0-154.88-72.490666C538.198613-67.456 853.419947 150.357333 853.419947 532.437333a149.76 149.76 0 0 1-2.645334 27.562667 42.752 42.752 0 0 0 11.946667 38.442667c9.514667 9.386667 18.304 19.413333 26.368 29.952-9.685333-3.584-19.456-6.826667-29.354667-9.813334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="upload" unicode="" d="M554.666667 665.002667V256a42.666667 42.666667 0 0 0-85.333334 0V665.002667L328.832 524.5013329999999a42.666667 42.666667 0 0 0-60.330667 60.330667l213.333334 213.333333a42.666667 42.666667 0 0 0 60.330666 0l213.333334-213.333333a42.666667 42.666667 0 1 0-60.330667-60.330667L554.666667 665.002667zM853.333333 256a42.666667 42.666667 0 0 0 85.333334 0v-170.666667a128 128 0 0 0-128-128H213.333333a128 128 0 0 0-128 128v170.666667a42.666667 42.666667 0 0 0 85.333334 0v-170.666667a42.666667 42.666667 0 0 1 42.666666-42.666666h597.333334a42.666667 42.666667 0 0 1 42.666666 42.666666v170.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="umbrella" unicode="" d="M554.666667 341.33333300000004v-256a85.333333 85.333333 0 1 1 170.666666 0 42.666667 42.666667 0 0 0 85.333334 0 170.666667 170.666667 0 1 0-341.333334 0v256H42.666667a42.666667 42.666667 0 0 0-42.453334 46.72 514.133333 514.133333 0 0 0 1023.573334 0A42.666667 42.666667 0 0 0 981.333333 341.33333300000004H554.666667zM512 768c-205.098667 0-379.008-144.64-419.84-341.333333h839.68c-40.832 196.693333-214.741333 341.333333-419.84 341.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="upload-cloud" unicode="" d="M652.517547 183.168a42.666667 42.666667 0 0 1 60.330666 60.330667l-170.666666 170.666666a42.666667 42.666667 0 0 1-60.330667 0l-170.666667-170.666666a42.666667 42.666667 0 0 1 60.330667-60.330667L512.016213 323.669333l140.501334-140.501333zM469.349547 384v-384a42.666667 42.666667 0 0 1 85.333333 0v384a42.666667 42.666667 0 0 1-85.333333 0zM427.57888 808.106667a384 384 0 0 1-331.306667-635.818667 42.666667 42.666667 0 1 1 63.957334 56.490667A298.666667 298.666667 0 1 0 673.168213 501.333333a42.666667 42.666667 0 0 1 41.301334-32h53.76a170.666667 170.666667 0 0 0 81.578666-320.512 42.666667 42.666667 0 1 1 40.832-74.922666A256 256 0 0 1 768.272213 554.666667h-22.229333a384 384 0 0 1-318.464 253.44zM652.517547 183.168a42.666667 42.666667 0 0 1 60.330666 60.330667l-170.666666 170.666666a42.666667 42.666667 0 0 1-60.330667 0l-170.666667-170.666666a42.666667 42.666667 0 0 1 60.330667-60.330667L512.016213 323.669333l140.501334-140.501333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="unlock" unicode="" d="M256 469.333333V597.205333c-0.128 131.413333 100.266667 241.621333 232.192 254.805334 131.968 13.226667 252.586667-74.837333 278.954667-203.648a42.666667 42.666667 0 0 0-33.621334-50.261334 43.008 43.008 0 0 0-50.730666 33.28c-17.578667 85.888-97.962667 144.597333-185.941334 135.765334-87.978667-8.789333-154.88-82.218667-154.794666-169.898667V469.333333h468.821333A127.957333 127.957333 0 0 0 938.666667 341.674667v-299.349334A127.701333 127.701333 0 0 0 810.88-85.33333300000004H213.12A127.957333 127.957333 0 0 0 85.333333 42.325333v299.349334A127.701333 127.701333 0 0 0 213.12 469.333333H256z m-85.333333-127.658666v-299.349334c0-23.168 19.157333-42.325333 42.453333-42.325333h597.76c23.466667 0 42.453333 18.944 42.453333 42.325333v299.349334a42.624 42.624 0 0 1-42.453333 42.325333H213.12a42.368 42.368 0 0 1-42.453333-42.325333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="user-check" unicode="" d="M725.333333 0v85.333333a213.333333 213.333333 0 0 1-213.333333 213.333334H213.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a128 128 0 0 0 128 128h298.666667a128 128 0 0 0 128-128v-85.333333a42.666667 42.666667 0 0 1 85.333333 0zM362.666667 384a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256zM755.498667 456.832a42.666667 42.666667 0 0 1-60.330667-60.330667l85.333333-85.333333a42.666667 42.666667 0 0 1 60.330667 0l170.666667 170.666667a42.666667 42.666667 0 1 1-60.330667 60.330666L810.666667 401.664l-55.168 55.168z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="user-minus" unicode="" d="M725.333333 0v85.333333a213.333333 213.333333 0 0 1-213.333333 213.333334H213.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a128 128 0 0 0 128 128h298.666667a128 128 0 0 0 128-128v-85.333333a42.666667 42.666667 0 0 1 85.333333 0zM362.666667 384a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256zM981.333333 469.333333h-256a42.666667 42.666667 0 0 1 0-85.333333h256a42.666667 42.666667 0 0 1 0 85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="user-plus" unicode="" d="M725.333333 0v85.333333a213.333333 213.333333 0 0 1-213.333333 213.333334H213.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a128 128 0 0 0 128 128h298.666667a128 128 0 0 0 128-128v-85.333333a42.666667 42.666667 0 0 1 85.333333 0zM362.666667 384a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256zM810.666667 554.666667v-256a42.666667 42.666667 0 0 1 85.333333 0V554.666667a42.666667 42.666667 0 0 1-85.333333 0zM981.333333 469.333333h-256a42.666667 42.666667 0 0 1 0-85.333333h256a42.666667 42.666667 0 0 1 0 85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="user-x" unicode="" d="M725.333333 0v85.333333a213.333333 213.333333 0 0 1-213.333333 213.333334H213.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a128 128 0 0 0 128 128h298.666667a128 128 0 0 0 128-128v-85.333333a42.666667 42.666667 0 0 1 85.333333 0zM362.666667 384a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256zM737.834667 524.501333l213.333333-213.333333a42.666667 42.666667 0 0 1 60.330667 60.330667l-213.333334 213.333333a42.666667 42.666667 0 0 1-60.330666-60.330667zM951.168 584.832l-213.333333-213.333333a42.666667 42.666667 0 0 1 60.330666-60.330667l213.333334 213.333333a42.666667 42.666667 0 1 1-60.330667 60.330667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="user" unicode="" d="M896 0v85.333333a213.333333 213.333333 0 0 1-213.333333 213.333334H341.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a128 128 0 0 0 128 128h341.333334a128 128 0 0 0 128-128v-85.333333a42.666667 42.666667 0 0 1 85.333333 0zM512 384a213.333333 213.333333 0 1 0 0 426.666667 213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="users" unicode="" d="M768 0v85.333333a213.333333 213.333333 0 0 1-213.333333 213.333334H213.333333a213.333333 213.333333 0 0 1-213.333333-213.333334v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333a128 128 0 0 0 128 128h341.333334a128 128 0 0 0 128-128v-85.333333a42.666667 42.666667 0 0 1 85.333333 0zM384 384A213.333333 213.333333 0 1 0 384 810.666667a213.333333 213.333333 0 0 0 0-426.666667z m0 85.333333a128 128 0 1 1 0 256 128 128 0 0 1 0-256zM1024 0v85.333333a213.333333 213.333333 0 0 1-160 206.421334 42.666667 42.666667 0 1 1-21.333333-82.602667A128 128 0 0 0 938.666667 85.290667V0a42.666667 42.666667 0 0 1 85.333333 0zM672.085333 721.109333a128 128 0 0 0 0-247.978666 42.666667 42.666667 0 0 1 21.162667-82.688 213.333333 213.333333 0 0 1 0 413.354666 42.666667 42.666667 0 0 1-21.162667-82.688z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="video-off" unicode="" d="M640.197128 213.158348v-42.644794a42.644793 42.644793 0 0 0-42.644793-42.644793H128.459607a42.644793 42.644793 0 0 0-42.644793 42.644793V596.961489a42.644793 42.644793 0 0 0 42.644793 42.644793h85.289587a42.644793 42.644793 0 1 1 0 85.289587H128.459607a127.93438 127.93438 0 0 1-127.93438-127.93438v-426.447935a127.93438 127.93438 0 0 1 127.93438-127.93438h469.092728a127.93438 127.93438 0 0 1 127.93438 127.93438v42.644794a42.644793 42.644793 0 0 1-85.289587 0z m316.168499 418.345423l-255.868761-185.078403 55.139718-4.392414-42.644793 42.644793 12.494924-30.149869V596.961489a127.93438 127.93438 0 0 1-127.93438 127.93438h-142.43361a42.644793 42.644793 0 0 1 0-85.289587H597.552335a42.644793 42.644793 0 0 0 42.644793-42.644793v-142.433611a42.644793 42.644793 0 0 1 12.494925-30.149869l42.644793-42.644793a42.644793 42.644793 0 0 1 55.139718-4.392414L938.710682 513.462983V170.513554a42.644793 42.644793 0 0 1 85.289587 0V596.961489a42.644793 42.644793 0 0 1-67.634642 34.542282zM13.020151 822.68038l938.185456-938.185456a42.644793 42.644793 0 0 1 60.299738 60.299738l-938.185456 938.185456A42.644793 42.644793 0 1 1 13.020151 822.68038z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="video" unicode="" d="M956.544427 632.064A42.666667 42.666667 0 0 0 1024.000427 597.333333v-426.666666a42.666667 42.666667 0 0 0-67.456-34.730667l-298.666667 213.333333a42.666667 42.666667 0 0 0 0 69.461334l298.666667 213.333333zM756.05376 384L938.667093 253.568V514.432L756.05376 384zM85.33376 597.077333v-426.154666A42.581333 42.581333 0 0 1 127.659093 128h470.016A42.666667 42.666667 0 0 1 640.000427 170.922667V597.077333A42.581333 42.581333 0 0 1 597.675093 640H127.659093A42.666667 42.666667 0 0 1 85.33376 597.077333z m-85.333333 0A128 128 0 0 0 127.659093 725.333333h470.016A127.914667 127.914667 0 0 0 725.33376 597.077333v-426.154666A128 128 0 0 0 597.675093 42.666667H127.659093A127.914667 127.914667 0 0 0 0.000427 170.922667V597.077333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="voicemail" unicode="" d="M608.306773 256a234.666667 234.666667 0 1 0 181.034667-85.333333h-554.666667a234.666667 234.666667 0 1 0 181.034667 85.333333h192.597333zM234.674773 256a149.333333 149.333333 0 1 1 0 298.666667 149.333333 149.333333 0 0 1 0-298.666667z m554.666667 0a149.333333 149.333333 0 1 1 0 298.666667 149.333333 149.333333 0 0 1 0-298.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="volume-x" unicode="" d="M442.666667 715.946667A42.666667 42.666667 0 0 0 512 682.666667v-597.333334a42.666667 42.666667 0 0 0-69.333333-33.28L241.066667 213.333333H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666667V512a42.666667 42.666667 0 0 0 42.666666 42.666667h155.733334l201.6 161.28z m-160-237.226667A42.666667 42.666667 0 0 0 256 469.333333H128v-170.666666h128a42.666667 42.666667 0 0 0 26.666667-9.386667L426.666667 174.08V593.92l-144-115.2zM951.168 542.165333l-256-256a42.666667 42.666667 0 0 1 60.330667-60.330666l256 256a42.666667 42.666667 0 1 1-60.330667 60.330666zM695.168 481.834667l256-256a42.666667 42.666667 0 0 1 60.330667 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330667-60.330666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="volume-" unicode="" d="M528 715.946667A42.666667 42.666667 0 0 0 597.333333 682.666667v-597.333334a42.666667 42.666667 0 0 0-69.333333-33.28L326.4 213.333333H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V512a42.666667 42.666667 0 0 0 42.666667 42.666667h155.733333l201.6 161.28z m-160-237.226667A42.666667 42.666667 0 0 0 341.333333 469.333333H213.333333v-170.666666h128a42.666667 42.666667 0 0 0 26.666667-9.386667L512 174.08V593.92l-144-115.2zM718.208 504.874667a170.666667 170.666667 0 0 0 0-241.322667 42.666667 42.666667 0 1 1 60.330667-60.330667 256 256 0 0 1 0 361.984 42.666667 42.666667 0 1 1-60.330667-60.330666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="volume-1" unicode="" d="M442.666667 715.946667A42.666667 42.666667 0 0 0 512 682.666667v-597.333334a42.666667 42.666667 0 0 0-69.333333-33.28L241.066667 213.333333H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666667V512a42.666667 42.666667 0 0 0 42.666666 42.666667h155.733334l201.6 161.28z m-160-237.226667A42.666667 42.666667 0 0 0 256 469.333333H128v-170.666666h128a42.666667 42.666667 0 0 0 26.666667-9.386667L426.666667 174.08V593.92l-144-115.2zM783.488 655.488a384 384 0 0 0 0-542.976 42.666667 42.666667 0 1 1 60.330667-60.330667c183.210667 183.253333 183.210667 480.384 0 663.637334a42.666667 42.666667 0 1 1-60.330667-60.330667z m-150.613333-150.613333a170.666667 170.666667 0 0 0 0-241.322667 42.666667 42.666667 0 1 1 60.330666-60.330667 256 256 0 0 1 0 361.984 42.666667 42.666667 0 1 1-60.330666-60.330666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="volume" unicode="" d="M656 715.946667A42.666667 42.666667 0 0 0 725.333333 682.666667v-597.333334a42.666667 42.666667 0 0 0-69.333333-33.28L454.4 213.333333H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V512a42.666667 42.666667 0 0 0 42.666667 42.666667h155.733333l201.6 161.28z m-160-237.226667A42.666667 42.666667 0 0 0 469.333333 469.333333H341.333333v-170.666666h128a42.666667 42.666667 0 0 0 26.666667-9.386667L640 174.08V593.92l-144-115.2z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="watch" unicode="" d="M512 42.66716399999996a341.332622 341.332622 0 1 0 0 682.665245 341.332622 341.332622 0 0 0 0-682.665245z m0 85.333156a255.999467 255.999467 0 1 1 0 511.998933 255.999467 255.999467 0 0 1 0-511.998933zM554.666578 511.99952v-110.33577l51.498559-51.49856a42.666578 42.666578 0 0 0-60.330541-60.33054l-63.999866 63.999866A42.666578 42.666578 0 0 0 469.333422 383.99978699999997V511.99952a42.666578 42.666578 0 0 0 85.333156 0z m107.263776-352.383266a42.666578 42.666578 0 0 0 84.991823-7.765317l-14.933302-163.370326A127.957067 127.957067 0 0 0 604.159808-127.999147H419.584193a127.999733 127.999733 0 0 0-127.999734 116.437091l-14.933302 163.412993a42.666578 42.666578 0 0 0 84.991823 7.765317l14.933302-163.455659c2.005329-22.058621 20.522624-38.911919 42.837244-38.826586h184.916948a42.666578 42.666578 0 0 1 42.666578 38.869252l14.933302 163.412993zM362.069646 608.383319a42.666578 42.666578 0 1 0-84.991823 7.765317l14.933302 163.370327A127.999733 127.999733 0 0 0 419.413526 895.99872h185.428947a127.999733 127.999733 0 0 0 127.999734-116.437091l14.933302-163.412993a42.666578 42.666578 0 0 0-84.991823-7.765317l-14.933302 163.45566A42.709244 42.709244 0 0 1 605.01314 810.665564H419.413526a42.666578 42.666578 0 0 1-42.410578-38.869252l-14.933302-163.412993z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="wifi" unicode="" d="M240.64 327.765333a426.666667 426.666667 0 0 0 546.133333 0 42.666667 42.666667 0 0 1 54.613334 65.536 512 512 0 0 1-655.36 0 42.666667 42.666667 0 1 1 54.613333-65.536zM88.405333 480a640 640 0 0 0 846.762667 0 42.666667 42.666667 0 0 1 56.490667 64C717.44 785.877333 306.133333 785.877333 31.914667 544a42.666667 42.666667 0 1 1 56.490666-64z m299.818667-306.133333a213.333333 213.333333 0 0 0 247.125333 0 42.666667 42.666667 0 0 1 49.408 69.546666 298.666667 298.666667 0 0 1-345.941333 0 42.666667 42.666667 0 0 1 49.408-69.546666zM512 42.666667m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="x-square" unicode="" d="M170.666667 682.88v-597.76c0-23.466667 18.986667-42.453333 42.453333-42.453333h597.76c23.466667 0 42.453333 18.986667 42.453333 42.453333V682.88A42.453333 42.453333 0 0 1 810.88 725.333333H213.12A42.453333 42.453333 0 0 1 170.666667 682.88z m-85.333334 0A127.786667 127.786667 0 0 0 213.12 810.666667h597.76A127.786667 127.786667 0 0 0 938.666667 682.88v-597.76A127.786667 127.786667 0 0 0 810.88-42.666667H213.12A127.786667 127.786667 0 0 0 85.333333 85.12V682.88zM353.834667 481.834667l256-256a42.666667 42.666667 0 0 1 60.330666 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330666-60.330666zM609.834667 542.165333l-256-256a42.666667 42.666667 0 0 1 60.330666-60.330666l256 256a42.666667 42.666667 0 1 1-60.330666 60.330666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="wind" unicode="" d="M439.466667 670.08A42.666667 42.666667 0 1 0 469.461333 597.333333H85.333333a42.666667 42.666667 0 1 1 0-85.333333h384a127.957333 127.957333 0 0 1 64.298667 238.890667 128 128 0 0 1-154.709333-20.650667 42.666667 42.666667 0 0 1 60.501333-60.16z m67.413333-632.32A128 128 0 1 1 597.205333 256H85.333333a42.666667 42.666667 0 0 1 0-85.333333h512a42.709333 42.709333 0 0 0 21.674667-79.616 42.666667 42.666667 0 0 0-51.584 6.869333 42.666667 42.666667 0 1 1-60.501333-60.16z m279.722667 498.218667A64 64 0 1 0 831.914667 426.666667H85.333333a42.666667 42.666667 0 0 1 0-85.333334h746.666667a149.333333 149.333333 0 1 1-105.642667 255.061334 42.666667 42.666667 0 1 1 60.245334-60.416z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="x" unicode="" d="M737.834667 670.165333l-512-512a42.666667 42.666667 0 0 1 60.330666-60.330666l512 512a42.666667 42.666667 0 1 1-60.330666 60.330666zM225.834667 609.834667l512-512a42.666667 42.666667 0 0 1 60.330666 60.330666l-512 512a42.666667 42.666667 0 0 1-60.330666-60.330666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="x-circle" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768zM609.834667 542.165333l-256-256a42.666667 42.666667 0 0 1 60.330666-60.330666l256 256a42.666667 42.666667 0 1 1-60.330666 60.330666zM353.834667 481.834667l256-256a42.666667 42.666667 0 0 1 60.330666 60.330666l-256 256a42.666667 42.666667 0 0 1-60.330666-60.330666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="zap" unicode="" d="M128 256a42.666667 42.666667 0 0 0-32.768 69.973333l426.666667 512c27.264 32.725333 80.384 9.685333 75.093333-32.597333L560.298667 512H896a42.666667 42.666667 0 0 0 32.768-69.973333l-426.666667-512c-27.264-32.725333-80.384-9.685333-75.093333 32.597333l36.693333 293.376H128z m91.093333 85.333333H512a42.666667 42.666667 0 0 0 42.325333-47.957333l-24.618666-196.949333 275.2 330.24H512a42.666667 42.666667 0 0 0-42.325333 47.957333l24.618666 196.949333L219.093333 341.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="zoom-in" unicode="" d="M469.333333 42.666667a384 384 0 1 0 300.032 144.298666l156.8-156.8a42.666667 42.666667 0 0 0-60.330666-60.330666l-156.8 156.8A382.378667 382.378667 0 0 0 469.333333 42.666667z m0 85.333333a298.666667 298.666667 0 1 1 0 597.333333 298.666667 298.666667 0 0 1 0-597.333333zM426.666667 554.666667v-256a42.666667 42.666667 0 0 1 85.333333 0V554.666667a42.666667 42.666667 0 0 1-85.333333 0zM341.333333 384h256a42.666667 42.666667 0 0 1 0 85.333333H341.333333a42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="zoom-out" unicode="" d="M709.034667 126.634667a384 384 0 1 0 60.330666 60.330666l156.8-156.8a42.666667 42.666667 0 0 0-60.330666-60.330666l-156.8 156.8zM469.333333 128a298.666667 298.666667 0 1 1 0 597.333333 298.666667 298.666667 0 0 1 0-597.333333zM341.333333 384h256a42.666667 42.666667 0 0 1 0 85.333333H341.333333a42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="command" unicode="" d="M597.333333 213.33333300000004h-170.666666v-85.333333a170.666667 170.666667 0 1 0-170.666667 170.666667h85.333333v170.666666H256a170.666667 170.666667 0 1 0 170.666667 170.666667v-85.333333h170.666666V640a170.666667 170.666667 0 1 0 170.666667-170.666667h-85.333333v-170.666666h85.333333a170.666667 170.666667 0 1 0-170.666667-170.666667v85.333333z m-170.666666 256v-170.666666h170.666666v170.666666h-170.666666zM341.333333 554.666667V640a85.333333 85.333333 0 1 1-85.333333-85.333333h85.333333z m0-341.333334H256a85.333333 85.333333 0 1 1 85.333333-85.333333v85.333333z m341.333334-85.333333a85.333333 85.333333 0 1 1 85.333333 85.333333h-85.333333v-85.333333z m85.333333 426.666667a85.333333 85.333333 0 1 1-85.333333 85.333333v-85.333333h85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="cloud" unicode="" d="M768.190293 512a255.914667 255.914667 0 1 0 0-511.829333H384.318293A383.914667 383.914667 0 1 0 745.918293 512h22.186667z m0-85.290667h-53.76a42.666667 42.666667 0 0 0-41.301333 32 298.581333 298.581333 0 1 1-288.853333-373.248h383.914666a170.624 170.624 0 1 1 0 341.248z" horiz-adv-x="1044" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="hash" unicode="" d="M170.666667 469.333333h682.666666a42.666667 42.666667 0 0 1 0 85.333334H170.666667a42.666667 42.666667 0 1 1 0-85.333334zM170.666667 213.33333300000004h682.666666a42.666667 42.666667 0 0 1 0 85.333334H170.666667a42.666667 42.666667 0 0 1 0-85.333334zM384.256 772.6933329999999l-85.333333-768a42.666667 42.666667 0 1 1 84.821333-9.386666l85.333333 768a42.666667 42.666667 0 1 1-84.821333 9.386666zM640.256 772.6933329999999l-85.333333-768a42.666667 42.666667 0 1 1 84.821333-9.386666l85.333333 768a42.666667 42.666667 0 1 1-84.821333 9.386666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="headphones" unicode="" d="M85.333333 213.33333300000004v170.666667C85.333333 619.648 276.352 810.666667 512 810.666667s426.666667-191.018667 426.666667-426.666667v-298.666667a128 128 0 0 0-128-128h-42.666667a128 128 0 0 0-128 128v128a128 128 0 0 0 128 128h85.333333v42.666667a341.333333 341.333333 0 0 1-682.666666 0v-42.666667h85.333333a128 128 0 0 0 128-128v-128a128 128 0 0 0-128-128H213.333333a128 128 0 0 0-128 128v128z m768 42.666667h-85.333333a42.666667 42.666667 0 0 1-42.666667-42.666667v-128a42.666667 42.666667 0 0 1 42.666667-42.666666h42.666667a42.666667 42.666667 0 0 1 42.666666 42.666666v170.666667zM170.666667 256v-170.666667a42.666667 42.666667 0 0 1 42.666666-42.666666h42.666667a42.666667 42.666667 0 0 1 42.666667 42.666666v128a42.666667 42.666667 0 0 1-42.666667 42.666667H170.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="underline" unicode="" d="M213.333333 768a42.666667 42.666667 0 1 0 85.333334 0v-298.666667a213.333333 213.333333 0 0 1 426.666666 0V768a42.666667 42.666667 0 0 0 85.333334 0v-298.666667a298.666667 298.666667 0 0 0-597.333334 0V768zM170.666667-42.666667a42.666667 42.666667 0 0 0 0 85.333334h682.666666a42.666667 42.666667 0 0 0 0-85.333334H170.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="italic" unicode="" d="M669.568 682.666667H810.666667a42.666667 42.666667 0 0 1 0 85.333333h-384a42.666667 42.666667 0 1 1 0-85.333333h151.765333l-224-597.333334H213.333333a42.666667 42.666667 0 0 1 0-85.333333h384a42.666667 42.666667 0 0 1 0 85.333333h-151.765333l224 597.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="bold" unicode="" d="M743.936 399.701333A213.333333 213.333333 0 0 0 640 0H256a42.666667 42.666667 0 0 0-42.666667 42.666667V725.333333a42.666667 42.666667 0 0 0 42.666667 42.666667h341.333333a213.333333 213.333333 0 0 0 146.602667-368.298667zM298.666667 682.666667v-256h298.666666a128 128 0 0 1 0 256H298.666667z m0-597.333334h341.333333a128 128 0 0 1 0 256H298.666667v-256z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="crop" unicode="" d="M302.764169 679.379651L682.710044 682.664978a127.999733 127.999733 0 0 0 127.999734-127.999734v-383.9992h170.666311a42.666578 42.666578 0 0 0 0-85.333155h-170.666311v-170.666311a42.666578 42.666578 0 0 0-85.333156 0v170.666311H341.377422c-70.698519 0-127.999733 57.301214-127.999733 128.383732l3.285326 379.561876-173.567638-1.49333a42.666578 42.666578 0 0 0-0.767998 85.333156l175.060968 1.535996L218.924344 853.715288a42.666578 42.666578 0 0 0 85.333156-0.767998l-1.493331-173.567639z m-0.767998-85.333155L298.710844 213.332622a42.666578 42.666578 0 0 1 42.666578-42.666578h383.9992V554.665244c0 23.551951-19.114627 42.666578-42.282578 42.666578l-381.097873-3.285326z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="help-circle" unicode="" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768z m0 128a42.666667 42.666667 0 1 0 0 85.333333 42.666667 42.666667 0 0 0 0-85.333333z m-83.925333 369.834667a42.666667 42.666667 0 1 0-80.469334 28.330666A170.666667 170.666667 0 0 0 679.253333 469.333333c0-54.613333-32.341333-97.706667-82.986666-131.498666a323.2 323.2 0 0 0-74.197334-36.992 42.666667 42.666667 0 1 0-26.965333 80.981333 255.488 255.488 0 0 1 53.845333 27.008c29.312 19.584 44.970667 40.448 44.970667 60.586667a85.333333 85.333333 0 0 1-165.845333 28.416z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="paperclip" unicode="" d="M884.522667 428.586667l-392.106667-392.106667a213.461333 213.461333 0 0 0-301.909333 301.909333l392.106666 392.106667a128.085333 128.085333 0 1 0 181.162667-181.162667l-392.533333-392.106666a42.709333 42.709333 0 1 0-60.416 60.416l362.24 361.813333a42.666667 42.666667 0 0 1-60.288 60.330667l-362.24-361.813334a128.042667 128.042667 0 1 1 181.034666-181.077333l392.533334 392.106667a213.418667 213.418667 0 1 1-301.824 301.824l-392.106667-392.106667a298.794667 298.794667 0 1 1 422.570667-422.570667l392.106666 392.106667a42.666667 42.666667 0 0 1-60.330666 60.330667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="shopping-cart" unicode="" d="M341.333333-128a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334z m512-85.333333a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334zM278.912 682.666667H981.333333a42.666667 42.666667 0 0 0 41.813334-51.029334l-71.68-357.930666A127.786667 127.786667 0 0 0 824.32 170.666667H373.674667a128 128 0 0 0-128 111.36L180.864 773.546667A42.666667 42.666667 0 0 1 138.666667 810.666667H42.666667a42.666667 42.666667 0 1 0 0 85.333333h96.085333a128 128 0 0 0 126.72-111.36L278.869333 682.666667z m51.413333-389.546667c2.773333-21.376 21.077333-37.290667 43.008-37.12h451.84a42.666667 42.666667 0 0 1 42.666667 34.389333L929.28 597.333333H290.133333l40.192-304.213333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="tv" unicode="" d="M409.002667 640L268.501333 780.501333a42.666667 42.666667 0 0 0 60.330667 60.330667L512 657.664l183.168 183.168a42.666667 42.666667 0 0 0 60.330667-60.330667L614.997333 640H853.333333a128 128 0 0 0 128-128v-469.333333a128 128 0 0 0-128-128H170.666667a128 128 0 0 0-128 128V512a128 128 0 0 0 128 128h238.336zM170.666667 554.666667a42.666667 42.666667 0 0 1-42.666667-42.666667v-469.333333a42.666667 42.666667 0 0 1 42.666667-42.666667h682.666666a42.666667 42.666667 0 0 1 42.666667 42.666667V512a42.666667 42.666667 0 0 1-42.666667 42.666667H170.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="wifi-off" unicode="" d="M669.172142 166.544518a42.497957 42.497957 0 0 0-33.035022 7.033262 213.129173 213.129173 0 0 1-246.888835 0 42.625835 42.625835 0 1 0-49.360716 69.480111 298.167714 298.167714 0 0 0 198.721641 54.006932l-118.542446 118.585072a423.700797 423.700797 0 0 1-178.602247-88.278103 42.625835 42.625835 0 1 0-54.688946 65.38803A508.952466 508.952466 0 0 0 350.92766 484.703748L251.950472 583.766187a635.551195 635.551195 0 0 1-162.233927-104.305417A42.625835 42.625835 0 1 0 33.27994 543.31427 720.802864 720.802864 0 0 0 187.926468 647.790191L13.458927 822.300358A42.625835 42.625835 0 1 0 73.731857 882.530663l217.604886-217.562261 1.321401-1.364026 168.158918-168.158918c2.685428-2.131292 5.1151-4.518338 7.246392-7.203766l543.479392-543.479392a42.625835 42.625835 0 0 0-60.315556-60.27293l-282.055148 282.012522zM512.479573-0.122496a42.625835 42.625835 0 1 0 0 85.251669 42.625835 42.625835 0 0 0 0-85.251669z m182.481199 385.380171a42.625835 42.625835 0 0 0 37.425482 76.641251c38.107496-18.62749 73.742694-41.901195 106.053077-69.352233a42.625835 42.625835 0 1 0-55.15783-64.961772 423.700797 423.700797 0 0 1-88.320729 57.672754z m-234.015833 252.003935a42.625835 42.625835 0 0 0-6.862759 84.995914A724.639189 724.639189 0 0 0 991.679207 543.356896a42.625835 42.625835 0 0 0-56.436605-63.938752A639.38752 639.38752 0 0 1 460.902313 637.26161z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="minimize" unicode="" d="M298.666667 768v-128a42.666667 42.666667 0 0 0-42.666667-42.666667H128a42.666667 42.666667 0 1 1 0-85.333333h128a128 128 0 0 1 128 128V768a42.666667 42.666667 0 1 1-85.333333 0z m597.333333-170.666667h-128a42.666667 42.666667 0 0 0-42.666667 42.666667V768a42.666667 42.666667 0 0 1-85.333333 0v-128a128 128 0 0 1 128-128h128a42.666667 42.666667 0 0 1 0 85.333333z m-170.666667-597.333333v128a42.666667 42.666667 0 0 0 42.666667 42.666667h128a42.666667 42.666667 0 0 1 0 85.333333h-128a128 128 0 0 1-128-128v-128a42.666667 42.666667 0 0 1 85.333333 0zM128 170.666667h128a42.666667 42.666667 0 0 0 42.666667-42.666667v-128a42.666667 42.666667 0 0 1 85.333333 0v128a128 128 0 0 1-128 128H128a42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="maximize" unicode="" d="M341.333333 810.666667H213.333333a128 128 0 0 1-128-128v-128a42.666667 42.666667 0 1 1 85.333334 0V682.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h128a42.666667 42.666667 0 1 1 0 85.333334z m597.333334-256V682.666667a128 128 0 0 1-128 128h-128a42.666667 42.666667 0 0 1 0-85.333334h128a42.666667 42.666667 0 0 0 42.666666-42.666666v-128a42.666667 42.666667 0 0 1 85.333334 0z m-256-597.333334h128a128 128 0 0 1 128 128v128a42.666667 42.666667 0 0 1-85.333334 0v-128a42.666667 42.666667 0 0 0-42.666666-42.666666h-128a42.666667 42.666667 0 0 1 0-85.333334zM85.333333 213.333333v-128a128 128 0 0 1 128-128h128a42.666667 42.666667 0 0 1 0 85.333334H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666666v128a42.666667 42.666667 0 0 1-85.333334 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="gitlab" unicode="" d="M537.088-82.730667a42.666667 42.666667 0 0 0-50.176 0L32.341333 247.637333a78.421333 78.421333 0 0 0-28.16 87.594667l52.053334 161.365333 104.96 322.645334c3.413333 8.832 8.832 16.725333 15.701333 22.912a61.269333 61.269333 0 0 0 83.157333-0.810667 59.733333 59.733333 0 0 0 15.616-25.173333L370.176 526.08h283.648l95.274667 293.12c3.413333 8.874667 8.874667 16.768 15.744 22.954667a61.269333 61.269333 0 0 0 83.157333-0.810667 59.733333 59.733333 0 0 0 15.616-25.173333l103.936-319.957334 54.741333-162.133333a78.506667 78.506667 0 0 0-31.573333-87.125333l-453.632-329.685334zM86.869333 313.514667L512 4.522667l426.794667 310.186666-52.224 154.666667-80.725334 248.490667L725.333333 470.229333a42.666667 42.666667 0 0 0-40.576-29.482666h-345.6A42.666667 42.666667 0 0 0 298.666667 470.186667L217.898667 717.952 137.472 470.314667l-50.602667-156.8z" horiz-adv-x="1025" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="sliders" unicode="" d="M810.666667 170.666667v-170.666667a42.666667 42.666667 0 0 1 85.333333 0v170.666667h85.333333a42.666667 42.666667 0 0 1 0 85.333333h-256a42.666667 42.666667 0 0 1 0-85.333333h85.333334zM469.333333 597.333333V768a42.666667 42.666667 0 0 0 85.333334 0v-170.666667h85.333333a42.666667 42.666667 0 0 0 0-85.333333H384a42.666667 42.666667 0 1 0 0 85.333333h85.333333z m-341.333333-341.333333v-256a42.666667 42.666667 0 0 1 85.333333 0v256h85.333334a42.666667 42.666667 0 0 1 0 85.333333H42.666667a42.666667 42.666667 0 0 1 0-85.333333h85.333333z m85.333333 213.333333a42.666667 42.666667 0 0 0-85.333333 0V768a42.666667 42.666667 0 1 0 85.333333 0v-298.666667z m341.333334-469.333333a42.666667 42.666667 0 0 0-85.333334 0v384a42.666667 42.666667 0 0 0 85.333334 0v-384z m341.333333 384a42.666667 42.666667 0 0 0-85.333333 0V768a42.666667 42.666667 0 0 0 85.333333 0v-384z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="star-on" unicode="" d="M473.728 829.568a42.666667 42.666667 0 0 0 76.544 0l121.898667-246.741333 272.64-39.808a42.624 42.624 0 0 0 23.637333-72.704l-197.248-191.914667 46.506667-271.146667a42.666667 42.666667 0 0 0-61.866667-44.928L512 90.410667l-243.84-128.085334a42.666667 42.666667 0 0 0-61.866667 44.928l46.506667 271.146667-197.248 191.914667a42.624 42.624 0 0 0 23.594667 72.704l272.64 39.808 121.941333 246.741333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="heart-on" unicode="" d="M527.061333 729.472A277.333333 277.333333 0 0 0 1000.618667 533.333333a277.333333 277.333333 0 0 0-81.28-196.138666l-377.173334-377.173334a42.666667 42.666667 0 0 0-60.330666 0l-377.173334 377.173334a277.376 277.376 0 0 0 392.277334 392.277333l15.061333-15.061333 15.061333 15.061333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="archive" unicode="" d="M853.333333 512H170.666667v-469.333333h682.666666V512z m85.333334 0v-512a42.666667 42.666667 0 0 0-42.666667-42.666667H128a42.666667 42.666667 0 0 0-42.666667 42.666667V512H42.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V768a42.666667 42.666667 0 0 0 42.666667 42.666667h938.666666a42.666667 42.666667 0 0 0 42.666667-42.666667v-213.333333a42.666667 42.666667 0 0 0-42.666667-42.666667h-42.666666zM85.333333 725.333333v-128h853.333334V725.333333H85.333333z m341.333334-384a42.666667 42.666667 0 0 0 0 85.333334h170.666666a42.666667 42.666667 0 0 0 0-85.333334h-170.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="arrow-down-circle" unicode="" d="M469.333333 316.330667V554.666667a42.666667 42.666667 0 0 0 85.333334 0v-238.336l97.834666 97.834666a42.666667 42.666667 0 0 0 60.330667-60.330666l-170.666667-170.666667a42.666667 42.666667 0 0 0-60.330666 0l-170.666667 170.666667a42.666667 42.666667 0 0 0 60.330667 60.330666L469.333333 316.330667zM512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="arrow-up-circle" unicode="" d="M554.666667 451.669333V213.333333a42.666667 42.666667 0 0 0-85.333334 0v238.336l-97.834666-97.834666a42.666667 42.666667 0 1 0-60.330667 60.330666l170.666667 170.666667a42.666667 42.666667 0 0 0 60.330666 0l170.666667-170.666667a42.666667 42.666667 0 0 0-60.330667-60.330666L554.666667 451.669333zM512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="arrow-left-circle" unicode="" d="M444.330667 426.666667H682.666667a42.666667 42.666667 0 0 0 0-85.333334h-238.336l97.834666-97.834666a42.666667 42.666667 0 0 0-60.330666-60.330667l-170.666667 170.666667a42.666667 42.666667 0 0 0 0 60.330666l170.666667 170.666667a42.666667 42.666667 0 0 0 60.330666-60.330667L444.330667 426.666667zM512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="arrow-right-circle" unicode="" d="M579.669333 341.333333H341.333333a42.666667 42.666667 0 0 0 0 85.333334h238.336l-97.834666 97.834666a42.666667 42.666667 0 1 0 60.330666 60.330667l170.666667-170.666667a42.666667 42.666667 0 0 0 0-60.330666l-170.666667-170.666667a42.666667 42.666667 0 0 0-60.330666 60.330667L579.669333 341.333333zM512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 85.333333a384 384 0 1 1 0 768 384 384 0 0 1 0-768z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="bar-chart-line-" unicode="" d="M810.666667 42.666667a42.666667 42.666667 0 0 0-85.333334 0V469.333333a42.666667 42.666667 0 0 0 85.333334 0v-426.666666z m-256 0a42.666667 42.666667 0 0 0-85.333334 0V725.333333a42.666667 42.666667 0 0 0 85.333334 0v-682.666666z m-256 0a42.666667 42.666667 0 0 0-85.333334 0v256a42.666667 42.666667 0 0 0 85.333334 0v-256z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="bar-chart-line" unicode="" d="M554.666667 42.666667a42.666667 42.666667 0 0 0-85.333334 0V469.333333a42.666667 42.666667 0 0 0 85.333334 0v-426.666666z m256 0a42.666667 42.666667 0 0 0-85.333334 0V725.333333a42.666667 42.666667 0 0 0 85.333334 0v-682.666666zM298.666667 42.666667a42.666667 42.666667 0 0 0-85.333334 0v170.666666a42.666667 42.666667 0 0 0 85.333334 0v-170.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="book-open" unicode="" d="M128 725.333333v-554.666666h256c31.104 0 60.245333-8.32 85.333333-22.826667V597.333333a128 128 0 0 1-128 128H128z m384-768c-21.333333 0-42.666667 14.208-42.666667 42.666667a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666667V768a42.666667 42.666667 0 0 0 42.666666 42.666667h256c69.802667 0 131.754667-33.493333 170.666667-85.333334a212.992 212.992 0 0 0 170.666667 85.333334h256a42.666667 42.666667 0 0 0 42.666666-42.666667v-640a42.666667 42.666667 0 0 0-42.666666-42.666667h-298.666667a85.333333 85.333333 0 0 1-85.333333-85.333333c0-28.458667-21.333333-42.666667-42.666667-42.666667s-42.666667 14.208-42.666667 42.666667c0 63.146667 34.304 118.314667 85.333334 147.84V0c0-28.458667-21.333333-42.666667-42.666667-42.666667z m384 768h-213.333333a128 128 0 0 1-128-128v-449.493333A169.898667 169.898667 0 0 0 640 170.666667h256V725.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="code" unicode="" d="M652.501333 609.834667a42.666667 42.666667 0 1 0 60.330667 60.330666l256-256a42.666667 42.666667 0 0 0 0-60.330666l-256-256a42.666667 42.666667 0 0 0-60.330667 60.330666L878.336 384l-225.834667 225.834667zM145.664 384l225.834667-225.834667a42.666667 42.666667 0 0 0-60.330667-60.330666l-256 256a42.666667 42.666667 0 0 0 0 60.330666l256 256a42.666667 42.666667 0 0 0 60.330667-60.330666L145.664 384z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="database" unicode="" d="M170.666667 574.805333V384c0-34.688 151.722667-85.333333 341.333333-85.333333s341.333333 50.645333 341.333333 85.333333V574.805333C775.466667 534.357333 651.52 512 512 512c-139.52 0-263.466667 22.357333-341.333333 62.805333zM85.333333 682.666667c0 106.965333 191.146667 170.666667 426.666667 170.666666s426.666667-63.701333 426.666667-170.666666v-597.333334c0-107.178667-190.208-170.666667-426.666667-170.666666S85.333333-21.845333 85.333333 85.333333V682.666667z m768-406.741334C775.637333 235.52 651.946667 213.333333 512 213.333333c-139.946667 0-263.637333 22.229333-341.333333 62.592V85.333333c0-34.688 151.722667-85.333333 341.333333-85.333333s341.333333 50.645333 341.333333 85.333333v190.592zM512 597.333333c188.586667 0 341.333333 50.901333 341.333333 85.333334 0 34.432-152.746667 85.333333-341.333333 85.333333S170.666667 717.098667 170.666667 682.666667c0-34.432 152.746667-85.333333 341.333333-85.333334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="dollar-sign" unicode="" d="M554.666667 725.333333h170.666666a42.666667 42.666667 0 0 0 0-85.333333h-170.666666v-213.333333h64a192 192 0 0 0 0-384H554.666667v-128a42.666667 42.666667 0 0 0-85.333334 0v128H256a42.666667 42.666667 0 0 0 0 85.333333h213.333333v213.333333H405.333333a192 192 0 1 0 0 384H469.333333V853.333333a42.666667 42.666667 0 0 0 85.333334 0v-128z m0-384v-213.333333h64a106.666667 106.666667 0 0 1 0 213.333333H554.666667z m-85.333334 85.333334V640H405.333333a106.666667 106.666667 0 1 1 0-213.333333H469.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="folder-plus" unicode="" d="M554.666667 341.333333h85.333333a42.666667 42.666667 0 0 0 0-85.333333h-85.333333v-85.333333a42.666667 42.666667 0 0 0-85.333334 0v85.333333H384a42.666667 42.666667 0 0 0 0 85.333333h85.333333v85.333334a42.666667 42.666667 0 0 0 85.333334 0v-85.333334z m-62.506667 341.333334H853.333333a128 128 0 0 0 128-128v-469.333334a128 128 0 0 0-128-128H170.666667a128 128 0 0 0-128 128V682.666667a128 128 0 0 0 128 128h213.333333a42.666667 42.666667 0 0 0 35.498667-18.986667L492.16 682.666667z m-130.986667 42.666666H170.666667a42.666667 42.666667 0 0 1-42.666667-42.666666v-597.333334a42.666667 42.666667 0 0 1 42.666667-42.666666h682.666666a42.666667 42.666667 0 0 1 42.666667 42.666666V554.666667a42.666667 42.666667 0 0 1-42.666667 42.666666h-384a42.666667 42.666667 0 0 0-35.498666 18.986667L361.173333 725.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="gift" unicode="" d="M838.954667 640H938.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-213.333333a42.666667 42.666667 0 0 0-42.666666-42.666667h-42.666667v-384a42.666667 42.666667 0 0 0-42.666667-42.666666H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666666v384H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666667V597.333333a42.666667 42.666667 0 0 0 42.666666 42.666667h99.712A149.333333 149.333333 0 0 0 320 853.333333c83.626667 0 145.962667-49.834667 189.397333-128.768l2.602667-4.821333 2.602667 4.821333C558.08 803.498667 620.373333 853.333333 704 853.333333a149.333333 149.333333 0 0 0 134.954667-213.333333zM554.666667 554.666667v-128h341.333333V554.666667h-341.333333z m-85.333334 0H128v-128h341.333333V554.666667z m85.333334-554.666667h256v341.333333h-256v-341.333333z m-85.333334 0v341.333333H213.333333v-341.333333h256z m-34.730666 683.434667C404.693333 737.834667 367.018667 768 320 768a64 64 0 0 1 0-128h134.570667a347.904 347.904 0 0 1-19.968 43.434667zM704 640a64 64 0 0 1 0 128c-47.018667 0-84.693333-30.165333-114.602667-84.565333A347.861333 347.861333 0 0 1 569.429333 640H704z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="folder-minus" unicode="" d="M492.16 682.666667H853.333333a128 128 0 0 0 128-128v-469.333334a128 128 0 0 0-128-128H170.666667a128 128 0 0 0-128 128V682.666667a128 128 0 0 0 128 128h213.333333a42.666667 42.666667 0 0 0 35.498667-18.986667L492.16 682.666667z m-130.986667 42.666666H170.666667a42.666667 42.666667 0 0 1-42.666667-42.666666v-597.333334a42.666667 42.666667 0 0 1 42.666667-42.666666h682.666666a42.666667 42.666667 0 0 1 42.666667 42.666666V554.666667a42.666667 42.666667 0 0 1-42.666667 42.666666h-384a42.666667 42.666667 0 0 0-35.498666 18.986667L361.173333 725.333333zM384 256a42.666667 42.666667 0 0 0 0 85.333333h256a42.666667 42.666667 0 0 0 0-85.333333H384z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="git-commit" unicode="" d="M721.109333 341.589333a213.418667 213.418667 0 0 0-418.218666-0.042666A43.178667 43.178667 0 0 0 298.666667 341.333333H44.8a42.666667 42.666667 0 0 0 0 85.333334H298.666667c1.408 0 2.816-0.085333 4.224-0.213334a213.418667 213.418667 0 0 0 418.218666 0c1.536 0.128 3.072 0.213333 4.650667 0.213334h253.866667a42.666667 42.666667 0 0 0 0-85.333334h-253.866667c-1.578667 0-3.114667 0.085333-4.650667 0.256zM512 256a128 128 0 1 1 0 256 128 128 0 0 1 0-256z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="git-branch" unicode="" d="M421.717333 86.997333A170.752 170.752 0 0 0 85.333333 128a170.752 170.752 0 0 0 128 165.290667V768a42.666667 42.666667 0 1 0 85.333334 0v-474.709333a170.965333 170.965333 0 0 0 122.112-120.661334 341.461333 341.461333 0 0 1 302.592 302.592A170.752 170.752 0 0 0 768 810.666667a170.666667 170.666667 0 0 0 41.002667-336.384 426.794667 426.794667 0 0 0-387.285334-387.285334zM768 554.666667a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666zM256 42.666667a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="git-pull-request" unicode="" d="M213.333333 474.709333A170.752 170.752 0 0 0 256 810.666667a170.666667 170.666667 0 0 0 42.666667-335.957334V0a42.666667 42.666667 0 0 0-85.333334 0V474.709333z m512-181.418666V554.666667a42.666667 42.666667 0 0 1-42.666666 42.666666h-128a42.666667 42.666667 0 0 0 0 85.333334h128a128 128 0 0 0 128-128v-261.376A170.752 170.752 0 0 0 768-42.666667a170.666667 170.666667 0 0 0-42.666667 335.957334zM768 42.666667a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666zM256 554.666667a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="git-merge" unicode="" d="M602.282667 86.997333A426.154667 426.154667 0 0 0 298.666667 255.957333V0a42.666667 42.666667 0 0 0-85.333334 0V474.709333A170.752 170.752 0 0 0 256 810.666667a170.666667 170.666667 0 0 0 44.629333-335.445334 341.461333 341.461333 0 0 1 302.592-302.592A170.752 170.752 0 0 0 938.666667 128a170.666667 170.666667 0 0 0-336.384-41.002667zM768 42.666667a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666zM256 554.666667a85.333333 85.333333 0 1 1 0 170.666666 85.333333 85.333333 0 0 1 0-170.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="linkedin" unicode="" d="M682.666667 554.666667a298.666667 298.666667 0 0 0 298.666666-298.666667v-298.666667a42.666667 42.666667 0 0 0-42.666666-42.666666h-170.666667a42.666667 42.666667 0 0 0-42.666667 42.666666v298.666667a42.666667 42.666667 0 0 1-85.333333 0v-298.666667a42.666667 42.666667 0 0 0-42.666667-42.666666h-170.666666a42.666667 42.666667 0 0 0-42.666667 42.666666v298.666667a298.666667 298.666667 0 0 0 298.666667 298.666667z m213.333333-554.666667v256a213.333333 213.333333 0 0 1-426.666667 0v-256h85.333334v256a128 128 0 0 0 256 0v-256h85.333333zM85.333333 512h170.666667a42.666667 42.666667 0 0 0 42.666667-42.666667v-512a42.666667 42.666667 0 0 0-42.666667-42.666666H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666666V469.333333a42.666667 42.666667 0 0 0 42.666666 42.666667z m42.666667-85.333333v-426.666667h85.333333V426.666667H128z m42.666667 128a128 128 0 1 0 0 256 128 128 0 0 0 0-256z m0 85.333333a42.666667 42.666667 0 1 1 0 85.333333 42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="hard-drive" unicode="" d="M976.426667 403.882667A42.368 42.368 0 0 0 981.333333 384v-256a128 128 0 0 0-128-128H170.666667a128 128 0 0 0-128 128v256a42.666667 42.666667 0 0 0 4.906666 19.882667l146.773334 293.12A128 128 0 0 0 308.906667 768h406.186666c48.597333 0 92.970667-27.562667 114.517334-70.912l146.816-293.205333zM869.589333 426.666667l-116.352 232.32A42.666667 42.666667 0 0 1 715.093333 682.666667H308.906667a42.666667 42.666667 0 0 1-38.144-23.68L154.410667 426.666667h715.178666zM896 341.333333H128v-213.333333a42.666667 42.666667 0 0 1 42.666667-42.666667h682.666666a42.666667 42.666667 0 0 1 42.666667 42.666667v213.333333zM256 170.666667a42.666667 42.666667 0 1 0 0 85.333333 42.666667 42.666667 0 0 0 0-85.333333z m170.666667 0a42.666667 42.666667 0 1 0 0 85.333333 42.666667 42.666667 0 0 0 0-85.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="more-vertical-" unicode="" d="M512 298.666667a85.333333 85.333333 0 1 0 0 170.666666 85.333333 85.333333 0 0 0 0-170.666666z m0 298.666666a85.333333 85.333333 0 1 0 0 170.666667 85.333333 85.333333 0 0 0 0-170.666667z m0-597.333333a85.333333 85.333333 0 1 0 0 170.666667 85.333333 85.333333 0 0 0 0-170.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="more-horizontal-" unicode="" d="M512 298.666667a85.333333 85.333333 0 1 0 0 170.666666 85.333333 85.333333 0 0 0 0-170.666666z m298.666667 0a85.333333 85.333333 0 1 0 0 170.666666 85.333333 85.333333 0 0 0 0-170.666666zM213.333333 298.666667a85.333333 85.333333 0 1 0 0 170.666666 85.333333 85.333333 0 0 0 0-170.666666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="rss" unicode="" d="M170.666667 384a42.666667 42.666667 0 0 0 0 85.333333c235.648 0 426.666667-191.018667 426.666666-426.666666a42.666667 42.666667 0 0 0-85.333333 0 341.333333 341.333333 0 0 1-341.333333 341.333333z m0 298.666667a42.666667 42.666667 0 1 0 0 85.333333c400.597333 0 725.333333-324.736 725.333333-725.333333a42.666667 42.666667 0 0 0-85.333333 0c0 353.450667-286.549333 640-640 640z m42.666666-682.666667a85.333333 85.333333 0 1 0 0 170.666667 85.333333 85.333333 0 0 0 0-170.666667z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="send" unicode="" d="M923.690667 850.645333a42.666667 42.666667 0 0 0 54.954666-54.954666l-298.368-852.48c-12.8-36.437333-63.573333-38.528-79.274666-3.2l-164.010667 368.981333-368.981333 164.010667c-35.328 15.701333-33.28 66.517333 3.242666 79.274666l852.437334 298.368z m-147.413334-141.994666L201.002667 507.264l258.901333-115.029333 316.373333 316.416z m60.373334-60.373334l-316.416-316.373333 115.029333-258.901333 201.386667 575.274666z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="shield-off" unicode="" d="M781.789867 174.592l0.426666-0.426667 229.290667-229.333333a42.666667 42.666667 0 0 0-60.330667-60.330667l-198.528 198.528a908.373333 908.373333 0 0 0-220.714666-163.413333 42.666667 42.666667 0 0 0-38.997334-0.426667 738.56 738.56 0 0 0-56.874666 32.64 958.506667 958.506667 0 0 0-122.837334 90.709334C198.237867 143.232 128.008533 257.322667 128.008533 384V682.666667c0 7.125333 1.792 13.994667 4.992 20.010666L12.509867 823.168A42.666667 42.666667 0 1 0 72.840533 883.498667l158.506667-158.506667 1.322667-1.28 549.12-549.12zM213.341867 622.336V384c0-97.28 57.770667-191.189333 156.117333-277.205333a874.24 874.24 0 0 1 142.506667-100.906667 823.04 823.04 0 0 1 180.352 137.472L213.341867 622.336z m298.666666 142.762667L392.1152 720.341333a42.666667 42.666667 0 0 0-29.866667 79.957334l134.826667 50.346666a42.666667 42.666667 0 0 0 29.909333 0l341.333334-128A42.666667 42.666667 0 0 0 896.008533 682.666667v-298.965334a337.066667 337.066667 0 0 0-15.146666-97.706666 42.666667 42.666667 0 0 0-81.493334 25.301333A251.306667 251.306667 0 0 1 810.6752 384V653.098667l-298.666667 112z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="shopping-bag" unicode="" d="M929.877333 665.941333A42.794667 42.794667 0 0 0 938.666667 640v-597.333333a128 128 0 0 0-128-128H213.333333a128 128 0 0 0-128 128V640a42.666667 42.666667 0 0 0 8.789334 25.941333L221.866667 836.266667A42.666667 42.666667 0 0 0 256 853.333333h512a42.666667 42.666667 0 0 0 34.133333-17.066666l127.744-170.325334zM810.666667 682.666667l-64 85.333333h-469.333334L213.333333 682.666667h597.333334z m42.666666-85.333334H170.666667v-554.666666a42.666667 42.666667 0 0 1 42.666666-42.666667h597.333334a42.666667 42.666667 0 0 1 42.666666 42.666667V597.333333z m-213.333333-128a42.666667 42.666667 0 0 0 85.333333 0 213.333333 213.333333 0 0 0-426.666666 0 42.666667 42.666667 0 1 0 85.333333 0 128 128 0 0 1 256 0z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="terminal" unicode="" d="M140.501333 652.501333a42.666667 42.666667 0 0 0 60.330667 60.330667l256-256a42.666667 42.666667 0 0 0 0-60.330667l-256-256a42.666667 42.666667 0 1 0-60.330667 60.330667L366.336 426.666667 140.501333 652.501333zM512 42.666667a42.666667 42.666667 0 0 0 0 85.333333h341.333333a42.666667 42.666667 0 0 0 0-85.333333h-341.333333z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="truck" unicode="" d="M924.288 170.666667a149.333333 149.333333 0 1 0-269.909333 0H369.621333a149.333333 149.333333 0 1 0-269.909333 0H42.666667a42.666667 42.666667 0 0 0-42.666667 42.666666V768a42.666667 42.666667 0 0 0 42.666667 42.666667h640a42.666667 42.666667 0 0 0 42.666666-42.666667v-170.666667h128a42.666667 42.666667 0 0 0 30.165334-12.501333l128-128A42.666667 42.666667 0 0 0 1024 426.666667v-213.333334a42.666667 42.666667 0 0 0-42.666667-42.666666h-57.045333zM640 554.666667V725.333333H85.333333v-469.333333h554.666667V554.666667z m85.333333-42.666667v-256h213.333334v153.002667L835.669333 512H725.333333zM234.666667 42.666667a64 64 0 1 1 0 128 64 64 0 0 1 0-128z m554.666666 0a64 64 0 1 1 0 128 64 64 0 0 1 0-128z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="zap-off" unicode="" d="M283.613867 552.064L12.509867 823.168A42.666667 42.666667 0 1 0 72.840533 883.498667L371.208533 585.130667l0.682667-0.682667 340.650667-340.650667 0.682666-0.682666 298.282667-298.24a42.666667 42.666667 0 0 0-60.330667-60.373334l-265.642666 265.642667-183.424-220.16c-27.264-32.682667-80.384-9.642667-75.093334 32.64l36.693334 293.376H128.008533a42.666667 42.666667 0 0 0-32.768 69.973333L283.613867 552.106667z m60.586666-60.586667L219.101867 341.333333h275.2L344.2432 491.477333z m208.810667-208.810666l-23.296-186.24 95.232 114.304-71.936 71.936zM483.805867 658.773333A42.666667 42.666667 0 1 0 418.141867 713.386667l103.68 124.586666c27.264 32.725333 80.384 9.728 75.136-32.554666l-25.173334-202.666667a42.666667 42.666667 0 1 0-84.650666 10.496l7.253333 58.282667-10.666667-12.757334zM668.168533 426.666667a42.666667 42.666667 0 0 0 0 85.333333H896.008533a42.666667 42.666667 0 0 0 32.768-70.016l-103.68-124.16a42.666667 42.666667 0 0 0-65.536 54.698667L804.7872 426.666667H668.168533z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
<glyph glyph-name="youtube" unicode="" d="M1003.093333 632.448l0.64-2.773333A1278.72 1278.72 0 0 0 1024 394.837333a1279.573333 1279.573333 0 0 0-20.906667-234.538666 161.536 161.536 0 0 0-113.152-116.181334c-32.426667-8.661333-95.658667-13.994667-184.618666-17.365333a5295.061333 5295.061333 0 0 0-253.781334-3.242667c-45.269333 0.554667-90.538667 1.621333-132.906666 3.242667-88.917333 3.413333-152.192 8.704-184.832 17.408-54.442667 14.933333-97.109333 57.173333-113.493334 115.498667A1278.464 1278.464 0 0 0 0 394.453333C-0.426667 472.746667 6.4 550.912 20.906667 630.741333a161.536 161.536 0 0 0 113.109333 116.181334c32.426667 8.661333 95.701333 13.994667 184.618667 17.365333a5295.061333 5295.061333 0 0 0 253.738666 3.285333c45.226667-0.512 90.496-1.450667 132.821334-2.944 88.661333-3.072 151.765333-7.936 185.344-16.170666a161.28 161.28 0 0 0 112.554666-116.053334z m-83.072-19.498667a75.392 75.392 0 0 1-51.2 53.034667c-24.064 5.845333-84.48 10.496-166.570666 13.354667a5711.914667 5711.914667 0 0 1-249.6 2.858666c-44.586667-0.554667-89.173333-1.578667-130.688-3.157333-81.792-3.114667-142.08-8.192-165.248-14.378667-26.197333-7.424-46.421333-28.245333-52.394667-51.84A1196.202667 1196.202667 0 0 1 85.333333 394.368c-0.469333-73.6 5.845333-147.072 17.962667-215.466667 7.253333-25.514667 27.392-45.397333 52.778667-52.352 23.765333-6.357333 84.053333-11.434667 165.845333-14.506666a5212.416 5212.416 0 0 1 249.429333-3.2c44.586667 0.554667 89.173333 1.578667 130.688 3.157333 81.792 3.114667 142.08 8.192 165.248 14.378667 26.197333 7.424 46.421333 28.245333 52.394667 51.84 12.885333 71.381333 19.2 143.786667 18.986667 216.746666a1194.666667 1194.666667 0 0 1-18.688 218.026667z m-482.901333-394.88a42.666667 42.666667 0 0 0-63.744 37.077334V534.186667a42.666667 42.666667 0 0 0 63.744 37.12l245.333333-139.52a42.666667 42.666667 0 0 0 0-74.24l-245.333333-139.52z m137.941333 176.597334L458.666667 460.8v-132.266667l116.352 66.133334z" horiz-adv-x="1024" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</font>
|
||||||
|
</defs></svg>
|
After Width: | Height: | Size: 208 KiB |
BIN
src/@core/assets/fonts/feather/fonts/feather.ttf
Normal file
BIN
src/@core/assets/fonts/feather/fonts/feather.ttf
Normal file
Binary file not shown.
BIN
src/@core/assets/fonts/feather/fonts/feather.woff
Normal file
BIN
src/@core/assets/fonts/feather/fonts/feather.woff
Normal file
Binary file not shown.
1112
src/@core/assets/fonts/feather/iconfont.css
Normal file
1112
src/@core/assets/fonts/feather/iconfont.css
Normal file
File diff suppressed because it is too large
Load Diff
15
src/@core/auth/jwt/jwtDefaultConfig.js
Normal file
15
src/@core/auth/jwt/jwtDefaultConfig.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
export default {
|
||||||
|
// Endpoints
|
||||||
|
loginEndpoint: '/jwt/login',
|
||||||
|
registerEndpoint: '/jwt/register',
|
||||||
|
refreshEndpoint: '/jwt/refresh-token',
|
||||||
|
logoutEndpoint: '/jwt/logout',
|
||||||
|
|
||||||
|
// This will be prefixed in authorization header with token
|
||||||
|
// e.g. Authorization: Bearer <token>
|
||||||
|
tokenType: 'Bearer',
|
||||||
|
|
||||||
|
// Value of this property will be used as key to store JWT token in storage
|
||||||
|
storageTokenKeyName: 'accessToken',
|
||||||
|
storageRefreshTokenKeyName: 'refreshToken',
|
||||||
|
}
|
111
src/@core/auth/jwt/jwtService.js
Normal file
111
src/@core/auth/jwt/jwtService.js
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
import jwtDefaultConfig from './jwtDefaultConfig'
|
||||||
|
|
||||||
|
export default class JwtService {
|
||||||
|
// Will be used by this service for making API calls
|
||||||
|
axiosIns = null
|
||||||
|
|
||||||
|
// jwtConfig <= Will be used by this service
|
||||||
|
jwtConfig = { ...jwtDefaultConfig }
|
||||||
|
|
||||||
|
// For Refreshing Token
|
||||||
|
isAlreadyFetchingAccessToken = false
|
||||||
|
|
||||||
|
// For Refreshing Token
|
||||||
|
subscribers = []
|
||||||
|
|
||||||
|
constructor(axiosIns, jwtOverrideConfig) {
|
||||||
|
this.axiosIns = axiosIns
|
||||||
|
this.jwtConfig = { ...this.jwtConfig, ...jwtOverrideConfig }
|
||||||
|
|
||||||
|
// Request Interceptor
|
||||||
|
this.axiosIns.interceptors.request.use(
|
||||||
|
config => {
|
||||||
|
// Get token from localStorage
|
||||||
|
const accessToken = this.getToken()
|
||||||
|
|
||||||
|
// If token is present add it to request's Authorization Header
|
||||||
|
if (accessToken) {
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
|
config.headers.Authorization = `${this.jwtConfig.tokenType} ${accessToken}`
|
||||||
|
}
|
||||||
|
return config
|
||||||
|
},
|
||||||
|
error => Promise.reject(error),
|
||||||
|
)
|
||||||
|
|
||||||
|
// Add request/response interceptor
|
||||||
|
this.axiosIns.interceptors.response.use(
|
||||||
|
response => response,
|
||||||
|
error => {
|
||||||
|
// const { config, response: { status } } = error
|
||||||
|
const { config, response } = error
|
||||||
|
const originalRequest = config
|
||||||
|
|
||||||
|
// if (status === 401) {
|
||||||
|
if (response && response.status === 401) {
|
||||||
|
if (!this.isAlreadyFetchingAccessToken) {
|
||||||
|
this.isAlreadyFetchingAccessToken = true
|
||||||
|
this.refreshToken().then(r => {
|
||||||
|
this.isAlreadyFetchingAccessToken = false
|
||||||
|
|
||||||
|
// Update accessToken in localStorage
|
||||||
|
this.setToken(r.data.accessToken)
|
||||||
|
this.setRefreshToken(r.data.refreshToken)
|
||||||
|
|
||||||
|
this.onAccessTokenFetched(r.data.accessToken)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const retryOriginalRequest = new Promise(resolve => {
|
||||||
|
this.addSubscriber(accessToken => {
|
||||||
|
// Make sure to assign accessToken according to your response.
|
||||||
|
// Check: https://pixinvent.ticksy.com/ticket/2413870
|
||||||
|
// Change Authorization header
|
||||||
|
originalRequest.headers.Authorization = `${this.jwtConfig.tokenType} ${accessToken}`
|
||||||
|
resolve(this.axiosIns(originalRequest))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
return retryOriginalRequest
|
||||||
|
}
|
||||||
|
return Promise.reject(error)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
onAccessTokenFetched(accessToken) {
|
||||||
|
this.subscribers = this.subscribers.filter(callback => callback(accessToken))
|
||||||
|
}
|
||||||
|
|
||||||
|
addSubscriber(callback) {
|
||||||
|
this.subscribers.push(callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
getToken() {
|
||||||
|
return localStorage.getItem(this.jwtConfig.storageTokenKeyName)
|
||||||
|
}
|
||||||
|
|
||||||
|
getRefreshToken() {
|
||||||
|
return localStorage.getItem(this.jwtConfig.storageRefreshTokenKeyName)
|
||||||
|
}
|
||||||
|
|
||||||
|
setToken(value) {
|
||||||
|
localStorage.setItem(this.jwtConfig.storageTokenKeyName, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
setRefreshToken(value) {
|
||||||
|
localStorage.setItem(this.jwtConfig.storageRefreshTokenKeyName, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
login(...args) {
|
||||||
|
return this.axiosIns.post(this.jwtConfig.loginEndpoint, ...args)
|
||||||
|
}
|
||||||
|
|
||||||
|
register(...args) {
|
||||||
|
return this.axiosIns.post(this.jwtConfig.registerEndpoint, ...args)
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshToken() {
|
||||||
|
return this.axiosIns.post(this.jwtConfig.refreshEndpoint, {
|
||||||
|
refreshToken: this.getRefreshToken(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
9
src/@core/auth/jwt/useJwt.js
Normal file
9
src/@core/auth/jwt/useJwt.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import JwtService from './jwtService'
|
||||||
|
|
||||||
|
export default function useJwt(axiosIns, jwtOverrideConfig) {
|
||||||
|
const jwt = new JwtService(axiosIns, jwtOverrideConfig)
|
||||||
|
|
||||||
|
return {
|
||||||
|
jwt,
|
||||||
|
}
|
||||||
|
}
|
23
src/@core/comp-functions/forms/form-utils.js
Normal file
23
src/@core/comp-functions/forms/form-utils.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
export const useInputImageRenderer = (inputEl, callback) => {
|
||||||
|
const inputImageRenderer = () => {
|
||||||
|
const file = inputEl.value.files[0]
|
||||||
|
const reader = new FileReader()
|
||||||
|
|
||||||
|
reader.addEventListener(
|
||||||
|
'load',
|
||||||
|
() => {
|
||||||
|
callback(reader.result)
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
)
|
||||||
|
|
||||||
|
if (file) {
|
||||||
|
reader.readAsDataURL(file)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
inputImageRenderer,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const _ = null
|
66
src/@core/comp-functions/forms/form-validation.js
Normal file
66
src/@core/comp-functions/forms/form-validation.js
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
import { ref, nextTick } from '@vue/composition-api'
|
||||||
|
|
||||||
|
// ===========================================================
|
||||||
|
// ! This is coupled with "veeValidate" plugin
|
||||||
|
// ===========================================================
|
||||||
|
|
||||||
|
export default function formValidation(resetFormData, clearFormData = () => {}) {
|
||||||
|
// ------------------------------------------------
|
||||||
|
// refFormObserver
|
||||||
|
// ! This is for veeValidate Observer
|
||||||
|
// * Used for veeValidate form observer
|
||||||
|
// ------------------------------------------------
|
||||||
|
const refFormObserver = ref(null)
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// resetObserver
|
||||||
|
// ! This function is coupled with veeValidate
|
||||||
|
// * It resets form observer
|
||||||
|
// ------------------------------------------------
|
||||||
|
const resetObserver = () => {
|
||||||
|
refFormObserver.value.reset()
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// getValidationState
|
||||||
|
// ! This function is coupled with veeValidate
|
||||||
|
// * It returns true/false based on validation
|
||||||
|
// ------------------------------------------------
|
||||||
|
// eslint-disable-next-line object-curly-newline
|
||||||
|
const getValidationState = ({ dirty, validated, required: fieldRequired, changed, valid = null }) => {
|
||||||
|
const result = dirty || validated ? valid : null
|
||||||
|
return !fieldRequired && !changed ? null : result
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// resetForm
|
||||||
|
// ! This function is coupled with veeValidate
|
||||||
|
// * This uses resetFormData arg to reset form data
|
||||||
|
// ------------------------------------------------
|
||||||
|
const resetForm = () => {
|
||||||
|
resetFormData()
|
||||||
|
nextTick(() => {
|
||||||
|
resetObserver()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// clearForm
|
||||||
|
// ! This function is coupled with veeValidate
|
||||||
|
// * This uses clearFormData arg to reset form data
|
||||||
|
// ------------------------------------------------
|
||||||
|
const clearForm = () => {
|
||||||
|
clearFormData()
|
||||||
|
nextTick(() => {
|
||||||
|
resetObserver()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
refFormObserver,
|
||||||
|
resetObserver,
|
||||||
|
getValidationState,
|
||||||
|
resetForm,
|
||||||
|
clearForm,
|
||||||
|
}
|
||||||
|
}
|
20
src/@core/comp-functions/misc/event-listeners.js
Normal file
20
src/@core/comp-functions/misc/event-listeners.js
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import { ref, onUnmounted } from '@vue/composition-api'
|
||||||
|
|
||||||
|
export const useScrollListener = () => {
|
||||||
|
const scrolledTo = ref(null)
|
||||||
|
|
||||||
|
const scrollHandler = () => {
|
||||||
|
scrolledTo.value = window.scrollY
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('scroll', scrollHandler)
|
||||||
|
onUnmounted(() => {
|
||||||
|
window.removeEventListener('scroll', scrollHandler)
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
scrolledTo,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const _ = null
|
18
src/@core/comp-functions/ui/app.js
Normal file
18
src/@core/comp-functions/ui/app.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import store from '@/store'
|
||||||
|
import { ref, watch, computed } from '@vue/composition-api'
|
||||||
|
|
||||||
|
export const useResponsiveAppLeftSidebarVisibility = () => {
|
||||||
|
const mqShallShowLeftSidebar = ref(false)
|
||||||
|
// Close Active Sidebars and other stuff when going in large device
|
||||||
|
const currentBreakPoint = computed(() => store.getters['app/currentBreakPoint'])
|
||||||
|
watch(currentBreakPoint, (val, oldVal) => {
|
||||||
|
// Reset chats & contacts left sidebar
|
||||||
|
if (oldVal === 'md' && val === 'lg') mqShallShowLeftSidebar.value = false
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
mqShallShowLeftSidebar,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const _ = {}
|
21
src/@core/comp-functions/ui/vertical-menu.js
Normal file
21
src/@core/comp-functions/ui/vertical-menu.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import { onBeforeUnmount } from '@vue/composition-api'
|
||||||
|
import userAppConfig from '@core/app-config/useAppConfig'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Collapse vertical menu when route is visited and restore the state on route leave
|
||||||
|
*/
|
||||||
|
export const useCollapseMenuOnVisit = () => {
|
||||||
|
const { isVerticalMenuCollapsed } = userAppConfig()
|
||||||
|
const wasVerticalMenuCollapsed = isVerticalMenuCollapsed.value
|
||||||
|
|
||||||
|
if (!wasVerticalMenuCollapsed.value) {
|
||||||
|
isVerticalMenuCollapsed.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Restore the original collapse value
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
isVerticalMenuCollapsed.value = wasVerticalMenuCollapsed
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const _ = null
|
128
src/@core/components/app-auto-suggest/AppAutoSuggest.vue
Normal file
128
src/@core/components/app-auto-suggest/AppAutoSuggest.vue
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-auto-suggest">
|
||||||
|
<input
|
||||||
|
v-model="searchQuery"
|
||||||
|
type="text"
|
||||||
|
v-bind="inputProps"
|
||||||
|
>
|
||||||
|
<ul class="auto-suggest-suggestions-list">
|
||||||
|
<li
|
||||||
|
v-for="(suggestion_list, grp_name, grp_index) in filteredData"
|
||||||
|
:key="grp_index"
|
||||||
|
class="suggestions-groups-list"
|
||||||
|
>
|
||||||
|
|
||||||
|
<!-- Group Header -->
|
||||||
|
<p class="suggestion-group-title">
|
||||||
|
<slot
|
||||||
|
name="group"
|
||||||
|
:group_name="grp_name"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
{{ grp_name }}
|
||||||
|
</span>
|
||||||
|
</slot>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<!-- Suggestion List of each group -->
|
||||||
|
<ul>
|
||||||
|
<li
|
||||||
|
v-for="(suggestion, index) in suggestion_list"
|
||||||
|
:key="index"
|
||||||
|
class="suggestion-group-suggestion cursor-pointer"
|
||||||
|
@click="suggestionSelected(suggestion)"
|
||||||
|
>
|
||||||
|
<slot
|
||||||
|
:name="grp_name"
|
||||||
|
:suggestion="suggestion"
|
||||||
|
>
|
||||||
|
<span>{{ suggestion[data[grp_name].key] }}</span>
|
||||||
|
</slot>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li
|
||||||
|
v-if="!suggestion_list.length && searchQuery"
|
||||||
|
class="suggestion-group-suggestion no-results"
|
||||||
|
>
|
||||||
|
<slot
|
||||||
|
name="noResult"
|
||||||
|
:group_name="grp_name"
|
||||||
|
>
|
||||||
|
<p>No Results Found.</p>
|
||||||
|
</slot>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import useAutoSuggest from './useAutoSuggest'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
inputProps: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
searchLimit: {
|
||||||
|
type: Number,
|
||||||
|
default: 4,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup(props, { emit }) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.warn('This component is still in Development. Please do not use it.')
|
||||||
|
|
||||||
|
const { searchQuery, filteredData, resetsearchQuery } = useAutoSuggest(props)
|
||||||
|
|
||||||
|
const suggestionSelected = suggestion => {
|
||||||
|
resetsearchQuery()
|
||||||
|
emit('suggestion-selected', suggestion)
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
searchQuery, filteredData, suggestionSelected,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
ul
|
||||||
|
{
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-auto-suggest {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.auto-suggest-suggestions-list {
|
||||||
|
box-shadow: 0 4px 24px 0 rgba(34, 41, 47, 0.1);
|
||||||
|
border-radius: 6px;
|
||||||
|
position: absolute;
|
||||||
|
top: calc(100% + 1rem);
|
||||||
|
background-color: white;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.suggestion-group-title {
|
||||||
|
font-weight: 500;
|
||||||
|
padding: .75rem 1rem .25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.suggestion-group-suggestion {
|
||||||
|
padding: .75rem 1rem
|
||||||
|
}
|
||||||
|
</style>
|
55
src/@core/components/app-auto-suggest/useAutoSuggest.js
Normal file
55
src/@core/components/app-auto-suggest/useAutoSuggest.js
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
import { ref, watch } from '@vue/composition-api'
|
||||||
|
|
||||||
|
export default function useAutoSuggest(props) {
|
||||||
|
const filteredData = ref({})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter group against provided query
|
||||||
|
* Grp Structure:
|
||||||
|
* {
|
||||||
|
* key: 'title',
|
||||||
|
* data: [
|
||||||
|
* title: 'Admin', img: 'someImage.png',
|
||||||
|
* title: 'Template', img: 'otherImage.png',
|
||||||
|
* ]
|
||||||
|
* }
|
||||||
|
* @param {Object} grp Group object to perform filter on
|
||||||
|
* @param {String} query Query string to filter
|
||||||
|
*/
|
||||||
|
const filterGrp = (grp, query) => {
|
||||||
|
const exactEle = grp.data.filter(item => item[grp.key].toLowerCase().startsWith(query.toLowerCase()))
|
||||||
|
const containEle = grp.data.filter(
|
||||||
|
// prettier-ignore
|
||||||
|
item => !item[grp.key].toLowerCase().startsWith(query.toLowerCase()) && item[grp.key].toLowerCase().indexOf(query.toLowerCase()) > -1,
|
||||||
|
)
|
||||||
|
return exactEle.concat(containEle).slice(0, props.searchLimit)
|
||||||
|
}
|
||||||
|
|
||||||
|
const searchQuery = ref('')
|
||||||
|
const resetsearchQuery = () => {
|
||||||
|
searchQuery.value = ''
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleSearchQueryUpdate = val => {
|
||||||
|
if (val === '') {
|
||||||
|
filteredData.value = {}
|
||||||
|
} else {
|
||||||
|
const queriedData = {}
|
||||||
|
const dataGrps = Object.keys(props.data)
|
||||||
|
|
||||||
|
dataGrps.forEach((grp, i) => {
|
||||||
|
queriedData[dataGrps[i]] = filterGrp(props.data[grp], val)
|
||||||
|
})
|
||||||
|
|
||||||
|
filteredData.value = queriedData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
watch(searchQuery, val => handleSearchQueryUpdate(val))
|
||||||
|
|
||||||
|
return {
|
||||||
|
searchQuery,
|
||||||
|
resetsearchQuery,
|
||||||
|
filteredData,
|
||||||
|
}
|
||||||
|
}
|
54
src/@core/components/app-collapse/AppCollapse.vue
Normal file
54
src/@core/components/app-collapse/AppCollapse.vue
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
role="tablist"
|
||||||
|
class="collapse-icon"
|
||||||
|
:class="collapseClasses"
|
||||||
|
>
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { v4 as uuidv4 } from 'uuid'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
accordion: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
hover: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: 'default',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
collapseID: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
collapseClasses() {
|
||||||
|
const classes = []
|
||||||
|
|
||||||
|
// Collapse Type
|
||||||
|
const collapseVariants = {
|
||||||
|
default: 'collapse-default',
|
||||||
|
border: 'collapse-border',
|
||||||
|
shadow: 'collapse-shadow',
|
||||||
|
margin: 'collapse-margin',
|
||||||
|
}
|
||||||
|
classes.push(collapseVariants[this.type])
|
||||||
|
|
||||||
|
return classes
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.collapseID = uuidv4()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
87
src/@core/components/app-collapse/AppCollapseItem.vue
Normal file
87
src/@core/components/app-collapse/AppCollapseItem.vue
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<template>
|
||||||
|
<b-card
|
||||||
|
no-body
|
||||||
|
:class="{'open': visible}"
|
||||||
|
@mouseenter="collapseOpen"
|
||||||
|
@mouseleave="collapseClose"
|
||||||
|
>
|
||||||
|
<b-card-header
|
||||||
|
|
||||||
|
:class="{'collapsed': !visible}"
|
||||||
|
:aria-expanded="visible ? 'true' : 'false'"
|
||||||
|
:aria-controls="collapseItemID"
|
||||||
|
role="tab"
|
||||||
|
data-toggle="collapse"
|
||||||
|
@click="updateVisible(!visible)"
|
||||||
|
>
|
||||||
|
<slot name="header">
|
||||||
|
<span class="lead collapse-title">{{ title }}</span>
|
||||||
|
</slot>
|
||||||
|
</b-card-header>
|
||||||
|
|
||||||
|
<b-collapse
|
||||||
|
:id="collapseItemID"
|
||||||
|
v-model="visible"
|
||||||
|
:accordion="accordion"
|
||||||
|
role="tabpanel"
|
||||||
|
>
|
||||||
|
<b-card-body>
|
||||||
|
<slot />
|
||||||
|
</b-card-body>
|
||||||
|
</b-collapse>
|
||||||
|
</b-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
BCard, BCardHeader, BCardBody, BCollapse,
|
||||||
|
} from 'bootstrap-vue'
|
||||||
|
import { v4 as uuidv4 } from 'uuid'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BCard,
|
||||||
|
BCardHeader,
|
||||||
|
BCardBody,
|
||||||
|
BCollapse,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
isVisible: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
visible: false,
|
||||||
|
collapseItemID: '',
|
||||||
|
openOnHover: this.$parent.hover,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
accordion() {
|
||||||
|
return this.$parent.accordion ? `accordion-${this.$parent.collapseID}` : null
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.collapseItemID = uuidv4()
|
||||||
|
this.visible = this.isVisible
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
updateVisible(val = true) {
|
||||||
|
this.visible = val
|
||||||
|
this.$emit('visible', val)
|
||||||
|
},
|
||||||
|
collapseOpen() {
|
||||||
|
if (this.openOnHover) this.updateVisible(true)
|
||||||
|
},
|
||||||
|
collapseClose() {
|
||||||
|
if (this.openOnHover) this.updateVisible(false)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
23
src/@core/components/app-timeline/AppTimeline.vue
Normal file
23
src/@core/components/app-timeline/AppTimeline.vue
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<template>
|
||||||
|
<ul
|
||||||
|
v-bind="$attrs"
|
||||||
|
class="app-timeline"
|
||||||
|
v-on="$listeners"
|
||||||
|
>
|
||||||
|
<slot />
|
||||||
|
</ul>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.app-timeline {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
position: relative;
|
||||||
|
margin-left: 1rem;
|
||||||
|
}
|
||||||
|
</style>
|
182
src/@core/components/app-timeline/AppTimelineItem.vue
Normal file
182
src/@core/components/app-timeline/AppTimelineItem.vue
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
<template>
|
||||||
|
<li
|
||||||
|
v-bind="$attrs"
|
||||||
|
class="timeline-item"
|
||||||
|
:class="[`timeline-variant-${variant}`, fillBorder ? `timeline-item-fill-border-${variant}` : null]"
|
||||||
|
v-on="$listeners"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-if="!icon"
|
||||||
|
class="timeline-item-point"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
v-else
|
||||||
|
class="timeline-item-icon d-flex align-items-center justify-content-center rounded-circle"
|
||||||
|
>
|
||||||
|
<feather-icon :icon="icon" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<slot>
|
||||||
|
<div class="d-flex flex-sm-row flex-column flex-wrap justify-content-between mb-1 mb-sm-0">
|
||||||
|
<h6 v-text="title" />
|
||||||
|
<small
|
||||||
|
class="timeline-item-time text-nowrap text-muted"
|
||||||
|
v-text="time"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<p
|
||||||
|
class="mb-0"
|
||||||
|
v-text="subtitle"
|
||||||
|
/>
|
||||||
|
</slot>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
variant: {
|
||||||
|
type: String,
|
||||||
|
default: 'primary',
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
subtitle: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
time: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
fillBorder: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import '~@core/scss/base/bootstrap-extended/include'; // Bootstrap includes
|
||||||
|
@import '~@core/scss/base/components/include'; // Components includes
|
||||||
|
|
||||||
|
// Color palettes
|
||||||
|
@import '~@core/scss/base/core/colors/palette-variables.scss';
|
||||||
|
|
||||||
|
$timeline-border-color: $border-color;
|
||||||
|
|
||||||
|
/* Generate:
|
||||||
|
* Apply background color to dot
|
||||||
|
*/
|
||||||
|
@each $color_name, $color in $colors {
|
||||||
|
@each $color_type, $color_value in $color {
|
||||||
|
@if $color_type== 'base' {
|
||||||
|
.timeline-variant-#{$color_name} {
|
||||||
|
&.timeline-item-fill-border-#{$color_name} {
|
||||||
|
border-color: $color_value !important;
|
||||||
|
&:last-of-type {
|
||||||
|
&:after {
|
||||||
|
background: linear-gradient($color_value, $white);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.timeline-item-point {
|
||||||
|
background-color: $color_value;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
background-color: rgba($color_value, 0.12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline-item-icon {
|
||||||
|
color: $color_value;
|
||||||
|
border: 1px solid $color_value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline-item {
|
||||||
|
padding-left: 2.5rem;
|
||||||
|
position: relative;
|
||||||
|
&:not(:last-of-type) {
|
||||||
|
padding-bottom: 2rem;
|
||||||
|
border-left: 1px solid $timeline-border-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This gives shade to last timeline-item but isn't that revolutionary
|
||||||
|
&:last-of-type {
|
||||||
|
&:after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 1px;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient($timeline-border-color, $white);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline-item-point {
|
||||||
|
position: absolute;
|
||||||
|
left: -6px;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
top: 0;
|
||||||
|
border-radius: 50%;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: '';
|
||||||
|
z-index: 1;
|
||||||
|
border-radius: 50%;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
position: absolute;
|
||||||
|
top: -4px;
|
||||||
|
left: -4px;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline-item-icon {
|
||||||
|
position: absolute;
|
||||||
|
left: -12px;
|
||||||
|
top: 0;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
background-color: $white;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// *===============================================---*
|
||||||
|
// *--------- Dark Layout ---------------------------------------*
|
||||||
|
// *===============================================---*
|
||||||
|
|
||||||
|
.dark-layout {
|
||||||
|
.timeline-item {
|
||||||
|
&:last-of-type {
|
||||||
|
&:after {
|
||||||
|
background: linear-gradient($theme-dark-border-color, $theme-dark-card-bg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:not(:last-of-type) {
|
||||||
|
border-left-color: $theme-dark-border-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline-item-icon {
|
||||||
|
background-color: $theme-dark-card-bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
117
src/@core/components/app-tour/AppTour.vue
Normal file
117
src/@core/components/app-tour/AppTour.vue
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
<!-- =========================================================================================
|
||||||
|
File Name: VxTour.vue
|
||||||
|
Description: Tour Component
|
||||||
|
----------------------------------------------------------------------------------------
|
||||||
|
Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template
|
||||||
|
Author: Pixinvent
|
||||||
|
Author URL: http://www.themeforest.net/user/pixinvent
|
||||||
|
========================================================================================== -->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<v-tour
|
||||||
|
name="vuexyTour"
|
||||||
|
:steps="steps"
|
||||||
|
>
|
||||||
|
<template slot-scope="tour">
|
||||||
|
<transition name="fade">
|
||||||
|
<!-- eslint-disable vue/no-use-v-if-with-v-for -->
|
||||||
|
<v-step
|
||||||
|
v-for="(step, index) of tour.steps"
|
||||||
|
v-if="tour.currentStep === index"
|
||||||
|
:key="index"
|
||||||
|
:step="step"
|
||||||
|
:previous-step="tour.previousStep"
|
||||||
|
:next-step="tour.nextStep"
|
||||||
|
:stop="tour.stop"
|
||||||
|
:is-first="tour.isFirst"
|
||||||
|
:is-last="tour.isLast"
|
||||||
|
:labels="tour.labels"
|
||||||
|
>
|
||||||
|
|
||||||
|
<div
|
||||||
|
slot="actions"
|
||||||
|
class="tour-actions d-flex justify-content-between"
|
||||||
|
>
|
||||||
|
<!-- Skip Button -->
|
||||||
|
<b-button
|
||||||
|
v-if="tour.currentStep != tour.steps.length - 1"
|
||||||
|
size="sm"
|
||||||
|
variant="outline-primary"
|
||||||
|
class="btn-tour-skip mr-1"
|
||||||
|
@click="tour.stop"
|
||||||
|
>
|
||||||
|
<span class="mr-25 align-middle">Skip</span>
|
||||||
|
<feather-icon
|
||||||
|
icon="XIcon"
|
||||||
|
size="12"
|
||||||
|
/>
|
||||||
|
</b-button>
|
||||||
|
|
||||||
|
<!-- Previous Button -->
|
||||||
|
<b-button
|
||||||
|
v-if="tour.currentStep"
|
||||||
|
size="sm"
|
||||||
|
variant="outline-primary mr-1"
|
||||||
|
@click="tour.previousStep"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
icon="ChevronLeftIcon"
|
||||||
|
size="12"
|
||||||
|
/>
|
||||||
|
<span class="ml-25 align-middle">Previous</span>
|
||||||
|
</b-button>
|
||||||
|
|
||||||
|
<!-- Next Button -->
|
||||||
|
<b-button
|
||||||
|
v-if="tour.currentStep != tour.steps.length - 1"
|
||||||
|
size="sm"
|
||||||
|
variant="primary"
|
||||||
|
class="btn-tour-next"
|
||||||
|
@click="tour.nextStep"
|
||||||
|
>
|
||||||
|
<span class="mr-25 align-middle">Next</span>
|
||||||
|
<feather-icon
|
||||||
|
icon="ChevronRightIcon"
|
||||||
|
size="12"
|
||||||
|
/>
|
||||||
|
</b-button>
|
||||||
|
|
||||||
|
<!-- Finish Button -->
|
||||||
|
<b-button
|
||||||
|
v-if="tour.currentStep == tour.steps.length - 1"
|
||||||
|
size="sm"
|
||||||
|
variant="primary"
|
||||||
|
class="btn-tour-finish"
|
||||||
|
@click="tour.stop"
|
||||||
|
>
|
||||||
|
<span class="mr-25 align-middle">Finish</span>
|
||||||
|
<feather-icon
|
||||||
|
icon="CheckCircleIcon"
|
||||||
|
size="12"
|
||||||
|
/>
|
||||||
|
</b-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</v-step>
|
||||||
|
<!-- eslint-enable vue/no-use-v-if-with-v-for -->
|
||||||
|
</transition>
|
||||||
|
</template>
|
||||||
|
</v-tour>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BButton } from 'bootstrap-vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'VxTour',
|
||||||
|
components: {
|
||||||
|
BButton,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
steps: {
|
||||||
|
required: true,
|
||||||
|
type: Array,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
195
src/@core/components/b-card-actions/BCardActions.vue
Normal file
195
src/@core/components/b-card-actions/BCardActions.vue
Normal file
@ -0,0 +1,195 @@
|
|||||||
|
<template>
|
||||||
|
<b-overlay
|
||||||
|
v-if="!cardClosed"
|
||||||
|
variant="white"
|
||||||
|
:show="showLoading"
|
||||||
|
spinner-variant="primary"
|
||||||
|
blur="0"
|
||||||
|
opacity=".75"
|
||||||
|
rounded="sm"
|
||||||
|
>
|
||||||
|
<b-card
|
||||||
|
ref="bCard"
|
||||||
|
v-bind="cardAttrs"
|
||||||
|
no-body
|
||||||
|
:aria-expanded="!content_visible ? 'true' : 'false'"
|
||||||
|
:aria-controls="parentID"
|
||||||
|
:style="cardStyles"
|
||||||
|
v-on="$listeners"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-if="showHeader"
|
||||||
|
class="card-header"
|
||||||
|
>
|
||||||
|
<!-- Title & SubTitle -->
|
||||||
|
<div>
|
||||||
|
<b-card-title>{{ $attrs.title }}</b-card-title>
|
||||||
|
<b-card-sub-title v-if="$attrs['sub-title']">
|
||||||
|
{{ $attrs['sub-title'] }}
|
||||||
|
</b-card-sub-title>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Card Actions -->
|
||||||
|
<b-card-actions-container
|
||||||
|
v-if="showActions"
|
||||||
|
:available-actions="availableActions"
|
||||||
|
:is-collapsed="!content_visible"
|
||||||
|
@collapse="triggerCollapse"
|
||||||
|
@refresh="triggerRefresh"
|
||||||
|
@close="triggerClose"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Collapsible Content -->
|
||||||
|
<b-collapse
|
||||||
|
:id="parentID"
|
||||||
|
v-model="content_visible"
|
||||||
|
:visible="content_visible"
|
||||||
|
class="card-content"
|
||||||
|
>
|
||||||
|
<!-- Handle no-body -->
|
||||||
|
<slot v-if="$attrs['no-body'] !== undefined" />
|
||||||
|
<b-card-body v-else>
|
||||||
|
<slot />
|
||||||
|
</b-card-body>
|
||||||
|
</b-collapse>
|
||||||
|
</b-card>
|
||||||
|
</b-overlay>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
BCard, BCardTitle, BCardSubTitle, BCardBody, BCollapse, BOverlay,
|
||||||
|
} from 'bootstrap-vue'
|
||||||
|
import BCardActionsContainer from './BCardActionsContainer.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BCardActionsContainer,
|
||||||
|
BCard,
|
||||||
|
BCardTitle,
|
||||||
|
BCardSubTitle,
|
||||||
|
BCardBody,
|
||||||
|
BCollapse,
|
||||||
|
BOverlay,
|
||||||
|
},
|
||||||
|
inheritAttrs: false,
|
||||||
|
props: {
|
||||||
|
collapsed: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
noActions: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
actionCollapse: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
actionRefresh: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
actionClose: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
parentID: '',
|
||||||
|
content_visible: !this.collapsed,
|
||||||
|
showLoading: false,
|
||||||
|
cardClosed: false,
|
||||||
|
cardStyles: {},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
cardAttrs() {
|
||||||
|
const cardAttrs = JSON.parse(JSON.stringify(this.$attrs))
|
||||||
|
delete cardAttrs.title
|
||||||
|
delete cardAttrs['sub-title']
|
||||||
|
return cardAttrs
|
||||||
|
},
|
||||||
|
showHeader() {
|
||||||
|
return this.$attrs.title || this.$attrs['sub-title'] || !this.noActions
|
||||||
|
},
|
||||||
|
showActions() {
|
||||||
|
if (this.noActions) return false
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
availableActions() {
|
||||||
|
const actions = []
|
||||||
|
const allFalse = (this.actionCollapse || this.actionRefresh || this.actionClose) === false
|
||||||
|
|
||||||
|
if (this.actionCollapse || allFalse) actions.push('collapse')
|
||||||
|
if (this.actionRefresh || allFalse) actions.push('refresh')
|
||||||
|
if (this.actionClose || allFalse) actions.push('close')
|
||||||
|
return actions
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.parentID = String(Math.floor(Math.random() * 10) + 1)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
removeCard() {
|
||||||
|
this.$set(this.cardStyles, 'maxHeight', `${this.$refs.bCard.clientHeight}px`)
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$set(this.cardStyles, 'maxHeight', '0px')
|
||||||
|
this.$set(this.cardStyles, 'overflow', 'hidden')
|
||||||
|
// this.$set(this.cardStyles, 'marginBottom', '0')
|
||||||
|
}, 10)
|
||||||
|
},
|
||||||
|
triggerCollapse() {
|
||||||
|
this.content_visible = !this.content_visible
|
||||||
|
this.$emit('collapse')
|
||||||
|
},
|
||||||
|
triggerRefresh() {
|
||||||
|
this.showLoading = true
|
||||||
|
this.$emit('refresh')
|
||||||
|
},
|
||||||
|
triggerClose() {
|
||||||
|
this.removeCard()
|
||||||
|
this.$emit('close')
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import '~@core/scss/base/bootstrap-extended/include';
|
||||||
|
@import '~@core/scss/base/components/variables-dark';
|
||||||
|
|
||||||
|
.card {
|
||||||
|
::v-deep .card-header {
|
||||||
|
.heading-elements {
|
||||||
|
position: static;
|
||||||
|
cursor: inherit;
|
||||||
|
|
||||||
|
.list-inline {
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
li {
|
||||||
|
a {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(:last-child) {
|
||||||
|
margin-right: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-layout {
|
||||||
|
.b-overlay-wrap ::v-deep .b-overlay {
|
||||||
|
// border: 10px solid red;
|
||||||
|
.bg-white {
|
||||||
|
background-color: $theme-dark-body-bg !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,55 @@
|
|||||||
|
<template>
|
||||||
|
<div class="heading-elements">
|
||||||
|
<ul class="list-inline mb-0">
|
||||||
|
<li v-if="availableActions.includes('collapse')">
|
||||||
|
<a
|
||||||
|
data-action="collapse"
|
||||||
|
:class="{ rotate: isCollapsed }"
|
||||||
|
@click="$emit('collapse')"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
icon="ChevronDownIcon"
|
||||||
|
size="16"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li v-if="availableActions.includes('refresh')">
|
||||||
|
<a
|
||||||
|
data-action="reload"
|
||||||
|
@click="$emit('refresh')"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
icon="RotateCwIcon"
|
||||||
|
size="14"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li v-if="availableActions.includes('close')">
|
||||||
|
<a
|
||||||
|
data-action="close"
|
||||||
|
@click="$emit('close')"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
icon="XIcon"
|
||||||
|
size="14"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
isCollapsed: {
|
||||||
|
type: Boolean,
|
||||||
|
requried: true,
|
||||||
|
},
|
||||||
|
availableActions: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
2
src/@core/components/b-card-actions/index.js
Normal file
2
src/@core/components/b-card-actions/index.js
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export { default as BCardActions } from './BCardActions.vue'
|
||||||
|
export { default as BCardActionsContainer } from './BCardActionsContainer.vue'
|
166
src/@core/components/b-card-code/BCardCode.vue
Normal file
166
src/@core/components/b-card-code/BCardCode.vue
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
<template>
|
||||||
|
<b-card
|
||||||
|
v-bind="cardAttrs"
|
||||||
|
no-body
|
||||||
|
v-on="$listeners"
|
||||||
|
>
|
||||||
|
<div class="card-header">
|
||||||
|
<!-- Title & SubTitle -->
|
||||||
|
<div>
|
||||||
|
<b-card-title>{{ $attrs.title }}</b-card-title>
|
||||||
|
<b-card-sub-title v-if="$attrs['sub-title']">
|
||||||
|
{{ $attrs['sub-title'] }}
|
||||||
|
</b-card-sub-title>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<i
|
||||||
|
class="code-toggler feather icon-code cursor-pointer"
|
||||||
|
:aria-expanded="!code_visible ? 'true' : 'false'"
|
||||||
|
:aria-controls="parentID"
|
||||||
|
@click="code_visible = !code_visible"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<template v-if="$attrs['no-body'] !== undefined">
|
||||||
|
<slot />
|
||||||
|
|
||||||
|
<!-- Code Content -->
|
||||||
|
<b-collapse
|
||||||
|
:id="parentID"
|
||||||
|
v-model="code_visible"
|
||||||
|
class="card-code"
|
||||||
|
:visible="code_visible"
|
||||||
|
>
|
||||||
|
<b-card-body>
|
||||||
|
<prism :language="codeLanguage">
|
||||||
|
<slot name="code" />
|
||||||
|
</prism>
|
||||||
|
</b-card-body>
|
||||||
|
</b-collapse>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<b-card-body v-else>
|
||||||
|
<!-- Card Content -->
|
||||||
|
<slot />
|
||||||
|
|
||||||
|
<!-- Code Content -->
|
||||||
|
<b-collapse
|
||||||
|
:id="parentID"
|
||||||
|
v-model="code_visible"
|
||||||
|
class="card-code"
|
||||||
|
:visible="code_visible"
|
||||||
|
>
|
||||||
|
<div class="p-1" />
|
||||||
|
<prism :language="codeLanguage">
|
||||||
|
<slot name="code" />
|
||||||
|
</prism>
|
||||||
|
</b-collapse>
|
||||||
|
</b-card-body>
|
||||||
|
</b-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
BCard, BCardTitle, BCardSubTitle, BCardBody, BCollapse,
|
||||||
|
} from 'bootstrap-vue'
|
||||||
|
import 'prismjs'
|
||||||
|
import 'prismjs/themes/prism-tomorrow.css'
|
||||||
|
import Prism from 'vue-prism-component'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BCard,
|
||||||
|
BCardTitle,
|
||||||
|
BCardSubTitle,
|
||||||
|
BCardBody,
|
||||||
|
BCollapse,
|
||||||
|
Prism,
|
||||||
|
},
|
||||||
|
inheritAttrs: false,
|
||||||
|
props: {
|
||||||
|
codeLanguage: {
|
||||||
|
default: 'markup',
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
parentID: '',
|
||||||
|
code_visible: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
cardAttrs() {
|
||||||
|
const cardAttrs = JSON.parse(JSON.stringify(this.$attrs))
|
||||||
|
delete cardAttrs.title
|
||||||
|
delete cardAttrs['sub-title']
|
||||||
|
return cardAttrs
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.parentID = String(Math.floor(Math.random() * 10) + 1)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import 'bootstrap/scss/functions';
|
||||||
|
@import '~@core/scss/base/bootstrap-extended/variables';
|
||||||
|
@import 'bootstrap/scss/variables';
|
||||||
|
@import '~@core/scss/base/components/variables-dark';
|
||||||
|
|
||||||
|
.card-code {
|
||||||
|
pre[class*='language-'] {
|
||||||
|
margin: 0;
|
||||||
|
max-height: 350px;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* width */
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
background: #2d2d2d;
|
||||||
|
border-radius: 100%;
|
||||||
|
|
||||||
|
.dark-layout & {
|
||||||
|
background-color: $theme-dark-body-bg !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Track */
|
||||||
|
::-webkit-scrollbar-track {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Handle */
|
||||||
|
::-webkit-scrollbar-thumb {
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
background: rgba(241,241,241,.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Handle on hover */
|
||||||
|
// ::-webkit-scrollbar-thumb:hover {
|
||||||
|
// }
|
||||||
|
|
||||||
|
::-webkit-scrollbar-corner {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.code-toggler {
|
||||||
|
border-bottom: 1px solid transparent;
|
||||||
|
|
||||||
|
&[aria-expanded='false'] {
|
||||||
|
border-bottom-color: $primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// HTML
|
||||||
|
.card {
|
||||||
|
.card-header .heading-elements {
|
||||||
|
position: static;
|
||||||
|
background: red;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
3
src/@core/components/b-card-code/index.js
Normal file
3
src/@core/components/b-card-code/index.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import BCardCode from './BCardCode.vue'
|
||||||
|
|
||||||
|
export default BCardCode
|
50
src/@core/components/charts/echart/AppEchartBar.vue
Normal file
50
src/@core/components/charts/echart/AppEchartBar.vue
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<template>
|
||||||
|
<e-charts
|
||||||
|
ref="line"
|
||||||
|
autoresize
|
||||||
|
:options="option"
|
||||||
|
theme="theme-color"
|
||||||
|
auto-resize
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ECharts from 'vue-echarts'
|
||||||
|
import 'echarts/lib/component/tooltip'
|
||||||
|
import 'echarts/lib/component/legend'
|
||||||
|
import 'echarts/lib/chart/bar'
|
||||||
|
import theme from './theme.json'
|
||||||
|
|
||||||
|
ECharts.registerTheme('theme-color', theme)
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
ECharts,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
optionData: {
|
||||||
|
type: Object,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
option: {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
axisPointer: {
|
||||||
|
type: 'shadow',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 0,
|
||||||
|
},
|
||||||
|
grid: this.optionData.grid,
|
||||||
|
xAxis: this.optionData.xAxis,
|
||||||
|
yAxis: this.optionData.yAxis,
|
||||||
|
series: this.optionData.series,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
46
src/@core/components/charts/echart/AppEchartDoughnut.vue
Normal file
46
src/@core/components/charts/echart/AppEchartDoughnut.vue
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<template>
|
||||||
|
<e-charts
|
||||||
|
ref="line"
|
||||||
|
autoresize
|
||||||
|
:options="option"
|
||||||
|
theme="theme-color"
|
||||||
|
auto-resize
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ECharts from 'vue-echarts'
|
||||||
|
import 'echarts/lib/component/tooltip'
|
||||||
|
import 'echarts/lib/component/legend'
|
||||||
|
import 'echarts/lib/chart/pie'
|
||||||
|
import theme from './theme.json'
|
||||||
|
|
||||||
|
ECharts.registerTheme('theme-color', theme)
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
ECharts,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
series: {
|
||||||
|
type: Array,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
option: {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{a} <br/>{b}: {c} ({d}%)',
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 10,
|
||||||
|
bottom: '0',
|
||||||
|
},
|
||||||
|
series: this.series,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
72
src/@core/components/charts/echart/AppEchartLine.vue
Normal file
72
src/@core/components/charts/echart/AppEchartLine.vue
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
<template>
|
||||||
|
<e-charts
|
||||||
|
ref="line"
|
||||||
|
autoresize
|
||||||
|
:options="line"
|
||||||
|
theme="theme-color"
|
||||||
|
auto-resize
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ECharts from 'vue-echarts'
|
||||||
|
import 'echarts/lib/component/tooltip'
|
||||||
|
import 'echarts/lib/component/legend'
|
||||||
|
import 'echarts/lib/chart/line'
|
||||||
|
import theme from './theme.json'
|
||||||
|
|
||||||
|
ECharts.registerTheme('theme-color', theme)
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
ECharts,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
optionData: {
|
||||||
|
type: Object,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
line: {
|
||||||
|
// Make gradient line here
|
||||||
|
visualMap: [{
|
||||||
|
show: true,
|
||||||
|
type: 'continuous',
|
||||||
|
min: 0,
|
||||||
|
max: 400,
|
||||||
|
}],
|
||||||
|
grid: {
|
||||||
|
width: '96%',
|
||||||
|
left: '30px',
|
||||||
|
top: '10px',
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
},
|
||||||
|
xAxis: [{
|
||||||
|
boundaryGap: false,
|
||||||
|
data: this.optionData.xAxisData,
|
||||||
|
}],
|
||||||
|
yAxis: {
|
||||||
|
type: 'value',
|
||||||
|
splitLine: { show: false },
|
||||||
|
},
|
||||||
|
series: {
|
||||||
|
type: 'line',
|
||||||
|
showSymbol: false,
|
||||||
|
data: this.optionData.series,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.echarts {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
</style>
|
73
src/@core/components/charts/echart/AppEchartRadar.vue
Normal file
73
src/@core/components/charts/echart/AppEchartRadar.vue
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
<template>
|
||||||
|
<e-charts
|
||||||
|
ref="line"
|
||||||
|
autoresize
|
||||||
|
:options="option"
|
||||||
|
theme="theme-color"
|
||||||
|
auto-resize
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ECharts from 'vue-echarts'
|
||||||
|
import 'echarts/lib/component/tooltip'
|
||||||
|
import 'echarts/lib/component/legend'
|
||||||
|
import 'echarts/lib/chart/radar'
|
||||||
|
import theme from './theme.json'
|
||||||
|
|
||||||
|
ECharts.registerTheme('theme-color', theme)
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
ECharts,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
optionData: {
|
||||||
|
type: Object,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
option: {
|
||||||
|
title: {
|
||||||
|
text: 'Basic radar chart',
|
||||||
|
},
|
||||||
|
tooltip: {},
|
||||||
|
legend: {
|
||||||
|
data: ['Point One', 'Point Two'],
|
||||||
|
bottom: '0',
|
||||||
|
left: '0',
|
||||||
|
},
|
||||||
|
radar: {
|
||||||
|
name: {
|
||||||
|
textStyle: {
|
||||||
|
color: '#626262',
|
||||||
|
fontWeight: 'bold',
|
||||||
|
borderRadius: 3,
|
||||||
|
padding: [3, 5],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
indicator: this.optionData.indicator,
|
||||||
|
splitArea: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: [
|
||||||
|
'#eeeeee',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: '#eeeeee',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
series: this.optionData.series,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
66
src/@core/components/charts/echart/AppEchartScatter.vue
Normal file
66
src/@core/components/charts/echart/AppEchartScatter.vue
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<template>
|
||||||
|
<e-charts
|
||||||
|
ref="line"
|
||||||
|
:options="option"
|
||||||
|
theme="theme-color"
|
||||||
|
auto-resize
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ECharts from 'vue-echarts'
|
||||||
|
import 'echarts/lib/component/tooltip'
|
||||||
|
import 'echarts/lib/component/legend'
|
||||||
|
import 'echarts/lib/chart/scatter'
|
||||||
|
import theme from './theme.json'
|
||||||
|
|
||||||
|
ECharts.registerTheme('theme-color', theme)
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
ECharts,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
optionData: {
|
||||||
|
type: Object,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
option: {
|
||||||
|
grid: {
|
||||||
|
width: '95%',
|
||||||
|
left: '30px',
|
||||||
|
right: '40px',
|
||||||
|
containLabel: false,
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
enable: true,
|
||||||
|
left: '0',
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
axisPointer: {
|
||||||
|
type: 'cross',
|
||||||
|
label: {
|
||||||
|
backgroundColor: '#6a7985',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
boundaryGap: false,
|
||||||
|
scale: true,
|
||||||
|
splitNumber: 10,
|
||||||
|
min: 0,
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
splitLine: { show: false },
|
||||||
|
scale: true,
|
||||||
|
},
|
||||||
|
series: this.optionData.series,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
72
src/@core/components/charts/echart/AppEchartStackedArea.vue
Normal file
72
src/@core/components/charts/echart/AppEchartStackedArea.vue
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
<template>
|
||||||
|
<e-charts
|
||||||
|
ref="line"
|
||||||
|
autoresize
|
||||||
|
:options="option"
|
||||||
|
theme="theme-color"
|
||||||
|
auto-resize
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ECharts from 'vue-echarts'
|
||||||
|
import 'echarts/lib/component/tooltip'
|
||||||
|
import 'echarts/lib/component/legend'
|
||||||
|
import 'echarts/lib/chart/line'
|
||||||
|
import theme from './theme.json'
|
||||||
|
|
||||||
|
ECharts.registerTheme('theme-color', theme)
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
ECharts,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
optionData: {
|
||||||
|
type: Object,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
option: {
|
||||||
|
title: {
|
||||||
|
text: 'Stacked area chart',
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'axis',
|
||||||
|
axisPointer: {
|
||||||
|
type: 'cross',
|
||||||
|
label: {
|
||||||
|
backgroundColor: '#6a7985',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: '0',
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
width: '95%',
|
||||||
|
left: '40px',
|
||||||
|
right: '4%',
|
||||||
|
containLabel: false,
|
||||||
|
},
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
type: 'category',
|
||||||
|
boundaryGap: false,
|
||||||
|
data: this.optionData.xAxisData,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
splitLine: { show: false },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
series: this.optionData.series,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
475
src/@core/components/charts/echart/theme.json
Normal file
475
src/@core/components/charts/echart/theme.json
Normal file
@ -0,0 +1,475 @@
|
|||||||
|
{
|
||||||
|
"color": [
|
||||||
|
"#826AF9",
|
||||||
|
"#9F87FF",
|
||||||
|
"#D2B0FF",
|
||||||
|
"#F8D3FF"
|
||||||
|
],
|
||||||
|
"backgroundColor": "rgba(0,0,0,0)",
|
||||||
|
"textStyle": {},
|
||||||
|
"title": {
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#666666"
|
||||||
|
},
|
||||||
|
"subtextStyle": {
|
||||||
|
"color": "#999999"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"line": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"borderWidth": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lineStyle": {
|
||||||
|
"normal": {
|
||||||
|
"width": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symbolSize": "10",
|
||||||
|
"symbol": "emptyCircle",
|
||||||
|
"smooth": false
|
||||||
|
},
|
||||||
|
"radar": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"borderWidth": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lineStyle": {
|
||||||
|
"normal": {
|
||||||
|
"width": "3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symbolSize": "10",
|
||||||
|
"symbol": "emptyCircle",
|
||||||
|
"smooth": true
|
||||||
|
},
|
||||||
|
"bar": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"barBorderWidth": "0",
|
||||||
|
"barBorderColor": "#444444"
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"barBorderWidth": "0",
|
||||||
|
"barBorderColor": "#444444"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pie": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"scatter": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"boxplot": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parallel": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sankey": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"funnel": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gauge": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"candlestick": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"color": "#d0648a",
|
||||||
|
"color0": "#ffffff",
|
||||||
|
"borderColor": "#d0648a",
|
||||||
|
"borderColor0": "#22c3aa",
|
||||||
|
"borderWidth": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"graph": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"borderWidth": "0",
|
||||||
|
"borderColor": "#444444"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lineStyle": {
|
||||||
|
"normal": {
|
||||||
|
"width": 1,
|
||||||
|
"color": "#aaa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symbolSize": "10",
|
||||||
|
"symbol": "emptyCircle",
|
||||||
|
"smooth": true,
|
||||||
|
"color": [
|
||||||
|
"#4ea397",
|
||||||
|
"#22c3aa",
|
||||||
|
"#7bd9a5"
|
||||||
|
],
|
||||||
|
"label": {
|
||||||
|
"normal": {
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#ffffff"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"map": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"areaColor": "#eeeeee",
|
||||||
|
"borderColor": "#999999",
|
||||||
|
"borderWidth": "0.5"
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"areaColor": "rgba(34,195,170,0.25)",
|
||||||
|
"borderColor": "#22c3aa",
|
||||||
|
"borderWidth": "0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"normal": {
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#28544e"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"textStyle": {
|
||||||
|
"color": "rgb(52,158,142)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"geo": {
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"areaColor": "#eeeeee",
|
||||||
|
"borderColor": "#999999",
|
||||||
|
"borderWidth": "0.5"
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"areaColor": "rgba(34,195,170,0.25)",
|
||||||
|
"borderColor": "#22c3aa",
|
||||||
|
"borderWidth": "0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"normal": {
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#28544e"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"textStyle": {
|
||||||
|
"color": "rgb(52,158,142)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"categoryAxis": {
|
||||||
|
"axisLine": {
|
||||||
|
"show": true,
|
||||||
|
"lineStyle": {
|
||||||
|
"color": "#cccccc"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"axisTick": {
|
||||||
|
"show": false,
|
||||||
|
"lineStyle": {
|
||||||
|
"color": "#333333"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"axisLabel": {
|
||||||
|
"show": true,
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#999999"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"splitLine": {
|
||||||
|
"show": true,
|
||||||
|
"lineStyle": {
|
||||||
|
"color": [
|
||||||
|
"#eeeeee"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"splitArea": {
|
||||||
|
"show": false,
|
||||||
|
"areaStyle": {
|
||||||
|
"color": [
|
||||||
|
"rgba(250,250,250,0.3)",
|
||||||
|
"rgba(200,200,200,0.3)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"valueAxis": {
|
||||||
|
"axisLine": {
|
||||||
|
"show": true,
|
||||||
|
"lineStyle": {
|
||||||
|
"color": "#cccccc"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"axisTick": {
|
||||||
|
"show": false,
|
||||||
|
"lineStyle": {
|
||||||
|
"color": "#333333"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"axisLabel": {
|
||||||
|
"show": true,
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#999999"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"splitLine": {
|
||||||
|
"show": true,
|
||||||
|
"lineStyle": {
|
||||||
|
"color": [
|
||||||
|
"#eeeeee"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"splitArea": {
|
||||||
|
"show": false,
|
||||||
|
"areaStyle": {
|
||||||
|
"color": [
|
||||||
|
"rgba(250,250,250,0.3)",
|
||||||
|
"rgba(200,200,200,0.3)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logAxis": {
|
||||||
|
"axisLine": {
|
||||||
|
"show": true,
|
||||||
|
"lineStyle": {
|
||||||
|
"color": "#cccccc"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"axisTick": {
|
||||||
|
"show": false,
|
||||||
|
"lineStyle": {
|
||||||
|
"color": "#333333"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"axisLabel": {
|
||||||
|
"show": true,
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#999999"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"splitLine": {
|
||||||
|
"show": true,
|
||||||
|
"lineStyle": {
|
||||||
|
"color": [
|
||||||
|
"#eeeeee"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"splitArea": {
|
||||||
|
"show": false,
|
||||||
|
"areaStyle": {
|
||||||
|
"color": [
|
||||||
|
"rgba(250,250,250,0.3)",
|
||||||
|
"rgba(200,200,200,0.3)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"timeAxis": {
|
||||||
|
"axisLine": {
|
||||||
|
"show": true,
|
||||||
|
"lineStyle": {
|
||||||
|
"color": "#cccccc"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"axisTick": {
|
||||||
|
"show": false,
|
||||||
|
"lineStyle": {
|
||||||
|
"color": "#333333"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"axisLabel": {
|
||||||
|
"show": true,
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#999999"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"splitLine": {
|
||||||
|
"show": true,
|
||||||
|
"lineStyle": {
|
||||||
|
"color": [
|
||||||
|
"#eeeeee"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"splitArea": {
|
||||||
|
"show": false,
|
||||||
|
"areaStyle": {
|
||||||
|
"color": [
|
||||||
|
"rgba(250,250,250,0.3)",
|
||||||
|
"rgba(200,200,200,0.3)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"toolbox": {
|
||||||
|
"iconStyle": {
|
||||||
|
"normal": {
|
||||||
|
"borderColor": "#aaaaaa"
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"borderColor": "#666"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"legend": {
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#999999"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"axisPointer": {
|
||||||
|
"lineStyle": {
|
||||||
|
"color": "#ccc",
|
||||||
|
"width": 1
|
||||||
|
},
|
||||||
|
"crossStyle": {
|
||||||
|
"color": "#ccc",
|
||||||
|
"width": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"lineStyle": {
|
||||||
|
"color": "#349e8e",
|
||||||
|
"width": 1
|
||||||
|
},
|
||||||
|
"itemStyle": {
|
||||||
|
"normal": {
|
||||||
|
"color": "#349e8e",
|
||||||
|
"borderWidth": "1"
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"color": "#57e8d2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"controlStyle": {
|
||||||
|
"normal": {
|
||||||
|
"color": "#349e8e",
|
||||||
|
"borderColor": "#349e8e",
|
||||||
|
"borderWidth": "0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"checkpointStyle": {
|
||||||
|
"color": "#22c3aa",
|
||||||
|
"borderColor": "rgba(34,195,170,0.25)"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"normal": {
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#349e8e"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"visualMap": {
|
||||||
|
"color": [
|
||||||
|
"#d0648a",
|
||||||
|
"#22c3aa",
|
||||||
|
"rgba(123,217,165,0.2)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dataZoom": {
|
||||||
|
"backgroundColor": "#fff",
|
||||||
|
"dataBackgroundColor": "#dedede",
|
||||||
|
"fillerColor": "rgba(34,195,170,0.25)",
|
||||||
|
"handleColor": "#dddddd",
|
||||||
|
"handleSize": "100%",
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#999"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"markPoint": {
|
||||||
|
"label": {
|
||||||
|
"normal": {
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#ffffff"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"emphasis": {
|
||||||
|
"textStyle": {
|
||||||
|
"color": "#ffffff"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
45
src/@core/components/feather-icon/FeatherIcon.vue
Normal file
45
src/@core/components/feather-icon/FeatherIcon.vue
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<script>
|
||||||
|
import * as icons from 'vue-feather-icons'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'FeatherIcon',
|
||||||
|
functional: true,
|
||||||
|
props: {
|
||||||
|
icon: {
|
||||||
|
required: true,
|
||||||
|
type: [String, Object],
|
||||||
|
},
|
||||||
|
size: {
|
||||||
|
type: String,
|
||||||
|
default: '14',
|
||||||
|
},
|
||||||
|
badge: {
|
||||||
|
type: [String, Object, Number],
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
badgeClasses: {
|
||||||
|
type: [String, Object, Array],
|
||||||
|
default: 'badge-primary',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
render(h, { props, data }) {
|
||||||
|
// Create Feather Icon
|
||||||
|
const svg = h(icons[props.icon], { props: { size: props.size }, ...data })
|
||||||
|
|
||||||
|
// If no badge is provided => Render just SVG
|
||||||
|
if (!props.badge) return svg
|
||||||
|
|
||||||
|
// Badge
|
||||||
|
const badgeEl = h('span', { staticClass: 'badge badge-up badge-pill', class: props.badgeClasses }, [props.badge])
|
||||||
|
|
||||||
|
// Return span with children
|
||||||
|
return h('span', { staticClass: 'feather-icon position-relative' }, [svg, badgeEl])
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
svg.feather {
|
||||||
|
outline: none
|
||||||
|
}
|
||||||
|
</style>
|
67
src/@core/components/scroll-to-top/ScrollToTop.vue
Normal file
67
src/@core/components/scroll-to-top/ScrollToTop.vue
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="btn-scroll-to-top"
|
||||||
|
:class="{'show': y > 250}"
|
||||||
|
>
|
||||||
|
<!-- We have wrapper because ripple effect give position relative to this absolute positioned btn -->
|
||||||
|
<!-- Hence due to that our btn get lost -->
|
||||||
|
<b-button
|
||||||
|
v-ripple.400="'rgba(255, 255, 255, 0.15)'"
|
||||||
|
variant="primary"
|
||||||
|
class="btn-icon"
|
||||||
|
@click="scrollToTop"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
icon="ArrowUpIcon"
|
||||||
|
size="16"
|
||||||
|
/>
|
||||||
|
</b-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { useWindowScroll } from '@vueuse/core'
|
||||||
|
import { BButton } from 'bootstrap-vue'
|
||||||
|
import Ripple from 'vue-ripple-directive'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
directives: {
|
||||||
|
Ripple,
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
BButton,
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
const { y } = useWindowScroll()
|
||||||
|
|
||||||
|
const scrollToTop = () => {
|
||||||
|
const rootEle = document.documentElement
|
||||||
|
rootEle.scrollTo({
|
||||||
|
top: 0,
|
||||||
|
behavior: 'smooth',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return { y, scrollToTop }
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.btn-scroll-to-top {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 5%;
|
||||||
|
right: 30px;
|
||||||
|
z-index: 99;
|
||||||
|
|
||||||
|
opacity: 0;
|
||||||
|
// transform: translateY(100px);
|
||||||
|
transition: all .5s ease;
|
||||||
|
|
||||||
|
&.show {
|
||||||
|
opacity: 1;
|
||||||
|
// transform: translateY(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,51 @@
|
|||||||
|
<template>
|
||||||
|
<b-card no-body>
|
||||||
|
<b-card-body class="d-flex justify-content-between align-items-center">
|
||||||
|
<div class="truncate">
|
||||||
|
<h2 class="mb-25 font-weight-bolder">
|
||||||
|
{{ statistic }}
|
||||||
|
</h2>
|
||||||
|
<span>{{ statisticTitle }}</span>
|
||||||
|
</div>
|
||||||
|
<b-avatar
|
||||||
|
:variant="`light-${color}`"
|
||||||
|
size="45"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="21"
|
||||||
|
:icon="icon"
|
||||||
|
/>
|
||||||
|
</b-avatar>
|
||||||
|
</b-card-body>
|
||||||
|
</b-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BCard, BCardBody, BAvatar } from 'bootstrap-vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BCard,
|
||||||
|
BCardBody,
|
||||||
|
BAvatar,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
icon: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
statistic: {
|
||||||
|
type: [Number, String],
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
statisticTitle: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
color: {
|
||||||
|
type: String,
|
||||||
|
default: 'primary',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,49 @@
|
|||||||
|
<template>
|
||||||
|
<b-card class="text-center">
|
||||||
|
<b-avatar
|
||||||
|
class="mb-1"
|
||||||
|
:variant="`light-${color}`"
|
||||||
|
size="45"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="21"
|
||||||
|
:icon="icon"
|
||||||
|
/>
|
||||||
|
</b-avatar>
|
||||||
|
<div class="truncate">
|
||||||
|
<h2 class="mb-25 font-weight-bolder">
|
||||||
|
{{ statistic }}
|
||||||
|
</h2>
|
||||||
|
<span>{{ statisticTitle }}</span>
|
||||||
|
</div>
|
||||||
|
</b-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BCard, BAvatar } from 'bootstrap-vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BCard,
|
||||||
|
BAvatar,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
icon: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
statistic: {
|
||||||
|
type: [Number, String],
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
statisticTitle: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
color: {
|
||||||
|
type: String,
|
||||||
|
default: 'primary',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,83 @@
|
|||||||
|
<template>
|
||||||
|
<b-card no-body>
|
||||||
|
<b-card-body class="pb-0">
|
||||||
|
<b-avatar
|
||||||
|
class="mb-1"
|
||||||
|
:variant="`light-${color}`"
|
||||||
|
size="45"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="21"
|
||||||
|
:icon="icon"
|
||||||
|
/>
|
||||||
|
</b-avatar>
|
||||||
|
<div class="truncate">
|
||||||
|
<h2 class="mb-25 font-weight-bolder">
|
||||||
|
{{ statistic }}
|
||||||
|
</h2>
|
||||||
|
<span>{{ statisticTitle }}</span>
|
||||||
|
</div>
|
||||||
|
</b-card-body>
|
||||||
|
|
||||||
|
<vue-apex-charts
|
||||||
|
type="area"
|
||||||
|
height="100"
|
||||||
|
width="100%"
|
||||||
|
:options="chartOptionsComputed"
|
||||||
|
:series="chartData"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</b-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BCard, BCardBody, BAvatar } from 'bootstrap-vue'
|
||||||
|
import VueApexCharts from 'vue-apexcharts'
|
||||||
|
import { $themeColors } from '@themeConfig'
|
||||||
|
import { areaChartOptions } from './chartOptions'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
VueApexCharts,
|
||||||
|
BCard,
|
||||||
|
BCardBody,
|
||||||
|
BAvatar,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
icon: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
statistic: {
|
||||||
|
type: [Number, String],
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
statisticTitle: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
color: {
|
||||||
|
type: String,
|
||||||
|
default: 'primary',
|
||||||
|
},
|
||||||
|
chartData: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
chartOptions: {
|
||||||
|
type: Object,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
chartOptionsComputed() {
|
||||||
|
if (this.chartOptions === null) {
|
||||||
|
const options = JSON.parse(JSON.stringify(areaChartOptions))
|
||||||
|
options.theme.monochrome.color = $themeColors[this.color]
|
||||||
|
return options
|
||||||
|
}
|
||||||
|
return this.chartOptions
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,101 @@
|
|||||||
|
<template>
|
||||||
|
<b-card no-body>
|
||||||
|
<b-card-body class="d-flex justify-content-between align-items-center pb-0">
|
||||||
|
<div class="truncate">
|
||||||
|
<h2 class="font-weight-bolder">
|
||||||
|
{{ statistic }}
|
||||||
|
</h2>
|
||||||
|
<span>{{ statisticTitle }}</span>
|
||||||
|
</div>
|
||||||
|
<b-avatar
|
||||||
|
:variant="`light-${color}`"
|
||||||
|
size="45"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="21"
|
||||||
|
:icon="icon"
|
||||||
|
/>
|
||||||
|
</b-avatar>
|
||||||
|
</b-card-body>
|
||||||
|
|
||||||
|
<vue-apex-charts
|
||||||
|
type="line"
|
||||||
|
height="100"
|
||||||
|
width="100%"
|
||||||
|
:options="chartOptionsComputed"
|
||||||
|
:series="chartData"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</b-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BCard, BCardBody, BAvatar } from 'bootstrap-vue'
|
||||||
|
import VueApexCharts from 'vue-apexcharts'
|
||||||
|
import { $themeColors } from '@themeConfig'
|
||||||
|
import { lineChartOptions } from './chartOptions'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
VueApexCharts,
|
||||||
|
BCard,
|
||||||
|
BCardBody,
|
||||||
|
BAvatar,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
icon: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
statistic: {
|
||||||
|
type: [Number, String],
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
statisticTitle: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
color: {
|
||||||
|
type: String,
|
||||||
|
default: 'primary',
|
||||||
|
},
|
||||||
|
chartData: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
chartOptions: {
|
||||||
|
type: Object,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
chartOptionsComputed() {
|
||||||
|
if (this.chartOptions === null) {
|
||||||
|
const options = JSON.parse(JSON.stringify(lineChartOptions))
|
||||||
|
|
||||||
|
options.fill.gradient.gradientToColors = [this.gradientToColor(this.color)]
|
||||||
|
options.colors = [$themeColors[this.color]]
|
||||||
|
|
||||||
|
return options
|
||||||
|
}
|
||||||
|
return this.chartOptions
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
gradientToColor(color) {
|
||||||
|
const gradientToColors = {
|
||||||
|
primary: '#A9A2F6',
|
||||||
|
success: '#55DD92',
|
||||||
|
warning: '#ffc085',
|
||||||
|
danger: '#F97794',
|
||||||
|
info: '#59E0F0',
|
||||||
|
secondary: '#B4B9BF',
|
||||||
|
light: '#D0D4DB',
|
||||||
|
dark: '#919191',
|
||||||
|
}
|
||||||
|
|
||||||
|
return gradientToColors[color]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
122
src/@core/components/statistics-cards/chartOptions.js
Normal file
122
src/@core/components/statistics-cards/chartOptions.js
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
import { $themeColors } from '@themeConfig'
|
||||||
|
|
||||||
|
export const areaChartOptions = {
|
||||||
|
grid: {
|
||||||
|
show: false,
|
||||||
|
padding: {
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
chart: {
|
||||||
|
toolbar: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
sparkline: {
|
||||||
|
enabled: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dataLabels: {
|
||||||
|
enabled: false,
|
||||||
|
},
|
||||||
|
stroke: {
|
||||||
|
curve: 'smooth',
|
||||||
|
width: 2.5,
|
||||||
|
},
|
||||||
|
fill: {
|
||||||
|
type: 'gradient',
|
||||||
|
gradient: {
|
||||||
|
shadeIntensity: 0.9,
|
||||||
|
opacityFrom: 0.5,
|
||||||
|
opacityTo: 0.2,
|
||||||
|
stops: [0, 80, 100],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
xaxis: {
|
||||||
|
type: 'numeric',
|
||||||
|
lines: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
axisBorder: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
labels: { show: false },
|
||||||
|
},
|
||||||
|
yaxis: [
|
||||||
|
{
|
||||||
|
y: 0,
|
||||||
|
offsetX: 0,
|
||||||
|
offsetY: 0,
|
||||||
|
padding: {
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
tooltip: {
|
||||||
|
x: { show: false },
|
||||||
|
},
|
||||||
|
theme: {
|
||||||
|
monochrome: {
|
||||||
|
enabled: true,
|
||||||
|
color: $themeColors.primary,
|
||||||
|
shadeTo: 'light',
|
||||||
|
shadeIntensity: 0.65,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
export const lineChartOptions = {
|
||||||
|
grid: {
|
||||||
|
show: false,
|
||||||
|
padding: {
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
chart: {
|
||||||
|
type: 'line',
|
||||||
|
dropShadow: {
|
||||||
|
enabled: true,
|
||||||
|
top: 5,
|
||||||
|
left: 0,
|
||||||
|
blur: 4,
|
||||||
|
opacity: 0.1,
|
||||||
|
},
|
||||||
|
toolbar: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
sparkline: {
|
||||||
|
enabled: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
stroke: {
|
||||||
|
width: 5,
|
||||||
|
curve: 'smooth',
|
||||||
|
},
|
||||||
|
xaxis: {
|
||||||
|
type: 'numeric',
|
||||||
|
},
|
||||||
|
colors: [$themeColors.primary],
|
||||||
|
fill: {
|
||||||
|
type: 'gradient',
|
||||||
|
gradient: {
|
||||||
|
shade: 'dark',
|
||||||
|
gradientToColors: ['#A9A2F6'],
|
||||||
|
shadeIntensity: 1,
|
||||||
|
type: 'horizontal',
|
||||||
|
opacityFrom: 1,
|
||||||
|
opacityTo: 1,
|
||||||
|
stops: [0, 100, 100, 100],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
markers: {
|
||||||
|
size: 0,
|
||||||
|
hover: {
|
||||||
|
size: 5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
x: { show: false },
|
||||||
|
},
|
||||||
|
}
|
@ -0,0 +1,84 @@
|
|||||||
|
<template>
|
||||||
|
<div class="toastification">
|
||||||
|
<div class="d-flex align-items-start">
|
||||||
|
<b-avatar
|
||||||
|
:variant="variant"
|
||||||
|
size="1.8rem"
|
||||||
|
class="mr-75 flex-shrink-0"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
:icon="icon"
|
||||||
|
size="15"
|
||||||
|
/>
|
||||||
|
</b-avatar>
|
||||||
|
<div class="d-flex flex-grow-1">
|
||||||
|
<div>
|
||||||
|
<h5
|
||||||
|
v-if="title"
|
||||||
|
class="mb-0 font-weight-bolder toastification-title"
|
||||||
|
:class="`text-${variant}`"
|
||||||
|
v-text="title"
|
||||||
|
/>
|
||||||
|
<small
|
||||||
|
v-if="text"
|
||||||
|
class="d-inline-block text-body"
|
||||||
|
v-text="text"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<span
|
||||||
|
class="cursor-pointer toastification-close-icon ml-auto "
|
||||||
|
@click="$emit('close-toast')"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
v-if="!hideClose"
|
||||||
|
icon="XIcon"
|
||||||
|
class="text-body"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BAvatar } from 'bootstrap-vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BAvatar,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
variant: {
|
||||||
|
type: String,
|
||||||
|
default: 'primary',
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
hideClose: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.toastification-close-icon,
|
||||||
|
.toastification-title {
|
||||||
|
line-height: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toastification-title {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
</style>
|
32
src/@core/directives/animations.js
Normal file
32
src/@core/directives/animations.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
export const heightFade = {
|
||||||
|
/* eslint-disable no-param-reassign */
|
||||||
|
inserted(el, binding) {
|
||||||
|
const height = `${el.offsetHeight}px`
|
||||||
|
|
||||||
|
if (binding.modifiers.appear) {
|
||||||
|
el.style.overflow = 'hidden'
|
||||||
|
el.style.maxHeight = '0px'
|
||||||
|
el.style.opacity = 0
|
||||||
|
|
||||||
|
// Focus the element
|
||||||
|
setTimeout(() => {
|
||||||
|
el.style.maxHeight = height
|
||||||
|
el.style.opacity = 1
|
||||||
|
setTimeout(() => {
|
||||||
|
el.style.overflow = 'unset'
|
||||||
|
}, 300)
|
||||||
|
}, 100)
|
||||||
|
} else {
|
||||||
|
el.style.maxHeight = height
|
||||||
|
}
|
||||||
|
},
|
||||||
|
unbind(el) {
|
||||||
|
if (el.style === undefined) return
|
||||||
|
el.style.overflow = 'hidden'
|
||||||
|
el.style.maxHeight = '0px'
|
||||||
|
el.style.opacity = 0
|
||||||
|
},
|
||||||
|
/* eslint-enable no-param-reassign */
|
||||||
|
}
|
||||||
|
|
||||||
|
export const temp = 2
|
69
src/@core/layouts/components/AppBreadcrumb.vue
Normal file
69
src/@core/layouts/components/AppBreadcrumb.vue
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<template>
|
||||||
|
<b-row
|
||||||
|
v-if="$route.meta.breadcrumb || $route.meta.pageTitle"
|
||||||
|
class="content-header"
|
||||||
|
>
|
||||||
|
|
||||||
|
<!-- Content Left -->
|
||||||
|
<b-col
|
||||||
|
class="content-header-left mb-2"
|
||||||
|
cols="12"
|
||||||
|
md="9"
|
||||||
|
>
|
||||||
|
<b-row class="breadcrumbs-top">
|
||||||
|
<b-col cols="12">
|
||||||
|
<h2 class="content-header-title float-left pr-1 mb-0">
|
||||||
|
{{ $route.meta.pageTitle }}
|
||||||
|
</h2>
|
||||||
|
<div class="breadcrumb-wrapper">
|
||||||
|
<b-breadcrumb>
|
||||||
|
<b-breadcrumb-item to="/">
|
||||||
|
<feather-icon
|
||||||
|
icon="HomeIcon"
|
||||||
|
size="16"
|
||||||
|
class="align-text-top"
|
||||||
|
/>
|
||||||
|
</b-breadcrumb-item>
|
||||||
|
<b-breadcrumb-item
|
||||||
|
v-for="item in $route.meta.breadcrumb"
|
||||||
|
:key="item.text"
|
||||||
|
:active="item.active"
|
||||||
|
:to="item.to"
|
||||||
|
>
|
||||||
|
{{ item.text }}
|
||||||
|
</b-breadcrumb-item>
|
||||||
|
</b-breadcrumb>
|
||||||
|
</div>
|
||||||
|
</b-col>
|
||||||
|
</b-row>
|
||||||
|
</b-col>
|
||||||
|
|
||||||
|
<!-- Content Right -->
|
||||||
|
<b-col
|
||||||
|
class="content-header-right text-md-right d-md-block d-none mb-1"
|
||||||
|
md="3"
|
||||||
|
cols="12"
|
||||||
|
>
|
||||||
|
|
||||||
|
</b-col>
|
||||||
|
</b-row>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
BBreadcrumb, BBreadcrumbItem, BRow, BCol,
|
||||||
|
} from 'bootstrap-vue'
|
||||||
|
import Ripple from 'vue-ripple-directive'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
directives: {
|
||||||
|
Ripple,
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
BBreadcrumb,
|
||||||
|
BBreadcrumbItem,
|
||||||
|
BRow,
|
||||||
|
BCol,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
42
src/@core/layouts/components/AppFooter.vue
Normal file
42
src/@core/layouts/components/AppFooter.vue
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<template>
|
||||||
|
<p class="clearfix mb-0">
|
||||||
|
<span class="float-md-left d-block d-md-inline-block mt-25">
|
||||||
|
Powered By
|
||||||
|
<b-link
|
||||||
|
class="ml-25"
|
||||||
|
href="#"
|
||||||
|
target="_blank"
|
||||||
|
>Ping.pub</b-link>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<span class="float-md-right d-none d-md-block">Buy me a cup of coffee.
|
||||||
|
<span
|
||||||
|
v-b-popover.hover.topleft="'Atom: cosmos1ev0vtddkl7jlwfawlk06yzncapw2x9quyxx75u'"
|
||||||
|
v-ripple.400="'rgba(113, 102, 240, 0.15)'"
|
||||||
|
title="Thanks for your donation!"
|
||||||
|
variant="outline-primary"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
icon="HeartIcon"
|
||||||
|
size="21"
|
||||||
|
class="text-danger stroke-current"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BLink, VBPopover } from 'bootstrap-vue'
|
||||||
|
import Ripple from 'vue-ripple-directive'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BLink,
|
||||||
|
},
|
||||||
|
directives: {
|
||||||
|
'b-popover': VBPopover,
|
||||||
|
Ripple,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
93
src/@core/layouts/components/Logo.vue
Normal file
93
src/@core/layouts/components/Logo.vue
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
<template>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 139 95"
|
||||||
|
version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
height="24"
|
||||||
|
>
|
||||||
|
<defs>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient-1"
|
||||||
|
x1="100%"
|
||||||
|
y1="10.5120544%"
|
||||||
|
x2="50%"
|
||||||
|
y2="89.4879456%"
|
||||||
|
>
|
||||||
|
<stop
|
||||||
|
stop-color="#000000"
|
||||||
|
offset="0%"
|
||||||
|
/>
|
||||||
|
<stop
|
||||||
|
stop-color="#FFFFFF"
|
||||||
|
offset="100%"
|
||||||
|
/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient-2"
|
||||||
|
x1="64.0437835%"
|
||||||
|
y1="46.3276743%"
|
||||||
|
x2="37.373316%"
|
||||||
|
y2="100%"
|
||||||
|
>
|
||||||
|
<stop
|
||||||
|
stop-color="#EEEEEE"
|
||||||
|
stop-opacity="0"
|
||||||
|
offset="0%"
|
||||||
|
/>
|
||||||
|
<stop
|
||||||
|
stop-color="#FFFFFF"
|
||||||
|
offset="100%"
|
||||||
|
/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
id="Page-1"
|
||||||
|
stroke="none"
|
||||||
|
stroke-width="1"
|
||||||
|
fill="none"
|
||||||
|
fill-rule="evenodd"
|
||||||
|
>
|
||||||
|
<g
|
||||||
|
id="Artboard"
|
||||||
|
transform="translate(-400.000000, -178.000000)"
|
||||||
|
>
|
||||||
|
<g
|
||||||
|
id="Group"
|
||||||
|
transform="translate(400.000000, 178.000000)"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
id="Path"
|
||||||
|
class="text-primary"
|
||||||
|
d="M-5.68434189e-14,2.84217094e-14 L39.1816085,2.84217094e-14 L69.3453773,32.2519224 L101.428699,2.84217094e-14 L138.784583,2.84217094e-14 L138.784199,29.8015838 C137.958931,37.3510206 135.784352,42.5567762 132.260463,45.4188507 C128.736573,48.2809251 112.33867,64.5239941 83.0667527,94.1480575 L56.2750821,94.1480575 L6.71554594,44.4188507 C2.46876683,39.9813776 0.345377275,35.1089553 0.345377275,29.8015838 C0.345377275,24.4942122 0.230251516,14.560351 -5.68434189e-14,2.84217094e-14 Z"
|
||||||
|
style="fill:currentColor"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
id="Path1"
|
||||||
|
d="M69.3453773,32.2519224 L101.428699,1.42108547e-14 L138.784583,1.42108547e-14 L138.784199,29.8015838 C137.958931,37.3510206 135.784352,42.5567762 132.260463,45.4188507 C128.736573,48.2809251 112.33867,64.5239941 83.0667527,94.1480575 L56.2750821,94.1480575 L32.8435758,70.5039241 L69.3453773,32.2519224 Z"
|
||||||
|
fill="url(#linearGradient-1)"
|
||||||
|
opacity="0.2"
|
||||||
|
/>
|
||||||
|
<polygon
|
||||||
|
id="Path-2"
|
||||||
|
fill="#000000"
|
||||||
|
opacity="0.049999997"
|
||||||
|
points="69.3922914 32.4202615 32.8435758 70.5039241 54.0490008 16.1851325"
|
||||||
|
/>
|
||||||
|
<polygon
|
||||||
|
id="Path-21"
|
||||||
|
fill="#000000"
|
||||||
|
opacity="0.099999994"
|
||||||
|
points="69.3922914 32.4202615 32.8435758 70.5039241 58.3683556 20.7402338"
|
||||||
|
/>
|
||||||
|
<polygon
|
||||||
|
id="Path-3"
|
||||||
|
fill="url(#linearGradient-2)"
|
||||||
|
opacity="0.099999994"
|
||||||
|
points="101.428699 0 83.0667527 94.1480575 130.378721 47.0740288"
|
||||||
|
/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
</template>
|
344
src/@core/layouts/components/app-customizer/AppCustomizer.vue
Normal file
344
src/@core/layouts/components/app-customizer/AppCustomizer.vue
Normal file
@ -0,0 +1,344 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="customizer d-none d-md-block"
|
||||||
|
:class="{'open': isCustomizerOpen}"
|
||||||
|
>
|
||||||
|
<!-- Toggler -->
|
||||||
|
<b-link
|
||||||
|
class="customizer-toggle d-flex align-items-center justify-content-center"
|
||||||
|
@click="isCustomizerOpen = !isCustomizerOpen"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
icon="SettingsIcon"
|
||||||
|
size="15"
|
||||||
|
class="spinner"
|
||||||
|
/>
|
||||||
|
</b-link>
|
||||||
|
<!-- /Toggler -->
|
||||||
|
|
||||||
|
<!-- Header -->
|
||||||
|
<div class="customizer-section d-flex justify-content-between align-items-center">
|
||||||
|
<div>
|
||||||
|
<h4 class="text-uppercase mb-0">
|
||||||
|
Theme Customizer
|
||||||
|
</h4>
|
||||||
|
<small>Customize & Preview in Real Time</small>
|
||||||
|
</div>
|
||||||
|
<feather-icon
|
||||||
|
icon="XIcon"
|
||||||
|
size="18"
|
||||||
|
class="cursor-pointer"
|
||||||
|
@click="isCustomizerOpen = !isCustomizerOpen"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<!-- Header -->
|
||||||
|
|
||||||
|
<vue-perfect-scrollbar
|
||||||
|
:settings="perfectScrollbarSettings"
|
||||||
|
class="ps-customizer-area scroll-area"
|
||||||
|
>
|
||||||
|
<!-- Skin, RTL, Router Animation -->
|
||||||
|
<div class="customizer-section">
|
||||||
|
|
||||||
|
<!-- Skin -->
|
||||||
|
<b-form-group label="Skin">
|
||||||
|
<b-form-radio-group
|
||||||
|
id="skin-radio-group"
|
||||||
|
v-model="skin"
|
||||||
|
name="skin"
|
||||||
|
:options="skinOptions"
|
||||||
|
/>
|
||||||
|
</b-form-group>
|
||||||
|
|
||||||
|
<!-- Skin -->
|
||||||
|
<b-form-group label="Content Width">
|
||||||
|
<b-form-radio-group
|
||||||
|
id="content-width-radio-group"
|
||||||
|
v-model="contentWidth"
|
||||||
|
name="content-width"
|
||||||
|
:options="contentWidthOptions"
|
||||||
|
/>
|
||||||
|
</b-form-group>
|
||||||
|
|
||||||
|
<!-- RTL -->
|
||||||
|
<b-form-group
|
||||||
|
label="RTL"
|
||||||
|
label-cols="10"
|
||||||
|
>
|
||||||
|
<b-form-checkbox
|
||||||
|
v-model="isRTL"
|
||||||
|
class="mr-0 mt-50"
|
||||||
|
name="is-rtl"
|
||||||
|
switch
|
||||||
|
inline
|
||||||
|
/>
|
||||||
|
</b-form-group>
|
||||||
|
|
||||||
|
<!-- Router Transition -->
|
||||||
|
<b-form-group
|
||||||
|
label="Router Transition"
|
||||||
|
label-cols="6"
|
||||||
|
>
|
||||||
|
<v-select
|
||||||
|
v-model="routerTransition"
|
||||||
|
:dir="$store.state.appConfig.isRTL ? 'rtl' : 'ltr'"
|
||||||
|
:clearable="false"
|
||||||
|
label="title"
|
||||||
|
:options="routerTransitionOptions"
|
||||||
|
:reduce="option => option.value"
|
||||||
|
/>
|
||||||
|
</b-form-group>
|
||||||
|
</div>
|
||||||
|
<!-- /Skin, RTL, Router Animation -->
|
||||||
|
|
||||||
|
<!-- SECTION: Menu -->
|
||||||
|
<div class="customizer-section">
|
||||||
|
|
||||||
|
<!-- Layout Type -->
|
||||||
|
<b-form-group
|
||||||
|
label="Menu Layout"
|
||||||
|
>
|
||||||
|
<b-form-radio-group
|
||||||
|
v-model="layoutType"
|
||||||
|
name="layout-type"
|
||||||
|
:options="layoutTypeOptions"
|
||||||
|
/>
|
||||||
|
</b-form-group>
|
||||||
|
|
||||||
|
<!-- Collapsible -->
|
||||||
|
<div
|
||||||
|
v-if="layoutType === 'vertical'"
|
||||||
|
class="d-flex justify-content-between align-items-center mt-2"
|
||||||
|
>
|
||||||
|
<span class="font-weight-bold">Menu Collapsed</span>
|
||||||
|
<b-form-checkbox
|
||||||
|
v-model="isVerticalMenuCollapsed"
|
||||||
|
name="is-vertical-menu-collapsed"
|
||||||
|
class="mr-0"
|
||||||
|
switch
|
||||||
|
inline
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Menu Visiblity -->
|
||||||
|
<div class="d-flex justify-content-between align-items-center mt-2">
|
||||||
|
<span class="font-weight-bold">Menu Hidden</span>
|
||||||
|
<b-form-checkbox
|
||||||
|
v-model="isNavMenuHidden"
|
||||||
|
name="is-menu-visible"
|
||||||
|
class="mr-0"
|
||||||
|
switch
|
||||||
|
inline
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- SECTION: Navbar -->
|
||||||
|
<div class="customizer-section">
|
||||||
|
|
||||||
|
<!-- Navbar Color -->
|
||||||
|
<b-form-group
|
||||||
|
v-show="layoutType === 'vertical'"
|
||||||
|
label="Navbar Color"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-for="(color, index) in navbarColors"
|
||||||
|
:key="color"
|
||||||
|
class="p-1 d-inline-block rounded mr-1 cursor-pointer"
|
||||||
|
:class="[`bg-${color}`, {'border border-light': !index}, {'mark-active': navbarBackgroundColor === color}]"
|
||||||
|
@click="navbarBackgroundColor = color"
|
||||||
|
/>
|
||||||
|
</b-form-group>
|
||||||
|
|
||||||
|
<!-- Navbar Type -->
|
||||||
|
<b-form-group :label="layoutType === 'vertical' ? 'Navbar Type' : 'Menu Type'">
|
||||||
|
<b-form-radio-group
|
||||||
|
v-model="navbarType"
|
||||||
|
name="navbar-type"
|
||||||
|
:options="navbarTypes"
|
||||||
|
/>
|
||||||
|
</b-form-group>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- SECTION: Footer -->
|
||||||
|
<div class="customizer-section">
|
||||||
|
|
||||||
|
<!-- Footer Type -->
|
||||||
|
<b-form-group label="Footer Type">
|
||||||
|
<b-form-radio-group
|
||||||
|
v-model="footerType"
|
||||||
|
name="footer-type"
|
||||||
|
:options="footerTypes"
|
||||||
|
/>
|
||||||
|
</b-form-group>
|
||||||
|
</div>
|
||||||
|
</vue-perfect-scrollbar>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
BLink, BFormRadioGroup, BFormGroup, BFormCheckbox,
|
||||||
|
} from 'bootstrap-vue'
|
||||||
|
import vSelect from 'vue-select'
|
||||||
|
import VuePerfectScrollbar from 'vue-perfect-scrollbar'
|
||||||
|
import useAppCustomizer from './useAppCustomizer'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
// BSV
|
||||||
|
BLink,
|
||||||
|
BFormRadioGroup,
|
||||||
|
BFormCheckbox,
|
||||||
|
BFormGroup,
|
||||||
|
|
||||||
|
// 3rd party
|
||||||
|
vSelect,
|
||||||
|
VuePerfectScrollbar,
|
||||||
|
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
const {
|
||||||
|
// Vertical Menu
|
||||||
|
isVerticalMenuCollapsed,
|
||||||
|
|
||||||
|
// Customizer
|
||||||
|
isCustomizerOpen,
|
||||||
|
|
||||||
|
// Skin
|
||||||
|
skin,
|
||||||
|
skinOptions,
|
||||||
|
|
||||||
|
// Content Width
|
||||||
|
contentWidth,
|
||||||
|
contentWidthOptions,
|
||||||
|
|
||||||
|
// RTL
|
||||||
|
isRTL,
|
||||||
|
|
||||||
|
// routerTransition
|
||||||
|
routerTransition,
|
||||||
|
routerTransitionOptions,
|
||||||
|
|
||||||
|
// Layout Type
|
||||||
|
layoutType,
|
||||||
|
layoutTypeOptions,
|
||||||
|
|
||||||
|
// NavMenu Hidden
|
||||||
|
isNavMenuHidden,
|
||||||
|
|
||||||
|
// Navbar
|
||||||
|
navbarColors,
|
||||||
|
navbarTypes,
|
||||||
|
navbarBackgroundColor,
|
||||||
|
navbarType,
|
||||||
|
|
||||||
|
// Footer
|
||||||
|
footerTypes,
|
||||||
|
footerType,
|
||||||
|
} = useAppCustomizer()
|
||||||
|
|
||||||
|
if (layoutType.value === 'horizontal') {
|
||||||
|
// Remove semi-dark skin option in horizontal layout
|
||||||
|
const skinSemiDarkIndex = skinOptions.findIndex(s => s.value === 'semi-dark')
|
||||||
|
delete skinOptions[skinSemiDarkIndex]
|
||||||
|
|
||||||
|
// Remove menu hidden radio in horizontal layout => As we already have switch for it
|
||||||
|
const menuHiddneIndex = navbarTypes.findIndex(t => t.value === 'hidden')
|
||||||
|
delete navbarTypes[menuHiddneIndex]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perfect Scrollbar
|
||||||
|
const perfectScrollbarSettings = {
|
||||||
|
maxScrollbarLength: 60,
|
||||||
|
wheelPropagation: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
// Vertical Menu
|
||||||
|
isVerticalMenuCollapsed,
|
||||||
|
|
||||||
|
// Customizer
|
||||||
|
isCustomizerOpen,
|
||||||
|
|
||||||
|
// Skin
|
||||||
|
skin,
|
||||||
|
skinOptions,
|
||||||
|
|
||||||
|
// Content Width
|
||||||
|
contentWidth,
|
||||||
|
contentWidthOptions,
|
||||||
|
|
||||||
|
// RTL
|
||||||
|
isRTL,
|
||||||
|
|
||||||
|
// routerTransition
|
||||||
|
routerTransition,
|
||||||
|
routerTransitionOptions,
|
||||||
|
|
||||||
|
// Layout Type
|
||||||
|
layoutType,
|
||||||
|
layoutTypeOptions,
|
||||||
|
|
||||||
|
// NavMenu Hidden
|
||||||
|
isNavMenuHidden,
|
||||||
|
|
||||||
|
// Navbar
|
||||||
|
navbarColors,
|
||||||
|
navbarTypes,
|
||||||
|
navbarBackgroundColor,
|
||||||
|
navbarType,
|
||||||
|
|
||||||
|
// Footer
|
||||||
|
footerTypes,
|
||||||
|
footerType,
|
||||||
|
|
||||||
|
// Perfect Scrollbar
|
||||||
|
perfectScrollbarSettings,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
@import '@core/scss/vue/libs/vue-select.scss';
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import '~@core/scss/base/bootstrap-extended/include';
|
||||||
|
@import '~@core/scss/base/components/variables-dark';
|
||||||
|
|
||||||
|
.customizer-section {
|
||||||
|
padding: 1.5rem;
|
||||||
|
border-bottom: 1px solid #ebe9f1;
|
||||||
|
|
||||||
|
.dark-layout & {
|
||||||
|
border-color: $theme-dark-border-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
#skin-radio-group ::v-deep {
|
||||||
|
.custom-control-inline {
|
||||||
|
margin-right: 0.7rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group {
|
||||||
|
margin-bottom: 1.5rem;;
|
||||||
|
&:last-of-type {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
::v-deep legend {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mark-active {
|
||||||
|
box-shadow: 0 0 0 0.2rem rgba(38,143,255,.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ps-customizer-area {
|
||||||
|
height: calc(100% - 83px)
|
||||||
|
}
|
||||||
|
</style>
|
109
src/@core/layouts/components/app-customizer/useAppCustomizer.js
Normal file
109
src/@core/layouts/components/app-customizer/useAppCustomizer.js
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
import { ref } from '@vue/composition-api'
|
||||||
|
import useAppConfig from '@core/app-config/useAppConfig'
|
||||||
|
|
||||||
|
export default function useAppCustomizer() {
|
||||||
|
// Customizer
|
||||||
|
const isCustomizerOpen = ref(false)
|
||||||
|
|
||||||
|
// Skin
|
||||||
|
const skinOptions = [
|
||||||
|
{ text: 'Light', value: 'light' },
|
||||||
|
{ text: 'Bordered', value: 'bordered' },
|
||||||
|
{ text: 'Dark', value: 'dark' },
|
||||||
|
{ text: 'Semi Dark', value: 'semi-dark' },
|
||||||
|
]
|
||||||
|
|
||||||
|
// Content Width Options
|
||||||
|
const contentWidthOptions = [
|
||||||
|
{ text: 'Full Width', value: 'full' },
|
||||||
|
{ text: 'Boxed', value: 'boxed' },
|
||||||
|
]
|
||||||
|
|
||||||
|
// Router Transition
|
||||||
|
const routerTransitionOptions = [
|
||||||
|
{ title: 'Zoom Fade', value: 'zoom-fade' },
|
||||||
|
{ title: 'Fade', value: 'fade' },
|
||||||
|
{ title: 'Fade Bottom', value: 'fade-bottom' },
|
||||||
|
{ title: 'Slide Fade', value: 'slide-fade' },
|
||||||
|
{ title: 'Zoom Out', value: 'zoom-out' },
|
||||||
|
{ title: 'None', value: 'none' },
|
||||||
|
]
|
||||||
|
|
||||||
|
// Router Transition
|
||||||
|
const layoutTypeOptions = [
|
||||||
|
{ text: 'Vertical', value: 'vertical' },
|
||||||
|
{ text: 'Horizontal', value: 'horizontal' },
|
||||||
|
]
|
||||||
|
|
||||||
|
// Navbar
|
||||||
|
const navbarColors = ['', 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark']
|
||||||
|
|
||||||
|
// Navbar Types
|
||||||
|
const navbarTypes = [
|
||||||
|
{ text: 'Floating', value: 'floating' },
|
||||||
|
{ text: 'Sticky', value: 'sticky' },
|
||||||
|
{ text: 'Static', value: 'static' },
|
||||||
|
{ text: 'Hidden', value: 'hidden' },
|
||||||
|
]
|
||||||
|
|
||||||
|
// Footer Types
|
||||||
|
const footerTypes = [
|
||||||
|
{ text: 'Sticky', value: 'sticky' },
|
||||||
|
{ text: 'Static', value: 'static' },
|
||||||
|
{ text: 'Hidden', value: 'hidden' },
|
||||||
|
]
|
||||||
|
|
||||||
|
// eslint-disable-next-line object-curly-newline
|
||||||
|
const {
|
||||||
|
isRTL,
|
||||||
|
skin,
|
||||||
|
contentWidth,
|
||||||
|
routerTransition,
|
||||||
|
layoutType,
|
||||||
|
isNavMenuHidden,
|
||||||
|
isVerticalMenuCollapsed,
|
||||||
|
navbarBackgroundColor,
|
||||||
|
navbarType,
|
||||||
|
footerType,
|
||||||
|
} = useAppConfig()
|
||||||
|
|
||||||
|
return {
|
||||||
|
// Customizer
|
||||||
|
isCustomizerOpen,
|
||||||
|
|
||||||
|
// Vertical Menu
|
||||||
|
isVerticalMenuCollapsed,
|
||||||
|
|
||||||
|
// Skin
|
||||||
|
skin,
|
||||||
|
skinOptions,
|
||||||
|
|
||||||
|
// Content Width
|
||||||
|
contentWidth,
|
||||||
|
contentWidthOptions,
|
||||||
|
|
||||||
|
// RTL
|
||||||
|
isRTL,
|
||||||
|
|
||||||
|
// routerTransition
|
||||||
|
routerTransition,
|
||||||
|
routerTransitionOptions,
|
||||||
|
|
||||||
|
// Layout Type
|
||||||
|
layoutType,
|
||||||
|
layoutTypeOptions,
|
||||||
|
|
||||||
|
// NavMenu Hidden
|
||||||
|
isNavMenuHidden,
|
||||||
|
|
||||||
|
// Navbar
|
||||||
|
navbarColors,
|
||||||
|
navbarTypes,
|
||||||
|
navbarBackgroundColor,
|
||||||
|
navbarType,
|
||||||
|
|
||||||
|
// Footer
|
||||||
|
footerTypes,
|
||||||
|
footerType,
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,72 @@
|
|||||||
|
<template>
|
||||||
|
<div class="navbar-container d-flex content align-items-center">
|
||||||
|
|
||||||
|
<!-- Nav Menu Toggler -->
|
||||||
|
<ul class="nav navbar-nav d-xl-none">
|
||||||
|
<li class="nav-item">
|
||||||
|
<b-link
|
||||||
|
class="nav-link"
|
||||||
|
@click="toggleVerticalMenuActive"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
icon="MenuIcon"
|
||||||
|
size="21"
|
||||||
|
/>
|
||||||
|
</b-link>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- Left Col -->
|
||||||
|
<div class="bookmark-wrapper align-items-center flex-grow-1 d-none d-lg-flex">
|
||||||
|
<bookmarks />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Right Col -->
|
||||||
|
<b-navbar-nav class="nav align-items-center ml-auto">
|
||||||
|
<dark-Toggler class="d-none d-lg-block" />
|
||||||
|
<search-bar />
|
||||||
|
<notification-dropdown />
|
||||||
|
<template #button-content>
|
||||||
|
<b-button
|
||||||
|
v-ripple.400="'rgba(255, 255, 255, 0.15)'"
|
||||||
|
variant="primary"
|
||||||
|
class="btn-icon"
|
||||||
|
>
|
||||||
|
<feather-icon icon="SettingsIcon" />
|
||||||
|
</b-button>
|
||||||
|
</template>
|
||||||
|
</b-navbar-nav>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
BLink, BNavbarNav, BButton,
|
||||||
|
} from 'bootstrap-vue'
|
||||||
|
import Bookmarks from './components/Bookmarks.vue'
|
||||||
|
// import Locale from './components/Locale.vue'
|
||||||
|
import DarkToggler from './components/DarkToggler.vue'
|
||||||
|
import SearchBar from './components/SearchBar.vue'
|
||||||
|
import NotificationDropdown from './components/NotificationDropdown.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BLink,
|
||||||
|
|
||||||
|
// Navbar Components
|
||||||
|
BNavbarNav,
|
||||||
|
Bookmarks,
|
||||||
|
DarkToggler,
|
||||||
|
SearchBar,
|
||||||
|
NotificationDropdown,
|
||||||
|
BButton,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
toggleVerticalMenuActive: {
|
||||||
|
type: Function,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,46 @@
|
|||||||
|
<template>
|
||||||
|
<div class="navbar-header d-xl-block d-none">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li class="nav-item">
|
||||||
|
<b-link
|
||||||
|
class="navbar-brand"
|
||||||
|
to="/"
|
||||||
|
>
|
||||||
|
<span class="brand-logo">
|
||||||
|
<b-img
|
||||||
|
:src="appLogoImage"
|
||||||
|
alt="logo"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
<h2 class="brand-text mb-0">
|
||||||
|
{{ appName }}
|
||||||
|
</h2>
|
||||||
|
</b-link>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BLink, BImg } from 'bootstrap-vue'
|
||||||
|
import { $themeConfig } from '@themeConfig'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BLink,
|
||||||
|
BImg,
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
// App Name
|
||||||
|
const { appName, appLogoImage } = $themeConfig.app
|
||||||
|
return {
|
||||||
|
appName,
|
||||||
|
appLogoImage,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,61 @@
|
|||||||
|
<template>
|
||||||
|
<div class="navbar-container d-flex content align-items-center">
|
||||||
|
|
||||||
|
<!-- Nav Menu Toggler -->
|
||||||
|
<ul class="nav navbar-nav d-xl-none">
|
||||||
|
<li class="nav-item">
|
||||||
|
<b-link
|
||||||
|
class="nav-link"
|
||||||
|
@click="toggleVerticalMenuActive"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
icon="MenuIcon"
|
||||||
|
size="21"
|
||||||
|
/>
|
||||||
|
</b-link>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- Left Col -->
|
||||||
|
<div class="bookmark-wrapper align-items-center flex-grow-1 d-none d-lg-flex">
|
||||||
|
|
||||||
|
<!-- Bookmarks Container -->
|
||||||
|
<bookmarks />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<b-navbar-nav class="nav align-items-center ml-auto">
|
||||||
|
<dark-Toggler class="d-none d-lg-block" />
|
||||||
|
<search-bar />
|
||||||
|
<notification-dropdown />
|
||||||
|
</b-navbar-nav>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
BLink, BNavbarNav,
|
||||||
|
} from 'bootstrap-vue'
|
||||||
|
import Bookmarks from './components/Bookmarks.vue'
|
||||||
|
import SearchBar from './components/SearchBar.vue'
|
||||||
|
import DarkToggler from './components/DarkToggler.vue'
|
||||||
|
import NotificationDropdown from './components/NotificationDropdown.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BLink,
|
||||||
|
|
||||||
|
// Navbar Components
|
||||||
|
BNavbarNav,
|
||||||
|
Bookmarks,
|
||||||
|
SearchBar,
|
||||||
|
DarkToggler,
|
||||||
|
NotificationDropdown,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
toggleVerticalMenuActive: {
|
||||||
|
type: Function,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
196
src/@core/layouts/components/app-navbar/components/Bookmarks.vue
Normal file
196
src/@core/layouts/components/app-navbar/components/Bookmarks.vue
Normal file
@ -0,0 +1,196 @@
|
|||||||
|
<template>
|
||||||
|
<b-navbar-nav class="nav">
|
||||||
|
<b-nav-item
|
||||||
|
v-for="(bookmark, index) in bookmarks"
|
||||||
|
:id="`bookmark-${index}`"
|
||||||
|
:key="index"
|
||||||
|
:to="bookmark.route"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
:icon="bookmark.icon"
|
||||||
|
size="21"
|
||||||
|
/>
|
||||||
|
<b-tooltip
|
||||||
|
triggers="hover"
|
||||||
|
:target="`bookmark-${index}`"
|
||||||
|
:title="bookmark.title"
|
||||||
|
:delay="{ show: 1000, hide: 50 }"
|
||||||
|
/>
|
||||||
|
</b-nav-item>
|
||||||
|
<b-nav-item-dropdown
|
||||||
|
link-classes="bookmark-star"
|
||||||
|
lazy
|
||||||
|
@hidden="resetsearchQuery"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
slot="button-content"
|
||||||
|
icon="StarIcon"
|
||||||
|
size="21"
|
||||||
|
class="text-warning"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- Dropdown Content -->
|
||||||
|
<li style="min-width:300px">
|
||||||
|
<div class="p-1">
|
||||||
|
<b-form-input
|
||||||
|
id="boomark-search-input"
|
||||||
|
v-model="searchQuery"
|
||||||
|
placeholder="Explore Vuexy..."
|
||||||
|
autofocus
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<vue-perfect-scrollbar
|
||||||
|
:settings="perfectScrollbarSettings"
|
||||||
|
class="search-list search-list-bookmark scroll-area"
|
||||||
|
:class="{'show': filteredData.pages && filteredData.pages.length }"
|
||||||
|
tagname="ul"
|
||||||
|
>
|
||||||
|
|
||||||
|
<b-dropdown-item
|
||||||
|
v-for="(suggestion, index) in filteredData.pages || bookmarks"
|
||||||
|
:key="index"
|
||||||
|
class="suggestion-group-suggestion cursor-pointer"
|
||||||
|
link-class="d-flex align-items-center"
|
||||||
|
:to="suggestion.route"
|
||||||
|
@mouseenter="currentSelected = index"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
:icon="suggestion.icon"
|
||||||
|
class="mr-75"
|
||||||
|
size="18"
|
||||||
|
/>
|
||||||
|
<span class="align-middle">{{ suggestion.title }}</span>
|
||||||
|
<feather-icon
|
||||||
|
icon="StarIcon"
|
||||||
|
class="ml-auto"
|
||||||
|
size="16"
|
||||||
|
:class="{'text-warning': suggestion.isBookmarked}"
|
||||||
|
@click.stop.prevent="toggleBookmarked(suggestion)"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</b-dropdown-item>
|
||||||
|
<b-dropdown-item
|
||||||
|
v-show="!(filteredData.pages && filteredData.pages.length) && searchQuery"
|
||||||
|
disabled
|
||||||
|
>
|
||||||
|
No Results Found.
|
||||||
|
</b-dropdown-item></vue-perfect-scrollbar>
|
||||||
|
</li>
|
||||||
|
</b-nav-item-dropdown>
|
||||||
|
|
||||||
|
</b-navbar-nav>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
BNavbarNav, BNavItem, BTooltip, BNavItemDropdown, BFormInput, BDropdownItem,
|
||||||
|
} from 'bootstrap-vue'
|
||||||
|
import VuePerfectScrollbar from 'vue-perfect-scrollbar'
|
||||||
|
import useAutoSuggest from '@core/components/app-auto-suggest/useAutoSuggest'
|
||||||
|
import { ref, watch } from '@vue/composition-api'
|
||||||
|
import router from '@/router'
|
||||||
|
import store from '@/store'
|
||||||
|
import searchAndBookmarkData from '../search-and-bookmark-data'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BNavbarNav, BNavItem, BTooltip, BNavItemDropdown, BFormInput, VuePerfectScrollbar, BDropdownItem,
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
const searchAndBookmarkDataPages = ref(searchAndBookmarkData.pages)
|
||||||
|
const bookmarks = ref(searchAndBookmarkData.pages.data.filter(page => page.isBookmarked))
|
||||||
|
const currentSelected = ref(-1)
|
||||||
|
|
||||||
|
const perfectScrollbarSettings = {
|
||||||
|
maxScrollbarLength: 60,
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
searchQuery,
|
||||||
|
resetsearchQuery,
|
||||||
|
filteredData,
|
||||||
|
} = useAutoSuggest({ data: { pages: searchAndBookmarkDataPages.value }, searchLimit: 6 })
|
||||||
|
|
||||||
|
watch(searchQuery, val => {
|
||||||
|
store.commit('app/TOGGLE_OVERLAY', Boolean(val))
|
||||||
|
})
|
||||||
|
|
||||||
|
watch(filteredData, val => {
|
||||||
|
currentSelected.value = val.pages && !val.pages.length ? -1 : 0
|
||||||
|
})
|
||||||
|
|
||||||
|
const suggestionSelected = () => {
|
||||||
|
const suggestion = filteredData.value.pages[currentSelected.value]
|
||||||
|
router.push(suggestion.route).catch(() => {})
|
||||||
|
resetsearchQuery()
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleBookmarked = item => {
|
||||||
|
// Find Index of item/page in bookmarks' array
|
||||||
|
const pageIndexInBookmarks = bookmarks.value.findIndex(i => i.route === item.route)
|
||||||
|
|
||||||
|
// If index is > -1 => Item is bookmarked => Remove item from bookmarks array using index
|
||||||
|
// Else => Item is not bookmarked => Add item to bookmarks' array
|
||||||
|
if (pageIndexInBookmarks > -1) {
|
||||||
|
bookmarks.value[pageIndexInBookmarks].isBookmarked = false
|
||||||
|
bookmarks.value.splice(pageIndexInBookmarks, 1)
|
||||||
|
} else {
|
||||||
|
bookmarks.value.push(item)
|
||||||
|
bookmarks.value[bookmarks.value.length - 1].isBookmarked = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
bookmarks,
|
||||||
|
perfectScrollbarSettings,
|
||||||
|
currentSelected,
|
||||||
|
suggestionSelected,
|
||||||
|
toggleBookmarked,
|
||||||
|
|
||||||
|
// AutoSuggest
|
||||||
|
searchQuery,
|
||||||
|
resetsearchQuery,
|
||||||
|
filteredData,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import '~@core/scss/base/bootstrap-extended/include';
|
||||||
|
|
||||||
|
ul
|
||||||
|
{
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-bookmar-content-overlay {
|
||||||
|
position: fixed;
|
||||||
|
opacity: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
-webkit-transition: all 0.7s;
|
||||||
|
transition: all 0.7s;
|
||||||
|
z-index: -1;
|
||||||
|
|
||||||
|
&:not(.show) {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.show {
|
||||||
|
cursor: pointer;
|
||||||
|
z-index: 10;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,177 @@
|
|||||||
|
<template>
|
||||||
|
<b-nav-item-dropdown
|
||||||
|
class="dropdown-cart mr-25"
|
||||||
|
menu-class="dropdown-menu-media"
|
||||||
|
right
|
||||||
|
@show="fetchItems"
|
||||||
|
>
|
||||||
|
<template #button-content>
|
||||||
|
<feather-icon
|
||||||
|
:badge="$store.state['app-ecommerce'].cartItemsCount"
|
||||||
|
class="text-body"
|
||||||
|
icon="ShoppingCartIcon"
|
||||||
|
size="21"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- Header -->
|
||||||
|
<li class="dropdown-menu-header">
|
||||||
|
<div class="dropdown-header d-flex">
|
||||||
|
<h4 class="notification-title mb-0 mr-auto">
|
||||||
|
My Cart
|
||||||
|
</h4>
|
||||||
|
<b-badge
|
||||||
|
pill
|
||||||
|
variant="light-primary"
|
||||||
|
>
|
||||||
|
{{ $store.state['app-ecommerce'].cartItemsCount }} Items
|
||||||
|
</b-badge>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Cart Items -->
|
||||||
|
<vue-perfect-scrollbar
|
||||||
|
v-if="items.length"
|
||||||
|
:settings="perfectScrollbarSettings"
|
||||||
|
class="scrollable-container media-list scroll-area"
|
||||||
|
tagname="li"
|
||||||
|
>
|
||||||
|
<b-media
|
||||||
|
v-for="item in items"
|
||||||
|
:key="item.name"
|
||||||
|
>
|
||||||
|
<template #aside>
|
||||||
|
<b-img
|
||||||
|
:src="item.image"
|
||||||
|
:alt="item.name"
|
||||||
|
rounded
|
||||||
|
width="62px"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<feather-icon
|
||||||
|
icon="XIcon"
|
||||||
|
class="cart-item-remove cursor-pointer"
|
||||||
|
@click.stop="removeItemFromCart(item.id)"
|
||||||
|
/>
|
||||||
|
<div class="media-heading">
|
||||||
|
<h6 class="cart-item-title">
|
||||||
|
<b-link class="text-body">
|
||||||
|
{{ item.name }}
|
||||||
|
</b-link>
|
||||||
|
</h6>
|
||||||
|
<small class="cart-item-by">By {{ item.brand }}</small>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="cart-item-qty ml-1">
|
||||||
|
<b-form-spinbutton
|
||||||
|
v-model="item.qty"
|
||||||
|
min="1"
|
||||||
|
size="sm"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h5 class="cart-item-price">
|
||||||
|
${{ item.price }}
|
||||||
|
</h5>
|
||||||
|
</b-media>
|
||||||
|
</vue-perfect-scrollbar>
|
||||||
|
|
||||||
|
<!-- Cart Footer -->
|
||||||
|
<li
|
||||||
|
v-if="items.length"
|
||||||
|
class="dropdown-menu-footer"
|
||||||
|
>
|
||||||
|
<div class="d-flex justify-content-between mb-1">
|
||||||
|
<h6 class="font-weight-bolder mb-0">
|
||||||
|
Total:
|
||||||
|
</h6>
|
||||||
|
<h6 class="text-primary font-weight-bolder mb-0">
|
||||||
|
${{ totalAmount }}
|
||||||
|
</h6>
|
||||||
|
</div>
|
||||||
|
<b-button
|
||||||
|
v-ripple.400="'rgba(255, 255, 255, 0.15)'"
|
||||||
|
variant="primary"
|
||||||
|
block
|
||||||
|
:to="{ name: 'apps-e-commerce-checkout' }"
|
||||||
|
>
|
||||||
|
Checkout
|
||||||
|
</b-button>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<p
|
||||||
|
v-if="!items.length"
|
||||||
|
class="m-0 p-1 text-center"
|
||||||
|
>
|
||||||
|
Your cart is empty
|
||||||
|
</p>
|
||||||
|
</b-nav-item-dropdown>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// import {
|
||||||
|
// BNavItemDropdown, BBadge, BMedia, BLink, BImg, BFormSpinbutton, BButton,
|
||||||
|
// } from 'bootstrap-vue'
|
||||||
|
// import VuePerfectScrollbar from 'vue-perfect-scrollbar'
|
||||||
|
// import Ripple from 'vue-ripple-directive'
|
||||||
|
|
||||||
|
// export default {
|
||||||
|
// components: {
|
||||||
|
// BNavItemDropdown,
|
||||||
|
// BBadge,
|
||||||
|
// BMedia,
|
||||||
|
// BLink,
|
||||||
|
// BImg,
|
||||||
|
// BFormSpinbutton,
|
||||||
|
// VuePerfectScrollbar,
|
||||||
|
// BButton,
|
||||||
|
// },
|
||||||
|
// directives: {
|
||||||
|
// Ripple,
|
||||||
|
// },
|
||||||
|
// data() {
|
||||||
|
// return {
|
||||||
|
// items: [],
|
||||||
|
// perfectScrollbarSettings: {
|
||||||
|
// maxScrollbarLength: 60,
|
||||||
|
// wheelPropagation: false,
|
||||||
|
// },
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// computed: {
|
||||||
|
// totalAmount() {
|
||||||
|
// let total = 0
|
||||||
|
// this.items.forEach(i => { total += i.price })
|
||||||
|
// return total
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// methods: {
|
||||||
|
// fetchItems() {
|
||||||
|
// this.$store.dispatch('app-ecommerce/fetchCartProducts')
|
||||||
|
// .then(response => {
|
||||||
|
// this.items = response.data.products
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
// removeItemFromCart(productId) {
|
||||||
|
// this.$store.dispatch('app-ecommerce/removeProductFromCart', { productId })
|
||||||
|
// .then(() => {
|
||||||
|
// const itemIndex = this.items.findIndex(p => p.id === productId)
|
||||||
|
// this.items.splice(itemIndex, 1)
|
||||||
|
|
||||||
|
// // Update count in cart items state
|
||||||
|
// this.$store.commit('app-ecommerce/UPDATE_CART_ITEMS_COUNT', this.items.length)
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// }
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.dropdown-cart {
|
||||||
|
.media {
|
||||||
|
.media-aside {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,27 @@
|
|||||||
|
<template>
|
||||||
|
<b-nav-item @click="skin = isDark ? 'light' : 'dark'">
|
||||||
|
<feather-icon
|
||||||
|
size="21"
|
||||||
|
:icon="`${isDark ? 'Sun' : 'Moon'}Icon`"
|
||||||
|
/>
|
||||||
|
</b-nav-item>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import useAppConfig from '@core/app-config/useAppConfig'
|
||||||
|
import { computed } from '@vue/composition-api'
|
||||||
|
import { BNavItem } from 'bootstrap-vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BNavItem,
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
const { skin } = useAppConfig()
|
||||||
|
|
||||||
|
const isDark = computed(() => skin.value === 'dark')
|
||||||
|
|
||||||
|
return { skin, isDark }
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,83 @@
|
|||||||
|
<template>
|
||||||
|
<b-nav-item-dropdown
|
||||||
|
id="dropdown-grouped"
|
||||||
|
variant="link"
|
||||||
|
class="dropdown-language"
|
||||||
|
right
|
||||||
|
>
|
||||||
|
<template #button-content>
|
||||||
|
<b-img
|
||||||
|
:src="currentLocale.img"
|
||||||
|
height="14px"
|
||||||
|
width="22px"
|
||||||
|
:alt="currentLocale.locale"
|
||||||
|
/>
|
||||||
|
<span class="ml-50 text-body">{{ currentLocale.name }}</span>
|
||||||
|
</template>
|
||||||
|
<b-dropdown-item
|
||||||
|
v-for="localeObj in locales"
|
||||||
|
:key="localeObj.locale"
|
||||||
|
@click="$i18n.locale = localeObj.locale"
|
||||||
|
>
|
||||||
|
<b-img
|
||||||
|
:src="localeObj.img"
|
||||||
|
height="14px"
|
||||||
|
width="22px"
|
||||||
|
:alt="localeObj.locale"
|
||||||
|
/>
|
||||||
|
<span class="ml-50">{{ localeObj.name }}</span>
|
||||||
|
</b-dropdown-item>
|
||||||
|
</b-nav-item-dropdown>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BNavItemDropdown, BDropdownItem, BImg } from 'bootstrap-vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BNavItemDropdown,
|
||||||
|
BDropdownItem,
|
||||||
|
BImg,
|
||||||
|
},
|
||||||
|
// ! Need to move this computed property to comp function once we get to Vue 3
|
||||||
|
computed: {
|
||||||
|
currentLocale() {
|
||||||
|
return this.locales.find(l => l.locale === this.$i18n.locale)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
/* eslint-disable global-require */
|
||||||
|
const locales = [
|
||||||
|
{
|
||||||
|
locale: 'en',
|
||||||
|
img: require('@/assets/images/flags/en.png'),
|
||||||
|
name: 'English',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
locale: 'fr',
|
||||||
|
img: require('@/assets/images/flags/fr.png'),
|
||||||
|
name: 'French',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
locale: 'de',
|
||||||
|
img: require('@/assets/images/flags/de.png'),
|
||||||
|
name: 'German',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
locale: 'pt',
|
||||||
|
img: require('@/assets/images/flags/pt.png'),
|
||||||
|
name: 'Portuguese',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
/* eslint-disable global-require */
|
||||||
|
|
||||||
|
return {
|
||||||
|
locales,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,189 @@
|
|||||||
|
<template>
|
||||||
|
<b-nav-item-dropdown
|
||||||
|
class="dropdown-notification mr-25"
|
||||||
|
menu-class="dropdown-menu-media"
|
||||||
|
right
|
||||||
|
>
|
||||||
|
<template #button-content>
|
||||||
|
<feather-icon
|
||||||
|
badge="6"
|
||||||
|
badge-classes="bg-danger"
|
||||||
|
class="text-body"
|
||||||
|
icon="BellIcon"
|
||||||
|
size="21"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- Header -->
|
||||||
|
<li class="dropdown-menu-header">
|
||||||
|
<div class="dropdown-header d-flex">
|
||||||
|
<h4 class="notification-title mb-0 mr-auto">
|
||||||
|
Notifications
|
||||||
|
</h4>
|
||||||
|
<b-badge
|
||||||
|
pill
|
||||||
|
variant="light-primary"
|
||||||
|
>
|
||||||
|
6 New
|
||||||
|
</b-badge>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Notifications -->
|
||||||
|
<vue-perfect-scrollbar
|
||||||
|
v-once
|
||||||
|
:settings="perfectScrollbarSettings"
|
||||||
|
class="scrollable-container media-list scroll-area"
|
||||||
|
tagname="li"
|
||||||
|
>
|
||||||
|
<!-- Account Notification -->
|
||||||
|
<b-link
|
||||||
|
v-for="notification in notifications"
|
||||||
|
:key="notification.subtitle"
|
||||||
|
>
|
||||||
|
<b-media>
|
||||||
|
<template #aside>
|
||||||
|
<b-avatar
|
||||||
|
size="32"
|
||||||
|
:src="notification.avatar"
|
||||||
|
:text="notification.avatar"
|
||||||
|
:variant="notification.type"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<p class="media-heading">
|
||||||
|
<span class="font-weight-bolder">
|
||||||
|
{{ notification.title }}
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
<small class="notification-text">{{ notification.subtitle }}</small>
|
||||||
|
</b-media>
|
||||||
|
</b-link>
|
||||||
|
|
||||||
|
<!-- System Notification Toggler -->
|
||||||
|
<div class="media d-flex align-items-center">
|
||||||
|
<h6 class="font-weight-bolder mr-auto mb-0">
|
||||||
|
System Notifications
|
||||||
|
</h6>
|
||||||
|
<b-form-checkbox
|
||||||
|
:checked="true"
|
||||||
|
switch
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- System Notifications -->
|
||||||
|
<b-link
|
||||||
|
v-for="notification in systemNotifications"
|
||||||
|
:key="notification.subtitle"
|
||||||
|
>
|
||||||
|
<b-media>
|
||||||
|
<template #aside>
|
||||||
|
<b-avatar
|
||||||
|
size="32"
|
||||||
|
:variant="notification.type"
|
||||||
|
>
|
||||||
|
<feather-icon :icon="notification.icon" />
|
||||||
|
</b-avatar>
|
||||||
|
</template>
|
||||||
|
<p class="media-heading">
|
||||||
|
<span class="font-weight-bolder">
|
||||||
|
{{ notification.title }}
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
<small class="notification-text">{{ notification.subtitle }}</small>
|
||||||
|
</b-media>
|
||||||
|
</b-link>
|
||||||
|
</vue-perfect-scrollbar>
|
||||||
|
|
||||||
|
<!-- Cart Footer -->
|
||||||
|
<li class="dropdown-menu-footer"><b-button
|
||||||
|
v-ripple.400="'rgba(255, 255, 255, 0.15)'"
|
||||||
|
variant="primary"
|
||||||
|
block
|
||||||
|
>Read all notifications</b-button>
|
||||||
|
</li>
|
||||||
|
</b-nav-item-dropdown>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
BNavItemDropdown, BBadge, BMedia, BLink, BAvatar, BButton, BFormCheckbox,
|
||||||
|
} from 'bootstrap-vue'
|
||||||
|
import VuePerfectScrollbar from 'vue-perfect-scrollbar'
|
||||||
|
import Ripple from 'vue-ripple-directive'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BNavItemDropdown,
|
||||||
|
BBadge,
|
||||||
|
BMedia,
|
||||||
|
BLink,
|
||||||
|
BAvatar,
|
||||||
|
VuePerfectScrollbar,
|
||||||
|
BButton,
|
||||||
|
BFormCheckbox,
|
||||||
|
},
|
||||||
|
directives: {
|
||||||
|
Ripple,
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
/* eslint-disable global-require */
|
||||||
|
const notifications = [
|
||||||
|
{
|
||||||
|
title: 'Congratulation Sam 🎉',
|
||||||
|
avatar: require('@/assets/images/avatars/6-small.png'),
|
||||||
|
subtitle: 'Won the monthly best seller badge',
|
||||||
|
type: 'light-success',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'New message received',
|
||||||
|
avatar: require('@/assets/images/avatars/9-small.png'),
|
||||||
|
subtitle: 'You have 10 unread messages',
|
||||||
|
type: 'light-info',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Revised Order 👋',
|
||||||
|
avatar: 'MD',
|
||||||
|
subtitle: 'MD Inc. order updated',
|
||||||
|
type: 'light-danger',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
/* eslint-disable global-require */
|
||||||
|
|
||||||
|
const systemNotifications = [
|
||||||
|
{
|
||||||
|
title: 'Server down',
|
||||||
|
subtitle: 'USA Server is down due to hight CPU usage',
|
||||||
|
type: 'light-danger',
|
||||||
|
icon: 'XIcon',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Sales report generated',
|
||||||
|
subtitle: 'Last month sales report generated',
|
||||||
|
type: 'light-success',
|
||||||
|
icon: 'CheckIcon',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'High memory usage',
|
||||||
|
subtitle: 'BLR Server using high memory',
|
||||||
|
type: 'light-warning',
|
||||||
|
icon: 'AlertTriangleIcon',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
const perfectScrollbarSettings = {
|
||||||
|
maxScrollbarLength: 60,
|
||||||
|
wheelPropagation: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
notifications,
|
||||||
|
systemNotifications,
|
||||||
|
perfectScrollbarSettings,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
311
src/@core/layouts/components/app-navbar/components/SearchBar.vue
Normal file
311
src/@core/layouts/components/app-navbar/components/SearchBar.vue
Normal file
@ -0,0 +1,311 @@
|
|||||||
|
<template>
|
||||||
|
<li class="nav-item nav-search">
|
||||||
|
|
||||||
|
<!-- Icon -->
|
||||||
|
<a
|
||||||
|
href="javascript:void(0)"
|
||||||
|
class="nav-link nav-link-search"
|
||||||
|
@click="showSearchBar = true"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
icon="SearchIcon"
|
||||||
|
size="21"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<!-- Input -->
|
||||||
|
<div
|
||||||
|
class="search-input"
|
||||||
|
:class="{'open': showSearchBar}"
|
||||||
|
>
|
||||||
|
<div class="search-input-icon">
|
||||||
|
<feather-icon icon="SearchIcon" />
|
||||||
|
</div>
|
||||||
|
<!-- <input type="text" placeholder="Explore Vuexy...." class="form-control-input"> -->
|
||||||
|
<!-- @keyup.esc="escPressed" -->
|
||||||
|
<!-- @keyup.enter="suggestionSelected" -->
|
||||||
|
<b-form-input
|
||||||
|
v-if="showSearchBar"
|
||||||
|
v-model="searchQuery"
|
||||||
|
placeholder="Explore Vuexy"
|
||||||
|
autofocus
|
||||||
|
autocomplete="off"
|
||||||
|
@keyup.up="increaseIndex(false)"
|
||||||
|
@keyup.down="increaseIndex"
|
||||||
|
@keyup.esc="showSearchBar = false; resetsearchQuery()"
|
||||||
|
@keyup.enter="suggestionSelected"
|
||||||
|
@blur.stop="showSearchBar = false; resetsearchQuery()"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
class="search-input-close"
|
||||||
|
@click="showSearchBar = false; resetsearchQuery()"
|
||||||
|
>
|
||||||
|
<feather-icon icon="XIcon" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Suggestions List -->
|
||||||
|
<vue-perfect-scrollbar
|
||||||
|
:settings="perfectScrollbarSettings"
|
||||||
|
class="search-list search-list-main scroll-area overflow-hidden"
|
||||||
|
:class="{'show': searchQuery}"
|
||||||
|
tagname="ul"
|
||||||
|
>
|
||||||
|
<li
|
||||||
|
v-for="(suggestion_list, grp_name, grp_index) in filteredData"
|
||||||
|
:key="grp_index"
|
||||||
|
class="suggestions-groups-list"
|
||||||
|
>
|
||||||
|
|
||||||
|
<!-- Group Header -->
|
||||||
|
<p class="suggestion-group-title">
|
||||||
|
<span>
|
||||||
|
{{ title(grp_name) }}
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<!-- Suggestion List of each group -->
|
||||||
|
<ul>
|
||||||
|
<li
|
||||||
|
v-for="(suggestion, index) in suggestion_list"
|
||||||
|
:key="index"
|
||||||
|
class="suggestion-group-suggestion cursor-pointer"
|
||||||
|
:class="{'suggestion-current-selected': currentSelected === `${grp_index}.${index}`}"
|
||||||
|
@mouseenter="currentSelected = `${grp_index}.${index}`"
|
||||||
|
@mousedown.prevent="suggestionSelected(grp_name, suggestion)"
|
||||||
|
>
|
||||||
|
<b-link
|
||||||
|
v-if="grp_name === 'pages'"
|
||||||
|
class="p-0"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
:icon="suggestion.icon"
|
||||||
|
class="mr-75"
|
||||||
|
/>
|
||||||
|
<span class="align-middle">{{ suggestion.title }}</span>
|
||||||
|
</b-link>
|
||||||
|
<template v-else-if="grp_name === 'files'">
|
||||||
|
<div class="d-flex align-items-center">
|
||||||
|
<b-img
|
||||||
|
:src="suggestion.icon"
|
||||||
|
class="mr-1"
|
||||||
|
height="32"
|
||||||
|
/>
|
||||||
|
<div>
|
||||||
|
<p>{{ suggestion.file_name }}</p>
|
||||||
|
<small>by {{ suggestion.from }}</small>
|
||||||
|
</div>
|
||||||
|
<small class="ml-auto">{{ suggestion.size }}</small>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template v-else-if="grp_name === 'contacts'">
|
||||||
|
<div class="d-flex align-items-center">
|
||||||
|
<b-avatar
|
||||||
|
:src="suggestion.img"
|
||||||
|
class="mr-1"
|
||||||
|
size="32"
|
||||||
|
/>
|
||||||
|
<div>
|
||||||
|
<p>{{ suggestion.name }}</p>
|
||||||
|
<small>{{ suggestion.email }}</small>
|
||||||
|
</div>
|
||||||
|
<small class="ml-auto">{{ suggestion.time }}</small>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li
|
||||||
|
v-if="!suggestion_list.length && searchQuery"
|
||||||
|
class="suggestion-group-suggestion no-results"
|
||||||
|
>
|
||||||
|
<p>No Results Found.</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</vue-perfect-scrollbar>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
BFormInput, BLink, BImg, BAvatar,
|
||||||
|
} from 'bootstrap-vue'
|
||||||
|
import { ref, watch } from '@vue/composition-api'
|
||||||
|
import VuePerfectScrollbar from 'vue-perfect-scrollbar'
|
||||||
|
import useAutoSuggest from '@core/components/app-auto-suggest/useAutoSuggest'
|
||||||
|
import { title } from '@core/utils/filter'
|
||||||
|
import router from '@/router'
|
||||||
|
import store from '@/store'
|
||||||
|
import searchAndBookmarkData from '../search-and-bookmark-data'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BFormInput,
|
||||||
|
BLink,
|
||||||
|
BImg,
|
||||||
|
BAvatar,
|
||||||
|
VuePerfectScrollbar,
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
const showSearchBar = ref(false)
|
||||||
|
|
||||||
|
const perfectScrollbarSettings = {
|
||||||
|
maxScrollbarLength: 60,
|
||||||
|
}
|
||||||
|
|
||||||
|
const suggestionSelected = (grpName, suggestion) => {
|
||||||
|
// If parameter is not provided => Use current selected
|
||||||
|
if (!suggestion) {
|
||||||
|
// If currentSelected value is -1 => No value/item is selected (Prevent Errors)
|
||||||
|
/* eslint-disable no-use-before-define, no-param-reassign */
|
||||||
|
if (currentSelected.value !== -1) {
|
||||||
|
/* eslint-disable no-use-before-define, no-param-reassign */
|
||||||
|
const [grpIndex, itemIndex] = currentSelected.value.split('.')
|
||||||
|
grpName = Object.keys(filteredData.value)[grpIndex]
|
||||||
|
suggestion = filteredData.value[grpName][itemIndex]
|
||||||
|
/* eslint-enable */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (grpName === 'pages') router.push(suggestion.route).catch(() => {})
|
||||||
|
// eslint-disable-next-line no-use-before-define
|
||||||
|
resetsearchQuery()
|
||||||
|
showSearchBar.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
searchQuery,
|
||||||
|
resetsearchQuery,
|
||||||
|
filteredData,
|
||||||
|
} = useAutoSuggest({ data: searchAndBookmarkData, searchLimit: 4 })
|
||||||
|
|
||||||
|
watch(searchQuery, val => {
|
||||||
|
store.commit('app/TOGGLE_OVERLAY', Boolean(val))
|
||||||
|
})
|
||||||
|
|
||||||
|
const currentSelected = ref(-1)
|
||||||
|
watch(filteredData, val => {
|
||||||
|
if (!Object.values(val).some(obj => obj.length)) {
|
||||||
|
currentSelected.value = -1
|
||||||
|
} else {
|
||||||
|
// Auto Select first item if it's not item-404
|
||||||
|
let grpIndex = null
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-restricted-syntax
|
||||||
|
for (const [index, grpSuggestions] of Object.values(val).entries()) {
|
||||||
|
if (grpSuggestions.length) {
|
||||||
|
grpIndex = index
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (grpIndex !== null) currentSelected.value = `${grpIndex}.0`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const increaseIndex = (val = true) => {
|
||||||
|
/* eslint-disable no-lonely-if, no-plusplus */
|
||||||
|
|
||||||
|
// If there's no matching items
|
||||||
|
if (!Object.values(filteredData.value).some(grpItems => grpItems.length)) return
|
||||||
|
|
||||||
|
const [grpIndex, itemIndex] = currentSelected.value.split('.')
|
||||||
|
|
||||||
|
const grpArr = Object.entries(filteredData.value)
|
||||||
|
const activeGrpTotalItems = grpArr[grpIndex][1].length
|
||||||
|
|
||||||
|
if (val) {
|
||||||
|
// If active item is not of last item in grp
|
||||||
|
if (activeGrpTotalItems - 1 > itemIndex) {
|
||||||
|
currentSelected.value = `${grpIndex}.${Number(itemIndex) + 1}`
|
||||||
|
|
||||||
|
// If active item grp is not last in grp list
|
||||||
|
} else if (grpIndex < grpArr.length - 1) {
|
||||||
|
for (let i = Number(grpIndex) + 1; i < grpArr.length; i++) {
|
||||||
|
// If navigating group have items => Then move in that group
|
||||||
|
if (grpArr[i][1].length > 0) {
|
||||||
|
currentSelected.value = `${Number(i)}.0`
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// If active item is not of first item in grp
|
||||||
|
if (Number(itemIndex)) {
|
||||||
|
currentSelected.value = `${grpIndex}.${Number(itemIndex) - 1}`
|
||||||
|
|
||||||
|
// If active item grp is not first in grp list
|
||||||
|
} else if (Number(grpIndex)) {
|
||||||
|
for (let i = Number(grpIndex) - 1; i >= 0; i--) {
|
||||||
|
// If navigating group have items => Then move in that group
|
||||||
|
if (grpArr[i][1].length > 0) {
|
||||||
|
currentSelected.value = `${i}.${grpArr[i][1].length - 1}`
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* eslint-enable no-lonely-if, no-plusplus */
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
showSearchBar,
|
||||||
|
perfectScrollbarSettings,
|
||||||
|
searchAndBookmarkData,
|
||||||
|
title,
|
||||||
|
suggestionSelected,
|
||||||
|
currentSelected,
|
||||||
|
increaseIndex,
|
||||||
|
|
||||||
|
// AutoSuggest
|
||||||
|
searchQuery,
|
||||||
|
resetsearchQuery,
|
||||||
|
filteredData,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import '~@core/scss/base/bootstrap-extended/include';
|
||||||
|
@import '~@core/scss/base/components/variables-dark';
|
||||||
|
|
||||||
|
ul
|
||||||
|
{
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .app-auto-suggest {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.auto-suggest-suggestions-list {
|
||||||
|
box-shadow: 0 4px 24px 0 rgba(34, 41, 47, 0.1);
|
||||||
|
border-radius: 6px;
|
||||||
|
position: absolute;
|
||||||
|
top: calc(100% + 1rem);
|
||||||
|
background-color: white;
|
||||||
|
width: 100%;
|
||||||
|
} */
|
||||||
|
|
||||||
|
.suggestion-group-title {
|
||||||
|
font-weight: 500;
|
||||||
|
padding: .75rem 1rem .25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.suggestion-group-suggestion {
|
||||||
|
padding: .75rem 1rem
|
||||||
|
}
|
||||||
|
|
||||||
|
.suggestion-current-selected {
|
||||||
|
background-color: $body-bg;
|
||||||
|
|
||||||
|
.dark-layout & {
|
||||||
|
background-color: $theme-dark-body-bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,162 @@
|
|||||||
|
<template>
|
||||||
|
<b-nav-item-dropdown
|
||||||
|
right
|
||||||
|
toggle-class="d-flex align-items-center dropdown-user-link"
|
||||||
|
class="dropdown-user"
|
||||||
|
>
|
||||||
|
<template #button-content>
|
||||||
|
<div class="d-sm-flex d-none user-nav">
|
||||||
|
<p class="user-name font-weight-bolder mb-0">
|
||||||
|
{{ userData.fullName || userData.username }}
|
||||||
|
</p>
|
||||||
|
<span class="user-status">{{ userData.role }}</span>
|
||||||
|
</div>
|
||||||
|
<b-avatar
|
||||||
|
size="40"
|
||||||
|
:src="userData.avatar"
|
||||||
|
variant="light-primary"
|
||||||
|
badge
|
||||||
|
class="badge-minimal"
|
||||||
|
badge-variant="success"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
v-if="!userData.fullName"
|
||||||
|
icon="UserIcon"
|
||||||
|
size="22"
|
||||||
|
/>
|
||||||
|
</b-avatar>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<b-dropdown-item
|
||||||
|
:to="{ name: 'pages-profile'}"
|
||||||
|
link-class="d-flex align-items-center"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="16"
|
||||||
|
icon="UserIcon"
|
||||||
|
class="mr-50"
|
||||||
|
/>
|
||||||
|
<span>Profile</span>
|
||||||
|
</b-dropdown-item>
|
||||||
|
<b-dropdown-item
|
||||||
|
:to="{ name: 'apps-email' }"
|
||||||
|
link-class="d-flex align-items-center"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="16"
|
||||||
|
icon="MailIcon"
|
||||||
|
class="mr-50"
|
||||||
|
/>
|
||||||
|
<span>Inbox</span>
|
||||||
|
</b-dropdown-item>
|
||||||
|
<b-dropdown-item
|
||||||
|
:to="{ name: 'apps-todo' }"
|
||||||
|
link-class="d-flex align-items-center"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="16"
|
||||||
|
icon="CheckSquareIcon"
|
||||||
|
class="mr-50"
|
||||||
|
/>
|
||||||
|
<span>Task</span>
|
||||||
|
</b-dropdown-item>
|
||||||
|
<b-dropdown-item
|
||||||
|
:to="{ name: 'apps-chat' }"
|
||||||
|
link-class="d-flex align-items-center"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="16"
|
||||||
|
icon="MessageSquareIcon"
|
||||||
|
class="mr-50"
|
||||||
|
/>
|
||||||
|
<span>Chat</span>
|
||||||
|
</b-dropdown-item>
|
||||||
|
|
||||||
|
<b-dropdown-divider />
|
||||||
|
|
||||||
|
<b-dropdown-item
|
||||||
|
:to="{ name: 'pages-account-setting' }"
|
||||||
|
link-class="d-flex align-items-center"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="16"
|
||||||
|
icon="SettingsIcon"
|
||||||
|
class="mr-50"
|
||||||
|
/>
|
||||||
|
<span>Settings</span>
|
||||||
|
</b-dropdown-item>
|
||||||
|
<b-dropdown-item
|
||||||
|
:to="{ name: 'pages-pricing' }"
|
||||||
|
link-class="d-flex align-items-center"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="16"
|
||||||
|
icon="CreditCardIcon"
|
||||||
|
class="mr-50"
|
||||||
|
/>
|
||||||
|
<span>Pricing</span>
|
||||||
|
</b-dropdown-item>
|
||||||
|
<b-dropdown-item
|
||||||
|
:to="{ name: 'pages-faq' }"
|
||||||
|
link-class="d-flex align-items-center"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="16"
|
||||||
|
icon="HelpCircleIcon"
|
||||||
|
class="mr-50"
|
||||||
|
/>
|
||||||
|
<span>FAQ</span>
|
||||||
|
</b-dropdown-item>
|
||||||
|
<b-dropdown-item
|
||||||
|
link-class="d-flex align-items-center"
|
||||||
|
@click="logout"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="16"
|
||||||
|
icon="LogOutIcon"
|
||||||
|
class="mr-50"
|
||||||
|
/>
|
||||||
|
<span>Logout</span>
|
||||||
|
</b-dropdown-item></b-nav-item-dropdown>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
BNavItemDropdown, BDropdownItem, BDropdownDivider, BAvatar,
|
||||||
|
} from 'bootstrap-vue'
|
||||||
|
import { initialAbility } from '@/libs/acl/config'
|
||||||
|
import useJwt from '@/auth/jwt/useJwt'
|
||||||
|
import { avatarText } from '@core/utils/filter'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BNavItemDropdown,
|
||||||
|
BDropdownItem,
|
||||||
|
BDropdownDivider,
|
||||||
|
BAvatar,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
userData: JSON.parse(localStorage.getItem('userData')),
|
||||||
|
avatarText,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
logout() {
|
||||||
|
// Remove userData from localStorage
|
||||||
|
// ? You just removed token from localStorage. If you like, you can also make API call to backend to blacklist used token
|
||||||
|
localStorage.removeItem(useJwt.jwtConfig.storageTokenKeyName)
|
||||||
|
localStorage.removeItem(useJwt.jwtConfig.storageRefreshTokenKeyName)
|
||||||
|
|
||||||
|
// Remove userData from localStorage
|
||||||
|
localStorage.removeItem('userData')
|
||||||
|
|
||||||
|
// Reset ability
|
||||||
|
this.$ability.update(initialAbility)
|
||||||
|
|
||||||
|
// Redirect to login page
|
||||||
|
this.$router.push({ name: 'auth-login' })
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,295 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
// prettier-ignore
|
||||||
|
export default {
|
||||||
|
pages: {
|
||||||
|
key: 'title',
|
||||||
|
data: [
|
||||||
|
{ title: 'Access Control', route: { name: 'access-control' }, icon: 'ShieldIcon', isBookmarked: false },
|
||||||
|
{ title: 'Account Settings', route: { name: 'pages-account-setting' }, icon: 'SettingsIcon', isBookmarked: false },
|
||||||
|
{ title: 'Advance Card', route: { name: 'card-advance' }, icon: 'CreditCardIcon', isBookmarked: false },
|
||||||
|
{ title: 'Alerts', route: { name: 'components-alert' }, icon: 'AlertTriangleIcon', isBookmarked: false },
|
||||||
|
{ title: 'Analytics Cards', route: { name: 'card-analytic' }, icon: 'CreditCardIcon', isBookmarked: false },
|
||||||
|
{ title: 'Apex Chart', route: { name: 'charts-apex-chart' }, icon: 'PieChartIcon', isBookmarked: false },
|
||||||
|
{ title: 'Aspect', route: { name: 'components-aspect' }, icon: 'AirplayIcon', isBookmarked: false },
|
||||||
|
{ title: 'Auto Suggest', route: { name: 'extensions-auto-suggest' }, icon: 'AlignLeftIcon', isBookmarked: false },
|
||||||
|
{ title: 'Avatar', route: { name: 'components-avatar' }, icon: 'UserIcon', isBookmarked: false },
|
||||||
|
{ title: 'Badge', route: { name: 'components-badge' }, icon: 'TagIcon', isBookmarked: false },
|
||||||
|
{ title: 'Basic Card', route: { name: 'card-basic' }, icon: 'CreditCardIcon', isBookmarked: false },
|
||||||
|
{ title: 'Blog Detail', route: { name: 'pages-blog-detail', params: { id: 1 } }, icon: 'FileTextIcon', isBookmarked: false },
|
||||||
|
{ title: 'Blog Edit', route: { name: 'pages-blog-edit', params: { id: 1 } }, icon: 'FileTextIcon', isBookmarked: false },
|
||||||
|
{ title: 'Blog List', route: { name: 'pages-blog-list' }, icon: 'FileTextIcon', isBookmarked: false },
|
||||||
|
{ title: 'Breadcrumb', route: { name: 'components-breadcrumb' }, icon: 'HomeIcon', isBookmarked: false },
|
||||||
|
{ title: 'BS Table', route: { name: 'table-bs-table' }, icon: 'GridIcon', isBookmarked: false },
|
||||||
|
{ title: 'Button Group', route: { name: 'components-button-group' }, icon: 'BoldIcon', isBookmarked: false },
|
||||||
|
{ title: 'Button Toolbar', route: { name: 'components-button-toolbar' }, icon: 'BoldIcon', isBookmarked: false },
|
||||||
|
{ title: 'Button', route: { name: 'components-button' }, icon: 'BoldIcon', isBookmarked: false },
|
||||||
|
{ title: 'Calendar App', route: { name: 'apps-calendar' }, icon: 'CalendarIcon', isBookmarked: true },
|
||||||
|
{ title: 'Calendar Component', route: { name: 'components-calendar' }, icon: 'CalendarIcon', isBookmarked: false },
|
||||||
|
{ title: 'Card Actions', route: { name: 'card-action' }, icon: 'CreditCardIcon', isBookmarked: false },
|
||||||
|
{ title: 'Carousel', route: { name: 'components-carousel' }, icon: 'CopyIcon', isBookmarked: false },
|
||||||
|
{ title: 'Chartjs', route: { name: 'charts-chartjs' }, icon: 'PieChartIcon', isBookmarked: false },
|
||||||
|
{ title: 'Chat', route: { name: 'apps-chat' }, icon: 'MessageSquareIcon', isBookmarked: true },
|
||||||
|
{ title: 'Checkbox', route: { name: 'forms-element-checkbox' }, icon: 'CheckSquareIcon', isBookmarked: false },
|
||||||
|
{ title: 'Checkout', route: { name: 'apps-e-commerce-checkout' }, icon: 'DollarSignIcon', isBookmarked: false },
|
||||||
|
{ title: 'Clipboard', route: { name: 'extensions-clipboard' }, icon: 'ClipboardIcon', isBookmarked: false },
|
||||||
|
{ title: 'Collapse', route: { name: 'components-collapse' }, icon: 'PlusIcon', isBookmarked: false },
|
||||||
|
{ title: 'Colors', route: { name: 'ui-colors' }, icon: 'DropletIcon', isBookmarked: false },
|
||||||
|
{ title: 'Coming Soon', route: { name: 'misc-coming-soon' }, icon: 'ClockIcon', isBookmarked: false },
|
||||||
|
{ title: 'Context Menu', route: { name: 'extensions-context-menu' }, icon: 'MoreVerticalIcon', isBookmarked: false },
|
||||||
|
{ title: 'Dashboard Analytics', route: { name: 'dashboard-analytics' }, icon: 'ActivityIcon', isBookmarked: false },
|
||||||
|
{ title: 'Dashboard ECommerce', route: { name: 'dashboard-ecommerce' }, icon: 'ShoppingCartIcon', isBookmarked: false },
|
||||||
|
{ title: 'Date Time Picker', route: { name: 'extensions-date-time-picker' }, icon: 'ClockIcon', isBookmarked: false },
|
||||||
|
{ title: 'Drag & Drop', route: { name: 'extensions-drag-and-drop' }, icon: 'CopyIcon', isBookmarked: false },
|
||||||
|
{ title: 'Dropdown', route: { name: 'components-dropdown' }, icon: 'MoreHorizontalIcon', isBookmarked: false },
|
||||||
|
{ title: 'Echart', route: { name: 'charts-echart' }, icon: 'PieChartIcon', isBookmarked: false },
|
||||||
|
{ title: 'Email', route: { name: 'apps-email' }, icon: 'MailIcon', isBookmarked: true },
|
||||||
|
{ title: 'Embed', route: { name: 'components-embed' }, icon: 'TvIcon', isBookmarked: false },
|
||||||
|
{ title: 'Error 404', route: { name: 'error-404' }, icon: 'AlertTriangleIcon', isBookmarked: false },
|
||||||
|
{ title: 'Error', route: { name: 'misc-error' }, icon: 'AlertTriangleIcon', isBookmarked: false },
|
||||||
|
{ title: 'FAQ', route: { name: 'pages-faq' }, icon: 'HelpCircleIcon', isBookmarked: false },
|
||||||
|
{ title: 'Feather', route: { name: 'ui-feather' }, icon: 'FeatherIcon', isBookmarked: false },
|
||||||
|
{ title: 'File Input', route: { name: 'forms-element-file-input' }, icon: 'FileIcon', isBookmarked: false },
|
||||||
|
{ title: 'Forgot Password V1', route: { name: 'auth-forgot-password-v1' }, icon: 'KeyIcon', isBookmarked: false },
|
||||||
|
{ title: 'Forgot Password V2', route: { name: 'auth-forgot-password-v2' }, icon: 'KeyIcon', isBookmarked: false },
|
||||||
|
{ title: 'Form Datepicker', route: { name: 'forms-element-datepicker' }, icon: 'ClockIcon', isBookmarked: false },
|
||||||
|
{ title: 'Form Layout', route: { name: 'form-layout' }, icon: 'GridIcon', isBookmarked: false },
|
||||||
|
{ title: 'Form Rating', route: { name: 'forms-element-rating' }, icon: 'StarIcon', isBookmarked: false },
|
||||||
|
{ title: 'Form Repeater', route: { name: 'form-repeater' }, icon: 'StarIcon', isBookmarked: false },
|
||||||
|
{ title: 'Form Tag', route: { name: 'forms-element-tag' }, icon: 'TagIcon', isBookmarked: false },
|
||||||
|
{ title: 'Form Timepicker', route: { name: 'forms-element-timepicker' }, icon: 'ClockIcon', isBookmarked: false },
|
||||||
|
{ title: 'Form Validation', route: { name: 'form-validation' }, icon: 'CheckCircleIcon', isBookmarked: false },
|
||||||
|
{ title: 'Form Wizard', route: { name: 'form-wizard' }, icon: 'GitCommitIcon', isBookmarked: false },
|
||||||
|
{ title: 'Good Table', route: { name: 'table-good-table' }, icon: 'GridIcon', isBookmarked: false },
|
||||||
|
{ title: 'I18n', route: { name: 'extensions-i18n' }, icon: 'GlobeIcon', isBookmarked: false },
|
||||||
|
{ title: 'Image', route: { name: 'components-image' }, icon: 'ImageIcon', isBookmarked: false },
|
||||||
|
{ title: 'Input Group', route: { name: 'forms-element-input-group' }, icon: 'TypeIcon', isBookmarked: false },
|
||||||
|
{ title: 'Input Mask', route: { name: 'forms-element-input-mask' }, icon: 'TypeIcon', isBookmarked: false },
|
||||||
|
{ title: 'Input', route: { name: 'forms-element-input' }, icon: 'TypeIcon', isBookmarked: false },
|
||||||
|
{ title: 'Invoice Add', route: { name: 'apps-invoice-add' }, icon: 'FileTextIcon', isBookmarked: false },
|
||||||
|
{ title: 'Invoice Edit', route: { name: 'apps-invoice-edit', params: { id: 4987 } }, icon: 'FileTextIcon', isBookmarked: false },
|
||||||
|
{ title: 'Invoice List', route: { name: 'apps-invoice-list' }, icon: 'FileTextIcon', isBookmarked: false },
|
||||||
|
{ title: 'Invoice Preview', route: { name: 'apps-invoice-preview', params: { id: 4987 } }, icon: 'FileTextIcon', isBookmarked: false },
|
||||||
|
{ title: 'Knowledge Base Category', route: { name: 'pages-knowledge-base-category' }, icon: 'InfoIcon', isBookmarked: false, },
|
||||||
|
{ title: 'Knowledge Base Question', route: { name: 'pages-knowledge-base-question' }, icon: 'InfoIcon', isBookmarked: false, },
|
||||||
|
{ title: 'Knowledge Base', route: { name: 'pages-knowledge-base' }, icon: 'InfoIcon', isBookmarked: false },
|
||||||
|
{ title: 'Leaflet', route: { name: 'maps-leaflet' }, icon: 'MapPinIcon', isBookmarked: false },
|
||||||
|
{ title: 'List Group', route: { name: 'components-list-group' }, icon: 'ListIcon', isBookmarked: false },
|
||||||
|
{ title: 'Login V1', route: { name: 'auth-login-v1' }, icon: 'LogInIcon', isBookmarked: false },
|
||||||
|
{ title: 'Login V2', route: { name: 'auth-login-v2' }, icon: 'LogInIcon', isBookmarked: false },
|
||||||
|
{ title: 'Media Objects', route: { name: 'components-media' }, icon: 'ImageIcon', isBookmarked: false },
|
||||||
|
{ title: 'Modal', route: { name: 'components-modal' }, icon: 'CopyIcon', isBookmarked: false },
|
||||||
|
{ title: 'Nav', route: { name: 'components-nav' }, icon: 'CreditCardIcon', isBookmarked: false },
|
||||||
|
{ title: 'Not Authorized', route: { name: 'misc-not-authorized' }, icon: 'XOctagonIcon', isBookmarked: false },
|
||||||
|
{ title: 'Overlay', route: { name: 'components-overlay' }, icon: 'CopyIcon', isBookmarked: false },
|
||||||
|
{ title: 'Pagination Nav', route: { name: 'components-pagination-nav' }, icon: 'HashIcon', isBookmarked: false },
|
||||||
|
{ title: 'Pagination', route: { name: 'components-pagination' }, icon: 'HashIcon', isBookmarked: false },
|
||||||
|
{ title: 'Pill Badge', route: { name: 'components-pill-badge' }, icon: 'TagIcon', isBookmarked: false },
|
||||||
|
{ title: 'Pill', route: { name: 'components-pill' }, icon: 'TagIcon', isBookmarked: false },
|
||||||
|
{ title: 'Popover', route: { name: 'components-popover' }, icon: 'TagIcon', isBookmarked: false },
|
||||||
|
{ title: 'Pricing', route: { name: 'pages-pricing' }, icon: 'DollarSignIcon', isBookmarked: false },
|
||||||
|
{ title: 'Product Details', route: { name: 'apps-e-commerce-product-details', params: { slug: 'apple-watch-series-5-27' } }, icon: 'BoxIcon', isBookmarked: false, },
|
||||||
|
{ title: 'Profile', route: { name: 'pages-profile' }, icon: 'UserIcon', isBookmarked: false },
|
||||||
|
{ title: 'Progress', route: { name: 'components-progress' }, icon: 'ChevronsRightIcon', isBookmarked: false },
|
||||||
|
{ title: 'Quill Editor', route: { name: 'extensions-quill-editor' }, icon: 'TypeIcon', isBookmarked: false },
|
||||||
|
{ title: 'Radio', route: { name: 'forms-element-radio' }, icon: 'DiscIcon', isBookmarked: false },
|
||||||
|
{ title: 'Register V1', route: { name: 'auth-register-v1' }, icon: 'UserPlusIcon', isBookmarked: false },
|
||||||
|
{ title: 'Register V2', route: { name: 'auth-register-v2' }, icon: 'UserPlusIcon', isBookmarked: false },
|
||||||
|
{ title: 'Reset Password V1', route: { name: 'auth-reset-password-v1' }, icon: 'KeyIcon', isBookmarked: false },
|
||||||
|
{ title: 'Reset Password V2', route: { name: 'auth-reset-password-v2' }, icon: 'KeyIcon', isBookmarked: false },
|
||||||
|
{ title: 'Select', route: { name: 'forms-element-select' }, icon: 'AlignCenterIcon', isBookmarked: false },
|
||||||
|
{ title: 'Shop', route: { name: 'apps-e-commerce-shop' }, icon: 'ArchiveIcon', isBookmarked: false },
|
||||||
|
{ title: 'Sidebar', route: { name: 'components-sidebar' }, icon: 'SidebarIcon', isBookmarked: false },
|
||||||
|
{ title: 'Slider', route: { name: 'extensions-slider' }, icon: 'GitCommitIcon', isBookmarked: false },
|
||||||
|
{ title: 'Spinbutton', route: { name: 'forms-element-spinbutton' }, icon: 'TypeIcon', isBookmarked: false },
|
||||||
|
{ title: 'Spinner', route: { name: 'components-spinner' }, icon: 'LoaderIcon', isBookmarked: false },
|
||||||
|
{ title: 'Statistics Cards', route: { name: 'card-statistic' }, icon: 'CreditCardIcon', isBookmarked: false },
|
||||||
|
{ title: 'Sweet Alert', route: { name: 'extensions-sweet-alert' }, icon: 'BellIcon', isBookmarked: false },
|
||||||
|
{ title: 'Swiper', route: { name: 'extensions-swiper' }, icon: 'ImageIcon', isBookmarked: false },
|
||||||
|
{ title: 'Switch', route: { name: 'forms-element-switch' }, icon: 'ToggleRightIcon', isBookmarked: false },
|
||||||
|
{ title: 'Tab', route: { name: 'components-tab' }, icon: 'CreditCardIcon', isBookmarked: false },
|
||||||
|
{ title: 'Textarea', route: { name: 'forms-element-textarea' }, icon: 'TypeIcon', isBookmarked: false },
|
||||||
|
{ title: 'Time', route: { name: 'components-time' }, icon: 'ClockIcon', isBookmarked: false },
|
||||||
|
{ title: 'Timeline', route: { name: 'components-timeline' }, icon: 'GitCommitIcon', isBookmarked: false },
|
||||||
|
{ title: 'Toastification', route: { name: 'extensions-toastification' }, icon: 'BellIcon', isBookmarked: false },
|
||||||
|
{ title: 'Toasts', route: { name: 'components-toasts' }, icon: 'BellIcon', isBookmarked: false },
|
||||||
|
{ title: 'Todo', route: { name: 'apps-todo' }, icon: 'CheckSquareIcon', isBookmarked: true },
|
||||||
|
{ title: 'Tooltip', route: { name: 'components-tooltip' }, icon: 'CopyIcon', isBookmarked: false },
|
||||||
|
{ title: 'Tour', route: { name: 'extensions-tour' }, icon: 'GlobeIcon', isBookmarked: false },
|
||||||
|
// { title: 'Tree', route: { name: 'extensions-tree' }, icon: 'GitCommitIcon', isBookmarked: false },
|
||||||
|
{ title: 'Typography', route: { name: 'ui-typography' }, icon: 'TypeIcon', isBookmarked: false },
|
||||||
|
{ title: 'Under Maintenance', route: { name: 'misc-under-maintenance' }, icon: 'MonitorIcon', isBookmarked: false },
|
||||||
|
{ title: 'Users Edit', route: { name: 'apps-users-edit', params: { id: 21 } }, icon: 'UserIcon', isBookmarked: false },
|
||||||
|
{ title: 'Users List', route: { name: 'apps-users-list' }, icon: 'UserIcon', isBookmarked: false },
|
||||||
|
{ title: 'Users View', route: { name: 'apps-users-view', params: { id: 21 } }, icon: 'UserIcon', isBookmarked: false },
|
||||||
|
{ title: 'Vue Select', route: { name: 'extensions-vue-select' }, icon: 'AlignCenterIcon', isBookmarked: false },
|
||||||
|
{ title: 'Wishlist', route: { name: 'apps-e-commerce-wishlist' }, icon: 'HeartIcon', isBookmarked: false },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
key: 'file_name',
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
file_name: "Joe's CV",
|
||||||
|
from: 'Stacy Watson',
|
||||||
|
icon: require('@/assets/images/icons/doc.png'),
|
||||||
|
size: '1.7 mb',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file_name: 'Passport Image',
|
||||||
|
from: 'Ben Sinitiere',
|
||||||
|
icon: require('@/assets/images/icons/jpg.png'),
|
||||||
|
size: ' 52 kb',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file_name: 'Questions',
|
||||||
|
from: 'Charleen Patti',
|
||||||
|
icon: require('@/assets/images/icons/doc.png'),
|
||||||
|
size: '1.5 gb',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file_name: 'Parenting Guide',
|
||||||
|
from: 'Doyle Blatteau',
|
||||||
|
icon: require('@/assets/images/icons/doc.png'),
|
||||||
|
size: '2.3 mb',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file_name: 'Class Notes',
|
||||||
|
from: 'Gwen Greenlow',
|
||||||
|
icon: require('@/assets/images/icons/doc.png'),
|
||||||
|
size: ' 30 kb',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file_name: 'Class Attendance',
|
||||||
|
from: 'Tom Alred',
|
||||||
|
icon: require('@/assets/images/icons/xls.png'),
|
||||||
|
size: '52 mb',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file_name: 'Company Salary',
|
||||||
|
from: 'Nellie Dezan',
|
||||||
|
icon: require('@/assets/images/icons/xls.png'),
|
||||||
|
size: '29 mb',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file_name: 'Company Logo',
|
||||||
|
from: 'Steve Sheldon',
|
||||||
|
icon: require('@/assets/images/icons/jpg.png'),
|
||||||
|
size: '1.3 mb',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file_name: 'Crime Rates',
|
||||||
|
from: 'Sherlock Holmes',
|
||||||
|
icon: require('@/assets/images/icons/xls.png'),
|
||||||
|
size: '37 kb',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file_name: 'Ulysses',
|
||||||
|
from: 'Theresia Wrenne',
|
||||||
|
icon: require('@/assets/images/icons/pdf.png'),
|
||||||
|
size: '7.2 mb',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file_name: 'War and Peace',
|
||||||
|
from: 'Goldie Highnote',
|
||||||
|
icon: require('@/assets/images/icons/pdf.png'),
|
||||||
|
size: '10.5 mb',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file_name: 'Vedas',
|
||||||
|
from: 'Ajay Patel',
|
||||||
|
icon: require('@/assets/images/icons/pdf.png'),
|
||||||
|
size: '8.3 mb',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file_name: 'The Trial',
|
||||||
|
from: 'Sirena Linkert',
|
||||||
|
icon: require('@/assets/images/icons/pdf.png'),
|
||||||
|
size: '1.5 mb',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
contacts: {
|
||||||
|
key: 'name',
|
||||||
|
data: [
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-4.jpg'),
|
||||||
|
name: 'Rena Brant',
|
||||||
|
email: 'nephrod@preany.co.uk',
|
||||||
|
time: '21/05/2019',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-2.jpg'),
|
||||||
|
name: 'Mariano Packard',
|
||||||
|
email: 'seek@sparaxis.org',
|
||||||
|
time: '14/01/2018',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-24.jpg'),
|
||||||
|
name: 'Risa Montufar',
|
||||||
|
email: 'vagary@unblist.org',
|
||||||
|
time: '10/08/2019',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-15.jpg'),
|
||||||
|
name: 'Maragaret Cimo',
|
||||||
|
email: 'designed@insanely.net',
|
||||||
|
time: '01/12/2019',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-7.jpg'),
|
||||||
|
name: 'Jona Prattis',
|
||||||
|
email: 'unwieldable@unblist.org',
|
||||||
|
time: '21/05/2019',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-5.jpg'),
|
||||||
|
name: 'Edmond Chicon',
|
||||||
|
email: 'museist@anaphyte.co.uk',
|
||||||
|
time: '15/11/2019',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-25.jpg'),
|
||||||
|
name: 'Abbey Darden',
|
||||||
|
email: 'astema@defectively.co.uk',
|
||||||
|
time: '07/05/2019',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-10.jpg'),
|
||||||
|
name: 'Seema Moallankamp',
|
||||||
|
email: 'fernando@storkish.co.uk',
|
||||||
|
time: '13/08/2017',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-2.jpg'),
|
||||||
|
name: 'Charleen Warmington',
|
||||||
|
email: 'furphy@cannibal.net',
|
||||||
|
time: '11/08/1891',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-25.jpg'),
|
||||||
|
name: 'Geri Linch',
|
||||||
|
email: 'insignia@markab.org',
|
||||||
|
time: '18/01/2015',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-23.jpg'),
|
||||||
|
name: 'Shellie Muster',
|
||||||
|
email: 'maxillary@equalize.co.uk',
|
||||||
|
time: '26/07/2019',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-20.jpg'),
|
||||||
|
name: 'Jesenia Vanbramer',
|
||||||
|
email: 'hypotony@phonetist.net',
|
||||||
|
time: '12/09/2017',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
img: require('@/assets/images/portrait/small/avatar-s-23.jpg'),
|
||||||
|
name: 'Mardell Channey',
|
||||||
|
email: 'peseta@myrica.com',
|
||||||
|
time: '11/11/2019',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
/* eslint-enable */
|
@ -0,0 +1,52 @@
|
|||||||
|
<template>
|
||||||
|
<div class="cws-container cws-sidebar-right">
|
||||||
|
|
||||||
|
<!-- content -->
|
||||||
|
<div class="cws-content">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Sidebar -->
|
||||||
|
<div class="cws-sidebar">
|
||||||
|
<slot name="sidebar" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
@import '~@core/scss/base/bootstrap-extended/include';
|
||||||
|
|
||||||
|
$cws-sidebar-width: 260px;
|
||||||
|
$gap: 2rem;
|
||||||
|
|
||||||
|
.cws-container {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.cws-content {
|
||||||
|
width: calc(100% - #{$cws-sidebar-width} - #{$gap});
|
||||||
|
|
||||||
|
@media (max-width: (map-get($grid-breakpoints, lg))) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cws-sidebar {
|
||||||
|
width: 260px;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
|
||||||
|
@media (max-width: (map-get($grid-breakpoints, lg))) {
|
||||||
|
margin-top: $gap;
|
||||||
|
position: static;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,47 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="app-content content"
|
||||||
|
:class="[{'show-overlay': $store.state.app.shallShowOverlay}, $route.meta.contentClass]"
|
||||||
|
>
|
||||||
|
<div class="content-overlay" />
|
||||||
|
<div class="header-navbar-shadow" />
|
||||||
|
<div
|
||||||
|
class="content-wrapper"
|
||||||
|
:class="contentWidth === 'boxed' ? 'container p-0' : null"
|
||||||
|
>
|
||||||
|
<slot name="breadcrumb">
|
||||||
|
<app-breadcrumb />
|
||||||
|
</slot>
|
||||||
|
<div class="content-body">
|
||||||
|
<transition
|
||||||
|
:name="routerTransition"
|
||||||
|
mode="out-in"
|
||||||
|
>
|
||||||
|
<slot />
|
||||||
|
</transition>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import AppBreadcrumb from '@core/layouts/components/AppBreadcrumb.vue'
|
||||||
|
import useAppConfig from '@core/app-config/useAppConfig'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
AppBreadcrumb,
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
const { routerTransition, contentWidth } = useAppConfig()
|
||||||
|
|
||||||
|
return {
|
||||||
|
routerTransition, contentWidth,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,55 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="app-content content"
|
||||||
|
:class="[{'show-overlay': $store.state.app.shallShowOverlay}, $route.meta.contentClass]"
|
||||||
|
>
|
||||||
|
<div class="content-overlay" />
|
||||||
|
<div class="header-navbar-shadow" />
|
||||||
|
<transition
|
||||||
|
:name="routerTransition"
|
||||||
|
mode="out-in"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="content-area-wrapper"
|
||||||
|
:class="contentWidth === 'boxed' ? 'container p-0' : null"
|
||||||
|
>
|
||||||
|
<slot name="breadcrumb">
|
||||||
|
<app-breadcrumb />
|
||||||
|
</slot>
|
||||||
|
<portal-target
|
||||||
|
name="content-renderer-sidebar-left"
|
||||||
|
slim
|
||||||
|
/>
|
||||||
|
<div class="content-right">
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<div class="content-body">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</transition>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import AppBreadcrumb from '@core/layouts/components/AppBreadcrumb.vue'
|
||||||
|
import useAppConfig from '@core/app-config/useAppConfig'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
AppBreadcrumb,
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
const { routerTransition, contentWidth } = useAppConfig()
|
||||||
|
|
||||||
|
return {
|
||||||
|
routerTransition, contentWidth,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,55 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="app-content content"
|
||||||
|
:class="[{'show-overlay': $store.state.app.shallShowOverlay}, $route.meta.contentClass]"
|
||||||
|
>
|
||||||
|
<div class="content-overlay" />
|
||||||
|
<div class="header-navbar-shadow" />
|
||||||
|
<transition
|
||||||
|
:name="routerTransition"
|
||||||
|
mode="out-in"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="content-wrapper clearfix"
|
||||||
|
:class="contentWidth === 'boxed' ? 'container p-0' : null"
|
||||||
|
>
|
||||||
|
<slot name="breadcrumb">
|
||||||
|
<app-breadcrumb />
|
||||||
|
</slot>
|
||||||
|
<div class="content-detached content-right">
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<div class="content-body">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<portal-target
|
||||||
|
name="content-renderer-sidebar-detached-left"
|
||||||
|
slim
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</transition>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import AppBreadcrumb from '@core/layouts/components/AppBreadcrumb.vue'
|
||||||
|
import useAppConfig from '@core/app-config/useAppConfig'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
AppBreadcrumb,
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
const { routerTransition, contentWidth } = useAppConfig()
|
||||||
|
|
||||||
|
return {
|
||||||
|
routerTransition, contentWidth,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
16
src/@core/layouts/layout-full/LayoutFull.vue
Normal file
16
src/@core/layouts/layout-full/LayoutFull.vue
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<template>
|
||||||
|
<div :class="contentWidth === 'boxed' ? 'container p-0' : null">
|
||||||
|
<router-view />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import useAppConfig from '@core/app-config/useAppConfig'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
setup() {
|
||||||
|
const { contentWidth } = useAppConfig()
|
||||||
|
return { contentWidth }
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
216
src/@core/layouts/layout-horizontal/LayoutHorizontal.vue
Normal file
216
src/@core/layouts/layout-horizontal/LayoutHorizontal.vue
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="horizontal-layout"
|
||||||
|
:class="[layoutClasses]"
|
||||||
|
:data-col="isNavMenuHidden ? '1-column' : null"
|
||||||
|
style="height:inherit"
|
||||||
|
>
|
||||||
|
|
||||||
|
<!-- NAVBAR -->
|
||||||
|
<b-navbar
|
||||||
|
:style="{
|
||||||
|
backgroundColor: navbarType === 'static' && scrolledTo && skin === 'light' ? 'white' : null,
|
||||||
|
boxShadow: navbarType === 'static' && scrolledTo ? 'rgba(0, 0, 0, 0.05) 0px 4px 20px 0px' : null,
|
||||||
|
}"
|
||||||
|
:toggleable="false"
|
||||||
|
class="header-navbar navbar-shadow align-items-center navbar-brand-center navbar-fixed"
|
||||||
|
:class="{'fixed-top': $store.getters['app/currentBreakPoint'] !== 'xl'}"
|
||||||
|
>
|
||||||
|
<slot
|
||||||
|
name="navbar"
|
||||||
|
:toggleVerticalMenuActive="toggleVerticalMenuActive"
|
||||||
|
>
|
||||||
|
<app-navbar-horizontal-layout-brand />
|
||||||
|
<app-navbar-horizontal-layout :toggle-vertical-menu-active="toggleVerticalMenuActive" />
|
||||||
|
</slot>
|
||||||
|
</b-navbar>
|
||||||
|
<!--/ NAVBAR -->
|
||||||
|
|
||||||
|
<div class="horizontal-menu-wrapper">
|
||||||
|
<div
|
||||||
|
v-if="!isNavMenuHidden"
|
||||||
|
class="header-navbar navbar-expand-sm navbar navbar-horizontal navbar-light navbar-shadow menu-border d-none d-xl-block"
|
||||||
|
:class="[navbarMenuTypeClass]"
|
||||||
|
>
|
||||||
|
<horizontal-nav-menu />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Vertical Nav Menu -->
|
||||||
|
<vertical-nav-menu
|
||||||
|
:is-vertical-menu-active="isVerticalMenuActive"
|
||||||
|
:toggle-vertical-menu-active="toggleVerticalMenuActive"
|
||||||
|
class="d-block d-xl-none"
|
||||||
|
>
|
||||||
|
<template #header="slotProps">
|
||||||
|
<slot
|
||||||
|
name="vertical-menu-header"
|
||||||
|
v-bind="slotProps"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</vertical-nav-menu>
|
||||||
|
<!-- /Vertical Nav Menu -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Vertical Nav Menu Overlay -->
|
||||||
|
<div
|
||||||
|
class="sidenav-overlay"
|
||||||
|
:class="overlayClasses"
|
||||||
|
@click="isVerticalMenuActive = false"
|
||||||
|
/>
|
||||||
|
<!-- /Vertical Nav Menu Overlay -->
|
||||||
|
|
||||||
|
<!-- CONTENT -->
|
||||||
|
<!-- CONTENT TYPE: Left -->
|
||||||
|
<transition
|
||||||
|
:name="routerTransition"
|
||||||
|
mode="out-in"
|
||||||
|
>
|
||||||
|
<component
|
||||||
|
:is="layoutContentRenderer"
|
||||||
|
:key="layoutContentRenderer === 'layout-content-renderer-left' ? $route.meta.navActiveLink || $route.name : null"
|
||||||
|
>
|
||||||
|
<template
|
||||||
|
v-for="(index, name) in $scopedSlots"
|
||||||
|
v-slot:[name]="data"
|
||||||
|
>
|
||||||
|
<slot
|
||||||
|
:name="name"
|
||||||
|
v-bind="data"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</component>
|
||||||
|
</transition>
|
||||||
|
<!--/ Content -->
|
||||||
|
<!--/ CONTENT -->
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<footer
|
||||||
|
class="footer footer-light"
|
||||||
|
:class="[footerTypeClass]"
|
||||||
|
>
|
||||||
|
<slot name="footer">
|
||||||
|
<app-footer />
|
||||||
|
</slot>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<slot name="customizer" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import AppBreadcrumb from '@core/layouts/components/AppBreadcrumb.vue'
|
||||||
|
import AppNavbarHorizontalLayout from '@core/layouts/components/app-navbar/AppNavbarHorizontalLayout.vue'
|
||||||
|
import AppNavbarHorizontalLayoutBrand from '@core/layouts/components/app-navbar/AppNavbarHorizontalLayoutBrand.vue'
|
||||||
|
import AppFooter from '@core/layouts/components/AppFooter.vue'
|
||||||
|
import useAppConfig from '@core/app-config/useAppConfig'
|
||||||
|
import { BNavbar } from 'bootstrap-vue'
|
||||||
|
import { useScrollListener } from '@core/comp-functions/misc/event-listeners'
|
||||||
|
|
||||||
|
import { onUnmounted } from '@vue/composition-api'
|
||||||
|
|
||||||
|
// Content Renderer
|
||||||
|
import LayoutContentRendererDefault from '@core/layouts/components/layout-content-renderer/LayoutContentRendererDefault.vue'
|
||||||
|
import LayoutContentRendererLeft from '@core/layouts/components/layout-content-renderer/LayoutContentRendererLeft.vue'
|
||||||
|
import LayoutContentRendererLeftDetached from '@core/layouts/components/layout-content-renderer/LayoutContentRendererLeftDetached.vue'
|
||||||
|
import useLayoutHorizontal from './useLayoutHorizontal'
|
||||||
|
import HorizontalNavMenu from './components/horizontal-nav-menu/HorizontalNavMenu.vue'
|
||||||
|
|
||||||
|
// Vertical Menu
|
||||||
|
/* eslint-disable import/order */
|
||||||
|
import VerticalNavMenu from '@core/layouts/layout-vertical/components/vertical-nav-menu/VerticalNavMenu.vue'
|
||||||
|
import useVerticalLayout from '@core/layouts/layout-vertical/useVerticalLayout'
|
||||||
|
import mixinLayoutHorizontal from './mixinLayoutHorizontal'
|
||||||
|
/* eslint-enable import/order */
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
AppBreadcrumb,
|
||||||
|
AppNavbarHorizontalLayout,
|
||||||
|
AppNavbarHorizontalLayoutBrand,
|
||||||
|
AppFooter,
|
||||||
|
HorizontalNavMenu,
|
||||||
|
|
||||||
|
BNavbar,
|
||||||
|
|
||||||
|
// Content Renderer
|
||||||
|
LayoutContentRendererDefault,
|
||||||
|
LayoutContentRendererLeft,
|
||||||
|
LayoutContentRendererLeftDetached,
|
||||||
|
|
||||||
|
// Vertical Menu
|
||||||
|
VerticalNavMenu,
|
||||||
|
},
|
||||||
|
mixins: [mixinLayoutHorizontal],
|
||||||
|
computed: {
|
||||||
|
layoutContentRenderer() {
|
||||||
|
const rendererType = this.$route.meta.contentRenderer
|
||||||
|
if (rendererType === 'sidebar-left') return 'layout-content-renderer-left'
|
||||||
|
if (rendererType === 'sidebar-left-detached') return 'layout-content-renderer-left-detached'
|
||||||
|
return 'layout-content-renderer-default'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
const {
|
||||||
|
skin,
|
||||||
|
navbarType,
|
||||||
|
footerType,
|
||||||
|
routerTransition,
|
||||||
|
isNavMenuHidden,
|
||||||
|
} = useAppConfig()
|
||||||
|
|
||||||
|
// Vertical Menu
|
||||||
|
const {
|
||||||
|
isVerticalMenuActive, toggleVerticalMenuActive, overlayClasses, resizeHandler,
|
||||||
|
} = useVerticalLayout(navbarType, footerType)
|
||||||
|
|
||||||
|
// Resize handler
|
||||||
|
resizeHandler()
|
||||||
|
window.addEventListener('resize', resizeHandler)
|
||||||
|
onUnmounted(() => {
|
||||||
|
window.removeEventListener('resize', resizeHandler)
|
||||||
|
})
|
||||||
|
|
||||||
|
const {
|
||||||
|
navbarMenuTypeClass,
|
||||||
|
layoutClasses,
|
||||||
|
footerTypeClass,
|
||||||
|
} = useLayoutHorizontal(navbarType, footerType, isVerticalMenuActive)
|
||||||
|
|
||||||
|
// Scroll Listener
|
||||||
|
const { scrolledTo } = useScrollListener()
|
||||||
|
|
||||||
|
return {
|
||||||
|
// skin
|
||||||
|
skin,
|
||||||
|
|
||||||
|
// Layout
|
||||||
|
layoutClasses,
|
||||||
|
|
||||||
|
// Navbar
|
||||||
|
navbarType,
|
||||||
|
navbarMenuTypeClass,
|
||||||
|
|
||||||
|
// Menu Hidden
|
||||||
|
isNavMenuHidden,
|
||||||
|
|
||||||
|
// Router Transition
|
||||||
|
routerTransition,
|
||||||
|
|
||||||
|
// Footer
|
||||||
|
footerTypeClass,
|
||||||
|
|
||||||
|
// Scroll Listeners
|
||||||
|
scrolledTo,
|
||||||
|
|
||||||
|
// Vertical Menu
|
||||||
|
isVerticalMenuActive,
|
||||||
|
toggleVerticalMenuActive,
|
||||||
|
overlayClasses,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
@import "~@core/scss/base/themes/bordered-layout.scss";
|
||||||
|
</style>
|
@ -0,0 +1,25 @@
|
|||||||
|
<template>
|
||||||
|
<div class="navbar-container main-menu-content">
|
||||||
|
<horizontal-nav-menu-items :items="navMenuItems" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import navMenuItems from '@/navigation/horizontal'
|
||||||
|
import HorizontalNavMenuItems from './components/horizontal-nav-menu-items/HorizontalNavMenuItems.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
HorizontalNavMenuItems,
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
return {
|
||||||
|
navMenuItems,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
@import "~@core/scss/base/core/menu/menu-types/horizontal-menu.scss";
|
||||||
|
</style>
|
@ -0,0 +1,96 @@
|
|||||||
|
<template>
|
||||||
|
<li
|
||||||
|
v-if="canViewVerticalNavMenuGroup(item)"
|
||||||
|
class="dropdown dropdown-submenu"
|
||||||
|
:class="{
|
||||||
|
'show': isOpen,
|
||||||
|
'disabled': item.disabled,
|
||||||
|
'sidebar-group-active active open': isActive,
|
||||||
|
'openLeft': openChildDropdownOnLeft
|
||||||
|
}"
|
||||||
|
@mouseenter="() => updateGroupOpen(true)"
|
||||||
|
@mouseleave="() => updateGroupOpen(false)"
|
||||||
|
>
|
||||||
|
<b-link
|
||||||
|
class="dropdown-item"
|
||||||
|
href="#"
|
||||||
|
:class="{'dropdown-toggle': item.children}"
|
||||||
|
@click="() => updateGroupOpen(!isOpen)"
|
||||||
|
>
|
||||||
|
<feather-icon :icon="item.icon || 'CircleIcon'" />
|
||||||
|
<span class="menu-title">{{ t(item.title) }}</span>
|
||||||
|
</b-link>
|
||||||
|
<ul
|
||||||
|
ref="refChildDropdown"
|
||||||
|
class="dropdown-menu"
|
||||||
|
>
|
||||||
|
<component
|
||||||
|
:is="resolveNavItemComponent(child)"
|
||||||
|
v-for="child in item.children"
|
||||||
|
:key="child.header || child.title"
|
||||||
|
ref="groupChild"
|
||||||
|
:item="child"
|
||||||
|
/>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BLink } from 'bootstrap-vue'
|
||||||
|
import { resolveHorizontalNavMenuItemComponent as resolveNavItemComponent } from '@core/layouts/utils'
|
||||||
|
import { useUtils as useI18nUtils } from '@core/libs/i18n'
|
||||||
|
import { useUtils as useAclUtils } from '@core/libs/acl'
|
||||||
|
import HorizontalNavMenuLink from '../horizontal-nav-menu-link/HorizontalNavMenuLink.vue'
|
||||||
|
|
||||||
|
// Composition Function
|
||||||
|
import useHorizontalNavMenuGroup from './useHorizontalNavMenuGroup'
|
||||||
|
import mixinHorizontalNavMenuGroup from './mixinHorizontalNavMenuGroup'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'HorizontalNavMenuGroup',
|
||||||
|
components: {
|
||||||
|
HorizontalNavMenuLink,
|
||||||
|
BLink,
|
||||||
|
},
|
||||||
|
mixins: [mixinHorizontalNavMenuGroup],
|
||||||
|
props: {
|
||||||
|
item: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup(props) {
|
||||||
|
const {
|
||||||
|
refChildDropdown,
|
||||||
|
isActive,
|
||||||
|
isOpen,
|
||||||
|
updateGroupOpen,
|
||||||
|
updateIsActive,
|
||||||
|
openChildDropdownOnLeft,
|
||||||
|
} = useHorizontalNavMenuGroup(props.item)
|
||||||
|
|
||||||
|
const { t } = useI18nUtils()
|
||||||
|
const { canViewVerticalNavMenuGroup } = useAclUtils()
|
||||||
|
|
||||||
|
return {
|
||||||
|
refChildDropdown,
|
||||||
|
openChildDropdownOnLeft,
|
||||||
|
resolveNavItemComponent,
|
||||||
|
isOpen,
|
||||||
|
isActive,
|
||||||
|
updateGroupOpen,
|
||||||
|
updateIsActive,
|
||||||
|
|
||||||
|
// ACL
|
||||||
|
canViewVerticalNavMenuGroup,
|
||||||
|
|
||||||
|
// i18n
|
||||||
|
t,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,10 @@
|
|||||||
|
export default {
|
||||||
|
watch: {
|
||||||
|
$route: {
|
||||||
|
immediate: true,
|
||||||
|
handler() {
|
||||||
|
this.updateIsActive()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
// eslint-disable-next-line object-curly-newline
|
||||||
|
import { ref, nextTick } from '@vue/composition-api'
|
||||||
|
// import store from '@/store'
|
||||||
|
import { isNavGroupActive } from '@core/layouts/utils'
|
||||||
|
|
||||||
|
export default function useHorizontalNavMenuGroup(item) {
|
||||||
|
// ------------------------------------------------
|
||||||
|
// childDropdown
|
||||||
|
// ------------------------------------------------
|
||||||
|
const refChildDropdown = ref(null)
|
||||||
|
const openChildDropdownOnLeft = ref(false)
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// isActive
|
||||||
|
// ------------------------------------------------
|
||||||
|
const isOpen = ref(false)
|
||||||
|
|
||||||
|
const updateGroupOpen = val => {
|
||||||
|
isOpen.value = val
|
||||||
|
if (val) {
|
||||||
|
nextTick(() => {
|
||||||
|
const childDropdownWidth = refChildDropdown.value.offsetWidth
|
||||||
|
const windowContentWidth = window.innerWidth - 16
|
||||||
|
const { left: childDropdownLeft } = refChildDropdown.value.getBoundingClientRect()
|
||||||
|
const shallDropLeft = childDropdownLeft + childDropdownWidth - windowContentWidth
|
||||||
|
openChildDropdownOnLeft.value = shallDropLeft > 0
|
||||||
|
|
||||||
|
// Add scroll to child dd if don't have much space
|
||||||
|
|
||||||
|
const refChildDropdownTop = refChildDropdown.value.getBoundingClientRect().top
|
||||||
|
const refChildDropdownHeight = refChildDropdown.value.getBoundingClientRect().height
|
||||||
|
if (window.innerHeight - refChildDropdownTop - refChildDropdownHeight - 28 < 1) {
|
||||||
|
const maxHeight = window.innerHeight - refChildDropdownTop - 70
|
||||||
|
refChildDropdown.value.style.maxHeight = `${maxHeight}px`
|
||||||
|
refChildDropdown.value.style.overflowY = 'auto'
|
||||||
|
refChildDropdown.value.style.overflowX = 'hidden'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
openChildDropdownOnLeft.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// isActive
|
||||||
|
// ------------------------------------------------
|
||||||
|
const isActive = ref(false)
|
||||||
|
|
||||||
|
const updateIsActive = () => {
|
||||||
|
isActive.value = isNavGroupActive(item.children)
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
isOpen,
|
||||||
|
isActive,
|
||||||
|
updateGroupOpen,
|
||||||
|
updateIsActive,
|
||||||
|
refChildDropdown,
|
||||||
|
openChildDropdownOnLeft,
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
<template>
|
||||||
|
<li
|
||||||
|
v-if="canViewHorizontalNavMenuHeaderGroup(item)"
|
||||||
|
class="dropdown nav-item"
|
||||||
|
:class="{
|
||||||
|
'sidebar-group-active active open': isActive,
|
||||||
|
'show': isOpen,
|
||||||
|
}"
|
||||||
|
@mouseenter="() => updateGroupOpen(true)"
|
||||||
|
@mouseleave="() => updateGroupOpen(false)"
|
||||||
|
>
|
||||||
|
<b-link class="nav-link dropdown-toggle d-flex align-items-center">
|
||||||
|
<feather-icon
|
||||||
|
size="14"
|
||||||
|
:icon="item.icon"
|
||||||
|
/>
|
||||||
|
<span>{{ t(item.header) }}</span>
|
||||||
|
</b-link>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<component
|
||||||
|
:is="resolveHorizontalNavMenuItemComponent(child)"
|
||||||
|
v-for="child in item.children"
|
||||||
|
:key="child.title"
|
||||||
|
:item="child"
|
||||||
|
/>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BLink } from 'bootstrap-vue'
|
||||||
|
import { resolveHorizontalNavMenuItemComponent } from '@core/layouts/utils'
|
||||||
|
import { useUtils as useAclUtils } from '@core/libs/acl'
|
||||||
|
import { useUtils as useI18nUtils } from '@core/libs/i18n'
|
||||||
|
import useHorizontalNavMenuHeaderGroup from './useHorizontalNavMenuHeaderGroup'
|
||||||
|
import mixinHorizontalNavMenuHeaderGroup from './mixinHorizontalNavMenuHeaderGroup'
|
||||||
|
|
||||||
|
import HorizontalNavMenuGroup from '../horizontal-nav-menu-group/HorizontalNavMenuGroup.vue'
|
||||||
|
import HorizontalNavMenuLink from '../horizontal-nav-menu-link/HorizontalNavMenuLink.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BLink,
|
||||||
|
HorizontalNavMenuGroup,
|
||||||
|
HorizontalNavMenuLink,
|
||||||
|
},
|
||||||
|
mixins: [mixinHorizontalNavMenuHeaderGroup],
|
||||||
|
props: {
|
||||||
|
item: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup(props) {
|
||||||
|
const {
|
||||||
|
isActive,
|
||||||
|
updateIsActive,
|
||||||
|
isOpen,
|
||||||
|
updateGroupOpen,
|
||||||
|
} = useHorizontalNavMenuHeaderGroup(props.item)
|
||||||
|
|
||||||
|
const { t } = useI18nUtils()
|
||||||
|
const { canViewHorizontalNavMenuHeaderGroup } = useAclUtils()
|
||||||
|
|
||||||
|
return {
|
||||||
|
isOpen,
|
||||||
|
isActive,
|
||||||
|
updateGroupOpen,
|
||||||
|
updateIsActive,
|
||||||
|
resolveHorizontalNavMenuItemComponent,
|
||||||
|
|
||||||
|
// ACL
|
||||||
|
canViewHorizontalNavMenuHeaderGroup,
|
||||||
|
|
||||||
|
// i18n
|
||||||
|
t,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,10 @@
|
|||||||
|
export default {
|
||||||
|
watch: {
|
||||||
|
$route: {
|
||||||
|
immediate: true,
|
||||||
|
handler() {
|
||||||
|
this.updateIsActive()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
import { ref } from '@vue/composition-api'
|
||||||
|
import { isNavGroupActive } from '@core/layouts/utils'
|
||||||
|
|
||||||
|
export default function useHorizontalNavMenuHeaderGroup(item) {
|
||||||
|
// ------------------------------------------------
|
||||||
|
// isOpen
|
||||||
|
// ------------------------------------------------
|
||||||
|
const isOpen = ref(false)
|
||||||
|
|
||||||
|
const updateGroupOpen = val => {
|
||||||
|
// eslint-disable-next-line no-use-before-define
|
||||||
|
isOpen.value = val
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// isActive
|
||||||
|
// ------------------------------------------------
|
||||||
|
const isActive = ref(false)
|
||||||
|
|
||||||
|
const updateIsActive = () => {
|
||||||
|
isActive.value = isNavGroupActive(item.children)
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
isOpen,
|
||||||
|
isActive,
|
||||||
|
updateGroupOpen,
|
||||||
|
updateIsActive,
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
<template>
|
||||||
|
<li
|
||||||
|
v-if="canViewHorizontalNavMenuHeaderLink(item)"
|
||||||
|
class="nav-item"
|
||||||
|
:class="{'sidebar-group-active active': isActive}"
|
||||||
|
>
|
||||||
|
<b-link
|
||||||
|
class="nav-link"
|
||||||
|
:to="{ name: item.route }"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
size="14"
|
||||||
|
:icon="item.icon"
|
||||||
|
/>
|
||||||
|
<span>{{ t(item.title) }}</span>
|
||||||
|
</b-link>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BLink } from 'bootstrap-vue'
|
||||||
|
import { useUtils as useI18nUtils } from '@core/libs/i18n'
|
||||||
|
import { useUtils as useAclUtils } from '@core/libs/acl'
|
||||||
|
import useHorizontalNavMenuHeaderLink from './useHorizontalNavMenuHeaderLink'
|
||||||
|
import mixinHorizontalNavMenuHeaderLink from './mixinHorizontalNavMenuHeaderLink'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BLink,
|
||||||
|
},
|
||||||
|
mixins: [mixinHorizontalNavMenuHeaderLink],
|
||||||
|
props: {
|
||||||
|
item: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup(props) {
|
||||||
|
const { isActive, updateIsActive } = useHorizontalNavMenuHeaderLink(props.item)
|
||||||
|
|
||||||
|
const { t } = useI18nUtils()
|
||||||
|
const { canViewHorizontalNavMenuHeaderLink } = useAclUtils()
|
||||||
|
|
||||||
|
return {
|
||||||
|
isActive,
|
||||||
|
updateIsActive,
|
||||||
|
|
||||||
|
// ACL
|
||||||
|
canViewHorizontalNavMenuHeaderLink,
|
||||||
|
|
||||||
|
// i18n
|
||||||
|
t,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,10 @@
|
|||||||
|
export default {
|
||||||
|
watch: {
|
||||||
|
$route: {
|
||||||
|
immediate: true,
|
||||||
|
handler() {
|
||||||
|
this.updateIsActive()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
import { ref } from '@vue/composition-api'
|
||||||
|
import { isNavLinkActive } from '@core/layouts/utils'
|
||||||
|
|
||||||
|
export default function useHorizontalNavMenuHeaderGroup(item) {
|
||||||
|
// ------------------------------------------------
|
||||||
|
// isActive
|
||||||
|
// ------------------------------------------------
|
||||||
|
const isActive = ref(false)
|
||||||
|
|
||||||
|
const updateIsActive = () => {
|
||||||
|
isActive.value = isNavLinkActive(item)
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
isActive,
|
||||||
|
updateIsActive,
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
<template>
|
||||||
|
<ul
|
||||||
|
id="main-menu-navigation"
|
||||||
|
class="nav navbar-nav"
|
||||||
|
>
|
||||||
|
<component
|
||||||
|
:is="resolveNavComponent(item)"
|
||||||
|
v-for="item in items"
|
||||||
|
:key="item.header || item.title"
|
||||||
|
:item="item"
|
||||||
|
/>
|
||||||
|
</ul>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import HorizontalNavMenuHeaderLink from '../horizontal-nav-menu-header-link/HorizontalNavMenuHeaderLink.vue'
|
||||||
|
import HorizontalNavMenuHeaderGroup from '../horizontal-nav-menu-header-group/HorizontalNavMenuHeaderGroup.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
HorizontalNavMenuHeaderLink,
|
||||||
|
HorizontalNavMenuHeaderGroup,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
items: {
|
||||||
|
type: Array,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
const resolveNavComponent = item => {
|
||||||
|
if (item.children) return 'horizontal-nav-menu-header-group'
|
||||||
|
return 'horizontal-nav-menu-header-link'
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
resolveNavComponent,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,60 @@
|
|||||||
|
<template>
|
||||||
|
<li
|
||||||
|
v-if="canViewHorizontalNavMenuLink(item)"
|
||||||
|
:class="{
|
||||||
|
'active': isActive,
|
||||||
|
'disabled': item.disabled
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<b-link
|
||||||
|
v-bind="linkProps"
|
||||||
|
class="dropdown-item"
|
||||||
|
>
|
||||||
|
<feather-icon
|
||||||
|
:icon="item.icon || 'CircleIcon'"
|
||||||
|
size="24"
|
||||||
|
/>
|
||||||
|
<span class="menu-title">{{ t(item.title) }}</span>
|
||||||
|
</b-link>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BLink } from 'bootstrap-vue'
|
||||||
|
import { useUtils as useI18nUtils } from '@core/libs/i18n'
|
||||||
|
import { useUtils as useAclUtils } from '@core/libs/acl'
|
||||||
|
import useHorizontalNavMenuLink from './useHorizontalNavMenuLink'
|
||||||
|
import mixinHorizontalNavMenuLink from './mixinHorizontalNavMenuLink'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BLink,
|
||||||
|
},
|
||||||
|
mixins: [mixinHorizontalNavMenuLink],
|
||||||
|
props: {
|
||||||
|
item: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup(props) {
|
||||||
|
const { isActive, linkProps, updateIsActive } = useHorizontalNavMenuLink(props.item)
|
||||||
|
|
||||||
|
const { t } = useI18nUtils()
|
||||||
|
const { canViewHorizontalNavMenuLink } = useAclUtils()
|
||||||
|
|
||||||
|
return {
|
||||||
|
isActive,
|
||||||
|
linkProps,
|
||||||
|
updateIsActive,
|
||||||
|
|
||||||
|
// ACL
|
||||||
|
canViewHorizontalNavMenuLink,
|
||||||
|
|
||||||
|
// i18n
|
||||||
|
t,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,10 @@
|
|||||||
|
export default {
|
||||||
|
watch: {
|
||||||
|
$route: {
|
||||||
|
immediate: true,
|
||||||
|
handler() {
|
||||||
|
this.updateIsActive()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
import { ref } from '@vue/composition-api'
|
||||||
|
import { isNavLinkActive, navLinkProps } from '@core/layouts/utils'
|
||||||
|
|
||||||
|
export default function useHorizontalNavMenuLink(item) {
|
||||||
|
const isActive = ref(false)
|
||||||
|
|
||||||
|
const linkProps = navLinkProps(item)
|
||||||
|
|
||||||
|
const updateIsActive = () => {
|
||||||
|
isActive.value = isNavLinkActive(item)
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
isActive,
|
||||||
|
linkProps,
|
||||||
|
updateIsActive,
|
||||||
|
}
|
||||||
|
}
|
11
src/@core/layouts/layout-horizontal/mixinLayoutHorizontal.js
Normal file
11
src/@core/layouts/layout-horizontal/mixinLayoutHorizontal.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import { $themeBreakpoints } from '@themeConfig'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
watch: {
|
||||||
|
$route() {
|
||||||
|
if (this.$store.state.app.windowWidth < $themeBreakpoints.xl) {
|
||||||
|
this.isVerticalMenuActive = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
57
src/@core/layouts/layout-horizontal/useLayoutHorizontal.js
Normal file
57
src/@core/layouts/layout-horizontal/useLayoutHorizontal.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
import { computed } from '@vue/composition-api'
|
||||||
|
import store from '@/store'
|
||||||
|
|
||||||
|
export default function useLayoutHorizontal(navbarMenuType, footerType, isVerticalMenuActive) {
|
||||||
|
const currentBreakpoint = computed(() => store.getters['app/currentBreakPoint'])
|
||||||
|
|
||||||
|
const layoutClasses = computed(() => {
|
||||||
|
const classes = []
|
||||||
|
|
||||||
|
if (currentBreakpoint.value === 'xl') {
|
||||||
|
classes.push('horizontal-menu')
|
||||||
|
} else {
|
||||||
|
classes.push('vertical-overlay-menu')
|
||||||
|
// classes.push('vertical-layout')
|
||||||
|
classes.push(isVerticalMenuActive.value ? 'menu-open' : 'menu-hide')
|
||||||
|
}
|
||||||
|
|
||||||
|
// Navbar
|
||||||
|
classes.push(`navbar-${navbarMenuType.value}`)
|
||||||
|
|
||||||
|
// Footer
|
||||||
|
if (footerType.value === 'sticky') classes.push('footer-fixed')
|
||||||
|
if (footerType.value === 'static') classes.push('footer-static')
|
||||||
|
if (footerType.value === 'hidden') classes.push('footer-hidden')
|
||||||
|
|
||||||
|
return classes
|
||||||
|
})
|
||||||
|
|
||||||
|
// const resizeHandler = () => {
|
||||||
|
// isVerticalMenuActive.value = window.innerWidth >= 1200
|
||||||
|
|
||||||
|
// if (window.innerWidth >= 1200) currentBreakpoint.value = 'xl'
|
||||||
|
// else if (window.innerWidth >= 992) currentBreakpoint.value = 'lg'
|
||||||
|
// else if (window.innerWidth >= 768) currentBreakpoint.value = 'md'
|
||||||
|
// else if (window.innerWidth >= 576) currentBreakpoint.value = 'sm'
|
||||||
|
// else currentBreakpoint.value = 'xs'
|
||||||
|
// }
|
||||||
|
|
||||||
|
const navbarMenuTypeClass = computed(() => {
|
||||||
|
if (navbarMenuType.value === 'sticky') return 'fixed-top'
|
||||||
|
if (navbarMenuType.value === 'static') return ''
|
||||||
|
if (navbarMenuType.value === 'hidden') return 'd-none'
|
||||||
|
return 'floating-nav'
|
||||||
|
})
|
||||||
|
|
||||||
|
const footerTypeClass = computed(() => {
|
||||||
|
if (footerType.value === 'static') return 'footer-static'
|
||||||
|
if (footerType.value === 'hidden') return 'd-none'
|
||||||
|
return ''
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
layoutClasses,
|
||||||
|
navbarMenuTypeClass,
|
||||||
|
footerTypeClass,
|
||||||
|
}
|
||||||
|
}
|
163
src/@core/layouts/layout-vertical/LayoutVertical.vue
Normal file
163
src/@core/layouts/layout-vertical/LayoutVertical.vue
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="vertical-layout h-100"
|
||||||
|
:class="[layoutClasses]"
|
||||||
|
:data-col="isNavMenuHidden ? '1-column' : null"
|
||||||
|
>
|
||||||
|
<!-- Navbar -->
|
||||||
|
<b-navbar
|
||||||
|
:toggleable="false"
|
||||||
|
:variant="navbarBackgroundColor"
|
||||||
|
class="header-navbar navbar navbar-shadow align-items-center"
|
||||||
|
:class="[navbarTypeClass]"
|
||||||
|
>
|
||||||
|
<slot
|
||||||
|
name="navbar"
|
||||||
|
:toggleVerticalMenuActive="toggleVerticalMenuActive"
|
||||||
|
:navbarBackgroundColor="navbarBackgroundColor"
|
||||||
|
:navbarTypeClass="[...navbarTypeClass, 'header-navbar navbar navbar-shadow align-items-center']"
|
||||||
|
>
|
||||||
|
<app-navbar-vertical-layout :toggle-vertical-menu-active="toggleVerticalMenuActive" />
|
||||||
|
</slot>
|
||||||
|
</b-navbar>
|
||||||
|
<!--/ Navbar -->
|
||||||
|
|
||||||
|
<!-- Vertical Nav Menu -->
|
||||||
|
<vertical-nav-menu
|
||||||
|
v-if="!isNavMenuHidden"
|
||||||
|
:is-vertical-menu-active="isVerticalMenuActive"
|
||||||
|
:toggle-vertical-menu-active="toggleVerticalMenuActive"
|
||||||
|
>
|
||||||
|
<template #header="slotProps">
|
||||||
|
<slot
|
||||||
|
name="vertical-menu-header"
|
||||||
|
v-bind="slotProps"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</vertical-nav-menu>
|
||||||
|
<!-- /Vertical Nav Menu -->
|
||||||
|
|
||||||
|
<!-- Vertical Nav Menu Overlay -->
|
||||||
|
<div
|
||||||
|
class="sidenav-overlay"
|
||||||
|
:class="overlayClasses"
|
||||||
|
@click="isVerticalMenuActive = false"
|
||||||
|
/>
|
||||||
|
<!-- /Vertical Nav Menu Overlay -->
|
||||||
|
|
||||||
|
<!-- Content -->
|
||||||
|
|
||||||
|
<!-- CONTENT TYPE: Left -->
|
||||||
|
<transition
|
||||||
|
:name="routerTransition"
|
||||||
|
mode="out-in"
|
||||||
|
>
|
||||||
|
<component
|
||||||
|
:is="layoutContentRenderer"
|
||||||
|
:key="layoutContentRenderer === 'layout-content-renderer-left' ? $route.meta.navActiveLink || $route.name : null"
|
||||||
|
>
|
||||||
|
<template
|
||||||
|
v-for="(index, name) in $scopedSlots"
|
||||||
|
v-slot:[name]="data"
|
||||||
|
>
|
||||||
|
<slot
|
||||||
|
:name="name"
|
||||||
|
v-bind="data"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</component>
|
||||||
|
</transition>
|
||||||
|
<!--/ Content -->
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<footer
|
||||||
|
class="footer footer-light"
|
||||||
|
:class="[footerTypeClass]"
|
||||||
|
>
|
||||||
|
<slot name="footer">
|
||||||
|
<app-footer />
|
||||||
|
</slot>
|
||||||
|
</footer>
|
||||||
|
<!-- /Footer -->
|
||||||
|
|
||||||
|
<slot name="customizer" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { onUnmounted } from '@vue/composition-api'
|
||||||
|
import AppNavbarVerticalLayout from '@core/layouts/components/app-navbar/AppNavbarVerticalLayout.vue'
|
||||||
|
import AppFooter from '@core/layouts/components/AppFooter.vue'
|
||||||
|
import useAppConfig from '@core/app-config/useAppConfig'
|
||||||
|
import { BNavbar } from 'bootstrap-vue'
|
||||||
|
import LayoutContentRendererDefault from '@core/layouts/components/layout-content-renderer/LayoutContentRendererDefault.vue'
|
||||||
|
import LayoutContentRendererLeft from '@core/layouts/components/layout-content-renderer/LayoutContentRendererLeft.vue'
|
||||||
|
import LayoutContentRendererLeftDetached from '@core/layouts/components/layout-content-renderer/LayoutContentRendererLeftDetached.vue'
|
||||||
|
import VerticalNavMenu from './components/vertical-nav-menu/VerticalNavMenu.vue'
|
||||||
|
import useVerticalLayout from './useVerticalLayout'
|
||||||
|
import mixinVerticalLayout from './mixinVerticalLayout'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
// AppBreadcrumb,
|
||||||
|
AppNavbarVerticalLayout,
|
||||||
|
AppFooter,
|
||||||
|
VerticalNavMenu,
|
||||||
|
BNavbar,
|
||||||
|
LayoutContentRendererLeftDetached,
|
||||||
|
LayoutContentRendererLeft,
|
||||||
|
LayoutContentRendererDefault,
|
||||||
|
},
|
||||||
|
mixins: [mixinVerticalLayout],
|
||||||
|
computed: {
|
||||||
|
layoutContentRenderer() {
|
||||||
|
const rendererType = this.$route.meta.contentRenderer
|
||||||
|
if (rendererType === 'sidebar-left') return 'layout-content-renderer-left'
|
||||||
|
if (rendererType === 'sidebar-left-detached') return 'layout-content-renderer-left-detached'
|
||||||
|
return 'layout-content-renderer-default'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
const {
|
||||||
|
routerTransition, navbarBackgroundColor, navbarType, footerType, isNavMenuHidden,
|
||||||
|
} = useAppConfig()
|
||||||
|
|
||||||
|
const {
|
||||||
|
isVerticalMenuActive,
|
||||||
|
toggleVerticalMenuActive,
|
||||||
|
isVerticalMenuCollapsed,
|
||||||
|
layoutClasses,
|
||||||
|
overlayClasses,
|
||||||
|
resizeHandler,
|
||||||
|
navbarTypeClass,
|
||||||
|
footerTypeClass,
|
||||||
|
} = useVerticalLayout(navbarType, footerType)
|
||||||
|
|
||||||
|
// Resize handler
|
||||||
|
resizeHandler()
|
||||||
|
window.addEventListener('resize', resizeHandler)
|
||||||
|
onUnmounted(() => {
|
||||||
|
window.removeEventListener('resize', resizeHandler)
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
isVerticalMenuActive,
|
||||||
|
toggleVerticalMenuActive,
|
||||||
|
isVerticalMenuCollapsed,
|
||||||
|
overlayClasses,
|
||||||
|
layoutClasses,
|
||||||
|
navbarTypeClass,
|
||||||
|
footerTypeClass,
|
||||||
|
|
||||||
|
// App Config
|
||||||
|
routerTransition,
|
||||||
|
navbarBackgroundColor,
|
||||||
|
isNavMenuHidden,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
@import "~@core/scss/base/themes/bordered-layout.scss";
|
||||||
|
</style>
|
@ -0,0 +1,162 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="main-menu menu-fixed menu-accordion menu-shadow"
|
||||||
|
:class="[
|
||||||
|
{ 'expanded': !isVerticalMenuCollapsed || (isVerticalMenuCollapsed && isMouseHovered) },
|
||||||
|
skin === 'semi-dark' ? 'menu-dark' : 'menu-light'
|
||||||
|
]"
|
||||||
|
@mouseenter="updateMouseHovered(true)"
|
||||||
|
@mouseleave="updateMouseHovered(false)"
|
||||||
|
>
|
||||||
|
<!-- main menu header-->
|
||||||
|
<div class="navbar-header expanded">
|
||||||
|
<slot
|
||||||
|
name="header"
|
||||||
|
:toggleVerticalMenuActive="toggleVerticalMenuActive"
|
||||||
|
:toggleCollapsed="toggleCollapsed"
|
||||||
|
:collapseTogglerIcon="collapseTogglerIcon"
|
||||||
|
>
|
||||||
|
<ul class="nav navbar-nav flex-row">
|
||||||
|
|
||||||
|
<!-- Logo & Text -->
|
||||||
|
<li class="nav-item mr-auto">
|
||||||
|
<b-link
|
||||||
|
class="navbar-brand"
|
||||||
|
to="/"
|
||||||
|
>
|
||||||
|
<span class="brand-logo">
|
||||||
|
<b-img
|
||||||
|
:src="appLogoImage"
|
||||||
|
alt="logo"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
<h2 class="brand-text">
|
||||||
|
{{ appName }}
|
||||||
|
</h2>
|
||||||
|
</b-link>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- Toggler Button -->
|
||||||
|
<li class="nav-item nav-toggle">
|
||||||
|
<b-link class="nav-link modern-nav-toggle">
|
||||||
|
<feather-icon
|
||||||
|
icon="XIcon"
|
||||||
|
size="20"
|
||||||
|
class="d-block d-xl-none"
|
||||||
|
@click="toggleVerticalMenuActive"
|
||||||
|
/>
|
||||||
|
<feather-icon
|
||||||
|
:icon="collapseTogglerIconFeather"
|
||||||
|
size="20"
|
||||||
|
class="d-none d-xl-block collapse-toggle-icon"
|
||||||
|
@click="toggleCollapsed"
|
||||||
|
/>
|
||||||
|
</b-link>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</slot>
|
||||||
|
</div>
|
||||||
|
<!-- / main menu header-->
|
||||||
|
|
||||||
|
<!-- Shadow -->
|
||||||
|
<div
|
||||||
|
:class="{'d-block': shallShadowBottom}"
|
||||||
|
class="shadow-bottom"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- main menu content-->
|
||||||
|
<vue-perfect-scrollbar
|
||||||
|
:settings="perfectScrollbarSettings"
|
||||||
|
class="main-menu-content scroll-area"
|
||||||
|
tagname="ul"
|
||||||
|
@ps-scroll-y="evt => { shallShadowBottom = evt.srcElement.scrollTop > 0 }"
|
||||||
|
>
|
||||||
|
<vertical-nav-menu-items
|
||||||
|
:items="navMenuItems"
|
||||||
|
class="navigation navigation-main"
|
||||||
|
/>
|
||||||
|
</vue-perfect-scrollbar>
|
||||||
|
<!-- /main menu content-->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import navMenuItems from '@/navigation/vertical'
|
||||||
|
import VuePerfectScrollbar from 'vue-perfect-scrollbar'
|
||||||
|
import { BLink, BImg } from 'bootstrap-vue'
|
||||||
|
import { provide, computed, ref } from '@vue/composition-api'
|
||||||
|
import useAppConfig from '@core/app-config/useAppConfig'
|
||||||
|
import { $themeConfig } from '@themeConfig'
|
||||||
|
import VerticalNavMenuItems from './components/vertical-nav-menu-items/VerticalNavMenuItems.vue'
|
||||||
|
import useVerticalNavMenu from './useVerticalNavMenu'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
VuePerfectScrollbar,
|
||||||
|
VerticalNavMenuItems,
|
||||||
|
BLink,
|
||||||
|
BImg,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
isVerticalMenuActive: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
toggleVerticalMenuActive: {
|
||||||
|
type: Function,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup(props) {
|
||||||
|
const {
|
||||||
|
isMouseHovered,
|
||||||
|
isVerticalMenuCollapsed,
|
||||||
|
collapseTogglerIcon,
|
||||||
|
toggleCollapsed,
|
||||||
|
updateMouseHovered,
|
||||||
|
} = useVerticalNavMenu(props)
|
||||||
|
|
||||||
|
const { skin } = useAppConfig()
|
||||||
|
|
||||||
|
// Shadow bottom is UI specific and can be removed by user => It's not in `useVerticalNavMenu`
|
||||||
|
const shallShadowBottom = ref(false)
|
||||||
|
|
||||||
|
provide('isMouseHovered', isMouseHovered)
|
||||||
|
|
||||||
|
const perfectScrollbarSettings = {
|
||||||
|
maxScrollbarLength: 60,
|
||||||
|
wheelPropagation: false,
|
||||||
|
}
|
||||||
|
|
||||||
|
const collapseTogglerIconFeather = computed(() => (collapseTogglerIcon.value === 'unpinned' ? 'CircleIcon' : 'DiscIcon'))
|
||||||
|
|
||||||
|
// App Name
|
||||||
|
const { appName, appLogoImage } = $themeConfig.app
|
||||||
|
|
||||||
|
return {
|
||||||
|
navMenuItems,
|
||||||
|
perfectScrollbarSettings,
|
||||||
|
isVerticalMenuCollapsed,
|
||||||
|
collapseTogglerIcon,
|
||||||
|
toggleCollapsed,
|
||||||
|
isMouseHovered,
|
||||||
|
updateMouseHovered,
|
||||||
|
collapseTogglerIconFeather,
|
||||||
|
|
||||||
|
// Shadow Bottom
|
||||||
|
shallShadowBottom,
|
||||||
|
|
||||||
|
// Skin
|
||||||
|
skin,
|
||||||
|
|
||||||
|
// App Name
|
||||||
|
appName,
|
||||||
|
appLogoImage,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
@import "~@core/scss/base/core/menu/menu-types/vertical-menu.scss";
|
||||||
|
</style>
|
@ -0,0 +1,100 @@
|
|||||||
|
<template>
|
||||||
|
<li
|
||||||
|
v-if="canViewVerticalNavMenuGroup(item)"
|
||||||
|
class="nav-item has-sub"
|
||||||
|
:class="{
|
||||||
|
'open': isOpen,
|
||||||
|
'disabled': item.disabled,
|
||||||
|
'sidebar-group-active': isActive,
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
<b-link
|
||||||
|
class="d-flex align-items-center"
|
||||||
|
@click="() => updateGroupOpen(!isOpen)"
|
||||||
|
>
|
||||||
|
<feather-icon :icon="item.icon || 'CircleIcon'" />
|
||||||
|
<span class="menu-title text-truncate">{{ t(item.title) }}</span>
|
||||||
|
<b-badge
|
||||||
|
v-if="item.tag"
|
||||||
|
pill
|
||||||
|
:variant="item.tagVariant || 'primary'"
|
||||||
|
class="mr-1 ml-auto"
|
||||||
|
>
|
||||||
|
{{ item.tag }}
|
||||||
|
</b-badge>
|
||||||
|
</b-link>
|
||||||
|
<b-collapse
|
||||||
|
v-model="isOpen"
|
||||||
|
class="menu-content"
|
||||||
|
tag="ul"
|
||||||
|
>
|
||||||
|
<component
|
||||||
|
:is="resolveNavItemComponent(child)"
|
||||||
|
v-for="child in item.children"
|
||||||
|
:key="child.header || child.title"
|
||||||
|
ref="groupChild"
|
||||||
|
:item="child"
|
||||||
|
/>
|
||||||
|
</b-collapse>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { BLink, BBadge, BCollapse } from 'bootstrap-vue'
|
||||||
|
import { resolveVerticalNavMenuItemComponent as resolveNavItemComponent } from '@core/layouts/utils'
|
||||||
|
import { useUtils as useI18nUtils } from '@core/libs/i18n'
|
||||||
|
import { useUtils as useAclUtils } from '@core/libs/acl'
|
||||||
|
import VerticalNavMenuHeader from '../vertical-nav-menu-header'
|
||||||
|
import VerticalNavMenuLink from '../vertical-nav-menu-link/VerticalNavMenuLink.vue'
|
||||||
|
|
||||||
|
// Composition Function
|
||||||
|
import useVerticalNavMenuGroup from './useVerticalNavMenuGroup'
|
||||||
|
import mixinVerticalNavMenuGroup from './mixinVerticalNavMenuGroup'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'VerticalNavMenuGroup',
|
||||||
|
components: {
|
||||||
|
VerticalNavMenuHeader,
|
||||||
|
VerticalNavMenuLink,
|
||||||
|
BLink,
|
||||||
|
BBadge,
|
||||||
|
BCollapse,
|
||||||
|
},
|
||||||
|
mixins: [mixinVerticalNavMenuGroup],
|
||||||
|
props: {
|
||||||
|
item: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup(props) {
|
||||||
|
const {
|
||||||
|
isOpen,
|
||||||
|
isActive,
|
||||||
|
updateGroupOpen,
|
||||||
|
updateIsActive,
|
||||||
|
} = useVerticalNavMenuGroup(props.item)
|
||||||
|
|
||||||
|
const { t } = useI18nUtils()
|
||||||
|
const { canViewVerticalNavMenuGroup } = useAclUtils()
|
||||||
|
|
||||||
|
return {
|
||||||
|
resolveNavItemComponent,
|
||||||
|
isOpen,
|
||||||
|
isActive,
|
||||||
|
updateGroupOpen,
|
||||||
|
updateIsActive,
|
||||||
|
|
||||||
|
// ACL
|
||||||
|
canViewVerticalNavMenuGroup,
|
||||||
|
|
||||||
|
// i18n
|
||||||
|
t,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,10 @@
|
|||||||
|
export default {
|
||||||
|
watch: {
|
||||||
|
$route: {
|
||||||
|
immediate: true,
|
||||||
|
handler() {
|
||||||
|
this.updateIsActive()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
@ -0,0 +1,103 @@
|
|||||||
|
// eslint-disable-next-line object-curly-newline
|
||||||
|
import { ref, watch, inject, computed } from '@vue/composition-api'
|
||||||
|
import store from '@/store'
|
||||||
|
import { isNavGroupActive } from '@core/layouts/utils'
|
||||||
|
|
||||||
|
export default function useVerticalNavMenuGroup(item) {
|
||||||
|
// ------------------------------------------------
|
||||||
|
// isVerticalMenuCollapsed
|
||||||
|
// ------------------------------------------------
|
||||||
|
const isVerticalMenuCollapsed = computed(() => store.state.verticalMenu.isVerticalMenuCollapsed)
|
||||||
|
|
||||||
|
watch(isVerticalMenuCollapsed, val => {
|
||||||
|
/* eslint-disable no-use-before-define */
|
||||||
|
// * Handles case if routing is done outside of vertical menu
|
||||||
|
// i.e. From Customizer Collapse or Using Link
|
||||||
|
if (!isMouseHovered.value) {
|
||||||
|
if (val) isOpen.value = false
|
||||||
|
else if (!val && isActive.value) isOpen.value = true
|
||||||
|
}
|
||||||
|
/* eslint-enable */
|
||||||
|
})
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// isMouseHovered
|
||||||
|
// ------------------------------------------------
|
||||||
|
const isMouseHovered = inject('isMouseHovered')
|
||||||
|
|
||||||
|
// Collapse menu when menu is collapsed and show on open
|
||||||
|
watch(isMouseHovered, val => {
|
||||||
|
if (isVerticalMenuCollapsed.value) {
|
||||||
|
// * we have used `val && val && isActive.value` to only open active menu on mouseEnter and close all menu on mouseLeave
|
||||||
|
// * If we don't use `isActive.value` with `val` it can open other groups which are not active as well
|
||||||
|
// eslint-disable-next-line no-use-before-define
|
||||||
|
isOpen.value = val && isActive.value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// openGroups
|
||||||
|
// ------------------------------------------------
|
||||||
|
const openGroups = inject('openGroups')
|
||||||
|
|
||||||
|
// Collapse other groups if one group is opened
|
||||||
|
watch(openGroups, currentOpenGroups => {
|
||||||
|
const clickedGroup = currentOpenGroups[currentOpenGroups.length - 1]
|
||||||
|
|
||||||
|
// If current group is not clicked group or current group is not active => Proceed with closing it
|
||||||
|
// eslint-disable-next-line no-use-before-define
|
||||||
|
if (clickedGroup !== item.title && !isActive.value) {
|
||||||
|
// If clicked group is not child of current group
|
||||||
|
// eslint-disable-next-line no-use-before-define
|
||||||
|
if (!doesHaveChild(clickedGroup)) isOpen.value = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// isOpen
|
||||||
|
// ------------------------------------------------
|
||||||
|
const isOpen = ref(false)
|
||||||
|
watch(isOpen, val => {
|
||||||
|
// if group is opened push it to the array
|
||||||
|
if (val) openGroups.value.push(item.title)
|
||||||
|
})
|
||||||
|
|
||||||
|
const updateGroupOpen = val => {
|
||||||
|
// eslint-disable-next-line no-use-before-define
|
||||||
|
isOpen.value = val
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// isActive
|
||||||
|
// ------------------------------------------------
|
||||||
|
const isActive = ref(false)
|
||||||
|
watch(isActive, val => {
|
||||||
|
/*
|
||||||
|
If menu is collapsed and not hovered(optional) then don't open group
|
||||||
|
*/
|
||||||
|
if (val) {
|
||||||
|
if (!isVerticalMenuCollapsed.value) isOpen.value = val
|
||||||
|
} else {
|
||||||
|
isOpen.value = val
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const updateIsActive = () => {
|
||||||
|
isActive.value = isNavGroupActive(item.children)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------
|
||||||
|
// Other Methods
|
||||||
|
// ------------------------------------------------
|
||||||
|
|
||||||
|
const doesHaveChild = title => item.children.some(child => child.title === title)
|
||||||
|
|
||||||
|
return {
|
||||||
|
isOpen,
|
||||||
|
isActive,
|
||||||
|
updateGroupOpen,
|
||||||
|
openGroups,
|
||||||
|
isMouseHovered,
|
||||||
|
updateIsActive,
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
import { useUtils as useI18nUtils } from '@core/libs/i18n'
|
||||||
|
import { useUtils as useAclUtils } from '@core/libs/acl'
|
||||||
|
|
||||||
|
const { t } = useI18nUtils()
|
||||||
|
const { canViewVerticalNavMenuHeader } = useAclUtils()
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
item: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
render(h) {
|
||||||
|
const span = h('span', {}, t(this.item.header))
|
||||||
|
const icon = h('feather-icon', { props: { icon: 'MoreHorizontalIcon', size: '18' } })
|
||||||
|
if (canViewVerticalNavMenuHeader(this.item)) {
|
||||||
|
return h('li', { class: 'navigation-header text-truncate' }, [span, icon])
|
||||||
|
}
|
||||||
|
return h()
|
||||||
|
},
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
<template>
|
||||||
|
<ul>
|
||||||
|
<component
|
||||||
|
:is="resolveNavItemComponent(item)"
|
||||||
|
v-for="item in items"
|
||||||
|
:key="item.header || item.title"
|
||||||
|
:item="item"
|
||||||
|
/>
|
||||||
|
</ul>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { resolveVerticalNavMenuItemComponent as resolveNavItemComponent } from '@core/layouts/utils'
|
||||||
|
import { provide, ref } from '@vue/composition-api'
|
||||||
|
import VerticalNavMenuHeader from '../vertical-nav-menu-header'
|
||||||
|
import VerticalNavMenuLink from '../vertical-nav-menu-link/VerticalNavMenuLink.vue'
|
||||||
|
import VerticalNavMenuGroup from '../vertical-nav-menu-group/VerticalNavMenuGroup.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
VerticalNavMenuHeader,
|
||||||
|
VerticalNavMenuLink,
|
||||||
|
VerticalNavMenuGroup,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
items: {
|
||||||
|
type: Array,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup() {
|
||||||
|
provide('openGroups', ref([]))
|
||||||
|
|
||||||
|
return {
|
||||||
|
resolveNavItemComponent,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user