beercss 3.13.3 → 4.0.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 (39) hide show
  1. package/README.md +86 -83
  2. package/dist/cdn/beer.css +1249 -137
  3. package/dist/cdn/beer.custom-element.js +2 -3
  4. package/dist/cdn/beer.custom-element.min.js +1 -1
  5. package/dist/cdn/beer.js +20 -19
  6. package/dist/cdn/beer.min.css +1 -1
  7. package/dist/cdn/beer.min.js +1 -1
  8. package/dist/cdn/beer.scoped.css +2544 -1428
  9. package/dist/cdn/beer.scoped.min.css +2 -1
  10. package/package.json +2 -2
  11. package/src/cdn/beer.css +4 -2
  12. package/src/cdn/beer.ts +5 -5
  13. package/src/cdn/customElement.js +2 -3
  14. package/src/cdn/elements/bars.css +8 -8
  15. package/src/cdn/elements/buttons.css +2 -3
  16. package/src/cdn/elements/chips.css +0 -1
  17. package/src/cdn/elements/dialogs.css +2 -8
  18. package/src/cdn/elements/expansions.css +10 -3
  19. package/src/cdn/elements/fields.css +11 -12
  20. package/src/cdn/elements/icons.css +1 -1
  21. package/src/cdn/elements/lists.css +6 -2
  22. package/src/cdn/elements/mainLayouts.css +2 -2
  23. package/src/cdn/elements/media.css +2 -2
  24. package/src/cdn/elements/menus.css +4 -4
  25. package/src/cdn/elements/navigations.css +7 -8
  26. package/src/cdn/elements/progress.css +4 -4
  27. package/src/cdn/elements/progress.ts +11 -9
  28. package/src/cdn/elements/selections.css +3 -3
  29. package/src/cdn/elements/sliders.css +15 -19
  30. package/src/cdn/elements/sliders.ts +5 -5
  31. package/src/cdn/helpers/forms.css +1 -1
  32. package/src/cdn/helpers/ripples.ts +1 -1
  33. package/src/cdn/helpers/scrolls.css +0 -1
  34. package/src/cdn/helpers/typography.css +31 -30
  35. package/src/cdn/settings/fonts.css +8 -8
  36. package/src/cdn/settings/globals.css +37 -0
  37. package/src/cdn/{helpers → settings}/reset.css +5 -23
  38. /package/src/cdn/{helpers → settings}/theme.css +0 -0
  39. /package/src/cdn/{helpers → settings}/theme.ts +0 -0
