# Calendar Component Usage Guide
## π¨ Custom Color Schemes
### Basic Active Colors (Simple)
For highlighting specific dates with custom colors:
```tsx
import { Year, ActiveColors } from 'react-calendario';
const activeColors: ActiveColors = {
headerBg: '#D4EDDA',
headerColor: '#155724',
contentBg: '#28A745',
contentColor: '#FFFFFF'
};
```
### Comprehensive Color Scheme (Advanced)
Full control over colors for every state and day type:
```tsx
import { Year, ColorScheme } from 'react-calendario';
const colorScheme: ColorScheme = [
// Weekday colors
{
type: 'weekday',
state: 'default', // Normal weekday
colors: {
header: { backgroundColor: '#2c3e50', color: '#ffffff' },
content: { backgroundColor: '#ffffff', color: '#2c3e50' }
}
},
{
type: 'weekday',
state: 'rangeStart', // First day of selected range
colors: {
header: { backgroundColor: '#2980b9', color: '#ffffff' },
content: { backgroundColor: '#3498db', color: '#ffffff' }
}
},
{
type: 'weekday',
state: 'rangeMid', // Middle days of selected range
colors: {
header: { backgroundColor: '#5dade2', color: '#ffffff' },
content: { backgroundColor: '#aed6f1', color: '#1a5490' }
}
},
// Weekend colors
{
type: 'weekend',
state: 'default', // Normal weekend
colors: {
header: { backgroundColor: '#7f8c8d', color: '#ffffff' },
content: { backgroundColor: '#ecf0f1', color: '#34495e' }
}
},
{
type: 'weekend',
state: 'rangeStart', // Weekend that starts a range
colors: {
header: { backgroundColor: '#2980b9', color: '#ffffff' },
content: { backgroundColor: '#3498db', color: '#ffffff' }
}
},
// ... more states
];
```
#### Available States:
- `default` - Normal day appearance
- `selected` - Day is part of a completed selection (deprecated, use `rangeMid`)
- `selecting` - Day is being hovered during selection (important for weekends!)
- `rangeStart` - First day of a range
- `rangeEnd` - Last day of a range
- `rangeMid` - Middle days of a selected range
- `active` - Special highlighted days (holidays, events)
#### Day Types:
- `weekday` - Monday through Friday
- `weekend` - Saturday and Sunday (or custom weekend days)
## π Locale Support
### Basic Usage
```tsx
import { Year } from 'react-calendario';
import { fr, de, ja, es } from 'date-fns/locale';
// French
// German
// Japanese
// Spanish
```
### What Gets Localized:
- Month names (January β Janvier β Januar β δΈζ)
- Day headers based on style:
- `expanded`: Full names (MONDAY β LUNDI β MONTAG)
- `compacted`: 3-letter (MON β LUN β MO)
- `tiny`: Single letter (M β L β M)
- Date formats in tooltips and labels
### Available Locales:
All date-fns locales are supported. Common ones include:
- `enUS` - English (US) - Default
- `es` - Spanish
- `fr` - French
- `de` - German
- `it` - Italian
- `pt` - Portuguese
- `ja` - Japanese
- `ko` - Korean
- `zhCN` - Chinese (Simplified)
- `ru` - Russian
- `ar` - Arabic
- `nl` - Dutch
- `pl` - Polish
- `tr` - Turkish
- `sv` - Swedish
- `nb` - Norwegian
## π― Combined Example
Using both features together:
```tsx
import { Year, ColorScheme } from 'react-calendario';
import { fr } from 'date-fns/locale';
const frenchHolidayScheme: ColorScheme = [
// Regular days with French aesthetic
{
type: 'weekday',
state: 'default',
colors: {
header: { backgroundColor: '#002395', color: '#ffffff' }, // French blue
content: { backgroundColor: '#ffffff', color: '#002395' }
}
},
// Weekends in subtle gray
{
type: 'weekend',
state: 'default',
colors: {
header: { backgroundColor: '#95a5a6', color: '#ffffff' },
content: { backgroundColor: '#ecf0f1', color: '#34495e' }
}
},
// French holidays in red
{
type: 'weekday',
state: 'active',
colors: {
header: { backgroundColor: '#ed2939', color: '#ffffff' }, // French red
content: { backgroundColor: '#c0392b', color: '#ffffff' }
}
},
{
type: 'weekend',
state: 'active',
colors: {
header: { backgroundColor: '#c0392b', color: '#ffffff' },
content: { backgroundColor: '#ed2939', color: '#ffffff' }
}
}
];
const frenchHolidays = [
new Date(2025, 0, 1), // Jour de l'An
new Date(2025, 4, 1), // FΓͺte du Travail
new Date(2025, 6, 14), // FΓͺte Nationale
new Date(2025, 11, 25) // NoΓ«l
];
```
## π Tips
1. **Color Scheme Fallbacks**: You don't need to define every state. The system intelligently falls back:
- Weekend states β Weekday states of same type
- Missing states β Default state
- Weekend default β Weekday default
2. **Performance**: ColorScheme is more efficient than inline styles for large calendars
3. **Accessibility**: Ensure sufficient color contrast between background and text colors
4. **Locale + Colors**: Combine locale with themed colors for culturally appropriate calendars
5. **Weekend Customization**: Weekend days are automatically detected and styled differently, including when they're part of a selected range