feat: add icons and bsky stats

finxol.io 794efcca 76176c31

verified
Changed files
+54 -19
app
+53 -18
app/components/BskyComments.vue
···
</script>
<template>
-
<div class="flex items-baseline gap-4 mb-4">
-
<h3 class="font-bold text-xl">Join the conversation!</h3>
-
<p class="text-gray-500 text-sm">{{post.post.replyCount}} replies</p>
-
</div>
-
<div v-if="err">
-
<div>{{ err }}</div>
-
</div>
-
<div v-if="post">
-
<div v-if="post.post.replyCount === 0">
-
<div>No replies yet!</div>
</div>
-
<div v-else v-for="reply in post.replies" class="mt-4">
-
<a :href="`https://bsky.app/profile/${reply.post.author.handle}`" class="flex items-center gap-2 text-blue-500 hover:underline w-fit">
-
<img :src="reply.post.author.avatar" :alt="reply.post.author.displayName" class="size-8 rounded-full" />
-
<span>
-
{{ reply.post.author.displayName }}
-
</span>
-
</a>
-
<div class="ml-10">{{ reply.post.record.text }}</div>
</div>
</div>
</template>
···
</script>
<template>
+
<div class="md:w-[80%] mx-auto mt-16">
+
<div class="flex items-baseline gap-4">
+
<h3 class="font-bold text-xl">Join the conversation!</h3>
+
<p class="text-gray-500 text-sm">
+
<Icon name="ri:reply-line" class="-mb-[2px] mr-1" />
+
{{post.post.replyCount}}
+
</p>
+
<p class="text-gray-500 text-sm">
+
<Icon name="ri:heart-3-line" class="-mb-[2px] mr-1" />
+
<span>
+
{{post.post.likeCount}}
+
</span>
+
</p>
+
<p class="text-gray-500 text-sm">
+
<Icon name="ri:bookmark-line" class="-mb-[2px] mr-1" />
+
{{post.post.bookmarkCount}}
+
</p>
+
</div>
+
<p class="text-gray-600 text-md mb-6">
+
<a class="underline" :href="`https://bsky.app/profile/${post.post.author.handle}/post/${cid}`">Reply on Bluesky</a> to take part in the discussion.
+
</p>
+
<div v-if="err">
+
<div>{{ err }}</div>
</div>
+
<div v-if="post">
+
<div v-if="post.post.replyCount === 0">
+
<div>No replies yet!</div>
+
</div>
+
+
<div v-else v-for="reply in post.replies" class="mt-6">
+
<a :href="`https://bsky.app/profile/${reply.post.author.handle}`" class="flex items-center gap-2 text-blue-500 hover:underline w-fit">
+
<img :src="reply.post.author.avatar" :alt="reply.post.author.displayName" class="size-8 rounded-full" />
+
<span>
+
{{ reply.post.author.displayName }}
+
</span>
+
</a>
+
<div class="ml-10">{{ reply.post.record.text }}</div>
+
<div class="flex items-baseline gap-4 ml-10 mt-2">
+
<p class="text-gray-500 text-sm">
+
<Icon name="ri:reply-line" class="-mb-[2px] mr-1" />
+
{{reply.post.replyCount}}
+
</p>
+
<p class="text-gray-500 text-sm">
+
<Icon name="ri:heart-3-line" class="-mb-[2px] mr-1" />
+
<span>
+
{{reply.post.likeCount}}
+
</span>
+
</p>
+
<p class="text-gray-500 text-sm">
+
<Icon name="ri:bookmark-line" class="-mb-[2px] mr-1" />
+
{{reply.post.bookmarkCount}}
+
</p>
+
</div>
+
</div>
</div>
</div>
</template>
+1 -1
app/components/ShareActions.vue
···
<template>
<aside
-
class="print:hidden flex flex-row justify-center items-center gap-4 mt-24 md:w-[80%] mx-auto"
>
<div class="h-1 bg-stone-200 dark:bg-stone-700 grow" />
<div class="whitespace-nowrap px-4 flex flex-row items-center gap-4">
···
<template>
<aside
+
class="print:hidden flex flex-row justify-center items-center gap-4 mt-16 md:w-[80%] mx-auto"
>
<div class="h-1 bg-stone-200 dark:bg-stone-700 grow" />
<div class="whitespace-nowrap px-4 flex flex-row items-center gap-4">