@@ -12,7 +12,6 @@ button {
12
12
  color: var(--on-primary);
13
13
  padding: 0 var(--_padding);
14
14
  background-color: var(--primary);
15
- margin: 0 0.5rem;
16
15
  border-radius: var(--_size);
17
16
  transition: transform var(--speed3), border-radius var(--speed2), padding var(--speed3);
18
17
  user-select: none;
@@ -45,7 +44,7 @@ button {
45
44
  color: var(--primary);
46
45
  }
47
46
 
48
- .extend > span {
47
+ .extend > span:not([class]) {
49
48
  display: none;
50
49
  }
51
50
 
@@ -62,7 +61,7 @@ button {
62
61
 
63
62
  .extend:is(:hover, .active) > :is(img, svg) + span {
64
63
  display: inherit;
65
- margin-inline-start: calc(1rem + var(--_padding));
64
+ margin-inline-start: calc(1rem + var(--_padding, 0));
66
65
  }
67
66
 
68
67
  :is(.button, button)[disabled] {
@@ -13,7 +13,6 @@
13
13
  border: 0.0625rem solid var(--outline-variant);
14
14
  color: var(--on-surface-variant);
15
15
  padding: 0 var(--_padding);
16
- margin: 0 0.5rem;
17
16
  text-transform: none;
18
17
  border-radius: 0.5rem;
19
18
  transition: transform var(--speed3), border-radius var(--speed3), padding var(--speed3);
@@ -1,7 +1,7 @@
1
1
  dialog {
2
2
  --_padding: 1.5rem;
3
- --_top: calc(var(--_padding) + var(--top));
4
- --_bottom: calc(var(--_padding) + var(--bottom));
3
+ --_top: calc(var(--_padding, 0) + var(--top, 0));
4
+ --_bottom: calc(var(--_padding, 0) + var(--bottom, 0));
5
5
  display: block;
6
6
  visibility: hidden;
7
7
  border: none;
@@ -143,10 +143,4 @@ dialog.medium:is(.top, .bottom) {
143
143
 
144
144
  dialog.large:is(.top, .bottom) {
145
145
  block-size: 32rem;
146
- }
147
-
148
- @media (pointer: coarse) {
149
- body:has(dialog[open], dialog.active) {
150
- overflow: hidden;
151
- }
152
146
  }
@@ -1,10 +1,17 @@
1
- summary,
2
- summary:focus {
1
+ summary {
3
2
  list-style-type: none;
4
3
  cursor: pointer;
5
- outline: none;
6
4
  }
7
5
 
8
6
  summary::-webkit-details-marker {
9
7
  display: none;
10
8
  }
9
+
10
+ summary > * {
11
+ pointer-events: none;
12
+ margin: 0;
13
+ }
14
+
15
+ li > details > summary + .list {
16
+ margin: 0 !important;
17
+ }
@@ -1,7 +1,7 @@
1
1
  .field {
2
2
  --_input: 3rem;
3
3
  --_start: 1.2rem;
4
- --_middle: calc(var(--_input) / 2);
4
+ --_middle: calc(var(--_input, 0) / 2);
5
5
  border-radius: 0.25rem 0.25rem 0 0;
6
6
  min-block-size: var(--_input);
7
7
  display: flex;
@@ -57,7 +57,7 @@
57
57
  /* icon */
58
58
  .field > :is(i, img, svg, progress.circle, a) {
59
59
  position: absolute;
60
- inset: calc((var(--_input) / 2) - 0.75rem) auto auto auto;
60
+ inset: calc((var(--_input, 0) / 2) - 0.75rem) auto auto auto;
61
61
  cursor: pointer;
62
62
  z-index: 10;
63
63
  inline-size: 1.5rem;
@@ -77,12 +77,12 @@
77
77
 
78
78
  .field > :is(i, img, svg, progress.circle, a),
79
79
  [dir=rtl] .field > :is(i, img, svg, progress.circle, a):first-child {
80
- inset: calc(var(--_middle) - 0.75rem) 1rem auto auto;
80
+ inset: calc(var(--_middle, 0) - 0.75rem) 1rem auto auto;
81
81
  }
82
82
 
83
83
  .field > :is(i, img, svg, progress.circle, a):first-child,
84
84
  [dir=rtl] .field > :is(i, img, svg, progress.circle, a) {
85
- inset: calc(var(--_middle) - 0.75rem) auto auto 1rem;
85
+ inset: calc(var(--_middle, 0) - 0.75rem) auto auto 1rem;
86
86
  }
87
87
 
88
88
  .field.invalid > i {
@@ -105,7 +105,6 @@
105
105
  padding: 0 0.9375rem;
106
106
  font-family: inherit;
107
107
  font-size: 1rem;
108
- inline-size: 100%;
109
108
  min-block-size: var(--_input);
110
109
  outline: none;
111
110
  z-index: 1;
@@ -126,7 +125,7 @@ input::-webkit-date-and-time-value {
126
125
 
127
126
  .field > :is(input, textarea, select):focus {
128
127
  border: 0.125rem solid transparent;
129
- padding: 0 0.875rem;
128
+ padding-inline: 0.875rem;
130
129
  }
131
130
 
132
131
  .field > textarea:not([rows]) {
@@ -272,21 +271,21 @@ input[type=number] {
272
271
  }
273
272
 
274
273
  .field > textarea {
275
- padding-block-start: calc(var(--_start)) !important;
274
+ padding-block-start: var(--_start) !important;
276
275
  }
277
276
 
278
277
  .field > textarea:focus {
279
- padding-block-start: calc(var(--_start) - 0.01rem) !important;
278
+ padding-block-start: calc(var(--_start, 0) - 0.01rem) !important;
280
279
  }
281
280
 
282
281
  .field:not(.label) > textarea,
283
282
  .field.border:not(.fill) > textarea {
284
- padding-block-start: calc(var(--_start) - 0.5rem) !important;
283
+ padding-block-start: calc(var(--_start, 0) - 0.5rem) !important;
285
284
  }
286
285
 
287
286
  .field:not(.label) > textarea:focus,
288
287
  .field.border:not(.fill) > textarea:focus {
289
- padding-block-start: calc(var(--_start) - 0.51rem) !important;
288
+ padding-block-start: calc(var(--_start, 0) - 0.51rem) !important;
290
289
  }
291
290
 
292
291
  /* label */
@@ -295,8 +294,8 @@ input[type=number] {
295
294
  position: absolute;
296
295
  inset: -0.5rem 1rem 0 var(--_start);
297
296
  display: flex;
298
- block-size: calc(var(--_input) + 1rem);
299
- line-height: calc(var(--_input) + 1rem);
297
+ block-size: calc(var(--_input, 0) + 1rem);
298
+ line-height: calc(var(--_input, 0) + 1rem);
300
299
  font-size: 1rem;
301
300
  transition: all 0.2s;
302
301
  gap: 0.25rem;
@@ -70,7 +70,7 @@ i > :is(img, svg) {
70
70
  }
71
71
 
72
72
  i[class*=fa-] {
73
- font-size: calc(var(--_size) * 0.85);
73
+ font-size: calc(var(--_size, 0) * 0.85);
74
74
  line-height: normal;
75
75
  block-size: auto;
76
76
  min-block-size: auto;
@@ -34,8 +34,7 @@
34
34
  }
35
35
 
36
36
  .list > li > *,
37
- .list > li > a:only-child > *,
38
- .list > li > details > summary > * {
37
+ .list > li > a:only-child > * {
39
38
  margin: 0;
40
39
  }
41
40
 
@@ -69,3 +68,8 @@
69
68
  .list.large-space > li > details > summary {
70
69
  min-block-size: 5.5rem;
71
70
  }
71
+
72
+ :is(li, li > a:only-child):focus-visible {
73
+ outline: 0.125rem solid var(--primary);
74
+ outline-offset: -0.25rem;
75
+ }
@@ -1,7 +1,7 @@
1
1
  :has(> main) {
2
2
  display: grid;
3
- grid-template-columns: auto 1fr auto;
4
- grid-template-rows: auto auto 1fr auto auto;
3
+ grid-template-columns: auto minmax(0, 1fr) auto;
4
+ grid-template-rows: auto auto minmax(0, 1fr) auto auto;
5
5
  grid-template-areas:
6
6
  "left top right"
7
7
  "left header right"
@@ -83,11 +83,11 @@ svg {
83
83
  }
84
84
 
85
85
  :is(button, .button, .chip):not(.extend) > .responsive:first-child {
86
- margin-inline-start: calc(-1 * var(--_padding));
86
+ margin-inline-start: calc(-1 * var(--_padding, 0));
87
87
  }
88
88
 
89
89
  :is(button, .button, .chip):not(.extend) > .responsive:not(:first-child) {
90
- margin-inline-end: calc(-1 * var(--_padding));
90
+ margin-inline-end: calc(-1 * var(--_padding, 0));
91
91
  }
92
92
 
93
93
  :is(button, .button, .chip, .circle, .square, .extend) > .responsive {
@@ -152,22 +152,22 @@ menu:has(menu) {
152
152
 
153
153
  menu > li > :is(menu, menu.right),
154
154
  [dir=rtl] menu > li > menu.left {
155
- inset: auto auto calc(3rem * (var(--_child) - var(--_type))) 100%;
155
+ inset: auto auto calc(3rem * (var(--_child, 0) - var(--_type, 0))) 100%;
156
156
  }
157
157
 
158
158
  [dir=rtl] menu > li > :is(menu, menu.right),
159
159
  menu > li > menu.left {
160
- inset: auto 100% calc(3rem * (var(--_child) - var(--_type))) auto;
160
+ inset: auto 100% calc(3rem * (var(--_child, 0) - var(--_type, 0))) auto;
161
161
  }
162
162
 
163
163
  menu > li > :is(menu.top, menu.top.right),
164
164
  [dir=rtl] menu > li > menu.top.left {
165
- inset: calc(3rem * (var(--_child) - var(--_type))) auto auto 100%;
165
+ inset: calc(3rem * (var(--_child, 0) - var(--_type, 0))) auto auto 100%;
166
166
  }
167
167
 
168
168
  [dir=rtl] menu > li > :is(menu.top, menu.top.right),
169
169
  menu > li > menu.top.left {
170
- inset: calc(3rem * (var(--_child) - var(--_type))) 100% auto auto;
170
+ inset: calc(3rem * (var(--_child, 0) - var(--_type, 0))) 100% auto auto;
171
171
  }
172
172
 
173
173
  menu.no-space > li {
@@ -14,7 +14,6 @@ a.row {
14
14
  white-space: nowrap;
15
15
  gap: 1rem;
16
16
  border-radius: 0;
17
- min-inline-size: 0;
18
17
  }
19
18
 
20
19
  a.row,
@@ -72,8 +71,8 @@ nav > :is(ol, ul) > li > span > * {
72
71
 
73
72
  nav:is(.left, .right, .top, .bottom) {
74
73
  --_padding: 0.5rem;
75
- --_top: calc(var(--_padding) + var(--top));
76
- --_bottom: calc(var(--_padding) + var(--bottom));
74
+ --_top: calc(var(--_padding, 0) + var(--top, 0));
75
+ --_bottom: calc(var(--_padding, 0) + var(--bottom, 0));
77
76
  position: sticky;
78
77
  inset: 0;
79
78
  border: 0;
@@ -106,12 +105,12 @@ nav:is(.top, .bottom) {
106
105
  }
107
106
 
108
107
  nav.top {
109
- block-size: calc(var(--top) + 4.5rem);
108
+ block-size: calc(var(--top, 0) + 4.5rem);
110
109
  padding-block-start: var(--_top);
111
110
  }
112
111
 
113
112
  nav.bottom {
114
- block-size: calc(var(--bottom) + 4.5rem);
113
+ block-size: calc(var(--bottom, 0) + 4.5rem);
115
114
  padding-block-end: var(--_bottom);
116
115
  }
117
116
 
@@ -139,7 +138,7 @@ nav > header > .extend:hover {
139
138
  inline-size: var(--_size);
140
139
  }
141
140
 
142
- nav > header > .extend:hover > span {
141
+ nav > header > .extend:hover > span:not([class]) {
143
142
  display: none;
144
143
  }
145
144
 
@@ -177,13 +176,13 @@ nav.max > header > .extend {
177
176
  padding: 0 var(--_padding);
178
177
  }
179
178
 
180
- nav.max > header > .extend > span {
179
+ nav.max > header > .extend > span:not([class]) {
181
180
  display: block;
182
181
  margin-inline-start: var(--_padding);
183
182
  }
184
183
 
185
184
  nav.max > header > .extend > :is(img, svg) + span {
186
- margin-inline-start: calc(1rem + var(--_padding));
185
+ margin-inline-start: calc(1rem + var(--_padding, 0));
187
186
  }
188
187
 
189
188
  nav.max:is(.top, .bottom) {
@@ -70,12 +70,12 @@ progress::-moz-progress-bar {
70
70
  }
71
71
 
72
72
  progress.wavy {
73
- block-size: calc(var(--_size) * 2);
73
+ block-size: calc(var(--_size, 0) * 2);
74
74
  background: none;
75
75
  background-image: var(--_light);
76
76
  background-repeat: repeat-x;
77
77
  background-position: 0 50%;
78
- background-size: auto calc(var(--_size) / 2);
78
+ background-size: auto calc(var(--_size, 0) / 2);
79
79
  }
80
80
 
81
81
  .dark progress.wavy {
@@ -102,7 +102,7 @@ progress.circle {
102
102
  --_value: attr(value type(<number>), 50);
103
103
  inline-size: 2.5rem;
104
104
  block-size: 2.5rem;
105
- background: conic-gradient(currentColor calc(var(--_value) * 1%), var(--active) 0%);
105
+ background: conic-gradient(currentColor calc(var(--_value, 0) * 1%), var(--active) 0%);
106
106
  border-radius: 50%;
107
107
  mask-image: radial-gradient(circle at center, transparent 57%, currentColor 60%);
108
108
  }
@@ -116,7 +116,7 @@ progress.circle::-moz-progress-bar {
116
116
  }
117
117
 
118
118
  progress.circle.wavy {
119
- background: conic-gradient(currentColor calc(var(--_value) * 1%), var(--active) 0);
119
+ background: conic-gradient(currentColor calc(var(--_value, 0) * 1%), var(--active) 0);
120
120
  mask-repeat: no-repeat;
121
121
  mask-position: center;
122
122
  mask-size: contain;
@@ -12,15 +12,17 @@ function onInputDocument(e: Event) {
12
12
  }
13
13
 
14
14
  function updateProgress(progress: HTMLProgressElement) {
15
- if (!progress.hasAttribute("value") && !progress.hasAttribute("max")) {
16
- const value = hasClass(progress, "circle") ? "50" : "100";
17
- progress.style.setProperty("--_value", value);
18
- progress.setAttribute("value", value);
19
- progress.setAttribute("max", "100");
20
- progress.classList.add("indeterminate");
21
- } else {
22
- progress.style.setProperty("--_value", String(progress.value));
23
- }
15
+ requestAnimationFrame(() => {
16
+ if (!progress.hasAttribute("value") && !progress.hasAttribute("max")) {
17
+ const value = hasClass(progress, "circle") ? "50" : "100";
18
+ progress.style.setProperty("--_value", value);
19
+ progress.setAttribute("value", value);
20
+ progress.setAttribute("max", "100");
21
+ progress.classList.add("indeterminate");
22
+ } else {
23
+ progress.style.setProperty("--_value", String(progress.value));
24
+ }
25
+ });
24
26
  }
25
27
 
26
28
  export function updateAllProgress() {
@@ -63,7 +63,7 @@
63
63
  outline: none;
64
64
  color: var(--primary);
65
65
  position: absolute;
66
- inset: auto auto auto calc(var(--_size) * -1);
66
+ inset: auto auto auto calc(var(--_size, 0) * -1);
67
67
  border-radius: 50%;
68
68
  user-select: none;
69
69
  z-index: 1;
@@ -73,7 +73,7 @@
73
73
  [dir=rtl] :is(.checkbox, .radio) > span > i,
74
74
  [dir=rtl] :is(.checkbox, .radio) > span::after {
75
75
  --_size: inherit;
76
- inset: auto calc(var(--_size) * -1) auto auto;
76
+ inset: auto calc(var(--_size, 0) * -1) auto auto;
77
77
  }
78
78
 
79
79
  .switch > span::before,
@@ -85,7 +85,7 @@
85
85
  justify-content: center;
86
86
  border-radius: 50%;
87
87
  transition: all var(--speed2);
88
- font-size: calc(var(--_size) - 0.5rem);
88
+ font-size: calc(var(--_size, 0) - 0.5rem);
89
89
  user-select: none;
90
90
  min-inline-size: var(--_size);
91
91
  min-block-size: var(--_size);
@@ -4,7 +4,7 @@
4
4
  --_value1: "";
5
5
  --_value2: "";
6
6
  --_track: 1rem;
7
- --_thumb: max(2.5rem, calc(var(--_track) + 0.5rem));
7
+ --_thumb: max(2.5rem, calc(var(--_track, 0) + 0.5rem));
8
8
  display: flex;
9
9
  align-items: center !important;
10
10
  inline-size: auto;
@@ -65,7 +65,7 @@
65
65
  pointer-events: all;
66
66
  }
67
67
 
68
- .slider > input + input {
68
+ .slider > input ~ input {
69
69
  position: absolute;
70
70
  }
71
71
 
@@ -129,22 +129,22 @@
129
129
  cursor: not-allowed;
130
130
  }
131
131
 
132
- .slider > input:disabled ~ span {
132
+ .slider > input:disabled ~ span:not([class]) {
133
133
  background: var(--outline);
134
134
  }
135
135
 
136
- .slider > span {
136
+ .slider > span:not([class]) {
137
137
  position: absolute;
138
138
  block-size: var(--_track);
139
139
  border-radius: 1rem 0 0 1rem;
140
140
  background: var(--primary);
141
141
  color: var(--on-primary);
142
142
  z-index: 0;
143
- inset: calc(50% - (var(--_track) / 2)) var(--_end) auto var(--_start);
143
+ inset: calc(50% - (var(--_track, 0) / 2)) var(--_end) auto var(--_start);
144
144
  clip-path: polygon(0 0, calc(100% - 0.5rem) 0, calc(100% - 0.5rem) 100%, 0 100%);
145
145
  }
146
146
 
147
- .slider > input[type=range] + input[type=range] ~ span {
147
+ .slider > input[type=range] + input[type=range] ~ span:not([class]) {
148
148
  border-radius: 0;
149
149
  clip-path: polygon(0.5rem 0, max(0.5rem, calc(100% - 0.5rem)) 0, max(0.5rem, calc(100% - 0.5rem)) 100%, 0.5rem 100%);
150
150
  }
@@ -160,7 +160,7 @@
160
160
  block-size: var(--_track);
161
161
  border-radius: 1rem;
162
162
  background: var(--secondary-container);
163
- clip-path: polygon(calc(var(--_start) - 0.5rem) 0, 0 0, 0 100%, calc(var(--_start) - 0.5rem) 100%, calc(var(--_start) - 0.5rem) 0, calc(100% - var(--_end) + 0.5rem) 0, 100% 0, 100% 100%, calc(100% - var(--_end) + 0.5rem) 100%, calc(100% - var(--_end) + 0.5rem) 0);
163
+ clip-path: polygon(calc(var(--_start, 0) - 0.5rem) 0, 0 0, 0 100%, calc(var(--_start, 0) - 0.5rem) 100%, calc(var(--_start, 0) - 0.5rem) 0, calc(100% - var(--_end, 0) + 0.5rem) 0, 100% 0, 100% 100%, calc(100% - var(--_end, 0) + 0.5rem) 100%, calc(100% - var(--_end, 0) + 0.5rem) 0);
164
164
  }
165
165
 
166
166
  .slider:has(> [disabled])::before {
@@ -190,7 +190,7 @@
190
190
  .slider > .tooltip {
191
191
  visibility: hidden !important;
192
192
  opacity: 0 !important;
193
- inset: 0 auto auto calc(100% - var(--_end));
193
+ inset: 0 auto auto calc(100% - var(--_end, 0));
194
194
  border-radius: 2rem;
195
195
  transition: top var(--speed2) ease, opacity var(--speed2) ease;
196
196
  transform: translate(-50%, -25%) !important;
@@ -198,7 +198,7 @@
198
198
  }
199
199
 
200
200
  .slider > .tooltip.bottom {
201
- inset: auto auto 0 calc(100% - var(--_end));
201
+ inset: auto auto 0 calc(100% - var(--_end, 0));
202
202
  transition: bottom var(--speed2) ease, opacity var(--speed2) ease;
203
203
  transform: translate(-50%, 25%) !important;
204
204
  }
@@ -212,12 +212,12 @@
212
212
  }
213
213
 
214
214
  .slider > .tooltip + .tooltip {
215
- inset: 0.25rem calc(100% - var(--_start)) auto auto;
215
+ inset: 0.25rem calc(100% - var(--_start, 0)) auto auto;
216
216
  transform: translate(50%, -25%) !important;
217
217
  }
218
218
 
219
219
  .slider > .tooltip + .tooltip.bottom {
220
- inset: auto calc(100% - var(--_start)) -0.25rem auto;
220
+ inset: auto calc(100% - var(--_start, 0)) -0.25rem auto;
221
221
  transform: translate(50%, 25%) !important;
222
222
  }
223
223
 
@@ -251,13 +251,13 @@
251
251
  inset-block: auto;
252
252
  block-size: 2.5rem;
253
253
  inline-size: 2.5rem;
254
- margin-block: calc(-1 * var(--_thumb)) 0 !important;
254
+ margin-block: calc(-1 * var(--_thumb, 0)) 0 !important;
255
255
  transform: rotate(90deg) translate(-75%, 50%) !important;
256
256
  }
257
257
 
258
258
  .slider.vertical > .tooltip.bottom {
259
259
  inset-block: auto;
260
- margin-block: 0 calc(-1 * var(--_thumb)) !important;
260
+ margin-block: 0 calc(-1 * var(--_thumb, 0)) !important;
261
261
  transform: rotate(90deg) translate(75%, 50%) !important;
262
262
  }
263
263
 
@@ -313,7 +313,7 @@
313
313
  transform: none !important;
314
314
  }
315
315
 
316
- .slider.max > span {
316
+ .slider.max > span:not([class]) {
317
317
  block-size: auto !important;
318
318
  inset: 0 var(--_end) 0 var(--_start);
319
319
  clip-path: none;
@@ -322,7 +322,7 @@
322
322
  border-radius: 0;
323
323
  }
324
324
 
325
- .slider.max.vertical > span {
325
+ .slider.max.vertical > span:not([class]) {
326
326
  inset: var(--_end) 0 var(--_start) 0;
327
327
  }
328
328
 
@@ -351,8 +351,4 @@
351
351
  .slider > :hover ~ .tooltip.bottom {
352
352
  inset-block: auto -1rem !important;
353
353
  }
354
-
355
- body:has(input[type=range]:focus) {
356
- overflow: hidden;
357
- }
358
354
  }
@@ -13,8 +13,11 @@ function onInputDocument(e: Event) {
13
13
  }
14
14
 
15
15
  function onChangeInput(e: Event) {
16
+ const isCoarse = window.matchMedia('(pointer: coarse)').matches;
17
+ if (!isCoarse) return;
18
+
16
19
  const input = e.target as HTMLInputElement;
17
- requestAnimationFrame(() => input.blur());
20
+ input.blur();
18
21
  }
19
22
 
20
23
  function updateAllRanges() {
@@ -63,10 +66,7 @@ function updateRange(input: HTMLInputElement) {
63
66
  }
64
67
  }
65
68
 
66
- label.style.setProperty("--_start", `${start}%`);
67
- label.style.setProperty("--_end", `${end}%`);
68
- label.style.setProperty("--_value1", `'${value1}'`);
69
- label.style.setProperty("--_value2", `'${value2}'`);
69
+ requestAnimationFrame(() => label.style.cssText = `--_start: ${start}%; --_end: ${end}%; --_value1: '${value1}'; --_value2: '${value2}';`);
70
70
  }
71
71
 
72
72
  export function updateAllSliders() {
@@ -51,7 +51,7 @@
51
51
  inline-size: var(--_size);
52
52
  }
53
53
 
54
- :is(.circle, .square) > span {
54
+ :is(.circle, .square) > span:not([class]) {
55
55
  display: none;
56
56
  }
57
57
 
@@ -19,7 +19,7 @@ function updateRipple(e: PointerEvent) {
19
19
  ripple.style.inlineSize = ripple.style.blockSize = `${diameter}px`;
20
20
  ripple.style.left = `${x}px`;
21
21
  ripple.style.top = `${y}px`;
22
- ripple.addEventListener("animationend", () => { rippleContainer.remove(); });
22
+ onWeak(ripple, "animationend", () => { rippleContainer.remove(); });
23
23
 
24
24
  rippleContainer.appendChild(ripple);
25
25
  element.appendChild(rippleContainer);
@@ -1,6 +1,5 @@
1
1
  .scroll {
2
2
  overflow: auto;
3
- min-inline-size: 0;
4
3
  }
5
4
 
6
5
  .no-scroll {