import { IconCheck, IconX } from '@tabler/icons-react'
import { notifications } from '@mantine/notifications'
const getNotificationWidth = (text: string) => {
const length = Math.max(1, text?.length || 0)
const width = Math.min(Math.max(length * 14 + 80, 180), 520)
return `${width}px`
}
const getSharedStyles = (text: string) => {
const width = getNotificationWidth(text)
const offset = `calc((100% - ${width}) / 2)`
return {
width,
styles: {
root: {
top: 20,
left: offset,
transform: 'translateX(-75%)',
width,
},
icon: {
width: '16px',
height: '16px',
},
},
}
}
export const showSuccessMsg = (text: string, config?: object) => {
const { width, styles } = getSharedStyles(text)
notifications.show({
message: text,
position: 'top-center',
withCloseButton: false,
color: '#52c41a',
autoClose: 5000,
icon: ,
styles,
...config,
style: {
width,
...(config && 'style' in config && typeof config.style === 'object'
? (config.style as object)
: {}),
},
})
}
export const showErrorMsg = (text: string, config?: object) => {
const { width, styles } = getSharedStyles(text)
notifications.show({
message: text,
position: 'top-center',
withCloseButton: false,
color: '#ff4d4f',
autoClose: 5000,
icon: ,
styles: {
...styles,
root: {
...styles.root,
transform: 'translateX(-75%)',
},
},
...config,
style: {
width,
...(config && 'style' in config && typeof config.style === 'object'
? (config.style as object)
: {}),
},
})
}