// eslint-disable-next-line @typescript-eslint/triple-slash-reference /// export interface CommonProps { /** * Date de la dernière mise à jour. La date par défaut est celle de la compilation. * * @example "01/01/2022" * @default "" */ date?: string; /** * Mentionner Beta.gouv ou non dans les textes en plus de l'ADEME. * * (non utilisé pour la politique de confidentialité) * * @default false */ includeBetaGouv?: boolean; /** * Nom du site. */ siteName: string; } //#region CookiePolicy export type CookiesPolicyPropsAnalyticTool = { /** * Url de la page listant les cookies utilisés par l'outil. */ cookieListUrl: string; /** * Nom de l'outil d'analyse. */ name: string; /** * Url de la politique de confidentialité de l'outil. */ policyUrl: string; }; export interface CookiesPolicyProps extends CommonProps { /** * Outil d'analyse d'audience. */ analyticTool: CookiesPolicyPropsAnalyticTool; /** * Bouton de consentement aux cookies. Peut être un composant propre à la librairie utilisée. */ cookieConsentButton: ElementType; } //#endregion //#region PrivacyPolicy export interface PrivacyPolicyPropsThirdParty { /** * "Pays destinataire", pays d'origine du sous-traitant. */ country: string; /** * "Pays d’hébergement", pays où sont stockées les données. * * Si le service permet de changer la localisation du stockage ou du transit des données, le préciser. */ hostingCountry: string; /** * "Partenaire", nom du sous-traitant. */ name: string; /** * "Garantie", garanties de protection des données, lien de la politique de confidentialité du sous-traitant. */ policyUrl: string; /** * "Traitement réalisé", description du traitement des données. * * @example "Analyse de l'audience", "Hébergement", "Base de données" */ serviceType: string; } export interface PrivacyPolicyPropsCookie { /** * "Catégorie de cookie" * * @example "Cookies de mesure d'audience", "Cookies de personnalisation" */ category: string; /** * "Destination", destination du cookie. Dans quel pays les données sont-elles envoyées ? * * @example "France", "Union européenne", "États-Unis" */ destination: string; /** * "Éditeur", nom de l'entité responsable du cookie. * * @example "Matomo & ADEME", "Google Analytics" */ editor: string; /** * "Durée de conservation", durée de conservation du cookie. * * @example "13 mois", "Session" */ expiration: string; /** * "Finalité", finalité du cookie. * * @example "Mesurer l'audience", "Personnaliser l'expérience utilisateur" */ finalities: string; /** * "Nom du cookie", nom du cookie. */ name: string; } export type PrivacyPolicyPropsWithThirdPartiesAsArray = { tableThirdParties?: never; /** * Mentionner ici tous les sous-traitants intervenant dans le traitement des données. */ thirdParties: PrivacyPolicyPropsThirdParty[]; }; export type PrivacyPolicyPropsWithThirdPartiesAsTableElement = { /** @see {@link PrivacyPolicyPropsWithThirdPartiesAsArray.thirdParties} */ tableThirdParties: ElementType; thirdParties?: never; }; export type PrivacyPolicyPropsWithCookiesAsArray = { /** * Mentionner ici tous les cookies utilisés par le site. */ cookies: PrivacyPolicyPropsCookie[]; tableCookies?: never; }; export type PrivacyPolicyPropsWithCookiesAsTableElement = { cookies?: never; /** @see {@link PrivacyPolicyPropsWithCookiesAsArray.cookies} */ tableCookies: ElementType; }; export type PrivacyPolicyPropsBase = CommonProps & { /** * Bouton de consentement aux cookies. Peut être un composant propre à la librairie utilisée. */ cookieConsentButton: ElementType; }; export type PrivacyPolicyProps = PrivacyPolicyPropsBase & (PrivacyPolicyPropsWithCookiesAsArray | PrivacyPolicyPropsWithCookiesAsTableElement) & (PrivacyPolicyPropsWithThirdPartiesAsArray | PrivacyPolicyPropsWithThirdPartiesAsTableElement); //#endregion //#region LegalNotice export interface LegalNoticePropsSiteHost { /** * "Adresse", adresse de l'hébergeur. */ address: string; /** * "Pays", pays d'hébergement du site. */ country: string; /** * "Email", email de l'hébergeur. */ email?: string; /** * "Nom", nom de l'hébergeur. */ name: string; } export interface LegalNoticePropsThirdParty { /** * Nom du service tiers. * * @example "Storyset" */ name: string; /** * Texte placé avant le nom du service tiers. * * @example "Certaines illustrations sont réalisées par" */ text: string; /** * Lien vers le service tiers. */ url: string; } export type LegalNoticePropsWithThirdPartiesAsArray = { elementThirdParties?: never; /** * Mentionner ici tout service tiers fournissant des éléments complémentaires * tels que des fonctionnalités additionnelles – formulaire en ligne, API, Map… – ; * des illustrations ou pictogrammes venant de banques d’images ; * des polices de caractère propriétaire ; etc. */ thirdParties?: LegalNoticePropsThirdParty[]; }; export type LegalNoticePropsWithThirdPartiesAsElement = { /** @see {@link LegalNoticePropsWithThirdPartiesAsArray.thirdParties} */ elementThirdParties?: ElementType; thirdParties?: never; }; export type LegalNoticePropsBase = CommonProps & { /** * Email de contact. */ contactEmail: string; /** * Licence du code, habituellement sur GitHub. */ licenceUrl: string; /** * Lien vers la page de politique de confidentialité. * * @default "/politique-de-confidentialite" */ privacyPolicyUrl?: string; /** * Hébergeur du site. */ siteHost: LegalNoticePropsSiteHost; /** * Url du site. */ siteUrl: string; }; export type LegalNoticeProps = LegalNoticePropsBase & (LegalNoticePropsWithThirdPartiesAsArray | LegalNoticePropsWithThirdPartiesAsElement); //#endregion