diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..d6471a3 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,2 @@ +> 1% +last 2 versions diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7053c49 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,5 @@ +[*.{js,jsx,ts,tsx,vue}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.env b/.env new file mode 100644 index 0000000..f256c63 --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +VUE_APP_I18N_LOCALE=en +VUE_APP_I18N_FALLBACK_LOCALE=en diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..5620e7a --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,14 @@ +module.exports = { + root: true, + env: { + node: true, + }, + extends: 'vuetify', + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + }, + parserOptions: { + parser: 'babel-eslint', + }, +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1a715f8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +.DS_Store +node_modules +/dist +package-lock.json + +/tests/e2e/videos/ +/tests/e2e/screenshots/ + +# 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? diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..bcefe07 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,7 @@ +# Change Log + +## [2.1.0] 2020-02-29 +- refactor: all the product was changed and now it's the same version with PRO version and also the structure it's the same + +## [1.0.0] 2018-10-16 +### Initial Release diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..465cc8b --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1,13 @@ + + + diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..c0a257e --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2019 [Creative Tim](https://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/README.md b/README.md index 925f648..79cf093 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,250 @@ -# vuetify-demo +# [Vuetify Material Dashboard](https://www.creative-tim.com/product/vuetify-material-dashboard?ref=vtymdp-readme) [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&logo=twitter)](https://twitter.com/share?url=https%3A%2F%2Fwww.creative-tim.com%2Fvuetify-material-dashboard&text=Vuetify%20Material%20Dashboard%20PRO%20by%20Creative%20Tim&via=CreativeTim&hashtags=vuejs%20%23vuex%20%23vuetify%20%23material) -vuetify 免费演示站 \ No newline at end of file + +![version](https://img.shields.io/badge/version-2.1.0-blue.svg) [![GitHub issues open](https://img.shields.io/github/issues/creativetimofficial/ct-vuetify-material-dashboard.svg)](https://github.com/creativetimofficial/ct-vuetify-material-dashboard/issues?q=is%3Aopen+is%3Aissue) [![GitHub closed issues](https://img.shields.io/github/issues-closed-raw/creativetimofficial/ct-vuetify-material-dashboard.svg?maxAge=259200)](https://github.com/creativetimofficial/ct-vuetify-material-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/material-dashboard) [![Chat](https://img.shields.io/badge/chat-on%20discord-7289da.svg)](https://discord.gg/E4aHAQy) + +![Product Gif](https://s3.amazonaws.com/creativetim_bucket/products/207/original/opt_mdp_vuetify_thumbnail.jpg?1566575158) + +**Vuetify Material Dashboard** is a beautiful resource built over [Vuetify](https://vuetifyjs.com/en/), [Vuex](https://vuex.vuejs.org/installation.html) and [Vuejs](https://vuejs.org/). It will help you get started developing dashboards in no time. Vuetify Material Dashboard is the official Vuejs version of the Original [Material Dashboard PRO](https://www.creative-tim.com/product/material-dashboard). Using the Dashboard is pretty simple but requires basic knowledge of Javascript, [Vuejs](https://vuejs.org/v2/guide/) and [Vue-Router](https://router.vuejs.org/en/). + +We have created it thinking about things you actually need in a dashboard. **Vuetify Material Dashboard** contains handpicked and optimized Vuejs plugins. Everything is designed to fit with one another. As you will be able to see, the dashboard you can access on [Creative Tim](https://www.creative-tim.com) is a customization of this product. + +**Vuetify** is developed exactly according to Material Design spec. Every component is handcrafted to bring you the best possible UI tools to your next great app. The development doesn't stop at the core components outlined in Google's spec. Through the support of community members and sponsors, additional components will be designed and made available for everyone to enjoy. + +**Vuex** is a state management pattern + library for **Vue.js** applications. It serves as a centralized store for all the components in an application, with rules ensuring that the state can only be mutated in a predictable fashion. It also integrates with Vue's official devtools extension to provide advanced features such as zero-config time-travel debugging and state snapshot export/import. + +Let us know what you think and what we can improve below. And good luck with development! + +## Getting Started +- Install Nodejs from [Nodejs Official Page](https://nodejs.org/en/) +- Open your terminal +- Navigate to the project +- Run `npm install` or `yarn install` if you use [Yarn](https://yarnpkg.com/en/) +- Run `npm run dev` or `yarn serve` to start a local development server +- A new tab will be opened in your browser + +You can also run additional npm tasks such as +- `npm run build` to build your app for production +- `npm run lint` to run linting. + +## Vuetify +Vuetify is developed exactly according to Material Design spec. Every component is hand crafted to bring you the best possible UI tools to your next great app. The development doesn't stop at the core components outlined in Google's spec. Through the support of community members and sponsors, additional components will be designed and made available for everyone to enjoy. + + +## Vuex + +Vuex is a state management pattern + library for Vue.js applications. It serves as a centralized store for all the components in an application, with rules ensuring that the state can only be mutated in a predictable fashion. It also integrates with Vue's official [devtools](https://github.com/vuejs/vue-devtools) extension to provide advanced features such as zero-config time-travel debugging and state snapshot export / import. + +## Vue-cli + +We used the latest 3.x [Vue CLI](https://github.com/vuejs/vue-cli) which aims to reduce project configuration +to as little as possible. Almost everything is inside `package.json` + some other related files such as +`.babel.config.js`, `.eslintrc.js` and `.postcssrc.js`. + +Let us know what you think and what we can improve below. And good luck with development! + + +#### Special thanks +During the development of this dashboard, we have used many existing resources from awesome developers. We want to thank them for providing their tools open source: +- [Vuetify](https://vuetifyjs.com/en/) for the wonderful framework + + +Let us know your thoughts below. And good luck with development! + +## 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) +* [Technical Support or Questions](#technical-support-or-questions) +* [Licensing](#licensing) +* [Useful Links](#useful-links) + + +## Versions + + + +[](https://www.creative-tim.com/product/vuetify-material-dashboard-pro?ref=vtymdp-readme) +[](https://www.creative-tim.com/product/material-dashboard-pro?ref=vtymdp-readme) +[](https://www.creative-tim.com/product/material-dashboard-pro-react?ref=vtymdp-readme) +[](https://www.creative-tim.com/product/vue-material-dashboard-pro?ref=vtymdp-readme) +[](https://www.creative-tim.com/product/material-dashboard-pro-angular2?ref=vtymdp-readme) + + +Vuetify | Vue | React | Angular | HTML | +| --- | --- | --- | --- | --- | +| [![Vuetify Material Dashboard PRO](https://s3.amazonaws.com/creativetim_bucket/products/207/original/opt_mdp_vuetify_thumbnail.jpg)](https://www.creative-tim.com/product/vuetify-material-dashboard-pro?ref=vtymdp-readme) | [![Vue Material Dashboard PRO](https://s3.amazonaws.com/creativetim_bucket/products/87/original/opt_mdp_vue_thumbnail.jpg)](https://www.creative-tim.com/product/vue-material-dashboard-pro?ref=vtymdp-readme) | [![Material Dashboard PRO React](https://s3.amazonaws.com/creativetim_bucket/products/80/original/opt_mdp_react_thumbnail.jpg)](https://www.creative-tim.com/product/material-dashboard-pro-react?ref=vtymdp-readme) | [![Material Dashboard PRO Angular](https://s3.amazonaws.com/creativetim_bucket/products/55/original/opt_mdp_angular_thumbnail.jpg)](https://www.creative-tim.com/product/material-dashboard-angular2?ref=vtymdp-readme) | [![Material Dashboard PRO HTML](https://s3.amazonaws.com/creativetim_bucket/products/51/original/opt_mdp_thumbnail.jpg)](https://www.creative-tim.com/product/material-dashboard-pro/examples/dashboard.html?ref=vtymdp-readme) + +## Demo + +- [Start page](https://demos.creative-tim.com/vuetify-material-dashboard?ref=vtymdp-readme) +- [Notifications page](https://demos.creative-tim.com/vuetify-material-dashboard/#/components/notifications?ref=vtymdp-readme) + +[View More](https://demos.creative-tim.com/vuetify-material-dashboard-pro?ref=vtymdp-readme). + + +## Quick start + +Quick start options: + +- Download from [Creative Tim](https://www.creative-tim.com/product/vuetify-material-dashboard?ref=vtymdp-readme) + + +## Documentation +The documentation for the **Vuetify Material Dashboard** is hosted on vuetify [website](https://vuetifyjs.com/en/components/api-explorer). + + +## File Structure + +Within the download you'll find the following directories and files: + +``` +vuetify-material-dashboard +├── README.md +├── CHANGELOG.md +├── babel.config.js +├── cypress.json +├── jest.config.js +├── now.json +├── package.json +├── postcss.config.js +├── public +│   ├── favicon.ico +│   └── index.html +├── src +│   ├── App.vue +│   ├── assets +│   │   └── vuetify.svg +│   ├── components +│   │   └── base +│   │   ├── Card.vue +│   │   ├── Item.vue +│   │   ├── ItemGroup.vue +│   │   ├── ItemSubGroup.vue +│   │   ├── MaterialAlert.vue +│   │   ├── MaterialCard.vue +│   │   ├── MaterialChartCard.vue +│   │   ├── MaterialSnackbar.vue +│   │   ├── MaterialStatsCard.vue +│   │   ├── MaterialTabs.vue +│   │   ├── MaterialTestimony.vue +│   │   ├── Subheading.vue +│   │   └── VComponent.vue +│   ├── i18n.js +│   ├── locales +│   │   └── en.json +│   ├── main.js +│   ├── plugins +│   │   ├── base.js +│   │   ├── chartist.js +│   │   ├── vee-validate.js +│   │   └── vuetify.js +│   ├── router.js +│   ├── sass +│   │   ├── main.scss +│   │   ├── overrides.sass +│   │   └── vuetify-material +│   │   └── _sidebar.sass +│   ├── store.js +│   └── views +│   └── dashboard +│      ├── Charts.vue +│      ├── Dashboard.vue +│      ├── Index.vue +│      ├── Widgets.vue +│      ├── component +│      │   ├── Buttons.vue +│      │   ├── Grid.vue +│      │   ├── Icons.vue +│      │   ├── Notifications.vue +│      │   ├── Tabs.vue +│      │   └── Typography.vue +│      ├── components +│      │   └── core +│      │   ├── AppBar.vue +│      │   ├── Drawer.vue +│      │   ├── Footer.vue +│      │   ├── Settings.vue +│      │   └── View.vue +│      ├── maps +│      │   └── GoogleMaps.vue +│      ├── pages +│      │   └── UserProfile.vue +│      └── tables +│      └── RegularTables.vue +├── tests +│   ├── e2e +│   │   ├── plugins +│   │   │   └── index.js +│   │   ├── specs +│   │   │   └── test.js +│   │   └── support +│   │   ├── commands.js +│   │   └── index.js +│   └── unit +│   └── example.spec.js +├── vue.config.js +``` + +## Browser Support + +At present, we officially aim to support the last two versions of the following browsers: + + + + +## Resources +- [Live Preview](https://demos.creative-tim.com/vuetify-material-dashboard?ref=vtymdp-readme) +- Download Page: [Download](https://www.creative-tim.com/product/vuetify-material-dashboard?ref=vtymdp-readme) +- Documentation is [Here](https://vuetifyjs.com/en/components/api-explorer) +- License Agreement: [License](https://www.creative-tim.com/license) +- Support: [Contact](https://www.creative-tim.com/contact-us) +- Issues: [Github Issues Page](https://github.com/creativetimofficial/ct-vuetify-material-dashboard/issues) +- Vue Material Dashboard PRO - [Demo](https://www.creative-tim.com/product/vue-material-dashboard-pro?ref=vtymdp-readme) +- For Front End Development - [Material Kit Pro ](https://www.creative-tim.com/product/material-kit-pro?ref=vtymdp-readme) + +## Reporting Issues +We use GitHub Issues as the official bug tracker for the **Vuetify Material Dashboard**. 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 **Vuetify Material Dashboard**. Check the **CHANGELOG** from your dashboard on our [website](https://www.creative-tim.com/). +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. + +## Technical Support or Questions + +If you have questions or need help integrating the product please [contact us](https://www.creative-tim.com/contact-us) instead of opening an issue. + +## Licensing + +- Copyright 2018 Creative Tim (https://www.creative-tim.com) +- Creative Tim [license](https://www.creative-tim.com/license) + +## Useful Links + +- [More products](https://www.creative-tim.com/bootstrap-themes) from Creative Tim + +- [Vue products](https://www.creative-tim.com/bootstrap-themes/vuejs-themes) from Creative Tim + +- [Tutorials](https://www.youtube.com/channel/UCVyTG4sCw-rOvB9oHkzZD1w) + +- [Freebies](https://www.creative-tim.com/bootstrap-themes/free) from Creative Tim + +- [Affiliate Program](https://www.creative-tim.com/affiliates/new) (earn money) + +##### Social Media + +Twitter: + +Facebook: + +Dribbble: + +Google+: + +Instagram: diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..d39e57b --- /dev/null +++ b/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/app', + ], +} diff --git a/cypress.json b/cypress.json new file mode 100644 index 0000000..470c720 --- /dev/null +++ b/cypress.json @@ -0,0 +1,3 @@ +{ + "pluginsFile": "tests/e2e/plugins/index.js" +} diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..d3550ba --- /dev/null +++ b/jest.config.js @@ -0,0 +1,30 @@ +module.exports = { + moduleFileExtensions: [ + 'js', + 'jsx', + 'json', + 'vue', + ], + transform: { + '^.+\\.vue$': 'vue-jest', + '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub', + '^.+\\.jsx?$': 'babel-jest', + }, + transformIgnorePatterns: [ + '/node_modules/', + ], + moduleNameMapper: { + '^@/(.*)$': '/src/$1', + }, + snapshotSerializers: [ + 'jest-serializer-vue', + ], + testMatch: [ + '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)', + ], + testURL: 'http://localhost/', + watchPlugins: [ + 'jest-watch-typeahead/filename', + 'jest-watch-typeahead/testname', + ], +} diff --git a/now.json b/now.json new file mode 100644 index 0000000..85deee8 --- /dev/null +++ b/now.json @@ -0,0 +1,3 @@ +{ + "version": 2 +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..f9f812d --- /dev/null +++ b/package.json @@ -0,0 +1,47 @@ +{ + "name": "vuetify-material-dashboard", + "version": "2.1.0", + "private": true, + "scripts": { + "dev": "vue-cli-service serve --open", + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint", + "i18n:report": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/locales/**/*.json'", + "now-start": "vue-cli-service serve", + "test:e2e": "vue-cli-service test:e2e", + "test:unit": "vue-cli-service test:unit" + }, + "dependencies": { + "core-js": "^3.6.2", + "vue": "^2.6.11", + "vue-i18n": "^8.15.3", + "vue-router": "^3.1.3", + "vuetify": "^2.2.11", + "vuex": "^3.1.2" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^4.1.2", + "@vue/cli-plugin-e2e-cypress": "^4.1.2", + "@vue/cli-plugin-eslint": "^4.1.2", + "@vue/cli-plugin-unit-jest": "^4.1.2", + "@vue/cli-service": "^4.1.2", + "@vue/eslint-config-standard": "^5.0.1", + "@vue/test-utils": "1.0.0-beta.30", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "^10.0.3", + "babel-jest": "^24.9.0", + "eslint": "^6.8.0", + "eslint-config-vuetify": "^0.4.1", + "eslint-plugin-vue": "^6.1.2", + "sass": "^1.24.3", + "sass-loader": "^8.0.0", + "vee-validate": "^3.2.2", + "vue-chartist": "^2.2.1", + "vue-cli-plugin-i18n": "^0.6.0", + "vue-cli-plugin-vuetify": "^2.0.3", + "vue-template-compiler": "^2.6.11", + "vue-world-map": "^0.1.1", + "vuetify-loader": "^1.4.3" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..90d9fff --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {}, + }, +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..2ec647c Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000..7d8b7d0 Binary files /dev/null and b/public/favicon.png differ diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..75c356c --- /dev/null +++ b/public/index.html @@ -0,0 +1,36 @@ + + + + + + + + + + Vuetify Material Dashboard - by Creative Tim + + + + + +
+ + + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..795f530 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/assets/clint-mckoy.jpg b/src/assets/clint-mckoy.jpg new file mode 100644 index 0000000..6e23b7b Binary files /dev/null and b/src/assets/clint-mckoy.jpg differ diff --git a/src/assets/lock.jpg b/src/assets/lock.jpg new file mode 100644 index 0000000..6e5d4c0 Binary files /dev/null and b/src/assets/lock.jpg differ diff --git a/src/assets/login.jpg b/src/assets/login.jpg new file mode 100644 index 0000000..52b905a Binary files /dev/null and b/src/assets/login.jpg differ diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000..f3d2503 Binary files /dev/null and b/src/assets/logo.png differ diff --git a/src/assets/pricing.jpg b/src/assets/pricing.jpg new file mode 100644 index 0000000..df49d3f Binary files /dev/null and b/src/assets/pricing.jpg differ diff --git a/src/assets/register.jpg b/src/assets/register.jpg new file mode 100644 index 0000000..94d234c Binary files /dev/null and b/src/assets/register.jpg differ diff --git a/src/assets/vuetify.svg b/src/assets/vuetify.svg new file mode 100644 index 0000000..4ef7bd5 --- /dev/null +++ b/src/assets/vuetify.svg @@ -0,0 +1 @@ +Artboard 47 diff --git a/src/components/base/Card.vue b/src/components/base/Card.vue new file mode 100644 index 0000000..43e0a89 --- /dev/null +++ b/src/components/base/Card.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/base/Item.vue b/src/components/base/Item.vue new file mode 100644 index 0000000..b5e06b3 --- /dev/null +++ b/src/components/base/Item.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/components/base/ItemGroup.vue b/src/components/base/ItemGroup.vue new file mode 100644 index 0000000..0665efd --- /dev/null +++ b/src/components/base/ItemGroup.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/src/components/base/ItemSubGroup.vue b/src/components/base/ItemSubGroup.vue new file mode 100644 index 0000000..98de304 --- /dev/null +++ b/src/components/base/ItemSubGroup.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/base/MaterialAlert.vue b/src/components/base/MaterialAlert.vue new file mode 100644 index 0000000..8407f38 --- /dev/null +++ b/src/components/base/MaterialAlert.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/components/base/MaterialCard.vue b/src/components/base/MaterialCard.vue new file mode 100644 index 0000000..330773b --- /dev/null +++ b/src/components/base/MaterialCard.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/src/components/base/MaterialChartCard.vue b/src/components/base/MaterialChartCard.vue new file mode 100644 index 0000000..a607d47 --- /dev/null +++ b/src/components/base/MaterialChartCard.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/components/base/MaterialSnackbar.vue b/src/components/base/MaterialSnackbar.vue new file mode 100644 index 0000000..f454ed5 --- /dev/null +++ b/src/components/base/MaterialSnackbar.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/components/base/MaterialStatsCard.vue b/src/components/base/MaterialStatsCard.vue new file mode 100644 index 0000000..633d7b1 --- /dev/null +++ b/src/components/base/MaterialStatsCard.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/src/components/base/MaterialTabs.vue b/src/components/base/MaterialTabs.vue new file mode 100644 index 0000000..7f4dde7 --- /dev/null +++ b/src/components/base/MaterialTabs.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/components/base/MaterialTestimony.vue b/src/components/base/MaterialTestimony.vue new file mode 100644 index 0000000..880a919 --- /dev/null +++ b/src/components/base/MaterialTestimony.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/src/components/base/Subheading.vue b/src/components/base/Subheading.vue new file mode 100644 index 0000000..f0cc663 --- /dev/null +++ b/src/components/base/Subheading.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/components/base/VComponent.vue b/src/components/base/VComponent.vue new file mode 100644 index 0000000..935a9f3 --- /dev/null +++ b/src/components/base/VComponent.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/i18n.js b/src/i18n.js new file mode 100644 index 0000000..602b343 --- /dev/null +++ b/src/i18n.js @@ -0,0 +1,19 @@ +import Vue from 'vue' +import VueI18n from 'vue-i18n' + +import en from 'vuetify/lib/locale/en' + +Vue.use(VueI18n) + +const messages = { + en: { + ...require('@/locales/en.json'), + $vuetify: en, + }, +} + +export default new VueI18n({ + locale: process.env.VUE_APP_I18N_LOCALE || 'en', + fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en', + messages, +}) diff --git a/src/locales/en.json b/src/locales/en.json new file mode 100644 index 0000000..2a8e730 --- /dev/null +++ b/src/locales/en.json @@ -0,0 +1,45 @@ +{ + "avatar": "Vuetify MD", + "buttons": "Buttons", + "calendar": "Calendar", + "charts": "Charts", + "components": "Components", + "ct": "CT", + "dashboard": "Dashboard", + "dtables": "Data Tables", + "eforms": "Extended Forms", + "error": "Error Page", + "etables": "Extended Tables", + "example": "Example", + "forms": "Forms", + "fullscreen": "Full Screen Map", + "google": "Google Maps", + "grid": "Grid System", + "icons": "Icons", + "lock": "Lock Screen Page", + "login": "Login Page", + "maps": "Maps", + "multi": "Multi Level Collapse", + "notifications": "Notifications", + "pages": "Pages", + "plan": "Choose Plan", + "pricing": "Pricing", + "my-profile": "My Profile", + "edit-profile": "Edit Profile", + "register": "Register Page", + "rforms": "Regular Forms", + "rtables": "Regular Tables", + "rtl": "RTL Support", + "search": "Search", + "settings": "Settings", + "tables": "Tables", + "tabs": "Tabs", + "tim": "Creative Tim", + "timeline": "Timeline", + "typography": "Typography", + "upgrade": "Upgrade To PRO", + "user": "User Profile", + "vforms": "Validation Forms", + "widgets": "Widgets", + "wizard": "Wizard" +} diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..549cac6 --- /dev/null +++ b/src/main.js @@ -0,0 +1,32 @@ +// ========================================================= +// * Vuetify Material Dashboard - v2.1.0 +// ========================================================= +// +// * Product Page: https://www.creative-tim.com/product/vuetify-material-dashboard +// * Copyright 2019 Creative Tim (https://www.creative-tim.com) +// +// * Coded by Creative Tim +// +// ========================================================= +// +// * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +import Vue from 'vue' +import App from './App.vue' +import router from './router' +import store from './store' +import './plugins/base' +import './plugins/chartist' +import './plugins/vee-validate' +import vuetify from './plugins/vuetify' +import i18n from './i18n' + +Vue.config.productionTip = false + +new Vue({ + router, + store, + vuetify, + i18n, + render: h => h(App), +}).$mount('#app') diff --git a/src/plugins/base.js b/src/plugins/base.js new file mode 100644 index 0000000..daebef5 --- /dev/null +++ b/src/plugins/base.js @@ -0,0 +1,17 @@ +import Vue from 'vue' +import upperFirst from 'lodash/upperFirst' +import camelCase from 'lodash/camelCase' + +const requireComponent = require.context( + '@/components/base', true, /\.vue$/, +) + +requireComponent.keys().forEach(fileName => { + const componentConfig = requireComponent(fileName) + + const componentName = upperFirst( + camelCase(fileName.replace(/^\.\//, '').replace(/\.\w+$/, '')), + ) + + Vue.component(`Base${componentName}`, componentConfig.default || componentConfig) +}) diff --git a/src/plugins/chartist.js b/src/plugins/chartist.js new file mode 100644 index 0000000..2c8bb2d --- /dev/null +++ b/src/plugins/chartist.js @@ -0,0 +1,4 @@ +import Vue from 'vue' +import 'chartist/dist/chartist.min.css' + +Vue.use(require('vue-chartist')) diff --git a/src/plugins/vee-validate.js b/src/plugins/vee-validate.js new file mode 100644 index 0000000..3ea02de --- /dev/null +++ b/src/plugins/vee-validate.js @@ -0,0 +1,22 @@ +import Vue from 'vue' +import { + extend, + ValidationObserver, + ValidationProvider, +} from 'vee-validate' +import { + email, + max, + min, + numeric, + required, +} from 'vee-validate/dist/rules' + +extend('email', email) +extend('max', max) +extend('min', min) +extend('numeric', numeric) +extend('required', required) + +Vue.component('validation-provider', ValidationProvider) +Vue.component('validation-observer', ValidationObserver) diff --git a/src/plugins/vuetify.js b/src/plugins/vuetify.js new file mode 100644 index 0000000..c6246f4 --- /dev/null +++ b/src/plugins/vuetify.js @@ -0,0 +1,25 @@ +import Vue from 'vue' +import Vuetify from 'vuetify/lib' +import i18n from '@/i18n' +import '@/sass/overrides.sass' + +Vue.use(Vuetify) + +const theme = { + primary: '#4CAF50', + secondary: '#9C27b0', + accent: '#9C27b0', + info: '#00CAE3', +} + +export default new Vuetify({ + lang: { + t: (key, ...params) => i18n.t(key, params), + }, + theme: { + themes: { + dark: theme, + light: theme, + }, + }, +}) diff --git a/src/router.js b/src/router.js new file mode 100644 index 0000000..6b92356 --- /dev/null +++ b/src/router.js @@ -0,0 +1,62 @@ +import Vue from 'vue' +import Router from 'vue-router' + +Vue.use(Router) + +export default new Router({ + mode: 'hash', + base: process.env.BASE_URL, + routes: [ + { + path: '/', + component: () => import('@/views/dashboard/Index'), + children: [ + // Dashboard + { + name: 'Dashboard', + path: '', + component: () => import('@/views/dashboard/Dashboard'), + }, + // Pages + { + name: 'User Profile', + path: 'pages/user', + component: () => import('@/views/dashboard/pages/UserProfile'), + }, + { + name: 'Notifications', + path: 'components/notifications', + component: () => import('@/views/dashboard/component/Notifications'), + }, + { + name: 'Icons', + path: 'components/icons', + component: () => import('@/views/dashboard/component/Icons'), + }, + { + name: 'Typography', + path: 'components/typography', + component: () => import('@/views/dashboard/component/Typography'), + }, + // Tables + { + name: 'Regular Tables', + path: 'tables/regular-tables', + component: () => import('@/views/dashboard/tables/RegularTables'), + }, + // Maps + { + name: 'Google Maps', + path: 'maps/google-maps', + component: () => import('@/views/dashboard/maps/GoogleMaps'), + }, + // Upgrade + { + name: 'Upgrade', + path: 'upgrade', + component: () => import('@/views/dashboard/Upgrade'), + }, + ], + }, + ], +}) diff --git a/src/sass/overrides.sass b/src/sass/overrides.sass new file mode 100644 index 0000000..4ad1942 --- /dev/null +++ b/src/sass/overrides.sass @@ -0,0 +1,47 @@ +// ========================================================= +// * Vuetify Material Dashboard - v2.1.0 +// ========================================================= +// +// * Product Page: https://www.creative-tim.com/product/vuetify-material-dashboard +// * Copyright 2019 Creative Tim (https://www.creative-tim.com) +// +// * Coded by Creative Tim +// +// ========================================================= +// +// * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +// Creative Tim refine style code +@import vuetify-material/sidebar +@import vuetify-material/appbar +@import vuetify-material/buttons +@import vuetify-material/pagination +@import vuetify-material/footer +@import vuetify-material/view +@import vuetify-material/settings +@import vuetify-material/card +@import vuetify-material/table +@import vuetify-material/tab +@import vuetify-material/notification +@import vuetify-material/modal +@import vuetify-material/map +@import vuetify-material/chip + +.v-btn.v-size--default, +.v-btn.v-size--large + &:not(.v-btn--icon):not(.v-btn--fab) + padding: 0 30px !important + +.theme--light.v-list-item .v-list-item__action-text, +.theme--light.v-list-item .v-list-item__subtitle + color: #999 + +.theme--light.v-text-field>.v-input__control>.v-input__slot:before + border-color: #d2d2d2 + +.v-label.v-label, +.v-alert.v-alert + font-size: $font-size-root + +.theme--light .v-content + background-color: #eee diff --git a/src/sass/variables.scss b/src/sass/variables.scss new file mode 100644 index 0000000..0ba5871 --- /dev/null +++ b/src/sass/variables.scss @@ -0,0 +1,34 @@ +$font-size-root: 14px; +$sheet-border-radius: 4px; +$list-item-title-font-size: 0.929rem; +$list-item-dense-title-font-size: 0.929rem; +$list-item-dense-title-font-weight: initial; +$fab-icon-sizes: ( small: 20 ); +$btn-font-sizes: ( default: 1rem, large: 1rem ); +$btn-sizes: ( default: 41, large: 54 ); +$btn-letter-spacing: 0; +$btn-font-weight: 400; +$card-text-font-size: 16px; + +$headings: ( + 'h1': ( + 'size': 3.3125rem, + 'line-height': 1.15em + ), + 'h2': ( + 'size': 2.25rem, + 'line-height': 1.5em + ), + 'h3': ( + 'size': 1.5625rem, + 'line-height': 1.4em + ), + 'h4': ( + 'size': 1.125rem, + 'line-height': 1.4em + ), + 'h5': ( 'size': 1.0625rem ), + 'h6': ( 'size': .75rem ), + 'subtitle-2': ( 'size': 1rem ), + 'overline': ( 'letter-spacing': 0 ) +); diff --git a/src/sass/vuetify-material/_appbar.sass b/src/sass/vuetify-material/_appbar.sass new file mode 100644 index 0000000..f94ad7c --- /dev/null +++ b/src/sass/vuetify-material/_appbar.sass @@ -0,0 +1,54 @@ +#app-bar + .v-badge__badge + font-size: 9px + padding: 5px 6px + +// ----------------------- +.v-toolbar__content, +.v-toolbar__extension + padding: 0px 15px 0 31px + +.v-sheet + .v-toolbar__content + .v-btn.v-size--default:not(.v-btn--icon):not(.v-btn--fab), + .v-btn.v-size--large:not(.v-btn--icon):not(.v-btn--fab) + margin-bottom: 5px + padding: 10px 15px !important + .theme--light.v-btn:not(.v-btn--flat):not(.v-btn--text):not(.v-btn--outlined) + background-color: #fff + .v-icon + color: #999 + +.theme--light.v-btn:not(.v-btn--flat):not(.v-btn--text):not(.v-btn--outlined) + background-color: #fff + margin-right: 17px + margin-bottom: 2px + +.theme--light.v-btn:not(.v-btn--flat):not(.v-btn--text):not(.v-btn--outlined):hover + background-color: #fff + +.v-toolbar__content + height: 75px + +.v-toolbar__content .v-btn--flat + .v-icon + margin-right: 3px + +.theme--light.v-label + color: rgba(0, 0, 0, 0.3) + +.v-menu__content .v-list--nav + padding: .3125rem 0 + border-radius: 4px + .v-list-item + padding: 10px 20px + margin: 0 .3125rem + margin-bottom: 0px !important + min-height: 40px + border-radius: 2px + .v-list-item__title + font-weight: 400 + font-size: 13px + +.v-navigation-drawer .v-icon.v-icon + font-size: 24px diff --git a/src/sass/vuetify-material/_buttons.sass b/src/sass/vuetify-material/_buttons.sass new file mode 100644 index 0000000..200164e --- /dev/null +++ b/src/sass/vuetify-material/_buttons.sass @@ -0,0 +1,67 @@ +.v-btn.v-size--default + font-size: .85rem + +.v-icon.v-icon + font-size: 20px + +.v-btn__content .v-icon--left + margin-right: 4px + +.v-sheet button.v-btn.v-size--default:not(.v-btn--icon):not(.v-btn--fab) + padding: 12px 30px !important + +.theme--light.v-btn:not(.v-btn--flat):not(.v-btn--text):not(.v-btn--outlined) + background-color: #999 + color: #fff + &:hover + background-color: #999 + color: #fff + +.v-btn.white + .v-btn__content + color: #999 + +.v-sheet .v-btn.v-size--large:not(.v-btn--icon):not(.v-btn--fab) + padding: 18px 36px !important + +.v-btn--fab.v-size--small + height: 41px + width: 41px + +.v-btn:not(.v-btn--text):not(.v-btn--outlined):hover:before + opacity: 0 + +.v-btn:not(.v-btn--text):not(.v-btn--outlined):focus:before + opacity: 0 + +.v-btn.v-size--default:not(.v-btn--icon):not(.v-btn--fab), +.v-btn.v-size--large:not(.v-btn--icon):not(.v-btn--fab) + padding: 10px 15px !important + +// Button group + +.v-item-group + .v-btn:not(.v-btn--flat):not(.v-btn--text):not(.v-btn--outlined) + margin-right: 0 + +.v-btn-toggle + .v-btn + opacity: 1 + +.v-btn-toggle > .v-btn.v-size--default + height: inherit + +.theme--light.v-btn-toggle .v-btn.v-btn + border-color: #999 !important + &.primary + border-color: #e91e63 !important + &.secondary + border-color: #9c27b0 !important + &.success + border-color: #4caf50 !important + &.warning + border-color: #fb8c00 !important + &.error + border-color: #ff5252 !important + &.info + border-color: #00cae3 !important diff --git a/src/sass/vuetify-material/_card.sass b/src/sass/vuetify-material/_card.sass new file mode 100644 index 0000000..b1b4067 --- /dev/null +++ b/src/sass/vuetify-material/_card.sass @@ -0,0 +1,107 @@ +.v-card + border-radius: 6px + margin-top: 30px + margin-bottom: 15px + + .card-title + font-size: 18px + + .v-card--material__heading + top: -30px + + .subtitle-1 + color: hsla(0,0%,100%,.8) + + .display-2 + font-size: 18px !important + + .caption + font-size: 12px !important + letter-spacing: 0 !important + + .v-card__actions + padding-top: 15px + .display-2 + font-size: 18px !important + + .v-divider + border-color: #eee + + .ct-label + font-size: 14px + +.v-card--material-chart .v-card--material__heading .ct-label + font-weight: 300 + + +.v-btn--icon.v-size--default .v-icon, +.v-btn--fab.v-size--default .v-icon + font-size: 18px + +.v-card--material .v-image + .v-image__image + border-radius: 6px + +.v-card__title + font-size: 18px + padding-top: 7px + padding-bottom: 2px + +.theme--light + .v-card > .v-card__text + color: #333 + .card-title + color: #3c4858 + +.theme--dark + .card-title + color: #fff + + +.v-timeline-item .v-card + margin-top: 0 + +.v-card--wizard + .v-tabs-bar + height: 42px + .v-card__actions + .v-btn + margin-right: 0 !important + .v-tabs .v-tab--active:hover::before, .theme--light.v-tabs .v-tab--active::before + opacity: 0 + .v-tabs .v-tab:hover::before + opacity: 0 + +.v-card--plan + .body-2 + font-weight: 500 + letter-spacing: 0 !important + margin-top: 10px + margin-bottom: 8px + .display-2 + margin-top: 30px + + .v-card__text + color: #999 + margin-bottom: 16px + .v-btn + margin-right: 0 !important + .v-avatar + margin-top: 10px + +.v-card--testimony + .v-card__text + color: #999 !important + + .display-2 + font-size: 18px !important + + .body-2 + font-weight: 500 + font-size: 12px !important + + .v-avatar + left: calc(50% - 50px) + +.ct-square:before + float: none diff --git a/src/sass/vuetify-material/_chip.sass b/src/sass/vuetify-material/_chip.sass new file mode 100644 index 0000000..b5926ef --- /dev/null +++ b/src/sass/vuetify-material/_chip.sass @@ -0,0 +1,9 @@ +.v-chip.v-size--small + height: 20px + +.v-chip__content + font-size: 10px + font-weight: 500 + .v-chip__close + font-size: 15px + margin-top: -1px diff --git a/src/sass/vuetify-material/_footer.sass b/src/sass/vuetify-material/_footer.sass new file mode 100644 index 0000000..9cc178a --- /dev/null +++ b/src/sass/vuetify-material/_footer.sass @@ -0,0 +1,29 @@ +.v-footer + padding: 20px 0 20px 4px + border-top: 1px solid #e7e7e7 !important + position: relative + a + padding: 15px 18px 15px 16px + font-size: 12px !important + .body-1 + font-size: 16px !important + padding-right: 18px + letter-spacing: 0px !important + a + color: #9c27b0 !important + padding: 0 + text-transform: inherit !important + font-size: 16px !important + font-weight: 300 !important + .v-icon + margin-top: -3px + + &.v-footer--absolute + position: absolute !important + +.theme--light.v-footer + background-color: transparent + .body-1 + color: #3c4858 + .v-icon + color: #3c4858 diff --git a/src/sass/vuetify-material/_map.sass b/src/sass/vuetify-material/_map.sass new file mode 100644 index 0000000..a8a90f5 --- /dev/null +++ b/src/sass/vuetify-material/_map.sass @@ -0,0 +1,3 @@ +.mapouter + position: relative !important + height: 100vh !important diff --git a/src/sass/vuetify-material/_modal.sass b/src/sass/vuetify-material/_modal.sass new file mode 100644 index 0000000..cf81cd8 --- /dev/null +++ b/src/sass/vuetify-material/_modal.sass @@ -0,0 +1,25 @@ +.v-dialog + .v-card + margin: 0 + .v-card__title + font-weight: 300 + font-size: 18px + display: inline-block + text-align: center + width: 100% + padding: 24px 24px 0 + .v-icon + position: absolute + top: 15px + right: 20px + color: #999 + opacity: .5 + font-size: 16px + &:hover + opacity: 1 + +.v-dialog > .v-card > .v-card__text + padding-top: 24px + font-weight: 300 + line-height: 1.75em + letter-spacing: 0 diff --git a/src/sass/vuetify-material/_notification.sass b/src/sass/vuetify-material/_notification.sass new file mode 100644 index 0000000..f687f62 --- /dev/null +++ b/src/sass/vuetify-material/_notification.sass @@ -0,0 +1,12 @@ +.v-alert + padding: 20px 15px + + .v-alert__wrapper + .v-alert__icon + height: 38px + min-width: 38px + .v-alert__content + font-weight: 300 + span + font-size: 12px + font-weight: 500 diff --git a/src/sass/vuetify-material/_pagination.sass b/src/sass/vuetify-material/_pagination.sass new file mode 100644 index 0000000..f84bdd5 --- /dev/null +++ b/src/sass/vuetify-material/_pagination.sass @@ -0,0 +1,5 @@ +.v-pagination + .v-pagination__item, + .v-pagination__navigation + &:focus + outline: none diff --git a/src/sass/vuetify-material/_settings.sass b/src/sass/vuetify-material/_settings.sass new file mode 100644 index 0000000..9bb030e --- /dev/null +++ b/src/sass/vuetify-material/_settings.sass @@ -0,0 +1,36 @@ +#settings + z-index: 200 + +.v-settings + border-radius: 10px + .v-card + margin-top: 0 + .v-card__text + strong + height: 30px + line-height: 25px + font-size: 12px + font-weight: 600 + text-transform: uppercase + text-align: center + .v-avatar + border-color: #fff + border-radius: 50% !important + cursor: pointer + display: inline-block + height: 23px + margin-right: 12px + position: relative + width: 23px + padding: 8px + + .v-settings__item + border-radius: 10px + .v-image + border-radius: 7px !important + + .v-settings__item:not(.v-settings__item--active) + border-color: #fff !important + + .v-divider.secondary + border-color: rgb(221, 221, 221) !important diff --git a/src/sass/vuetify-material/_sidebar.sass b/src/sass/vuetify-material/_sidebar.sass new file mode 100644 index 0000000..0acbd4e --- /dev/null +++ b/src/sass/vuetify-material/_sidebar.sass @@ -0,0 +1,68 @@ +.v-application .v-navigation-drawer .v-navigation-drawer__content .v-list-item .v-list-item__content .v-list-item__title.display-2 + font-size: 18px !important + margin-top: 12px + margin-bottom: 12px + +.v-application .v-navigation-drawer .v-navigation-drawer__content .v-list .v-list-group .v-list-group__header .v-list-item__content .v-list-item__title + font-size: 14px + font-weight: 300 + +.v-application--is-ltr .v-list-item__avatar:first-child + margin-right: 11px + +.v-application .v-navigation-drawer .v-navigation-drawer__content .v-list-item__icon.v-list-group__header__append-icon .v-icon + font-size: 19px + +.v-application--is-ltr #core-navigation-drawer div.v-list-item__icon--text, +.v-application--is-ltr #core-navigation-drawer div.v-list-item__icon:first-child + margin-left: 5px !important + margin-right: 18px + opacity: .8 + +.v-application--is-ltr .v-list-item__action:last-of-type:not(:only-child), +.v-application--is-ltr .v-list-item__avatar:last-of-type:not(:only-child), +.v-application--is-ltr .v-list-item__icon:last-of-type:not(:only-child) + margin-right: 2px + +.v-list--nav.v-list--dense .v-list-item:not(:last-child):not(:only-child), +.v-list--nav .v-list-item--dense:not(:last-child):not(:only-child), +.v-list--rounded.v-list--dense .v-list-item:not(:last-child):not(:only-child), +.v-list--rounded .v-list-item--dense:not(:last-child):not(:only-child) + margin-bottom: 3px + +.v-list-item .v-list-item__title, .v-list-item .v-list-item__subtitle + line-height: 1.2 + font-weight: 300 + font-size: 14px + +.v-list-group__items .v-list-item + font-size: 13px + margin-bottom: 5px !important + .v-list-item__title + font-size: 13px + .v-list-item__icon + margin-top: 14px + +.v-list-group__items .v-list-group--sub-group .v-list-group__header .v-list-item__icon--text + margin-top: 15px !important + + +.v-list-item__icon + margin: 12px 0 + +.theme--dark.v-list-item--active:hover::before, .theme--dark.v-list-item--active::before + opacity: 0 + +.v-navigation-drawer + .v-list-item__content + transition: all 0.3s linear 0s + +.v-list--nav + padding-left: 15px + padding-right: 15px + +.theme--dark.v-navigation-drawer .v-divider + background-color: rgba(181, 181, 181, 0.2) + border-color: rgba(181, 181, 181, 0.1) + width: calc(100% - 30px) + margin-left: 15px diff --git a/src/sass/vuetify-material/_tab.sass b/src/sass/vuetify-material/_tab.sass new file mode 100644 index 0000000..fd08bd2 --- /dev/null +++ b/src/sass/vuetify-material/_tab.sass @@ -0,0 +1,12 @@ +.v-card--wizard + .v-tabs-bar + .v-slide-group__wrapper + overflow: visible + display: -webkit-inline-box + contain: inherit + + .v-slide-group__content + z-index: 2 + + .v-tab:not(:first-child) + margin-left: 5px diff --git a/src/sass/vuetify-material/_table.sass b/src/sass/vuetify-material/_table.sass new file mode 100644 index 0000000..31ca162 --- /dev/null +++ b/src/sass/vuetify-material/_table.sass @@ -0,0 +1,22 @@ +.v-data-table td + font-weight: 300 + padding: 12px 8px + +.v-data-table table thead tr th + font-weight: 300 + font-size: 17px + padding: 0px 8px + +.v-data-table table tbody tr td .v-btn + margin-right: 0px !important + +.v-data-table .v-data-table-header__sort-badge + font-size: 10px + +.v-data-table.theme--dark + tr th + color: #fff !important + +.theme--light + .v-data-table table thead tr th + color: #333 diff --git a/src/sass/vuetify-material/_view.sass b/src/sass/vuetify-material/_view.sass new file mode 100644 index 0000000..9e0dbcb --- /dev/null +++ b/src/sass/vuetify-material/_view.sass @@ -0,0 +1,23 @@ +.v-content__wrap + .container--fluid + padding-left: 30px + padding-right: 30px + +.v-application .headline + font-size: 25px !important + padding-bottom: 0 + +.v-application .black--text + color: #333 !important + +.v-application .small + font-weight: 300 + line-height: 2rem + small + font-weight: 400 + +@media(max-width:960px) + .v-content__wrap + .container--fluid + padding-left: 15px + padding-right: 15px diff --git a/src/store.js b/src/store.js new file mode 100644 index 0000000..60f2af1 --- /dev/null +++ b/src/store.js @@ -0,0 +1,23 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex) + +export default new Vuex.Store({ + state: { + barColor: 'rgba(0, 0, 0, .8), rgba(0, 0, 0, .8)', + barImage: 'https://demos.creative-tim.com/material-dashboard/assets/img/sidebar-1.jpg', + drawer: null, + }, + mutations: { + SET_BAR_IMAGE (state, payload) { + state.barImage = payload + }, + SET_DRAWER (state, payload) { + state.drawer = payload + }, + }, + actions: { + + }, +}) diff --git a/src/views/dashboard/Dashboard.vue b/src/views/dashboard/Dashboard.vue new file mode 100644 index 0000000..582d0dc --- /dev/null +++ b/src/views/dashboard/Dashboard.vue @@ -0,0 +1,601 @@ + + + diff --git a/src/views/dashboard/Index.vue b/src/views/dashboard/Index.vue new file mode 100644 index 0000000..5092f7c --- /dev/null +++ b/src/views/dashboard/Index.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/views/dashboard/Upgrade.vue b/src/views/dashboard/Upgrade.vue new file mode 100644 index 0000000..e21dbcf --- /dev/null +++ b/src/views/dashboard/Upgrade.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/src/views/dashboard/component/Buttons.vue b/src/views/dashboard/component/Buttons.vue new file mode 100644 index 0000000..7f343e1 --- /dev/null +++ b/src/views/dashboard/component/Buttons.vue @@ -0,0 +1,432 @@ + + + diff --git a/src/views/dashboard/component/Grid.vue b/src/views/dashboard/component/Grid.vue new file mode 100644 index 0000000..83e4f6e --- /dev/null +++ b/src/views/dashboard/component/Grid.vue @@ -0,0 +1,300 @@ + + + diff --git a/src/views/dashboard/component/Icons.vue b/src/views/dashboard/component/Icons.vue new file mode 100644 index 0000000..b61361b --- /dev/null +++ b/src/views/dashboard/component/Icons.vue @@ -0,0 +1,301 @@ + + + diff --git a/src/views/dashboard/component/Notifications.vue b/src/views/dashboard/component/Notifications.vue new file mode 100644 index 0000000..f7b4504 --- /dev/null +++ b/src/views/dashboard/component/Notifications.vue @@ -0,0 +1,406 @@ + + + diff --git a/src/views/dashboard/component/Tabs.vue b/src/views/dashboard/component/Tabs.vue new file mode 100644 index 0000000..2d0fb23 --- /dev/null +++ b/src/views/dashboard/component/Tabs.vue @@ -0,0 +1,418 @@ + + + diff --git a/src/views/dashboard/component/Typography.vue b/src/views/dashboard/component/Typography.vue new file mode 100644 index 0000000..4f9bade --- /dev/null +++ b/src/views/dashboard/component/Typography.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/src/views/dashboard/components/core/AppBar.vue b/src/views/dashboard/components/core/AppBar.vue new file mode 100644 index 0000000..ded84be --- /dev/null +++ b/src/views/dashboard/components/core/AppBar.vue @@ -0,0 +1,183 @@ + + + diff --git a/src/views/dashboard/components/core/Drawer.vue b/src/views/dashboard/components/core/Drawer.vue new file mode 100644 index 0000000..38646b1 --- /dev/null +++ b/src/views/dashboard/components/core/Drawer.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/src/views/dashboard/components/core/Footer.vue b/src/views/dashboard/components/core/Footer.vue new file mode 100644 index 0000000..d1121ca --- /dev/null +++ b/src/views/dashboard/components/core/Footer.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/src/views/dashboard/components/core/Settings.vue b/src/views/dashboard/components/core/Settings.vue new file mode 100644 index 0000000..9b0cc5e --- /dev/null +++ b/src/views/dashboard/components/core/Settings.vue @@ -0,0 +1,263 @@ + + + + + diff --git a/src/views/dashboard/components/core/View.vue b/src/views/dashboard/components/core/View.vue new file mode 100644 index 0000000..177f8a6 --- /dev/null +++ b/src/views/dashboard/components/core/View.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/views/dashboard/maps/GoogleMaps.vue b/src/views/dashboard/maps/GoogleMaps.vue new file mode 100644 index 0000000..5b02446 --- /dev/null +++ b/src/views/dashboard/maps/GoogleMaps.vue @@ -0,0 +1,78 @@ +