@nordcode/ui 1.0.6 → 1.0.8

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,14 @@ 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
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
  }
@@ -1742,21 +1752,33 @@
1742
1752
  --_dialog-padding-inline: var(--dialog-padding-inline, var(--spacing-base));
1743
1753
  --_dialog-close-size: var(--dialog-close-size, var(--button-height-base));
1744
1754
  --_dialog-transition-duration: var(--dialog-transition-duration, var(--transition-duration-base));
1755
+ --_dialog-max-block-size: var(--dialog-max-block-size, 100dvh);
1756
+ --_dialog-max-inline-size: var(--dialog-max-inline-size, 28rem);
1745
1757
  z-index: var(--layer-important);
1746
1758
  animation: close-dialog var(--_dialog-transition-duration) cubic-bezier(.7, 0, 1, 1) forwards;
1747
1759
  transition: opacity var(--_dialog-transition-duration) cubic-bezier(.7, 0, 1, 1);
1748
1760
  border: var(--border-width-thin) solid var(--color-border-base);
1749
1761
  inline-size: calc(100dvw - 2 * var(--spacing-base));
1762
+ block-size: max-content;
1763
+ max-inline-size: var(--_dialog-max-inline-size);
1764
+ max-block-size: var(--_dialog-max-block-size);
1750
1765
  background: var(--color-surface-base);
1751
- block-size: 90dvh;
1752
- max-inline-size: 28rem;
1753
1766
  box-shadow: var(--shadow-medium);
1754
1767
  border-radius: var(--_dialog-radius);
1755
- margin-block: 5dvh;
1768
+ overflow-clip-margin: 1rem;
1769
+ margin: auto 0;
1756
1770
  padding: 0;
1757
1771
  display: block;
1758
1772
  position: fixed;
1759
1773
  inset: 0;
1774
+ overflow: clip;
1775
+ }
1776
+
1777
+ @media (min-width: 36rem) {
1778
+ :where(.nc-dialog) {
1779
+ --dialog-max-block-size: 90dvh;
1780
+ margin-inline: auto;
1781
+ }
1760
1782
  }
1761
1783
 
1762
1784
  :where(.nc-dialog)[open] {
@@ -1774,13 +1796,16 @@
1774
1796
  }
1775
1797
 
1776
1798
  :where(.nc-dialog) :where(.dialog-container) {
1799
+ block-size: max-content;
1800
+ inline-size: 100%;
1801
+ max-block-size: var(--_dialog-max-block-size);
1802
+ overflow-clip-margin: 1rem;
1777
1803
  grid-template: "header header"
1778
1804
  "content content" 1fr
1779
1805
  "footer footer"
1780
1806
  / 1fr 1fr;
1781
- block-size: 100%;
1782
- inline-size: 100%;
1783
1807
  display: grid;
1808
+ overflow: clip;
1784
1809
  }
1785
1810
 
1786
1811
  :where(.nc-dialog) :where(.dialog-header) {
@@ -2018,7 +2043,7 @@
2018
2043
  --_input-border: var(--input-border, var(--border-width-thin) solid var(--color-border-base));
2019
2044
  --_input-border-radius: var(--input-border-radius, var(--border-radius-medium));
2020
2045
  --_input-box-shadow: var(--input-box-shadow, var(--shadow-inset));
2021
- --_input-outline: var(--input-outline, var(--border-width-thick) solid var(--color-brand-primary-base));
2046
+ --_input-outline: var(--input-outline, var(--border-width-medium) solid var(--color-brand-primary-base));
2022
2047
  --_input-disabled-filter: var(--input-disabled-filter, contrast(.72) opacity(.72));
2023
2048
  --_input-padding-block: var(--input-padding-block, .125lh);
2024
2049
  --_input-padding-inline: var(--input-padding-inline, 1ch);
@@ -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
  }
@@ -1492,21 +1502,33 @@
1492
1502
  --_dialog-padding-inline: var(--dialog-padding-inline, var(--spacing-base));
1493
1503
  --_dialog-close-size: var(--dialog-close-size, var(--button-height-base));
