diff --git a/.gitattributes b/.gitattributes index 19838378..40e5e1e7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -48,6 +48,8 @@ *.kt linguist-vendored *.java linguist-vendored *.py linguist-vendored +*.nsh linguist-vendored +*.nsi linguist-vendored # 确保构建目录和依赖目录不被统计 **/target/** linguist-vendored diff --git a/package.json b/package.json index 26c4c829..8a6bfbbb 100644 --- a/package.json +++ b/package.json @@ -115,6 +115,7 @@ "lodash-es": "^4.17.21", "mitt": "^3.0.1", "naive-ui": "^2.43.1", + "p-limit": "^7.1.1", "pinia": "^3.0.3", "pinia-plugin-persistedstate": "^4.5.0", "pinia-shared-state": "^1.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a09d0f7..15c10b03 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -116,6 +116,9 @@ importers: naive-ui: specifier: ^2.43.1 version: 2.43.1(vue@3.5.22(typescript@5.9.3)) + p-limit: + specifier: ^7.1.1 + version: 7.1.1 pinia: specifier: ^3.0.3 version: 3.0.3(typescript@5.9.3)(vue@3.5.22(typescript@5.9.3)) @@ -3670,6 +3673,10 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@7.1.1: + resolution: {integrity: sha512-i8PyM2JnsNChVSYWLr2BAjNoLi0BAYC+wecOnZnVV+YSNJkzP7cWmvI34dk0WArWfH9KwBHNoZI3P3MppImlIA==} + engines: {node: '>=20'} + p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4704,6 +4711,10 @@ packages: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + yoctocolors-cjs@2.1.2: resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} engines: {node: '>=18'} @@ -8046,6 +8057,10 @@ snapshots: dependencies: yocto-queue: 1.1.1 + p-limit@7.1.1: + dependencies: + yocto-queue: 1.2.1 + p-locate@6.0.0: dependencies: p-limit: 4.0.0 @@ -9113,6 +9128,8 @@ snapshots: yocto-queue@1.1.1: {} + yocto-queue@1.2.1: {} + yoctocolors-cjs@2.1.2: {} yoctocolors-cjs@2.1.3: {} diff --git a/public/icon.js b/public/icon.js index da2610bb..13343bb2 100644 --- a/public/icon.js +++ b/public/icon.js @@ -1 +1 @@ -!function(e){var t,n,d,o,i,a,r='';function c(){i||(i=!0,d())}t=function(){var e,t,n;(n=document.createElement("div")).innerHTML=r,r=null,(t=n.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",e=t,(n=document.body).firstChild?(t=n.firstChild).parentNode.insertBefore(e,t):n.appendChild(e))},document.addEventListener?["complete","loaded","interactive"].indexOf(document.readyState)>-1?setTimeout(t,0):(n=function(){document.removeEventListener("DOMContentLoaded",n,!1),t()},document.addEventListener("DOMContentLoaded",n,!1)):document.attachEvent&&(d=t,o=e.document,i=!1,(a=function(){try{o.documentElement.doScroll("left")}catch(e){return void setTimeout(a,50)}c()})(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,c())})}(window); +!function(e){var t,n,d,o,i,a,r='';function c(){i||(i=!0,d())}t=function(){var e,t,n;(n=document.createElement("div")).innerHTML=r,r=null,(t=n.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",e=t,(n=document.body).firstChild?(t=n.firstChild).parentNode.insertBefore(e,t):n.appendChild(e))},document.addEventListener?["complete","loaded","interactive"].indexOf(document.readyState)>-1?setTimeout(t,0):(n=function(){document.removeEventListener("DOMContentLoaded",n,!1),t()},document.addEventListener("DOMContentLoaded",n,!1)):document.attachEvent&&(d=t,o=e.document,i=!1,(a=function(){try{o.documentElement.doScroll("left")}catch(e){return void setTimeout(a,50)}c()})(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,c())})}(window); diff --git a/src-tauri/src/command/file_manager_command.rs b/src-tauri/src/command/file_manager_command.rs index 32d67cb6..9e36023d 100644 --- a/src-tauri/src/command/file_manager_command.rs +++ b/src-tauri/src/command/file_manager_command.rs @@ -389,13 +389,13 @@ pub async fn get_navigation_items() -> Result, String> { NavigationItem { key: "myFiles".to_string(), label: "我的文件".to_string(), - icon: "folder".to_string(), + icon: "file".to_string(), active: true, }, NavigationItem { key: "senders".to_string(), label: "发送人".to_string(), - icon: "user".to_string(), + icon: "avatar".to_string(), active: false, }, NavigationItem { @@ -407,7 +407,7 @@ pub async fn get_navigation_items() -> Result, String> { NavigationItem { key: "groups".to_string(), label: "群聊".to_string(), - icon: "group".to_string(), + icon: "peoples".to_string(), active: false, }, ]; diff --git a/src/components/fileManager/FileContent.vue b/src/components/fileManager/FileContent.vue index c8926af8..b65d0b81 100644 --- a/src/components/fileManager/FileContent.vue +++ b/src/components/fileManager/FileContent.vue @@ -1,5 +1,5 @@ diff --git a/src/components/fileManager/SideNavigation.vue b/src/components/fileManager/SideNavigation.vue index 5b523256..b18c105b 100644 --- a/src/components/fileManager/SideNavigation.vue +++ b/src/components/fileManager/SideNavigation.vue @@ -17,7 +17,7 @@ - {{ item.label }} + {{ item.label }} @@ -79,7 +79,6 @@ const handleNavigationClick = (key: string) => { &--active { background-color: rgba(19, 152, 127, 0.2); color: #13987f; - font-weight: 600; .navigation-item__icon svg { color: #13987f; @@ -98,11 +97,6 @@ const handleNavigationClick = (key: string) => { } } -.navigation-item__label { - font-size: 14px; - font-weight: inherit; -} - // 响应式适配 @media (max-width: 800px) { .side-navigation { diff --git a/src/components/fileManager/UserItem.vue b/src/components/fileManager/UserItem.vue index ee470b07..25b42d16 100644 --- a/src/components/fileManager/UserItem.vue +++ b/src/components/fileManager/UserItem.vue @@ -94,8 +94,8 @@ const handleAvatarError = (event: Event) => { .user-item { display: flex; align-items: center; - padding: 12px; - border-radius: 8px; + padding: 10px 8px; + border-radius: 12px; cursor: pointer; transition: all 0.2s ease; user-select: none; @@ -106,7 +106,7 @@ const handleAvatarError = (event: Event) => { &--selected { background-color: #e8f4f1; - border: 1px solid #13987f; + box-shadow: inset 0 0 0 1px #13987f; } } diff --git a/src/components/fileManager/UserList.vue b/src/components/fileManager/UserList.vue index d9e48f83..df1d6011 100644 --- a/src/components/fileManager/UserList.vue +++ b/src/components/fileManager/UserList.vue @@ -10,7 +10,12 @@ :placeholder="getSearchPlaceholder()" :input-props="{ spellcheck: false }" clearable - class="search-input" + spellCheck="false" + autoComplete="off" + autoCorrect="off" + autoCapitalize="off" + class="rounded-6px border-(solid 1px [--line-color]) w-full relative text-12px" + size="small" @input="handleSearch">