Frontend: complete task list (C1–L4), security, a11y, L1 block card helper

- React: response.ok checks (address, transaction, search); block number validation; stable Table keys; API modules (addresses, transactions, blocks normalizer)
- SPA: escapeHtml/safe URLs/onclick; getRpcUrl in rpcCall; cancel blocks rAF on view change; named constants; hash route decode
- SPA: createBlockCardHtml + normalizeBlockDisplay (L1); DEBUG console gating; aria-live for errors; token/block/tx detail escaping
- Docs: FRONTEND_REVIEW.md, FRONTEND_TASKS_AND_REVIEW.md; favicons; .gitignore *.tsbuildinfo

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
defiQUG
2026-02-10 18:43:37 -08:00
parent 1c8ca4172a
commit 2b956a5a83
16 changed files with 847 additions and 315 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
frontend/public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

14
frontend/public/icon.svg Normal file
View File

@@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
<defs>
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea"/>
<stop offset="100%" style="stop-color:#764ba2"/>
</linearGradient>
</defs>
<rect width="64" height="64" rx="12" fill="url(#bg)"/>
<!-- Magnifying glass (scout) -->
<circle cx="28" cy="28" r="14" fill="none" stroke="white" stroke-width="4"/>
<line x1="38" y1="38" x2="50" y2="50" stroke="white" stroke-width="4" stroke-linecap="round"/>
<!-- Small block link accent -->
<rect x="12" y="44" width="10" height="10" rx="2" fill="rgba(255,255,255,0.5)"/>
</svg>

After

Width:  |  Height:  |  Size: 692 B

File diff suppressed because it is too large Load Diff