Skip to content

Commit 19d234b

Browse files
committed
3d homepage
1 parent a12af73 commit 19d234b

File tree

3 files changed

+83
-35
lines changed

3 files changed

+83
-35
lines changed

.cspell/project-words.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ LogStruct
1919
metaprogramming
2020
nilable
2121
optparse
22+
pentester
23+
pentesters
2224
procs
2325
progname
2426
railtie

site/components/dashboard-examples.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const chartColors = {
2121
line: '#3373fa', // 10% brighter than original
2222
},
2323
lightBlue: {
24-
area: '#2d496b', // keeping this one as is (perfect)
24+
area: '#2d496b',
2525
line: '#60a8fa',
2626
},
2727
mediumBlue: {

site/components/log-scroller.tsx

Lines changed: 80 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,22 @@ export function LogScroller() {
8585

8686
return (
8787
<div
88-
className="w-full h-[375px] bg-black rounded-lg overflow-hidden"
88+
className="w-full h-[375px] bg-black rounded-lg overflow-hidden shadow-lg transition-all duration-300 ease-in-out"
89+
style={{
90+
transform: "perspective(1500px) rotateX(4deg) rotateY(-8deg) rotateZ(1deg)",
91+
boxShadow: '0 10px 30px rgba(0, 0, 0, 0.2), 0 1px 3px rgba(0, 0, 0, 0.3), -5px 5px 15px rgba(0, 0, 0, 0.15)',
92+
transformOrigin: 'center center',
93+
marginLeft: '-40px', // Shift more to the left
94+
marginRight: '80px', // Increase right margin to compensate
95+
}}
96+
onMouseOver={(e) => {
97+
e.currentTarget.style.transform = "perspective(1500px) rotateX(3deg) rotateY(-6deg) rotateZ(0.5deg) scale(1.01)";
98+
e.currentTarget.style.boxShadow = '0 15px 35px rgba(0, 0, 0, 0.25), 0 3px 5px rgba(0, 0, 0, 0.35), -8px 8px 20px rgba(0, 0, 0, 0.15)';
99+
}}
100+
onMouseOut={(e) => {
101+
e.currentTarget.style.transform = "perspective(1500px) rotateX(4deg) rotateY(-8deg) rotateZ(1deg) scale(1)";
102+
e.currentTarget.style.boxShadow = '0 10px 30px rgba(0, 0, 0, 0.2), 0 1px 3px rgba(0, 0, 0, 0.3), -5px 5px 15px rgba(0, 0, 0, 0.15)';
103+
}}
89104
onMouseEnter={() => setIsPaused(true)}
90105
onMouseLeave={() => {
91106
setIsPaused(false);
@@ -97,46 +112,77 @@ export function LogScroller() {
97112
}, 100);
98113
}}
99114
>
100-
<div className="relative flex items-center bg-[#393937] px-6 py-2 w-full">
115+
<div
116+
className="relative flex items-center bg-[#393937] px-6 py-2 w-full"
117+
style={{
118+
borderBottom: '1px solid rgba(0, 0, 0, 0.3)',
119+
boxShadow: '0 1px 0 rgba(255, 255, 255, 0.1)',
120+
}}
121+
>
101122
<div className="absolute left-3 flex space-x-2">
102-
<div className="w-3 h-3 rounded-full bg-red-500"></div>
103-
<div className="w-3 h-3 rounded-full bg-yellow-500"></div>
104-
<div className="w-3 h-3 rounded-full bg-green-500"></div>
123+
<div className="w-3 h-3 rounded-full bg-red-500" style={{ boxShadow: '0 1px 1px rgba(0, 0, 0, 0.2)' }}></div>
124+
<div className="w-3 h-3 rounded-full bg-yellow-500" style={{ boxShadow: '0 1px 1px rgba(0, 0, 0, 0.2)' }}></div>
125+
<div className="w-3 h-3 rounded-full bg-green-500" style={{ boxShadow: '0 1px 1px rgba(0, 0, 0, 0.2)' }}></div>
105126
</div>
106-
<div className="w-full text-center text-[#b5b5b3] font-extrabold text-xs font-sans">
127+
<div
128+
className="w-full text-center text-[#b5b5b3] font-extrabold text-xs font-sans"
129+
style={{
130+
textShadow: '0 1px 0 rgba(0, 0, 0, 0.3)',
131+
letterSpacing: '0.5px'
132+
}}
133+
>
107134
Rails Server Logs
108135
</div>
109136
</div>
110137

111-
<div
112-
ref={scrollerRef}
113-
className="h-[333px] flex flex-col overflow-auto px-6 py-2 bg-[#111421] relative"
114-
>
115-
<div className="flex-grow w-full">
116-
{logs.length > 0 ? (
117-
<SyntaxHighlighter
118-
language="json"
119-
style={atomDark}
120-
lineProps={{
121-
style: { wordBreak: 'normal', whiteSpace: 'pre-wrap' },
122-
}}
123-
wrapLines
124-
wrapLongLines
125-
customStyle={{
126-
fontSize: '11px',
127-
backgroundColor: '#111421',
128-
padding: '12px',
129-
borderRadius: '0px',
130-
minHeight: '300px',
131-
}}
132-
>
133-
{logs.join('\n\n')}
134-
</SyntaxHighlighter>
135-
) : (
136-
<div className="w-full h-[300px]"></div>
137-
)}
138+
{/* Container with relative positioning for the scrollable content and overlay */}
139+
<div className="relative h-[333px]">
140+
{/* Scrollable content */}
141+
<div
142+
ref={scrollerRef}
143+
className="h-full flex flex-col overflow-auto px-6 py-2 bg-[#111421]"
144+
style={{
145+
backgroundImage: 'linear-gradient(to bottom, rgba(20, 22, 36, 0.8) 0%, rgba(17, 20, 33, 1) 20%)',
146+
boxShadow: 'inset 0 1px 3px rgba(0, 0, 0, 0.3)',
147+
}}
148+
>
149+
<div className="flex-grow w-full">
150+
{logs.length > 0 ? (
151+
<SyntaxHighlighter
152+
language="json"
153+
style={atomDark}
154+
lineProps={{
155+
style: { wordBreak: 'normal', whiteSpace: 'pre-wrap' },
156+
}}
157+
wrapLines
158+
wrapLongLines
159+
customStyle={{
160+
fontSize: '11px',
161+
backgroundColor: 'transparent',
162+
padding: '12px',
163+
borderRadius: '0px',
164+
minHeight: '300px',
165+
textShadow: '0 1px 0 rgba(0, 0, 0, 0.7)',
166+
letterSpacing: '0.2px',
167+
}}
168+
>
169+
{logs.join('\n\n')}
170+
</SyntaxHighlighter>
171+
) : (
172+
<div className="w-full h-[300px]"></div>
173+
)}
174+
</div>
138175
</div>
176+
177+
{/* Reflection overlay - placed outside the scrollable div but inside the relative container */}
178+
<div
179+
className="absolute inset-0 pointer-events-none"
180+
style={{
181+
background: 'linear-gradient(110deg, rgba(255,255,255,0.05) 0%, rgba(255,255,255,0) 45%, rgba(255,255,255,0) 85%, rgba(255,255,255,0.02) 100%)',
182+
zIndex: 10,
183+
}}
184+
></div>
139185
</div>
140186
</div>
141187
);
142-
}
188+
}

0 commit comments

Comments
 (0)