diff --git a/src/webapp/features/platforms/bluesky/components/blueskySemblePost/BlueskySemblePost.tsx b/src/webapp/features/platforms/bluesky/components/blueskySemblePost/BlueskySemblePost.tsx index 2b094be5..8b99d7f7 100644 --- a/src/webapp/features/platforms/bluesky/components/blueskySemblePost/BlueskySemblePost.tsx +++ b/src/webapp/features/platforms/bluesky/components/blueskySemblePost/BlueskySemblePost.tsx @@ -19,6 +19,7 @@ import { Box, Image, Text, + Badge, } from '@mantine/core'; import Link from 'next/link'; import { FaBluesky } from 'react-icons/fa6'; @@ -26,6 +27,9 @@ import PostEmbed from '../postEmbed/PostEmbed'; import BlackskyLogo from '@/assets/icons/blacksky-logo.svg'; import BlackskyLogoWhite from '@/assets/icons/blacksky-logo-white.svg'; import { RiArrowRightUpLine } from 'react-icons/ri'; +import { UrlType } from '@semble/types'; +import { getUrlTypeIcon } from '@/lib/utils/icon'; +import { IconType } from 'react-icons/lib'; interface Props { url: string; @@ -67,26 +71,34 @@ export default async function BlueskySemblePost(props: Props) { return ; } + const urlTypeIcon = getUrlTypeIcon(UrlType.SOCIAL); + const IconComponent = urlTypeIcon as IconType; + const post = data.thread.post; const record = post.record as AppBskyFeedPost.Record; return ( - - - - {getDomain(props.url)} - - - - + + }> + {UrlType.SOCIAL} + + + + + {getDomain(props.url)} + + + + + {/* Post */} diff --git a/src/webapp/features/semble/components/urlMetadataHeader/UrlMetadataHeader.tsx b/src/webapp/features/semble/components/urlMetadataHeader/UrlMetadataHeader.tsx index dcfcf49f..80843922 100644 --- a/src/webapp/features/semble/components/urlMetadataHeader/UrlMetadataHeader.tsx +++ b/src/webapp/features/semble/components/urlMetadataHeader/UrlMetadataHeader.tsx @@ -1,4 +1,5 @@ import { getUrlMetadata } from '@/features/cards/lib/dal'; +import { getUrlTypeIcon } from '@/lib/utils/icon'; import { getDomain } from '@/lib/utils/link'; import { Stack, @@ -12,8 +13,11 @@ import { Grid, GridCol, Group, + Badge, } from '@mantine/core'; +import { UrlType } from '@semble/types'; import Link from 'next/link'; +import { IconType } from 'react-icons/lib'; import { RiArrowRightUpLine } from 'react-icons/ri'; interface Props { @@ -23,27 +27,34 @@ interface Props { export default async function UrlMetadataHeader(props: Props) { const { metadata } = await getUrlMetadata(props.url); + const urlTypeIcon = getUrlTypeIcon(metadata.type as UrlType); + const IconComponent = urlTypeIcon as IconType; return ( - - - - {getDomain(props.url)} - - - - + + }> + {metadata.type} + + + + + {getDomain(props.url)} + + + + + {metadata.title && ( { + if (!urlType) return IoMdLink; + + switch (urlType) { + case UrlType.ARTICLE: + return GrArticle; + case UrlType.BOOK: + return IoMdBook; + case UrlType.RESEARCH: + return AiOutlineFileSearch; + case UrlType.AUDIO: + return PiFileAudio; + case UrlType.VIDEO: + return PiFileVideo; + case UrlType.SOCIAL: + return MdOutlinePeopleAlt; + case UrlType.SOFTWARE: + return RiInstallLine; + case UrlType.EVENT: + return MdOutlineEvent; + default: + return IoMdLink; + } +};