# Typography and Dark Mode Enhancements ## β Implementation Complete ### Overview This document details the comprehensive typography system and dark mode improvements implemented across the entire application (frontend and admin). --- ## π¨ Typography System ### What Was Implemented 1. **12 Professional Google Fonts Pairings** - Inter (Modern Clean) - Montserrat & Open Sans (Classic) - Poppins & Roboto (Sports-oriented) - Raleway & Lato (Elegant) - Oswald & Source Sans (Bold) - Nunito (Friendly) - Work Sans (Tech) - Rubik (Rounded) - Playfair & Source Sans (Prestige) - Bebas Neue & Open Sans (Impact) - Archivo (Compact) - Exo 2 (Futuristic) 2. **Font Application Layers** - **CSS Variables**: `--font-heading` and `--font-body` - **Chakra UI Theme**: Integrated into theme configuration - **Global CSS**: Applied to all HTML elements - **Admin CSS**: Special admin-specific font rules - **Component Level**: React components respect font settings ### Files Modified/Created #### New Files - `frontend/src/config/fonts.ts` - Font configuration system - `frontend/src/hooks/useFontLoader.ts` - Hook to load fonts from settings - `database/migrations/000022_add_font_fields.up.sql` - DB migration - `database/migrations/000022_add_font_fields.down.sql` - Migration rollback #### Modified Files **Backend:** - `internal/models/models.go` - Added `font_heading` and `font_body` fields to Settings - `internal/controllers/base_controller.go` - Setup initialization handles fonts **Frontend - Core:** - `frontend/src/App.tsx` - Integrated FontLoader component - `frontend/src/index.tsx` - Import global enhancement CSS files - `frontend/src/index.css` - Global font application - `frontend/src/styles/theme.css` - Theme font variables **Frontend - Pages:** - `frontend/src/pages/SetupPage.tsx` - Font selector with live preview - `frontend/src/pages/admin/SettingsAdminPage.tsx` - Font management in admin **Frontend - CSS:** - `frontend/src/styles/admin-enhancements.css` - Admin typography rules - `frontend/src/styles/global-enhancements.css` - Global typography rules **Frontend - API:** - `frontend/src/services/setup.ts` - Added font fields to payload --- ## π Dark Mode Improvements ### Admin Panel Dark Mode #### Color Palette Standardization ```css Light Mode: - Background: gray.50 (#fafafa) - Card: white (#ffffff) - Border: gray.200 (#e2e8f0) Dark Mode: - Background: #0f1115 (deep dark) - Card: #1a1d29 (elevated dark) - Border: rgba(255, 255, 255, 0.12) (subtle) - Text: #e2e8f0 (off-white) ``` #### Components Updated - **AdminLayout**: Updated bg colors to match dark mode palette - **AdminSidebar**: Improved dark mode contrast and borders - **AdminHeader**: Consistent dark mode styling - **Admin Cards**: Better dark mode backgrounds - **Admin Tables**: Dark mode table styling - **Admin Forms**: Dark mode input fields ### Files Modified for Dark Mode **Layouts:** - `frontend/src/layouts/AdminLayout.tsx` - Updated color values **Components:** - `frontend/src/components/admin/AdminSidebar.tsx` - Dark mode colors - `frontend/src/components/admin/AdminHeader.tsx` - Dark mode colors **Styles:** - `frontend/src/styles/admin-enhancements.css` - Comprehensive dark mode rules - `frontend/src/styles/global-enhancements.css` - Dark mode scrollbars, selection --- ## π Font Application Hierarchy ### 1. CSS Custom Properties (Highest Priority) ```css :root { --font-heading: 'Inter', sans-serif; --font-body: 'Inter', sans-serif; } ``` ### 2. Global CSS Rules ```css /* All elements inherit body font */ *, html, body { font-family: var(--font-body, ...fallbacks); } /* All headings use heading font */ h1, h2, h3, h4, h5, h6 { font-family: var(--font-heading, ...fallbacks) !important; } ``` ### 3. Chakra UI Theme ```typescript theme: { fonts: { heading: 'var(--font-heading, ...)', body: 'var(--font-body, ...)' } } ``` ### 4. Component-Specific Overrides Admin components have additional font rules to ensure consistency in the admin panel. --- ## π How To Use ### For End Users #### During Initial Setup 1. Navigate to `/setup` 2. Scroll to "PΓsmo a typografie" section 3. Click any font card to preview and select 4. Complete setup - font is saved automatically #### In Admin Settings 1. Go to `/admin/nastaveni` 2. Click "Vzhled" tab 3. Scroll to "Typografie" section 4. Click any font card to change 5. Click "UloΕΎit nastavenΓ" to apply ### For Developers #### Add New Font Pairing Edit `frontend/src/config/fonts.ts`: ```typescript { id: 'your-font-id', name: 'Your Font Name', heading: 'Heading Font', body: 'Body Font', googleFontsUrl: 'https://fonts.googleapis.com/css2?family=...', cssHeading: "'Heading Font', sans-serif", cssBody: "'Body Font', sans-serif", description: 'Your description', style: 'modern', // or 'classic', 'elegant', etc. } ``` #### Access Current Font ```typescript import { useFontLoader } from '../hooks/useFontLoader'; // In your component const MyComponent = () => { useFontLoader(); // Automatically loads and applies fonts return