Files
web/packages/design-system/lib/components/MessageBanner/index.tsx
Bianca Widstam c473bbc8b0 Merged in fix/BOOK-323-enter-details-scroll-error (pull request #2986)
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
2025-10-24 11:30:56 +00:00

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>
)
}