@newlogic-digital/ui 3.3.0 → 3.5.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 (151) hide show
  1. package/README.md +10 -14
  2. package/package.json +23 -23
  3. package/src/data/main.json +2 -8
  4. package/src/emails/{templates/Content.twig → templates.test/Content.latte} +10 -2
  5. package/src/emails/{templates/Header.twig → templates.test/Header.latte} +1 -1
  6. package/src/emails/{templates/Layout.twig → templates.test/Layout.latte} +2 -2
  7. package/src/icons.svg +34 -28
  8. package/src/scripts/Components/CookieConsent.js +22 -28
  9. package/src/scripts/Layout/Header.js +25 -11
  10. package/src/scripts/Layout/Main.js +25 -55
  11. package/src/scripts/Libraries/+.js +4 -5
  12. package/src/scripts/Libraries/Dialog.js +37 -72
  13. package/src/scripts/Libraries/Drawer.js +22 -21
  14. package/src/scripts/Libraries/Form.js +8 -13
  15. package/src/scripts/Libraries/Naja.js +33 -0
  16. package/src/scripts/Libraries/ReCaptcha.js +14 -4
  17. package/src/scripts/Libraries/Ripple.js +6 -22
  18. package/src/scripts/Libraries/Script.js +1 -2
  19. package/src/scripts/Libraries/Slider.js +160 -0
  20. package/src/scripts/Libraries/Stimulus.js +0 -1
  21. package/src/scripts/Libraries/Swup.js +54 -38
  22. package/src/scripts/Libraries/Tippy.js +17 -20
  23. package/src/scripts/Ui/+.js +3 -3
  24. package/src/scripts/Ui/Check.js +8 -0
  25. package/src/scripts/Ui/Control.js +186 -0
  26. package/src/scripts/Ui/ControlSelect.js +24 -0
  27. package/src/scripts/Ui/Text.js +8 -10
  28. package/src/scripts/Utils/Functions/+.js +3 -3
  29. package/src/scripts/Utils/Functions/importScript.js +1 -1
  30. package/src/scripts/Utils/Functions/importStyle.js +1 -1
  31. package/src/scripts/Utils/Functions/inputStep.js +9 -0
  32. package/src/scripts/Utils/Functions/inputValidity.js +57 -0
  33. package/src/scripts/Utils/Functions/loadStimulus.js +12 -9
  34. package/src/scripts/Utils/Functions/replaceScript.js +4 -0
  35. package/src/scripts/Utils/Functions/replaceTag.js +1 -5
  36. package/src/scripts/Utils/cdn.js +2 -3
  37. package/src/scripts/Utils/global.js +1 -1
  38. package/src/styles/Components/+.css +1 -1
  39. package/src/styles/Components/CookieConsent.css +22 -25
  40. package/src/styles/Components/Dialog/Default.css +10 -62
  41. package/src/styles/Components/Dropdown/Default.css +6 -3
  42. package/src/styles/Components/Field.css +1 -0
  43. package/src/styles/Layout/Header.css +13 -17
  44. package/src/styles/Layout/Main.css +8 -91
  45. package/src/styles/Layout/Nav.css +31 -27
  46. package/src/styles/Libraries/+.css +1 -2
  47. package/src/styles/Libraries/Datepicker.css +38 -229
  48. package/src/styles/Libraries/Dialog.css +1 -19
  49. package/src/styles/Libraries/Drawer.css +17 -29
  50. package/src/styles/Libraries/Hint.css +86 -101
  51. package/src/styles/Libraries/Pickr.css +13 -0
  52. package/src/styles/Libraries/Ripple.css +1 -29
  53. package/src/styles/Libraries/Tippy.css +25 -39
  54. package/src/styles/Ui/+.css +6 -5
  55. package/src/styles/Ui/Badge.css +7 -82
  56. package/src/styles/Ui/Btn.css +13 -226
  57. package/src/styles/Ui/Check.css +1 -0
  58. package/src/styles/Ui/Control.css +47 -0
  59. package/src/styles/Ui/ControlSelect.css +66 -0
  60. package/src/styles/Ui/Dot.css +22 -0
  61. package/src/styles/Ui/Group.css +1 -0
  62. package/src/styles/Ui/Heading.css +3 -22
  63. package/src/styles/Ui/Image.css +1 -17
  64. package/src/styles/Ui/Info.css +1 -0
  65. package/src/styles/Ui/Label.css +1 -14
  66. package/src/styles/Ui/Link.css +2 -41
  67. package/src/styles/Ui/Notice.css +1 -47
  68. package/src/styles/Ui/Progress.css +1 -56
  69. package/src/styles/Ui/Switch.css +1 -70
  70. package/src/styles/Ui/Text.css +4 -245
  71. package/src/styles/Ui/Title.css +5 -13
  72. package/src/styles/Utils/+.css +3 -4
  73. package/src/styles/Utils/breakpoints.css +1 -0
  74. package/src/styles/Utils/config.css +5 -0
  75. package/src/styles/Utils/default.css +8 -122
  76. package/src/styles/Utils/icons.css +3 -7
  77. package/src/styles/Utils/keyframes.css +1 -182
  78. package/src/styles/Utils/{tailwind/base.css → tailwind.css} +31 -21
  79. package/src/styles/Utils/theme/+.css +1 -1
  80. package/src/styles/Utils/theme/main.css +14 -23
  81. package/src/styles/main.css +19 -15
  82. package/src/styles/tinymce.css +34 -0
  83. package/src/templates/Components/CookieConsent.latte +28 -0
  84. package/src/templates/Components/Dialogs/Basic.latte +22 -0
  85. package/src/templates/Layout/{Header.twig → Header.latte} +15 -17
  86. package/src/templates/Layout/Main.latte +62 -0
  87. package/src/templates/Sections/Gdpr.latte +127 -0
  88. package/src/templates/Sections/Site.latte +141 -0
  89. package/src/templates/Sections/Ui/Docs/@intro.html +13 -62
  90. package/src/templates/Sections/Ui/Docs/@nav.html +41 -92
  91. package/src/templates/Sections/Ui/Docs/@styles.html +2 -6
  92. package/src/templates/Sections/Ui/Docs/Default.latte +1059 -0
  93. package/src/templates/Sections/Ui/Icons.html +11 -9
  94. package/src/templates/Sections/Ui/Intro.html +66 -37
  95. package/src/templates/Sections/Ui.latte +8 -0
  96. package/src/templates/Ui/+.latte +5 -0
  97. package/src/templates/Ui/Check.latte +7 -0
  98. package/src/templates/Ui/Control.latte +9 -0
  99. package/src/templates/Ui/ControlDate.latte +14 -0
  100. package/src/templates/Ui/ControlSelect.latte +9 -0
  101. package/src/templates/Ui/ControlTime.latte +14 -0
  102. package/src/templates/Utils/sections.latte +3 -0
  103. package/src/views/dialog/basic.json.latte +5 -0
  104. package/src/views/dropdown/{tippy.json.twig → tippy.json.latte} +7 -4
  105. package/src/views/email/email.latte +6 -0
  106. package/src/views/email/email.test.latte +6 -0
  107. package/src/views/gdpr.json +1 -1
  108. package/src/views/index.json +1 -1
  109. package/src/views/site.json +11 -0
  110. package/src/views/ui-icons.json +1 -1
  111. package/src/views/ui.json +1 -1
  112. package/vite.config.js +16 -6
  113. package/.eslintrc +0 -13
  114. package/.stylelintrc +0 -18
  115. package/public/sw.js +0 -30
  116. package/src/emails/email.prod.html +0 -6
  117. package/src/emails/email.twig.html +0 -6
  118. package/src/scripts/Libraries/Anchor.js +0 -35
  119. package/src/scripts/Libraries/NativeSlider.js +0 -138
  120. package/src/scripts/Libraries/Tabs.js +0 -16
  121. package/src/scripts/Ui/Checkbox.js +0 -10
  122. package/src/scripts/Ui/Input.js +0 -259
  123. package/src/scripts/Ui/Select.js +0 -53
  124. package/src/scripts/Utils/Functions/checkValidity.js +0 -44
  125. package/src/scripts/Utils/Functions/dataValue.js +0 -52
  126. package/src/scripts/Utils/Functions/inView.js +0 -24
  127. package/src/styles/Components/Form/+.css +0 -1
  128. package/src/styles/Components/Form/CookieConsent.css +0 -31
  129. package/src/styles/Libraries/NativeSlider.css +0 -60
  130. package/src/styles/Libraries/Tabs.css +0 -19
  131. package/src/styles/Ui/Checkbox.css +0 -151
  132. package/src/styles/Ui/Icon.css +0 -33
  133. package/src/styles/Ui/Input.css +0 -467
  134. package/src/styles/Ui/Radio.css +0 -4
  135. package/src/styles/Ui/Select.css +0 -137
  136. package/src/styles/Utils/normalize.css +0 -223
  137. package/src/styles/Utils/tailwind/+.css +0 -2
  138. package/src/styles/Utils/tailwind/gutters.css +0 -346
  139. package/src/styles/Utils/vars.css +0 -126
  140. package/src/styles/Utils/vendor.css +0 -1
  141. package/src/templates/Components/CookieConsent.twig +0 -30
  142. package/src/templates/Components/Dialogs/Basic.twig +0 -24
  143. package/src/templates/Layout/Main.twig +0 -49
  144. package/src/templates/Sections/Gdpr.twig +0 -64
  145. package/src/templates/Sections/Ui/Docs/Default.twig +0 -1600
  146. package/src/templates/Sections/Ui.twig +0 -8
  147. package/src/templates/Utils/sections.twig +0 -3
  148. package/src/views/dialog/basic.json.twig +0 -3
  149. package/tailwind.config.cjs +0 -69
  150. /package/src/emails/{templates.prod → templates}/.gitkeep +0 -0
  151. /package/src/templates/Layout/{Footer.twig → Footer.latte} +0 -0
