summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichiel Schuurmans <michielschuurmans@gmail.com>2020-10-28 19:34:09 +0100
committerMichiel Schuurmans <michielschuurmans@gmail.com>2020-10-28 19:34:09 +0100
commitb3d8c5680fdd268b8d76d56414e3a372bfd61b55 (patch)
tree0df5abcc30c3bc6956a9f1ebc71c6e4dafd39b7c
parentdfec6adf2ca5a860fe8ff2a7cefd2d5a69ac26b5 (diff)
Web: simple website
Signed-off-by: Michiel Schuurmans <michielschuurmans@gmail.com>
-rw-r--r--api/routes/web.php10
-rw-r--r--web/.gitignore24
-rwxr-xr-xweb/CHANGELOG.md5
-rwxr-xr-xweb/ISSUES_TEMPLATE.md13
-rwxr-xr-xweb/LICENSE.md21
-rwxr-xr-x[-rw-r--r--]web/README.md231
-rw-r--r--web/babel.config.js2
-rw-r--r--web/package-lock.json2817
-rw-r--r--web/package.json47
-rw-r--r--web/public/favicon.icobin4286 -> 1150 bytes
-rwxr-xr-xweb/public/img/brand/favicon.pngbin0 -> 4976 bytes
-rwxr-xr-xweb/public/img/brand/green.pngbin0 -> 8614 bytes
-rwxr-xr-xweb/public/img/brand/white.pngbin0 -> 7620 bytes
-rw-r--r--web/public/img/icons/android-chrome-192x192.pngbin0 -> 9416 bytes
-rw-r--r--web/public/img/icons/android-chrome-512x512.pngbin0 -> 29808 bytes
-rw-r--r--web/public/img/icons/apple-touch-icon-120x120.pngbin0 -> 3369 bytes
-rw-r--r--web/public/img/icons/apple-touch-icon-152x152.pngbin0 -> 4046 bytes
-rw-r--r--web/public/img/icons/apple-touch-icon-180x180.pngbin0 -> 4678 bytes
-rw-r--r--web/public/img/icons/apple-touch-icon-60x60.pngbin0 -> 1491 bytes
-rw-r--r--web/public/img/icons/apple-touch-icon-76x76.pngbin0 -> 1823 bytes
-rw-r--r--web/public/img/icons/apple-touch-icon.pngbin0 -> 4678 bytes
-rwxr-xr-xweb/public/img/icons/common/github.svg12
-rwxr-xr-xweb/public/img/icons/common/google.svg17
-rw-r--r--web/public/img/icons/favicon-16x16.pngbin0 -> 799 bytes
-rw-r--r--web/public/img/icons/favicon-32x32.pngbin0 -> 1271 bytes
-rw-r--r--web/public/img/icons/msapplication-icon-144x144.pngbin0 -> 1169 bytes
-rw-r--r--web/public/img/icons/mstile-150x150.pngbin0 -> 4282 bytes
-rw-r--r--web/public/img/icons/safari-pinned-tab.svg149
-rwxr-xr-xweb/public/img/theme/angular.jpgbin0 -> 4939 bytes
-rwxr-xr-xweb/public/img/theme/bootstrap.jpgbin0 -> 2658 bytes
-rwxr-xr-xweb/public/img/theme/profile-cover.jpgbin0 -> 546174 bytes
-rwxr-xr-xweb/public/img/theme/react.jpgbin0 -> 5680 bytes
-rwxr-xr-xweb/public/img/theme/sketch.jpgbin0 -> 5227 bytes
-rwxr-xr-xweb/public/img/theme/team-1-800x800.jpgbin0 -> 86948 bytes
-rwxr-xr-xweb/public/img/theme/team-2-800x800.jpgbin0 -> 191161 bytes
-rwxr-xr-xweb/public/img/theme/team-3-800x800.jpgbin0 -> 111754 bytes
-rwxr-xr-xweb/public/img/theme/team-4-800x800.jpgbin0 -> 81112 bytes
-rwxr-xr-xweb/public/img/theme/vue.jpgbin0 -> 3209 bytes
-rw-r--r--web/public/index.html25
-rw-r--r--web/public/manifest.json20
-rw-r--r--web/public/robots.txt2
-rw-r--r--web/src/App.vue27
-rwxr-xr-xweb/src/assets/scss/argon.scss70
-rwxr-xr-xweb/src/assets/scss/core/alerts/_alert-dismissible.scss39
-rwxr-xr-xweb/src/assets/scss/core/alerts/_alert.scss46
-rwxr-xr-xweb/src/assets/scss/core/avatars/_avatar-group.scss22
-rwxr-xr-xweb/src/assets/scss/core/avatars/_avatar.scss42
-rwxr-xr-xweb/src/assets/scss/core/badges/_badge-circle.scss17
-rwxr-xr-xweb/src/assets/scss/core/badges/_badge-dot.scss42
-rwxr-xr-xweb/src/assets/scss/core/badges/_badge.scss55
-rwxr-xr-xweb/src/assets/scss/core/buttons/_button-brand.scss12
-rwxr-xr-xweb/src/assets/scss/core/buttons/_button-icon.scss92
-rwxr-xr-xweb/src/assets/scss/core/buttons/_button.scss91
-rwxr-xr-xweb/src/assets/scss/core/cards/_card-animations.scss10
-rwxr-xr-xweb/src/assets/scss/core/cards/_card-blockquote.scss17
-rwxr-xr-xweb/src/assets/scss/core/cards/_card-profile.scss49
-rwxr-xr-xweb/src/assets/scss/core/cards/_card-stats.scss16
-rwxr-xr-xweb/src/assets/scss/core/cards/_card.scss8
-rwxr-xr-xweb/src/assets/scss/core/charts/_chart.scss69
-rwxr-xr-xweb/src/assets/scss/core/close/_close.scss34
-rwxr-xr-xweb/src/assets/scss/core/custom-forms/_custom-checkbox.scss37
-rwxr-xr-xweb/src/assets/scss/core/custom-forms/_custom-control.scss51
-rwxr-xr-xweb/src/assets/scss/core/custom-forms/_custom-form.scss37
-rwxr-xr-xweb/src/assets/scss/core/custom-forms/_custom-radio.scss37
-rwxr-xr-xweb/src/assets/scss/core/custom-forms/_custom-toggle.scss66
-rwxr-xr-xweb/src/assets/scss/core/dropdowns/_dropdown.scss79
-rwxr-xr-xweb/src/assets/scss/core/footers/_footer.scss98
-rwxr-xr-xweb/src/assets/scss/core/forms/_form-validation.scss71
-rwxr-xr-xweb/src/assets/scss/core/forms/_form.scss78
-rwxr-xr-xweb/src/assets/scss/core/forms/_input-group.scss70
-rwxr-xr-xweb/src/assets/scss/core/headers/_header.scss7
-rwxr-xr-xweb/src/assets/scss/core/icons/_icon-shape.scss42
-rwxr-xr-xweb/src/assets/scss/core/icons/_icon.scss65
-rwxr-xr-xweb/src/assets/scss/core/list-groups/_list-group.scss46
-rwxr-xr-xweb/src/assets/scss/core/maps/_map.scss10
-rwxr-xr-xweb/src/assets/scss/core/masks/_mask.scss12
-rwxr-xr-xweb/src/assets/scss/core/mixins/_alert.scss13
-rwxr-xr-xweb/src/assets/scss/core/mixins/_background-variant.scss30
-rwxr-xr-xweb/src/assets/scss/core/mixins/_badge.scss12
-rwxr-xr-xweb/src/assets/scss/core/mixins/_buttons.scss105
-rwxr-xr-xweb/src/assets/scss/core/mixins/_forms.scss127
-rwxr-xr-xweb/src/assets/scss/core/mixins/_icon.scss4
-rwxr-xr-xweb/src/assets/scss/core/mixins/_modals.scss23
-rwxr-xr-xweb/src/assets/scss/core/mixins/_popover.scss36
-rwxr-xr-xweb/src/assets/scss/core/modals/_modal.scss25
-rwxr-xr-xweb/src/assets/scss/core/navbars/_navbar-collapse.scss125
-rwxr-xr-xweb/src/assets/scss/core/navbars/_navbar-dropdown.scss101
-rwxr-xr-xweb/src/assets/scss/core/navbars/_navbar-search.scss69
-rwxr-xr-xweb/src/assets/scss/core/navbars/_navbar-vertical.scss286
-rwxr-xr-xweb/src/assets/scss/core/navbars/_navbar.scss153
-rwxr-xr-xweb/src/assets/scss/core/navs/_nav-pills.scss66
-rwxr-xr-xweb/src/assets/scss/core/navs/_nav.scss33
-rwxr-xr-xweb/src/assets/scss/core/paginations/_pagination.scss48
-rwxr-xr-xweb/src/assets/scss/core/popovers/_popover.scss21
-rwxr-xr-xweb/src/assets/scss/core/progresses/_progress.scss79
-rwxr-xr-xweb/src/assets/scss/core/separators/_separator.scss54
-rwxr-xr-xweb/src/assets/scss/core/tables/_table.scss118
-rwxr-xr-xweb/src/assets/scss/core/type/_article.scss22
-rwxr-xr-xweb/src/assets/scss/core/type/_display.scss14
-rwxr-xr-xweb/src/assets/scss/core/type/_heading.scss52
-rwxr-xr-xweb/src/assets/scss/core/type/_type.scss27
-rwxr-xr-xweb/src/assets/scss/core/utilities/_backgrounds.scss51
-rwxr-xr-xweb/src/assets/scss/core/utilities/_blurable.scss37
-rwxr-xr-xweb/src/assets/scss/core/utilities/_floating.scss64
-rwxr-xr-xweb/src/assets/scss/core/utilities/_helper.scss18
-rwxr-xr-xweb/src/assets/scss/core/utilities/_image.scss9
-rwxr-xr-xweb/src/assets/scss/core/utilities/_opacity.scss35
-rwxr-xr-xweb/src/assets/scss/core/utilities/_overflow.scss11
-rwxr-xr-xweb/src/assets/scss/core/utilities/_position.scss25
-rwxr-xr-xweb/src/assets/scss/core/utilities/_shadows.scss28
-rwxr-xr-xweb/src/assets/scss/core/utilities/_sizing.scss7
-rwxr-xr-xweb/src/assets/scss/core/utilities/_spacing.scss107
-rwxr-xr-xweb/src/assets/scss/core/utilities/_text.scss49
-rwxr-xr-xweb/src/assets/scss/core/utilities/_transform.scss13
-rw-r--r--web/src/assets/scss/core/vendors/_flatpickr.scss72
-rwxr-xr-xweb/src/assets/scss/core/vendors/_headroom.scss25
-rwxr-xr-xweb/src/assets/scss/core/vendors/_nouislider.scss410
-rwxr-xr-xweb/src/assets/scss/core/vendors/_scrollbar.scss35
-rwxr-xr-xweb/src/assets/scss/custom/_alert.scss6
-rwxr-xr-xweb/src/assets/scss/custom/_avatar.scss6
-rwxr-xr-xweb/src/assets/scss/custom/_badge.scss7
-rwxr-xr-xweb/src/assets/scss/custom/_buttons.scss7
-rwxr-xr-xweb/src/assets/scss/custom/_card.scss9
-rwxr-xr-xweb/src/assets/scss/custom/_chart.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_close.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_components.scss31
-rwxr-xr-xweb/src/assets/scss/custom/_content.scss47
-rwxr-xr-xweb/src/assets/scss/custom/_custom-forms.scss9
-rwxr-xr-xweb/src/assets/scss/custom/_dropdown.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_footer.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_forms.scss7
-rwxr-xr-xweb/src/assets/scss/custom/_functions.scss33
-rwxr-xr-xweb/src/assets/scss/custom/_header.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_icons.scss6
-rwxr-xr-xweb/src/assets/scss/custom/_input-group.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_list-group.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_map.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_mask.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_mixins.scss19
-rwxr-xr-xweb/src/assets/scss/custom/_modal.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_nav.scss7
-rwxr-xr-xweb/src/assets/scss/custom/_navbar.scss9
-rwxr-xr-xweb/src/assets/scss/custom/_pagination.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_popover.scss6
-rwxr-xr-xweb/src/assets/scss/custom/_progress.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_reboot.scss13
-rwxr-xr-xweb/src/assets/scss/custom/_section.scss139
-rwxr-xr-xweb/src/assets/scss/custom/_separator.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_tables.scss5
-rwxr-xr-xweb/src/assets/scss/custom/_type.scss8
-rwxr-xr-xweb/src/assets/scss/custom/_utilities.scss16
-rwxr-xr-xweb/src/assets/scss/custom/_variables.scss1009
-rwxr-xr-xweb/src/assets/scss/custom/_vendors.scss9
-rwxr-xr-xweb/src/assets/vendor/nucleo/css/nucleo-svg.css135
-rwxr-xr-xweb/src/assets/vendor/nucleo/css/nucleo.css572
-rwxr-xr-xweb/src/assets/vendor/nucleo/fonts/nucleo-icons.eotbin0 -> 18516 bytes
-rwxr-xr-xweb/src/assets/vendor/nucleo/fonts/nucleo-icons.svg312
-rwxr-xr-xweb/src/assets/vendor/nucleo/fonts/nucleo-icons.ttfbin0 -> 18292 bytes
-rwxr-xr-xweb/src/assets/vendor/nucleo/fonts/nucleo-icons.woffbin0 -> 10220 bytes
-rwxr-xr-xweb/src/assets/vendor/nucleo/fonts/nucleo-icons.woff2bin0 -> 8580 bytes
-rw-r--r--web/src/components/Badge.vue47
-rw-r--r--web/src/components/BaseAlert.vue66
-rw-r--r--web/src/components/BaseButton.vue106
-rw-r--r--web/src/components/BaseCheckbox.vue61
-rw-r--r--web/src/components/BaseDropdown.vue89
-rw-r--r--web/src/components/BaseHeader.vue23
-rw-r--r--web/src/components/BaseInput.vue142
-rw-r--r--web/src/components/BaseNav.vue89
-rw-r--r--web/src/components/BasePagination.vue134
-rwxr-xr-xweb/src/components/BaseProgress.vue83
-rw-r--r--web/src/components/BaseRadio.vue61
-rw-r--r--web/src/components/BaseSlider.vue96
-rw-r--r--web/src/components/BaseSwitch.vue34
-rw-r--r--web/src/components/BaseTable.vue73
-rwxr-xr-xweb/src/components/Card.vue70
-rw-r--r--web/src/components/Charts/BarChart.js30
-rw-r--r--web/src/components/Charts/DoughnutChart.js30
-rw-r--r--web/src/components/Charts/LineChart.js30
-rw-r--r--web/src/components/Charts/PieChart.js30
-rw-r--r--web/src/components/Charts/config.js498
-rw-r--r--web/src/components/Charts/globalOptionsMixin.js7
-rw-r--r--web/src/components/Charts/optionHelpers.js10
-rw-r--r--web/src/components/CloseButton.vue34
-rw-r--r--web/src/components/HelloWorld.vue58
-rw-r--r--web/src/components/Modal.vue117
-rw-r--r--web/src/components/NavbarToggleButton.vue30
-rw-r--r--web/src/components/NotificationPlugin/Notification.vue190
-rw-r--r--web/src/components/NotificationPlugin/Notifications.vue55
-rw-r--r--web/src/components/NotificationPlugin/index.js66
-rwxr-xr-xweb/src/components/SidebarPlugin/SideBar.vue138
-rwxr-xr-xweb/src/components/SidebarPlugin/SidebarItem.vue56
-rwxr-xr-xweb/src/components/SidebarPlugin/index.js43
-rw-r--r--web/src/components/StatsCard.vue49
-rw-r--r--web/src/components/Tabs/PillsLayout.vue6
-rw-r--r--web/src/components/Tabs/Tab.vue42
-rw-r--r--web/src/components/Tabs/TabPane.vue32
-rw-r--r--web/src/components/Tabs/Tabs.vue198
-rw-r--r--web/src/components/Tabs/TabsLayout.vue18
-rw-r--r--web/src/components/stringUtils.js9
-rw-r--r--web/src/directives/click-ouside.js15
-rw-r--r--web/src/layout/AuthLayout.vue135
-rwxr-xr-xweb/src/layout/Content.vue18
-rwxr-xr-xweb/src/layout/ContentFooter.vue28
-rwxr-xr-xweb/src/layout/DashboardLayout.vue62
-rwxr-xr-xweb/src/layout/DashboardNavbar.vue79
-rw-r--r--web/src/main.js12
-rw-r--r--web/src/plugins/argon-dashboard.js15
-rw-r--r--web/src/plugins/globalComponents.js43
-rw-r--r--web/src/plugins/globalDirectives.js13
-rw-r--r--web/src/registerServiceWorker.js32
-rw-r--r--web/src/router.js28
-rw-r--r--web/src/router/index.js23
-rw-r--r--web/src/services/blender_api.js19
-rw-r--r--web/src/views/About.vue5
-rw-r--r--web/src/views/Blender.vue103
-rw-r--r--web/src/views/Dashboard.vue206
-rw-r--r--web/src/views/Dashboard/PageVisitsTable.vue94
-rw-r--r--web/src/views/Dashboard/SocialTrafficTable.vue90
-rw-r--r--web/src/views/Home.vue35
-rw-r--r--web/src/views/Icons.vue224
-rw-r--r--web/src/views/Login.vue70
-rw-r--r--web/src/views/Maps.vue126
-rw-r--r--web/src/views/Profile.vue13
-rw-r--r--web/src/views/Register.vue92
-rw-r--r--web/src/views/Tables.vue86
-rw-r--r--web/src/views/Tables/ProjectsTable.vue167
-rw-r--r--web/src/views/UserProfile.vue212
-rw-r--r--web/vue.config.js24
-rw-r--r--web/yarn.lock8821
229 files changed, 23371 insertions, 559 deletions
diff --git a/api/routes/web.php b/api/routes/web.php
index d6479c7..fa86b06 100644
--- a/api/routes/web.php
+++ b/api/routes/web.php
@@ -18,6 +18,7 @@ $router->get('/', function () use ($router) {
});
+/*
$router->group(['prefix' => 'api/v1/blenders', 'middleware' => 'auth'], function () use ($router) {
$router->get('', ['middleware' => 'auth:blender:read', 'uses' => 'BlenderController@get_all']);
$router->get('{id}', ['middleware' => 'auth:blender:read', 'uses' => 'BlenderController@get_one']);
@@ -25,3 +26,12 @@ $router->group(['prefix' => 'api/v1/blenders', 'middleware' => 'auth'], function
$router->post('{id}/start', ['middleware' => 'auth:blender:operate', 'uses' => 'BlenderController@start']);
$router->post('{id}/stop', ['middleware' => 'auth:blender:operate', 'uses' => 'BlenderController@stop']);
});
+*/
+
+$router->group(['prefix' => 'api/v1/blenders'], function () use ($router) {
+ $router->get('', ['uses' => 'BlenderController@get_all']);
+ $router->get('{id}', ['uses' => 'BlenderController@get_one']);
+ $router->post('', ['uses' => 'BlenderController@create']);
+ $router->post('{id}/start', ['uses' => 'BlenderController@start']);
+ $router->post('{id}/stop', ['uses' => 'BlenderController@stop']);
+});
diff --git a/web/.gitignore b/web/.gitignore
index d9794a6..27d4f60 100644
--- a/web/.gitignore
+++ b/web/.gitignore
@@ -1,6 +1,22 @@
.DS_Store
-node_modules/
-npm-debug.log
-.idea/
-dist/
+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*
auth_config.json
diff --git a/web/CHANGELOG.md b/web/CHANGELOG.md
new file mode 100755
index 0000000..dd7d425
--- /dev/null
+++ b/web/CHANGELOG.md
@@ -0,0 +1,5 @@
+## [1.1.0] - 2020-06-30
+- Package updates
+
+## [1.0.0] - 2019-04-07
+### Initial Release
diff --git a/web/ISSUES_TEMPLATE.md b/web/ISSUES_TEMPLATE.md
new file mode 100755
index 0000000..d647cd2
--- /dev/null
+++ b/web/ISSUES_TEMPLATE.md
@@ -0,0 +1,13 @@
+<!--
+ IMPORTANT: Please use the following link to create a new issue:
+
+ https://www.creative-tim.com/new-issue/vue-argon-dashboard
+
+**If your issue was not created using the app above, it will be closed immediately.**
+-->
+
+<!--
+Love Creative Tim? Do you need Angular, React, Vuejs or HTML? You can visit:
+👉 https://www.creative-tim.com/bundles
+👉 https://www.creative-tim.com
+-->
diff --git a/web/LICENSE.md b/web/LICENSE.md
new file mode 100755
index 0000000..0fd63cc
--- /dev/null
+++ b/web/LICENSE.md
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 Creative Tim (www.creative-tim.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/web/README.md b/web/README.md
index ae73f2f..93b92da 100644..100755
--- a/web/README.md
+++ b/web/README.md
@@ -1,24 +1,221 @@
-# web
+# [Vue Argon Dashboard](https://demos.creative-tim.com/vue-argon-dashboard/?ref=ada-github-readme) [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&logo=twitter)](https://twitter.com/home?status=Vue%20Argon%20Dashboard%20is%20a%20Free%20Bootstrap%20and%Vue.js%20Dashboard%20made%20using%vue-cli%20%E2%9D%A4%EF%B8%8F%0Ahttps%3A//demos.creative-tim.com/vue-argon-dashboard%20%vue.js%20%23vue-cli%20%23argon%20%23argondesign%20%23angulardashboard%20%23argonvue%20%23vuedesign%20%23bootstrap%20%23design%20%23uikit%20%23freebie%20%20via%20%40CreativeTim)
-## Project setup
-```
-npm install
-```
-### Compiles and hot-reloads for development
-```
-npm run serve
-```
-### Compiles and minifies for production
-```
-npm run build
-```
+ ![version](https://img.shields.io/badge/version-1.0.0-blue.svg) ![license](https://img.shields.io/badge/license-MIT-blue.svg) [![GitHub issues open](https://img.shields.io/github/issues/creativetimofficial/vue-argon-dashboard.svg?maxAge=2592000)](https://github.com/creativetimofficial/vue-argon-dashboard/issues?q=is%3Aopen+is%3Aissue) [![GitHub issues closed](https://img.shields.io/github/issues-closed-raw/creativetimofficial/vue-argon-dashboard.svg?maxAge=2592000)](https://github.com/creativetimofficial/vue-argon-dashboard/issues?q=is%3Aissue+is%3Aclosed) [![Join the chat at https://gitter.im/NIT-dgp/General](https://badges.gitter.im/NIT-dgp/General.svg)](https://gitter.im/creative-tim-general/Lobby) [![Chat](https://img.shields.io/badge/chat-on%20discord-7289da.svg)](https://discord.gg/E4aHAQy)
+
+
+![Product Gif](https://raw.githubusercontent.com/creativetimofficial/public-assets/master/vue-argon-dashboard/vue-argon-dashboard.gif)
+
+**Fully Coded Components**
+
+Vue Argon Dashboard is built with over 100 individual components, giving you the freedom of choosing and combining. All components can take variations in color, that you can easily modify using SASS files.
+You will save a lot of time going from prototyping to full-functional code, because all elements are implemented. This Dashboard is coming with pre-built examples, so the development process is seamless, switching from our pages to the real website is very easy to be done.
+Every element has multiple states for colors, styles, hover, focus, that you can easily access and use.
+
+**Complex Documentation**
+
+Each element is well presented in a very complex documentation. You can read more about the idea behind this [dashboard here](https://demos.creative-tim.com/vue-argon-dashboard/documentation/#/tutorial?ref=ada-github-readme). You can check the [components here](https://demos.creative-tim.com/vue-argon-dashboard/documentation/#/alerts?ref=ada-github-readme) and the [foundation here](https://demos.creative-tim.com/vue-argon-dashboard/documentation/#/colors?ref=ada-github-readme).
+
+**Example Pages**
+
+If you want to get inspiration or just show something directly to your clients, you can jump start your development with our pre-built example pages. You will be able to quickly set up the basic structure for your web project.
+
+
+## Table of Contents
+
+* [Versions](#versions)
+* [Demo](#demo)
+* [Quick Start](#quick-start)
+* [Documentation](#documentation)
+* [File Structure](#file-structure)
+* [Browser Support](#browser-support)
+* [Resources](#resources)
+* [Reporting Issues](#reporting-issues)
+* [Licensing](#licensing)
+* [Useful Links](#useful-links)
+
+## Versions
+
+[<img src="https://github.com/creativetimofficial/public-assets/blob/master/logos/vue-logo.jpg?raw=true" width="60" height="60" />](https://www.creative-tim.com/product/vue-argon-dashboard)[<img src="https://github.com/creativetimofficial/public-assets/blob/master/logos/html-logo.jpg?raw=true" width="60" height="60" />](https://www.creative-tim.com/product/argon-dashboard)[<img src="https://github.com/creativetimofficial/public-assets/blob/master/logos/react-logo.jpg?raw=true" width="60" height="60" />](https://www.creative-tim.com/product/argon-dashboard-react)[<img src="https://github.com/creativetimofficial/public-assets/blob/master/logos/angular-logo.jpg?raw=true" width="60" height="60" />](https://www.creative-tim.com/product/vue-argon-dashboard)[<img src="https://github.com/creativetimofficial/public-assets/blob/master/logos/nodejs-logo.jpg?raw=true" width="60" height="60" />](https://www.creative-tim.com/product/argon-dashboard-nodejs)[<img src="https://raw.githubusercontent.com/creativetimofficial/public-assets/master/logos/laravel_logo.png" width="60" height="60" style="background:white"/>](https://www.creative-tim.com/product/argon-dashboard-laravel)[<img src="https://raw.githubusercontent.com/creativetimofficial/public-assets/master/logos/sketch-logo.jpg" width="60" height="60" />](https://github.com/creativetimofficial/argon-dashboard/tree/sketch)
+
+
+
+|Vue | HTML | React | Angular |
+| --- | --- | --- | --- |
+[![Vue Argon Dashboard](https://github.com/creativetimofficial/public-assets/blob/master/vue-argon-dashboard/vue-argon-dashboard.jpg?raw=true)](https://www.creative-tim.com/product/vue-argon-dashboard?ref=ada-github-readme) | [![Argon Dashboard HTML](https://github.com/creativetimofficial/public-assets/blob/master/argon-dashboard/argon-dashboard.jpg?raw=true)](https://www.creative-tim.com/product/vue-argon-dashboard?ref=ada-github-readme) | [![Argon Dashboard React](https://github.com/creativetimofficial/public-assets/blob/master/argon-dashboard-react/argon-dashboard-react.jpg?raw=true)](https://www.creative-tim.com/product/argon-dashboard-react?ref=ada-github-readme) | [![Argon Dashboard Angular](https://github.com/creativetimofficial/public-assets/blob/master/argon-dashboard-angular/argon-dashboard-angular.jpg?raw=true)](https://www.creative-tim.com/product/argon-dashboard-angular?ref=ada-github-readme)
+
+| NodeJS | Laravel |
+| --- | --- |
+| [![Argon Dashboard NodeJS](https://github.com/creativetimofficial/public-assets/blob/master/argon-dashboard-nodejs/argon-dashboard-nodejs.jpg?raw=true)](https://www.creative-tim.com/product/argon-dashboard-nodejs?ref=ada-github-readme) | [![Argon Dashboard Laravel](https://github.com/creativetimofficial/public-assets/blob/master/argon-dashboard-laravel/argon-dashboard-laravel.jpg?raw=true)](https://www.creative-tim.com/product/argon-dashboard-laravel?ref=ada-github-readme) |
+
+## Demo
+
+| Dashboard Page | Icons Page | User Profile Page | Tables Page | Login Page | Register Page |
+| --- | --- | --- | --- | --- | --- |
+| [![Dashboard Page](https://raw.githubusercontent.com/creativetimofficial/public-assets/master/vue-argon-dashboard/dashboard.png)](https://demos.creative-tim.com/vue-argon-dashboard/#/dashboard?ref=ada-github-readme) | [![Icons Page](https://github.com/creativetimofficial/public-assets/blob/master/vue-argon-dashboard/icons.png?raw=true)](https://demos.creative-tim.com/vue-argon-dashboard/#/icons?ref=ada-github-readme) | [![User Profile Page](https://github.com/creativetimofficial/public-assets/blob/master/vue-argon-dashboard/user.png?raw=true)](https://demos.creative-tim.com/vue-argon-dashboard/#/profile?ref=ada-github-readme) | [![Tables Page](https://raw.githubusercontent.com/creativetimofficial/public-assets/master/vue-argon-dashboard/tables.png)](https://demos.creative-tim.com/vue-argon-dashboard/#/tables?ref=ada-github-readme) | [![Login Page](https://github.com/creativetimofficial/public-assets/blob/master/vue-argon-dashboard/login.png?raw=true)](https://demos.creative-tim.com/vue-argon-dashboard/#/login?ref=ada-github-readme) | [![Register Page](https://github.com/creativetimofficial/public-assets/blob/master/vue-argon-dashboard/register.png?raw=true)](https://demos.creative-tim.com/vue-argon-dashboard/#/register?ref=ada-github-readme)
+
+[View More](https://demos.creative-tim.com/vue-argon-dashboard/#/dashboard)
+
+
+## Quick start
+
+- [Download from Github](https://github.com/creativetimofficial/vue-argon-dashboard/archive/master.zip).
+- [Download from Creative Tim](https://www.creative-tim.com/product/vue-argon-dashboard?ref=ada-github-readme).
+- Clone the repo: `git clone https://github.com/creativetimofficial/vue-argon-dashboard.git`.
+
+
+## Documentation
+The documentation for the Vue Argon Dashboard is hosted at our [website](https://demos.creative-tim.com/vue-argon-dashboard/documentation/#/tutorial?ref=ada-github-readme).
+
+
+## File Structure
+Within the download you'll find the following directories and files:
-### Lints and fixes files
```
-npm run lint
+|-- Vue Argon Dashboard
+ |-- .gitignore
+ |-- CHANGELOG.md
+ |-- ISSUES_TEMPLATE.md
+ |-- LICENSE.md
+ |-- README.md
+ |-- babel.config.js
+ |-- package.json
+ |-- public
+ | |-- favicon.ico
+ | |-- index.html
+ | |-- manifest.json
+ | |-- robots.txt
+ | |-- img
+ |-- src
+ |-- App.vue
+ |-- main.js
+ |-- registerServiceWorker.js
+ |-- router.js
+ |-- assets
+ | |-- logo.png
+ | |-- scss
+ | | |-- argon.scss
+ | |-- vendor
+ | |-- @fortawesome
+ | |-- nucleo
+ |-- components
+ | |-- Badge.vue
+ | |-- BaseAlert.vue
+ | |-- BaseButton.vue
+ | |-- BaseCheckbox.vue
+ | |-- BaseDropdown.vue
+ | |-- BaseHeader.vue
+ | |-- BaseInput.vue
+ | |-- BaseNav.vue
+ | |-- BasePagination.vue
+ | |-- BaseProgress.vue
+ | |-- BaseRadio.vue
+ | |-- BaseSlider.vue
+ | |-- BaseSwitch.vue
+ | |-- BaseTable.vue
+ | |-- Card.vue
+ | |-- CloseButton.vue
+ | |-- Modal.vue
+ | |-- NavbarToggleButton.vue
+ | |-- StatsCard.vue
+ | |-- stringUtils.js
+ | |-- Charts
+ | | |-- BarChart.js
+ | | |-- DoughnutChart.js
+ | | |-- LineChart.js
+ | | |-- PieChart.js
+ | | |-- config.js
+ | | |-- globalOptionsMixin.js
+ | | |-- optionHelpers.js
+ | |-- SidebarPlugin
+ | | |-- SideBar.vue
+ | | |-- SidebarItem.vue
+ | | |-- index.js
+ | |-- Tabs
+ | |-- PillsLayout.vue
+ | |-- Tab.vue
+ | |-- TabPane.vue
+ | |-- Tabs.vue
+ | |-- TabsLayout.vue
+ |-- directives
+ | |-- click-ouside.js
+ |-- layout
+ | |-- AuthLayout.vue
+ | |-- Content.vue
+ | |-- ContentFooter.vue
+ | |-- DashboardLayout.vue
+ | |-- DashboardNavbar.vue
+ | |-- LoadingMainPanel.vue
+ |-- plugins
+ | |-- argon-dashboard.js
+ | |-- globalComponents.js
+ | |-- globalDirectives.js
+ |-- views
+ |-- Dashboard.vue
+ |-- Icons.vue
+ |-- Login.vue
+ |-- Maps.vue
+ |-- Register.vue
+ |-- Tables.vue
+ |-- UserProfile.vue
+ |-- Dashboard
+ | |-- PageVisitsTable.vue
+ | |-- SocialTrafficTable.vue
+ |-- Tables
+ |-- ProjectsTable.vue
```
-### Customize configuration
-See [Configuration Reference](https://cli.vuejs.org/config/).
+
+## Browser Support
+
+At present, we officially aim to support the last two versions of the following browsers:
+
+<img src="https://github.com/creativetimofficial/public-assets/blob/master/logos/chrome-logo.png?raw=true" width="64" height="64"> <img src="https://raw.githubusercontent.com/creativetimofficial/public-assets/master/logos/firefox-logo.png" width="64" height="64"> <img src="https://raw.githubusercontent.com/creativetimofficial/public-assets/master/logos/edge-logo.png" width="64" height="64"> <img src="https://raw.githubusercontent.com/creativetimofficial/public-assets/master/logos/safari-logo.png" width="64" height="64"> <img src="https://raw.githubusercontent.com/creativetimofficial/public-assets/master/logos/opera-logo.png" width="64" height="64">
+
+
+
+## Resources
+- Demo: <https://demos.creative-tim.com/vue-argon-dashboard/#/dashboard?ref=ada-github-readme>
+- Download Page: <https://www.creative-tim.com/product/vue-argon-dashboard?ref=ada-github-readme>
+- Documentation: <https://demos.creative-tim.com/vue-argon-dashboard/documentation/#/tutorial?ref=ada-github-readme>
+- License Agreement: <https://www.creative-tim.com/license?ref=ada-github-readme>
+- Support: <https://www.creative-tim.com/contact-us?ref=ada-github-readme>
+- Issues: [Github Issues Page](https://github.com/creativetimofficial/vue-argon-dashboard/issues?ref=ada-github-readme)
+
+## Reporting Issues
+
+We use GitHub Issues as the official bug tracker for the Material Kit. Here are some advices for our users that want to report an issue:
+
+1. Make sure that you are using the latest version of the Material Kit. Check the CHANGELOG from your dashboard on our [website](https://www.creative-tim.com/?ref=ada-github-readme).
+2. Providing us reproducible steps for the issue will shorten the time it takes for it to be fixed.
+3. Some issues may be browser specific, so specifying in what browser you encountered the issue might help.
+
+## Licensing
+
+- Copyright 2018 Creative Tim (https://www.creative-tim.com/?ref=ada-github-readme)
+
+- Licensed under MIT (https://github.com/creativetimofficial/vue-argon-dashboard/blob/master/LICENSE.md)
+
+## Useful Links
+
+- [Tutorials](https://www.youtube.com/channel/UCVyTG4sCw-rOvB9oHkzZD1w?ref=creativetim)
+- [Affiliate Program](https://www.creative-tim.com/affiliates/new?ref=ada-github-readme) (earn money)
+- [Blog Creative Tim](http://blog.creative-tim.com/?ref=ada-github-readme)
+- [Free Products](https://www.creative-tim.com/bootstrap-themes/free?ref=ada-github-readme) from Creative Tim
+- [Premium Products](https://www.creative-tim.com/bootstrap-themes/premium?ref=ada-github-readme) from Creative Tim
+- [React Products](https://www.creative-tim.com/bootstrap-themes/react-themes?ref=ada-github-readme) from Creative Tim
+- [Angular Products](https://www.creative-tim.com/bootstrap-themes/angular-themes?ref=ada-github-readme) from Creative Tim
+- [VueJS Products](https://www.creative-tim.com/bootstrap-themes/vuejs-themes?ref=ada-github-readme) from Creative Tim
+- [More products](https://www.creative-tim.com/bootstrap-themes?ref=ada-github-readme) from Creative Tim
+- Check our Bundles [here](https://www.creative-tim.com/bundles?ref=ada-github-readme)
+
+### Social Media
+
+Twitter: <https://twitter.com/CreativeTim?ref=creativetim>
+
+Facebook: <https://www.facebook.com/CreativeTim?ref=creativetim>
+
+Dribbble: <https://dribbble.com/creativetim?ref=creativetim>
+
+Instagram: <https://www.instagram.com/CreativeTimOfficial?ref=creativetim>
diff --git a/web/babel.config.js b/web/babel.config.js
index e955840..ba17966 100644
--- a/web/babel.config.js
+++ b/web/babel.config.js
@@ -1,5 +1,5 @@
module.exports = {
presets: [
- '@vue/cli-plugin-babel/preset'
+ '@vue/app'
]
}
diff --git a/web/package-lock.json b/web/package-lock.json
index 37b7b27..fd85994 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -1,5 +1,5 @@
{
- "name": "web",
+ "name": "vue-argon-dashboard",
"version": "0.1.0",
"lockfileVersion": 1,
"requires": true,
@@ -325,6 +325,58 @@
"@babel/helper-validator-identifier": "^7.10.4",
"chalk": "^2.0.0",
"js-tokens": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
}
},
"@babel/parser": {
@@ -1020,7 +1072,6 @@
"version": "7.12.1",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
"integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
- "dev": true,
"requires": {
"regenerator-runtime": "^0.13.4"
}
@@ -1064,6 +1115,57 @@
"to-fast-properties": "^2.0.0"
}
},
+ "@eslint/eslintrc": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.1.tgz",
+ "integrity": "sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.12.4",
+ "debug": "^4.1.1",
+ "espree": "^7.3.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^3.13.1",
+ "lodash": "^4.17.19",
+ "minimatch": "^3.0.4",
+ "strip-json-comments": "^3.1.1"
+ },
+ "dependencies": {
+ "globals": {
+ "version": "12.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
+ "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.8.1"
+ }
+ },
+ "import-fresh": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
+ "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
+ }
+ }
+ },
"@hapi/address": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
@@ -1130,6 +1232,16 @@
"integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
"dev": true
},
+ "@nuxt/opencollective": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.3.2.tgz",
+ "integrity": "sha512-XG7rUdXG9fcafu9KTDIYjJSkRO38EwjlKYIb5TQ/0WDbiTUTtUtgncMscKOYzfsY86kGs05pAuMOR+3Fi0aN3A==",
+ "requires": {
+ "chalk": "^4.1.0",
+ "consola": "^2.15.0",
+ "node-fetch": "^2.6.1"
+ }
+ },
"@soda/friendly-errors-webpack-plugin": {
"version": "1.7.1",
"resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz",
@@ -1673,6 +1785,17 @@
"yorkie": "^2.0.0"
}
},
+ "@vue/cli-plugin-pwa": {
+ "version": "4.5.8",
+ "resolved": "https://registry.npmjs.org/@vue/cli-plugin-pwa/-/cli-plugin-pwa-4.5.8.tgz",
+ "integrity": "sha512-B5rFJhwhGLHcPUrAUx185X6jlTUJHgN6FTnU+qKspEoONCtGy09/zIL9ejELRw9jxv5C6x2WKUAkyHhh89RkWw==",
+ "dev": true,
+ "requires": {
+ "@vue/cli-shared-utils": "^4.5.8",
+ "webpack": "^4.0.0",
+ "workbox-webpack-plugin": "^4.3.1"
+ }
+ },
"@vue/cli-plugin-router": {
"version": "4.5.8",
"resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.8.tgz",
@@ -1805,6 +1928,17 @@
"path-exists": "^4.0.0"
}
},
+ "fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
"locate-path": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
@@ -1908,11 +2042,61 @@
"strip-ansi": "^6.0.0"
},
"dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
}
}
},
@@ -2162,6 +2346,12 @@
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true
},
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
+ },
"abortcontroller-polyfill": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.5.0.tgz",
@@ -2241,6 +2431,12 @@
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
"dev": true
},
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ },
"ansi-colors": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
@@ -2277,12 +2473,11 @@
"dev": true
},
"ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"requires": {
- "color-convert": "^1.9.0"
+ "color-convert": "^2.0.1"
}
},
"any-promise": {
@@ -2314,6 +2509,16 @@
"integrity": "sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==",
"dev": true
},
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "dev": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -2341,6 +2546,12 @@
"integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
"dev": true
},
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
"array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
@@ -2368,6 +2579,11 @@
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
"dev": true
},
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
+ },
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
@@ -2457,6 +2673,12 @@
"integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
"dev": true
},
+ "async-foreach": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
+ "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
+ "dev": true
+ },
"async-limiter": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
@@ -2466,8 +2688,7 @@
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"atob": {
"version": "2.1.2",
@@ -2475,6 +2696,68 @@
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true
},
+ "auth0-js": {
+ "version": "9.14.0",
+ "resolved": "https://registry.npmjs.org/auth0-js/-/auth0-js-9.14.0.tgz",
+ "integrity": "sha512-40gIBUejmYAYse06ck6sxdNO0KU0pX+KDIQsWAkcyFtI0HU6dY5aeHxZfVYkYjtbArKr5s13LuZFdKrUiGyCqQ==",
+ "requires": {
+ "base64-js": "^1.3.0",
+ "idtoken-verifier": "^2.0.3",
+ "js-cookie": "^2.2.0",
+ "qs": "^6.7.0",
+ "superagent": "^5.3.1",
+ "url-join": "^4.0.1",
+ "winchan": "^0.2.2"
+ },
+ "dependencies": {
+ "qs": {
+ "version": "6.9.4",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
+ "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ=="
+ }
+ }
+ },
+ "auth0-lock": {
+ "version": "11.27.1",
+ "resolved": "https://registry.npmjs.org/auth0-lock/-/auth0-lock-11.27.1.tgz",
+ "integrity": "sha512-qUa6f+rQJgTI3vCw8jDQA6m91TXiTYCQM9FLINyMRFKYvcJ/gIE1E5jMEll84miaAkXVWU8X+1vC7UHiRx8epA==",
+ "requires": {
+ "auth0-js": "^9.13.3",
+ "auth0-password-policies": "^1.0.2",
+ "blueimp-md5": "2.3.1",
+ "immutable": "^3.7.3",
+ "jsonp": "^0.2.1",
+ "password-sheriff": "^1.1.0",
+ "prop-types": "^15.6.0",
+ "qs": "^6.7.0",
+ "react": "^15.6.2",
+ "react-dom": "^15.6.2",
+ "react-transition-group": "^2.2.1",
+ "trim": "0.0.1",
+ "url-join": "^1.1.0",
+ "validator": "^13.1.1"
+ },
+ "dependencies": {
+ "qs": {
+ "version": "6.9.4",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
+ "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ=="
+ },
+ "url-join": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz",
+ "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg="
+ }
+ }
+ },
+ "auth0-password-policies": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/auth0-password-policies/-/auth0-password-policies-1.0.2.tgz",
+ "integrity": "sha512-ZshousKt+Wfv/iIBS3oQfOsH8NBF9IbL15qd2Qur8YfiQrRjrAT0T7VaesnrytYEHEXkUbHcdxWEAlyr16w20A==",
+ "requires": {
+ "password-sheriff": "^1.1.0"
+ }
+ },
"autoprefixer": {
"version": "9.8.6",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz",
@@ -2524,6 +2807,15 @@
"resolve": "^1.12.0"
}
},
+ "babel-extract-comments": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz",
+ "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==",
+ "dev": true,
+ "requires": {
+ "babylon": "^6.18.0"
+ }
+ },
"babel-loader": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz",
@@ -2546,6 +2838,52 @@
"object.assign": "^4.1.0"
}
},
+ "babel-plugin-syntax-object-rest-spread": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
+ "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
+ "dev": true
+ },
+ "babel-plugin-transform-object-rest-spread": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
+ "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-object-rest-spread": "^6.8.0",
+ "babel-runtime": "^6.26.0"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.11",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
+ "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==",
+ "dev": true
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
+ }
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
+ },
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
@@ -2610,8 +2948,7 @@
"base64-js": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
- "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
- "dev": true
+ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
},
"batch": {
"version": "0.6.1",
@@ -2653,12 +2990,26 @@
"dev": true,
"optional": true
},
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.0"
+ }
+ },
"bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
"dev": true
},
+ "blueimp-md5": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.3.1.tgz",
+ "integrity": "sha1-mSpnN3M7naHt1kFVDcOsqy6c/Fo="
+ },
"bn.js": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz",
@@ -2734,6 +3085,23 @@
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
"dev": true
},
+ "bootstrap": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.0.tgz",
+ "integrity": "sha512-Z93QoXvodoVslA+PWNdk23Hze4RBYIkpb5h8I2HY2Tu2h7A0LpAgLcyrhrSUyo2/Oxm2l1fRZPs1e5hnxnliXA=="
+ },
+ "bootstrap-vue": {
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.15.0.tgz",
+ "integrity": "sha512-ncxWkDG0mKFVot314wWKJELi+ESO7k6ngV//qvJFs9iVzlFI8Hx3rBVbpcPW2vrJ+0vitH8N2SOwn4fdQ3frMQ==",
+ "requires": {
+ "@nuxt/opencollective": "^0.3.0",
+ "bootstrap": ">=4.5.0 <5.0.0",
+ "popper.js": "^1.16.1",
+ "portal-vue": "^2.1.7",
+ "vue-functional-data-merge": "^3.1.0"
+ }
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -3114,6 +3482,24 @@
"integrity": "sha512-WCMml9ivU60+8rEJgELlFp1gxFcEGxwYleE3bziHEDeqsqAWGHdimB7beBFGjLzVNgPGyDsfgXLQEYMpmIFnVQ==",
"dev": true
},
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ }
+ }
+ },
"caniuse-api": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
@@ -3145,14 +3531,12 @@
"dev": true
},
"chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
"chardet": {
@@ -3161,6 +3545,47 @@
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
+ "chart.js": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.3.tgz",
+ "integrity": "sha512-+2jlOobSk52c1VU6fzkh3UwqHMdSlgH1xFv9FKMqHiNCpXsGPQa/+81AFa+i3jZ253Mq9aAycPwDjnn1XbRNNw==",
+ "requires": {
+ "chartjs-color": "^2.1.0",
+ "moment": "^2.10.2"
+ }
+ },
+ "chartjs-color": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz",
+ "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==",
+ "requires": {
+ "chartjs-color-string": "^0.6.0",
+ "color-convert": "^1.9.3"
+ },
+ "dependencies": {
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ }
+ }
+ },
+ "chartjs-color-string": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz",
+ "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==",
+ "requires": {
+ "color-name": "^1.0.0"
+ }
+ },
"check-types": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz",
@@ -3323,15 +3748,6 @@
"yargs": "^15.0.0"
},
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
"chalk": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
@@ -3341,36 +3757,6 @@
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
}
}
},
@@ -3386,6 +3772,16 @@
"integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
"dev": true
},
+ "clipboard": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz",
+ "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==",
+ "requires": {
+ "good-listener": "^1.2.2",
+ "select": "^1.1.2",
+ "tiny-emitter": "^2.0.0"
+ }
+ },
"clipboardy": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz",
@@ -3425,6 +3821,17 @@
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
"dev": true
},
+ "clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ }
+ },
"coa": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
@@ -3434,8 +3841,66 @@
"@types/q": "^1.5.1",
"chalk": "^2.4.1",
"q": "^1.1.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
}
},
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
"collection-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
@@ -3454,22 +3919,37 @@
"requires": {
"color-convert": "^1.9.1",
"color-string": "^1.5.4"
+ },
+ "dependencies": {
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ }
}
},
"color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"requires": {
- "color-name": "1.1.3"
+ "color-name": "~1.1.4"
}
},
"color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"color-string": {
"version": "1.5.4",
@@ -3491,7 +3971,6 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
@@ -3502,6 +3981,12 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
+ "common-tags": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz",
+ "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==",
+ "dev": true
+ },
"commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
@@ -3511,8 +3996,7 @@
"component-emitter": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
},
"compressible": {
"version": "2.0.18",
@@ -3585,12 +4069,23 @@
"integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
"dev": true
},
+ "consola": {
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.0.tgz",
+ "integrity": "sha512-vlcSGgdYS26mPf7qNi+dCisbhiyDnrN1zaRbw3CSuc2wGOMEGGPsp46PdRG5gqXwgtJfjxDkxRNAgRPr1B77vQ=="
+ },
"console-browserify": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
"integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
"dev": true
},
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+ "dev": true
+ },
"consolidate": {
"version": "0.15.1",
"resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz",
@@ -3642,6 +4137,11 @@
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
"dev": true
},
+ "cookiejar": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
+ "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA=="
+ },
"copy-concurrently": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
@@ -3846,6 +4346,15 @@
"sha.js": "^2.4.8"
}
},
+ "create-react-class": {
+ "version": "15.7.0",
+ "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz",
+ "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==",
+ "requires": {
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ }
+ },
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
@@ -3878,6 +4387,11 @@
"randomfill": "^1.0.3"
}
},
+ "crypto-js": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz",
+ "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q=="
+ },
"css-color-names": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
@@ -4087,6 +4601,15 @@
}
}
},
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
"cyclist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
@@ -4112,7 +4635,6 @@
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
"integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
- "dev": true,
"requires": {
"ms": "2.1.2"
}
@@ -4376,7 +4898,17 @@
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "delegate": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
"dev": true
},
"depd": {
@@ -4478,6 +5010,14 @@
"utila": "~0.4"
}
},
+ "dom-helpers": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz",
+ "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==",
+ "requires": {
+ "@babel/runtime": "^7.1.2"
+ }
+ },
"dom-serializer": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
@@ -4534,6 +5074,14 @@
"dev": true,
"requires": {
"is-obj": "^2.0.0"
+ },
+ "dependencies": {
+ "is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true
+ }
}
},
"dotenv": {
@@ -4641,6 +5189,24 @@
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
"dev": true
},
+ "encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "requires": {
+ "iconv-lite": "^0.6.2"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
+ "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ }
+ }
+ }
+ },
"end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -4673,6 +5239,23 @@
}
}
},
+ "enquirer": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
+ "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^4.1.1"
+ },
+ "dependencies": {
+ "ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+ "dev": true
+ }
+ }
+ },
"entities": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
@@ -4742,6 +5325,11 @@
"is-symbol": "^1.0.2"
}
},
+ "es6-promise": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
+ "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
+ },
"escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -4761,22 +5349,24 @@
"dev": true
},
"eslint": {
- "version": "6.8.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
- "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.12.1.tgz",
+ "integrity": "sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
+ "@eslint/eslintrc": "^0.2.1",
"ajv": "^6.10.0",
- "chalk": "^2.1.0",
- "cross-spawn": "^6.0.5",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
"debug": "^4.0.1",
"doctrine": "^3.0.0",
- "eslint-scope": "^5.0.0",
- "eslint-utils": "^1.4.3",
- "eslint-visitor-keys": "^1.1.0",
- "espree": "^6.1.2",
- "esquery": "^1.0.1",
+ "enquirer": "^2.3.5",
+ "eslint-scope": "^5.1.1",
+ "eslint-utils": "^2.1.0",
+ "eslint-visitor-keys": "^2.0.0",
+ "espree": "^7.3.0",
+ "esquery": "^1.2.0",
"esutils": "^2.0.2",
"file-entry-cache": "^5.0.1",
"functional-red-black-tree": "^1.0.1",
@@ -4785,26 +5375,35 @@
"ignore": "^4.0.6",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
- "inquirer": "^7.0.0",
"is-glob": "^4.0.0",
"js-yaml": "^3.13.1",
"json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.3.0",
- "lodash": "^4.17.14",
+ "levn": "^0.4.1",
+ "lodash": "^4.17.19",
"minimatch": "^3.0.4",
- "mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
- "optionator": "^0.8.3",
+ "optionator": "^0.9.1",
"progress": "^2.0.0",
- "regexpp": "^2.0.1",
- "semver": "^6.1.2",
- "strip-ansi": "^5.2.0",
- "strip-json-comments": "^3.0.1",
+ "regexpp": "^3.1.0",
+ "semver": "^7.2.1",
+ "strip-ansi": "^6.0.0",
+ "strip-json-comments": "^3.1.0",
"table": "^5.2.3",
"text-table": "^0.2.0",
"v8-compile-cache": "^2.0.3"
},
"dependencies": {
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
"eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@@ -4815,6 +5414,12 @@
"estraverse": "^4.1.1"
}
},
+ "eslint-visitor-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz",
+ "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==",
+ "dev": true
+ },
"globals": {
"version": "12.4.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
@@ -4834,6 +5439,12 @@
"resolve-from": "^4.0.0"
}
},
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
"resolve-from": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
@@ -4841,25 +5452,40 @@
"dev": true
},
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
"dev": true
},
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"requires": {
- "ansi-regex": "^4.1.0"
+ "shebang-regex": "^3.0.0"
}
},
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
"type-fest": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
"integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
"dev": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
}
}
},
@@ -4898,9 +5524,9 @@
}
},
"eslint-utils": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
- "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
+ "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
"dev": true,
"requires": {
"eslint-visitor-keys": "^1.1.0"
@@ -4913,14 +5539,14 @@
"dev": true
},
"espree": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
- "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz",
+ "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==",
"dev": true,
"requires": {
- "acorn": "^7.1.1",
+ "acorn": "^7.4.0",
"acorn-jsx": "^5.2.0",
- "eslint-visitor-keys": "^1.1.0"
+ "eslint-visitor-keys": "^1.3.0"
},
"dependencies": {
"acorn": {
@@ -5316,6 +5942,11 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
+ "fast-safe-stringify": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
+ "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
+ },
"fast-text-encoding": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz",
@@ -5330,6 +5961,27 @@
"websocket-driver": ">=0.5.1"
}
},
+ "fbjs": {
+ "version": "0.8.17",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
+ "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
+ "requires": {
+ "core-js": "^1.0.0",
+ "isomorphic-fetch": "^2.1.1",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.18"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+ "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
+ }
+ }
+ },
"figgy-pudding": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
@@ -5467,6 +6119,11 @@
}
}
},
+ "flatpickr": {
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.3.tgz",
+ "integrity": "sha512-007VucCkqNOMMb9ggRLNuJowwaJcyOh4sKAFcdGfahfGc7JQbf94zSzjdBq/wVyHWUEs5o3+idhFZ0wbZMRmVQ=="
+ },
"flatted": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
@@ -5511,6 +6168,11 @@
"mime-types": "^2.1.12"
}
},
+ "formidable": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz",
+ "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q=="
+ },
"forwarded": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
@@ -5543,9 +6205,9 @@
}
},
"fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -5587,6 +6249,18 @@
"dev": true,
"optional": true
},
+ "fstream": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+ "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
+ }
+ },
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -5599,6 +6273,68 @@
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "gaze": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "dev": true,
+ "requires": {
+ "globule": "^1.0.0"
+ }
+ },
"gensync": {
"version": "1.0.0-beta.1",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
@@ -5611,6 +6347,18 @@
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
+ "get-own-enumerable-property-symbols": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
+ "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
+ "dev": true
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
"get-stream": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
@@ -5686,6 +6434,25 @@
"slash": "^2.0.0"
}
},
+ "globule": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz",
+ "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==",
+ "dev": true,
+ "requires": {
+ "glob": "~7.1.1",
+ "lodash": "~4.17.10",
+ "minimatch": "~3.0.2"
+ }
+ },
+ "good-listener": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
+ "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
+ "requires": {
+ "delegate": "^3.1.2"
+ }
+ },
"graceful-fs": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
@@ -5751,10 +6518,9 @@
}
},
"has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"has-symbols": {
"version": "1.0.1",
@@ -5762,6 +6528,12 @@
"integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
"dev": true
},
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+ "dev": true
+ },
"has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -6127,6 +6899,26 @@
"postcss": "^7.0.14"
}
},
+ "idtoken-verifier": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/idtoken-verifier/-/idtoken-verifier-2.1.0.tgz",
+ "integrity": "sha512-X0423UM4Rc5bFb39Ai0YHr35rcexlu4oakKdYzSGZxtoPy84P86hhAbzlpgbgomcLOFRgzgKRvhY7YjO5g8OPA==",
+ "requires": {
+ "base64-js": "^1.3.0",
+ "crypto-js": "^3.2.1",
+ "es6-promise": "^4.2.8",
+ "jsbn": "^1.1.0",
+ "unfetch": "^4.1.0",
+ "url-join": "^4.0.1"
+ },
+ "dependencies": {
+ "jsbn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+ "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA="
+ }
+ }
+ },
"ieee754": {
"version": "1.1.13",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
@@ -6145,6 +6937,11 @@
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
"dev": true
},
+ "immutable": {
+ "version": "3.8.2",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
+ "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM="
+ },
"import-cwd": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
@@ -6189,6 +6986,12 @@
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true
},
+ "in-publish": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
+ "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==",
+ "dev": true
+ },
"indent-string": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
@@ -6220,8 +7023,7 @@
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"inquirer": {
"version": "7.3.3",
@@ -6244,25 +7046,6 @@
"through": "^2.3.6"
},
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
"cli-cursor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
@@ -6272,27 +7055,6 @@
"restore-cursor": "^3.1.0"
}
},
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
"mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
@@ -6317,15 +7079,6 @@
"onetime": "^5.1.0",
"signal-exit": "^3.0.2"
}
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
}
}
},
@@ -6530,6 +7283,12 @@
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
"dev": true
},
+ "is-finite": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+ "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
+ "dev": true
+ },
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -6572,9 +7331,9 @@
}
},
"is-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
- "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
"dev": true
},
"is-path-cwd": {
@@ -6625,6 +7384,12 @@
"has-symbols": "^1.0.1"
}
},
+ "is-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
+ "dev": true
+ },
"is-resolvable": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
@@ -6634,8 +7399,7 @@
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
},
"is-svg": {
"version": "3.0.0",
@@ -6661,6 +7425,12 @@
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
"is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -6691,6 +7461,26 @@
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true
},
+ "isomorphic-fetch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+ "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
+ "requires": {
+ "node-fetch": "^1.0.1",
+ "whatwg-fetch": ">=0.10.0"
+ },
+ "dependencies": {
+ "node-fetch": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+ "requires": {
+ "encoding": "^0.1.11",
+ "is-stream": "^1.0.1"
+ }
+ }
+ }
+ },
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
@@ -6711,25 +7501,19 @@
"requires": {
"merge-stream": "^2.0.0",
"supports-color": "^7.0.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
}
},
+ "js-base64": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+ "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
+ "dev": true
+ },
+ "js-cookie": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
+ "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ=="
+ },
"js-message": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz",
@@ -6748,8 +7532,7 @@
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"js-yaml": {
"version": "3.14.0",
@@ -6797,6 +7580,15 @@
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "dev": true,
+ "requires": {
+ "jsonify": "~0.0.0"
+ }
+ },
"json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
@@ -6833,6 +7625,35 @@
"graceful-fs": "^4.1.6"
}
},
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "jsonp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz",
+ "integrity": "sha1-pltPoPEL2nGaBUQep7lMVfPhW64=",
+ "requires": {
+ "debug": "^2.1.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -6845,6 +7666,11 @@
"verror": "1.10.0"
}
},
+ "jwt-decode": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.0.0.tgz",
+ "integrity": "sha512-RBQv2MTm3FNKQkdzhEyQwh5MbdNgMa+FyIJIK5RMWEn6hRgRHr7j55cRxGhRe6vGJDElyi6f6u/yfkP7AoXddA=="
+ },
"killable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
@@ -6865,6 +7691,58 @@
"requires": {
"chalk": "^2.3.0",
"shell-quote": "^1.6.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
}
},
"launch-editor-middleware": {
@@ -6877,13 +7755,13 @@
}
},
"levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
"requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
}
},
"lines-and-columns": {
@@ -6892,6 +7770,36 @@
"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
"dev": true
},
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
"loader-fs-cache": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz",
@@ -6987,6 +7895,12 @@
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
"dev": true
},
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+ "dev": true
+ },
"lodash.defaultsdeep": {
"version": "4.6.1",
"resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
@@ -7011,6 +7925,25 @@
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
"dev": true
},
+ "lodash.template": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
+ "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "^3.0.0",
+ "lodash.templatesettings": "^4.0.0"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
+ "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "^3.0.0"
+ }
+ },
"lodash.transform": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz",
@@ -7030,6 +7963,58 @@
"dev": true,
"requires": {
"chalk": "^2.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
}
},
"loglevel": {
@@ -7038,6 +8023,24 @@
"integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==",
"dev": true
},
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ },
"lower-case": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
@@ -7069,6 +8072,12 @@
"integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
"dev": true
},
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
"map-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
@@ -7111,6 +8120,24 @@
"readable-stream": "^2.0.1"
}
},
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
"merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -7149,8 +8176,7 @@
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
- "dev": true
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
},
"micromatch": {
"version": "3.1.10",
@@ -7194,20 +8220,17 @@
"mime": {
"version": "2.4.6",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
- "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==",
- "dev": true
+ "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA=="
},
"mime-db": {
"version": "1.44.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
- "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
- "dev": true
+ "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
},
"mime-types": {
"version": "2.1.27",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
"integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
- "dev": true,
"requires": {
"mime-db": "1.44.0"
}
@@ -7374,6 +8397,11 @@
"minimist": "^1.2.5"
}
},
+ "moment": {
+ "version": "2.29.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
+ "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
+ },
"move-concurrently": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
@@ -7391,8 +8419,7 @@
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"multicast-dns": {
"version": "6.2.3",
@@ -7427,6 +8454,12 @@
"thenify-all": "^1.0.0"
}
},
+ "nan": {
+ "version": "2.14.2",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
+ "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==",
+ "dev": true
+ },
"nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
@@ -7479,12 +8512,45 @@
"lower-case": "^1.1.1"
}
},
+ "node-fetch": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
+ },
"node-forge": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
"integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
"dev": true
},
+ "node-gyp": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
+ "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
+ "dev": true,
+ "requires": {
+ "fstream": "^1.0.0",
+ "glob": "^7.0.3",
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.0",
+ "nopt": "2 || 3",
+ "npmlog": "0 || 1 || 2 || 3 || 4",
+ "osenv": "0",
+ "request": "^2.87.0",
+ "rimraf": "2",
+ "semver": "~5.3.0",
+ "tar": "^2.0.0",
+ "which": "1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "dev": true
+ }
+ }
+ },
"node-ipc": {
"version": "9.1.1",
"resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz",
@@ -7541,6 +8607,108 @@
"integrity": "sha512-Iec8O9166/x2HRMJyLLLWkd0sFFLrFNy+Xf+JQfSQsdBJzPcHpNl3JQ9gD4j+aJxmCa25jNsIbM4bmACtSbkSg==",
"dev": true
},
+ "node-sass": {
+ "version": "4.14.1",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz",
+ "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
+ "dev": true,
+ "requires": {
+ "async-foreach": "^0.1.3",
+ "chalk": "^1.1.1",
+ "cross-spawn": "^3.0.0",
+ "gaze": "^1.0.0",
+ "get-stdin": "^4.0.1",
+ "glob": "^7.0.3",
+ "in-publish": "^2.0.0",
+ "lodash": "^4.17.15",
+ "meow": "^3.7.0",
+ "mkdirp": "^0.5.1",
+ "nan": "^2.13.2",
+ "node-gyp": "^3.8.0",
+ "npmlog": "^4.0.0",
+ "request": "^2.88.0",
+ "sass-graph": "2.2.5",
+ "stdout-stream": "^1.4.0",
+ "true-case-path": "^1.0.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
+ "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "which": "^1.2.9"
+ }
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
"normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -7571,6 +8739,11 @@
"integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
"dev": true
},
+ "nouislider": {
+ "version": "14.6.0",
+ "resolved": "https://registry.npmjs.org/nouislider/-/nouislider-14.6.0.tgz",
+ "integrity": "sha512-KY0jH2pU4G/55wpoS5Ynyrc5xpOMZ10/Xr51sMYG/JxmYoPJGy3fG8mOMio0MJXerKp5Go3elwcODk3lX6mFMQ=="
+ },
"npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -7580,6 +8753,18 @@
"path-key": "^2.0.0"
}
},
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "dev": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
"nth-check": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
@@ -7595,6 +8780,12 @@
"integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
"dev": true
},
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
@@ -7604,8 +8795,7 @@
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"object-copy": {
"version": "0.1.0",
@@ -7824,17 +9014,17 @@
}
},
"optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
+ "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
"dev": true,
"requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.3"
}
},
"ora": {
@@ -7851,6 +9041,47 @@
"wcwidth": "^1.0.1"
},
"dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
@@ -7859,6 +9090,15 @@
"requires": {
"ansi-regex": "^4.1.0"
}
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
}
}
},
@@ -7877,12 +9117,28 @@
"integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
"dev": true
},
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true
},
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
"p-finally": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
@@ -8026,6 +9282,11 @@
"integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
"dev": true
},
+ "password-sheriff": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/password-sheriff/-/password-sheriff-1.1.0.tgz",
+ "integrity": "sha1-/bPD2EWgo8kt5CKyrZNGzginFBM="
+ },
"path-browserify": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
@@ -8156,6 +9417,16 @@
"ts-pnp": "^1.1.6"
}
},
+ "popper.js": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
+ "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
+ },
+ "portal-vue": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/portal-vue/-/portal-vue-2.1.7.tgz",
+ "integrity": "sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g=="
+ },
"portfinder": {
"version": "1.0.28",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
@@ -8195,6 +9466,58 @@
"supports-color": "^6.1.0"
},
"dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -8770,9 +10093,9 @@
"dev": true
},
"prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true
},
"prepend-http": {
@@ -8788,6 +10111,12 @@
"dev": true,
"optional": true
},
+ "pretty-bytes": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.4.1.tgz",
+ "integrity": "sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA==",
+ "dev": true
+ },
"pretty-error": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz",
@@ -8816,6 +10145,14 @@
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true
},
+ "promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "requires": {
+ "asap": "~2.0.3"
+ }
+ },
"promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
@@ -8827,6 +10164,16 @@
"resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.0.tgz",
"integrity": "sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g=="
},
+ "prop-types": {
+ "version": "15.7.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
+ "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
+ "requires": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.8.1"
+ }
+ },
"proxy-addr": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
@@ -8993,6 +10340,50 @@
"unpipe": "1.0.0"
}
},
+ "react": {
+ "version": "15.7.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-15.7.0.tgz",
+ "integrity": "sha512-5/MMRYmpmM0sMTHGLossnJCrmXQIiJilD6y3YN3TzAwGFj6zdnMtFv6xmi65PHKRV+pehIHpT7oy67Sr6s9AHA==",
+ "requires": {
+ "create-react-class": "^15.6.0",
+ "fbjs": "^0.8.9",
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.0",
+ "prop-types": "^15.5.10"
+ }
+ },
+ "react-dom": {
+ "version": "15.7.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.7.0.tgz",
+ "integrity": "sha512-mpjXqC2t1FuYsILOLCj0kg6pbg460byZkVA/80VtDmKU/pYmoTdHOtaMcTRIDiyXLz4sIur0cQ04nOC6iGndJg==",
+ "requires": {
+ "fbjs": "^0.8.9",
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.0",
+ "prop-types": "^15.5.10"
+ }
+ },
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
+ "react-lifecycles-compat": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
+ },
+ "react-transition-group": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz",
+ "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==",
+ "requires": {
+ "dom-helpers": "^3.4.0",
+ "loose-envify": "^1.4.0",
+ "prop-types": "^15.6.2",
+ "react-lifecycles-compat": "^3.0.4"
+ }
+ },
"read-pkg": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -9005,6 +10396,65 @@
"type-fest": "^0.6.0"
}
},
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ }
+ }
+ }
+ },
"readable-stream": {
"version": "2.3.7",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
@@ -9030,6 +10480,36 @@
"picomatch": "^2.2.1"
}
},
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ },
+ "dependencies": {
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ }
+ }
+ },
"regenerate": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz",
@@ -9048,8 +10528,7 @@
"regenerator-runtime": {
"version": "0.13.7",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
- "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
- "dev": true
+ "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
},
"regenerator-transform": {
"version": "0.14.5",
@@ -9102,9 +10581,9 @@
}
},
"regexpp": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
- "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
+ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==",
"dev": true
},
"regexpu-core": {
@@ -9121,6 +10600,11 @@
"unicode-match-property-value-ecmascript": "^1.2.0"
}
},
+ "register-service-worker": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/register-service-worker/-/register-service-worker-1.7.1.tgz",
+ "integrity": "sha512-IdTfUZ4u8iJL8o1w8es8l6UMGPmkwHolUdT+UmM1UypC80IB4KbpuIlvwWVj8UDS7eJwkEYRcKRgfRX+oTmJsw=="
+ },
"regjsgen": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz",
@@ -9226,6 +10710,15 @@
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
"dev": true
},
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
"request": {
"version": "2.88.2",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
@@ -9383,8 +10876,7 @@
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safe-regex": {
"version": "1.1.0",
@@ -9398,8 +10890,154 @@
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "sass-graph": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
+ "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.0",
+ "lodash": "^4.0.0",
+ "scss-tokenizer": "^0.2.3",
+ "yargs": "^13.3.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "yargs": {
+ "version": "13.3.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "sass-loader": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz",
+ "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==",
+ "dev": true,
+ "requires": {
+ "clone-deep": "^4.0.1",
+ "loader-utils": "^1.2.3",
+ "neo-async": "^2.6.1",
+ "schema-utils": "^2.6.1",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
},
"sax": {
"version": "1.2.4",
@@ -9418,6 +11056,32 @@
"ajv-keywords": "^3.5.2"
}
},
+ "scss-tokenizer": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+ "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+ "dev": true,
+ "requires": {
+ "js-base64": "^2.1.8",
+ "source-map": "^0.4.2"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true,
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
+ "select": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
+ "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
+ },
"select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
@@ -9600,8 +11264,7 @@
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
- "dev": true
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
},
"setprototypeof": {
"version": "1.1.1",
@@ -9619,6 +11282,15 @@
"safe-buffer": "^5.0.1"
}
},
+ "shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.2"
+ }
+ },
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -9680,6 +11352,30 @@
"is-fullwidth-code-point": "^2.0.0"
},
"dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
"is-fullwidth-code-point": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
@@ -10065,6 +11761,15 @@
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
"dev": true
},
+ "stdout-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
+ "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.1"
+ }
+ },
"stream-browserify": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
@@ -10145,11 +11850,21 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
"requires": {
"safe-buffer": "~5.1.0"
}
},
+ "stringify-object": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
+ "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
+ "dev": true,
+ "requires": {
+ "get-own-enumerable-property-symbols": "^3.0.0",
+ "is-obj": "^1.0.1",
+ "is-regexp": "^1.0.0"
+ }
+ },
"strip-ansi": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
@@ -10167,6 +11882,25 @@
}
}
},
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "^0.2.0"
+ }
+ },
+ "strip-comments": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz",
+ "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==",
+ "dev": true,
+ "requires": {
+ "babel-extract-comments": "^1.0.0",
+ "babel-plugin-transform-object-rest-spread": "^6.26.0"
+ }
+ },
"strip-eof": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
@@ -10215,13 +11949,62 @@
}
}
},
+ "superagent": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.3.1.tgz",
+ "integrity": "sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==",
+ "requires": {
+ "component-emitter": "^1.3.0",
+ "cookiejar": "^2.1.2",
+ "debug": "^4.1.1",
+ "fast-safe-stringify": "^2.0.7",
+ "form-data": "^3.0.0",
+ "formidable": "^1.2.2",
+ "methods": "^1.1.2",
+ "mime": "^2.4.6",
+ "qs": "^6.9.4",
+ "readable-stream": "^3.6.0",
+ "semver": "^7.3.2"
+ },
+ "dependencies": {
+ "form-data": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz",
+ "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "qs": {
+ "version": "6.9.4",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
+ "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ=="
+ },
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "semver": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ=="
+ }
+ }
+ },
"supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "^4.0.0"
}
},
"svg-tags": {
@@ -10249,6 +12032,58 @@
"stable": "^0.1.8",
"unquote": "~1.1.1",
"util.promisify": "~1.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
}
},
"table": {
@@ -10303,6 +12138,17 @@
"integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
"dev": true
},
+ "tar": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
+ "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
+ "dev": true,
+ "requires": {
+ "block-stream": "*",
+ "fstream": "^1.0.12",
+ "inherits": "2"
+ }
+ },
"terser": {
"version": "4.8.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
@@ -10430,6 +12276,11 @@
"integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
"dev": true
},
+ "tiny-emitter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
+ },
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -10515,6 +12366,26 @@
"punycode": "^2.1.1"
}
},
+ "trim": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
+ "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0="
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ },
+ "true-case-path": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
+ "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.2"
+ }
+ },
"tryer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",
@@ -10555,12 +12426,12 @@
"dev": true
},
"type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
"requires": {
- "prelude-ls": "~1.1.2"
+ "prelude-ls": "^1.2.1"
}
},
"type-fest": {
@@ -10585,6 +12456,11 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "ua-parser-js": {
+ "version": "0.7.22",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz",
+ "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q=="
+ },
"uglify-js": {
"version": "3.4.10",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz",
@@ -10787,6 +12663,11 @@
}
}
},
+ "url-join": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
+ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA=="
+ },
"url-loader": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz",
@@ -10834,8 +12715,7 @@
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"util.promisify": {
"version": "1.0.1",
@@ -10904,6 +12784,11 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "validator": {
+ "version": "13.1.17",
+ "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.17.tgz",
+ "integrity": "sha512-zL5QBoemJ3jYFb2/j38y7ljhwYGXVLUp8H6W1nVxadnAOvUOytec+L7BHh1oBQ82/TzWXHd+GSaxUWp4lROkLg=="
+ },
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -10934,9 +12819,22 @@
"dev": true
},
"vue": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz",
- "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg=="
+ "version": "2.6.11",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz",
+ "integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ=="
+ },
+ "vue-chartjs": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-3.5.0.tgz",
+ "integrity": "sha512-yWNhG3B6g6lvYqNInP0WaDWNZG/SNb6XnltkjR0wYC5pmLm6jvdiotj8er7Mui8qkJGfLZe6ULjrZdHWjegAUg=="
+ },
+ "vue-clipboard2": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/vue-clipboard2/-/vue-clipboard2-0.3.1.tgz",
+ "integrity": "sha512-H5S/agEDj0kXjUb5GP2c0hCzIXWRBygaWLN3NEFsaI9I3uWin778SFEMt8QRXiPG+7anyjqWiw2lqcxWUSfkYg==",
+ "requires": {
+ "clipboard": "^2.0.0"
+ }
},
"vue-eslint-parser": {
"version": "7.1.1",
@@ -10952,6 +12850,12 @@
"lodash": "^4.17.15"
},
"dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true
+ },
"eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@@ -10961,9 +12865,33 @@
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
}
+ },
+ "espree": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
+ "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.1",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.1.0"
+ }
}
}
},
+ "vue-flatpickr-component": {
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/vue-flatpickr-component/-/vue-flatpickr-component-8.1.5.tgz",
+ "integrity": "sha512-whrR+WM7fWyHW+1ZxCx7uVSuOlTeZXEMzhsgcILXGxIzQxr5uX5RlS5amLXdGGSSVf+zukrb6MvYit/uIkhk3Q==",
+ "requires": {
+ "flatpickr": "^4.6.1"
+ }
+ },
+ "vue-functional-data-merge": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz",
+ "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA=="
+ },
"vue-hot-reload-api": {
"version": "2.3.4",
"resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",
@@ -11003,51 +12931,6 @@
"loader-utils": "^2.0.0"
},
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "optional": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
- "dev": true,
- "optional": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "optional": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "optional": true
- },
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
@@ -11059,23 +12942,13 @@
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "optional": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
}
}
},
"vue-router": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.4.8.tgz",
- "integrity": "sha512-3BsR84AqarcmweXjItxw3jwQsiYNssYg090yi4rlzTnCJxmHtkyCvhNz9Z7qRSOkmiV485KkUCReTp5AjNY4wg=="
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz",
+ "integrity": "sha512-SdKRBeoXUjaZ9R/8AyxsdTqkOfMcI5tWxPZOUX5Ie1BTL5rPSZ0O++pbiZCeYeythiZIdLEfkDiQPKIaWk5hDg=="
},
"vue-style-loader": {
"version": "4.1.2",
@@ -11096,9 +12969,9 @@
}
},
"vue-template-compiler": {
- "version": "2.6.12",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz",
- "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==",
+ "version": "2.6.11",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz",
+ "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==",
"dev": true,
"requires": {
"de-indent": "^1.0.2",
@@ -11111,6 +12984,11 @@
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
"dev": true
},
+ "vue2-transitions": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/vue2-transitions/-/vue2-transitions-0.3.0.tgz",
+ "integrity": "sha512-m1ad8K8kufqiEhj5gXHkkqOioI5sW0FaMbRiO0Tv2WFfGbO2eIKrfkFiO3HPQtMJboimaLCN4p/zL81clLbG4w=="
+ },
"watchpack": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz",
@@ -11189,7 +13067,10 @@
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
"dev": true,
- "optional": true
+ "optional": true,
+ "requires": {
+ "nan": "^2.12.1"
+ }
},
"glob-parent": {
"version": "3.1.0",
@@ -11326,6 +13207,56 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
}
}
},
@@ -11399,6 +13330,15 @@
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
"anymatch": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
@@ -11480,6 +13420,21 @@
}
}
},
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
"emoji-regex": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
@@ -11491,7 +13446,10 @@
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
"dev": true,
- "optional": true
+ "optional": true,
+ "requires": {
+ "nan": "^2.12.1"
+ }
},
"glob-parent": {
"version": "3.1.0",
@@ -11514,6 +13472,12 @@
}
}
},
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
"is-absolute-url": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
@@ -11719,6 +13683,11 @@
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
"dev": true
},
+ "whatwg-fetch": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz",
+ "integrity": "sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ=="
+ },
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
@@ -11734,12 +13703,224 @@
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
},
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "winchan": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/winchan/-/winchan-0.2.2.tgz",
+ "integrity": "sha512-pvN+IFAbRP74n/6mc6phNyCH8oVkzXsto4KCHPJ2AScniAnA1AmeLI03I2BzjePpaClGSI4GUMowzsD3qz5PRQ=="
+ },
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"dev": true
},
+ "workbox-background-sync": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz",
+ "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-broadcast-update": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz",
+ "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-build": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz",
+ "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.3.4",
+ "@hapi/joi": "^15.0.0",
+ "common-tags": "^1.8.0",
+ "fs-extra": "^4.0.2",
+ "glob": "^7.1.3",
+ "lodash.template": "^4.4.0",
+ "pretty-bytes": "^5.1.0",
+ "stringify-object": "^3.3.0",
+ "strip-comments": "^1.0.2",
+ "workbox-background-sync": "^4.3.1",
+ "workbox-broadcast-update": "^4.3.1",
+ "workbox-cacheable-response": "^4.3.1",
+ "workbox-core": "^4.3.1",
+ "workbox-expiration": "^4.3.1",
+ "workbox-google-analytics": "^4.3.1",
+ "workbox-navigation-preload": "^4.3.1",
+ "workbox-precaching": "^4.3.1",
+ "workbox-range-requests": "^4.3.1",
+ "workbox-routing": "^4.3.1",
+ "workbox-strategies": "^4.3.1",
+ "workbox-streams": "^4.3.1",
+ "workbox-sw": "^4.3.1",
+ "workbox-window": "^4.3.1"
+ }
+ },
+ "workbox-cacheable-response": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz",
+ "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-core": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz",
+ "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==",
+ "dev": true
+ },
+ "workbox-expiration": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz",
+ "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-google-analytics": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz",
+ "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==",
+ "dev": true,
+ "requires": {
+ "workbox-background-sync": "^4.3.1",
+ "workbox-core": "^4.3.1",
+ "workbox-routing": "^4.3.1",
+ "workbox-strategies": "^4.3.1"
+ }
+ },
+ "workbox-navigation-preload": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz",
+ "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-precaching": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz",
+ "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-range-requests": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz",
+ "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-routing": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz",
+ "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-strategies": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz",
+ "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-streams": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz",
+ "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
+ "workbox-sw": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz",
+ "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==",
+ "dev": true
+ },
+ "workbox-webpack-plugin": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz",
+ "integrity": "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.0.0",
+ "json-stable-stringify": "^1.0.1",
+ "workbox-build": "^4.3.1"
+ }
+ },
+ "workbox-window": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz",
+ "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==",
+ "dev": true,
+ "requires": {
+ "workbox-core": "^4.3.1"
+ }
+ },
"worker-farm": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
@@ -11758,32 +13939,6 @@
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- }
}
},
"wrappy": {
diff --git a/web/package.json b/web/package.json
index 68e35e3..677340e 100644
--- a/web/package.json
+++ b/web/package.json
@@ -1,28 +1,44 @@
{
- "name": "web",
+ "name": "vue-argon-dashboard",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
+ "dev": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"@auth0/auth0-spa-js": "^1.13.0",
+ "auth0-js": "^9.14.0",
+ "auth0-lock": "^11.27.1",
"axios": "^0.21.0",
- "core-js": "^3.6.5",
- "vue": "^2.6.11",
- "vue-router": "^3.2.0"
+ "bootstrap": "4.5.0",
+ "bootstrap-vue": "2.15.0",
+ "chart.js": "2.9.3",
+ "core-js": "3.6.5",
+ "flatpickr": "4.6.3",
+ "jwt-decode": "^3.0.0",
+ "nouislider": "14.6.0",
+ "register-service-worker": "1.7.1",
+ "vue": "2.6.11",
+ "vue-chartjs": "3.5.0",
+ "vue-clipboard2": "0.3.1",
+ "vue-flatpickr-component": "8.1.5",
+ "vue-router": "3.3.4",
+ "vue2-transitions": "0.3.0"
},
"devDependencies": {
- "@vue/cli-plugin-babel": "~4.5.0",
- "@vue/cli-plugin-eslint": "~4.5.0",
- "@vue/cli-plugin-router": "^4.5.8",
- "@vue/cli-service": "~4.5.0",
+ "@vue/cli-plugin-babel": "^4.4.6",
+ "@vue/cli-plugin-eslint": "^4.4.6",
+ "@vue/cli-plugin-pwa": "^4.4.6",
+ "@vue/cli-service": "^4.4.6",
"babel-eslint": "^10.1.0",
- "eslint": "^6.7.2",
+ "eslint": "^7.3.1",
"eslint-plugin-vue": "^6.2.2",
- "vue-template-compiler": "^2.6.11"
+ "node-sass": "^4.14.1",
+ "sass-loader": "^8.0.2",
+ "vue-template-compiler": "2.6.11"
},
"eslintConfig": {
"root": true,
@@ -33,14 +49,19 @@
"plugin:vue/essential",
"eslint:recommended"
],
+ "rules": {},
"parserOptions": {
"parser": "babel-eslint"
- },
- "rules": {}
+ }
+ },
+ "postcss": {
+ "plugins": {
+ "autoprefixer": {}
+ }
},
"browserslist": [
"> 1%",
"last 2 versions",
- "not dead"
+ "not ie <= 8"
]
}
diff --git a/web/public/favicon.ico b/web/public/favicon.ico
index df36fcf..c7b9a43 100644
--- a/web/public/favicon.ico
+++ b/web/public/favicon.ico
Binary files differ
diff --git a/web/public/img/brand/favicon.png b/web/public/img/brand/favicon.png
new file mode 100755
index 0000000..53997a0
--- /dev/null
+++ b/web/public/img/brand/favicon.png
Binary files differ
diff --git a/web/public/img/brand/green.png b/web/public/img/brand/green.png
new file mode 100755
index 0000000..a24bb01
--- /dev/null
+++ b/web/public/img/brand/green.png
Binary files differ
diff --git a/web/public/img/brand/white.png b/web/public/img/brand/white.png
new file mode 100755
index 0000000..90e72c8
--- /dev/null
+++ b/web/public/img/brand/white.png
Binary files differ
diff --git a/web/public/img/icons/android-chrome-192x192.png b/web/public/img/icons/android-chrome-192x192.png
new file mode 100644
index 0000000..b02aa64
--- /dev/null
+++ b/web/public/img/icons/android-chrome-192x192.png
Binary files differ
diff --git a/web/public/img/icons/android-chrome-512x512.png b/web/public/img/icons/android-chrome-512x512.png
new file mode 100644
index 0000000..06088b0
--- /dev/null
+++ b/web/public/img/icons/android-chrome-512x512.png
Binary files differ
diff --git a/web/public/img/icons/apple-touch-icon-120x120.png b/web/public/img/icons/apple-touch-icon-120x120.png
new file mode 100644
index 0000000..1427cf6
--- /dev/null
+++ b/web/public/img/icons/apple-touch-icon-120x120.png
Binary files differ
diff --git a/web/public/img/icons/apple-touch-icon-152x152.png b/web/public/img/icons/apple-touch-icon-152x152.png
new file mode 100644
index 0000000..f24d454
--- /dev/null
+++ b/web/public/img/icons/apple-touch-icon-152x152.png
Binary files differ
diff --git a/web/public/img/icons/apple-touch-icon-180x180.png b/web/public/img/icons/apple-touch-icon-180x180.png
new file mode 100644
index 0000000..404e192
--- /dev/null
+++ b/web/public/img/icons/apple-touch-icon-180x180.png
Binary files differ
diff --git a/web/public/img/icons/apple-touch-icon-60x60.png b/web/public/img/icons/apple-touch-icon-60x60.png
new file mode 100644
index 0000000..cf10a56
--- /dev/null
+++ b/web/public/img/icons/apple-touch-icon-60x60.png
Binary files differ
diff --git a/web/public/img/icons/apple-touch-icon-76x76.png b/web/public/img/icons/apple-touch-icon-76x76.png
new file mode 100644
index 0000000..c500769
--- /dev/null
+++ b/web/public/img/icons/apple-touch-icon-76x76.png
Binary files differ
diff --git a/web/public/img/icons/apple-touch-icon.png b/web/public/img/icons/apple-touch-icon.png
new file mode 100644
index 0000000..03c0c5d
--- /dev/null
+++ b/web/public/img/icons/apple-touch-icon.png
Binary files differ
diff --git a/web/public/img/icons/common/github.svg b/web/public/img/icons/common/github.svg
new file mode 100755
index 0000000..2227d5e
--- /dev/null
+++ b/web/public/img/icons/common/github.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
+ <title>UI/icons/dark/github</title>
+ <desc>Created with Sketch.</desc>
+ <defs/>
+ <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="UI/icons/dark/github" fill="#182359">
+ <path d="M17.9985267,2 C9.16436969,2 2,9.16338746 2,18.0004911 C2,25.0695847 6.58405721,31.0660855 12.9420179,33.1818042 C13.7425335,33.3291384 14.0342552,32.8350778 14.0342552,32.4107554 C14.0342552,32.0306332 14.020504,31.0248319 14.0126462,29.6899843 C9.56217195,30.6564965 8.62316216,27.5447988 8.62316216,27.5447988 C7.89533135,25.696246 6.84631204,25.2041499 6.84631204,25.2041499 C5.3935971,24.2120998 6.95632156,24.2317444 6.95632156,24.2317444 C8.56226404,24.3447006 9.40697996,25.8809049 9.40697996,25.8809049 C10.834157,28.3256699 13.1522146,27.6194481 14.063722,27.2098591 C14.2090917,26.1765554 14.6226097,25.4713159 15.0793456,25.0715492 C11.5266276,24.6678535 7.7912152,23.294699 7.7912152,17.163633 C7.7912152,15.417232 8.41492986,13.9880905 9.43841125,12.8703152 C9.27339697,12.4656374 8.72433162,10.8380859 9.5955677,8.63593112 C9.5955677,8.63593112 10.9382731,8.20571534 13.9949661,10.2762516 C15.27088,9.9206851 16.6401056,9.7438841 18.0004911,9.7370085 C19.3598944,9.7438841 20.7281378,9.9206851 22.0060161,10.2762516 C25.0607447,8.20571534 26.4014856,8.63593112 26.4014856,8.63593112 C27.2746861,10.8380859 26.7256208,12.4656374 26.5615888,12.8703152 C27.5870346,13.9880905 28.2058381,15.417232 28.2058381,17.163633 C28.2058381,23.3104147 24.4645324,24.6629424 20.9010099,25.0587802 C21.4746309,25.5528408 21.9863716,26.5291752 21.9863716,28.0211793 C21.9863716,30.1604715 21.966727,31.8862457 21.966727,32.4107554 C21.966727,32.8390067 22.255502,33.3369962 23.0668222,33.180822 C29.4198717,31.0601921 34,25.0676202 34,18.0004911 C34,9.16338746 26.8356303,2 17.9985267,2" id="icons/icon-github"/>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/web/public/img/icons/common/google.svg b/web/public/img/icons/common/google.svg
new file mode 100755
index 0000000..999a208
--- /dev/null
+++ b/web/public/img/icons/common/google.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="36px" height="36px" viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 43.2 (39069) - http://www.bohemiancoding.com/sketch -->
+ <title>UI/icons/color/google</title>
+ <desc>Created with Sketch.</desc>
+ <defs/>
+ <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="UI/icons/color/google">
+ <g id="Group" transform="translate(2.000000, 2.000000)">
+ <path d="M32.4365525,16.6024012 C32.4365525,15.4515967 32.3313665,14.344128 32.1357206,13.2820585 L16.5492615,13.2820585 L16.5492615,19.5616128 L25.4557094,19.5616128 C25.0721312,21.5908257 23.9059692,23.3098098 22.1535707,24.4613022 L22.1535707,28.5341733 L27.5019274,28.5341733 C30.631561,25.7077204 32.4365525,21.5461142 32.4365525,16.6024012 L32.4365525,16.6024012 Z" id="Shape" fill="#4285F4"/>
+ <path d="M16.5492615,32.4674071 C21.0175621,32.4674071 24.7635856,31.0139403 27.5019274,28.5341733 L22.1535707,24.4613022 C20.6718508,25.4353244 18.7756982,26.0110706 16.5492615,26.0110706 C12.2387399,26.0110706 8.59088994,23.1557272 7.2893887,19.3181072 L1.76011213,19.3181072 L1.76011213,23.5244249 C4.48302664,28.8299569 10.0796222,32.4674071 16.5492615,32.4674071 L16.5492615,32.4674071 Z" id="Shape" fill="#34A853"/>
+ <path d="M7.2893887,19.3181072 C6.95840347,18.344085 6.77047118,17.3033395 6.77047118,16.2337035 C6.77047118,15.1640676 6.95840347,14.1233221 7.2893887,13.1492999 L7.2893887,8.94298219 L1.76011213,8.94298219 C0.639530783,11.1345322 0,13.6142992 0,16.2337035 C0,18.8531079 0.639530783,21.3328749 1.76011213,23.5244249 L7.2893887,19.3181072 L7.2893887,19.3181072 Z" id="Shape" fill="#FBBC05"/>
+ <path d="M16.5492615,6.4563365 C18.9790577,6.4563365 21.160615,7.27558824 22.8758478,8.88382548 L27.6225407,4.22764161 C24.755872,1.60892511 21.0098485,0 16.5492615,0 C10.0803235,0 4.48302664,3.63813805 1.76011213,8.94298219 L7.2893887,13.1492999 C8.59088994,9.31236774 12.2394411,6.4563365 16.5492615,6.4563365 Z" id="Shape" fill="#EA4335"/>
+ </g>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/web/public/img/icons/favicon-16x16.png b/web/public/img/icons/favicon-16x16.png
new file mode 100644
index 0000000..42af009
--- /dev/null
+++ b/web/public/img/icons/favicon-16x16.png
Binary files differ
diff --git a/web/public/img/icons/favicon-32x32.png b/web/public/img/icons/favicon-32x32.png
new file mode 100644
index 0000000..46ca04d
--- /dev/null
+++ b/web/public/img/icons/favicon-32x32.png
Binary files differ
diff --git a/web/public/img/icons/msapplication-icon-144x144.png b/web/public/img/icons/msapplication-icon-144x144.png
new file mode 100644
index 0000000..7808237
--- /dev/null
+++ b/web/public/img/icons/msapplication-icon-144x144.png
Binary files differ
diff --git a/web/public/img/icons/mstile-150x150.png b/web/public/img/icons/mstile-150x150.png
new file mode 100644
index 0000000..3b37a43
--- /dev/null
+++ b/web/public/img/icons/mstile-150x150.png
Binary files differ
diff --git a/web/public/img/icons/safari-pinned-tab.svg b/web/public/img/icons/safari-pinned-tab.svg
new file mode 100644
index 0000000..732afd8
--- /dev/null
+++ b/web/public/img/icons/safari-pinned-tab.svg
@@ -0,0 +1,149 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="16.000000pt" height="16.000000pt" viewBox="0 0 16.000000 16.000000"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.11, written by Peter Selinger 2001-2013
+</metadata>
+<g transform="translate(0.000000,16.000000) scale(0.000320,-0.000320)"
+fill="#000000" stroke="none">
+<path d="M18 46618 c45 -75 122 -207 122 -211 0 -2 25 -45 55 -95 30 -50 55
+-96 55 -102 0 -5 5 -10 10 -10 6 0 10 -4 10 -9 0 -5 73 -135 161 -288 89 -153
+173 -298 187 -323 14 -25 32 -57 41 -72 88 -149 187 -324 189 -335 2 -7 8 -13
+13 -13 5 0 9 -4 9 -10 0 -5 46 -89 103 -187 175 -302 490 -846 507 -876 8 -16
+20 -36 25 -45 28 -46 290 -498 339 -585 13 -23 74 -129 136 -236 61 -107 123
+-215 137 -240 14 -25 29 -50 33 -56 5 -5 23 -37 40 -70 18 -33 38 -67 44 -75
+11 -16 21 -33 63 -109 14 -25 29 -50 33 -56 4 -5 21 -35 38 -65 55 -100 261
+-455 269 -465 4 -5 14 -21 20 -35 15 -29 41 -75 103 -180 24 -41 52 -88 60
+-105 9 -16 57 -100 107 -185 112 -193 362 -626 380 -660 8 -14 23 -38 33 -55
+11 -16 23 -37 27 -45 4 -8 26 -46 48 -85 23 -38 53 -90 67 -115 46 -81 64
+-113 178 -310 62 -107 121 -210 132 -227 37 -67 56 -99 85 -148 16 -27 32 -57
+36 -65 4 -8 15 -27 25 -42 9 -15 53 -89 96 -165 44 -76 177 -307 296 -513 120
+-206 268 -463 330 -570 131 -227 117 -203 200 -348 36 -62 73 -125 82 -140 10
+-15 21 -34 25 -42 4 -8 20 -37 36 -65 17 -27 38 -65 48 -82 49 -85 64 -111 87
+-153 13 -25 28 -49 32 -55 4 -5 78 -134 165 -285 87 -151 166 -288 176 -305
+10 -16 26 -43 35 -59 9 -17 125 -217 257 -445 132 -229 253 -441 270 -471 17
+-30 45 -79 64 -108 18 -29 33 -54 33 -57 0 -2 20 -37 44 -77 24 -40 123 -212
+221 -383 97 -170 190 -330 205 -355 16 -25 39 -65 53 -90 13 -25 81 -144 152
+-265 70 -121 137 -238 150 -260 12 -22 37 -65 55 -95 18 -30 43 -73 55 -95 12
+-22 48 -85 80 -140 77 -132 163 -280 190 -330 13 -22 71 -123 130 -225 59
+-102 116 -199 126 -217 10 -17 29 -50 43 -72 15 -22 26 -43 26 -45 0 -2 27
+-50 60 -106 33 -56 60 -103 60 -105 0 -2 55 -98 90 -155 8 -14 182 -316 239
+-414 13 -22 45 -79 72 -124 27 -46 49 -86 49 -89 0 -2 14 -24 30 -48 16 -24
+30 -46 30 -49 0 -5 74 -135 100 -176 5 -8 24 -42 43 -75 50 -88 58 -101 262
+-455 104 -179 199 -345 213 -370 14 -25 28 -49 32 -55 4 -5 17 -26 28 -45 10
+-19 62 -109 114 -200 114 -197 133 -230 170 -295 16 -27 33 -57 38 -65 17 -28
+96 -165 103 -180 4 -8 16 -28 26 -45 10 -16 77 -131 148 -255 72 -124 181
+-313 243 -420 62 -107 121 -209 131 -227 35 -62 323 -560 392 -678 38 -66 83
+-145 100 -175 16 -30 33 -59 37 -65 4 -5 17 -27 29 -47 34 -61 56 -100 90
+-156 17 -29 31 -55 31 -57 0 -2 17 -32 39 -67 21 -35 134 -229 251 -433 117
+-203 235 -407 261 -451 27 -45 49 -85 49 -88 0 -4 8 -19 19 -34 15 -21 200
+-341 309 -533 10 -19 33 -58 51 -87 17 -29 31 -54 31 -56 0 -2 25 -44 55 -94
+30 -50 55 -95 55 -98 0 -4 6 -15 14 -23 7 -9 27 -41 43 -71 17 -30 170 -297
+342 -594 171 -296 311 -542 311 -547 0 -5 5 -9 10 -9 6 0 10 -4 10 -10 0 -5
+22 -47 49 -92 27 -46 58 -99 68 -118 24 -43 81 -140 93 -160 5 -8 66 -114 135
+-235 69 -121 130 -227 135 -235 12 -21 259 -447 283 -490 10 -19 28 -47 38
+-62 11 -14 19 -29 19 -32 0 -3 37 -69 83 -148 99 -170 305 -526 337 -583 13
+-22 31 -53 41 -70 11 -16 22 -37 26 -45 7 -14 82 -146 103 -180 14 -24 181
+-311 205 -355 13 -22 46 -80 75 -130 29 -49 64 -110 78 -135 14 -25 51 -88 82
+-140 31 -52 59 -102 63 -110 4 -8 18 -33 31 -55 205 -353 284 -489 309 -535
+17 -30 45 -78 62 -106 18 -28 36 -60 39 -72 4 -12 12 -22 17 -22 5 0 9 -4 9
+-10 0 -5 109 -197 241 -427 133 -230 250 -431 259 -448 51 -90 222 -385 280
+-485 37 -63 78 -135 92 -160 14 -25 67 -117 118 -205 51 -88 101 -175 111
+-193 34 -58 55 -95 149 -257 51 -88 101 -173 110 -190 9 -16 76 -131 147 -255
+72 -124 140 -241 151 -260 61 -108 281 -489 355 -615 38 -66 77 -133 87 -150
+35 -63 91 -161 100 -175 14 -23 99 -169 128 -220 54 -97 135 -235 142 -245 4
+-5 20 -32 35 -60 26 -48 238 -416 276 -480 10 -16 26 -46 37 -65 30 -53 382
+-661 403 -695 10 -16 22 -37 26 -45 4 -8 26 -48 50 -88 24 -41 43 -75 43 -77
+0 -2 22 -40 50 -85 27 -45 50 -84 50 -86 0 -3 38 -69 83 -147 84 -142 302
+-520 340 -587 10 -19 34 -60 52 -90 18 -30 44 -75 57 -100 14 -25 45 -79 70
+-120 25 -41 56 -96 70 -121 14 -25 77 -133 138 -240 62 -107 122 -210 132
+-229 25 -43 310 -535 337 -581 11 -19 26 -45 34 -59 17 -32 238 -414 266 -460
+11 -19 24 -41 28 -49 3 -7 75 -133 160 -278 84 -146 153 -269 153 -274 0 -5 5
+-9 10 -9 6 0 10 -4 10 -10 0 -5 82 -150 181 -322 182 -314 201 -346 240 -415
+12 -21 80 -139 152 -263 71 -124 141 -245 155 -270 14 -25 28 -49 32 -55 6 -8
+145 -248 220 -380 37 -66 209 -362 229 -395 11 -19 24 -42 28 -49 4 -8 67
+-118 140 -243 73 -125 133 -230 133 -233 0 -2 15 -28 33 -57 19 -29 47 -78 64
+-108 17 -30 53 -93 79 -139 53 -90 82 -141 157 -272 82 -142 115 -199 381
+-659 142 -245 268 -463 281 -485 12 -22 71 -125 132 -230 60 -104 172 -298
+248 -430 76 -132 146 -253 156 -270 11 -16 22 -36 26 -44 3 -8 30 -54 60 -103
+29 -49 53 -91 53 -93 0 -3 18 -34 40 -70 22 -36 40 -67 40 -69 0 -2 37 -66 81
+-142 45 -77 98 -168 119 -204 20 -36 47 -81 58 -100 12 -19 27 -47 33 -62 6
+-16 15 -28 20 -28 5 0 9 -4 9 -9 0 -6 63 -118 140 -251 77 -133 140 -243 140
+-245 0 -2 18 -33 41 -70 22 -37 49 -83 60 -101 10 -19 29 -51 40 -71 25 -45
+109 -189 126 -218 7 -11 17 -29 22 -40 6 -11 22 -38 35 -60 14 -22 37 -62 52
+-90 14 -27 35 -62 45 -77 11 -14 19 -29 19 -32 0 -3 18 -35 40 -71 22 -36 40
+-67 40 -69 0 -2 19 -35 42 -72 23 -38 55 -94 72 -124 26 -47 139 -244 171
+-298 6 -9 21 -36 34 -60 28 -48 37 -51 51 -19 6 12 19 36 29 52 10 17 27 46
+38 65 11 19 104 181 208 360 103 179 199 345 213 370 14 25 42 74 64 109 21
+34 38 65 38 67 0 2 18 33 40 69 22 36 40 67 40 69 0 3 177 310 199 346 16 26
+136 234 140 244 2 5 25 44 52 88 27 44 49 81 49 84 0 2 18 34 40 70 22 36 40
+67 40 69 0 2 20 36 43 77 35 58 169 289 297 513 9 17 50 86 90 155 40 69 86
+150 103 180 16 30 35 62 41 70 6 8 16 24 22 35 35 64 72 129 167 293 59 100
+116 199 127 220 11 20 30 53 41 72 43 72 1070 1850 1121 1940 14 25 65 113
+113 195 48 83 96 166 107 185 10 19 28 50 38 68 11 18 73 124 137 235 64 111
+175 303 246 427 71 124 173 299 225 390 52 91 116 202 143 248 27 45 49 85 49
+89 0 4 6 14 14 22 7 9 28 43 46 76 26 47 251 436 378 655 11 19 29 51 40 70
+11 19 101 176 201 348 99 172 181 317 181 323 0 5 5 9 10 9 6 0 10 5 10 11 0
+6 8 23 18 37 11 15 32 52 49 82 16 30 130 228 253 440 122 212 234 405 248
+430 13 25 39 70 57 100 39 65 69 117 130 225 25 44 50 87 55 95 12 19 78 134
+220 380 61 107 129 224 150 260 161 277 222 382 246 425 15 28 47 83 71 123
+24 41 43 78 43 83 0 5 4 9 8 9 4 0 13 12 19 28 7 15 23 45 36 67 66 110 277
+478 277 483 0 3 6 13 14 21 7 9 27 41 43 71 17 30 45 80 63 110 34 57 375 649
+394 685 6 11 16 27 22 35 6 8 26 42 44 75 18 33 41 74 51 90 10 17 24 41 32
+55 54 97 72 128 88 152 11 14 19 28 19 30 0 3 79 141 175 308 96 167 175 305
+175 308 0 3 6 13 14 21 7 9 26 39 41 66 33 60 276 483 338 587 24 40 46 80 50
+88 4 8 13 24 20 35 14 23 95 163 125 215 11 19 52 91 92 160 40 69 80 139 90
+155 9 17 103 179 207 360 105 182 200 346 211 365 103 181 463 802 489 845 7
+11 15 27 19 35 4 8 29 51 55 95 64 110 828 1433 848 1470 9 17 24 41 33 55 9
+14 29 48 45 77 15 28 52 93 82 145 30 51 62 107 71 123 17 30 231 398 400 690
+51 88 103 179 115 202 12 23 26 48 32 55 6 7 24 38 40 68 17 30 61 107 98 170
+37 63 84 144 103 180 19 36 41 72 48 81 8 8 14 18 14 21 0 4 27 51 59 106 32
+55 72 124 89 154 16 29 71 125 122 213 51 88 104 180 118 205 13 25 28 50 32
+55 4 6 17 26 28 45 11 19 45 80 77 135 31 55 66 116 77 135 11 19 88 152 171
+295 401 694 620 1072 650 1125 11 19 87 152 170 295 83 143 158 273 166 288 9
+16 21 36 26 45 6 9 31 52 55 96 25 43 54 94 66 115 11 20 95 164 186 321 91
+157 173 299 182 315 9 17 26 46 37 65 12 19 66 114 121 210 56 96 108 186 117
+200 8 14 24 40 34 59 24 45 383 664 412 713 5 9 17 29 26 45 15 28 120 210
+241 419 36 61 68 117 72 125 4 8 12 23 19 34 35 57 245 420 262 453 11 20 35
+61 53 90 17 29 32 54 32 56 0 3 28 51 62 108 33 57 70 119 80 138 10 19 23 42
+28 50 5 8 32 53 59 100 27 47 149 258 271 470 122 212 234 405 248 430 30 53
+62 108 80 135 6 11 15 27 19 35 4 8 85 150 181 315 96 165 187 323 202 350 31
+56 116 202 130 225 5 8 25 42 43 75 19 33 92 159 162 280 149 257 157 271 202
+350 19 33 38 67 43 75 9 14 228 392 275 475 12 22 55 96 95 165 40 69 80 139
+90 155 24 42 202 350 221 383 9 15 27 47 41 72 14 25 75 131 136 236 61 106
+121 210 134 232 99 172 271 470 279 482 5 8 23 40 40 70 18 30 81 141 142 245
+60 105 121 210 135 235 14 25 71 124 127 220 56 96 143 247 194 335 51 88 96
+167 102 175 14 24 180 311 204 355 23 43 340 590 356 615 5 8 50 87 101 175
+171 301 517 898 582 1008 25 43 46 81 46 83 0 2 12 23 27 47 14 23 40 67 56
+97 16 30 35 62 42 70 7 8 15 22 18 30 4 8 20 38 37 65 16 28 33 57 37 65 6 12
+111 196 143 250 5 8 55 95 112 193 57 98 113 195 126 215 12 20 27 46 32 57 6
+11 14 27 20 35 5 8 76 130 156 270 80 140 165 287 187 325 23 39 52 90 66 115
+13 25 30 52 37 61 8 8 14 18 14 21 0 4 41 77 92 165 50 87 175 302 276 478
+101 176 208 360 236 408 28 49 67 117 86 152 19 35 41 70 48 77 6 6 12 15 12
+19 0 7 124 224 167 291 12 21 23 40 23 42 0 2 21 40 46 83 26 43 55 92 64 109
+54 95 327 568 354 614 19 30 45 75 59 100 71 128 82 145 89 148 4 2 8 8 8 13
+0 5 42 82 94 172 311 538 496 858 518 897 14 25 40 70 58 100 18 30 42 71 53
+90 10 19 79 139 152 265 73 127 142 246 153 265 10 19 43 76 72 125 29 50 63
+108 75 130 65 116 80 140 87 143 4 2 8 8 8 12 0 8 114 212 140 250 6 8 14 24
+20 35 5 11 54 97 108 190 l100 170 -9611 3 c-5286 1 -9614 -1 -9618 -5 -5 -6
+-419 -719 -619 -1068 -89 -155 -267 -463 -323 -560 -38 -66 -81 -140 -95 -165
+-31 -56 -263 -457 -526 -910 -110 -190 -224 -388 -254 -440 -29 -52 -61 -109
+-71 -125 -23 -39 -243 -420 -268 -465 -11 -19 -204 -352 -428 -740 -224 -388
+-477 -826 -563 -975 -85 -148 -185 -322 -222 -385 -37 -63 -120 -207 -185
+-320 -65 -113 -177 -306 -248 -430 -72 -124 -172 -297 -222 -385 -51 -88 -142
+-245 -202 -350 -131 -226 -247 -427 -408 -705 -65 -113 -249 -432 -410 -710
+-160 -278 -388 -673 -506 -877 -118 -205 -216 -373 -219 -373 -3 0 -52 82
+-109 183 -58 100 -144 250 -192 332 -95 164 -402 696 -647 1120 -85 149 -228
+396 -317 550 -212 365 -982 1700 -1008 1745 -10 19 -43 76 -72 125 -29 50 -64
+110 -77 135 -14 25 -63 110 -110 190 -47 80 -96 165 -110 190 -14 25 -99 171
+-188 325 -89 154 -174 300 -188 325 -13 25 -64 113 -112 195 -48 83 -140 242
+-205 355 -65 113 -183 317 -263 454 -79 137 -152 264 -163 282 -50 89 -335
+583 -354 614 -12 19 -34 58 -50 85 -15 28 -129 226 -253 440 -124 215 -235
+408 -247 430 -12 22 -69 121 -127 220 -58 99 -226 389 -373 645 -148 256 -324
+561 -392 678 -67 117 -134 232 -147 255 -13 23 -33 59 -46 80 l-22 37 -9615 0
+-9615 0 20 -32z"/>
+</g>
+</svg>
diff --git a/web/public/img/theme/angular.jpg b/web/public/img/theme/angular.jpg
new file mode 100755
index 0000000..d971d0c
--- /dev/null
+++ b/web/public/img/theme/angular.jpg
Binary files differ
diff --git a/web/public/img/theme/bootstrap.jpg b/web/public/img/theme/bootstrap.jpg
new file mode 100755
index 0000000..775174f
--- /dev/null
+++ b/web/public/img/theme/bootstrap.jpg
Binary files differ
diff --git a/web/public/img/theme/profile-cover.jpg b/web/public/img/theme/profile-cover.jpg
new file mode 100755
index 0000000..bf4aa79
--- /dev/null
+++ b/web/public/img/theme/profile-cover.jpg
Binary files differ
diff --git a/web/public/img/theme/react.jpg b/web/public/img/theme/react.jpg
new file mode 100755
index 0000000..3c76e20
--- /dev/null
+++ b/web/public/img/theme/react.jpg
Binary files differ
diff --git a/web/public/img/theme/sketch.jpg b/web/public/img/theme/sketch.jpg
new file mode 100755
index 0000000..3569f26
--- /dev/null
+++ b/web/public/img/theme/sketch.jpg
Binary files differ
diff --git a/web/public/img/theme/team-1-800x800.jpg b/web/public/img/theme/team-1-800x800.jpg
new file mode 100755
index 0000000..38efdd5
--- /dev/null
+++ b/web/public/img/theme/team-1-800x800.jpg
Binary files differ
diff --git a/web/public/img/theme/team-2-800x800.jpg b/web/public/img/theme/team-2-800x800.jpg
new file mode 100755
index 0000000..ba5dbc6
--- /dev/null
+++ b/web/public/img/theme/team-2-800x800.jpg
Binary files differ
diff --git a/web/public/img/theme/team-3-800x800.jpg b/web/public/img/theme/team-3-800x800.jpg
new file mode 100755
index 0000000..08baf28
--- /dev/null
+++ b/web/public/img/theme/team-3-800x800.jpg
Binary files differ
diff --git a/web/public/img/theme/team-4-800x800.jpg b/web/public/img/theme/team-4-800x800.jpg
new file mode 100755
index 0000000..849c240
--- /dev/null
+++ b/web/public/img/theme/team-4-800x800.jpg
Binary files differ
diff --git a/web/public/img/theme/vue.jpg b/web/public/img/theme/vue.jpg
new file mode 100755
index 0000000..b8e5ad0
--- /dev/null
+++ b/web/public/img/theme/vue.jpg
Binary files differ
diff --git a/web/public/index.html b/web/public/index.html
index 4123528..b2141d3 100644
--- a/web/public/index.html
+++ b/web/public/index.html
@@ -1,15 +1,34 @@
+<!--
+
+=========================================================
+* Vue Argon Dashboard - v1.0.0
+=========================================================
+
+* Product Page: https://www.creative-tim.com/product/argon-dashboard
+* Copyright 2019 Creative Tim (https://www.creative-tim.com)
+* Licensed under MIT (https://github.com/creativetimofficial/argon-dashboard/blob/master/LICENSE.md)
+
+* Coded by Creative Tim
+
+=========================================================
+
+* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+-->
<!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">
- <link rel="icon" href="<%= BASE_URL %>favicon.ico">
- <title><%= htmlWebpackPlugin.options.title %></title>
+ <link rel="icon" href="<%= BASE_URL %>img/brand/favicon.png" type="image/png">
+ <title>Vue Argon Dashboard - Free Dashboard for Vue.js & Bootstrap 4</title>
+ <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
+ <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
</head>
<body>
<noscript>
- <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+ <strong>We're sorry but vue-argon-dashboard doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
diff --git a/web/public/manifest.json b/web/public/manifest.json
new file mode 100644
index 0000000..c7cacc2
--- /dev/null
+++ b/web/public/manifest.json
@@ -0,0 +1,20 @@
+{
+ "name": "vue-argon-dashboard",
+ "short_name": "vue-argon-dashboard",
+ "icons": [
+ {
+ "src": "./img/icons/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "./img/icons/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "start_url": "./index.html",
+ "display": "standalone",
+ "background_color": "#000000",
+ "theme_color": "#4DBA87"
+}
diff --git a/web/public/robots.txt b/web/public/robots.txt
new file mode 100644
index 0000000..eb05362
--- /dev/null
+++ b/web/public/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow:
diff --git a/web/src/App.vue b/web/src/App.vue
index 25f531f..d46e9fb 100644
--- a/web/src/App.vue
+++ b/web/src/App.vue
@@ -1,31 +1,6 @@
<template>
<div id="app">
- <div id="nav">
- <router-link v-if="$auth.isAuthenticated" to="/">Blender</router-link>
- </div>
+ <notifications></notifications>
<router-view/>
</div>
</template>
-
-<style>
-#app {
- font-family: Avenir, Helvetica, Arial, sans-serif;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- text-align: center;
-color: #2c3e50;
-}
-
-#nav {
-padding: 30px;
-}
-
-#nav a {
- font-weight: bold;
-color: #2c3e50;
-}
-
-#nav a.router-link-exact-active {
-color: #42b983;
-}
-</style>
diff --git a/web/src/assets/scss/argon.scss b/web/src/assets/scss/argon.scss
new file mode 100755
index 0000000..24ace8d
--- /dev/null
+++ b/web/src/assets/scss/argon.scss
@@ -0,0 +1,70 @@
+/*!
+
+=========================================================
+* Vue Argon Dashboard - v1.0.0
+=========================================================
+
+* Product Page: https://www.creative-tim.com/product/argon-dashboard
+* Copyright 2019 Creative Tim (https://www.creative-tim.com)
+* Licensed under MIT (https://github.com/creativetimofficial/argon-dashboard/blob/master/LICENSE.md)
+
+* Coded by Creative Tim
+
+=========================================================
+
+* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+*/
+
+// Core
+
+@import "custom/functions";
+@import "custom/variables";
+@import "custom/mixins";
+
+// Bootstrap (4.1.3) components
+
+@import "~bootstrap/scss/root";
+@import "~bootstrap/scss/reboot";
+@import "~bootstrap/scss/type";
+@import "~bootstrap/scss/images";
+@import "~bootstrap/scss/code";
+@import "~bootstrap/scss/grid";
+@import "~bootstrap/scss/tables";
+@import "~bootstrap/scss/forms";
+@import "~bootstrap/scss/buttons";
+@import "~bootstrap/scss/transitions";
+@import "~bootstrap/scss/dropdown";
+@import "~bootstrap/scss/button-group";
+@import "~bootstrap/scss/input-group";
+@import "~bootstrap/scss/custom-forms";
+@import "~bootstrap/scss/nav";
+@import "~bootstrap/scss/navbar";
+@import "~bootstrap/scss/card";
+@import "~bootstrap/scss/breadcrumb";
+@import "~bootstrap/scss/pagination";
+@import "~bootstrap/scss/badge";
+@import "~bootstrap/scss/jumbotron";
+@import "~bootstrap/scss/alert";
+@import "~bootstrap/scss/progress";
+@import "~bootstrap/scss/media";
+@import "~bootstrap/scss/list-group";
+@import "~bootstrap/scss/close";
+@import "~bootstrap/scss/modal";
+@import "~bootstrap/scss/tooltip";
+@import "~bootstrap/scss/popover";
+@import "~bootstrap/scss/carousel";
+@import "~bootstrap/scss/utilities";
+@import "~bootstrap/scss/print";
+
+// Argon utilities and components
+
+@import "custom/reboot";
+@import "custom/utilities";
+@import "custom/components";
+
+// Vendor (Plugins)
+
+@import "custom/vendors";
+
+
diff --git a/web/src/assets/scss/core/alerts/_alert-dismissible.scss b/web/src/assets/scss/core/alerts/_alert-dismissible.scss
new file mode 100755
index 0000000..aa15ad1
--- /dev/null
+++ b/web/src/assets/scss/core/alerts/_alert-dismissible.scss
@@ -0,0 +1,39 @@
+//
+// Dismissible alert
+//
+
+.alert-dismissible {
+ .close {
+ top: 50%;
+ right: $alert-padding-x;
+ padding: 0;
+ transform: translateY(-50%);
+ color: rgba($white, .6);
+ opacity: 1;
+
+ &:hover,
+ &:focus {
+ color: rgba($white, .9);
+ opacity: 1 !important;
+ }
+
+ @include media-breakpoint-down(xs) {
+ top: 1rem;
+ right: .5rem;
+ }
+
+ &>span:not(.sr-only) {
+ font-size: 1.5rem;
+ background-color: transparent;
+ color: rgba($white, .6);
+ }
+
+ &:hover,
+ &:focus {
+ &>span:not(.sr-only) {
+ background-color: transparent;
+ color: rgba($white, .9);
+ }
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/alerts/_alert.scss b/web/src/assets/scss/core/alerts/_alert.scss
new file mode 100755
index 0000000..a9bc230
--- /dev/null
+++ b/web/src/assets/scss/core/alerts/_alert.scss
@@ -0,0 +1,46 @@
+//
+// Alert
+//
+
+.alert {
+ font-size: $font-size-sm;
+}
+
+// Alert heading
+
+.alert-heading {
+ font-weight: $font-weight-bold;
+ font-size: $h4-font-size;
+ margin-top: .15rem;
+}
+
+
+// Alert icon
+.alert-icon {
+ font-size: 1.25rem;
+ margin-right: 1.25rem;
+ display: inline-block;
+ vertical-align: middle;
+
+ i.ni {
+ position: relative;
+ top: 1px;
+ }
+}
+
+
+// Alert text next to an alert icon
+.alert-text {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+
+// Alert links
+
+[class*="alert-"] {
+ .alert-link {
+ color: $white;
+ border-bottom: 1px dotted rgba($white, .5);
+ }
+}
diff --git a/web/src/assets/scss/core/avatars/_avatar-group.scss b/web/src/assets/scss/core/avatars/_avatar-group.scss
new file mode 100755
index 0000000..0fcf4cf
--- /dev/null
+++ b/web/src/assets/scss/core/avatars/_avatar-group.scss
@@ -0,0 +1,22 @@
+//
+// Avatar group
+//
+
+// General styles
+
+.avatar-group {
+ .avatar {
+ position: relative;
+ z-index: 2;
+ border: 2px solid $card-bg;
+
+ &:hover {
+ z-index: 3;
+ }
+ }
+
+ .avatar + .avatar {
+ margin-left: -1rem;
+
+ }
+}
diff --git a/web/src/assets/scss/core/avatars/_avatar.scss b/web/src/assets/scss/core/avatars/_avatar.scss
new file mode 100755
index 0000000..480fa8d
--- /dev/null
+++ b/web/src/assets/scss/core/avatars/_avatar.scss
@@ -0,0 +1,42 @@
+//
+// Avatar
+//
+
+// General styles
+
+.avatar {
+ color: $white;
+ background-color: $gray-500;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 1rem;
+ border-radius: 50%;
+ height: 48px;
+ width: 48px;
+
+ img {
+ width: 100%;
+ border-radius: 50%;
+ }
+
+ + .avatar-content {
+ display: inline-block;
+ margin-left: .75rem;
+ }
+}
+
+
+// Avatar size variations
+
+.avatar-lg {
+ width: 58px;
+ height: 58px;
+ font-size: $font-size-sm;
+}
+
+.avatar-sm {
+ width: 36px;
+ height: 36px;
+ font-size: $font-size-sm;
+}
diff --git a/web/src/assets/scss/core/badges/_badge-circle.scss b/web/src/assets/scss/core/badges/_badge-circle.scss
new file mode 100755
index 0000000..88a5d5e
--- /dev/null
+++ b/web/src/assets/scss/core/badges/_badge-circle.scss
@@ -0,0 +1,17 @@
+//
+// Circle badge
+//
+
+
+// General styles
+
+.badge-circle {
+ text-align: center;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 50%;
+ width: 2rem;
+ height: 2rem;
+ font-size: .875rem;
+}
diff --git a/web/src/assets/scss/core/badges/_badge-dot.scss b/web/src/assets/scss/core/badges/_badge-dot.scss
new file mode 100755
index 0000000..1ed6ffa
--- /dev/null
+++ b/web/src/assets/scss/core/badges/_badge-dot.scss
@@ -0,0 +1,42 @@
+//
+// Dot badge
+//
+
+
+// General styles
+
+.badge-dot {
+ padding-left: 0;
+ padding-right: 0;
+ background: transparent;
+ font-weight: $font-weight-normal;
+ font-size: $font-size-sm;
+ text-transform: none;
+
+ strong {
+ color: $gray-800;
+ }
+
+ i {
+ display: inline-block;
+ vertical-align: middle;
+ width: .375rem;
+ height: .375rem;
+ border-radius: 50%;
+ margin-right: .375rem;
+ }
+
+ &.badge-md {
+ i {
+ width: .5rem;
+ height: .5rem;
+ }
+ }
+
+ &.badge-lg {
+ i {
+ width: .625rem;
+ height: .625rem;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/badges/_badge.scss b/web/src/assets/scss/core/badges/_badge.scss
new file mode 100755
index 0000000..b0d626a
--- /dev/null
+++ b/web/src/assets/scss/core/badges/_badge.scss
@@ -0,0 +1,55 @@
+//
+// Badge
+//
+
+
+// General styles
+
+.badge {
+ text-transform: $badge-text-transfom;
+
+ a {
+ color: $white;
+ }
+}
+
+
+// Size variations
+
+.badge-md {
+ padding: .65em 1em;
+}
+
+.badge-lg {
+ padding: .85em 1.375em;
+}
+
+
+// Multiple inline badges
+
+.badge-inline {
+ margin-right: .625rem;
+
+ + span {
+ top: 2px;
+ position: relative;
+
+ > a {
+ text-decoration: underline;
+ }
+ }
+}
+
+
+// Badge spacing inside a btn with some text
+
+.btn {
+ .badge {
+ &:not(:first-child) {
+ margin-left: .5rem;
+ }
+ &:not(:last-child) {
+ margin-right: .5rem;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/buttons/_button-brand.scss b/web/src/assets/scss/core/buttons/_button-brand.scss
new file mode 100755
index 0000000..82a3dd7
--- /dev/null
+++ b/web/src/assets/scss/core/buttons/_button-brand.scss
@@ -0,0 +1,12 @@
+//
+// Brand buttons
+//
+
+
+// Color variations
+
+@each $color, $value in $brand-colors {
+ .btn-#{$color} {
+ @include button-variant($value, $value);
+ }
+}
diff --git a/web/src/assets/scss/core/buttons/_button-icon.scss b/web/src/assets/scss/core/buttons/_button-icon.scss
new file mode 100755
index 0000000..1aceddb
--- /dev/null
+++ b/web/src/assets/scss/core/buttons/_button-icon.scss
@@ -0,0 +1,92 @@
+//
+// Icon buttons
+//
+
+.btn-icon {
+ .btn-inner--icon {
+ img {
+ width: 20px;
+ }
+ }
+
+ .btn-inner--text:not(:first-child) {
+ margin-left: 0.75em;
+ }
+
+ .btn-inner--text:not(:last-child) {
+ margin-right: 0.75em;
+ }
+}
+
+
+// Button only with icon and NO text
+
+.btn-icon-only {
+ width: 2.375rem;
+ height: 2.375rem;
+ padding: 0;
+}
+
+a.btn-icon-only {
+ line-height: 2.5;
+}
+
+.btn-icon-only.btn-sm {
+ width: 2rem;
+ height: 2rem;
+}
+
+
+//
+// Clipboard button
+// dedicated element for copying icons
+//
+
+.btn-icon-clipboard {
+ margin: 0;
+ padding: 1.5rem;
+ font-size: $font-size-base;
+ font-weight: $font-weight-normal;
+ line-height: 1.25;
+ color: $gray-800;
+ background-color: $gray-100;
+ border-radius: $border-radius;
+ border: 0;
+ text-align: left;
+ font-family: inherit;
+ display: inline-block;
+ vertical-align: middle;
+ text-decoration: none;
+ -moz-appearance: none;
+ cursor: pointer;
+ width: 100%;
+ margin: .5rem 0;
+
+ &:hover {
+ background-color: $white;
+ box-shadow: rgba(0, 0, 0, .1) 0 0 0 1px, rgba(0, 0, 0, .1) 0 4px 16px;
+ }
+
+ > div {
+ align-items: center;
+ display: flex;
+ }
+
+ i {
+ box-sizing: content-box;
+ color: theme-color("primary");
+ vertical-align: middle;
+ font-size: 1.5rem;
+ }
+
+ span {
+ display: inline-block;
+ font-size: 0.875rem;
+ line-height: 1.5;
+ margin-left: 16px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ vertical-align: middle;
+ }
+}
diff --git a/web/src/assets/scss/core/buttons/_button.scss b/web/src/assets/scss/core/buttons/_button.scss
new file mode 100755
index 0000000..9c19674
--- /dev/null
+++ b/web/src/assets/scss/core/buttons/_button.scss
@@ -0,0 +1,91 @@
+//
+// Icon buttons
+//
+
+// General styles
+
+.btn {
+ position: relative;
+ text-transform: $btn-text-transform;
+ transition: $transition-base;
+ letter-spacing: $btn-letter-spacing;
+ font-size: $input-btn-font-size;
+ will-change: transform;
+
+ &:hover {
+ @include box-shadow($btn-hover-box-shadow);
+ transform: translateY($btn-hover-translate-y);
+ }
+
+ &:not(:last-child) {
+ margin-right: .5rem;
+ }
+
+
+ // Icons
+
+ i:not(:first-child),
+ svg:not(:first-child) {
+ margin-left: .5rem;
+ }
+
+ i:not(:last-child),
+ svg:not(:last-child) {
+ margin-right: .5rem;
+ }
+}
+
+
+// Remove translateY and margin animation when btn is included in a btn-group or input-group
+
+.btn-group,
+.input-group {
+ .btn {
+ margin-right: 0;
+ transform: translateY(0);
+ }
+}
+
+
+// Size variations
+
+.btn-sm {
+ font-size: $input-btn-font-size-sm;
+}
+
+.btn-lg {
+ font-size: $input-btn-font-size-lg;
+}
+
+
+// Some quick fixes (to revise)
+
+// Fixes
+[class*="btn-outline-"] {
+ border-width: 1px;
+}
+
+.btn-outline-secondary {
+ color: darken(theme-color("secondary"), 50%);
+}
+
+.btn-inner--icon {
+ i:not(.fa) {
+ position: relative;
+ top: 2px;
+ }
+}
+
+.btn-link {
+ font-weight: $btn-font-weight;
+ box-shadow: none;
+
+ &:hover {
+ box-shadow: none;
+ transform: none;
+ }
+}
+
+.btn-neutral {
+ color: theme-color("primary");
+}
diff --git a/web/src/assets/scss/core/cards/_card-animations.scss b/web/src/assets/scss/core/cards/_card-animations.scss
new file mode 100755
index 0000000..4da8b78
--- /dev/null
+++ b/web/src/assets/scss/core/cards/_card-animations.scss
@@ -0,0 +1,10 @@
+//
+// Card with hover animations
+//
+
+.card-lift--hover {
+ &:hover {
+ transform: translateY(-20px);
+ @include transition($transition-base);
+ }
+}
diff --git a/web/src/assets/scss/core/cards/_card-blockquote.scss b/web/src/assets/scss/core/cards/_card-blockquote.scss
new file mode 100755
index 0000000..066bae5
--- /dev/null
+++ b/web/src/assets/scss/core/cards/_card-blockquote.scss
@@ -0,0 +1,17 @@
+//
+// Card with blockquote
+//
+
+.card-blockquote {
+ padding: 2rem;
+ position: relative;
+
+ .svg-bg {
+ display: block;
+ width: 100%;
+ height: 95px;
+ position: absolute;
+ top: -94px;
+ left: 0;
+ }
+}
diff --git a/web/src/assets/scss/core/cards/_card-profile.scss b/web/src/assets/scss/core/cards/_card-profile.scss
new file mode 100755
index 0000000..920f411
--- /dev/null
+++ b/web/src/assets/scss/core/cards/_card-profile.scss
@@ -0,0 +1,49 @@
+//
+// Profile card
+//
+
+.card-profile-image {
+ position: relative;
+
+ img {
+ max-width: 180px;
+ border-radius: $border-radius;
+ @extend .shadow;
+ transform: translate(-50%,-30%);
+ position: absolute;
+ left: 50%;
+ transition: $transition-base;
+
+ &:hover {
+ transform: translate(-50%, -33%);
+ }
+ }
+}
+
+.card-profile-stats {
+ padding: 1rem 0;
+
+ > div {
+ text-align: center;
+ margin-right: 1rem;
+ padding: .875rem;
+
+ &:last-child {
+ margin-right: 0;
+ }
+
+ .heading {
+ font-size: 1.1rem;
+ font-weight: bold;
+ display: block;
+ }
+ .description {
+ font-size: .875rem;
+ color: $gray-500;
+ }
+ }
+}
+
+.card-profile-actions {
+ padding: .875rem;
+}
diff --git a/web/src/assets/scss/core/cards/_card-stats.scss b/web/src/assets/scss/core/cards/_card-stats.scss
new file mode 100755
index 0000000..1459304
--- /dev/null
+++ b/web/src/assets/scss/core/cards/_card-stats.scss
@@ -0,0 +1,16 @@
+//
+// Card stats
+//
+
+.card-stats {
+ .card-body {
+ padding: 1rem 1.5rem;
+ }
+
+ .card-status-bullet {
+ position: absolute;
+ top: 0;
+ right: 0;
+ transform: translate(50%, -50%);
+ }
+}
diff --git a/web/src/assets/scss/core/cards/_card.scss b/web/src/assets/scss/core/cards/_card.scss
new file mode 100755
index 0000000..a593e4c
--- /dev/null
+++ b/web/src/assets/scss/core/cards/_card.scss
@@ -0,0 +1,8 @@
+//
+// Card
+//
+
+
+.card-translucent {
+ background-color: rgba(18, 91, 152, 0.08);
+}
diff --git a/web/src/assets/scss/core/charts/_chart.scss b/web/src/assets/scss/core/charts/_chart.scss
new file mode 100755
index 0000000..9ea3ece
--- /dev/null
+++ b/web/src/assets/scss/core/charts/_chart.scss
@@ -0,0 +1,69 @@
+//
+// Chart
+//
+
+.chart {
+ position: relative;
+ height: $chart-height;
+}
+
+
+// Size variations
+
+.chart-sm {
+ height: $chart-height-sm;
+}
+
+
+// Legend
+
+.chart-legend {
+ display: flex;
+ justify-content: center;
+ margin-top: $chart-legend-margin-top;
+ font-size: $chart-legend-font-size;
+ text-align: center;
+ color: $chart-legend-color;
+}
+
+.chart-legend-item {
+ display: inline-flex;
+ align-items: center;
+
+ + .chart-legend-item {
+ margin-left: 1rem;
+ }
+}
+
+.chart-legend-indicator {
+ display: inline-block;
+ width: 0.5rem;
+ height: 0.5rem;
+ margin-right: 0.375rem;
+ border-radius: 50%;
+}
+
+
+// Tooltip
+
+#chart-tooltip {
+ z-index: 0;
+
+ .arrow {
+ top: 100%;
+ left: 50%;
+ transform: translateX(-50%) translateX(-.5rem);
+ }
+}
+
+
+// Chart info overlay
+
+.chart-info-overlay {
+ position: absolute;
+ top: 0;
+ left: 5%;
+ max-width: 350px;
+ padding: 20px;
+ z-index: 1;
+}
diff --git a/web/src/assets/scss/core/close/_close.scss b/web/src/assets/scss/core/close/_close.scss
new file mode 100755
index 0000000..2c0672a
--- /dev/null
+++ b/web/src/assets/scss/core/close/_close.scss
@@ -0,0 +1,34 @@
+//
+// Close
+//
+
+.close {
+ @if $enable-transitions {
+ transition: $transition-base;
+ }
+
+ &>span:not(.sr-only) {
+ background-color: $close-bg;
+ color: $close-color;
+ line-height: 17px;
+ height: 1.25rem;
+ width: 1.25rem;
+ border-radius: 50%;
+ font-size: 1.25rem;
+ display: block;
+ @if $enable-transitions {
+ transition: $transition-base;
+ }
+ }
+
+ &:hover,
+ &:focus {
+ background-color: $close-hover-bg;
+ color: $close-hover-color;
+ outline: none;
+
+ span:not(.sr-only) {
+ background-color: $close-hover-bg;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/custom-forms/_custom-checkbox.scss b/web/src/assets/scss/core/custom-forms/_custom-checkbox.scss
new file mode 100755
index 0000000..e808b5b
--- /dev/null
+++ b/web/src/assets/scss/core/custom-forms/_custom-checkbox.scss
@@ -0,0 +1,37 @@
+//
+// Custom checkbox
+//
+
+.custom-checkbox {
+ .custom-control-input ~ .custom-control-label {
+ cursor: pointer;
+ font-size: $font-size-sm;
+ }
+
+ .custom-control-input {
+ &:checked {
+ ~ .custom-control-label {
+ &::before {
+ border-color: $custom-control-indicator-checked-border-color;
+ }
+ &::after {
+ background-image: $custom-checkbox-indicator-icon-checked;
+ }
+ }
+ }
+
+ &:disabled {
+ ~ .custom-control-label {
+ &::before {
+ border-color: $custom-control-indicator-disabled-bg;
+ }
+ }
+
+ &:checked {
+ &::before {
+ border-color: $custom-control-indicator-checked-disabled-bg;
+ }
+ }
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/custom-forms/_custom-control.scss b/web/src/assets/scss/core/custom-forms/_custom-control.scss
new file mode 100755
index 0000000..2861002
--- /dev/null
+++ b/web/src/assets/scss/core/custom-forms/_custom-control.scss
@@ -0,0 +1,51 @@
+//
+// Custom control
+// additional styles for custom checkboxes, radios and other
+//
+
+.custom-control-label {
+ // Background-color and (when enabled) gradient
+ &::before {
+ border: $custom-control-indicator-border-width solid $custom-control-indicator-border-color;
+ @if $enable-transitions {
+ transition: $input-transition;
+ }
+ }
+
+ span {
+ position: relative;
+ top: 2px;
+ }
+}
+
+.custom-control-label {
+ margin-bottom: 0;
+}
+
+
+// Alternative style
+
+.custom-control-alternative {
+ .custom-control-label {
+ // Background-color and (when enabled) gradient
+ &::before {
+ border: 0;
+ box-shadow: $input-alternative-box-shadow;
+ }
+ }
+
+ .custom-control-input {
+ &:checked {
+ ~ .custom-control-label {
+ &::before {
+ box-shadow: $input-focus-alternative-box-shadow;
+ }
+ }
+ }
+
+ &:active~.custom-control-label::before,
+ &:focus~.custom-control-label::before {
+ box-shadow: $input-alternative-box-shadow;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/custom-forms/_custom-form.scss b/web/src/assets/scss/core/custom-forms/_custom-form.scss
new file mode 100755
index 0000000..e808b5b
--- /dev/null
+++ b/web/src/assets/scss/core/custom-forms/_custom-form.scss
@@ -0,0 +1,37 @@
+//
+// Custom checkbox
+//
+
+.custom-checkbox {
+ .custom-control-input ~ .custom-control-label {
+ cursor: pointer;
+ font-size: $font-size-sm;
+ }
+
+ .custom-control-input {
+ &:checked {
+ ~ .custom-control-label {
+ &::before {
+ border-color: $custom-control-indicator-checked-border-color;
+ }
+ &::after {
+ background-image: $custom-checkbox-indicator-icon-checked;
+ }
+ }
+ }
+
+ &:disabled {
+ ~ .custom-control-label {
+ &::before {
+ border-color: $custom-control-indicator-disabled-bg;
+ }
+ }
+
+ &:checked {
+ &::before {
+ border-color: $custom-control-indicator-checked-disabled-bg;
+ }
+ }
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/custom-forms/_custom-radio.scss b/web/src/assets/scss/core/custom-forms/_custom-radio.scss
new file mode 100755
index 0000000..3ce26f8
--- /dev/null
+++ b/web/src/assets/scss/core/custom-forms/_custom-radio.scss
@@ -0,0 +1,37 @@
+//
+// Custom radio
+//
+
+.custom-radio {
+ .custom-control-input ~ .custom-control-label {
+ cursor: pointer;
+ font-size: $font-size-sm;
+ }
+
+ .custom-control-input {
+ &:checked {
+ ~ .custom-control-label {
+ &::before {
+ border-color: $custom-control-indicator-checked-border-color;
+ }
+ &::after {
+ background-image: $custom-radio-indicator-icon-checked;
+ }
+ }
+ }
+
+ &:disabled {
+ ~ .custom-control-label {
+ &::before {
+ border-color: $custom-control-indicator-disabled-bg;
+ }
+ }
+
+ &:checked {
+ &::before {
+ border-color: $custom-control-indicator-checked-disabled-bg;
+ }
+ }
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/custom-forms/_custom-toggle.scss b/web/src/assets/scss/core/custom-forms/_custom-toggle.scss
new file mode 100755
index 0000000..88da145
--- /dev/null
+++ b/web/src/assets/scss/core/custom-forms/_custom-toggle.scss
@@ -0,0 +1,66 @@
+//
+// Custom toggle
+//
+
+.custom-toggle {
+ position: relative;
+ display: inline-block;
+ width: $custom-toggle-width;
+ height: 1.5rem;
+
+ input {
+ display: none;
+
+ &:checked {
+ + .custom-toggle-slider {
+ border: $custom-control-indicator-border-width solid $custom-control-indicator-checked-border-color;
+
+ &:before {
+ background: $custom-toggle-checked-bg;
+ transform: translateX(1.625rem);
+ }
+ }
+ }
+
+ &:disabled {
+ + .custom-toggle-slider {
+ border: $custom-control-indicator-border-width solid $custom-control-indicator-disabled-bg;
+ }
+
+ &:checked {
+ + .custom-toggle-slider {
+ border: $custom-control-indicator-border-width solid $custom-control-indicator-disabled-bg;
+
+ &:before {
+ background-color: lighten($custom-control-indicator-checked-bg, 10%);
+ }
+ }
+ }
+ }
+ }
+}
+
+.custom-toggle-slider {
+ position: absolute;
+ cursor: pointer;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ border: $custom-control-indicator-border-width solid $input-border-color;
+ border-radius: 34px !important;
+ background-color: transparent;
+
+
+ &:before {
+ position: absolute;
+ content: "";
+ height: 18px;
+ width: 18px;
+ left: 2px;
+ bottom: 2px;
+ border-radius: 50% !important;
+ background-color: $custom-toggle-slider-bg;
+ transition: $input-transition;
+ }
+}
diff --git a/web/src/assets/scss/core/dropdowns/_dropdown.scss b/web/src/assets/scss/core/dropdowns/_dropdown.scss
new file mode 100755
index 0000000..6d3106e
--- /dev/null
+++ b/web/src/assets/scss/core/dropdowns/_dropdown.scss
@@ -0,0 +1,79 @@
+//
+// Dropdown
+//
+
+// General styles
+
+.dropdown,
+.dropup,
+.dropright,
+.dropleft {
+ display: inline-block;
+}
+
+.dropdown-menu {
+ min-width: 12rem;
+
+ .dropdown-item {
+ padding: .5rem 1rem;
+ font-size: $font-size-sm;
+ > i,
+ > svg {
+ margin-right: 1rem;
+ font-size: 1rem;
+ vertical-align: -17%;
+ }
+ }
+}
+
+.dropdown-header {
+ padding-left: 1rem;
+ padding-right: 1rem;
+ color: $gray-100;
+ font-size: .625rem;
+ text-transform: uppercase;
+ font-weight: 700;
+}
+
+
+// Media components inside dropdown link
+
+.dropdown-menu {
+ a.media {
+
+ > div {
+ &:first-child {
+ line-height: 1;
+ }
+ }
+
+ p {
+ color: $gray-600;
+ }
+
+ &:hover {
+ .heading,
+ p {
+ color: theme-color("default") !important;
+ }
+ }
+ }
+}
+
+
+// Size variations
+
+.dropdown-menu-sm {
+ min-width: 100px;
+ border: $border-radius-lg;
+}
+
+.dropdown-menu-lg {
+ min-width: 260px;
+ border-radius: $border-radius-lg;
+}
+
+.dropdown-menu-xl {
+ min-width: 450px;
+ border-radius: $border-radius-lg;
+}
diff --git a/web/src/assets/scss/core/footers/_footer.scss b/web/src/assets/scss/core/footers/_footer.scss
new file mode 100755
index 0000000..a34180e
--- /dev/null
+++ b/web/src/assets/scss/core/footers/_footer.scss
@@ -0,0 +1,98 @@
+//
+// Footer
+//
+
+
+// General styles
+
+.footer {
+ background: $footer-bg;
+ padding: $footer-padding-y $footer-padding-x;
+
+ .col-footer {
+ .heading {
+ color: $footer-heading-color;
+ letter-spacing: 0;
+ font-size: $footer-heading-font-size;
+ text-transform: uppercase;
+ font-weight: $font-weight-bold;
+ margin-bottom: 1rem;
+ }
+ }
+
+ .nav .nav-item .nav-link,
+ .footer-link {
+ color: $footer-link-color !important;
+
+ &:hover {
+ color: $footer-link-hover-color !important;
+ }
+ }
+
+ .list-unstyled li a {
+ display: inline-block;
+ padding: .125rem 0;
+ color: $footer-link-color;
+ font-size: $footer-link-font-size;
+
+ &:hover {
+ color: $footer-link-hover-color;
+ }
+ }
+
+ .copyright {
+ font-size: $font-size-sm;
+ }
+}
+
+
+// Dark footer
+
+.footer-dark {
+ .col-footer .heading {
+ color: $white;
+ }
+}
+
+
+// Footer nav used for copyright and some links, but not limited to this
+
+.nav-footer {
+ .nav-link {
+ font-size: $font-size-sm;
+ }
+
+ .nav-item:last-child {
+ .nav-link {
+ padding-right: 0;
+ }
+ }
+}
+
+
+// Footer with cards over
+
+.footer.has-cards {
+ overflow: hidden;
+ padding-top: 500px;
+ margin-top: -420px;
+ position: relative;
+ background: transparent;
+ pointer-events: none;
+
+ &:before {
+ content: "";
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 600px;
+ height: 2000px;
+ background: theme-color("secondary");
+ transform: skew(0,-8deg);
+ }
+
+ .container {
+ pointer-events: auto;
+ position: relative;
+ }
+}
diff --git a/web/src/assets/scss/core/forms/_form-validation.scss b/web/src/assets/scss/core/forms/_form-validation.scss
new file mode 100755
index 0000000..bb97e39
--- /dev/null
+++ b/web/src/assets/scss/core/forms/_form-validation.scss
@@ -0,0 +1,71 @@
+//
+// Form validation
+//
+
+// Validation
+
+.has-success,
+.has-danger {
+ position: relative;
+
+ &:after, {
+ width: 19px;
+ height: 19px;
+ line-height: 19px;
+ text-align: center;
+ font-family: 'NucleoIcons';
+ display: inline-block;
+ position: absolute;
+ right: 15px;
+ top: 2px;
+ transform: translateY(50%);
+ border-radius: 50%;
+ font-size: 9px;
+ opacity: 1;
+ }
+}
+
+.has-success {
+ &:after {
+ content: "\ea26";
+ color: daken($form-feedback-valid-color, 18%);
+ background-color: $form-feedback-valid-bg;
+ }
+
+ .form-control {
+ background-color: $input-focus-bg;
+
+ &:focus {
+ border-color: $input-focus-border-color;
+ }
+
+
+ // Placeholder
+
+ &::placeholder {
+ color: $form-feedback-valid-color;
+ }
+ }
+}
+
+.has-danger {
+ &:after {
+ content: "\ea53";
+ color: daken($form-feedback-invalid-color, 18%);
+ background-color: $form-feedback-invalid-bg;
+ }
+
+ .form-control {
+ background-color: $input-focus-bg;
+
+ &:focus {
+ border-color: $input-focus-border-color;
+ }
+
+ // Placeholder
+
+ &::placeholder {
+ color: $form-feedback-invalid-color;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/forms/_form.scss b/web/src/assets/scss/core/forms/_form.scss
new file mode 100755
index 0000000..8afeb87
--- /dev/null
+++ b/web/src/assets/scss/core/forms/_form.scss
@@ -0,0 +1,78 @@
+//
+// Forms
+//
+
+
+// Labels
+
+.form-control-label {
+ color: $gray-700;
+ font-size: $font-size-sm;
+ font-weight: $font-weight-bold;
+}
+
+
+// Text inputs
+
+.form-control {
+ font-size: $input-btn-font-size;
+
+ &:focus {
+ &::placeholder {
+ color: $input-focus-placeholder-color;
+ }
+ }
+}
+
+
+// Textarea
+
+textarea[resize="none"] {
+ resize: none!important;
+}
+
+textarea[resize="both"] {
+ resize: both!important;
+}
+
+textarea[resize="vertical"] {
+ resize: vertical!important;
+}
+
+textarea[resize="horizontal"] {
+ resize: horizontal!important;
+}
+
+
+// Form input variations
+
+// Muted input
+
+.form-control-muted {
+ background-color: $input-muted-bg;
+ border-color: $input-muted-bg;
+ box-shadow: none;
+
+ &:focus {
+ background-color: $input-focus-muted-bg;
+ }
+}
+
+
+// Alternative input
+
+.form-control-alternative {
+ box-shadow: $input-alternative-box-shadow;
+ border: 0;
+ transition: box-shadow .15s ease;
+
+ &:focus {
+ box-shadow: $input-focus-alternative-box-shadow;
+ }
+}
+
+// Size variations: Fixes to the bootstrap defaults
+
+.form-control-lg {
+ font-size: $font-size-base;
+}
diff --git a/web/src/assets/scss/core/forms/_input-group.scss b/web/src/assets/scss/core/forms/_input-group.scss
new file mode 100755
index 0000000..1ab48cf
--- /dev/null
+++ b/web/src/assets/scss/core/forms/_input-group.scss
@@ -0,0 +1,70 @@
+//
+// Input group
+//
+
+.input-group {
+ box-shadow: $input-box-shadow;
+ border-radius: $input-border-radius;
+ transition: $transition-base;
+
+ .form-control {
+ box-shadow: none;
+
+ &:not(:first-child) {
+ border-left: 0;
+ padding-left: 0;
+ }
+ &:not(:last-child) {
+ border-right: 0;
+ padding-right: 0;
+ }
+ &:focus {
+ box-shadow: none;
+ }
+ }
+}
+
+.input-group-text {
+ transition: $input-transition;
+}
+
+
+// Alternative input groups related to .form-control-alternative
+
+
+.input-group-alternative {
+ box-shadow: $input-alternative-box-shadow;
+ border: 0;
+ transition: box-shadow .15s ease;
+
+ .form-control,
+ .input-group-text {
+ border: 0;
+ box-shadow: none;
+ }
+}
+
+.focused {
+ .input-group-alternative {
+ box-shadow: $input-focus-alternative-box-shadow !important;
+ }
+}
+
+
+// .focus class is applied dinamycally from theme.js
+
+.focused {
+ .input-group {
+ box-shadow: $input-focus-box-shadow;
+ }
+
+ .input-group-text {
+ color: $input-group-addon-focus-color;
+ background-color: $input-group-addon-focus-bg;
+ border-color: $input-group-addon-focus-border-color;
+ }
+
+ .form-control {
+ border-color: $input-group-addon-focus-border-color;
+ }
+}
diff --git a/web/src/assets/scss/core/headers/_header.scss b/web/src/assets/scss/core/headers/_header.scss
new file mode 100755
index 0000000..3b0e9d2
--- /dev/null
+++ b/web/src/assets/scss/core/headers/_header.scss
@@ -0,0 +1,7 @@
+//
+// Header
+//
+
+.header {
+ position: relative;
+}
diff --git a/web/src/assets/scss/core/icons/_icon-shape.scss b/web/src/assets/scss/core/icons/_icon-shape.scss
new file mode 100755
index 0000000..1747871
--- /dev/null
+++ b/web/src/assets/scss/core/icons/_icon-shape.scss
@@ -0,0 +1,42 @@
+//
+// Icon shape
+//
+
+
+.icon-shape {
+ padding: 12px;
+ text-align: center;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 50%;
+
+
+ i, svg {
+ font-size: 1.25rem;
+ }
+
+ &.icon-lg {
+ i, svg {
+ font-size: 1.625rem;
+ }
+ }
+
+ &.icon-sm {
+ i, svg {
+ font-size: .875rem;
+ }
+ }
+
+ svg {
+ width: 30px;
+ height: 30px;
+ }
+
+}
+
+@each $color, $value in $theme-colors {
+ .icon-shape-#{$color} {
+ @include icon-shape-variant(theme-color($color));
+ }
+}
diff --git a/web/src/assets/scss/core/icons/_icon.scss b/web/src/assets/scss/core/icons/_icon.scss
new file mode 100755
index 0000000..f7ed0de
--- /dev/null
+++ b/web/src/assets/scss/core/icons/_icon.scss
@@ -0,0 +1,65 @@
+//
+// Icon
+//
+
+.icon {
+ width: $icon-size;
+ height: $icon-size;
+
+ i, svg {
+ font-size: $icon-size - .75;
+ }
+
+ + .icon-text {
+ padding-left: 1rem;
+ width: calc(100% - #{$icon-size} - 1);
+ }
+}
+
+
+// Extra large icons
+
+.icon-xl {
+ width: $icon-size-xl;
+ height: $icon-size-xl;
+
+ i, svg {
+ font-size: $icon-size-xl - .75;
+ }
+
+ + .icon-text {
+ width: calc(100% - #{$icon-size-xl} - 1);
+ }
+}
+
+
+// Large icons
+
+.icon-lg {
+ width: $icon-size-lg;
+ height: $icon-size-lg;
+
+ i, svg {
+ font-size: $icon-size-lg - .75;
+ }
+
+ + .icon-text {
+ width: calc(100% - #{$icon-size-lg} - 1);
+ }
+}
+
+
+// Small icon
+
+.icon-sm {
+ width: $icon-size-sm;
+ height: $icon-size-sm;
+
+ i, svg {
+ font-size: $icon-size-sm - .75;
+ }
+
+ + .icon-text {
+ width: calc(100% - #{$icon-size-sm} - 1);
+ }
+}
diff --git a/web/src/assets/scss/core/list-groups/_list-group.scss b/web/src/assets/scss/core/list-groups/_list-group.scss
new file mode 100755
index 0000000..0aa5cde
--- /dev/null
+++ b/web/src/assets/scss/core/list-groups/_list-group.scss
@@ -0,0 +1,46 @@
+//
+// List group
+//
+
+
+// Space list items
+
+.list-group-space {
+ .list-group-item {
+ margin-bottom: 1.5rem;
+ @include border-radius($list-group-border-radius);
+ }
+}
+
+
+// Extended list group components
+
+.list-group-img {
+ width: 3rem;
+ height: 3rem;
+ border-radius: 50%;
+ vertical-align: top;
+ margin: -.1rem 1.2rem 0 -.2rem;
+}
+
+.list-group-content {
+ flex: 1;
+ min-width: 0;
+
+ > p {
+ color: $gray-500;
+ line-height: 1.5;
+ margin: .2rem 0 0;
+ }
+}
+
+.list-group-heading {
+ font-size: $font-size-base;
+ color: $gray-800;
+
+ > small {
+ float: right;
+ color: $gray-500;
+ font-weight: 500;
+ }
+}
diff --git a/web/src/assets/scss/core/maps/_map.scss b/web/src/assets/scss/core/maps/_map.scss
new file mode 100755
index 0000000..6c9cda7
--- /dev/null
+++ b/web/src/assets/scss/core/maps/_map.scss
@@ -0,0 +1,10 @@
+//
+// Map
+//
+
+.map-canvas {
+ position: relative;
+ width: 100%;
+ height: $map-height;
+ border-radius: $border-radius;
+}
diff --git a/web/src/assets/scss/core/masks/_mask.scss b/web/src/assets/scss/core/masks/_mask.scss
new file mode 100755
index 0000000..9df8ba0
--- /dev/null
+++ b/web/src/assets/scss/core/masks/_mask.scss
@@ -0,0 +1,12 @@
+//
+// Mask
+//
+
+.mask {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ @include transition($transition-base);
+}
diff --git a/web/src/assets/scss/core/mixins/_alert.scss b/web/src/assets/scss/core/mixins/_alert.scss
new file mode 100755
index 0000000..1dbe85b
--- /dev/null
+++ b/web/src/assets/scss/core/mixins/_alert.scss
@@ -0,0 +1,13 @@
+@mixin alert-variant($background, $border, $color) {
+ color: color-yiq($background);
+ @include gradient-bg($background);
+ border-color: $border;
+
+ hr {
+ border-top-color: darken($border, 5%);
+ }
+
+ .alert-link {
+ color: darken($color, 10%);
+ }
+} \ No newline at end of file
diff --git a/web/src/assets/scss/core/mixins/_background-variant.scss b/web/src/assets/scss/core/mixins/_background-variant.scss
new file mode 100755
index 0000000..1b87864
--- /dev/null
+++ b/web/src/assets/scss/core/mixins/_background-variant.scss
@@ -0,0 +1,30 @@
+// Contextual backgrounds
+@mixin bg-variant($parent, $color, $ignore-warning: true) {
+ #{$parent} {
+ background-color: $color !important;
+ }
+ a#{$parent},
+ button#{$parent} {
+ @include hover-focus {
+ background-color: darken($color, 10%) !important;
+ }
+ }
+}
+
+@mixin bg-gradient-variant($parent, $color, $ignore-warning: true) {
+ #{$parent} {
+ background: linear-gradient(87deg, $color 0, adjust-hue($color, 25%) 100%) !important;
+ }
+}
+
+@mixin bg-translucent-variant($parent, $color, $ignore-warning: true) {
+ #{$parent} {
+ background-color: darken(rgba($color, $translucent-color-opacity), 7%) !important;
+ }
+ a#{$parent},
+ button#{$parent} {
+ @include hover-focus {
+ background-color: darken(rgba($color, $translucent-color-opacity), 12%) !important;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/mixins/_badge.scss b/web/src/assets/scss/core/mixins/_badge.scss
new file mode 100755
index 0000000..f19044f
--- /dev/null
+++ b/web/src/assets/scss/core/mixins/_badge.scss
@@ -0,0 +1,12 @@
+@mixin badge-variant($bg) {
+ color: saturate(darken($bg, 10%), 10);
+ background-color: transparentize(lighten($bg, 25%), .5);
+
+ &[href] {
+ @include hover-focus {
+ color: color-yiq($bg);
+ text-decoration: none;
+ background-color: darken($bg, 10%);
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/mixins/_buttons.scss b/web/src/assets/scss/core/mixins/_buttons.scss
new file mode 100755
index 0000000..5cedd20
--- /dev/null
+++ b/web/src/assets/scss/core/mixins/_buttons.scss
@@ -0,0 +1,105 @@
+@mixin button-variant($background, $border, $hover-background: darken($background, 0%), $hover-border: darken($border, 0%), $active-background: darken($background, 10%), $active-border: darken($border, 0%)) {
+ color: color-yiq($background);
+ @include gradient-bg($background);
+ border-color: $border;
+ @include box-shadow($btn-box-shadow);
+
+ @include hover {
+ color: color-yiq($hover-background);
+ @include gradient-bg($hover-background);
+ border-color: $hover-border;
+ }
+
+ &:focus,
+ &.focus {
+ // Avoid using mixin so we can pass custom focus shadow properly
+ @if $enable-shadows {
+ box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba($border, .5);
+ }
+ @else {
+ box-shadow: 0 0 0 $btn-focus-width rgba($border, .5);
+ }
+ } // Disabled comes first so active can properly restyle
+ &.disabled,
+ &:disabled {
+ color: color-yiq($background);
+ background-color: $background;
+ border-color: $border;
+ }
+
+ &:not(:disabled):not(.disabled):active,
+ &:not(:disabled):not(.disabled).active,
+ .show>&.dropdown-toggle {
+ color: color-yiq($active-background);
+ background-color: $active-background;
+ @if $enable-gradients {
+ background-image: none; // Remove the gradient for the pressed/active state
+ }
+ border-color: $active-border;
+
+ &:focus {
+ // Avoid using mixin so we can pass custom focus shadow properly
+ @if $enable-shadows {
+ box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($border, .5);
+ }
+ @else {
+ box-shadow: 0 0 0 $btn-focus-width rgba($border, .5);
+ }
+ }
+ }
+}
+
+@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {
+ color: $color;
+ background-color: transparent;
+ background-image: none;
+ border-color: $color;
+
+ &:hover {
+ color: $color-hover;
+ background-color: $active-background;
+ border-color: $active-border;
+ }
+
+ &:focus,
+ &.focus {
+ box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
+ }
+
+ &.disabled,
+ &:disabled {
+ color: $color;
+ background-color: transparent;
+ }
+
+ &:not(:disabled):not(.disabled):active,
+ &:not(:disabled):not(.disabled).active,
+ .show>&.dropdown-toggle {
+ color: color-yiq($active-background);
+ background-color: $active-background;
+ border-color: $active-border;
+
+ &:focus {
+ // Avoid using mixin so we can pass custom focus shadow properly
+ @if $enable-shadows and $btn-active-box-shadow !=none {
+ box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);
+ }
+ @else {
+ box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
+ }
+ }
+ }
+}
+
+// Button sizes
+@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {
+ padding: $padding-y $padding-x;
+ font-size: $font-size;
+ line-height: $line-height; // Manually declare to provide an override to the browser default
+ @if $enable-rounded {
+ border-radius: $border-radius;
+ }
+ @else {
+ border-radius: 0;
+ }
+} \ No newline at end of file
diff --git a/web/src/assets/scss/core/mixins/_forms.scss b/web/src/assets/scss/core/mixins/_forms.scss
new file mode 100755
index 0000000..0c51a3b
--- /dev/null
+++ b/web/src/assets/scss/core/mixins/_forms.scss
@@ -0,0 +1,127 @@
+@mixin form-control-focus($ignore-warning: true) {
+ &:focus {
+ color: $input-focus-color;
+ background-color: $input-focus-bg;
+ border-color: $input-focus-border-color;
+ outline: 0;
+ // Avoid using mixin so we can pass custom focus shadow properly
+ @if $enable-shadows {
+ box-shadow: $input-box-shadow, $input-focus-box-shadow;
+ } @else {
+ box-shadow: $input-focus-box-shadow;
+ }
+ }
+}
+
+
+@mixin form-validation-state($state, $color, $icon) {
+ .#{$state}-feedback {
+ display: none;
+ width: 100%;
+ margin-top: $form-feedback-margin-top;
+ font-size: $form-feedback-font-size;
+ color: $color;
+ }
+
+ .#{$state}-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%; // Contain to parent when possible
+ padding: .5rem;
+ margin-top: .1rem;
+ font-size: .875rem;
+ line-height: 1;
+ color: #fff;
+ background-color: rgba($color, .8);
+ border-radius: .2rem;
+ }
+
+ .form-control,
+ .custom-select {
+ .was-validated &:#{$state},
+ &.is-#{$state} {
+ border-color: $color;
+
+ &:focus {
+ border-color: $color;
+ //box-shadow: 0 1px $input-focus-width 0 rgba($color, .75);
+ }
+
+ ~ .#{$state}-feedback,
+ ~ .#{$state}-tooltip {
+ display: block;
+ }
+ }
+ }
+
+ .form-check-input {
+ .was-validated &:#{$state},
+ &.is-#{$state} {
+ ~ .form-check-label {
+ color: $color;
+ }
+
+ ~ .#{$state}-feedback,
+ ~ .#{$state}-tooltip {
+ display: block;
+ }
+ }
+ }
+
+ .custom-control-input {
+ .was-validated &:#{$state},
+ &.is-#{$state} {
+ ~ .custom-control-label {
+ color: $color;
+
+ &::before {
+ background-color: lighten($color, 25%);
+ border-color: lighten($color, 25%);
+ }
+ }
+
+ ~ .#{$state}-feedback,
+ ~ .#{$state}-tooltip {
+ display: block;
+ }
+
+ &:checked {
+ ~ .custom-control-label::before {
+ @include gradient-bg(lighten($color, 10%));
+ border-color: lighten($color, 25%);
+ }
+ }
+
+ &:focus {
+ ~ .custom-control-label::before {
+ box-shadow: 0 0 0 1px $body-bg, 0 0 0 $input-focus-width rgba($color, .25);
+ }
+ }
+ }
+ }
+
+ // custom file
+ .custom-file-input {
+ .was-validated &:#{$state},
+ &.is-#{$state} {
+ ~ .custom-file-label {
+ border-color: $color;
+
+ &::before { border-color: inherit; }
+ }
+
+ ~ .#{$state}-feedback,
+ ~ .#{$state}-tooltip {
+ display: block;
+ }
+
+ &:focus {
+ ~ .custom-file-label {
+ box-shadow: 0 0 0 $input-focus-width rgba($color, .25);
+ }
+ }
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/mixins/_icon.scss b/web/src/assets/scss/core/mixins/_icon.scss
new file mode 100755
index 0000000..8819985
--- /dev/null
+++ b/web/src/assets/scss/core/mixins/_icon.scss
@@ -0,0 +1,4 @@
+@mixin icon-shape-variant($color) {
+ color: saturate(darken($color, 10%), 10);
+ background-color: transparentize(lighten($color, 10%), .5);
+} \ No newline at end of file
diff --git a/web/src/assets/scss/core/mixins/_modals.scss b/web/src/assets/scss/core/mixins/_modals.scss
new file mode 100755
index 0000000..f912490
--- /dev/null
+++ b/web/src/assets/scss/core/mixins/_modals.scss
@@ -0,0 +1,23 @@
+@mixin modal-variant($background) {
+ .modal-title {
+ color: color-yiq($background);
+ }
+ .modal-header,
+ .modal-footer {
+ border-color: rgba(color-yiq($background), .075);
+ }
+ .modal-content {
+ background-color: $background;
+ color: color-yiq($background);
+
+ .heading {
+ color: color-yiq($background);
+ }
+ }
+
+ .close {
+ &>span:not(.sr-only) {
+ color: $white;
+ }
+ }
+} \ No newline at end of file
diff --git a/web/src/assets/scss/core/mixins/_popover.scss b/web/src/assets/scss/core/mixins/_popover.scss
new file mode 100755
index 0000000..e535b53
--- /dev/null
+++ b/web/src/assets/scss/core/mixins/_popover.scss
@@ -0,0 +1,36 @@
+@mixin popover-variant($background) {
+
+ background-color: $background;
+
+ .popover-header {
+ background-color: $background;
+ color: color-yiq($background);
+ }
+
+ .popover-body {
+ color: color-yiq($background);
+ }
+ .popover-header{
+ border-color: rgba(color-yiq($background), .2);
+ }
+ &.bs-popover-top {
+ .arrow::after {
+ border-top-color: $background;
+ }
+ }
+ &.bs-popover-right {
+ .arrow::after {
+ border-right-color: $background;
+ }
+ }
+ &.bs-popover-bottom {
+ .arrow::after {
+ border-bottom-color: $background;
+ }
+ }
+ &.bs-popover-left {
+ .arrow::after {
+ border-left-color: $background;
+ }
+ }
+} \ No newline at end of file
diff --git a/web/src/assets/scss/core/modals/_modal.scss b/web/src/assets/scss/core/modals/_modal.scss
new file mode 100755
index 0000000..ed31d51
--- /dev/null
+++ b/web/src/assets/scss/core/modals/_modal.scss
@@ -0,0 +1,25 @@
+//
+// Modal
+//
+
+
+// Fluid modal
+
+.modal-fluid {
+ .modal-dialog {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+ .modal-content {
+ border-radius: 0;
+ }
+}
+
+
+// Background color variations
+
+@each $color, $value in $theme-colors {
+ .modal-#{$color} {
+ @include modal-variant($value);
+ }
+}
diff --git a/web/src/assets/scss/core/navbars/_navbar-collapse.scss b/web/src/assets/scss/core/navbars/_navbar-collapse.scss
new file mode 100755
index 0000000..ffd998a
--- /dev/null
+++ b/web/src/assets/scss/core/navbars/_navbar-collapse.scss
@@ -0,0 +1,125 @@
+//
+// Navabar collapse
+//
+
+// Collapse
+
+.navbar-collapse-header {
+ display: none;
+}
+
+@include media-breakpoint-down(sm) {
+ .navbar-nav {
+ .nav-link {
+ padding: .625rem 0;
+ color: theme-color("default") !important;
+ }
+
+ .dropdown-menu {
+ box-shadow: none;
+ min-width: auto;
+
+ .media {
+ svg {
+ width: 30px;
+ }
+ }
+ }
+ }
+
+ .navbar-collapse {
+ width: calc(100% - 1.4rem);
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ z-index: 1050;
+ margin: .7rem;
+ overflow-y: auto;
+ height: auto !important;
+ opacity: 0;
+
+ .navbar-toggler {
+ width: 20px;
+ height: 20px;
+ position: relative;
+ cursor: pointer;
+ display: inline-block;
+ padding: 0;
+
+ span {
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 2px;
+ border-radius: 2px;
+ opacity: 1;
+ background: #283448;
+ }
+
+ :nth-child(1) {
+ transform: rotate(135deg);
+ }
+
+ :nth-child(2) {
+ transform: rotate(-135deg);
+ }
+ }
+
+ .navbar-collapse-header {
+ display: block;
+ padding-bottom: 1rem;
+ margin-bottom: 1rem;
+ border-bottom: 1px solid rgba(0, 0, 0, .1);
+ }
+
+ .collapse-brand {
+ img {
+ height: 36px;
+ }
+ }
+
+ .collapse-close {
+ text-align: right;
+ }
+ }
+
+ .navbar-collapse.collapsing,
+ .navbar-collapse.show {
+ padding: 1.5rem;
+ border-radius: $border-radius;
+ background: #FFF;
+ box-shadow: 0 50px 100px rgba(50,50,93,.1),0 15px 35px rgba(50,50,93,.15),0 5px 15px rgba(0,0,0,.1);
+ animation: show-navbar-collapse .2s ease forwards;
+ }
+
+ .navbar-collapse.collapsing-out {
+ animation: hide-navbar-collapse .2s ease forwards;
+ }
+}
+
+@keyframes show-navbar-collapse {
+ 0% {
+ opacity: 0;
+ transform: scale(.95);
+ transform-origin: 100% 0;
+ }
+
+ 100% {
+ opacity: 1;
+ transform: scale(1);
+ }
+}
+
+@keyframes hide-navbar-collapse {
+ from {
+ opacity: 1;
+ transform: scale(1);
+ transform-origin: 100% 0;
+ }
+
+ to {
+ opacity: 0;
+ transform: scale(.95);
+ }
+}
diff --git a/web/src/assets/scss/core/navbars/_navbar-dropdown.scss b/web/src/assets/scss/core/navbars/_navbar-dropdown.scss
new file mode 100755
index 0000000..3db781c
--- /dev/null
+++ b/web/src/assets/scss/core/navbars/_navbar-dropdown.scss
@@ -0,0 +1,101 @@
+// Dropdown menu
+
+@include media-breakpoint-up(md) {
+ .navbar {
+ .dropdown-menu {
+ opacity: 0;
+ pointer-events: none;
+ margin: 0;
+ }
+
+ .dropdown-menu-arrow {
+ &:before {
+ background: $dropdown-bg;
+ box-shadow: none;
+ content: '';
+ display: block;
+ height: 12px;
+ width: 12px;
+ left: 20px;
+ position: absolute;
+ bottom: 100%;
+ transform: rotate(-45deg) translateY(12px);
+ z-index: -5;
+ border-radius: 2px;
+ }
+ }
+
+ .dropdown-menu-right {
+ &:before {
+ right: 20px;
+ left: auto;
+ }
+ }
+
+ &:not(.navbar-nav-hover) {
+ .dropdown-menu {
+ &.show {
+ opacity: 1;
+ pointer-events: auto;
+ animation: show-navbar-dropdown .25s ease forwards;
+ }
+
+ &.close {
+ display: block;
+ animation: hide-navbar-dropdown .15s ease backwards;
+ }
+ }
+ }
+
+ &.navbar-nav-hover {
+ .dropdown-menu {
+ opacity: 0;
+ display: block;
+ pointer-events: none;
+ transform: translate(0, 10px) perspective(200px) rotateX(-2deg);
+ transition: visibility 0.25s, opacity 0.25s, transform 0.25s;
+ }
+
+ .nav-item.dropdown:hover > .dropdown-menu {
+ display: block;
+ opacity: 1;
+ pointer-events: auto;
+ visibility: visible;
+ transform: translate(0, 0);
+ animation: none;
+ }
+ }
+
+ .dropdown-menu-inner {
+ position: relative;
+ padding: 1rem;
+ }
+
+
+ // Keyframes
+
+ @keyframes show-navbar-dropdown {
+ 0% {
+ opacity: 0;
+ transform: translate(0, 10px) perspective(200px) rotateX(-2deg);
+ transition: visibility 0.25s, opacity 0.25s, transform 0.25s;
+ }
+
+ 100% {
+ transform: translate(0, 0);
+ opacity: 1;
+ }
+ }
+
+ @keyframes hide-navbar-dropdown {
+ from {
+ opacity: 1;
+ }
+
+ to {
+ opacity: 0;
+ transform: translate(0, 10px);
+ }
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/navbars/_navbar-search.scss b/web/src/assets/scss/core/navbars/_navbar-search.scss
new file mode 100755
index 0000000..d95a141
--- /dev/null
+++ b/web/src/assets/scss/core/navbars/_navbar-search.scss
@@ -0,0 +1,69 @@
+//
+// Navbar search
+//
+
+.navbar-search {
+ .input-group {
+ border-radius: $navbar-search-border-radius;
+ border: $navbar-search-border-width solid;
+ background-color: transparent;
+
+ .input-group-text {
+ background-color: transparent;
+ padding-left: 1rem;
+ }
+ }
+
+ .form-control {
+ width: $navbar-search-width;
+ background-color: transparent;
+ }
+}
+
+.navbar-search-dark {
+ .input-group {
+ border-color: $navbar-search-dark-border-color;
+ }
+
+ .input-group-text {
+ color: $navbar-search-dark-color;
+ }
+
+ .form-control {
+ color: $navbar-search-dark-focus-color;
+
+ &::placeholder {
+ color: $navbar-search-dark-color;
+ }
+ }
+
+ .focused {
+ .input-group {
+ border-color: $navbar-search-dark-focus-border-color;
+ }
+ }
+}
+
+.navbar-search-light {
+ .input-group {
+ border-color: $navbar-search-light-border-color;
+ }
+
+ .input-group-text {
+ color: $navbar-search-light-color;
+ }
+
+ .form-control {
+ color: $navbar-search-light-focus-color;
+
+ &::placeholder {
+ color: $navbar-search-light-color;
+ }
+ }
+
+ .focused {
+ .input-group {
+ border-color: $navbar-search-light-focus-border-color;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/navbars/_navbar-vertical.scss b/web/src/assets/scss/core/navbars/_navbar-vertical.scss
new file mode 100755
index 0000000..48e1fd7
--- /dev/null
+++ b/web/src/assets/scss/core/navbars/_navbar-vertical.scss
@@ -0,0 +1,286 @@
+//
+// Vertical navbar
+//
+
+
+// Vertical
+//
+// Creates a vertically aligned version of the navbar
+.navbar-vertical {
+ box-shadow: $navbar-vertical-box-shadow;
+
+ .navbar {
+ border-width: 0 0 1px 0;
+ border-style: solid;
+ }
+
+
+ // Navbar light
+
+ .navbar-light {
+ background-color: $navbar-light-bg;
+ border-color: $navbar-light-border-color;
+ }
+
+
+ // Navbar brand
+
+ .navbar-brand {
+ margin-right: 0;
+ }
+
+ .navbar-brand-img,
+ .navbar-brand > img {
+ max-width: 100%;
+ max-height: 2rem;
+ }
+
+
+ // Navbar collapse
+
+ @include media-breakpoint-up(md) {
+ .navbar-collapse {
+ margin-left: -$navbar-padding-x;
+ margin-right: -$navbar-padding-x;
+ padding-left: $navbar-padding-x;
+ padding-right: $navbar-padding-x;
+
+ &:before {
+ content: '';
+ display: block;
+ margin: $navbar-padding-y (-$navbar-padding-x);
+ }
+ }
+ }
+
+
+
+ // Navbar navigaton
+
+ .navbar-nav {
+ margin-left: -$navbar-padding-x;
+ margin-right: -$navbar-padding-x;
+
+
+ // Navbar link
+
+ .nav-link {
+ padding-left: $navbar-padding-x;
+ padding-right: $navbar-padding-x;
+ font-size: $navbar-nav-link-font-size;
+
+ &.active {
+ position: relative;
+
+ &:before {
+ content: '';
+ position: absolute;
+ left: 0;
+ top: $nav-link-padding-y;
+ bottom: $nav-link-padding-y;
+ border-left: 2px solid $primary;
+ }
+ }
+
+
+ // Icon
+
+ > i {
+ min-width: $navbar-icon-min-width;
+ font-size: .9375rem;
+ line-height: ($font-size-base * $line-height-base);
+ }
+
+
+ // Dropdown
+
+ .dropdown-menu {
+ border: none;
+
+ .dropdown-menu {
+ margin-left: $dropdown-item-padding-x / 2;
+ }
+ }
+ }
+ }
+
+
+ // Navbar navigation
+ .navbar-nav .nav-link {
+ display: flex;
+ align-items: center;
+ }
+
+ .navbar-nav .nav-link[data-toggle="collapse"] {
+ &:after {
+ display: inline-block;
+ font-style: normal;
+ font-variant: normal;
+ text-rendering: auto;
+ -webkit-font-smoothing: antialiased;
+ font-family: 'Font Awesome 5 Free';
+ font-weight: 700;
+ content: "\f105";
+ margin-left: auto;
+ color: $text-muted;
+ transition: $transition-base;
+ } // Expanded
+ &[aria-expanded="true"] {
+
+ &:after {
+ transform: rotate(90deg);
+ }
+ }
+ }
+
+ // Second level
+ .navbar-nav .nav .nav-link {
+ padding-left: $navbar-padding-x + $navbar-icon-min-width;
+ }
+
+ // Third level
+ .navbar-nav .nav .nav .nav-link {
+ padding-left: $navbar-padding-x * 1.5 + $navbar-icon-min-width;
+ }
+
+
+ // Navbar heading
+ .navbar-heading {
+ padding-top: $nav-link-padding-y;
+ padding-bottom: $nav-link-padding-y;
+ font-size: $font-size-xs;
+ text-transform: uppercase;
+ letter-spacing: .04em;
+ }
+
+
+ // Expanded navbar specific styles
+ &.navbar-expand {
+ @each $breakpoint,
+ $dimension in $grid-breakpoints {
+
+ &-#{$breakpoint} {
+ @include media-breakpoint-up(#{$breakpoint}) {
+ display: block;
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ width: 100%;
+ max-width: $navbar-vertical-width;
+ padding-left: $navbar-vertical-padding-x;
+ padding-right: $navbar-vertical-padding-x;
+
+ overflow-y: auto;
+
+ // Container
+ >[class*="container"] {
+ flex-direction: column;
+ align-items: stretch;
+ min-height: 100%;
+ padding-left: 0;
+ padding-right: 0; // Target IE 10 & 11
+ @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
+ min-height: none;
+ height: 100%;
+ }
+ }
+
+
+ // Fixes the vertical navbar to the left
+ &.fixed-left {
+ left: 0;
+ border-width: 0 1px 0 0;
+ }
+
+
+ // Fixed the vertical navbar to the right
+ &.fixed-right {
+ right: 0;
+ border-width: 0 0 0 1px;
+ }
+
+
+ // Navbar collapse
+ .navbar-collapse {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+ margin-left: -$navbar-vertical-padding-x;
+ margin-right: -$navbar-vertical-padding-x;
+ padding-left: $navbar-vertical-padding-x;
+ padding-right: $navbar-vertical-padding-x;
+
+ > * {
+ min-width: 100%;
+ }
+ }
+
+
+ // Navbar navigation
+ .navbar-nav {
+ flex-direction: column;
+ margin-left: -$navbar-vertical-padding-x;
+ margin-right: -$navbar-vertical-padding-x;
+ }
+
+ .navbar-nav .nav-link {
+ padding: $navbar-vertical-nav-link-padding-y $navbar-vertical-nav-link-padding-x;
+
+ &.active {
+ &:before {
+ top: $nav-link-padding-y;
+ bottom: $nav-link-padding-y;
+ left: 0;
+ right: auto;
+ border-left: 2px solid $primary;
+ border-bottom: 0;
+ }
+ }
+ }
+
+
+ // Second level
+ .navbar-nav .nav .nav-link {
+ padding-left: $navbar-vertical-padding-x + $navbar-icon-min-width;
+ }
+
+
+ // Third level
+ .navbar-nav .nav .nav .nav-link {
+ padding-left: $navbar-vertical-padding-x * 1.5 + $navbar-icon-min-width;
+ }
+
+ // Navbar brand
+ .navbar-brand {
+ display: block;
+ text-align: center;
+ padding-top: (2rem - $navbar-padding-y);
+ padding-bottom: (2rem - $navbar-padding-y);
+ }
+
+ .navbar-brand-img {
+ max-height: 2.5rem;
+ }
+
+ // Navbar user
+ .navbar-user {
+ margin-left: -$navbar-vertical-padding-x;
+ margin-right: -$navbar-vertical-padding-x;
+ padding-top: $spacer;
+ padding-bottom: $spacer - $navbar-padding-y;
+ padding-left: $navbar-vertical-padding-x;
+ padding-right: $navbar-vertical-padding-x;
+ border-top: 1px solid $border-color;
+
+ // Dropup menu
+ .dropup .dropdown-menu {
+ left: 50%;
+ transform: translateX(-50%);
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/navbars/_navbar.scss b/web/src/assets/scss/core/navbars/_navbar.scss
new file mode 100755
index 0000000..a2390b3
--- /dev/null
+++ b/web/src/assets/scss/core/navbars/_navbar.scss
@@ -0,0 +1,153 @@
+//
+// Navbar
+//
+
+
+// Navbar links
+
+.navbar-horizontal {
+ .navbar-nav {
+ .nav-link {
+ font-size: $navbar-nav-link-font-size;
+ font-weight: $navbar-nav-link-font-weight;
+ text-transform: $navbar-nav-link-text-transform;
+ letter-spacing: $navbar-nav-link-letter-spacing;
+ @include transition($navbar-transition);
+
+ .nav-link-inner--text {
+ margin-left: .25rem;
+ }
+ }
+ }
+
+
+ // Navbar brand (logo)
+
+ .navbar-brand {
+ font-size: $font-size-sm;
+ font-weight: 600;
+ text-transform: uppercase;
+ font-size: .875rem;
+ letter-spacing: .05px;
+
+ img {
+ height: 30px;
+ }
+ }
+
+ .navbar-dark {
+ .navbar-brand {
+ color: $white;
+ }
+ }
+
+ .navbar-light {
+ .navbar-brand {
+ color: $gray-800;
+ }
+ }
+
+ .navbar-nav {
+ .nav-item {
+ .media:not(:last-child){
+ margin-bottom: 1.5rem;
+ }
+ }
+ }
+
+ @include media-breakpoint-up(lg) {
+ .navbar-nav {
+ .nav-item {
+ margin-right: .5rem;
+
+ [data-toggle="dropdown"]::after {
+ transition: $transition-base;
+ }
+
+ &.show {
+ [data-toggle="dropdown"]::after {
+ transform: rotate(180deg);
+ }
+ }
+ }
+ .nav-link {
+ padding-top: $navbar-nav-link-padding-y;
+ padding-bottom: $navbar-nav-link-padding-y;
+ border-radius: $navbar-nav-link-border-radius;
+
+ i {
+ margin-right: .625rem;
+ }
+ }
+
+ .nav-link-icon {
+ padding-left: .5rem !important;
+ padding-right: .5rem !important;
+ font-size: 1rem;
+ border-radius: $navbar-nav-link-border-radius;
+
+ i {
+ margin-right: 0;
+ }
+ }
+ }
+ }
+
+
+ // Transparent navbar
+
+ .navbar-transparent {
+ position: absolute;
+ top: 0;
+ width: 100%;
+ z-index: 100;
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+
+ .navbar-brand {
+ color: rgba(255, 255, 255, 1);
+ }
+
+ .navbar-toggler {
+ color: rgba(255, 255, 255, 1);
+ }
+
+ .navbar-toggler-icon {
+ background-image: $navbar-dark-toggler-icon-bg;
+ }
+ }
+
+ @include media-breakpoint-up(md) {
+ .navbar-transparent {
+ .navbar-nav {
+ .nav-link {
+ color: $navbar-dark-color;
+
+ @include hover-focus {
+ color: $navbar-dark-hover-color;
+ }
+
+ &.disabled {
+ color: $navbar-dark-disabled-color;
+ }
+ }
+
+ .show > .nav-link,
+ .active > .nav-link,
+ .nav-link.show,
+ .nav-link.active {
+ color: $navbar-dark-active-color;
+ }
+ }
+
+ .navbar-brand {
+ color: $navbar-dark-color;
+
+ @include hover-focus {
+ color: $navbar-dark-color;
+ }
+ }
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/navs/_nav-pills.scss b/web/src/assets/scss/core/navs/_nav-pills.scss
new file mode 100755
index 0000000..9fe2a37
--- /dev/null
+++ b/web/src/assets/scss/core/navs/_nav-pills.scss
@@ -0,0 +1,66 @@
+//
+// Nav pills
+//
+
+
+// General styles
+
+.nav-pills {
+ .nav-item:not(:last-child) {
+ padding-right: $nav-pills-space-x;
+ }
+
+ .nav-link {
+ padding: $nav-pills-padding-y $nav-pills-padding-x;
+ color: $nav-pills-link-color;
+ font-weight: 500;
+ font-size: $font-size-sm;
+ box-shadow: $nav-pills-box-shadow;
+ background-color: $nav-pills-bg;
+ transition: $transition-base;
+
+ &:hover {
+ color: $nav-pills-link-hover-color;
+ }
+ }
+
+ .nav-link.active,
+ .show > .nav-link {
+ color: $nav-pills-link-active-color;
+ background-color: $nav-pills-link-active-bg;
+ }
+
+ @include media-breakpoint-down(xs) {
+ .nav-item {
+ margin-bottom: $spacer;
+ }
+ }
+}
+
+@include media-breakpoint-down(sm) {
+ .nav-pills:not(.nav-pills-circle) {
+ .nav-item {
+ padding-right: 0;
+ }
+ }
+}
+
+
+// Rounded circle nav pills
+
+.nav-pills-circle {
+ .nav-link {
+ text-align: center;
+ height: 60px;
+ width: 60px;
+ padding: 0;
+ line-height: 60px;
+ border-radius: 50%;
+ }
+
+ .nav-link-icon {
+ i, svg {
+ font-size: 1rem;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/navs/_nav.scss b/web/src/assets/scss/core/navs/_nav.scss
new file mode 100755
index 0000000..ed1a9f3
--- /dev/null
+++ b/web/src/assets/scss/core/navs/_nav.scss
@@ -0,0 +1,33 @@
+//
+// Nav
+//
+
+
+// Nav wrapper (container)
+
+// Nav wrapper
+.nav-wrapper {
+ padding: 1rem 0;
+ @include border-top-radius($card-border-radius);
+
+ + .card {
+ @include border-top-radius(0);
+ @include border-bottom-radius($card-border-radius);
+ }
+}
+
+
+// Nav links
+
+.nav-link {
+ color: $nav-link-color;
+
+ &:hover {
+ color: $nav-link-hover-color;
+ }
+
+ i.ni {
+ position: relative;
+ top: 2px;
+ }
+}
diff --git a/web/src/assets/scss/core/paginations/_pagination.scss b/web/src/assets/scss/core/paginations/_pagination.scss
new file mode 100755
index 0000000..02f7627
--- /dev/null
+++ b/web/src/assets/scss/core/paginations/_pagination.scss
@@ -0,0 +1,48 @@
+//
+// Pagination
+//
+
+
+.page-item {
+ &.active .page-link {
+ box-shadow: $pagination-active-box-shadow;
+ }
+
+ .page-link,
+ span {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0;
+ margin: 0 3px;
+ border-radius: 50% !important;
+ width: 36px;
+ height: 36px;
+ font-size: $font-size-sm;
+ }
+}
+
+
+// Size variations
+
+.pagination-lg {
+ .page-item {
+ .page-link,
+ span {
+ width: 46px;
+ height: 46px;
+ line-height: 46px;
+ }
+ }
+}
+
+.pagination-sm {
+ .page-item {
+ .page-link,
+ span {
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/popovers/_popover.scss b/web/src/assets/scss/core/popovers/_popover.scss
new file mode 100755
index 0000000..52cedec
--- /dev/null
+++ b/web/src/assets/scss/core/popovers/_popover.scss
@@ -0,0 +1,21 @@
+//
+// Popover
+//
+
+
+.popover {
+ border: 0;
+}
+
+.popover-header {
+ font-weight: $font-weight-bold;
+}
+
+
+// Alternative colors
+
+@each $color, $value in $theme-colors {
+ .popover-#{$color} {
+ @include popover-variant($value);
+ }
+}
diff --git a/web/src/assets/scss/core/progresses/_progress.scss b/web/src/assets/scss/core/progresses/_progress.scss
new file mode 100755
index 0000000..70a5043
--- /dev/null
+++ b/web/src/assets/scss/core/progresses/_progress.scss
@@ -0,0 +1,79 @@
+//
+// Progress
+//
+
+
+// Progress container
+
+.progress-wrapper {
+ position: relative;
+ padding-top: 1.5rem;
+}
+
+
+// General styles
+
+.progress {
+ height: 8px;
+ margin-bottom: $spacer;
+ overflow: hidden;
+ border-radius: $border-radius-sm;
+ background-color: $progress-bg;
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+
+ .sr-only {
+ width: auto;
+ height: 20px;
+ margin: 0 0 0 30px;
+ left: 0;
+ clip: auto;
+ line-height: 20px;
+ font-size: 13px;
+ }
+}
+
+
+// Progress inner elements
+
+.progress-heading {
+ font-size: 14px;
+ font-weight: 500;
+ margin: 0 0 2px;
+ padding: 0;
+}
+
+.progress-bar {
+ box-shadow: none;
+ border-radius: 0;
+ height: auto;
+}
+
+.progress-info{
+ margin-bottom: .5rem;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.progress-label {
+ span {
+ display: inline-block;
+ color: $primary;
+ font-size: .625rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ background: rgba($primary, .1);
+ padding: .25rem 1rem;
+ border-radius: 30px;
+ }
+}
+
+.progress-percentage {
+ text-align: right;
+ span {
+ display: inline-block;
+ color: $gray-600;
+ font-size: .875rem;
+ font-weight: 600;
+ }
+}
diff --git a/web/src/assets/scss/core/separators/_separator.scss b/web/src/assets/scss/core/separators/_separator.scss
new file mode 100755
index 0000000..4808dfb
--- /dev/null
+++ b/web/src/assets/scss/core/separators/_separator.scss
@@ -0,0 +1,54 @@
+//
+// Separator
+// add svg on top or bottom of a section for a more stylish visual
+//
+
+
+.separator {
+ position: absolute;
+ top: auto;
+ left: 0;
+ right: 0;
+ width: 100%;
+ height: 150px;
+ transform: translateZ(0);
+ overflow: hidden;
+ pointer-events: none;
+
+ svg {
+ position: absolute;
+ pointer-events: none;
+ }
+}
+
+.separator-top {
+ top: 0;
+ bottom: auto;
+
+ svg {
+ top: 0;
+ }
+}
+
+.separator-bottom {
+ top: auto;
+ bottom: 0;
+
+ svg {
+ bottom: 0;
+ }
+}
+
+.separator-inverse {
+ transform: rotate(180deg);
+}
+
+// Styles
+
+.separator-skew {
+ height: 60px;
+
+ @include media-breakpoint-up(xl) {
+ height: 70px;
+ }
+}
diff --git a/web/src/assets/scss/core/tables/_table.scss b/web/src/assets/scss/core/tables/_table.scss
new file mode 100755
index 0000000..18475b5
--- /dev/null
+++ b/web/src/assets/scss/core/tables/_table.scss
@@ -0,0 +1,118 @@
+//
+// Table
+//
+
+
+// General styles
+
+.table {
+ thead th {
+ padding-top: $table-head-spacer-y;
+ padding-bottom: $table-head-spacer-y;
+ font-size: $table-head-font-size;
+ text-transform: $table-head-text-transform;
+ letter-spacing: $table-head-letter-spacing;
+ border-bottom: $table-border-width solid $table-border-color;
+ }
+
+ th {
+ font-weight: $table-head-font-weight;
+ }
+
+ td {
+ .progress {
+ height: 3px;
+ width: 120px;
+ margin: 0;
+ }
+ }
+
+ td,
+ th {
+ font-size: $table-body-font-size;
+ white-space: nowrap;
+ }
+
+
+ // Vetical align table content
+
+ &.align-items-center {
+ td,
+ th {
+ vertical-align: middle;
+ }
+ }
+
+
+ // Styles for dark table
+
+ .thead-dark {
+ th {
+ background-color: $table-dark-head-bg;
+ color: $table-dark-head-color;
+ }
+ }
+
+
+ // Styles for light table
+
+ .thead-light {
+ th {
+ background-color: $table-head-bg;
+ color: $table-head-color;
+ }
+ }
+}
+
+
+// Add transition for hover state
+
+.table-hover {
+ tr {
+ @include transition($transition-base);
+ }
+}
+
+
+// Flush tables
+
+.table-flush {
+ td,
+ th {
+ border-left: 0;
+ border-right: 0;
+ }
+
+ tbody {
+ tr {
+ &:first-child {
+ td,
+ th {
+ border-top: 0;
+ }
+ }
+
+ &:last-child {
+ td,
+ th {
+ border-bottom: 0;
+ }
+ }
+ }
+ }
+}
+
+
+// Tables inside cards
+
+.card {
+ .table {
+ margin-bottom: 0;
+
+ td,
+ th {
+ padding-left: $card-spacer-x;
+ padding-right: $card-spacer-x;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/type/_article.scss b/web/src/assets/scss/core/type/_article.scss
new file mode 100755
index 0000000..47ac1c7
--- /dev/null
+++ b/web/src/assets/scss/core/type/_article.scss
@@ -0,0 +1,22 @@
+//
+// Article
+//
+
+article {
+ h4:not(:first-child),
+ h5:not(:first-child) {
+ margin-top: 3rem;
+ }
+
+ h4, h5 {
+ margin-bottom: 1.5rem;
+ }
+
+ figure {
+ margin: 3rem 0;
+ }
+
+ h5 + figure {
+ margin-top: 0;
+ }
+}
diff --git a/web/src/assets/scss/core/type/_display.scss b/web/src/assets/scss/core/type/_display.scss
new file mode 100755
index 0000000..c0b1ec5
--- /dev/null
+++ b/web/src/assets/scss/core/type/_display.scss
@@ -0,0 +1,14 @@
+//
+// Display
+//
+
+
+.display-1,
+.display-2,
+.display-3,
+.display-4 {
+ span {
+ display: block;
+ font-weight: $font-weight-light;
+ }
+}
diff --git a/web/src/assets/scss/core/type/_heading.scss b/web/src/assets/scss/core/type/_heading.scss
new file mode 100755
index 0000000..eb028b7
--- /dev/null
+++ b/web/src/assets/scss/core/type/_heading.scss
@@ -0,0 +1,52 @@
+//
+// Heading
+//
+
+
+// General styles
+
+.heading {
+ letter-spacing: $heading-letter-spacing;
+ font-size: $heading-font-size;
+ text-transform: $heading-text-transform;
+ font-weight: $heading-font-weight;
+}
+
+
+// Heading variations
+
+.heading-small {
+ padding-top: .25rem;
+ padding-bottom: .25rem;
+ font-size: .75rem;
+ text-transform: uppercase;
+ letter-spacing: .04em;
+}
+
+.heading-title {
+ letter-spacing: $heading-title-letter-spacing;
+ font-size: $heading-title-font-size;
+ font-weight: $heading-title-font-weight;
+ text-transform: $heading-title-text-transform;
+}
+
+.heading-section {
+ letter-spacing: $heading-section-letter-spacing;
+ font-size: $heading-section-font-size;
+ font-weight: $heading-section-font-weight;
+ text-transform: $heading-section-text-transform;
+
+ img {
+ display: block;
+ width: 72px;
+ height: 72px;
+ margin-bottom: 1.5rem;
+ }
+
+ &.text-center {
+ img {
+ margin-left: auto;
+ margin-right: auto;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/type/_type.scss b/web/src/assets/scss/core/type/_type.scss
new file mode 100755
index 0000000..6512a7f
--- /dev/null
+++ b/web/src/assets/scss/core/type/_type.scss
@@ -0,0 +1,27 @@
+//
+// Type
+//
+
+
+// Paragraphs
+
+p {
+ font-size: $paragraph-font-size;
+ font-weight: $paragraph-font-weight;
+ line-height: $paragraph-line-height;
+}
+
+.lead {
+ font-size: $lead-font-size;
+ font-weight: $lead-font-weight;
+ line-height: $paragraph-line-height;
+ margin-top: 1.5rem;
+
+ + .btn-wrapper {
+ margin-top: 3rem;
+ }
+}
+
+.description {
+ font-size: $font-size-sm;
+}
diff --git a/web/src/assets/scss/core/utilities/_backgrounds.scss b/web/src/assets/scss/core/utilities/_backgrounds.scss
new file mode 100755
index 0000000..45a9f06
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_backgrounds.scss
@@ -0,0 +1,51 @@
+//
+// Backgrounds
+//
+
+
+@each $color, $value in $colors {
+ @include bg-variant(".bg-#{$color}", $value, $ignore-warning: true);
+}
+
+@each $color, $value in $theme-colors {
+ @include bg-gradient-variant(".bg-gradient-#{$color}", $value, $ignore-warning: true);
+}
+
+@each $color, $value in $colors {
+ @include bg-gradient-variant(".bg-gradient-#{$color}", $value, $ignore-warning: true);
+}
+
+
+// Background colors with transparency
+
+@each $color, $value in $theme-colors {
+ @include bg-translucent-variant(".bg-translucent-#{$color}", $value, $ignore-warning: true);
+}
+
+
+// Sections backgrounds
+
+@each $color, $value in $section-colors {
+ @include bg-variant(".section-#{$color}", $value, $ignore-warning: true);
+}
+
+@each $color, $value in $theme-colors {
+ @include bg-gradient-variant(".bg-gradient-#{$color}", $value, $ignore-warning: true);
+}
+
+
+// Shape (svg) fill colors
+
+@each $color, $value in $theme-colors {
+ .fill-#{$color} {
+ fill: $value;
+ }
+
+ .stroke-#{$color} {
+ stroke: $value;
+ }
+}
+
+.fill-opacity-8 {
+ fill-opacity: .8;
+}
diff --git a/web/src/assets/scss/core/utilities/_blurable.scss b/web/src/assets/scss/core/utilities/_blurable.scss
new file mode 100755
index 0000000..a558c0d
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_blurable.scss
@@ -0,0 +1,37 @@
+//
+// Blurable
+// add a blue effect on hover on any element with .blur--hover class
+//
+
+.blur--hover {
+ position: relative;
+
+ .blur-item {
+ transition: 1s cubic-bezier(.19,1,.22,1);
+ will-change: transform;
+ filter: blur(0);
+ opacity: 1;
+ }
+
+ .blur-hidden {
+ position: absolute;
+ top: calc(50% + 7px);
+ left: 50%;
+ transform: translate(-50%, -50%);
+ opacity: 0;
+ transition: $transition-base;
+ z-index: 100;
+ }
+ &:hover {
+ .blur-item {
+ opacity: .8;
+ filter: blur(10px);
+ transform: scale(.95);
+ z-index: 1;
+ }
+ .blur-hidden {
+ opacity: 1;
+ top: 50%;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/utilities/_floating.scss b/web/src/assets/scss/core/utilities/_floating.scss
new file mode 100755
index 0000000..eaa90fc
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_floating.scss
@@ -0,0 +1,64 @@
+//
+// Floating
+// floating animation utility class
+//
+
+
+.floating {
+ animation: floating 3s ease infinite;
+ will-change: transform;
+
+ &:hover {
+ animation-play-state: paused;
+ }
+}
+
+
+// Size variations
+
+.floating-lg {
+ animation: floating-lg 3s ease infinite;
+}
+
+.floating-sm {
+ animation: floating-sm 3s ease infinite;
+}
+
+
+// Keyframes
+
+@keyframes floating-lg {
+ 0% {
+ transform: translateY(0px)
+ }
+ 50% {
+ transform: translateY(15px)
+ }
+ 100% {
+ transform: translateY(0px)
+ }
+}
+
+@keyframes floating {
+ 0% {
+ transform: translateY(0px)
+ }
+ 50% {
+ transform: translateY(10px)
+ }
+ 100% {
+ transform: translateY(0px)
+ }
+}
+
+@keyframes floating-sm {
+ 0% {
+ transform: translateY(0px)
+ }
+ 50% {
+ transform: translateY(5px)
+ }
+ 100% {
+ transform: translateY(0px)
+ }
+}
diff --git a/web/src/assets/scss/core/utilities/_helper.scss b/web/src/assets/scss/core/utilities/_helper.scss
new file mode 100755
index 0000000..013bd28
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_helper.scss
@@ -0,0 +1,18 @@
+//
+// Helper
+// helper classes for different cases
+//
+
+
+// Clearfix for sections that use float property
+
+.floatfix {
+ &:before,
+ &:after {
+ content: '';
+ display: table;
+ }
+ &:after {
+ clear: both;
+ }
+}
diff --git a/web/src/assets/scss/core/utilities/_image.scss b/web/src/assets/scss/core/utilities/_image.scss
new file mode 100755
index 0000000..8bdfbbc
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_image.scss
@@ -0,0 +1,9 @@
+//
+// Image
+//
+
+.img-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
diff --git a/web/src/assets/scss/core/utilities/_opacity.scss b/web/src/assets/scss/core/utilities/_opacity.scss
new file mode 100755
index 0000000..812bfd8
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_opacity.scss
@@ -0,0 +1,35 @@
+//
+// Opacity
+// modify the transparency of an element with this quick modifier classes
+//
+
+.opacity-1 {
+ opacity: .1 !important;
+}
+.opacity-2 {
+ opacity: .2 !important;
+}
+.opacity-3 {
+ opacity: .3 !important;
+}
+.opacity-4 {
+ opacity: .4 !important;
+}
+.opacity-5 {
+ opacity: .5 !important;
+}
+.opacity-6 {
+ opacity: .6 !important;
+}
+.opacity-7 {
+ opacity: .7 !important;
+}
+.opacity-8 {
+ opacity: .8 !important;
+}
+.opacity-8 {
+ opacity: .9 !important;
+}
+.opacity-10 {
+ opacity: 1 !important;
+}
diff --git a/web/src/assets/scss/core/utilities/_overflow.scss b/web/src/assets/scss/core/utilities/_overflow.scss
new file mode 100755
index 0000000..b4063fc
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_overflow.scss
@@ -0,0 +1,11 @@
+//
+// Overflow
+//
+
+.overflow-visible {
+ overflow: visible !important;
+}
+
+.overflow-hidden {
+ overflow: hidden !important;
+}
diff --git a/web/src/assets/scss/core/utilities/_position.scss b/web/src/assets/scss/core/utilities/_position.scss
new file mode 100755
index 0000000..58aaa09
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_position.scss
@@ -0,0 +1,25 @@
+//
+// Position
+// modifier classes to be applied on an abosolute positioned element
+// use it next to .position-absolute class
+//
+
+@each $size, $value in $spacers {
+ .top-#{$size} {
+ top: $value;
+ }
+ .right-#{$size} {
+ right: $value;
+ }
+ .bottom-#{$size} {
+ bottom: $value;
+ }
+ .left-#{$size} {
+ left: $value;
+ }
+}
+
+.center {
+ left: 50%;
+ transform: translateX(-50%);
+}
diff --git a/web/src/assets/scss/core/utilities/_shadows.scss b/web/src/assets/scss/core/utilities/_shadows.scss
new file mode 100755
index 0000000..8907c8b
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_shadows.scss
@@ -0,0 +1,28 @@
+//
+// Shadows
+//
+
+// General styles
+[class*="shadow"] {
+ @if $enable-transitions {
+ transition: $transition-base;
+ }
+}
+
+
+// Size variations
+.shadow-sm--hover:hover {
+ box-shadow: $box-shadow-sm !important;
+}
+
+.shadow--hover:hover {
+ box-shadow: $box-shadow !important;
+}
+
+.shadow-lg--hover:hover {
+ box-shadow: $box-shadow-lg !important;
+}
+
+.shadow-none--hover:hover {
+ box-shadow: none !important;
+}
diff --git a/web/src/assets/scss/core/utilities/_sizing.scss b/web/src/assets/scss/core/utilities/_sizing.scss
new file mode 100755
index 0000000..5dd6b21
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_sizing.scss
@@ -0,0 +1,7 @@
+//
+// Height
+//
+
+.h-100vh {
+ height: 100vh !important;
+}
diff --git a/web/src/assets/scss/core/utilities/_spacing.scss b/web/src/assets/scss/core/utilities/_spacing.scss
new file mode 100755
index 0000000..b3fb9fa
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_spacing.scss
@@ -0,0 +1,107 @@
+//
+// Spacing
+//
+
+.row.row-grid > [class*="col-"] + [class*="col-"] {
+ margin-top: 3rem;
+}
+
+@include media-breakpoint-up(lg) {
+ .row.row-grid > [class*="col-lg-"] + [class*="col-lg-"] {
+ margin-top: 0;
+ }
+}
+@include media-breakpoint-up(md) {
+ .row.row-grid > [class*="col-md-"] + [class*="col-md-"] {
+ margin-top: 0;
+ }
+}
+@include media-breakpoint-up(sm) {
+ .row.row-grid > [class*="col-sm-"] + [class*="col-sm-"] {
+ margin-top: 0;
+ }
+}
+
+.row-grid + .row-grid {
+ margin-top: 3rem;
+}
+
+
+// Negative margins and paddings
+
+@media(min-width: 992px) {
+ [class*="mt--"],
+ [class*="mr--"],
+ [class*="mb--"],
+ [class*="ml--"] {
+
+ }
+
+
+ // Large negative margins in pixels
+
+ .mt--100 {
+ margin-top: -100px !important;
+ }
+ .mr--100 {
+ margin-right: -100px !important;
+ }
+ .mb--100 {
+ margin-bottom: -100px !important;
+ }
+ .ml--100 {
+ margin-left: -100px !important;
+ }
+ .mt--150 {
+ margin-top: -150px !important;
+ }
+ .mb--150 {
+ margin-bottom: -150px !important;
+ }
+ .mt--200 {
+ margin-top: -200px !important;
+ }
+ .mb--200 {
+ margin-bottom: -200px !important;
+ }
+ .mt--300 {
+ margin-top: -300px !important;
+ }
+ .mb--300 {
+ margin-bottom: -300px !important;
+ }
+
+
+ // Large margins in pixels
+
+ .pt-100 {
+ padding-top: 100px !important;
+ }
+ .pb-100 {
+ padding-bottom: 100px !important;
+ }
+ .pt-150 {
+ padding-top: 150px !important;
+ }
+ .pb-150 {
+ padding-bottom: 150px !important;
+ }
+ .pt-200 {
+ padding-top: 200px !important;
+ }
+ .pb-200 {
+ padding-bottom: 200px !important;
+ }
+ .pt-250 {
+ padding-top: 250px !important;
+ }
+ .pb-250 {
+ padding-bottom: 250px !important;
+ }
+ .pt-300 {
+ padding-top: 300px!important;
+ }
+ .pb-300 {
+ padding-bottom: 300px!important;
+ }
+}
diff --git a/web/src/assets/scss/core/utilities/_text.scss b/web/src/assets/scss/core/utilities/_text.scss
new file mode 100755
index 0000000..65c1f6c
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_text.scss
@@ -0,0 +1,49 @@
+// Weight and italics
+
+.font-weight-300 { font-weight: 300 !important; }
+.font-weight-400 { font-weight: 400 !important; }
+.font-weight-500 { font-weight: 500 !important; }
+.font-weight-600 { font-weight: 600 !important; }
+.font-weight-700 { font-weight: 700 !important; }
+.font-weight-800 { font-weight: 800 !important; }
+.font-weight-900 { font-weight: 900 !important; }
+
+
+// Text decorations
+
+.text-underline { text-decoration: underline; }
+.text-through { text-decoration: line-through; }
+
+
+// Text size
+
+.text-xs { font-size: $font-size-xs !important; }
+.text-sm { font-size: $font-size-sm !important; }
+.text-lg { font-size: $font-size-lg !important; }
+.text-xl { font-size: $font-size-xl !important; }
+
+
+// Line heights
+
+.lh-100 { line-height: 1; }
+.lh-110 { line-height: 1.1; }
+.lh-120 { line-height: 1.2; }
+.lh-130 { line-height: 1.3; }
+.lh-140 { line-height: 1.4; }
+.lh-150 { line-height: 1.5; }
+.lh-160 { line-height: 1.6; }
+.lh-170 { line-height: 1.7; }
+.lh-180 { line-height: 1.8; }
+
+
+// Letter spacings
+
+.ls-1 { letter-spacing: .0625rem; }
+.ls-15 { letter-spacing: .09375rem; }
+.ls-2 { letter-spacing: 0.125rem; }
+
+// Color variations
+
+@each $color, $value in $colors {
+ @include text-emphasis-variant(".text-#{$color}", $value);
+}
diff --git a/web/src/assets/scss/core/utilities/_transform.scss b/web/src/assets/scss/core/utilities/_transform.scss
new file mode 100755
index 0000000..e595bf8
--- /dev/null
+++ b/web/src/assets/scss/core/utilities/_transform.scss
@@ -0,0 +1,13 @@
+//
+// Tranform
+//
+
+
+@include media-breakpoint-up(lg) {
+ .transform-perspective-right {
+ transform: scale(1) perspective(1040px) rotateY(-11deg) rotateX(2deg) rotate(2deg);
+ }
+ .transform-perspective-left{
+ transform: scale(1) perspective(2000px) rotateY(11deg) rotateX(2deg) rotate(-2deg)
+ }
+}
diff --git a/web/src/assets/scss/core/vendors/_flatpickr.scss b/web/src/assets/scss/core/vendors/_flatpickr.scss
new file mode 100644
index 0000000..655e982
--- /dev/null
+++ b/web/src/assets/scss/core/vendors/_flatpickr.scss
@@ -0,0 +1,72 @@
+%active-day {
+ background: $datepicker-active-background;
+ color: $datepicker-active-color;
+ box-shadow: $datepicker-active-box-shadow;
+ border: none;
+}
+.flatpickr-calendar {
+ @include box-shadow($dropdown-box-shadow);
+ padding: $datepicker-dropdown-padding;
+ width: 347px;
+ color: $gray-700;
+
+ .flatpickr-weekday {
+ text-align: center;
+ font-size: $font-size-sm;
+ color: $gray-700;
+ font-weight: normal;
+ }
+ .flatpickr-day {
+ border: none;
+ }
+ .flatpickr-day:hover {
+ @extend %active-day;
+ }
+ .flatpickr-day.selected {
+ @extend %active-day;
+ &:hover {
+ @extend %active-day;
+ }
+ }
+
+ .flatpickr-day.today {
+ border: 1px solid $datepicker-active-background;
+ &:hover {
+ background: $datepicker-active-background;
+ color: $datepicker-active-color;
+ }
+ }
+ .flatpickr-day.inRange {
+ background: $datepicker-active-background !important;
+ color: $datepicker-active-color;
+ box-shadow: -5px 0 0 $datepicker-active-background, 5px 0 0 $datepicker-active-background;
+ border: none !important;
+ }
+
+ .flatpickr-day.startRange, .flatpickr-day.endRange {
+ background: $datepicker-active-background;
+ }
+
+ .flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
+ .flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
+ .flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
+ box-shadow: -10px 0 0 $datepicker-active-background;
+ }
+
+ .flatpickr-months .flatpickr-prev-month:hover svg,
+ .flatpickr-months .flatpickr-next-month:hover svg{
+ fill: $datepicker-active-background;
+ }
+
+ .flatpickr-current-month span.cur-month,
+ .flatpickr-current-month input.cur-year{
+ padding: 0 10px;
+ color: $gray-700;
+ font-size: $font-size-sm;
+ font-weight: 500;
+ &:hover {
+ background: $gray-200;
+ border-radius: $datepicker-header-cell-border-radius;
+ }
+ }
+}
diff --git a/web/src/assets/scss/core/vendors/_headroom.scss b/web/src/assets/scss/core/vendors/_headroom.scss
new file mode 100755
index 0000000..3542e4a
--- /dev/null
+++ b/web/src/assets/scss/core/vendors/_headroom.scss
@@ -0,0 +1,25 @@
+//
+// Headroom
+//
+
+
+.headroom {
+ will-change: transform;
+ background-color: inherit;
+ @include transition($transition-base);
+}
+.headroom--pinned {
+ @extend .position-fixed;
+ transform: translateY(0%);
+}
+.headroom--unpinned {
+ @extend .position-fixed;
+ transform: translateY(-100%);
+}
+
+.headroom--not-top {
+ padding-top: .5rem;
+ padding-bottom: .5rem;
+ background-color: theme-color("default") !important;
+ box-shadow: 0 1px 10px rgba(130, 130, 134, 0.1);
+}
diff --git a/web/src/assets/scss/core/vendors/_nouislider.scss b/web/src/assets/scss/core/vendors/_nouislider.scss
new file mode 100755
index 0000000..cb99d77
--- /dev/null
+++ b/web/src/assets/scss/core/vendors/_nouislider.scss
@@ -0,0 +1,410 @@
+//
+// NoUi Slider
+//
+
+
+// Original styles
+
+.noUi-target,
+.noUi-target * {
+ -webkit-touch-callout: none;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+ -webkit-user-select: none;
+ touch-action: none;
+ user-select: none;
+ box-sizing: border-box;
+}
+
+.noUi-target {
+ position: relative;
+ direction: ltr;
+}
+
+.noUi-base,
+.noUi-connects {
+ width: 100%;
+ height: 100%;
+ position: relative;
+ z-index: 1;
+}
+
+
+// Wrapper for all connect elements
+
+.noUi-connects {
+ overflow: hidden;
+ z-index: 0;
+}
+
+.noUi-connect,
+.noUi-origin {
+ will-change: transform;
+ position: absolute;
+ z-index: 1;
+ top: 0;
+ left: 0;
+ height: 100%;
+ width: 100%;
+ transform-origin: 0 0;
+}
+
+
+html:not([dir="rtl"]) .noUi-horizontal .noUi-origin {
+ left: 100%;
+ width: 10%;
+ right: 0;
+}
+
+.noUi-vertical .noUi-origin {
+ width: 0;
+}
+
+.noUi-horizontal .noUi-origin {
+ height: 0;
+}
+
+.noUi-handle {
+ position: absolute;
+}
+
+.noUi-state-tap .noUi-connect,
+.noUi-state-tap .noUi-origin {
+ transition: transform .3s;
+}
+
+.noUi-state-drag * {
+ cursor: inherit !important;
+}
+
+.noUi-horizontal {
+ height: $noui-target-thickness;
+}
+
+.noUi-horizontal .noUi-handle {
+ width: 34px;
+ height: 28px;
+ left: -17px;
+ top: -6px;
+}
+
+.noUi-vertical {
+ width: $noui-target-thickness;
+}
+
+.noUi-vertical .noUi-handle {
+ width: 28px;
+ height: 34px;
+ left: -6px;
+ top: -17px;
+}
+
+html:not([dir="rtl"]) .noUi-horizontal .noUi-handle {
+ left: auto;
+}
+
+.noUi-connects {
+ border-radius: 3px;
+}
+
+.noUi-connect {
+ background: $noui-slider-connect-bg;
+}
+
+.noUi-draggable {
+ cursor: ew-resize;
+}
+
+.noUi-vertical .noUi-draggable {
+ cursor: ns-resize;
+}
+
+.noUi-handle {
+ border: 1px solid #D9D9D9;
+ border-radius: 3px;
+ background: #FFF;
+ cursor: default;
+ box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB;
+ outline: none;
+}
+
+.noUi-active {
+ outline: none;
+}
+
+
+/* Disabled state;
+ */
+
+[disabled] .noUi-connect {
+ background: #B8B8B8;
+}
+
+[disabled].noUi-target,
+[disabled].noUi-handle,
+[disabled] .noUi-handle {
+ cursor: not-allowed;
+}
+
+
+/* Base;
+ *
+ */
+
+.noUi-pips,
+.noUi-pips * {
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.noUi-pips {
+ position: absolute;
+ color: #999;
+}
+
+
+/* Values;
+ *
+ */
+
+.noUi-value {
+ position: absolute;
+ white-space: nowrap;
+ text-align: center;
+}
+
+.noUi-value-sub {
+ color: #ccc;
+ font-size: 10px;
+}
+
+
+/* Markings;
+ *
+ */
+
+.noUi-marker {
+ position: absolute;
+ background: #CCC;
+}
+
+.noUi-marker-sub {
+ background: #AAA;
+}
+
+.noUi-marker-large {
+ background: #AAA;
+}
+
+
+/* Horizontal layout;
+ *
+ */
+
+.noUi-pips-horizontal {
+ padding: 10px 0;
+ height: 80px;
+ top: 100%;
+ left: 0;
+ width: 100%;
+}
+
+.noUi-value-horizontal {
+ transform: translate(-50%, 50%);
+}
+
+.noUi-rtl .noUi-value-horizontal {
+ transform: translate(50%, 50%);
+}
+
+.noUi-marker-horizontal.noUi-marker {
+ margin-left: -1px;
+ width: 2px;
+ height: 5px;
+}
+
+.noUi-marker-horizontal.noUi-marker-sub {
+ height: 10px;
+}
+
+.noUi-marker-horizontal.noUi-marker-large {
+ height: 15px;
+}
+
+
+/* Vertical layout;
+ *
+ */
+
+.noUi-pips-vertical {
+ padding: 0 10px;
+ height: 100%;
+ top: 0;
+ left: 100%;
+}
+
+.noUi-value-vertical {
+ -webkit-transform: translate(0, -50%);
+ transform: translate(0, -50%, 0);
+ padding-left: 25px;
+}
+
+.noUi-rtl .noUi-value-vertical {
+ -webkit-transform: translate(0, 50%);
+ transform: translate(0, 50%);
+}
+
+.noUi-marker-vertical.noUi-marker {
+ width: 5px;
+ height: 2px;
+ margin-top: -1px;
+}
+
+.noUi-marker-vertical.noUi-marker-sub {
+ width: 10px;
+}
+
+.noUi-marker-vertical.noUi-marker-large {
+ width: 15px;
+}
+
+.noUi-tooltip {
+ display: block;
+ position: absolute;
+ border: 1px solid #D9D9D9;
+ border-radius: 3px;
+ background: #fff;
+ color: #000;
+ padding: 5px;
+ text-align: center;
+ white-space: nowrap;
+}
+
+.noUi-horizontal .noUi-tooltip {
+ -webkit-transform: translate(-50%, 0);
+ transform: translate(-50%, 0);
+ left: 50%;
+ bottom: 120%;
+}
+
+.noUi-vertical .noUi-tooltip {
+ -webkit-transform: translate(0, -50%);
+ transform: translate(0, -50%);
+ top: 50%;
+ right: 120%;
+}
+
+
+// Custom styles
+
+.noUi-target {
+ background: $noui-target-bg;
+ border-radius: $noui-target-border-radius;
+ border: 0;
+ box-shadow: $noui-target-box-shadow;
+ margin: 15px 0;
+ cursor: pointer;
+}
+
+.noUi-horizontal {
+ height: $noui-target-thickness;
+}
+
+
+.noUi-vertical {
+ width: $noui-target-thickness;
+}
+
+.noUi-connect {
+ background: theme-color("primary");
+ box-shadow: none;
+}
+
+.noUi-handle {
+
+}
+
+.noUi-horizontal .noUi-handle,
+.noUi-vertical .noUi-handle {
+ top: -$noui-target-thickness;
+ width: $noui-handle-width;
+ height: $noui-handle-width;
+ border-radius: 100%;
+ box-shadow: none;
+ cursor: pointer;
+ background-color: $noui-handle-bg;
+ border: $noui-handle-border;
+ transition: box-shadow .15s, transform .15s;
+}
+
+.noUi-horizontal .noUi-handle.noUi-active,
+.noUi-vertical .noUi-handle.noUi-active {
+ box-shadow: 0px 0px 0px 2px rgba($noui-handle-bg, 1);
+}
+
+.input-slider--cyan .noUi-connect {
+ background: $cyan;
+}
+
+
+/* Disabled state */
+
+[disabled] .noUi-connect,
+[disabled].noUi-connect {
+ background: $noui-slider-connect-disabled-bg;
+}
+
+[disabled] .noUi-handle,
+[disabled].noUi-origin {
+ cursor: not-allowed;
+}
+
+/* Range slider value labels */
+
+.range-slider-value {
+ font-size: $font-size-xs;
+ font-weight: 500;
+ background-color: rgba($dark, .7);
+ color: color-yiq($dark);
+ border-radius: 10px;
+ padding: .4em .8em .3em .85em;
+}
+
+.range-slider-wrapper .upper-info {
+ font-weight: 400;
+ margin-bottom: 5px;
+}
+
+.input-slider-value-output {
+ background: #333;
+ color: #fff;
+ padding: 4px 8px;
+ position: relative;
+ top: 12px;
+ font-size: 11px;
+ border-radius: 2px;
+}
+
+.input-slider-value-output:after {
+ bottom: 100%;
+ left: 10px;
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+ pointer-events: none;
+ border-color: rgba(136, 183, 213, 0);
+ border-bottom-color: #333;
+ border-width: 4px;
+ margin-left: -4px;
+}
+
+.input-slider-value-output.left:after {
+ left: 10px;
+ right: auto;
+}
+
+.input-slider-value-output.right:after {
+ right: 10px;
+ left: auto;
+}
diff --git a/web/src/assets/scss/core/vendors/_scrollbar.scss b/web/src/assets/scss/core/vendors/_scrollbar.scss
new file mode 100755
index 0000000..4aff7d9
--- /dev/null
+++ b/web/src/assets/scss/core/vendors/_scrollbar.scss
@@ -0,0 +1,35 @@
+//
+// Custom scrollbar
+//
+
+.scrollbar-inner {
+ height: 100%;
+
+ &:not(:hover) .scroll-element {
+ opacity: 0;
+ }
+
+ .scroll-element {
+ transition: opacity 300ms;
+ margin-right: 2px;
+
+ .scroll-bar,
+ .scroll-element_track {
+ transition: background-color 300ms;
+ }
+
+ .scroll-element_track {
+ background-color: transparent;
+ }
+ }
+
+ .scroll-element.scroll-y {
+ width: 3px;
+ right: 0;
+ }
+
+ .scroll-element.scroll-x {
+ height: 3px;
+ bottom: 0;
+ }
+}
diff --git a/web/src/assets/scss/custom/_alert.scss b/web/src/assets/scss/custom/_alert.scss
new file mode 100755
index 0000000..2ef0b7c
--- /dev/null
+++ b/web/src/assets/scss/custom/_alert.scss
@@ -0,0 +1,6 @@
+//
+// Alert
+//
+
+@import "../core/alerts/alert";
+@import "../core/alerts/alert-dismissible";
diff --git a/web/src/assets/scss/custom/_avatar.scss b/web/src/assets/scss/custom/_avatar.scss
new file mode 100755
index 0000000..98818a6
--- /dev/null
+++ b/web/src/assets/scss/custom/_avatar.scss
@@ -0,0 +1,6 @@
+//
+// Avatar
+//
+
+@import "../core/avatars/avatar";
+@import "../core/avatars/avatar-group";
diff --git a/web/src/assets/scss/custom/_badge.scss b/web/src/assets/scss/custom/_badge.scss
new file mode 100755
index 0000000..2682e1a
--- /dev/null
+++ b/web/src/assets/scss/custom/_badge.scss
@@ -0,0 +1,7 @@
+//
+// Badge
+//
+
+@import "../core/badges/badge";
+@import "../core/badges/badge-circle";
+@import "../core/badges/badge-dot";
diff --git a/web/src/assets/scss/custom/_buttons.scss b/web/src/assets/scss/custom/_buttons.scss
new file mode 100755
index 0000000..4f2888c
--- /dev/null
+++ b/web/src/assets/scss/custom/_buttons.scss
@@ -0,0 +1,7 @@
+//
+// Button
+//
+
+@import "../core/buttons/button";
+@import "../core/buttons/button-icon";
+@import "../core/buttons/button-brand";
diff --git a/web/src/assets/scss/custom/_card.scss b/web/src/assets/scss/custom/_card.scss
new file mode 100755
index 0000000..1eb5ff3
--- /dev/null
+++ b/web/src/assets/scss/custom/_card.scss
@@ -0,0 +1,9 @@
+//
+// Cards
+//
+
+@import "../core/cards/card";
+@import "../core/cards/card-profile";
+@import "../core/cards/card-blockquote";
+@import "../core/cards/card-animations";
+@import "../core/cards/card-stats";
diff --git a/web/src/assets/scss/custom/_chart.scss b/web/src/assets/scss/custom/_chart.scss
new file mode 100755
index 0000000..836ade8
--- /dev/null
+++ b/web/src/assets/scss/custom/_chart.scss
@@ -0,0 +1,5 @@
+//
+// Chart
+//
+
+@import "../core/charts/chart";
diff --git a/web/src/assets/scss/custom/_close.scss b/web/src/assets/scss/custom/_close.scss
new file mode 100755
index 0000000..292d6a0
--- /dev/null
+++ b/web/src/assets/scss/custom/_close.scss
@@ -0,0 +1,5 @@
+//
+// Close
+//
+
+@import "../core/close/close"
diff --git a/web/src/assets/scss/custom/_components.scss b/web/src/assets/scss/custom/_components.scss
new file mode 100755
index 0000000..8a71d41
--- /dev/null
+++ b/web/src/assets/scss/custom/_components.scss
@@ -0,0 +1,31 @@
+//
+// Components
+//
+
+@import "custom/alert";
+@import "custom/avatar";
+@import "custom/badge";
+@import "custom/buttons";
+@import "custom/card";
+@import "custom/chart";
+@import "custom/close";
+@import "custom/content";
+@import "custom/custom-forms";
+@import "custom/dropdown";
+@import "custom/footer";
+@import "custom/forms";
+@import "custom/header";
+@import "custom/icons";
+@import "custom/input-group";
+@import "custom/list-group";
+@import "custom/map";
+@import "custom/mask";
+@import "custom/modal";
+@import "custom/nav";
+@import "custom/navbar";
+@import "custom/pagination";
+@import "custom/popover";
+@import "custom/progress";
+@import "custom/separator";
+@import "custom/tables";
+@import "custom/type";
diff --git a/web/src/assets/scss/custom/_content.scss b/web/src/assets/scss/custom/_content.scss
new file mode 100755
index 0000000..d0e638b
--- /dev/null
+++ b/web/src/assets/scss/custom/_content.scss
@@ -0,0 +1,47 @@
+.main-content {
+ position: relative;
+
+ // Navbar
+ .navbar-top {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ z-index: 1;
+ background-color: transparent;
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+
+ // Container
+ .container-fluid {
+ @include media-breakpoint-up(md) {
+ padding-left: ($main-content-padding-x + $grid-gutter-width / 2) !important;
+ padding-right: ($main-content-padding-x + $grid-gutter-width / 2) !important;
+ }
+ }
+}
+
+
+// Offsets the main content depending on the sidebar positioning
+
+.navbar-vertical.navbar-expand {
+
+ @each $breakpoint,
+ $dimension in $grid-breakpoints {
+
+ &-#{$breakpoint} {
+
+ @include media-breakpoint-up(#{$breakpoint}) {
+
+ // Left
+ &.fixed-left + .main-content {
+ margin-left: $navbar-vertical-width;
+ } // Right
+ &.fixed-right + .main-content {
+ margin-right: $navbar-vertical-width;
+ }
+ }
+ }
+ }
+}
diff --git a/web/src/assets/scss/custom/_custom-forms.scss b/web/src/assets/scss/custom/_custom-forms.scss
new file mode 100755
index 0000000..92d8290
--- /dev/null
+++ b/web/src/assets/scss/custom/_custom-forms.scss
@@ -0,0 +1,9 @@
+//
+// Custom form
+//
+
+@import "../core/custom-forms/custom-form";
+@import "../core/custom-forms/custom-control";
+@import "../core/custom-forms/custom-checkbox";
+@import "../core/custom-forms/custom-radio";
+@import "../core/custom-forms/custom-toggle";
diff --git a/web/src/assets/scss/custom/_dropdown.scss b/web/src/assets/scss/custom/_dropdown.scss
new file mode 100755
index 0000000..54314b6
--- /dev/null
+++ b/web/src/assets/scss/custom/_dropdown.scss
@@ -0,0 +1,5 @@
+//
+// Dropdown
+//
+
+@import "../core/dropdowns/dropdown";
diff --git a/web/src/assets/scss/custom/_footer.scss b/web/src/assets/scss/custom/_footer.scss
new file mode 100755
index 0000000..9b65604
--- /dev/null
+++ b/web/src/assets/scss/custom/_footer.scss
@@ -0,0 +1,5 @@
+//
+// Footer
+//
+
+@import "../core/footers/footer";
diff --git a/web/src/assets/scss/custom/_forms.scss b/web/src/assets/scss/custom/_forms.scss
new file mode 100755
index 0000000..835edea
--- /dev/null
+++ b/web/src/assets/scss/custom/_forms.scss
@@ -0,0 +1,7 @@
+//
+// Forms
+//
+
+@import "../core/forms/form";
+@import "../core/forms/form-validation";
+@import "../core/forms/input-group";
diff --git a/web/src/assets/scss/custom/_functions.scss b/web/src/assets/scss/custom/_functions.scss
new file mode 100755
index 0000000..d0b556c
--- /dev/null
+++ b/web/src/assets/scss/custom/_functions.scss
@@ -0,0 +1,33 @@
+//
+// Functions
+//
+
+// Bootstrap default functions
+
+@import "~bootstrap/scss/functions";
+
+
+// Retrieve color Sass maps
+
+@function section-color($key: "primary") {
+ @return map-get($section-colors, $key);
+}
+
+
+// Lines colors
+
+@function shapes-primary-color($key: "step-1-gradient-bg") {
+ @return map-get($shapes-primary-colors, $key);
+}
+
+@function shapes-default-color($key: "step-1-gradient-bg") {
+ @return map-get($shapes-default-colors, $key);
+}
+
+@function lines-light-color($key: "step-1-gradient-bg") {
+ @return map-get($shapes-light-colors, $key);
+}
+
+@function shapes-dark-color($key: "step-1-gradient-bg") {
+ @return map-get($shapes-dark-colors, $key);
+}
diff --git a/web/src/assets/scss/custom/_header.scss b/web/src/assets/scss/custom/_header.scss
new file mode 100755
index 0000000..d3fb2bb
--- /dev/null
+++ b/web/src/assets/scss/custom/_header.scss
@@ -0,0 +1,5 @@
+//
+// Header
+//
+
+@import "../core/headers/header";
diff --git a/web/src/assets/scss/custom/_icons.scss b/web/src/assets/scss/custom/_icons.scss
new file mode 100755
index 0000000..86df08e
--- /dev/null
+++ b/web/src/assets/scss/custom/_icons.scss
@@ -0,0 +1,6 @@
+//
+// Icon
+//
+
+@import "../core/icons/icon";
+@import "../core/icons/icon-shape";
diff --git a/web/src/assets/scss/custom/_input-group.scss b/web/src/assets/scss/custom/_input-group.scss
new file mode 100755
index 0000000..cc8f3dc
--- /dev/null
+++ b/web/src/assets/scss/custom/_input-group.scss
@@ -0,0 +1,5 @@
+//
+// Input group
+//
+
+@import "../core/forms/input-group";
diff --git a/web/src/assets/scss/custom/_list-group.scss b/web/src/assets/scss/custom/_list-group.scss
new file mode 100755
index 0000000..c630aa9
--- /dev/null
+++ b/web/src/assets/scss/custom/_list-group.scss
@@ -0,0 +1,5 @@
+//
+// List group
+//
+
+@import "../core/list-groups/list-group";
diff --git a/web/src/assets/scss/custom/_map.scss b/web/src/assets/scss/custom/_map.scss
new file mode 100755
index 0000000..85983c6
--- /dev/null
+++ b/web/src/assets/scss/custom/_map.scss
@@ -0,0 +1,5 @@
+//
+// Maps
+//
+
+@import "../core/maps/map";
diff --git a/web/src/assets/scss/custom/_mask.scss b/web/src/assets/scss/custom/_mask.scss
new file mode 100755
index 0000000..7b27887
--- /dev/null
+++ b/web/src/assets/scss/custom/_mask.scss
@@ -0,0 +1,5 @@
+//
+// Mask
+//
+
+@import "../core/masks/mask";
diff --git a/web/src/assets/scss/custom/_mixins.scss b/web/src/assets/scss/custom/_mixins.scss
new file mode 100755
index 0000000..89e370a
--- /dev/null
+++ b/web/src/assets/scss/custom/_mixins.scss
@@ -0,0 +1,19 @@
+//
+// Mixins
+//
+
+// Bootstrap default mixins
+
+@import "~bootstrap/scss/mixins";
+
+
+// Custom mixins
+
+@import "../core/mixins/alert";
+@import "../core/mixins/badge";
+@import "../core/mixins/background-variant";
+@import "../core/mixins/buttons";
+@import "../core/mixins/forms";
+@import "../core/mixins/icon";
+@import "../core/mixins/modals";
+@import "../core/mixins/popover";
diff --git a/web/src/assets/scss/custom/_modal.scss b/web/src/assets/scss/custom/_modal.scss
new file mode 100755
index 0000000..a33f2e9
--- /dev/null
+++ b/web/src/assets/scss/custom/_modal.scss
@@ -0,0 +1,5 @@
+//
+// Modal
+//
+
+@import "../core/modals/modal";
diff --git a/web/src/assets/scss/custom/_nav.scss b/web/src/assets/scss/custom/_nav.scss
new file mode 100755
index 0000000..b7c7a0b
--- /dev/null
+++ b/web/src/assets/scss/custom/_nav.scss
@@ -0,0 +1,7 @@
+//
+// Nav
+//
+
+
+@import "../core/navs/nav";
+@import "../core/navs/nav-pills";
diff --git a/web/src/assets/scss/custom/_navbar.scss b/web/src/assets/scss/custom/_navbar.scss
new file mode 100755
index 0000000..db24441
--- /dev/null
+++ b/web/src/assets/scss/custom/_navbar.scss
@@ -0,0 +1,9 @@
+//
+// Navbar
+//
+
+@import "../core/navbars/navbar";
+@import "../core/navbars/navbar-vertical";
+@import "../core/navbars/navbar-search";
+@import "../core/navbars/navbar-dropdown";
+@import "../core/navbars/navbar-collapse";
diff --git a/web/src/assets/scss/custom/_pagination.scss b/web/src/assets/scss/custom/_pagination.scss
new file mode 100755
index 0000000..557a8e0
--- /dev/null
+++ b/web/src/assets/scss/custom/_pagination.scss
@@ -0,0 +1,5 @@
+//
+// Pagination
+//
+
+@import "../core/paginations/pagination";
diff --git a/web/src/assets/scss/custom/_popover.scss b/web/src/assets/scss/custom/_popover.scss
new file mode 100755
index 0000000..5e062c4
--- /dev/null
+++ b/web/src/assets/scss/custom/_popover.scss
@@ -0,0 +1,6 @@
+//
+// Popover
+//
+
+
+@import "../core/popovers/popover";
diff --git a/web/src/assets/scss/custom/_progress.scss b/web/src/assets/scss/custom/_progress.scss
new file mode 100755
index 0000000..bf58406
--- /dev/null
+++ b/web/src/assets/scss/custom/_progress.scss
@@ -0,0 +1,5 @@
+//
+// Progress
+//
+
+@import "../core/progresses/progress";
diff --git a/web/src/assets/scss/custom/_reboot.scss b/web/src/assets/scss/custom/_reboot.scss
new file mode 100755
index 0000000..4a49a69
--- /dev/null
+++ b/web/src/assets/scss/custom/_reboot.scss
@@ -0,0 +1,13 @@
+iframe {
+ border: 0;
+}
+
+figcaption,
+figure,
+main {
+ display: block;
+}
+
+main {
+ overflow: hidden;
+}
diff --git a/web/src/assets/scss/custom/_section.scss b/web/src/assets/scss/custom/_section.scss
new file mode 100755
index 0000000..db88d40
--- /dev/null
+++ b/web/src/assets/scss/custom/_section.scss
@@ -0,0 +1,139 @@
+//
+// Sections
+//
+
+
+// Nucleo icons for presentation purpose
+
+.section-nucleo-icons {
+
+ --icon-size: 5rem;
+ --icon-sm-size: 3.75rem;
+ --gutter: 7rem;
+
+ .icons-container {
+ position: relative;
+ max-width: 100%;
+ height: 360px;
+ margin: 0 auto;
+ z-index: 1;
+
+ i {
+ position: absolute;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 50%;
+ background: $white;
+ z-index: 1;
+ transform: translate(-50%, -50%);
+ @include box-shadow($box-shadow);
+ transition: all .2s cubic-bezier(.25,.65,.9,.75);
+
+ &.icon {
+ width: var(--icon-size);
+ height: var(--icon-size);
+ font-size: 1.7em;
+ }
+
+ &.icon-sm {
+ width: var(--icon-sm-size);
+ height: var(--icon-sm-size);
+ font-size: 1.5em;
+ }
+
+ &:nth-child(1) {
+ font-size: 42px;
+ color: theme-color("warning");
+ z-index: 2;
+ }
+ }
+
+ &:not(.on-screen) {
+ i {
+ transform: translate(-50%, -50%);
+ left: 50%;
+ top: 50%;
+
+ &:not(:nth-child(1)) {
+ opacity: 0;
+ }
+ }
+ }
+
+ &.on-screen {
+
+ i {
+ opacity: 1;
+
+ &:nth-child(1) {
+ left: 50%;
+ top: 50%;
+ font-size: 42px;
+ color: theme-color("warning");
+ }
+
+ &:nth-child(2) {
+ left: calc(50% + (var(--gutter) * 1.7));
+ top: 50%;
+ }
+
+ &:nth-child(3) {
+ left: calc(50% + var(--gutter));
+ top: calc(50% + var(--gutter));
+ }
+
+ &:nth-child(4) {
+ left: calc(50% + var(--gutter));
+ top: calc(50% - var(--gutter));
+ }
+
+ &:nth-child(5) {
+ left: calc(50% + (var(--gutter) * 4));
+ top: 50%;
+ }
+
+ &:nth-child(6) {
+ left: calc(50% + (var(--gutter) * 2.7));
+ top: calc(50% + (var(--gutter) * 1.5));
+ }
+
+ &:nth-child(7) {
+ left: calc(50% + (var(--gutter) * 2.7));
+ top: calc(50% - (var(--gutter) * 1.5));
+ }
+
+ &:nth-child(8) {
+ left: calc(50% - (var(--gutter) * 1.7));
+ top: 50%;
+ }
+
+ &:nth-child(9) {
+ left: calc(50% - var(--gutter));
+ top: calc(50% + var(--gutter));
+ }
+
+ &:nth-child(10) {
+ left: calc(50% - var(--gutter));
+ top: calc(50% - var(--gutter));
+ }
+
+ &:nth-child(11) {
+ left: calc(50% - (var(--gutter) * 4));
+ top: 50%;
+ }
+
+ &:nth-child(12) {
+ left: calc(50% - (var(--gutter) * 2.7));
+ top: calc(50% + (var(--gutter) * 1.5));
+ }
+
+ &:nth-child(13) {
+ left: calc(50% - (var(--gutter) * 2.7));
+ top: calc(50% - (var(--gutter) * 1.5));
+ }
+ }
+
+ }
+ }
+}
diff --git a/web/src/assets/scss/custom/_separator.scss b/web/src/assets/scss/custom/_separator.scss
new file mode 100755
index 0000000..b4df82a
--- /dev/null
+++ b/web/src/assets/scss/custom/_separator.scss
@@ -0,0 +1,5 @@
+//
+// Separator
+//
+
+@import "../core/separators/separator";
diff --git a/web/src/assets/scss/custom/_tables.scss b/web/src/assets/scss/custom/_tables.scss
new file mode 100755
index 0000000..be176ef
--- /dev/null
+++ b/web/src/assets/scss/custom/_tables.scss
@@ -0,0 +1,5 @@
+//
+// Tables
+//
+
+@import "../core/tables/table";
diff --git a/web/src/assets/scss/custom/_type.scss b/web/src/assets/scss/custom/_type.scss
new file mode 100755
index 0000000..6be0c5a
--- /dev/null
+++ b/web/src/assets/scss/custom/_type.scss
@@ -0,0 +1,8 @@
+//
+// Typography
+//
+
+@import "../core/type/type";
+@import "../core/type/heading";
+@import "../core/type/display";
+@import "../core/type/article";
diff --git a/web/src/assets/scss/custom/_utilities.scss b/web/src/assets/scss/custom/_utilities.scss
new file mode 100755
index 0000000..c73c098
--- /dev/null
+++ b/web/src/assets/scss/custom/_utilities.scss
@@ -0,0 +1,16 @@
+//
+// Utilities
+//
+
+@import "../core/utilities/backgrounds";
+@import "../core/utilities/floating";
+@import "../core/utilities/helper";
+@import "../core/utilities/image";
+@import "../core/utilities/opacity";
+@import "../core/utilities/overflow";
+@import "../core/utilities/position";
+@import "../core/utilities/sizing";
+@import "../core/utilities/spacing";
+@import "../core/utilities/shadows";
+@import "../core/utilities/text";
+@import "../core/utilities/transform";
diff --git a/web/src/assets/scss/custom/_variables.scss b/web/src/assets/scss/custom/_variables.scss
new file mode 100755
index 0000000..07cd150
--- /dev/null
+++ b/web/src/assets/scss/custom/_variables.scss
@@ -0,0 +1,1009 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//
+// Variables
+//
+
+// Global settings
+
+$enable-caret: true !default;
+$enable-rounded: true !default;
+$enable-shadows: true !default;
+$enable-gradients: false !default;
+$enable-transitions: true !default;
+$enable-grid-classes: true !default;
+$enable-print-styles: true !default;
+
+
+// Color system
+
+$white: #fff !default;
+$gray-100: #f6f9fc !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #8898aa !default; // Line footer color
+$gray-700: #525f7f !default; // Line p color
+$gray-800: #32325d !default; // Line heading color
+$gray-900: #212529 !default;
+$black: #000 !default;
+
+$grays: () !default;
+$grays: map-merge((
+ "100": $gray-100,
+ "200": $gray-200,
+ "300": $gray-300,
+ "400": $gray-400,
+ "500": $gray-500,
+ "600": $gray-600,
+ "700": $gray-700,
+ "800": $gray-800,
+ "900": $gray-900
+), $grays);
+
+$blue: #5e72e4 !default;
+$indigo: #5603ad !default;
+$purple: #8965e0 !default;
+$pink: #f3a4b5 !default;
+$red: #f5365c !default;
+$orange: #fb6340 !default;
+$yellow: #ffd600 !default;
+$green: #2dce89 !default;
+$teal: #11cdef !default;
+$cyan: #2bffc6 !default;
+
+$colors: () !default;
+$colors: map-merge((
+ "blue": $blue,
+ "indigo": $indigo,
+ "purple": $purple,
+ "pink": $pink,
+ "red": $red,
+ "orange": $orange,
+ "yellow": $yellow,
+ "green": $green,
+ "teal": $teal,
+ "cyan": $cyan,
+ "white": $white,
+ "gray": $gray-600,
+ "light": $gray-400,
+ "lighter": $gray-200,
+ "gray-dark": $gray-800
+), $colors);
+
+$default: #172b4d !default;
+$primary: #5e72e4 !default;
+$secondary: #f7fafc !default;
+$success: $green !default;
+$info: $teal !default;
+$warning: $orange !default;
+$danger: $red !default;
+$light: $gray-500 !default;
+$dark: $gray-900 !default;
+$darker: darken($gray-900, 15%) !default;
+
+$facebook: #3b5999 !default;
+$twitter: #1da1f2 !default;
+$google-plus: #dd4b39 !default;
+$instagram: #e4405f !default;
+$pinterest: #bd081c !default;
+$youtube: #cd201f !default;
+$slack: #3aaf85 !default;
+$dribbble: #ea4c89 !default;
+$github: #222222 !default;
+
+$theme-colors: () !default;
+$theme-colors: map-merge((
+ "default": $default,
+ "primary": $primary,
+ "secondary": $secondary,
+ "success": $success,
+ "info": $info,
+ "warning": $warning,
+ "danger": $danger,
+ "white": $white,
+ "neutral": $white,
+ "dark": $dark,
+ "darker": $darker
+), $theme-colors);
+
+$brand-colors: () !default;
+$brand-colors: map-merge((
+ "facebook": $facebook,
+ "twitter": $twitter,
+ "google-plus": $google-plus,
+ "instagram": $instagram,
+ "pinterest": $pinterest,
+ "youtube": $youtube,
+ "slack": $slack,
+ "dribbble": $dribbble,
+ "github": $github
+), $brand-colors);
+
+$shape-colors: () !default;
+$shape-colors: map-merge((
+ "default": #32325d,
+ "primary": #5533ff,
+ "secondary": #24b47e,
+ "neutral": #e9ecef,
+ "blue-gray": #b2cbe1,
+
+), $shape-colors);
+
+$shapes-primary-colors: () !default;
+$shapes-primary-colors: map-merge((
+ "step-1-gradient-bg": #281483,
+ "step-2-gradient-bg": #8f6ed5,
+ "step-3-gradient-bg": #d782d9,
+ "span-1-bg": #53f,
+ "span-2-bg": #4553ff,
+ "span-3-bg": #4f40ff,
+ "span-4-bg": #25ddf5,
+ "span-5-bg": #1fa2ff
+), $shapes-primary-colors);
+
+$shapes-default-colors: () !default;
+$shapes-default-colors: map-merge((
+ "step-1-gradient-bg": #7795f8,
+ "step-2-gradient-bg": #6772e5,
+ "step-3-gradient-bg": #555abf,
+ "span-1-bg": #7795f8,
+ "span-2-bg": #7b9aff,
+ "span-3-bg": #6f8ff8,
+ "span-4-bg": #76eea7,
+ "span-5-bg": #6adaff
+), $shapes-default-colors);
+
+$shapes-light-colors: () !default;
+$shapes-light-colors: map-merge((
+ "step-1-gradient-bg": #b2cbe1,
+ "step-2-gradient-bg": #f6f9fc,
+ "step-3-gradient-bg": #f6f9fc,
+ "span-1-bg": #b4cce1,
+ "span-2-bg": #c5dbef,
+ "span-3-bg": #b9d5ed,
+ "span-4-bg": #74e4a2,
+ "span-5-bg": #008169
+), $shapes-light-colors);
+
+$shapes-dark-colors: () !default;
+$shapes-dark-colors: map-merge((
+ "step-1-gradient-bg": #32325d,
+ "step-2-gradient-bg": #32325d,
+ "step-3-gradient-bg": #32325d,
+ "span-1-bg": #2e2e57,
+ "span-2-bg": #2b2b58,
+ "span-3-bg": #25254d,
+ "span-4-bg": #d782d9,
+ "span-5-bg": #008169
+), $shapes-dark-colors);
+
+
+// Translucent color variations
+$translucent-color-opacity: .6 !default;
+
+// Set a specific jump point for requesting color jumps
+$theme-color-interval: 8% !default;
+
+// The yiq lightness value that determines when the lightness of color changes from "dark" to "light". Acceptable values are between 0 and 255.
+$yiq-contrasted-threshold: 200 !default;
+
+// Customize the light and dark text colors for use in our YIQ color contrast function.
+$yiq-text-dark: $gray-900 !default;
+$yiq-text-light: $white !default;
+
+// Action colors
+
+$star-rating-color: $gray-400 !default;
+$star-rating-color-active: $yellow !default;
+
+$favorite-color: $yellow !default;
+$like-color: $blue !default;
+$love-color: $red !default;
+
+
+// Body
+
+
+$body-bg: #f8f9fe !default;
+$body-color: $gray-700 !default;
+
+
+
+// Sections
+
+$section-colors: () !default;
+$section-colors: map-merge((
+ "primary": $body-bg,
+ "secondary": $secondary,
+ "light": $gray-400,
+ "dark": $dark,
+ "darker": $darker
+), $section-colors);
+
+// Links
+
+$link-color: $primary !default;
+$link-decoration: none !default;
+$link-hover-color: darken($link-color, 15%) !default;
+$link-hover-decoration: none !default;
+
+// Grid breakpoints
+
+$grid-breakpoints: (
+ xs: 0,
+ sm: 576px,
+ md: 768px,
+ lg: 992px,
+ xl: 1200px
+);
+
+@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
+@include _assert-starts-at-zero($grid-breakpoints);
+
+
+// Grid containers
+//
+// Define the maximum width of `.container` for different screen sizes.
+
+
+
+// Spacing
+
+$spacer: 1rem !default;
+$spacers: () !default;
+$spacers: map-merge((
+ -9: -($spacer * 10),
+ -8: -($spacer * 8),
+ -7: -($spacer * 6),
+ -6: -($spacer * 4.5),
+ -5: -($spacer * 3),
+ -4: -($spacer * 1.5),
+ -3: -$spacer,
+ -2: -($spacer * .5),
+ -1: -($spacer * .25),
+ 0: 0,
+ 1: ($spacer * .25),
+ 2: ($spacer * .5),
+ 3: $spacer,
+ 4: ($spacer * 1.5),
+ 5: ($spacer * 3),
+ 6: ($spacer * 4.5),
+ 7: ($spacer * 6),
+ 8: ($spacer * 8),
+ 9: ($spacer * 10)
+), $spacers);
+
+
+// This variable affects the `.h-*` and `.w-*` classes.
+
+$sizes: () !default;
+$sizes: map-merge((
+ 25: 25%,
+ 50: 50%,
+ 75: 75%,
+ 100: 100%
+), $sizes);
+
+// Components
+
+$shape-height-xl: 1.5 !default;
+$shape-height-lg: 1.5 !default;
+$shape-height-sm: 1.5 !default;
+
+$border-width: 1px !default;
+$border-color: $gray-200 !default;
+
+$border-radius: .375rem !default;
+$border-radius-xl: .5rem !default;
+$border-radius-lg: .4375rem !default;
+$border-radius-sm: .25rem !default;
+
+$box-shadow-sm: 0 0 .5rem rgba($gray-600, .075) !default;
+$box-shadow: 0 0 2rem 0 rgba($gray-600, .15) !default;
+$box-shadow-lg: 0 0 3rem rgba($gray-600, .175) !default;
+
+$component-active-color: $white !default;
+$component-active-bg: theme-color("primary") !default;
+$component-active-border-color: theme-color("primary") !default;
+
+$component-hover-color: $gray-300 !default;
+$component-hover-bg: $gray-300 !default;
+$component-hover-border-color: $gray-300 !default;
+
+$caret-width: .3em !default;
+
+$transition-base: all .15s ease !default;
+$transition-fade: opacity .15s linear !default;
+$transition-collapse: height .35s ease !default;
+
+
+// Fonts
+
+$font-family-sans-serif: Open Sans, sans-serif !default;
+$font-family-base: $font-family-sans-serif !default;
+
+$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`
+$font-size-xl: ($font-size-base * 1.5);
+$font-size-lg: ($font-size-base * 1.25);
+$font-size-sm: ($font-size-base * .875);
+$font-size-xs: ($font-size-base * .75);
+
+$font-weight-light: 300 !default;
+$font-weight-normal: 400 !default;
+$font-weight-bold: 600 !default;
+$font-weight-extra-bold: 700 !default;
+
+$font-weight-base: $font-weight-normal !default;
+$line-height-base: 1.5 !default;
+$shape-height-base: 1.5 !default;
+
+
+$h1-font-size: $font-size-base * 1.625 !default;
+$h2-font-size: $font-size-base * 1.25 !default;
+$h3-font-size: $font-size-base * 1.0625 !default;
+$h4-font-size: $font-size-base * .9375 !default;
+$h5-font-size: $font-size-base * .8125 !default;
+$h6-font-size: $font-size-base * .625 !default;
+
+
+$headings-margin-bottom: ($spacer / 2);
+$headings-font-family: inherit !default;
+$headings-font-weight: $font-weight-bold !default;
+$headings-line-height: 1.5 !default;
+$headings-color: $gray-800 !default;
+
+$heading-letter-spacing: .025em !default;
+$heading-font-size: .95rem !default;
+$heading-text-transform: uppercase !default;
+$heading-font-weight: $headings-font-weight !default;
+
+$heading-title-letter-spacing: .025em !default;
+$heading-title-font-size: 1.375rem !default;
+$heading-title-font-weight: $font-weight-bold !default;
+$heading-title-text-transform: uppercase !default;
+
+$heading-section-letter-spacing: .025em !default;
+$heading-section-font-size: 1.375rem !default;
+$heading-section-font-weight: $font-weight-bold !default;
+$heading-section-text-transform: uppercase !default;
+
+$display1-size: 3.3rem !default;
+$display2-size: 2.75rem !default;
+$display3-size: 2.1875rem !default;
+$display4-size: 1.6275rem !default;
+
+$display1-weight: $font-weight-bold !default;
+$display2-weight: $font-weight-bold !default;
+$display3-weight: $font-weight-bold !default;
+$display4-weight: $font-weight-bold !default;
+$display-line-height: $headings-line-height !default;
+
+$paragraph-font-size: 1rem !default;
+$paragraph-font-weight: 300 !default;
+$paragraph-line-height: 1.7 !default;
+
+$lead-font-size: ($paragraph-font-size * 1.25) !default;
+$lead-font-weight: 300 !default;
+
+$small-font-size: 80% !default;
+
+$text-muted: $gray-600 !default;
+
+$blockquote-small-color: $gray-600 !default;
+$blockquote-font-size: ($font-size-base * 1.25) !default;
+
+$hr-border-color: rgba($black, .1);
+$hr-border-width: $border-width !default;
+
+$mark-padding: .2em !default;
+
+$dt-font-weight: $font-weight-bold !default;
+
+$list-inline-padding: .5rem !default;
+
+$mark-bg: #fcf8e3 !default;
+
+$hr-margin-y: $spacer * 2 !default;
+
+
+// Icons
+
+$icon-size: 3rem !default;
+$icon-size-xl: 5rem !default;
+$icon-size-lg: 4rem !default;
+$icon-size-sm: 2rem !default;
+
+
+// Tables
+
+$table-cell-padding: 1rem !default;
+$table-cell-padding-sm: .5rem !default;
+
+$table-bg: transparent !default;
+$table-accent-bg: rgba($black, .05) !default;
+$table-hover-bg: $gray-100 !default;
+$table-active-bg: $table-hover-bg !default;
+
+$table-border-width: $border-width !default;
+$table-border-color: $gray-200 !default;
+
+$table-head-bg: $gray-100 !default;
+$table-head-color: $gray-600 !default;
+$table-head-spacer-y: .75rem !default;
+
+$table-head-font-size: .65rem !default;
+$table-head-font-weight: $font-weight-bold !default;
+$table-head-text-transform: uppercase !default;
+$table-head-letter-spacing: 1px !default;
+
+$table-body-font-size: .8125rem !default;
+
+$table-dark-bg: theme-color("default") !default;
+$table-dark-accent-bg: rgba($white, .05) !default;
+$table-dark-hover-bg: rgba($white, .075) !default;
+$table-dark-border-color: lighten(theme-color("default"), 7%) !default;
+$table-dark-color: $body-bg !default;
+
+$table-dark-head-bg: lighten(theme-color("default"), 4%) !default;
+$table-dark-head-color: lighten(theme-color("default"), 35%) !default;
+
+// Buttons + Forms
+
+$input-btn-padding-y: .625rem !default;
+$input-btn-padding-x: .75rem !default;
+$input-btn-line-height: $shape-height-base !default;
+
+$input-btn-focus-width: 0 !default;
+$input-btn-focus-color: rgba($component-active-bg, 1) !default;
+$input-btn-focus-box-shadow: none !default;
+
+$input-btn-padding-y-sm: .25rem !default;
+$input-btn-padding-x-sm: .5rem !default;
+$input-btn-line-height-sm: $shape-height-sm !default;
+
+$input-btn-padding-y-lg: .875rem !default;
+$input-btn-padding-x-lg: 1rem !default;
+$input-btn-line-height-lg: $shape-height-lg !default;
+
+$input-btn-border-width: 1px !default;
+
+$input-btn-font-size-sm: .75rem !default;
+$input-btn-font-size: .875rem !default;
+$input-btn-font-size-lg: .875rem !default;
+
+// Buttons
+
+$btn-padding-y: $input-btn-padding-y !default;
+$btn-padding-x: $input-btn-padding-x + 0.5 !default;
+$btn-line-height: $input-btn-line-height !default;
+
+$btn-padding-y-sm: $input-btn-padding-y-sm !default;
+$btn-padding-x-sm: $input-btn-padding-x-sm !default;
+$btn-line-height-sm: $input-btn-line-height-sm !default;
+
+$btn-padding-y-lg: $input-btn-padding-y-lg !default;
+$btn-padding-x-lg: $input-btn-padding-x-lg !default;
+$btn-line-height-lg: $input-btn-line-height-lg !default;
+
+$btn-border-width: $input-btn-border-width !default;
+
+$btn-font-weight: 600 !default;
+
+$btn-text-transform: none !default;
+
+
+$btn-letter-spacing: .025em !default;
+$btn-box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08) !default;
+$btn-hover-box-shadow: 0 7px 14px rgba(50,50,93,.1), 0 3px 6px rgba(0,0,0,.08) !default;
+$btn-focus-box-shadow: $btn-hover-box-shadow !default;
+$btn-focus-width: $input-btn-focus-width !default;
+$btn-active-box-shadow: none !default;
+
+$btn-hover-translate-y: -1px !default;
+
+// Forms
+
+$input-padding-y: $input-btn-padding-y !default;
+$input-padding-x: $input-btn-padding-x !default;
+$input-line-height: $input-btn-line-height !default;
+
+$input-padding-y-sm: $input-btn-padding-y-sm !default;
+$input-padding-x-sm: $input-btn-padding-x-sm !default;
+$input-line-height-sm: $input-btn-line-height-sm !default;
+
+$input-padding-y-lg: $input-btn-padding-y-lg !default;
+$input-padding-x-lg: $input-btn-padding-x-lg !default;
+$input-line-height-lg: $input-btn-line-height-lg !default;
+
+$input-border-radius: $border-radius !default;
+$input-border-radius-xl: $border-radius-xl !default;
+$input-border-radius-lg: $border-radius-lg !default;
+$input-border-radius-sm: $border-radius-sm !default;
+
+$input-bg: $white !default;
+$input-disabled-bg: $gray-200 !default;
+
+$input-muted-bg: #F7FAFE !default;
+$input-focus-muted-bg: lighten($input-muted-bg, 1%) !default;
+
+$input-alternative-box-shadow: 0 1px 3px rgba(50,50,93,.15), 0 1px 0 rgba(0,0,0,.02) !default;
+$input-focus-alternative-box-shadow: 0 4px 6px rgba(50,50,93,.11),0 1px 3px rgba(0,0,0,.08) !default;
+
+$input-color: $gray-600 !default;
+$input-border-color: #cad1d7 !default;
+$input-border-width: $input-btn-border-width !default;
+$input-box-shadow: none !default; // 0 1px 3px 0 $gray-400 !default;
+
+$input-focus-bg: $white !default;
+$input-focus-border-color: rgba(50,151,211,.25) !default;
+$input-focus-color: $input-color !default;
+$input-focus-width: 0 !default;
+$input-focus-box-shadow: none !default; //0 1px 3px 0 $gray-500 !default;
+
+$input-placeholder-color: $gray-500 !default;
+$input-focus-placeholder-color: $gray-500 !default;
+
+$input-height-border: $input-border-width * 2 !default;
+
+$input-transition: all .2s cubic-bezier(0.68, -0.55, 0.265, 1.55) !default;
+
+
+// Input groups
+
+$input-group-addon-color: $input-placeholder-color !default;
+$input-group-addon-bg: $input-bg !default;
+$input-group-addon-border-color: $input-border-color !default;
+
+$input-group-addon-focus-color: $input-focus-color !default;
+$input-group-addon-focus-bg: $input-focus-bg !default;
+$input-group-addon-focus-border-color: $input-focus-border-color !default;
+
+
+// Form group
+
+$form-group-margin-bottom: 1.5rem !default;
+
+
+// Custom forms
+
+$custom-control-gutter: 1.75rem !default;
+$custom-control-spacer-x: 1rem !default;
+$custom-control-indicator-size: 1.25rem !default;
+
+$custom-control-indicator-bg: $input-bg !default;
+$custom-control-indicator-border-width: 1px !default;
+$custom-control-indicator-border-color: $input-border-color !default;
+$custom-control-indicator-box-shadow: none !default;
+
+$custom-control-indicator-focus-box-shadow: $custom-control-indicator-box-shadow !default;
+
+$custom-control-indicator-hover-color: $component-hover-color !default;
+$custom-control-indicator-hover-bg: $component-hover-bg !default;
+$custom-control-indicator-hover-border-color: $component-hover-border-color !default;
+
+$custom-control-indicator-active-color: $component-active-color !default;
+$custom-control-indicator-active-bg: $component-active-bg !default;
+$custom-control-indicator-active-border-color: $component-active-border-color !default;
+$custom-control-indicator-active-box-shadow: $custom-control-indicator-box-shadow !default;
+
+$custom-control-indicator-checked-color: $component-active-color !default;
+$custom-control-indicator-checked-bg: $component-active-bg !default;
+$custom-control-indicator-checked-border-color: $component-active-border-color !default;
+$custom-control-indicator-checked-box-shadow: $custom-control-indicator-box-shadow !default;
+$custom-control-indicator-checked-disabled-bg: rgba(theme-color("primary"), .5) !default;
+
+$custom-control-indicator-disabled-bg: $gray-200 !default;
+$custom-control-label-disabled-color: $gray-600 !default;
+
+$custom-checkbox-indicator-border-radius: $border-radius-sm !default;
+//$custom-checkbox-indicator-icon-checked: str-replace(url("data:image/svg+xml !default;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"), "#", "%23") !default;
+
+// Custom toggle
+
+$custom-toggle-width: 50px !default;
+$custom-toggle-slider-bg: $gray-200 !default;
+$custom-toggle-checked-bg: theme-color("primary") !default;
+
+// Form validation
+
+$form-feedback-valid-bg: lighten($success, 15%) !default;
+$form-feedback-valid-color: theme-color("success") !default;
+$form-feedback-invalid-bg: lighten($warning, 15%) !default;
+$form-feedback-invalid-color: theme-color("warning") !default;
+
+
+// Allows for customizing button radius independently from global border radius
+
+$btn-border-radius: $input-border-radius !default;
+$btn-border-radius-xl: $input-border-radius-xl !default;
+$btn-border-radius-lg: $input-border-radius-lg !default;
+$btn-border-radius-sm: $input-border-radius !default;
+
+
+
+$chart-height: 350px !default;
+$chart-height-sm: 230px !default;
+
+$chart-legend-margin-top: 2.5rem !default;
+$chart-legend-font-size: $font-size-sm !default;
+$chart-legend-color: $text-muted !default;
+$chart-legend-height: $chart-legend-margin-top + $chart-legend-font-size * $line-height-base !default;
+
+
+
+
+// Map
+$map-height: 500px !default;
+
+
+// No UI Slider
+
+$noui-target-bg: #eceeef !default;
+$noui-target-thickness: 5px !default;
+$noui-target-border-radius: 5px !default;
+$noui-target-border-color: 0 !default;
+$noui-target-box-shadow: inset 0 1px 2px rgba(90,97,105,.1) !default;
+
+$noui-slider-connect-bg: $primary !default;
+$noui-slider-connect-disabled-bg: #b2b2b2 !default;
+
+$noui-handle-width: 15px !default;
+$noui-handle-bg: theme-color("primary") !default;
+$noui-handle-border: 0 !default;
+$noui-handle-border-radius: 100% !default;
+
+$noui-origin-border-radius: 2px !default;
+
+
+// Dropdown
+
+$dropdown-bg: $white !default;
+$dropdown-border-width: 0 !default;
+$dropdown-border-color: rgba($black, .15) !default;
+$dropdown-border-radius: $border-radius-lg !default;
+$dropdown-box-shadow: 0 50px 100px rgba(50, 50, 93, .1), 0 15px 35px rgba(50, 50, 93, .15), 0 5px 15px rgba(0, 0, 0, .1) !default;
+
+
+// Navs
+
+$nav-link-padding-y: .25rem !default;
+$nav-link-padding-x: .75rem !default;
+$nav-link-color: $gray-700 !default;
+$nav-link-hover-color: theme-color("primary") !default;
+$nav-link-disabled-color: $gray-600 !default;
+
+$nav-pills-padding-y: .75rem !default;
+$nav-pills-padding-x: 1rem !default;
+
+$nav-pills-space-x: 1rem !default;
+
+$nav-pills-bg: $white !default;
+$nav-pills-border-width: 1px !default;
+$nav-pills-border-color: theme-color("primary") !default;
+$nav-pills-border-radius: $border-radius !default;
+
+$nav-pills-link-color: theme-color("primary") !default;
+$nav-pills-link-hover-color: darken(theme-color("primary"), 5%) !default;
+$nav-pills-link-active-color: color-yiq(theme-color("primary")) !default;
+$nav-pills-link-active-bg: theme-color("primary") !default;
+$nav-pills-box-shadow: $btn-box-shadow !default;
+
+// Navbar
+
+$navbar-transition: all .15s linear !default;
+$navbar-padding-y: 1rem !default;
+$navbar-padding-x: 1rem !default;
+
+$navbar-nav-link-padding-x: 1rem !default;
+$navbar-nav-link-padding-y: 1rem !default;
+
+$navbar-nav-link-font-size: .9rem !default;
+$navbar-nav-link-font-weight: 400 !default;
+$navbar-nav-link-text-transform: normal !default;
+$navbar-nav-link-letter-spacing: 0 !default;
+$navbar-nav-link-border-radius: $border-radius !default;
+
+$navbar-search-width: 270px !default;
+$navbar-search-bg: transparent !default;
+
+$navbar-search-border-radius: 2rem !default;
+$navbar-search-border-width: 2px !default;
+
+$navbar-dark-bg: transparent !default;
+$navbar-dark-hover-bg: rgba(255, 255, 255, .1) !default;
+$navbar-dark-active-bg: rgba(255, 255, 255, .1) !default;
+$navbar-dark-color: rgba($white, .95) !default;
+$navbar-dark-hover-color: rgba($white, .65) !default;
+$navbar-dark-active-color: rgba($white, .65) !default;
+$navbar-dark-disabled-color: rgba($white, .25) !default;
+$navbar-dark-toggler-border-color: transparent !default;
+
+$navbar-search-dark-border-color: rgba(255, 255, 255, .6) !default;
+$navbar-search-dark-color: rgba(255, 255, 255, .6) !default;
+$navbar-search-dark-focus-border-color: rgba(255, 255, 255, .9) !default;
+$navbar-search-dark-focus-color: rgba(255, 255, 255, .9) !default;
+
+$navbar-light-bg: transparent !default;
+$navbar-light-hover-bg: rgba(0, 0, 0, .1) !default;
+$navbar-light-active-bg: rgba(0, 0, 0, .1) !default;
+$navbar-light-border-color: $gray-100 !default;
+$navbar-light-color: rgba($black, .5) !default;
+$navbar-light-hover-color: rgba($black, .7) !default;
+$navbar-light-active-color: rgba($black, .9) !default;
+$navbar-light-disabled-color: rgba($black, .3) !default;
+$navbar-light-toggler-border-color: transparent !default;
+
+$navbar-search-light-border-color: rgba(0, 0, 0, .6) !default;
+$navbar-search-light-color: rgba(0, 0, 0, .6) !default;
+$navbar-search-light-focus-border-color: rgba(0, 0, 0, .9) !default;
+$navbar-search-light-focus-color: rgba(0, 0, 0, .9) !default;
+
+
+
+// Vertical navbar
+$navbar-vertical-box-shadow: 0 0 2rem 0 rgba(136, 152, 170, .15) !important;
+$navbar-vertical-width: 250px !default;
+$navbar-vertical-padding-x: 1.5rem !default;
+$navbar-vertical-nav-link-padding-x: 1.5rem !default;
+$navbar-vertical-nav-link-padding-y: .65rem !default;
+
+$navbar-icon-min-width: 2.25rem !default;
+
+$navbar-breadcrumb-padding-y: $nav-link-padding-y !default;
+$navbar-breadcrumb-padding-x: 0 !default;
+
+$navbar-light-bg: $white !default;
+$navbar-light-border-color: $border-color !default;
+
+
+
+
+// Main content
+
+$main-content-padding-y: 40px !default;
+$main-content-padding-x: 24px !default; // in px to combine with $grid-gutter-width
+
+
+// Alerts
+
+$alert-padding-y: 1rem !default;
+$alert-padding-x: 1.5rem !default;
+$alert-border-radius: $border-radius !default;
+
+$alert-bg-level: -2 !default;
+$alert-border-level: -2 !default;
+$alert-color-level: 0 !default;
+
+
+// List group
+
+$list-group-bg: $white !default;
+$list-group-border-color: $border-color !default; //rgba($black, .125);
+$list-group-border-width: $border-width !default;
+$list-group-border-radius: $border-radius !default;
+
+$list-group-item-padding-y: 1rem !default;
+$list-group-item-padding-x: 1rem !default;
+
+$list-group-hover-bg: $gray-100 !default;
+$list-group-active-color: $component-active-color !default;
+$list-group-active-bg: $component-active-bg !default;
+$list-group-active-border-color: $list-group-active-bg !default;
+
+$list-group-disabled-color: $gray-600 !default;
+$list-group-disabled-bg: $list-group-bg !default;
+
+$list-group-action-color: $gray-700 !default;
+$list-group-action-hover-color: $list-group-action-color !default;
+
+$list-group-action-active-color: $list-group-action-color !default;
+$list-group-action-active-bg: $gray-200 !default;
+
+
+// Close
+
+$close-font-size: $font-size-base * 1.5 !default;
+$close-font-weight: $font-weight-bold !default;
+$close-bg: transparent !default;
+$close-hover-bg: transparent !default;
+$close-color: rgba(0, 0, 0, .6) !default !default;
+$close-hover-color: rgba(0, 0, 0, .9) !default;
+$close-text-shadow: none !default;
+
+
+// Popovers
+
+$popover-font-size: $font-size-sm !default;
+$popover-bg: $white !default;
+$popover-max-width: 276px !default;
+$popover-border-width: 1px !default;
+$popover-border-color: rgba($black, .05) !default;
+$popover-border-radius: $border-radius-lg !default;
+$popover-box-shadow: 0px .5rem 2rem 0px rgba($black, .2) !default;
+
+$popover-header-bg: $popover-bg !default;
+$popover-header-color: $headings-color !default;
+$popover-header-padding-y: .5rem !default;
+$popover-header-padding-x: .95rem !default;
+
+$popover-body-color: $body-color !default;
+$popover-body-padding-y: $popover-header-padding-y !default;
+$popover-body-padding-x: $popover-header-padding-x !default;
+
+$popover-arrow-width: 1.5rem !default;
+$popover-arrow-height: .75rem !default;
+$popover-arrow-color: $popover-bg !default;
+
+$popover-arrow-outer-color: transparent !default;
+
+
+// Badges
+
+$badge-font-size: 66% !default;
+$badge-font-weight: $font-weight-bold !default;
+$badge-padding-y: .35rem !default;
+$badge-padding-x: .375rem !default;
+$badge-border-radius: $border-radius !default;
+$badge-text-transfom: uppercase;
+
+$badge-pill-padding-x: .875em !default;
+$badge-pill-border-radius: 10rem !default;
+
+$badge-circle-size: 2rem !default;
+
+// Pagination
+
+// $pagination-padding-y: .5rem !default;
+// $pagination-padding-x: .75rem !default;
+// $pagination-padding-y-sm: .25rem !default;
+// $pagination-padding-x-sm: .5rem !default;
+// $pagination-padding-y-lg: .75rem !default;
+// $pagination-padding-x-lg: 1.5rem !default;
+// $pagination-line-height: 1.25 !default;
+
+$pagination-color: $gray-600 !default;
+$pagination-bg: $white !default;
+$pagination-border-width: $border-width !default;
+$pagination-border-color: $gray-300 !default;
+
+//$pagination-focus-box-shadow: $btn-hover-box-shadow !default;
+
+$pagination-hover-color: $gray-600 !default;
+$pagination-hover-bg: $gray-300 !default;
+$pagination-hover-border-color: $gray-300 !default;
+
+$pagination-active-color: $component-active-color !default;
+$pagination-active-bg: $component-active-bg !default;
+$pagination-active-border-color: $pagination-active-bg !default;
+$pagination-active-box-shadow: $btn-hover-box-shadow !default;
+
+$pagination-disabled-color: $gray-600 !default;
+$pagination-disabled-bg: $white !default;
+$pagination-disabled-border-color: $gray-300 !default;
+
+
+// Cards
+
+$card-spacer-y: 1.25rem !default;
+$card-spacer-x: 1.5rem !default;
+$card-border-width: $border-width !default;
+$card-border-radius: $border-radius !default;
+$card-border-color: rgba($black, .05) !default;
+$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;
+$card-cap-bg: $white !default;
+$card-bg: $white !default;
+
+$card-img-overlay-padding: 1.25rem !default;
+
+//$card-group-margin: ($grid-gutter-width / 2);
+//$card-deck-margin: $card-group-margin !default;
+
+$card-columns-count: 3 !default;
+$card-columns-gap: 1.25rem !default;
+$card-columns-margin: $card-spacer-y !default;
+
+// Tooltips
+
+$tooltip-font-size: $font-size-sm !default;
+
+// Modals
+
+$modal-inner-padding: 1.5rem !default;
+
+$modal-lg: 800px !default;
+$modal-md: 500px !default;
+$modal-sm: 380px !default;
+
+$modal-title-line-height: 1.1;
+
+$modal-content-bg: $white !default;
+$modal-content-border-color: rgba($black, .2) !default;
+$modal-content-border-width: 0 !default;
+$modal-content-border-radius: $border-radius-lg !default;
+$modal-content-box-shadow-xs: 0 15px 35px rgba(50,50,93,.2), 0 5px 15px rgba(0,0,0,.17);
+$modal-content-box-shadow-sm-up: 0 15px 35px rgba(50,50,93,.2), 0 5px 15px rgba(0,0,0,.17);
+
+$modal-backdrop-bg: $black !default;
+$modal-backdrop-opacity: .16 !default;
+$modal-header-border-color: $gray-200 !default;
+$modal-footer-border-color: $modal-header-border-color !default;
+$modal-header-border-width: $modal-content-border-width !default;
+$modal-footer-border-width: $modal-header-border-width !default;
+$modal-header-padding: 1.25rem !default;
+
+// Datepicker
+
+$datepicker-border-radius: $card-border-radius !default;
+$datepicker-dropdown-padding: 20px 22px !default;
+
+$datepicker-cell-transition: $transition-base !default;
+$datepicker-cell-hover-background: lighten($gray-400, 55%);
+$datepicker-cell-border-radius: 50% !default;
+$datepicker-cell-width: 36px !default;
+$datepicker-cell-height: 36px !default;
+
+$datepicker-disabled-cell-color: $gray-300 !default;
+$datepicker-disabled-old-new-color: $gray-500 !default;
+
+$datepicker-header-cell-border-radius: $border-radius !default;
+
+$datepicker-active-color: $white !default;
+$datepicker-active-background: theme-color("primary") !default;
+$datepicker-active-box-shadow: none !default;
+
+$datepicker-range-background: theme-color("primary") !default;
+$datepicker-range-cell-focused-background: darken($datepicker-range-background, 5%);
+$datepicker-range-color: $white !default;
+$datepicker-range-highlighted-bg: $gray-200 !default;
+
+$datepicker-dropdown-border: lighten($gray-400, 40%);
+$datepicker-dropdown-bg: $white !default;
+$datepicker-highlighted-bg: $datepicker-active-background !default;
+
+
+// Footer
+
+
+$footer-padding-y: 2.5rem;
+$footer-padding-x: 0;
+
+
+$footer-link-font-size: .85rem !default;
+$footer-bg: theme-color("secondary") !default;
+$footer-color: $gray-600 !default;
+$footer-link-color: $gray-600 !default;
+$footer-link-hover-color: $gray-700 !default;
+$footer-heading-color: $gray-600 !default;
+$footer-heading-font-size: $font-size-sm !default;
+
+// Import Bootstrap variable defaults
+
+@import "~bootstrap/scss/variables";
diff --git a/web/src/assets/scss/custom/_vendors.scss b/web/src/assets/scss/custom/_vendors.scss
new file mode 100755
index 0000000..3060e4a
--- /dev/null
+++ b/web/src/assets/scss/custom/_vendors.scss
@@ -0,0 +1,9 @@
+//
+// Vendors
+// include plugin styles
+//
+
+
+@import "../core/vendors/flatpickr";
+@import "../core/vendors/nouislider";
+@import "../core/vendors/scrollbar";
diff --git a/web/src/assets/vendor/nucleo/css/nucleo-svg.css b/web/src/assets/vendor/nucleo/css/nucleo-svg.css
new file mode 100755
index 0000000..c68c10e
--- /dev/null
+++ b/web/src/assets/vendor/nucleo/css/nucleo-svg.css
@@ -0,0 +1,135 @@
+/* Generated using nucleoapp.com */
+/* --------------------------------
+
+Icon colors
+
+-------------------------------- */
+
+.icon {
+ display: inline-block;
+ /* icon primary color */
+ color: #111111;
+ height: 1em;
+ width: 1em;
+}
+
+.icon use {
+ /* icon secondary color - fill */
+ fill: #7ea6f6;
+}
+
+.icon.icon-outline use {
+ /* icon secondary color - stroke */
+ stroke: #7ea6f6;
+}
+
+/* --------------------------------
+
+Change icon size
+
+-------------------------------- */
+
+.icon-xs {
+ height: 0.5em;
+ width: 0.5em;
+}
+
+.icon-sm {
+ height: 0.8em;
+ width: 0.8em;
+}
+
+.icon-lg {
+ height: 1.6em;
+ width: 1.6em;
+}
+
+.icon-xl {
+ height: 2em;
+ width: 2em;
+}
+
+/* --------------------------------
+
+Align icon and text
+
+-------------------------------- */
+
+.icon-text-aligner {
+ /* add this class to parent element that contains icon + text */
+ display: flex;
+ align-items: center;
+}
+
+.icon-text-aligner .icon {
+ color: inherit;
+ margin-right: 0.4em;
+}
+
+.icon-text-aligner .icon use {
+ color: inherit;
+ fill: currentColor;
+}
+
+.icon-text-aligner .icon.icon-outline use {
+ stroke: currentColor;
+}
+
+/* --------------------------------
+
+Icon reset values - used to enable color customizations
+
+-------------------------------- */
+
+.icon {
+ fill: currentColor;
+ stroke: none;
+}
+
+.icon.icon-outline {
+ fill: none;
+ stroke: currentColor;
+}
+
+.icon use {
+ stroke: none;
+}
+
+.icon.icon-outline use {
+ fill: none;
+}
+
+/* --------------------------------
+
+Stroke effects - Nucleo outline icons
+
+- 16px icons -> up to 1px stroke (16px outline icons do not support stroke changes)
+- 24px, 32px icons -> up to 2px stroke
+- 48px, 64px icons -> up to 4px stroke
+
+-------------------------------- */
+
+.icon-outline.icon-stroke-1 {
+ stroke-width: 1px;
+}
+
+.icon-outline.icon-stroke-2 {
+ stroke-width: 2px;
+}
+
+.icon-outline.icon-stroke-3 {
+ stroke-width: 3px;
+}
+
+.icon-outline.icon-stroke-4 {
+ stroke-width: 4px;
+}
+
+.icon-outline.icon-stroke-1 use,
+.icon-outline.icon-stroke-3 use {
+ -webkit-transform: translateX(0.5px) translateY(0.5px);
+ -moz-transform: translateX(0.5px) translateY(0.5px);
+ -ms-transform: translateX(0.5px) translateY(0.5px);
+ -o-transform: translateX(0.5px) translateY(0.5px);
+ transform: translateX(0.5px) translateY(0.5px);
+} \ No newline at end of file
diff --git a/web/src/assets/vendor/nucleo/css/nucleo.css b/web/src/assets/vendor/nucleo/css/nucleo.css
new file mode 100755
index 0000000..481bf62
--- /dev/null
+++ b/web/src/assets/vendor/nucleo/css/nucleo.css
@@ -0,0 +1,572 @@
+/*--------------------------------
+
+hermes-dashboard-icons Web Font - built using nucleoapp.com
+License - nucleoapp.com/license/
+
+-------------------------------- */
+@font-face {
+ font-family: 'NucleoIcons';
+ src: url('../fonts/nucleo-icons.eot');
+ src: url('../fonts/nucleo-icons.eot') format('embedded-opentype'), url('../fonts/nucleo-icons.woff2') format('woff2'), url('../fonts/nucleo-icons.woff') format('woff'), url('../fonts/nucleo-icons.ttf') format('truetype'), url('../fonts/nucleo-icons.svg') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+/*------------------------
+ base class definition
+-------------------------*/
+.ni {
+ display: inline-block;
+ font: normal normal normal 14px/1 NucleoIcons;
+ font-size: inherit;
+ text-rendering: auto;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+/*------------------------
+ change icon size
+-------------------------*/
+.ni-lg {
+ font-size: 1.33333333em;
+ line-height: 0.75em;
+ vertical-align: -15%;
+}
+.ni-2x {
+ font-size: 2em;
+}
+.ni-3x {
+ font-size: 3em;
+}
+.ni-4x {
+ font-size: 4em;
+}
+.ni-5x {
+ font-size: 5em;
+}
+
+/*----------------------------------
+ add a square/circle background
+-----------------------------------*/
+.ni.square,
+.ni.circle {
+ padding: 0.33333333em;
+ vertical-align: -16%;
+ background-color: #eee;
+}
+.ni.circle {
+ border-radius: 50%;
+}
+/*------------------------
+ list icons
+-------------------------*/
+.ni-ul {
+ padding-left: 0;
+ margin-left: 2.14285714em;
+ list-style-type: none;
+}
+.ni-ul > li {
+ position: relative;
+}
+.ni-ul > li > .ni {
+ position: absolute;
+ left: -1.57142857em;
+ top: 0.14285714em;
+ text-align: center;
+}
+.ni-ul > li > .ni.lg {
+ top: 0;
+ left: -1.35714286em;
+}
+.ni-ul > li > .ni.circle,
+.ni-ul > li > .ni.square {
+ top: -0.19047619em;
+ left: -1.9047619em;
+}
+/*------------------------
+ spinning icons
+-------------------------*/
+.ni.spin {
+ -webkit-animation: nc-spin 2s infinite linear;
+ -moz-animation: nc-spin 2s infinite linear;
+ animation: nc-spin 2s infinite linear;
+}
+@-webkit-keyframes nc-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ }
+}
+@-moz-keyframes nc-spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ }
+ 100% {
+ -moz-transform: rotate(360deg);
+ }
+}
+@keyframes nc-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ -moz-transform: rotate(0deg);
+ -ms-transform: rotate(0deg);
+ -o-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ -moz-transform: rotate(360deg);
+ -ms-transform: rotate(360deg);
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+/*------------------------
+ rotated/flipped icons
+-------------------------*/
+.ni.rotate-90 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+ -webkit-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+.ni.rotate-180 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+ -webkit-transform: rotate(180deg);
+ -moz-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ -o-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.ni.rotate-270 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+ -webkit-transform: rotate(270deg);
+ -moz-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ -o-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+.ni.flip-y {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0);
+ -webkit-transform: scale(-1, 1);
+ -moz-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ -o-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+.ni.flip-x {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+ -webkit-transform: scale(1, -1);
+ -moz-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ -o-transform: scale(1, -1);
+ transform: scale(1, -1);
+}
+/*------------------------
+ font icons
+-------------------------*/
+
+.ni-active-40::before {
+ content: "\ea02";
+}
+
+.ni-air-baloon::before {
+ content: "\ea03";
+}
+
+.ni-album-2::before {
+ content: "\ea04";
+}
+
+.ni-align-center::before {
+ content: "\ea05";
+}
+
+.ni-align-left-2::before {
+ content: "\ea06";
+}
+
+.ni-ambulance::before {
+ content: "\ea07";
+}
+
+.ni-app::before {
+ content: "\ea08";
+}
+
+.ni-archive-2::before {
+ content: "\ea09";
+}
+
+.ni-atom::before {
+ content: "\ea0a";
+}
+
+.ni-badge::before {
+ content: "\ea0b";
+}
+
+.ni-bag-17::before {
+ content: "\ea0c";
+}
+
+.ni-basket::before {
+ content: "\ea0d";
+}
+
+.ni-bell-55::before {
+ content: "\ea0e";
+}
+
+.ni-bold-down::before {
+ content: "\ea0f";
+}
+
+.ni-bold-left::before {
+ content: "\ea10";
+}
+
+.ni-bold-right::before {
+ content: "\ea11";
+}
+
+.ni-bold-up::before {
+ content: "\ea12";
+}
+
+.ni-bold::before {
+ content: "\ea13";
+}
+
+.ni-book-bookmark::before {
+ content: "\ea14";
+}
+
+.ni-books::before {
+ content: "\ea15";
+}
+
+.ni-box-2::before {
+ content: "\ea16";
+}
+
+.ni-briefcase-24::before {
+ content: "\ea17";
+}
+
+.ni-building::before {
+ content: "\ea18";
+}
+
+.ni-bulb-61::before {
+ content: "\ea19";
+}
+
+.ni-bullet-list-67::before {
+ content: "\ea1a";
+}
+
+.ni-bus-front-12::before {
+ content: "\ea1b";
+}
+
+.ni-button-pause::before {
+ content: "\ea1c";
+}
+
+.ni-button-play::before {
+ content: "\ea1d";
+}
+
+.ni-button-power::before {
+ content: "\ea1e";
+}
+
+.ni-calendar-grid-58::before {
+ content: "\ea1f";
+}
+
+.ni-camera-compact::before {
+ content: "\ea20";
+}
+
+.ni-caps-small::before {
+ content: "\ea21";
+}
+
+.ni-cart::before {
+ content: "\ea22";
+}
+
+.ni-chart-bar-32::before {
+ content: "\ea23";
+}
+
+.ni-chart-pie-35::before {
+ content: "\ea24";
+}
+
+.ni-chat-round::before {
+ content: "\ea25";
+}
+
+.ni-check-bold::before {
+ content: "\ea26";
+}
+
+.ni-circle-08::before {
+ content: "\ea27";
+}
+
+.ni-cloud-download-95::before {
+ content: "\ea28";
+}
+
+.ni-cloud-upload-96::before {
+ content: "\ea29";
+}
+
+.ni-compass-04::before {
+ content: "\ea2a";
+}
+
+.ni-controller::before {
+ content: "\ea2b";
+}
+
+.ni-credit-card::before {
+ content: "\ea2c";
+}
+
+.ni-curved-next::before {
+ content: "\ea2d";
+}
+
+.ni-delivery-fast::before {
+ content: "\ea2e";
+}
+
+.ni-diamond::before {
+ content: "\ea2f";
+}
+
+.ni-email-83::before {
+ content: "\ea30";
+}
+
+.ni-fat-add::before {
+ content: "\ea31";
+}
+
+.ni-fat-delete::before {
+ content: "\ea32";
+}
+
+.ni-fat-remove::before {
+ content: "\ea33";
+}
+
+.ni-favourite-28::before {
+ content: "\ea34";
+}
+
+.ni-folder-17::before {
+ content: "\ea35";
+}
+
+.ni-glasses-2::before {
+ content: "\ea36";
+}
+
+.ni-hat-3::before {
+ content: "\ea37";
+}
+
+.ni-headphones::before {
+ content: "\ea38";
+}
+
+.ni-html5::before {
+ content: "\ea39";
+}
+
+.ni-istanbul::before {
+ content: "\ea3a";
+}
+
+.ni-key-25::before {
+ content: "\ea3b";
+}
+
+.ni-laptop::before {
+ content: "\ea3c";
+}
+
+.ni-like-2::before {
+ content: "\ea3d";
+}
+
+.ni-lock-circle-open::before {
+ content: "\ea3e";
+}
+
+.ni-map-big::before {
+ content: "\ea3f";
+}
+
+.ni-mobile-button::before {
+ content: "\ea40";
+}
+
+.ni-money-coins::before {
+ content: "\ea41";
+}
+
+.ni-note-03::before {
+ content: "\ea42";
+}
+
+.ni-notification-70::before {
+ content: "\ea43";
+}
+
+.ni-palette::before {
+ content: "\ea44";
+}
+
+.ni-paper-diploma::before {
+ content: "\ea45";
+}
+
+.ni-pin-3::before {
+ content: "\ea46";
+}
+
+.ni-planet::before {
+ content: "\ea47";
+}
+
+.ni-ruler-pencil::before {
+ content: "\ea48";
+}
+
+.ni-satisfied::before {
+ content: "\ea49";
+}
+
+.ni-scissors::before {
+ content: "\ea4a";
+}
+
+.ni-send::before {
+ content: "\ea4b";
+}
+
+.ni-settings-gear-65::before {
+ content: "\ea4c";
+}
+
+.ni-settings::before {
+ content: "\ea4d";
+}
+
+.ni-single-02::before {
+ content: "\ea4e";
+}
+
+.ni-single-copy-04::before {
+ content: "\ea4f";
+}
+
+.ni-sound-wave::before {
+ content: "\ea50";
+}
+
+.ni-spaceship::before {
+ content: "\ea51";
+}
+
+.ni-square-pin::before {
+ content: "\ea52";
+}
+
+.ni-support-16::before {
+ content: "\ea53";
+}
+
+.ni-tablet-button::before {
+ content: "\ea54";
+}
+
+.ni-tag::before {
+ content: "\ea55";
+}
+
+.ni-tie-bow::before {
+ content: "\ea56";
+}
+
+.ni-time-alarm::before {
+ content: "\ea57";
+}
+
+.ni-trophy::before {
+ content: "\ea58";
+}
+
+.ni-tv-2::before {
+ content: "\ea59";
+}
+
+.ni-umbrella-13::before {
+ content: "\ea5a";
+}
+
+.ni-user-run::before {
+ content: "\ea5b";
+}
+
+.ni-vector::before {
+ content: "\ea5c";
+}
+
+.ni-watch-time::before {
+ content: "\ea5d";
+}
+
+.ni-world::before {
+ content: "\ea5e";
+}
+
+.ni-zoom-split-in::before {
+ content: "\ea5f";
+}
+
+.ni-collection::before {
+ content: "\ea60";
+}
+
+.ni-image::before {
+ content: "\ea61";
+}
+
+.ni-shop::before {
+ content: "\ea62";
+}
+
+.ni-ungroup::before {
+ content: "\ea63";
+}
+
+.ni-world-2::before {
+ content: "\ea64";
+}
+
+.ni-ui-04::before {
+ content: "\ea65";
+}
+
+
+/* all icon font classes list here */
diff --git a/web/src/assets/vendor/nucleo/fonts/nucleo-icons.eot b/web/src/assets/vendor/nucleo/fonts/nucleo-icons.eot
new file mode 100755
index 0000000..ab96810
--- /dev/null
+++ b/web/src/assets/vendor/nucleo/fonts/nucleo-icons.eot
Binary files differ
diff --git a/web/src/assets/vendor/nucleo/fonts/nucleo-icons.svg b/web/src/assets/vendor/nucleo/fonts/nucleo-icons.svg
new file mode 100755
index 0000000..6654c1a
--- /dev/null
+++ b/web/src/assets/vendor/nucleo/fonts/nucleo-icons.svg
@@ -0,0 +1,312 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<defs>
+ <font id="hermes-dashboard-icons" horiz-adv-x="256">
+ <font-face font-family="hermes-dashboard-icons"
+ units-per-em="256" ascent="256"
+ descent="0" />
+ <missing-glyph horiz-adv-x="0" />
+ <glyph glyph-name="active-40"
+ unicode="&#xEA02;"
+ horiz-adv-x="256" d=" M193.36128 154.90432L106.6666666666667 170.6666666666667V222.8587733333333C106.6666666666667 233.48576 99.4055466666667 243.33472 88.9166933333333 245.0417066666667C75.5508266666667 247.2154666666667 64 236.9576533333334 64 224V106.6666666666667H53.3333333333333V138.6666666666667H42.6666666666667C30.8848 138.6666666666667 21.3333333333333 129.11584 21.3333333333333 117.3333333333334V86.44992C21.3333333333333 71.9173333333334 26.2792533333333 57.8170666666667 35.35808 46.4688L64 10.6666666666667H202.6666666666667L219.26496 118.5546666666667C221.9003733333333 135.6868266666667 210.416 151.8034133333334 193.36128 154.90432z" />
+ <glyph glyph-name="air-baloon"
+ unicode="&#xEA03;"
+ horiz-adv-x="256" d=" M149.3333333333333 42.6666666666667H106.6666666666667C100.768 42.6666666666667 96 37.888 96 32V10.6666666666667C96 4.7786666666667 100.768 0 106.6666666666667 0H149.3333333333333C155.232 0 160 4.7786666666667 160 10.6666666666667V32C160 37.888 155.232 42.6666666666667 149.3333333333333 42.6666666666667z M128.736 255.9573333333334C128.6613333333333 255.9573333333334 128.5866666666667 255.968 128.512 255.968C128.3413333333333 255.9786666666667 128.1706666666667 256 128 256C127.84 256 127.68 255.9786666666667 127.5093333333333 255.9786666666667C127.4133333333333 255.9786666666667 127.3386666666667 255.968 127.2426666666667 255.968C80.544 255.552 42.6666666666667 217.4613333333333 42.6666666666667 170.6666666666667C42.6666666666667 138.6773333333333 82.4853333333333 75.936 87.0293333333333 68.8853333333333C89.0026666666667 65.8453333333333 92.3733333333333 64 96 64H106.6346666666667C106.6453333333333 64 106.656 64 106.6666666666667 64C106.6773333333333 64 106.688 64 106.6986666666667 64H160C163.6266666666667 64 166.9973333333333 65.8453333333333 168.9706666666667 68.8853333333333C173.5146666666667 75.936 213.3333333333333 138.6773333333333 213.3333333333333 170.6666666666667C213.3333333333333 217.472 175.4453333333334 255.5626666666667 128.736 255.9573333333334z" />
+ <glyph glyph-name="album-2"
+ unicode="&#xEA04;"
+ horiz-adv-x="256" d=" M245.3333333333333 234.6666666666667H192V256H170.6666666666667V234.6666666666667H138.6666666666667V256H117.3333333333333V234.6666666666667H85.3333333333333V256H64V234.6666666666667H10.6666666666667C4.7786666666667 234.6666666666667 0 229.8986666666667 0 224V10.6666666666667C0 4.768 4.7786666666667 0 10.6666666666667 0H245.3333333333333C251.2213333333333 0 256 4.768 256 10.6666666666667V224C256 229.8986666666667 251.2213333333333 234.6666666666667 245.3333333333333 234.6666666666667zM234.6666666666667 21.3333333333333H21.3333333333333V213.3333333333334H64V192H85.3333333333333V213.3333333333334H117.3333333333333V192H138.6666666666667V213.3333333333334H170.6666666666667V192H192V213.3333333333334H234.6666666666667V21.3333333333333z M158.3786666666667 144.32C156.7146666666667 146.9866666666667 153.952 148.7786666666667 150.848 149.2266666666667C147.744 149.6853333333334 144.5973333333334 148.7253333333333 142.24 146.6453333333333L46.24 61.312C42.9333333333333 58.368 41.792 53.6853333333333 43.36 49.5466666666667S48.9066666666667 42.6666666666667 53.3333333333333 42.6666666666667H202.6666666666666C206.5493333333333 42.6666666666667 210.112 44.768 212 48.16S213.7706666666667 55.7013333333334 211.7226666666667 58.9866666666667L158.3786666666667 144.32z M53.3333333333333 144C53.3333333333333 135.1634440027073 60.4967773360406 128 69.3333333333333 128C78.169889330626 128 85.3333333333333 135.1634440027073 85.3333333333333 144C85.3333333333333 152.8365559972927 78.169889330626 160 69.3333333333333 160C60.4967773360406 160 53.3333333333333 152.8365559972927 53.3333333333333 144z" />
+ <glyph glyph-name="align-center"
+ unicode="&#xEA05;"
+ horiz-adv-x="256" d=" M245.3333333333333 213.3333333333334H10.6666666666667C4.776 213.3333333333334 0 218.1093333333333 0 224S4.776 234.6666666666667 10.6666666666667 234.6666666666667H245.3333333333333C251.224 234.6666666666667 256 229.8906666666667 256 224S251.224 213.3333333333334 245.3333333333333 213.3333333333334z M192 149.3333333333334H64C58.1093333333333 149.3333333333334 53.3333333333333 154.1093333333333 53.3333333333333 160S58.1093333333333 170.6666666666667 64 170.6666666666667H192C197.8906666666667 170.6666666666667 202.6666666666667 165.8906666666667 202.6666666666667 160S197.8906666666667 149.3333333333334 192 149.3333333333334z M245.3333333333333 85.3333333333333H10.6666666666667C4.776 85.3333333333333 0 90.1093333333334 0 96S4.776 106.6666666666667 10.6666666666667 106.6666666666667H245.3333333333333C251.224 106.6666666666667 256 101.8906666666667 256 96S251.224 85.3333333333333 245.3333333333333 85.3333333333333z M192 21.3333333333333H64C58.1093333333333 21.3333333333333 53.3333333333333 26.1093333333334 53.3333333333333 32S58.1093333333333 42.6666666666667 64 42.6666666666667H192C197.8906666666667 42.6666666666667 202.6666666666667 37.8906666666666 202.6666666666667 32S197.8906666666667 21.3333333333333 192 21.3333333333333z" />
+ <glyph glyph-name="align-left-2"
+ unicode="&#xEA06;"
+ horiz-adv-x="256" d=" M245.3333333333333 213.3333333333334H10.6666666666667C4.776 213.3333333333334 0 218.1093333333333 0 224S4.776 234.6666666666667 10.6666666666667 234.6666666666667H245.3333333333333C251.224 234.6666666666667 256 229.8906666666667 256 224S251.224 213.3333333333334 245.3333333333333 213.3333333333334z M138.6666666666667 149.3333333333334H10.6666666666667C4.776 149.3333333333334 0 154.1093333333333 0 160S4.776 170.6666666666667 10.6666666666667 170.6666666666667H138.6666666666667C144.5573333333333 170.6666666666667 149.3333333333333 165.8906666666667 149.3333333333333 160S144.5573333333333 149.3333333333334 138.6666666666667 149.3333333333334z M245.3333333333333 85.3333333333333H10.6666666666667C4.776 85.3333333333333 0 90.1093333333334 0 96S4.776 106.6666666666667 10.6666666666667 106.6666666666667H245.3333333333333C251.224 106.6666666666667 256 101.8906666666667 256 96S251.224 85.3333333333333 245.3333333333333 85.3333333333333z M138.6666666666667 21.3333333333333H10.6666666666667C4.776 21.3333333333333 0 26.1093333333334 0 32S4.776 42.6666666666667 10.6666666666667 42.6666666666667H138.6666666666667C144.5573333333333 42.6666666666667 149.3333333333333 37.8906666666666 149.3333333333333 32S144.5573333333333 21.3333333333333 138.6666666666667 21.3333333333333z" />
+ <glyph glyph-name="ambulance"
+ unicode="&#xEA07;"
+ horiz-adv-x="256" d=" M249.6 126.9333333333333L234.6666666666667 134.4V170.6666666666667C234.6666666666667 177.0666666666667 230.4 181.3333333333334 224 181.3333333333334H170.6666666666667V213.3333333333334C170.6666666666667 219.7333333333334 166.4 224 160 224H10.6666666666667C4.2666666666667 224 0 219.7333333333334 0 213.3333333333334V74.6666666666667C0 68.2666666666667 4.2666666666667 64 10.6666666666667 64H22.4C26.6666666666667 45.8666666666667 43.7333333333333 32 64 32S100.2666666666667 45.8666666666667 105.6 64H150.4C152.5333333333333 45.8666666666667 168.5333333333333 32 186.6666666666666 32S220.8 45.8666666666667 222.9333333333333 64H245.3333333333333C251.7333333333333 64 256 68.2666666666667 256 74.6666666666667V117.3333333333334C256 121.6 253.8666666666667 124.8 249.6 126.9333333333333zM64 53.3333333333333C52.2666666666667 53.3333333333333 42.6666666666667 62.9333333333333 42.6666666666667 74.6666666666667C42.6666666666667 86.4 52.2666666666667 96 64 96S85.3333333333333 86.4 85.3333333333333 74.6666666666667C85.3333333333333 62.9333333333333 75.7333333333333 53.3333333333333 64 53.3333333333333zM117.3333333333333 149.3333333333334H96V128H74.6666666666667V149.3333333333334H53.3333333333333V170.6666666666667H74.6666666666667V192H96V170.6666666666667H117.3333333333333V149.3333333333334zM186.6666666666667 53.3333333333333C178.1333333333333 53.3333333333333 170.6666666666667 60.8 170.6666666666667 69.3333333333333S178.1333333333333 85.3333333333333 186.6666666666667 85.3333333333333S202.6666666666667 77.8666666666667 202.6666666666667 69.3333333333333S195.2 53.3333333333333 186.6666666666667 53.3333333333333zM213.3333333333333 144C213.3333333333333 140.8 211.2 138.6666666666667 208 138.6666666666667H186.6666666666666C183.4666666666667 138.6666666666667 181.3333333333333 140.8 181.3333333333333 144V154.6666666666667C181.3333333333333 157.8666666666667 183.4666666666667 160 186.6666666666667 160H208C211.2 160 213.3333333333333 157.8666666666667 213.3333333333333 154.6666666666667V144z" />
+ <glyph glyph-name="app"
+ unicode="&#xEA08;"
+ horiz-adv-x="256" d=" M128 161.0666666666667L222.9333333333333 203.7333333333333L132.2666666666667 244.2666666666667C129.0666666666667 245.3333333333333 125.8666666666667 245.3333333333333 123.7333333333334 244.2666666666667L33.0666666666667 203.7333333333334L128 161.0666666666667z M138.6666666666667 142.9333333333333V14.9333333333333L228.2666666666667 54.4C232.5333333333334 56.5333333333333 234.6666666666667 59.7333333333334 234.6666666666667 64V185.6L138.6666666666667 142.9333333333333z M117.3333333333333 142.9333333333333L21.3333333333333 185.6V64C21.3333333333333 59.7333333333333 23.4666666666667 55.4666666666667 27.7333333333333 54.4L117.3333333333333 14.9333333333333V142.9333333333333z" />
+ <glyph glyph-name="archive-2"
+ unicode="&#xEA09;"
+ horiz-adv-x="256" d=" M224 170.6666666666667H32C26.112 170.6666666666667 21.3333333333333 165.8986666666667 21.3333333333333 160V10.6666666666667C21.3333333333333 4.768 26.112 0 32 0H224C229.888 0 234.6666666666667 4.768 234.6666666666667 10.6666666666667V160C234.6666666666667 165.8986666666667 229.888 170.6666666666667 224 170.6666666666667zM181.3333333333333 96C181.3333333333333 90.1013333333333 176.5546666666667 85.3333333333333 170.6666666666667 85.3333333333333H85.3333333333333C79.4453333333333 85.3333333333333 74.6666666666667 90.1013333333333 74.6666666666667 96V128H96V106.6666666666667H160V128H181.3333333333334V96z M42.6666666666667 213.3333333333334H213.3333333333333V192H42.6666666666667V213.3333333333333z M74.6666666666667 256H181.3333333333333V234.6666666666667H74.6666666666667V256z" />
+ <glyph glyph-name="atom"
+ unicode="&#xEA0A;"
+ horiz-adv-x="256" d=" M235.7973333333334 197.0133333333333C229.6106666666667 206.6666666666667 214.784 216.5013333333333 179.264 208.5546666666667C176.5546666666667 207.9466666666667 173.7706666666667 207.2213333333334 170.9546666666667 206.432C162.1226666666667 235.6053333333334 147.7013333333333 256 128 256C109.8026666666667 256 94.7946666666667 238.3786666666667 85.0986666666667 206.336C57.1413333333333 214.208 31.2426666666667 214.272 20.2133333333333 197.0133333333333C14.0266666666667 187.3493333333333 11.2853333333333 169.76 33.3866666666667 140.8426666666667C36.64 136.5866666666667 40.352 132.2986666666667 44.3413333333333 128C40.352 123.7013333333334 36.64 119.4133333333333 33.3866666666667 115.1466666666667C11.2853333333333 86.2293333333333 14.0266666666667 68.64 20.2133333333333 58.976C26.3786666666667 49.344 37.7173333333333 44.4906666666667 53.312 44.4906666666667C62.4746666666667 44.4906666666667 73.1413333333333 46.208 85.0666666666667 49.568C93.472 21.6533333333334 107.3813333333333 0 128 0C147.7013333333334 0 162.1226666666667 20.3946666666667 170.9653333333333 49.5786666666667C173.7813333333333 48.7893333333333 176.5546666666667 48.064 179.2746666666667 47.456C199.4133333333333 42.944 224.7253333333333 41.6533333333333 235.7973333333333 58.9973333333333C246.3893333333333 75.5306666666667 237.5786666666667 99.7546666666667 211.4133333333333 127.712C233.8666666666667 151.6693333333333 247.9893333333333 177.9733333333333 235.7973333333334 197.0133333333333zM217.8346666666667 185.5146666666667C222.5386666666667 178.1653333333333 211.5093333333333 155.008 181.3333333333333 128.192C181.3226666666666 147.9466666666667 179.5413333333333 167.7653333333333 176.0426666666667 185.696C185.952 188.5226666666667 212.2986666666666 194.144 217.8346666666667 185.5146666666667zM74.8586666666667 128C97.76 148.288 127.392 166.9546666666667 155.6053333333333 178.528C161.2906666666667 147.6586666666667 161.632 110.2293333333333 155.6053333333333 77.472C127.4133333333333 89.0346666666667 97.7813333333333 107.7013333333333 74.8586666666667 128zM128 234.6666666666667C134.9973333333333 234.6666666666667 143.9573333333334 221.76 150.6133333333334 199.5413333333334C143.2213333333333 196.6186666666667 135.6373333333333 193.1626666666667 128 189.312C120.672 192.992 113.024 196.4373333333334 105.28 199.4773333333334C112.9173333333333 224.992 122.752 234.6666666666667 128 234.6666666666667zM38.176 185.5146666666667C42.7626666666667 192.704 68.3306666666667 192.5226666666667 105.12 176.5226666666667C88.3626666666667 166.272 73.504 155.392 59.584 142.9226666666667C51.6693333333333 151.52 32 175.8933333333334 38.176 185.5146666666667zM38.1653333333333 70.4853333333334C32.0106666666667 80.1066666666667 51.648 104.4586666666667 59.584 113.0773333333334C64.704 108.4906666666667 70.1653333333333 103.968 75.9146666666667 99.5413333333333C76.768 89.8666666666667 78.1013333333333 80 79.9893333333333 70.368C54.3893333333333 63.04 40.992 66.1013333333333 38.1653333333333 70.4853333333334zM128 21.3333333333333C119.2746666666667 21.3333333333333 105.696 43.1146666666667 99.392 82.9973333333333C116.5013333333333 72.0533333333333 134.0053333333334 63.0186666666667 150.6133333333333 56.4586666666667C143.9573333333334 34.24 134.9973333333333 21.3333333333333 128 21.3333333333333zM217.824 70.4853333333334C212.32 61.824 185.92 67.488 176.0426666666667 70.2933333333334C177.856 79.6053333333334 179.1573333333333 89.44 180.0426666666667 99.488C185.504 103.7013333333334 190.9226666666667 108.1706666666667 196.1493333333333 112.8533333333334C217.1093333333333 90.3253333333333 220.9386666666667 75.3386666666667 217.824 70.4853333333334z M117.3333333333333 128C117.3333333333333 122.1089626684716 122.1089626684715 117.3333333333334 128 117.3333333333334C133.8910373315285 117.3333333333334 138.6666666666667 122.1089626684716 138.6666666666667 128C138.6666666666667 133.8910373315285 133.8910373315285 138.6666666666667 128 138.6666666666667C122.1089626684715 138.6666666666667 117.3333333333333 133.8910373315285 117.3333333333333 128z" />
+ <glyph glyph-name="badge"
+ unicode="&#xEA0B;"
+ horiz-adv-x="256" d=" M149.3333333333333 181.3333333333334H106.6666666666667V234.6666666666667C106.6666666666667 246.4533333333333 116.2133333333333 256 128 256H128C139.7866666666667 256 149.3333333333333 246.4533333333333 149.3333333333333 234.6666666666667V181.3333333333334z M245.3333333333333 202.6666666666667H170.6666666666667V160H85.3333333333333V202.6666666666667H10.6666666666667C4.7786666666667 202.6666666666667 0 197.888 0 192V10.6666666666667C0 4.7786666666667 4.7786666666667 0 10.6666666666667 0H245.3333333333333C251.2213333333333 0 256 4.7786666666667 256 10.6666666666667V192C256 197.888 251.2213333333333 202.6666666666667 245.3333333333333 202.6666666666667zM85.3333333333333 128C97.12 128 106.6666666666667 118.4533333333333 106.6666666666667 106.6666666666667C106.6666666666667 94.88 97.12 85.3333333333333 85.3333333333333 85.3333333333333S64 94.88 64 106.6666666666667C64 118.4533333333334 73.5466666666667 128 85.3333333333333 128zM42.6666666666667 42.6666666666667C42.6666666666667 60.3413333333334 56.992 74.6666666666667 74.6666666666667 74.6666666666667H96C113.6746666666667 74.6666666666667 128 60.3413333333334 128 42.6666666666667H42.6666666666667zM213.3333333333333 53.3333333333333H149.3333333333333V74.6666666666667H213.3333333333333V53.3333333333333zM213.3333333333333 96H149.3333333333333V117.3333333333334H213.3333333333333V96z" />
+ <glyph glyph-name="bag-17"
+ unicode="&#xEA0C;"
+ horiz-adv-x="256" d=" M213.3333333333333 256H42.6666666666667C24.5333333333333 256 10.6666666666667 242.1333333333334 10.6666666666667 224V10.6666666666667C10.6666666666667 4.2666666666667 14.9333333333333 0 21.3333333333333 0H234.6666666666667C241.0666666666667 0 245.3333333333333 4.2666666666667 245.3333333333333 10.6666666666667V224C245.3333333333333 242.1333333333334 231.4666666666667 256 213.3333333333333 256zM128 85.3333333333333C92.8 85.3333333333333 64 114.1333333333334 64 149.3333333333334C64 155.7333333333334 68.2666666666667 160 74.6666666666667 160S85.3333333333333 155.7333333333334 85.3333333333333 149.3333333333334C85.3333333333333 125.8666666666667 104.5333333333334 106.6666666666667 128 106.6666666666667S170.6666666666667 125.8666666666667 170.6666666666667 149.3333333333334C170.6666666666667 155.7333333333334 174.9333333333333 160 181.3333333333333 160S192 155.7333333333334 192 149.3333333333334C192 114.1333333333333 163.2 85.3333333333333 128 85.3333333333333zM213.3333333333333 213.3333333333334H42.6666666666667C36.2666666666667 213.3333333333334 32 217.6 32 224S36.2666666666667 234.6666666666667 42.6666666666667 234.6666666666667H213.3333333333333C219.7333333333333 234.6666666666667 224 230.4 224 224S219.7333333333334 213.3333333333334 213.3333333333333 213.3333333333334z" />
+ <glyph glyph-name="basket"
+ unicode="&#xEA0D;"
+ horiz-adv-x="256" d=" M245.3333333333333 181.3333333333334H208.8533333333333L169.2586666666667 250.624C166.3466666666667 255.7333333333334 159.8293333333334 257.5253333333333 154.7093333333334 254.592C149.6 251.6693333333334 147.8186666666667 245.152 150.7413333333334 240.0426666666667L184.288 181.3333333333334H71.712L105.2586666666667 240.0426666666667C108.1813333333333 245.152 106.4 251.6693333333334 101.2906666666667 254.592C96.1813333333333 257.5253333333333 89.664 255.7333333333334 86.7413333333333 250.624L47.1466666666667 181.3333333333334H10.6666666666667C4.7786666666667 181.3333333333334 0 176.5653333333334 0 170.6666666666667V149.3333333333334C0 143.4346666666667 4.7786666666667 138.6666666666667 10.6666666666667 138.6666666666667H245.3333333333333C251.2213333333333 138.6666666666667 256 143.4346666666667 256 149.3333333333334V170.6666666666667C256 176.5653333333334 251.2213333333333 181.3333333333334 245.3333333333333 181.3333333333334z M234.6666666666667 117.3333333333334H21.3333333333333V10.6666666666667C21.3333333333333 4.7786666666667 26.112 0 32 0H224C229.888 0 234.6666666666667 4.7786666666667 234.6666666666667 10.6666666666667V117.3333333333334zM96 32H74.6666666666667L74.6666666666667 85.3333333333333H96L96 32zM138.6666666666667 32H117.3333333333333L117.3333333333333 85.3333333333333H138.6666666666667L138.6666666666667 32zM181.3333333333333 32H160L160 85.3333333333333H181.3333333333333L181.3333333333333 32z" />
+ <glyph glyph-name="bell-55"
+ unicode="&#xEA0E;"
+ horiz-adv-x="256" d=" M202.6666666666667 138.6666666666667C202.6666666666667 155.7333333333334 202.6666666666667 170.6666666666667 202.6666666666667 170.6666666666667C202.6666666666667 212.2666666666667 169.6 245.3333333333333 128 245.3333333333333S53.3333333333333 212.2666666666667 53.3333333333333 170.6666666666667C53.3333333333333 170.6666666666667 53.3333333333333 155.7333333333334 53.3333333333333 138.6666666666667C53.3333333333333 103.4666666666667 21.3333333333333 94.9333333333333 21.3333333333333 74.6666666666667C21.3333333333333 56.5333333333334 62.9333333333333 42.6666666666667 128 42.6666666666667S234.6666666666667 56.5333333333334 234.6666666666667 74.6666666666667C234.6666666666667 94.9333333333333 202.6666666666667 103.4666666666667 202.6666666666667 138.6666666666667z M128 21.3333333333333C114.1333333333333 21.3333333333333 102.4 22.4 90.6666666666667 23.4666666666667C98.1333333333333 9.6 112 0 128 0S158.9333333333333 9.6 165.3333333333333 23.4666666666667C153.6 22.4 141.8666666666667 21.3333333333333 128 21.3333333333333z" />
+ <glyph glyph-name="bold-down"
+ unicode="&#xEA0F;"
+ horiz-adv-x="256" d=" M21.3333333333333 160L64 202.6666666666667L128 138.6666666666667L192 202.6666666666667L234.6666666666667 160L128 53.3333333333333z" />
+ <glyph glyph-name="bold-left"
+ unicode="&#xEA10;"
+ horiz-adv-x="256" d=" M160 234.6666666666667L202.6666666666667 192L138.6666666666667 128L202.6666666666667 64L160 21.3333333333333L53.3333333333333 128z" />
+ <glyph glyph-name="bold-right"
+ unicode="&#xEA11;"
+ horiz-adv-x="256" d=" M96 234.6666666666667L53.3333333333333 192L117.3333333333333 128L53.3333333333333 64L96 21.3333333333333L202.6666666666667 128z" />
+ <glyph glyph-name="bold-up"
+ unicode="&#xEA12;"
+ horiz-adv-x="256" d=" M234.6666666666667 96L192 53.3333333333333L128 117.3333333333334L64 53.3333333333333L21.3333333333333 96L128 202.6666666666667z" />
+ <glyph glyph-name="bold"
+ unicode="&#xEA13;"
+ horiz-adv-x="256" d=" M32 10.6666666666667V35.9504L45.86976 40.3169066666667C50.312 41.71552 53.3333333333333 45.83424 53.3333333333333 50.4913066666667V205.2781866666667C53.3333333333333 210.0450133333334 50.17056 214.23328 45.5856 215.5377066666667L32 219.4029866666667V245.3333333333334H139.8369066666667C195.2605866666667 245.3333333333334 210.81888 220.0496 210.81888 187.9698133333333C210.81888 157.1700266666667 191.0510933333333 139.9886933333334 171.2833066666667 133.50944V132.5461333333333C208.2324266666667 128.3233066666667 224 107.0763733333334 224 74.6666666666667C224 26.6987733333334 187.8048 10.6666666666667 136.9205333333334 10.6666666666667H32zM119.0925866666667 146.7978666666667C142.42336 146.7978666666667 163.16768 152.3138133333333 163.16768 179.8673066666667C163.16768 206.4442666666667 146.3162666666667 210.0072533333333 123.9488 210.0072533333333H106.6666666666667V146.7978666666667H119.0925866666667zM128.4882133333333 45.6759466666667C155.7117866666666 45.6759466666667 173.5397333333333 52.1552 173.5397333333333 80.3553066666667C173.5397333333333 107.2621866666667 155.3950933333333 114.38816 133.3575466666666 114.38816H106.6666666666667V45.6759466666667H128.4882133333333z" />
+ <glyph glyph-name="book-bookmark"
+ unicode="&#xEA14;"
+ horiz-adv-x="256" d=" M42.6666666666667 32C42.6666666666667 37.888 47.4453333333333 42.6666666666667 53.3333333333333 42.6666666666667H213.3333333333333C225.12 42.6666666666667 234.6666666666667 52.2133333333333 234.6666666666667 64V224C234.6666666666667 241.6746666666667 220.3413333333333 256 202.6666666666667 256H128V170.6666666666667L96 192L64 170.6666666666667V256H53.3333333333333C35.6586666666667 256 21.3333333333333 241.6746666666667 21.3333333333333 224V32C21.3333333333333 14.3253333333333 35.6586666666667 0 53.3333333333333 0H224C229.888 0 234.6666666666667 4.7786666666667 234.6666666666667 10.6666666666667C234.6666666666667 16.5546666666667 229.888 21.3333333333333 224 21.3333333333333H53.3333333333333C47.4453333333333 21.3333333333333 42.6666666666667 26.112 42.6666666666667 32z" />
+ <glyph glyph-name="books"
+ unicode="&#xEA15;"
+ horiz-adv-x="256" d=" M53.3333333333333 234.6666666666667H10.6666666666667C4.7786666666667 234.6666666666667 0 229.8986666666667 0 224V32C0 26.1013333333333 4.7786666666667 21.3333333333333 10.6666666666667 21.3333333333333H53.3333333333333C59.2213333333333 21.3333333333333 64 26.1013333333333 64 32V224C64 229.8986666666667 59.2213333333333 234.6666666666667 53.3333333333333 234.6666666666667z M138.6666666666667 234.6666666666667H96C90.112 234.6666666666667 85.3333333333333 229.8986666666667 85.3333333333333 224V32C85.3333333333333 26.1013333333333 90.112 21.3333333333333 96 21.3333333333333H138.6666666666667C144.5546666666667 21.3333333333333 149.3333333333333 26.1013333333333 149.3333333333333 32V224C149.3333333333333 229.8986666666667 144.5546666666667 234.6666666666667 138.6666666666667 234.6666666666667z M255.7013333333334 44.5546666666667L210.5173333333334 231.1573333333334C209.1306666666667 236.8853333333334 203.3173333333334 240.4373333333334 197.6426666666667 239.008L156.1706666666667 228.9813333333334C153.4186666666667 228.32 151.0506666666667 226.5813333333334 149.5786666666667 224.1706666666667C148.1066666666667 221.76 147.648 218.8586666666667 148.3093333333334 216.1066666666667L193.4826666666667 29.4933333333333C194.1440000000001 26.7413333333333 195.8826666666667 24.3733333333333 198.2933333333334 22.9013333333333C200 21.8666666666667 201.92 21.3333333333333 203.8613333333333 21.3333333333333C204.704 21.3333333333333 205.5466666666667 21.44 206.368 21.632L247.84 31.6693333333333C253.568 33.0666666666667 257.088 38.8266666666667 255.7013333333334 44.5546666666667z" />
+ <glyph glyph-name="box-2"
+ unicode="&#xEA16;"
+ horiz-adv-x="256" d=" M167.4666666666667 202.6666666666667H249.6L188.8 253.8666666666667C186.6666666666667 254.9333333333334 183.4666666666667 256 181.3333333333333 256H147.2L167.4666666666667 202.6666666666667z M170.6666666666667 181.3333333333334V106.6666666666667H85.3333333333333V181.3333333333334H0V10.6666666666667C0 4.2666666666667 4.2666666666667 0 10.6666666666667 0H245.3333333333333C251.7333333333333 0 256 4.2666666666667 256 10.6666666666667V181.3333333333334H170.6666666666667z M88.5333333333333 202.6666666666667L108.8 256H74.6666666666667C72.5333333333333 256 69.3333333333333 254.9333333333334 68.2666666666667 253.8666666666667L6.4 202.6666666666667H88.5333333333333z" />
+ <glyph glyph-name="briefcase-24"
+ unicode="&#xEA17;"
+ horiz-adv-x="256" d=" M160 64V42.6666666666667H96V64H10.6666666666667V10.6666666666667C10.6666666666667 4.7786666666667 15.4453333333333 0 21.3333333333333 0H234.6666666666667C240.5546666666667 0 245.3333333333333 4.7786666666667 245.3333333333333 10.6666666666667V64H160z M245.3333333333333 213.3333333333334H181.3333333333333V245.3333333333334C181.3333333333333 251.2213333333334 176.5546666666667 256 170.6666666666667 256H85.3333333333333C79.4453333333333 256 74.6666666666667 251.2213333333334 74.6666666666667 245.3333333333334V213.3333333333334H10.6666666666667C4.7786666666667 213.3333333333334 0 208.5546666666667 0 202.6666666666667V96C0 90.112 4.7786666666667 85.3333333333333 10.6666666666667 85.3333333333333H96V117.3333333333334H160V85.3333333333333H245.3333333333333C251.2213333333333 85.3333333333333 256 90.112 256 96V202.6666666666667C256 208.5546666666667 251.2213333333333 213.3333333333334 245.3333333333333 213.3333333333334zM160 213.3333333333334H96V234.6666666666667H160V213.3333333333334z" />
+ <glyph glyph-name="building"
+ unicode="&#xEA18;"
+ horiz-adv-x="256" d=" M74.6666666666667 149.3333333333334H53.3333333333333V245.3333333333334C53.3333333333333 251.232 58.1013333333333 256 64 256H192C197.8986666666667 256 202.6666666666667 251.232 202.6666666666667 245.3333333333334V181.3333333333333H181.3333333333333V234.6666666666667H74.6666666666667V149.3333333333334z M245.3333333333333 170.6666666666667H149.3333333333333C143.4346666666667 170.6666666666667 138.6666666666667 165.8986666666667 138.6666666666667 160V21.3333333333333H117.3333333333333V117.3333333333334C117.3333333333333 123.232 112.5653333333333 128 106.6666666666667 128H10.6666666666667C4.768 128 0 123.232 0 117.3333333333334V10.6666666666667C0 4.768 4.768 0 10.6666666666667 0H245.3333333333333C251.232 0 256 4.768 256 10.6666666666667V160C256 165.8986666666667 251.232 170.6666666666667 245.3333333333333 170.6666666666667zM74.6666666666667 32H42.6666666666667V53.3333333333333H74.6666666666667V32zM74.6666666666667 74.6666666666667H42.6666666666667V96H74.6666666666667V74.6666666666667zM213.3333333333333 32H181.3333333333333V53.3333333333333H213.3333333333333V32zM213.3333333333333 74.6666666666667H181.3333333333333V96H213.3333333333333V74.6666666666667zM213.3333333333333 117.3333333333334H181.3333333333333V138.6666666666667H213.3333333333333V117.3333333333334z" />
+ <glyph glyph-name="bulb-61"
+ unicode="&#xEA19;"
+ horiz-adv-x="256" d=" M85.3333333333333 74.0266666666667V42.6666666666667H170.6666666666667V74.0266666666667C203.296 90.1760000000001 224 123.168 224 160C224 212.9386666666667 180.928 256 128 256S32 212.9386666666667 32 160C32 123.1786666666667 52.704 90.176 85.3333333333333 74.0266666666667zM74.6666666666667 160C74.6666666666667 189.408 98.592 213.3333333333333 128 213.3333333333333H138.6666666666667V192H128C110.3573333333333 192 96 177.6426666666667 96 160V149.3333333333333H74.6666666666667V160z M85.3333333333333 21.3333333333333V10.6666666666667C85.3333333333333 4.768 90.112 0 96 0H160C165.888 0 170.6666666666667 4.768 170.6666666666667 10.6666666666667V21.3333333333333H85.3333333333333z" />
+ <glyph glyph-name="bullet-list-67"
+ unicode="&#xEA1A;"
+ horiz-adv-x="256" d=" M10.6666666666667 213.3333333333334C10.6666666666667 195.6602213387479 24.9935546720813 181.3333333333334 42.6666666666667 181.3333333333334C60.3397786612521 181.3333333333334 74.6666666666667 195.6602213387479 74.6666666666667 213.3333333333334C74.6666666666667 231.0064453279188 60.3397786612521 245.3333333333334 42.6666666666667 245.3333333333334C24.9935546720813 245.3333333333334 10.6666666666667 231.0064453279188 10.6666666666667 213.3333333333334z M10.6666666666667 128C10.6666666666667 110.3268880054146 24.9935546720813 96 42.6666666666667 96C60.3397786612521 96 74.6666666666667 110.3268880054146 74.6666666666667 128C74.6666666666667 145.6731119945854 60.3397786612521 160 42.6666666666667 160C24.9935546720813 160 10.6666666666667 145.6731119945854 10.6666666666667 128z M10.6666666666667 42.6666666666667C10.6666666666667 24.9935546720813 24.9935546720813 10.6666666666667 42.6666666666667 10.6666666666667C60.3397786612521 10.6666666666667 74.6666666666667 24.9935546720813 74.6666666666667 42.6666666666667C74.6666666666667 60.3397786612521 60.3397786612521 74.6666666666667 42.6666666666667 74.6666666666667C24.9935546720813 74.6666666666667 10.6666666666667 60.3397786612521 10.6666666666667 42.6666666666667z M96 224H245.3333333333333V202.6666666666667H96V224z M96 138.6666666666667H245.3333333333333V117.3333333333334H96V138.6666666666667z M96 53.3333333333333H245.3333333333333V32H96V53.3333333333333z" />
+ <glyph glyph-name="bus-front-12"
+ unicode="&#xEA1B;"
+ horiz-adv-x="256" d=" M42.6666666666667 21.3333333333333V10.6666666666667C42.6666666666667 4.7786666666667 47.4346666666667 0 53.3333333333333 0H85.3333333333333C91.232 0 96 4.7786666666667 96 10.6666666666667V21.3333333333333H42.6666666666667z M160 21.3333333333333V10.6666666666667C160 4.7786666666667 164.768 0 170.6666666666667 0H202.6666666666667C208.5653333333333 0 213.3333333333333 4.7786666666667 213.3333333333333 10.6666666666667V21.3333333333333H160z M0 170.6666666666667H21.3333333333333V117.3333333333334H0V170.6666666666667z M234.6666666666667 170.6666666666667H256V117.3333333333334H234.6666666666667V170.6666666666667z M192 256H64C46.3573333333333 256 32 241.6426666666667 32 224V42.6666666666667C32 36.7786666666667 36.7786666666667 32 42.6666666666667 32H213.3333333333333C219.2213333333333 32 224 36.7786666666667 224 42.6666666666667V224C224 241.6426666666667 209.6426666666667 256 192 256zM74.6666666666667 64C68.7786666666667 64 64 68.7786666666667 64 74.6666666666667C64 80.5546666666667 68.7786666666667 85.3333333333333 74.6666666666667 85.3333333333333S85.3333333333333 80.5546666666667 85.3333333333333 74.6666666666667C85.3333333333333 68.7786666666667 80.5546666666667 64 74.6666666666667 64zM181.3333333333333 64C175.4453333333333 64 170.6666666666667 68.7786666666667 170.6666666666667 74.6666666666667C170.6666666666667 80.5546666666667 175.4453333333334 85.3333333333333 181.3333333333333 85.3333333333333S192 80.5546666666667 192 74.6666666666667C192 68.7786666666667 187.2213333333333 64 181.3333333333333 64zM202.6666666666667 117.3333333333334H53.3333333333333V213.3333333333334H202.6666666666666V117.3333333333334z" />
+ <glyph glyph-name="button-pause"
+ unicode="&#xEA1C;"
+ horiz-adv-x="256" d=" M96 245.3333333333334H32C26.1013333333333 245.3333333333334 21.3333333333333 240.5653333333334 21.3333333333333 234.6666666666667V21.3333333333333C21.3333333333333 15.4346666666667 26.1013333333333 10.6666666666667 32 10.6666666666667H96C101.8986666666667 10.6666666666667 106.6666666666667 15.4346666666667 106.6666666666667 21.3333333333333V234.6666666666667C106.6666666666667 240.5653333333334 101.8986666666667 245.3333333333334 96 245.3333333333334z M224 245.3333333333334H160C154.1013333333334 245.3333333333334 149.3333333333334 240.5653333333334 149.3333333333334 234.6666666666667V21.3333333333333C149.3333333333334 15.4346666666667 154.1013333333334 10.6666666666667 160 10.6666666666667H224C229.8986666666667 10.6666666666667 234.6666666666667 15.4346666666667 234.6666666666667 21.3333333333333V234.6666666666667C234.6666666666667 240.5653333333334 229.8986666666667 245.3333333333334 224 245.3333333333334z" />
+ <glyph glyph-name="button-play"
+ unicode="&#xEA1D;"
+ horiz-adv-x="256" d=" M219.2533333333333 136.8746666666667L59.2533333333333 243.5413333333334C55.9786666666667 245.7173333333334 51.7653333333333 245.9306666666667 48.3093333333333 244.0746666666667C44.832 242.2186666666667 42.6666666666667 238.6026666666667 42.6666666666667 234.6666666666667V21.3333333333333C42.6666666666667 17.3973333333333 44.832 13.7813333333334 48.2986666666667 11.9253333333334C49.8773333333333 11.0826666666667 51.6053333333333 10.6666666666667 53.3333333333333 10.6666666666667C55.4026666666667 10.6666666666667 57.472 11.2746666666667 59.2533333333333 12.4586666666667L219.2533333333333 119.1253333333334C222.2186666666667 121.1093333333333 224 124.4373333333334 224 128S222.2186666666667 134.8906666666667 219.2533333333333 136.8746666666667z" />
+ <glyph glyph-name="button-power"
+ unicode="&#xEA1E;"
+ horiz-adv-x="256" d=" M186.6346666666667 218.9866666666667C181.536 221.9306666666667 175.008 220.192 172.064 215.0826666666667C169.12 209.984 170.8693333333333 203.456 175.968 200.512C205.5893333333334 183.3813333333334 224 151.5093333333334 224 117.3333333333334C224 64.3946666666667 180.9386666666667 21.3333333333333 128 21.3333333333333S32 64.3946666666667 32 117.3333333333334C32 151.4986666666667 50.4 183.36 80.0106666666667 200.5013333333333C85.1093333333333 203.4453333333334 86.8586666666667 209.9733333333333 83.8933333333333 215.072C80.96 220.1813333333333 74.432 221.9413333333333 69.3226666666667 218.9546666666667C33.1413333333333 198.0266666666667 10.6666666666667 159.0826666666667 10.6666666666667 117.3333333333334C10.6666666666667 52.64 63.3066666666667 0 128 0S245.3333333333333 52.64 245.3333333333333 117.3333333333333C245.3333333333333 159.104 222.848 198.0586666666667 186.6346666666667 218.9866666666667z M128 160C133.8986666666667 160 138.6666666666667 164.768 138.6666666666667 170.6666666666667V245.3333333333334C138.6666666666667 251.232 133.8986666666667 256 128 256S117.3333333333333 251.232 117.3333333333333 245.3333333333334V170.6666666666667C117.3333333333333 164.768 122.1013333333333 160 128 160z" />
+ <glyph glyph-name="calendar-grid-58"
+ unicode="&#xEA1F;"
+ horiz-adv-x="256" d=" M245.3333333333333 234.6666666666667H202.6666666666667V256H181.3333333333333V234.6666666666667H138.6666666666667V256H117.3333333333333V234.6666666666667H74.6666666666667V256H53.3333333333333V234.6666666666667H10.6666666666667C4.7786666666667 234.6666666666667 0 229.888 0 224V10.6666666666667C0 4.7786666666667 4.7786666666667 0 10.6666666666667 0H245.3333333333333C251.2213333333333 0 256 4.7786666666667 256 10.6666666666667V224C256 229.888 251.2213333333333 234.6666666666667 245.3333333333333 234.6666666666667zM234.6666666666667 21.3333333333333H21.3333333333333V170.6666666666667H234.6666666666667V21.3333333333333z M42.6666666666667 138.6666666666667H85.3333333333333V106.6666666666667H42.6666666666667V138.6666666666667z M106.6666666666667 138.6666666666667H149.3333333333333V106.6666666666667H106.6666666666667V138.6666666666667z M42.6666666666667 85.3333333333333H85.3333333333333V53.3333333333333H42.6666666666667V85.3333333333333z M106.6666666666667 85.3333333333333H149.3333333333333V53.3333333333333H106.6666666666667V85.3333333333333z M170.6666666666667 138.6666666666667H213.3333333333333V106.6666666666667H170.6666666666667V138.6666666666667z" />
+ <glyph glyph-name="camera-compact"
+ unicode="&#xEA20;"
+ horiz-adv-x="256" d=" M32 245.3333333333334H96V224H32V245.3333333333334z M245.3333333333333 213.3333333333334H10.6666666666667C4.768 213.3333333333334 0 208.5546666666667 0 202.6666666666667V21.3333333333334C0 15.4453333333334 4.768 10.6666666666667 10.6666666666667 10.6666666666667H245.3333333333333C251.232 10.6666666666667 256 15.4453333333334 256 21.3333333333334V202.6666666666667C256 208.5546666666667 251.232 213.3333333333334 245.3333333333333 213.3333333333334zM64 138.6666666666667C58.112 138.6666666666667 53.3333333333333 143.4453333333334 53.3333333333333 149.3333333333334C53.3333333333333 155.2213333333334 58.112 160 64 160S74.6666666666667 155.2213333333334 74.6666666666667 149.3333333333334C74.6666666666667 143.4453333333334 69.888 138.6666666666667 64 138.6666666666667zM160 53.3333333333333C130.5493333333333 53.3333333333333 106.6666666666667 77.216 106.6666666666667 106.6666666666667S130.5493333333333 160 160 160S213.3333333333333 136.1173333333334 213.3333333333333 106.6666666666667S189.4506666666667 53.3333333333333 160 53.3333333333333z" />
+ <glyph glyph-name="caps-small"
+ unicode="&#xEA21;"
+ horiz-adv-x="256" d=" M42.6666666666667 21.3333333333333V38.44448L70.7122133333333 40.0974933333333C74.0183466666667 40.3381333333334 74.6666666666667 41.2797866666667 74.6666666666667 44.816V213.3333333333334H23.34144C20.7467733333333 213.3333333333334 20.0353066666667 213.09792 19.5645866666667 210.7386666666667L15.79808 192H0V234.6666666666667H170.6666666666667V192H154.8685866666667L151.1021866666667 210.7386666666667C150.63136 213.09792 149.9198933333333 213.3333333333334 147.3252266666667 213.3333333333334H96V44.816C96 41.5098666666667 96.40768 40.56832 99.944 40.3381333333333L128 38.44448V21.3333333333333H42.6666666666667z M160 21.3333333333333V38.44448L177.37888 40.0974933333333C180.6850133333333 40.3381333333334 181.3333333333333 41.2797866666667 181.3333333333333 44.816V138.6666666666667H151.34144C148.7467733333333 138.6666666666667 148.0353066666667 138.4312533333334 147.5645866666667 136.072L143.79808 117.3333333333334H128V160H256V117.3333333333334H240.20192L236.43552 136.072C235.9646933333334 138.4312533333334 235.2532266666667 138.6666666666667 232.65856 138.6666666666667H202.6666666666667V44.816C202.6666666666667 41.5098666666667 203.0743466666667 40.56832 206.6106666666667 40.3381333333333L224 38.44448V21.3333333333333H160z" />
+ <glyph glyph-name="cart"
+ unicode="&#xEA22;"
+ horiz-adv-x="256" d=" M245.3333333333333 85.3333333333333H32L48 106.6666666666667H202.6666666666667C207.264 106.6666666666667 211.328 109.6 212.7786666666667 113.9626666666667L244.7786666666667 209.9626666666667C245.8773333333334 213.216 245.3226666666667 216.7893333333333 243.3173333333333 219.5733333333334C241.312 222.3573333333334 238.0906666666667 224 234.6666666666667 224H47.0826666666667L18.208 252.8746666666667C14.0373333333333 257.0453333333334 7.296 257.0453333333334 3.1253333333333 252.8746666666667S-1.0453333333333 241.9626666666667 3.1253333333333 237.792L32 208.9173333333334V120.896L2.1333333333333 81.0666666666667C-0.2986666666667 77.8346666666667 -0.6826666666667 73.5146666666667 1.12 69.8986666666667C2.9333333333333 66.2826666666667 6.624 64 10.6666666666667 64H245.3333333333333C251.232 64 256 68.7786666666667 256 74.6666666666667S251.232 85.3333333333333 245.3333333333333 85.3333333333333z M21.3333333333333 21.3333333333333C21.3333333333333 9.5512586702764 30.8845920036097 0 42.6666666666667 0C54.4487413297236 0 64 9.5512586702764 64 21.3333333333333C64 33.1154079963903 54.4487413297236 42.6666666666667 42.6666666666667 42.6666666666667C30.8845920036097 42.6666666666667 21.3333333333333 33.1154079963903 21.3333333333333 21.3333333333333z M192 21.3333333333333C192 9.5512586702764 201.5512586702764 0 213.3333333333333 0C225.1154079963903 0 234.6666666666667 9.5512586702764 234.6666666666667 21.3333333333333C234.6666666666667 33.1154079963903 225.1154079963903 42.6666666666667 213.3333333333333 42.6666666666667C201.5512586702764 42.6666666666667 192 33.1154079963903 192 21.3333333333333z" />
+ <glyph glyph-name="chart-bar-32"
+ unicode="&#xEA23;"
+ horiz-adv-x="256" d=" M149.3333333333333 234.6666666666667H106.6666666666667C100.7786666666667 234.6666666666667 96 229.888 96 224V32C96 26.112 100.7786666666667 21.3333333333333 106.6666666666667 21.3333333333333H149.3333333333334C155.2213333333334 21.3333333333333 160 26.112 160 32V224C160 229.888 155.2213333333333 234.6666666666667 149.3333333333333 234.6666666666667z M53.3333333333333 117.3333333333334H10.6666666666667C4.7786666666667 117.3333333333334 0 112.5546666666667 0 106.6666666666667V32C0 26.112 4.7786666666667 21.3333333333334 10.6666666666667 21.3333333333334H53.3333333333333C59.2213333333333 21.3333333333334 64 26.112 64 32V106.6666666666667C64 112.5546666666667 59.2213333333333 117.3333333333334 53.3333333333333 117.3333333333334z M245.3333333333333 170.6666666666667H202.6666666666667C196.7786666666667 170.6666666666667 192 165.888 192 160V32C192 26.112 196.7786666666667 21.3333333333333 202.6666666666667 21.3333333333333H245.3333333333333C251.2213333333333 21.3333333333333 256 26.112 256 32V160C256 165.888 251.2213333333333 170.6666666666667 245.3333333333333 170.6666666666667z" />
+ <glyph glyph-name="chart-pie-35"
+ unicode="&#xEA24;"
+ horiz-adv-x="256" d=" M138.6666666666667 138.6666666666667H255.456C250.304 200.736 200.736 250.304 138.6666666666667 255.456V138.6666666666667z M132.416 117.3333333333334L45.4293333333333 30.3466666666667C67.744 11.456 96.544 0 128 0C194.976 0 250.0053333333334 51.744 255.456 117.3333333333333H132.416z M117.3333333333333 132.416V255.456C51.744 250.0053333333334 0 194.976 0 128C0 96.544 11.456 67.744 30.3466666666667 45.4293333333333L117.3333333333333 132.416z" />
+ <glyph glyph-name="chat-round"
+ unicode="&#xEA25;"
+ horiz-adv-x="256" d=" M128 245.3333333333334C57.6 245.3333333333334 0 197.3333333333334 0 138.6666666666667S57.6 32 128 32C138.6666666666667 32 149.3333333333334 33.0666666666667 160 35.2L219.7333333333333 11.7333333333333C220.8 11.7333333333333 221.8666666666667 10.6666666666667 224 10.6666666666667C226.1333333333334 10.6666666666667 228.2666666666667 11.7333333333333 230.4 12.8C233.6 14.9333333333333 234.6666666666667 19.2 234.6666666666667 22.4L229.3333333333334 72.5333333333333C246.4 91.7333333333333 256 114.1333333333333 256 137.6C256 197.3333333333334 198.4 245.3333333333334 128 245.3333333333334z" />
+ <glyph glyph-name="check-bold"
+ unicode="&#xEA26;"
+ horiz-adv-x="256" d=" M21.3333333333333 138.6666666666667L42.6666666666667 160L96 128L213.3333333333333 213.3333333333334L234.6666666666667 192L96 53.3333333333333z" />
+ <glyph glyph-name="circle-08"
+ unicode="&#xEA27;"
+ horiz-adv-x="256" d=" M128 256C57.4186666666667 256 0 198.5813333333333 0 128S57.4186666666667 0 128 0S256 57.4186666666667 256 128S198.5813333333333 256 128 256zM85.3333333333333 149.3333333333334C85.3333333333333 172.896 105.0026666666667 192 128 192S170.6666666666667 172.896 170.6666666666667 149.3333333333334V138.6666666666667C170.6666666666667 115.104 150.9973333333333 96 128 96S85.3333333333333 115.104 85.3333333333333 138.6666666666667V149.3333333333334zM128 21.3333333333333C102.048 21.3333333333333 78.24 30.6773333333333 59.7226666666667 46.144C68.672 63.0293333333333 86.2186666666667 74.6666666666667 106.6666666666667 74.6666666666667H149.3333333333333C169.7813333333333 74.6666666666667 187.328 63.0293333333333 196.2773333333333 46.144C177.76 30.6773333333334 153.952 21.3333333333333 128 21.3333333333333z" />
+ <glyph glyph-name="cloud-download-95"
+ unicode="&#xEA28;"
+ horiz-adv-x="256" d=" M211.968 148.5226666666667C204.6826666666667 191.52 167.104 224 122.6666666666667 224C76.7573333333333 224 38.6453333333333 189.9093333333333 32.864 145.1093333333333C13.184 136.9493333333334 0 117.728 0 96C0 66.592 23.9253333333333 42.6666666666667 53.3333333333333 42.6666666666667H202.6666666666666C232.0746666666667 42.6666666666667 256 66.592 256 96C256 122.24 236.96 144.1066666666667 211.968 148.5226666666667zM128 74.6666666666667L74.6666666666667 128H117.3333333333334V170.6666666666667H138.6666666666667V128H181.3333333333334L128 74.6666666666667z" />
+ <glyph glyph-name="cloud-upload-96"
+ unicode="&#xEA29;"
+ horiz-adv-x="256" d=" M211.968 148.5226666666667C204.6826666666667 191.52 167.104 224 122.6666666666667 224C76.7573333333333 224 38.656 189.9093333333333 32.864 145.1093333333333C13.1733333333333 136.9493333333334 0 117.728 0 96C0 66.592 23.9253333333333 42.6666666666667 53.3333333333333 42.6666666666667H202.6666666666666C232.0746666666667 42.6666666666667 256 66.592 256 96C256 122.24 236.96 144.1173333333333 211.968 148.5226666666667zM138.6666666666667 117.3333333333334V74.6666666666667H117.3333333333333V117.3333333333334H74.6666666666667L128 170.6666666666667L181.3333333333333 117.3333333333334H138.6666666666667z" />
+ <glyph glyph-name="compass-04"
+ unicode="&#xEA2A;"
+ horiz-adv-x="256" d=" M128 256C57.4186666666667 256 0 198.5813333333333 0 128S57.4186666666667 0 128 0S256 57.4186666666667 256 128S198.5813333333333 256 128 256zM138.6666666666667 21.8773333333333V42.6666666666667H117.3333333333333V21.8773333333334C67.0186666666667 26.8906666666667 26.8906666666667 67.0186666666667 21.8773333333333 117.3333333333334H42.6666666666667V138.6666666666667H21.8773333333333C26.8906666666667 188.9813333333334 67.0186666666667 229.1093333333333 117.3333333333333 234.1226666666667V213.3333333333334H138.6666666666667V234.1226666666667C188.9813333333333 229.0986666666667 229.1093333333333 188.9813333333334 234.1226666666667 138.6666666666667H213.3333333333333V117.3333333333334H234.1226666666667C229.1093333333333 67.0186666666667 188.9813333333333 26.8906666666667 138.6666666666667 21.8773333333333z M98.5386666666667 157.4613333333334L54.3573333333333 54.3573333333333L157.4613333333333 98.5386666666667L201.6426666666667 201.6426666666667L98.5386666666667 157.4613333333334zM94.976 94.976L114.7946666666667 141.2053333333333L141.216 114.784L94.976 94.976z" />
+ <glyph glyph-name="controller"
+ unicode="&#xEA2B;"
+ horiz-adv-x="256" d=" M138.6666666666667 234.6666666666667C138.6666666666667 240.5546666666667 133.888 245.3333333333334 128 245.3333333333334S117.3333333333333 240.5546666666667 117.3333333333333 234.6666666666667V181.3333333333334H138.6666666666667V234.6666666666667z M192 160H64C28.704 160 0 131.296 0 96S28.704 32 64 32C86.9866666666667 32 108.0213333333333 44.352 119.3706666666667 64H136.6186666666667C147.968 44.352 169.0026666666667 32 191.9893333333333 32C227.2853333333333 32 255.9893333333333 60.704 255.9893333333333 96S227.296 160 192 160zM96 85.3333333333333H74.6666666666667V64H53.3333333333333V85.3333333333333H32V106.6666666666667H53.3333333333333V128H74.6666666666667V106.6666666666667H96V85.3333333333333zM181.3333333333333 64C175.4453333333333 64 170.6666666666667 68.7786666666667 170.6666666666667 74.6666666666667C170.6666666666667 80.5546666666667 175.4453333333334 85.3333333333333 181.3333333333333 85.3333333333333S192 80.5546666666667 192 74.6666666666667C192 68.7786666666667 187.2213333333333 64 181.3333333333333 64zM213.3333333333333 96C207.4453333333333 96 202.6666666666667 100.7786666666667 202.6666666666667 106.6666666666667C202.6666666666667 112.5546666666667 207.4453333333334 117.3333333333333 213.3333333333333 117.3333333333333S224 112.5546666666667 224 106.6666666666667C224 100.7786666666667 219.2213333333333 96 213.3333333333333 96z" />
+ <glyph glyph-name="credit-card"
+ unicode="&#xEA2C;"
+ horiz-adv-x="256" d=" M256 170.6773333333333V213.3333333333334C256 225.12 246.4533333333333 234.6666666666667 234.6666666666667 234.6666666666667H21.3333333333333C9.5466666666667 234.6666666666667 0 225.12 0 213.3333333333334V170.6773333333333H256z M0 138.6666666666667V42.6666666666667C0 30.88 9.5466666666667 21.3333333333333 21.3333333333333 21.3333333333333H234.6666666666667C246.4533333333333 21.3333333333333 256 30.88 256 42.6666666666667V138.6666666666667H0zM117.3333333333333 74.6666666666667H42.6666666666667V96H117.3333333333333V74.6666666666667zM213.3333333333333 74.6666666666667H170.6666666666667V96H213.3333333333333V74.6666666666667z" />
+ <glyph glyph-name="curved-next"
+ unicode="&#xEA2D;"
+ horiz-adv-x="256" d=" M138.6666666666667 96V27.7333333333334L249.6 138.6666666666667L138.6666666666667 249.6V181.3333333333334C89.6 179.2 0 158.9333333333333 0 42.6666666666667V3.2L20.2666666666667 37.3333333333333C45.8666666666667 81.0666666666667 71.4666666666667 94.9333333333333 138.6666666666667 96z" />
+ <glyph glyph-name="delivery-fast"
+ unicode="&#xEA2E;"
+ horiz-adv-x="256" d=" M0 245.3333333333334H96V224H0V245.3333333333334z M21.3333333333333 202.6666666666667H96V181.3333333333334H21.3333333333333V202.6666666666667z M42.6666666666667 160H96V138.6666666666667H42.6666666666667V160z M64 117.3333333333334H96V96H64V117.3333333333334z M250.1013333333333 137.5466666666667L211.8186666666667 156.6826666666667L202.3466666666666 194.5813333333333C201.1626666666667 199.3386666666667 196.896 202.6666666666667 192 202.6666666666667H174.6666666666667H117.3333333333333C117.3333333333333 202.6666666666667 117.3333333333333 69.856 117.3333333333333 64S117.8773333333333 53.3333333333333 117.8773333333333 53.3333333333333C120.5653333333333 29.3973333333333 140.6933333333333 10.6666666666667 165.3333333333333 10.6666666666667S210.1013333333333 29.3973333333333 212.7893333333333 53.3333333333333H245.3333333333333C251.2213333333333 53.3333333333333 256 58.112 256 64V128C256 132.0426666666667 253.7173333333334 135.7333333333334 250.1013333333333 137.5466666666667zM165.3333333333333 32C150.6346666666667 32 138.6666666666667 43.9573333333333 138.6666666666667 58.6666666666667S150.6346666666667 85.3333333333333 165.3333333333333 85.3333333333333S192 73.376 192 58.6666666666667S180.032 32 165.3333333333333 32zM138.6666666666667 149.3333333333334V181.3333333333334H185.0026666666667L192 149.3333333333334H138.6666666666667z" />
+ <glyph glyph-name="diamond"
+ unicode="&#xEA2F;"
+ horiz-adv-x="256" d=" M200.192 241.4933333333334C198.1653333333333 243.9253333333334 195.168 245.3333333333334 192 245.3333333333334H64C60.832 245.3333333333334 57.8346666666667 243.9253333333334 55.808 241.4933333333334L2.4746666666667 177.4933333333334C-0.6613333333333 173.728 -0.832 168.3093333333334 2.0586666666667 164.3626666666667L119.392 4.3626666666667C121.408 1.6213333333334 124.608 0 128 0S134.592 1.6213333333333 136.608 4.3626666666667L253.9413333333333 164.3626666666667C256.832 168.32 256.672 173.728 253.5253333333333 177.4933333333334L200.192 241.4933333333334zM202.6666666666667 160H53.3333333333333V181.3333333333334H202.6666666666666V160z" />
+ <glyph glyph-name="email-83"
+ unicode="&#xEA30;"
+ horiz-adv-x="256" d=" M245.3333333333333 234.6666666666667H10.6666666666667C4.2666666666667 234.6666666666667 0 230.4 0 224V192C0 187.7333333333334 2.1333333333333 184.5333333333333 5.3333333333333 182.4L122.6666666666667 118.4C124.8 117.3333333333334 125.8666666666667 117.3333333333334 128 117.3333333333334S131.2 117.3333333333334 133.3333333333334 118.4L250.6666666666667 182.4C253.8666666666667 184.5333333333333 256 187.7333333333334 256 192V224C256 230.4 251.7333333333334 234.6666666666667 245.3333333333333 234.6666666666667z M142.9333333333333 100.2666666666667C138.6666666666667 97.0666666666667 133.3333333333333 96 128 96S117.3333333333333 97.0666666666667 113.0666666666667 100.2666666666667L0 161.0666666666667V32C0 25.6 4.2666666666667 21.3333333333333 10.6666666666667 21.3333333333333H245.3333333333333C251.7333333333333 21.3333333333333 256 25.6 256 32V161.0666666666667L142.9333333333333 100.2666666666667z" />
+ <glyph glyph-name="fat-add"
+ unicode="&#xEA31;"
+ horiz-adv-x="256" d=" M192 149.3333333333334L149.3333333333333 149.3333333333334L149.3333333333333 192L106.6666666666667 192L106.6666666666667 149.3333333333334L64 149.3333333333334L64 106.6666666666667L106.6666666666667 106.6666666666667L106.6666666666667 64L149.3333333333333 64L149.3333333333333 106.6666666666667L192 106.6666666666667z" />
+ <glyph glyph-name="fat-delete"
+ unicode="&#xEA32;"
+ horiz-adv-x="256" d=" M64 149.3333333333334H192V106.6666666666667H64V149.3333333333334z" />
+ <glyph glyph-name="fat-remove"
+ unicode="&#xEA33;"
+ horiz-adv-x="256" d=" M188.8 98.1333333333333L157.8666666666667 128L188.8 157.8666666666667L157.8666666666667 188.8L128 157.8666666666667L98.1333333333333 188.8L67.2 157.8666666666667L98.1333333333333 128L67.2 98.1333333333333L98.1333333333333 67.2L128 98.1333333333333L157.8666666666667 67.2z" />
+ <glyph glyph-name="favourite-28"
+ unicode="&#xEA34;"
+ horiz-adv-x="256" d=" M181.3333333333333 256C161.0666666666667 256 141.8666666666667 247.4666666666667 128 233.6C114.1333333333333 247.4666666666667 94.9333333333333 256 74.6666666666667 256C33.0666666666667 256 0 222.9333333333333 0 181.3333333333334C0 113.0666666666667 116.2666666666667 17.0666666666667 121.6 12.8C123.7333333333333 10.6666666666667 125.8666666666667 10.6666666666667 128 10.6666666666667S132.2666666666667 11.7333333333333 134.4 12.8C139.7333333333333 17.0666666666667 256 113.0666666666667 256 181.3333333333334C256 222.9333333333333 222.9333333333333 256 181.3333333333333 256z" />
+ <glyph glyph-name="folder-17"
+ unicode="&#xEA35;"
+ horiz-adv-x="256" d=" M101.3333333333333 224C107.7333333333333 224 114.1333333333333 220.8 118.4 215.4666666666667L144 181.3333333333334H234.6666666666667V245.3333333333334C234.6666666666667 251.7333333333333 230.4 256 224 256H32C25.6 256 21.3333333333333 251.7333333333333 21.3333333333333 245.3333333333334V224H101.3333333333333z M245.3333333333333 160H133.3333333333333L104.5333333333333 198.4C102.4 201.6 99.2 202.6666666666667 96 202.6666666666667H10.6666666666667C4.2666666666667 202.6666666666667 0 198.4 0 192V10.6666666666667C0 4.2666666666667 4.2666666666667 0 10.6666666666667 0H245.3333333333333C251.7333333333333 0 256 4.2666666666667 256 10.6666666666667V149.3333333333334C256 155.7333333333334 251.7333333333334 160 245.3333333333333 160z" />
+ <glyph glyph-name="glasses-2"
+ unicode="&#xEA36;"
+ horiz-adv-x="256" d=" M213.3333333333333 245.3333333333334H202.6666666666667V224H213.3333333333333C225.0986666666667 224 234.6666666666667 214.432 234.6666666666667 202.6666666666667V114.5493333333334C224.512 122.944 211.4986666666667 128 197.3333333333333 128C176.2133333333333 128 157.7173333333333 116.7466666666667 147.392 99.9466666666667C141.9946666666667 104.096 135.3173333333333 106.6666666666667 128 106.6666666666667S114.0053333333334 104.096 108.608 99.9466666666667C98.2826666666667 116.7466666666667 79.7866666666667 128 58.6666666666667 128C44.5013333333333 128 31.488 122.944 21.3333333333333 114.5493333333333V202.6666666666667C21.3333333333333 214.432 30.9013333333333 224 42.6666666666667 224H53.3333333333333V245.3333333333334H42.6666666666667C19.136 245.3333333333334 0 226.1973333333334 0 202.6666666666667V69.3333333333334C0 36.992 26.3253333333333 10.6666666666667 58.6666666666667 10.6666666666667C89.2053333333333 10.6666666666667 114.3573333333333 34.144 117.0666666666667 64H117.3333333333333V74.6666666666667C117.3333333333333 80.5546666666667 122.112 85.3333333333333 128 85.3333333333333S138.6666666666667 80.5546666666667 138.6666666666667 74.6666666666667V64H138.9333333333333C141.6426666666667 34.144 166.784 10.6666666666667 197.3333333333333 10.6666666666667C229.6746666666667 10.6666666666667 256 36.992 256 69.3333333333333V202.6666666666667C256 226.1973333333334 236.864 245.3333333333334 213.3333333333333 245.3333333333334z" />
+ <glyph glyph-name="hat-3"
+ unicode="&#xEA37;"
+ horiz-adv-x="256" d=" M234.6666666666667 138.6666666666667H256V74.6666666666667H234.6666666666667V138.6666666666667z M141.2373333333333 88.2133333333333C137.0346666666667 86.2933333333334 132.5866666666667 85.3333333333333 128 85.3333333333333S118.9653333333333 86.2933333333334 114.7733333333334 88.2026666666667L42.6666666666667 120.9813333333334V64C42.6666666666667 35.9893333333333 85.5893333333333 21.3333333333333 128 21.3333333333333S213.3333333333333 35.9893333333334 213.3333333333333 64V120.9706666666667L141.2373333333333 88.2133333333333z M249.7493333333334 180.3733333333333L132.416 233.7066666666667C129.6106666666667 234.976 126.4 234.976 123.5946666666667 233.7066666666667L6.2613333333333 180.3733333333333C2.4426666666667 178.6453333333333 0 174.8586666666667 0 170.6666666666667S2.4426666666667 162.688 6.2506666666667 160.96L123.584 107.6266666666667C124.992 106.9866666666667 126.496 106.6666666666667 128 106.6666666666667S131.008 106.9866666666667 132.416 107.6266666666667L249.7493333333333 160.96C253.5573333333334 162.688 256 166.4746666666667 256 170.6666666666667S253.5573333333334 178.6453333333333 249.7493333333334 180.3733333333333z" />
+ <glyph glyph-name="headphones"
+ unicode="&#xEA38;"
+ horiz-adv-x="256" d=" M245.3333333333333 106.112V160C245.3333333333333 212.928 202.2613333333333 256 149.3333333333333 256H106.6666666666667C53.7386666666667 256 10.6666666666667 212.928 10.6666666666667 160V106.112C3.9466666666667 95.4346666666667 0 82.848 0 69.3333333333334C0 31.104 31.104 0 69.3333333333333 0C75.6266666666667 0 81.984 0.896 88.2346666666667 2.6666666666667C92.832 3.968 96 8.16 96 12.928V125.7386666666667C96 130.5066666666667 92.832 134.6986666666667 88.2346666666667 136C81.984 137.7706666666667 75.6266666666667 138.6666666666667 69.3333333333333 138.6666666666667C55.584 138.6666666666667 42.7946666666667 134.592 32 127.6586666666667V160C32 201.1733333333334 65.4933333333333 234.6666666666667 106.6666666666667 234.6666666666667H149.3333333333333C190.5066666666667 234.6666666666667 224 201.1733333333333 224 160V127.6586666666667C213.2053333333333 134.592 200.416 138.6666666666667 186.6666666666667 138.6666666666667C180.3733333333333 138.6666666666667 174.016 137.7706666666667 167.7653333333333 136C163.168 134.6986666666667 160 130.5066666666667 160 125.7386666666667V12.9386666666667C160 8.1706666666667 163.168 3.9786666666667 167.7653333333333 2.6773333333334C174.016 0.896 180.3733333333333 0 186.6666666666667 0C224.896 0 256 31.104 256 69.3333333333333C256 82.848 252.0533333333333 95.4346666666667 245.3333333333333 106.112z" />
+ <glyph glyph-name="html5"
+ unicode="&#xEA39;"
+ horiz-adv-x="256" d=" M231.9466666666667 241.7813333333333C229.9306666666667 244.0426666666667 227.04 245.3333333333334 224 245.3333333333334H32C28.96 245.3333333333334 26.0693333333333 244.0426666666667 24.0533333333333 241.7813333333333C22.0266666666667 239.52 21.0666666666667 236.5013333333333 21.3973333333333 233.4933333333334L42.7306666666667 41.4933333333333C43.2 37.1946666666667 46.24 33.6106666666667 50.4 32.4053333333333L125.0666666666667 11.072C126.0266666666667 10.8053333333334 127.0186666666667 10.6666666666667 128 10.6666666666667S129.9733333333333 10.8053333333334 130.9333333333333 11.072L205.6 32.4053333333334C209.76 33.6000000000001 212.7893333333333 37.184 213.2693333333333 41.4933333333334L234.6026666666667 233.4933333333334C234.9333333333333 236.5013333333333 233.9733333333333 239.52 231.9466666666667 241.7813333333333zM192 181.3333333333334H86.2613333333333L89.8133333333333 138.6666666666667H187.7866666666667L180.5333333333333 66.1333333333334L128 53.0026666666667L74.6666666666667 66.336V96H96V82.9973333333333L128 74.9973333333333L160.8 83.2L164.2133333333334 117.3333333333333H70.1866666666667L63.072 202.6666666666667H192V181.3333333333334z" />
+ <glyph glyph-name="istanbul"
+ unicode="&#xEA3A;"
+ horiz-adv-x="256" d=" M234.6666666666667 221.8666666666667V245.3333333333334C234.6666666666667 251.7333333333333 230.4 256 224 256S213.3333333333334 251.7333333333333 213.3333333333334 245.3333333333334V221.8666666666667C200.5333333333333 217.6 192 205.8666666666667 192 192V160V128C192 160 168.5333333333333 185.6 138.6666666666667 190.9333333333333V213.3333333333334C138.6666666666667 219.7333333333334 134.4 224 128 224S117.3333333333334 219.7333333333334 117.3333333333334 213.3333333333334V190.9333333333333C87.4666666666667 185.6 64 160 64 128V160V192C64 205.8666666666667 55.4666666666667 217.6 42.6666666666667 221.8666666666667V245.3333333333334C42.6666666666667 251.7333333333333 38.4 256 32 256S21.3333333333333 251.7333333333333 21.3333333333333 245.3333333333334V221.8666666666667C8.5333333333333 217.6 0 205.8666666666667 0 192V160V10.6666666666667C0 4.2666666666667 4.2666666666667 0 10.6666666666667 0H106.6666666666667V21.3333333333334C106.6666666666667 33.0666666666667 116.2666666666667 42.6666666666667 128 42.6666666666667L128 42.6666666666667C139.7333333333334 42.6666666666667 149.3333333333334 33.0666666666667 149.3333333333334 21.3333333333334V0H245.3333333333334C251.7333333333334 0 256 4.2666666666667 256 10.6666666666667V160V192C256 205.8666666666667 247.4666666666667 217.6 234.6666666666667 221.8666666666667zM42.6666666666667 170.6666666666667H21.3333333333333V192C21.3333333333333 198.4 25.6 202.6666666666667 32 202.6666666666667S42.6666666666667 198.4 42.6666666666667 192V170.6666666666667zM170.6666666666667 117.3333333333334H85.3333333333333V128C85.3333333333333 151.4666666666667 104.5333333333333 170.6666666666667 128 170.6666666666667C151.4666666666667 170.6666666666667 170.6666666666667 151.4666666666667 170.6666666666667 128V117.3333333333334zM234.6666666666667 170.6666666666667H213.3333333333333V192C213.3333333333333 198.4 217.6 202.6666666666667 224 202.6666666666667S234.6666666666667 198.4 234.6666666666667 192V170.6666666666667z" />
+ <glyph glyph-name="key-25"
+ unicode="&#xEA3B;"
+ horiz-adv-x="256" d=" M252.8746666666667 178.208L217.7493333333334 213.3333333333334L242.208 237.792C246.3786666666667 241.9626666666667 246.3786666666667 248.704 242.208 252.8746666666667S231.296 257.0453333333334 227.1253333333334 252.8746666666667L116.2773333333333 142.0266666666667C119.072 139.8506666666667 121.792 137.5466666666667 124.3413333333333 135.008C126.8906666666667 132.4586666666667 129.184 129.7386666666667 131.36 126.944L170.6666666666667 166.2506666666667L205.792 131.1253333333334C207.872 129.0453333333334 210.6026666666667 128 213.3333333333333 128S218.7946666666667 129.0453333333333 220.8746666666667 131.1253333333334L252.8746666666667 163.1253333333334C257.0453333333333 167.296 257.0453333333333 174.0373333333333 252.8746666666667 178.208z M64 10.6666666666667C81.0986666666667 10.6666666666667 97.1626666666667 17.3226666666667 109.2586666666667 29.408S128 57.568 128 74.6666666666667S121.344 107.8293333333334 109.2586666666667 119.9253333333334S81.0986666666667 138.6666666666667 64 138.6666666666667S30.8373333333333 132.0106666666667 18.7413333333333 119.9253333333334S0 91.7653333333333 0 74.6666666666667S6.656 41.504 18.7413333333333 29.408S46.9013333333333 10.6666666666667 64 10.6666666666667z" />
+ <glyph glyph-name="laptop"
+ unicode="&#xEA3C;"
+ horiz-adv-x="256" d=" M224 108.8533333333334V213.3333333333334C224 225.0986666666667 214.432 234.6666666666667 202.6666666666667 234.6666666666667H53.3333333333333C41.568 234.6666666666667 32 225.0986666666667 32 213.3333333333334V108.8533333333334L7.232 51.072C4.4053333333333 44.4586666666667 5.0773333333333 36.928 9.0346666666667 30.9226666666667C12.992 24.9173333333333 19.648 21.3333333333333 26.848 21.3333333333333H229.1626666666667C236.352 21.3333333333333 243.008 24.9173333333333 246.976 30.9226666666667C250.9333333333334 36.928 251.6053333333334 44.4586666666667 248.768 51.072L224 108.8533333333334zM202.6666666666667 117.3333333333334H53.3333333333333V213.3333333333334H202.6666666666666V117.3333333333334z" />
+ <glyph glyph-name="like-2"
+ unicode="&#xEA3D;"
+ horiz-adv-x="256" d=" M53.3333333333333 21.3333333333333H32C25.6 21.3333333333333 21.3333333333333 25.6 21.3333333333333 32V128C21.3333333333333 134.4 25.6 138.6666666666667 32 138.6666666666667H53.3333333333333C59.7333333333333 138.6666666666667 64 134.4 64 128V32C64 25.6 59.7333333333333 21.3333333333333 53.3333333333333 21.3333333333333z M213.3333333333333 149.3333333333334H160V181.3333333333334C160 199.4666666666667 149.3333333333334 224 133.3333333333334 233.6C125.8666666666667 236.8 117.3333333333333 232.5333333333334 117.3333333333333 224V181.3333333333334L85.3333333333333 142.9333333333333V32L88.5333333333333 30.9333333333333C100.2666666666667 24.5333333333334 114.1333333333333 21.3333333333333 128 21.3333333333333H202.6666666666667C214.4 21.3333333333333 224 30.9333333333333 224 42.6666666666667L234.6666666666667 128C234.6666666666667 139.7333333333334 225.0666666666667 149.3333333333334 213.3333333333333 149.3333333333334z" />
+ <glyph glyph-name="lock-circle-open"
+ unicode="&#xEA3E;"
+ horiz-adv-x="256" d=" M128 170.6666666666667C112.448 170.6666666666667 97.8986666666667 166.4213333333333 85.3333333333333 159.1253333333334V192C85.3333333333333 215.5306666666667 104.4693333333333 234.6666666666667 128 234.6666666666667S170.6666666666667 215.5306666666667 170.6666666666667 192H192C192 227.296 163.296 256 128 256S64 227.296 64 192V141.5893333333334C50.7626666666667 126.5493333333334 42.6666666666667 106.8906666666667 42.6666666666667 85.3333333333333C42.6666666666667 38.2826666666667 80.9493333333333 0 128 0S213.3333333333333 38.2826666666667 213.3333333333333 85.3333333333333S175.0506666666667 170.6666666666667 128 170.6666666666667zM138.6666666666667 65.9626666666667V42.6666666666667H117.3333333333333V65.9626666666667C104.9493333333333 70.3786666666667 96 82.112 96 96C96 113.6426666666667 110.3573333333333 128 128 128S160 113.6426666666667 160 96C160 82.112 151.0506666666667 70.3786666666667 138.6666666666667 65.9626666666667z" />
+ <glyph glyph-name="map-big"
+ unicode="&#xEA3F;"
+ horiz-adv-x="256" d=" M181.3333333333333 241.2586666666667L138.6666666666667 219.9253333333333L138.6666666666667 14.7413333333334L181.3333333333333 36.0746666666667z M117.3333333333333 219.9253333333333L74.6666666666667 241.2586666666667L74.6666666666667 36.0746666666667L117.3333333333333 14.7413333333334z M53.3333333333333 240.704L5.1733333333333 211.808C1.9733333333333 209.888 0 206.4213333333333 0 202.6666666666667V0L53.3333333333333 34.496V240.704z M250.8266666666667 211.808L202.6666666666667 240.704V34.496L256 0V202.6666666666667C256 206.4213333333333 254.0266666666667 209.888 250.8266666666667 211.808z" />
+ <glyph glyph-name="mobile-button"
+ unicode="&#xEA40;"
+ horiz-adv-x="256" d=" M192 256H64C46.3573333333333 256 32 241.6426666666667 32 224V32C32 14.3573333333333 46.3573333333333 0 64 0H192C209.6426666666667 0 224 14.3573333333333 224 32V224C224 241.6426666666667 209.6426666666667 256 192 256zM128 21.3333333333333C122.112 21.3333333333333 117.3333333333333 26.112 117.3333333333333 32S122.112 42.6666666666667 128 42.6666666666667S138.6666666666667 37.888 138.6666666666667 32S133.888 21.3333333333333 128 21.3333333333333zM202.6666666666667 74.6666666666667C202.6666666666667 68.7786666666667 197.888 64 192 64H64C58.112 64 53.3333333333333 68.7786666666667 53.3333333333333 74.6666666666667V213.3333333333334C53.3333333333333 219.2213333333334 58.112 224 64 224H192C197.888 224 202.6666666666667 219.2213333333334 202.6666666666667 213.3333333333334V74.6666666666667z" />
+ <glyph glyph-name="money-coins"
+ unicode="&#xEA41;"
+ horiz-adv-x="256" d=" M85.3333333333333 106.6666666666667H10.6666666666667C4.7786666666667 106.6666666666667 0 111.4453333333333 0 117.3333333333334V245.3333333333334C0 251.2213333333334 4.7786666666667 256 10.6666666666667 256H202.6666666666667C208.5546666666667 256 213.3333333333333 251.2213333333334 213.3333333333333 245.3333333333334V192H192V234.6666666666667H21.3333333333333V128H85.3333333333333V106.6666666666667z M181.3333333333333 85.3333333333333C149.856 85.3333333333333 123.7013333333333 92.1493333333334 106.6666666666667 103.5946666666667C106.6666666666667 95.6373333333334 106.6666666666667 90.3893333333334 106.6666666666667 85.3333333333333C106.6666666666667 67.6586666666667 140.096 53.3333333333333 181.3333333333333 53.3333333333333S256 67.6586666666667 256 85.3333333333333C256 90.3893333333334 256 95.6373333333334 256 103.5946666666667C238.9653333333333 92.1493333333334 212.8106666666667 85.3333333333333 181.3333333333333 85.3333333333333z M181.3333333333333 32C149.856 32 123.7013333333333 38.816 106.6666666666667 50.2613333333333C106.6666666666667 42.304 106.6666666666667 37.056 106.6666666666667 32C106.6666666666667 14.3253333333333 140.096 0 181.3333333333333 0S256 14.3253333333333 256 32C256 37.056 256 42.304 256 50.2613333333333C238.9653333333333 38.816 212.8106666666667 32 181.3333333333333 32z M95.0293333333333 163.4986666666667C102.3466666666667 172.0426666666667 113.5253333333333 179.0186666666667 127.7333333333333 183.936C126.4426666666667 194.4533333333334 117.5466666666667 202.6666666666667 106.6666666666667 202.6666666666667C94.9013333333333 202.6666666666667 85.3333333333333 193.0986666666667 85.3333333333333 181.3333333333334C85.3333333333333 173.8666666666667 89.2053333333333 167.3066666666667 95.0293333333333 163.4986666666667z M106.6666666666667 138.6666666666667C106.6666666666667 120.9935546720813 140.0960720126341 106.6666666666667 181.3333333333333 106.6666666666667C222.5705946540326 106.6666666666667 256 120.9935546720813 256 138.6666666666667C256 156.3397786612521 222.5705946540326 170.6666666666667 181.3333333333333 170.6666666666667C140.0960720126341 170.6666666666667 106.6666666666667 156.3397786612521 106.6666666666667 138.6666666666667z" />
+ <glyph glyph-name="note-03"
+ unicode="&#xEA42;"
+ horiz-adv-x="256" d=" M245.3333333333333 256H85.3333333333333C79.4453333333333 256 74.6666666666667 251.2213333333334 74.6666666666667 245.3333333333334V87.872C67.0293333333333 92.992 57.8666666666667 96 48 96C21.536 96 0 74.464 0 48S21.536 0 48 0S96 21.536 96 48V170.6666666666667H234.6666666666667V109.2053333333333C227.0293333333333 114.3253333333333 217.8666666666667 117.3333333333334 208 117.3333333333334C181.536 117.3333333333334 160 95.7973333333333 160 69.3333333333333S181.536 21.3333333333333 208 21.3333333333333S256 42.8693333333333 256 69.3333333333333V245.3333333333334C256 251.2213333333334 251.2213333333333 256 245.3333333333333 256z" />
+ <glyph glyph-name="notification-70"
+ unicode="&#xEA43;"
+ horiz-adv-x="256" d=" M202.6666666666667 256C170.6666666666667 256 140.8 240 122.6666666666667 213.3333333333334H85.3333333333333H74.6666666666667H32C13.8666666666667 213.3333333333334 0 190.9333333333333 0 160S13.8666666666667 106.6666666666667 32 106.6666666666667H56.5333333333333L102.4 28.8C108.8 18.1333333333334 121.6 14.9333333333333 131.2 21.3333333333333C141.8666666666667 27.7333333333334 145.0666666666667 40.5333333333333 138.6666666666667 50.1333333333334L105.6 106.6666666666667H122.6666666666667C140.8 80 170.6666666666667 64 202.6666666666667 64C233.6 64 256 105.6 256 160S233.6 256 202.6666666666667 256zM202.6666666666667 85.3333333333333C193.0666666666667 85.3333333333333 182.4 99.2 176 120.5333333333333C192 126.9333333333333 202.6666666666667 141.8666666666667 202.6666666666667 160S192 193.0666666666667 176 199.4666666666667C182.4 220.8 193.0666666666667 234.6666666666667 202.6666666666667 234.6666666666667C217.6 234.6666666666667 234.6666666666667 202.6666666666667 234.6666666666667 160S217.6 85.3333333333333 202.6666666666667 85.3333333333333z" />
+ <glyph glyph-name="palette"
+ unicode="&#xEA44;"
+ horiz-adv-x="256" d=" M217.6 190.9333333333333C205.8666666666666 196.2666666666667 194.1333333333333 199.4666666666667 181.3333333333333 199.4666666666667C164.2666666666667 199.4666666666667 149.3333333333333 194.1333333333333 135.4666666666667 189.8666666666667C126.9333333333333 186.6666666666667 118.4 184.5333333333334 112 184.5333333333334C107.7333333333333 184.5333333333334 105.6 185.6 104.5333333333333 187.7333333333334C104.5333333333333 188.8 105.6 194.1333333333334 106.6666666666666 197.3333333333334C109.8666666666667 206.9333333333333 113.0666666666667 218.6666666666667 104.5333333333333 230.4C99.2 236.8 90.6666666666666 241.0666666666667 81.0666666666666 241.0666666666667C71.4666666666666 241.0666666666667 62.9333333333333 237.8666666666667 54.4 232.5333333333334C20.2666666666667 209.0666666666667 0 169.6 0 128C0 57.6 57.6 0 128 0C184.5333333333333 0 235.7333333333333 38.4 251.7333333333333 93.8666666666667C252.8 100.2666666666667 267.7333333333334 166.4 217.6 190.9333333333333zM32 128C32 139.7333333333334 41.6 149.3333333333333 53.3333333333333 149.3333333333333S74.6666666666667 139.7333333333334 74.6666666666667 128S65.0666666666667 106.6666666666667 53.3333333333333 106.6666666666667S32 116.2666666666667 32 128zM80 53.3333333333333C68.2666666666667 53.3333333333333 58.6666666666667 62.9333333333333 58.6666666666667 74.6666666666667S68.2666666666667 96 80 96S101.3333333333333 86.4 101.3333333333333 74.6666666666667S91.7333333333333 53.3333333333333 80 53.3333333333333zM138.6666666666667 32C126.9333333333333 32 117.3333333333333 41.6 117.3333333333333 53.3333333333333S126.9333333333333 74.6666666666667 138.6666666666667 74.6666666666667S160 65.0666666666667 160 53.3333333333333S150.4 32 138.6666666666667 32zM181.3333333333333 96C163.2 96 149.3333333333333 109.8666666666667 149.3333333333333 128S163.2 160 181.3333333333333 160S213.3333333333333 146.1333333333333 213.3333333333333 128S199.4666666666667 96 181.3333333333333 96z" />
+ <glyph glyph-name="paper-diploma"
+ unicode="&#xEA45;"
+ horiz-adv-x="256" d=" M74.6666666666667 37.3333333333333C74.6666666666667 24.608 61.9306666666667 21.8986666666667 58.24 21.376C49.6106666666667 21.6106666666667 42.6666666666667 28.6613333333333 42.6666666666667 37.3333333333333V234.6666666666667H138.6666666666667V256H32C26.112 256 21.3333333333333 251.2213333333334 21.3333333333333 245.3333333333334V37.3333333333333C21.3333333333333 16.7466666666667 38.08 0 58.6666666666667 0H218.6666666666667C239.2533333333334 0 256 16.7466666666667 256 37.3333333333333V53.3333333333333H74.6666666666667V37.3333333333333z M202.6666666666667 128C186.8053333333333 128 172.1066666666667 133.0133333333333 160 141.4826666666667V74.6666666666667L202.6666666666667 106.6666666666667L245.3333333333333 74.6666666666667V141.4826666666667C233.2266666666667 133.0133333333334 218.528 128 202.6666666666667 128z M149.3333333333333 202.6666666666667C149.3333333333333 173.2114800090244 173.2114800090243 149.3333333333334 202.6666666666667 149.3333333333334C232.121853324309 149.3333333333334 256 173.2114800090244 256 202.6666666666667C256 232.121853324309 232.121853324309 256 202.6666666666667 256C173.2114800090243 256 149.3333333333333 232.121853324309 149.3333333333333 202.6666666666667z" />
+ <glyph glyph-name="pin-3"
+ unicode="&#xEA46;"
+ horiz-adv-x="256" d=" M128 256C81.0666666666667 256 32 219.7333333333334 32 160C32 103.4666666666667 117.3333333333333 17.0666666666667 120.5333333333333 13.8666666666667C122.6666666666667 11.7333333333333 124.8 10.6666666666667 128 10.6666666666667S133.3333333333334 11.7333333333333 135.4666666666667 13.8666666666667C138.6666666666667 17.0666666666667 224 103.4666666666667 224 160C224 219.7333333333334 174.9333333333333 256 128 256zM128 128C109.8666666666667 128 96 141.8666666666667 96 160S109.8666666666667 192 128 192S160 178.1333333333333 160 160S146.1333333333333 128 128 128z" />
+ <glyph glyph-name="planet"
+ unicode="&#xEA47;"
+ horiz-adv-x="256" d=" M228.608 54.624C235.7653333333333 37.5253333333333 236.032 26.4426666666667 232.5333333333333 22.9333333333333C228.1066666666667 18.5066666666667 211.1466666666667 21.7066666666667 185.984 35.8186666666667C209.2053333333333 55.4133333333334 224 84.6613333333334 224 117.3333333333334C224 176.1493333333334 176.1493333333334 224 117.3333333333334 224C84.6613333333333 224 55.4133333333333 209.2053333333333 35.8293333333333 185.9946666666667C21.7066666666667 211.1573333333333 18.5173333333333 228.1173333333334 22.9333333333333 232.544C26.4426666666667 236.0426666666667 37.5253333333333 235.776 54.624 228.6186666666667C62.7093333333333 233.2053333333334 71.3386666666667 236.8426666666667 80.384 239.6053333333334C47.2853333333333 257.952 21.3866666666667 261.1840000000001 7.84 247.6373333333334C-7.8293333333333 231.936 1.3653333333333 200.7466666666667 22.6666666666667 166.2826666666667C15.04 151.6053333333333 10.6666666666667 134.9866666666667 10.6666666666667 117.3333333333334C10.6666666666667 58.5173333333333 58.5173333333333 10.6666666666667 117.3333333333333 10.6666666666667C134.9866666666667 10.6666666666667 151.6053333333333 15.04 166.2826666666667 22.6666666666667C200.7573333333334 1.3653333333334 231.936 -7.8293333333333 247.6266666666667 7.8613333333334C261.1733333333334 21.408 257.9413333333333 47.296 239.5946666666667 80.4053333333334C236.8426666666667 71.3493333333333 233.1946666666667 62.7093333333334 228.608 54.624zM69.3333333333333 96C60.5013333333333 96 53.3333333333333 103.168 53.3333333333333 112S60.5013333333333 128 69.3333333333333 128S85.3333333333333 120.832 85.3333333333333 112S78.1653333333333 96 69.3333333333333 96zM138.6666666666667 74.6666666666667C132.7786666666667 74.6666666666667 128 79.4453333333333 128 85.3333333333333C128 91.2213333333334 132.7786666666667 96 138.6666666666667 96C144.5546666666667 96 149.3333333333333 91.2213333333334 149.3333333333333 85.3333333333333C149.3333333333333 79.4453333333333 144.5546666666667 74.6666666666667 138.6666666666667 74.6666666666667zM133.3333333333333 138.6666666666667C124.5013333333333 138.6666666666667 117.3333333333333 145.8346666666667 117.3333333333333 154.6666666666667S124.5013333333333 170.6666666666667 133.3333333333333 170.6666666666667S149.3333333333333 163.4986666666667 149.3333333333333 154.6666666666667S142.1653333333333 138.6666666666667 133.3333333333333 138.6666666666667z" />
+ <glyph glyph-name="ruler-pencil"
+ unicode="&#xEA48;"
+ horiz-adv-x="256" d=" M202.6666666666667 0C199.3173333333333 0 196.1493333333333 1.5786666666667 194.1333333333333 4.2666666666667L162.1333333333333 46.9333333333333C160.7466666666667 48.7786666666667 160 51.0293333333333 160 53.3333333333333V202.6666666666667H245.3333333333333V53.3333333333334C245.3333333333333 51.0293333333334 244.5866666666667 48.7786666666667 243.2 46.9333333333334L211.2 4.2666666666667C209.184 1.5786666666667 206.016 0 202.6666666666667 0z M234.6666666666667 256H170.6666666666667C164.7786666666667 256 160 251.2213333333334 160 245.3333333333334V224H245.3333333333333V245.3333333333334C245.3333333333333 251.2213333333334 240.5546666666667 256 234.6666666666667 256z M106.6666666666667 256H21.3333333333333C14.9333333333333 256 10.6666666666667 251.7333333333333 10.6666666666667 245.3333333333334V202.6666666666667H53.3333333333333V181.3333333333334H10.6666666666667V160H42.6666666666667V138.6666666666667H10.6666666666667V117.3333333333334H53.3333333333333V96H10.6666666666667V74.6666666666667H42.6666666666667V53.3333333333333H10.6666666666667V10.6666666666667C10.6666666666667 4.2666666666667 14.9333333333333 0 21.3333333333333 0H106.6666666666667C113.0666666666667 0 117.3333333333333 4.2666666666667 117.3333333333333 10.6666666666667V245.3333333333334C117.3333333333333 251.7333333333333 113.0666666666667 256 106.6666666666667 256z" />
+ <glyph glyph-name="satisfied"
+ unicode="&#xEA49;"
+ horiz-adv-x="256" d=" M128 256C57.6 256 0 198.4 0 128S57.6 0 128 0C198.4 0 256 57.6 256 128S198.4 256 128 256zM53.3333333333333 160C53.3333333333333 178.1333333333333 67.2 192 85.3333333333333 192C103.4666666666667 192 117.3333333333333 178.1333333333333 117.3333333333333 160H96C96 166.4 91.7333333333333 170.6666666666667 85.3333333333333 170.6666666666667C78.9333333333333 170.6666666666667 74.6666666666667 166.4 74.6666666666667 160H53.3333333333333zM202.6666666666667 117.3333333333334C202.6666666666667 75.7333333333334 169.6 42.6666666666667 128 42.6666666666667C86.4 42.6666666666667 53.3333333333333 75.7333333333334 53.3333333333333 117.3333333333334H74.6666666666667C74.6666666666667 87.4666666666667 98.1333333333333 64 128 64C157.8666666666667 64 181.3333333333333 87.4666666666667 181.3333333333333 117.3333333333333H202.6666666666667zM181.3333333333333 160C181.3333333333333 166.4 177.0666666666666 170.6666666666667 170.6666666666667 170.6666666666667C164.2666666666667 170.6666666666667 160 166.4 160 160H138.6666666666667C138.6666666666667 178.1333333333333 152.5333333333333 192 170.6666666666667 192C188.8 192 202.6666666666667 178.1333333333333 202.6666666666667 160H181.3333333333333z" />
+ <glyph glyph-name="scissors"
+ unicode="&#xEA4A;"
+ horiz-adv-x="256" d=" M197.3333333333333 96C189.568 96 182.336 93.9733333333333 175.8293333333333 90.6773333333333L152.2773333333333 118.144L212.2773333333333 178.144C232.96 198.8266666666667 236.9173333333333 230.9226666666667 221.8666666666667 256L128 146.4853333333334L34.1333333333333 256C19.0826666666667 230.9226666666667 23.04 198.8266666666667 43.7226666666667 178.1546666666667L103.7226666666667 118.1546666666667L80.1706666666667 90.688C73.664 93.9733333333334 66.432 96 58.6666666666667 96C32.2026666666667 96 10.6666666666667 74.464 10.6666666666667 48S32.2026666666667 0 58.6666666666667 0S106.6666666666667 21.536 106.6666666666667 48C106.6666666666667 55.168 104.9813333333333 61.9093333333333 102.1546666666667 68.0213333333333L128 93.8666666666667L153.8453333333334 68.0213333333333C151.0186666666667 61.9093333333333 149.3333333333333 55.168 149.3333333333333 48C149.3333333333333 21.536 170.8693333333333 0 197.3333333333333 0S245.3333333333333 21.536 245.3333333333333 48S223.7973333333334 96 197.3333333333333 96zM58.6666666666667 21.3333333333333C43.968 21.3333333333333 32 33.2906666666667 32 48S43.968 74.6666666666667 58.6666666666667 74.6666666666667S85.3333333333333 62.7093333333334 85.3333333333333 48S73.3653333333333 21.3333333333333 58.6666666666667 21.3333333333333zM170.6666666666667 48C170.6666666666667 62.7093333333334 182.6346666666667 74.6666666666667 197.3333333333333 74.6666666666667S224 62.7093333333333 224 48S212.032 21.3333333333333 197.3333333333333 21.3333333333333S170.6666666666667 33.2906666666667 170.6666666666667 48z" />
+ <glyph glyph-name="send"
+ unicode="&#xEA4B;"
+ horiz-adv-x="256" d=" M15.1786666666667 138.1546666666667L42.6666666666667 117.3333333333334L138.6666666666667 160L64.2453333333333 101.344V29.3546666666667C64.2453333333333 19.4026666666667 76.6613333333333 14.8693333333333 83.072 22.4853333333333L116.4693333333333 62.1653333333333L185.8026666666667 10.1546666666667C192.0853333333333 5.4506666666667 201.12 8.896 202.6666666666667 16.5973333333334L245.376 229.9306666666667C247.04 238.24 238.816 245.0773333333334 230.9546666666667 241.9306666666667L17.6213333333333 156.5973333333333C9.8986666666667 153.504 8.5226666666667 143.1466666666667 15.1786666666667 138.1546666666667z" />
+ <glyph glyph-name="settings-gear-65"
+ unicode="&#xEA4C;"
+ horiz-adv-x="256" d=" M224 149.3333333333334H210.1333333333333C208 156.8 204.8 164.2666666666667 200.5333333333333 171.7333333333334L210.1333333333333 181.3333333333334C218.6666666666667 189.8666666666667 218.6666666666667 202.6666666666667 210.1333333333333 211.2H210.1333333333333C201.6 219.7333333333334 188.8 219.7333333333334 180.2666666666667 211.2L170.6666666666667 201.6C164.2666666666667 205.8666666666667 156.8 209.0666666666667 148.2666666666667 211.2V224C148.2666666666667 235.7333333333334 138.6666666666667 245.3333333333334 126.9333333333333 245.3333333333334S105.6 235.7333333333334 105.6 224V210.1333333333333C99.2 208 91.7333333333333 205.8666666666667 84.2666666666667 201.6L75.7333333333333 211.2C67.2 219.7333333333334 54.4 219.7333333333334 45.8666666666667 211.2H45.8666666666667C37.3333333333333 202.6666666666667 37.3333333333333 189.8666666666667 45.8666666666667 181.3333333333334L55.4666666666667 171.7333333333334C50.1333333333333 164.2666666666667 48 156.8 45.8666666666667 149.3333333333334H32C20.2666666666667 149.3333333333334 10.6666666666667 139.7333333333334 10.6666666666667 128C10.6666666666667 116.2666666666667 20.2666666666667 106.6666666666667 32 106.6666666666667H45.8666666666667C48 99.2 51.2 91.7333333333334 55.4666666666667 84.2666666666667L45.8666666666667 74.6666666666667C37.3333333333333 66.1333333333334 37.3333333333333 53.3333333333333 45.8666666666667 44.8H45.8666666666667C54.4 36.2666666666667 67.2 36.2666666666667 75.7333333333333 44.8L85.3333333333333 54.4C91.7333333333333 50.1333333333333 99.2 46.9333333333333 107.7333333333333 44.8V32C107.7333333333333 20.2666666666667 117.3333333333333 10.6666666666667 129.0666666666667 10.6666666666667S150.4 20.2666666666667 150.4 32V45.8666666666667C157.8666666666667 48 165.3333333333334 51.2 172.8 55.4666666666667L182.4 45.8666666666667C190.9333333333333 37.3333333333333 203.7333333333334 37.3333333333333 212.2666666666667 45.8666666666667H212.2666666666667C220.8 54.4 220.8 67.2 212.2666666666667 75.7333333333334L202.6666666666667 85.3333333333333C206.9333333333334 91.7333333333334 210.1333333333334 99.2 212.2666666666667 107.7333333333334H224C235.7333333333334 107.7333333333334 245.3333333333334 117.3333333333334 245.3333333333334 129.0666666666667C245.3333333333333 139.7333333333334 235.7333333333334 149.3333333333334 224 149.3333333333334zM128 96C109.8666666666667 96 96 109.8666666666667 96 128S109.8666666666667 160 128 160S160 146.1333333333333 160 128S146.1333333333333 96 128 96z" />
+ <glyph glyph-name="settings"
+ unicode="&#xEA4D;"
+ horiz-adv-x="256" d=" M115.7653333333333 155.3173333333334L71.5413333333333 199.5413333333334L85.3333333333333 213.3333333333334L42.6666666666667 256L0 213.3333333333334L42.6666666666667 170.6666666666667L56.4586666666667 184.4586666666667L98.016 142.9013333333334z M202.0266666666667 107.3066666666667C198.7306666666667 106.9226666666667 195.392 106.6666666666667 192 106.6666666666667C188.7466666666667 106.6666666666667 185.5146666666667 106.8586666666667 182.272 107.232L143.4346666666667 59.2426666666667L191.6266666666667 11.0506666666667C206.3573333333334 -3.6799999999999 230.2293333333334 -3.6799999999999 244.96 11.0506666666667V11.0506666666667C259.6906666666667 25.7813333333334 259.6906666666667 49.6533333333334 244.96 64.384L202.0266666666667 107.3066666666667z M216.224 183.776L183.776 216.224L217.9946666666667 250.4426666666667C210.048 253.984 201.2693333333333 256 192 256C156.6506666666667 256 128 227.3493333333334 128 192C128 185.664 128.9493333333333 179.5626666666667 130.6666666666667 173.7813333333334L15.584 80.6613333333334C6.08 72.2666666666667 0.4053333333333 60.192 0.0213333333333 47.5306666666667C-0.3733333333333 34.8586666666667 4.544 22.4533333333333 13.504 13.504C22.208 4.7893333333334 33.7813333333333 0 46.0906666666667 0C59.3066666666667 0 71.9146666666667 5.6746666666667 80.6613333333333 15.584L173.7813333333334 130.6666666666667C179.5626666666667 128.9493333333334 185.664 128 192 128C227.3493333333334 128 256 156.6506666666667 256 192C256 201.2693333333334 253.984 210.048 250.4426666666667 218.0053333333334L216.224 183.776z" />
+ <glyph glyph-name="single-02"
+ unicode="&#xEA4E;"
+ horiz-adv-x="256" d=" M164.9173333333333 106.4213333333333C153.856 99.9253333333334 141.4186666666667 96 128 96S102.144 99.9253333333333 91.0826666666667 106.4213333333333C52.2026666666667 103.872 21.3333333333333 71.5093333333334 21.3333333333333 32V13.5466666666667L28.7466666666667 11.168C30.176 10.72 64.4053333333333 0 128 0S225.824 10.72 227.2533333333334 11.168L234.6666666666667 13.5466666666667V32C234.6666666666667 71.5093333333334 203.7973333333334 103.872 164.9173333333333 106.4213333333333z M128 117.3333333333334C164.0426666666667 117.3333333333334 192 157.472 192 192C192 227.296 163.296 256 128 256S64 227.296 64 192C64 157.472 91.9573333333333 117.3333333333334 128 117.3333333333334z" />
+ <glyph glyph-name="single-copy-04"
+ unicode="&#xEA4F;"
+ horiz-adv-x="256" d=" M245.3333333333333 21.3333333333333H224V234.6666666666667H42.6666666666667V256H234.6666666666667C240.5546666666667 256 245.3333333333333 251.2213333333334 245.3333333333333 245.3333333333334V21.3333333333333z M192 213.3333333333334H21.3333333333333C15.4453333333333 213.3333333333334 10.6666666666667 208.5546666666667 10.6666666666667 202.6666666666667V10.6666666666667C10.6666666666667 4.7786666666667 15.4453333333333 0 21.3333333333333 0H192C197.888 0 202.6666666666667 4.7786666666667 202.6666666666667 10.6666666666667V202.6666666666667C202.6666666666667 208.5546666666667 197.888 213.3333333333334 192 213.3333333333334zM117.3333333333333 53.3333333333333H53.3333333333333V74.6666666666667H117.3333333333333V53.3333333333333zM160 96H53.3333333333333V117.3333333333334H160V96zM160 138.6666666666667H53.3333333333333V160H160V138.6666666666667z" />
+ <glyph glyph-name="sound-wave"
+ unicode="&#xEA50;"
+ horiz-adv-x="256" d=" M96 32C91.6586666666667 32 87.7226666666667 34.6453333333333 86.0906666666667 38.6986666666667L50.9546666666667 126.5386666666667L40.8746666666667 111.4133333333333C38.8906666666667 108.448 35.5626666666667 106.6666666666667 32 106.6666666666667H0V128H26.2933333333333L44.4586666666667 155.2533333333333C46.656 158.5386666666667 50.4213333333333 160.3093333333334 54.4426666666667 159.9466666666667C58.3786666666667 159.5306666666667 61.7813333333333 156.9813333333334 63.2426666666667 153.3013333333333L94.7626666666667 74.4746666666667L139.1573333333333 216.512C140.544 220.9706666666667 144.6613333333333 224 149.3333333333333 224C149.344 224 149.344 224 149.3546666666667 224C154.0266666666667 223.9893333333333 158.1546666666667 220.9386666666667 159.5306666666666 216.4693333333334L196.032 97.824L215.4666666666667 123.7333333333334C217.472 126.4213333333333 220.64 128 224 128H256V106.6666666666667H229.3333333333333L200.5333333333333 68.2666666666667C198.1333333333333 65.0666666666667 194.144 63.488 190.1653333333333 64.16C186.2186666666667 64.8533333333334 182.9866666666667 67.7013333333334 181.8026666666667 71.5306666666667L149.248 177.312L106.176 39.488C104.832 35.1786666666667 100.928 32.1813333333334 96.416 32.0106666666667C96.2666666666667 32 96.1386666666667 32 96 32z" />
+ <glyph glyph-name="spaceship"
+ unicode="&#xEA51;"
+ horiz-adv-x="256" d=" M254.592 243.3493333333334A10.623999999999999 10.623999999999999 0 0 1 243.392 254.6026666666667C198.6453333333333 252.2666666666667 162.4 238.6773333333334 133.4613333333334 220.7893333333333C98.4 233.6 59.424 225.376 32.7573333333334 198.6986666666667A96.544 96.544 0 0 1 18.0053333333334 179.5093333333333C15.5413333333334 175.328 16.224 169.9946666666667 19.6586666666667 166.5493333333333L50.4 135.808C42.0373333333334 121.9733333333333 38.0906666666667 112.5226666666667 37.952 112.1706666666667C36.3626666666667 108.2026666666667 37.2906666666667 103.6693333333333 40.3093333333334 100.6506666666666L100.6506666666667 40.3093333333333A10.666666666666666 10.666666666666666 0 0 1 112.2346666666667 37.9733333333333C112.5866666666667 38.112 121.9626666666667 42.0906666666666 135.7226666666667 50.496L166.56 19.6586666666666A10.613333333333335 10.613333333333335 0 0 1 179.5200000000001 18.016A95.93599999999998 95.93599999999998 0 0 1 198.7093333333334 32.768C225.6106666666667 59.6693333333333 233.7813333333334 98.8266666666667 220.6720000000001 133.9946666666667C238.4853333333334 162.8586666666667 252.0746666666668 198.9333333333333 254.5920000000001 243.3493333333334zM110.4853333333333 60.64L60.5866666666667 110.528C69.3013333333333 128.5333333333334 98.3253333333333 179.7013333333334 157.1306666666667 210.1013333333334L209.824 157.408C179.3706666666666 98.7093333333334 128.4693333333334 69.4613333333334 110.4853333333333 60.64z M128 149.3333333333334C128 137.5512586702764 137.5512586702764 128 149.3333333333333 128C161.1154079963903 128 170.6666666666667 137.5512586702764 170.6666666666667 149.3333333333334C170.6666666666667 161.1154079963903 161.1154079963903 170.6666666666667 149.3333333333333 170.6666666666667C137.5512586702764 170.6666666666667 128 161.1154079963903 128 149.3333333333334z M11.872 54.9973333333333A30.32533333333333 30.32533333333333 0 1 0 54.7733333333333 12.096C42.9226666666667 0.2453333333333 0 0 0 0S0.0213333333333 43.1573333333333 11.872 54.9973333333333z" />
+ <glyph glyph-name="square-pin"
+ unicode="&#xEA52;"
+ horiz-adv-x="256" d=" M234.6666666666667 0H21.3333333333333C17.632 0 14.208 1.92 12.256 5.056C10.3146666666667 8.2026666666667 10.1333333333333 12.128 11.7866666666667 15.4346666666667L43.7866666666667 79.4346666666667C46.4213333333333 84.704 52.8213333333333 86.8373333333334 58.1013333333333 84.2026666666667C63.3706666666667 81.568 65.504 75.1573333333334 62.8693333333333 69.888L38.592 21.3333333333333H217.408L193.1306666666666 69.8986666666667C190.496 75.168 192.6293333333333 81.5786666666667 197.8986666666666 84.2133333333333C203.1786666666666 86.848 209.5786666666666 84.704 212.2133333333333 79.4453333333333L244.2133333333333 15.4453333333333C245.8666666666667 12.1386666666666 245.6853333333333 8.2133333333333 243.744 5.0666666666666C241.792 1.92 238.368 0 234.6666666666667 0z M128 256C86.048 256 42.6666666666667 224.0853333333333 42.6666666666667 170.6666666666667C42.6666666666667 121.6 112.4693333333333 49.8453333333333 120.4266666666667 41.8133333333333C122.432 39.7973333333333 125.152 38.6666666666667 128 38.6666666666667S133.568 39.7973333333333 135.5733333333333 41.8133333333333C143.5306666666667 49.8453333333333 213.3333333333333 121.6 213.3333333333333 170.6666666666667C213.3333333333333 224.0853333333333 169.952 256 128 256zM128 149.3333333333334C116.2133333333334 149.3333333333334 106.6666666666667 158.88 106.6666666666667 170.6666666666667C106.6666666666667 182.4533333333333 116.2133333333334 192 128 192S149.3333333333334 182.4533333333333 149.3333333333334 170.6666666666667C149.3333333333333 158.88 139.7866666666667 149.3333333333334 128 149.3333333333334z" />
+ <glyph glyph-name="support-16"
+ unicode="&#xEA53;"
+ horiz-adv-x="256" d=" M245.3333333333333 160H240.9173333333333C229.856 199.2533333333333 199.264 229.856 160 240.9173333333334V245.3333333333334C160 251.2213333333334 155.232 256 149.3333333333334 256H106.6666666666667C100.768 256 96 251.2213333333334 96 245.3333333333334V240.9173333333334C56.736 229.856 26.144 199.2533333333333 15.0826666666667 160H10.6666666666667C4.768 160 0 155.2213333333334 0 149.3333333333333V106.6666666666667C0 100.7786666666667 4.768 96 10.6666666666667 96H15.0826666666667C26.144 56.7466666666667 56.736 26.144 96 15.0826666666667V10.6666666666667C96 4.7786666666667 100.768 0 106.6666666666667 0H149.3333333333334C155.232 0 160 4.7786666666667 160 10.6666666666667V15.0826666666667C199.264 26.144 229.856 56.7466666666667 240.9173333333333 96H245.3333333333333C251.232 96 256 100.7786666666667 256 106.6666666666667V149.3333333333333C256 155.2213333333334 251.232 160 245.3333333333333 160zM128 85.3333333333333C104.4693333333333 85.3333333333333 85.3333333333333 104.4693333333333 85.3333333333333 128S104.4693333333333 170.6666666666667 128 170.6666666666667S170.6666666666667 151.5306666666667 170.6666666666667 128S151.5306666666667 85.3333333333333 128 85.3333333333333zM218.4746666666667 160H183.3386666666667C177.728 169.6746666666667 169.6746666666667 177.728 160 183.3386666666667V218.4746666666667C187.3813333333333 208.8533333333334 208.8533333333333 187.3813333333334 218.4746666666667 160zM96 218.4746666666667V183.3386666666667C86.3253333333333 177.728 78.272 169.6746666666667 72.6613333333333 160H37.5253333333333C47.1466666666667 187.3813333333334 68.6186666666667 208.8533333333334 96 218.4746666666667zM37.5253333333333 96H72.6613333333333C78.272 86.3253333333333 86.3253333333333 78.272 96 72.6613333333334V37.5253333333334C68.6186666666667 47.1466666666667 47.1466666666667 68.6186666666667 37.5253333333333 96zM160 37.5253333333334V72.6613333333334C169.6746666666667 78.272 177.728 86.336 183.3386666666667 96H218.4746666666667C208.8533333333333 68.6186666666667 187.3813333333333 47.1466666666667 160 37.5253333333334z" />
+ <glyph glyph-name="tablet-button"
+ unicode="&#xEA54;"
+ horiz-adv-x="256" d=" M213.3333333333333 256H42.6666666666667C25.024 256 10.6666666666667 241.6426666666667 10.6666666666667 224V32C10.6666666666667 14.3573333333333 25.024 0 42.6666666666667 0H213.3333333333333C230.976 0 245.3333333333333 14.3573333333333 245.3333333333333 32V224C245.3333333333333 241.6426666666667 230.976 256 213.3333333333333 256zM128 21.3333333333333C122.112 21.3333333333333 117.3333333333333 26.112 117.3333333333333 32S122.112 42.6666666666667 128 42.6666666666667S138.6666666666667 37.888 138.6666666666667 32S133.888 21.3333333333333 128 21.3333333333333zM224 74.6666666666667C224 68.7786666666667 219.2213333333334 64 213.3333333333334 64H42.6666666666667C36.7786666666667 64 32 68.7786666666667 32 74.6666666666667V213.3333333333334C32 219.2213333333334 36.7786666666667 224 42.6666666666667 224H213.3333333333333C219.2213333333333 224 224 219.2213333333334 224 213.3333333333334V74.6666666666667z" />
+ <glyph glyph-name="tag"
+ unicode="&#xEA55;"
+ horiz-adv-x="256" d=" M242.208 124.8746666666667L124.8746666666667 242.2080000000001C122.88 244.2026666666667 120.16 245.3333333333334 117.3333333333333 245.3333333333334H21.3333333333333C15.4453333333333 245.3333333333334 10.6666666666667 240.5546666666667 10.6666666666667 234.6666666666667V138.6666666666667C10.6666666666667 135.84 11.7866666666667 133.12 13.792 131.1253333333334L131.1253333333333 13.792C133.2053333333333 11.7013333333334 135.936 10.6666666666667 138.6666666666667 10.6666666666667S144.128 11.712 146.208 13.792L242.208 109.792C246.3786666666667 113.952 246.3786666666667 120.704 242.208 124.8746666666667zM74.6666666666667 160C62.88 160 53.3333333333333 169.5466666666667 53.3333333333333 181.3333333333334C53.3333333333333 193.12 62.88 202.6666666666667 74.6666666666667 202.6666666666667S96 193.12 96 181.3333333333334C96 169.5466666666667 86.4533333333333 160 74.6666666666667 160z" />
+ <glyph glyph-name="tie-bow"
+ unicode="&#xEA56;"
+ horiz-adv-x="256" d=" M128 74.6666666666667L128 74.6666666666667C116.2666666666667 74.6666666666667 106.6666666666667 84.2666666666667 106.6666666666667 96V160C106.6666666666667 171.7333333333334 116.2666666666667 181.3333333333333 128 181.3333333333333H128C139.7333333333334 181.3333333333333 149.3333333333334 171.7333333333334 149.3333333333334 160V96C149.3333333333333 84.2666666666667 139.7333333333333 74.6666666666667 128 74.6666666666667z M240 204.8C230.4 210.1333333333333 218.6666666666667 211.2 208 204.8L165.3333333333333 181.3333333333334C168.5333333333333 174.9333333333333 170.6666666666667 167.4666666666667 170.6666666666667 160V138.6666666666667H202.6666666666667V117.3333333333334H170.6666666666667V96C170.6666666666667 88.5333333333333 168.5333333333333 81.0666666666667 165.3333333333333 74.6666666666667L209.0666666666666 50.1333333333333C214.4 46.9333333333333 219.7333333333333 45.8666666666666 225.0666666666666 45.8666666666666C230.4 45.8666666666666 235.7333333333333 46.9333333333333 241.0666666666667 50.1333333333333C250.6666666666667 55.4666666666667 257.0666666666666 66.1333333333333 257.0666666666666 77.8666666666667V177.0666666666667C256 188.8 249.6 198.4 240 204.8z M85.3333333333333 117.3333333333334H53.3333333333333V138.6666666666667H85.3333333333333V160C85.3333333333333 167.4666666666667 87.4666666666667 174.9333333333333 90.6666666666667 181.3333333333333L48 204.8C38.4 210.1333333333333 25.6 210.1333333333333 16 204.8C6.4 198.4 0 188.8 0 177.0666666666667V78.9333333333333C0 67.2 6.4 57.6 16 51.2C21.3333333333333 48 26.6666666666667 46.9333333333333 32 46.9333333333333C37.3333333333333 46.9333333333333 42.6666666666667 48 48 51.2L90.6666666666667 74.6666666666667C87.4666666666667 81.0666666666667 85.3333333333333 88.5333333333334 85.3333333333333 96V117.3333333333334z" />
+ <glyph glyph-name="time-alarm"
+ unicode="&#xEA57;"
+ horiz-adv-x="256" d=" M244.2666666666667 158.9333333333333C246.4 160 248.5333333333334 161.0666666666667 249.6 163.2C253.8666666666667 172.8 256 182.4 256 192C256 227.2 227.2 256 192 256C176 256 161.0666666666667 249.6 149.3333333333334 238.9333333333334C147.2 236.8 146.1333333333334 234.6666666666667 146.1333333333334 232.5333333333334C189.8666666666667 227.2 227.2 198.4 244.2666666666667 158.9333333333333z M11.7333333333333 158.9333333333333C29.8666666666667 198.4 66.1333333333333 226.1333333333334 109.8666666666667 232.5333333333334C109.8666666666667 234.6666666666667 108.8 236.8 106.6666666666667 238.9333333333334C94.9333333333333 249.6 80 256 64 256C28.8 256 0 227.2 0 192C0 182.4 2.1333333333333 172.8 6.4 164.2666666666667C7.4666666666667 162.1333333333333 9.6 160 11.7333333333333 158.9333333333333z M231.4666666666667 18.1333333333333L210.1333333333333 39.4666666666667C225.0666666666666 57.6 234.6666666666667 81.0666666666667 234.6666666666667 106.6666666666667C234.6666666666667 165.3333333333333 186.6666666666666 213.3333333333333 128 213.3333333333333S21.3333333333333 165.3333333333334 21.3333333333333 106.6666666666667C21.3333333333333 81.0666666666667 29.8666666666667 57.6 45.8666666666667 39.4666666666667L24.5333333333333 18.1333333333334C20.2666666666667 13.8666666666667 20.2666666666667 7.4666666666667 24.5333333333333 3.2C26.6666666666667 1.0666666666667 28.8 0 32 0S37.3333333333333 1.0666666666667 39.4666666666667 3.2L60.8 24.5333333333333C78.9333333333333 8.5333333333334 102.4 0 128 0C153.6 0 177.0666666666667 8.5333333333333 195.2 24.5333333333333L216.5333333333333 3.2C218.6666666666667 1.0666666666667 221.8666666666667 0 224 0S229.3333333333334 1.0666666666667 231.4666666666667 3.2C235.7333333333334 7.4666666666667 235.7333333333334 13.8666666666667 231.4666666666667 18.1333333333333zM181.3333333333333 96H117.3333333333333V160H138.6666666666667V117.3333333333334H181.3333333333333V96z" />
+ <glyph glyph-name="trophy"
+ unicode="&#xEA58;"
+ horiz-adv-x="256" d=" M213.3333333333333 234.6666666666667V256H42.6666666666667V234.6666666666667H0V170.6666666666667C0 147.1406250666667 19.1354165333333 128 42.6666666666667 128H48.9492192C59.0195317333333 103.2167968 80.4055989333333 84.2721354666667 106.6666666666667 77.4752608V42.6666666666667H96C78.3541664 42.6666666666667 64 28.3125002666667 64 10.6666666666667V0H192V10.6666666666667C192 28.3125002666667 177.6458336 42.6666666666667 160 42.6666666666667H149.3333333333334V77.4752608C175.5944010666667 84.2721354666667 196.9804682666667 103.2167968 207.0507808 128H213.3333333333333C236.8645834666667 128 256 147.1406250666667 256 170.6666666666667V234.6666666666667H213.3333333333333zM42.6666666666667 149.3333333333334C30.9062496 149.3333333333334 21.3333333333333 158.9010421333333 21.3333333333333 170.6666666666667V213.3333333333334H42.6666666666667V160C42.6666666666667 156.380208 42.9680992 152.8359370666667 43.407552 149.3333333333333H42.6666666666667zM234.6666666666667 170.6666666666667C234.6666666666667 158.9010421333333 225.0937504 149.3333333333334 213.3333333333333 149.3333333333334H212.592448C213.0319008 152.8359370666667 213.3333333333333 156.380208 213.3333333333333 160V213.3333333333334H234.6666666666667V170.6666666666667z" />
+ <glyph glyph-name="tv-2"
+ unicode="&#xEA59;"
+ horiz-adv-x="256" d=" M181.3333333333333 32H74.6666666666667C68.7786666666667 32 64 27.2213333333333 64 21.3333333333333S68.7786666666667 10.6666666666667 74.6666666666667 10.6666666666667H181.3333333333333C187.2213333333333 10.6666666666667 192 15.4453333333333 192 21.3333333333333S187.2213333333333 32 181.3333333333333 32z M245.3333333333333 245.3333333333334H10.6666666666667C4.7786666666667 245.3333333333334 0 240.5546666666667 0 234.6666666666667V64C0 58.112 4.7786666666667 53.3333333333333 10.6666666666667 53.3333333333333H245.3333333333333C251.2213333333333 53.3333333333333 256 58.112 256 64V234.6666666666667C256 240.5546666666667 251.2213333333333 245.3333333333334 245.3333333333333 245.3333333333334zM234.6666666666667 74.6666666666667H21.3333333333333V224H234.6666666666667V74.6666666666667z" />
+ <glyph glyph-name="umbrella-13"
+ unicode="&#xEA5A;"
+ horiz-adv-x="256" d=" M245.28 129.056C239.6586666666667 185.7066666666667 194.6773333333333 229.2266666666667 138.6666666666667 234.1653333333334V256H117.3333333333333V234.1653333333334C61.3226666666667 229.2266666666667 16.3413333333333 185.7066666666667 10.72 129.056L9.5573333333333 117.3333333333334H246.4533333333333L245.28 129.056z M192 53.3333333333333C186.112 53.3333333333333 181.3333333333334 48.5546666666667 181.3333333333334 42.6666666666667C181.3333333333334 30.9013333333334 171.7653333333333 21.3333333333333 160 21.3333333333333S138.6666666666667 30.9013333333334 138.6666666666667 42.6666666666667V96H117.3333333333333V42.6666666666667C117.3333333333333 19.136 136.4693333333334 0 160 0S202.6666666666667 19.136 202.6666666666667 42.6666666666667C202.6666666666667 48.5546666666667 197.888 53.3333333333333 192 53.3333333333333z" />
+ <glyph glyph-name="user-run"
+ unicode="&#xEA5B;"
+ horiz-adv-x="256" d=" M170.6666666666667 224C170.6666666666667 206.3268880054146 184.9935546720813 192 202.6666666666667 192C220.3397786612521 192 234.6666666666667 206.3268880054146 234.6666666666667 224C234.6666666666667 241.6731119945854 220.3397786612521 256 202.6666666666667 256C184.9935546720813 256 170.6666666666667 241.6731119945854 170.6666666666667 224z M237.7916672 178.2083328L219.2916672 159.7083328C215.4322912 155.8645834666667 209.3333333333333 155.5364586666667 205.0833333333333 158.9218752L128.2395829333333 220.4010421333334C115.4947914666667 230.6041674666667 97.1770826666667 229.5885418666667 85.6249994666667 218.0416672L67.1249994666667 199.5416672C62.9583328 195.3750005333334 62.9583328 188.6250005333334 67.1249994666667 184.4583338666667S78.0416661333333 180.2916672 82.2083328 184.4583338666667L100.7083328 202.9583338666667C104.5520832 206.8177088 110.6510410666667 207.1406250666667 114.9166656 203.7447925333334L144.0332021333333 180.4498709333333L109.7916661333333 146.2083349333333C102.9843744 139.4010432 99.6249994666666 130.0052096 100.5729162666666 120.4270848S106.6614581333333 102.2968746666667 114.6666666666667 96.9583338666667L147.1666666666667 74.9583338666667L119.5 38.4427093333334C115.9427082666667 33.7447925333334 116.8645834666667 27.0572928 121.5572917333333 23.5000010666667C123.4843754666667 22.0364586666667 125.75 21.3333333333333 127.9895829333334 21.3333333333333C131.2187498666667 21.3333333333333 134.4062496 22.7916672 136.5 25.5572917333333L164 61.8541664C167.7239584 66.510416 169.3333333333334 72.5624992 168.4166666666667 78.4583328C167.5 84.3489578666667 164.1249994666667 89.6249994666667 159.1666666666667 92.9270826666667L126.5 114.7083328C123.8333333333333 116.4895829333334 122.119792 119.3385408 121.8020832 122.5312490666667C121.4895829333334 125.7239573333333 122.6093749333333 128.8541653333333 124.8749994666667 131.1249994666667L160.7923168 167.0423168L191.760416 142.2656245333333C197.640624 137.5572917333333 204.7031242666667 135.2395829333334 211.7447914666667 135.2395829333334C219.9687498666667 135.2395829333334 228.1562496 138.4062496 234.3749994666667 144.6249994666667L252.8749994666667 163.1249994666667C257.0416661333334 167.2916661333333 257.0416661333334 174.0416661333333 252.8749994666667 178.2083328S241.9583338666667 182.3749994666667 237.7916672 178.2083328z M67.1250005333333 103.5416661333333L3.1250005333333 39.5416661333333C-1.0416661333333 35.3749994666667 -1.0416661333333 28.6249994666667 3.1250005333333 24.4583328C5.2083328 22.3749994666667 7.9374997333333 21.3333333333333 10.6666666666667 21.3333333333333S16.1250005333333 22.3749994666667 18.2083328 24.4583338666667L82.2083328 88.4583338666667C86.3749994666667 92.6250005333333 86.3749994666667 99.3750005333333 82.2083328 103.5416672S71.2916672 107.7083328 67.1250005333333 103.5416661333333z" />
+ <glyph glyph-name="vector"
+ unicode="&#xEA5C;"
+ horiz-adv-x="256" d=" M99.68 177.3973333333333C54.5813333333333 164.9493333333334 21.3333333333333 123.6693333333333 21.3333333333333 74.6666666666667H42.6666666666667C42.6666666666667 121.7173333333333 80.9493333333333 160 128 160C115.616 160 105.0026666666667 167.104 99.68 177.3973333333333z M156.32 177.3973333333333C150.9973333333333 167.104 140.384 160 128 160C175.0506666666667 160 213.3333333333333 121.7173333333333 213.3333333333333 74.6666666666667H234.6666666666667C234.6666666666667 123.6693333333333 201.4186666666667 164.9493333333334 156.32 177.3973333333333z M32 181.3333333333334H97.9626666666667C96.768 184.6826666666667 96 188.2346666666667 96 192S96.768 199.3173333333334 97.9626666666667 202.6666666666667H32C26.112 202.6666666666667 21.3333333333333 197.888 21.3333333333333 192S26.112 181.3333333333334 32 181.3333333333334z M224 181.3333333333334C229.888 181.3333333333334 234.6666666666667 186.112 234.6666666666667 192S229.888 202.6666666666667 224 202.6666666666667H158.0373333333333C159.232 199.3173333333334 160 195.7653333333333 160 192S159.232 184.6826666666667 158.0373333333333 181.3333333333333H224z M0 192C0 180.2179253369431 9.5512586702764 170.6666666666667 21.3333333333333 170.6666666666667C33.1154079963903 170.6666666666667 42.6666666666667 180.2179253369431 42.6666666666667 192C42.6666666666667 203.7820746630569 33.1154079963903 213.3333333333334 21.3333333333333 213.3333333333334C9.5512586702764 213.3333333333334 0 203.7820746630569 0 192z M0 213.3333333333334H42.6666666666667V170.6666666666667H0V213.3333333333334z M213.3333333333333 213.3333333333334H256V170.6666666666667H213.3333333333333V213.3333333333334z M128 149.3333333333334C104.4693333333333 149.3333333333334 85.3333333333333 168.4693333333334 85.3333333333333 192S104.4693333333333 234.6666666666667 128 234.6666666666667S170.6666666666667 215.5306666666667 170.6666666666667 192S151.5306666666667 149.3333333333334 128 149.3333333333334zM128 213.3333333333334C116.2346666666667 213.3333333333334 106.6666666666667 203.7653333333333 106.6666666666667 192S116.2346666666667 170.6666666666667 128 170.6666666666667S149.3333333333334 180.2346666666667 149.3333333333334 192S139.7653333333333 213.3333333333334 128 213.3333333333334z M53.3333333333333 21.3333333333333H10.6666666666667C4.7786666666667 21.3333333333333 0 26.112 0 32V74.6666666666667C0 80.5546666666667 4.7786666666667 85.3333333333333 10.6666666666667 85.3333333333333H53.3333333333333C59.2213333333333 85.3333333333333 64 80.5546666666667 64 74.6666666666667V32C64 26.112 59.2213333333333 21.3333333333333 53.3333333333333 21.3333333333333z M245.3333333333333 21.3333333333333H202.6666666666667C196.7786666666667 21.3333333333333 192 26.112 192 32V74.6666666666667C192 80.5546666666667 196.7786666666667 85.3333333333333 202.6666666666667 85.3333333333333H245.3333333333333C251.2213333333333 85.3333333333333 256 80.5546666666667 256 74.6666666666667V32C256 26.112 251.2213333333333 21.3333333333333 245.3333333333333 21.3333333333333z" />
+ <glyph glyph-name="watch-time"
+ unicode="&#xEA5D;"
+ horiz-adv-x="256" d=" M224 192C224 207.6586666666667 212.6826666666667 220.6613333333334 197.8133333333333 223.4133333333333L191.68 247.9253333333334C190.496 252.672 186.2293333333333 256 181.3333333333333 256H74.6666666666667C69.7706666666667 256 65.504 252.672 64.32 247.9253333333334L58.1866666666667 223.4133333333333C43.3173333333333 220.6613333333334 32 207.6586666666667 32 192V64C32 48.3413333333333 43.3173333333333 35.3386666666667 58.1866666666667 32.5866666666667L64.3093333333333 8.0746666666667C65.504 3.328 69.7706666666667 0 74.6666666666667 0H181.3333333333333C186.2293333333333 0 190.496 3.328 191.68 8.0746666666667L197.8026666666667 32.5866666666667C212.6826666666667 35.3386666666667 224 48.3413333333334 224 64V96H245.3333333333334V160H224V192zM202.6666666666667 64C202.6666666666667 58.1226666666667 197.8773333333333 53.3333333333333 192 53.3333333333333H64C58.1226666666667 53.3333333333333 53.3333333333333 58.1226666666667 53.3333333333333 64V192C53.3333333333333 197.8773333333333 58.1226666666667 202.6666666666667 64 202.6666666666667H192C197.8773333333333 202.6666666666667 202.6666666666667 197.8773333333333 202.6666666666667 192V64z M138.6666666666667 181.3333333333334L117.3333333333333 181.3333333333334L117.3333333333333 117.3333333333334L181.3333333333333 117.3333333333334L181.3333333333333 138.6666666666667L138.6666666666667 138.6666666666667z" />
+ <glyph glyph-name="world"
+ unicode="&#xEA5E;"
+ horiz-adv-x="256" d=" M128 256C57.4186666666667 256 0 198.5813333333333 0 128S57.4186666666667 0 128 0S256 57.4186666666667 256 128S198.5813333333333 256 128 256zM128 21.3333333333333C101.3333333333333 21.3333333333333 76.9813333333333 31.2426666666667 58.2613333333333 47.4773333333334C58.3466666666667 47.616 58.464 47.7333333333334 58.5386666666667 47.872C76.16 77.3973333333333 65.0773333333333 95.4346666666667 56.896 103.5626666666667C54.7413333333333 105.7066666666667 52.2773333333333 107.6586666666667 49.7386666666667 109.6213333333333C43.104 114.7733333333334 38.7093333333333 118.176 38.7093333333333 128C38.7093333333333 132.6293333333333 41.2906666666667 134.4426666666667 54.0373333333333 138.7946666666667C62.8053333333333 141.792 72.736 145.184 79.1466666666667 153.472C94.0266666666667 172.7146666666667 77.664 202.3893333333334 74.2293333333333 208.1493333333334C72.4693333333333 211.104 70.56 213.8773333333334 68.576 216.5333333333333C84.608 227.328 103.744 233.7706666666667 124.3093333333333 234.4853333333334C127.6373333333333 228.8426666666667 133.1306666666667 224.0853333333333 138.528 219.4453333333334C143.136 215.4773333333333 150.4533333333333 213.8133333333333 154.2186666666667 209.12C156.3733333333333 206.432 155.328 201.248 155.4026666666667 197.856C155.552 191.1253333333334 159.6266666666666 181.3653333333333 173.3653333333333 181.3653333333333C173.9733333333333 181.3653333333333 174.6026666666666 181.3866666666667 175.2533333333333 181.4293333333333C180.5653333333333 181.8026666666667 197.1413333333333 185.6 213.8026666666666 191.104C226.8586666666667 173.3973333333333 234.6666666666667 151.616 234.6666666666667 128C234.6666666666667 69.184 186.816 21.3333333333333 128 21.3333333333333z M165.4826666666667 161.0346666666667C148.672 161.0346666666667 131.5093333333333 153.0453333333333 122.784 141.1626666666667C116.928 133.184 115.2213333333333 123.9573333333334 117.9733333333333 115.1786666666667C123.4666666666667 97.664 124 87.3386666666667 120.5653333333333 75.7653333333333C117.5146666666667 65.4826666666667 117.216 50.5706666666667 134.6346666666667 43.4666666666667C137.92 42.1226666666667 141.5253333333333 41.44 145.3226666666666 41.44C158.272 41.44 173.6 49.4506666666667 187.392 63.4346666666667C203.968 80.2346666666667 213.7173333333333 100.8213333333333 213.4826666666666 118.528C213.1626666666667 142.3573333333334 192.0746666666667 161.0346666666667 165.4826666666667 161.0346666666667z" />
+ <glyph glyph-name="zoom-split-in"
+ unicode="&#xEA5F;"
+ horiz-adv-x="256" d=" M210.208 60.8746666666667C206.0373333333333 65.0453333333334 199.296 65.0453333333334 195.1253333333334 60.8746666666667S190.9546666666667 49.9626666666667 195.1253333333334 45.792L227.1253333333334 13.792C229.2053333333334 11.712 231.936 10.6666666666667 234.6666666666667 10.6666666666667S240.128 11.712 242.208 13.792C246.3786666666667 17.9626666666667 246.3786666666667 24.704 242.208 28.8746666666667L210.208 60.8746666666667z M106.6666666666667 256C47.8506666666667 256 0 208.1493333333334 0 149.3333333333334S47.8506666666667 42.6666666666667 106.6666666666667 42.6666666666667S213.3333333333333 90.5173333333333 213.3333333333333 149.3333333333334S165.4826666666667 256 106.6666666666667 256zM149.3333333333333 138.6666666666667H117.3333333333333V106.6666666666667H96V138.6666666666667H64V160H96V192H117.3333333333333V160H149.3333333333333V138.6666666666667z" />
+ <glyph glyph-name="collection"
+ unicode="&#xEA60;"
+ horiz-adv-x="256" d=" M22 224L22 192L11 192L0 192L0 181.534L0 171.068L10.75 170.784L21.5 170.5L21.775 154.75L22.051 139L11.025 139L0 139L0 128L0 117L11.025 117L22.051 117L21.775 101.25L21.5 85.5L10.75 85.216L0 84.932L0 74.466L0 64L11 64L22 64L22 32L22 0L139 0L256 0L256 128L256 256L139 256L22 256L22 224M235 127.995L235 20.99L138.75 21.245L42.5 21.5L42.23 42.75L41.96 64L52.98 64L64 64L64 74.466L64 84.932L53.25 85.216L42.5 85.5L42.225 101.25L41.949 117L52.975 117L64 117L64 128L64 139L52.975 139L41.949 139L42.225 154.75L42.5 170.5L53.25 170.784L64 171.068L64 181.534L64 192L53 192L42 192L42 212.833C42 224.292 42.3 233.967 42.667 234.333C43.033 234.7 86.458 235 139.167 235L235 235L235 127.995M96 128L96 85L149 85L202 85L202 128L202 171L149 171L96 171L96 128M182 128L182 107L149.5 107L117 107L117 128L117 149L149.5 149L182 149L182 128" />
+ <glyph glyph-name="image"
+ unicode="&#xEA61;"
+ horiz-adv-x="256" d=" M0 128L0 11L128 11L256 11L256 128L256 245L128 245L0 245L0 128M235 171.441C235 129.656 234.744 119.037 233.75 119.64C232.497 120.401 186.403 158.598 182.333 162.249L180.166 164.193L148.462 127.096C131.024 106.693 116.35 90 115.853 90C115.356 90 103.722 99 90 110C76.278 121 64.575 130 63.994 130C63.412 130 54.063 122.888 43.218 114.196C32.373 105.504 22.938 98.052 22.25 97.637C21.255 97.036 21 109.858 21 160.441L21 224L128 224L235 224L235 171.441M101.217 201.79C94.355 200.773 89.484 198.189 84.334 192.833C78.207 186.461 75.763 181.031 75.244 172.642C74.637 162.822 77.446 155.424 84.435 148.435C91.424 141.446 98.822 138.637 108.642 139.244C132.89 140.743 146.408 167.943 132.981 188.215C126.076 198.64 114.202 203.715 101.217 201.79M114.077 178.077C116.367 175.787 117 174.257 117 171.011C117 165.83 115.745 163.437 112.02 161.51C107.141 158.987 103.227 159.573 99.4 163.4C95.578 167.222 94.987 171.14 97.5 176C99.47 179.809 101.579 180.933 106.827 180.97C110.299 180.994 111.731 180.423 114.077 178.077M209.49 112.147L235 90.794L235 61.397L235 32L128 32L21 32L21.015 50.75L21.03 69.5L42.004 86.25C53.54 95.463 63.449 103 64.025 103C64.601 103 72.818 96.793 82.286 89.208C91.754 81.622 103.827 71.987 109.115 67.796L118.731 60.177L150.428 97.151C167.861 117.487 182.542 133.984 183.053 133.813C183.563 133.641 195.46 123.891 209.49 112.147" />
+ <glyph glyph-name="shop"
+ unicode="&#xEA62;"
+ horiz-adv-x="256" d=" M34.245 209.497C12.648 166.291 11.003 162.622 11.036 157.747C11.133 143.439 18.248 129.336 28.597 122.94L32 120.837L32 60.418L32 0L74.5 0L117 0L117 26.5L117 53L128 53L139 53L139 26.5L139 0L181.5 0L224 0L224 60.418L224 120.837L227.403 122.94C237.752 129.336 244.867 143.439 244.964 157.747C244.997 162.622 243.352 166.291 221.755 209.497L198.51 256L128 256L57.49 256L34.245 209.497M204.907 196.187C223.169 159.623 224.25 157.146 223.564 153.437C222.445 147.398 219.973 142.955 216.58 140.886C212.251 138.246 203.786 138.351 199.337 141.101C195.802 143.286 192 149.431 192 152.96C192 154.881 191.4 155 181.707 155L171.415 155L170.254 150.658C169.472 147.737 167.767 145.119 165.043 142.658C161.37 139.34 160.46 139 155.247 139.004C146.467 139.009 140.689 143.395 139.078 151.275L138.418 154.5L128 154.5L117.582 154.5L116.922 151.275C115.311 143.395 109.533 139.009 100.753 139.004C95.54 139 94.63 139.34 90.957 142.658C88.233 145.119 86.528 147.737 85.746 150.658L84.585 155L74.293 155C64.287 155 64 154.937 63.995 152.75C63.988 149.586 59.934 143.255 56.442 140.953C52.487 138.346 43.642 138.311 39.42 140.886C36.049 142.941 33.186 148.08 32.271 153.716C31.747 156.944 33.75 161.463 51.082 196.165L70.479 235L128 235L185.521 235L204.907 196.187M78.317 125.614C85.924 119.913 92.23 117.851 101.95 117.885C109.8 117.912 115.707 119.827 122.696 124.612L127.893 128.17L132.602 124.93C139.805 119.974 146.284 117.889 154.481 117.889C163.912 117.889 170.158 120.158 180.205 127.232C181.597 128.213 182.332 128.056 184.205 126.378C188 122.98 193.223 120.22 198.25 118.957L203 117.763L203 69.381L203 21L181.5 21L160 21L160 48L160 75L128 75L96 75L96 48L96 21L74.5 21L53 21L53 69.381L53 117.763L57.669 118.938C62.601 120.18 70.011 124.103 72.038 126.545C73.683 128.527 74.614 128.389 78.317 125.614" />
+ <glyph glyph-name="ungroup"
+ unicode="&#xEA63;"
+ horiz-adv-x="256" d=" M11 160L11 75L43 75L75 75L75 43L75 11L160 11L245 11L245 96L245 181L213 181L181 181L181 213L181 245L96 245L11 245L11 160M160 160L160 96L96 96L32 96L32 160L32 224L96 224L160 224L160 160M224 96L224 32L160 32L96 32L96 53.5L96 75L138.5 75L181 75L181 117.5L181 160L202.5 160L224 160L224 96" />
+ <glyph glyph-name="world-2"
+ unicode="&#xEA64;"
+ horiz-adv-x="256" d=" M113.63 255.01C85.844 251.5 59.791 239.266 40.142 220.5C-13.081 169.67 -12.827 85.301 40.7 34.967C58.266 18.449 79.155 7.785 104.5 2.394C115.485 0.058 140.515 0.058 151.5 2.395C178.843 8.21 201.725 20.562 219.599 39.156C261.858 83.115 267.53 148.763 233.496 200C227.079 209.66 209.552 227.243 200.227 233.375C185.482 243.071 168.553 250.085 151.752 253.46C142.18 255.383 122.816 256.17 113.63 255.01M80.346 218.25C66.451 198.907 56.913 172.408 54.43 146.25L53.742 139L37.777 139L21.812 139L22.523 144.25C25.978 169.767 42.212 197.015 63.568 213.139C68.734 217.04 83.793 226 85.182 226C85.584 226 83.408 222.513 80.346 218.25M118 182.5L118 139L96.362 139L74.724 139L75.414 145.75C77.565 166.792 84.971 187.624 96.299 204.5C100.481 210.73 115.161 226 116.968 226C117.662 226 118 211.733 118 182.5M147.869 218.25C160.281 205.924 168.942 191.36 174.777 173C177.748 163.652 181 147.358 181 141.824L181 139L159.5 139L138 139L138 182.5C138 211.733 138.338 226 139.032 226C139.6 226 143.576 222.513 147.869 218.25M179.209 221.634C189.762 215.62 194.242 212.203 203.334 203.231C219.215 187.559 230.64 165.203 233.477 144.25L234.188 139L218.223 139L202.258 139L201.57 146.25C199.087 172.408 189.549 198.907 175.654 218.25C172.592 222.513 170.416 226 170.818 226C171.22 226 174.996 224.035 179.209 221.634M54.43 109.75C56.913 83.592 66.451 57.093 80.346 37.75C83.408 33.488 85.632 30 85.289 30C83.97 30 71.221 37.411 65.5 41.503C57.79 47.018 46.284 58.732 40.553 66.901C31.812 79.361 24.418 97.753 22.523 111.75L21.812 117L37.777 117L53.742 117L54.43 109.75M118 73.5C118 42.032 117.69 30 116.879 30C115.044 30 100.666 45.028 96.309 51.5C90.327 60.386 84.629 72.284 81.223 83C78.252 92.348 75 108.642 75 114.176L75 117L96.5 117L118 117L118 73.5M180.597 110.75C178.324 89.269 170.845 68.073 159.69 51.5C155.335 45.029 140.957 30 139.121 30C138.31 30 138 42.032 138 73.5L138 117L159.629 117L181.258 117L180.597 110.75M233.477 111.75C231.505 97.182 223.389 77.661 214.099 65.139C208.576 57.694 197.706 46.665 191.185 41.891C186.51 38.467 172.006 30 170.818 30C170.416 30 172.481 33.337 175.407 37.415C189.532 57.101 199.078 83.495 201.57 109.75L202.258 117L218.223 117L234.188 117L233.477 111.75" />
+ <glyph glyph-name="ui-04"
+ unicode="&#xEA65;"
+ horiz-adv-x="256" d=" M60.5 255.324C40.632 252.533 21.376 236.603 14.192 217.015C10.95 208.175 10.152 193.2 12.411 183.613C17.247 163.1 34.884 145.303 55.103 140.537C64.339 138.36 190.028 138.299 200.257 140.467C220.62 144.782 238.673 162.757 243.589 183.613C244.773 188.639 245.069 193.202 244.685 200.5C243.863 216.087 239.53 226.326 229.07 237.394C222.26 244.601 215.845 248.832 206 252.614L198.5 255.494L131 255.62C93.875 255.689 62.15 255.556 60.5 255.324M76.535 233.909C84.449 232.446 89.339 229.795 95.474 223.641C104.462 214.625 108.134 203.334 106.022 191.208C104.582 182.935 102.027 177.966 95.862 171.448C76.111 150.564 40.67 160.048 33.024 188.263C29.798 200.164 34.161 215.079 43.432 223.847C49.448 229.537 53.541 231.875 60.5 233.594C66.951 235.188 69.358 235.236 76.535 233.909M202 231.375C214.639 225.298 222.802 213.504 223.774 199.913C224.765 186.064 219.127 174.436 207.594 166.542C198.545 160.348 195.021 159.943 152.724 160.238L115.091 160.5L118.373 165.5C130.863 184.534 130.922 210.024 118.519 228.837C116.583 231.773 115 234.388 115 234.649C115 234.91 133.113 234.983 155.25 234.812L195.5 234.5L202 231.375M59 116.326C52.281 115.159 43.125 111.303 36.415 106.815C15.804 93.029 6.649 68.331 12.978 43.585C15.552 33.522 19.121 27.064 26.5 19.122C33.741 11.328 42.085 5.737 50.928 2.753C57.413 0.564 58.379 0.531 124.094 0.222C198.612 -0.129 199.271 -0.081 213 6.649C221.879 11.001 232.882 21.414 237.83 30.147C244.395 41.735 246.694 59.188 243.463 72.897C239.136 91.251 223.631 107.957 205.072 114.262C198.54 116.481 198.078 116.496 130 116.628C92.325 116.701 60.375 116.565 59 116.326M140.351 94.75C139.929 94.062 138.268 91.547 136.66 89.16C125.199 72.145 125.603 44.679 137.577 26.885C139.46 24.088 141 21.619 141 21.4C141 20.4 66.724 21.08 61.799 22.124C44.292 25.839 32.022 40.828 32.022 58.5C32.022 69.276 35.346 77.251 43.048 84.952C53.609 95.514 55.166 95.802 102.309 95.911C133.117 95.982 140.96 95.742 140.351 94.75M196.546 94.632C205.268 92.31 210.633 88.462 217.182 79.832C224.666 69.97 226.081 55.233 220.669 43.5C209.72 19.763 179.402 13.833 161.11 31.851C154.503 38.358 151.397 44.176 149.855 52.935C148.593 60.098 149.906 68.935 153.187 75.367C155.644 80.183 163.108 88.286 167.704 91.126C175.097 95.695 187.084 97.152 196.546 94.632" />
+ </font>
+</defs>
+</svg>
diff --git a/web/src/assets/vendor/nucleo/fonts/nucleo-icons.ttf b/web/src/assets/vendor/nucleo/fonts/nucleo-icons.ttf
new file mode 100755
index 0000000..1a55985
--- /dev/null
+++ b/web/src/assets/vendor/nucleo/fonts/nucleo-icons.ttf
Binary files differ
diff --git a/web/src/assets/vendor/nucleo/fonts/nucleo-icons.woff b/web/src/assets/vendor/nucleo/fonts/nucleo-icons.woff
new file mode 100755
index 0000000..cb19247
--- /dev/null
+++ b/web/src/assets/vendor/nucleo/fonts/nucleo-icons.woff
Binary files differ
diff --git a/web/src/assets/vendor/nucleo/fonts/nucleo-icons.woff2 b/web/src/assets/vendor/nucleo/fonts/nucleo-icons.woff2
new file mode 100755
index 0000000..e294e08
--- /dev/null
+++ b/web/src/assets/vendor/nucleo/fonts/nucleo-icons.woff2
Binary files differ
diff --git a/web/src/components/Badge.vue b/web/src/components/Badge.vue
new file mode 100644
index 0000000..de754c5
--- /dev/null
+++ b/web/src/components/Badge.vue
@@ -0,0 +1,47 @@
+<template>
+ <component :is="tag"
+ class="badge"
+ :class="
+ [`badge-${type}`,
+ rounded ? `badge-pill` : '',
+ circle && 'badge-circle'
+ ]">
+ <slot>
+ <i v-if="icon" :class="icon"></i>
+ </slot>
+ </component>
+</template>
+<script>
+export default {
+ name: "badge",
+ props: {
+ tag: {
+ type: String,
+ default: "span",
+ description: "Html tag to use for the badge."
+ },
+ rounded: {
+ type: Boolean,
+ default: false,
+ description: "Whether badge is of pill type"
+ },
+ circle: {
+ type: Boolean,
+ default: false,
+ description: "Whether badge is circle"
+ },
+ icon: {
+ type: String,
+ default: "",
+ description: "Icon name. Will be overwritten by slot if slot is used"
+ },
+ type: {
+ type: String,
+ default: "default",
+ description: "Badge type (primary|info|danger|default|warning|success)"
+ }
+ }
+};
+</script>
+<style>
+</style>
diff --git a/web/src/components/BaseAlert.vue b/web/src/components/BaseAlert.vue
new file mode 100644
index 0000000..02dc0be
--- /dev/null
+++ b/web/src/components/BaseAlert.vue
@@ -0,0 +1,66 @@
+<template>
+ <fade-transition>
+ <div class="alert" :class="[`alert-${type}`, {'alert-dismissible': dismissible}]" role="alert" v-if="visible">
+ <slot v-if="!dismissible">
+ <span v-if="icon" class="alert-inner--icon">
+ <i :class="icon"></i>
+ </span>
+ <span v-if="$slots.text" class="alert-inner--text">
+ <slot name="text"></slot>
+ </span>
+ </slot>
+ <template v-else>
+ <slot>
+ <span v-if="icon" class="alert-inner--icon">
+ <i :class="icon"></i>
+ </span>
+ <span v-if="$slots.text" class="alert-inner--text">
+ <slot name="text"></slot>
+ </span>
+ </slot>
+ <slot name="dismiss-icon">
+ <button type="button" data-dismiss="alert" aria-label="Close" class="close" @click="dismissAlert">
+ <span aria-hidden="true">×</span>
+ </button>
+ </slot>
+ </template>
+ </div>
+ </fade-transition>
+</template>
+<script>
+import { FadeTransition } from "vue2-transitions";
+
+export default {
+ name: "base-alert",
+ components: {
+ FadeTransition
+ },
+ props: {
+ type: {
+ type: String,
+ default: "default",
+ description: "Alert type"
+ },
+ icon: {
+ type: String,
+ default: "",
+ description: "Alert icon. Will be overwritten by default slot"
+ },
+ dismissible: {
+ type: Boolean,
+ default: false,
+ description: "Whether alert is closes when clicking"
+ }
+ },
+ data() {
+ return {
+ visible: true
+ };
+ },
+ methods: {
+ dismissAlert() {
+ this.visible = false;
+ }
+ }
+};
+</script>
diff --git a/web/src/components/BaseButton.vue b/web/src/components/BaseButton.vue
new file mode 100644
index 0000000..8e7d8e9
--- /dev/null
+++ b/web/src/components/BaseButton.vue
@@ -0,0 +1,106 @@
+<template>
+ <component :is="tag"
+ :type="tag === 'button' ? nativeType: ''"
+ @click="handleClick"
+ class="btn"
+ :class="classes">
+ <span class="btn-inner--icon" v-if="$slots.icon || icon && $slots.default">
+ <slot name="icon">
+ <i :class="icon"></i>
+ </slot>
+ </span>
+ <i v-if="!$slots.default" :class="icon"></i>
+ <span class="btn-inner--text" v-if="$slots.icon || icon && $slots.default">
+ <slot>
+ {{text}}
+ </slot>
+ </span>
+ <slot v-if="!$slots.icon && !icon"></slot>
+ </component>
+</template>
+<script>
+export default {
+ name: "base-button",
+ props: {
+ tag: {
+ type: String,
+ default: "button",
+ description: "Button tag (default -> button)"
+ },
+ type: {
+ type: String,
+ default: "default",
+ description: "Button type (e,g primary, danger etc)"
+ },
+ size: {
+ type: String,
+ default: "",
+ description: "Button size lg|sm"
+ },
+ textColor: {
+ type: String,
+ default: "",
+ description: "Button text color (e.g primary, danger etc)"
+ },
+ nativeType: {
+ type: String,
+ default: "button",
+ description: "Button native type (e.g submit,button etc)"
+ },
+ icon: {
+ type: String,
+ default: "",
+ description: "Button icon"
+ },
+ text: {
+ type: String,
+ default: "",
+ description: "Button text in case not provided via default slot"
+ },
+ outline: {
+ type: Boolean,
+ default: false,
+ description: "Whether button style is outline"
+ },
+ rounded: {
+ type: Boolean,
+ default: false,
+ description: "Whether button style is rounded"
+ },
+ iconOnly: {
+ type: Boolean,
+ default: false,
+ description: "Whether button contains only an icon"
+ },
+ block: {
+ type: Boolean,
+ default: false,
+ description: "Whether button is of block type"
+ }
+ },
+ computed: {
+ classes() {
+ let btnClasses = [
+ { "btn-block": this.block },
+ { "rounded-circle": this.rounded },
+ { "btn-icon-only": this.iconOnly },
+ { [`text-${this.textColor}`]: this.textColor },
+ { "btn-icon": this.icon || this.$slots.icon },
+ this.type && !this.outline ? `btn-${this.type}` : "",
+ this.outline ? `btn-outline-${this.type}` : ""
+ ];
+ if (this.size) {
+ btnClasses.push(`btn-${this.size}`);
+ }
+ return btnClasses;
+ }
+ },
+ methods: {
+ handleClick(evt) {
+ this.$emit("click", evt);
+ }
+ }
+};
+</script>
+<style>
+</style>
diff --git a/web/src/components/BaseCheckbox.vue b/web/src/components/BaseCheckbox.vue
new file mode 100644
index 0000000..918af77
--- /dev/null
+++ b/web/src/components/BaseCheckbox.vue
@@ -0,0 +1,61 @@
+<template>
+ <div class="custom-control custom-checkbox"
+ :class="{'disabled': disabled, 'form-check-inline': inline}">
+ <input :id="cbId"
+ class="custom-control-input"
+ type="checkbox"
+ :disabled="disabled"
+ v-model="model"/>
+ <label :for="cbId" class="custom-control-label">
+ <slot>
+ <span v-if="inline">&nbsp;</span>
+ </slot>
+ </label>
+ </div>
+</template>
+<script>
+import { randomString } from "./stringUtils";
+
+export default {
+ name: "base-checkbox",
+ model: {
+ prop: "checked"
+ },
+ props: {
+ checked: {
+ type: [Array, Boolean],
+ description: "Whether checkbox is checked"
+ },
+ disabled: {
+ type: Boolean,
+ description: "Whether checkbox is disabled"
+ },
+ inline: {
+ type: Boolean,
+ description: "Whether checkbox is inline"
+ }
+ },
+ data() {
+ return {
+ cbId: "",
+ touched: false
+ };
+ },
+ computed: {
+ model: {
+ get() {
+ return this.checked;
+ },
+ set(check) {
+ if (!this.touched) {
+ this.touched = true;
+ }
+ this.$emit("input", check);
+ }
+ }
+ },
+ mounted() {
+ this.cbId = randomString()
+ }
+};
+</script>
diff --git a/web/src/components/BaseDropdown.vue b/web/src/components/BaseDropdown.vue
new file mode 100644
index 0000000..567aa47
--- /dev/null
+++ b/web/src/components/BaseDropdown.vue
@@ -0,0 +1,89 @@
+<template>
+ <component class="dropdown"
+ :is="tag"
+ :class="[{show: isOpen}, {'dropdown': direction === 'down'}, {'dropup': direction ==='up'}]"
+ aria-haspopup="true"
+ :aria-expanded="isOpen"
+ @click="toggleDropDown"
+ v-click-outside="closeDropDown">
+
+ <slot name="title">
+ <a class="dropdown-toggle nav-link"
+ :class="{'no-caret': hideArrow}"
+ data-toggle="dropdown">
+ <i :class="icon"></i>
+ <span class="no-icon">{{title}}</span>
+ </a>
+ </slot>
+ <ul class="dropdown-menu"
+ ref="menu"
+ :class="[{'dropdown-menu-right': position === 'right'}, {show: isOpen}, menuClasses]">
+ <slot></slot>
+ </ul>
+ </component>
+</template>
+<script>
+export default {
+ name: "base-dropdown",
+ props: {
+ direction: {
+ type: String,
+ default: "down"
+ },
+ title: {
+ type: String,
+ description: "Dropdown title"
+ },
+ icon: {
+ type: String,
+ description: "Icon for dropdown title"
+ },
+ position: {
+ type: String,
+ description: "Position of dropdown menu (e.g right|left)"
+ },
+ menuClasses: {
+ type: [String, Object],
+ description: "Dropdown menu classes"
+ },
+ hideArrow: {
+ type: Boolean,
+ description: "Whether dropdown arrow should be hidden"
+ },
+ appendToBody: {
+ type: Boolean,
+ default: true,
+ description: "Whether dropdown should be appended to document body"
+ },
+ tag: {
+ type: String,
+ default: "li",
+ description: "Dropdown html tag (e.g div, li etc)"
+ }
+ },
+ data() {
+ return {
+ isOpen: false
+ };
+ },
+ methods: {
+ toggleDropDown() {
+ this.isOpen = !this.isOpen;
+ this.$emit("change", this.isOpen);
+ },
+ closeDropDown() {
+ this.isOpen = false;
+ this.$emit("change", this.isOpen);
+ }
+ }
+};
+</script>
+<style>
+.dropdown {
+ list-style-type: none;
+}
+
+.dropdown .dropdown-toggle {
+ cursor: pointer;
+}
+</style>
diff --git a/web/src/components/BaseHeader.vue b/web/src/components/BaseHeader.vue
new file mode 100644
index 0000000..7eff333
--- /dev/null
+++ b/web/src/components/BaseHeader.vue
@@ -0,0 +1,23 @@
+<template>
+ <div class="header" :class="{[`bg-${type}`]: type}">
+ <div class="container-fluid">
+ <div class="header-body">
+ <slot></slot>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+ export default {
+ name: 'base-header',
+ props: {
+ type: {
+ type: String,
+ default: 'primary',
+ description: 'Header background type'
+ }
+ }
+ }
+</script>
+<style>
+</style>
diff --git a/web/src/components/BaseInput.vue b/web/src/components/BaseInput.vue
new file mode 100644
index 0000000..2d056d8
--- /dev/null
+++ b/web/src/components/BaseInput.vue
@@ -0,0 +1,142 @@
+<template>
+ <div class="form-group"
+ :class="[
+ {'input-group': hasIcon},
+ {'has-danger': error},
+ {'focused': focused},
+ {'has-label': label || $slots.label},
+ {'has-success': valid === true},
+ {'has-danger': valid === false}
+ ]">
+ <slot name="label">
+ <label v-if="label" class="form-control-label" :class="labelClasses">
+ {{label}}
+ <span v-if="required">*</span>
+ </label>
+ </slot>
+
+
+ <div v-if="addonLeftIcon || $slots.addonLeft" class="input-group-prepend">
+ <span class="input-group-text">
+ <slot name="addonLeft">
+ <i :class="addonLeftIcon"></i>
+ </slot>
+ </span>
+ </div>
+ <slot v-bind="slotData">
+ <input
+ :value="value"
+ v-on="listeners"
+ v-bind="$attrs"
+ class="form-control"
+ :class="[
+ {'is-valid': valid === true},
+ {'is-invalid': valid === false}, inputClasses]"
+ aria-describedby="addon-right addon-left">
+ </slot>
+ <div v-if="addonRightIcon || $slots.addonRight" class="input-group-append">
+ <span class="input-group-text">
+ <slot name="addonRight">
+ <i :class="addonRightIcon"></i>
+ </slot>
+ </span>
+ </div>
+ <slot name="infoBlock"></slot>
+ <slot name="helpBlock">
+ <div class="text-danger invalid-feedback" style="display: block;" :class="{'mt-2': hasIcon}" v-if="error">
+ {{ error }}
+ </div>
+ </slot>
+ </div>
+</template>
+<script>
+export default {
+ inheritAttrs: false,
+ name: "base-input",
+ props: {
+ required: {
+ type: Boolean,
+ description: "Whether input is required (adds an asterix *)"
+ },
+ valid: {
+ type: Boolean,
+ description: "Whether is valid",
+ default: undefined
+ },
+ label: {
+ type: String,
+ description: "Input label (text before input)"
+ },
+ error: {
+ type: String,
+ description: "Input error (below input)"
+ },
+ labelClasses: {
+ type: String,
+ description: "Input label css classes"
+ },
+ inputClasses: {
+ type: String,
+ description: "Input css classes"
+ },
+ value: {
+ type: [String, Number],
+ description: "Input value"
+ },
+ addonRightIcon: {
+ type: String,
+ description: "Addon right icon"
+ },
+ addonLeftIcon: {
+ type: String,
+ description: "Addont left icon"
+ }
+ },
+ data() {
+ return {
+ focused: false
+ };
+ },
+ computed: {
+ listeners() {
+ return {
+ ...this.$listeners,
+ input: this.updateValue,
+ focus: this.onFocus,
+ blur: this.onBlur
+ };
+ },
+ slotData() {
+ return {
+ focused: this.focused,
+ ...this.listeners
+ };
+ },
+ hasIcon() {
+ const { addonRight, addonLeft } = this.$slots;
+ return (
+ addonRight !== undefined ||
+ addonLeft !== undefined ||
+ this.addonRightIcon !== undefined ||
+ this.addonLeftIcon !== undefined
+ );
+ }
+ },
+ methods: {
+ updateValue(evt) {
+ let value = evt.target.value;
+ this.$emit("input", value);
+ },
+ onFocus(value) {
+ this.focused = true;
+ this.$emit("focus", value);
+ },
+ onBlur(value) {
+ this.focused = false;
+ this.$emit("blur", value);
+ }
+ }
+};
+</script>
+<style>
+</style>
diff --git a/web/src/components/BaseNav.vue b/web/src/components/BaseNav.vue
new file mode 100644
index 0000000..9abd1c8
--- /dev/null
+++ b/web/src/components/BaseNav.vue
@@ -0,0 +1,89 @@
+<template>
+ <nav class="navbar"
+ :class="[
+ {'navbar-expand-md': expand},
+ {'navbar-transparent': transparent},
+ {[`bg-${type}`]: type}
+ ]">
+ <div :class="containerClasses">
+ <slot name="brand">
+ <router-link :to="$route.path"
+ class="h4 mb-0 text-white text-uppercase d-none d-lg-inline-block">
+ {{$route.name}}
+ </router-link>
+ </slot>
+ <navbar-toggle-button v-if="showToggleButton"
+ :toggled="toggled"
+ :target="contentId"
+ @click.native.stop="toggled = !toggled">
+ <span class="navbar-toggler-icon"></span>
+ </navbar-toggle-button>
+
+ <div class="collapse navbar-collapse"
+ :class="{show: toggled}"
+ :id="contentId"
+ v-click-outside="closeMenu">
+
+ <slot :close-menu="closeMenu"></slot>
+ </div>
+ </div>
+ </nav>
+</template>
+<script>
+ import NavbarToggleButton from "./NavbarToggleButton";
+
+ export default {
+ name: "base-nav",
+ components: {
+ NavbarToggleButton
+ },
+ props: {
+ type: {
+ type: String,
+ default: "",
+ description: "Navbar type (e.g default, primary etc)"
+ },
+ title: {
+ type: String,
+ default: "",
+ description: "Title of navbar"
+ },
+ contentId: {
+ type: [String, Number],
+ default: Math.random().toString(),
+ description:
+ "Explicit id for the menu. By default it's a generated random number"
+ },
+ containerClasses: {
+ type: [String, Object, Array],
+ default: 'container-fluid'
+ },
+ transparent: {
+ type: Boolean,
+ default: false,
+ description: "Whether navbar is transparent"
+ },
+ expand: {
+ type: Boolean,
+ default: false,
+ description: "Whether navbar should contain `navbar-expand-lg` class"
+ },
+ showToggleButton: {
+ type: Boolean,
+ default: true
+ }
+ },
+ data() {
+ return {
+ toggled: false
+ };
+ },
+ methods: {
+ closeMenu() {
+ this.toggled = false;
+ }
+ }
+ };
+</script>
+<style>
+</style>
diff --git a/web/src/components/BasePagination.vue b/web/src/components/BasePagination.vue
new file mode 100644
index 0000000..698e415
--- /dev/null
+++ b/web/src/components/BasePagination.vue
@@ -0,0 +1,134 @@
+<template>
+ <ul class="pagination" :class="[size && `pagination-${size}`, align && `justify-content-${align}`]">
+ <li class="page-item prev-page" :class="{disabled: value === 1}">
+ <a class="page-link" aria-label="Previous" @click="prevPage">
+ <span aria-hidden="true"><i class="fa fa-angle-left" aria-hidden="true"></i></span>
+ </a>
+ </li>
+ <li class="page-item" :class="{active: value === item}"
+ :key="item"
+ v-for="item in range(minPage, maxPage)">
+ <a class="page-link" @click="changePage(item)">{{item}}</a>
+ </li>
+ <li class="page-item next-page" :class="{disabled: value === totalPages}">
+ <a class="page-link" aria-label="Next" @click="nextPage">
+ <span aria-hidden="true"><i class="fa fa-angle-right" aria-hidden="true"></i></span>
+ </a>
+ </li>
+ </ul>
+</template>
+<script>
+export default {
+ name: "base-pagination",
+ props: {
+ pageCount: {
+ type: Number,
+ default: 0,
+ description:
+ "Pagination page count. This should be specified in combination with perPage"
+ },
+ perPage: {
+ type: Number,
+ default: 10,
+ description:
+ "Pagination per page. Should be specified with total or pageCount"
+ },
+ total: {
+ type: Number,
+ default: 0,
+ description:
+ "Can be specified instead of pageCount. The page count in this case will be total/perPage"
+ },
+ value: {
+ type: Number,
+ default: 1,
+ description: "Pagination value"
+ },
+ size: {
+ type: String,
+ default: "",
+ description: "Pagination size"
+ },
+ align: {
+ type: String,
+ default: "",
+ description: "Pagination alignment (e.g center|start|end)"
+ }
+ },
+ computed: {
+ totalPages() {
+ if (this.pageCount > 0) return this.pageCount;
+ if (this.total > 0) {
+ return Math.ceil(this.total / this.perPage);
+ }
+ return 1;
+ },
+ pagesToDisplay() {
+ if (this.totalPages > 0 && this.totalPages < this.defaultPagesToDisplay) {
+ return this.totalPages;
+ }
+ return this.defaultPagesToDisplay;
+ },
+ minPage() {
+ if (this.value >= this.pagesToDisplay) {
+ const pagesToAdd = Math.floor(this.pagesToDisplay / 2);
+ const newMaxPage = pagesToAdd + this.value;
+ if (newMaxPage > this.totalPages) {
+ return this.totalPages - this.pagesToDisplay + 1;
+ }
+ return this.value - pagesToAdd;
+ } else {
+ return 1;
+ }
+ },
+ maxPage() {
+ if (this.value >= this.pagesToDisplay) {
+ const pagesToAdd = Math.floor(this.pagesToDisplay / 2);
+ const newMaxPage = pagesToAdd + this.value;
+ if (newMaxPage < this.totalPages) {
+ return newMaxPage;
+ } else {
+ return this.totalPages;
+ }
+ } else {
+ return this.pagesToDisplay;
+ }
+ }
+ },
+ data() {
+ return {
+ defaultPagesToDisplay: 5
+ };
+ },
+ methods: {
+ range(min, max) {
+ let arr = [];
+ for (let i = min; i <= max; i++) {
+ arr.push(i);
+ }
+ return arr;
+ },
+ changePage(item) {
+ this.$emit("input", item);
+ },
+ nextPage() {
+ if (this.value < this.totalPages) {
+ this.$emit("input", this.value + 1);
+ }
+ },
+ prevPage() {
+ if (this.value > 1) {
+ this.$emit("input", this.value - 1);
+ }
+ }
+ },
+ watch: {
+ perPage() {
+ this.$emit("input", 1);
+ },
+ total() {
+ this.$emit("input", 1);
+ }
+ }
+};
+</script>
diff --git a/web/src/components/BaseProgress.vue b/web/src/components/BaseProgress.vue
new file mode 100755
index 0000000..6aeba6e
--- /dev/null
+++ b/web/src/components/BaseProgress.vue
@@ -0,0 +1,83 @@
+<template>
+ <div class="progress-wrapper">
+ <div class="progress-info" v-if="$slots.label || label || $slots.percentage || showPercentage">
+ <div class="progress-label" v-if="$slots.label || label">
+ <span>
+ <slot name="label">
+ {{label}}
+ </slot>
+ </span>
+ </div>
+ <div class="progress-percentage" v-if="$slots.percentage || showPercentage">
+ <slot name="percentage">
+ {{value}} %
+ </slot>
+ </div>
+ </div>
+ <div class="progress" :style="`height: ${height}px`">
+ <div class="progress-bar"
+ :class="computedClasses"
+ role="progressbar"
+ :aria-valuenow="value"
+ aria-valuemin="0"
+ aria-valuemax="100"
+ :style="`width: ${value}%;`">
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+ export default {
+ name: "base-progress",
+ props: {
+ striped: {
+ type: Boolean,
+ description: "Whether progress is striped"
+ },
+ animated: {
+ type: Boolean,
+ description:
+ "Whether progress is animated (works only with `striped` prop together)"
+ },
+ showPercentage: {
+ type: Boolean,
+ default: true,
+ description: "Whether progress bar should show percentage value"
+ },
+ height: {
+ type: Number,
+ default: 3,
+ description: "Progress line height"
+ },
+ label: {
+ type: String,
+ default: "",
+ description: "Progress label"
+ },
+ type: {
+ type: String,
+ default: "default",
+ description: "Progress type (e.g danger, primary etc)"
+ },
+ value: {
+ type: Number,
+ default: 0,
+ validator: value => {
+ return value >= 0 && value <= 100;
+ },
+ description: "Progress value"
+ }
+ },
+ computed: {
+ computedClasses() {
+ return [
+ { "progress-bar-striped": this.striped },
+ { "progress-bar-animated": this.animated },
+ { [`bg-${this.type}`]: this.type }
+ ];
+ }
+ }
+ };
+</script>
+<style>
+</style>
diff --git a/web/src/components/BaseRadio.vue b/web/src/components/BaseRadio.vue
new file mode 100644
index 0000000..31045c8
--- /dev/null
+++ b/web/src/components/BaseRadio.vue
@@ -0,0 +1,61 @@
+<template>
+ <div class="custom-control custom-radio" :class="[inlineClass, {disabled: disabled}]">
+ <input :id="cbId"
+ class="custom-control-input"
+ type="radio"
+ :disabled="disabled"
+ :value="name"
+ v-model="model" />
+ <label :for="cbId" class="custom-control-label">
+ <slot></slot>
+ </label>
+ </div>
+</template>
+<script>
+import { randomString } from "./stringUtils";
+export default {
+ name: "base-radio",
+ props: {
+ name: {
+ type: [String, Number],
+ description: "Radio label"
+ },
+ disabled: {
+ type: Boolean,
+ description: "Whether radio is disabled"
+ },
+ value: {
+ type: [String, Boolean],
+ description: "Radio value"
+ },
+ inline: {
+ type: Boolean,
+ description: "Whether radio is inline"
+ }
+ },
+ data() {
+ return {
+ cbId: ""
+ };
+ },
+ computed: {
+ model: {
+ get() {
+ return this.value;
+ },
+ set(value) {
+ this.$emit("input", value);
+ }
+ },
+ inlineClass() {
+ if (this.inline) {
+ return `form-check-inline`;
+ }
+ return "";
+ }
+ },
+ mounted() {
+ this.cbId = randomString()
+ }
+};
+</script>
diff --git a/web/src/components/BaseSlider.vue b/web/src/components/BaseSlider.vue
new file mode 100644
index 0000000..bfe8c7c
--- /dev/null
+++ b/web/src/components/BaseSlider.vue
@@ -0,0 +1,96 @@
+<template>
+ <div class="input-slider-container">
+ <div class="input-slider"
+ ref="slider"
+ :class="[`slider-${type}`]"
+ :disabled="disabled">
+ </div>
+ </div>
+</template>
+<script>
+import noUiSlider from "nouislider";
+
+export default {
+ name: "base-slider",
+ props: {
+ value: {
+ type: [String, Array, Number],
+ description: "Slider value"
+ },
+ disabled: {
+ type: Boolean,
+ description: "Whether slider is disabled"
+ },
+ range: {
+ type: Object,
+ default: () => {
+ return {
+ min: 0,
+ max: 100
+ };
+ },
+ description: "Slider range (defaults to 0-100)"
+ },
+ type: {
+ type: String,
+ default: "",
+ description: "Slider type (e.g primary, danger etc)"
+ },
+ options: {
+ type: Object,
+ default: () => {
+ return {};
+ },
+ description: "noUiSlider options"
+ }
+ },
+ computed: {
+ connect() {
+ return Array.isArray(this.value) || [true, false];
+ }
+ },
+ data() {
+ return {
+ slider: null
+ };
+ },
+ methods: {
+ createSlider() {
+ noUiSlider.create(this.$refs.slider, {
+ start: this.value,
+ connect: this.connect,
+ range: this.range,
+ ...this.options
+ });
+ const slider = this.$refs.slider.noUiSlider;
+ slider.on("slide", () => {
+ let value = slider.get();
+ if (value !== this.value) {
+ this.$emit("input", value);
+ }
+ });
+ }
+ },
+ mounted() {
+ this.createSlider();
+ },
+ watch: {
+ value(newValue, oldValue) {
+ const slider = this.$refs.slider.noUiSlider;
+ const sliderValue = slider.get();
+ if (newValue !== oldValue && sliderValue !== newValue) {
+ if (Array.isArray(sliderValue) && Array.isArray(newValue)) {
+ if (
+ oldValue.length === newValue.length &&
+ oldValue.every((v, i) => v === newValue[i])
+ ) {
+ slider.set(newValue);
+ }
+ } else {
+ slider.set(newValue);
+ }
+ }
+ }
+ }
+};
+</script>
diff --git a/web/src/components/BaseSwitch.vue b/web/src/components/BaseSwitch.vue
new file mode 100644
index 0000000..6299fa8
--- /dev/null
+++ b/web/src/components/BaseSwitch.vue
@@ -0,0 +1,34 @@
+<template>
+ <label class="custom-toggle">
+ <input type="checkbox"
+ v-model="model"
+ v-bind="$attrs"
+ v-on="$listeners">
+ <span class="custom-toggle-slider rounded-circle"></span>
+ </label>
+</template>
+<script>
+export default {
+ name: "base-switch",
+ inheritAttrs: false,
+ props: {
+ value: {
+ type: Boolean,
+ default: false,
+ description: "Switch value"
+ }
+ },
+ computed: {
+ model: {
+ get() {
+ return this.value;
+ },
+ set(value) {
+ this.$emit("input", value);
+ }
+ }
+ }
+};
+</script>
+<style>
+</style>
diff --git a/web/src/components/BaseTable.vue b/web/src/components/BaseTable.vue
new file mode 100644
index 0000000..0c7f710
--- /dev/null
+++ b/web/src/components/BaseTable.vue
@@ -0,0 +1,73 @@
+<template>
+ <table class="table tablesorter" :class="tableClass">
+ <thead :class="theadClasses">
+ <tr>
+ <slot name="columns" :columns="columns">
+ <th v-for="column in columns" :key="column">{{ column }}</th>
+ </slot>
+ </tr>
+ </thead>
+ <tbody :class="tbodyClasses">
+ <tr v-for="(item, index) in data" :key="index">
+ <slot :row="item" :index="index">
+ <td
+ v-for="(column, index) in colsWithValue(item)"
+ :key="index">
+ {{ itemValue(item, column) }}
+ </td>
+ </slot>
+ </tr>
+ </tbody>
+ </table>
+</template>
+<script>
+export default {
+ name: 'base-table',
+ props: {
+ columns: {
+ type: Array,
+ default: () => [],
+ description: 'Table columns'
+ },
+ data: {
+ type: Array,
+ default: () => [],
+ description: 'Table data'
+ },
+ type: {
+ type: String, // striped | hover
+ default: '',
+ description: 'Whether table is striped or hover type'
+ },
+ theadClasses: {
+ type: String,
+ default: '',
+ description: '<thead> css classes'
+ },
+ tbodyClasses: {
+ type: String,
+ default: '',
+ description: '<tbody> css classes'
+ }
+ },
+ computed: {
+ tableClass() {
+ return this.type && `table-${this.type}`;
+ },
+ colsWithValue() {
+ return (row) => {
+ return this.columns.filter(column => this.hasValue(row, column))
+ }
+ }
+ },
+ methods: {
+ hasValue(item, column) {
+ return item[column.toLowerCase()] !== 'undefined';
+ },
+ itemValue(item, column) {
+ return item[column.toLowerCase()];
+ }
+ }
+};
+</script>
+<style></style>
diff --git a/web/src/components/Card.vue b/web/src/components/Card.vue
new file mode 100755
index 0000000..c8f4b20
--- /dev/null
+++ b/web/src/components/Card.vue
@@ -0,0 +1,70 @@
+<template>
+ <div class="card"
+ :class="[
+ {'card-lift--hover': hover},
+ {'shadow': shadow},
+ {[`shadow-${shadowSize}`]: shadowSize},
+ {[`bg-gradient-${gradient}`]: gradient},
+ {[`bg-${type}`]: type}
+ ]">
+ <div class="card-header" :class="headerClasses" v-if="$slots.header">
+ <slot name="header">
+ </slot>
+ </div>
+ <div class="card-body" :class="bodyClasses" v-if="!noBody">
+ <slot></slot>
+ </div>
+
+ <slot v-if="noBody"></slot>
+
+ <div class="card-footer" :class="footerClasses" v-if="$slots.footer">
+ <slot name="footer"></slot>
+ </div>
+ </div>
+</template>
+<script>
+export default {
+ name: "card",
+ props: {
+ type: {
+ type: String,
+ description: "Card type"
+ },
+ gradient: {
+ type: String,
+ description: "Card background gradient type (warning,danger etc)"
+ },
+ hover: {
+ type: Boolean,
+ description: "Whether card should move on hover"
+ },
+ shadow: {
+ type: Boolean,
+ description: "Whether card has shadow"
+ },
+ shadowSize: {
+ type: String,
+ description: "Card shadow size"
+ },
+ noBody: {
+ type: Boolean,
+ default: false,
+ description: "Whether card should have wrapper body class"
+ },
+ bodyClasses: {
+ type: [String, Object, Array],
+ description: "Card body css classes"
+ },
+ headerClasses: {
+ type: [String, Object, Array],
+ description: "Card header css classes"
+ },
+ footerClasses: {
+ type: [String, Object, Array],
+ description: "Card footer css classes"
+ }
+ }
+};
+</script>
+<style>
+</style>
diff --git a/web/src/components/Charts/BarChart.js b/web/src/components/Charts/BarChart.js
new file mode 100644
index 0000000..c45092c
--- /dev/null
+++ b/web/src/components/Charts/BarChart.js
@@ -0,0 +1,30 @@
+import { Bar, mixins } from 'vue-chartjs';
+import globalOptionsMixin from "@/components/Charts/globalOptionsMixin";
+
+export default {
+ name: 'bar-chart',
+ extends: Bar,
+ mixins: [mixins.reactiveProp, globalOptionsMixin],
+ props: {
+ extraOptions: {
+ type: Object,
+ default: () => ({})
+ }
+ },
+ data() {
+ return {
+ ctx: null
+ };
+ },
+ mounted() {
+ this.$watch(
+ 'chartData',
+ (newVal, oldVal) => {
+ if (!oldVal) {
+ this.renderChart(this.chartData, this.extraOptions);
+ }
+ },
+ { immediate: true }
+ );
+ }
+};
diff --git a/web/src/components/Charts/DoughnutChart.js b/web/src/components/Charts/DoughnutChart.js
new file mode 100644
index 0000000..796a198
--- /dev/null
+++ b/web/src/components/Charts/DoughnutChart.js
@@ -0,0 +1,30 @@
+import { Doughnut, mixins } from 'vue-chartjs';
+import globalOptionsMixin from "@/components/Charts/globalOptionsMixin";
+
+export default {
+ name: 'doughnut-chart',
+ extends: Doughnut,
+ mixins: [mixins.reactiveProp, globalOptionsMixin],
+ props: {
+ extraOptions: {
+ type: Object,
+ default: () => ({})
+ }
+ },
+ data() {
+ return {
+ ctx: null
+ };
+ },
+ mounted() {
+ this.$watch(
+ 'chartData',
+ (newVal, oldVal) => {
+ if (!oldVal) {
+ this.renderChart(this.chartData, this.extraOptions);
+ }
+ },
+ { immediate: true }
+ );
+ }
+};
diff --git a/web/src/components/Charts/LineChart.js b/web/src/components/Charts/LineChart.js
new file mode 100644
index 0000000..50a3149
--- /dev/null
+++ b/web/src/components/Charts/LineChart.js
@@ -0,0 +1,30 @@
+import { Line, mixins } from 'vue-chartjs';
+import globalOptionsMixin from "@/components/Charts/globalOptionsMixin";
+
+export default {
+ name: 'line-chart',
+ extends: Line,
+ mixins: [mixins.reactiveProp, globalOptionsMixin],
+ props: {
+ extraOptions: {
+ type: Object,
+ default: () => ({})
+ }
+ },
+ data() {
+ return {
+ ctx: null
+ };
+ },
+ mounted() {
+ this.$watch(
+ 'chartData',
+ (newVal, oldVal) => {
+ if (!oldVal) {
+ this.renderChart(this.chartData, this.extraOptions);
+ }
+ },
+ { immediate: true }
+ );
+ }
+};
diff --git a/web/src/components/Charts/PieChart.js b/web/src/components/Charts/PieChart.js
new file mode 100644
index 0000000..73f8363
--- /dev/null
+++ b/web/src/components/Charts/PieChart.js
@@ -0,0 +1,30 @@
+import { Pie, mixins } from 'vue-chartjs';
+import globalOptionsMixin from "@/components/Charts/globalOptionsMixin";
+
+export default {
+ name: 'pie-chart',
+ extends: Pie,
+ mixins: [mixins.reactiveProp, globalOptionsMixin],
+ props: {
+ extraOptions: {
+ type: Object,
+ default: () => ({})
+ }
+ },
+ data() {
+ return {
+ ctx: null
+ };
+ },
+ mounted() {
+ this.$watch(
+ 'chartData',
+ (newVal, oldVal) => {
+ if (!oldVal) {
+ this.renderChart(this.chartData, this.extraOptions);
+ }
+ },
+ { immediate: true }
+ );
+ }
+};
diff --git a/web/src/components/Charts/config.js b/web/src/components/Charts/config.js
new file mode 100644
index 0000000..55df725
--- /dev/null
+++ b/web/src/components/Charts/config.js
@@ -0,0 +1,498 @@
+import { parseOptions } from "@/components/Charts/optionHelpers";
+
+export const Charts = {
+ mode: 'light',//(themeMode) ? themeMode : 'light';
+ fonts: {
+ base: 'Open Sans'
+ },
+ colors: {
+ gray: {
+ 100: '#f6f9fc',
+ 200: '#e9ecef',
+ 300: '#dee2e6',
+ 400: '#ced4da',
+ 500: '#adb5bd',
+ 600: '#8898aa',
+ 700: '#525f7f',
+ 800: '#32325d',
+ 900: '#212529'
+ },
+ theme: {
+ 'default': '#172b4d',
+ 'primary': '#5e72e4',
+ 'secondary': '#f4f5f7',
+ 'info': '#11cdef',
+ 'success': '#2dce89',
+ 'danger': '#f5365c',
+ 'warning': '#fb6340'
+ },
+ black: '#12263F',
+ white: '#FFFFFF',
+ transparent: 'transparent',
+ }
+};
+
+function chartOptions(Chart) {
+ let { colors, mode, fonts } = Charts;
+ // Options
+ let options = {
+ defaults: {
+ global: {
+ responsive: true,
+ maintainAspectRatio: false,
+ defaultColor: (mode == 'dark') ? colors.gray[700] : colors.gray[600],
+ defaultFontColor: (mode == 'dark') ? colors.gray[700] : colors.gray[600],
+ defaultFontFamily: fonts.base,
+ defaultFontSize: 13,
+ layout: {
+ padding: 0
+ },
+ legend: {
+ display: false,
+ position: 'bottom',
+ labels: {
+ usePointStyle: true,
+ padding: 16
+ }
+ },
+ elements: {
+ point: {
+ radius: 0,
+ backgroundColor: colors.theme['primary']
+ },
+ line: {
+ tension: .4,
+ borderWidth: 4,
+ borderColor: colors.theme['primary'],
+ backgroundColor: colors.transparent,
+ borderCapStyle: 'rounded'
+ },
+ rectangle: {
+ backgroundColor: colors.theme['warning']
+ },
+ arc: {
+ backgroundColor: colors.theme['primary'],
+ borderColor: (mode == 'dark') ? colors.gray[800] : colors.white,
+ borderWidth: 4
+ }
+ },
+ tooltips: {
+ enabled: true,
+ mode: 'index',
+ intersect: false,
+ }
+ },
+ doughnut: {
+ cutoutPercentage: 83,
+ legendCallback: function (chart) {
+ let data = chart.data;
+ let content = '';
+
+ data.labels.forEach(function (label, index) {
+ let bgColor = data.datasets[0].backgroundColor[index];
+
+ content += '<span class="chart-legend-item">';
+ content += '<i class="chart-legend-indicator" style="background-color: ' + bgColor + '"></i>';
+ content += label;
+ content += '</span>';
+ });
+
+ return content;
+ }
+ }
+ }
+ };
+
+ // yAxes
+ Chart.scaleService.updateScaleDefaults('linear', {
+ gridLines: {
+ borderDash: [2],
+ borderDashOffset: [2],
+ color: (mode == 'dark') ? colors.gray[900] : colors.gray[300],
+ drawBorder: false,
+ drawTicks: false,
+ lineWidth: 0,
+ zeroLineWidth: 0,
+ zeroLineColor: (mode == 'dark') ? colors.gray[900] : colors.gray[300],
+ zeroLineBorderDash: [2],
+ zeroLineBorderDashOffset: [2]
+ },
+ ticks: {
+ beginAtZero: true,
+ padding: 10,
+ callback: function (value) {
+ if (!(value % 10)) {
+ return value
+ }
+ }
+ }
+ });
+
+ // xAxes
+ Chart.scaleService.updateScaleDefaults('category', {
+ gridLines: {
+ drawBorder: false,
+ drawOnChartArea: false,
+ drawTicks: false
+ },
+ ticks: {
+ padding: 20
+ },
+ maxBarThickness: 10
+ });
+
+ return options;
+}
+
+export function initGlobalOptions(Chart) {
+ parseOptions(Chart, chartOptions(Chart));
+}
+
+export const basicOptions = {
+ maintainAspectRatio: false,
+ legend: {
+ display: false
+ },
+ responsive: true
+};
+export let blueChartOptions = {
+ scales: {
+ yAxes: [{
+ gridLines: {
+ color: Charts.colors.gray[700],
+ zeroLineColor: Charts.colors.gray[700]
+ },
+ ticks: {
+ callback: function(value) {
+ if (!(value % 10)) {
+ return '$' + value + 'k';
+ }
+ }
+ }
+ }]
+ }
+};
+
+export let lineChartOptionsBlue = {
+ ...basicOptions,
+ tooltips: {
+ backgroundColor: '#f5f5f5',
+ titleFontColor: '#333',
+ bodyFontColor: '#666',
+ bodySpacing: 4,
+ xPadding: 12,
+ mode: 'nearest',
+ intersect: 0,
+ position: 'nearest'
+ },
+ responsive: true,
+ scales: {
+ yAxes: [
+ {
+ barPercentage: 1.6,
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(29,140,248,0.0)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ suggestedMin: 60,
+ suggestedMax: 125,
+ padding: 20,
+ fontColor: '#9e9e9e'
+ }
+ }
+ ],
+
+ xAxes: [
+ {
+ barPercentage: 1.6,
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(29,140,248,0.1)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ padding: 20,
+ fontColor: '#9e9e9e'
+ }
+ }
+ ]
+ }
+};
+
+export let barChartOptionsGradient = {
+ ...basicOptions,
+ tooltips: {
+ backgroundColor: '#f5f5f5',
+ titleFontColor: '#333',
+ bodyFontColor: '#666',
+ bodySpacing: 4,
+ xPadding: 12,
+ mode: 'nearest',
+ intersect: 0,
+ position: 'nearest'
+ },
+ responsive: true,
+ scales: {
+ yAxes: [
+ {
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(253,93,147,0.1)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ suggestedMin: 60,
+ suggestedMax: 125,
+ padding: 20,
+ fontColor: '#9e9e9e'
+ }
+ }
+ ],
+
+ xAxes: [
+ {
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(253,93,147,0.1)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ padding: 20,
+ fontColor: '#9e9e9e'
+ }
+ }
+ ]
+ }
+};
+
+export let pieChartOptions = {
+ ...basicOptions,
+ cutoutPercentage: 70,
+ tooltips: {
+ backgroundColor: '#f5f5f5',
+ titleFontColor: '#333',
+ bodyFontColor: '#666',
+ bodySpacing: 4,
+ xPadding: 12,
+ mode: 'nearest',
+ intersect: 0,
+ position: 'nearest'
+ },
+
+ scales: {
+ yAxes: [
+ {
+ display: 0,
+ ticks: {
+ display: false
+ },
+ gridLines: {
+ drawBorder: false,
+ zeroLineColor: 'transparent',
+ color: 'rgba(255,255,255,0.05)'
+ }
+ }
+ ],
+
+ xAxes: [
+ {
+ display: 0,
+ barPercentage: 1.6,
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(255,255,255,0.1)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ display: false
+ }
+ }
+ ]
+ }
+};
+
+export let purpleChartOptions = {
+ ...basicOptions,
+ tooltips: {
+ backgroundColor: '#f5f5f5',
+ titleFontColor: '#333',
+ bodyFontColor: '#666',
+ bodySpacing: 4,
+ xPadding: 12,
+ mode: 'nearest',
+ intersect: 0,
+ position: 'nearest'
+ },
+ scales: {
+ yAxes: [
+ {
+ barPercentage: 1.6,
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(29,140,248,0.0)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ suggestedMin: 60,
+ suggestedMax: 125,
+ padding: 20,
+ fontColor: '#9a9a9a'
+ }
+ }
+ ],
+
+ xAxes: [
+ {
+ barPercentage: 1.6,
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(225,78,202,0.1)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ padding: 20,
+ fontColor: '#9a9a9a'
+ }
+ }
+ ]
+ }
+};
+
+export let orangeChartOptions = {
+ ...basicOptions,
+ tooltips: {
+ backgroundColor: '#f5f5f5',
+ titleFontColor: '#333',
+ bodyFontColor: '#666',
+ bodySpacing: 4,
+ xPadding: 12,
+ mode: 'nearest',
+ intersect: 0,
+ position: 'nearest'
+ },
+ scales: {
+ yAxes: [
+ {
+ barPercentage: 1.6,
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(29,140,248,0.0)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ suggestedMin: 50,
+ suggestedMax: 110,
+ padding: 20,
+ fontColor: '#ff8a76'
+ }
+ }
+ ],
+
+ xAxes: [
+ {
+ barPercentage: 1.6,
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(220,53,69,0.1)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ padding: 20,
+ fontColor: '#ff8a76'
+ }
+ }
+ ]
+ }
+};
+export let greenChartOptions = {
+ ...basicOptions,
+ tooltips: {
+ backgroundColor: '#f5f5f5',
+ titleFontColor: '#333',
+ bodyFontColor: '#666',
+ bodySpacing: 4,
+ xPadding: 12,
+ mode: 'nearest',
+ intersect: 0,
+ position: 'nearest'
+ },
+ scales: {
+ yAxes: [
+ {
+ barPercentage: 1.6,
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(29,140,248,0.0)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ suggestedMin: 50,
+ suggestedMax: 125,
+ padding: 20,
+ fontColor: '#9e9e9e'
+ }
+ }
+ ],
+
+ xAxes: [
+ {
+ barPercentage: 1.6,
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(0,242,195,0.1)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ padding: 20,
+ fontColor: '#9e9e9e'
+ }
+ }
+ ]
+ }
+};
+
+export let barChartOptions = {
+ ...basicOptions,
+ tooltips: {
+ backgroundColor: '#f5f5f5',
+ titleFontColor: '#333',
+ bodyFontColor: '#666',
+ bodySpacing: 4,
+ xPadding: 12,
+ mode: 'nearest',
+ intersect: 0,
+ position: 'nearest'
+ },
+ scales: {
+ yAxes: [
+ {
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(29,140,248,0.1)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ suggestedMin: 60,
+ suggestedMax: 120,
+ padding: 20,
+ fontColor: '#9e9e9e'
+ }
+ }
+ ],
+ xAxes: [
+ {
+ gridLines: {
+ drawBorder: false,
+ color: 'rgba(29,140,248,0.1)',
+ zeroLineColor: 'transparent'
+ },
+ ticks: {
+ padding: 20,
+ fontColor: '#9e9e9e'
+ }
+ }
+ ]
+ }
+};
diff --git a/web/src/components/Charts/globalOptionsMixin.js b/web/src/components/Charts/globalOptionsMixin.js
new file mode 100644
index 0000000..f976ed3
--- /dev/null
+++ b/web/src/components/Charts/globalOptionsMixin.js
@@ -0,0 +1,7 @@
+import Chart from 'chart.js';
+import { initGlobalOptions } from "@/components/Charts/config";
+export default {
+ mounted() {
+ initGlobalOptions(Chart);
+ }
+}
diff --git a/web/src/components/Charts/optionHelpers.js b/web/src/components/Charts/optionHelpers.js
new file mode 100644
index 0000000..227b229
--- /dev/null
+++ b/web/src/components/Charts/optionHelpers.js
@@ -0,0 +1,10 @@
+// Parse global options
+export function parseOptions(parent, options) {
+ for (let item in options) {
+ if (typeof options[item] !== 'object') {
+ parent[item] = options[item];
+ } else {
+ parseOptions(parent[item], options[item]);
+ }
+ }
+}
diff --git a/web/src/components/CloseButton.vue b/web/src/components/CloseButton.vue
new file mode 100644
index 0000000..7557943
--- /dev/null
+++ b/web/src/components/CloseButton.vue
@@ -0,0 +1,34 @@
+<template>
+ <button type="button" class="navbar-toggler"
+ data-toggle="collapse"
+ @click="handleClick"
+ :data-target="`#${target}`"
+ :aria-controls="target"
+ :aria-expanded="expanded"
+ aria-label="Toggle navigation">
+ <span></span>
+ <span></span>
+ </button>
+</template>
+<script>
+export default {
+ name: "close-button",
+ props: {
+ target: {
+ type: [String, Number],
+ description: "Close button target element"
+ },
+ expanded: {
+ type: Boolean,
+ description: "Whether button is expanded (aria-expanded attribute)"
+ }
+ },
+ methods: {
+ handleClick(evt) {
+ this.$emit("click", evt);
+ }
+ }
+};
+</script>
+<style>
+</style>
diff --git a/web/src/components/HelloWorld.vue b/web/src/components/HelloWorld.vue
deleted file mode 100644
index 879051a..0000000
--- a/web/src/components/HelloWorld.vue
+++ /dev/null
@@ -1,58 +0,0 @@
-<template>
- <div class="hello">
- <h1>{{ msg }}</h1>
- <p>
- For a guide and recipes on how to configure / customize this project,<br>
- check out the
- <a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
- </p>
- <h3>Installed CLI Plugins</h3>
- <ul>
- <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
- <li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
- </ul>
- <h3>Essential Links</h3>
- <ul>
- <li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
- <li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
- <li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
- <li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
- <li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
- </ul>
- <h3>Ecosystem</h3>
- <ul>
- <li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
- <li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
- <li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
- <li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
- <li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
- </ul>
- </div>
-</template>
-
-<script>
-export default {
- name: 'HelloWorld',
- props: {
- msg: String
- }
-}
-</script>
-
-<!-- Add "scoped" attribute to limit CSS to this component only -->
-<style scoped>
-h3 {
- margin: 40px 0 0;
-}
-ul {
- list-style-type: none;
- padding: 0;
-}
-li {
- display: inline-block;
- margin: 0 10px;
-}
-a {
- color: #42b983;
-}
-</style>
diff --git a/web/src/components/Modal.vue b/web/src/components/Modal.vue
new file mode 100644
index 0000000..8083d20
--- /dev/null
+++ b/web/src/components/Modal.vue
@@ -0,0 +1,117 @@
+<template>
+ <SlideYUpTransition :duration="animationDuration">
+ <div class="modal fade"
+ @click.self="closeModal"
+ :class="[{'show d-block': show}, {'d-none': !show}, {'modal-mini': type === 'mini'}]"
+ v-show="show"
+ tabindex="-1"
+ role="dialog"
+ :aria-hidden="!show">
+
+ <div class="modal-dialog modal-dialog-centered"
+ :class="[{'modal-notice': type === 'notice'}, modalClasses]">
+ <div class="modal-content" :class="[gradient ? `bg-gradient-${gradient}` : '',modalContentClasses]">
+
+ <div class="modal-header" :class="[headerClasses]" v-if="$slots.header">
+ <slot name="header"></slot>
+ <slot name="close-button">
+ <button type="button"
+ class="close"
+ v-if="showClose"
+ @click="closeModal"
+ data-dismiss="modal"
+ aria-label="Close">
+ <span :aria-hidden="!show">×</span>
+ </button>
+ </slot>
+ </div>
+
+ <div class="modal-body" :class="bodyClasses">
+ <slot></slot>
+ </div>
+
+ <div class="modal-footer" :class="footerClasses" v-if="$slots.footer">
+ <slot name="footer"></slot>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </SlideYUpTransition>
+</template>
+<script>
+import { SlideYUpTransition } from "vue2-transitions";
+
+export default {
+ name: "modal",
+ components: {
+ SlideYUpTransition
+ },
+ props: {
+ show: Boolean,
+ showClose: {
+ type: Boolean,
+ default: true
+ },
+ type: {
+ type: String,
+ default: "",
+ validator(value) {
+ let acceptedValues = ["", "notice", "mini"];
+ return acceptedValues.indexOf(value) !== -1;
+ },
+ description: 'Modal type (notice|mini|"") '
+ },
+ modalClasses: {
+ type: [Object, String],
+ description: "Modal dialog css classes"
+ },
+ modalContentClasses: {
+ type: [Object, String],
+ description: "Modal dialog content css classes"
+ },
+ gradient: {
+ type: String,
+ description: "Modal gradient type (danger, primary etc)"
+ },
+ headerClasses: {
+ type: [Object, String],
+ description: "Modal Header css classes"
+ },
+ bodyClasses: {
+ type: [Object, String],
+ description: "Modal Body css classes"
+ },
+ footerClasses: {
+ type: [Object, String],
+ description: "Modal Footer css classes"
+ },
+ animationDuration: {
+ type: Number,
+ default: 500,
+ description: "Modal transition duration"
+ }
+ },
+ methods: {
+ closeModal() {
+ this.$emit("update:show", false);
+ this.$emit("close");
+ }
+ },
+ watch: {
+ show(val) {
+ let documentClasses = document.body.classList;
+ if (val) {
+ documentClasses.add("modal-open");
+ } else {
+ documentClasses.remove("modal-open");
+ }
+ }
+ }
+};
+</script>
+<style>
+.modal.show {
+ background-color: rgba(0, 0, 0, 0.3);
+}
+</style>
diff --git a/web/src/components/NavbarToggleButton.vue b/web/src/components/NavbarToggleButton.vue
new file mode 100644
index 0000000..bb3513b
--- /dev/null
+++ b/web/src/components/NavbarToggleButton.vue
@@ -0,0 +1,30 @@
+<template>
+ <button class="navbar-toggler" type="button"
+ data-toggle="collapse"
+ :data-target="target"
+ :aria-controls="target"
+ :aria-expanded="toggled"
+ aria-label="Toggle navigation">
+ <slot>
+ <span></span>
+ <span></span>
+ </slot>
+ </button>
+</template>
+<script>
+export default {
+ props: {
+ target: {
+ type: [String, Number],
+ description: "Button target element"
+ },
+ toggled: {
+ type: Boolean,
+ default: false,
+ description: "Whether button is toggled"
+ }
+ }
+};
+</script>
+<style>
+</style>
diff --git a/web/src/components/NotificationPlugin/Notification.vue b/web/src/components/NotificationPlugin/Notification.vue
new file mode 100644
index 0000000..acc6669
--- /dev/null
+++ b/web/src/components/NotificationPlugin/Notification.vue
@@ -0,0 +1,190 @@
+<template>
+ <div
+ @click="tryClose"
+ data-notify="container"
+ class="alert alert-notify alert-dismissible"
+ :class="[
+ { 'alert-with-icon': icon },
+ verticalAlign,
+ horizontalAlign,
+ alertType
+ ]"
+ role="alert"
+ :style="customPosition"
+ data-notify-position="top-center"
+ >
+ <template v-if="icon || $slots.icon">
+ <slot name="icon">
+ <span class="alert-icon" data-notify="icon">
+ <i :class="icon"></i>
+ </span>
+ </slot>
+ </template>
+
+ <span class="alert-text">
+
+ <span v-if="title" class="title">
+ <b>{{ title }}<br/></b>
+ </span>
+ <span v-if="message" v-html="message"></span>
+ <content-render
+ v-if="!message && component"
+ :component="component"
+ ></content-render>
+ </span>
+
+ <slot name="dismiss-icon">
+ <button type="button"
+ class="close"
+ data-dismiss="alert"
+ aria-label="Close"
+ @click="close">
+ <span aria-hidden="true">×</span>
+ </button>
+ </slot>
+ </div>
+</template>
+<script>
+ export default {
+ name: 'notification',
+ components: {
+ contentRender: {
+ props: ['component'],
+ render: h => h(this.component)
+ }
+ },
+ props: {
+ message: String,
+ title: String,
+ icon: String,
+ verticalAlign: {
+ type: String,
+ default: 'top',
+ validator: value => {
+ let acceptedValues = ['top', 'bottom'];
+ return acceptedValues.indexOf(value) !== -1;
+ }
+ },
+ horizontalAlign: {
+ type: String,
+ default: 'right',
+ validator: value => {
+ let acceptedValues = ['left', 'center', 'right'];
+ return acceptedValues.indexOf(value) !== -1;
+ }
+ },
+ type: {
+ type: String,
+ default: 'info',
+ validator: value => {
+ let acceptedValues = [
+ 'default',
+ 'info',
+ 'primary',
+ 'danger',
+ 'warning',
+ 'success'
+ ];
+ return acceptedValues.indexOf(value) !== -1;
+ }
+ },
+ timeout: {
+ type: Number,
+ default: 5000,
+ validator: value => {
+ return value >= 0;
+ }
+ },
+ timestamp: {
+ type: Date,
+ default: () => new Date()
+ },
+ component: {
+ type: [Object, Function]
+ },
+ showClose: {
+ type: Boolean,
+ default: true
+ },
+ closeOnClick: {
+ type: Boolean,
+ default: true
+ },
+ clickHandler: Function
+ },
+ data() {
+ return {
+ elmHeight: 0
+ };
+ },
+ computed: {
+ hasIcon() {
+ return this.icon && this.icon.length > 0;
+ },
+ alertType() {
+ return `alert-${this.type}`;
+ },
+ customPosition() {
+ let initialMargin = 20;
+ let alertHeight = this.elmHeight + 10;
+ let sameAlertsCount = this.$notifications.state.filter(alert => {
+ return (
+ alert.horizontalAlign === this.horizontalAlign &&
+ alert.verticalAlign === this.verticalAlign &&
+ alert.timestamp <= this.timestamp
+ );
+ }).length;
+ if (this.$notifications.settings.overlap) {
+ sameAlertsCount = 1;
+ }
+ let pixels = (sameAlertsCount - 1) * alertHeight + initialMargin;
+ let styles = {};
+ if (this.verticalAlign === 'top') {
+ styles.top = `${pixels}px`;
+ } else {
+ styles.bottom = `${pixels}px`;
+ }
+ return styles;
+ }
+ },
+ methods: {
+ close() {
+ this.$emit('close', this.timestamp);
+ },
+ tryClose(evt) {
+ if (this.clickHandler) {
+ this.clickHandler(evt, this);
+ }
+ if (this.closeOnClick) {
+ this.close();
+ }
+ }
+ },
+ mounted() {
+ this.elmHeight = this.$el.clientHeight;
+ if (this.timeout) {
+ setTimeout(this.close, this.timeout);
+ }
+ }
+ };
+</script>
+<style lang="scss">
+ .notifications .alert {
+ position: fixed;
+ z-index: 10000;
+
+ &[data-notify='container'] {
+ max-width: 500px;
+ }
+
+ &.center {
+ margin: 0 auto;
+ }
+ &.left {
+ left: 20px;
+ }
+ &.right {
+ right: 20px;
+ }
+ }
+</style>
diff --git a/web/src/components/NotificationPlugin/Notifications.vue b/web/src/components/NotificationPlugin/Notifications.vue
new file mode 100644
index 0000000..2689cc9
--- /dev/null
+++ b/web/src/components/NotificationPlugin/Notifications.vue
@@ -0,0 +1,55 @@
+<template>
+ <div class="notifications">
+ <slide-y-up-transition :duration="transitionDuration"
+ group
+ mode="out-in">
+ <notification
+ v-for="notification in notifications"
+ v-bind="notification"
+ :clickHandler="notification.onClick"
+ :key="notification.timestamp.getTime()"
+ @close="removeNotification"
+ >
+ </notification>
+ </slide-y-up-transition>
+ </div>
+</template>
+<script>
+ import Notification from './Notification.vue';
+ import { SlideYUpTransition } from 'vue2-transitions';
+
+ export default {
+ components: {
+ SlideYUpTransition,
+ Notification
+ },
+ props: {
+ transitionDuration: {
+ type: Number,
+ default: 200
+ },
+ overlap: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ notifications: this.$notifications.state
+ };
+ },
+ methods: {
+ removeNotification(timestamp) {
+ this.$notifications.removeNotification(timestamp);
+ }
+ },
+ created() {
+ this.$notifications.settings.overlap = this.overlap;
+ },
+ watch: {
+ overlap: function (newVal) {
+ this.$notifications.settings.overlap = newVal;
+ }
+ }
+ };
+</script>
diff --git a/web/src/components/NotificationPlugin/index.js b/web/src/components/NotificationPlugin/index.js
new file mode 100644
index 0000000..e871fb6
--- /dev/null
+++ b/web/src/components/NotificationPlugin/index.js
@@ -0,0 +1,66 @@
+import Notifications from './Notifications.vue';
+
+const NotificationStore = {
+ state: [], // here the notifications will be added
+ settings: {
+ overlap: false,
+ verticalAlign: 'top',
+ horizontalAlign: 'right',
+ type: 'info',
+ timeout: 5000,
+ closeOnClick: true,
+ showClose: true
+ },
+ setOptions(options) {
+ this.settings = Object.assign(this.settings, options);
+ },
+ removeNotification(timestamp) {
+ const indexToDelete = this.state.findIndex(n => n.timestamp === timestamp);
+ if (indexToDelete !== -1) {
+ this.state.splice(indexToDelete, 1);
+ }
+ },
+ addNotification(notification) {
+ if (typeof notification === 'string' || notification instanceof String) {
+ notification = { message: notification };
+ }
+ notification.timestamp = new Date();
+ notification.timestamp.setMilliseconds(
+ notification.timestamp.getMilliseconds() + this.state.length
+ );
+ notification = Object.assign({}, this.settings, notification);
+ this.state.push(notification);
+ },
+ notify(notification) {
+ if (Array.isArray(notification)) {
+ notification.forEach(notificationInstance => {
+ this.addNotification(notificationInstance);
+ });
+ } else {
+ this.addNotification(notification);
+ }
+ }
+};
+
+const NotificationsPlugin = {
+ install(Vue, options) {
+ let app = new Vue({
+ data: {
+ notificationStore: NotificationStore
+ },
+ methods: {
+ notify(notification) {
+ this.notificationStore.notify(notification);
+ }
+ }
+ });
+ Vue.prototype.$notify = app.notify;
+ Vue.prototype.$notifications = app.notificationStore;
+ Vue.component('Notifications', Notifications);
+ if (options) {
+ NotificationStore.setOptions(options);
+ }
+ }
+};
+
+export default NotificationsPlugin;
diff --git a/web/src/components/SidebarPlugin/SideBar.vue b/web/src/components/SidebarPlugin/SideBar.vue
new file mode 100755
index 0000000..eaef310
--- /dev/null
+++ b/web/src/components/SidebarPlugin/SideBar.vue
@@ -0,0 +1,138 @@
+<template>
+ <nav class="navbar navbar-vertical fixed-left navbar-expand-md navbar-light bg-white" id="sidenav-main">
+ <div class="container-fluid">
+
+ <!--Toggler-->
+ <navbar-toggle-button @click.native="showSidebar">
+ <span class="navbar-toggler-icon"></span>
+ </navbar-toggle-button>
+ <router-link class="navbar-brand" to="/">
+ <img :src="logo" class="navbar-brand-img" alt="...">
+ </router-link>
+
+ <slot name="mobile-right">
+ <ul class="nav align-items-center d-md-none">
+ <base-dropdown class="nav-item" position="right">
+ <a slot="title" class="nav-link nav-link-icon" href="#" role="button" data-toggle="dropdown"
+ aria-haspopup="true" aria-expanded="false">
+ <i class="ni ni-bell-55"></i>
+ </a>
+
+ <a class="dropdown-item" href="#">Action</a>
+ <a class="dropdown-item" href="#">Another action</a>
+ <div class="dropdown-divider"></div>
+ <a class="dropdown-item" href="#">Something else here</a>
+ </base-dropdown>
+ <base-dropdown class="nav-item" position="right">
+ <a slot="title" class="nav-link" href="#" role="button">
+ <div class="media align-items-center">
+ <span class="avatar avatar-sm rounded-circle">
+ <img alt="Image placeholder" src="img/theme/team-1-800x800.jpg">
+ </span>
+ </div>
+ </a>
+
+ <div class=" dropdown-header noti-title">
+ <h6 class="text-overflow m-0">Welcome!</h6>
+ </div>
+ <router-link to="/profile" class="dropdown-item">
+ <i class="ni ni-single-02"></i>
+ <span>My profile</span>
+ </router-link>
+ <router-link to="/profile" class="dropdown-item">
+ <i class="ni ni-settings-gear-65"></i>
+ <span>Settings</span>
+ </router-link>
+ <router-link to="/profile" class="dropdown-item">
+ <i class="ni ni-calendar-grid-58"></i>
+ <span>Activity</span>
+ </router-link>
+ <router-link to="/profile" class="dropdown-item">
+ <i class="ni ni-support-16"></i>
+ <span>Support</span>
+ </router-link>
+ <div class="dropdown-divider"></div>
+ <a href="#!" class="dropdown-item">
+ <i class="ni ni-user-run"></i>
+ <span>Logout</span>
+ </a>
+ </base-dropdown>
+ </ul>
+ </slot>
+ <slot></slot>
+ <div v-show="$sidebar.showSidebar" class="navbar-collapse collapse show" id="sidenav-collapse-main">
+
+ <div class="navbar-collapse-header d-md-none">
+ <div class="row">
+ <div class="col-6 collapse-brand">
+ <router-link to="/">
+ <img :src="logo">
+ </router-link>
+ </div>
+ <div class="col-6 collapse-close">
+ <navbar-toggle-button @click.native="closeSidebar"></navbar-toggle-button>
+ </div>
+ </div>
+ </div>
+
+ <ul class="navbar-nav">
+ <slot name="links">
+ </slot>
+ </ul>
+ <!--Divider-->
+ <hr class="my-3">
+ <!--Heading-->
+ <h6 class="navbar-heading text-muted">Documentation</h6>
+ <!--Navigation-->
+ <ul class="navbar-nav mb-md-3">
+ <li class="nav-item">
+ <a class="nav-link"
+ href="https://git.codox.org/blender/blender_plc/">
+ <i class="ni ni-spaceship"></i> Source code
+ </a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </nav>
+</template>
+<script>
+ import NavbarToggleButton from '@/components/NavbarToggleButton'
+
+ export default {
+ name: 'sidebar',
+ components: {
+ NavbarToggleButton
+ },
+ props: {
+ logo: {
+ type: String,
+ default: 'img/brand/green.png',
+ description: 'Sidebar app logo'
+ },
+ autoClose: {
+ type: Boolean,
+ default: true,
+ description: 'Whether sidebar should autoclose on mobile when clicking an item'
+ }
+ },
+ provide() {
+ return {
+ autoClose: this.autoClose
+ };
+ },
+ methods: {
+ closeSidebar() {
+ this.$sidebar.displaySidebar(false)
+ },
+ showSidebar() {
+ this.$sidebar.displaySidebar(true)
+ }
+ },
+ beforeDestroy() {
+ if (this.$sidebar.showSidebar) {
+ this.$sidebar.showSidebar = false;
+ }
+ }
+ };
+</script>
diff --git a/web/src/components/SidebarPlugin/SidebarItem.vue b/web/src/components/SidebarPlugin/SidebarItem.vue
new file mode 100755
index 0000000..c8c83b4
--- /dev/null
+++ b/web/src/components/SidebarPlugin/SidebarItem.vue
@@ -0,0 +1,56 @@
+<template>
+ <li class="nav-item">
+ <router-link
+ :to="link.path"
+ @click.native="linkClick"
+ class="nav-link"
+ :target="link.target"
+ :href="link.path">
+ <template>
+ <i :class="link.icon"></i>
+ <span class="nav-link-text">{{ link.name }}</span>
+ </template>
+ </router-link>
+ </li>
+</template>
+<script>
+ export default {
+ name: 'sidebar-item',
+ props: {
+ link: {
+ type: Object,
+ default: () => {
+ return {
+ name: '',
+ path: '',
+ children: []
+ };
+ },
+ description:
+ 'Sidebar link. Can contain name, path, icon and other attributes. See examples for more info'
+ }
+ },
+ inject: {
+ autoClose: {
+ default: true
+ }
+ },
+ data() {
+ return {
+ children: [],
+ collapsed: true
+ };
+ },
+ methods: {
+ linkClick() {
+ if (
+ this.autoClose &&
+ this.$sidebar &&
+ this.$sidebar.showSidebar === true
+ ) {
+ this.$sidebar.displaySidebar(false);
+ }
+ }
+ }
+ };
+</script>
diff --git a/web/src/components/SidebarPlugin/index.js b/web/src/components/SidebarPlugin/index.js
new file mode 100755
index 0000000..2239c7c
--- /dev/null
+++ b/web/src/components/SidebarPlugin/index.js
@@ -0,0 +1,43 @@
+import Sidebar from './SideBar.vue';
+import SidebarItem from './SidebarItem.vue';
+
+const SidebarStore = {
+ showSidebar: false,
+ sidebarLinks: [],
+ isMinimized: false,
+ displaySidebar(value) {
+ this.showSidebar = value;
+ },
+ toggleMinimize() {
+ document.body.classList.toggle('sidebar-mini');
+ // we simulate the window Resize so the charts will get updated in realtime.
+ const simulateWindowResize = setInterval(() => {
+ window.dispatchEvent(new Event('resize'));
+ }, 180);
+
+ // we stop the simulation of Window Resize after the animations are completed
+ setTimeout(() => {
+ clearInterval(simulateWindowResize);
+ }, 1000);
+
+ this.isMinimized = !this.isMinimized;
+ }
+};
+
+const SidebarPlugin = {
+ install(Vue, options) {
+ if (options && options.sidebarLinks) {
+ SidebarStore.sidebarLinks = options.sidebarLinks;
+ }
+ let app = new Vue({
+ data: {
+ sidebarStore: SidebarStore
+ }
+ });
+ Vue.prototype.$sidebar = app.sidebarStore;
+ Vue.component('side-bar', Sidebar);
+ Vue.component('sidebar-item', SidebarItem);
+ }
+};
+
+export default SidebarPlugin;
diff --git a/web/src/components/StatsCard.vue b/web/src/components/StatsCard.vue
new file mode 100644
index 0000000..c9c2294
--- /dev/null
+++ b/web/src/components/StatsCard.vue
@@ -0,0 +1,49 @@
+<template>
+ <card class="card-stats" :show-footer-line="true">
+ <div class="row">
+
+ <div class="col">
+ <slot>
+ <h5 class="card-title text-uppercase text-muted mb-0" v-if="title">{{title}}</h5>
+ <span class="h2 font-weight-bold mb-0" v-if="subTitle">{{subTitle}}</span>
+ </slot>
+ </div>
+
+ <div class="col-auto" v-if="$slots.icon || icon">
+ <slot name="icon">
+ <div class="icon icon-shape text-white rounded-circle shadow"
+ :class="[`bg-${type}`, iconClasses]">
+ <i :class="icon"></i>
+ </div>
+ </slot>
+ </div>
+ </div>
+
+ <p class="mt-3 mb-0 text-sm">
+ <slot name="footer">
+
+ </slot>
+ </p>
+ </card>
+</template>
+<script>
+ import Card from './Card.vue';
+
+ export default {
+ name: 'stats-card',
+ components: {
+ Card
+ },
+ props: {
+ type: {
+ type: String,
+ default: 'primary'
+ },
+ icon: String,
+ title: String,
+ subTitle: String,
+ iconClasses: [String, Array]
+ }
+ };
+</script>
+<style></style>
diff --git a/web/src/components/Tabs/PillsLayout.vue b/web/src/components/Tabs/PillsLayout.vue
new file mode 100644
index 0000000..98ac41d
--- /dev/null
+++ b/web/src/components/Tabs/PillsLayout.vue
@@ -0,0 +1,6 @@
+<template>
+ <div>
+ <slot name="nav"></slot>
+ <slot name="content"></slot>
+ </div>
+</template>
diff --git a/web/src/components/Tabs/Tab.vue b/web/src/components/Tabs/Tab.vue
new file mode 100644
index 0000000..b846d14
--- /dev/null
+++ b/web/src/components/Tabs/Tab.vue
@@ -0,0 +1,42 @@
+<template>
+ <div class="tab-pane"
+ v-show="active"
+ :id="id || title"
+ :class="{active: active}">
+ <slot></slot>
+ </div>
+</template>
+<script>
+export default {
+ name: "tab-pane",
+ props: {
+ title: {
+ type: String,
+ default: "",
+ description: "Tab pane title"
+ },
+ id: {
+ type: String,
+ default: null,
+ description: "Tab pane id"
+ }
+ },
+ inject: ["addTab", "removeTab"],
+ data() {
+ return {
+ active: false
+ };
+ },
+ mounted() {
+ this.addTab(this);
+ },
+ destroyed() {
+ if (this.$el && this.$el.parentNode) {
+ this.$el.parentNode.removeChild(this.$el);
+ }
+ this.removeTab(this);
+ }
+};
+</script>
+<style>
+</style>
diff --git a/web/src/components/Tabs/TabPane.vue b/web/src/components/Tabs/TabPane.vue
new file mode 100644
index 0000000..936b043
--- /dev/null
+++ b/web/src/components/Tabs/TabPane.vue
@@ -0,0 +1,32 @@
+<template>
+ <div class="tab-pane fade"
+ :id="id || label"
+ :class="{'active show': active}"
+ v-show="active"
+ :aria-expanded="active">
+ <slot></slot>
+ </div>
+</template>
+<script>
+export default {
+ name: "tab-pane",
+ props: ["label", "id", "title"],
+ inject: ["addTab", "removeTab"],
+ data() {
+ return {
+ active: false
+ };
+ },
+ mounted() {
+ this.addTab(this);
+ },
+ destroyed() {
+ if (this.$el && this.$el.parentNode) {
+ this.$el.parentNode.removeChild(this.$el);
+ }
+ this.removeTab(this);
+ }
+};
+</script>
+<style>
+</style>
diff --git a/web/src/components/Tabs/Tabs.vue b/web/src/components/Tabs/Tabs.vue
new file mode 100644
index 0000000..3743d86
--- /dev/null
+++ b/web/src/components/Tabs/Tabs.vue
@@ -0,0 +1,198 @@
+<template>
+ <component :is="layoutComponent">
+ <template slot="nav">
+ <div class="nav-wrapper">
+ <ul class="nav"
+ role="tablist"
+ :class="
+ [type ? `nav-pills-${type}`: '',
+ pills ? 'nav-pills': 'nav-tabs',
+ {'nav-pills-icons': icons},
+ {'nav-fill': fill},
+ {'nav-pills-circle': circle},
+ {'justify-content-center': centered},
+ tabNavClasses
+ ]">
+
+ <li v-for="tab in tabs"
+ class="nav-item"
+ :key="tab.id || tab.title">
+
+ <a data-toggle="tab"
+ role="tab"
+ class="nav-link"
+ :href="`#${tab.id || tab.title}`"
+ @click.prevent="activateTab(tab)"
+ :aria-selected="tab.active"
+ :class="{active: tab.active}">
+ <tab-item-content :tab="tab">
+ </tab-item-content>
+ </a>
+
+ </li>
+
+ </ul>
+ </div>
+ </template>
+ <div slot="content" class="tab-content"
+ :class="[tabContentClasses]">
+ <slot v-bind="slotData"></slot>
+ </div>
+ </component>
+</template>
+
+<script>
+import PillsLayout from "./PillsLayout";
+import TabsLayout from "./TabsLayout";
+export default {
+ name: "tabs",
+ components: {
+ TabsLayout,
+ PillsLayout,
+ TabItemContent: {
+ props: ["tab"],
+ render(h) {
+ return h("div", [this.tab.$slots.title || this.tab.title]);
+ }
+ }
+ },
+ props: {
+ type: {
+ type: String,
+ default: "",
+ validator: value => {
+ let acceptedValues = [
+ "",
+ "primary",
+ "info",
+ "success",
+ "warning",
+ "danger"
+ ];
+ return acceptedValues.indexOf(value) !== -1;
+ },
+ description: "Tabs type (primary|info|danger|default|warning|success)"
+ },
+ pills: {
+ type: Boolean,
+ default: true,
+ description: "Whether tabs are pills"
+ },
+ circle: {
+ type: Boolean,
+ default: false,
+ description: "Whether tabs are circle"
+ },
+ fill: {
+ type: Boolean,
+ default: true,
+ description: "Whether to fill each tab"
+ },
+ activeTab: {
+ type: String,
+ default: "",
+ description: "Default active tab name"
+ },
+ tabNavWrapperClasses: {
+ type: [String, Object],
+ default: "",
+ description: "Tab Nav wrapper (div) css classes"
+ },
+ tabNavClasses: {
+ type: [String, Object],
+ default: "",
+ description: "Tab Nav (ul) css classes"
+ },
+ tabContentClasses: {
+ type: [String, Object],
+ default: "",
+ description: "Tab content css classes"
+ },
+ icons: {
+ type: Boolean,
+ description: "Whether tabs should be of icon type (small no text)"
+ },
+ centered: {
+ type: Boolean,
+ description: "Whether tabs are centered"
+ },
+ value: {
+ type: String,
+ description: "Initial value (active tab)"
+ }
+ },
+ provide() {
+ return {
+ addTab: this.addTab,
+ removeTab: this.removeTab
+ };
+ },
+ data() {
+ return {
+ tabs: [],
+ activeTabIndex: 0
+ };
+ },
+ computed: {
+ layoutComponent() {
+ return this.pills ? "pills-layout" : "tabs-layout";
+ },
+ slotData() {
+ return {
+ activeTabIndex: this.activeTabIndex,
+ tabs: this.tabs
+ };
+ }
+ },
+ methods: {
+ findAndActivateTab(title) {
+ let tabToActivate = this.tabs.find(t => t.title === title);
+ if (tabToActivate) {
+ this.activateTab(tabToActivate);
+ }
+ },
+ activateTab(tab) {
+ if (this.handleClick) {
+ this.handleClick(tab);
+ }
+ this.deactivateTabs();
+ tab.active = true;
+ this.activeTabIndex = this.tabs.findIndex(t => t.active);
+ },
+ deactivateTabs() {
+ this.tabs.forEach(tab => {
+ tab.active = false;
+ });
+ },
+ addTab(tab) {
+ if (this.activeTab === tab.name) {
+ tab.active = true;
+ }
+ this.tabs.push(tab);
+ },
+ removeTab(tab) {
+ const tabs = this.tabs;
+ const index = tabs.indexOf(tab);
+ if (index > -1) {
+ tabs.splice(index, 1);
+ }
+ }
+ },
+ mounted() {
+ this.$nextTick(() => {
+ if (this.value) {
+ this.findAndActivateTab(this.value);
+ } else {
+ if (this.tabs.length > 0) {
+ this.activateTab(this.tabs[0]);
+ }
+ }
+ });
+ },
+ watch: {
+ value(newVal) {
+ this.findAndActivateTab(newVal);
+ }
+ }
+};
+</script>
diff --git a/web/src/components/Tabs/TabsLayout.vue b/web/src/components/Tabs/TabsLayout.vue
new file mode 100644
index 0000000..f5de035
--- /dev/null
+++ b/web/src/components/Tabs/TabsLayout.vue
@@ -0,0 +1,18 @@
+<template>
+ <div>
+ <div class="nav-tabs-navigation">
+ <div class="nav-tabs-wrapper">
+ <slot name="nav"></slot>
+ </div>
+ </div>
+ <div>
+ <slot name="content"></slot>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "tabs-layout"
+};
+</script>
diff --git a/web/src/components/stringUtils.js b/web/src/components/stringUtils.js
new file mode 100644
index 0000000..1f4da41
--- /dev/null
+++ b/web/src/components/stringUtils.js
@@ -0,0 +1,9 @@
+export function randomString(length = 7) {
+ const possibleChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+ let text = "";
+
+ for (let i = 0; i < length; i++)
+ text += possibleChars.charAt(Math.floor(Math.random() * possibleChars.length));
+
+ return text;
+}
diff --git a/web/src/directives/click-ouside.js b/web/src/directives/click-ouside.js
new file mode 100644
index 0000000..fbec7aa
--- /dev/null
+++ b/web/src/directives/click-ouside.js
@@ -0,0 +1,15 @@
+export default {
+ bind: function(el, binding, vnode) {
+ el.clickOutsideEvent = function(event) {
+ // here I check that click was outside the el and his childrens
+ if (!(el == event.target || el.contains(event.target))) {
+ // and if it did, call method provided in attribute value
+ vnode.context[binding.expression](event);
+ }
+ };
+ document.body.addEventListener("click", el.clickOutsideEvent);
+ },
+ unbind: function(el) {
+ document.body.removeEventListener("click", el.clickOutsideEvent);
+ }
+};
diff --git a/web/src/layout/AuthLayout.vue b/web/src/layout/AuthLayout.vue
new file mode 100644
index 0000000..d34a735
--- /dev/null
+++ b/web/src/layout/AuthLayout.vue
@@ -0,0 +1,135 @@
+<template>
+ <div class="main-content bg-default">
+ <!-- Navbar -->
+ <base-nav class="navbar-top navbar-horizontal navbar-dark"
+ containerClasses="px-4 container"
+ expand>
+ <router-link slot="brand" class="navbar-brand" to="/">
+ <img src="img/brand/white.png"/>
+ </router-link>
+
+ <template v-slot="{closeMenu}">
+ <!-- Collapse header -->
+ <div class="navbar-collapse-header d-md-none">
+ <div class="row">
+ <div class="col-6 collapse-brand">
+ <router-link to="/">
+ <img src="img/brand/green.png">
+ </router-link>
+ </div>
+ <div class="col-6 collapse-close">
+ <button type="button"
+ @click="closeMenu"
+ class="navbar-toggler"
+ aria-label="Toggle sidenav">
+ <span></span>
+ <span></span>
+ </button>
+ </div>
+ </div>
+ </div>
+ <!-- Navbar items -->
+ <ul class="navbar-nav ml-auto">
+ <li class="nav-item">
+ <router-link class="nav-link nav-link-icon" to="/">
+ <i class="ni ni-planet"></i>
+ <span class="nav-link-inner--text">Dashboard</span>
+ </router-link>
+ </li>
+ <li class="nav-item">
+ <router-link class="nav-link nav-link-icon" to="/register">
+ <i class="ni ni-circle-08"></i>
+ <span class="nav-link-inner--text">Register</span>
+ </router-link>
+ </li>
+ <li class="nav-item">
+ <router-link class="nav-link nav-link-icon" to="/login">
+ <i class="ni ni-key-25"></i>
+ <span class="nav-link-inner--text">Login</span>
+ </router-link>
+ </li>
+ <li class="nav-item">
+ <router-link class="nav-link nav-link-icon" to="/profile">
+ <i class="ni ni-single-02"></i>
+ <span class="nav-link-inner--text">Profile</span>
+ </router-link>
+ </li>
+ </ul>
+ </template>
+ </base-nav>
+ <!-- Header -->
+ <div cl