@@ -2,60 +2,13 @@ import { Eye, EyeOff, Search, Settings, Trash2 } from 'lucide-react'
22import { useMemo , useState } from 'react'
33import { twMerge } from 'tailwind-merge'
44import Badge from '@/components/Badge'
5- import { badgeCVA , typeIcons } from '@/components/design'
5+ import { badgeCVA } from '@/components/design'
6+ import MultiSegment from '@/components/MultiSegment'
67import type { CommentTableRow } from '@/entrypoints/background'
78import type { FilterState } from '@/entrypoints/popup/popup'
89import { EnhancerRegistry } from '@/lib/registries'
910import { generateMockDrafts } from './replicaData'
1011
11- interface Segment < T > {
12- text ?: string
13- type : keyof typeof typeIcons
14- value : T
15- }
16- interface MultiSegmentProps < T > {
17- segments : Segment < T > [ ]
18- value : T
19- onValueChange : ( value : T ) => void
20- }
21-
22- const MultiSegment = < T , > ( { segments, value, onValueChange } : MultiSegmentProps < T > ) => {
23- return (
24- < div className = 'inline-flex items-center gap-0' >
25- { segments . map ( ( segment , index ) => {
26- const Icon = typeIcons [ segment . type ]
27- const isFirst = index === 0
28- const isLast = index === segments . length - 1
29-
30- const roundedClasses =
31- isFirst && isLast
32- ? ''
33- : isFirst
34- ? '!rounded-r-none'
35- : isLast
36- ? '!rounded-l-none'
37- : '!rounded-none'
38-
39- return (
40- < button
41- key = { String ( segment . value ) }
42- className = { `${ badgeCVA ( {
43- clickable : true ,
44- selected : value === segment . value ,
45- type : segment . type ,
46- } ) } ${ roundedClasses } `}
47- onClick = { ( ) => onValueChange ( segment . value ) }
48- type = 'button'
49- >
50- { segment . type === 'blank' || < Icon className = 'w-3 h-3' /> }
51- { segment . text }
52- </ button >
53- )
54- } ) }
55- </ div >
56- )
57- }
58-
5912// Helper function for relative time
6013function timeAgo ( date : Date | number ) : string {
6114 const timestamp = typeof date === 'number' ? date : date . getTime ( )
0 commit comments