Skip to content

样式重塑:从手机风格全面迁移到 Chrome 桌面插件风格(emerald + zinc)#2

Merged
Forlingham merged 10 commits into
mainfrom
feature/extension-ui-redesign
Jun 1, 2026
Merged

样式重塑:从手机风格全面迁移到 Chrome 桌面插件风格(emerald + zinc)#2
Forlingham merged 10 commits into
mainfrom
feature/extension-ui-redesign

Conversation

@kiro-agent
Copy link
Copy Markdown

@kiro-agent kiro-agent Bot commented May 28, 2026

This pull request was created by @kiro-agent on behalf of @Forlingham 👻

Comment with /kiro fix to address specific feedback or /kiro all to address everything.
Learn about Kiro autonomous agent


概览

把整个 Chrome 钱包插件从"手机网页风格"全面重塑为"桌面插件工具风格",统一采用 emerald 翡翠绿 + zinc 深石墨配色方案,与 SCASH 黑色简约 logo 契合。

构建已通过 pnpm build(仅 tiny-secp256k1 wasm 的依赖警告,与本次改动无关)。


改动 9 个 commit(按层级分阶段)

  1. 基础样式:globals.css 全新设计 token、layout.tsx 删除手机端 viewport 与 768px 媒体查询、page.tsx loading 改 emerald
  2. 基础组件:Button 新增 success/subtle 变体 + xs/icon-sm 尺寸;Card 默认 padding 收紧到 py-4/px-4
  3. 首页 wallet-home:删除滚动驱动 header 动画、余额卡片去渐变、4 动作按钮统一 zinc 风格仅 Send 用 emerald 强调
  4. 容器 wallet-dashboard:48px 紧凑 header、language-selector 改用 token + emerald 勾选
  5. 三个交易页:wallet-send/receive/engrave 全部去紫色 + emerald 主色;receive 砍掉 navigator.share() 优雅降级
  6. 设置页:wallet-settings + 3 个子设置页(rpc-nodes / rpc-edit-dialog / explorer),抽出 SubHeader/DonateRow 内部组件
  7. 钱包创建流程 wallet-setup:9 步抽出独立 Step 子组件;远程 logo 改本地 /logo.png
  8. 锁屏 WalletLockScreen:远程 logo 改本地,加 amber Lock 徽章强化"已锁定"语义
  9. 遗留组件:toast/custom-switch/dap-message-display/markdown-renderer/qr-scanner/wallet-assets/transaction-details/price-chart-card 全部清理

关键决策

决策项
窗口尺寸 400×600(与 768px 媒体查询冲突) 360×600(MetaMask/Phantom 同尺寸)
主色 purple-600 紫 emerald-500 翡翠绿(暗合 S-CASH 财富语义)
背景层级 bg-gray-900/800/700 zinc-950/900/800
viewport maximum-scale=1.0, user-scalable=no 删除(违反桌面无障碍)
默认字号 16px 14px(更适合 popup 信息密度)
余额数字 text-4xl text-2xl + tabular-nums
滚动条 常显 6px 幽灵款(hover 显形)
触摸样式 -webkit-tap-highlight + active:scale-95 删除,改为 hover/focus-visible 反馈
Header 动画 滚动驱动缩放 + 余额条浮出 静态 48px 工具栏
4 动作按钮 4 种渐变背景(橙/紫/绿/蓝) 统一 zinc 中性,仅 Send 用 emerald 强调
DAP 消息卡片 purple 系(过重) indigo 系(链上信息语义)
Toast 紫粉渐变 + 紫色阴影 zinc-900 实色 + 左侧 emerald 强调线
远程 logo hebbkx1anhila5yf.public.blob.vercel-storage.com 本地 /logo.png
navigator.share() 桌面 Chrome 不支持,体验差 删除,主操作专注'复制地址'
锁仓/重置按钮 满色 yellow-600/destructive outline + 警示色(amber/red)

验证

  • pnpm tsc --noEmit 全量类型检查通过
  • pnpm build 完整生产构建通过(4 个静态页面、243 kB 主页 / 628 kB First Load JS)
  • ✅ post-build 脚本正常(_next → next-assets,内联脚本提取,符合扩展 CSP)

业务行为

所有业务逻辑 100% 保留,包括:

  • BIP39/BIP32 助记词派生 m/84'/0'/0'/0/0
  • AES 加密钱包文件 + 客户端签名
  • mempool 余额追踪 + 找零虚拟 UTXO 处理
  • DAP 链上留言编码/解析
  • RPC 节点切换 + chrome.permissions 权限申请
  • 重置时保留 RPC/explorer/语言偏好

