# Enhanced Map Implementation

## Overview
The map system has been significantly enhanced with professional styling options, club color integration, and improved flexibility.

## Features

### 🎨 Multiple Map Styles
The application now supports **11 professional map styles**, all from free, open-source providers:

#### Light & Minimal
- **Positron** - Clean light map, perfect for overlays and colored markers
- **Positron No Labels** - Minimal light map without labels
- **OpenStreetMap (Default)** - Standard OSM tiles

#### Dark Themes
- **Dark Matter** - Professional dark theme, great for night mode
- **Dark No Labels** - Dark map without text labels

#### Black & White
- **Toner (B&W)** - High contrast black and white, elegant and professional
- **Toner Lite (B&W)** - Subtle black and white style

#### Colorful Options
- **Voyager** - Balanced colors with good readability
- **Terrain** - Natural terrain visualization with topographic features
- **Watercolor** - Artistic watercolor style (unique look)

#### Satellite
- **Satellite** - Real satellite imagery from Esri

### 🎯 Club Color Integration

Maps now automatically integrate your club's colors:

1. **Custom Markers** - Map markers are generated with your primary club color
2. **Color Overlay** - Subtle color tint applied to maps using club colors (15% opacity)
3. **Consistent Branding** - Map markers match your club's visual identity

### 🎨 How It Works

#### Custom SVG Markers
- Dynamically generated markers with club primary color
- White center dot for visibility
- Drop shadow for depth
- Professional appearance

#### Color Overlay System
- Uses CSS blend modes (`multiply`) for natural color mixing
- 15% opacity ensures map remains readable
- Automatically applied when club colors are set

### 📍 Where Maps Appear

Maps with enhanced styling appear in:
- **Homepage** - Contact section (if enabled in settings)
- **Contact Page** - Location map with club colors
- **Events** - Event location maps with geocoding
- **Admin Preview** - Real-time preview in contact settings

### 🛠️ Admin Configuration

#### Location in Admin Panel
Navigate to: **Admin → Kontakty → Nastavení polohy**

#### Configuration Options

1. **Map Coordinates**
   - Latitude/Longitude (manual entry or map link import)
   - Import from Google Maps, Mapy.cz, or other providers
   - Zoom level (1-20)

2. **Map Style Selection**
   - Visual selector with descriptions
   - Live preview with club colors
   - Tips for best style choices

3. **Club Colors**
   - Automatically pulled from general settings
   - Shows color preview in selector
   - Applied to all maps across the site

4. **Homepage Display**
   - Toggle map visibility on homepage
   - Full preview before publishing

### 📦 Technical Implementation

#### Files Modified
- `frontend/src/components/home/ContactMap.tsx` - Core map component
- `frontend/src/components/admin/MapStyleSelector.tsx` - New style selector UI
- `frontend/src/pages/admin/ContactsAdminPage.tsx` - Admin interface updates
- `frontend/src/components/home/ContactsSection.tsx` - Homepage integration
- `frontend/src/pages/ContactPage.tsx` - Contact page integration

#### Key Features
- **Dynamic Loading** - Leaflet loaded on-demand (no bloat)
- **Caching** - Map tiles are cached by browser
- **Responsive** - Mobile-friendly controls
- **Accessibility** - Keyboard navigation support

### 🎯 Style Recommendations

**For Clubs with Bold Colors:**
- Use Positron or Toner Lite as base
- Let your club colors shine through the overlay

**For Dark/Night Mode Sites:**
- Dark Matter or Dark No Labels
- Excellent contrast with light markers

**For Classic/Traditional Look:**
- Toner (B&W) for elegant, timeless appearance
- High contrast, professional

**For Modern/Vibrant Sites:**
- Voyager for balanced colors
- Watercolor for unique artistic touch

### 🔧 Customization

#### Adding New Styles
Edit `MAP_STYLES` in `ContactMap.tsx`:

```typescript
'your-style-key': {
  name: 'Your Style Name',
  url: 'https://tile-server.com/{z}/{x}/{y}.png',
  attribution: '© Provider',
  description: 'Style description'
}
```

#### Changing Color Overlay Opacity
In `ContactMap.tsx`, adjust this line:
```typescript
pane.style.opacity = '0.15'; // Change from 0.15 to your preference (0.0 - 1.0)
```

#### Custom Marker Colors
Markers automatically use `clubPrimaryColor` prop. To override:
```typescript
<ContactMap 
  clubPrimaryColor="#YOUR_COLOR"
  // ... other props
/>
```

### 🌍 Open Source Map Providers

All map tiles are from free, open-source providers:
- **CartoDB** - Positron, Dark Matter, Voyager
- **Stadia Maps** - Toner, Terrain, Watercolor (Stamen designs)
- **OpenStreetMap** - Default OSM tiles
- **Esri** - Satellite imagery

No API keys required! All tiles are freely available.

### ✨ Best Practices

1. **Choose Style That Matches Your Brand**
   - Light maps for colorful clubs
   - Dark maps for professional/elegant sites
   - B&W for timeless, clean look

2. **Test Visibility**
   - Ensure markers are visible on your chosen style
   - Check readability of labels
   - Preview on mobile devices

3. **Color Harmony**
   - Primary color should contrast with map style
   - Use color wheel to find complementary colors
   - Test with color overlay enabled

4. **Performance**
   - Maps lazy-load automatically
   - Tiles are cached by browser
   - No performance impact until map is viewed

### 🎨 Example Configurations

#### Classic Football Club (Red/White)
```
Style: Toner Lite (B&W)
Primary Color: #e11d48 (red)
Secondary: #ffffff (white)
→ Red markers on clean B&W map
```

#### Modern Tech-Forward Club (Blue)
```
Style: Dark Matter
Primary Color: #3b82f6 (blue)
Secondary: #60a5fa (light blue)
→ Sleek dark map with bright blue markers
```

#### Traditional/Heritage Club (Green/Gold)
```
Style: Terrain
Primary Color: #16a34a (green)
Secondary: #fbbf24 (gold)
→ Natural terrain with club colors
```

### 🐛 Troubleshooting

**Map doesn't load:**
- Check browser console for errors
- Ensure coordinates are valid (-90 to 90 lat, -180 to 180 lng)
- Check internet connection (tiles loaded from external servers)

**Marker wrong color:**
- Verify club primary color is set in Settings → Vzhled
- Check color format (hex, rgb, or named colors)

**Map tiles not loading:**
- Some tile servers may be temporarily down
- Try different map style
- Check browser ad-blocker/privacy settings

**Color overlay too strong/weak:**
- Adjust opacity in ContactMap.tsx (see Customization section)
- Values: 0.05 (subtle) to 0.30 (strong)

### 📈 Future Enhancements

Potential additions:
- Multiple markers for multiple locations
- Custom marker icons (club logo)
- Drawing tools for catchment areas
- Route planning integration
- Cluster markers for many locations

---

**Implementation Date:** 2025-10-10  
**Version:** 1.0  
**Status:** ✅ Production Ready
