Skip to content

Commit 67835d4

Browse files
committed
A take.
1 parent 2ee2b3d commit 67835d4

File tree

1 file changed

+55
-40
lines changed

1 file changed

+55
-40
lines changed

browser-extension/tests/playground/claude.tsx

Lines changed: 55 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ interface FilterState {
2626
hasCode: boolean
2727
sentFilter: 'all' | 'sent' | 'unsent'
2828
searchQuery: string
29+
showArchived: boolean
2930
}
3031

3132
// CVA configuration for stat badges
@@ -340,6 +341,7 @@ export const ClaudePrototype = () => {
340341
hasLink: false,
341342
searchQuery: '',
342343
sentFilter: 'all',
344+
showArchived: false,
343345
})
344346

345347
const updateFilter = <K extends keyof FilterState>(key: K, value: FilterState[K]) => {
@@ -358,6 +360,9 @@ export const ClaudePrototype = () => {
358360
if (filters.hasLink) {
359361
filtered = filtered.filter((d) => d.latestDraft.stats.links.length > 0)
360362
}
363+
if (!filters.showArchived) {
364+
filtered = filtered.filter((d) => !d.isArchived)
365+
}
361366
if (filters.sentFilter !== 'all') {
362367
filtered = filtered.filter((d) => (filters.sentFilter === 'sent' ? d.isSent : !d.isSent))
363368
}
@@ -468,6 +473,7 @@ export const ClaudePrototype = () => {
468473
hasLink: false,
469474
searchQuery: '',
470475
sentFilter: 'all',
476+
showArchived: true
471477
})
472478
}}
473479
className='text-blue-600 hover:underline'
@@ -561,52 +567,25 @@ export const ClaudePrototype = () => {
561567
)
562568
}
563569
function filterControls(
564-
filters: FilterState,
570+
_filters: FilterState,
565571
updateFilter: <K extends keyof FilterState>(key: K, value: FilterState[K]) => void,
566572
) {
567573
return (
568574
<div className='absolute top-full right-0 mt-1 p-3 bg-white border border-gray-300 rounded-md shadow-lg z-10 min-w-48'>
569575
<div className='space-y-3'>
570-
<div className='space-y-2'>
571-
<label className='flex items-center gap-2 cursor-pointer'>
572-
<input
573-
type='checkbox'
574-
checked={filters.hasLink}
575-
onChange={(e) => updateFilter('hasLink', e.target.checked)}
576-
className='rounded'
577-
/>
578-
<Badge type='link' />
579-
</label>
580-
<label className='flex items-center gap-2 cursor-pointer'>
581-
<input
582-
type='checkbox'
583-
checked={filters.hasImage}
584-
onChange={(e) => updateFilter('hasImage', e.target.checked)}
585-
className='rounded'
586-
/>
587-
<Badge type='image' />
588-
</label>
589-
<label className='flex items-center gap-2 cursor-pointer'>
590-
<input
591-
type='checkbox'
592-
checked={filters.hasCode}
593-
onChange={(e) => updateFilter('hasCode', e.target.checked)}
594-
className='rounded'
595-
/>
596-
<Badge type='code' />
597-
</label>
598-
</div>
599-
<div className='relative flex rounded-md overflow-hidden'>
600-
{/* Sliding indicator */}
601-
<div
602-
className='absolute top-0 h-0.5 bg-current transition-all duration-200'
603-
style={{
604-
width: '33.33%',
605-
left: filters.sentFilter === 'unsent' ? '0%' :
606-
filters.sentFilter === 'all' ? '33.33%' : '66.66%'
607-
}}
576+
<div className='relative flex overflow-hidden'>
577+
<Badge
578+
type='archived'
579+
text='include'
580+
onClick={() => updateFilter('showArchived', true)}
608581
/>
609-
582+
<Badge
583+
type='blank'
584+
text='hide archived'
585+
onClick={() => updateFilter('showArchived', false)}
586+
/>
587+
</div>
588+
<div className='relative flex overflow-hidden'>
610589
<Badge
611590
type='unsent'
612591
onClick={() => updateFilter('sentFilter', 'unsent')}
@@ -621,6 +600,42 @@ function filterControls(
621600
onClick={() => updateFilter('sentFilter', 'sent')}
622601
/>
623602
</div>
603+
<div className='relative flex overflow-hidden'>
604+
<Badge
605+
type='link'
606+
text='required'
607+
onClick={() => updateFilter('hasLink', true)}
608+
/>
609+
<Badge
610+
type='blank'
611+
text='optional'
612+
onClick={() => updateFilter('hasLink', false)}
613+
/>
614+
</div>
615+
<div className='relative flex overflow-hidden'>
616+
<Badge
617+
type='image'
618+
text='required'
619+
onClick={() => updateFilter('hasImage', true)}
620+
/>
621+
<Badge
622+
type='blank'
623+
text='optional'
624+
onClick={() => updateFilter('hasImage', false)}
625+
/>
626+
</div>
627+
<div className='relative flex overflow-hidden'>
628+
<Badge
629+
type='code'
630+
text='required'
631+
onClick={() => updateFilter('hasCode', true)}
632+
/>
633+
<Badge
634+
type='blank'
635+
text='optional'
636+
onClick={() => updateFilter('hasCode', false)}
637+
/>
638+
</div>
624639
</div>
625640
</div>
626641
)

0 commit comments

Comments
 (0)