Polish subscription and server picker animations
Build and Deploy Gateway / build-and-push (push) Successful in 28s
Build and Deploy Gateway / deploy (push) Successful in 7s

This commit is contained in:
2026-08-11 07:55:41 +03:00
parent 9a8191dc91
commit 9ad0307333
8 changed files with 247 additions and 48 deletions
+48
View File
@@ -638,6 +638,54 @@
animation: none;
}
.client-profile-body.is-open .client-server-row {
animation: client-profile-server-in 420ms calc(var(--server-index) * 70ms) cubic-bezier(0.16, 1, 0.3, 1) both;
}
.client-profile-body.is-open .client-server-toolbar {
animation: client-profile-ping-in 300ms 620ms cubic-bezier(0.16, 1, 0.3, 1) both;
}
.client-profile-body.is-closing .client-server-toolbar {
animation: client-profile-ping-out 160ms cubic-bezier(0.4, 0, 1, 1) forwards;
}
.client-profile-body.is-closing .client-server-row {
animation: client-profile-server-out 300ms var(--server-exit-delay) cubic-bezier(0.4, 0, 1, 1) forwards;
}
@keyframes client-profile-server-in {
from {
opacity: 0;
filter: blur(4px);
transform: translateY(-8px);
}
}
@keyframes client-profile-server-out {
to {
opacity: 0;
filter: blur(4px);
transform: translateY(-8px);
}
}
@keyframes client-profile-ping-in {
from {
opacity: 0;
filter: blur(4px);
transform: translateY(-5px);
}
}
@keyframes client-profile-ping-out {
to {
opacity: 0;
filter: blur(4px);
transform: translateY(-5px);
}
}
.client-profile-body .client-server-row .client-server::before {
content: '';
width: 10px;
+72 -3
View File
@@ -223,11 +223,40 @@
}
.client-profile-body {
padding: 0 0 4px;
display: grid;
grid-template-rows: 0fr;
visibility: hidden;
opacity: 0;
filter: blur(5px);
transition:
grid-template-rows 360ms cubic-bezier(0.16, 1, 0.3, 1),
opacity 260ms ease,
filter 420ms ease,
visibility 0s 930ms;
}
.client-profile-body[aria-hidden='true'] {
display: none;
.client-profile-body.is-open {
grid-template-rows: 1fr;
visibility: visible;
opacity: 1;
filter: blur(0);
transition:
grid-template-rows 620ms cubic-bezier(0.16, 1, 0.3, 1),
opacity 260ms ease,
filter 420ms ease,
visibility 0s;
transition-delay: 0s;
}
.client-profile-body.is-closing {
visibility: visible;
transition-delay: 570ms, 570ms, 570ms, 0s;
}
.client-profile-body-inner {
min-height: 0;
overflow: hidden;
padding-bottom: 4px;
}
.client-profile-body .client-servers {
@@ -249,6 +278,15 @@
font: inherit;
text-align: left;
cursor: pointer;
animation: client-profile-selected-in 260ms cubic-bezier(0.16, 1, 0.3, 1) both;
}
@keyframes client-profile-selected-in {
from {
opacity: 0;
filter: blur(3px);
transform: translateY(-4px);
}
}
.client-profile-selected-server > span {
@@ -299,6 +337,27 @@
.client-subscription-sheet > .client-profile-add {
margin-top: 8px;
animation: client-profile-add-open 420ms cubic-bezier(0.16, 1, 0.3, 1) both;
}
.client-subscription-sheet > .client-profile-add.is-closing {
animation: client-profile-add-close 320ms cubic-bezier(0.4, 0, 1, 1) forwards;
}
@keyframes client-profile-add-open {
from {
opacity: 0;
filter: blur(5px);
transform: translateY(-7px);
}
}
@keyframes client-profile-add-close {
to {
opacity: 0;
filter: blur(5px);
transform: translateY(-7px);
}
}
.client-profile-activate {
@@ -314,6 +373,11 @@
width: 100%;
margin-top: 10px;
text-align: left;
animation: client-profile-add-trigger-in 240ms ease both;
}
@keyframes client-profile-add-trigger-in {
from { opacity: 0; }
}
.client-profile-server-hint,
@@ -433,6 +497,11 @@
@media (prefers-reduced-motion: reduce) {
.client-profile-chevron,
.client-profile-body,
.client-profile-body *,
.client-profile-selected-server,
.client-profile-add,
.client-profile-add-trigger,
.client-profile-refresh,
.client-profile-refresh svg,
.client-profile-delete-lid,