├── .gitignore
├── LICENSE
├── README.md
├── babel.config.js
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
├── favicon.ico
└── index.html
├── src
├── App.vue
├── assets
│ ├── css
│ │ └── tailwind.css
│ └── logo.png
├── components
│ ├── Dashboard.vue
│ ├── Footer.vue
│ ├── Navbar.vue
│ └── Sidebar.vue
├── main.js
├── pages
│ └── Home.vue
└── store
│ └── index.js
└── tailwind.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 |
14 | # Editor directories and files
15 | .idea
16 | .vscode
17 | *.suo
18 | *.ntvs*
19 | *.njsproj
20 | *.sln
21 | *.sw?
22 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Joe
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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue-tailwind-admin
2 | A simple admin template built using [TailwindCSS](https://tailwindcss.com) & [Vue.js](https://vuejs.org). This project is also running [Vuex](https://vuex.vuejs.org) in order to control the sidebar state throughout components.
3 |
4 | ## Live Demo
5 | [https://angry-mahavira-9b32ec.netlify.com/](https://angry-mahavira-9b32ec.netlify.com/)
6 |
7 | ## Screenshot
8 | 
9 |
10 | ## Project setup
11 | ```
12 | npm install
13 | ```
14 |
15 | ### Compiles and hot-reloads for development
16 | ```
17 | npm run serve
18 | ```
19 |
20 | ### Compiles and minifies for production
21 | ```
22 | npm run build
23 | ```
24 |
25 | ### Lints and fixes files
26 | ```
27 | npm run lint
28 | ```
29 |
30 | ### Customize configuration
31 | See [Configuration Reference](https://cli.vuejs.org/config/).
32 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-tailwind-admin",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "chart.js": "^2.9.4",
12 | "core-js": "^3.6.4",
13 | "vue": "^2.6.11",
14 | "vue-chartjs": "^3.5.0",
15 | "vue-router": "^3.1.5",
16 | "vuex": "^3.1.2"
17 | },
18 | "devDependencies": {
19 | "@vue/cli-plugin-babel": "^4.2.0",
20 | "@vue/cli-plugin-eslint": "^4.2.0",
21 | "@vue/cli-service": "^4.2.0",
22 | "babel-eslint": "^10.0.3",
23 | "eslint": "^6.7.2",
24 | "eslint-plugin-vue": "^6.1.2",
25 | "tailwindcss": "^1.2.0",
26 | "vue-template-compiler": "^2.6.11"
27 | },
28 | "eslintConfig": {
29 | "root": true,
30 | "env": {
31 | "node": true
32 | },
33 | "extends": [
34 | "plugin:vue/essential",
35 | "eslint:recommended"
36 | ],
37 | "parserOptions": {
38 | "parser": "babel-eslint"
39 | },
40 | "rules": {}
41 | },
42 | "browserslist": [
43 | "> 1%",
44 | "last 2 versions"
45 | ]
46 | }
47 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | "plugins": [
3 | require('tailwindcss')('tailwind.js'),
4 | require('autoprefixer')()
5 | ]
6 | }
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Murked/vue-tailwind-admin/c7426988acc9a8475a2c6b7cf00132a788ef2ba3/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
--------------------------------------------------------------------------------
/src/assets/css/tailwind.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700');
2 |
3 | @tailwind base;
4 | @tailwind components;
5 | @tailwind utilities;
6 |
7 | body {
8 | font-family: Poppins, sans-serif;
9 | }
10 |
11 | body::-webkit-scrollbar {
12 | display: none;
13 | }
14 |
15 | .overlay {
16 | position: relative;
17 | }
18 |
19 | /* 1024 -1 so it doesnt show when it hits 1024px */
20 | @media only screen and (max-width: 1023px) {
21 | .overlay:after {
22 | content: " ";
23 | z-index: 29;
24 | display: block;
25 | height: 100%;
26 | top: 80px;
27 | left: 0;
28 | right: 0;
29 | background: rgba(0, 0, 0, 0.5);
30 | pointer-events: none;
31 | position: fixed;
32 | }
33 | }
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Murked/vue-tailwind-admin/c7426988acc9a8475a2c6b7cf00132a788ef2ba3/src/assets/logo.png
--------------------------------------------------------------------------------
/src/components/Dashboard.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
41 |
--------------------------------------------------------------------------------
/src/components/Footer.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
© Copyright 2020
4 |
5 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/components/Navbar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
14 |
15 |
16 |
17 |
18 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |

