import { Card, Group, Text } from '@mantine/core'; import { AiFillStar } from 'react-icons/ai'; import { ExternalLinkStyled } from '~/components/common/external_link_styled'; import LinkFavicon from '~/components/dashboard/link/item/favicon/link_favicon'; import LinkControls from '~/components/dashboard/link/item/link_controls'; import type { LinkListProps } from '~/components/dashboard/link/list/link_list'; import { Link, PublicLink } from '~/types/app'; import styles from './link.module.css'; interface LinkItemProps extends LinkListProps { link: Link | PublicLink; } export function LinkItem({ link, hideMenu: hideMenu = false }: LinkItemProps) { const { name, url, description } = link; const showFavoriteIcon = !hideMenu && 'favorite' in link && link.favorite; return (
{name} {showFavoriteIcon && }
{!hideMenu && }
{description && ( {description} )}
); } function LinkItemURL({ url }: { url: Link['url'] }) { try { const { origin, pathname, search } = new URL(url); let text = ''; if (pathname !== '/') { text += pathname; } if (search !== '') { if (text === '') { text += '/'; } text += search; } return ( {origin} {text} ); } catch (error) { console.error('error', error); return ( {url} ); } }