UNPKG

@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
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 {};