1494
1504
  --_dialog-transition-duration: var(--dialog-transition-duration, var(--transition-duration-base));
1505
+ --_dialog-max-block-size: var(--dialog-max-block-size, 100dvh);
1506
+ --_dialog-max-inline-size: var(--dialog-max-inline-size, 28rem);
1495
1507
  z-index: var(--layer-important);
1496
1508
  animation: close-dialog var(--_dialog-transition-duration) cubic-bezier(.7, 0, 1, 1) forwards;
1497
1509
  transition: opacity var(--_dialog-transition-duration) cubic-bezier(.7, 0, 1, 1);
1498
1510
  border: var(--border-width-thin) solid var(--color-border-base);
1499
1511
  inline-size: calc(100dvw - 2 * var(--spacing-base));
1512
+ block-size: max-content;
1513
+ max-inline-size: var(--_dialog-max-inline-size);
1514
+ max-block-size: var(--_dialog-max-block-size);
1500
1515
  background: var(--color-surface-base);
1501
- block-size: 90dvh;
1502
- max-inline-size: 28rem;
1503
1516
  box-shadow: var(--shadow-medium);
1504
1517
  border-radius: var(--_dialog-radius);
1505
- margin-block: 5dvh;
1518
+ overflow-clip-margin: 1rem;
1519
+ margin: auto 0;
1506
1520
  padding: 0;
1507
1521
  display: block;
1508
1522
  position: fixed;
1509
1523
  inset: 0;
1524
+ overflow: clip;
1525
+ }
1526
+
1527
+ @media (min-width: 36rem) {
1528
+ :where(.nc-dialog) {
1529
+ --dialog-max-block-size: 90dvh;
1530
+ margin-inline: auto;
1531
+ }
1510
1532
  }
1511
1533
 
1512
1534
  :where(.nc-dialog)[open] {
@@ -1524,13 +1546,16 @@
1524
1546
  }
1525
1547
 
1526
1548
  :where(.nc-dialog) :where(.dialog-container) {
1549
+ block-size: max-content;
1550
+ inline-size: 100%;
1551
+ max-block-size: var(--_dialog-max-block-size);
1552
+ overflow-clip-margin: 1rem;
1527
1553
  grid-template: "header header"
1528
1554
  "content content" 1fr
1529
1555
  "footer footer"
1530
1556
  / 1fr 1fr;
1531
- block-size: 100%;
1532
- inline-size: 100%;
1533
1557
  display: grid;
1558
+ overflow: clip;
1534
1559
  }
1535
1560
 
1536
1561
  :where(.nc-dialog) :where(.dialog-header) {
@@ -1768,7 +1793,7 @@
1768
1793
  --_input-border: var(--input-border, var(--border-width-thin) solid var(--color-border-base));
1769
1794
  --_input-border-radius: var(--input-border-radius, var(--border-radius-medium));
1770
1795
  --_input-box-shadow: var(--input-box-shadow, var(--shadow-inset));
1771
- --_input-outline: var(--input-outline, var(--border-width-thick) solid var(--color-brand-primary-base));
1796
+ --_input-outline: var(--input-outline, var(--border-width-medium) solid var(--color-brand-primary-base));
1772
1797
  --_input-disabled-filter: var(--input-disabled-filter, contrast(.72) opacity(.72));
1773
1798
  --_input-padding-block: var(--input-padding-block, .125lh);
1774
1799
  --_input-padding-inline: var(--input-padding-inline, 1ch);
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.6",
15
+ "version": "1.0.8",
16
16
  "publishConfig": {
17
17
  "access": "public"
18
18
  },
@@ -3,27 +3,34 @@
3
3
  --_dialog-radius: var(--dialog-radius, var(--border-radius-medium));
4
4
  --_dialog-padding-inline: var(--dialog-padding-inline, var(--spacing-base));
5
5
  --_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
- );
6
+ --_dialog-transition-duration: var(--dialog-transition-duration,
7
+ var(--transition-duration-base));
8
+ --_dialog-max-block-size: var(--dialog-max-block-size, 100dvh);
9
+ --_dialog-max-inline-size: var(--dialog-max-inline-size, 28rem);
10
10
 
