@@ -9,6 +9,11 @@ interface CollectionSectionProps {
99 * Renders a collection section with its title, description, and subsections
1010 */
1111export default function CollectionSection ( { id, section } : CollectionSectionProps ) {
12+ // For specifications section, use special 2-column layout where Agent Protocols spans full height
13+ const isSpecifications = id === 'specifications'
14+ const hasAgentProtocols =
15+ isSpecifications && section . sections . some ( s => s . title . includes ( 'Agent Protocols' ) )
16+
1217 return (
1318 < section id = { id } className = "mb-[var(--spacing-xl)] scroll-mt-[100px]" >
1419 < div className = "mb-[var(--spacing-lg)] border-l-2 border-[var(--color-border-strong)] pl-[var(--spacing-md)]" >
@@ -20,31 +25,43 @@ export default function CollectionSection({ id, section }: CollectionSectionProp
2025 </ p >
2126 </ div >
2227
23- < div className = "grid grid-cols-1 lg:grid-cols-2 gap-[var(--spacing-md)]" >
24- { section . sections . map ( subSection => (
25- < div
26- key = { subSection . title }
27- className = "border border-[var(--color-border)] p-[var(--spacing-md)]"
28- >
29- < h3 className = "text-lg font-semibold tracking-tight mb-[var(--spacing-md)]" >
30- { subSection . title }
31- </ h3 >
32- < ul className = "space-y-[var(--spacing-md)]" >
33- { subSection . items . map ( item => (
34- < li key = { item . url } >
35- < a href = { item . url } target = "_blank" rel = "noopener" className = "group block" >
36- < div className = "text-base font-medium text-[var(--color-text)] group-hover:underline" >
37- { item . name }
38- </ div >
39- < p className = "text-sm text-[var(--color-text-secondary)] font-light mt-[var(--spacing-xs)]" >
40- { item . description }
41- </ p >
42- </ a >
43- </ li >
44- ) ) }
45- </ ul >
46- </ div >
47- ) ) }
28+ < div
29+ className = {
30+ hasAgentProtocols
31+ ? 'grid grid-cols-1 lg:grid-cols-2 grid-rows-2 gap-[var(--spacing-md)]'
32+ : 'grid grid-cols-1 lg:grid-cols-2 gap-[var(--spacing-md)]'
33+ }
34+ >
35+ { section . sections . map ( ( subSection , _index ) => {
36+ const isAgentProtocols = subSection . title . includes ( 'Agent Protocols' )
37+ const colSpanClass =
38+ hasAgentProtocols && isAgentProtocols ? 'lg:col-span-1 lg:row-span-2' : ''
39+
40+ return (
41+ < div
42+ key = { subSection . title }
43+ className = { `border border-[var(--color-border)] p-[var(--spacing-md)] ${ colSpanClass } ` }
44+ >
45+ < h3 className = "text-lg font-semibold tracking-tight mb-[var(--spacing-md)]" >
46+ { subSection . title }
47+ </ h3 >
48+ < ul className = "space-y-[var(--spacing-md)]" >
49+ { subSection . items . map ( item => (
50+ < li key = { item . url } >
51+ < a href = { item . url } target = "_blank" rel = "noopener" className = "group block" >
52+ < div className = "text-base font-medium text-[var(--color-text)] group-hover:underline" >
53+ { item . name }
54+ </ div >
55+ < p className = "text-sm text-[var(--color-text-secondary)] font-light mt-[var(--spacing-xs)]" >
56+ { item . description }
57+ </ p >
58+ </ a >
59+ </ li >
60+ ) ) }
61+ </ ul >
62+ </ div >
63+ )
64+ } ) }
4865 </ div >
4966 </ section >
5067 )
0 commit comments