fix(system): 🐛 修复mac端兼容问题

升级个别版本的依赖
This commit is contained in:
nongyehong 2024-08-06 22:19:36 +08:00
parent 085a773967
commit 0daef59a9f
38 changed files with 725 additions and 340 deletions

View File

@ -30,7 +30,7 @@
"tauri:dev": "tauri dev",
"tauri:build": "tauri build",
"tauri:build->debug": "tauri build --debug",
"tauri:icon": "tauri icon public/logo.png",
"tauri:icon": "tauri icon hula.png",
"preinstall": "npx only-allow pnpm",
"commit": "git add . && git-cz",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
@ -39,19 +39,19 @@
},
"dependencies": {
"@tauri-apps/api": "^1.6.0",
"axios": "^1.7.2",
"axios": "^1.7.3",
"colorthief": "^2.4.0",
"dayjs": "^1.11.11",
"grapheme-splitter": "^1.0.4",
"lodash-es": "^4.17.21",
"mitt": "^3.0.1",
"naive-ui": "^2.38.2",
"pinia": "^2.1.7",
"naive-ui": "^2.39.0",
"pinia": "^2.2.1",
"pinia-plugin-persistedstate": "^3.2.1",
"pinia-shared-state": "^0.5.1",
"vue": "^3.4.31",
"vue-draggable-plus": "^0.4.1",
"vue-router": "^4.4.0"
"vue-router": "^4.4.2"
},
"devDependencies": {
"@babel/eslint-parser": "^7.24.7",
@ -60,15 +60,15 @@
"@rollup/plugin-terser": "^0.4.4",
"@tauri-apps/cli": "1.5.14",
"@types/lodash-es": "^4.17.12",
"@types/node": "^20.14.9",
"@types/node": "^20.14.14",
"@typescript-eslint/eslint-plugin": "7.1.0",
"@typescript-eslint/parser": "^7.15.0",
"@unocss/preset-uno": "^0.61.0",
"@unocss/reset": "^0.61.0",
"@unocss/transformer-directives": "^0.61.0",
"@unocss/transformer-variant-group": "^0.61.0",
"@unocss/vite": "^0.61.0",
"@vitejs/plugin-vue": "^5.0.5",
"@unocss/preset-uno": "^0.61.9",
"@unocss/reset": "^0.61.9",
"@unocss/transformer-directives": "^0.61.9",
"@unocss/transformer-variant-group": "^0.61.9",
"@unocss/vite": "^0.61.9",
"@vitejs/plugin-vue": "^5.1.2",
"@vitejs/plugin-vue-jsx": "^4.0.0",
"@vueuse/core": "^10.11.0",
"commitizen": "^4.3.0",
@ -84,12 +84,12 @@
"lint-staged": "^15.2.7",
"oxlint": "^0.2.18",
"prettier": "^3.3.2",
"sass": "^1.77.6",
"sass": "^1.77.8",
"sass-loader": "^14.2.1",
"typescript": "^5.5.3",
"unplugin-auto-import": "^0.17.6",
"unplugin-auto-import": "^0.17.8",
"unplugin-vue-components": "^0.26.0",
"vite": "5.3.2",
"vite": "5.3.5",
"vue-tsc": "^2.0.24"
},
"config": {

File diff suppressed because it is too large Load Diff

View File

@ -20,13 +20,12 @@ strip = true # 删除调试符号
tauri-build = { version = "1.5.2", features = [] }
[dependencies]
tauri = { version = "1.7.1", features = [ "http-all", "os-all", "process-all", "notification-all", "macos-private-api", "fs-all", "window-all", "system-tray", "shell-open", "icon-png", "icon-ico"] }
tauri = { version = "1.7.1", features = [ "macos-private-api", "http-all", "os-all", "process-all", "notification-all", "fs-all", "window-all", "system-tray", "shell-open", "icon-png", "icon-ico"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
window-shadows = "0.2.2" # windows 阴影和圆角
window-vibrancy = "0.4.3" # windows 磨砂背景 tauri-v1.x版本最好使用0.4.3版本
tokio = { version = "1.36.0", features = ["macros", "windows-sys", "rt-multi-thread", "time"] }
[features]
# this feature is used for production builds or when `devPath` points to the filesystem
# DO NOT REMOVE!!

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 114 KiB

View File

@ -10,8 +10,9 @@ pub fn reset_set_window<R: Runtime>(app: tauri::AppHandle<R>, label: String) {
set_shadow(&window, true).unwrap();
#[cfg(target_os = "macos")]
window_vibrancy::apply_acrylic(&window, Some((255, 255, 255, 1)))
.expect("Unsupported platform! 'apply_vibrancy' is only supported on macOS");
use window_vibrancy::NSVisualEffectMaterial;
window_vibrancy::apply_vibrancy(&window, NSVisualEffectMaterial::HudWindow, None, None)
.expect("Unsupported platform! 'apply_vibrancy' is only supported on macOS");
#[cfg(target_os = "windows")]
window_vibrancy::apply_acrylic(&window, Some((255, 255, 255, 1)))
@ -23,7 +24,7 @@ pub fn reset_set_window<R: Runtime>(app: tauri::AppHandle<R>, label: String) {
pub fn set_stateless_icon(app: AppHandle) {
app.tray_handle()
.set_icon(tauri::Icon::Raw(
include_bytes!("../../stateless/icon.ico").to_vec(),
include_bytes!("../../stateless/icon-an.ico").to_vec(),
))
.unwrap();
}
@ -33,7 +34,7 @@ pub fn set_stateless_icon(app: AppHandle) {
pub fn set_main_icon(app: AppHandle) {
app.tray_handle()
.set_icon(tauri::Icon::Raw(
include_bytes!("../../icons/icon.ico").to_vec(),
include_bytes!("../../stateless/icon.ico").to_vec(),
))
.unwrap();
}
@ -96,4 +97,4 @@ pub fn tray_blink(
.unwrap();
}
}));
}
}

View File

@ -8,13 +8,13 @@ pub fn set_window_attribute<R: Runtime>(app: &tauri::App<R>) {
#[cfg(any(windows, target_os = "macos"))]
set_shadow(&window, true).unwrap();
// // 设置窗口的磨砂背景
// #[cfg(target_os = "macos")]
// window_vibrancy::apply_acrylic(&window, NSVisualEffectMaterial::Sidebar)
// .expect("Unsupported platform! 'apply_vibrancy' is only supported on macOS");
//
// #[cfg(target_os = "windows")]
// window_vibrancy::apply_acrylic(&window, Some((255, 255, 255, 1)))
// .expect("Unsupported platform! 'apply_blur' is only supported on Windows");
#[cfg(target_os = "macos")]
use window_vibrancy::NSVisualEffectMaterial;
window_vibrancy::apply_vibrancy(&window, NSVisualEffectMaterial::HudWindow, None, None)
.expect("Unsupported platform! 'apply_vibrancy' is only supported on macOS");
#[cfg(target_os = "windows")]
window_vibrancy::apply_acrylic(&window, Some((255, 255, 255, 1)))
.expect("Unsupported platform! 'apply_blur' is only supported on Windows");
}
}