11
11
  display: block;
12
12
  z-index: var(--layer-important);
13
- animation: close-dialog var(--_dialog-transition-duration) cubic-bezier(0.7, 0, 1, 1)
14
- forwards;
13
+ animation: close-dialog var(--_dialog-transition-duration) cubic-bezier(0.7, 0, 1, 1) forwards;
15
14
  transition: opacity var(--_dialog-transition-duration) cubic-bezier(0.7, 0, 1, 1);
16
15
  position: fixed;
17
16
  inset: 0;
18
17
  border: var(--border-width-thin) solid var(--color-border-base);
19
18
  inline-size: calc(100dvw - 2 * var(--spacing-base));
20
- block-size: 90dvh;
21
- max-inline-size: 28rem;
19
+ block-size: max-content;
20
+ max-inline-size: var(--_dialog-max-inline-size);
21
+ max-block-size: var(--_dialog-max-block-size);
22
22
  background: var(--color-surface-base);
23
23
  box-shadow: var(--shadow-medium);
24
- margin-block: 5dvh;
24
+ margin: auto 0;
25
25
  padding: 0;
26
26
  border-radius: var(--_dialog-radius);
27
+ overflow: clip;
28
+ overflow-clip-margin: 1rem;
29
+
30
+ @media (min-width: 36rem) {
31
+ --dialog-max-block-size: 90dvh;
32
+ margin-inline: auto;
33
+ }
27
34
 
28
35
  &[open] {
29
36
  animation: open-dialog var(--_dialog-transition-duration) cubic-bezier(0, 0.6, 0.58, 1);
@@ -45,7 +52,10 @@
45
52
  "content content" 1fr
46
53
  "footer footer" auto / 1fr 1fr;
47
54
  inline-size: 100%;
48
- block-size: 100%;
55
+ block-size: max-content;
56
+ max-block-size: var(--_dialog-max-block-size);
57
+ overflow: clip;
58
+ overflow-clip-margin: 1rem;
49
59
  }
50
60
 
51
61
  :where(.dialog-header) {
@@ -61,7 +71,7 @@
61
71
  min-inline-size: calc(2 * var(--spacing-near) + var(--_dialog-close-size));
62
72
  }
63
73
 