@@ -1,467 +0,0 @@
1
- :is(.ui-input, .ui-select) {
2
- --ui-input-height: 3rem;
3
- --ui-input-height-textarea: 8rem;
4
- --ui-input-py: 0.75rem;
5
- --ui-input-px: 1rem;
6
- --ui-input-size: 0.875rem;
7
- --ui-input-icon-size: 1.25rem;
8
- --ui-input-icon-spacing: 0.5rem;
9
- --ui-input-weight: var(--font-medium);
10
- --ui-input-border-color: var(--color-current);
11
- --ui-input-border-opacity: 0.15;
12
- --ui-input-radius: var(--radius);
13
-
14
- position: relative;
15
- display: flex;
16
- flex-direction: column;
17
- font-size: var(--ui-input-size);
18
-
19
- @media (--media-d) {
20
- --ui-input-height-textarea: 12rem;
21
- }
22
-
23
- &:--size-lg {
24
- --ui-input-height: 3rem;
25
- }
26
-
27
- & svg {
28
- width: 1em;
29
- height: 1em;
30
- display: block;
31
- }
32
-
33
- & > label {
34
- display: block;
35
- position: absolute;
36
- z-index: 1;
37
- pointer-events: none;
38
- transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), var(--transition-color);
39
- transform-origin: 0 50%;
40
- white-space: nowrap;
41
- text-overflow: ellipsis;
42
- overflow: hidden;
43
- transform: perspective(100px);
44
- will-change: transform;
45
- font-weight: var(--ui-input-weight);
46
- left: var(--ui-input-px);
47
- right: var(--ui-input-px);
48
- top: calc(var(--ui-input-height) / 2);
49
- line-height: var(--ui-input-size);
50
- margin-top: calc(var(--ui-input-size) / 2 * -1);
51
- order: -1;
52
-
53
- @nest :has(.icon-l)& {
54
- left: calc(var(--ui-input-px) + var(--ui-input-icon-size) + calc(var(--ui-input-px) / 1.75));
55
- }
56
-
57
- @nest :has(.icon-r)& {
58
- right: calc(var(--ui-input-px) + var(--ui-input-icon-size) + calc(var(--ui-input-px) / 1.75));
59
- }
60
- }
61
-
62
- & > :where(input, textarea, select, .input) {
63
- width: 100%;
64
- transition: var(--transition-border), var(--transition-shadow);
65
- box-shadow: none;
66
- line-height: normal;
67
- background-color: transparent;
68
- font-size: inherit;
69
- height: var(--ui-input-height);
70
- font-weight: var(--ui-input-weight);
71
- border-radius: var(--ui-input-radius);
72
- padding: var(--ui-input-py) var(--ui-input-px);
73
- color: inherit;
74
- border: 1px solid rgb(var(--ui-input-border-color) / var(--ui-input-border-opacity));
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
-
81
- &[disabled] {
82
- cursor: default;
83
- background-color: rgb(var(--color-background-100));
84
- }
85
-
86
- &[required] {
87
- & ~ label {
88
- &::after {
89
- color: rgb(var(--color-error));
90
- content: " *";
91
- }
92
- }
93
- }
94
-
95
- &:focus {
96
- --ui-input-border-opacity: 1;
97
- --ui-input-border-color: var(--color-accent);
98
-
99
- box-shadow:
100
- 0 0 0 0 rgb(var(--color-current)),
101
- 0 0 0 3px rgb(var(--color-accent) / 0.15),
102
- 0 1px 2px 0 rgb(var(--color-current) / 0.05);
103
-
104
- @nest .dark & {
105
- box-shadow:
106
- 0 0 0 0 rgb(var(--color-current)),
107
- 0 0 0 3px rgb(var(--color-accent) / 0.3),
108
- 0 1px 2px 0 rgb(var(--color-current) / 0.05);
109
- }
110
- }
111
-
112
- @nest :--state-invalid& {
113
- border-color: rgb(var(--color-error));
114
- box-shadow: none;
115
-
116
- &:focus {
117
- box-shadow:
118
- 0 0 0 0 rgb(var(--color-current)),
119
- 0 0 0 3px rgb(var(--color-error) / 0.1),
120
- 0 1px 2px 0 rgb(var(--color-current) / 0.05);
121
-
122
- @nest .dark & {
123
- box-shadow:
124
- 0 0 0 0 rgb(var(--color-current)),
125
- 0 0 0 3px rgb(var(--color-error) / 0.2),
126
- 0 1px 2px 0 rgb(var(--color-current) / 0.05);
127
- }
128
- }
129
- }
130
-
131
- @nest :has(.icon-l)& {
132
- padding-left: calc(var(--ui-input-px) + var(--ui-input-icon-size) + calc(var(--ui-input-px) / 1.75));
133
- }
134
-
135
- @nest :has(.icon-r)&, :--state-invalid& {
136
- padding-right: calc(var(--ui-input-px) + var(--ui-input-icon-size) + calc(var(--ui-input-px) / 1.75));
137
- }
138
- }
139
-
140
- & > input {
141
- &::-ms-clear {
142
- display: none;
143
- }
144
-
145
- &[type="number"] {
146
- -moz-appearance: textfield;
147
-
148
- &::-webkit-outer-spin-button,
149
- &::-webkit-inner-spin-button {
150
- -webkit-appearance: none;
151
- }
152
-
153
- & ~ .icon {
154
- position: absolute;
155
- right: calc(var(--ui-input-height) / 4 - 0.25rem);
156
- color: rgb(var(--color-primary));
157
- cursor: pointer;
158
- user-select: none;
159
- font-size: 1.25rem;
160
- top: auto;
161
- margin-top: auto;
162
- width: 1em;
163
- height: 1em;
164
- background-color: rgb(var(--color-accent));
165
-
166
- &.icon-angle-up {
167
- top: calc((var(--ui-input-height) / 2) - 1.25rem + 0.1875rem);
168
- mask: var(--icon-angle-up);
169
- }
170
-
171
- &.icon-angle-down {
172
- top: calc((var(--ui-input-height) / 2) - 0.1875rem);
173
- mask: var(--icon-angle-down);
174
- }
175
- }
176
-
177
- & ~ .icon-r {
178
- margin-right: calc(var(--ui-input-height) / 4 + var(--ui-input-icon-spacing));
179
- }
180
- }
181
-
182
- &[type^="date"] {
183
- appearance: none;
184
-
185
- &::-webkit-date-and-time-value {
186
- text-align: left;
187
- }
188
-
189
- @nest :not(:--state-active)&, html:not(.mobile) & {
190
- font-size: 0;
191
- }
192
-
193
- @nest html.mobile:not(.safari) & {
194
- padding-left: calc(var(--ui-input-px) - 0.3125rem);
195
- }
196
- }
197
-
198
- &[type="time"] {
199
- &::-webkit-calendar-picker-indicator {
200
- display: none;
201
- }
202
-
203
- @nest :not(:--state-active)& {
204
- &:not([placeholder], :focus) {
205
- font-size: 0;
206
- }
207
- }
208
-
209
- @nest html.mobile:not(.safari) & {
210
- padding-left: calc(var(--ui-input-px) - 0.3125rem);
211
- appearance: none;
212
- }
213
- }
214
- }
215
-
216
- & > textarea {
217
- resize: vertical;
218
- overflow: hidden;
219
- min-height: var(--ui-input-height-textarea);
220
- }
221
-
222
- & > :where(input, textarea) {
223
- background-clip: padding-box;
224
- cursor: text;
225
-
226
- &:invalid {
227
- box-shadow: none;
228
- }
229
-
230
- @nest &:focus, :--state-active&, :has([placeholder] ~ label)& {
231
- & ~ label {
232
- transform: translateY(calc(var(--ui-input-size) / 1.4 * -1)) scale(0.8);
233
- }
234
- }
235
- }
236
-
237
- & > .input {
238
- position: absolute;
239
- inset: 0;
240
- pointer-events: none;
241
- display: flex;
242
- align-items: center;
243
-
244
- & span {
245
- color: transparent;
246
- }
247
- }
248
-
249
- & > [class^="icon-"] {
250
- font-weight: var(--font-medium);
251
- position: absolute;
252
- z-index: 10;
253
- transition: var(--transition-opacity);
254
- content: "";
255
- top: calc(var(--ui-input-height) / 2);
256
- margin-top: calc(var(--ui-input-icon-size) / -2);
257
- font-size: var(--ui-input-icon-size);
258
- width: 1em;
259
- height: 1em;
260
- display: flex;
261
- justify-content: center;
262
- align-items: center;
263
-
264
- &.icon-r {
265
- right: calc(var(--ui-input-px));
266
-
267
- & + .icon-r {
268
- right: calc(var(--ui-input-px) + var(--ui-input-icon-size) + var(--ui-input-icon-spacing));
269
- }
270
- }
271
-
272
- &.icon-l {
273
- left: calc(var(--ui-input-px));
274
-
275
- & + .icon-l {
276
- left: calc(var(--ui-input-px) + var(--ui-input-icon-size) + var(--ui-input-icon-spacing));
277
- }
278
- }
279
-
280
- &[aria-label]:not([class*="lib-hint"]) {
281
- &::after {
282
- content: attr(aria-label);
283
- font-size: var(--ui-input-size);
284
- display: block;
285
- margin-top: -1px;
286
- }
287
- }
288
-
289
- &[class*="lib-hint"] {
290
- &::after {
291
- white-space: normal;
292
- line-height: 1.5;
293
- word-wrap: normal;
294
- width: 10rem;
295
- font-weight: var(--font-normal);
296
- font-size: 0.75rem;
297
- }
298
- }
299
- }
300
-
301
- &:--type-color {
302
- & .color {
303
- width: var(--ui-input-icon-size);
304
- height: var(--ui-input-icon-size);
305
- border-radius: 50%;
306
- left: calc(var(--ui-input-px) / 1.25);
307
- overflow: hidden;
308
- position: absolute;
309
- display: block;
310
- top: calc(var(--ui-input-height) / 2);
311
- margin-top: calc(var(--ui-input-icon-size) / -2);
312
- border: 1px solid rgb(0 0 0 / 0.15);
313
- }
314
-
315
- & input {
316
- padding-left: calc(var(--ui-input-px) + var(--ui-input-icon-size) + calc(var(--ui-input-px) / 1.75));
317
- }
318
- }
319
-
320
- &:--type-file {
321
- color: rgb(var(--color-current));
322
- font-weight: var(--font-normal);
323
- border-radius: var(--ui-input-radius);
324
- transition: var(--transition-border);
325
- position: relative;
326
- width: 100%;
327
- display: flex;
328
- flex-direction: row;
329
- line-height: normal;
330
- height: var(--ui-input-height);
331
- background-color: rgb(var(--color-background));
332
- border: 1px solid rgb(var(--color-current) / 0.15);
333
-
334
- &:--state-invalid {
335
- border-color: rgb(var(--color-error));
336
- }
337
-
338
- & [type="file"] {
339
- cursor: pointer;
340
- opacity: 0;
341
- font-size: 0;
342
- display: block;
343
- position: absolute;
344
- inset: 0;
345
- width: 100%;
346
- height: 100%;
347
- z-index: 10;
348
-
349
- & + .icon {
350
- font-size: var(--ui-input-size);
351
- display: flex;
352
- align-items: center;
353
- padding: 0.5625rem 1.25rem 0.5625rem 2.75rem;
354
- color: rgb(var(--color-current) / 0.75);
355
- white-space: nowrap;
356
- background-color: rgb(var(--color-current) / 0.05);
357
- border-top-left-radius: var(--ui-input-radius);
358
- border-bottom-left-radius: var(--ui-input-radius);
359
-
360
- @media (--media-t) {
361
- padding-top: 0.875rem;
362
- padding-bottom: 0.875rem;
363
- line-height: 1rem;
364
- }
365
-
366
- &::before {
367
- position: absolute;
368
- left: 1rem;
369
- top: 50%;
370
- font-size: 1.125rem;
371
- margin-top: -0.5625rem;
372
- content: "";
373
- width: 1em;
374
- height: 1em;
375
- mask: var(--icon-upload);
376
- background-color: currentColor;
377
- }
378
- }
379
-
380
- & ~ span:not([class^="icon"]) {
381
- font-size: var(--ui-input-size);
382
- padding: 0.5625rem 1rem;
383
- align-self: center;
384
- white-space: nowrap;
385
- text-overflow: ellipsis;
386
- overflow: hidden;
387
-
388
- @media (--media-touch) {
389
- padding-top: 0.875rem;
390
- padding-bottom: 0.875rem;
391
- }
392
-
393
- &[data-placeholder]::before {
394
- content: attr(data-placeholder);
395
- color: rgb(var(--color-current) / 0.6);
396
- }
397
- }
398
- }
399
-
400
- &:focus-within {
401
- border-color: rgb(var(--color-current) / 0.25);
402
- }
403
- }
404
- }
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
-
455
- .pcr-app {
456
- border-radius: var(--radius);
457
- overflow: hidden;
458
-
459
- @nest .dark & {
460
- background: rgb(var(--color-background-200));
461
-
462
- & .pcr-interaction input {
463
- background: rgb(var(--color-background-100));
464
- box-shadow: none !important;
465
- }
466
- }
467
- }
@@ -1,4 +0,0 @@
1
- .ui-radio {
2
- --ui-checkbox-icon: var(--icon-radio);
3
- --ui-checkbox-radius: 50%;
4
- }
@@ -1,137 +0,0 @@
1
- .ui-select {
2
- &:--state-active {
3
- & label {
4
- transform: translateY(calc(var(--ui-input-size) / 1.4 * -1)) scale(0.8);
5
- }
6
- }
7
-
8
- &::after {
9
- width: 1em;
10
- height: 1em;
11
- background-color: currentColor;
12
- content: "";
13
- position: absolute;
14
- z-index: 1;
15
- font-size: 1.5rem;
16
- right: calc(var(--ui-input-height) / 4);
17
- top: calc(var(--ui-input-height) / 2);
18
- margin-top: -0.75rem;
19
- will-change: transform;
20
- transition: transform 200ms;
21
- mask: var(--icon-angle-down);
22
- pointer-events: none;
23
-
24
- @nest :--state-focus& {
25
- @nest .no-touch:not(.macintel) & {
26
- transform: rotate(180deg);
27
- }
28
- }
29
- }
30
-
31
- & select {
32
- position: relative;
33
- z-index: 1;
34
- text-overflow: ellipsis;
35
- -webkit-appearance: none;
36
- -moz-appearance: none;
37
- cursor: pointer;
38
- user-select: none;
39
-
40
- @nest [tabindex]& {
41
- pointer-events: none;
42
- }
43
-
44
- @nest [tabindex]:--state-focus& {
45
- --ui-input-border-opacity: 1;
46
- --ui-input-border-color: var(--color-accent);
47
-
48
- box-shadow:
49
- 0 0 0 0 rgb(var(--color-current)),
50
- 0 0 0 3px rgb(var(--color-accent) / 0.15),
51
- 0 1px 2px 0 rgb(var(--color-current) / 0.05);
52
-
53
- @nest .dark & {
54
- box-shadow:
55
- 0 0 0 0 rgb(var(--color-current)),
56
- 0 0 0 3px rgb(var(--color-accent) / 0.3),
57
- 0 1px 2px 0 rgb(var(--color-current) / 0.05);
58
- }
59
- }
60
-
61
- @nest :not(:--state-active)& {
62
- &:not([data-placeholder]) {
63
- font-size: 0;
64
- }
65
- }
66
-
67
- &:focus {
68
- outline: 0;
69
- }
70
-
71
- &:-moz-focusring {
72
- color: inherit;
73
- text-shadow: 0 0 0 #000;
74
- }
75
- }
76
-
77
- & option {
78
- font-size: var(--ui-input-size);
79
- color: rgb(var(--color-default));
80
- background-color: rgb(var(--color-background));
81
-
82
- &[disabled] {
83
- opacity: 0.5;
84
- }
85
- }
86
-
87
- & > [class^="icon-"] {
88
- &.icon-r {
89
- right: calc(var(--ui-input-px) + var(--ui-input-icon-size) + var(--ui-input-icon-spacing));
90
- }
91
- }
92
-
93
- & > div[aria-hidden] {
94
- --color-current: var(--color-default);
95
-
96
- will-change: transform;
97
- border-radius: var(--ui-input-radius);
98
- position: absolute;
99
- background-color: rgb(var(--color-background));
100
- z-index: 100;
101
- left: 0;
102
- right: 0;
103
- top: 100%;
104
- margin-top: 0.5rem;
105
- border: 1px solid rgb(var(--color-current) / 0.075);
106
- transform: scaleY(0);
107
- opacity: 0;
108
- transition: var(--transition-opacity), var(--transition-transform);
109
- transition-timing-function: cubic-bezier(0.54, 1.5, 0.38, 1.11);
110
- transition-duration: 200ms;
111
- backface-visibility: hidden;
112
- transform-origin: center top;
113
- user-select: none;
114
- max-height: 12rem;
115
- overflow-y: auto;
116
- box-shadow: 0 0.15em 1.5em 0 rgb(var(--color-dark) / 0.05), 0 0 1em 0 rgb(var(--color-dark) / 0.05);
117
- padding: 0.375rem;
118
- color: rgb(var(--color-current));
119
-
120
- @nest [data-state*="focus"]& {
121
- opacity: 1;
122
- transform: none;
123
- }
124
-
125
- & [data-option] {
126
- padding: calc(var(--ui-input-px) / 1.5) var(--ui-input-px);
127
- cursor: pointer;
128
- transition: var(--transition-background);
129
- font-size: var(--ui-input-size);
130
- border-radius: var(--radius);
131
-
132
- @nest .no-touch &:is(:hover, :focus-visible) {
133
- background-color: rgb(var(--color-accent) / 0.1);
134
- }
135
- }
136
- }
137
- }