♻️ refactor: Replace fontSize Recoil atom with Jotai (#10171)

* fix: reapply chat font size on load

* refactor: streamline font size handling in localStorage

* fix: update matchMedia mock to accurately reflect desktop and touchscreen capabilities

* refactor: implement Jotai for font size management and initialize on app load

- Replaced Recoil with Jotai for font size state management across components.
- Added a new `fontSize` atom to handle font size changes and persist them in localStorage.
- Implemented `initializeFontSize` function to apply saved font size on app load.
- Updated relevant components to utilize the new font size atom.

---------

Co-authored-by: ddooochii <ddooochii@gmail.com>
Co-authored-by: Danny Avila <danny@librechat.ai>
This commit is contained in:
Marco Beretta 2025-10-18 11:50:34 +02:00 committed by GitHub
parent 114deecc4e
commit d41b07c0af
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 87 additions and 19 deletions

View file

@ -21,8 +21,8 @@ describe('useFocusChatEffect', () => {
(useNavigate as jest.Mock).mockReturnValue(mockNavigate);
// Mock window.matchMedia
window.matchMedia = jest.fn().mockImplementation(() => ({
matches: false,
window.matchMedia = jest.fn().mockImplementation((query) => ({
matches: query === '(hover: hover)', // Desktop has hover capability
media: '',
onchange: null,
addListener: jest.fn(),
@ -83,8 +83,8 @@ describe('useFocusChatEffect', () => {
});
test('should not focus textarea on touchscreen devices', () => {
window.matchMedia = jest.fn().mockImplementation(() => ({
matches: true, // This indicates a touchscreen
window.matchMedia = jest.fn().mockImplementation((query) => ({
matches: query === '(pointer: coarse)', // Touchscreen has coarse pointer
media: '',
onchange: null,
addListener: jest.fn(),