beercss 3.7.14 → 3.9.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.
package/README.md CHANGED
@@ -27,7 +27,15 @@ Beer CSS is an MIT-licensed open source project with its ongoing development mad
27
27
  <p><a href="https://opencollective.com/beercss#support"><img src="https://opencollective.com/beercss/backers.svg?avatarHeight=40&button=false" alt="Backers"></a></p>
28
28
 
29
29
  ### Github sponsors
30
- <p><a href="https://github.com/sponsors/beercss"><img src="https://avatars.githubusercontent.com/u/74856856?s=40&v=4" alt="Sponsors"></a></p>
30
+ <p>
31
+ <a href="https://github.com/sponsors/beercss">
32
+ <img src="https://avatars.githubusercontent.com/u/74856856?s=40&v=4" alt="Sponsors">
33
+ <img src="https://avatars.githubusercontent.com/u/419690?s=40&v=4" alt="Sponsors">
34
+ <img src="https://avatars.githubusercontent.com/u/181576?s=40&v=4 alt="Sponsors">
35
+ <img src="https://avatars.githubusercontent.com/u/797439?s=40&v=4 alt="Sponsors">
36
+ <img src="https://avatars.githubusercontent.com/u/3647943?s=40&v=4 alt="Sponsors">
37
+ </a>
38
+ </p>
31
39
 
32
40
  # Why?
33
41
 
@@ -123,19 +131,19 @@ From jsdelivr.net.
123
131
 
124
132
  ```html
125
133
  // with html
126
- <link href="https://cdn.jsdelivr.net/npm/beercss@3.7.14/dist/cdn/beer.min.css" rel="stylesheet" />
127
- <script type="module" src="https://cdn.jsdelivr.net/npm/beercss@3.7.14/dist/cdn/beer.min.js"></script>
134
+ <link href="https://cdn.jsdelivr.net/npm/beercss@3.9.0/dist/cdn/beer.min.css" rel="stylesheet" />
135
+ <script type="module" src="https://cdn.jsdelivr.net/npm/beercss@3.9.0/dist/cdn/beer.min.js"></script>
128
136
  <script type="module" src="https://cdn.jsdelivr.net/npm/material-dynamic-colors@1.1.2/dist/cdn/material-dynamic-colors.min.js"></script>
129
137
  ```
130
138
 
131
139
  ```css
132
140
  // with css
133
- @import "https://cdn.jsdelivr.net/npm/beercss@3.7.14/dist/cdn/beer.min.css";
141
+ @import "https://cdn.jsdelivr.net/npm/beercss@3.9.0/dist/cdn/beer.min.css";
134
142
  ```
135
143
 
136
144
  ```js
137
145
  // with javascript
138
- import "https://cdn.jsdelivr.net/npm/beercss@3.7.14/dist/cdn/beer.min.js";
146
+ import "https://cdn.jsdelivr.net/npm/beercss@3.9.0/dist/cdn/beer.min.js";
139
147
  import "https://cdn.jsdelivr.net/npm/material-dynamic-colors@1.1.2/dist/cdn/material-dynamic-colors.min.js";
140
148
  ```
141
149
 
