@pagopa/mui-italia
Version:
[Material-UI](https://mui.com/core/) theme inspired by [Bootstrap Italia](https://italia.github.io/bootstrap-italia/).
124 lines (123 loc) • 5.21 kB
TypeScript
import { AriaAttributes, ReactNode } from 'react';
import type { Theme } from '@mui/material/styles';
export type ThemeColor = string | ((theme: Theme) => string);
export type BannerColor = 'white' | 'info';
export type BannerVariant = 'primary' | 'secondary' | 'tertiary';
export type BannerDirection = 'horizontal' | 'vertical';
export type CtaKind = 'naked' | 'contained';
export type BannerColorStyle = {
background: ThemeColor;
border: ThemeColor;
};
export type BannerCTA = {
label: string;
onClick: () => void;
} | {
label: string;
href: string;
target?: '_self' | '_blank';
rel?: string;
};
export type BannerCTAWithId = BannerCTA & {
id: string;
};
type DataAttributes = {
[key: `data-${string}`]: string | number | boolean | undefined;
};
export interface BannerProps extends DataAttributes, AriaAttributes {
color?: BannerColor;
variant?: BannerVariant;
title: string;
message?: string;
badge?: string;
onClose?: () => void;
closeAriaLabel?: string;
cta?: BannerCTA;
icon?: ReactNode;
illustration?: ReactNode;
}
export type BannerModel = {
colorStyle: BannerColorStyle;
direction: BannerDirection;
textAlign: 'left' | 'center';
hasClose: boolean;
hasCta: boolean;
ctaKind: CtaKind;
badgeText?: string;
topIcon?: ReactNode;
illustrationNode?: ReactNode;
};
export type ViewState = {
variant: BannerVariant;
isHorizontal: boolean;
contentGapPx: number;
primaryIllustrationSizePx: number;
};
export declare function normalizeProps(props: BannerProps): {
variant: BannerVariant;
color?: BannerColor | undefined;
title: string;
message?: string | undefined;
badge?: string | undefined;
onClose?: (() => void) | undefined;
closeAriaLabel?: string | undefined;
cta?: BannerCTA | undefined;
icon?: ReactNode;
illustration?: ReactNode;
"aria-activedescendant"?: string | undefined;
"aria-atomic"?: (boolean | "true" | "false") | undefined;
"aria-autocomplete"?: "list" | "inline" | "none" | "both" | undefined;
"aria-braillelabel"?: string | undefined;
"aria-brailleroledescription"?: string | undefined;
"aria-busy"?: (boolean | "true" | "false") | undefined;
"aria-checked"?: boolean | "true" | "false" | "mixed" | undefined;
"aria-colcount"?: number | undefined;
"aria-colindex"?: number | undefined;
"aria-colindextext"?: string | undefined;
"aria-colspan"?: number | undefined;
"aria-controls"?: string | undefined;
"aria-current"?: boolean | "time" | "page" | "step" | "true" | "false" | "location" | "date" | undefined;
"aria-describedby"?: string | undefined;
"aria-description"?: string | undefined;
"aria-details"?: string | undefined;
"aria-disabled"?: (boolean | "true" | "false") | undefined;
"aria-dropeffect"?: "link" | "none" | "copy" | "move" | "execute" | "popup" | undefined;
"aria-errormessage"?: string | undefined;
"aria-expanded"?: (boolean | "true" | "false") | undefined;
"aria-flowto"?: string | undefined;
"aria-grabbed"?: (boolean | "true" | "false") | undefined;
"aria-haspopup"?: boolean | "dialog" | "menu" | "grid" | "true" | "listbox" | "tree" | "false" | undefined;
"aria-hidden"?: (boolean | "true" | "false") | undefined;
"aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
"aria-keyshortcuts"?: string | undefined;
"aria-label"?: string | undefined;
"aria-labelledby"?: string | undefined;
"aria-level"?: number | undefined;
"aria-live"?: "off" | "assertive" | "polite" | undefined;
"aria-modal"?: (boolean | "true" | "false") | undefined;
"aria-multiline"?: (boolean | "true" | "false") | undefined;
"aria-multiselectable"?: (boolean | "true" | "false") | undefined;
"aria-orientation"?: "vertical" | "horizontal" | undefined;
"aria-owns"?: string | undefined;
"aria-placeholder"?: string | undefined;
"aria-posinset"?: number | undefined;
"aria-pressed"?: boolean | "true" | "false" | "mixed" | undefined;
"aria-readonly"?: (boolean | "true" | "false") | undefined;
"aria-relevant"?: "text" | "all" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
"aria-required"?: (boolean | "true" | "false") | undefined;
"aria-roledescription"?: string | undefined;
"aria-rowcount"?: number | undefined;
"aria-rowindex"?: number | undefined;
"aria-rowindextext"?: string | undefined;
"aria-rowspan"?: number | undefined;
"aria-selected"?: (boolean | "true" | "false") | undefined;
"aria-setsize"?: number | undefined;
"aria-sort"?: "none" | "other" | "ascending" | "descending" | undefined;
"aria-valuemax"?: number | undefined;
"aria-valuemin"?: number | undefined;
"aria-valuenow"?: number | undefined;
"aria-valuetext"?: string | undefined;
};
export declare function computeModel(props: BannerProps, direction: BannerDirection): BannerModel;
export declare function computeViewState(props: BannerProps, direction: BannerDirection): ViewState;
export {};