64
- :where(.dialog-header) > button[data-closes-dialog] {
74
+ :where(.dialog-header)>button[data-closes-dialog] {
65
75
  grid-area: close;
66
76
  inline-size: var(--_dialog-close-size);
67
77
  block-size: var(--_dialog-close-size);
@@ -11,55 +11,49 @@
11
11
  align-items: center;
12
12
  }
13
13
 
14
- :where(
15
- input[type="text"],
16
- input[type="email"],
17
- input[type="password"],
18
- input[type="number"],
19
- input[type="url"],
20
- input[type="search"],
21
- input[type="date"],
22
- input[type="month"],
23
- input[type="week"],
24
- input[type="text"],
25
- input[type="datetime"],
26
- input[type="datetime-local"],
27
- input[type="time"],
28
- input[type="tel"],
29
- input[type="color"],
30
- input[type="file"],
31
- input[type="checkbox"],
32
- input[type="radio"],
33
- textarea,
34
- select,
35
- .nc-input,
36
- .nc-select,
37
- .nc-textarea,
38
- .nc-input-checkbox,
39
- .nc-input-radio,
40
- .nc-input-label,
41
- .nc-input-color,
42
- .nc-input-field,
43
- .nc-input-error,
44
- .nc-checkbox-wrapper,
45
- .nc-input-switch,
46
- .nc-radio-field,
47
- .nc-checkbox-field
48
- ) {
14
+ :where(input[type="text"],
15
+ input[type="email"],
16
+ input[type="password"],
17
+ input[type="number"],
18
+ input[type="url"],
19
+ input[type="search"],
20
+ input[type="date"],
21
+ input[type="month"],
22
+ input[type="week"],
23
+ input[type="text"],
24
+ input[type="datetime"],
25
+ input[type="datetime-local"],
26
+ input[type="time"],
27
+ input[type="tel"],
28
+ input[type="color"],
29
+ input[type="file"],
30
+ input[type="checkbox"],
31
+ input[type="radio"],
32
+ textarea,
33
+ select,
34
+ .nc-input,
35
+ .nc-select,
36
+ .nc-textarea,
37
+ .nc-input-checkbox,
38
+ .nc-input-radio,
39
+ .nc-input-label,
40
+ .nc-input-color,
41
+ .nc-input-field,
42
+ .nc-input-error,
43
+ .nc-checkbox-wrapper,
44
+ .nc-input-switch,
45
+ .nc-radio-field,
46
+ .nc-checkbox-field) {
49
47
  --_input-background: var(--input-background, var(--color-surface-subtle));
50
48
  --_input-background-active: var(--input-background-active, var(--color-surface-base));
51
49
  --_input-color: var(--input-color, var(--color-text-base));
52
- --_input-border: var(
53
- --input-border,
54
- var(--border-width-thin) solid var(--color-border-base)
55
- );
50
+ --_input-border: var(--input-border,
51
+ var(--border-width-thin) solid var(--color-border-base));
56
52
  --_input-border-radius: var(--input-border-radius, var(--border-radius-medium));
57
53
 
58
54
  --_input-box-shadow: var(--input-box-shadow, var(--shadow-inset));
59
- --_input-outline: var(
60
- --input-outline,
61
- var(--border-width-thick) solid var(--color-brand-primary-base)
62
- );
55
+ --_input-outline: var(--input-outline,
56
+ var(--border-width-medium) solid var(--color-brand-primary-base));
63
57
  --_input-disabled-filter: var(--input-disabled-filter, contrast(0.72) opacity(0.72));
64
58
 
65
59
  --_input-padding-block: var(--input-padding-block, 0.125lh);
@@ -67,27 +61,25 @@
67
61
  --_input-hover-background: var(--input-hover-background, var(--color-brand-primary-hover));
68
62
  }
69
63
 
70
- :where(
71
- input[type="text"],
72
- input[type="email"],
73
- input[type="password"],
74
- input[type="number"],
75
- input[type="url"],
76
- input[type="search"],
77
- input[type="date"],
78
- input[type="month"],
79
- input[type="week"],
80
- input[type="text"],
81
- input[type="datetime"],
82
- input[type="datetime-local"],
83
- input[type="time"],
84
- input[type="tel"],
85
- input[type="color"],
86
- input[type="file"],
87
- textarea,
88
- select,
89
- .nc-input
90
- ) {
64
+ :where(input[type="text"],
65
+ input[type="email"],
66
+ input[type="password"],
67
+ input[type="number"],
68
+ input[type="url"],
69
+ input[type="search"],
70
+ input[type="date"],
71
+ input[type="month"],
72
+ input[type="week"],
73
+ input[type="text"],
74
+ input[type="datetime"],
75
+ input[type="datetime-local"],
76
+ input[type="time"],
77
+ input[type="tel"],
78
+ input[type="color"],
79
+ input[type="file"],
80
+ textarea,
81
+ select,
82
+ .nc-input) {
91
83
  font: inherit;
92
84
  letter-spacing: inherit;
93
85
  word-spacing: inherit;
@@ -144,13 +136,11 @@
144
136
  padding-block: var(--_input-padding-block);
145
137
  }
146
138
 
147
- :where(
148
- input[type="checkbox"]:not([class]),
149
- input[type="radio"]:not([class]),
150
- .nc-input-checkbox,
151
- .nc-input-radio,
152
- .nc-input-switch
153
- ) {
139
+ :where(input[type="checkbox"]:not([class]),
140
+ input[type="radio"]:not([class]),
141
+ .nc-input-checkbox,
142
+ .nc-input-radio,
143
+ .nc-input-switch) {
154
144
  inline-size: 1lh;
155
145
  block-size: 1lh;
156
146
  margin: 0;
@@ -233,7 +223,7 @@
233
223
  }
234
224
 
235
225
  :where(input[type="range"], .nc-input-range) {
236
- & > .nc-hint {
226
+ &>.nc-hint {
237
227
  margin-inline-start: auto;
238
228
  }
239
229
 
@@ -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
  }