github.com/grafana/pyroscope@v1.18.0/public/app/ui/StatusMessage/index.tsx (about) 1 import React, { ReactNode } from 'react'; 2 import cx from 'classnames'; 3 import styles from './StatusMessage.module.scss'; 4 5 interface StatusMessageProps { 6 type: 'error' | 'success' | 'warning' | 'info'; 7 message: string; 8 action?: ReactNode; 9 } 10 11 export default function StatusMessage({ 12 type, 13 message, 14 action, 15 }: StatusMessageProps) { 16 const getClassnameForType = () => { 17 switch (type) { 18 case 'error': 19 return styles.error; 20 case 'success': 21 return styles.success; 22 case 'warning': 23 return styles.warning; 24 case 'info': 25 return styles.info; 26 default: 27 return styles.error; 28 } 29 }; 30 31 return ( 32 <div 33 className={cx({ 34 [styles.statusMessage]: true, 35 [getClassnameForType()]: true, 36 })} 37 > 38 <div>{message}</div> 39 <div className={styles.action}>{action}</div> 40 </div> 41 ); 42 }