feat: Add adjustable text size setting to interface (#19186)
* Add adjustable text size setting to interface Introduces a user-configurable text size (scale) setting, accessible via a slider in the interface settings. Updates CSS and Sidebar chat item components to respect the new --app-text-scale variable, and persists the setting in the store. Adds related i18n strings and ensures the text scale is applied globally and clamped to allowed values. * Refactor text scale logic into utility module Moved all text scale related constants and functions from components and stores into a new utility module (src/lib/utils/text-scale.ts). Updated imports and usage in Interface.svelte and index.ts to use the new module, improving code organization and reusability. * Adjust sidebar chat scaling without extra classes keep sidebar markup using existing Tailwind utility classes so chat items render identically pre-feature move all text-scale sizing into app.css under the #sidebar-chat-item selectors change the root font-size multiplier to use 1rem instead of an explicit 16px so browser/user preferences propagate * Update Switch.svelte Adjust toggles from fixed pixel to rem to scale with the text size * Update Interface.svelte Updated label from 'Text Scale' to 'UI Scale'. Added padding around slider * Update app.css Added comments
This commit is contained in:
@@ -5,6 +5,7 @@ import type { Banner } from '$lib/types';
|
||||
import type { Socket } from 'socket.io-client';
|
||||
|
||||
import emojiShortCodes from '$lib/emoji-shortcodes.json';
|
||||
import { resolveTextScale, setDocumentTextScale } from '$lib/utils/text-scale';
|
||||
|
||||
// Backend
|
||||
export const WEBUI_NAME = writable(APP_NAME);
|
||||
@@ -68,6 +69,13 @@ export const banners: Writable<Banner[]> = writable([]);
|
||||
|
||||
export const settings: Writable<Settings> = writable({});
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
settings.subscribe(($settings) => {
|
||||
const clampedScale = resolveTextScale($settings?.textScale ?? 1);
|
||||
setDocumentTextScale(clampedScale);
|
||||
});
|
||||
}
|
||||
|
||||
export const audioQueue = writable(null);
|
||||
|
||||
export const showSidebar = writable(false);
|
||||
@@ -161,6 +169,7 @@ type Settings = {
|
||||
notifications?: any;
|
||||
imageCompression?: boolean;
|
||||
imageCompressionSize?: any;
|
||||
textScale?: number;
|
||||
widescreenMode?: null;
|
||||
largeTextAsFile?: boolean;
|
||||
promptAutocomplete?: boolean;
|
||||
|
||||
Reference in New Issue
Block a user