Skip to content

Commit 7238fcb

Browse files
committed
Better type checking.
1 parent baaa698 commit 7238fcb

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

browser-extension/tests/playground/claude.tsx

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import type { CommentSpot } from '@/lib/enhancer'
1919
import type { DraftStats } from '@/lib/enhancers/draftStats'
2020

2121
interface FilterState {
22-
sentFilter: 'all' | 'sent' | 'unsent'
22+
sentFilter: 'both' | 'sent' | 'unsent'
2323
searchQuery: string
2424
showArchived: boolean
2525
}
@@ -94,18 +94,18 @@ const Badge = ({ text, type }: BadgeProps) => {
9494
)
9595
}
9696

97-
interface Segment {
97+
interface Segment<T> {
9898
text?: string
9999
type: keyof typeof typeIcons
100-
value: string
100+
value: T
101101
}
102-
interface MultiSegmentProps {
103-
segments: Segment[]
104-
value: string
105-
onValueChange: (value: string) => void
102+
interface MultiSegmentProps<T> {
103+
segments: Segment<T>[]
104+
value: T
105+
onValueChange: (value: T) => void
106106
}
107107

108-
const MultiSegment = ({ segments, value, onValueChange }: MultiSegmentProps) => {
108+
const MultiSegment = <T,>({ segments, value, onValueChange }: MultiSegmentProps<T>) => {
109109
return (
110110
<div className='inline-flex items-center gap-0'>
111111
{segments.map((segment, index) => {
@@ -124,7 +124,7 @@ const MultiSegment = ({ segments, value, onValueChange }: MultiSegmentProps) =>
124124

125125
return (
126126
<button
127-
key={segment.value}
127+
key={String(segment.value)}
128128
className={`${statBadge({
129129
clickable: true,
130130
selected: value === segment.value,
@@ -382,7 +382,7 @@ export const ClaudePrototype = () => {
382382
const [selectedIds, setSelectedIds] = useState(new Set())
383383
const [filters, setFilters] = useState<FilterState>({
384384
searchQuery: '',
385-
sentFilter: 'all',
385+
sentFilter: 'both',
386386
showArchived: false,
387387
})
388388

@@ -395,7 +395,7 @@ export const ClaudePrototype = () => {
395395
if (!filters.showArchived) {
396396
filtered = filtered.filter((d) => !d.isArchived)
397397
}
398-
if (filters.sentFilter !== 'all') {
398+
if (filters.sentFilter !== 'both') {
399399
filtered = filtered.filter((d) => (filters.sentFilter === 'sent' ? d.isSent : !d.isSent))
400400
}
401401
if (filters.searchQuery) {
@@ -467,7 +467,7 @@ export const ClaudePrototype = () => {
467467
)
468468
}
469469

470-
if (filteredDrafts.length === 0 && (filters.searchQuery || filters.sentFilter !== 'all')) {
470+
if (filteredDrafts.length === 0 && (filters.searchQuery || filters.sentFilter !== 'both')) {
471471
return (
472472
<div className='min-h-screen bg-white'>
473473
<div className='p-6 border-b'>
@@ -494,7 +494,7 @@ export const ClaudePrototype = () => {
494494
onClick={() => {
495495
setFilters({
496496
searchQuery: '',
497-
sentFilter: 'all',
497+
sentFilter: 'both',
498498
showArchived: true,
499499
})
500500
}}
@@ -565,11 +565,9 @@ export const ClaudePrototype = () => {
565565
/>
566566
</div>
567567
<div className='relative flex overflow-hidden'>
568-
<MultiSegment
568+
<MultiSegment<FilterState['sentFilter']>
569569
value={filters.sentFilter}
570-
onValueChange={(value) =>
571-
updateFilter('sentFilter', value as 'all' | 'sent' | 'unsent')
572-
}
570+
onValueChange={(value) => updateFilter('sentFilter', value)}
573571
segments={[
574572
{
575573
text: '',
@@ -579,7 +577,7 @@ export const ClaudePrototype = () => {
579577
{
580578
text: 'both',
581579
type: 'blank',
582-
value: 'all',
580+
value: 'both',
583581
},
584582
{
585583
text: '',

0 commit comments

Comments
 (0)