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