Fix/BOOK-323 enter details scroll error * fix(BOOK-323): scroll to invalid element on submit on enter details * fix(BOOK-323): update error message design * fix(BOOK-323): clean up * fix(BOOK-323): scroll to fields in room in right order * fix(BOOK-323): add id to translations * fix(BOOK-323): remove undefined * fix(BOOK-323): fix submitting state * fix(BOOK-323): use ref in multiroom for scrolling to right element, add membershipNo * fix(BOOK-323): fix invalid border country * fix(BOOK-323): use error message component * fix(BOOK-323): fix invalid focused styling on mobile * fix(BOOK-323): remove redundant dependency in callback Approved-by: Erik Tiekstra
56 lines
1.3 KiB
TypeScript
56 lines
1.3 KiB
TypeScript
import { cva } from 'class-variance-authority'
|
|
import styles from './messageBanner.module.css'
|
|
import { Typography } from '../Typography'
|
|
import { MaterialIcon } from '../Icons/MaterialIcon'
|
|
|
|
type MessageBannerType = 'default' | 'error' | 'info'
|
|
type TextColor = 'default' | 'error'
|
|
|
|
const textVariants = cva('', {
|
|
variants: {
|
|
textColor: {
|
|
default: styles.textDefault,
|
|
error: styles.textError,
|
|
},
|
|
},
|
|
defaultVariants: {
|
|
textColor: 'default',
|
|
},
|
|
})
|
|
|
|
type MessageBannerProps = {
|
|
type?: MessageBannerType
|
|
textColor?: TextColor
|
|
text: string
|
|
}
|
|
|
|
export function MessageBanner({
|
|
type = 'default',
|
|
textColor = 'default',
|
|
text,
|
|
}: MessageBannerProps) {
|
|
const textClass = textVariants({ textColor })
|
|
|
|
const iconName = type === 'error' ? 'error' : 'info'
|
|
const iconColor =
|
|
type === 'error'
|
|
? 'Icon/Feedback/Error'
|
|
: type === 'info'
|
|
? 'Icon/Feedback/Information'
|
|
: 'Icon/Default'
|
|
|
|
return (
|
|
<div className={styles.container}>
|
|
<Typography
|
|
className={textClass}
|
|
variant="Body/Supporting text (caption)/smRegular"
|
|
>
|
|
<span className={styles.content}>
|
|
<MaterialIcon size={20} icon={iconName} color={iconColor} isFilled />
|
|
{text}
|
|
</span>
|
|
</Typography>
|
|
</div>
|
|
)
|
|
}
|