@newlogic-digital/ui 3.1.0 → 3.3.0

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.
Files changed (97) hide show
  1. package/.eslintrc +13 -0
  2. package/.stylelintrc +18 -0
  3. package/README.md +15 -17
  4. package/package.json +29 -15
  5. package/public/sw.js +30 -0
  6. package/src/{main.json → data/main.json} +6 -1
  7. package/src/emails/email.prod.html +6 -0
  8. package/src/emails/email.twig.html +6 -0
  9. package/src/emails/{email.css → styles/email.css} +1 -1
  10. package/src/emails/templates/Content.twig +16 -0
  11. package/src/emails/templates/Header.twig +14 -0
  12. package/src/emails/templates/Layout.twig +23 -0
  13. package/src/emails/templates.prod/.gitkeep +0 -0
  14. package/src/scripts/Components/+.js +0 -1
  15. package/src/scripts/Components/CookieConsent.js +16 -14
  16. package/src/scripts/Layout/Main.js +3 -3
  17. package/src/scripts/Libraries/+.js +2 -1
  18. package/src/scripts/Libraries/CookieConsent.js +10 -4
  19. package/src/scripts/Libraries/Dialog.js +8 -1
  20. package/src/scripts/Libraries/Drawer.js +16 -14
  21. package/src/scripts/Libraries/Form.js +31 -0
  22. package/src/scripts/Libraries/NativeSlider.js +2 -1
  23. package/src/scripts/Libraries/ReCaptcha.js +9 -4
  24. package/src/scripts/Libraries/Script.js +19 -0
  25. package/src/scripts/Libraries/Stimulus.js +1 -31
  26. package/src/scripts/Libraries/Swup.js +7 -10
  27. package/src/scripts/Libraries/Tabs.js +5 -5
  28. package/src/scripts/Libraries/Tippy.js +3 -1
  29. package/src/scripts/Ui/+.js +0 -1
  30. package/src/scripts/Ui/Checkbox.js +4 -13
  31. package/src/scripts/Ui/Input.js +23 -69
  32. package/src/scripts/Ui/Select.js +11 -39
  33. package/src/scripts/Ui/Text.js +2 -4
  34. package/src/scripts/Utils/+.js +3 -0
  35. package/src/scripts/Utils/Functions/+.js +2 -1
  36. package/src/scripts/Utils/Functions/checkValidity.js +44 -0
  37. package/src/scripts/Utils/Functions/inView.js +7 -8
  38. package/src/scripts/Utils/Functions/replaceTag.js +12 -0
  39. package/src/scripts/Utils/cdn.js +1 -1
  40. package/src/scripts/Utils/global.js +6 -8
  41. package/src/styles/Components/+.css +1 -1
  42. package/src/styles/Components/Dropdown/+.css +1 -0
  43. package/src/styles/{Ui/Dropdown.css → Components/Dropdown/Default.css} +1 -1
  44. package/src/styles/Layout/Header.css +54 -0
  45. package/src/styles/Libraries/+.css +0 -1
  46. package/src/styles/Libraries/Drawer.css +1 -1
  47. package/src/styles/Libraries/Hint.css +4 -3
  48. package/src/styles/Libraries/NativeSlider.css +9 -1
  49. package/src/styles/Libraries/Tippy.css +1 -1
  50. package/src/styles/Ui/+.css +0 -1
  51. package/src/styles/Ui/Badge.css +1 -1
  52. package/src/styles/Ui/Btn.css +24 -6
  53. package/src/styles/Ui/Checkbox.css +28 -2
  54. package/src/styles/Ui/Heading.css +2 -1
  55. package/src/styles/Ui/Icon.css +2 -2
  56. package/src/styles/Ui/Image.css +1 -7
  57. package/src/styles/Ui/Input.css +65 -18
  58. package/src/styles/Ui/Label.css +2 -2
  59. package/src/styles/Ui/Link.css +12 -5
  60. package/src/styles/Ui/Notice.css +1 -1
  61. package/src/styles/Ui/Select.css +3 -5
  62. package/src/styles/Ui/Text.css +13 -4
  63. package/src/styles/Ui/Title.css +3 -2
  64. package/src/styles/Utils/+.css +9 -0
  65. package/src/styles/Utils/default.css +0 -7
  66. package/src/styles/Utils/keyframes.css +4 -4
  67. package/src/styles/Utils/tailwind/+.css +2 -0
  68. package/src/styles/Utils/tailwind/base.css +25 -0
  69. package/src/styles/Utils/theme/+.css +1 -0
  70. package/src/styles/Utils/vars.css +32 -8
  71. package/src/styles/main.css +2 -0
  72. package/src/templates/Components/CookieConsent.twig +2 -2
  73. package/src/templates/Layout/Main.twig +1 -7
  74. package/src/templates/Sections/Ui/Docs/@intro.html +97 -0
  75. package/src/templates/Sections/Ui/Docs/@nav.html +195 -0
  76. package/src/templates/Sections/Ui/Docs/@styles.html +100 -0
  77. package/src/templates/Sections/Ui/Docs/Default.twig +1600 -0
  78. package/src/templates/Sections/Ui/Icons.html +28 -0
  79. package/src/templates/Sections/Ui/Intro.html +136 -0
  80. package/src/templates/Sections/Ui.twig +5 -2101
  81. package/src/templates/Utils/sections.twig +2 -2
  82. package/src/views/dialog/basic.json.twig +3 -0
  83. package/src/{templates/json-tippy.twig → views/dropdown/tippy.json.twig} +3 -3
  84. package/src/views/gdpr.json +12 -0
  85. package/src/{templates → views}/index.json +2 -2
  86. package/src/{templates/ui.json → views/ui-icons.json} +3 -2
  87. package/src/{templates/gdpr.json → views/ui.json} +1 -1
  88. package/tailwind.config.cjs +69 -0
  89. package/vite.config.js +10 -0
  90. package/gulpfile.js +0 -41
  91. package/src/emails/email.twig +0 -60
  92. package/src/scripts/Components/Form.js +0 -33
  93. package/src/scripts/Ui/Radio.js +0 -23
  94. package/src/styles/Components/Item/+.css +0 -1
  95. package/src/styles/Libraries/Lazysizes.css +0 -9
  96. package/src/styles/tailwind.css +0 -2
  97. package/src/templates/dialog-basic.twig +0 -3
