3.5 KiB
Settings Pages: Improve & Visual Overhaul
Summary
Improve and visually overhaul the 5 existing Settings tabs, add a 6th Logging tab, expose backend fields missing from the frontend, and align styling with the app's design system (typography variables, blue gradient headers, card patterns, dark mode).
Files to Modify
| File | Action |
|---|---|
frontend/src/components/Settings/settings.ts |
Add 5 missing fields to interface + defaults |
frontend/src/components/Settings/Settings.svelte |
Overhaul template + styles (details below) |
frontend/src/app.css |
Add shared color CSS variables to :root |
frontend/src/App.svelte |
Add Logging sidebar tab, add textarea dark mode rule |
Step-by-Step
1. settings.ts - Add missing backend fields
Add to Settings interface and defaultSettings:
showEmptyStates: boolean(defaulttrue) - Display tabrequireAssignmentForProgress: boolean(defaulttrue) - Workflow tabslaWarningThresholdMinutes: number(default30) - Workflow tabrequirePasswordChangeDays: number(default90) - Security tabipWhitelist: string[](default[]) - Security tab
2. app.css - Add global color variables
Move from Settings.svelte scoped :global into :root:
--color-primary: #2563eb
--color-primary-hover: #1d4ed8
--color-danger: #d32f2f
--color-success: #2e7d32
--color-border: #e0e0e0
--color-text-primary: #1a1a1a
--color-text-secondary: #666
--color-bg-light: #fafbfc
3. Settings.svelte - Template improvements
Header: Remove local .header overrides - let global blue gradient apply. Restyle action buttons as white/transparent variants for visibility on blue background.
Each tab section: Upgrade .setting-section from flat dividers to mini-cards (subtle background, rounded corners, border). Add icons to <h3> headings.
New content per tab:
- Display: Add
showEmptyStatescheckbox - Workflow: Add
requireAssignmentForProgresscheckbox, add SLA Configuration section withslaWarningThresholdMinutes - Security: Add Password Policy section (
requirePasswordChangeDays), add IP whitelist textarea (visible whenipWhitelistEnabledis true) - Logging (new tab): Activity Logging toggle, Log Retention days, API Tracking toggle (all fields already in store but unexposed)
4. Settings.svelte - Style overhaul
Typography: Replace all hardcoded px font sizes with CSS variables:
28pxh1 -> remove (global.header h1handles it)22pxh2 ->var(--font-size-section-title)16pxh3 ->var(--font-size-card-title)14pxlabels/body ->var(--font-size-body)/var(--font-size-label)13pxhelp text ->var(--font-size-caption)
Colors: Replace hardcoded colors with CSS variables from step 2.
Setting sections: Card-like sub-sections:
.setting-section {
background: var(--color-bg-light);
border-radius: 8px;
padding: 20px;
border: 1px solid var(--color-border);
}
Remove the :global { ... } block defining local CSS vars (moved to app.css).
5. App.svelte - Sidebar + dark mode
Add to settingsTabs array:
{ id: 'logging', label: 'Logging', icon: '📝' }
Add textarea to existing dark mode input rules (line ~773).
Add rendering for logging tab in the settings view section.
Verification
cd frontend && npm run build
Build should complete with no new errors. Visually: all settings tabs should render with blue gradient header, card-style sections, correct typography, and proper dark mode support.