Skip to content

Commit fd1c267

Browse files
committed
Prepare for trash model.
1 parent 7238fcb commit fd1c267

File tree

4 files changed

+44
-49
lines changed

4 files changed

+44
-49
lines changed

browser-extension/src/styles/popup-frame.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
/* Popup window frame styles */
22
:root {
33
--popup-width: 600px;
4+
--popup-height: 400px;
45
}
56

67
body {
78
width: var(--popup-width);
9+
height: var(--popup-height);
810
padding: 15px;
911
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
1012
font-size: 14px;

browser-extension/tests/playground/claude.tsx

Lines changed: 35 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { GitPullRequestIcon, IssueOpenedIcon } from '@primer/octicons-react'
22
import { cva, type VariantProps } from 'class-variance-authority'
33
import {
4-
Archive,
54
Clock,
65
Code,
76
EyeOff,
@@ -12,6 +11,7 @@ import {
1211
Monitor,
1312
Search,
1413
TextSelect,
14+
Trash,
1515
} from 'lucide-react'
1616
import { useMemo, useState } from 'react'
1717
import { twMerge } from 'tailwind-merge'
@@ -21,7 +21,7 @@ import type { DraftStats } from '@/lib/enhancers/draftStats'
2121
interface FilterState {
2222
sentFilter: 'both' | 'sent' | 'unsent'
2323
searchQuery: string
24-
showArchived: boolean
24+
showTrashed: boolean
2525
}
2626

2727
// CVA configuration for stat badges
@@ -41,7 +41,7 @@ const statBadge = cva(
4141
true: '!border-solid !border-current',
4242
},
4343
type: {
44-
archived: 'bg-gray-50 text-yellow-700',
44+
trashed: 'bg-gray-50 text-yellow-700',
4545
blank: 'bg-transparent text-gray-700',
4646
code: 'bg-pink-50 text-pink-700',
4747
hideArchived: 'bg-transparent text-gray-700',
@@ -59,8 +59,8 @@ const statBadge = cva(
5959

6060
// Map types to their icons
6161
const typeIcons = {
62-
archived: Archive,
63-
blank: Archive,
62+
trashed: Trash,
63+
blank: Code,
6464
code: Code,
6565
hideArchived: EyeOff,
6666
image: Image,
@@ -183,7 +183,7 @@ interface CommentTableRow {
183183
latestDraft: Draft
184184
isOpenTab: boolean
185185
isSent: boolean
186-
isArchived: boolean
186+
isTrashed: boolean
187187
}
188188

189189
type GitHubOrReddit = GitHubSpot | RedditSpot
@@ -198,7 +198,7 @@ const isRedditDraft = (spot: GitHubOrReddit): spot is RedditSpot => {
198198

199199
const generateMockDrafts = (): CommentTableRow[] => [
200200
{
201-
isArchived: false,
201+
isTrashed: false,
202202
isOpenTab: true,
203203
isSent: false,
204204
latestDraft: {
@@ -231,7 +231,7 @@ const generateMockDrafts = (): CommentTableRow[] => [
231231
} satisfies GitHubSpot,
232232
},
233233
{
234-
isArchived: false,
234+
isTrashed: false,
235235
isOpenTab: false,
236236
isSent: false,
237237
latestDraft: {
@@ -258,7 +258,7 @@ const generateMockDrafts = (): CommentTableRow[] => [
258258
} satisfies RedditSpot,
259259
},
260260
{
261-
isArchived: false,
261+
isTrashed: false,
262262
isOpenTab: true,
263263
isSent: false,
264264
latestDraft: {
@@ -281,7 +281,7 @@ const generateMockDrafts = (): CommentTableRow[] => [
281281
} satisfies GitHubSpot,
282282
},
283283
{
284-
isArchived: false,
284+
isTrashed: false,
285285
isOpenTab: false,
286286
isSent: true,
287287
latestDraft: {
@@ -316,7 +316,7 @@ const generateMockDrafts = (): CommentTableRow[] => [
316316
} satisfies GitHubSpot,
317317
},
318318
{
319-
isArchived: true,
319+
isTrashed: true,
320320
isOpenTab: true,
321321
isSent: false,
322322
latestDraft: {
@@ -383,7 +383,7 @@ export const ClaudePrototype = () => {
383383
const [filters, setFilters] = useState<FilterState>({
384384
searchQuery: '',
385385
sentFilter: 'both',
386-
showArchived: false,
386+
showTrashed: false,
387387
})
388388

389389
const updateFilter = <K extends keyof FilterState>(key: K, value: FilterState[K]) => {
@@ -392,8 +392,8 @@ export const ClaudePrototype = () => {
392392

393393
const filteredDrafts = useMemo(() => {
394394
let filtered = [...drafts]
395-
if (!filters.showArchived) {
396-
filtered = filtered.filter((d) => !d.isArchived)
395+
if (!filters.showTrashed) {
396+
filtered = filtered.filter((d) => !d.isTrashed)
397397
}
398398
if (filters.sentFilter !== 'both') {
399399
filtered = filtered.filter((d) => (filters.sentFilter === 'sent' ? d.isSent : !d.isSent))
@@ -495,7 +495,7 @@ export const ClaudePrototype = () => {
495495
setFilters({
496496
searchQuery: '',
497497
sentFilter: 'both',
498-
showArchived: true,
498+
showTrashed: true,
499499
})
500500
}}
501501
className='text-blue-600 hover:underline'
@@ -508,30 +508,25 @@ export const ClaudePrototype = () => {
508508
}
509509

510510
return (
511-
<div className='min-h-screen bg-white'>
512-
{/* Header controls */}
513-
<div className='p-3 border-b'>
514-
<div className='flex flex-wrap gap-3 items-center'></div>
515-
516-
{/* Bulk actions bar - floating popup */}
517-
{selectedIds.size > 0 && (
518-
<div className='fixed bottom-6 left-1/2 transform -translate-x-1/2 p-3 bg-blue-50 rounded-md shadow-lg border border-blue-200 flex items-center gap-3 z-50'>
519-
<span className='text-sm font-medium'>{selectedIds.size} selected</span>
520-
<button type='button' className='text-sm text-blue-600 hover:underline'>
521-
Copy
522-
</button>
523-
<button type='button' className='text-sm text-blue-600 hover:underline'>
524-
Preview
525-
</button>
526-
<button type='button' className='text-sm text-blue-600 hover:underline'>
527-
Discard
528-
</button>
529-
<button type='button' className='text-sm text-blue-600 hover:underline'>
530-
Open
531-
</button>
532-
</div>
533-
)}
534-
</div>
511+
<div className='bg-white'>
512+
{/* Bulk actions bar - floating popup */}
513+
{selectedIds.size > 0 && (
514+
<div className='fixed bottom-6 left-1/2 transform -translate-x-1/2 p-3 bg-blue-50 rounded-md shadow-lg border border-blue-200 flex items-center gap-3 z-50'>
515+
<span className='text-sm font-medium'>{selectedIds.size} selected</span>
516+
<button type='button' className='text-sm text-blue-600 hover:underline'>
517+
Copy
518+
</button>
519+
<button type='button' className='text-sm text-blue-600 hover:underline'>
520+
Preview
521+
</button>
522+
<button type='button' className='text-sm text-blue-600 hover:underline'>
523+
Discard
524+
</button>
525+
<button type='button' className='text-sm text-blue-600 hover:underline'>
526+
Open
527+
</button>
528+
</div>
529+
)}
535530

536531
{/* Table */}
537532
<div className='overflow-x-auto'>
@@ -673,7 +668,7 @@ function commentRow(
673668
{row.spot.title}
674669
</a>
675670
<Badge type={row.isSent ? 'sent' : 'unsent'} />
676-
{row.isArchived && <Badge type='archived' />}
671+
{row.isTrashed && <Badge type='trashed' />}
677672
</div>
678673
{/* Draft */}
679674
<div className='text-sm truncate'>

browser-extension/tests/playground/playground.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const MODES = {
1313
type Mode = keyof typeof MODES
1414

1515
const App = () => {
16-
const [activeComponent, setActiveComponent] = useState<Mode>('replica')
16+
const [activeComponent, setActiveComponent] = useState<Mode>('claude')
1717

1818
return (
1919
<div className='min-h-screen bg-slate-100'>
@@ -30,11 +30,10 @@ const App = () => {
3030
key={mode}
3131
type='button'
3232
onClick={() => setActiveComponent(mode as Mode)}
33-
className={`px-3 py-2 rounded text-sm font-medium transition-colors ${
34-
activeComponent === mode
35-
? 'bg-blue-600 text-white'
36-
: 'bg-gray-100 text-gray-700 hover:bg-gray-200'
37-
}`}
33+
className={`px-3 py-2 rounded text-sm font-medium transition-colors ${activeComponent === mode
34+
? 'bg-blue-600 text-white'
35+
: 'bg-gray-100 text-gray-700 hover:bg-gray-200'
36+
}`}
3837
>
3938
{config.label}
4039
</button>

browser-extension/tests/playground/style.css

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,12 @@ body {
1717
/* Popup simulator frame */
1818
.popup-frame {
1919
width: var(--popup-width);
20-
padding: 15px;
20+
height: var(--popup-height);
2121
font-size: 14px;
2222
line-height: 1.4;
2323
background: white;
2424
border: 1px solid #e2e8f0;
25-
border-radius: 8px;
25+
border-radius: 0px;
2626
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1);
2727
margin: 0 auto;
28-
text-align: left;
2928
}

0 commit comments

Comments
 (0)