UNPKG

leumas-private-shared

Version:

Private React JSX Package For Leumas Shared Components, Headers, Footers, Asides, Login Pages, API Key Manager and much more. Styles and everything reusable to avoid DRY code across all of our subdomains

84 lines (73 loc) 2.06 kB
import React, { useEffect } from 'react'; import { styled, keyframes } from '@mui/system'; const binaryScroll = keyframes` 0% { transform: translateY(100%); } 100% { transform: translateY(-100%); } `; const flicker = keyframes` 0%, 19%, 21%, 23%, 25%, 54%, 56%, 100% { opacity: 0.99; } 20%, 24%, 55% { opacity: 0.4; } 22% { opacity: 0.4; } `; const changeNumber = keyframes` 0% { content: "0"; } 25% { content: "1"; } 50% { content: "0"; } 75% { content: "1"; } 100% { content: "0"; } `; const BinaryWrapper = styled('div')` position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; background: black; overflow: hidden; color: lime; display: flex; justify-content: space-around; `; const BinaryText = styled('div')` position: absolute; bottom: 0; font-family: 'Consolas', monospace; font-size: 16px; animation: ${binaryScroll} linear infinite, ${flicker} 3s infinite; white-space: nowrap; filter: drop-shadow(0 0 5px lime); display: flex; & span { animation: ${changeNumber} 1s steps(1) infinite; } &:before { content: attr(data-content); } `; const BinaryBackground = ({ children }) => { useEffect(() => { const binaryWrapper = document.getElementById('binaryWrapper'); for (let i = 0; i < 30; i++) { const text = document.createElement('div'); text.className = BinaryText.styledComponentId; const binaryString = Array.from({ length: 30 }, () => `<span>${Math.floor(Math.random() * 2)}</span>`).join(''); text.innerHTML = binaryString.repeat(100); text.style.animationDuration = `${Math.random() * 10 + 5}s`; // Random duration between 5 to 15 seconds text.style.left = `${Math.random() * 100}%`; // Random horizontal position binaryWrapper.appendChild(text); } }, []); return ( <BinaryWrapper id="binaryWrapper"> {children} </BinaryWrapper> ); }; export default BinaryBackground;