From c2ccd865270de7c77eb6eb22a2be10920af1ec86 Mon Sep 17 00:00:00 2001 From: Adebesin Tolulope Date: Wed, 18 Mar 2026 20:54:55 +0100 Subject: [PATCH 01/10] fix(blog): UI improvements and Instagram-style comment redesign (#2136, #2137) Redesign nested comments to use a flat, single-indent layout with collapsible reply threads. Fix blog content alignment, button hover states, Bluesky embed icon positioning, prose link hover effects, and federated articles shadow/alignment. --- app/components/BlueskyComment.vue | 43 +++-------- app/components/BlueskyCommentThread.vue | 72 +++++++++++++++++++ app/components/BlueskyComments.vue | 7 +- app/components/Link/Base.vue | 2 +- .../global/BlogPostFederatedArticles.vue | 4 +- app/components/global/BlogPostWrapper.vue | 17 ++++- .../global/BlueskyPostEmbed.client.vue | 14 ++-- 7 files changed, 110 insertions(+), 49 deletions(-) create mode 100644 app/components/BlueskyCommentThread.vue diff --git a/app/components/BlueskyComment.vue b/app/components/BlueskyComment.vue index 12fe336a1f..d54aa7d62d 100644 --- a/app/components/BlueskyComment.vue +++ b/app/components/BlueskyComment.vue @@ -13,11 +13,10 @@ function getCommentUrl(comment: Comment): string { } const props = defineProps<{ comment: Comment - depth: number + isReply?: boolean + replyingTo?: string }>() -const MaxDepth = 4 - function getFeatureUrl(feature: RichtextFeature): string | undefined { if (feature.$type === 'app.bsky.richtext.facet#link') return feature.uri if (feature.$type === 'app.bsky.richtext.facet#mention') @@ -41,7 +40,7 @@ function getHostname(uri: string): string { diff --git a/app/components/BlueskyCommentThread.vue b/app/components/BlueskyCommentThread.vue new file mode 100644 index 0000000000..6a9fc6d0b4 --- /dev/null +++ b/app/components/BlueskyCommentThread.vue @@ -0,0 +1,72 @@ + + + diff --git a/app/components/BlueskyComments.vue b/app/components/BlueskyComments.vue index 54655a46c1..d990d46c74 100644 --- a/app/components/BlueskyComments.vue +++ b/app/components/BlueskyComments.vue @@ -100,12 +100,7 @@ const postUrl = computed(() => data.value?.postUrl) - + {{ $t('blog.atproto.like_or_reply_on_bluesky') }} diff --git a/app/components/Link/Base.vue b/app/components/Link/Base.vue index ba62e47ca8..d7361fdb7a 100644 --- a/app/components/Link/Base.vue +++ b/app/components/Link/Base.vue @@ -101,7 +101,7 @@ const keyboardShortcutsEnabled = useKeyboardShortcuts() 'text-xs px-2 py-0.5': isButtonSmall, 'bg-transparent text-fg hover:(bg-fg/10 text-accent) focus-visible:(bg-fg/10 text-accent) aria-[current=true]:(bg-fg/10 text-accent border-fg/20 hover:enabled:(bg-fg/20 text-fg/50))': variant === 'button-secondary', - 'text-bg bg-fg hover:(bg-fg/50 text-accent) focus-visible:(bg-fg/50) aria-current:(bg-fg text-bg border-fg hover:enabled:(text-bg/50))': + 'text-bg bg-fg hover:(bg-fg/80 text-bg) focus-visible:(bg-fg/80 text-bg) aria-current:(bg-fg text-bg border-fg hover:enabled:(text-bg/50))': variant === 'button-primary', }" :to="to" diff --git a/app/components/global/BlogPostFederatedArticles.vue b/app/components/global/BlogPostFederatedArticles.vue index 82d99c3f7d..248fcf3287 100644 --- a/app/components/global/BlogPostFederatedArticles.vue +++ b/app/components/global/BlogPostFederatedArticles.vue @@ -41,7 +41,7 @@ const federatedArticles = computed(() => {