From 43104ef2c4d6b505e881cf93740b956d1564e757 Mon Sep 17 00:00:00 2001 From: 2977094657 <2977094657@qq.com> Date: Fri, 27 Feb 2026 16:43:28 +0800 Subject: [PATCH] =?UTF-8?q?improvement(wrapped-ui):=20=E5=B9=B4=E5=BA=A6?= =?UTF-8?q?=E6=80=BB=E7=BB=93=E6=96=B0=E5=A2=9E=E9=9A=90=E7=A7=81=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E5=BC=80=E5=85=B3=EF=BC=88=E6=98=B5=E7=A7=B0/?= =?UTF-8?q?=E5=A4=B4=E5=83=8F/=E6=B6=88=E6=81=AF/=E8=AF=8D=E4=BA=91?= =?UTF-8?q?=E5=8F=AF=E6=A8=A1=E7=B3=8A=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Wrapped 页面右上角新增隐私模式开关,并在 deck 根节点挂载 wrapped-privacy - Tailwind 新增 wrapped-privacy-* 细粒度模糊样式:仅模糊昵称/消息/关键词/头像,hover 可临时显示 - Wrapped 各卡片/可视化统一接入新 class,逐步替换原 privacy-blur 用法(词云/聊天回放/气泡等) --- frontend/assets/css/tailwind.css | 40 +++++++++++++++++ .../wrapped/cards/Card00GlobalOverview.vue | 23 +++------- .../wrapped/cards/Card01CyberSchedule.vue | 40 ++++++++--------- .../wrapped/cards/Card03ReplySpeed.vue | 20 ++++----- .../wrapped/cards/Card04EmojiUniverse.vue | 4 +- .../cards/Card04MonthlyBestFriendsWall.vue | 4 +- .../wrapped/cards/Card06KeywordsWordCloud.vue | 21 ++++++--- .../wrapped/cards/Card07BentoSummary.vue | 32 +++++++------- .../components/wrapped/shared/WrappedHero.vue | 6 --- .../visualizations/ChatReplayAnimation.vue | 6 +-- .../visualizations/KeywordWordCloud.vue | 13 ++++-- frontend/pages/wrapped/index.vue | 43 ++++++++++++++++++- 12 files changed, 166 insertions(+), 86 deletions(-) diff --git a/frontend/assets/css/tailwind.css b/frontend/assets/css/tailwind.css index 2aea714..dc80cee 100644 --- a/frontend/assets/css/tailwind.css +++ b/frontend/assets/css/tailwind.css @@ -90,6 +90,46 @@ .privacy-blur:hover { filter: none; } + + /* Wrapped 隐私模式:仅模糊“用户名文本”,头像不模糊(避免把头像也 blur 掉) */ + .wrapped-privacy .wrapped-privacy-name { + filter: blur(9px); + transition: filter 0.2s ease; + } + + .wrapped-privacy .wrapped-privacy-name:hover { + filter: none; + } + + /* Wrapped 隐私模式:模糊“消息内容文本”(仅在被标记为 message 的节点上生效) */ + .wrapped-privacy .wrapped-privacy-message { + filter: blur(9px); + transition: filter 0.2s ease; + } + + .wrapped-privacy .wrapped-privacy-message:hover { + filter: none; + } + + /* Wrapped 隐私模式:模糊“词云关键词” */ + .wrapped-privacy .wrapped-privacy-keyword { + filter: blur(9px); + transition: filter 0.2s ease; + } + + .wrapped-privacy .wrapped-privacy-keyword:hover { + filter: none; + } + + /* Wrapped 隐私模式:模糊头像(含 fallback 字符) */ + .wrapped-privacy .wrapped-privacy-avatar { + filter: blur(9px); + transition: filter 0.2s ease; + } + + .wrapped-privacy .wrapped-privacy-avatar:hover { + filter: none; + } /* 按钮样式 */ .btn { @apply px-6 py-3 rounded-full font-medium transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 transform active:scale-95; diff --git a/frontend/components/wrapped/cards/Card00GlobalOverview.vue b/frontend/components/wrapped/cards/Card00GlobalOverview.vue index 5f1548b..c39007e 100644 --- a/frontend/components/wrapped/cards/Card00GlobalOverview.vue +++ b/frontend/components/wrapped/cards/Card00GlobalOverview.vue @@ -36,11 +36,8 @@ diff --git a/frontend/components/wrapped/cards/Card01CyberSchedule.vue b/frontend/components/wrapped/cards/Card01CyberSchedule.vue index 2ed43ea..7bdf2e0 100644 --- a/frontend/components/wrapped/cards/Card01CyberSchedule.vue +++ b/frontend/components/wrapped/cards/Card01CyberSchedule.vue @@ -66,39 +66,39 @@ @@ -111,15 +111,15 @@ v-if="yearFirstSent.avatarUrl" :src="yearFirstSent.avatarUrl" :alt="yearFirstSent.displayName" - class="inline-block w-5 h-5 rounded align-middle mx-0.5" - />{{ yearFirstSent.displayName }}:「{{ yearFirstSent.content || '...' }}」 diff --git a/frontend/components/wrapped/cards/Card03ReplySpeed.vue b/frontend/components/wrapped/cards/Card03ReplySpeed.vue index 63661b3..50b00c9 100644 --- a/frontend/components/wrapped/cards/Card03ReplySpeed.vue +++ b/frontend/components/wrapped/cards/Card03ReplySpeed.vue @@ -11,7 +11,7 @@ class="inline-flex items-center gap-2 align-bottom px-1.5 py-0.5 rounded-lg bg-[#00000008]" :title="bestBuddy?.displayName || ''" > - + - + {{ bestBuddy?.displayName || '' }} @@ -35,7 +35,7 @@ class="inline-flex items-center gap-1.5 align-bottom px-1.5 py-0.5 rounded-lg bg-[#00000008]" :title="seg.contact?.displayName || ''" > - + - + {{ seg.contact?.displayName || '' }} @@ -95,7 +95,7 @@
-
+
@@ -121,7 +121,7 @@ />
{{ shownAvatarFallback }} @@ -129,7 +129,7 @@
-
+
{{ shownDisplayName }}
@@ -210,7 +210,7 @@
-
+
{{ item.displayName }}
diff --git a/frontend/components/wrapped/cards/Card04EmojiUniverse.vue b/frontend/components/wrapped/cards/Card04EmojiUniverse.vue index a5a6596..f2a16a2 100644 --- a/frontend/components/wrapped/cards/Card04EmojiUniverse.vue +++ b/frontend/components/wrapped/cards/Card04EmojiUniverse.vue @@ -58,7 +58,7 @@ class="mt-0.5 inline-flex items-center gap-1.5 rounded-md bg-[#00000008] px-1.5 py-1 max-w-full" :title="heroStickerOwnerName ? `常发送给 ${heroStickerOwnerName}` : '常发送给:未知'" > - + - 常发送给 {{ heroStickerOwnerName || '未知' }} + 常发送给 {{ heroStickerOwnerName || '未知' }}
diff --git a/frontend/components/wrapped/cards/Card04MonthlyBestFriendsWall.vue b/frontend/components/wrapped/cards/Card04MonthlyBestFriendsWall.vue index 16b25e1..3810632 100644 --- a/frontend/components/wrapped/cards/Card04MonthlyBestFriendsWall.vue +++ b/frontend/components/wrapped/cards/Card04MonthlyBestFriendsWall.vue @@ -30,7 +30,7 @@