mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-07-19 02:14:35 +08:00
Compare commits
2 Commits
577a0918c3
...
palette/lo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f63eab72f7 | ||
|
|
6c26f9eb95 |
3
.Jules/palette.md
Normal file
3
.Jules/palette.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
## 2025-05-22 - [Accessibility: Password Toggles]
|
||||||
|
**Learning:** Icon-only buttons for password visibility toggles are a common accessibility gap. Adding `aria-label` and `aria-pressed` ensures screen reader users understand the button's purpose and state.
|
||||||
|
**Action:** Always check password fields and add these attributes along with corresponding translations in `translations.ts`.
|
||||||
@@ -75,7 +75,7 @@ func main() {
|
|||||||
fmt.Printf("ERROR: Failed to create TxClient: %v\n", err)
|
fmt.Printf("ERROR: Failed to create TxClient: %v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
fmt.Println("SUCCESS: TxClient created\n")
|
fmt.Println("SUCCESS: TxClient created")
|
||||||
|
|
||||||
// Step 3: Generate auth token
|
// Step 3: Generate auth token
|
||||||
fmt.Println("Step 3: Generating auth token...")
|
fmt.Println("Step 3: Generating auth token...")
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
//go:build ignore
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
//go:build ignore
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
//go:build ignore
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
//go:build ignore
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
//go:build ignore
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@@ -283,7 +283,7 @@ func TestNewHyperliquidTrader(t *testing.T) {
|
|||||||
walletAddr: "0x1234567890123456789012345678901234567890",
|
walletAddr: "0x1234567890123456789012345678901234567890",
|
||||||
testnet: true,
|
testnet: true,
|
||||||
wantError: true,
|
wantError: true,
|
||||||
errorContains: "Failed to parse private key",
|
errorContains: "failed to parse private key",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Empty wallet address",
|
name: "Empty wallet address",
|
||||||
|
|||||||
@@ -334,6 +334,8 @@ export function LoginPage() {
|
|||||||
type="button"
|
type="button"
|
||||||
onClick={() => setShowPassword(!showPassword)}
|
onClick={() => setShowPassword(!showPassword)}
|
||||||
className="absolute right-3 top-1/2 -translate-y-1/2 text-zinc-600 hover:text-zinc-400 transition-colors"
|
className="absolute right-3 top-1/2 -translate-y-1/2 text-zinc-600 hover:text-zinc-400 transition-colors"
|
||||||
|
aria-label={showPassword ? t('hidePassword', language) : t('showPassword', language)}
|
||||||
|
aria-pressed={showPassword}
|
||||||
>
|
>
|
||||||
{showPassword ? <EyeOff size={16} /> : <Eye size={16} />}
|
{showPassword ? <EyeOff size={16} /> : <Eye size={16} />}
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -667,6 +667,8 @@ export const translations = {
|
|||||||
passwordRequired: 'Password is required',
|
passwordRequired: 'Password is required',
|
||||||
invalidEmail: 'Invalid email format',
|
invalidEmail: 'Invalid email format',
|
||||||
passwordTooShort: 'Password must be at least 6 characters',
|
passwordTooShort: 'Password must be at least 6 characters',
|
||||||
|
showPassword: 'Show password',
|
||||||
|
hidePassword: 'Hide password',
|
||||||
|
|
||||||
// Landing Page
|
// Landing Page
|
||||||
features: 'Features',
|
features: 'Features',
|
||||||
@@ -1834,6 +1836,8 @@ export const translations = {
|
|||||||
passwordRequired: '请输入密码',
|
passwordRequired: '请输入密码',
|
||||||
invalidEmail: '邮箱格式不正确',
|
invalidEmail: '邮箱格式不正确',
|
||||||
passwordTooShort: '密码至少需要6个字符',
|
passwordTooShort: '密码至少需要6个字符',
|
||||||
|
showPassword: '显示密码',
|
||||||
|
hidePassword: '隐藏密码',
|
||||||
|
|
||||||
// Landing Page
|
// Landing Page
|
||||||
features: '功能',
|
features: '功能',
|
||||||
|
|||||||
Reference in New Issue
Block a user