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:
parent
e87336ecc7
commit
8164051e85
2 changed files with 390 additions and 11 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
/* =================================================================
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue