import dayjs from 'dayjs' import relativeTime from 'dayjs/plugin/relativeTime' dayjs.extend(relativeTime) export const MetaStyle = { width: '100%', color: '$thTextSubtle3', fontSize: '13px', fontWeight: '400', fontFamily: '$display', } export const MenuStyle = { display: 'flex', marginLeft: 'auto', height: '30px', width: '30px', mt: '-5px', mr: '-5px', pt: '2px', alignItems: 'center', justifyContent: 'center', borderRadius: '1000px', '&:hover': { bg: '$thBackground4', }, } export const TitleStyle = { color: '$thTextContrast2', fontSize: '16px', fontWeight: '700', lineHeight: '1.25', fontFamily: '$display', overflow: 'hidden', textOverflow: 'ellipsis', wordBreak: 'break-word', display: '-webkit-box', '-webkit-line-clamp': '2', '-webkit-box-orient': 'vertical', } export const DescriptionStyle = { color: '$thTextSubtle', pt: '10px', fontSize: '13px', fontWeight: '400', lineHeight: '140%', fontFamily: '$display', overflow: 'hidden', textOverflow: 'ellipsis', display: '-webkit-box', '-webkit-line-clamp': '2', '-webkit-box-orient': 'vertical', height: '45px', alignItems: 'start', } export const AuthorInfoStyle = { maxLines: '1', textOverflow: 'ellipsis', whiteSpace: 'nowrap', maxWidth: '240px', overflow: 'hidden', height: '21px', color: '$thTextSubtle3', fontSize: '13px', fontWeight: '400', fontFamily: '$display', } export const timeAgo = (date: string | undefined): string => { if (!date) { return '' } return dayjs(date).fromNow() } const shouldHideUrl = (url: string): boolean => { try { const origin = new URL(url).origin const hideHosts = ['https://storage.googleapis.com', 'https://omnivore.app'] if (hideHosts.indexOf(origin) != -1) { return true } } catch { console.log('invalid url item', url) } return false } export const siteName = ( originalArticleUrl: string, itemUrl: string ): string => { if (shouldHideUrl(originalArticleUrl)) { return '' } try { return new URL(originalArticleUrl).hostname.replace(/^www\./, '') } catch {} try { return new URL(itemUrl).hostname.replace(/^www\./, '') } catch {} return '' }