# Setup Page Enhancements ## Overview Enhanced the setup page with logoapi.sportcreative.eu integration, improved UX flow, and live typography preview. ## Changes Made ### 1. ✅ LogoAPI Integration for Club Search - **Club search now uses logoapi.sportcreative.eu** as primary logo source - When user selects a club from FAČR search: 1. Fetches logo from `logoapi.sportcreative.eu` using club UUID 2. Falls back to FACR logo if logoapi doesn't have it 3. Automatically extracts color palette from the logo - **Direct logoapi URLs** are passed through without proxy (no CORS issues) - Improved logo resolution display with optimized SVGs ### 2. ✅ Logo Upload to LogoAPI - When uploading a club logo: 1. Uploads to local backend storage (`/uploads`) 2. **Simultaneously uploads to logoapi.sportcreative.eu** if club ID exists 3. Toast notification confirms successful upload to both locations - Graceful fallback if logoapi upload fails (local upload still succeeds) - Uses `POST https://logoapi.sportcreative.eu/logos/{clubId}` endpoint ### 3. ✅ Section Reordering **New order:** 1. 🔐 Administrátorský účet 2. ⚽ Informace o klubu 3. **🎨 Barvy a vzhled webu** ⬆️ (moved up) 4. 📱 Sociální sítě a fotogalerie ⬇️ (moved down) 5. ✍️ Písmo a typografie 6. 📍 GPS poloha a mapa 7. 📧 Kontaktní údaje 8. 🔒 Zabezpečení a SMTP **Rationale:** Colors and appearance are more important and should be set before social networks. ### 4. ✅ Live Typography Preview - **Typography changes apply immediately** to the entire setup page - Selected font pairing affects: - All headings (`fontFamily={fontHeading}`) - All body text (root Box has `fontFamily={fontBody}`) - User can see **real-time preview** as they select different fonts - Updated help text: "Náhled se aplikuje okamžitě na celou stránku" ### 5. ✅ Map Style Integration - **Removed duplicate "🎨 Styl mapy" section** - Map style selector now **integrated directly** into "📍 GPS poloha a mapa" section - Single unified location for all map-related settings - Updated description: "Nastavte polohu vašeho stadionu. Můžete vložit odkaz z mapy, nebo zadat souřadnice ručně. Vyberte také styl mapy." ## Technical Details ### Logo Resolution Helper ```typescript const resolveLogoUrl = (u?: string | null) => { if (!u) return undefined; // If it's a logoapi URL, use it directly (no proxy needed) if (u.includes('logoapi.sportcreative.eu')) return u; // Backend-relative paths if (u.startsWith('/uploads') || u.startsWith('/dist') || u.startsWith('/api/')) return assetUrl(u); // Proxy other remote URLs if (/^https?:\/\//i.test(u)) { return `${API_URL}/proxy/image?url=${encodeURIComponent(u)}`; } return u; }; ``` ### Club Selection with LogoAPI ```typescript const handleSelectClub = async (item: SearchResult) => { // Try logoapi first let logoUrl = ''; if (clubIdValue) { const logoApiUrl = await fetchLogoFromLogoAPI(clubIdValue, item.name); if (logoApiUrl) logoUrl = logoApiUrl; } // Fallback to FACR if (!logoUrl && item.logo_url) { logoUrl = item.logo_url; } setClubLogoUrl(logoUrl); // Extract colors automatically... }; ``` ### Logo Upload to LogoAPI ```typescript // Also upload to logoapi if we have a club ID if (clubId) { const logoFd = new FormData(); logoFd.append('logo', f); const logoApiRes = await fetch( `https://logoapi.sportcreative.eu/logos/${clubId}`, { method: 'POST', body: logoFd } ); if (logoApiRes.ok) { toast({ title: 'Logo nahráno', description: 'Logo bylo nahráno na logoapi i lokálně' }); } } ``` ### Live Font Preview ```typescript // Get selected font pairing for live preview const selectedFontPairing = FONT_PAIRINGS.find((f) => f.id === selectedFont); const fontHeading = selectedFontPairing?.cssHeading || 'inherit'; const fontBody = selectedFontPairing?.cssBody || 'inherit'; // Apply to entire page Title Body text inherits from parent ``` ## User Experience Improvements ### Before - Logo from FACR only (sometimes low quality) - Colors section after social networks - Typography preview only in selector boxes - Duplicate map style section ### After - **High-quality SVG logos** from logoapi.sportcreative.eu - **Automatic upload to logoapi** when adding custom logo - Colors section prominent (before social networks) - **Live typography preview** across entire page - Unified map configuration in one place ## Files Modified - `frontend/src/pages/SetupPage.tsx` - All enhancements implemented ## Testing Checklist - [x] Club search fetches logos from logoapi - [x] Logo upload uploads to both local and logoapi - [x] Colors section appears before social networks - [x] Typography changes apply to whole page immediately - [x] Map style selector integrated into GPS section - [x] No duplicate map style section - [x] All headings use font preview - [x] logoapi URLs bypass proxy correctly ## Benefits 1. **Better logos** - High-quality SVG logos from logoapi 2. **Centralized storage** - Logos uploaded to logoapi for reuse 3. **Improved flow** - Colors before social (more important) 4. **Live preview** - See typography changes immediately 5. **Cleaner UI** - No duplicate sections 6. **Better UX** - Related settings grouped together ## Related Documentation - `LOGO_API_IMPLEMENTATION.md` - LogoAPI integration details - `LOGO_ENHANCEMENT_SUMMARY.md` - Logo system overview - `TYPOGRAPHY_AND_DARKMODE_ENHANCEMENTS.md` - Typography system - `MAP_STYLES_QUICK_REFERENCE.md` - Map styling options