30 |
31 |
32 |
33 |
34 |
35 |
36 |
Account
37 |
Settings
38 |
Logout
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/src/components/Sidebar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
11 |
MAIN
12 |
13 |
16 |
Dashboard
17 |
18 |
19 |
22 |
Analytics
23 |
24 |
25 |
28 |
Inventory
29 |
30 |
31 |
34 |
Enquiries
35 |
36 |
37 |
40 |
Calender
41 |
42 |
43 |
44 |
45 |
PRODUCTS
46 |
47 |
50 |
Add Product
51 |
52 |
53 |
56 |
View Products
57 |
58 |
59 |
60 |
61 |
MISC
62 |
63 |
66 |
Notices
67 |
68 |
69 |
72 |
Controls
73 |
74 |
75 |
78 |
Settings
79 |
80 |
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | import Router from 'vue-router'
4 |
5 | import Dashboard from '@/components/Dashboard'
6 | import DashboardHome from '@/pages/Home'
7 |
8 | import store from './store'
9 |
10 | import '@/assets/css/tailwind.css'
11 |
12 |
13 | Vue.config.productionTip = false
14 |
15 | Vue.use(Router)
16 |
17 | const routes = [
18 | { path: '/', redirect: { name: 'DashboardHome' } },
19 | { path: '/dashboard', component: Dashboard, children: [
20 | { path: '/', redirect: { name: 'DashboardHome' } },
21 | { path: 'home', name: 'DashboardHome', component: DashboardHome }
22 | ]
23 | }
24 | ]
25 |
26 | const router = new Router({
27 | mode: 'history',
28 | routes
29 | })
30 |
31 | new Vue({
32 | render: h => h(App),
33 | router,
34 | store
35 | }).$mount('#app')
36 |
37 |
--------------------------------------------------------------------------------
/src/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
16 |
17 |
18 |
19 |
Good afternoon, Joe!
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
30 |
31 |
32 |
237
33 |
Products Sold
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
44 |
45 |
46 |
177
47 |
Product Reviews
48 |
49 |
50 |
51 |
52 |
53 |
54 |
57 |
58 |
59 |
31
60 |
New Enquiries
61 |
62 |
63 |
64 |
65 |
66 |
67 |
70 |
71 |
72 |
1,653
73 |
Product Views
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
Recent Sales
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
Recent Reviews
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
Recent Transactions
101 |
102 |
103 |
104 |
Trent Murphy
105 |
Product 1
106 |
107 |
$25.00
108 |
109 |
110 |
111 |
112 |
Joseph Brent
113 |
Product 34
114 |
115 |
$74.99
116 |
117 |
118 |
119 |
120 |
Jacob Bator
121 |
Product 23
122 |
123 |
$14.95
124 |
125 |
126 |
127 |
128 |
Alex Mason
129 |
Product 66
130 |
131 |
$44.99
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 |
4 | Vue.use(Vuex)
5 |
6 | export default new Vuex.Store({
7 | state: {
8 | sideBarOpen: false
9 | },
10 | getters: {
11 | sideBarOpen: state => {
12 | return state.sideBarOpen
13 | }
14 | },
15 | mutations: {
16 | toggleSidebar (state) {
17 | state.sideBarOpen = !state.sideBarOpen
18 | }
19 | },
20 | actions: {
21 | toggleSidebar(context) {
22 | context.commit('toggleSidebar')
23 | }
24 | }
25 | })
26 |
--------------------------------------------------------------------------------
/tailwind.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | theme: {
3 | extend: {}
4 | },
5 | variants: {},
6 | plugins: []
7 | }
8 |
--------------------------------------------------------------------------------