@@ -4,6 +4,11 @@ import {
44 AccordionItem ,
55 AccordionTrigger ,
66} from '@/components/ui/Accordion' ;
7+ import {
8+ Collapsible ,
9+ CollapsibleContent ,
10+ CollapsibleTrigger ,
11+ } from '@/components/ui/Collapsible' ;
712import {
813 HeadersEntity ,
914 HttpArchiveEntry ,
@@ -12,6 +17,8 @@ import {
1217import { last } from 'lodash' ;
1318
1419import getUrlProperties from '@/utils/getUrProperties' ;
20+ import { ChevronDown , ChevronRight } from 'lucide-react' ;
21+ import { useState } from 'react' ;
1522
1623function NetworkPreview ( { entry } : { entry : HttpArchiveEntry } ) {
1724 const resource =
@@ -33,23 +40,57 @@ function NetworkPreview({ entry }: { entry: HttpArchiveEntry }) {
3340 ) ;
3441}
3542
43+ function HighlightedValue ( { value } : { value : string | number | boolean } ) {
44+ return < span className = "text-amber-700 dark:text-amber-500" > { value } </ span > ;
45+ }
46+
3647function HeadersEntry ( { header } : { header : HeadersEntity } ) {
3748 return (
3849 < li className = "text-sm" >
39- :< span > { header . name } </ span > :{ ' ' }
40- < span className = "text-amber-700 dark:text-amber-500" > { header . value } </ span >
50+ :< span > { header . name } </ span > : < HighlightedValue value = { header . value } />
4151 </ li >
4252 ) ;
4353}
4454
4555function ResponseBody ( {
46- // eslint-disable-next-line @typescript-eslint/no-unused-vars
4756 content,
4857} : {
4958 content : HttpArchiveEntryResponse [ 'content' ] ;
5059} ) {
51- // TODO: display the content
52- return < div > Content</ div > ;
60+ const [ open , setOpen ] = useState < boolean > ( false ) ;
61+
62+ return (
63+ < ul className = "flex-col" >
64+ < li >
65+ MIME Type: < HighlightedValue value = { content . mimeType } />
66+ </ li >
67+ < li >
68+ Size: < HighlightedValue value = { `${ content . size } Bytes` } />
69+ </ li >
70+ < li >
71+ Compression: < HighlightedValue value = { content . compression ?? '-' } />
72+ </ li >
73+ < li >
74+ < Collapsible open = { open } onOpenChange = { setOpen } >
75+ < CollapsibleTrigger >
76+ < div className = "flex items-center" >
77+ < span className = "pr-1" > Content</ span >
78+ { open ? (
79+ < ChevronDown className = "h-4 w-4 bg-accent" />
80+ ) : (
81+ < ChevronRight className = "h-4 w-4 bg-accent" />
82+ ) }
83+ </ div >
84+ </ CollapsibleTrigger >
85+ < CollapsibleContent >
86+ < div className = "p-2 w-full overflow-auto bg-accent" >
87+ < pre > { content . text } </ pre >
88+ </ div >
89+ </ CollapsibleContent >
90+ </ Collapsible >
91+ </ li >
92+ </ ul >
93+ ) ;
5394}
5495
5596function NetworkDetails ( { entry } : { entry : HttpArchiveEntry } ) {
0 commit comments