From 2bcb2c23cac3cd433b96147fc562bcde7a2a65ff Mon Sep 17 00:00:00 2001 From: Muspi Merol <74518716+CNSeniorious000@users.noreply.github.com> Date: Mon, 22 May 2023 05:08:22 +0800 Subject: [PATCH 01/13] feat: synchronize conversation name to `document.title` --- src/components/header/ConversationHeaderInfo.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/header/ConversationHeaderInfo.tsx b/src/components/header/ConversationHeaderInfo.tsx index 563ca16d..3ede1092 100644 --- a/src/components/header/ConversationHeaderInfo.tsx +++ b/src/components/header/ConversationHeaderInfo.tsx @@ -1,4 +1,4 @@ -import { Show } from 'solid-js' +import { Show, createEffect } from 'solid-js' import { useStore } from '@nanostores/solid' import { conversationMap, currentConversationId } from '@/stores/conversation' import { useI18n } from '@/hooks' @@ -11,6 +11,8 @@ export default () => { return $conversationMap()[$currentConversationId()] } + createEffect(() => { document.title = currentConversation() ? `Anse • ${(currentConversation().name || t('conversations.untitled'))}` : 'Anse' }) + return (
From 00b160b3a1ff11feffdf1fda44c43457cd7942ec Mon Sep 17 00:00:00 2001 From: yzh990918 <251205668@qq.com> Date: Mon, 22 May 2023 14:27:11 +0800 Subject: [PATCH 02/13] fix: read undefined when editing APIKey --- src/components/ui/SettingsApiKey.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/ui/SettingsApiKey.tsx b/src/components/ui/SettingsApiKey.tsx index e5a62796..f4292c48 100644 --- a/src/components/ui/SettingsApiKey.tsx +++ b/src/components/ui/SettingsApiKey.tsx @@ -1,4 +1,5 @@ import { createSignal } from 'solid-js' +import { Show } from 'solid-js/web' import { useClipboardCopy } from '@/hooks' import SettingsNotDefined from './SettingsNotDefined' import type { Accessor } from 'solid-js' @@ -21,13 +22,15 @@ export default ({ settings, editing, value, setValue }: Props) => {
setValue(e.currentTarget.value)} /> -
{ setIsOpen(!isOpen()) }}> -
-
+ +
{ setIsOpen(!isOpen()) }}> +
+
+
)} {!editing() && value() && ( From ab6ccedfcee0711720230ab6bee43e518e8e454f Mon Sep 17 00:00:00 2001 From: yzh990918 <251205668@qq.com> Date: Mon, 22 May 2023 16:14:02 +0800 Subject: [PATCH 03/13] chore: update zag deps --- package.json | 18 +-- pnpm-lock.yaml | 364 +++++++++++++++++++++++++------------------------ 2 files changed, 192 insertions(+), 190 deletions(-) diff --git a/package.json b/package.json index 3dacb9ee..39cfc99e 100644 --- a/package.json +++ b/package.json @@ -27,15 +27,15 @@ "@solid-primitives/scheduled": "^1.3.2", "@solid-primitives/scroll": "^2.0.14", "@unocss/reset": "^0.50.6", - "@zag-js/dialog": "^0.7.0", - "@zag-js/menu": "^0.7.0", - "@zag-js/select": "^0.7.0", - "@zag-js/slider": "^0.7.0", - "@zag-js/solid": "^0.7.0", - "@zag-js/switch": "^0.7.0", - "@zag-js/toast": "^0.7.0", - "@zag-js/toggle": "^0.7.0", - "@zag-js/tooltip": "^0.7.0", + "@zag-js/dialog": "^0.9.2", + "@zag-js/menu": "^0.9.2", + "@zag-js/select": "^0.9.2", + "@zag-js/slider": "^0.9.2", + "@zag-js/solid": "^0.9.2", + "@zag-js/switch": "^0.9.2", + "@zag-js/toast": "^0.9.2", + "@zag-js/toggle": "^0.9.2", + "@zag-js/tooltip": "^0.9.2", "astro": "^2.2.0", "bumpp": "^9.1.0", "destr": "^1.2.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9563f3e7..13f3ab47 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,32 +35,32 @@ dependencies: specifier: ^0.50.6 version: 0.50.6 '@zag-js/dialog': - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.9.2 + version: 0.9.2 '@zag-js/menu': - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.9.2 + version: 0.9.2 '@zag-js/select': - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.9.2 + version: 0.9.2 '@zag-js/slider': - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.9.2 + version: 0.9.2 '@zag-js/solid': - specifier: ^0.7.0 - version: 0.7.0(solid-js@1.6.12) + specifier: ^0.9.2 + version: 0.9.2(solid-js@1.6.12) '@zag-js/switch': - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.9.2 + version: 0.9.2 '@zag-js/toast': - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.9.2 + version: 0.9.2 '@zag-js/toggle': - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.9.2 + version: 0.9.2 '@zag-js/tooltip': - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.9.2 + version: 0.9.2 astro: specifier: ^2.2.0 version: 2.2.0 @@ -1776,14 +1776,14 @@ packages: - typescript dev: true - /@floating-ui/core@1.2.5: - resolution: {integrity: sha512-qrcbyfnRVziRlB6IYwjCopYhO7Vud750JlJyuljruIXcPxr22y8zdckcJGsuOdnQ639uVD1tTXddrcH3t3QYIQ==} + /@floating-ui/core@1.2.6: + resolution: {integrity: sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg==} dev: false - /@floating-ui/dom@1.2.5: - resolution: {integrity: sha512-+sAUfpQ3Frz+VCbPCqj+cZzvEESy3fjSeT/pDWkYCWOBXYNNKZfuVsHuv8/JO2zze8+Eb/Q7a6hZVgzS81fLbQ==} + /@floating-ui/dom@1.2.8: + resolution: {integrity: sha512-XLwhYV90MxiHDq6S0rzFZj00fnDM+A1R9jhSioZoMsa7G0Q0i+Q4x40ajR8FHSdYDE1bgjG45mIWe6jtv9UPmg==} dependencies: - '@floating-ui/core': 1.2.5 + '@floating-ui/core': 1.2.6 dev: false /@humanwhocodes/config-array@0.11.8: @@ -2665,234 +2665,240 @@ packages: resolution: {integrity: sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==} dev: false - /@zag-js/anatomy@0.1.4: - resolution: {integrity: sha512-Xc5QmQwY0W3VdkukYVaoujuCmgf0Y2ZbXhIBi0CJ0d8wWRwjkphhJu8l9kDyX4ElpyzvExYbrpTuQoI4BspaVQ==} + /@zag-js/anatomy@0.9.2: + resolution: {integrity: sha512-DgzZf4oo1/tdnSzUDu75pdxYep8WmgvxZi3h1Qa0hlu0erGvWPV0L7aAkdrau+Z3z4phc0FndieIDZN1oN1bEg==} dev: false - /@zag-js/aria-hidden@0.2.2: - resolution: {integrity: sha512-48e5YT2hb4pyPoTTs97CVcHjq+VGF6yfcpmJ8KY4cSKoB0WWSrb8NLNwv8uMceyqhy4QVE7dEWayR47FRPY02g==} + /@zag-js/aria-hidden@0.9.2: + resolution: {integrity: sha512-Md+RCv8yOQ7uALjE8GRV0al3sb007aobFn1g6Vz0OSUD6Owsl4k1hwV1ZBWkSq6+OHhty35HROydqsKANDGc1g==} + dependencies: + '@zag-js/dom-query': 0.9.2 dev: false - /@zag-js/core@0.7.0: - resolution: {integrity: sha512-5c3HJ1beuAoX9mi8GZ8E6JPRGSEe2aVEAxyR4e7lHGKc/UoLoRrtn/caFGFtN9jNraWQZHS4PDGACHnwD8O+zg==} + /@zag-js/core@0.9.2: + resolution: {integrity: sha512-L8MwOCuKnOdWqjSRlgb8HQYuD29yRmi0PrTip+T42YK4+SiBiROeGcExYH2txIpVCk3Gww8TU5TzOHDvKCACyA==} dependencies: - '@zag-js/store': 0.2.8 + '@zag-js/store': 0.9.2 klona: 2.0.6 dev: false - /@zag-js/dialog@0.7.0: - resolution: {integrity: sha512-A7GMopQQrWxHt+p5OuABvpKv+jahwX7/NFPmAYAcQAdrdiue/wSEUCOXC2KSZIimHkCbSO2CXzGHiX3TSNp+pA==} + /@zag-js/dialog@0.9.2: + resolution: {integrity: sha512-F7LrX2W5lSXukzRNnEL9z8E4zoHmqagrfP/o55jlM8+U/CVoLrRzTmPfl9b3ARguidkFIKj1ZgxZkphM9B0xoQ==} dependencies: - '@zag-js/anatomy': 0.1.4 - '@zag-js/aria-hidden': 0.2.2 - '@zag-js/core': 0.7.0 - '@zag-js/dismissable': 0.6.0 - '@zag-js/dom-query': 0.1.4 - '@zag-js/remove-scroll': 0.2.4 - '@zag-js/types': 0.5.0 - '@zag-js/utils': 0.3.4 - focus-trap: 7.4.0 + '@zag-js/anatomy': 0.9.2 + '@zag-js/aria-hidden': 0.9.2 + '@zag-js/core': 0.9.2 + '@zag-js/dismissable': 0.9.2 + '@zag-js/dom-query': 0.9.2 + '@zag-js/remove-scroll': 0.9.2 + '@zag-js/types': 0.9.2 + '@zag-js/utils': 0.9.2 + focus-trap: 7.4.1 dev: false - /@zag-js/dismissable@0.6.0: - resolution: {integrity: sha512-D6drGv+ZzGguyPFefd4nLCFQGgGy/zQkDaXnHqkBffnooqqWnJizmgxgynajfCQrVK3VfZ473D8V8SD66/jBdQ==} + /@zag-js/dismissable@0.9.2: + resolution: {integrity: sha512-e654TDrIMedzFawTF6o/o4Pdf5k78asE5nSBKri3FZqbHWmpCacLc+vil5d27nc7Y3BXRuM7AyAaFoyBnZ/IOw==} dependencies: - '@zag-js/dom-event': 0.6.0 - '@zag-js/dom-query': 0.1.4 - '@zag-js/interact-outside': 0.6.0 - '@zag-js/utils': 0.3.4 + '@zag-js/dom-event': 0.9.2 + '@zag-js/dom-query': 0.9.2 + '@zag-js/interact-outside': 0.9.2 + '@zag-js/utils': 0.9.2 dev: false - /@zag-js/dom-event@0.6.0: - resolution: {integrity: sha512-C/3v8tGOYcslmNcBB0Jyxuwthr/Pyw9WGYDMFUOQ0GqX3q019M2DdndqH9Iof35OfJ4ZLDOX9VyTNfPEGZAwVA==} + /@zag-js/dom-event@0.9.2: + resolution: {integrity: sha512-2HUoIZw7Ig5bzm3S1f5i7S50LlyakhAD1seHBw6w+VwM7I6AFpbpJZjYAESeeKE+SAIA5q3CpdpL+KfdO5jpRg==} dependencies: - '@zag-js/text-selection': 0.0.1 - '@zag-js/types': 0.5.0 + '@zag-js/text-selection': 0.9.2 + '@zag-js/types': 0.9.2 dev: false - /@zag-js/dom-query@0.1.4: - resolution: {integrity: sha512-s2q18k3z3ABAkySc6xK1NLPVIdgZGTLSZxok7yzpCYoywEeCnFvP6K63Q4ONElk74XgO7Eq8KMzIj702LDS+Mg==} + /@zag-js/dom-query@0.9.2: + resolution: {integrity: sha512-N4K9sl3Dup+Jb0kaXrrwClwUdXgpgBb4xKYRDfG9HPO8ixX11Px8j4iTU3MdvhEt81sE7SkECdJNoyXaNxFqZA==} dev: false - /@zag-js/element-rect@0.3.0: - resolution: {integrity: sha512-P3bdcfE5Bk3Bm7qhs8lPDykgWNYJeMgyqa+3Z93QPCH9cXsg76O0OrhkK3kWruHzT/f+sVXDDZ1yEUxxgLCRFg==} + /@zag-js/element-rect@0.9.2: + resolution: {integrity: sha512-g3RRZ2TA/iDnLAdz8Rxybd1B3oRaHJ7DL7Wceh1lrmMxeYE4Rg9VWHl1E43i3j17odd69OPLJK1ZD1Qk9dxh9A==} dev: false - /@zag-js/element-size@0.3.2: - resolution: {integrity: sha512-bVvvigUGvAuj7PCkE5AbzvTJDTw5f3bg9nQdv+ErhVN8SfPPppLJEmmWdxqsRzrHXgx8ypJt/+Ty0kjtISVDsQ==} + /@zag-js/element-size@0.9.2: + resolution: {integrity: sha512-34AU97AVwss9Jrm0/Pg2clBvaR/f74fvuW0GI68prhuzLvgiWJlKQ//0DuSyf3QAqJ7TCbWTwfAVVebVTTyAqA==} dev: false - /@zag-js/form-utils@0.2.5: - resolution: {integrity: sha512-aqdj+M4lvczDITrfkZqQxGkfHbFn084ONRkDylaPNx8xQKoRbsy+crDga10QDOUkgSMtVOB8XZ+VyJHQAzRErQ==} + /@zag-js/form-utils@0.9.2: + resolution: {integrity: sha512-6CHTsAGr6hZB8nDTB9DcYzYk4UVRCmtHBWB/5O445gzoqzUDyWnZ5hVXaakL9U3ZPNQQmh0v+ducT1AFW5Q2YA==} dependencies: - '@zag-js/mutation-observer': 0.0.1 + '@zag-js/mutation-observer': 0.9.2 dev: false - /@zag-js/interact-outside@0.6.0: - resolution: {integrity: sha512-jIMhKit3iwCj50muUQsFMSLB6vouvnwgFFuTVuhNIUmqstmH0cvhmaywXcIQyrrEbM6nL2BjF+Csy3BaUgtzZA==} + /@zag-js/interact-outside@0.9.2: + resolution: {integrity: sha512-UYaim/6dgqo5lUyfag5SeWqyGwGHyBgh7MC92eymI86Kb3BYOUhIfXEUaoaacFBxRuJbhmFEsxFF8bN/tWNTJw==} dependencies: - '@zag-js/dom-event': 0.6.0 - '@zag-js/dom-query': 0.1.4 - '@zag-js/tabbable': 0.1.1 - '@zag-js/utils': 0.3.4 + '@zag-js/dom-event': 0.9.2 + '@zag-js/dom-query': 0.9.2 + '@zag-js/tabbable': 0.9.2 + '@zag-js/utils': 0.9.2 dev: false - /@zag-js/menu@0.7.0: - resolution: {integrity: sha512-RfzOKO+zK4JL9Up/Q+0LpHK9oWHnCSalRhHfG6HWAdTL2pLI3q2byWXmFxZgPCvAhF/APFAmD6x0ADN8GvRO0g==} + /@zag-js/menu@0.9.2: + resolution: {integrity: sha512-qzjyJbTAUxATS/0yFzUCtBZeE6tJzBpRUKg1+NuvmytdA02uqIzqPtpmL7TH6fWacszcZiPLIVGR3TmYy/JyZA==} dependencies: - '@zag-js/anatomy': 0.1.4 - '@zag-js/core': 0.7.0 - '@zag-js/dismissable': 0.6.0 - '@zag-js/dom-event': 0.6.0 - '@zag-js/dom-query': 0.1.4 - '@zag-js/popper': 0.2.7 - '@zag-js/rect-utils': 0.2.3 - '@zag-js/types': 0.5.0 - '@zag-js/utils': 0.3.4 + '@zag-js/anatomy': 0.9.2 + '@zag-js/core': 0.9.2 + '@zag-js/dismissable': 0.9.2 + '@zag-js/dom-event': 0.9.2 + '@zag-js/dom-query': 0.9.2 + '@zag-js/popper': 0.9.2 + '@zag-js/rect-utils': 0.9.2 + '@zag-js/types': 0.9.2 + '@zag-js/utils': 0.9.2 dev: false - /@zag-js/mutation-observer@0.0.1: - resolution: {integrity: sha512-HasPzt6LyVWsu1jwx3lFNKuV3nlaJQ918rU1wUnhqMD8ZVSKvNBxCoz0NswiKZWTR/6eNwFwvHrewJiWKXivrw==} + /@zag-js/mutation-observer@0.9.2: + resolution: {integrity: sha512-/RM1aXyZMHjFgzC25VtlGmHKLC9qLGhYoXsCm6OH6mP+IyrQRN8vJH1MWOxXAZrZLsRldlNObaPgfLeqKkd4iA==} dev: false - /@zag-js/numeric-range@0.1.1: - resolution: {integrity: sha512-TVOUG6aXfzUaSrigFeTdN/pGlKBInMRTYhYfPWGg3UOACkRVSyiUc8I3W1j4a66JHE5urzB35jQCU8Y4EcGuIw==} + /@zag-js/numeric-range@0.9.2: + resolution: {integrity: sha512-CipxJFyvBXEi8m+C/XWlGHBkgu8JAK09gwg4ApsRc5UlxI5s2XiuRFJXrKdblT8xHcml/FDhatnrYLP1HJN3gA==} dev: false - /@zag-js/popper@0.2.7: - resolution: {integrity: sha512-ruWgwZXYt+hEhMamjuQ1J/UdQsRazB0t4eajatgb9ei9YPtFDxEmXf3UegeWkhMTMfZdTTZEozmtrzcflzAmKQ==} + /@zag-js/popper@0.9.2: + resolution: {integrity: sha512-1TciWA5E7jQmK6SWdVfMOiX/tv2+9LTuPV4fWCOPveHl5ZoSrkTKOo4MB3/cJyuNt+AYwUyvIS94Cn+5kb4/eg==} dependencies: - '@floating-ui/dom': 1.2.5 - '@zag-js/dom-query': 0.1.4 - '@zag-js/element-rect': 0.3.0 - '@zag-js/utils': 0.3.4 + '@floating-ui/dom': 1.2.8 + '@zag-js/dom-query': 0.9.2 + '@zag-js/element-rect': 0.9.2 + '@zag-js/utils': 0.9.2 dev: false - /@zag-js/rect-utils@0.2.3: - resolution: {integrity: sha512-kqzHvJjvY9GjVwj+LsiVMu5c+oxL5uHs85X2Nwy1nXQ+XjED8qvrxFnoldhTQm+s/1fCbyzbsTdHbVMZQ3kBnw==} + /@zag-js/rect-utils@0.9.2: + resolution: {integrity: sha512-LbN4jJoGSs9oE1fclVxS6jpKzWMnY+xmLLq410xt2usb/bjFUCQv5U3YlrgbtUFYyade18szdmttqHLdZRG/gA==} dev: false - /@zag-js/remove-scroll@0.2.4: - resolution: {integrity: sha512-e5q8tvwZL7M5hn2+9dyV+A7TlW655c81/X7aJgH64xbIFyJY26mctNsGH60Vj5FMoPHgQtH+PHQ6Wa3qOjCRAg==} + /@zag-js/remove-scroll@0.9.2: + resolution: {integrity: sha512-SJti7IWmsXQU58vlMOz6BxzfSVKjLWMf7TJB2S6B/vuxLqrDpVal4+K5kgYqwa2rmbf/NkR+4ocdLyF63YupUg==} dependencies: - '@zag-js/dom-query': 0.1.4 + '@zag-js/dom-query': 0.9.2 dev: false - /@zag-js/select@0.7.0: - resolution: {integrity: sha512-TaseOx7WTQCl2HRaGu6I6tB1VW5PYDb/1F7jh5ATs3f3gZuB9Gu0nvtCW3YHNtUceWLH8W0MakWbIUAqKPxJmw==} + /@zag-js/select@0.9.2: + resolution: {integrity: sha512-cX2YjG9c/g6agitSMF86K3GrOx9fe9OTIzNam6mdUE/WreffK2nN93utsygnhsiQATc7qpF/4V9ud9FHvaxImQ==} dependencies: - '@zag-js/anatomy': 0.1.4 - '@zag-js/core': 0.7.0 - '@zag-js/dismissable': 0.6.0 - '@zag-js/dom-event': 0.6.0 - '@zag-js/dom-query': 0.1.4 - '@zag-js/form-utils': 0.2.5 - '@zag-js/mutation-observer': 0.0.1 - '@zag-js/popper': 0.2.7 - '@zag-js/tabbable': 0.1.1 - '@zag-js/types': 0.5.0 - '@zag-js/utils': 0.3.4 - '@zag-js/visually-hidden': 0.0.1 + '@zag-js/anatomy': 0.9.2 + '@zag-js/core': 0.9.2 + '@zag-js/dismissable': 0.9.2 + '@zag-js/dom-event': 0.9.2 + '@zag-js/dom-query': 0.9.2 + '@zag-js/form-utils': 0.9.2 + '@zag-js/mutation-observer': 0.9.2 + '@zag-js/popper': 0.9.2 + '@zag-js/tabbable': 0.9.2 + '@zag-js/types': 0.9.2 + '@zag-js/utils': 0.9.2 + '@zag-js/visually-hidden': 0.9.2 dev: false - /@zag-js/slider@0.7.0: - resolution: {integrity: sha512-YYbNNFxr5j91L4IfIvbS6JewGoFF0QqbkKRTYeACgg9qUazT1zKHBVtkI4ul8oFyhB7MrUzK0sVjEwDmiaFxpg==} + /@zag-js/slider@0.9.2: + resolution: {integrity: sha512-pfnes+ncTJa8axqKBvyTe94WkRKVrHWbDGP0xoCEUc8yCqHlC4VllJfC6UgoaTV8YNlQP2b84LY9RwEdffCQAw==} dependencies: - '@zag-js/anatomy': 0.1.4 - '@zag-js/core': 0.7.0 - '@zag-js/dom-event': 0.6.0 - '@zag-js/dom-query': 0.1.4 - '@zag-js/element-size': 0.3.2 - '@zag-js/form-utils': 0.2.5 - '@zag-js/numeric-range': 0.1.1 - '@zag-js/types': 0.5.0 - '@zag-js/utils': 0.3.4 + '@zag-js/anatomy': 0.9.2 + '@zag-js/core': 0.9.2 + '@zag-js/dom-event': 0.9.2 + '@zag-js/dom-query': 0.9.2 + '@zag-js/element-size': 0.9.2 + '@zag-js/form-utils': 0.9.2 + '@zag-js/numeric-range': 0.9.2 + '@zag-js/types': 0.9.2 + '@zag-js/utils': 0.9.2 dev: false - /@zag-js/solid@0.7.0(solid-js@1.6.12): - resolution: {integrity: sha512-yM046VdWMaLelMyilKEFiGDDzqCIlnjwasmMNulh3mL4jmV8DhB2EO2HP7vnIUAqOyWn/rLejPxfS6tYr01cZw==} + /@zag-js/solid@0.9.2(solid-js@1.6.12): + resolution: {integrity: sha512-r/xoteP132AQw6yhBC3qE3JtjlITBXc9drdM7cViKgiJp2mfDi/u8tGb19VgDpfMysm/H24I9r2mi99XO2AKMg==} peerDependencies: solid-js: '>=1.1.3' dependencies: - '@zag-js/core': 0.7.0 - '@zag-js/store': 0.2.8 - '@zag-js/types': 0.5.0 + '@zag-js/core': 0.9.2 + '@zag-js/store': 0.9.2 + '@zag-js/types': 0.9.2 hyphenate-style-name: 1.0.4 solid-js: 1.6.12 dev: false - /@zag-js/store@0.2.8: - resolution: {integrity: sha512-QgBnbYjb5jvcTt0+JCoPJ9YKM9vP1/RR78mkT6fWCIM0N8hnZu4MzQPVKxiopxZ8XIrDbUjFWlJLzL83uiYv2g==} + /@zag-js/store@0.9.2: + resolution: {integrity: sha512-FO6BUK6ri0pZCEWqT8veiaZoTQwnCMqQ+C1pvf+ZtMnGMCjMXe/QvNUx/dcHSrscGckWJDBTJRbLhmDedyDPUA==} dependencies: - proxy-compare: 2.5.0 + proxy-compare: 2.5.1 dev: false - /@zag-js/switch@0.7.0: - resolution: {integrity: sha512-XKW761B4MhGQidoOkpE8MZhXBWk+IeYlh886MNC5g2BRWpEsTxDmS1PH5kPsTzEhRz4iJp5bYp/RW9rRzvnhzg==} + /@zag-js/switch@0.9.2: + resolution: {integrity: sha512-XTo23TcBp4olhIqIAtefDmqfaAMSmLq1l6hL6kB5mgtMWCRIaDMkmfGrzXZAo82vYoSxAx4+ZZkJjWl9iZ8mnQ==} dependencies: - '@zag-js/anatomy': 0.1.4 - '@zag-js/core': 0.7.0 - '@zag-js/dom-query': 0.1.4 - '@zag-js/form-utils': 0.2.5 - '@zag-js/types': 0.5.0 - '@zag-js/utils': 0.3.4 - '@zag-js/visually-hidden': 0.0.1 + '@zag-js/anatomy': 0.9.2 + '@zag-js/core': 0.9.2 + '@zag-js/dom-query': 0.9.2 + '@zag-js/form-utils': 0.9.2 + '@zag-js/types': 0.9.2 + '@zag-js/utils': 0.9.2 + '@zag-js/visually-hidden': 0.9.2 dev: false - /@zag-js/tabbable@0.1.1: - resolution: {integrity: sha512-wvGE8pLZW1U1u15Gdk8NXLFmPhBePhBVcuG/eJ/bb3FpCh+oX2hJAANxlDCJrGN4ticGyTwJNYG1XOYaf6ZEGA==} + /@zag-js/tabbable@0.9.2: + resolution: {integrity: sha512-CekXUcJ7HqK+MIFXazBD7KIrntOIJZc8lscf3aXEkpbYfTmilad1ZORAR5tnsIkYIoDHcLdxhT69CKR87NMNFA==} + dependencies: + '@zag-js/dom-query': 0.9.2 dev: false - /@zag-js/text-selection@0.0.1: - resolution: {integrity: sha512-l8Im0FkMw63BPXocHRbtFgMIz3SkVpc4HI/S/wV0FqKgWMzOZzd/avHljCNfoXyhjhKauwR5xPivAwsOcye8CA==} + /@zag-js/text-selection@0.9.2: + resolution: {integrity: sha512-xaXeLb9U7wZ5kEZ/L/if5INcX2YWi+Yzr8KIH2cNUaRE79cJFf0z1JG4D8VmO40EnCE396DVyNeLFdQXOAsu4Q==} + dependencies: + '@zag-js/dom-query': 0.9.2 dev: false - /@zag-js/toast@0.7.0: - resolution: {integrity: sha512-iZq9w7uCXDSPzDNtpNpGOVzTRbR51HkAMd7DJi4WHEyJ2Y3dhj6rBWIOS9SkI3tFFh3GrEbzlDZrfy5Mpokh3w==} + /@zag-js/toast@0.9.2: + resolution: {integrity: sha512-cG5/5+p2VVKsbih3W+ZU4OBr6Gp4vOhGknYBPqKSOLlgOFTu4DINxwUPk7Gfr0GQy3taTf0+/6JwMzB3Wc/+rQ==} dependencies: - '@zag-js/anatomy': 0.1.4 - '@zag-js/core': 0.7.0 - '@zag-js/dom-event': 0.6.0 - '@zag-js/dom-query': 0.1.4 - '@zag-js/types': 0.5.0 - '@zag-js/utils': 0.3.4 + '@zag-js/anatomy': 0.9.2 + '@zag-js/core': 0.9.2 + '@zag-js/dom-event': 0.9.2 + '@zag-js/dom-query': 0.9.2 + '@zag-js/types': 0.9.2 + '@zag-js/utils': 0.9.2 dev: false - /@zag-js/toggle@0.7.0: - resolution: {integrity: sha512-69DBPuoeXdqPuOCabLjGpyWuiXWfozwP4X0u5+jHrEQncMlf4ItHCeQSTevySH20PhYhbu/b2H6beJzf3t/HpQ==} + /@zag-js/toggle@0.9.2: + resolution: {integrity: sha512-3u2d//NHW2yF3j1h5qR+IhmokWU+uCn3JUctAGIQ1KizGKkU59W0sYXmNu/xHf2u84v4hTI+6g5AAiQ1Wm8Fqg==} dependencies: - '@zag-js/anatomy': 0.1.4 - '@zag-js/core': 0.7.0 - '@zag-js/dom-query': 0.1.4 - '@zag-js/types': 0.5.0 - '@zag-js/utils': 0.3.4 + '@zag-js/anatomy': 0.9.2 + '@zag-js/core': 0.9.2 + '@zag-js/dom-query': 0.9.2 + '@zag-js/types': 0.9.2 + '@zag-js/utils': 0.9.2 dev: false - /@zag-js/tooltip@0.7.0: - resolution: {integrity: sha512-p0sIDL2KFZReD9cxCGa+YaT2ye+QqWNkEgzX0J4sNFxXY7SF09KNLbAzGUVMNr1UykEr9H3vfyg7AkNiRF15ow==} + /@zag-js/tooltip@0.9.2: + resolution: {integrity: sha512-R3/Y4cJvnJWHLWkMiFo6kZnkp17+QRqPX4ooqCKL4K8Ei+OJP0poKmqQ+N1xaCcjiQ/VMABXCUz7ztGgKyVrdQ==} dependencies: - '@zag-js/anatomy': 0.1.4 - '@zag-js/core': 0.7.0 - '@zag-js/dom-event': 0.6.0 - '@zag-js/dom-query': 0.1.4 - '@zag-js/popper': 0.2.7 - '@zag-js/types': 0.5.0 - '@zag-js/utils': 0.3.4 - '@zag-js/visually-hidden': 0.0.1 + '@zag-js/anatomy': 0.9.2 + '@zag-js/core': 0.9.2 + '@zag-js/dom-event': 0.9.2 + '@zag-js/dom-query': 0.9.2 + '@zag-js/popper': 0.9.2 + '@zag-js/types': 0.9.2 + '@zag-js/utils': 0.9.2 + '@zag-js/visually-hidden': 0.9.2 dev: false - /@zag-js/types@0.5.0: - resolution: {integrity: sha512-in0N3xWjg9U4reI+u9yFEa9iP35b1GpEA0PDDJFuJTyramRcAdMRJAqKmhVlzAW8HmgQM84fs5Prr1jQXsxpWA==} + /@zag-js/types@0.9.2: + resolution: {integrity: sha512-MM8KPTW5nX438fDb57K0DM+nxcLA9+WoFyE9A/fEaCH2kGsaVltmsY1ejolU4duYNOEQVon9T39QlGfgc81f/w==} dependencies: - csstype: 3.1.1 + csstype: 3.1.2 dev: false - /@zag-js/utils@0.3.4: - resolution: {integrity: sha512-Wz6OsvGsteCmu8uGot5H/xj0QpUzXlmAlDw+d2Lnqz1Y3uWcq36r6EPWfH15HXJXdEDuCameAmdOruZ0s/SVjA==} + /@zag-js/utils@0.9.2: + resolution: {integrity: sha512-PQZRIhgaowNrON7UF4u1JTABUhlWhMiu4uwN7S7SXcpyq1z8JXb4j5YEHNkH4F7lLMQAwmMdpJXHfjH5bYXR1Q==} dev: false - /@zag-js/visually-hidden@0.0.1: - resolution: {integrity: sha512-wEhubtraCJOPFh3aPcidQWXF7a9O1TG1I48blpGt3XEI9brwpp7Gjjvus5uGkH00s+WziEudy1dv2B0HOTexNA==} + /@zag-js/visually-hidden@0.9.2: + resolution: {integrity: sha512-/oIQLhVqwr1DfYDEB4IR6rdr+b8Hu9XXSO8xa7xQSeug8XElAglO4SLvt2r+wBMoQ48VeBh3aE96M+HJOkkFQw==} dev: false /abbrev@1.1.1: @@ -3869,10 +3875,6 @@ packages: hasBin: true dev: true - /csstype@3.1.1: - resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - dev: false - /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: false @@ -5190,10 +5192,10 @@ packages: /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - /focus-trap@7.4.0: - resolution: {integrity: sha512-yI7FwUqU4TVb+7t6PaQ3spT/42r/KLEi8mtdGoQo2li/kFzmu9URmalTvw7xCCJtSOyhBxscvEAmvjeN9iHARg==} + /focus-trap@7.4.1: + resolution: {integrity: sha512-rnXP5ERIjlo1gEZp7hQb4ekYqUxRuSDQeyWvxhahH3/GkWtd8h8g1C8Eu/KGpuvbUWNVeogK0kuzzrM4u2Z9jA==} dependencies: - tabbable: 6.1.1 + tabbable: 6.1.2 dev: false /for-each@0.3.3: @@ -7847,8 +7849,8 @@ packages: resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} dev: false - /proxy-compare@2.5.0: - resolution: {integrity: sha512-f1us0OsVAJ3tdIMXGQx2lmseYS4YXe4W+sKF5g5ww/jV+5ogMadPt+sIZ+88Ga9kvMJsrRNWzCrKPpr6pMWYbA==} + /proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} dev: false /pseudomap@1.0.2: @@ -8899,8 +8901,8 @@ packages: '@pkgr/utils': 2.3.1 tslib: 2.5.0 - /tabbable@6.1.1: - resolution: {integrity: sha512-4kl5w+nCB44EVRdO0g/UGoOp3vlwgycUVtkk/7DPyeLZUCuNFFKCFG6/t/DgHLrUPHjrZg6s5tNm+56Q2B0xyg==} + /tabbable@6.1.2: + resolution: {integrity: sha512-qCN98uP7i9z0fIS4amQ5zbGBOq+OSigYeGvPy7NDk8Y9yncqDZ9pRPgfsc2PJIVM9RrJj7GIfuRgmjoUU9zTHQ==} dev: false /tar@6.1.13: From 3588f2db4c459d7f88505eb3e1b3e9cbcb643449 Mon Sep 17 00:00:00 2001 From: yzh990918 <251205668@qq.com> Date: Mon, 22 May 2023 18:35:35 +0800 Subject: [PATCH 04/13] feat: add clear messages confirm modal --- .../header/ConversationMessageClearButton.tsx | 12 ++++++-- src/components/main/Conversation.tsx | 5 ++-- src/components/ui/ConfirmModal.tsx | 29 +++++++++++++++++++ src/components/ui/Modal.tsx | 7 +++-- src/locale/lang/en.ts | 7 +++++ src/locale/lang/zh-cn.ts | 7 +++++ src/stores/ui.ts | 1 + unocss.config.ts | 1 + 8 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 src/components/ui/ConfirmModal.tsx diff --git a/src/components/header/ConversationMessageClearButton.tsx b/src/components/header/ConversationMessageClearButton.tsx index 48a9be6c..faf7ef02 100644 --- a/src/components/header/ConversationMessageClearButton.tsx +++ b/src/components/header/ConversationMessageClearButton.tsx @@ -1,14 +1,21 @@ import { useStore } from '@nanostores/solid' import { currentConversationId } from '@/stores/conversation' -import { scrollController } from '@/stores/ui' +import { + scrollController, + showConfirmModal, +} from '@/stores/ui' import { clearMessagesByConversationId } from '@/stores/messages' +import { useI18n } from '@/hooks' +import ConfirmModal from '../ui/ConfirmModal' export default () => { const $currentConversationId = useStore(currentConversationId) + const { t } = useI18n() const handleClearMessage = () => { clearMessagesByConversationId($currentConversationId()) scrollController().scrollToBottom() + showConfirmModal.set(false) } return ( @@ -16,11 +23,12 @@ export default () => { { $currentConversationId() && (
{ showConfirmModal.set(true) }} >
)} + { showConfirmModal.set(false) }} /> ) } diff --git a/src/components/main/Conversation.tsx b/src/components/main/Conversation.tsx index f84c4150..d17524e1 100644 --- a/src/components/main/Conversation.tsx +++ b/src/components/main/Conversation.tsx @@ -33,7 +33,7 @@ export default () => { - )} + )} > @@ -52,9 +52,8 @@ export default () => { diff --git a/src/components/ui/ConfirmModal.tsx b/src/components/ui/ConfirmModal.tsx new file mode 100644 index 00000000..b75c6df0 --- /dev/null +++ b/src/components/ui/ConfirmModal.tsx @@ -0,0 +1,29 @@ +import { + showConfirmModal, +} from '@/stores/ui' +import { useI18n } from '@/hooks' +import Modal from './Modal' + +interface Props { + title: string + description: string + onConfirm: () => void + onCancel: () => void +} + +export default (props: Props) => { + const { t } = useI18n() + return ( + +
+
+

{props.title}

{props.description}

+
+ + +
+
+
+
+ ) +} diff --git a/src/components/ui/Modal.tsx b/src/components/ui/Modal.tsx index 4c201ef6..6763acf6 100644 --- a/src/components/ui/Modal.tsx +++ b/src/components/ui/Modal.tsx @@ -11,6 +11,7 @@ interface Props { direction: 'top' | 'bottom' | 'left' | 'right' children: JSXElement closeBtnClass?: string + hiddenCloseIcon?: boolean } export default (props: Props) => { @@ -45,9 +46,9 @@ export default (props: Props) => {
- + { + !props.hiddenCloseIcon && + } { props.children }
diff --git a/src/locale/lang/en.ts b/src/locale/lang/en.ts index 2cd7ee7b..84f19d3c 100644 --- a/src/locale/lang/en.ts +++ b/src/locale/lang/en.ts @@ -24,6 +24,13 @@ export const en = { recent: 'Recents', noRecent: 'No recents', untitled: 'Untitled', + confirm: { + title: 'Delete all messages in this chat', + desc: 'This action cannot be undone.', + message: 'Delete this record', + btn: 'confirm', + cancel: 'cancel', + }, }, send: { placeholder: 'Enter Something...', diff --git a/src/locale/lang/zh-cn.ts b/src/locale/lang/zh-cn.ts index 66c3cd64..9dbc92c5 100644 --- a/src/locale/lang/zh-cn.ts +++ b/src/locale/lang/zh-cn.ts @@ -24,6 +24,13 @@ export const zhCN = { recent: '最近对话', noRecent: '暂无最近对话', untitled: '未命名对话', + confirm: { + title: '删除本会话的所有消息', + desc: '这将删除本会话的所有消息,且不可恢复', + message: '删除这条记录', + btn: '确认', + cancel: '取消', + }, }, send: { placeholder: '输入内容...', diff --git a/src/stores/ui.ts b/src/stores/ui.ts index e733dd3d..7990c17d 100644 --- a/src/stores/ui.ts +++ b/src/stores/ui.ts @@ -5,6 +5,7 @@ export const showConversationSidebar = atom(false) export const showSettingsSidebar = atom(false) export const showConversationEditModal = atom(false) export const showEmojiPickerModal = atom(false) +export const showConfirmModal = atom(false) export const isSendBoxFocus = atom(false) export const currentErrorMessage = atom(null) diff --git a/unocss.config.ts b/unocss.config.ts index db08cef1..83741e01 100644 --- a/unocss.config.ts +++ b/unocss.config.ts @@ -58,6 +58,7 @@ export default defineConfig({ 'hv-foreground': 'transition-opacity cursor-pointer op-70 hover:op-100', 'input-base': 'bg-transparent placeholder:op-50 dark:placeholder:op-20 focus:(ring-0 outline-none) resize-none', 'button': 'mt-4 px-3 py-2 text-xs border border-base rounded-lg hv-base hover:border-base-100', + 'emerald-button': 'mt-4 px-3 py-2 text-xs border rounded-lg text-light-400 border-emerald-600 bg-emerald-600 hover-bg-emerald-700 hover-border-emerald-700', 'max-w-base': 'max-w-3xl mx-auto', 'text-error': 'text-red-700 dark:text-red-400/80', 'border-error': 'border border-red-700 dark:border-red-400/80', From bb2d370c02193d4c3f97cb10b0612633a18dfd97 Mon Sep 17 00:00:00 2001 From: ddiu8081 Date: Mon, 22 May 2023 22:40:36 +0800 Subject: [PATCH 05/13] Revert "feat: add clear messages confirm modal" This reverts commit 3588f2db4c459d7f88505eb3e1b3e9cbcb643449. --- .../header/ConversationMessageClearButton.tsx | 12 ++------ src/components/main/Conversation.tsx | 5 ++-- src/components/ui/ConfirmModal.tsx | 29 ------------------- src/components/ui/Modal.tsx | 7 ++--- src/locale/lang/en.ts | 7 ----- src/locale/lang/zh-cn.ts | 7 ----- src/stores/ui.ts | 1 - unocss.config.ts | 1 - 8 files changed, 8 insertions(+), 61 deletions(-) delete mode 100644 src/components/ui/ConfirmModal.tsx diff --git a/src/components/header/ConversationMessageClearButton.tsx b/src/components/header/ConversationMessageClearButton.tsx index faf7ef02..48a9be6c 100644 --- a/src/components/header/ConversationMessageClearButton.tsx +++ b/src/components/header/ConversationMessageClearButton.tsx @@ -1,21 +1,14 @@ import { useStore } from '@nanostores/solid' import { currentConversationId } from '@/stores/conversation' -import { - scrollController, - showConfirmModal, -} from '@/stores/ui' +import { scrollController } from '@/stores/ui' import { clearMessagesByConversationId } from '@/stores/messages' -import { useI18n } from '@/hooks' -import ConfirmModal from '../ui/ConfirmModal' export default () => { const $currentConversationId = useStore(currentConversationId) - const { t } = useI18n() const handleClearMessage = () => { clearMessagesByConversationId($currentConversationId()) scrollController().scrollToBottom() - showConfirmModal.set(false) } return ( @@ -23,12 +16,11 @@ export default () => { { $currentConversationId() && (
{ showConfirmModal.set(true) }} + onClick={handleClearMessage} >
)} - { showConfirmModal.set(false) }} /> ) } diff --git a/src/components/main/Conversation.tsx b/src/components/main/Conversation.tsx index d17524e1..f84c4150 100644 --- a/src/components/main/Conversation.tsx +++ b/src/components/main/Conversation.tsx @@ -33,7 +33,7 @@ export default () => { - )} + )} > @@ -52,8 +52,9 @@ export default () => { diff --git a/src/components/ui/ConfirmModal.tsx b/src/components/ui/ConfirmModal.tsx deleted file mode 100644 index b75c6df0..00000000 --- a/src/components/ui/ConfirmModal.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { - showConfirmModal, -} from '@/stores/ui' -import { useI18n } from '@/hooks' -import Modal from './Modal' - -interface Props { - title: string - description: string - onConfirm: () => void - onCancel: () => void -} - -export default (props: Props) => { - const { t } = useI18n() - return ( - -
-
-

{props.title}

{props.description}

-
- - -
-
-
-
- ) -} diff --git a/src/components/ui/Modal.tsx b/src/components/ui/Modal.tsx index 6763acf6..4c201ef6 100644 --- a/src/components/ui/Modal.tsx +++ b/src/components/ui/Modal.tsx @@ -11,7 +11,6 @@ interface Props { direction: 'top' | 'bottom' | 'left' | 'right' children: JSXElement closeBtnClass?: string - hiddenCloseIcon?: boolean } export default (props: Props) => { @@ -46,9 +45,9 @@ export default (props: Props) => {
- { - !props.hiddenCloseIcon && - } + { props.children }
diff --git a/src/locale/lang/en.ts b/src/locale/lang/en.ts index 84f19d3c..2cd7ee7b 100644 --- a/src/locale/lang/en.ts +++ b/src/locale/lang/en.ts @@ -24,13 +24,6 @@ export const en = { recent: 'Recents', noRecent: 'No recents', untitled: 'Untitled', - confirm: { - title: 'Delete all messages in this chat', - desc: 'This action cannot be undone.', - message: 'Delete this record', - btn: 'confirm', - cancel: 'cancel', - }, }, send: { placeholder: 'Enter Something...', diff --git a/src/locale/lang/zh-cn.ts b/src/locale/lang/zh-cn.ts index 9dbc92c5..66c3cd64 100644 --- a/src/locale/lang/zh-cn.ts +++ b/src/locale/lang/zh-cn.ts @@ -24,13 +24,6 @@ export const zhCN = { recent: '最近对话', noRecent: '暂无最近对话', untitled: '未命名对话', - confirm: { - title: '删除本会话的所有消息', - desc: '这将删除本会话的所有消息,且不可恢复', - message: '删除这条记录', - btn: '确认', - cancel: '取消', - }, }, send: { placeholder: '输入内容...', diff --git a/src/stores/ui.ts b/src/stores/ui.ts index 7990c17d..e733dd3d 100644 --- a/src/stores/ui.ts +++ b/src/stores/ui.ts @@ -5,7 +5,6 @@ export const showConversationSidebar = atom(false) export const showSettingsSidebar = atom(false) export const showConversationEditModal = atom(false) export const showEmojiPickerModal = atom(false) -export const showConfirmModal = atom(false) export const isSendBoxFocus = atom(false) export const currentErrorMessage = atom(null) diff --git a/unocss.config.ts b/unocss.config.ts index 83741e01..db08cef1 100644 --- a/unocss.config.ts +++ b/unocss.config.ts @@ -58,7 +58,6 @@ export default defineConfig({ 'hv-foreground': 'transition-opacity cursor-pointer op-70 hover:op-100', 'input-base': 'bg-transparent placeholder:op-50 dark:placeholder:op-20 focus:(ring-0 outline-none) resize-none', 'button': 'mt-4 px-3 py-2 text-xs border border-base rounded-lg hv-base hover:border-base-100', - 'emerald-button': 'mt-4 px-3 py-2 text-xs border rounded-lg text-light-400 border-emerald-600 bg-emerald-600 hover-bg-emerald-700 hover-border-emerald-700', 'max-w-base': 'max-w-3xl mx-auto', 'text-error': 'text-red-700 dark:text-red-400/80', 'border-error': 'border border-red-700 dark:border-red-400/80', From 42d431d2788cffbe3838aa66aabc994cfdada167 Mon Sep 17 00:00:00 2001 From: yzh990918 <251205668@qq.com> Date: Tue, 23 May 2023 11:41:09 +0800 Subject: [PATCH 06/13] feat: remove header ssr --- src/components/Main.astro | 2 +- .../header/ConversationMessageClearButton.tsx | 14 +++++++-- src/components/ui/ConfirmModal.tsx | 29 +++++++++++++++++++ src/locale/lang/en.ts | 7 +++++ src/locale/lang/zh-cn.ts | 7 +++++ src/stores/ui.ts | 1 + unocss.config.ts | 1 + 7 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 src/components/ui/ConfirmModal.tsx diff --git a/src/components/Main.astro b/src/components/Main.astro index 77e2ef6e..4aa1375a 100644 --- a/src/components/Main.astro +++ b/src/components/Main.astro @@ -8,7 +8,7 @@ import Conversation from './main/Conversation' ---
-
+
diff --git a/src/components/header/ConversationMessageClearButton.tsx b/src/components/header/ConversationMessageClearButton.tsx index 48a9be6c..fcfeccf8 100644 --- a/src/components/header/ConversationMessageClearButton.tsx +++ b/src/components/header/ConversationMessageClearButton.tsx @@ -1,26 +1,34 @@ import { useStore } from '@nanostores/solid' import { currentConversationId } from '@/stores/conversation' -import { scrollController } from '@/stores/ui' +import { + scrollController, + showConfirmModal, +} from '@/stores/ui' import { clearMessagesByConversationId } from '@/stores/messages' +import { useI18n } from '@/hooks' +import ConfirmModal from '../ui/ConfirmModal' export default () => { const $currentConversationId = useStore(currentConversationId) + const { t } = useI18n() const handleClearMessage = () => { clearMessagesByConversationId($currentConversationId()) scrollController().scrollToBottom() + showConfirmModal.set(false) } return ( <> - { $currentConversationId() && ( + {$currentConversationId() && (
{ showConfirmModal.set(true) }} >
)} + { showConfirmModal.set(false) }} /> ) } diff --git a/src/components/ui/ConfirmModal.tsx b/src/components/ui/ConfirmModal.tsx new file mode 100644 index 00000000..c6581a32 --- /dev/null +++ b/src/components/ui/ConfirmModal.tsx @@ -0,0 +1,29 @@ +import { + showConfirmModal, +} from '@/stores/ui' +import { useI18n } from '@/hooks' +import Modal from './Modal' + +interface Props { + title: string + description: string + onConfirm: () => void + onCancel: () => void +} + +export default (props: Props) => { + const { t } = useI18n() + return ( + +
+
+

{props.title}

{props.description}

+
+ + +
+
+
+
+ ) +} diff --git a/src/locale/lang/en.ts b/src/locale/lang/en.ts index 2cd7ee7b..84f19d3c 100644 --- a/src/locale/lang/en.ts +++ b/src/locale/lang/en.ts @@ -24,6 +24,13 @@ export const en = { recent: 'Recents', noRecent: 'No recents', untitled: 'Untitled', + confirm: { + title: 'Delete all messages in this chat', + desc: 'This action cannot be undone.', + message: 'Delete this record', + btn: 'confirm', + cancel: 'cancel', + }, }, send: { placeholder: 'Enter Something...', diff --git a/src/locale/lang/zh-cn.ts b/src/locale/lang/zh-cn.ts index 66c3cd64..9dbc92c5 100644 --- a/src/locale/lang/zh-cn.ts +++ b/src/locale/lang/zh-cn.ts @@ -24,6 +24,13 @@ export const zhCN = { recent: '最近对话', noRecent: '暂无最近对话', untitled: '未命名对话', + confirm: { + title: '删除本会话的所有消息', + desc: '这将删除本会话的所有消息,且不可恢复', + message: '删除这条记录', + btn: '确认', + cancel: '取消', + }, }, send: { placeholder: '输入内容...', diff --git a/src/stores/ui.ts b/src/stores/ui.ts index e733dd3d..7990c17d 100644 --- a/src/stores/ui.ts +++ b/src/stores/ui.ts @@ -5,6 +5,7 @@ export const showConversationSidebar = atom(false) export const showSettingsSidebar = atom(false) export const showConversationEditModal = atom(false) export const showEmojiPickerModal = atom(false) +export const showConfirmModal = atom(false) export const isSendBoxFocus = atom(false) export const currentErrorMessage = atom(null) diff --git a/unocss.config.ts b/unocss.config.ts index db08cef1..83741e01 100644 --- a/unocss.config.ts +++ b/unocss.config.ts @@ -58,6 +58,7 @@ export default defineConfig({ 'hv-foreground': 'transition-opacity cursor-pointer op-70 hover:op-100', 'input-base': 'bg-transparent placeholder:op-50 dark:placeholder:op-20 focus:(ring-0 outline-none) resize-none', 'button': 'mt-4 px-3 py-2 text-xs border border-base rounded-lg hv-base hover:border-base-100', + 'emerald-button': 'mt-4 px-3 py-2 text-xs border rounded-lg text-light-400 border-emerald-600 bg-emerald-600 hover-bg-emerald-700 hover-border-emerald-700', 'max-w-base': 'max-w-3xl mx-auto', 'text-error': 'text-red-700 dark:text-red-400/80', 'border-error': 'border border-red-700 dark:border-red-400/80', From 30ee7ab9a871aad86ee5781b252467828a4c1ecd Mon Sep 17 00:00:00 2001 From: yzh990918 <251205668@qq.com> Date: Wed, 24 May 2023 01:52:27 +0800 Subject: [PATCH 07/13] fix: update default value to fix refresh i18n bug --- src/hooks/useI18n.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useI18n.ts b/src/hooks/useI18n.ts index 5d1e435c..c3fdec00 100644 --- a/src/hooks/useI18n.ts +++ b/src/hooks/useI18n.ts @@ -31,7 +31,7 @@ export const buildI18nContext = (locale: Accessor): I18nContext = export function useI18n() { let defaultLocale = providerSettingsMap.get()?.general?.locale ?? 'en' providerSettingsMap.listen((value, changedKey) => { - const general = value[changedKey] as unknown as GeneralSettings + const general = value[changedKey ?? 'general'] as unknown as GeneralSettings defaultLocale = general?.locale defaultLocale && setCurrentLocale(locales[defaultLocale as string]) }) From 4eefad3dd6c6494e9150358e0a05eed3fa9d2038 Mon Sep 17 00:00:00 2001 From: yzh990918 <251205668@qq.com> Date: Wed, 24 May 2023 11:43:23 +0800 Subject: [PATCH 08/13] chore: update Toggle onChange logic --- src/components/settings/SettingsSidebar.tsx | 1 + src/components/ui/base/Toggle.tsx | 7 +------ 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/components/settings/SettingsSidebar.tsx b/src/components/settings/SettingsSidebar.tsx index d7b11c34..8506070c 100644 --- a/src/components/settings/SettingsSidebar.tsx +++ b/src/components/settings/SettingsSidebar.tsx @@ -11,6 +11,7 @@ import type { GeneralSettings } from '@/types/app' export default () => { const { t } = useI18n() const $providerSettingsMap = useStore(providerSettingsMap) + // bug: someTimes providerSettingsMap() is {} const generalSettings = () => { return ($providerSettingsMap().general || {}) as unknown as GeneralSettings } diff --git a/src/components/ui/base/Toggle.tsx b/src/components/ui/base/Toggle.tsx index 8fe009da..9874a456 100644 --- a/src/components/ui/base/Toggle.tsx +++ b/src/components/ui/base/Toggle.tsx @@ -11,17 +11,12 @@ interface Props { export const Toggle = (inputProps: Props) => { const props = mergeProps({}, inputProps) - let hack_FirstTimeRender = true const [state, send] = useMachine(zagSwitch.machine({ id: createUniqueId(), readOnly: props.readOnly, checked: props.value(), onChange({ checked }) { - if (hack_FirstTimeRender) { - hack_FirstTimeRender = false - return - } - props.setValue(!checked) + props.setValue(checked) }, })) From 16a056cc056f5e61f231dbb733e3ca9ee523c183 Mon Sep 17 00:00:00 2001 From: ddiu8081 Date: Thu, 25 May 2023 02:01:33 +0800 Subject: [PATCH 09/13] chore: remove ssr on left sidebar --- src/pages/index.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/index.astro b/src/pages/index.astro index 231783c6..9b49e1e7 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -11,7 +11,7 @@ import BuildStores from '@/components/client-only/BuildStores'