View File

@ -12,7 +12,7 @@ mod common;
#[tokio::main]
async fn main() {
let context = tauri::generate_context!();
let system_tray = SystemTray::new();
let system_tray = SystemTray::new().with_title("HuLa-IM");
// 初始化状态
let state = TrayState {
id: Mutex::new(None)

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -77,8 +77,7 @@
"width": 320,
"height": 448,
"skipTaskbar": false,
"decorations": false,
"transparent": true
"decorations": false
},
{
"label": "tray",

Binary file not shown.

View File

@ -1,6 +1,6 @@
<template>
<!-- user-select: none让元素不可以选中 -->
<div data-tauri-drag-region class="flex justify-end select-none">
<div v-if="osType === 'Windows'" data-tauri-drag-region class="flex justify-end select-none">
<!-- 固定在最顶层 -->
<div v-if="topWinLabel !== void 0" @click="handleAlwaysOnTop" class="hover-box">
<n-popover trigger="hover">
@ -84,6 +84,7 @@ import { CloseBxEnum, EventEnum, MittEnum } from '@/enums'
import { storeToRefs } from 'pinia'
import { PersistedStateOptions } from 'pinia-plugin-persistedstate'
import { exit } from '@tauri-apps/api/process'
import { type } from '@tauri-apps/api/os'
/**
* 新版defineProps可以直接结构 { minW, maxW, closeW } 如果需要使用默认值withDefaults的时候使用新版解构方式会报错
@ -124,6 +125,8 @@ const alwaysOnTopStatus = computed(() => {
if (topWinLabel.value === void 0) return false
return alwaysOnTopStore.getWindowTop(topWinLabel.value)
})
/** 判断当前是windows还是mac系统 */
const osType = ref()
watchEffect(() => {
tipsRef.type = tips.value.type
@ -230,6 +233,13 @@ const handleCloseWin = async () => {
// resize
onMounted(() => {
window.addEventListener('resize', handleResize)
type().then((e) => {
if (e === 'Windows_NT') {
osType.value = 'Windows'
} else if (e === 'Darwin') {
osType.value = 'MacOS'
}
})
})
onUnmounted(() => {

View File

@ -46,7 +46,7 @@ export const useWindow = () => {
minWidth: minW,
skipTaskbar: false,
decorations: false,
transparent: true,
transparent: false,
fileDropEnabled: isDrag
})

View File

@ -210,7 +210,7 @@ export const CheckUpdate = defineComponent(() => {
<NFlex justify={'space-between'} align={'center'}>
<NFlex align={'center'} size={10}>
<p>:</p>
<p class="text-(24px #909090) font-bold">{pkg.version}</p>
<p class="text-(24px #909090) font-500">{pkg.version}</p>
</NFlex>
<NFlex align={'center'} size={10}>
<p class="text-(12px #909090)">:</p>

View File

@ -0,0 +1,4 @@
@font-face {
font-family: 'AliFangYuan';
src: url('/src/assets/fonts/AlimamaFangYuanTiVF-Thin.ttf');
}

View File

@ -1,3 +1,10 @@
@import "fonts";
* {
font-family: 'AliFangYuan', sans-serif !important;
}
html, body {
overscroll-behavior: none; // 禁止mac的触底反弹效果
}
/**! 主题变量 */
:root {
// 整体布局背景

View File

@ -7,59 +7,58 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
ActionBar: typeof import('./../components/windows/ActionBar.vue')['default']
ChatBox: typeof import('./../components/rightBox/chatBox/index.vue')['default']
ChatFooter: typeof import('./../components/rightBox/chatBox/ChatFooter.vue')['default']
ChatHeader: typeof import('./../components/rightBox/chatBox/ChatHeader.vue')['default']
ChatMain: typeof import('./../components/rightBox/chatBox/ChatMain.vue')['default']
ChatSidebar: typeof import('./../components/rightBox/chatBox/ChatSidebar.vue')['default']
ContextMenu: typeof import('./../components/common/ContextMenu.vue')['default']
Details: typeof import('./../components/rightBox/Details.vue')['default']
Emoji: typeof import('./../components/rightBox/emoji/index.vue')['default']
Image: typeof import('./../components/rightBox/renderMessage/Image.vue')['default']
InfoPopover: typeof import('./../components/common/InfoPopover.vue')['default']
MsgInput: typeof import('./../components/rightBox/MsgInput.vue')['default']
NaiveProvider: typeof import('./../components/common/NaiveProvider.vue')['default']
NAlert: typeof import('naive-ui')['NAlert']
NAvatar: typeof import('naive-ui')['NAvatar']
NAvatarGroup: typeof import('naive-ui')['NAvatarGroup']
NBadge: typeof import('naive-ui')['NBadge']
NButton: typeof import('naive-ui')['NButton']
NButtonGroup: typeof import('naive-ui')['NButtonGroup']
NCheckbox: typeof import('naive-ui')['NCheckbox']
NCode: (typeof import('naive-ui'))['NCode']
NCollapse: typeof import('naive-ui')['NCollapse']
NCollapseItem: typeof import('naive-ui')['NCollapseItem']
NConfigProvider: typeof import('naive-ui')['NConfigProvider']
NDialogProvider: typeof import('naive-ui')['NDialogProvider']
NDropdown: typeof import('naive-ui')['NDropdown']
NEllipsis: typeof import('naive-ui')['NEllipsis']
NFlex: typeof import('naive-ui')['NFlex']
NIcon: typeof import('naive-ui')['NIcon']
NIconWrapper: typeof import('naive-ui')['NIconWrapper']
NImage: typeof import('naive-ui')['NImage']
NImageGroup: typeof import('naive-ui')['NImageGroup']
NInput: typeof import('naive-ui')['NInput']
NLoadingBarProvider: typeof import('naive-ui')['NLoadingBarProvider']
NMessageProvider: typeof import('naive-ui')['NMessageProvider']
NModal: typeof import('naive-ui')['NModal']
NModalProvider: typeof import('naive-ui')['NModalProvider']
NNotificationProvider: typeof import('naive-ui')['NNotificationProvider']
NPopover: typeof import('naive-ui')['NPopover']
NPopselect: typeof import('naive-ui')['NPopselect']
NQrCode: typeof import('naive-ui')['NQrCode']
NRadio: typeof import('naive-ui')['NRadio']
NScrollbar: typeof import('naive-ui')['NScrollbar']
NSelect: typeof import('naive-ui')['NSelect']
NSkeleton: typeof import('naive-ui')['NSkeleton']
NSwitch: typeof import('naive-ui')['NSwitch']
NTabPane: typeof import('naive-ui')['NTabPane']
NTabs: typeof import('naive-ui')['NTabs']
NTooltip: typeof import('naive-ui')['NTooltip']
NVirtualList: typeof import('naive-ui')['NVirtualList']
RenderMessage: typeof import('./../components/rightBox/renderMessage/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
Text: typeof import('./../components/rightBox/renderMessage/Text.vue')['default']
ActionBar: (typeof import('./../components/windows/ActionBar.vue'))['default']
ChatBox: (typeof import('./../components/rightBox/chatBox/index.vue'))['default']
ChatFooter: (typeof import('./../components/rightBox/chatBox/ChatFooter.vue'))['default']
ChatHeader: (typeof import('./../components/rightBox/chatBox/ChatHeader.vue'))['default']
ChatMain: (typeof import('./../components/rightBox/chatBox/ChatMain.vue'))['default']
ChatSidebar: (typeof import('./../components/rightBox/chatBox/ChatSidebar.vue'))['default']
ContextMenu: (typeof import('./../components/common/ContextMenu.vue'))['default']
Details: (typeof import('./../components/rightBox/Details.vue'))['default']
Emoji: (typeof import('./../components/rightBox/emoji/index.vue'))['default']
Image: (typeof import('./../components/rightBox/renderMessage/Image.vue'))['default']
InfoPopover: (typeof import('./../components/common/InfoPopover.vue'))['default']
MsgInput: (typeof import('./../components/rightBox/MsgInput.vue'))['default']
NaiveProvider: (typeof import('./../components/common/NaiveProvider.vue'))['default']
NAlert: (typeof import('naive-ui'))['NAlert']
NAvatar: (typeof import('naive-ui'))['NAvatar']
NAvatarGroup: (typeof import('naive-ui'))['NAvatarGroup']
NBadge: (typeof import('naive-ui'))['NBadge']
NButton: (typeof import('naive-ui'))['NButton']
NButtonGroup: (typeof import('naive-ui'))['NButtonGroup']
NCheckbox: (typeof import('naive-ui'))['NCheckbox']
NCollapse: (typeof import('naive-ui'))['NCollapse']
NCollapseItem: (typeof import('naive-ui'))['NCollapseItem']
NConfigProvider: (typeof import('naive-ui'))['NConfigProvider']
NDialogProvider: (typeof import('naive-ui'))['NDialogProvider']
NDropdown: (typeof import('naive-ui'))['NDropdown']
NEllipsis: (typeof import('naive-ui'))['NEllipsis']
NFlex: (typeof import('naive-ui'))['NFlex']
NIcon: (typeof import('naive-ui'))['NIcon']
NIconWrapper: (typeof import('naive-ui'))['NIconWrapper']
NImage: (typeof import('naive-ui'))['NImage']
NImageGroup: (typeof import('naive-ui'))['NImageGroup']
NInput: (typeof import('naive-ui'))['NInput']
NLoadingBarProvider: (typeof import('naive-ui'))['NLoadingBarProvider']
NMessageProvider: (typeof import('naive-ui'))['NMessageProvider']
NModal: (typeof import('naive-ui'))['NModal']
NModalProvider: (typeof import('naive-ui'))['NModalProvider']
NNotificationProvider: (typeof import('naive-ui'))['NNotificationProvider']
NPopover: (typeof import('naive-ui'))['NPopover']
NPopselect: (typeof import('naive-ui'))['NPopselect']
NQrCode: (typeof import('naive-ui'))['NQrCode']
NRadio: (typeof import('naive-ui'))['NRadio']
NScrollbar: (typeof import('naive-ui'))['NScrollbar']
NSelect: (typeof import('naive-ui'))['NSelect']
NSkeleton: (typeof import('naive-ui'))['NSkeleton']
NSwitch: (typeof import('naive-ui'))['NSwitch']
NTabPane: (typeof import('naive-ui'))['NTabPane']
NTabs: (typeof import('naive-ui'))['NTabs']
NTooltip: (typeof import('naive-ui'))['NTooltip']
NVirtualList: (typeof import('naive-ui'))['NVirtualList']
RenderMessage: (typeof import('./../components/rightBox/renderMessage/index.vue'))['default']
RouterLink: (typeof import('vue-router'))['RouterLink']
RouterView: (typeof import('vue-router'))['RouterView']
Text: (typeof import('./../components/rightBox/renderMessage/Text.vue'))['default']
}
}

View File

@ -11,7 +11,7 @@
<div v-if="!isUnlockPage" @click.stop="isUnlockPage = true" class="size-full">
<n-flex vertical align="center" :size="120" class="size-full mt-10%">
<n-flex vertical align="center" :size="20" class="will-change-auto will-change-contents">
<p class="text-(100px #f1f1f1) font-bold">{{ currentTime }}</p>
<p class="text-(100px #f1f1f1) font-500">{{ currentTime }}</p>
<n-flex align="center" :size="30" class="text-(30px #f1f1f1)">
<p>{{ currentMonthAndDate }}</p>
<p>{{ currentWeekday }}</p>
@ -48,7 +48,7 @@
class="h-full backdrop-blur-md">
<n-flex vertical align="center" justify="center" :size="30" class="mt--75px">
<n-avatar round style="border: 2px solid #f1f1f1" :size="120" :src="login.accountInfo.avatar" />
<p class="text-(24px #f1f1f1) font-bold">{{ login.accountInfo.name }}</p>
<p class="text-(24px #f1f1f1) font-500">{{ login.accountInfo.name }}</p>
<!-- 密码输入框 -->
<n-config-provider :theme="lightTheme">
@ -93,7 +93,7 @@
<p class="text-(18px #f1f1f1)">密码不正确, 请再试一次</p>
<p
@click="init"
class="w-120px bg-[rgba(255,255,255,0.1)] backdrop-blur-xl cursor-pointer p-10px rounded-8px text-(14px #323232 center) font-bold">
class="w-120px bg-[rgba(255,255,255,0.1)] backdrop-blur-xl cursor-pointer p-10px rounded-8px text-(14px #323232 center) font-500">
确定
</p>
</n-flex>

View File

@ -10,7 +10,7 @@
class="relative bg-[--left-active-color] h-160px w-full select-none">
<n-avatar :size="120" round bordered :src="login.accountInfo.avatar" />
<n-flex vertical justify="center" :size="20">
<p class="text-(24px [--chat-text-color]) font-bold">{{ login.accountInfo.name }}</p>
<p class="text-(24px [--chat-text-color]) font-500">{{ login.accountInfo.name }}</p>
<n-flex align="center" justify="space-between" :size="30" class="mt-5px">
<template v-for="item in titleList" :key="item.label">

View File

@ -22,7 +22,7 @@
<n-flex align="center">
<n-avatar bordered round :src="login.accountInfo.avatar" :size="48" />
<n-flex vertical>
<p class="text-(14px [--chat-text-color]) font-semibold">{{ login.accountInfo.name }}</p>
<p class="text-(14px [--chat-text-color]) font-500">{{ login.accountInfo.name }}</p>
<p class="text-(12px #909090)">剩余28天过期</p>
</n-flex>
</n-flex>
@ -53,7 +53,7 @@
<n-flex justify="space-between" align="center" :size="0" class="leading-22px">
<n-ellipsis
style="width: calc(100% - 20px)"
class="text-(14px [--chat-text-color]) truncate font-semibold select-none">
class="text-(14px [--chat-text-color]) truncate font-500 select-none">
{{ item.title }}
</n-ellipsis>
<svg

View File

@ -9,7 +9,7 @@
<p
v-if="!isEdit"
@click="handleEdit"
class="text-(22px [--chat-text-color]) truncate font-bold hover:underline cursor-pointer">
class="text-(22px [--chat-text-color]) truncate font-500 hover:underline cursor-pointer">
{{ currentChat.title }}
</p>
<n-input

View File

@ -14,7 +14,7 @@
:size="12"
class="examples">
<n-flex align="center" justify="space-between">
<p class="text-(14px [--chat-text-color]) font-bold">{{ item.title }}</p>
<p class="text-(14px [--chat-text-color]) font-500">{{ item.title }}</p>
<svg class="size-16px"><use :href="`#${item.icon}`"></use></svg>
</n-flex>
<component :is="item.content" />
@ -116,7 +116,7 @@ const examplesList: Example = [
</NFlex>
<NFlex justify={'space-between'} align={'center'} class={'foot'}>
<p class={'text-(14px [--chat-text-color]) font-bold pl-6px opacity-0'}>试一试</p>
<p class={'text-(14px [--chat-text-color]) font-500 pl-6px opacity-0'}>试一试</p>
<svg style={{ filter: 'drop-shadow(0 0 0.6em #13987f)' }} class="color-#13987f pr-6px size-26px opacity-0">
<use href="#Up-GPT"></use>
</svg>

View File

@ -3,7 +3,7 @@
style="box-shadow: var(--shadow-enabled) 4px 4px var(--box-shadow-color)"
class="flex border-b-(1px solid [--line-color]) truncate p-[14px_20px] justify-between items-center gap-50px">
<n-flex :size="10" vertical class="truncate">
<p class="text-(22px [--chat-text-color]) truncate font-bold">设置</p>
<p class="text-(22px [--chat-text-color]) truncate font-500">设置</p>
<p class="text-(14px #707070)">所有设置选项</p>
</n-flex>
@ -24,7 +24,7 @@
<n-flex vertical justify="center" v-for="(item, index) in key" :key="index">
<n-flex justify="space-between" :size="0" align="center" class="p-8px">
<n-flex vertical :size="4">
<p class="text-(15px [--chat-text-color]) font-bold">{{ item.title }}</p>
<p class="text-(15px [--chat-text-color]) font-500">{{ item.title }}</p>
<p v-if="item.description" class="text-(12px [--chat-text-color])">{{ item.description }}</p>
</n-flex>