import React, { type ReactNode, type CSSProperties } from "react"; import { type FrClassName } from "./fr"; import { type RegisteredLinkProps } from "./link"; export type NoticeProps = (NoticeProps.NonClosable | NoticeProps.Closable) & (NoticeProps.OptionalIcon | NoticeProps.MandatoryIcon); export declare namespace NoticeProps { type Common = { id?: string; className?: string; classes?: Partial>; title: NonNullable; description?: ReactNode; style?: CSSProperties; link?: { linkProps: RegisteredLinkProps; text: ReactNode; }; /** Default: "info" */ severity?: NoticeProps.Severity; }; export type NonClosable = Common & { isClosable?: false; isClosed?: never; onClose?: never; }; export type Closable = Closable.Controlled | Closable.Uncontrolled; export namespace Closable { type Controlled = Common & { isClosable: true; isClosed: boolean; onClose: (event: React.MouseEvent) => void; }; type Uncontrolled = Common & { isClosable: true; onClose?: (event: React.MouseEvent) => void; isClosed?: never; }; } export type OptionalIcon = { severity?: Exclude; iconDisplayed?: boolean; }; export type MandatoryIcon = { severity: RiskyAlertSeverity | WeatherSeverity; iconDisplayed?: true; }; type ExtractSeverity = FrClassName extends `fr-notice--${infer Severity}` ? Severity : never; export type Severity = Exclude, "no-icon">; type ExtractWeatherSeverity = Severity extends `weather-${infer _WeatherSeverity}` ? Severity : never; export type WeatherSeverity = ExtractWeatherSeverity; export type RiskyAlertSeverity = "witness" | "kidnapping" | "attack" | "cyberattack"; export {}; } /** @see */ export declare const Notice: React.MemoExoticComponent>>; export default Notice; declare const addNoticeTranslations: (params: { lang: string; messages: Partial<{ "hide message": string; }>; }) => void; export { addNoticeTranslations };