UNPKG

reactbits-mcp-server

Version:

MCP Server for React Bits - Access 99+ React components with animations, backgrounds, and UI elements

79 lines (73 loc) 2.27 kB
.glitch { color: #fff; font-size: clamp(2rem, 10vw, 8rem); white-space: nowrap; font-weight: 900; position: relative; margin: 0 auto; user-select: none; cursor: pointer; } .glitch::after, .glitch::before { content: attr(data-text); position: absolute; top: 0; color: #fff; background-color: #060010; overflow: hidden; clip-path: inset(0 0 0 0); } .glitch:not(.enable-on-hover)::after { left: 10px; text-shadow: var(--after-shadow, -10px 0 red); animation: animate-glitch var(--after-duration, 3s) infinite linear alternate-reverse; } .glitch:not(.enable-on-hover)::before { left: -10px; text-shadow: var(--before-shadow, 10px 0 cyan); animation: animate-glitch var(--before-duration, 2s) infinite linear alternate-reverse; } .glitch.enable-on-hover::after, .glitch.enable-on-hover::before { content: ''; opacity: 0; animation: none; } .glitch.enable-on-hover:hover::after { content: attr(data-text); opacity: 1; left: 10px; text-shadow: var(--after-shadow, -10px 0 red); animation: animate-glitch var(--after-duration, 3s) infinite linear alternate-reverse; } .glitch.enable-on-hover:hover::before { content: attr(data-text); opacity: 1; left: -10px; text-shadow: var(--before-shadow, 10px 0 cyan); animation: animate-glitch var(--before-duration, 2s) infinite linear alternate-reverse; } @keyframes animate-glitch { 0% { clip-path: inset(20% 0 50% 0); } 5% { clip-path: inset(10% 0 60% 0); } 10% { clip-path: inset(15% 0 55% 0); } 15% { clip-path: inset(25% 0 35% 0); } 20% { clip-path: inset(30% 0 40% 0); } 25% { clip-path: inset(40% 0 20% 0); } 30% { clip-path: inset(10% 0 60% 0); } 35% { clip-path: inset(15% 0 55% 0); } 40% { clip-path: inset(25% 0 35% 0); } 45% { clip-path: inset(30% 0 40% 0); } 50% { clip-path: inset(20% 0 50% 0); } 55% { clip-path: inset(10% 0 60% 0); } 60% { clip-path: inset(15% 0 55% 0); } 65% { clip-path: inset(25% 0 35% 0); } 70% { clip-path: inset(30% 0 40% 0); } 75% { clip-path: inset(40% 0 20% 0); } 80% { clip-path: inset(20% 0 50% 0); } 85% { clip-path: inset(10% 0 60% 0); } 90% { clip-path: inset(15% 0 55% 0); } 95% { clip-path: inset(25% 0 35% 0); } 100% { clip-path: inset(30% 0 40% 0); } }