Complete Phase 4: Interactive Enhancements - Implemented transitions system, animations, loading states, loading indicators, hover states, form validation, notification variants, micro-interactions, accessibility improvements

This commit is contained in:
VinnyNC 2025-09-29 19:47:45 -04:00
parent e87336ecc7
commit 8164051e85
2 changed files with 390 additions and 11 deletions

View file

@ -15,6 +15,61 @@
}
}
@keyframes slideOut {
to {
opacity: 0;
transform: translateX(100%);
}
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fadeOut {
to {
opacity: 0;
}
}
@keyframes slideInFromBottom {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes slideInFromTop {
from {
opacity: 0;
transform: translateY(-20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes scaleIn {
from {
opacity: 0;
transform: scale(0.95);
}
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes pulse {
0%, 100% {
opacity: 1;
@ -42,11 +97,154 @@
}
}
@keyframes slideOut {
to {
opacity: 0;
transform: translateX(100%);
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@keyframes shimmer {
0% {
background-position: -468px 0;
}
100% {
background-position: 468px 0;
}
}
/* =================================================================
TRANSITIONS UTILITY SYSTEM - Consistent transitions
================================================================= */
/* Transition duration constants */
.transition-none {
transition: none;
}
.transition-fast {
transition-duration: var(--transition-fast);
}
.transition-base {
transition-duration: var(--transition-base);
}
.transition-slow {
transition-duration: var(--transition-slow);
}
/* Transition properties - individual */
.transition-all {
transition-property: all;
transition-duration: var(--transition-base);
transition-timing-function: var(--ease-in-out);
}
.transition-colors {
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
transition-duration: var(--transition-base);
transition-timing-function: var(--ease-in-out);
}
.transition-transform {
transition-property: transform;
transition-duration: var(--transition-base);
transition-timing-function: var(--ease-in-out);
}
.transition-opacity {
transition-property: opacity;
transition-duration: var(--transition-base);
transition-timing-function: var(--ease-in-out);
}
.transition-shadow {
transition-property: box-shadow;
transition-duration: var(--transition-base);
transition-timing-function: var(--ease-in-out);
}
.transition-hover {
transition: all var(--transition-base) var(--ease-in-out);
}
/* Micro-interaction feedback */
.hover-lift {
transition: transform var(--transition-fast) var(--ease-out);
}
.hover-lift:hover {
transform: translateY(-2px);
}
.interaction-press {
transition: transform var(--transition-fast) var(--ease-out);
}
.interaction-press:active {
transform: translateY(0) scale(0.98);
}
/* =================================================================
ANIMATION UTILITY CLASSES - Enter/exit animations
================================================================= */
/* Slide animations */
.animate-slide-in {
animation: slideIn var(--transition-slow) var(--ease-in-out);
}
.animate-slide-out {
animation: slideOut var(--transition-fast) var(--ease-in-out);
}
.animate-fade-in {
animation: fadeIn var(--transition-base) var(--ease-in-out);
}
.animate-fade-out {
animation: fadeOut var(--transition-fast) var(--ease-in-out);
}
.animate-slide-in-bottom {
animation: slideInFromBottom var(--transition-base) var(--ease-out);
}
.animate-slide-in-top {
animation: slideInFromTop var(--transition-base) var(--ease-out);
}
.animate-scale-in {
animation: scaleIn var(--transition-base) var(--ease-out);
}
/* Continuous animations */
.animate-pulse {
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
.animate-bounce {
animation: bounce 1s infinite;
}
.animate-spin {
animation: spin 1s linear infinite;
}
/* Delayed animations for staggered effects */
.animate-delay-1 {
animation-delay: 0.1s;
}
.animate-delay-2 {
animation-delay: 0.2s;
}
.animate-delay-3 {
animation-delay: 0.3s;
}
/* =================================================================