import { chakra } from '@chakra-ui/react';
interface FormattedErrorProps {
keywords: string[];
message: string;
}
type FormatError = string | JSX.Element;
function formatError(text: string, values: string[], regex: RegExp): FormatError[] | FormatError {
if (!values.length) {
return text;
}
const parts = text.split(regex);
return parts.reduce((prev, current, i) => {
if (!i) {
return [current];
}
return prev.concat(
values.includes(current) ? {current} : current,
);
}, [] as FormatError[]);
}
export const FormattedError = (props: FormattedErrorProps): JSX.Element => {
const { keywords, message } = props;
const pattern = new RegExp(keywords.map(kw => `(${kw})`).join('|'), 'gi');
const things = formatError(message, keywords, pattern);
return (
{keywords.length !== 0 ? things : message}
);
};