@nordcode/ui 1.0.7 → 1.0.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
@@ -28,3 +28,20 @@ Be sure to checkout the updated markup for these components in the documentation
28
28
  ### Fixes
29
29
 
30
30
  - Fix fields not compiling
31
+
32
+ ## 1.0.8 (2024-12-27)
33
+
34
+ ### Improvements
35
+
36
+ - Tweak Dialog Styles
37
+ - Disable scroll when modal dialog is open
38
+
39
+ ### Fixes
40
+
41
+ - Fix user selection styles
42
+
43
+ ## 1.0.9 (2024-12-27)
44
+
45
+ ### Improvements
46
+
47
+ - Tweak Dialog Radius and mobile styles
package/out/bundle.css CHANGED
@@ -451,6 +451,11 @@
451
451
  :where(p) {
452
452
  text-wrap: pretty;
453
453
  }
454
+
455
+ :where(html):has(dialog:modal) {
456
+ scrollbar-gutter: stable;
457
+ overflow: hidden;
458
+ }
454
459
  }
455
460
 
456
461
  @layer base {
@@ -647,7 +652,12 @@
647
652
  color: var(--color-brand-primary-base);
648
653
  }
649
654
 
650
- :where() {
655
+ ::selection {
656
+ background-color: var(--color-brand-primary-base);
657
+ color: var(--color-surface-base);
658
+ }
659
+
660
+ ::target-text {
651
661
  background-color: var(--color-brand-primary-base);
652
662
  color: var(--color-surface-base);
653
663
  }
@@ -201,6 +201,11 @@
201
201
  :where(p) {
202
202
  text-wrap: pretty;
203
203
  }
204
+
205
+ :where(html):has(dialog:modal) {
206
+ scrollbar-gutter: stable;
207
+ overflow: hidden;
208
+ }
204
209
  }
205
210
 
206
211
  @layer base {
@@ -397,7 +402,12 @@
397
402
  color: var(--color-brand-primary-base);
398
403
  }
399
404
 
400
- :where() {
405
+ ::selection {
406
+ background-color: var(--color-brand-primary-base);
407
+ color: var(--color-surface-base);
408
+ }
409
+
410
+ ::target-text {
401
411
  background-color: var(--color-brand-primary-base);
402
412
  color: var(--color-surface-base);
403
413
  }
package/out/complete.css CHANGED
@@ -451,6 +451,11 @@
451
451
  :where(p) {
452
452
  text-wrap: pretty;
453
453
  }
454
+
455
+ :where(html):has(dialog:modal) {
456
+ scrollbar-gutter: stable;
457
+ overflow: hidden;
458
+ }
454
459
  }
455
460
 
456
461
  @layer base {
@@ -647,7 +652,12 @@
647
652
  color: var(--color-brand-primary-base);
648
653
  }
649
654
 
