import { Meta, Source } from '@storybook/blocks'

<Meta title="Guide du dev/Règles De Validation/isHolidayDay" />
<style>
{
`
      .header {
      padding: 2rem;
      margin-bottom: 2rem;
    }
    
    .header h1 {
      margin-top: 0;
      color:  #0c419a;;
      font-size: 2.5rem;
      font-weight: 700;
    }
    
    .header p {
      font-size: 1.1rem;
      margin-bottom: 0;
    }
    `
}
</style>

<div className="header">
  <h1>Règle de validation `isHolidayDay`</h1>
  <p>La règle `isHolidayDay` vérifie qu'une date n'est pas un jour férié en France.</p>
</div>

## Utilisation

<Source dark code={`
import { isHolidayDay } from '@/utils/isHolidayDay'

const rules = [
  isHolidayDay,
]
`} />


## Personnalisation des messages d'erreur

Vous pouvez personnaliser le message d'erreur en utilisant la fonction `isHolidayDayFn` :


<Source dark code={`
import { isHolidayDayFn } from '@/utils/isHolidayDay'

const customRule = isHolidayDayFn({
  default: 'Veuillez sélectionner une date qui n\'est pas un jour férié.',
})
`} />

## Fonctionnement

Cette règle utilise le composable `useHolidayDay` pour déterminer si une date est un jour férié en France. La valeur peut être une chaîne de caractères (format `DD/MM/YYYY`) ou un objet `Date`. La règle retourne :

- `true` si la valeur est vide ou si la date n'est pas un jour férié
- Un message d'erreur si la date est un jour férié ou si le type de valeur n'est pas supporté

## API

<Source dark code={`
isHolidayDayFn(
  errorMessages?: {
    default: string;
  }
): (value: string | Date) => true | string;
`} />

## Jours fériés pris en compte

Les jours fériés suivants sont pris en compte :

- 1er janvier (Jour de l'an)
- Lundi de Pâques (date variable)
- 1er mai (Fête du travail)
- 8 mai (Victoire des alliés)
- Ascension (date variable)
- Lundi de Pentecôte (date variable)
- 14 juillet (Fête Nationale)
- 15 août (Assomption)
- 1er novembre (Toussaint)
- 11 novembre (Armistice)
- 25 décembre (Noël)