@@ -187,8 +195,8 @@ You can use this html to setup your project. See on [Codepen](https://codepen.io
187
195
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
188
196
  <meta name="google" content="notranslate">
189
197
  <title>Hello world</title>
190
- <link href="https://cdn.jsdelivr.net/npm/beercss@3.7.14/dist/cdn/beer.min.css" rel="stylesheet">
191
- <script type="module" src="https://cdn.jsdelivr.net/npm/beercss@3.7.14/dist/cdn/beer.min.js"></script>
198
+ <link href="https://cdn.jsdelivr.net/npm/beercss@3.9.0/dist/cdn/beer.min.css" rel="stylesheet">
199
+ <script type="module" src="https://cdn.jsdelivr.net/npm/beercss@3.9.0/dist/cdn/beer.min.js"></script>
192
200
  <script type="module" src="https://cdn.jsdelivr.net/npm/material-dynamic-colors@1.1.2/dist/cdn/material-dynamic-colors.min.js"></script>
193
201
  </head>
194
202
  <body class="dark">
package/dist/cdn/beer.css CHANGED
@@ -1,5 +1,5 @@
1
1
  :root {
2
- --size: 16px;
2
+ --size: 1rem;
3
3
  --font: Inter, Roboto, "Helvetica Neue", "Arial Nova", "Nimbus Sans", Noto Sans, Arial, sans-serif;
4
4
  --font-icon: "Material Symbols Outlined";
5
5
  --speed1: 0.1s;
@@ -101,7 +101,7 @@ body.dark {
101
101
  font-display: block;
102
102
  src:
103
103
  url("material-symbols-outlined.woff2") format("woff2"),
104
- url("https://cdn.jsdelivr.net/npm/beercss@3.7.14/dist/cdn/material-symbols-outlined.woff2") format("woff2");
104
+ url("https://cdn.jsdelivr.net/npm/beercss@3.9.0/dist/cdn/material-symbols-outlined.woff2") format("woff2");
105
105
  }
106
106
  /* rounded icons */
107
107
  @font-face {
@@ -111,7 +111,7 @@ body.dark {
111
111
  font-display: block;
112
112
  src:
113
113
  url("material-symbols-rounded.woff2") format("woff2"),
114
- url("https://cdn.jsdelivr.net/npm/beercss@3.7.14/dist/cdn/material-symbols-rounded.woff2") format("woff2");
114
+ url("https://cdn.jsdelivr.net/npm/beercss@3.9.0/dist/cdn/material-symbols-rounded.woff2") format("woff2");
115
115
  }
116
116
  /* sharp icons */
117
117
  @font-face {
@@ -121,7 +121,7 @@ body.dark {
121
121
  font-display: block;
122
122
  src:
123
123
  url("material-symbols-sharp.woff2") format("woff2"),
124
- url("https://cdn.jsdelivr.net/npm/beercss@3.7.14/dist/cdn/material-symbols-sharp.woff2") format("woff2");
124
+ url("https://cdn.jsdelivr.net/npm/beercss@3.9.0/dist/cdn/material-symbols-sharp.woff2") format("woff2");
125
125
  }
126
126
  * {
127
127
  -webkit-tap-highlight-color: transparent;
@@ -1175,7 +1175,7 @@ body :is(:hover,:focus)::-webkit-scrollbar-thumb {
1175
1175
  :is(.circle, .square).round {
1176
1176
  border-radius: 1rem !important;
1177
1177
  }
1178
- .border:not(table, .field) {
1178
+ .border:not(table, .field, .list) {
1179
1179
  box-sizing: border-box;
1180
1180
  border: 0.0625rem solid var(--outline);
1181
1181
  background-color: transparent;
@@ -1308,6 +1308,35 @@ body :is(:hover,:focus)::-webkit-scrollbar-thumb {
1308
1308
  [dir=rtl] .middle.center {
1309
1309
  transform: translate(50%, -50%);
1310
1310
  }
1311
+ .ripple {
1312
+ ---duration: 600ms;
1313
+ }
1314
+ .fast-ripple {
1315
+ ---duration: 200ms;
1316
+ }
1317
+ .slow-ripple {
1318
+ ---duration: 1800ms;
1319
+ }
1320
+ .ripple-js {
1321
+ position: absolute;
1322
+ inset: 0;
1323
+ pointer-events: none;
1324
+ overflow: hidden;
1325
+ }
1326
+ .ripple-js > div {
1327
+ position: absolute;
1328
+ border-radius: 50%;
1329
+ background: currentColor;
1330
+ opacity: 0.3;
1331
+ transform: scale(0);
1332
+ animation: to-ripple var(---duration) linear;
1333
+ }
1334
+ @keyframes to-ripple {
1335
+ to {
1336
+ transform: scale(4);
1337
+ opacity: 0;
1338
+ }
1339
+ }
1311
1340
  .scroll {
1312
1341
  overflow: auto;
1313
1342
  }
@@ -1349,16 +1378,16 @@ body :is(:hover,:focus)::-webkit-scrollbar-thumb {
1349
1378
  display: flex;
1350
1379
  white-space: nowrap;
1351
1380
  }
1352
- .tiny-space:not(nav, ol, ul, .row, .grid, table, .tooltip) {
1381
+ .tiny-space:not(nav, ol, ul, .row, .grid, table, .tooltip, .list) {
1353
1382
  block-size: 0.5rem;
1354
1383
  }
1355
- :is(.space, .small-space):not(nav, ol, ul, .row, .grid, table, .tooltip) {
1384
+ :is(.space, .small-space):not(nav, ol, ul, .row, .grid, table, .tooltip, .list) {
1356
1385
  block-size: 1rem;
1357
1386
  }
1358
- .medium-space:not(nav, ol, ul, .row, .grid, table, .tooltip) {
1387
+ .medium-space:not(nav, ol, ul, .row, .grid, table, .tooltip, .list) {
1359
1388
  block-size: 2rem;
1360
1389
  }
1361
- .large-space:not(nav, ol, ul, .row, .grid, table, .tooltip) {
1390
+ .large-space:not(nav, ol, ul, .row, .grid, table, .tooltip, .list) {
1362
1391
  block-size: 3rem;
1363
1392
  }
1364
1393
  .responsive {
@@ -1557,10 +1586,7 @@ pre:has(> code){
1557
1586
  direction: ltr;
1558
1587
  text-align: start;
1559
1588
  }
1560
- .wave::after,
1561
- .chip::after,
1562
- :is(.button, button)::after,
1563
- :is(nav.tabbed, .tabs) > a::after {
1589
+ :is(.wave, .chip, .button, button, nav.tabbed > a, .tabs > a):not(.slow-ripple, .ripple, .fast-ripple)::after {
1564
1590
  content: "";
1565
1591
  position: absolute;
1566
1592
  inset: 0;
@@ -1573,12 +1599,12 @@ pre:has(> code){
1573
1599
  opacity: 0;
1574
1600
  transition: none;
1575
1601
  }
1576
- :is(.wave, .chip, .button, button, nav.tabbed > a, .tabs > a):is(:focus-visible, :hover)::after {
1602
+ :is(.wave, .chip, .button, button, nav.tabbed > a, .tabs > a):not(.slow-ripple, .ripple, .fast-ripple):is(:focus-visible, :hover)::after {
1577
1603
  background-size: 15000%;
1578
1604
  opacity: 0.1;
1579
1605
  transition: background-size var(--speed2) linear;
1580
1606
  }
1581
- :is(.wave, .chip, .button, button, nav.tabbed > a, .tabs > a):active::after {
1607
+ :is(.wave, .chip, .button, button, nav.tabbed > a, .tabs > a):not(.slow-ripple, .ripple, .fast-ripple):active::after {
1582
1608
  background-size: 5000%;
1583
1609
  opacity: 0;
1584
1610
  transition: none;
@@ -1965,9 +1991,9 @@ aside:not(.fixed, .absolute).left {
1965
1991
  }
1966
1992
  dialog {
1967
1993
  display: block;
1994
+ visibility: hidden;
1968
1995
  border: none;
1969
1996
  opacity: 0;
1970
- visibility: hidden;
1971
1997
  position: fixed;
1972
1998
  box-shadow: var(--elevate2);
1973
1999
  color: var(--on-surface);
@@ -1985,9 +2011,6 @@ dialog {
1985
2011
  transform: translate(-50%, -4rem);
1986
2012
  outline: none;
1987
2013
  }
1988
- dialog::backdrop {
1989
- display: none;
1990
- }
1991
2014
  dialog.small {
1992
2015
  inline-size: 25%;
1993
2016
  block-size: 25%;
@@ -2000,9 +2023,9 @@ dialog.large {
2000
2023
  inline-size: 75%;
2001
2024
  block-size: 75%;
2002
2025
  }
2003
- dialog:is(.active, [open]) {
2004
- opacity: 1;
2026
+ dialog:is(.active, [open], :popover-open) {
2005
2027
  visibility: visible;
2028
+ opacity: 1;
2006
2029
  transform: translate(-50%, 0);
2007
2030
  }
2008
2031
  dialog.top {
@@ -2060,7 +2083,7 @@ dialog.max {
2060
2083
  transform: translateY(4rem);
2061
2084
  background-color: var(--surface);
2062
2085
  }
2063
- dialog:is(.active, [open]):is(.left, .right, .top, .bottom, .max) {
2086
+ dialog:is(.active, [open], :popover-open):is(.left, .right, .top, .bottom, .max) {
2064
2087
  transform: translate(0, 0);
2065
2088
  }
2066
2089
  dialog.small:is(.left, .right) {
@@ -2112,18 +2135,15 @@ hr.vertical,
2112
2135
  min-block-size: 1.5rem;
2113
2136
  inline-size: 0.0625rem;
2114
2137
  }
2115
- summary.none {
2138
+ summary,
2139
+ summary:focus {
2116
2140
  list-style-type: none;
2117
- }
2118
- summary.none::-webkit-details-marker {
2119
- display: none;
2120
- }
2121
- summary {
2122
2141
  cursor: pointer;
2123
- }
2124
- summary:focus {
2125
2142
  outline: none;
2126
2143
  }
2144
+ summary::-webkit-details-marker {
2145
+ display: none;
2146
+ }
2127
2147
  .field {
2128
2148
  ---size: 3rem;
2129
2149
  ---start: 1.2rem;
@@ -2657,7 +2677,7 @@ fieldset > legend + * {
2657
2677
  }
2658
2678
  i,
2659
2679
  :is(.checkbox, .radio, .switch) > span::before,
2660
- .icon > span > i {
2680
+ :is(.checkbox, .radio, .switch) > span > i {
2661
2681
  ---size: 1.5rem;
2662
2682
 
2663
2683
  font-family: var(--font-icon);
@@ -2789,10 +2809,72 @@ main ~ footer {
2789
2809
  :is(.large-padding, dialog:not(.left, .right, .top, .bottom)) > :is(header, footer).fixed {
2790
2810
  ---translateY: 1.5rem;
2791
2811
  }
2812
+ .list {
2813
+ display: flex;
2814
+ flex-direction: column;
2815
+ padding: 0;
2816
+ margin: 0;
2817
+ flex: 1;
2818
+ }
2819
+ .list > li,
2820
+ .list > li > details > summary,
2821
+ .list > li > a:only-child {
2822
+ all: unset;
2823
+ box-sizing: border-box;
2824
+ position: relative;
2825
+ display: flex;
2826
+ align-items: center;
2827
+ align-self: normal;
2828
+ text-align: start;
2829
+ justify-content: flex-start;
2830
+ white-space: nowrap;
2831
+ gap: 1rem;
2832
+ min-block-size: 3.5rem;
2833
+ padding: 0.5rem 1rem;
2834
+ cursor: pointer;
2835
+ flex: 1;
2836
+ }
2837
+ .list > li:has(ul, ol, details[open], a:only-child) {
2838
+ padding: 0;
2839
+ }
2840
+ .list > li > .list {
2841
+ padding: 0 0 0 1rem;
2842
+ }
2843
+ .list > li > *,
2844
+ .list > li > a:only-child > *,
2845
+ .list > li > details > summary > * {
2846
+ margin: 0;
2847
+ }
2848
+ .list > li > :is(details, .max),
2849
+ .list > li > a:only-child > .max,
2850
+ .list > li > details > summary > .max {
2851
+ flex: 1;
2852
+ }
2853
+ .list.border > li:not(:last-child)::before,
2854
+ .list.border > li > details[open] > summary::before {
2855
+ content: '';
2856
+ position: absolute;
2857
+ background-color: var(--outline-variant);
2858
+ inset: auto 0 0 0;
2859
+ block-size: 0.0625rem;
2860
+ inline-size: auto;
2861
+ }
2862
+ .list.no-space > li,
2863
+ .list.no-space > li > details > summary {
2864
+ min-block-size: 2.5rem;
2865
+ }
2866
+ .list.medium-space > li,
2867
+ .list.medium-space > li > details > summary {
2868
+ min-block-size: 4.5rem;
2869
+ }
2870
+ .list.large-space > li,
2871
+ .list.large-space > li > details > summary {
2872
+ min-block-size: 5.5rem;
2873
+ }
2792
2874
  svg {
2793
2875
  fill: currentcolor;
2794
2876
  }
2795
- :is(img, svg, video):is(.small, .medium, .large, .tiny, .extra, .round, .circle, .responsive) {
2877
+ :is(img, svg, video):is(.small, .medium, .large, .tiny, .extra, .round, .circle, .square, .responsive) {
2796
2878
  object-fit: cover;
2797
2879
  object-position: center;
2798
2880
  transition: transform var(--speed3), border-radius var(--speed3), padding var(--speed3);
@@ -2906,9 +2988,6 @@ svg {
2906
2988
  .extend.border > .responsive {
2907
2989
  inline-size: 3.375rem;
2908
2990
  }
2909
- menu > li {
2910
- all: unset;
2911
- }
2912
2991
  menu {
2913
2992
  opacity: 0;
2914
2993
  visibility: hidden;
@@ -2942,8 +3021,8 @@ menu.no-wrap {
2942
3021
  menu.active,
2943
3022
  menu:not([data-ui]):active,
2944
3023
  :not(menu, [data-ui]):focus-within > menu,
2945
- menu > :is(a, li):hover + menu,
2946
- menu > menu:hover {
3024
+ menu > li:hover > menu,
3025
+ menu > li > menu:hover {
2947
3026
  opacity: 1;
2948
3027
  visibility: visible;
2949
3028
  transform: scale(1) translateY(100%);
@@ -2951,26 +3030,40 @@ menu > menu:hover {
2951
3030
  menu * {
2952
3031
  white-space: inherit !important;
2953
3032
  }
2954
- menu > a,
2955
- menu > li > a {
2956
- padding: 0.5rem 1rem;
3033
+ menu > li,
3034
+ menu > li > a:only-child {
3035
+ all: unset;
3036
+ box-sizing: border-box;
3037
+ position: relative;
3038
+ display: flex;
3039
+ align-items: center;
3040
+ align-self: normal;
3041
+ text-align: start;
3042
+ justify-content: flex-start;
3043
+ white-space: nowrap;
3044
+ gap: 1rem;
3045
+ padding: 0 1rem;
2957
3046
  min-block-size: 3rem;
2958
3047
  flex: 1;
3048
+ margin: 0 !important;
3049
+ cursor: pointer;
2959
3050
  }
2960
- menu > a:not(.row),
2961
- menu > li > a:not(.row) {
2962
- display: flex;
2963
- flex-direction: column;
2964
- align-items: flex-start;
2965
- }
2966
- menu > a:is(:hover, :focus, .active),
2967
- menu > li > a:is(:hover, :focus, .active) {
3051
+ menu > li:is(:hover, :focus, .active) {
2968
3052
  background-color: var(--active);
2969
3053
  }
3054
+ menu > li > :is(.max, a:only-child, .field:only-child),
3055
+ menu > li > a:only-child > .max,
3056
+ menu > li:has(.field) {
3057
+ flex: 1;
3058
+ padding: 0;
3059
+ margin: 0;
3060
+ }
2970
3061
  menu.min {
2971
3062
  inset: 0 0 auto 0;
2972
3063
  transform: none !important;
2973
3064
  border-radius: inherit;
3065
+ background-color: var(--surface-variant) !important;
3066
+ color: var(--on-surface-variant) !important;
2974
3067
  }
2975
3068
  [dir=rtl] menu.min.right,
2976
3069
  menu.min.left {
@@ -2988,6 +3081,8 @@ menu.max {
2988
3081
  min-block-size: auto;
2989
3082
  z-index: 100;
2990
3083
  transform: none !important;
3084
+ background-color: var(--surface-variant) !important;
3085
+ color: var(--on-surface-variant) !important;
2991
3086
  }
2992
3087
  menu.no-wrap:is(.min, .max) {
2993
3088
  min-inline-size: 16rem;
@@ -3000,8 +3095,7 @@ menu.left {
3000
3095
  menu.right {
3001
3096
  inset: auto auto 0 0;
3002
3097
  }
3003
- menu:has(> menu),
3004
- menu > menu {
3098
+ menu:has(menu) {
3005
3099
  ---child: 1;
3006
3100
  ---type: 0;
3007
3101
 
@@ -3011,74 +3105,72 @@ menu > menu {
3011
3105
  min-inline-size: 12rem;
3012
3106
  max-block-size: none;
3013
3107
  }
3014
- menu > menu,
3015
- menu > menu.right,
3016
- [dir=rtl] menu > menu.left {
3108
+ menu > li > :is(menu, menu.right),
3109
+ [dir=rtl] menu > li > menu.left {
3017
3110
  inset: auto auto calc(3rem * (var(---child) - var(---type))) 100%;
3018
3111
  }
3019
- [dir=rtl] menu > menu,
3020
- [dir=rtl] menu > menu.right,
3021
- menu > menu.left {
3112
+ [dir=rtl] menu > li > :is(menu, menu.right),
3113
+ menu > li > menu.left {
3022
3114
  inset: auto 100% calc(3rem * (var(---child) - var(---type))) auto;
3023
3115
  }
3024
- menu > :nth-last-child(2) {
3116
+ menu > li:nth-last-child(2) {
3025
3117
  ---child: 2;
3026
3118
  }
3027
- menu > :nth-last-child(3) {
3119
+ menu > li:nth-last-child(3) {
3028
3120
  ---child: 3;
3029
3121
  }
3030
- menu > :nth-last-child(4) {
3122
+ menu > li:nth-last-child(4) {
3031
3123
  ---child: 4;
3032
3124
  }
3033
- menu > :nth-last-child(5) {
3125
+ menu > li:nth-last-child(5) {
3034
3126
  ---child: 5;
3035
3127
  }
3036
- menu > :nth-last-child(6) {
3128
+ menu > li:nth-last-child(6) {
3037
3129
  ---child: 6;
3038
3130
  }
3039
- menu > :nth-last-child(7) {
3131
+ menu > li:nth-last-child(7) {
3040
3132
  ---child: 7;
3041
3133
  }
3042
- menu > :nth-last-child(8) {
3134
+ menu > li:nth-last-child(8) {
3043
3135
  ---child: 8;
3044
3136
  }
3045
- menu > :nth-last-child(9) {
3137
+ menu > li:nth-last-child(9) {
3046
3138
  ---child: 9;
3047
3139
  }
3048
- menu > :nth-last-child(10) {
3140
+ menu > li:nth-last-child(10) {
3049
3141
  ---child: 10;
3050
3142
  }
3051
- menu > :nth-last-child(11) {
3143
+ menu > li:nth-last-child(11) {
3052
3144
  ---child: 11;
3053
3145
  }
3054
- menu > :nth-last-of-type(2) {
3146
+ menu > li:nth-last-of-type(2) {
3055
3147
  ---type: 1;
3056
3148
  }
3057
- menu > :nth-last-of-type(3) {
3149
+ menu > li:nth-last-of-type(3) {
3058
3150
  ---type: 2;
3059
3151
  }
3060
- menu > :nth-last-of-type(4) {
3152
+ menu > li:nth-last-of-type(4) {
3061
3153
  ---type: 3;
3062
3154
  }
3063
- menu > :nth-last-of-type(5) {
3155
+ menu > li:nth-last-of-type(5) {
3064
3156
  ---type: 4;
3065
3157
  }
3066
- menu > :nth-last-of-type(6) {
3158
+ menu > li:nth-last-of-type(6) {
3067
3159
  ---type: 5;
3068
3160
  }
3069
- menu > :nth-last-of-type(7) {
3161
+ menu > li:nth-last-of-type(7) {
3070
3162
  ---type: 6;
3071
3163
  }
3072
- menu > :nth-last-of-type(8) {
3164
+ menu > li:nth-last-of-type(8) {
3073
3165
  ---type: 7;
3074
3166
  }
3075
- menu > :nth-last-of-type(9) {
3167
+ menu > li:nth-last-of-type(9) {
3076
3168
  ---type: 8;
3077
3169
  }
3078
- menu > :nth-last-of-type(10) {
3170
+ menu > li:nth-last-of-type(10) {
3079
3171
  ---type: 9;
3080
3172
  }
3081
- menu > :nth-last-of-type(11) {
3173
+ menu > li:nth-last-of-type(11) {
3082
3174
  ---type: 10;
3083
3175
  }
3084
3176
  nav > :is(ol, ul),
@@ -3107,7 +3199,7 @@ nav.row {
3107
3199
  nav > :is(ol, ul) > li > :only-child {
3108
3200
  margin: 0;
3109
3201
  }
3110
- :is(nav, .row) > * {
3202
+ :is(nav, .row) > :not(ul, ol) {
3111
3203
  margin: 0;
3112
3204
  white-space: normal;
3113
3205
  flex: none;
@@ -3206,8 +3298,7 @@ nav.drawer > header {
3206
3298
  }
3207
3299
  nav.drawer > :is(a, label),
3208
3300
  nav.drawer > :is(ol, ul) > li > :is(a, label),
3209
- a.row.wave,
3210
- nav.row.wave {
3301
+ :is(a.row, nav.row):is(.wave, .slow-ripple, .ripple, .fast-ripple) {
3211
3302
  padding: 0.75rem;
3212
3303
  font-size: inherit;
3213
3304
  }
@@ -3325,7 +3416,9 @@ nav.tabbed > a.active {
3325
3416
  justify-content: space-around;
3326
3417
  }
3327
3418
  }
3328
- .overlay {
3419
+ .overlay,
3420
+ dialog::backdrop {
3421
+ display: block !important;
3329
3422
  opacity: 0;
3330
3423
  visibility: hidden;
3331
3424
  position: fixed;
@@ -3335,10 +3428,18 @@ nav.tabbed > a.active {
3335
3428
  z-index: 100;
3336
3429
  transition: all var(--speed3), 0s background-color;
3337
3430
  }
3338
- .overlay.active {
3431
+ .overlay.active,
3432
+ dialog:popover-open::backdrop {
3339
3433
  opacity: 1;
3340
3434
  visibility: visible;
3341
3435
  }
3436
+ .overlay + dialog::backdrop,
3437
+ .snackbar::backdrop {
3438
+ display: none;
3439
+ }
3440
+ [popover] {
3441
+ border: 0;
3442
+ }
3342
3443
  .page {
3343
3444
  ---transform: translate(0, 0);
3344
3445
 
@@ -3555,10 +3656,20 @@ progress.max + * {
3555
3656
  cursor: pointer;
3556
3657
  display: inline-flex;
3557
3658
  align-items: center;
3659
+ ---size: 1.5rem;
3660
+ }
3661
+ :is(.checkbox, .radio, .switch).small {
3662
+ ---size: 1rem;
3663
+ }
3664
+ :is(.checkbox, .radio, .switch).large {
3665
+ ---size: 2rem;
3666
+ }
3667
+ :is(.checkbox, .radio, .switch).extra {
3668
+ ---size: 2.5rem;
3558
3669
  }
3559
3670
  :is(.checkbox, .radio) > input {
3560
- inline-size: 1.5rem;
3561
- block-size: 1.5rem;
3671
+ inline-size: var(---size);
3672
+ block-size: var(---size);
3562
3673
  opacity: 0;
3563
3674
  }
3564
3675
  .switch > input {
@@ -3576,17 +3687,18 @@ progress.max + * {
3576
3687
  padding-inline-start: 0.25rem;
3577
3688
  }
3578
3689
  :is(.checkbox, .radio, .switch) > span::before,
3579
- .icon > span > i,
3690
+ :is(.checkbox, .radio, .switch) > span > i,
3580
3691
  :is(.checkbox, .radio) > span::after {
3692
+ ---size: inherit;
3581
3693
  content: '';
3582
- inline-size: 1.5rem;
3583
- block-size: 1.5rem;
3694
+ inline-size: var(---size);
3695
+ block-size: var(---size);
3584
3696
  box-sizing: border-box;
3585
3697
  margin: 0 auto;
3586
3698
  outline: none;
3587
3699
  color: var(--primary);
3588
3700
  position: absolute;
3589
- inset: auto auto auto -1.5rem;
3701
+ inset: auto auto auto calc(var(---size) * -1);
3590
3702
  border-radius: 50%;
3591
3703
  user-select: none;
3592
3704
  z-index: 1;
@@ -3600,9 +3712,10 @@ progress.max + * {
3600
3712
  justify-content: center;
3601
3713
  border-radius: 50%;
3602
3714
  transition: all var(--speed2);
3603
- font-size: 1rem;
3715
+ font-size: calc(var(---size) - 0.5rem);
3604
3716
  user-select: none;
3605
- min-inline-size: auto;
3717
+ min-inline-size: var(---size);
3718
+ min-block-size: var(---size);
3606
3719
  content: "";
3607
3720
  color: var(--surface-variant);
3608
3721
  background-color: var(--outline);
@@ -3670,11 +3783,16 @@ progress.max + * {
3670
3783
  content: "check";
3671
3784
  color: var(--primary);
3672
3785
  background-color: var(--on-primary);
3673
- }
3674
- .switch > input:checked + span::before,
3675
- .switch.icon > input:checked + span > i {
3676
3786
  transform: translate(-1.75rem, -50%) scale(1);
3677
3787
  }
3788
+ .switch > input:active:not(:disabled) + span::before,
3789
+ .switch.icon > input:active:not(:disabled) + span > i {
3790
+ transform: translate(-3rem, -50%) scale(1.2);
3791
+ }
3792
+ .switch > input:active:checked:not(:disabled) + span::before,
3793
+ .switch.icon > input:active:checked:not(:disabled) + span > i {
3794
+ transform: translate(-1.75rem, -50%) scale(1.2);
3795
+ }
3678
3796
  :is(.checkbox, .radio, .switch) > input:disabled + span {
3679
3797
  opacity: 0.5;
3680
3798
  cursor: not-allowed;
@@ -3689,8 +3807,6 @@ progress.max + * {
3689
3807
  inline-size: 3.25rem;
3690
3808
  block-size: 2rem;
3691
3809
  border-radius: 2rem;
3692
- }
3693
- .switch > span::after {
3694
3810
  transform: translate(-3.25rem, -50%);
3695
3811
  }
3696
3812
  .field > :is(nav, .row) {
@@ -3838,7 +3954,7 @@ progress.max + * {
3838
3954
  inset: calc(50% - 0.5rem) var(---end) auto var(---start);
3839
3955
  clip-path: polygon(0 0, calc(100% - 0.5rem) 0, calc(100% - 0.5rem) 100%, 0 100%);
3840
3956
  }
3841
- .slider > input + input ~ span {
3957
+ .slider > input[type=range] + input[type=range] ~ span {
3842
3958
  border-radius: 0;
3843
3959
  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%);
3844
3960
  }
@@ -3969,7 +4085,6 @@ progress.max + * {
3969
4085
  color: var(--inverse-on-surface);
3970
4086
  background-color: var(--inverse-surface);
3971
4087
  padding: 1rem;
3972
- opacity: 1;
3973
4088
  cursor: pointer;
3974
4089
  text-align: start;
3975
4090
  align-items: center;
@@ -3982,7 +4097,7 @@ progress.max + * {
3982
4097
  .snackbar.top {
3983
4098
  inset: 6rem auto auto 50%;
3984
4099
  }
3985
- .snackbar.active {
4100
+ .snackbar:is(.active, :popover-open) {
3986
4101
  visibility: visible;
3987
4102
  transform: translate(-50%, 0);
3988
4103
  opacity: 1;