diff --git a/apps/web-antd/src/utils/render.tsx b/apps/web-antd/src/utils/render.tsx
index 4ad272db..3fbab916 100644
--- a/apps/web-antd/src/utils/render.tsx
+++ b/apps/web-antd/src/utils/render.tsx
@@ -8,25 +8,15 @@ import { h } from 'vue';
import { JsonPreview } from '@vben/common-ui';
import {
AndroidIcon,
- BaiduIcon,
- ChromeIcon,
- DefaultBrowserIcon,
DefaultOsIcon,
- DingtalkIcon,
- EdgeIcon,
- FirefoxIcon,
IconifyIcon,
IPhoneIcon,
LinuxIcon,
- MicromessengerIcon,
- OperaIcon,
OSXIcon,
- QuarkIcon,
- SafariIcon,
- SvgQQIcon,
- UcIcon,
+ VbenIcon,
WindowsIcon,
} from '@vben/icons';
+import { cn } from '@vben/utils';
import { Tag } from 'antdv-next';
@@ -199,21 +189,23 @@ const osOptions = [
* cn.hutool.http.useragent -> browers
*/
const browserOptions = [
- { icon: ChromeIcon, value: 'chrome' },
- { icon: EdgeIcon, value: 'edge' },
- { icon: FirefoxIcon, value: 'firefox' },
- { icon: OperaIcon, value: 'opera' },
- { icon: SafariIcon, value: 'safari' },
- { icon: MicromessengerIcon, value: 'micromessenger' },
- { icon: MicromessengerIcon, value: 'windowswechat' },
- { icon: QuarkIcon, value: 'quark' },
- { icon: MicromessengerIcon, value: 'wxwork' },
- { icon: SvgQQIcon, value: 'qq' },
- { icon: DingtalkIcon, value: 'dingtalk' },
- { icon: UcIcon, value: 'uc' },
- { icon: BaiduIcon, value: 'baidu' },
+ { icon: 'icon-[logos--chrome]', value: 'chrome' },
+ { icon: 'icon-[logos--microsoft-edge]', value: 'edge' },
+ { icon: 'icon-[logos--firefox]', value: 'firefox' },
+ { icon: 'icon-[logos--opera]', value: 'opera' },
+ { icon: 'icon-[logos--safari]', value: 'safari' },
+ { icon: 'icon-[mdi--wechat]', value: 'micromessenger' },
+ { icon: 'icon-[mdi--wechat]', value: 'windowswechat' },
+ { icon: 'icon-[logos--quarkus-icon]', value: 'quark' },
+ { icon: 'icon-[mdi--wechat]', value: 'wxwork' },
+ { icon: 'svg:qq', value: 'qq', type: 'offline' },
+ { icon: 'icon-[ri--dingding-line]', value: 'dingtalk' },
+ { icon: 'icon-[arcticons--uc-browser]', value: 'uc' },
+ { icon: 'icon-[ri--baidu-fill]', value: 'baidu' },
];
+const DefaultBrowserIcon = 'icon-[ph--browser-duotone]';
+
export function renderOsIcon(os: string, center = false) {
if (!os) {
return;
@@ -229,13 +221,21 @@ export function renderOsIcon(os: string, center = false) {
return renderIconSpan(icon, os, center, '5px');
}
-export function renderBrowserIcon(browser: string, center = false) {
+export function renderBrowserIcon(browser: string, className?: string) {
if (!browser) {
return;
}
const current = browserOptions.find((item) =>
browser.toLocaleLowerCase().includes(item.value),
);
- const icon = current ? current.icon : DefaultBrowserIcon;
- return renderIconSpan(icon, browser, center, '5px');
+ // TODO: 需要优化
+ if (!current) {
+ return ;
+ }
+ // support offline icon
+ const icon = current.icon;
+ if (current.type === 'offline') {
+ return ;
+ }
+ return ;
}
diff --git a/apps/web-antd/src/views/monitor/logininfor/data.tsx b/apps/web-antd/src/views/monitor/logininfor/data.tsx
index 88825e4e..588e0880 100644
--- a/apps/web-antd/src/views/monitor/logininfor/data.tsx
+++ b/apps/web-antd/src/views/monitor/logininfor/data.tsx
@@ -58,7 +58,12 @@ export const columns: VxeGridProps['columns'] = [
field: 'browser',
slots: {
default: ({ row }) => {
- return renderBrowserIcon(row.browser, true) as VNode;
+ return (
+
+ {renderBrowserIcon(row.browser, 'shrink-0')}
+ {row.browser}
+
+ );
},
},
},
diff --git a/apps/web-antd/src/views/monitor/logininfor/login-info-modal.vue b/apps/web-antd/src/views/monitor/logininfor/login-info-modal.vue
index 498a1f81..6f91a05a 100644
--- a/apps/web-antd/src/views/monitor/logininfor/login-info-modal.vue
+++ b/apps/web-antd/src/views/monitor/logininfor/login-info-modal.vue
@@ -67,7 +67,12 @@ const items = computed(() => {
},
{
label: '浏览器',
- content: renderBrowserIcon(data.browser),
+ content: (
+
+ {renderBrowserIcon(data.browser, 'shrink-0')}
+ {data.browser}
+
+ ),
},
];
});
diff --git a/apps/web-antd/src/views/monitor/online/data.ts b/apps/web-antd/src/views/monitor/online/data.tsx
similarity index 89%
rename from apps/web-antd/src/views/monitor/online/data.ts
rename to apps/web-antd/src/views/monitor/online/data.tsx
index 15944dc4..0b4eab10 100644
--- a/apps/web-antd/src/views/monitor/online/data.ts
+++ b/apps/web-antd/src/views/monitor/online/data.tsx
@@ -46,7 +46,12 @@ export const columns: VxeGridProps['columns'] = [
field: 'browser',
slots: {
default: ({ row }) => {
- return renderBrowserIcon(row.browser, true) as VNode;
+ return (
+
+ {renderBrowserIcon(row.browser, 'shrink-0')}
+ {row.browser}
+
+ );
},
},
},
diff --git a/packages/icons/src/iconify-offline/index.ts b/packages/icons/src/iconify-offline/index.ts
index 216c154a..e2f0e8ad 100644
--- a/packages/icons/src/iconify-offline/index.ts
+++ b/packages/icons/src/iconify-offline/index.ts
@@ -2,7 +2,6 @@ import { createIconifyOfflineIcon } from '@vben-core/icons';
import githubOutlined from '@iconify/icons-ant-design/github-outlined';
import userOutlined from '@iconify/icons-ant-design/user-outlined';
-import ucIcon from '@iconify/icons-arcticons/uc-browser';
import defaultFileIcon from '@iconify/icons-bx/file';
import sqlIcon from '@iconify/icons-carbon/sql';
import linuxIcon from '@iconify/icons-devicon/linux';
@@ -10,23 +9,12 @@ import windowsIcon from '@iconify/icons-devicon/windows8';
import androidIcon from '@iconify/icons-flat-color-icons/android-os';
import folderIcon from '@iconify/icons-flat-color-icons/folder';
import defaultOsIcon from '@iconify/icons-ic/outline-computer';
-import chromeIcon from '@iconify/icons-logos/chrome';
-import firefoxIcon from '@iconify/icons-logos/firefox';
-import edgeIcon from '@iconify/icons-logos/microsoft-edge';
-import operaIcon from '@iconify/icons-logos/opera';
-import quarkIcon from '@iconify/icons-logos/quarkus-icon';
-import safariIcon from '@iconify/icons-logos/safari';
import vueIcon from '@iconify/icons-logos/vue';
import iphoneIcon from '@iconify/icons-majesticons/iphone-x-apps-line';
import menuIcon from '@iconify/icons-material-symbols/menu';
import okButtonIcon from '@iconify/icons-mdi/button-pointer';
-import micromessengerIcon from '@iconify/icons-mdi/wechat';
-import defaultBrowserIcon from '@iconify/icons-ph/browser-duotone';
-import baiduIcon from '@iconify/icons-ri/baidu-fill';
import dingdingFill from '@iconify/icons-ri/dingding-fill';
-import dingtalkIcon from '@iconify/icons-ri/dingding-line';
import giteeIcon from '@iconify/icons-simple-icons/gitee';
-import qqIcon from '@iconify/icons-simple-icons/tencentqq';
import javaIcon from '@iconify/icons-skill-icons/java-light';
import tsIcon from '@iconify/icons-skill-icons/typescript';
import xmlIcon from '@iconify/icons-tabler/file-type-xml';
@@ -76,42 +64,6 @@ export const DefaultOsIcon = createIconifyOfflineIcon(
defaultOsIcon,
);
-// 浏览器相关图标
-export const ChromeIcon = createIconifyOfflineIcon('logos:chrome', chromeIcon);
-export const EdgeIcon = createIconifyOfflineIcon(
- 'logos:microsoft-edge',
- edgeIcon,
-);
-export const FirefoxIcon = createIconifyOfflineIcon(
- 'logos:firefox',
- firefoxIcon,
-);
-export const OperaIcon = createIconifyOfflineIcon('logos:opera', operaIcon);
-export const SafariIcon = createIconifyOfflineIcon('logos:safari', safariIcon);
-export const MicromessengerIcon = createIconifyOfflineIcon(
- 'mdi:wechat',
- micromessengerIcon,
-);
-export const QuarkIcon = createIconifyOfflineIcon(
- 'logos:quarkus-icon',
- quarkIcon,
-);
-export const QQIcon = createIconifyOfflineIcon(
- 'simple-icons:tencentqq',
- qqIcon,
-);
-export const DingtalkIcon = createIconifyOfflineIcon(
- 'ri:dingding-line',
- dingtalkIcon,
-);
-export const UcIcon = createIconifyOfflineIcon('arcticons:uc-browser', ucIcon);
-export const BaiduIcon = createIconifyOfflineIcon('ri:baidu-fill', baiduIcon);
-// 未知浏览器图标
-export const DefaultBrowserIcon = createIconifyOfflineIcon(
- 'ph:browser-duotone',
- defaultBrowserIcon,
-);
-
// 菜单类型 目录/按钮/菜单
export const FolderIcon = createIconifyOfflineIcon(
'flat-color-icons:folder',