diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index dc70b364..00000000 --- a/.eslintignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules/* -/dist/** -.eslintrc.js -vite.config.mjs diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index fc9e572a..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: ["plugin:vue/vue3-essential", "eslint:recommended"], - rules: { - "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", - "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", - }, -}; diff --git a/LICENSE b/LICENSE index eee6fcc1..433069ca 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2024 creativeLabs Łukasz Holeczek. +Copyright (c) 2025 creativeLabs Łukasz Holeczek. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 0307d814..5cc0eda5 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of * πŸ’ͺ [CoreUI PRO Angular Admin Template](https://coreui.io/product/angular-dashboard-template/) * πŸ’ͺ [CoreUI PRO Bootstrap Admin Template](https://coreui.io/product/bootstrap-dashboard-template/) +* πŸ’ͺ [CoreUI PRO Next.js Admin Template](https://coreui.io/product/next-js-dashboard-template/) * πŸ’ͺ [CoreUI PRO React Admin Template](https://coreui.io/product/react-dashboard-template/) * πŸ’ͺ [CoreUI PRO Vue Admin Template](https://coreui.io/product/vue-dashboard-template/) @@ -56,9 +57,9 @@ CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of | --- | --- | | [![CoreUI PRO Vue Admin Template](https://coreui.io/images/templates/coreui_pro_default_light_dark.webp)](https://coreui.io/product/vue-dashboard-template/?theme=default) | [![CoreUI PRO Vue Admin Template](https://coreui.io/images/templates/coreui_pro_light_light_dark.webp)](https://coreui.io/product/vue-dashboard-template/?theme=light)| -| Default Theme v3 | Light Theme v3 | +| Modern Theme | Bright Theme | | --- | --- | -| [![CoreUI PRO Vue Admin Template](https://coreui.io/images/templates/coreui_pro_default_v3_light_dark.webp)](https://coreui.io/product/vue-dashboard-template/?theme=default-v3) | [![CoreUI PRO Vue Admin Template](https://coreui.io/images/templates/coreui_pro_light_v3_light_dark.webp)](https://coreui.io/product/vue-dashboard-template/?theme=light)| +| [![CoreUI PRO Vue Admin Template](https://coreui.io/images/templates/coreui_pro_default_v3_light_dark.webp)](https://coreui.io/product/vue-dashboard-template/?theme=modern) | [![CoreUI PRO Vue Admin Template](https://coreui.io/images/templates/coreui_pro_light_v3_light_dark.webp)](https://coreui.io/product/vue-dashboard-template/?theme=bright)| ## Quick Start @@ -95,7 +96,7 @@ Navigate to [http://localhost:3000](http://localhost:3000). The app will automat #### Build -Run `build` to build the project. The build artifacts will be stored in the `build/` directory. +Run `build` to build the project. The build artifacts will be stored in the `dist/` directory. ```bash # build for production with minification @@ -122,7 +123,7 @@ coreui-free-vue-admin-template β”‚ β”œβ”€β”€ layouts/ # layout containers β”‚ β”œβ”€β”€ scss/ # scss styles β”‚ β”œβ”€β”€ router # routes config -β”‚ β”œβ”€β”€ store # template state example +β”‚ β”œβ”€β”€ stores/ # template state example β”‚ β”œβ”€β”€ views/ # application views β”‚ β”œβ”€β”€ _nav.js # sidebar navigation config β”‚ β”œβ”€β”€ App.vue @@ -130,7 +131,7 @@ coreui-free-vue-admin-template β”‚ └── main.js β”œβ”€β”€ index.html # html template β”œβ”€β”€ package.json -└── vite.config.js +└── vite.config.mjs ``` ## Documentation @@ -173,6 +174,6 @@ CoreUI is an MIT-licensed open source project and is completely free to use. How ## Copyright and License -copyright 2024 creativeLabs Łukasz Holeczek. +copyright 2025 creativeLabs Łukasz Holeczek. Code released under [the MIT license](https://github.com/coreui/coreui-free-react-admin-template/blob/main/LICENSE). diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..5bc1dd17 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,23 @@ +import eslintPluginVue from 'eslint-plugin-vue' +import globals from 'globals' + +export default [ + { ignores: ['dist/', 'eslint.config.mjs'] }, + ...eslintPluginVue.configs['flat/essential'], + { + files: ['src/**/*.{js,vue}'], + languageOptions: { + globals: { + ...globals.browser, + ...globals.node, + }, + ecmaVersion: 'latest', + sourceType: 'module', + }, + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'vue/multi-word-component-names': 'off', + }, + }, +] diff --git a/index.html b/index.html index 1c4aae12..2d8d8ef1 100644 --- a/index.html +++ b/index.html @@ -1,9 +1,9 @@ diff --git a/package.json b/package.json index 2fe17aea..8870c2b7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@coreui/coreui-free-vue-admin-template", - "version": "5.0.0", + "version": "5.3.0", "description": "CoreUI Free Vue Admin Template", "bugs": { "url": "https://github.com/coreui/coreui-free-vue-admin-template/issues" @@ -14,31 +14,32 @@ "scripts": { "dev": "vite --force", "build": "vite build", - "lint": "eslint \"src/**/*.{js,vue}\"", + "lint": "eslint", "preview": "vite preview" }, "dependencies": { - "@coreui/chartjs": "^4.0.0", - "@coreui/coreui": "^5.0.0", + "@coreui/chartjs": "^4.1.0", + "@coreui/coreui": "^5.3.1", "@coreui/icons": "^3.0.1", - "@coreui/icons-vue": "2.0.0", + "@coreui/icons-vue": "2.2.0", "@coreui/utils": "^2.0.2", - "@coreui/vue": "^5.0.0", + "@coreui/vue": "^5.4.1", "@coreui/vue-chartjs": "^3.0.0", "@popperjs/core": "^2.11.8", - "chart.js": "^4.4.2", - "simplebar-vue": "^2.3.3", - "vue": "^3.4.21", - "vue-router": "^4.3.0", - "vuex": "^4.1.0" + "chart.js": "^4.4.7", + "pinia": "^3.0.1", + "simplebar-vue": "^2.4.0", + "vue": "^3.5.13", + "vue-router": "^4.5.0" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.0.4", - "autoprefixer": "^10.4.19", - "eslint": "^8.57.0", - "eslint-plugin-vue": "^9.24.0", - "postcss": "^8.4.38", - "sass": "^1.72.0", - "vite": "^5.2.6" + "@vitejs/plugin-vue": "^5.2.1", + "autoprefixer": "^10.4.20", + "eslint": "^9.20.1", + "eslint-plugin-vue": "^9.32.0", + "globals": "^15.15.0", + "postcss": "^8.5.2", + "sass": "^1.85.0", + "vite": "^6.1.0" } } diff --git a/src/App.vue b/src/App.vue index 177546e0..a095fda4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,41 +1,42 @@ - - + + diff --git a/src/_nav.js b/src/_nav.js index 6e7d0eb5..35d9d081 100644 --- a/src/_nav.js +++ b/src/_nav.js @@ -50,6 +50,16 @@ export default [ name: 'Cards', to: '/base/cards', }, + { + component: 'CNavItem', + name: 'Calendar', + href: 'https://coreui.io/vue/docs/components/calendar.html', + external: true, + badge: { + color: 'danger', + text: 'PRO', + }, + }, { component: 'CNavItem', name: 'Carousels', @@ -90,6 +100,25 @@ export default [ name: 'Progress', to: '/base/progress', }, + { + component: 'CNavItem', + name: 'Smart Pagination', + href: 'https://coreui.io/vue/docs/components/smart-pagination.html', + badge: { + color: 'danger', + text: 'PRO', + }, + }, + { + component: 'CNavItem', + name: 'Smart Table', + external: true, + href: 'https://coreui.io/vue/docs/components/smart-table.html', + badge: { + color: 'danger', + text: 'PRO', + }, + }, { component: 'CNavItem', name: 'Spinners', @@ -100,11 +129,26 @@ export default [ name: 'Tables', to: '/base/tables', }, + { + component: 'CNavItem', + name: 'Tabs', + to: '/base/tabs', + }, { component: 'CNavItem', name: 'Tooltips', to: '/base/tooltips', }, + { + component: 'CNavItem', + name: 'Virtual Scroller', + href: 'https://coreui.io/vue/docs/components/virtual-scroller.html', + external: true, + badge: { + color: 'danger', + text: 'PRO', + }, + } ], }, { @@ -123,6 +167,16 @@ export default [ name: 'Button Groups', to: '/buttons/button-groups', }, + { + component: 'CNavItem', + name: 'Loading Button', + href: 'https://coreui.io/vue/docs/components/loading-button.html', + external: true, + badge: { + color: 'danger', + text: 'PRO', + }, + }, { component: 'CNavItem', name: 'Dropdowns', @@ -156,6 +210,16 @@ export default [ name: 'Range', to: '/forms/range', }, + { + component: 'CNavItem', + name: 'Range Slider', + href: 'https://coreui.io/vue/docs/forms/range-slider.html', + external: true, + badge: { + color: 'danger', + text: 'PRO', + }, + }, { component: 'CNavItem', name: 'Input Group', @@ -166,6 +230,45 @@ export default [ name: 'Floating Labels', to: '/forms/floating-labels', }, + { + component: 'CNavItem', + name: 'Date Picker', + href: 'https://coreui.io/vue/docs/forms/date-picker.html', + external: true, + badge: { + color: 'danger', + text: 'PRO', + }, + }, + { + component: 'CNavItem', + name: 'Date Range Picker', + href: 'https://coreui.io/vue/docs/forms/date-range-picker.html', + badge: { + color: 'danger', + text: 'PRO', + }, + }, + { + component: 'CNavItem', + name: 'Rating', + href: 'https://coreui.io/vue/docs/forms/rating.html', + external: true, + badge: { + color: 'danger', + text: 'PRO', + }, + }, + { + component: 'CNavItem', + name: 'Time Picker', + href: 'https://coreui.io/vue/docs/forms/time-picker.html', + external: true, + badge: { + color: 'danger', + text: 'PRO', + }, + }, { component: 'CNavItem', name: 'Layout', @@ -282,21 +385,4 @@ export default [ }, ], }, - - // { - // component: 'CNavItem', - // name: 'Download CoreUI', - // href: 'http://coreui.io/vue/', - // icon: { name: 'cil-cloud-download', class: 'text-white' }, - // _class: 'bg-success text-white', - // target: '_blank' - // }, - // { - // component: 'CNavItem', - // name: 'Try CoreUI PRO', - // href: 'http://coreui.io/pro/vue/', - // icon: { name: 'cil-layers', class: 'text-white' }, - // _class: 'bg-danger text-white', - // target: '_blank' - // } ] diff --git a/src/assets/icons/index.js b/src/assets/icons/index.js index 55c6ddf1..cc20da72 100644 --- a/src/assets/icons/index.js +++ b/src/assets/icons/index.js @@ -49,6 +49,7 @@ import { cilEnvelopeClosed, cilEnvelopeOpen, cilEuro, + cilExternalLink, cilGlobeAlt, cilGrid, cilFile, @@ -107,6 +108,7 @@ export const iconsSet = Object.assign( cilEnvelopeClosed, cilEnvelopeOpen, cilEuro, + cilExternalLink, cilGlobeAlt, cilGrid, cilFile, diff --git a/src/assets/images/components.webp b/src/assets/images/components.webp new file mode 100644 index 00000000..dfdee46b Binary files /dev/null and b/src/assets/images/components.webp differ diff --git a/src/assets/images/icons.webp b/src/assets/images/icons.webp new file mode 100644 index 00000000..b5ca82d0 Binary files /dev/null and b/src/assets/images/icons.webp differ diff --git a/src/components/AppBreadcrumb.vue b/src/components/AppBreadcrumb.vue index 49ddfc73..be83cad9 100644 --- a/src/components/AppBreadcrumb.vue +++ b/src/components/AppBreadcrumb.vue @@ -1,3 +1,28 @@ + + - - + \ No newline at end of file diff --git a/src/components/AppFooter.vue b/src/components/AppFooter.vue index 391618c4..b62df395 100644 --- a/src/components/AppFooter.vue +++ b/src/components/AppFooter.vue @@ -12,9 +12,3 @@ - - diff --git a/src/components/AppHeader.vue b/src/components/AppHeader.vue index 043a1ca7..fda96a89 100644 --- a/src/components/AppHeader.vue +++ b/src/components/AppHeader.vue @@ -1,7 +1,30 @@ + + - - diff --git a/src/components/AppHeaderDropdownAccnt.vue b/src/components/AppHeaderDropdownAccnt.vue index f6166fc7..d51d1fe0 100644 --- a/src/components/AppHeaderDropdownAccnt.vue +++ b/src/components/AppHeaderDropdownAccnt.vue @@ -1,3 +1,9 @@ + + - - diff --git a/src/components/AppSidebar.vue b/src/components/AppSidebar.vue index e4d53528..d3ab2f33 100644 --- a/src/components/AppSidebar.vue +++ b/src/components/AppSidebar.vue @@ -1,17 +1,22 @@ + + - - diff --git a/src/components/AppSidebarNav.js b/src/components/AppSidebarNav.js index 11092c7d..1006a9c3 100644 --- a/src/components/AppSidebarNav.js +++ b/src/components/AppSidebarNav.js @@ -1,6 +1,7 @@ import { defineComponent, h, onMounted, ref, resolveComponent } from 'vue' import { RouterLink, useRoute } from 'vue-router' +import { cilExternalLink } from '@coreui/icons' import { CBadge, CSidebarNav, CNavItem, CNavGroup, CNavTitle } from '@coreui/vue' import nav from '@/_nav.js' @@ -78,6 +79,45 @@ const AppSidebarNav = defineComponent({ ) } + if (item.href) { + return h( + resolveComponent(item.component), + { + href: item.href, + target: '_blank', + rel: 'noopener noreferrer', + }, + { + default: () => [ + item.icon + ? h(resolveComponent('CIcon'), { + customClassName: 'nav-icon', + name: item.icon, + }) + : h('span', { class: 'nav-icon' }, h('span', { class: 'nav-icon-bullet' })), + item.name, + item.external && h(resolveComponent('CIcon'), { + class: 'ms-2', + name: 'cil-external-link', + size: 'sm' + }), + item.badge && + h( + CBadge, + { + class: 'ms-auto', + color: item.badge.color, + size: 'sm', + }, + { + default: () => item.badge.text, + }, + ), + ], + }, + ) + } + return item.to ? h( RouterLink, @@ -110,6 +150,7 @@ const AppSidebarNav = defineComponent({ { class: 'ms-auto', color: item.badge.color, + size: 'sm', }, { default: () => item.badge.text, @@ -143,4 +184,5 @@ const AppSidebarNav = defineComponent({ ) }, }) + export { AppSidebarNav } diff --git a/src/components/DocsComponents.vue b/src/components/DocsComponents.vue new file mode 100644 index 00000000..7ebc2351 --- /dev/null +++ b/src/components/DocsComponents.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/components/DocsExample.vue b/src/components/DocsExample.vue index 5ec26d21..31d46bf0 100644 --- a/src/components/DocsExample.vue +++ b/src/components/DocsExample.vue @@ -1,3 +1,13 @@ + + - - diff --git a/src/components/DocsIcons.vue b/src/components/DocsIcons.vue new file mode 100644 index 00000000..ffe0e64d --- /dev/null +++ b/src/components/DocsIcons.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/layouts/DefaultLayout.vue b/src/layouts/DefaultLayout.vue index 83d249ac..4779d05a 100644 --- a/src/layouts/DefaultLayout.vue +++ b/src/layouts/DefaultLayout.vue @@ -1,3 +1,10 @@ + + - diff --git a/src/main.js b/src/main.js index 5afc2d2d..64a416a6 100644 --- a/src/main.js +++ b/src/main.js @@ -1,19 +1,24 @@ import { createApp } from 'vue' +import { createPinia } from 'pinia' + import App from './App.vue' import router from './router' -import store from './store' import CoreuiVue from '@coreui/vue' import CIcon from '@coreui/icons-vue' import { iconsSet as icons } from '@/assets/icons' +import DocsComponents from '@/components/DocsComponents' import DocsExample from '@/components/DocsExample' +import DocsIcons from '@/components/DocsIcons' const app = createApp(App) -app.use(store) +app.use(createPinia()) app.use(router) app.use(CoreuiVue) app.provide('icons', icons) app.component('CIcon', CIcon) +app.component('DocsComponents', DocsComponents) app.component('DocsExample', DocsExample) +app.component('DocsIcons', DocsIcons) app.mount('#app') diff --git a/src/router/index.js b/src/router/index.js index f70246f6..342b69aa 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -111,6 +111,11 @@ const routes = [ name: 'Tables', component: () => import('@/views/base/Tables.vue'), }, + { + path: '/base/tabs', + name: 'Tabs', + component: () => import('@/views/base/Tabs.vue'), + }, { path: '/base/tooltips', name: 'Tooltips', @@ -130,7 +135,7 @@ const routes = [ children: [ { path: '/buttons/standard-buttons', - name: 'Buttons', + name: 'Button Component', component: () => import('@/views/buttons/Buttons.vue'), }, { @@ -303,7 +308,7 @@ const routes = [ ] const router = createRouter({ - history: createWebHashHistory(process.env.BASE_URL), + history: createWebHashHistory(import.meta.env.BASE_URL), routes, scrollBehavior() { // always scroll to top diff --git a/src/store/index.js b/src/store/index.js deleted file mode 100644 index 1ca85549..00000000 --- a/src/store/index.js +++ /dev/null @@ -1,22 +0,0 @@ -import { createStore } from 'vuex' - -export default createStore({ - state: { - sidebarVisible: '', - sidebarUnfoldable: false, - theme: 'light', - }, - mutations: { - toggleSidebar(state) { - state.sidebarVisible = !state.sidebarVisible - }, - toggleUnfoldable(state) { - state.sidebarUnfoldable = !state.sidebarUnfoldable - }, - updateSidebarVisible(state, payload) { - state.sidebarVisible = payload.value - }, - }, - actions: {}, - modules: {}, -}) diff --git a/src/stores/sidebar.js b/src/stores/sidebar.js new file mode 100644 index 00000000..28c9a044 --- /dev/null +++ b/src/stores/sidebar.js @@ -0,0 +1,17 @@ +import { ref } from 'vue' +import { defineStore } from 'pinia' + +export const useSidebarStore = defineStore('sidebar', () => { + const visible = ref(undefined) + const unfoldable = ref(false) + + const toggleVisible = (value) => { + visible.value = value !== undefined ? value : !visible.value + } + + const toggleUnfoldable = () => { + unfoldable.value = !unfoldable.value + } + + return { visible, unfoldable, toggleVisible, toggleUnfoldable } +}) diff --git a/src/stores/theme.js b/src/stores/theme.js new file mode 100644 index 00000000..7b1a0fbc --- /dev/null +++ b/src/stores/theme.js @@ -0,0 +1,12 @@ +import { ref } from 'vue' +import { defineStore } from 'pinia' + +export const useThemeStore = defineStore('theme', () => { + const theme = ref('light') + + const toggleTheme = (_theme) => { + theme.value = _theme + } + + return { theme, toggleTheme } +}) diff --git a/src/styles/_custom.scss b/src/styles/_custom.scss deleted file mode 100644 index 15d367af..00000000 --- a/src/styles/_custom.scss +++ /dev/null @@ -1 +0,0 @@ -// Here you can add other styles diff --git a/src/styles/_theme.scss b/src/styles/_theme.scss deleted file mode 100644 index 49e1c79e..00000000 --- a/src/styles/_theme.scss +++ /dev/null @@ -1,64 +0,0 @@ -body { - background-color: var(--cui-tertiary-bg); -} - -.wrapper { - width: 100%; - @include ltr-rtl("padding-left", var(--cui-sidebar-occupy-start, 0)); - @include ltr-rtl("padding-right", var(--cui-sidebar-occupy-end, 0)); - will-change: auto; - @include transition(padding .15s); -} - -.header > .container-fluid, -.sidebar-header { - min-height: calc(4rem + 1px); // stylelint-disable-line function-disallowed-list -} - -.sidebar-brand-full { - margin-left: 3px; -} - -.sidebar-header { - .nav-underline-border { - --cui-nav-underline-border-link-padding-x: 1rem; - --cui-nav-underline-border-gap: 0; - } - - .nav-link { - display: flex; - align-items: center; - min-height: calc(4rem + 1px); // stylelint-disable-line function-disallowed-list - } -} - -.sidebar-toggler { - @include ltr-rtl("margin-left", auto); -} - -.sidebar-narrow, -.sidebar-narrow-unfoldable:not(:hover) { - .sidebar-toggler { - @include ltr-rtl("margin-right", auto); - } -} - -.header > .container-fluid + .container-fluid { - min-height: 3rem; -} - -.footer { - min-height: calc(3rem + 1px); // stylelint-disable-line function-disallowed-list -} - -@if $enable-dark-mode { - @include color-mode(dark) { - body { - background-color: var(--cui-dark-bg-subtle); - } - - .footer { - --cui-footer-bg: var(--cui-body-bg); - } - } -} diff --git a/src/styles/_variables.scss b/src/styles/_variables.scss deleted file mode 100644 index b0f8a52a..00000000 --- a/src/styles/_variables.scss +++ /dev/null @@ -1,5 +0,0 @@ -// Variable overrides -// -// If you want to customize your project please add your variables below. - -$enable-deprecation-messages: false !default; diff --git a/src/styles/examples.scss b/src/styles/examples.scss index 375fa9a5..dbfe258f 100644 --- a/src/styles/examples.scss +++ b/src/styles/examples.scss @@ -1,10 +1,7 @@ -/* stylelint-disable declaration-no-important, scss/selector-no-redundant-nesting-selector */ - -$enable-deprecation-messages: false !default; - -@import "@coreui/coreui/scss/functions"; -@import "@coreui/coreui/scss/variables"; -@import "@coreui/coreui/scss/mixins"; +/* stylelint-disable scss/selector-no-redundant-nesting-selector */ +@use "@coreui/coreui/scss/variables" as *; +@use "@coreui/coreui/scss/mixins/breakpoints" as *; +@use "@coreui/coreui/scss/mixins/color-mode" as *; .example { &:not(:first-child) { @@ -110,10 +107,8 @@ $enable-deprecation-messages: false !default; } } -@if $enable-dark-mode { - @include color-mode(dark) { - .example .tab-content { - background-color: var(--#{$prefix}secondary-bg) !important; - } +@include color-mode(dark) { + .example .tab-content { + background-color: var(--#{$prefix}secondary-bg); } -} \ No newline at end of file +} diff --git a/src/styles/style.scss b/src/styles/style.scss index 6fbabff0..cf48cfdb 100644 --- a/src/styles/style.scss +++ b/src/styles/style.scss @@ -1,14 +1,67 @@ -// If you want to override variables do it here -@import "variables"; +@use "@coreui/coreui/scss/coreui" as * with ( + $enable-deprecation-messages: false +); +@use "@coreui/chartjs/scss/coreui-chartjs"; +@use "vendors/simplebar"; -// Import styles -@import "@coreui/coreui/scss/coreui"; +body { + background-color: var(--cui-tertiary-bg); +} -// Vendors -@import "vendors/simplebar"; +.wrapper { + width: 100%; + padding-inline: var(--cui-sidebar-occupy-start, 0) var(--cui-sidebar-occupy-end, 0); + will-change: auto; + @include transition(padding .15s); +} -// Custom styles for this theme -@import "theme"; +.header > .container-fluid, +.sidebar-header { + min-height: calc(4rem + 1px); // stylelint-disable-line function-disallowed-list +} -// If you want to add custom CSS you can put it here -@import "custom"; +.sidebar-brand-full { + margin-left: 3px; +} + +.sidebar-header { + .nav-underline-border { + --cui-nav-underline-border-link-padding-x: 1rem; + --cui-nav-underline-border-gap: 0; + } + + .nav-link { + display: flex; + align-items: center; + min-height: calc(4rem + 1px); // stylelint-disable-line function-disallowed-list + } +} + +.sidebar-toggler { + margin-inline-start: auto; +} + +.sidebar-narrow, +.sidebar-narrow-unfoldable:not(:hover) { + .sidebar-toggler { + margin-inline-end: auto; + } +} + +.header > .container-fluid + .container-fluid { + min-height: 3rem; +} + +.footer { + min-height: calc(3rem + 1px); // stylelint-disable-line function-disallowed-list +} + +@include color-mode(dark) { + body { + background-color: var(--cui-dark-bg-subtle); + } + + .footer { + --cui-footer-bg: var(--cui-body-bg); + } +} diff --git a/src/views/base/Accordion.vue b/src/views/base/Accordion.vue index addf3053..98e5b31b 100644 --- a/src/views/base/Accordion.vue +++ b/src/views/base/Accordion.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/base/Breadcrumbs.vue b/src/views/base/Breadcrumbs.vue index 1052fca3..c7e214a5 100644 --- a/src/views/base/Breadcrumbs.vue +++ b/src/views/base/Breadcrumbs.vue @@ -1,16 +1,16 @@ - - diff --git a/src/views/base/Cards.vue b/src/views/base/Cards.vue index cb071768..524cb0f2 100644 --- a/src/views/base/Cards.vue +++ b/src/views/base/Cards.vue @@ -1,6 +1,12 @@ + + + - - + \ No newline at end of file diff --git a/src/views/base/Carousels.vue b/src/views/base/Carousels.vue index 3433ec1c..af00c03a 100644 --- a/src/views/base/Carousels.vue +++ b/src/views/base/Carousels.vue @@ -1,6 +1,13 @@ + + - - diff --git a/src/views/base/Collapses.vue b/src/views/base/Collapses.vue index 34d00f96..194bfdfd 100644 --- a/src/views/base/Collapses.vue +++ b/src/views/base/Collapses.vue @@ -1,28 +1,31 @@ + + - - diff --git a/src/views/base/ListGroups.vue b/src/views/base/ListGroups.vue index 1cf4cfbb..4d6a4c4e 100644 --- a/src/views/base/ListGroups.vue +++ b/src/views/base/ListGroups.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/base/Navs.vue b/src/views/base/Navs.vue index 652afd87..2c544f85 100644 --- a/src/views/base/Navs.vue +++ b/src/views/base/Navs.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/base/Paginations.vue b/src/views/base/Paginations.vue index 14c4ecbc..2141769e 100644 --- a/src/views/base/Paginations.vue +++ b/src/views/base/Paginations.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/base/Placeholders.vue b/src/views/base/Placeholders.vue index 723b68be..597748ff 100644 --- a/src/views/base/Placeholders.vue +++ b/src/views/base/Placeholders.vue @@ -1,6 +1,11 @@ + + - - diff --git a/src/views/base/Popovers.vue b/src/views/base/Popovers.vue index 1127cf3c..81147e15 100644 --- a/src/views/base/Popovers.vue +++ b/src/views/base/Popovers.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/base/Progress.vue b/src/views/base/Progress.vue index ff300e5a..68d05fe3 100644 --- a/src/views/base/Progress.vue +++ b/src/views/base/Progress.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/base/Spinners.vue b/src/views/base/Spinners.vue index 8c366349..1f9b6454 100644 --- a/src/views/base/Spinners.vue +++ b/src/views/base/Spinners.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/base/Tables.vue b/src/views/base/Tables.vue index 30dde23b..8a4061ff 100644 --- a/src/views/base/Tables.vue +++ b/src/views/base/Tables.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/base/Tabs.vue b/src/views/base/Tabs.vue new file mode 100644 index 00000000..66b6518f --- /dev/null +++ b/src/views/base/Tabs.vue @@ -0,0 +1,163 @@ + diff --git a/src/views/base/Tooltips.vue b/src/views/base/Tooltips.vue index 31bc9841..e98467e4 100644 --- a/src/views/base/Tooltips.vue +++ b/src/views/base/Tooltips.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/buttons/ButtonGroups.vue b/src/views/buttons/ButtonGroups.vue index d1b97bf5..21bfd114 100644 --- a/src/views/buttons/ButtonGroups.vue +++ b/src/views/buttons/ButtonGroups.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/buttons/Buttons.vue b/src/views/buttons/Buttons.vue index 9d18dcb3..fd26fe88 100644 --- a/src/views/buttons/Buttons.vue +++ b/src/views/buttons/Buttons.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/buttons/Dropdowns.vue b/src/views/buttons/Dropdowns.vue index 8b0b93b6..4aaa38a9 100644 --- a/src/views/buttons/Dropdowns.vue +++ b/src/views/buttons/Dropdowns.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/charts/CChartBarExample.vue b/src/views/charts/CChartBarExample.vue index 33e927f5..6f735afe 100644 --- a/src/views/charts/CChartBarExample.vue +++ b/src/views/charts/CChartBarExample.vue @@ -1,38 +1,31 @@ - - - + + \ No newline at end of file diff --git a/src/views/charts/CChartDoughnutExample.vue b/src/views/charts/CChartDoughnutExample.vue index 653c8c89..2a6e75b9 100644 --- a/src/views/charts/CChartDoughnutExample.vue +++ b/src/views/charts/CChartDoughnutExample.vue @@ -1,24 +1,17 @@ - - - + + diff --git a/src/views/charts/CChartLineExample.vue b/src/views/charts/CChartLineExample.vue index f1a0cc6a..e1682d0b 100644 --- a/src/views/charts/CChartLineExample.vue +++ b/src/views/charts/CChartLineExample.vue @@ -1,30 +1,23 @@ - - - + + diff --git a/src/views/charts/CChartPieExample.vue b/src/views/charts/CChartPieExample.vue index b4857377..8819dd43 100644 --- a/src/views/charts/CChartPieExample.vue +++ b/src/views/charts/CChartPieExample.vue @@ -1,24 +1,17 @@ - - - + + diff --git a/src/views/charts/CChartPolarAreaExample.vue b/src/views/charts/CChartPolarAreaExample.vue index 192b2e24..7311fae6 100644 --- a/src/views/charts/CChartPolarAreaExample.vue +++ b/src/views/charts/CChartPolarAreaExample.vue @@ -1,49 +1,34 @@ - - - + + diff --git a/src/views/charts/CChartRadarExample.vue b/src/views/charts/CChartRadarExample.vue index c4513702..79e2e214 100644 --- a/src/views/charts/CChartRadarExample.vue +++ b/src/views/charts/CChartRadarExample.vue @@ -1,53 +1,38 @@ - diff --git a/src/views/charts/Charts.vue b/src/views/charts/Charts.vue index eff0304f..9457ec80 100644 --- a/src/views/charts/Charts.vue +++ b/src/views/charts/Charts.vue @@ -1,3 +1,14 @@ + + - - diff --git a/src/views/dashboard/Dashboard.vue b/src/views/dashboard/Dashboard.vue index fc95f213..644979b9 100644 --- a/src/views/dashboard/Dashboard.vue +++ b/src/views/dashboard/Dashboard.vue @@ -1,3 +1,130 @@ + + - - diff --git a/src/views/dashboard/MainChart.vue b/src/views/dashboard/MainChart.vue index 6df1c977..acadd733 100644 --- a/src/views/dashboard/MainChart.vue +++ b/src/views/dashboard/MainChart.vue @@ -1,148 +1,128 @@ - - - + + diff --git a/src/views/forms/ChecksRadios.vue b/src/views/forms/ChecksRadios.vue index b41d44ca..03dea2e6 100644 --- a/src/views/forms/ChecksRadios.vue +++ b/src/views/forms/ChecksRadios.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/forms/FloatingLabels.vue b/src/views/forms/FloatingLabels.vue index 0ecc2ae9..8fbf36ee 100644 --- a/src/views/forms/FloatingLabels.vue +++ b/src/views/forms/FloatingLabels.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/forms/FormControl.vue b/src/views/forms/FormControl.vue index c36e6d00..19273921 100644 --- a/src/views/forms/FormControl.vue +++ b/src/views/forms/FormControl.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/forms/InputGroup.vue b/src/views/forms/InputGroup.vue index 7322fc69..efd3447e 100644 --- a/src/views/forms/InputGroup.vue +++ b/src/views/forms/InputGroup.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/forms/Layout.vue b/src/views/forms/Layout.vue index aae8cc4f..8d304416 100644 --- a/src/views/forms/Layout.vue +++ b/src/views/forms/Layout.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/forms/Range.vue b/src/views/forms/Range.vue index 58d6b90b..3ac97c2a 100644 --- a/src/views/forms/Range.vue +++ b/src/views/forms/Range.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/forms/Select.vue b/src/views/forms/Select.vue index 96a75f78..f182c410 100644 --- a/src/views/forms/Select.vue +++ b/src/views/forms/Select.vue @@ -1,6 +1,7 @@ - - diff --git a/src/views/forms/Validation.vue b/src/views/forms/Validation.vue index 905325ed..60b727cc 100644 --- a/src/views/forms/Validation.vue +++ b/src/views/forms/Validation.vue @@ -1,25 +1,59 @@ + + - - diff --git a/src/views/icons/Brands.vue b/src/views/icons/Brands.vue index df35ed2a..99702483 100644 --- a/src/views/icons/Brands.vue +++ b/src/views/icons/Brands.vue @@ -1,36 +1,24 @@ - - - + + diff --git a/src/views/icons/CoreUIIcons.vue b/src/views/icons/CoreUIIcons.vue index db217630..1d0de1cd 100644 --- a/src/views/icons/CoreUIIcons.vue +++ b/src/views/icons/CoreUIIcons.vue @@ -1,36 +1,23 @@ - - - + + diff --git a/src/views/icons/Flags.vue b/src/views/icons/Flags.vue index eff0320f..a6004b0b 100644 --- a/src/views/icons/Flags.vue +++ b/src/views/icons/Flags.vue @@ -1,36 +1,23 @@ - - - + + diff --git a/src/views/notifications/Alerts.vue b/src/views/notifications/Alerts.vue index e6d12929..1e1a634e 100644 --- a/src/views/notifications/Alerts.vue +++ b/src/views/notifications/Alerts.vue @@ -1,6 +1,13 @@ + + - - diff --git a/src/views/notifications/Badges.vue b/src/views/notifications/Badges.vue index d50b4e65..28859ffc 100644 --- a/src/views/notifications/Badges.vue +++ b/src/views/notifications/Badges.vue @@ -1,5 +1,8 @@ - - diff --git a/src/views/notifications/Modals.vue b/src/views/notifications/Modals.vue index acc0e57f..d1fb745a 100644 --- a/src/views/notifications/Modals.vue +++ b/src/views/notifications/Modals.vue @@ -1,6 +1,28 @@ + + - - diff --git a/src/views/notifications/Toasts.vue b/src/views/notifications/Toasts.vue index 6ecfa627..987c3823 100644 --- a/src/views/notifications/Toasts.vue +++ b/src/views/notifications/Toasts.vue @@ -1,6 +1,18 @@ + + - - diff --git a/src/views/pages/Login.vue b/src/views/pages/Login.vue index 11075f06..43386210 100644 --- a/src/views/pages/Login.vue +++ b/src/views/pages/Login.vue @@ -1,5 +1,5 @@ - - diff --git a/src/views/pages/Page404.vue b/src/views/pages/Page404.vue index d07771a1..95e550a5 100644 --- a/src/views/pages/Page404.vue +++ b/src/views/pages/Page404.vue @@ -1,5 +1,5 @@ - - diff --git a/src/views/pages/Page500.vue b/src/views/pages/Page500.vue index 63dd18c6..2dd7881e 100644 --- a/src/views/pages/Page500.vue +++ b/src/views/pages/Page500.vue @@ -1,5 +1,5 @@ - - diff --git a/src/views/pages/Register.vue b/src/views/pages/Register.vue index d76232f1..284e3cc1 100644 --- a/src/views/pages/Register.vue +++ b/src/views/pages/Register.vue @@ -1,5 +1,5 @@ - - diff --git a/src/views/theme/ColorTheme.vue b/src/views/theme/ColorTheme.vue index 3f57d21e..ae404b81 100644 --- a/src/views/theme/ColorTheme.vue +++ b/src/views/theme/ColorTheme.vue @@ -1,21 +1,15 @@ + + - - diff --git a/src/views/theme/Colors.vue b/src/views/theme/Colors.vue index 87291bbd..acb34ce7 100644 --- a/src/views/theme/Colors.vue +++ b/src/views/theme/Colors.vue @@ -1,3 +1,7 @@ + + - - diff --git a/src/views/theme/Typography.vue b/src/views/theme/Typography.vue index c4cd5d96..306e403b 100644 --- a/src/views/theme/Typography.vue +++ b/src/views/theme/Typography.vue @@ -243,9 +243,3 @@ - - diff --git a/src/views/widgets/Widgets.vue b/src/views/widgets/Widgets.vue index b8d40c4e..906c0712 100644 --- a/src/views/widgets/Widgets.vue +++ b/src/views/widgets/Widgets.vue @@ -1,3 +1,55 @@ + + - - diff --git a/src/views/widgets/WidgetsStatsTypeA.vue b/src/views/widgets/WidgetsStatsTypeA.vue index 30677ff7..e914b7f2 100644 --- a/src/views/widgets/WidgetsStatsTypeA.vue +++ b/src/views/widgets/WidgetsStatsTypeA.vue @@ -1,21 +1,38 @@ + +