UNPKG

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
: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; } }