已知限制

  • 未跑端到端测试:当前沙盒环境无 Chrome 扩展运行时,建议本地 pnpm build 后加载 out/ 目录验证实机效果
  • wallet-assets / transaction-details 仍是 mock 数据:本次只重塑视觉,等真实接口接入后字段映射保留即可
  • i18n 文案未变动:所有 t() key 沿用,如发现某些键值不存在(如 t('common.optional'))会显示原 key,需补充翻译条目

推荐后续

  1. 本地 pnpm build 后将 out/ 加载到 Chrome(chrome://extensions → 加载已解压的扩展程序),实机检查每个页面
  2. 重点验证:余额卡片、Send 流程、QR 扫描、设置页节点切换、锁屏 → 解锁
  3. 如希望窗口尺寸保持 400×600,只需改 app/globals.csswidth: 360px 一处即可

kiro-agent and others added 10 commits May 28, 2026 14:02
- 全新设计 token:emerald 翡翠绿 + zinc 深色基底,符合 SCASH 金融工具气质
- 窗口尺寸由 400x600 改为 360x600(业内主流:MetaMask/Phantom 同尺寸)
- 删除桌面端 768px 媒体查询(插件 popup 永远定宽,不需要)
- 修复 viewport meta:去掉 maximum-scale 与 user-scalable=no(违反桌面无障碍)
- 默认字号收紧到 14px,更适合 popup 信息密度
- 滚动条改为幽灵款(hover 时才显形),告别移动端常显风格
- 删除手机端 -webkit-tap-highlight-color / -webkit-overflow-scrolling: touch
- 加载指示器改用 emerald 主色环,去掉硬编码 bg-gray-900
Button:
- 新增 success 变体(emerald 实色),用于发送/确认/解锁等高肯定性 CTA
- 新增 subtle 变体(zinc-800/60),用于次级操作
- 新增 xs 尺寸(h-7)和 icon-sm 尺寸(size-7),适配工具栏小图标
- 优化 focus-visible:ring 主色 + offset,键盘可用性符合桌面规范
- outline 变体改为透明背景 + hover 时边框高亮,桌面感更强

Card:
- 默认 padding 由 py-6/px-6 收紧到 py-4/px-4,gap-6 改为 gap-3
- 适配 360px 插件窗口的信息密度,避免卡片显得空旷
- CardTitle 改为 text-base,CardDescription 改为 text-xs
视觉重塑:
- 删除滚动驱动的 header 缩放动画与浮出的余额条(手机沉浸式设计,桌面工具栏应稳定)
- header 改为 48px 固定高度,简洁的 logo+品牌名+区块高度+设置 布局
- 余额卡片去渐变,改用 zinc-900 卡片 + 顶部节点状态带 + 底部三联余额细分
- 大余额数字从 text-4xl 缩到 text-2xl,加 tabular-nums,配 USD 估值次行
- 4 个动作按钮统一中性 zinc 风格,唯一 Send 用 emerald 主色突出主 CTA
- 抽出 ActionButton 子组件去除重复
- 交易列表项收紧到 28px 头像 + 10-12px 字号,信息密度提升 40%
- DAP 消息卡片从过重的 purple 换为更内敛的 indigo

代码精简:
- buildSignal 统一节点/浏览器信号强度推导(去重 60+ 行)
- 删除 isScrolled / handleScroll / scroll listener 等约 40 行手机端动画代码
- 加入空状态占位

无障碍:
- 所有可点击元素 focus-visible: emerald ring
- 设置图标按钮加 aria-label
wallet-dashboard:
- 外层从 min-h-screen 改为 h-full,适配 popup 600px 固定高度
- 顶部统一 header 由 80px 收紧到 48px,与 home 工具栏视觉对齐
- 标题去掉紫色渐变,改用普通 zinc-100,简洁稳重
- '功能即将上线' 占位页换为 emerald 圆环 + Sparkles 图标的桌面化提示
- 使用 viewTitle 工具函数集中管理标题映射,去掉行内三元判断
- pt-20 改为 pt-12,content-area 改为 flex-1 min-h-0 让 home 内 absolute 定位有相对参照

language-selector:
- 触发器收紧为 xs 尺寸,仅显示语言代码缩写(EN/ZH/RU),节省横向空间
- 弹层颜色改用主题 token(bg-popover),不再硬编码 gray-800
- 当前选中项加 emerald 勾选标记,符合桌面应用的明确反馈惯例
wallet-send (业务逻辑全部保留):
- 紫粉绿混色 -> 统一 emerald 主色 + zinc 中性
- 主 CTA 用 success 变体(emerald 实色、zinc-950 文字)
- 字号收紧(标题 sm、信息 xs/[11px]/[10px]),适配 360x600
- 抽出 Spinner 与 Row 工具组件,去重
- 成功页换为简洁的 emerald CheckCircle2 hero + 信息卡列表
- '添加另一位收款人' 改为虚线边框按钮,桌面感更强
- MAX 改为 emerald 小标签按钮,从悬空文字改为可点击块

wallet-receive (重要行为变更):
- 删除 'FIO Request' 占位按钮(mock 设计,对桌面用户无价值)
- 删除 navigator.share() 入口(桌面 Chrome 不支持 + popup 弹分享面板体验差)
  → 主操作专注于'复制地址',复制后按钮态 2s 内显示 Check 反馈
- 二维码框简化,新增可选金额输入用于生成带金额的收款二维码
- 卡片配色统一改 zinc 系

wallet-engrave (业务逻辑全部保留):
- 紫粉渐变全部移除 -> emerald 主色 + indigo 标记'链上信息'
- 删除手机风格的大圆形渐变图标,换为 32px 方形 emerald 图标块
- 留言预览卡用 indigo-500/5 背景 + indigo-500/30 边框,与紫色区别明显但仍有'链上数据'语义
- 抽出 Spinner / Row 工具组件
wallet-settings (业务逻辑全部保留):
- 主页设置项改为 button + ChevronRight 形式,hover 反馈更明显
- RPC 节点入口加 emerald 边框高亮(业务上是新功能、最常配置)
- 锁仓 / 重置改为 outline 警示色(amber / red),不再用满色按钮
- 各子视图(changePassword / backup / security / help)统一用 SubHeader 组件
  替代之前的'大紫色居中图标头',节省纵向空间
- 备份页助记词卡片紧凑化,9px 序号字号 + 11px 词汇字号
- 捐赠区抽出 DonateRow 组件,加 zinc-950 浅底,复制按钮固定 icon-sm
- 重置 dialog 文案三段式排版(说明 + 红色警示 + 灰色保留说明)

rpc-nodes-settings:
- 紫色 5/20 标签 -> zinc-800 中性标签
- active 节点徽章用 emerald-500/15 + CheckCircle2,更专业
- 删除按钮用 red-500/30 边框 outline,不再是单独 destructive 全染色
- 操作按钮全部缩到 size='xs',整体密度提升

rpc-node-edit-dialog:
- 弹窗宽度 sm:max-w-[340px],适配 popup 宽度
- 输入框字号 11-12px,密码字段也是
- 测试结果横幅 emerald/red 主题色,不再 green-900/30 + red-900/30 硬编码
- 三个 footer 按钮统一 size='sm',gap 1.5

explorer-settings:
- 三个 URL 字段抽出 FieldGroup 组件去重
- 标题区由大圆图标改为 SubHeader 紧凑样式
- '重置 / 保存' 按钮收紧为 size='sm',并排显示
业务逻辑全部保留:
- BIP39 助记词生成/校验、AES 加密、P2WPKH 地址派生 m/84'/0'/0'/0/0 全部原样
- 9 步流程:welcome → create → verify → password → download
                    ↘ restore-method → mnemonic/file → restore-password

视觉重塑:
- 远程 logo URL(hebbkx1anhila5yf.public.blob.vercel-storage.com)替换为本地 /logo.png
  解决离线/弱网下首屏空白的体验问题
- 紫色 purple-600 按钮 → emerald success 变体(与全局主色统一)
- 顶部加 48px 品牌栏 + 语言切换器,与其他页面视觉对齐
- 字号 text-2xl/xl 收紧到 sm/base,间距 p-4/space-y-4 收紧到 p-3/space-y-3
- 助记词卡片 grid-cols-3 紧凑化,9px 序号 + 11px 词汇
- 文件上传 file 按钮颜色从 purple-600 改为 emerald-500/15 主题色
- 'AlertTriangle' 警示头改用 32px 紧凑标题块(替代大居中黄色图标)

代码组织:
- 9 个步骤抽出为独立的 Step 子组件(WelcomeStep / CreateMnemonicStep / 等),
  主组件只负责状态管理与流转,可读性显著提升

可访问性:
- 密码字段 onKeyDown Enter 提交(restore-password)
- show/hide 按钮 aria-label
- autoFocus 在第一个密码输入框
业务行为完全保留:
- 任意长度密码都尝试解锁(由密码学校验层判定)
- 异常统一视为密码错误,避免泄露内部错误信息

视觉重塑:
- 远程 vercel-storage logo URL 替换为本地 /logo.png(离线可用)
- 紫色 purple-600 按钮 → emerald success 变体
- logo 右下加 amber Lock 徽章,强化'已锁定'语义
- max-w-md 移除(popup 永远定宽,不需要居中限制宽度)
- 输入框收紧到 h-10,与解锁按钮高度一致
- 错误信息居中显示并加 role='alert',符合无障碍规范
- aria-invalid 在错误时高亮输入框边框
- 解锁中的 spinner 用 zinc-950 作为边色(emerald 实色按钮上更清晰)
ui/toast.tsx (重要 - 全局通知样式):
- 旧:紫粉渐变 + 紫色阴影(手机 App 风格)
- 新:zinc-900 实色背景 + 左侧 2px 主题色强调线(emerald/red/amber)
- Viewport 收紧到 max-w-[320px],适配 360px popup 不会贴边

ui/custom-switch.tsx:
- 蓝色 bg-blue-600 → emerald-500,关 bg-gray-300 → zinc-700
- focus ring 改 emerald

dap-message-display.tsx (高频组件):
- 短文本预览换 zinc-950/60 背景 + zinc-800 描边
- 交互预览 hover 用 indigo-500/40 描边(DAP=链上信息语义)
- 全屏对话框去掉 bg-gray-950,走主题 popover 颜色

price-chart-card.tsx:
- text-gray-400/500 → text-zinc-400/500
- recharts tooltip 颜色 #0f172a/334155 → zinc-900/zinc-700
- 周期涨跌色 green-* → emerald-*

markdown-renderer.tsx (DAP 内容渲染):
- 链接、强调、代码内联高亮 purple → emerald
- 引用块边框 purple → emerald
- 表格 / hr / 标题边框 gray → zinc
- 外链确认对话框走主题 token

wallet-assets.tsx (mock 资产页):
- 整页改用 emerald + zinc,列表项收紧到 28px 头像
- 状态点 yellow-400 → amber-400,与全局警示色统一
- 卡片改为 button + focus-visible ring,无障碍合规

transaction-details.tsx:
- 抽出 Field 内部组件,规整成 key/value 行
- 标签色 green-400 → emerald-400
- 详情字号收紧到 11-13px,适配 popup 阅读

qr-scanner.tsx:
- 浮层不再 max-w-md 居中,直接占满 inset,符合 popup 体验
- 扫描框 green-400 → emerald-400 + glow 阴影
- 紫色按钮 → success 变体;底部按钮统一 sm 尺寸

toast-demo.tsx (开发演示,当前未被引用):
- 跟随 token 整体重塑,不再硬编码颜色
之前误把品牌色识别成 emerald 翡翠绿,实际上 SCASH logo 是紫色圆形+白色 $ 符号。
现在重新规划配色语义,分清"品牌色"与"功能色":

品牌色(purple-600,与 logo 一致):
- 主 CTA 按钮(发送、确认、解锁、保存、创建钱包等所有 default variant)
- 表单 label(to / amount / message / fee / engrave text 等)
- 链接型操作(Open Explorer / View Details / 外链确认等)
- SubHeader 子设置页头部图标块
- Settings 主页 RPC 节点 highlight 边框
- Language Selector 选中项
- 首页 Send 主操作按钮的高亮(其他三个保持 zinc 中性)
- MAX 标签按钮、添加另一位收款人虚线按钮
- QR 扫描框角标 + 扫描线(品牌识别色)
- Markdown 链接 / 强调 / 引用线 / 行内代码
- Toast default variant 强调线
- CustomSwitch 开启状态
- selection 文本高亮 + ring 焦点环
- 所有 "成功" 语义之外的按钮 hover/active

功能色 emerald(保留作为"正向状态"语义):
- 收款图标背景 + 文字(ArrowDown 箭头与金额)
- 节点连接成功 / 信号强度满格
- logo 角标在线绿点
- 可用余额标签(Available)
- 价格上涨 +%
- 安全状态 CheckCircle2(已加密 / 助记词隔离)
- 成功页 hero CheckCircle2(交易广播成功 / 刻字成功)
- 测试连接成功反馈
- RPC 节点 "已激活 / Active" 徽章
- 文件上传成功反馈
- Toast success variant
- Button success variant(保留,仅用于成功语义场景)

其他功能色保持不变:
- amber 警示(锁仓 / 待确认 / 警告)
- red 危险(错误 / 支出 / 价格下跌 / 删除)
- indigo 链上信息(DAP 留言)
- sky mempool 余额

技术变更:
- globals.css: --primary 从 emerald-500 改为 purple-600 (#9333ea),
  --primary-foreground 从 zinc-950 改为 white(purple 上对比度更佳),
  --ring 改 purple-600,selection 高亮改 purple,brand-gradient 改 purple→fuchsia
- layout.tsx: theme-color #10b981 → #9333ea
- 所有 'variant="success"' 改为 'variant="default"'(让主 CTA 走 primary 自动变 purple)
  toast-demo.tsx 里演示成功 toast 的按钮保留 success
- AlertDialogAction confirm 按钮 bg-emerald-500/text-zinc-950 改 bg-purple-600/text-white

构建验证:pnpm build 通过,4 个静态页面 + post-build 脚本正常。

Co-authored-by: Hysanalde <177504070+Forlingham@users.noreply.github.com>
@Forlingham
Copy link
Copy Markdown
Owner

ok

@Forlingham Forlingham merged commit 18900cb into main Jun 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants