Skip to content

Commit ee318a2

Browse files
author
Joshua Stübner
committed
feat(ui): new dialog anim
1 parent 5bdd22b commit ee318a2

File tree

4 files changed

+60
-32
lines changed

4 files changed

+60
-32
lines changed

packages/ui/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 2.1.8 (2026-01-02)
2+
3+
### features
4+
5+
- use starting style & new animation for dialogs
6+
17
## 2.1.7 (2025-12-18)
28

39
### features

packages/ui/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"type": "git",
1313
"url": "https://github.com/nordcode-agency/nordcode/tree/main/packages/ui"
1414
},
15-
"version": "2.1.7",
15+
"version": "2.1.8",
1616
"publishConfig": {
1717
"access": "public"
1818
},

packages/ui/src/styles/components/card.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
:where(.nc-clickable-card) {
5757
cursor: pointer;
5858
position: relative;
59-
transition: scale var(--transition-duration-quick-2) var(--ease-2);
59+
transition: scale var(--transition-duration-quick-2) var(--ease-out-2);
6060

6161
&:focus-within,
6262
&:hover {

packages/ui/src/styles/components/dialogs.css

Lines changed: 52 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,13 @@
33
--_dialog-padding-inline: var(--dialog-padding-inline, var(--spacing-base));
44
--_dialog-layout-padding: var(--layout-padding, var(--spacing-base));
55
--_dialog-close-size: var(--dialog-close-size, var(--control-height-base));
6-
--_dialog-transition-duration: var(
7-
--dialog-transition-duration,
8-
var(--transition-duration-moderate-2)
9-
);
6+
107
--_dialog-max-block-size: var(--dialog-max-block-size, 90dvh);
118
--_dialog-max-inline-size: var(--dialog-max-inline-size, 28rem);
129

1310
--_dialog-radius: 0;
1411
display: block;
1512
z-index: var(--layer-important);
16-
animation: close-dialog var(--_dialog-transition-duration) var(--easing-exit) forwards;
17-
transition: opacity var(--_dialog-transition-duration) var(--easing-exit);
1813
position: fixed;
1914
inset: 0;
2015
border: var(--border-width-thin) solid var(--color-border-base);
@@ -38,13 +33,60 @@
3833
box-shadow: var(--shadow-medium);
3934
}
4035

36+
/* Credits to Adam Argyle. Modified from: https://nerdy.dev/notebook/dialog-starter.html */
37+
38+
/* Exit Stage To */
39+
--transform-in: perspective(80px) rotateX(0.5deg) scale(0.9);
40+
--transform-out: perspective(80px) rotateX(0.5deg) scale(0.95);
41+
--transition-time-in: var(--transition-duration-gentle-1);
42+
--transition-time-out: var(--transition-duration-moderate-1);
43+
44+
transform: var(--transform-in);
45+
46+
&, &::backdrop {
47+
transition:
48+
display var(--transition-time-out) allow-discrete,
49+
overlay var(--transition-time-out) allow-discrete,
50+
transform var(--transition-time-out) var(--ease-in-out-2),
51+
opacity var(--transition-duration-moderate-1) var(--ease-in-out-2);
52+
53+
/* Exit Stage To */
54+
opacity: 0;
55+
}
56+
57+
& {
58+
transform: var(--transform-out);
59+
}
60+
61+
/* On Stage */
4162
&[open] {
42-
animation: open-dialog var(--_dialog-transition-duration) var(--easing-entry);
63+
opacity: 1;
64+
transform: perspective(80px) rotateX(0deg) scale(1);
65+
66+
&, &::backdrop {
67+
transition:
68+
display var(--transition-time-in) allow-discrete,
69+
overlay var(--transition-time-in) allow-discrete,
70+
transform var(--transition-time-in) var(--ease-in-out-2),
71+
opacity var(--transition-time-in) var(--ease-in-out-2);
72+
}
73+
74+
&::backdrop {
75+
backdrop-filter: blur(20px);
76+
opacity: 1;
77+
}
4378
}
4479

45-
&:not([open]) {
46-
opacity: 0;
47-
pointer-events: none;
80+
/* Enter Stage From */
81+
@starting-style {
82+
&[open],
83+
&[open]::backdrop {
84+
opacity: 0;
85+
}
86+
87+
&[open] {
88+
transform: var(--transform-in);
89+
}
4890
}
4991

5092
&::backdrop {
@@ -117,24 +159,4 @@
117159
background-color: var(--color-surface-subtle);
118160
}
119161
}
120-
121-
@keyframes open-dialog {
122-
from {
123-
transform: translate(0%, 100dvh) rotate(0deg);
124-
}
125-
126-
to {
127-
transform: translate(0dvh, 0%) rotate(0deg);
128-
}
129-
}
130-
131-
@keyframes close-dialog {
132-
from {
133-
transform: translate(0dvh, 0%) rotate(0deg);
134-
}
135-
136-
to {
137-
transform: translate(0%, 100dvh) rotate(10deg);
138-
}
139-
}
140162
}

0 commit comments

Comments
 (0)