بنقرة واحدة
animation
Design and implement purposeful motion — page transitions, micro-interactions,
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Design and implement purposeful motion — page transitions, micro-interactions,
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Consult and write the ARAYA postoffice — the operational-directive channel. Advisory, never a gate: read it at cycle start, append your entry at cycle end, consider its directives, never be blocked by it. Governance acts never travel the postoffice.
Audit and enforce brand compliance across all projects and platforms — logo,
Design REST and GraphQL APIs following OpenAPI 3.1 standards. Produce complete
Connect frontend to backend — type-safe API clients, request/response handling,
Implement authentication and authorization middleware — JWT validation, role-based
Design scalable component architectures — design systems, component libraries,
| name | animation |
| description | Design and implement purposeful motion — page transitions, micro-interactions, |
Design and implement purposeful motion — page transitions, micro-interactions, loading states, and data visualizations — that guide attention, provide feedback, and delight users without degrading performance.
Static interfaces feel dead. But gratuitous animation frustrates users, drains battery, and triggers motion sensitivity. This skill designs animations that serve a purpose — providing feedback, directing attention, or making state changes understandable — while respecting user preferences and performance.
When adding transitions between pages or UI states. When providing feedback for user actions (button press, form submission, error). When visualizing data changes. When the UI feels static and needs life.
UI states that need animation, performance budget, accessibility requirements.
/* src/styles/animations.css */
/* Design tokens for motion */
:root {
--duration-instant: 100ms;
--duration-fast: 200ms;
--duration-normal: 300ms;
--duration-slow: 500ms;
--ease-default: cubic-bezier(0.4, 0, 0.2, 1);
--ease-in: cubic-bezier(0.4, 0, 1, 1);
--ease-out: cubic-bezier(0, 0, 0.2, 1);
--ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
/* Respect reduced motion preference */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
/* Fade in */
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
/* Slide in from right (for panels/drawers) */
@keyframes slideInRight {
from { transform: translateX(100%); }
to { transform: translateX(0); }
}
/* Slide up (for toasts, modals) */
@keyframes slideUp {
from { transform: translateY(20px); opacity: 0; }
to { transform: translateY(0); opacity: 1; }
}
/* Scale pulse (for notifications, activity indicators) */
@keyframes pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.05); }
}
/* Skeleton loading shimmer */
@keyframes shimmer {
0% { background-position: -200% 0; }
100% { background-position: 200% 0; }
}
.skeleton {
background: linear-gradient(
90deg,
var(--color-surface-alt) 25%,
var(--color-border) 50%,
var(--color-surface-alt) 75%
);
background-size: 200% 100%;
animation: shimmer 1.5s ease-in-out infinite;
}
/* Usage classes */
.animate-fade-in {
animation: fadeIn var(--duration-normal) var(--ease-default);
}
.animate-slide-up {
animation: slideUp var(--duration-normal) var(--ease-out);
}
/* Page transition (React Router / View Transitions API) */
::view-transition-old(root) {
animation: fadeIn var(--duration-fast) var(--ease-in) reverse;
}
::view-transition-new(root) {
animation: fadeIn var(--duration-normal) var(--ease-out);
}
| Purpose | Animation | Duration | Easing | Example |
|---|---|---|---|---|
| Feedback (button click) | Scale 95% → 100% | 100ms | ease-out | Button press feedback |
| Attention (notification) | Slide up + fade | 300ms | ease-out | Toast notification |
| State change (expand/collapse) | Height transition | 200ms | ease-default | Accordion, dropdown |
| Navigation (page change) | Cross-fade | 200ms | ease-default | SPA route change |
| Loading (skeleton) | Shimmer | 1.5s loop | linear | Content placeholder |
| Visualization (data change) | Tween values | 500ms | ease-out | Chart updates |
| Delight (success) | Scale bounce | 400ms | ease-bounce | Checkmark animation |
prefers-reduced-motion overridetransform and opacity — these are GPU-composited and don't trigger layoutprefers-reduced-motion: reduce kills all animations — non-negotiable for accessibilitytransform + opacity — never width, height, top, left (triggers layout)will-change sparingly and remove after animation — overuse causes memory bloat