1- ' use client'
1+ " use client" ;
22
3- import React , { ReactNode } from ' react'
3+ import React , { type ReactNode } from " react" ;
44
55interface ContentLayoutProps {
6- children : ReactNode
7- sidebar ?: ReactNode
8- sidebarWidth ?: ' narrow' | ' medium' | ' wide'
6+ children : ReactNode ;
7+ sidebar ?: ReactNode ;
8+ sidebarWidth ?: " narrow" | " medium" | " wide" ;
99}
1010
1111/**
1212 * Layout component for main content with optional sidebar
1313 * Makes the main content area responsive with proper spacing
1414 */
1515export default function ContentLayout ( {
16- children,
17- sidebar,
18- sidebarWidth = 'medium'
19- } : ContentLayoutProps ) {
20- const getSidebarGridCols = ( ) => {
21- switch ( sidebarWidth ) {
22- case 'narrow' : return 'lg:col-span-1 lg:grid-cols-5'
23- case 'wide' : return 'lg:col-span-2 lg:grid-cols-7'
24- case 'medium' :
25- default : return 'lg:col-span-1 lg:grid-cols-4'
26- }
27- }
16+ children,
17+ sidebar,
18+ sidebarWidth = "medium" ,
19+ } : ContentLayoutProps ) {
20+ const getSidebarGridCols = ( ) => {
21+ switch ( sidebarWidth ) {
22+ case "narrow" :
23+ return "lg:col-span-1 lg:grid-cols-5" ;
24+ case "wide" :
25+ return "lg:col-span-2 lg:grid-cols-7" ;
26+ case "medium" :
27+ default :
28+ return "lg:col-span-1 lg:grid-cols-4" ;
29+ }
30+ } ;
2831
29- const mainContentCols = ( ) => {
30- switch ( sidebarWidth ) {
31- case 'narrow' : return 'lg:col-span-4'
32- case 'wide' : return 'lg:col-span-5'
33- case 'medium' :
34- default : return 'lg:col-span-3'
35- }
36- }
32+ const mainContentCols = ( ) => {
33+ switch ( sidebarWidth ) {
34+ case "narrow" :
35+ return "lg:col-span-4" ;
36+ case "wide" :
37+ return "lg:col-span-5" ;
38+ case "medium" :
39+ default :
40+ return "lg:col-span-3" ;
41+ }
42+ } ;
3743
38-
39- if ( ! sidebar ) {
40- return (
41- < div className = "container mx-auto" >
42- < div className = "animate-fadeIn" >
43- { children }
44- </ div >
45- </ div >
46- )
47- }
44+ if ( ! sidebar ) {
45+ return (
46+ < div className = "container mx-auto" >
47+ < div className = "animate-fadeIn" > { children } </ div >
48+ </ div >
49+ ) ;
50+ }
4851
52+ return (
53+ < div className = "container mx-auto" >
54+ < div
55+ className = { `grid grid-cols-1 lg:${ getSidebarGridCols ( ) } gap-4 lg:gap-6` }
56+ >
57+ { /* Sidebar */ }
58+ < div className = "col-span-1 animate-fadeIn" > { sidebar } </ div >
4959
50- return (
51- < div className = "container mx-auto" >
52- < div className = { `grid grid-cols-1 lg:${ getSidebarGridCols ( ) } gap-4 lg:gap-6` } >
53- { /* Sidebar */ }
54- < div className = "col-span-1 animate-fadeIn" >
55- { sidebar }
56- </ div >
57-
58- { /* Main content */ }
59- < div className = { `col-span-1 ${ mainContentCols ( ) } animate-slideInRight` } >
60- { children }
61- </ div >
62- </ div >
63- </ div >
64- )
65- }
60+ { /* Main content */ }
61+ < div className = { `col-span-1 ${ mainContentCols ( ) } animate-slideInRight` } >
62+ { children }
63+ </ div >
64+ </ div >
65+ </ div >
66+ ) ;
67+ }
0 commit comments