-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCoffeeStain.jsx
More file actions
64 lines (62 loc) · 1.4 KB
/
CoffeeStain.jsx
File metadata and controls
64 lines (62 loc) · 1.4 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
import React from 'react';
const CoffeeStain = () => (
<div className="absolute top-16 right-4 md:right-16 z-0 pointer-events-none opacity-[0.15] rotate-[15deg] mix-blend-multiply">
<svg
width="200"
height="200"
viewBox="0 0 200 200"
style={{ overflow: 'visible' }}
>
<defs>
<filter id="coffee-filter">
<feTurbulence
type="fractalNoise"
baseFrequency="0.05"
numOctaves="3"
result="noise"
/>
<feDisplacementMap in="SourceGraphic" in2="noise" scale="10" />
</filter>
</defs>
{/* Main Ring */}
<circle
cx="100"
cy="100"
r="70"
fill="none"
stroke="#3E2723"
strokeWidth="8"
filter="url(#coffee-filter)"
opacity="0.8"
/>
{/* Inner dark rim */}
<circle
cx="100"
cy="100"
r="68"
fill="none"
stroke="#281915"
strokeWidth="1"
filter="url(#coffee-filter)"
/>
{/* Splatter dots */}
<circle
cx="180"
cy="110"
r="3"
fill="#3E2723"
filter="url(#coffee-filter)"
opacity="0.6"
/>
<circle
cx="20"
cy="140"
r="4"
fill="#3E2723"
filter="url(#coffee-filter)"
opacity="0.5"
/>
</svg>
</div>
);
export default CoffeeStain;