From ae65a61ac0990aac74b05679a3a21e7b3db0e4bd Mon Sep 17 00:00:00 2001 From: Acbox Date: Tue, 10 Feb 2026 17:16:02 +0800 Subject: [PATCH] refactor(web): icons --- packages/web/package.json | 9 ++- packages/web/src/components/Sidebar/index.vue | 29 ++++----- .../web/src/components/add-provider/index.vue | 7 +- .../components/chat-list/robot-chat/index.vue | 7 +- .../web/src/components/loading-dots/index.vue | 60 ++--------------- packages/web/src/main.ts | 32 +++++++++- packages/web/src/pages/chat/index.vue | 7 +- .../pages/models/components/model-item.vue | 12 +--- .../pages/models/components/model-list.vue | 7 +- .../pages/models/components/provider-form.vue | 7 +- packages/web/src/pages/models/index.vue | 14 +--- packages/web/src/pages/settings/index.vue | 7 +- pnpm-lock.yaml | 64 +++++++++++++++++++ 13 files changed, 133 insertions(+), 129 deletions(-) diff --git a/packages/web/package.json b/packages/web/package.json index 82a68f4b..d35a41e0 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -9,8 +9,6 @@ "start": "vite preview" }, "dependencies": { - "@jamescoyle/vue-icon": "^0.1.2", - "@mdi/js": "^7.4.47", "@memoh/shared": "workspace:*", "@memoh/ui": "workspace:*", "@pinia/colada": "^0.21.1", @@ -36,7 +34,12 @@ "vue-i18n": "^11.2.8", "vue-router": "^4.6.4", "vue-sonner": "^2.0.9", - "zod": "^4.3.5" + "zod": "^4.3.5", + "@fortawesome/fontawesome-svg-core": "^7.0.0", + "@fortawesome/free-brands-svg-icons": "^7.0.0", + "@fortawesome/free-regular-svg-icons": "^7.0.0", + "@fortawesome/free-solid-svg-icons": "^7.0.0", + "@fortawesome/vue-fontawesome": "^3.1.1" }, "devDependencies": { "@types/node": "^24.10.1", diff --git a/packages/web/src/components/Sidebar/index.vue b/packages/web/src/components/Sidebar/index.vue index 2c349391..51300b11 100644 --- a/packages/web/src/components/Sidebar/index.vue +++ b/packages/web/src/components/Sidebar/index.vue @@ -4,12 +4,16 @@ - logo.png +
+ logo.png + + Memoh + +
@@ -36,10 +40,7 @@ }" @click="router.push({ name: sidebarItem.name })" > - + {{ sidebarItem.title }} @@ -65,8 +66,6 @@ import { Toggle } from '@memoh/ui' import { computed } from 'vue' -import SvgIcon from '@jamescoyle/vue-icon' -import { mdiRobot, mdiChatOutline, mdiCogBox } from '@mdi/js' import { useRouter,useRoute } from 'vue-router' import { useUserStore } from '@/store/user' import i18n from '@/i18n' @@ -85,7 +84,7 @@ const sidebarInfo = computed(() => [ { title: t('slidebar.chat'), name: 'chat', - icon: mdiChatOutline + icon: ['far', 'comments'] }, // { // title: t('slidebar.home'), @@ -95,11 +94,11 @@ const sidebarInfo = computed(() => [ { title: t('slidebar.model_setting'), name: 'models', - icon: mdiRobot + icon: ['fas', 'robot'] }, { title: t('slidebar.setting'), name: 'settings', - icon: mdiCogBox + icon: ['fas', 'gear'] }, // { // title: 'MCP', diff --git a/packages/web/src/components/add-provider/index.vue b/packages/web/src/components/add-provider/index.vue index ffb11a8e..3588bdbc 100644 --- a/packages/web/src/components/add-provider/index.vue +++ b/packages/web/src/components/add-provider/index.vue @@ -6,9 +6,8 @@ class="w-full shadow-none! text-muted-foreground mb-4" variant="outline" > - 添加 @@ -127,8 +126,6 @@ diff --git a/packages/web/src/main.ts b/packages/web/src/main.ts index 198c9eec..0fd89d09 100644 --- a/packages/web/src/main.ts +++ b/packages/web/src/main.ts @@ -9,9 +9,39 @@ import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' import 'markstream-vue/index.css' import 'katex/dist/katex.min.css' +// Font Awesome +import { library } from '@fortawesome/fontawesome-svg-core' +import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' +import { + faGear, + faPaperPlane, + faRobot, + faMagnifyingGlass, + faPlus, + faSpinner, +} from '@fortawesome/free-solid-svg-icons' +import { + faRectangleList, + faTrashCan, + faComments, +} from '@fortawesome/free-regular-svg-icons' + +library.add( + faGear, + faPaperPlane, + faRobot, + faMagnifyingGlass, + faPlus, + faSpinner, + faRectangleList, + faTrashCan, + faComments, +) + createApp(App) + .component('FontAwesomeIcon', FontAwesomeIcon) .use(createPinia().use(piniaPluginPersistedstate)) .use(PiniaColada) .use(router) .use(i18n) - .mount('#app') \ No newline at end of file + .mount('#app') diff --git a/packages/web/src/pages/chat/index.vue b/packages/web/src/pages/chat/index.vue index 81937c90..bba0cc47 100644 --- a/packages/web/src/pages/chat/index.vue +++ b/packages/web/src/pages/chat/index.vue @@ -32,10 +32,7 @@ > @@ -50,8 +47,6 @@ import { Textarea, Button, } from '@memoh/ui' -import SvgIcon from '@jamescoyle/vue-icon' -import { mdiSendOutline } from '@mdi/js' import ChatList from '@/components/chat-list/index.vue' import LoadingDots from '@/components/loading-dots/index.vue' import { provide, ref } from 'vue' diff --git a/packages/web/src/pages/models/components/model-item.vue b/packages/web/src/pages/models/components/model-item.vue index 3b89b916..6aebe870 100644 --- a/packages/web/src/pages/models/components/model-item.vue +++ b/packages/web/src/pages/models/components/model-item.vue @@ -42,10 +42,7 @@ class="cursor-pointer" @click="$emit('edit', model)" > - + @@ -83,8 +77,6 @@ import { SelectItem, } from '@memoh/ui' import ConfirmPopover from '@/components/confirm-popover/index.vue' -import SvgIcon from '@jamescoyle/vue-icon' -import { mdiCog, mdiTrashCanOutline } from '@mdi/js' import { type ModelInfo } from '@memoh/shared' defineProps<{ diff --git a/packages/web/src/pages/models/components/model-list.vue b/packages/web/src/pages/models/components/model-list.vue index 8ff1907d..77cdfb90 100644 --- a/packages/web/src/pages/models/components/model-list.vue +++ b/packages/web/src/pages/models/components/model-list.vue @@ -31,10 +31,7 @@ > - + 还没有添加模型 @@ -55,8 +52,6 @@ import { } from '@memoh/ui' import CreateModel from '@/components/create-model/index.vue' import ModelItem from './model-item.vue' -import SvgIcon from '@jamescoyle/vue-icon' -import { mdiListBoxOutline } from '@mdi/js' import { type ModelInfo } from '@memoh/shared' defineProps<{ diff --git a/packages/web/src/pages/models/components/provider-form.vue b/packages/web/src/pages/models/components/provider-form.vue index db1ada09..2fad697c 100644 --- a/packages/web/src/pages/models/components/provider-form.vue +++ b/packages/web/src/pages/models/components/provider-form.vue @@ -70,10 +70,7 @@ > @@ -99,8 +96,6 @@ import { Spinner, } from '@memoh/ui' import ConfirmPopover from '@/components/confirm-popover/index.vue' -import SvgIcon from '@jamescoyle/vue-icon' -import { mdiTrashCanOutline } from '@mdi/js' import { computed, toValue, watch } from 'vue' import { toTypedSchema } from '@vee-validate/zod' import z from 'zod' diff --git a/packages/web/src/pages/models/index.vue b/packages/web/src/pages/models/index.vue index 6812f032..9b9a5e02 100644 --- a/packages/web/src/pages/models/index.vue +++ b/packages/web/src/pages/models/index.vue @@ -28,9 +28,6 @@ import { EmptyMedia, EmptyTitle, } from '@memoh/ui' -import { mdiMagnify,mdiListBoxOutline } from '@mdi/js' -// import DataTable from '@/components/DataTable/index.vue' -import SvgIcon from '@jamescoyle/vue-icon' import request from '@/utils/request' import { type ProviderInfo } from '@memoh/shared' import AddProvider from '@/components/add-provider/index.vue' @@ -118,11 +115,7 @@ const openStatus = reactive({ searchProviderTxt.value = searchProviderTxt.temp_value }" > - + @@ -184,10 +177,7 @@ const openStatus = reactive({ > - + No Provider diff --git a/packages/web/src/pages/settings/index.vue b/packages/web/src/pages/settings/index.vue index 36db0ffa..6b04ea73 100644 --- a/packages/web/src/pages/settings/index.vue +++ b/packages/web/src/pages/settings/index.vue @@ -1,9 +1,8 @@