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;
+ }
+};