From 491bdfe1ff72e2c22160e551d0a837f5b0b7e99c Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Fri, 10 Apr 2026 20:10:08 +0200 Subject: [PATCH] fix: type-safe ExchangeStatus cast in ButtonGroup onChange Cast the Set from ButtonGroup.onChange to Set before iterating, fixing TS2345 from DS TopBar decomposition. Co-Authored-By: Claude Opus 4.6 (1M context) --- ui/src/components/LayoutShell.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ui/src/components/LayoutShell.tsx b/ui/src/components/LayoutShell.tsx index fd5e0164..41b60146 100644 --- a/ui/src/components/LayoutShell.tsx +++ b/ui/src/components/LayoutShell.tsx @@ -19,7 +19,7 @@ import { useGlobalFilters, useStarred, } from '@cameleer/design-system'; -import type { SearchResult, SidebarTreeNode, DropdownItem, ButtonGroupItem } from '@cameleer/design-system'; +import type { SearchResult, SidebarTreeNode, DropdownItem, ButtonGroupItem, ExchangeStatus } from '@cameleer/design-system'; import sidebarLogo from '@cameleer/design-system/assets/cameleer3-logo.svg'; import { Box, Settings, FileText, ChevronRight, Square, Pause, Star, X, User } from 'lucide-react'; import { AboutMeDialog } from './AboutMeDialog'; @@ -771,13 +771,15 @@ function LayoutContent() { { + onChange={(sel) => { + type S = 'completed' | 'warning' | 'failed' | 'running' + const selected = sel as Set const current = globalFilters.statusFilters for (const v of selected) { - if (!current.has(v)) globalFilters.toggleStatus(v as 'completed' | 'warning' | 'failed' | 'running') + if (!current.has(v)) globalFilters.toggleStatus(v) } for (const v of current) { - if (!selected.has(v)) globalFilters.toggleStatus(v as 'completed' | 'warning' | 'failed' | 'running') + if (!selected.has(v)) globalFilters.toggleStatus(v) } }} />