feat: replace animated backgrounds with Aceternity UI system

- Add 16 animated background components (aurora, sparkles, vortex, shooting-stars,
  beams, beams-collision, gradient-animation, wavy, lines, boxes, meteors, grid,
  dots, spotlight, noise, ripple, gemini-effect)
- Add full admin BackgroundEditor with live preview, type gallery, per-type settings
- Add BackgroundRenderer with lazy loading, localStorage cache, mobile reduction
- Add input sanitization (sanitizeColor, clampNumber) across all components
- Add translations for en, ru, zh, fa locales
- Remove old Aurora (WebGL/OGL) and AnimatedBackground (CSS wave-blob)
- Remove ogl dependency, add simplex-noise
This commit is contained in:
Fringg
2026-02-25 07:12:59 +03:00
parent 78e70992f1
commit 1a702a68b9
35 changed files with 2919 additions and 653 deletions

View File

@@ -164,6 +164,15 @@ export default {
float: 'float 3s ease-in-out infinite',
'glow-pulse': 'glowPulse 2s ease-in-out infinite',
spotlight: 'spotlight 2s ease-in-out infinite',
// Aceternity UI background animations
aurora: 'aurora 60s linear infinite',
'meteor-effect': 'meteor 5s linear infinite',
'move-vertical': 'moveVertical 30s ease infinite',
'move-in-circle': 'moveInCircle 20s reverse infinite',
'move-in-circle-slow': 'moveInCircle 40s linear infinite',
'move-horizontal': 'moveHorizontal 40s ease infinite',
'move-in-circle-fast': 'moveInCircle 20s ease infinite',
'spotlight-ace': 'spotlightAce 2s ease 0.75s 1 forwards',
},
keyframes: {
fadeIn: {
@@ -213,6 +222,35 @@ export default {
'0 0 0 8px rgba(var(--color-accent-500), 0.2), 0 0 40px rgba(var(--color-accent-500), 0.5)',
},
},
// Aceternity UI keyframes
aurora: {
from: { backgroundPosition: '50% 50%, 50% 50%' },
to: { backgroundPosition: '350% 50%, 350% 50%' },
},
meteor: {
'0%': { transform: 'rotate(215deg) translateX(0)', opacity: '1' },
'70%': { opacity: '1' },
'100%': { transform: 'rotate(215deg) translateX(-500px)', opacity: '0' },
},
moveVertical: {
'0%': { transform: 'translateY(-50%)' },
'50%': { transform: 'translateY(50%)' },
'100%': { transform: 'translateY(-50%)' },
},
moveInCircle: {
'0%': { transform: 'rotate(0deg)' },
'50%': { transform: 'rotate(180deg)' },
'100%': { transform: 'rotate(360deg)' },
},
moveHorizontal: {
'0%': { transform: 'translateX(-50%) translateY(-10%)' },
'50%': { transform: 'translateX(50%) translateY(10%)' },
'100%': { transform: 'translateX(-50%) translateY(-10%)' },
},
spotlightAce: {
'0%': { opacity: '0', transform: 'translate(-72%, -62%) scale(0.5)' },
'100%': { opacity: '1', transform: 'translate(-50%, -40%) scale(1)' },
},
},
transitionTimingFunction: {
smooth: 'cubic-bezier(0.4, 0, 0.2, 1)',