reactbits-mcp-server
Version:
MCP Server for React Bits - Access 99+ React components with animations, backgrounds, and UI elements
202 lines (172 loc) • 3.9 kB
CSS
:root {
--linear-ease: linear(0, 0.068, 0.19 2.7%, 0.804 8.1%, 1.037, 1.199 13.2%, 1.245, 1.27 15.8%, 1.274, 1.272 17.4%, 1.249 19.1%, 0.996 28%, 0.949, 0.928 33.3%, 0.926, 0.933 36.8%, 1.001 45.6%, 1.013, 1.019 50.8%, 1.018 54.4%, 1 63.1%, 0.995 68%, 1.001 85%, 1);
}
.gooey-nav-container {
position: relative;
}
.gooey-nav-container nav {
display: flex;
position: relative;
transform: translate3d(0, 0, 0.01px);
}
.gooey-nav-container nav ul {
display: flex;
gap: 2em;
list-style: none;
padding: 0 1em;
margin: 0;
position: relative;
z-index: 3;
color: white;
text-shadow: 0 1px 1px hsl(205deg 30% 10% / 0.2);
}
.gooey-nav-container nav ul li {
border-radius: 100vw;
position: relative;
cursor: pointer;
transition: background-color 0.3s ease, color 0.3s ease, box-shadow 0.3s ease;
box-shadow: 0 0 0.5px 1.5px transparent;
color: white;
}
.gooey-nav-container nav ul li a {
display: inline-block;
padding: 0.6em 1em;
}
.gooey-nav-container nav ul li:focus-within:has(:focus-visible) {
box-shadow: 0 0 0.5px 1.5px white;
}
.gooey-nav-container nav ul li::after {
content: "";
position: absolute;
inset: 0;
border-radius: 10px;
background: white;
opacity: 0;
transform: scale(0);
transition: all 0.3s ease;
z-index: -1;
}
.gooey-nav-container nav ul li.active {
color: black;
text-shadow: none;
}
.gooey-nav-container nav ul li.active::after {
opacity: 1;
transform: scale(1);
}
.gooey-nav-container .effect {
position: absolute;
left: 0;
top: 0;
width: 0;
height: 0;
opacity: 1;
pointer-events: none;
display: grid;
place-items: center;
z-index: 1;
}
.gooey-nav-container .effect.text {
color: white;
transition: color 0.3s ease;
}
.gooey-nav-container .effect.text.active {
color: black;
}
.gooey-nav-container .effect.filter {
filter: blur(7px) contrast(100) blur(0);
mix-blend-mode: lighten;
}
.gooey-nav-container .effect.filter::before {
content: "";
position: absolute;
inset: -75px;
z-index: -2;
background: black;
}
.gooey-nav-container .effect.filter::after {
content: "";
position: absolute;
inset: 0;
background: white;
transform: scale(0);
opacity: 0;
z-index: -1;
border-radius: 100vw;
}
.gooey-nav-container .effect.active::after {
animation: pill 0.3s ease both;
}
@keyframes pill {
to {
transform: scale(1);
opacity: 1;
}
}
.particle,
.point {
display: block;
opacity: 0;
width: 20px;
height: 20px;
border-radius: 100%;
transform-origin: center;
}
.particle {
--time: 5s;
position: absolute;
top: calc(50% - 8px);
left: calc(50% - 8px);
animation: particle calc(var(--time)) ease 1 -350ms;
}
.point {
background: var(--color);
opacity: 1;
animation: point calc(var(--time)) ease 1 -350ms;
}
@keyframes particle {
0% {
transform: rotate(0deg) translate(calc(var(--start-x)), calc(var(--start-y)));
opacity: 1;
animation-timing-function: cubic-bezier(0.55, 0, 1, 0.45);
}
70% {
transform: rotate(calc(var(--rotate) * 0.5)) translate(calc(var(--end-x) * 1.2), calc(var(--end-y) * 1.2));
opacity: 1;
animation-timing-function: ease;
}
85% {
transform: rotate(calc(var(--rotate) * 0.66)) translate(calc(var(--end-x)), calc(var(--end-y)));
opacity: 1;
}
100% {
transform: rotate(calc(var(--rotate) * 1.2)) translate(calc(var(--end-x) * 0.5), calc(var(--end-y) * 0.5));
opacity: 1;
}
}
@keyframes point {
0% {
transform: scale(0);
opacity: 0;
animation-timing-function: cubic-bezier(0.55, 0, 1, 0.45);
}
25% {
transform: scale(calc(var(--scale) * 0.25));
}
38% {
opacity: 1;
}
65% {
transform: scale(var(--scale));
opacity: 1;
animation-timing-function: ease;
}
85% {
transform: scale(var(--scale));
opacity: 1;
}
100% {
transform: scale(0);
opacity: 0;
}
}