Skip to content

Commit 8dd5515

Browse files
fix(dashboard): 44px touch targets for interactive elements (#3393)
Closes #3376. min-h-[44px] on LiveAuditStream filter tabs, MessageBubble toggles, CalendarGrid Today button, ToastContainer actions. Fixed hover color bug in LiveAuditStream.
1 parent 6453eea commit 8dd5515

4 files changed

Lines changed: 10 additions & 10 deletions

File tree

dashboard/src/components/LiveAuditStream.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,16 +87,16 @@ export default function LiveAuditStream({ maxItems = 20 }: LiveAuditStreamProps)
8787
{/* Header — filter tabs + live indicator */}
8888
<div className="flex items-center justify-between mb-4 gap-2">
8989
{/* Filter tabs */}
90-
<div className="flex items-center gap-1 rounded-lg bg-white/5 p-1">
90+
<div className="flex items-center gap-1 rounded-lg bg-[var(--color-void-light)] p-1">
9191
{(['all', 'errors', 'actions'] as FilterMode[]).map((mode) => (
9292
<button
9393
key={mode}
9494
type="button"
9595
onClick={() => setFilterMode(mode)}
96-
className={`px-2.5 py-1 rounded-md text-[10px] font-bold uppercase tracking-widest transition-all ${
96+
className={`min-h-[44px] px-3 py-1.5 rounded-md text-[11px] font-bold uppercase tracking-widest transition-all ${
9797
filterMode === mode
98-
? 'bg-slate-200 text-slate-900 shadow-inner dark:bg-white/10 dark:text-white'
99-
: 'text-slate-600 hover:text-slate-900 dark:text-slate-500 dark:hover:text-slate-300'
98+
? 'bg-[var(--color-accent)] text-white shadow-sm'
99+
: 'text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] hover:bg-[var(--color-surface-hover)]'
100100
}`}
101101
>
102102
{mode === 'errors' ? '⚠ Errors' : mode === 'actions' ? '⚡ Actions' : 'All'}

dashboard/src/components/ToastContainer.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ function ToastItem({
132132
{undoAction && (
133133
<button type="button"
134134
onClick={handleUndo}
135-
className="shrink-0 flex items-center gap-1 rounded px-2 py-1 text-xs font-medium opacity-80 hover:opacity-100 transition-opacity bg-current/10"
135+
className="shrink-0 flex min-h-[44px] items-center gap-1 rounded px-2 py-1 text-xs font-medium opacity-80 hover:opacity-100 transition-opacity bg-current/10"
136136
aria-label={t("aria.undo")}
137137
>
138138
<Undo className="h-3 w-3" />
@@ -167,7 +167,7 @@ export default function ToastContainer() {
167167
<div className="flex justify-end pointer-events-auto">
168168
<button type="button"
169169
onClick={() => toasts.forEach((t) => removeToast(t.id))}
170-
className="flex items-center gap-1 rounded px-2 py-1 text-xs text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] transition-colors"
170+
className="flex min-h-[44px] items-center gap-1 rounded px-2 py-1 text-xs text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] transition-colors"
171171
aria-label={t("aria.dismissAll")}
172172
>
173173
<Trash2 className="h-3 w-3" />

dashboard/src/components/routines/CalendarGrid.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ export default function CalendarGrid({
106106
<div className="flex items-center gap-1">
107107
<button type="button"
108108
onClick={handleToday}
109-
className="px-2 py-1 text-xs text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] transition-colors rounded"
109+
className="min-h-[44px] px-2 py-1 text-xs text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] transition-colors rounded"
110110
aria-label={t("aria.goToToday")}
111111
>
112112
Today

dashboard/src/components/session/MessageBubble.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ function ThinkingBlock({ entry }: { entry: ParsedEntry }) {
6363
<div className="max-w-[80%] w-full">
6464
<button type="button"
6565
onClick={() => setOpen(o => !o)}
66-
className="flex items-center gap-2 text-xs text-[var(--color-text-muted)] hover:text-[var(--color-text-muted)] transition-colors py-1 group"
66+
className="flex min-h-[44px] items-center gap-2 text-xs text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] transition-colors py-1 group"
6767
>
6868
<span
6969
className="inline-block transition-transform duration-200"
@@ -111,7 +111,7 @@ function ToolUseCard({ entry }: { entry: ParsedEntry }) {
111111
{rawText.length > 100 && (
112112
<button type="button"
113113
onClick={() => setExpanded(e => !e)}
114-
className="w-full text-[10px] text-[var(--color-text-muted)] hover:text-[var(--color-text-muted)] py-1 border-t border-[var(--color-void-lighter)] transition-colors"
114+
className="w-full min-h-[44px] text-[10px] text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] py-1 border-t border-[var(--color-void-lighter)] transition-colors"
115115
>
116116
{expanded ? 'Collapse' : 'Expand'}
117117
</button>
@@ -157,7 +157,7 @@ function ToolResultCard({ entry }: { entry: ParsedEntry }) {
157157
{rawText.length > 100 && (
158158
<button type="button"
159159
onClick={() => setExpanded(e => !e)}
160-
className="w-full text-[10px] text-[var(--color-text-muted)] hover:text-[var(--color-text-muted)] py-1 border-t border-[var(--color-void-lighter)] transition-colors"
160+
className="w-full min-h-[44px] text-[10px] text-[var(--color-text-muted)] hover:text-[var(--color-text-primary)] py-1 border-t border-[var(--color-void-lighter)] transition-colors"
161161
>
162162
{expanded ? 'Collapse' : 'Expand'}
163163
</button>

0 commit comments

Comments
 (0)