diff --git a/packages/ui/src/components/providers/ThemeProvider.test.tsx b/packages/ui/src/components/providers/ThemeProvider.test.tsx index 69c3e8bb..70bc99cb 100644 --- a/packages/ui/src/components/providers/ThemeProvider.test.tsx +++ b/packages/ui/src/components/providers/ThemeProvider.test.tsx @@ -59,6 +59,17 @@ test('zoom works without App menu listeners and routes by focused content', asyn await act(async () => zoom('zoom-reset')); expect(useUIStore.getState().fontSize).toBe(100); expect(document.documentElement.style.fontSize).toBe(''); + const composer = document.createElement('div'); + composer.dataset.chatInput = 'true'; + composer.className = 'cm-editor'; + const composerInput = document.createElement('textarea'); + composer.append(composerInput); + container.append(composer); + composerInput.focus(); + await act(async () => zoom('zoom-in')); + expect(useUIStore.getState().fontSize).toBe(110); + expect(useUIStore.getState().editorFontSize).toBe(12); + await act(async () => zoom('zoom-reset')); await act(async () => root.unmount()); zoom('zoom-in'); expect(useUIStore.getState().fontSize).toBe(100); diff --git a/packages/ui/src/components/providers/ThemeProvider.tsx b/packages/ui/src/components/providers/ThemeProvider.tsx index 3086bab0..1043e38e 100644 --- a/packages/ui/src/components/providers/ThemeProvider.tsx +++ b/packages/ui/src/components/providers/ThemeProvider.tsx @@ -27,7 +27,8 @@ export const ThemeProvider: React.FC = ({ children }) => { const state = useUIStore.getState(); const isTerminal = isTerminalEventTarget(active) || active?.matches('[data-terminal-hidden-input="true"]') === true; - const isEditor = active?.closest('.cm-editor') != null; + const isEditor = active?.closest('.cm-editor') != null + && active?.closest('[data-chat-input="true"]') == null; if (action === 'zoom-reset') { if (isTerminal) state.setTerminalFontSize(14); else if (isEditor) state.setEditorFontSize(13);