@@ -101,14 +101,15 @@ const Badge = ({ text, type }: BadgeProps) => {
101101interface Segment {
102102 text ?: string
103103 type : keyof typeof typeIcons
104- onClick : ( ) => void
105- selected : boolean
104+ value : string
106105}
107106interface MultiSegmentProps {
108107 segments : Segment [ ]
108+ value : string
109+ onValueChange : ( value : string ) => void
109110}
110111
111- const MultiSegment = ( { segments } : MultiSegmentProps ) => {
112+ const MultiSegment = ( { segments, value , onValueChange } : MultiSegmentProps ) => {
112113 return (
113114 < div className = "inline-flex items-center gap-0" >
114115 { segments . map ( ( segment , index ) => {
@@ -118,10 +119,10 @@ const MultiSegment = ({ segments }: MultiSegmentProps) => {
118119 key = { index }
119120 className = { statBadge ( {
120121 clickable : true ,
121- selected : segment . selected ,
122+ selected : value === segment . value ,
122123 type : segment . type ,
123124 } ) }
124- onClick = { segment . onClick }
125+ onClick = { ( ) => onValueChange ( segment . value ) }
125126 type = "button"
126127 >
127128 { segment . type === 'blank' || < Icon className = 'w-3 h-3' /> }
@@ -557,26 +558,26 @@ export const ClaudePrototype = () => {
557558 />
558559 </ div >
559560 < div className = 'relative flex overflow-hidden' >
560- < MultiSegment segments = { [
561- {
562- type : ' unsent',
563- text : '' ,
564- selected : filters . sentFilter === 'unsent' ,
565- onClick : ( ) => updateFilter ( 'sentFilter' , ' unsent')
566- } ,
567- {
568- type : 'blank' ,
569- text : 'both' ,
570- selected : filters . sentFilter === 'all ',
571- onClick : ( ) => updateFilter ( 'sentFilter' , 'all' )
572- } ,
573- {
574- type : 'sent' ,
575- text : ' ' ,
576- selected : filters . sentFilter === 'sent ',
577- onClick : ( ) => updateFilter ( 'sentFilter' , ' sent')
578- }
579- ] } />
561+ < MultiSegment
562+ value = { filters . sentFilter }
563+ onValueChange = { ( value ) => updateFilter ( 'sentFilter' , value as 'all' | 'sent' | ' unsent') }
564+ segments = { [
565+ {
566+ type : ' unsent',
567+ text : ' ' ,
568+ value : 'unsent'
569+ } ,
570+ {
571+ type : 'blank ',
572+ text : 'both' ,
573+ value : 'all'
574+ } ,
575+ {
576+ type : 'sent ' ,
577+ text : ' ',
578+ value : ' sent'
579+ }
580+ ] } />
580581 </ div >
581582 </ div >
582583 </ div >
0 commit comments