├── .babelrc ├── .editorconfig ├── .env ├── .eslintrc ├── .gitattributes ├── .github └── workflows │ └── main.yml ├── .gitignore ├── .npmrc ├── CHANGELOG.md ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── LICENSE.md ├── README.md ├── genezio.yaml ├── intelij.webpack.js ├── package.json ├── public ├── apple-icon.png ├── favicon.png ├── img │ ├── anime3.png │ ├── anime6.png │ ├── apple-icon.png │ ├── bg5.jpg │ ├── default-avatar.png │ ├── emilyz.jpg │ ├── favicon.png │ ├── icons │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon-120x120.png │ │ ├── apple-touch-icon-152x152.png │ │ ├── apple-touch-icon-180x180.png │ │ ├── apple-touch-icon-60x60.png │ │ ├── apple-touch-icon-76x76.png │ │ ├── apple-touch-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── msapplication-icon-144x144.png │ │ ├── mstile-150x150.png │ │ └── safari-pinned-tab.svg │ ├── img_3115.jpg │ ├── james.jpg │ └── mike.jpg ├── index.html ├── manifest.json └── robots.txt ├── src ├── App.vue ├── assets │ ├── css │ │ └── nucleo-icons.css │ ├── demo │ │ └── demo.css │ ├── fonts │ │ ├── nucleo.eot │ │ ├── nucleo.ttf │ │ ├── nucleo.woff │ │ └── nucleo.woff2 │ └── sass │ │ ├── black-dashboard.scss │ │ └── black-dashboard │ │ ├── bootstrap │ │ ├── _alert.scss │ │ ├── _badge.scss │ │ ├── _breadcrumb.scss │ │ ├── _button-group.scss │ │ ├── _buttons.scss │ │ ├── _card.scss │ │ ├── _carousel.scss │ │ ├── _close.scss │ │ ├── _code.scss │ │ ├── _custom-forms.scss │ │ ├── _dropdown.scss │ │ ├── _forms.scss │ │ ├── _functions.scss │ │ ├── _grid.scss │ │ ├── _images.scss │ │ ├── _input-group.scss │ │ ├── _jumbotron.scss │ │ ├── _list-group.scss │ │ ├── _media.scss │ │ ├── _mixins.scss │ │ ├── _modal.scss │ │ ├── _nav.scss │ │ ├── _navbar.scss │ │ ├── _pagination.scss │ │ ├── _popover.scss │ │ ├── _print.scss │ │ ├── _progress.scss │ │ ├── _reboot.scss │ │ ├── _root.scss │ │ ├── _tables.scss │ │ ├── _tooltip.scss │ │ ├── _transitions.scss │ │ ├── _type.scss │ │ ├── _utilities.scss │ │ ├── _variables.scss │ │ ├── mixins │ │ │ ├── _alert.scss │ │ │ ├── _background-variant.scss │ │ │ ├── _badge.scss │ │ │ ├── _border-radius.scss │ │ │ ├── _box-shadow.scss │ │ │ ├── _breakpoints.scss │ │ │ ├── _buttons.scss │ │ │ ├── _caret.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _float.scss │ │ │ ├── _forms.scss │ │ │ ├── _gradients.scss │ │ │ ├── _grid-framework.scss │ │ │ ├── _grid.scss │ │ │ ├── _hover.scss │ │ │ ├── _image.scss │ │ │ ├── _list-group.scss │ │ │ ├── _lists.scss │ │ │ ├── _nav-divider.scss │ │ │ ├── _pagination.scss │ │ │ ├── _reset-text.scss │ │ │ ├── _resize.scss │ │ │ ├── _screen-reader.scss │ │ │ ├── _size.scss │ │ │ ├── _table-row.scss │ │ │ ├── _text-emphasis.scss │ │ │ ├── _text-hide.scss │ │ │ ├── _text-truncate.scss │ │ │ ├── _transition.scss │ │ │ └── _visibility.scss │ │ └── utilities │ │ │ ├── _align.scss │ │ │ ├── _background.scss │ │ │ ├── _borders.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _display.scss │ │ │ ├── _embed.scss │ │ │ ├── _flex.scss │ │ │ ├── _float.scss │ │ │ ├── _position.scss │ │ │ ├── _screenreaders.scss │ │ │ ├── _shadows.scss │ │ │ ├── _sizing.scss │ │ │ ├── _spacing.scss │ │ │ ├── _text.scss │ │ │ └── _visibility.scss │ │ ├── custom │ │ ├── _alerts.scss │ │ ├── _buttons.scss │ │ ├── _card.scss │ │ ├── _checkboxes-radio.scss │ │ ├── _dropdown.scss │ │ ├── _fixed-plugin.scss │ │ ├── _footer.scss │ │ ├── _forms.scss │ │ ├── _functions.scss │ │ ├── _images.scss │ │ ├── _input-group.scss │ │ ├── _misc.scss │ │ ├── _mixins.scss │ │ ├── _modal.scss │ │ ├── _navbar.scss │ │ ├── _rtl.scss │ │ ├── _sidebar-and-main-panel.scss │ │ ├── _tables.scss │ │ ├── _type.scss │ │ ├── _utilities.scss │ │ ├── _variables.scss │ │ ├── _white-content.scss │ │ ├── cards │ │ │ ├── _card-chart.scss │ │ │ ├── _card-map.scss │ │ │ ├── _card-plain.scss │ │ │ ├── _card-task.scss │ │ │ └── _card-user.scss │ │ ├── mixins │ │ │ ├── _alert.scss │ │ │ ├── _background-variant.scss │ │ │ ├── _badges.scss │ │ │ ├── _buttons.scss │ │ │ ├── _dropdown.scss │ │ │ ├── _forms.scss │ │ │ ├── _icon.scss │ │ │ ├── _inputs.scss │ │ │ ├── _modals.scss │ │ │ ├── _page-header.scss │ │ │ ├── _popovers.scss │ │ │ ├── _vendor-prefixes.scss │ │ │ ├── _wizard.scss │ │ │ └── opacity.scss │ │ ├── utilities │ │ │ ├── _backgrounds.scss │ │ │ ├── _floating.scss │ │ │ ├── _helper.scss │ │ │ ├── _position.scss │ │ │ ├── _shadows.scss │ │ │ ├── _sizing.scss │ │ │ ├── _spacing.scss │ │ │ ├── _text.scss │ │ │ └── _transform.scss │ │ └── vendor │ │ │ ├── _plugin-animate-bootstrap-notify.scss │ │ │ └── _plugin-perfect-scrollbar.scss │ │ └── plugins │ │ └── _plugin-perfect-scrollbar.scss ├── components │ ├── BaseAlert.vue │ ├── BaseButton.vue │ ├── BaseCheckbox.vue │ ├── BaseDropdown.vue │ ├── BaseNav.vue │ ├── BaseRadio.vue │ ├── BaseTable.vue │ ├── Cards │ │ ├── Card.vue │ │ └── StatsCard.vue │ ├── Charts │ │ ├── BarChart.js │ │ ├── LineChart.js │ │ ├── config.js │ │ └── utils.js │ ├── CloseButton.vue │ ├── Inputs │ │ └── BaseInput.vue │ ├── Modal.vue │ ├── NavbarToggleButton.vue │ ├── NotificationPlugin │ │ ├── Notification.vue │ │ ├── Notifications.vue │ │ └── index.js │ ├── SidebarPlugin │ │ ├── SideBar.vue │ │ ├── SidebarLink.vue │ │ └── index.js │ └── index.js ├── config.js ├── directives │ └── click-ouside.js ├── i18n.js ├── layout │ ├── dashboard │ │ ├── Content.vue │ │ ├── ContentFooter.vue │ │ ├── DashboardLayout.vue │ │ ├── MobileMenu.vue │ │ └── TopNavbar.vue │ └── starter │ │ ├── Content.vue │ │ ├── MobileMenu.vue │ │ ├── SampleFooter.vue │ │ ├── SampleLayout.vue │ │ ├── SampleNavbar.vue │ │ └── SamplePage.vue ├── locales │ ├── ar.json │ └── en.json ├── main.js ├── pages │ ├── Dashboard.vue │ ├── Dashboard │ │ ├── TaskList.vue │ │ └── UserTable.vue │ ├── Icons.vue │ ├── Maps.vue │ ├── NotFoundPage.vue │ ├── Notifications.vue │ ├── Notifications │ │ └── NotificationTemplate.vue │ ├── Profile.vue │ ├── Profile │ │ ├── EditProfileForm.vue │ │ └── UserCard.vue │ ├── TableList.vue │ └── Typography.vue ├── plugins │ ├── RTLPlugin.js │ ├── blackDashboard.js │ ├── globalComponents.js │ └── globalDirectives.js ├── registerServiceWorker.js └── router │ ├── index.js │ ├── routes.js │ └── starterRouter.js └── vue.config.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [["@vue/app"]] 3 | } 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | VUE_APP_I18N_LOCALE=en 2 | VUE_APP_I18N_FALLBACK_LOCALE=en 3 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "extends": ["plugin:vue/essential"], 4 | "env": { 5 | "amd": true 6 | }, 7 | "rules": { 8 | "vue/multi-word-component-names": "off" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | *.scss linguist-language=Vue 3 | *.css linguist-language=Vue 4 | 5 | # Standard to msysgit 6 | *.doc diff=astextplain 7 | *.DOC diff=astextplain 8 | *.docx diff=astextplain 9 | *.DOCX diff=astextplain 10 | *.dot diff=astextplain 11 | *.DOT diff=astextplain 12 | *.pdf diff=astextplain 13 | *.PDF diff=astextplain 14 | *.rtf diff=astextplain 15 | *.RTF diff=astextplain 16 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Autocloser 2 | on: [issues] 3 | jobs: 4 | autoclose: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - name: Issue auto-closer 8 | uses: roots/issue-closer-action@v1.1 9 | with: 10 | repo-token: ${{ secrets.GITHUB_TOKEN }} 11 | issue-close-message: "@${issue.user.login} this issue was automatically closed because it did not follow the bellow rules:\n\n
\n\n\n\nIMPORTANT: Please use the following link to create a new issue:\n\nhttps://www.creative-tim.com/new-issue/vue-black-dashboard\n\n**If your issue was not created using the app above, it will be closed immediately.**\n\n\n\nLove Creative Tim? Do you need Angular, React, Vuejs or HTML? You can visit:\n👉 https://www.creative-tim.com/bundles\n👉 https://www.creative-tim.com\n\n\n\n\n" 12 | issue-pattern: (\#\#\# Version([\S\s.*]*?)\#\#\# Reproduction link([\S\s.*]*?)\#\#\# Operating System([\S\s.*]*?)\#\#\# Device([\S\s.*]*?)\#\#\# Browser & Version([\S\s.*]*?)\#\#\# Steps to reproduce([\S\s.*]*?)\#\#\# What is expected([\S\s.*]*?)\#\#\# What is actually happening([\S\s.*]*?)---([\S\s.*]*?)\#\#\# Solution([\S\s.*]*?)\#\#\# Additional comments([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>)|(\#\#\# What is your enhancement([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>) 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | package-lock.json 4 | yarn.lock 5 | npm-debug.log 6 | .idea/ 7 | dist/ 8 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | legacy-peer-deps=true 2 | auto-install-peers=true 3 | strict-peer-dependencies=false -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## [1.1.3] 2024-02-25 4 | 5 | - Update dependencies & devDependencies 6 | 7 | ## [1.1.2] 2022-01-10 8 | 9 | - Update dependencies and devDependencies 10 | - Migration from `node-sass` to `sass` 11 | 12 | ## [1.1.1] 2020-06-26 13 | 14 | - Package updates 15 | 16 | ## [1.1.0] 2019-02-12 17 | 18 | - Package updates 19 | - Add pwa support 20 | - Improve accessibility 21 | - Cleanups & other minor UI improvements 22 | - Improve bundle size 23 | 24 | ## [1.0.1] 2018-12-03 25 | 26 | ### Minor updates 27 | 28 | - Upgrade packages 29 | - Change sidebar gradient colors (more pleasant) 30 | - Make links "bolder" in the sidebar so they are more readable 31 | - Improve bundle size, add vue-router prefetch 32 | - Add pwa support 33 | 34 | ## [1.0.0] 2018-10-14 35 | 36 | ### Stable Original Release 37 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | - Fork the repository 2 | - Clone it on your PC 3 | - `npm install` or `yarn install` 4 | - Make changes, commit open PR 5 | 6 | ### Notes 7 | 8 | - Please don't use jQuery or jQuery based plugins since there are many pure Vue alternatives 9 | 10 | This project uses [vue-cli 3](https://github.com/vuejs/vue-cli). 11 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 8 | 9 | 14 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Creative Tim (https://www.creative-tim.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /genezio.yaml: -------------------------------------------------------------------------------- 1 | name: vue-black-dashboard 2 | region: us-east-1 3 | frontend: 4 | # Specifies the path of your code. 5 | path: . 6 | # Specifies the folder where the build is located. 7 | # This is the folder that will be deployed. 8 | publish: dist 9 | # Scripts will run in the specified `path` folder. 10 | scripts: 11 | # The command to build your frontend project. This is custom to your project. 12 | # It must to populate the specified `publish` folder with a `index.html` file. 13 | deploy: 14 | - npm install --legacy-peer-deps 15 | - npm run build 16 | yamlVersion: 2 17 | -------------------------------------------------------------------------------- /intelij.webpack.js: -------------------------------------------------------------------------------- 1 | // This configuration file is not used anywhere in the code, it's a hack to handle InteliJ relative path imports 2 | // Keep in sync with actual webpack aliases 3 | 4 | const path = require("path"); 5 | 6 | module.exports = { 7 | resolve: { 8 | alias: { 9 | "@": path.resolve(__dirname, "src"), 10 | }, 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-black-dashboard", 3 | "version": "1.1.3", 4 | "private": true, 5 | "description": "A sample admin dashboard based on black dashboard UI template", 6 | "author": "cristian.jora