# Feature Request: Editor Appearance Settings **Context:** We are continuing the development of the "LiteRequest" Tauri + Vue application. The application currently functions as a REST Client with a two-column layout. **Goal:** Implement a "Settings" feature that allows users to customize the **Font Size** and **Font Family** of the CodeMirror editors (both Request Body and Response Output). ## 1. Functional Requirements ### 1.1 Settings Persistence * Create a new Pinia store module (e.g., `stores/settingsStore.ts`) to manage application preferences. * **State fields:** * `editorFontSize`: Number (Default: 14). * `editorFontFamily`: String (Default: "Fira Code, Consolas, monospace"). * **Persistence:** Use `localStorage` to save these preferences so they survive an app restart. ### 1.2 User Interface (Settings Modal) * **Entry Point:** Add a "Settings" (Gear icon) button to the bottom of the **Sidebar**. * **Modal Design:** * Create a `SettingsModal.vue` component. * Style: Centered modal with a dark backdrop (backdrop-blur). Matches the existing Slate/Zinc dark theme. * **Controls:** * **Font Size:** A number input or a range slider (e.g., 10px to 24px). * **Font Family:** A text input (allowing users to type their installed fonts) OR a simple dropdown with common coding fonts. * **Actions:** "Close" button (Changes should apply reactively/immediately, no need for a "Save" button). ### 1.3 Editor Integration * Update the existing `Editor.vue` component (the CodeMirror wrapper). * It must subscribe to the `settingsStore`. * Apply the `fontSize` and `fontFamily` dynamically to the editor container or the CodeMirror instance. ## 2. Technical Implementation Details ### A. Store (`stores/settingsStore.ts`) * Define the store using Pinia's Composition API. * Use `useLocalStorage` from `@vueuse/core` (if available) or manual `localStorage.setItem` within a watcher. ### B. Sidebar Update (`Sidebar.vue`) * Import `SettingsIcon` from `lucide-vue-next`. * Add the button at the absolute bottom of the sidebar container. * Add logic to toggle the visibility of the `SettingsModal`. ### C. Editor Update (`Editor.vue`) * Bind the styles dynamically. * *Hint for Implementation:* The easiest way to style CodeMirror 6 dynamically is to apply CSS variables to the wrapper `