Skip to content

Commit bb3e88f

Browse files
authored
Layout updates (#34)
* chore: layout updates * Logo upgrade * Logo improvements * Logo iteration
1 parent b017274 commit bb3e88f

File tree

3 files changed

+500
-24
lines changed

3 files changed

+500
-24
lines changed

eslint.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
import { defineConfig } from 'eslint/config';
12
import js from '@eslint/js';
23
import tseslint from 'typescript-eslint';
34
import astroPlugin from 'eslint-plugin-astro';
45

5-
export default tseslint.config(
6+
export default defineConfig(
67
js.configs.recommended,
78
...tseslint.configs.strict,
89
...astroPlugin.configs.recommended,
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
---
2+
interface Props {
3+
size?: number;
4+
}
5+
6+
const { size = 96 } = Astro.props;
7+
---
8+
9+
<svg
10+
xmlns="http://www.w3.org/2000/svg"
11+
viewBox="0 0 512 512"
12+
width={size}
13+
height={size}
14+
aria-hidden="true"
15+
class="furystack-logo"
16+
>
17+
<title>FuryStack</title>
18+
<defs>
19+
<linearGradient id="fs-silver" x1="0%" y1="0%" x2="100%" y2="100%">
20+
<stop offset="0%" stop-color="#FFFFFF"></stop>
21+
<stop offset="100%" stop-color="#94A3B8"></stop>
22+
</linearGradient>
23+
24+
<linearGradient id="fs-blue" x1="0%" y1="0%" x2="100%" y2="100%">
25+
<stop offset="0%" stop-color="#60A5FA"></stop>
26+
<stop offset="100%" stop-color="#1D4ED8"></stop>
27+
</linearGradient>
28+
29+
<linearGradient id="fs-dark" x1="0%" y1="0%" x2="100%" y2="100%">
30+
<stop offset="0%" stop-color="#475569"></stop>
31+
<stop offset="100%" stop-color="#0F172A"></stop>
32+
</linearGradient>
33+
34+
<filter id="fs-glow" x="-20%" y="-20%" width="140%" height="140%">
35+
<feGaussianBlur in="SourceAlpha" stdDeviation="8" result="blur"></feGaussianBlur>
36+
<feOffset dx="0" dy="4" result="offsetBlur"></feOffset>
37+
<feFlood flood-color="#3B82F6" flood-opacity="0.2" result="glowColor"></feFlood>
38+
<feComposite in="glowColor" in2="offsetBlur" operator="in" result="shadow"></feComposite>
39+
<feMerge>
40+
<feMergeNode in="shadow"></feMergeNode>
41+
<feMergeNode in="SourceGraphic"></feMergeNode>
42+
</feMerge>
43+
</filter>
44+
</defs>
45+
46+
<g filter="url(#fs-glow)">
47+
<!-- Left Pillar (Base) -->
48+
<path d="M40 80 L120 160 V440 A8 8 0 0 1 112 448 H48 A8 8 0 0 1 40 440 Z" fill="url(#fs-silver)"
49+
></path>
50+
51+
<!-- Connection Bridge -->
52+
<path d="M140 180 L220 260 L140 340 Z" fill="url(#fs-blue)"></path>
53+
54+
<!-- Stack Step 1 -->
55+
<path
56+
d="M230 320 L310 240 V440 A8 8 0 0 1 302 448 H238 A8 8 0 0 1 230 440 Z"
57+
fill="url(#fs-blue)"></path>
58+
59+
<!-- Stack Step 2 -->
60+
<path
61+
d="M330 220 L410 140 V440 A8 8 0 0 1 402 448 H338 A8 8 0 0 1 330 440 Z"
62+
fill="url(#fs-blue)"></path>
63+
64+
<!-- Stack Step 3 (Anchor) -->
65+
<path
66+
d="M430 120 L510 40 V440 A8 8 0 0 1 502 448 H438 A8 8 0 0 1 430 440 Z"
67+
fill="url(#fs-dark)"></path>
68+
69+
<!-- Top Accent (Floating Element) -->
70+
<path d="M180 120 H340 L260 200 Z" fill="url(#fs-silver)" opacity="0.9"></path>
71+
72+
<!-- Lower Detail (Alignment Piece) -->
73+
<path d="M140 448 H210 L140 378 Z" fill="url(#fs-silver)"></path>
74+
</g>
75+
</svg>
76+
<style>
77+
/* Base transitions for hover effects if needed later */
78+
.furystack-logo {
79+
overflow: visible; /* Allow glow to spill out */
80+
}
81+
82+
/* Animations */
83+
@media (prefers-reduced-motion: no-preference) {
84+
.fs-shape {
85+
transform-box: fill-box;
86+
transform-origin: bottom center;
87+
opacity: 0;
88+
animation-duration: 0.8s;
89+
animation-timing-function: cubic-bezier(0.2, 0.8, 0.2, 1);
90+
animation-fill-mode: forwards;
91+
}
92+
93+
.fs-slide-right {
94+
animation-name: fs-slide-right;
95+
transform-origin: center center;
96+
}
97+
98+
.fs-fade-down {
99+
animation-name: fs-fade-down;
100+
transform-origin: top center;
101+
}
102+
103+
.fs-grow-up {
104+
animation-name: fs-grow-up;
105+
}
106+
107+
.fs-delay-1 {
108+
animation-delay: 0.1s;
109+
}
110+
.fs-delay-2 {
111+
animation-delay: 0.2s;
112+
}
113+
.fs-delay-3 {
114+
animation-delay: 0.3s;
115+
}
116+
.fs-delay-4 {
117+
animation-delay: 0.4s;
118+
}
119+
120+
@keyframes fs-slide-right {
121+
from {
122+
opacity: 0;
123+
transform: translateX(-20px);
124+
}
125+
to {
126+
opacity: 1;
127+
transform: translateX(0);
128+
}
129+
}
130+
131+
@keyframes fs-fade-down {
132+
from {
133+
opacity: 0;
134+
transform: translateY(-20px);
135+
}
136+
to {
137+
opacity: 1;
138+
transform: translateY(0);
139+
}
140+
}
141+
142+
@keyframes fs-grow-up {
143+
from {
144+
opacity: 0;
145+
transform: scaleY(0.4);
146+
}
147+
to {
148+
opacity: 1;
149+
transform: scaleY(1);
150+
}
151+
}
152+
}
153+
</style>

0 commit comments

Comments
 (0)