feat: add animated transitions and micro-interactions

Add entrance animations to overlays, modals, chat messages, sidebar
session items, and approval banners:
- overlay-slide-enter: settings and project settings panels
- overlay-backdrop-enter + overlay-panel-enter: modals
- message-enter: chat message fade-up on mount
- session-item-enter: sidebar item slide-in
- banner-slide-enter: approval banner slide-down

All animations use cubic-bezier(0.16, 1, 0.3, 1) for a snappy feel
and stay under 250ms. Respects prefers-reduced-motion.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Kaya
2026-03-29 17:57:05 +02:00
co-authored by Copilot
parent ea58f7d66a
commit 05dded9b37
7 changed files with 95 additions and 9 deletions
+86
View File
@@ -542,6 +542,92 @@ body {
animation: palette-backdrop-enter 0.15s ease-out;
}
/* ── Overlay transitions ─────────────────────────────────────── */
@keyframes overlay-backdrop-in {
from { opacity: 0; }
}
@keyframes overlay-panel-in {
from {
opacity: 0;
transform: translateY(6px) scale(0.99);
}
}
@keyframes overlay-slide-in {
from {
opacity: 0;
transform: translateX(12px);
}
}
.overlay-backdrop-enter {
animation: overlay-backdrop-in 0.18s ease-out;
}
.overlay-panel-enter {
animation: overlay-panel-in 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}
.overlay-slide-enter {
animation: overlay-slide-in 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}
/* ── Chat message appearance ─────────────────────────────────── */
@keyframes message-in {
from {
opacity: 0;
transform: translateY(4px);
}
}
.message-enter {
animation: message-in 0.2s cubic-bezier(0.16, 1, 0.3, 1) both;
}
/* ── Sidebar session item ────────────────────────────────────── */
@keyframes session-item-in {
from {
opacity: 0;
transform: translateX(-6px);
}
}
.session-item-enter {
animation: session-item-in 0.18s cubic-bezier(0.16, 1, 0.3, 1) both;
}
/* ── Approval banner slide ───────────────────────────────────── */
@keyframes banner-slide-in {
from {
opacity: 0;
transform: translateY(-100%);
}
}
.banner-slide-enter {
animation: banner-slide-in 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}
/* ── Respect reduced motion ──────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
.palette-enter,
.palette-backdrop-enter,
.overlay-backdrop-enter,
.overlay-panel-enter,
.overlay-slide-enter,
.message-enter,
.session-item-enter,
.banner-slide-enter {
animation: none;
}
}
/* ── Markdown prose styles ───────────────────────────────────── */
.markdown-content {