From 8567bd6c47c666ce818a24bea2ea2bb1766cda1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?cls=5F=E5=AE=81=E6=B3=A2=E6=9C=AC=E6=9C=BA?= <908705107@qq.com> Date: Fri, 12 Jun 2026 19:20:01 +0800 Subject: [PATCH] fix: resolve light menu icons locally --- .../shadcn-ui/src/components/icon/icon.vue | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/web/packages/@core/ui-kit/shadcn-ui/src/components/icon/icon.vue b/web/packages/@core/ui-kit/shadcn-ui/src/components/icon/icon.vue index 80de0d7..16f3e2d 100644 --- a/web/packages/@core/ui-kit/shadcn-ui/src/components/icon/icon.vue +++ b/web/packages/@core/ui-kit/shadcn-ui/src/components/icon/icon.vue @@ -3,7 +3,21 @@ import type { Component } from 'vue'; import { computed } from 'vue'; -import { IconDefault, IconifyIcon } from '@vben-core/icons'; +import { + AlignEndHorizontal, + AlignHorizontalSpaceAround, + AlignStartVertical, + Bot, + BookOpen, + IconDefault, + IconifyIcon, + LayoutGrid, + Mail, + Megaphone, + UserRound, + Users, + Workflow, +} from '@vben-core/icons'; import { isFunction, isHttpUrl, @@ -17,10 +31,30 @@ const props = defineProps<{ icon?: Component | Function | string; }>(); +const localIconMap: Record = { + 'carbon:agent-detached': Bot, + 'carbon:align-box-middle-right': AlignEndHorizontal, + 'carbon:align-vertical-top': AlignStartVertical, + 'carbon:arrange': LayoutGrid, + 'carbon:arrange-horizontal': AlignHorizontalSpaceAround, + 'carbon:email': Mail, + 'carbon:user-multiple': Users, + 'lucide:bot': Bot, + 'lucide:library-big': BookOpen, + 'lucide:megaphone': Megaphone, + 'lucide:square-user': UserRound, + 'lucide:workflow': Workflow, +}; + const isRemoteIcon = computed(() => { return isString(props.icon) && isHttpUrl(props.icon); }); +const localIcon = computed(() => { + if (!isString(props.icon)) return; + return localIconMap[props.icon.replace(/^i-/, '')]; +}); + const isComponent = computed(() => { const { icon } = props; return !isString(icon) && (isObject(icon) || isFunction(icon)); @@ -29,6 +63,7 @@ const isComponent = computed(() => {