From ae380c8c69651cb379df336759d41733fdcf545e Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 3 Sep 2025 17:14:11 +0200 Subject: [PATCH] feat: refactor language handling and improve UI components for better usability --- app/app.vue | 26 ++++++++++++++++-- app/components/chat/CommandPalette.vue | 38 ++++++++++---------------- app/components/tool/Language.vue | 7 ++--- app/composables/language.ts | 11 ++++++++ locales/fr.json | 2 +- 5 files changed, 51 insertions(+), 33 deletions(-) create mode 100644 app/composables/language.ts diff --git a/app/app.vue b/app/app.vue index 8a0491d..8db4bc9 100644 --- a/app/app.vue +++ b/app/app.vue @@ -8,15 +8,16 @@ useHead({ - - + + - diff --git a/app/components/chat/CommandPalette.vue b/app/components/chat/CommandPalette.vue index 6b65a3d..586020a 100644 --- a/app/components/chat/CommandPalette.vue +++ b/app/components/chat/CommandPalette.vue @@ -13,10 +13,10 @@ const searchTerm = ref('') const openMessageModal = ref(false) const openClearModal = ref(false) -const { t, locale, locales, setLocale } = useI18n() - +const { t, locale, locales } = useI18n() const { messages, submitMessage } = useChat() const { clearMessages, messages: storeMessages } = useChatStore() + const loading = computed(() => storeMessages.some(msg => msg.state === ChatState.LOADING)) function handleDelete() { @@ -31,20 +31,13 @@ function onSelect(item: CommandPaletteItem) { } const currentLocale = computed(() => locales.value.filter(l => l.code === locale.value)[0]) +const { changeLocale } = useLanguage() +const { dark, toggleDark } = useTheme() -async function changeLocale() { - await setLocale(currentLocale.value!.code === 'en' ? 'fr' : currentLocale.value!.code === 'fr' ? 'es' : 'en') -} - -const { isDark, toggleDark } = useTheme() defineShortcuts({ - meta_enter: () => { - openMessageModal.value = !openMessageModal.value - }, - meta_d: () => { - openClearModal.value = !openClearModal.value - }, - l: () => changeLocale(), + meta_enter: () => openMessageModal.value = !openMessageModal.value, + meta_d: () => openClearModal.value = !openClearModal.value, + l: () => changeLocale(currentLocale.value!.code === 'en' ? 'fr' : currentLocale.value!.code === 'fr' ? 'es' : 'en'), t: () => toggleDark({ clientX: window.innerWidth, clientY: 0 }), }) @@ -58,17 +51,15 @@ const commandPaletteUi = { item: 'data-highlighted:not-data-disabled:before:bg-muted', content: 'flex-1 overflow-y-auto', } - -// const isDesktop = computed(() => window.innerWidth >= 768)