feat(wallet): redesign drawer wallet states to match Figma 4476-15287/15669

Disconnected state (Figma 4476-15287): bump the compact CTA to the
spec'd dimensions — h-12 (48px), text-[15px], font-medium — so the
yellow 链接钱包 button matches the Figma pill exactly while leaving
the desktop header pill (compact=false) untouched.

Connected state (Figma 4476-15669/16024): rebuild the compact branch as
the spec'd info card + danger button:
- A transparent 登录地址 label (text-[13px] font-bold #E5E5E5) with an
  8px gap to the full 0x… address, which uses Figma's character-level
  styling: first 5 and last 5 chars rendered bold white, middle 32
  chars rendered #A8A9AE / font-medium, replicating Figma's
  characterStyleOverrides.
- A full-width 48px disconnect pill at bg-[#2A1B20] with #F36161 text
  and the LogOut glyph on the right at 15px font-medium.

Add a new walletLoginAddress i18n key across all 7 locales (en, zh-CN,
ja, ko, vi, id, ms) for the new 登录地址 label.
This commit is contained in:
TerryM
2026-06-05 12:22:41 +08:00
parent e73e25077e
commit 292c745549
8 changed files with 31 additions and 9 deletions

View File

@@ -176,6 +176,7 @@ export const enDict: Dict = {
close: "Close",
walletConnect: "Connect Wallet",
walletConnectedAs: "Connected wallet",
walletLoginAddress: "Login address",
walletDisconnect: "Disconnect",
walletLoginTitle: "Connect wallet",
walletLoginDesc:

View File

@@ -176,6 +176,7 @@ export const idDict: Dict = {
close: "Tutup",
walletConnect: "Hubungkan Dompet",
walletConnectedAs: "Dompet terhubung",
walletLoginAddress: "Alamat login",
walletDisconnect: "Putuskan",
walletLoginTitle: "Hubungkan dompet",
walletLoginDesc:

View File

@@ -175,6 +175,7 @@ export const jaDict: Dict = {
close: "閉じる",
walletConnect: "ウォレット接続",
walletConnectedAs: "接続中のウォレット",
walletLoginAddress: "ログインアドレス",
walletDisconnect: "切断",
walletLoginTitle: "ウォレットを接続",
walletLoginDesc:

View File

@@ -174,6 +174,7 @@ export const koDict: Dict = {
close: "닫기",
walletConnect: "지갑 연결",
walletConnectedAs: "연결된 지갑",
walletLoginAddress: "로그인 주소",
walletDisconnect: "연결 해제",
walletLoginTitle: "지갑 연결",
walletLoginDesc:

View File

@@ -174,6 +174,7 @@ export const msDict: Dict = {
close: "Tutup",
walletConnect: "Sambung Dompet",
walletConnectedAs: "Dompet disambungkan",
walletLoginAddress: "Alamat log masuk",
walletDisconnect: "Putuskan",
walletLoginTitle: "Sambung dompet",
walletLoginDesc:

View File

@@ -173,6 +173,7 @@ export const viDict: Dict = {
close: "Đóng",
walletConnect: "Kết nối ví",
walletConnectedAs: "Ví đã kết nối",
walletLoginAddress: "Địa chỉ đăng nhập",
walletDisconnect: "Ngắt kết nối",
walletLoginTitle: "Kết nối ví",
walletLoginDesc:

View File

@@ -167,6 +167,7 @@ export const zhDict: Dict = {
close: "关闭",
walletConnect: "连接钱包",
walletConnectedAs: "已连接钱包",
walletLoginAddress: "登录地址",
walletDisconnect: "断开连接",
walletLoginTitle: "连接钱包",
walletLoginDesc: "签名验证钱包地址,不会发起交易,也不需要 Gas。",

View File

@@ -1,4 +1,4 @@
import { Heart } from "lucide-react";
import { Heart, LogOut } from "lucide-react";
import { useEffect, useRef, useState } from "react";
import { Link } from "react-router-dom";
import { WalletIcon } from "../components/icons/WalletIcon";
@@ -40,17 +40,30 @@ export function WalletButton({
if (wallet.status === "loggedIn" && wallet.address) {
if (compact) {
return (
<div className="grid w-full gap-2">
<div className="inline-flex h-10 w-full items-center justify-center rounded-full border border-ark-gold/45 bg-ark-gold/10 px-3 text-sm font-semibold text-ark-gold2">
<span className="mr-2 h-2 w-2 rounded-full bg-emerald-400" />
{shortenAddress(wallet.address)}
<div className="flex w-full flex-col gap-1">
<div className="flex flex-col gap-2 px-4 py-3">
<div className="text-[13px] font-bold leading-[21px] text-[#E5E5E5]">
{t("walletLoginAddress")}
</div>
<div className="break-all text-[13px] leading-[21px]">
<span className="font-bold text-white">
{wallet.address.slice(0, 5)}
</span>
<span className="font-medium text-[#A8A9AE]">
{wallet.address.slice(5, -5)}
</span>
<span className="font-bold text-white">
{wallet.address.slice(-5)}
</span>
</div>
</div>
<button
type="button"
onClick={() => wallet.logout()}
className="h-10 w-full rounded-full border border-red-400/35 bg-red-500/10 px-4 text-sm font-semibold text-red-200 transition hover:bg-red-500/15"
className="flex h-12 w-full items-center justify-center gap-2 rounded-full bg-[#2A1B20] px-4 text-[15px] font-medium text-[#F36161] outline-none transition hover:bg-[#3a242a] focus-visible:ring-2 focus-visible:ring-[#F36161]/60"
>
{t("walletDisconnect")}
<span>{t("walletDisconnect")}</span>
<LogOut className="h-4 w-4" strokeWidth={2.3} aria-hidden />
</button>
</div>
);
@@ -108,8 +121,10 @@ export function WalletButton({
wallet.openLoginModal();
}}
className={[
"inline-flex h-10 items-center justify-center gap-2 rounded-full border border-ark-gold bg-ark-gold px-4 text-sm font-bold text-black outline-none transition hover:bg-ark-gold2 focus-visible:ring-2 focus-visible:ring-ark-gold/80 focus-visible:ring-offset-2 focus-visible:ring-offset-ark-bg",
compact ? "w-full" : "min-w-[124px] shrink-0 whitespace-nowrap",
"inline-flex items-center justify-center gap-2 rounded-full border border-ark-gold bg-ark-gold px-4 text-black outline-none transition hover:bg-ark-gold2 focus-visible:ring-2 focus-visible:ring-ark-gold/80 focus-visible:ring-offset-2 focus-visible:ring-offset-ark-bg",
compact
? "h-12 w-full text-[15px] font-medium"
: "h-10 min-w-[124px] shrink-0 whitespace-nowrap text-sm font-bold",
].join(" ")}
>
<WalletIcon className="h-[18px] w-[18px]" />