30 lines
826 B
TypeScript
30 lines
826 B
TypeScript
import CheckIcon from '@/material-icons/400-24px/check.svg?react';
|
|
|
|
import { Icon } from './icon';
|
|
|
|
const domParser = new DOMParser();
|
|
|
|
const stripRelMe = (html: string) => {
|
|
const document = domParser.parseFromString(html, 'text/html').documentElement;
|
|
|
|
document.querySelectorAll<HTMLAnchorElement>('a[rel]').forEach((link) => {
|
|
link.rel = link.rel
|
|
.split(' ')
|
|
.filter((x: string) => x !== 'me')
|
|
.join(' ');
|
|
});
|
|
|
|
const body = document.querySelector('body');
|
|
return body ? { __html: body.innerHTML } : undefined;
|
|
};
|
|
|
|
interface Props {
|
|
link: string;
|
|
}
|
|
export const VerifiedBadge: React.FC<Props> = ({ link }) => (
|
|
<span className='verified-badge'>
|
|
<Icon id='check' icon={CheckIcon} className='verified-badge__mark' />
|
|
<span dangerouslySetInnerHTML={stripRelMe(link)} />
|
|
</span>
|
|
);
|