From cff8ab1b72c5a75f54383a04233bf9967ae93dab Mon Sep 17 00:00:00 2001 From: Geriano Date: Sat, 16 Jul 2022 04:29:30 +0700 Subject: [PATCH] create dashboard layout --- .../js/Components/DashboardLayout/Sidebar.vue | 30 ++++++++++ .../DashboardLayout/Sidebar/Builder.vue | 30 ++++++++++ .../DashboardLayout/Sidebar/Link.vue | 23 ++++++++ .../DashboardLayout/Sidebar/Links.vue | 41 ++++++++++++++ .../DashboardLayout/SidebarToggler.vue | 11 ++++ .../DashboardLayout/TopbarDropdown.vue | 55 +++++++++++++++++++ resources/js/Components/Icon.vue | 16 ++++++ resources/js/Layouts/DashboardLayout.vue | 42 ++++++++++++++ resources/js/Pages/Dashboard.vue | 19 +------ resources/js/app.js | 6 ++ resources/js/themes.js | 19 +++++++ 11 files changed, 276 insertions(+), 16 deletions(-) create mode 100644 resources/js/Components/DashboardLayout/Sidebar.vue create mode 100644 resources/js/Components/DashboardLayout/Sidebar/Builder.vue create mode 100644 resources/js/Components/DashboardLayout/Sidebar/Link.vue create mode 100644 resources/js/Components/DashboardLayout/Sidebar/Links.vue create mode 100644 resources/js/Components/DashboardLayout/SidebarToggler.vue create mode 100644 resources/js/Components/DashboardLayout/TopbarDropdown.vue create mode 100644 resources/js/Components/Icon.vue create mode 100644 resources/js/Layouts/DashboardLayout.vue create mode 100644 resources/js/themes.js diff --git a/resources/js/Components/DashboardLayout/Sidebar.vue b/resources/js/Components/DashboardLayout/Sidebar.vue new file mode 100644 index 0000000..bcaf398 --- /dev/null +++ b/resources/js/Components/DashboardLayout/Sidebar.vue @@ -0,0 +1,30 @@ + + + \ No newline at end of file diff --git a/resources/js/Components/DashboardLayout/Sidebar/Builder.vue b/resources/js/Components/DashboardLayout/Sidebar/Builder.vue new file mode 100644 index 0000000..0278ba4 --- /dev/null +++ b/resources/js/Components/DashboardLayout/Sidebar/Builder.vue @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/resources/js/Components/DashboardLayout/Sidebar/Link.vue b/resources/js/Components/DashboardLayout/Sidebar/Link.vue new file mode 100644 index 0000000..859b7c1 --- /dev/null +++ b/resources/js/Components/DashboardLayout/Sidebar/Link.vue @@ -0,0 +1,23 @@ + + + \ No newline at end of file diff --git a/resources/js/Components/DashboardLayout/Sidebar/Links.vue b/resources/js/Components/DashboardLayout/Sidebar/Links.vue new file mode 100644 index 0000000..49e8134 --- /dev/null +++ b/resources/js/Components/DashboardLayout/Sidebar/Links.vue @@ -0,0 +1,41 @@ + + + \ No newline at end of file diff --git a/resources/js/Components/DashboardLayout/SidebarToggler.vue b/resources/js/Components/DashboardLayout/SidebarToggler.vue new file mode 100644 index 0000000..63bdf68 --- /dev/null +++ b/resources/js/Components/DashboardLayout/SidebarToggler.vue @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/resources/js/Components/DashboardLayout/TopbarDropdown.vue b/resources/js/Components/DashboardLayout/TopbarDropdown.vue new file mode 100644 index 0000000..6edd373 --- /dev/null +++ b/resources/js/Components/DashboardLayout/TopbarDropdown.vue @@ -0,0 +1,55 @@ + + + + + \ No newline at end of file diff --git a/resources/js/Components/Icon.vue b/resources/js/Components/Icon.vue new file mode 100644 index 0000000..87c6501 --- /dev/null +++ b/resources/js/Components/Icon.vue @@ -0,0 +1,16 @@ + + + \ No newline at end of file diff --git a/resources/js/Layouts/DashboardLayout.vue b/resources/js/Layouts/DashboardLayout.vue new file mode 100644 index 0000000..4f5ceca --- /dev/null +++ b/resources/js/Layouts/DashboardLayout.vue @@ -0,0 +1,42 @@ + + + \ No newline at end of file diff --git a/resources/js/Pages/Dashboard.vue b/resources/js/Pages/Dashboard.vue index 92d32e8..4689791 100644 --- a/resources/js/Pages/Dashboard.vue +++ b/resources/js/Pages/Dashboard.vue @@ -1,22 +1,9 @@ diff --git a/resources/js/app.js b/resources/js/app.js index 5e9bb96..e57e5eb 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -6,6 +6,7 @@ import { createInertiaApp } from '@inertiajs/inertia-vue3'; import { InertiaProgress } from '@inertiajs/progress'; import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers'; import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m'; +import Themes from './themes' const appName = window.document.getElementsByTagName('title')[0]?.innerText || 'Laravel'; @@ -16,6 +17,11 @@ createInertiaApp({ return createApp({ render: () => h(app, props) }) .use(plugin) .use(ZiggyVue, Ziggy) + .mixin({ + methods: { + themes: () => Themes, + }, + }) .mount(el); }, }); diff --git a/resources/js/themes.js b/resources/js/themes.js new file mode 100644 index 0000000..d4f6d16 --- /dev/null +++ b/resources/js/themes.js @@ -0,0 +1,19 @@ +import { ref } from "vue" + +localStorage.setItem('themes', localStorage.getItem('themes') || JSON.stringify({ + topbar: 'bg-cyan-500 text-gray-700 hover:bg-cyan-600 hover:text-gray-800 transition-all ease-in-out duration-150', + sidebar: 'bg-gray-700 text-gray-200 hover:bg-gray-800 hover:text-gray-100 transition-all ease-in-out duration-150', +})) + +const themes = ref(JSON.parse(localStorage.getItem('themes'))) + +const set = (key, val) => { + themes.value[key] = val + localStorage.setItem('themes', JSON.stringify(themes.value)) +} + +const get = (key, def) => themes.value[key] || def + +export default { + ...themes.value, set, get +} \ No newline at end of file