diff --git a/package.json b/package.json
index 2fe17aea..3b5b531a 100644
--- a/package.json
+++ b/package.json
@@ -27,10 +27,10 @@
"@coreui/vue-chartjs": "^3.0.0",
"@popperjs/core": "^2.11.8",
"chart.js": "^4.4.2",
+ "pinia": "^2.1.7",
"simplebar-vue": "^2.3.3",
"vue": "^3.4.21",
- "vue-router": "^4.3.0",
- "vuex": "^4.1.0"
+ "vue-router": "^4.3.0"
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.0.4",
diff --git a/src/App.vue b/src/App.vue
index 9a8eaeca..b06f287b 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,10 +1,13 @@
diff --git a/src/components/AppHeader.vue b/src/components/AppHeader.vue
index 46e2b842..fda96a89 100644
--- a/src/components/AppHeader.vue
+++ b/src/components/AppHeader.vue
@@ -1,11 +1,14 @@
@@ -17,15 +14,9 @@ const sidebarVisible = computed(() => store.state.sidebarVisible)
class="border-end"
colorScheme="dark"
position="fixed"
- :unfoldable="sidebarUnfoldable"
- :visible="sidebarVisible"
- @visible-change="
- (event) =>
- $store.commit({
- type: 'updateSidebarVisible',
- value: event,
- })
- "
+ :unfoldable="sidebar.unfoldable"
+ :visible="sidebar.visible"
+ @visible-change="(value) => sidebar.toggleVisible(value)"
>
@@ -34,11 +25,11 @@ const sidebarVisible = computed(() => store.state.sidebarVisible)
-
+
-
+
diff --git a/src/main.js b/src/main.js
index 5afc2d2d..bf8b8e5f 100644
--- a/src/main.js
+++ b/src/main.js
@@ -1,7 +1,8 @@
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'
@@ -9,7 +10,7 @@ import { iconsSet as icons } from '@/assets/icons'
import DocsExample from '@/components/DocsExample'
const app = createApp(App)
-app.use(store)
+app.use(createPinia())
app.use(router)
app.use(CoreuiVue)
app.provide('icons', icons)
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 }
+})