mirror of
https://github.com/hoornet/vega.git
synced 2026-06-08 06:01:57 -07:00
Polish pass 5 — sentence case, theme tokens, remaining a11y
- Sentence case on all button labels (Mark read, Go to settings, Try again, Mark all read, Disconnect, Connect wallet, Logging in, Posting, Quote & post, Loading, Refresh); V4V tabs capitalized - V4VDashboard: amber-500 hard-coded colors → zap theme token - BookmarkView: tab container rounded-sm overflow-hidden - ToastContainer, DebugPanel, PodcastPlayerBar: aria-labels on dismiss/close buttons - PodcastPlayerBar: ASCII x → × Unicode, ... → … Unicode - AboutView: document bg-white on QR code as intentional
This commit is contained in:
@@ -27,7 +27,7 @@ function ArticleCardWithReadStatus({ event }: { event: NDKEvent }) {
|
||||
onClick={() => isRead ? markArticleUnread(fullAddr) : markArticleRead(fullAddr)}
|
||||
className="absolute right-3 top-3 text-[10px] text-text-dim hover:text-accent opacity-0 group-hover:opacity-100 transition-opacity z-10"
|
||||
>
|
||||
{isRead ? "mark unread" : "mark read"}
|
||||
{isRead ? "Mark unread" : "Mark read"}
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
@@ -173,7 +173,7 @@ export function BookmarkView() {
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="flex items-center gap-3">
|
||||
<h2 className="text-text text-[13px] font-medium">Bookmarks</h2>
|
||||
<div className="flex border border-border text-[11px]">
|
||||
<div className="flex border border-border rounded-sm overflow-hidden text-[11px]">
|
||||
<button
|
||||
onClick={() => setTab("notes")}
|
||||
className={`px-3 py-0.5 transition-colors ${tab === "notes" ? "bg-accent/10 text-accent" : "text-text-muted hover:text-text"}`}
|
||||
|
||||
@@ -182,7 +182,7 @@ export function Feed() {
|
||||
disabled={isLoading}
|
||||
className="text-text-muted hover:text-text text-[11px] px-2 py-1 border border-border hover:border-text-dim transition-colors disabled:opacity-40"
|
||||
>
|
||||
{isLoading ? "loading…" : "refresh"}
|
||||
{isLoading ? "Loading…" : "Refresh"}
|
||||
</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -95,7 +95,7 @@ export function QuoteModal({ event, authorName, authorAvatar, onClose, onPublish
|
||||
disabled={!canPublish}
|
||||
className="px-4 py-1.5 text-[11px] bg-accent hover:bg-accent-hover text-accent-text transition-colors disabled:opacity-30 disabled:cursor-not-allowed"
|
||||
>
|
||||
{publishing ? "posting…" : "quote & post"}
|
||||
{publishing ? "Posting…" : "Quote & post"}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -43,7 +43,7 @@ export function NotificationsView() {
|
||||
onClick={markAllRead}
|
||||
className="text-[11px] text-text-dim hover:text-accent transition-colors"
|
||||
>
|
||||
mark all read
|
||||
Mark all read
|
||||
</button>
|
||||
)}
|
||||
</header>
|
||||
|
||||
@@ -49,7 +49,7 @@ function ShareButton({ episode }: { episode: PodcastEpisode | null }) {
|
||||
{state === "shared" ? "shared" : state === "confirm" ? "publish?" : "share"}
|
||||
</button>
|
||||
{state === "confirm" && (
|
||||
<button onClick={handleCancel} className="text-[10px] text-text-dim hover:text-text">x</button>
|
||||
<button onClick={handleCancel} aria-label="Cancel share" className="text-[10px] text-text-dim hover:text-text">×</button>
|
||||
)}
|
||||
</span>
|
||||
);
|
||||
@@ -291,7 +291,7 @@ export function PodcastPlayerBar() {
|
||||
<rect x="7" y="1" width="3" height="10" rx="0.5" />
|
||||
</svg>
|
||||
) : playbackState === "loading" ? (
|
||||
<span className="text-[10px] text-text-dim animate-pulse">...</span>
|
||||
<span className="text-[10px] text-text-dim animate-pulse">…</span>
|
||||
) : (
|
||||
<svg width="12" height="12" viewBox="0 0 12 12" fill="currentColor" className="text-text ml-0.5">
|
||||
<polygon points="2,1 11,6 2,11" />
|
||||
@@ -354,10 +354,11 @@ export function PodcastPlayerBar() {
|
||||
{/* Close */}
|
||||
<button
|
||||
onClick={saveAndStop}
|
||||
aria-label="Stop and close player"
|
||||
className="text-text-dim hover:text-text transition-colors shrink-0 text-[14px]"
|
||||
title="Stop"
|
||||
>
|
||||
x
|
||||
×
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -31,6 +31,7 @@ function CopyButton({ text }: { text: string }) {
|
||||
function QRBlock({ value, label }: { value: string; label: string }) {
|
||||
return (
|
||||
<div className="flex flex-col items-center gap-2">
|
||||
{/* bg-white intentional — required for QR code scan contrast */}
|
||||
<div className="bg-white p-2.5 inline-block">
|
||||
<QRCode value={value} size={120} />
|
||||
</div>
|
||||
|
||||
@@ -71,7 +71,7 @@ export function DebugPanel({ onClose }: { onClose: () => void }) {
|
||||
{/* Header */}
|
||||
<div className="flex items-center justify-between px-3 py-2 border-b border-border/50">
|
||||
<span className="text-text-muted uppercase tracking-widest text-[10px]">Debug</span>
|
||||
<button onClick={onClose} className="text-text-dim hover:text-text transition-colors">×</button>
|
||||
<button onClick={onClose} aria-label="Close debug panel" className="text-text-dim hover:text-text transition-colors">×</button>
|
||||
</div>
|
||||
|
||||
{/* Uptime + Live Sub */}
|
||||
|
||||
@@ -71,7 +71,7 @@ function NewAccountTab({ onClose }: { onClose: () => void }) {
|
||||
disabled={!confirmed || logging}
|
||||
className="w-full px-4 py-2 text-[12px] bg-accent hover:bg-accent-hover text-accent-text transition-colors disabled:opacity-30 disabled:cursor-not-allowed"
|
||||
>
|
||||
{logging ? "logging in…" : "create account"}
|
||||
{logging ? "Logging in…" : "create account"}
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -115,7 +115,7 @@ function ConnectedState({ nwcUri, onDisconnect }: { nwcUri: string; onDisconnect
|
||||
onClick={onDisconnect}
|
||||
className="text-[10px] text-text-dim hover:text-danger transition-colors shrink-0"
|
||||
>
|
||||
disconnect
|
||||
Disconnect
|
||||
</button>
|
||||
</div>
|
||||
<p className="text-text-dim text-[10px] px-1">
|
||||
@@ -246,7 +246,7 @@ function PasteStep({
|
||||
disabled={!valid}
|
||||
className="px-4 py-1.5 text-[11px] border border-border text-text-muted hover:text-accent hover:border-accent/40 transition-colors disabled:opacity-30 disabled:cursor-not-allowed"
|
||||
>
|
||||
connect wallet
|
||||
Connect wallet
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -23,6 +23,7 @@ export function ToastContainer() {
|
||||
<span className="text-[12px] text-text">{toast.message}</span>
|
||||
<button
|
||||
onClick={() => removeToast(toast.id)}
|
||||
aria-label="Dismiss"
|
||||
className="text-text-dim hover:text-text transition-colors text-[12px] shrink-0"
|
||||
>
|
||||
×
|
||||
|
||||
@@ -63,9 +63,9 @@ export function V4VDashboard() {
|
||||
Playing <span className="text-text">{episode.title}</span> — no V4V recipients.
|
||||
</div>
|
||||
) : v4vStreaming ? (
|
||||
<div className="bg-amber-500/5 border border-amber-500/20 rounded-sm p-3">
|
||||
<div className="bg-zap/5 border border-zap/20 rounded-sm p-3">
|
||||
<div className="flex items-center gap-2 mb-2">
|
||||
<span className="text-amber-400 animate-pulse text-[12px]">⚡</span>
|
||||
<span className="text-zap animate-pulse text-[12px]">⚡</span>
|
||||
<span className="text-[12px] text-text font-medium">Streaming</span>
|
||||
{autoEnabled && (
|
||||
<span className="text-[9px] text-accent bg-accent/10 px-1.5 py-0.5 rounded-sm">AUTO</span>
|
||||
|
||||
@@ -26,7 +26,7 @@ export function V4VView() {
|
||||
: "border-transparent text-text-dim hover:text-text"
|
||||
}`}
|
||||
>
|
||||
{t}
|
||||
{t.charAt(0).toUpperCase() + t.slice(1)}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
|
||||
@@ -70,7 +70,7 @@ export function ZapModal({ target, recipientName, onClose }: ZapModalProps) {
|
||||
onClick={() => { onClose(); setView("settings"); }}
|
||||
className="px-4 py-1.5 text-[11px] border border-accent/60 text-accent hover:bg-accent hover:text-accent-text transition-colors"
|
||||
>
|
||||
go to settings →
|
||||
Go to settings →
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
@@ -155,7 +155,7 @@ export function ZapModal({ target, recipientName, onClose }: ZapModalProps) {
|
||||
onClick={() => setState("idle")}
|
||||
className="w-full py-1.5 text-[11px] border border-border text-text-muted hover:text-text transition-colors"
|
||||
>
|
||||
try again
|
||||
Try again
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user