From c019d208c806363f66e7b4f2222e41e19647bbe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E6=AD=A3=E8=B6=85?= Date: Sat, 25 Oct 2025 22:26:47 +0800 Subject: [PATCH] refactor: migrate events management ui to shadcn --- app.vue | 45 +-- auto-imports.d.ts | 8 +- components/AppSidebar.vue | 185 +++++++++ components/events/new-form.vue | 463 +++++++++++++---------- components/language-switcher.vue | 71 ++-- components/providers/AppDialogHost.vue | 79 ++++ components/providers/AppUiProvider.vue | 21 + components/sidebar.vue | 164 -------- components/site-replication/new-form.vue | 441 +++++++++++++++------ components/theme-switcher.vue | 55 +-- components/user-dropdown.vue | 71 ++-- components/users/group/members.vue | 317 ++++++++++------ components/users/tabs/group.vue | 286 +++++++------- components/users/tabs/user.vue | 269 +++++++------ composables/ui.ts | 4 + docs/shadcn-migration-todo.md | 13 + layouts/default.vue | 37 +- lib/ui/dialog.ts | 107 ++++++ lib/ui/loading-bar.ts | 13 + lib/ui/message.ts | 86 +++++ lib/ui/notification.ts | 69 ++++ nuxt.config.ts | 2 +- pages/events/index.vue | 316 ++++++++-------- pages/site-replication/index.vue | 37 +- store/sidebar.ts | 20 - 25 files changed, 1986 insertions(+), 1193 deletions(-) create mode 100644 components/AppSidebar.vue create mode 100644 components/providers/AppDialogHost.vue create mode 100644 components/providers/AppUiProvider.vue delete mode 100644 components/sidebar.vue create mode 100644 composables/ui.ts create mode 100644 docs/shadcn-migration-todo.md create mode 100644 lib/ui/dialog.ts create mode 100644 lib/ui/loading-bar.ts create mode 100644 lib/ui/message.ts create mode 100644 lib/ui/notification.ts delete mode 100644 store/sidebar.ts diff --git a/app.vue b/app.vue index 2e50761..ab103a0 100644 --- a/app.vue +++ b/app.vue @@ -1,25 +1,18 @@ + + diff --git a/components/events/new-form.vue b/components/events/new-form.vue index 0cff302..8eaf6a3 100644 --- a/components/events/new-form.vue +++ b/components/events/new-form.vue @@ -1,128 +1,230 @@ diff --git a/components/language-switcher.vue b/components/language-switcher.vue index 1944243..5b80595 100644 --- a/components/language-switcher.vue +++ b/components/language-switcher.vue @@ -1,18 +1,29 @@ - - diff --git a/components/providers/AppDialogHost.vue b/components/providers/AppDialogHost.vue new file mode 100644 index 0000000..666733a --- /dev/null +++ b/components/providers/AppDialogHost.vue @@ -0,0 +1,79 @@ + + + diff --git a/components/providers/AppUiProvider.vue b/components/providers/AppUiProvider.vue new file mode 100644 index 0000000..2c99b3f --- /dev/null +++ b/components/providers/AppUiProvider.vue @@ -0,0 +1,21 @@ + + + diff --git a/components/sidebar.vue b/components/sidebar.vue deleted file mode 100644 index d560872..0000000 --- a/components/sidebar.vue +++ /dev/null @@ -1,164 +0,0 @@ - - diff --git a/components/site-replication/new-form.vue b/components/site-replication/new-form.vue index f619a59..7a8ff58 100644 --- a/components/site-replication/new-form.vue +++ b/components/site-replication/new-form.vue @@ -1,143 +1,360 @@ - - - diff --git a/components/theme-switcher.vue b/components/theme-switcher.vue index 10c6855..fb986be 100644 --- a/components/theme-switcher.vue +++ b/components/theme-switcher.vue @@ -1,17 +1,34 @@ diff --git a/components/users/group/members.vue b/components/users/group/members.vue index 2b99eb4..bb896fb 100644 --- a/components/users/group/members.vue +++ b/components/users/group/members.vue @@ -1,145 +1,230 @@ - - diff --git a/components/users/tabs/group.vue b/components/users/tabs/group.vue index 7a08467..3be3aa5 100644 --- a/components/users/tabs/group.vue +++ b/components/users/tabs/group.vue @@ -1,36 +1,82 @@ diff --git a/store/sidebar.ts b/store/sidebar.ts deleted file mode 100644 index 2681e41..0000000 --- a/store/sidebar.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { defineStore } from 'pinia'; -import { ref, watch } from 'vue'; - -export const useSidebarStore = defineStore('sidebar', () => { - const isCollapsed = ref(localStorage.getItem('sidebarCollapsed') === 'true'); - - const toggleSidebar = () => { - isCollapsed.value = !isCollapsed.value; - }; - - const setSidebarState = (collapsed: boolean) => { - isCollapsed.value = collapsed; - }; - - watch(isCollapsed, newValue => { - localStorage.setItem('sidebarCollapsed', newValue.toString()); - }); - - return { isCollapsed, toggleSidebar, setSidebarState }; -});