From 4c57f30f6aca79fdcf9e6085c83053462791a035 Mon Sep 17 00:00:00 2001 From: Jules Neny Date: Fri, 9 Oct 2026 03:49:56 +0200 Subject: [PATCH] =?UTF-8?q?feat(chatbot):=20composant=20ChatModeToggle=20(?= =?UTF-8?q?radiogroup)=20et=20=C3=A9tat=20partag=C3=A9=20du=20mode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Toggle sobre 2 options (role radiogroup, flèches/Home/End, focus visible, reduced-motion), étiquette de mode sur les réponses approfondies, et useChatProfondeur (état par clé, desktop et mobile synchronisés). Libellés lus dans utils/chatProfondeur.ts. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_015vcVGz8i4WpZm2dixKUiSD --- components/ChatModeBadge.vue | 21 +++++++++ components/ChatModeToggle.vue | 80 ++++++++++++++++++++++++++++++++ composables/useChatProfondeur.ts | 13 ++++++ 3 files changed, 114 insertions(+) create mode 100644 components/ChatModeBadge.vue create mode 100644 components/ChatModeToggle.vue create mode 100644 composables/useChatProfondeur.ts diff --git a/components/ChatModeBadge.vue b/components/ChatModeBadge.vue new file mode 100644 index 0000000..f5d62bf --- /dev/null +++ b/components/ChatModeBadge.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/components/ChatModeToggle.vue b/components/ChatModeToggle.vue new file mode 100644 index 0000000..736ccbd --- /dev/null +++ b/components/ChatModeToggle.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/composables/useChatProfondeur.ts b/composables/useChatProfondeur.ts new file mode 100644 index 0000000..e475692 --- /dev/null +++ b/composables/useChatProfondeur.ts @@ -0,0 +1,13 @@ +/** + * Mode de profondeur courant d'un chatbot (M3). État partagé par clé via useState : + * desktop et mobile d'un même chatbot (clés 'accueil', 'agences'…) restent synchronisés. + * Volontairement non persisté : le mode est un choix par question, 'rapide' à chaque visite. + */ +export function useChatProfondeur(key: string | (() => string) = 'defaut') { + const k = typeof key === 'function' ? key : () => key + const store = useState>('aep-chat-profondeur', () => ({})) + return computed({ + get: () => store.value[k()] ?? CHAT_PROFONDEUR_DEFAUT, + set: (v) => { store.value = { ...store.value, [k()]: normaliserProfondeur(v) } }, + }) +}