@nordcode/ui 2.1.7 → 2.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## 2.1.9 (2026-01-02)
2
+
3
+ ### fixes
4
+
5
+ - fix dialog styles
6
+
7
+ ## 2.1.8 (2026-01-02)
8
+
9
+ ### features
10
+
11
+ - use starting style & new animation for dialogs
12
+
1
13
  ## 2.1.7 (2025-12-18)
2
14
 
3
15
  ### features
package/out/complete.css CHANGED
@@ -1817,7 +1817,7 @@
1817
1817
 
1818
1818
  :where(.nc-clickable-card) {
1819
1819
  cursor: pointer;
1820
- transition: scale var(--transition-duration-quick-2) var(--ease-2);
1820
+ transition: scale var(--transition-duration-quick-2) var(--ease-out-2);
1821
1821
  position: relative;
1822
1822
  }
1823
1823
 
@@ -1852,49 +1852,67 @@
1852
1852
  @layer components.dialogs {
1853
1853
  :where(.nc-dialog) {
1854
1854
  --_dialog-padding-inline: var(--dialog-padding-inline, var(--spacing-base));
1855
- --_dialog-layout-padding: var(--layout-padding, var(--spacing-base));
1856
1855
  --_dialog-close-size: var(--dialog-close-size, var(--control-height-base));
1857
- --_dialog-transition-duration: var(--dialog-transition-duration, var(--transition-duration-moderate-2));
1858
- --_dialog-max-block-size: var(--dialog-max-block-size, 90dvh);
1859
- --_dialog-max-inline-size: var(--dialog-max-inline-size, 28rem);
1860
- --_dialog-radius: 0;
1861
- z-index: var(--layer-important);
1862
- animation: close-dialog var(--_dialog-transition-duration) var(--easing-exit) forwards;
1863
- transition: opacity var(--_dialog-transition-duration) var(--easing-exit);
1864
1856
  border: var(--border-width-thin) solid var(--color-border-base);
1865
1857
  block-size: max-content;
1866
1858
  inline-size: 100dvw;
1867
- max-inline-size: var(--_dialog-max-inline-size);
1859
+ max-inline-size: var(--dialog-max-inline-size, 28rem);
1868
1860
  background: var(--color-surface-base);
1869
- border-radius: var(--_dialog-radius);
1870
- overflow-clip-margin: var(--control-spacing-far, 1em);
1871
- pointer-events: all;
1861
+ border-radius: var(--dialog-radius, var(--border-radius-medium));
1872
1862
  max-block-size: 100dvh;
1873
- margin: auto 0;
1874
1863
  padding: 0;
1875
- display: block;
1876
- position: fixed;
1877
- inset: 0;
1878
- overflow: clip;
1864
+ overflow: hidden;
1879
1865
  }
1880
1866
 
1881
1867
  @media (width >= 36rem) {
1882
1868
  :where(.nc-dialog) {
1883
- --_dialog-radius: var(--dialog-radius, var(--border-radius-medium));
1884
- inline-size: calc(100dvw - 2 * var(--_dialog-layout-padding));
1885
- max-block-size: var(--_dialog-max-block-size);
1869
+ inline-size: calc(100dvw - 2 * var(--layout-padding, var(--spacing-base)));
1870
+ max-block-size: var(--dialog-max-block-size, 90dvh);
1886
1871
  box-shadow: var(--shadow-medium);
1887
1872
  margin-inline: auto;
1888
1873
  }
1889
1874
  }
1890
1875
 
1891
- :where(.nc-dialog)[open] {
1892
- animation: open-dialog var(--_dialog-transition-duration) var(--easing-entry);
1876
+ :where(.nc-dialog) {
1877
+ --transform-in: perspective(80px) rotateX(.5deg) scale(.9);
1878
+ --transform-out: perspective(80px) rotateX(.5deg) scale(.95);
1879
+ --transition-time-in: var(--transition-duration-gentle-1);
1880
+ --transition-time-out: var(--transition-duration-moderate-1);
1881
+ transform: var(--transform-in);
1893
1882
  }
1894
1883
 
1895
- :where(.nc-dialog):not([open]) {
1884
+ :where(.nc-dialog), :where(.nc-dialog)::backdrop {
1885
+ transition: display var(--transition-time-out) allow-discrete, overlay var(--transition-time-out) allow-discrete, transform var(--transition-time-out) var(--ease-in-out-2), opacity var(--transition-duration-moderate-1) var(--ease-in-out-2);
1896
1886
  opacity: 0;
1897
- pointer-events: none;
1887
+ }
1888
+
1889
+ :where(.nc-dialog) {
1890
+ transform: var(--transform-out);
1891
+ }
1892
+
1893
+ :where(.nc-dialog)[open] {
1894
+ opacity: 1;
1895
+ transform: perspective(80px)rotateX(0)scale(1);
1896
+ }
1897
+
1898
+ :where(.nc-dialog)[open], :where(.nc-dialog)[open]::backdrop {
1899
+ transition: display var(--transition-time-in) allow-discrete, overlay var(--transition-time-in) allow-discrete, transform var(--transition-time-in) var(--ease-in-out-2), opacity var(--transition-time-in) var(--ease-in-out-2);
1900
+ }
1901
+
1902
+ :where(.nc-dialog)[open]::backdrop {
1903
+ -webkit-backdrop-filter: blur(20px);
1904
+ backdrop-filter: blur(20px);
1905
+ opacity: 1;
1906
+ }
1907
+
1908
+ @starting-style {
1909
+ :where(.nc-dialog)[open], :where(.nc-dialog)[open]::backdrop {
1910
+ opacity: 0;
1911
+ }
1912
+
1913
+ :where(.nc-dialog)[open] {
1914
+ transform: var(--transform-in);
1915
+ }
1898
1916
  }
1899
1917
 
1900
1918
  :where(.nc-dialog)::backdrop {
@@ -1906,14 +1924,12 @@
1906
1924
  :where(.nc-dialog) :where(.dialog-container) {
1907
1925
  block-size: max-content;
1908
1926
  inline-size: 100%;
1909
- max-block-size: var(--_dialog-max-block-size);
1910
- overflow-clip-margin: var(--control-spacing-far, 1em);
1927
+ max-block-size: inherit;
1911
1928
  grid-template: "header header"
1912
1929
  "content content" 1fr
1913
1930
  "footer footer"
1914
1931
  / 1fr 1fr;
1915
1932
  display: grid;
1916
- overflow: clip;
1917
1933
  }
1918
1934
 
1919
1935
  :where(.nc-dialog) :where(.dialog-container) > :first-child {
@@ -1967,26 +1983,6 @@
1967
1983
  align-items: flex-start;
1968
1984
  display: flex;
1969
1985
  }
1970
-
1971
- @keyframes open-dialog {
1972
- from {
1973
- transform: translate(0%, 100dvh)rotate(0);
1974
- }
1975
-
1976
- to {
1977
- transform: translate(0)rotate(0);
1978
- }
1979
- }
1980
-
1981
- @keyframes close-dialog {
1982
- from {
1983
- transform: translate(0)rotate(0);
1984
- }
1985
-
1986
- to {
1987
- transform: translate(0%, 100dvh)rotate(10deg);
1988
- }
1989
- }
1990
1986
  }
1991
1987
 
1992
1988
  @layer components.forms {
@@ -1601,7 +1601,7 @@
1601
1601
 
1602
1602
  :where(.nc-clickable-card) {
1603
1603
  cursor: pointer;
1604
- transition: scale var(--transition-duration-quick-2) var(--ease-2);
1604
+ transition: scale var(--transition-duration-quick-2) var(--ease-out-2);
1605
1605
  position: relative;
1606
1606
  }
1607
1607
 
@@ -1636,49 +1636,67 @@
1636
1636
  @layer components.dialogs {
1637
1637
  :where(.nc-dialog) {
1638
1638
  --_dialog-padding-inline: var(--dialog-padding-inline, var(--spacing-base));
1639
- --_dialog-layout-padding: var(--layout-padding, var(--spacing-base));
1640
1639
  --_dialog-close-size: var(--dialog-close-size, var(--control-height-base));
1641
- --_dialog-transition-duration: var(--dialog-transition-duration, var(--transition-duration-moderate-2));
1642
- --_dialog-max-block-size: var(--dialog-max-block-size, 90dvh);
1643
- --_dialog-max-inline-size: var(--dialog-max-inline-size, 28rem);
1644
- --_dialog-radius: 0;
1645
- z-index: var(--layer-important);
1646
- animation: close-dialog var(--_dialog-transition-duration) var(--easing-exit) forwards;
1647
- transition: opacity var(--_dialog-transition-duration) var(--easing-exit);
1648
1640
  border: var(--border-width-thin) solid var(--color-border-base);
1649
1641
  block-size: max-content;
1650
1642
  inline-size: 100dvw;
1651
- max-inline-size: var(--_dialog-max-inline-size);
1643
+ max-inline-size: var(--dialog-max-inline-size, 28rem);
1652
1644
  background: var(--color-surface-base);
1653
- border-radius: var(--_dialog-radius);
1654
- overflow-clip-margin: var(--control-spacing-far, 1em);
1655
- pointer-events: all;
1645
+ border-radius: var(--dialog-radius, var(--border-radius-medium));
1656
1646
  max-block-size: 100dvh;
1657
- margin: auto 0;
1658
1647
  padding: 0;
1659
- display: block;
1660
- position: fixed;
1661
- inset: 0;
1662
- overflow: clip;
1648
+ overflow: hidden;
1663
1649
  }
1664
1650
 
1665
1651
  @media (width >= 36rem) {
1666
1652
  :where(.nc-dialog) {
1667
- --_dialog-radius: var(--dialog-radius, var(--border-radius-medium));
1668
- inline-size: calc(100dvw - 2 * var(--_dialog-layout-padding));
1669
- max-block-size: var(--_dialog-max-block-size);
1653
+ inline-size: calc(100dvw - 2 * var(--layout-padding, var(--spacing-base)));
1654
+ max-block-size: var(--dialog-max-block-size, 90dvh);
1670
1655
  box-shadow: var(--shadow-medium);
1671
1656
  margin-inline: auto;
1672
1657
  }
1673
1658
  }
1674
1659
 
1675
- :where(.nc-dialog)[open] {
1676
- animation: open-dialog var(--_dialog-transition-duration) var(--easing-entry);
1660
+ :where(.nc-dialog) {
1661
+ --transform-in: perspective(80px) rotateX(.5deg) scale(.9);
1662
+ --transform-out: perspective(80px) rotateX(.5deg) scale(.95);
1663
+ --transition-time-in: var(--transition-duration-gentle-1);
1664
+ --transition-time-out: var(--transition-duration-moderate-1);
1665
+ transform: var(--transform-in);
1677
1666
  }
1678
1667
 
1679
- :where(.nc-dialog):not([open]) {
1668
+ :where(.nc-dialog), :where(.nc-dialog)::backdrop {
1669
+ transition: display var(--transition-time-out) allow-discrete, overlay var(--transition-time-out) allow-discrete, transform var(--transition-time-out) var(--ease-in-out-2), opacity var(--transition-duration-moderate-1) var(--ease-in-out-2);
1680
1670
  opacity: 0;
1681
- pointer-events: none;
1671
+ }
1672
+
1673
+ :where(.nc-dialog) {
1674
+ transform: var(--transform-out);
1675
+ }
1676
+
1677
+ :where(.nc-dialog)[open] {
1678
+ opacity: 1;
1679
+ transform: perspective(80px)rotateX(0)scale(1);
1680
+ }
1681
+
1682
+ :where(.nc-dialog)[open], :where(.nc-dialog)[open]::backdrop {
1683
+ transition: display var(--transition-time-in) allow-discrete, overlay var(--transition-time-in) allow-discrete, transform var(--transition-time-in) var(--ease-in-out-2), opacity var(--transition-time-in) var(--ease-in-out-2);
1684
+ }
1685
+
1686
+ :where(.nc-dialog)[open]::backdrop {
1687
+ -webkit-backdrop-filter: blur(20px);
1688
+ backdrop-filter: blur(20px);
1689
+ opacity: 1;
1690
+ }
1691
+
1692
+ @starting-style {
1693
+ :where(.nc-dialog)[open], :where(.nc-dialog)[open]::backdrop {
1694
+ opacity: 0;
1695
+ }
1696
+
1697
+ :where(.nc-dialog)[open] {
1698
+ transform: var(--transform-in);
1699
+ }
1682
1700
  }
1683
1701
 
1684
1702
  :where(.nc-dialog)::backdrop {
@@ -1690,14 +1708,12 @@
1690
1708
  :where(.nc-dialog) :where(.dialog-container) {
1691
1709
  block-size: max-content;
1692
1710
  inline-size: 100%;
1693
- max-block-size: var(--_dialog-max-block-size);
1694
- overflow-clip-margin: var(--control-spacing-far, 1em);
1711
+ max-block-size: inherit;
1695
1712
  grid-template: "header header"
1696
1713
  "content content" 1fr
1697
1714
  "footer footer"
1698
1715
  / 1fr 1fr;
1699
1716
  display: grid;
1700
- overflow: clip;
1701
1717
  }
1702
1718
 
1703
1719
  :where(.nc-dialog) :where(.dialog-container) > :first-child {
@@ -1751,26 +1767,6 @@
1751
1767
  align-items: flex-start;
1752
1768
  display: flex;
1753
1769
  }
1754
-
1755
- @keyframes open-dialog {
1756
- from {
1757
- transform: translate(0%, 100dvh)rotate(0);
1758
- }
1759
-
1760
- to {
1761
- transform: translate(0)rotate(0);
1762
- }
1763
- }
1764
-
1765
- @keyframes close-dialog {
1766
- from {
1767
- transform: translate(0)rotate(0);
1768
- }
1769
-
1770
- to {
1771
- transform: translate(0%, 100dvh)rotate(10deg);
1772
- }
1773
- }
1774
1770
  }
1775
1771
 
1776
1772
  @layer components.forms {
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "type": "git",
13
13
  "url": "https://github.com/nordcode-agency/nordcode/tree/main/packages/ui"
14
14
  },
15
- "version": "2.1.7",
15
+ "version": "2.1.9",
16
16
  "publishConfig": {
17
17
  "access": "public"
18
18
  },
@@ -56,7 +56,7 @@
56
56
  :where(.nc-clickable-card) {
57
57
  cursor: pointer;
58
58
  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);
60
60
 
61
61
  &:focus-within,
62
62
  &:hover {
@@ -1,50 +1,79 @@
1
1
  @layer components.dialogs {
2
2
  :where(.nc-dialog) {
3
3
  --_dialog-padding-inline: var(--dialog-padding-inline, var(--spacing-base));
4
- --_dialog-layout-padding: var(--layout-padding, var(--spacing-base));
5
4
  --_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
- );
10
- --_dialog-max-block-size: var(--dialog-max-block-size, 90dvh);
11
- --_dialog-max-inline-size: var(--dialog-max-inline-size, 28rem);
12
-
13
- --_dialog-radius: 0;
14
- display: block;
15
- 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);
18
- position: fixed;
19
- inset: 0;
5
+
20
6
  border: var(--border-width-thin) solid var(--color-border-base);
21
7
  inline-size: 100dvw;
22
8
  block-size: max-content;
23
- max-inline-size: var(--_dialog-max-inline-size);
9
+ max-inline-size: var(--dialog-max-inline-size, 28rem);
24
10
  max-block-size: 100dvh;
25
11
  background: var(--color-surface-base);
26
- margin: auto 0;
27
12
  padding: 0;
28
- border-radius: var(--_dialog-radius);
29
- overflow: clip;
30
- overflow-clip-margin: var(--control-spacing-far, 1em);
31
- pointer-events: all;
13
+ overflow: hidden;
14
+ border-radius: var(--dialog-radius, var(--border-radius-medium));
32
15
 
33
16
  @media (min-width: 36rem) {
34
- --_dialog-radius: var(--dialog-radius, var(--border-radius-medium));
35
- inline-size: calc(100dvw - 2 * var(--_dialog-layout-padding));
36
- max-block-size: var(--_dialog-max-block-size);
17
+ inline-size: calc(100dvw - 2 * var(--layout-padding, var(--spacing-base)));
18
+ max-block-size: var(--dialog-max-block-size, 90dvh);
37
19
  margin-inline: auto;
38
20
  box-shadow: var(--shadow-medium);
39
21
  }
40
22
 
23
+ /* Credits to Adam Argyle. Modified from: https://nerdy.dev/notebook/dialog-starter.html */
24
+
25
+ /* Exit Stage To */
26
+ --transform-in: perspective(80px) rotateX(0.5deg) scale(0.9);
27
+ --transform-out: perspective(80px) rotateX(0.5deg) scale(0.95);
28
+ --transition-time-in: var(--transition-duration-gentle-1);
29
+ --transition-time-out: var(--transition-duration-moderate-1);
30
+
31
+ transform: var(--transform-in);
32
+
33
+ &, &::backdrop {
34
+ transition:
35
+ display var(--transition-time-out) allow-discrete,
36
+ overlay var(--transition-time-out) allow-discrete,
37
+ transform var(--transition-time-out) var(--ease-in-out-2),
38
+ opacity var(--transition-duration-moderate-1) var(--ease-in-out-2);
39
+
40
+ /* Exit Stage To */
41
+ opacity: 0;
42
+ }
43
+
44
+ & {
45
+ transform: var(--transform-out);
46
+ }
47
+
48
+ /* On Stage */
41
49
  &[open] {
42
- animation: open-dialog var(--_dialog-transition-duration) var(--easing-entry);
50
+ opacity: 1;
51
+ transform: perspective(80px) rotateX(0deg) scale(1);
52
+
53
+ &, &::backdrop {
54
+ transition:
55
+ display var(--transition-time-in) allow-discrete,
56
+ overlay var(--transition-time-in) allow-discrete,
57
+ transform var(--transition-time-in) var(--ease-in-out-2),
58
+ opacity var(--transition-time-in) var(--ease-in-out-2);
59
+ }
60
+
61
+ &::backdrop {
62
+ backdrop-filter: blur(20px);
63
+ opacity: 1;
64
+ }
43
65
  }
44
66
 
45
- &:not([open]) {
46
- opacity: 0;
47
- pointer-events: none;
67
+ /* Enter Stage From */
68
+ @starting-style {
69
+ &[open],
70
+ &[open]::backdrop {
71
+ opacity: 0;
72
+ }
73
+
74
+ &[open] {
75
+ transform: var(--transform-in);
76
+ }
48
77
  }
49
78
 
50
79
  &::backdrop {
@@ -60,9 +89,7 @@
60
89
  "footer footer" auto / 1fr 1fr;
61
90
  inline-size: 100%;
62
91
  block-size: max-content;
63
- max-block-size: var(--_dialog-max-block-size);
64
- overflow: clip;
65
- overflow-clip-margin: var(--control-spacing-far, 1em);
92
+ max-block-size: inherit;
66
93
 
67
94
  & > *:first-child {
68
95
  border-radius: var(--_dialog-radius) var(--_dialog-radius) 0 0;
@@ -117,24 +144,4 @@
117
144
  background-color: var(--color-surface-subtle);
118
145
  }
119
146
  }
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
- }
140
147
  }