@casoon/dragonfly
Version:
Modular, lightweight CSS framework and design system for modern web projects. Optimized for Astro JS, LightningCSS and Container Queries with @layer-based architecture and comprehensive accessibility.
149 lines (119 loc) • 3.25 kB
CSS
/**
* Error Effects
*
* This file contains various error effects for modern UIs.
* The effects are optimized for performance and consider reduced motion.
*/
@keyframes error-shake {
10%, 90% {
transform: translate3d(calc(-1 * var(--border-width)), 0%, 0);
}
20%, 80% {
transform: translate3d(var(--border-width-thick), 0%, 0);
}
30%, 50%, 70% {
transform: translate3d(calc(-1 * var(--spacing-1)), 0, 0);
}
40%, 60% {
transform: translate3d(var(--spacing-1), 0, 0);
}
}
@keyframes error-shake-sm {
10%, 90% {
transform: translate3d(-0.5 var(--spacing-1), 0, 0);
}
20%, 80% {
transform: translate3d(var(--border-width), 0%, 0);
}
30%, 50%, 70% {
transform: translate3d(calc(-1 * var(--border-width-thick)), 0%, 0);
}
40%, 60% {
transform: translate3d(var(--border-width-thick), 0%, 0);
}
}
@keyframes error-shake-lg {
10%, 90% {
transform: translate3d(calc(-1 * var(--border-width-thick)), 0%, 0);
}
20%, 80% {
transform: translate3d(var(--spacing-1), 0, 0);
}
30%, 50%, 70% {
transform: translate3d(calc(-1 * var(--spacing-2)), 0, 0);
}
40%, 60% {
transform: translate3d(var(--spacing-2), 0, 0);
}
}
@keyframes error-pulse {
0%, 100% {
opacity: var(--opacity-100);
}
50% {
opacity: var(--opacity-70);
}
}
@layer components {
.error-shake {
animation: error-shake 0.5s var(--easing-bounce) both;
}
.error-shake-sm {
animation: error-shake-sm 0.5s var(--easing-bounce) both;
}
.error-shake-lg {
animation: error-shake-lg 0.5s var(--easing-bounce) both;
}
.error-border {
animation: error-pulse 2s infinite;
border: var(--border-width-thick) solid var(--error-color, #ef4444);
}
.error-border-sm {
border-width: var(--border-width);
}
.error-border-lg {
border-width: var(--spacing-1);
}
.error-bg {
animation: error-pulse 2s infinite;
background-color: var(--error-bg, rgb(239 68 68 / 10%));
}
.error-bg-sm {
background-color: var(--error-bg-sm, rgb(239 68 68 / 5%));
}
.error-bg-lg {
background-color: var(--error-bg-lg, rgb(239 68 68 / 20%));
}
.error-text {
color: var(--error-text, #ef4444);
}
.error-text-sm {
color: var(--error-text-sm, #f87171);
}
.error-text-lg {
color: var(--error-text-lg, #dc2626);
}
.error-glow {
animation: error-pulse 2s infinite;
box-shadow: 0 0 var(--spacing-2-5) var(--error-glow, rgb(239 68 68 / 50%));
}
.error-glow-sm {
box-shadow: 0 0 var(--spacing-1) var(--error-glow-sm, rgb(239 68 68 / 30%));
}
.error-glow-lg {
box-shadow: 0 0 var(--spacing-1)(--spacing-1) var(--error-glow-lg, rgb(239 68 68 / 70%));
}
}
/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
@layer components {
.error-shake,
.error-shake-sm,
.error-shake-lg,
.error-border,
.error-bg,
.error-glow {
animation: var(--animation-none);
}
}
}