@@ -6,23 +6,124 @@ interface ShellLayoutProps {
66 companyName : string ;
77 productName : string ;
88 companyLogo ?: CompanyLogo ;
9+ backgroundMode ?: string ;
910}
1011
1112export function ShellLayout ( {
1213 children,
1314 companyName,
1415 productName,
1516 companyLogo,
17+ backgroundMode = "flat" ,
1618} : PropsWithChildren < ShellLayoutProps > ) {
1719 return (
18- < div className = "h-screen p -3 overflow-hidden flex gap-2 bg-sidebar" >
20+ < div className = "h-screen pl -3 overflow-hidden flex gap-2 bg-sidebar" >
1921 < Sidebar
2022 companyName = { companyName }
2123 productName = { productName }
2224 companyLogo = { companyLogo }
2325 />
24- < main className = "flex-1 flex flex-col overflow-hidden bg-background rounded-2xl border border-foreground/15" >
25- < div className = "flex-1 overflow-y-auto custom-scrollbar" >
26+ < main
27+ className = "flex-1 flex flex-col overflow-hidden relative"
28+ style = { {
29+ backgroundColor : backgroundMode === "expressive" ? "#190D33" : undefined ,
30+ } }
31+ >
32+ { /* Expressive Background Elements */ }
33+ { backgroundMode === "expressive" && (
34+ < >
35+ { /* Bg container */ }
36+ < div
37+ className = "absolute overflow-hidden pointer-events-none transition-opacity duration-300"
38+ style = { {
39+ width : '2184.47px' ,
40+ height : '1494.44px' ,
41+ left : '-208px' ,
42+ top : '-252px' ,
43+ opacity : backgroundMode === "expressive" ? 1 : 0 ,
44+ } }
45+ >
46+ { /* Vector 210 */ }
47+ < div
48+ className = "absolute transition-opacity duration-300"
49+ style = { {
50+ width : '807px' ,
51+ height : '789px' ,
52+ left : '650px' ,
53+ top : '257px' ,
54+ background : 'rgba(78, 9, 77, 0.6)' ,
55+ filter : 'blur(90px)' ,
56+ opacity : backgroundMode === "expressive" ? 1 : 0 ,
57+ transitionDelay : '0ms' ,
58+ } }
59+ />
60+
61+ { /* Vector 212 */ }
62+ < div
63+ className = "absolute transition-opacity duration-300"
64+ style = { {
65+ width : '1309px' ,
66+ height : '737px' ,
67+ left : '-70px' ,
68+ top : '-46px' ,
69+ background : '#223045' ,
70+ filter : 'blur(60px)' ,
71+ opacity : backgroundMode === "expressive" ? 1 : 0 ,
72+ transitionDelay : '50ms' ,
73+ } }
74+ />
75+
76+ { /* Vector 211 */ }
77+ < div
78+ className = "absolute transition-opacity duration-300"
79+ style = { {
80+ width : '1260px' ,
81+ height : '800px' ,
82+ left : '-208px' ,
83+ top : '0px' ,
84+ background : 'rgba(244, 66, 35, 0.27)' ,
85+ filter : 'blur(90px)' ,
86+ transform : 'rotate(23.94deg)' ,
87+ opacity : backgroundMode === "expressive" ? 1 : 0 ,
88+ transitionDelay : '100ms' ,
89+ } }
90+ />
91+
92+ { /* Vector 213 */ }
93+ < div
94+ className = "absolute transition-opacity duration-300"
95+ style = { {
96+ width : '1408px' ,
97+ height : '523.77px' ,
98+ left : '484px' ,
99+ top : '-252px' ,
100+ background : 'linear-gradient(257.56deg, rgba(152, 166, 184, 0.5) 36.7%, rgba(68, 74, 82, 0.5) 88.5%)' ,
101+ filter : 'blur(100px)' ,
102+ transform : 'rotate(-13.86deg)' ,
103+ opacity : backgroundMode === "expressive" ? 1 : 0 ,
104+ transitionDelay : '150ms' ,
105+ } }
106+ />
107+ </ div >
108+
109+ { /* CoverLayer */ }
110+ < div
111+ className = "absolute pointer-events-none transition-opacity duration-300"
112+ style = { {
113+ width : '1440px' ,
114+ height : '813px' ,
115+ left : '0px' ,
116+ top : '0px' ,
117+ background : 'rgba(25, 13, 51, 0.79)' ,
118+ mixBlendMode : 'overlay' ,
119+ opacity : backgroundMode === "expressive" ? 1 : 0 ,
120+ transitionDelay : '200ms' ,
121+ } }
122+ />
123+ </ >
124+ ) }
125+
126+ < div className = "flex-1 overflow-y-auto custom-scrollbar relative z-10" >
26127 { children }
27128 </ div >
28129 </ main >
0 commit comments