650
- :where() {
655
+ ::selection {
656
+ background-color: var(--color-brand-primary-base);
657
+ color: var(--color-surface-base);
658
+ }
659
+
660
+ ::target-text {
651
661
  background-color: var(--color-brand-primary-base);
652
662
  color: var(--color-surface-base);
653
663
  }
@@ -1740,23 +1750,40 @@
1740
1750
  :where(.nc-dialog) {
1741
1751
  --_dialog-radius: var(--dialog-radius, var(--border-radius-medium));
1742
1752
  --_dialog-padding-inline: var(--dialog-padding-inline, var(--spacing-base));
1753
+ --_dialog-layout-padding: var(--layout-padding, var(--spacing-base));
1743
1754
  --_dialog-close-size: var(--dialog-close-size, var(--button-height-base));
1744
1755
  --_dialog-transition-duration: var(--dialog-transition-duration, var(--transition-duration-base));
1756
+ --_dialog-max-block-size: var(--dialog-max-block-size, 90dvh);
1757
+ --_dialog-max-inline-size: var(--dialog-max-inline-size, 28rem);
1758
+ --dialog-radius: 0;
1745
1759
  z-index: var(--layer-important);
1746
1760
  animation: close-dialog var(--_dialog-transition-duration) cubic-bezier(.7, 0, 1, 1) forwards;
1747
1761
  transition: opacity var(--_dialog-transition-duration) cubic-bezier(.7, 0, 1, 1);
1748
1762
  border: var(--border-width-thin) solid var(--color-border-base);
1749
- inline-size: calc(100dvw - 2 * var(--spacing-base));
1763
+ block-size: max-content;
1764
+ inline-size: 100dvw;
1765
+ max-inline-size: var(--_dialog-max-inline-size);
1750
1766
  background: var(--color-surface-base);
1751
- block-size: 90dvh;
1752
- max-inline-size: 28rem;
1753
- box-shadow: var(--shadow-medium);
1754
- border-radius: var(--_dialog-radius);
1755
- margin-block: 5dvh;
1767
+ overflow-clip-margin: 1rem;
1768
+ pointer-events: all;
1769
+ border-radius: 0;
1770
+ max-block-size: 100dvw;
1771
+ margin: auto 0;
1756
1772
  padding: 0;
1757
1773
  display: block;
1758
1774
  position: fixed;
1759
1775
  inset: 0;
1776
+ overflow: clip;
1777
+ }
1778
+
1779
+ @media (min-width: 36rem) {
1780
+ :where(.nc-dialog) {
1781
+ border-radius: var(--_dialog-radius);
1782
+ inline-size: calc(100dvw - 2 * var(--_dialog-layout-padding));
1783
+ max-block-size: var(--_dialog-max-block-size);
1784
+ box-shadow: var(--shadow-medium);
1785
+ margin-inline: auto;
1786
+ }
1760
1787
  }
1761
1788
 
1762
1789
  :where(.nc-dialog)[open] {
@@ -1765,6 +1792,7 @@
1765
1792
 
1766
1793
  :where(.nc-dialog):not([open]) {
1767
1794
  opacity: 0;
1795
+ pointer-events: none;
1768
1796
  }
1769
1797
 
1770
1798
  :where(.nc-dialog)::backdrop {
@@ -1774,20 +1802,30 @@
1774
1802
  }
1775
1803
 
1776
1804
  :where(.nc-dialog) :where(.dialog-container) {
1805
+ block-size: max-content;
1806
+ inline-size: 100%;
1807
+ max-block-size: var(--_dialog-max-block-size);
1808
+ overflow-clip-margin: 1rem;
1777
1809
  grid-template: "header header"
1778
1810
  "content content" 1fr
1779
1811
  "footer footer"
1780
1812
  / 1fr 1fr;
1781
- block-size: 100%;
1782
- inline-size: 100%;
1783
1813
  display: grid;
1814
+ overflow: clip;
1815
+ }
1816
+
1817
+ :where(.nc-dialog) :where(.dialog-container) > :first-child {
1818
+ border-radius: var(--_dialog-radius) var(--_dialog-radius) 0 0;
1819
+ }
1820
+
1821
+ :where(.nc-dialog) :where(.dialog-container) > :last-child {
1822
+ border-radius: 0 0 var(--_dialog-radius) var(--_dialog-radius);
1784
1823
  }
1785
1824
 
1786
1825
  :where(.nc-dialog) :where(.dialog-header) {
1787
1826
  border-block-end: var(--border-width-thin) solid var(--color-border-muted);
1788
1827
  background-color: var(--color-surface-subtle);
1789
1828
  padding-inline: var(--_dialog-padding-inline);
1790
- border-radius: var(--_dialog-radius) var(--_dialog-radius) 0 0;
1791
1829
  grid-area: header;
1792
1830
  grid-template: "title close" / 1fr var(--_dialog-close-size);
1793
1831
  padding-block: var(--spacing-near);
@@ -201,6 +201,11 @@
201
201
  :where(p) {
202
202
  text-wrap: pretty;
203
203
  }
204
+
205
+ :where(html):has(dialog:modal) {
206
+ scrollbar-gutter: stable;
207
+ overflow: hidden;
208
+ }
204
209
  }
205
210
 
206
211
  @layer base {
@@ -397,7 +402,12 @@
397
402
  color: var(--color-brand-primary-base);
398
403
  }
399
404
 
400
- :where() {
405
+ ::selection {
406
+ background-color: var(--color-brand-primary-base);
407
+ color: var(--color-surface-base);
408
+ }
409
+
410
+ ::target-text {
401
411
  background-color: var(--color-brand-primary-base);
402
412
  color: var(--color-surface-base);
403
413
  }
@@ -1490,23 +1500,40 @@
1490
1500
  :where(.nc-dialog) {
1491
1501
  --_dialog-radius: var(--dialog-radius, var(--border-radius-medium));
1492
1502
  --_dialog-padding-inline: var(--dialog-padding-inline, var(--spacing-base));
1503
+ --_dialog-layout-padding: var(--layout-padding, var(--spacing-base));
1493
1504
  --_dialog-close-size: var(--dialog-close-size, var(--button-height-base));
1494
1505
  --_dialog-transition-duration: var(--dialog-transition-duration, var(--transition-duration-base));
1506
+ --_dialog-max-block-size: var(--dialog-max-block-size, 90dvh);
1507
+ --_dialog-max-inline-size: var(--dialog-max-inline-size, 28rem);
1508
+ --dialog-radius: 0;
1495
1509
  z-index: var(--layer-important);
1496
1510
  animation: close-dialog var(--_dialog-transition-duration) cubic-bezier(.7, 0, 1, 1) forwards;
1497
1511
  transition: opacity var(--_dialog-transition-duration) cubic-bezier(.7, 0, 1, 1);
1498
1512
  border: var(--border-width-thin) solid var(--color-border-base);
1499
- inline-size: calc(100dvw - 2 * var(--spacing-base));
1513
+ block-size: max-content;
1514
+ inline-size: 100dvw;
1515
+ max-inline-size: var(--_dialog-max-inline-size);
1500
1516
  background: var(--color-surface-base);
1501
- block-size: 90dvh;
1502
- max-inline-size: 28rem;
1503
- box-shadow: var(--shadow-medium);
1504
- border-radius: var(--_dialog-radius);
1505
- margin-block: 5dvh;
1517
+ overflow-clip-margin: 1rem;
1518
+ pointer-events: all;
1519
+ border-radius: 0;
1520
+ max-block-size: 100dvw;
1521
+ margin: auto 0;
1506
1522
  padding: 0;
1507
1523
  display: block;
1508
1524
  position: fixed;
1509
1525
  inset: 0;
1526
+ overflow: clip;
1527
+ }
1528
+
1529
+ @media (min-width: 36rem) {
1530
+ :where(.nc-dialog) {
1531
+ border-radius: var(--_dialog-radius);
1532
+ inline-size: calc(100dvw - 2 * var(--_dialog-layout-padding));
1533
+ max-block-size: var(--_dialog-max-block-size);
1534
+ box-shadow: var(--shadow-medium);
1535
+ margin-inline: auto;
1536
+ }
1510
1537
  }
1511
1538
 
1512
1539
  :where(.nc-dialog)[open] {
@@ -1515,6 +1542,7 @@
1515
1542
 
1516
1543
  :where(.nc-dialog):not([open]) {
1517
1544
  opacity: 0;
1545
+ pointer-events: none;
1518
1546
  }
1519
1547
 
1520
1548
  :where(.nc-dialog)::backdrop {
@@ -1524,20 +1552,30 @@
1524
1552
  }
1525
1553
 
1526
1554
  :where(.nc-dialog) :where(.dialog-container) {
1555
+ block-size: max-content;
1556
+ inline-size: 100%;
1557
+ max-block-size: var(--_dialog-max-block-size);
1558
+ overflow-clip-margin: 1rem;
1527
1559
  grid-template: "header header"
1528
1560
  "content content" 1fr
1529
1561
  "footer footer"
1530
1562
  / 1fr 1fr;
1531
- block-size: 100%;
1532
- inline-size: 100%;
1533
1563
  display: grid;
1564
+ overflow: clip;
1565
+ }
1566
+
1567
+ :where(.nc-dialog) :where(.dialog-container) > :first-child {
1568
+ border-radius: var(--_dialog-radius) var(--_dialog-radius) 0 0;
1569
+ }
1570
+
1571
+ :where(.nc-dialog) :where(.dialog-container) > :last-child {
1572
+ border-radius: 0 0 var(--_dialog-radius) var(--_dialog-radius);
1534
1573
  }
1535
1574
 
1536
1575
  :where(.nc-dialog) :where(.dialog-header) {
1537
1576
  border-block-end: var(--border-width-thin) solid var(--color-border-muted);
1538
1577
  background-color: var(--color-surface-subtle);
1539
1578
  padding-inline: var(--_dialog-padding-inline);
1540
- border-radius: var(--_dialog-radius) var(--_dialog-radius) 0 0;
1541
1579
  grid-area: header;
1542
1580
  grid-template: "title close" / 1fr var(--_dialog-close-size);
1543
1581
  padding-block: var(--spacing-near);
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": "1.0.7",
15
+ "version": "1.0.9",
16
16
  "publishConfig": {
17
17
  "access": "public"
18
18
  },
@@ -2,28 +2,40 @@
2
2
  :where(.nc-dialog) {
3
3
  --_dialog-radius: var(--dialog-radius, var(--border-radius-medium));
4
4
  --_dialog-padding-inline: var(--dialog-padding-inline, var(--spacing-base));
5
+ --_dialog-layout-padding: var(--layout-padding, var(--spacing-base));
5
6
  --_dialog-close-size: var(--dialog-close-size, var(--button-height-base));
6
- --_dialog-transition-duration: var(
7
- --dialog-transition-duration,
8
- var(--transition-duration-base)
9
- );
7
+ --_dialog-transition-duration: var(--dialog-transition-duration,
8
+ var(--transition-duration-base));
9
+ --_dialog-max-block-size: var(--dialog-max-block-size, 90dvh);
10
+ --_dialog-max-inline-size: var(--dialog-max-inline-size, 28rem);
10
11
 
12
+ --dialog-radius: 0;
11
13
  display: block;
12
14
  z-index: var(--layer-important);
13
- animation: close-dialog var(--_dialog-transition-duration) cubic-bezier(0.7, 0, 1, 1)
14
- forwards;
15
+ animation: close-dialog var(--_dialog-transition-duration) cubic-bezier(0.7, 0, 1, 1) forwards;
15
16
  transition: opacity var(--_dialog-transition-duration) cubic-bezier(0.7, 0, 1, 1);
16
17
  position: fixed;
17
18
  inset: 0;
18
19
  border: var(--border-width-thin) solid var(--color-border-base);
19
- inline-size: calc(100dvw - 2 * var(--spacing-base));
20
- block-size: 90dvh;
21
- max-inline-size: 28rem;
20
+ inline-size: 100dvw;
21
+ block-size: max-content;
22
+ max-inline-size: var(--_dialog-max-inline-size);
23
+ max-block-size: 100dvw;
22
24
  background: var(--color-surface-base);
23
- box-shadow: var(--shadow-medium);
24
- margin-block: 5dvh;
25
+ margin: auto 0;
25
26
  padding: 0;
26
- border-radius: var(--_dialog-radius);
27
+ border-radius: 0;
28
+ overflow: clip;
29
+ overflow-clip-margin: 1rem;
30
+ pointer-events: all;
31
+
32
+ @media (min-width: 36rem) {
33
+ border-radius: var(--_dialog-radius);
34
+ inline-size: calc(100dvw - 2 * var(--_dialog-layout-padding));
35
+ max-block-size: var(--_dialog-max-block-size);
36
+ margin-inline: auto;
37
+ box-shadow: var(--shadow-medium);
38
+ }
27
39
 
28
40
  &[open] {
29
41
  animation: open-dialog var(--_dialog-transition-duration) cubic-bezier(0, 0.6, 0.58, 1);
@@ -31,6 +43,7 @@
31
43
 
32
44
  &:not([open]) {
33
45
  opacity: 0;
46
+ pointer-events: none;
34
47
  }
35
48
 
36
49
  &::backdrop {
@@ -45,7 +58,18 @@
45
58
  "content content" 1fr
46
59
  "footer footer" auto / 1fr 1fr;
47
60
  inline-size: 100%;
48
- block-size: 100%;
61
+ block-size: max-content;
62
+ max-block-size: var(--_dialog-max-block-size);
63
+ overflow: clip;
64
+ overflow-clip-margin: 1rem;
65
+
66
+ &>*:first-child {
67
+ border-radius: var(--_dialog-radius) var(--_dialog-radius) 0 0;
68
+ }
69
+
70
+ &>*:last-child {
71
+ border-radius: 0 0 var(--_dialog-radius) var(--_dialog-radius);
72
+ }
49
73
  }
50
74
 
51
75
  :where(.dialog-header) {
@@ -53,7 +77,6 @@
53
77
  border-block-end: var(--border-width-thin) solid var(--color-border-muted);
54
78
  background-color: var(--color-surface-subtle);
55
79
  padding-inline: var(--_dialog-padding-inline);
56
- border-radius: var(--_dialog-radius) var(--_dialog-radius) 0 0;
57
80
  display: grid;
58
81
  grid-template: "title close" / 1fr var(--_dialog-close-size);
59
82
  align-items: flex-start;
@@ -61,7 +84,7 @@
61
84
  min-inline-size: calc(2 * var(--spacing-near) + var(--_dialog-close-size));
62
85
  }
63
86
 
64
- :where(.dialog-header) > button[data-closes-dialog] {
87
+ :where(.dialog-header)>button[data-closes-dialog] {
65
88
  grid-area: close;
66
89
  inline-size: var(--_dialog-close-size);
67
90
  block-size: var(--_dialog-close-size);
@@ -196,8 +196,8 @@
196
196
  color: var(--color-brand-primary-base);
197
197
  }
198
198
 
199
- :where(::selection,
200
- ::target-text) {
199
+ ::selection,
200
+ ::target-text {
201
201
  background-color: var(--color-brand-primary-base);
202
202
  color: var(--color-surface-base);
203
203
  }
@@ -125,4 +125,9 @@
125
125
  :where(p) {
126
126
  text-wrap: pretty;
127
127
  }
128
+
129
+ :where(html):has(dialog:modal) {
130
+ scrollbar-gutter: stable;
131
+ overflow: hidden;
132
+ }
128
133
  }