2021-05-23 18:38:39 +02:00
|
|
|
import { Bookmark, Category } from '../../../interfaces';
|
|
|
|
import classes from './BookmarkCard.module.css';
|
|
|
|
|
2021-06-09 12:45:55 +02:00
|
|
|
import Icon from '../../UI/Icons/Icon/Icon';
|
2021-06-23 14:15:14 +02:00
|
|
|
import { iconParser, urlParser, searchConfig } from '../../../utility';
|
2021-06-09 12:45:55 +02:00
|
|
|
|
2021-05-23 18:38:39 +02:00
|
|
|
interface ComponentProps {
|
|
|
|
category: Category;
|
|
|
|
}
|
|
|
|
|
|
|
|
const BookmarkCard = (props: ComponentProps): JSX.Element => {
|
|
|
|
return (
|
|
|
|
<div className={classes.BookmarkCard}>
|
|
|
|
<h3>{props.category.name}</h3>
|
|
|
|
<div className={classes.Bookmarks}>
|
2021-06-11 15:33:06 +02:00
|
|
|
{props.category.bookmarks.map((bookmark: Bookmark) => {
|
2021-06-13 01:06:42 +02:00
|
|
|
const redirectUrl = urlParser(bookmark.url)[1];
|
2021-06-11 15:33:06 +02:00
|
|
|
|
2021-08-06 15:15:54 +02:00
|
|
|
let iconEl: JSX.Element;
|
|
|
|
const { icon, name } = bookmark;
|
|
|
|
|
|
|
|
if (/.(jpeg|jpg|png)$/i.test(icon)) {
|
|
|
|
iconEl = (
|
|
|
|
<div className={classes.BookmarkIcon}>
|
|
|
|
<img
|
|
|
|
src={`/uploads/${icon}`}
|
|
|
|
alt={`${name} icon`}
|
|
|
|
className={classes.CustomIcon}
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
} else if (/.(svg)$/i.test(icon)) {
|
|
|
|
iconEl = (
|
|
|
|
<div className={classes.BookmarkIcon}>
|
|
|
|
<svg
|
|
|
|
data-src={`/uploads/${icon}`}
|
|
|
|
fill='var(--color-primary)'
|
|
|
|
className={classes.BookmarkIconSvg}
|
|
|
|
></svg>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
iconEl = (
|
|
|
|
<div className={classes.BookmarkIcon}>
|
|
|
|
<Icon icon={iconParser(icon)} />
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2021-06-11 15:33:06 +02:00
|
|
|
return (
|
|
|
|
<a
|
|
|
|
href={redirectUrl}
|
2021-06-25 11:24:29 +02:00
|
|
|
target={searchConfig('bookmarksSameTab', false) ? '' : '_blank'}
|
2021-06-13 01:06:42 +02:00
|
|
|
rel='noreferrer'
|
2021-08-06 15:15:54 +02:00
|
|
|
key={`bookmark-${bookmark.id}`}
|
|
|
|
>
|
|
|
|
{icon && iconEl}
|
2021-06-11 15:33:06 +02:00
|
|
|
{bookmark.name}
|
|
|
|
</a>
|
2021-08-06 15:15:54 +02:00
|
|
|
);
|
2021-06-11 15:33:06 +02:00
|
|
|
})}
|
2021-05-23 18:38:39 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
2021-08-06 15:15:54 +02:00
|
|
|
);
|
|
|
|
};
|
2021-05-23 18:38:39 +02:00
|
|
|
|
2021-08-06 15:15:54 +02:00
|
|
|
export default BookmarkCard;
|