@@ -41,7 +41,7 @@
41
41
  will-change: transform;
42
42
  backface-visibility: hidden;
43
43
 
44
- @nest :is(:hover, :focus)& {
44
+ @nest :is(:hover, :focus-visible)& {
45
45
  visibility: visible;
46
46
  opacity: 1;
47
47
  transition-delay: 100ms;
@@ -82,6 +82,7 @@
82
82
  line-height: 0.875rem;
83
83
  white-space: nowrap;
84
84
  box-shadow: 0.25rem 0.25rem 0.5rem rgb(var(--lib-hint-bg) / 0.15);
85
+ font-weight: var(--font-normal);
85
86
 
86
87
  @nest .lib-hint-light& {
87
88
  box-shadow: 0.25rem 0.25rem 0.5rem rgb(var(--color-dark) / 0.15);
@@ -120,7 +121,7 @@
120
121
  left: calc(50% - 0.375rem);
121
122
  margin-bottom: -0.6875rem;
122
123
 
123
- @nest :is(:hover, :focus)& {
124
+ @nest :is(:hover, :focus-visible)& {
124
125
  transform: translateY(-0.5rem);
125
126
  }
126
127
  }
@@ -128,7 +129,7 @@
128
129
  &::after {
129
130
  transform: translateX(-50%);
130
131
 
131
- @nest :is(:hover, :focus)& {
132
+ @nest :is(:hover, :focus-visible)& {
132
133
  transform: translateX(-50%) translateY(-0.5rem);
133
134
  }
134
135
  }
@@ -24,7 +24,7 @@
24
24
  display: none !important;
25
25
  }
26
26
 
27
- &:not(.is-fade):not(.is-grabbing) {
27
+ &:not(.is-fade, .is-grabbing) {
28
28
  scroll-behavior: smooth;
29
29
  scroll-snap-type: x mandatory;
30
30
  }
@@ -45,6 +45,14 @@
45
45
  height: 0.75rem;
46
46
  border: 0.125rem solid rgb(var(--color-current));
47
47
  border-radius: 50%;
48
+ cursor: pointer;
49
+ position: relative;
50
+
51
+ &::after {
52
+ position: absolute;
53
+ inset: -0.5rem;
54
+ content: "";
55
+ }
48
56
 
49
57
  &[data-state*="active"] {
50
58
  background-color: rgb(var(--color-current));
@@ -9,7 +9,7 @@
9
9
  background-color: rgb(var(--color-background));
10
10
  background-clip: padding-box;
11
11
  border: 1px solid rgb(0 8 16 / 0.05);
12
- color: rgb(var(--color-current));
12
+ color: rgb(var(--color-default));
13
13
  box-shadow: 0 3px 14px -0.5px rgb(0 8 16 / 0.08);
14
14
  border-radius: var(--radius);
15
15
  left: 0.1875rem;
@@ -1,7 +1,6 @@
1
1
  @import "Badge.css";
2
2
  @import "Btn.css";
3
3
  @import "Checkbox.css";
4
- @import "Dropdown.css";
5
4
  @import "Heading.css";
6
5
  @import "Icon.css";
7
6
  @import "Image.css";
@@ -29,7 +29,7 @@
29
29
  line-height: var(--ui-badge-size);
30
30
  transition: var(--transition-opacity);
31
31
 
32
- @nest .no-touch &:is([href]:hover, button:hover) {
32
+ @nest .no-touch &:is([href], button):is(:hover, :focus-visible) {
33
33
  opacity: var(--ui-badge-hover-opacity);
34
34
  }
35
35
 
@@ -32,12 +32,13 @@
32
32
  height: var(--ui-btn-height);
33
33
  padding: var(--ui-btn-py) var(--ui-btn-px);
34
34
  border-radius: var(--ui-btn-radius);
35
- transition: var(--transition-opacity), var(--transition-background);
35
+ transition: var(--transition-opacity), var(--transition-background), var(--transition-color);
36
36
  background-color: var(--ui-btn-bg);
37
37
  color: var(--ui-btn-color);
38
38
 
39
- @nest .dark &.bg-default {
39
+ @nest .dark &.accent-dark {
40
40
  --ui-btn-color: rgb(var(--color-dark));
41
+ --color-accent: var(--color-light);
41
42
  }
42
43
 
43
44
  &:--theme-light {
@@ -59,7 +60,7 @@
59
60
  opacity: 0;
60
61
  transition: var(--transition-opacity);
61
62
 
62
- @nest .no-touch :is(:hover, :focus)&, :is(:--state-active)& {
63
+ @nest .no-touch :is(:hover, :focus-visible)&, :is(:--state-active)& {
63
64
  opacity: var(--ui-btn-hover-opacity);
64
65
  }
65
66
  }
@@ -97,8 +98,16 @@
97
98
  }
98
99
  }
99
100
 
101
+ &:--type-text {
102
+ @nest :not(:hover, :focus-visible, :--state-active)& {
103
+ --ui-btn-color: currentColor;
104
+
105
+ background-color: transparent;
106
+ }
107
+ }
108
+
100
109
  &:--type-outline {
101
- --ui-btn-color: currentColor;
110
+ --ui-btn-color: rgb(var(--color-current));
102
111
  --ui-btn-hover-opacity: 0.1;
103
112
 
104
113
  background-color: transparent;
@@ -130,6 +139,11 @@
130
139
  border-radius: 50%;
131
140
  }
132
141
 
142
+ &:--size-sm {
143
+ --ui-btn-height: 2.25rem;
144
+ --ui-btn-px: 1rem;
145
+ }
146
+
133
147
  &:--size-lg {
134
148
  --ui-btn-icon-size: 1.5rem;
135
149
  --ui-btn-height: 3rem;
@@ -138,7 +152,11 @@
138
152
 
139
153
  &:--state-loading {
140
154
  pointer-events: none;
141
- color: var(--ui-btn-bg);
155
+ color: transparent;
156
+
157
+ & > * {
158
+ opacity: 0;
159
+ }
142
160
 
143
161
  &::before {
144
162
  z-index: 1;
@@ -155,7 +173,7 @@
155
173
  margin-top: -0.625rem;
156
174
  left: 50%;
157
175
  top: 50%;
158
- opacity: 1;
176
+ opacity: 1 !important;
159
177
  }
160
178
  }
161
179
 
@@ -12,9 +12,12 @@
12
12
  --ui-checkbox-radius: 0.375rem;
13
13
  --ui-checkbox-icon: var(--icon-check);
14
14
  --ui-checkbox-icon-size: 1.125rem;
15
+ --ui-checkbox-validity-size: 0.875rem;
16
+ --ui-checkbox-validity-offset: 0.375rem;
15
17
 
16
18
  transition: var(--transition-color);
17
19
  display: inline-flex;
20
+ flex-wrap: wrap;
18
21
  align-self: flex-start;
19
22
  position: relative;
20
23
  user-select: none;
@@ -22,6 +25,11 @@
22
25
  z-index: 1;
23
26
  color: var(--ui-checkbox-color);
24
27
 
28
+ &[disabled] {
29
+ pointer-events: none;
30
+ opacity: 0.5;
31
+ }
32
+
25
33
  @nest .text-light & {
26
34
  --ui-checkbox-border-color-raw: var(--color-light);
27
35
  }
@@ -39,6 +47,15 @@
39
47
  --ui-checkbox-color: rgb(var(--color-error));
40
48
  }
41
49
 
50
+ & em {
51
+ display: block;
52
+ width: 100%;
53
+ font-size: var(--ui-checkbox-validity-size);
54
+ color: rgb(var(--color-error));
55
+ font-style: normal;
56
+ margin-top: var(--ui-checkbox-validity-offset);
57
+ }
58
+
42
59
  & input {
43
60
  position: relative;
44
61
  display: inline-flex;
@@ -80,7 +97,7 @@
80
97
  }
81
98
  }
82
99
 
83
- &:focus, &:hover {
100
+ &:is(:hover, :focus-visible) {
84
101
  --ui-checkbox-bg-raw: var(--ui-checkbox-checked-bg-raw);
85
102
  --ui-checkbox-border-color-raw: var(--ui-checkbox-checked-bg-raw);
86
103
  --ui-checkbox-border-opacity: 0.75;
@@ -111,6 +128,15 @@
111
128
  transform: scale(1);
112
129
  }
113
130
  }
131
+
132
+ &[required] {
133
+ & + * {
134
+ &::after {
135
+ color: rgb(var(--color-error));
136
+ content: " *";
137
+ }
138
+ }
139
+ }
114
140
  }
115
141
 
116
142
  & a {
@@ -118,7 +144,7 @@
118
144
  transition: var(--transition-opacity);
119
145
  color: rgb(var(--color-accent));
120
146
 
121
- @nest .no-touch &[href]:hover {
147
+ @nest .no-touch &[href]:is(:hover, :focus-visible) {
122
148
  opacity: 0.8;
123
149
  }
124
150
  }
@@ -1,9 +1,10 @@
1
1
  .ui-heading {
2
2
  --ui-heading-size: 1.5rem;
3
+ --ui-heading-weight: var(--font-bold);
3
4
  --ui-heading-size-line: 0.5rem;
4
5
 
5
6
  display: block;
6
- font-weight: var(--font-bold);
7
+ font-weight: var(--ui-heading-weight);
7
8
  font-size: var(--ui-heading-size);
8
9
  line-height: calc(var(--ui-heading-size) + var(--ui-heading-size-line));
9
10
 
@@ -14,7 +14,7 @@
14
14
  & > * {
15
15
  transition: var(--transition-opacity);
16
16
 
17
- @nest .no-touch :is([href]:hover, button:hover)& {
17
+ @nest .no-touch :is([href], button):is(:hover, :focus-visible)& {
18
18
  opacity: var(--ui-icon-hover-opacity);
19
19
  }
20
20
  }
@@ -27,7 +27,7 @@
27
27
  align-items: center;
28
28
  transition: var(--transition-opacity), var(--transition-color);
29
29
 
30
- @nest .no-touch &:is([href]:hover, button:hover) {
30
+ @nest .no-touch &:is([href], button):is(:hover, :focus-visible) {
31
31
  opacity: var(--ui-icon-hover-opacity);
32
32
  }
33
33
  }
@@ -1,18 +1,12 @@
1
1
  .ui-image {
2
2
  position: relative;
3
+ display: block;
3
4
 
4
5
  &:not(.bg-transparent) {
5
6
  background-color: rgb(var(--color-background-100));
6
7
  }
7
8
 
8
- &::before {
9
- content: "";
10
- display: block;
11
- }
12
-
13
9
  & > * {
14
- position: absolute;
15
- inset: 0;
16
10
  width: 100%;
17
11
  height: 100%;
18
12
  }
@@ -1,4 +1,4 @@
1
- .ui-input, .ui-select {
1
+ :is(.ui-input, .ui-select) {
2
2
  --ui-input-height: 3rem;
3
3
  --ui-input-height-textarea: 8rem;
4
4
  --ui-input-py: 0.75rem;
@@ -50,16 +50,16 @@
50
50
  margin-top: calc(var(--ui-input-size) / 2 * -1);
51
51
  order: -1;
52
52
 
53
- @nest [data-has~="icon-l"]& {
53
+ @nest :has(.icon-l)& {
54
54
  left: calc(var(--ui-input-px) + var(--ui-input-icon-size) + calc(var(--ui-input-px) / 1.75));
55
55
  }
56
56
 
57
- @nest [data-has~="icon-r"]& {
57
+ @nest :has(.icon-r)& {
58
58
  right: calc(var(--ui-input-px) + var(--ui-input-icon-size) + calc(var(--ui-input-px) / 1.75));
59
59
  }
60
60
  }
61
61
 
62
- & > :is(input, textarea, select, .input) {
62
+ & > :where(input, textarea, select, .input) {
63
63
  width: 100%;
64
64
  transition: var(--transition-border), var(--transition-shadow);
65
65
  box-shadow: none;
@@ -69,10 +69,15 @@
69
69
  height: var(--ui-input-height);
70
70
  font-weight: var(--ui-input-weight);
71
71
  border-radius: var(--ui-input-radius);
72
- padding: calc(var(--ui-input-py) * 1.75) var(--ui-input-px) calc(var(--ui-input-py) * 0.5);
72
+ padding: var(--ui-input-py) var(--ui-input-px);
73
73
  color: inherit;
74
74
  border: 1px solid rgb(var(--ui-input-border-color) / var(--ui-input-border-opacity));
75
75
 
76
+ @nest :has(label)& {
77
+ padding-top: calc(var(--ui-input-py) * 1.75);
78
+ padding-bottom: calc(var(--ui-input-py) * 0.5);
79
+ }
80
+
76
81
  &[disabled] {
77
82
  cursor: default;
78
83
  background-color: rgb(var(--color-background-100));
@@ -123,20 +128,13 @@
123
128
  }
124
129
  }
125
130
 
126
- @nest [data-has~="icon-l"]& {
131
+ @nest :has(.icon-l)& {
127
132
  padding-left: calc(var(--ui-input-px) + var(--ui-input-icon-size) + calc(var(--ui-input-px) / 1.75));
128
133
  }
129
134
 
130
- @nest [data-has~="icon-r"]&, :--state-invalid& {
135
+ @nest :has(.icon-r)&, :--state-invalid& {
131
136
  padding-right: calc(var(--ui-input-px) + var(--ui-input-icon-size) + calc(var(--ui-input-px) / 1.75));
132
137
  }
133
-
134
- @nest :not(:--state-placeholder)& {
135
- &:is([placeholder], [data-placeholder]) {
136
- padding-top: var(--ui-input-py);
137
- padding-bottom: var(--ui-input-py);
138
- }
139
- }
140
138
  }
141
139
 
142
140
  & > input {
@@ -203,7 +201,7 @@
203
201
  }
204
202
 
205
203
  @nest :not(:--state-active)& {
206
- &:not([placeholder]):not(:focus) {
204
+ &:not([placeholder], :focus) {
207
205
  font-size: 0;
208
206
  }
209
207
  }
@@ -221,7 +219,7 @@
221
219
  min-height: var(--ui-input-height-textarea);
222
220
  }
223
221
 
224
- & > input, & > textarea {
222
+ & > :where(input, textarea) {
225
223
  background-clip: padding-box;
226
224
  cursor: text;
227
225
 
@@ -229,7 +227,7 @@
229
227
  box-shadow: none;
230
228
  }
231
229
 
232
- @nest :is(:--state-active, :--state-placeholder)&, &:focus {
230
+ @nest &:focus, :--state-active&, :has([placeholder] ~ label)& {
233
231
  & ~ label {
234
232
  transform: translateY(calc(var(--ui-input-size) / 1.4 * -1)) scale(0.8);
235
233
  }
@@ -387,7 +385,7 @@
387
385
  text-overflow: ellipsis;
388
386
  overflow: hidden;
389
387
 
390
- @media (--media-768) {
388
+ @media (--media-touch) {
391
389
  padding-top: 0.875rem;
392
390
  padding-bottom: 0.875rem;
393
391
  }
@@ -405,6 +403,55 @@
405
403
  }
406
404
  }
407
405
 
406
+ :is(.ui-input, .ui-select, .ui-input-group) {
407
+ --ui-input-validity-size: 0.875rem;
408
+ --ui-input-validity-offset: 0.375rem;
409
+
410
+ & em {
411
+ display: block;
412
+ font-size: var(--ui-input-validity-size);
413
+ color: rgb(var(--color-error));
414
+ font-style: normal;
415
+ margin-top: var(--ui-input-validity-offset);
416
+ }
417
+ }
418
+
419
+ .ui-input-group {
420
+ display: flex;
421
+
422
+ & .ui-btn {
423
+ height: auto;
424
+
425
+ & + .ui-input {
426
+ z-index: 1;
427
+ }
428
+ }
429
+
430
+ & > * {
431
+ & + :is(.ui-input, .ui-select) {
432
+ margin-left: -1px;
433
+
434
+ & :is(input, select):not(:focus) {
435
+ border-left-color: transparent;
436
+ }
437
+ }
438
+
439
+ &:not(:first-child) {
440
+ &, & :is(input, select) {
441
+ border-top-left-radius: 0;
442
+ border-bottom-left-radius: 0;
443
+ }
444
+ }
445
+
446
+ &:not(:last-child) {
447
+ &, & :is(input, select) {
448
+ border-top-right-radius: 0;
449
+ border-bottom-right-radius: 0;
450
+ }
451
+ }
452
+ }
453
+ }
454
+
408
455
  .pcr-app {
409
456
  border-radius: var(--radius);
410
457
  overflow: hidden;
@@ -4,8 +4,8 @@
4
4
  --ui-label-spacing: 0.05rem;
5
5
 
6
6
  display: block;
7
- font-size: var(--ui-title-size);
8
- line-height: calc(var(--ui-title-size) + var(--ui-title-size-line));
7
+ font-size: var(--ui-label-size);
8
+ line-height: calc(var(--ui-label-size-line) + var(--ui-label-size-line));
9
9
  font-weight: var(--font-medium);
10
10
 
11
11
  & ~ :is([class^="ui-"]:not(&), [class^="c-"]) {
@@ -1,7 +1,8 @@
1
1
  .ui-link {
2
2
  --ui-link-size: 0.875rem;
3
- --ui-link-weight: var(--font-medium);
3
+ --ui-link-weight: var(--font-normal);
4
4
  --ui-link-hover-opacity: 0.8;
5
+ --ui-link-hover-color: rgb(var(--color-accent));
5
6
  --ui-link-underline-opacity: 0.5;
6
7
 
7
8
  display: inline-flex;
@@ -9,15 +10,21 @@
9
10
  cursor: pointer;
10
11
  font-size: var(--ui-link-size);
11
12
  font-weight: var(--ui-link-weight);
12
- transition: var(--transition-opacity);
13
+ transition: var(--transition-opacity), var(--transition-color);
13
14
  position: relative;
14
15
  white-space: nowrap;
16
+ line-height: 1.5;
15
17
 
16
- @nest .no-touch &:hover {
18
+ &:--size-sm {
19
+ --ui-link-size: 0.75rem;
20
+ }
21
+
22
+ @nest &:focus-visible, .no-touch &:is([href], button):hover {
17
23
  opacity: var(--ui-link-hover-opacity);
24
+ color: var(--ui-link-hover-color);
18
25
  }
19
26
 
20
- &::after {
27
+ &[data-type~="underline"]::after {
21
28
  content: "";
22
29
  border-bottom: 1px solid currentColor;
23
30
  opacity: 0;
@@ -26,7 +33,7 @@
26
33
  transition: var(--transition-opacity), var(--transition-transform);
27
34
  transform: translateY(-0.25rem);
28
35
 
29
- @nest .no-touch :not([href^="tel:"], [href^="mailto:"]):hover& {
36
+ @nest .no-touch :not([href^="tel:"], [href^="mailto:"]):is(:hover, :focus-visible)& {
30
37
  transform: none;
31
38
  opacity: var(--ui-link-underline-opacity);
32
39
  }
@@ -40,7 +40,7 @@
40
40
  transition: var(--transition-opacity);
41
41
  color: currentColor !important;
42
42
 
43
- @nest .no-touch &[href]:hover {
43
+ @nest .no-touch &[href]:is(:hover, :focus-visible) {
44
44
  opacity: 0.8;
45
45
  }
46
46
  }
@@ -1,7 +1,4 @@
1
1
  .ui-select {
2
- cursor: pointer;
3
- user-select: none;
4
-
5
2
  &:--state-active {
6
3
  & label {
7
4
  transform: translateY(calc(var(--ui-input-size) / 1.4 * -1)) scale(0.8);
@@ -35,9 +32,10 @@
35
32
  position: relative;
36
33
  z-index: 1;
37
34
  text-overflow: ellipsis;
38
- cursor: pointer;
39
35
  -webkit-appearance: none;
40
36
  -moz-appearance: none;
37
+ cursor: pointer;
38
+ user-select: none;
41
39
 
42
40
  @nest [tabindex]& {
43
41
  pointer-events: none;
@@ -131,7 +129,7 @@
131
129
  font-size: var(--ui-input-size);
132
130
  border-radius: var(--radius);
133
131
 
134
- @nest .no-touch &:is(:hover, :focus) {
132
+ @nest .no-touch &:is(:hover, :focus-visible) {
135
133
  background-color: rgb(var(--color-accent) / 0.1);
136
134
  }
137
135
  }
@@ -1,11 +1,20 @@
1
1
  .ui-text {
2
- --ui-text-size: 0.9375rem;
2
+ --ui-text-size: 0.875rem;
3
+ --ui-text-size-line: 0.75rem;
3
4
  --ui-text-weight: var(--font-normal);
4
5
  --ui-text-weight-bold: var(--font-semibold);
5
6
 
6
7
  font-weight: var(--ui-text-weight);
7
8
  font-size: var(--ui-text-size);
8
- line-height: calc(var(--ui-text-size) + 0.75rem);
9
+ line-height: calc(var(--ui-text-size) + var(--ui-text-size-line));
10
+
11
+ &:--size-base {
12
+ --ui-text-size: 1rem;
13
+ }
14
+
15
+ &:--size-lg {
16
+ --ui-text-size: 1.125rem;
17
+ }
9
18
 
10
19
  & a {
11
20
  text-decoration: underline;
@@ -14,7 +23,7 @@
14
23
  &:not([class*="text-"]) {
15
24
  color: rgb(var(--color-accent));
16
25
 
17
- @nest .no-touch &[href]:hover {
26
+ @nest .no-touch &[href]:is(:hover, :focus-visible) {
18
27
  opacity: 0.8;
19
28
  }
20
29
  }
@@ -65,7 +74,7 @@
65
74
 
66
75
  & p {
67
76
  line-height: inherit;
68
- margin: 0;
77
+ margin: 0 0 0.25rem;
69
78
 
70
79
  &:empty {
71
80
  line-height: 1rem;
@@ -1,12 +1,13 @@
1
1
  .ui-title {
2
2
  --ui-title-size: 0.875rem;
3
- --ui-title-size-line: 0.5rem;
3
+ --ui-title-size-line: 0.25rem;
4
4
  --ui-title-spacing: 0.05rem;
5
+ --ui-title-weight: var(--font-semibold);
5
6
 
6
7
  display: block;
7
8
  font-size: var(--ui-title-size);
8
9
  line-height: calc(var(--ui-title-size) + var(--ui-title-size-line));
9
- font-weight: var(--font-semibold);
10
+ font-weight: var(--ui-title-weight);
10
11
 
11
12
  &[class*="uppercase"] {
12
13
  letter-spacing: var(--ui-title-spacing);
@@ -0,0 +1,9 @@
1
+ @import "default.css";
2
+ @import "icons.css";
3
+ @import "keyframes.css";
4
+ @import "normalize.css";
5
+ @import "print.css";
6
+ @import "tailwind/+.css";
7
+ @import "theme/+.css";
8
+ @import "vars.css";
9
+ @import "vendor.css";
@@ -114,13 +114,6 @@ a {
114
114
  border-color: rgb(var(--color-current) / var(--tw-text-opacity, 1));
115
115
  }
116
116
 
117
- [class*="aspect-"] {
118
- &::before {
119
- content: "";
120
- display: block;
121
- }
122
- }
123
-
124
117
  [hidden] {
125
118
  display: none;
126
119
  }
@@ -48,7 +48,7 @@
48
48
  transform: translateY(2rem);
49
49
  }
50
50
 
51
- to {
51
+ 100% {
52
52
  opacity: 1;
53
53
  transform: translateY(0);
54
54
  }
@@ -60,7 +60,7 @@
60
60
  transform: translateY(-2rem);
61
61
  }
62
62
 
63
- to {
63
+ 100% {
64
64
  opacity: 1;
65
65
  transform: translateY(0);
66
66
  }
@@ -96,7 +96,7 @@
96
96
  transform: translateY(0);
97
97
  }
98
98
 
99
- to {
99
+ 100% {
100
100
  opacity: 0;
101
101
  transform: translateY(-2rem);
102
102
  }
@@ -108,7 +108,7 @@
108
108
  transform: translateY(0);
109
109
  }
110
110
 
111
- to {
111
+ 100% {
112
112
  opacity: 0;
113
113
  transform: translateY(2rem);
114
114
  }
@@ -0,0 +1,2 @@
1
+ @import "base.css";
2
+ @import "gutters.css";
@@ -12,4 +12,29 @@
12
12
  animation-duration: 0.5s;
13
13
  animation-fill-mode: both;
14
14
  }
15
+
16
+ .slider {
17
+ margin-left: calc(var(--container-padding-calc) * -1);
18
+ margin-right: calc(var(--container-padding-calc) * -1);
19
+ padding-left: var(--container-padding-calc);
20
+ scroll-padding-left: var(--container-padding-calc);
21
+ scroll-padding-right: var(--container-padding-calc);
22
+ overflow-x: auto;
23
+ overflow-y: hidden;
24
+ -webkit-overflow-scrolling: touch;
25
+ user-select: none;
26
+ scrollbar-width: none !important;
27
+ -ms-overflow-style: none;
28
+ display: flex;
29
+
30
+ & > * {
31
+ flex: 0 0 auto;
32
+ scroll-snap-align: start;
33
+
34
+ &:last-child {
35
+ box-sizing: content-box;
36
+ border-right: var(--container-padding-calc) solid transparent;
37
+ }
38
+ }
39
+ }
15
40
  }