diff options
95 files changed, 5543 insertions, 3589 deletions
diff --git a/src/_config.defaults.scss b/src/_config.defaults.scss index 699cd8e..e9e978a 100644 --- a/src/_config.defaults.scss +++ b/src/_config.defaults.scss | |||
| @@ -1,21 +1,20 @@ | |||
| 1 | @use 'sass:list'; | 1 | @use "sass:list"; |
| 2 | @use 'sass:map'; | 2 | @use "sass:map"; |
| 3 | @use 'sass:math'; | 3 | @use "sass:math"; |
| 4 | @use 'pkg:iro-sass/src/easing' as easing; | 4 | @use "pkg:iro-sass/easing" as easing; |
| 5 | 5 | ||
| 6 | $static-colors: ( | 6 | $static-colors: ( |
| 7 | --base: hsl(0, 0%, 98%), | 7 | --base: hsl(0, 0%, 98%), |
| 8 | |||
| 9 | --levels: ( | 8 | --levels: ( |
| 10 | --100: math.div(0, 12) * 110 - 10, | 9 | --100: math.div(0, 12) * 110 - 10, |
| 11 | --200: math.div(1, 12) * 110 - 10, | 10 | --200: math.div(1, 12) * 110 - 10, |
| 12 | --300: math.div(2, 12) * 110 - 10, | 11 | --300: math.div(2, 12) * 110 - 10, |
| 13 | --400: math.div(3, 12) * 110 - 10, | 12 | --400: math.div(3, 12) * 110 - 10, |
| 14 | --500: math.div(4, 12) * 110 - 10, | 13 | --500: math.div(4, 12) * 110 - 10, |
| 15 | --600: math.div(5, 12) * 110 - 10, | 14 | --600: math.div(5, 12) * 110 - 10, |
| 16 | --700: math.div(6, 12) * 110 - 10, | 15 | --700: math.div(6, 12) * 110 - 10, |
| 17 | --800: math.div(7, 12) * 110 - 10, | 16 | --800: math.div(7, 12) * 110 - 10, |
| 18 | --900: math.div(8, 12) * 110 - 10, | 17 | --900: math.div(8, 12) * 110 - 10, |
| 19 | --1000: math.div(9, 12) * 110 - 10, | 18 | --1000: math.div(9, 12) * 110 - 10, |
| 20 | --1100: math.div(10, 12) * 110 - 10, | 19 | --1100: math.div(10, 12) * 110 - 10, |
| 21 | --1200: math.div(11, 12) * 110 - 10, | 20 | --1200: math.div(11, 12) * 110 - 10, |
| @@ -23,175 +22,405 @@ $static-colors: ( | |||
| 23 | ), | 22 | ), |
| 24 | 23 | ||
| 25 | --palettes: ( | 24 | --palettes: ( |
| 26 | --blue: oklch(56% .14 275.25), | 25 | --blue: oklch(56% 0.14 275.25), |
| 27 | --purple: oklch(56% .14 305.58), | 26 | --purple: oklch(56% 0.14 305.58), |
| 28 | --red: oklch(56% .14 14.69), | 27 | --red: oklch(56% 0.14 14.69), |
| 29 | --green: oklch(56% .14 150.48), | 28 | --green: oklch(56% 0.14 150.48), |
| 30 | --yellow: oklch(56% .14 84.08), | 29 | --yellow: oklch(56% 0.14 84.08), |
| 31 | ), | 30 | ), |
| 32 | 31 | ||
| 33 | --transparents: ( | 32 | --transparents: ( |
| 34 | --100: 0, | 33 | --100: 0, |
| 35 | --200: .1, | 34 | --200: 0.1, |
| 36 | --300: .25, | 35 | --300: 0.25, |
| 37 | --400: .4, | 36 | --400: 0.4, |
| 38 | --500: .55, | 37 | --500: 0.55, |
| 39 | --600: .7, | 38 | --600: 0.7, |
| 40 | --700: .8, | 39 | --700: 0.8, |
| 41 | --800: .9, | 40 | --800: 0.9, |
| 42 | --900: 1, | 41 | --900: 1, |
| 43 | ), | 42 | ), |
| 44 | ); | 43 | ); |
| 45 | 44 | ||
| 46 | $semantic-colors-common: ( | 45 | $semantic-colors-common: ( |
| 47 | --accent: --blue, | 46 | --accent: --blue, |
| 48 | --accent-static: --blue-static, | 47 | --accent-static: --blue-static, |
| 49 | --positive: --green, | 48 | --positive: --green, |
| 50 | --positive-static: --green-static, | 49 | --positive-static: --green-static, |
| 51 | --negative: --red, | 50 | --negative: --red, |
| 52 | --negative-static: --red-static, | 51 | --negative-static: --red-static, |
| 53 | --warning: --yellow, | 52 | --warning: --yellow, |
| 54 | --warning-static: --yellow-static, | 53 | --warning-static: --yellow-static, |
| 55 | |||
| 56 | --focus-raw: --accent, | ||
| 57 | --focus-static: --accent-static, | ||
| 58 | 54 | ||
| 59 | --border-mute: --base --200, | 55 | --focus-raw: --accent, |
| 60 | --border: --base --300, | 56 | --focus-static: --accent-static, |
| 61 | --border-strong: --base --400, | ||
| 62 | |||
| 63 | --text-disabled: --base --500, | ||
| 64 | --text-mute-more: --base --600, | ||
| 65 | --text-mute: --base --700, | ||
| 66 | --text: --base --800, | ||
| 67 | --heading: --base --900, | ||
| 68 | 57 | ||
| 58 | --border-mute: --base --200, | ||
| 59 | --border: --base --300, | ||
| 60 | --border-strong: --base --400, | ||
| 61 | --text-disabled: --base --500, | ||
| 62 | --text-mute-more: --base --600, | ||
| 63 | --text-mute: --base --700, | ||
| 64 | --text: --base --800, | ||
| 65 | --heading: --base --900, | ||
| 69 | --focus: ( | 66 | --focus: ( |
| 70 | --outline: --focus-raw --400, | 67 | --outline: --focus-raw --400, |
| 71 | --border-mute: --focus-raw --900, | 68 | --border-mute: --focus-raw --900, |
| 72 | --border: --focus-raw --1000, | 69 | --border: --focus-raw --1000, |
| 73 | --border-text: --focus-raw --1000-text, | 70 | --border-text: --focus-raw --1000-text, |
| 74 | --border-strong: --focus-raw --1100, | 71 | --border-strong: --focus-raw --1100, |
| 75 | --text: --focus-raw --1100, | 72 | --text: --focus-raw --1100, |
| 76 | ), | 73 | ), |
| 77 | ); | 74 | ); |
| 78 | 75 | ||
| 79 | $theme-light: ( | 76 | $theme-light: ( |
| 80 | --levels: ( | 77 | --levels: ( |
| 81 | --grays: ( | 78 | --grays: ( |
| 82 | --50: (-8) (.2 + .8 * easing.ease(math.div(0, 12))), | 79 | --50: ( |
| 83 | --75: (-4) (.2 + .8 * easing.ease(math.div(1, 12))), | 80 | -8, |
| 84 | --100: (0) (.2 + .8 * easing.ease(math.div(2, 12))), | 81 | ) |
| 82 | ( | ||
| 83 | 0.2 + 0.8 * easing.ease(math.div(0, 12)), | ||
| 84 | ), | ||
| 85 | --75: ( | ||
| 86 | -4, | ||
| 87 | ) | ||
| 88 | ( | ||
| 89 | 0.2 + 0.8 * easing.ease(math.div(1, 12)), | ||
| 90 | ), | ||
| 91 | --100: (0) | ||
| 92 | ( | ||
| 93 | 0.2 + 0.8 * easing.ease(math.div(2, 12)), | ||
| 94 | ), | ||
| 85 | 95 | ||
| 86 | --200: (easing.cubic-bezier(.2, .1, .9, .9, math.div(1, 7)) * 98) (.2 + .8 * easing.ease(math.div(3, 12))), | 96 | --200: ( |
| 87 | --300: (easing.cubic-bezier(.2, .1, .9, .9, math.div(2, 7)) * 98) (.2 + .8 * easing.ease(math.div(4, 12))), | 97 | easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(1, 7)) * 98, |
| 88 | --400: (easing.cubic-bezier(.2, .1, .9, .9, math.div(3, 7)) * 98) (.2 + .8 * easing.ease(math.div(5, 12))), | 98 | ) |
| 99 | ( | ||
| 100 | 0.2 + 0.8 * easing.ease(math.div(3, 12)), | ||
| 101 | ), | ||
| 102 | --300: ( | ||
| 103 | easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(2, 7)) * 98, | ||
| 104 | ) | ||
| 105 | ( | ||
| 106 | 0.2 + 0.8 * easing.ease(math.div(4, 12)), | ||
| 107 | ), | ||
| 108 | --400: ( | ||
| 109 | easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(3, 7)) * 98, | ||
| 110 | ) | ||
| 111 | ( | ||
| 112 | 0.2 + 0.8 * easing.ease(math.div(5, 12)), | ||
| 113 | ), | ||
| 89 | 114 | ||
| 90 | --500: (easing.cubic-bezier(.2, .1, .9, .9, math.div(4, 7)) * 98) (.2 + .8 * easing.ease(math.div(6, 12))), | 115 | --500: ( |
| 91 | --600: (easing.cubic-bezier(.2, .1, .9, .9, math.div(5, 7)) * 98) (.2 + .8 * easing.ease(math.div(7, 12))), | 116 | easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(4, 7)) * 98, |
| 92 | --700: (easing.cubic-bezier(.2, .1, .9, .9, math.div(6, 7)) * 98) (.2 + .8 * easing.ease(math.div(8, 12))), | 117 | ) |
| 93 | --800: (easing.cubic-bezier(.2, .1, .9, .9, math.div(7, 7)) * 98) (.2 + .8 * easing.ease(math.div(9, 12))), | 118 | ( |
| 94 | --900: (106) (.2 + .8 * easing.ease(math.div(10, 12))), | 119 | 0.2 + 0.8 * easing.ease(math.div(6, 12)), |
| 120 | ), | ||
| 121 | --600: ( | ||
| 122 | easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(5, 7)) * 98, | ||
| 123 | ) | ||
| 124 | ( | ||
| 125 | 0.2 + 0.8 * easing.ease(math.div(7, 12)), | ||
| 126 | ), | ||
| 127 | --700: ( | ||
| 128 | easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(6, 7)) * 98, | ||
| 129 | ) | ||
| 130 | ( | ||
| 131 | 0.2 + 0.8 * easing.ease(math.div(8, 12)), | ||
| 132 | ), | ||
| 133 | --800: ( | ||
| 134 | easing.cubic-bezier(0.2, 0.1, 0.9, 0.9, math.div(7, 7)) * 98, | ||
| 135 | ) | ||
| 136 | ( | ||
| 137 | 0.2 + 0.8 * easing.ease(math.div(9, 12)), | ||
| 138 | ), | ||
| 139 | --900: (106) | ||
| 140 | ( | ||
| 141 | 0.2 + 0.8 * easing.ease(math.div(10, 12)), | ||
| 142 | ), | ||
| 95 | ), | 143 | ), |
| 96 | 144 | ||
| 97 | --colors: ( | 145 | --colors: ( |
| 98 | --100: (math.div(0, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(0, 12))), | 146 | --100: ( |
| 99 | --200: (math.div(1, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(1, 12))), | 147 | math.div(0, 12) * 94 + 7, |
| 100 | --300: (math.div(2, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(2, 12))), | 148 | ) |
| 101 | --400: (math.div(3, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(3, 12))), | 149 | ( |
| 102 | --500: (math.div(4, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(4, 12))), | 150 | 0.2 + 0.8 * easing.ease(math.div(0, 12)), |
| 103 | --600: (math.div(5, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(5, 12))), | 151 | ), |
| 104 | --700: (math.div(6, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(6, 12))), | 152 | --200: ( |
| 105 | --800: (math.div(7, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(7, 12))), | 153 | math.div(1, 12) * 94 + 7, |
| 106 | --900: (math.div(8, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(8, 12))), | 154 | ) |
| 107 | --1000: (math.div(9, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(9, 12))), | 155 | ( |
| 108 | --1100: (math.div(10, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(10, 12))), | 156 | 0.2 + 0.8 * easing.ease(math.div(1, 12)), |
| 109 | --1200: (math.div(11, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(11, 12))), | 157 | ), |
| 110 | --1300: (math.div(12, 12) * 94 + 7) (.2 + .8 * easing.ease(math.div(12, 12))), | 158 | --300: ( |
| 159 | math.div(2, 12) * 94 + 7, | ||
| 160 | ) | ||
| 161 | ( | ||
| 162 | 0.2 + 0.8 * easing.ease(math.div(2, 12)), | ||
| 163 | ), | ||
| 164 | --400: ( | ||
| 165 | math.div(3, 12) * 94 + 7, | ||
| 166 | ) | ||
| 167 | ( | ||
| 168 | 0.2 + 0.8 * easing.ease(math.div(3, 12)), | ||
| 169 | ), | ||
| 170 | --500: ( | ||
| 171 | math.div(4, 12) * 94 + 7, | ||
| 172 | ) | ||
| 173 | ( | ||
| 174 | 0.2 + 0.8 * easing.ease(math.div(4, 12)), | ||
| 175 | ), | ||
| 176 | --600: ( | ||
| 177 | math.div(5, 12) * 94 + 7, | ||
| 178 | ) | ||
| 179 | ( | ||
| 180 | 0.2 + 0.8 * easing.ease(math.div(5, 12)), | ||
| 181 | ), | ||
| 182 | --700: ( | ||
| 183 | math.div(6, 12) * 94 + 7, | ||
| 184 | ) | ||
| 185 | ( | ||
| 186 | 0.2 + 0.8 * easing.ease(math.div(6, 12)), | ||
| 187 | ), | ||
| 188 | --800: ( | ||
| 189 | math.div(7, 12) * 94 + 7, | ||
| 190 | ) | ||
| 191 | ( | ||
| 192 | 0.2 + 0.8 * easing.ease(math.div(7, 12)), | ||
| 193 | ), | ||
| 194 | --900: ( | ||
| 195 | math.div(8, 12) * 94 + 7, | ||
| 196 | ) | ||
| 197 | ( | ||
| 198 | 0.2 + 0.8 * easing.ease(math.div(8, 12)), | ||
| 199 | ), | ||
| 200 | --1000: ( | ||
| 201 | math.div(9, 12) * 94 + 7, | ||
| 202 | ) | ||
| 203 | ( | ||
| 204 | 0.2 + 0.8 * easing.ease(math.div(9, 12)), | ||
| 205 | ), | ||
| 206 | --1100: ( | ||
| 207 | math.div(10, 12) * 94 + 7, | ||
| 208 | ) | ||
| 209 | ( | ||
| 210 | 0.2 + 0.8 * easing.ease(math.div(10, 12)), | ||
| 211 | ), | ||
| 212 | --1200: ( | ||
| 213 | math.div(11, 12) * 94 + 7, | ||
| 214 | ) | ||
| 215 | ( | ||
| 216 | 0.2 + 0.8 * easing.ease(math.div(11, 12)), | ||
| 217 | ), | ||
| 218 | --1300: ( | ||
| 219 | math.div(12, 12) * 94 + 7, | ||
| 220 | ) | ||
| 221 | ( | ||
| 222 | 0.2 + 0.8 * easing.ease(math.div(12, 12)), | ||
| 223 | ), | ||
| 111 | ), | 224 | ), |
| 112 | ), | 225 | ), |
| 113 | 226 | ||
| 114 | --palettes: ( | 227 | --palettes: ( |
| 115 | --base: hsl(260, 70%, 98%) --grays, | 228 | --base: hsl(260, 70%, 98%) --grays, |
| 116 | --blue: oklch(56% .16 275.25) --colors, | 229 | --blue: oklch(56% 0.16 275.25) --colors, |
| 117 | --purple: oklch(56% .16 305.58) --colors, | 230 | --purple: oklch(56% 0.16 305.58) --colors, |
| 118 | --red: oklch(56% .16 14.69) --colors, | 231 | --red: oklch(56% 0.16 14.69) --colors, |
| 119 | --green: oklch(56% .16 150.48) --colors, | 232 | --green: oklch(56% 0.16 150.48) --colors, |
| 120 | --yellow: oklch(56% .16 84.08) --colors, | 233 | --yellow: oklch(56% 0.16 84.08) --colors, |
| 121 | ), | 234 | ), |
| 122 | 235 | ||
| 123 | --semantic: map.merge($semantic-colors-common, ( | 236 | --semantic: map.merge( |
| 124 | --bg-l2: --base --50, | 237 | $semantic-colors-common, |
| 125 | --bg-l1: --base --100, | 238 | ( |
| 126 | --bg-base: --base --200, | 239 | --bg-l2: --base --50, |
| 127 | 240 | --bg-l1: --base --100, | |
| 128 | --box: ( | 241 | --bg-base: --base --200, |
| 129 | --border: --base --200, | 242 | --box: ( |
| 130 | --border-strong: --base --300, | 243 | --border: --base --200, |
| 244 | --border-strong: --base --300, | ||
| 245 | ), | ||
| 246 | ) | ||
| 131 | ), | 247 | ), |
| 132 | )), | ||
| 133 | |||
| 134 | --constants: ( | 248 | --constants: ( |
| 135 | --shadow: rgba(#000, .1), | 249 | --shadow: rgba(#000, 0.1), |
| 136 | ), | 250 | ), |
| 137 | ); | 251 | ); |
| 138 | 252 | ||
| 139 | $theme-dark: ( | 253 | $theme-dark: ( |
| 140 | --levels: ( | 254 | --levels: ( |
| 141 | --grays: ( | 255 | --grays: ( |
| 142 | --50: (4.4) (.3 + .7 * easing.ease(math.div(10, 12))), | 256 | --50: (4.4) |
| 143 | --75: (2.5) (.3 + .7 * easing.ease(math.div(9, 12))), | 257 | ( |
| 144 | --100: (0) (.3 + .7 * easing.ease(math.div(8, 12))), | 258 | 0.3 + 0.7 * easing.ease(math.div(10, 12)), |
| 259 | ), | ||
| 260 | --75: (2.5) | ||
| 261 | ( | ||
| 262 | 0.3 + 0.7 * easing.ease(math.div(9, 12)), | ||
| 263 | ), | ||
| 264 | --100: (0) | ||
| 265 | ( | ||
| 266 | 0.3 + 0.7 * easing.ease(math.div(8, 12)), | ||
| 267 | ), | ||
| 145 | 268 | ||
| 146 | --200: (easing.cubic-bezier(.3, .1, .8, .8, math.div(1, 8)) * -108) (.3 + .7 * easing.ease(math.div(7, 12))), | 269 | --200: ( |
| 147 | --300: (easing.cubic-bezier(.3, .1, .8, .8, math.div(2, 8)) * -108) (.3 + .7 * easing.ease(math.div(6, 12))), | 270 | easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(1, 8)) * -108, |
| 148 | --400: (easing.cubic-bezier(.3, .1, .8, .8, math.div(3, 8)) * -108) (.3 + .7 * easing.ease(math.div(5, 12))), | 271 | ) |
| 272 | ( | ||
| 273 | 0.3 + 0.7 * easing.ease(math.div(7, 12)), | ||
| 274 | ), | ||
| 275 | --300: ( | ||
| 276 | easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(2, 8)) * -108, | ||
| 277 | ) | ||
| 278 | ( | ||
| 279 | 0.3 + 0.7 * easing.ease(math.div(6, 12)), | ||
| 280 | ), | ||
| 281 | --400: ( | ||
| 282 | easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(3, 8)) * -108, | ||
| 283 | ) | ||
| 284 | ( | ||
| 285 | 0.3 + 0.7 * easing.ease(math.div(5, 12)), | ||
| 286 | ), | ||
| 149 | 287 | ||
| 150 | --500: (easing.cubic-bezier(.3, .1, .8, .8, math.div(4, 8)) * -108) (.3 + .7 * easing.ease(math.div(4, 12))), | 288 | --500: ( |
| 151 | --600: (easing.cubic-bezier(.3, .1, .8, .8, math.div(5, 8)) * -108) (.3 + .7 * easing.ease(math.div(3, 12))), | 289 | easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(4, 8)) * -108, |
| 152 | --700: (easing.cubic-bezier(.3, .1, .8, .8, math.div(6, 8)) * -108) (.3 + .7 * easing.ease(math.div(2, 12))), | 290 | ) |
| 153 | --800: (easing.cubic-bezier(.3, .1, .8, .8, math.div(7, 8)) * -108) (.3 + .7 * easing.ease(math.div(1, 12))), | 291 | ( |
| 154 | --900: (easing.cubic-bezier(.3, .1, .8, .8, math.div(8, 8)) * -108) (.3 + .7 * easing.ease(math.div(0, 12))), | 292 | 0.3 + 0.7 * easing.ease(math.div(4, 12)), |
| 293 | ), | ||
| 294 | --600: ( | ||
| 295 | easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(5, 8)) * -108, | ||
| 296 | ) | ||
| 297 | ( | ||
| 298 | 0.3 + 0.7 * easing.ease(math.div(3, 12)), | ||
| 299 | ), | ||
| 300 | --700: ( | ||
| 301 | easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(6, 8)) * -108, | ||
| 302 | ) | ||
| 303 | ( | ||
| 304 | 0.3 + 0.7 * easing.ease(math.div(2, 12)), | ||
| 305 | ), | ||
| 306 | --800: ( | ||
| 307 | easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(7, 8)) * -108, | ||
| 308 | ) | ||
| 309 | ( | ||
| 310 | 0.3 + 0.7 * easing.ease(math.div(1, 12)), | ||
| 311 | ), | ||
| 312 | --900: ( | ||
| 313 | easing.cubic-bezier(0.3, 0.1, 0.8, 0.8, math.div(8, 8)) * -108, | ||
| 314 | ) | ||
| 315 | ( | ||
| 316 | 0.3 + 0.7 * easing.ease(math.div(0, 12)), | ||
| 317 | ), | ||
| 155 | ), | 318 | ), |
| 156 | 319 | ||
| 157 | --colors: ( | 320 | --colors: ( |
| 158 | --100: (easing.cubic-bezier(.2, .1, .8, .8, math.div(0, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(0, 12))), | 321 | --100: ( |
| 159 | --200: (easing.cubic-bezier(.2, .1, .8, .8, math.div(1, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(1, 12))), | 322 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(0, 12)) * -109 - 0.5, |
| 160 | --300: (easing.cubic-bezier(.2, .1, .8, .8, math.div(2, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(2, 12))), | 323 | ) |
| 161 | --400: (easing.cubic-bezier(.2, .1, .8, .8, math.div(3, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(3, 12))), | 324 | ( |
| 162 | --500: (easing.cubic-bezier(.2, .1, .8, .8, math.div(4, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(4, 12))), | 325 | 0.3 + 0.7 * easing.ease(math.div(0, 12)), |
| 163 | --600: (easing.cubic-bezier(.2, .1, .8, .8, math.div(5, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(5, 12))), | 326 | ), |
| 164 | --700: (easing.cubic-bezier(.2, .1, .8, .8, math.div(6, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(6, 12))), | 327 | --200: ( |
| 165 | --800: (easing.cubic-bezier(.2, .1, .8, .8, math.div(7, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(7, 12))), | 328 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(1, 12)) * -109 - 0.5, |
| 166 | --900: (easing.cubic-bezier(.2, .1, .8, .8, math.div(8, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(8, 12))), | 329 | ) |
| 167 | --1000: (easing.cubic-bezier(.2, .1, .8, .8, math.div(9, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(9, 12))), | 330 | ( |
| 168 | --1100: (easing.cubic-bezier(.2, .1, .8, .8, math.div(10, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(10, 12))), | 331 | 0.3 + 0.7 * easing.ease(math.div(1, 12)), |
| 169 | --1200: (easing.cubic-bezier(.2, .1, .8, .8, math.div(11, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(11, 12))), | 332 | ), |
| 170 | --1300: (easing.cubic-bezier(.2, .1, .8, .8, math.div(12, 12)) * -109 - .5) (.3 + .7 * easing.ease(math.div(12, 12))), | 333 | --300: ( |
| 334 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(2, 12)) * -109 - 0.5, | ||
| 335 | ) | ||
| 336 | ( | ||
| 337 | 0.3 + 0.7 * easing.ease(math.div(2, 12)), | ||
| 338 | ), | ||
| 339 | --400: ( | ||
| 340 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(3, 12)) * -109 - 0.5, | ||
| 341 | ) | ||
| 342 | ( | ||
| 343 | 0.3 + 0.7 * easing.ease(math.div(3, 12)), | ||
| 344 | ), | ||
| 345 | --500: ( | ||
| 346 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(4, 12)) * -109 - 0.5, | ||
| 347 | ) | ||
| 348 | ( | ||
| 349 | 0.3 + 0.7 * easing.ease(math.div(4, 12)), | ||
| 350 | ), | ||
| 351 | --600: ( | ||
| 352 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(5, 12)) * -109 - 0.5, | ||
| 353 | ) | ||
| 354 | ( | ||
| 355 | 0.3 + 0.7 * easing.ease(math.div(5, 12)), | ||
| 356 | ), | ||
| 357 | --700: ( | ||
| 358 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(6, 12)) * -109 - 0.5, | ||
| 359 | ) | ||
| 360 | ( | ||
| 361 | 0.3 + 0.7 * easing.ease(math.div(6, 12)), | ||
| 362 | ), | ||
| 363 | --800: ( | ||
| 364 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(7, 12)) * -109 - 0.5, | ||
| 365 | ) | ||
| 366 | ( | ||
| 367 | 0.3 + 0.7 * easing.ease(math.div(7, 12)), | ||
| 368 | ), | ||
| 369 | --900: ( | ||
| 370 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(8, 12)) * -109 - 0.5, | ||
| 371 | ) | ||
| 372 | ( | ||
| 373 | 0.3 + 0.7 * easing.ease(math.div(8, 12)), | ||
| 374 | ), | ||
| 375 | --1000: ( | ||
| 376 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(9, 12)) * -109 - 0.5, | ||
| 377 | ) | ||
| 378 | ( | ||
| 379 | 0.3 + 0.7 * easing.ease(math.div(9, 12)), | ||
| 380 | ), | ||
| 381 | --1100: ( | ||
| 382 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(10, 12)) * -109 - 0.5, | ||
| 383 | ) | ||
| 384 | ( | ||
| 385 | 0.3 + 0.7 * easing.ease(math.div(10, 12)), | ||
| 386 | ), | ||
| 387 | --1200: ( | ||
| 388 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(11, 12)) * -109 - 0.5, | ||
| 389 | ) | ||
| 390 | ( | ||
| 391 | 0.3 + 0.7 * easing.ease(math.div(11, 12)), | ||
| 392 | ), | ||
| 393 | --1300: ( | ||
| 394 | easing.cubic-bezier(0.2, 0.1, 0.8, 0.8, math.div(12, 12)) * -109 - 0.5, | ||
| 395 | ) | ||
| 396 | ( | ||
| 397 | 0.3 + 0.7 * easing.ease(math.div(12, 12)), | ||
| 398 | ), | ||
| 171 | ), | 399 | ), |
| 172 | ), | 400 | ), |
| 173 | 401 | ||
| 174 | --palettes: ( | 402 | --palettes: ( |
| 175 | --base: hsl(257, 7%, 20%) --grays, | 403 | --base: hsl(257, 7%, 20%) --grays, |
| 176 | --blue: oklch(56% .16 275.25) --colors, | 404 | --blue: oklch(56% 0.16 275.25) --colors, |
| 177 | --purple: oklch(56% .16 305.58) --colors, | 405 | --purple: oklch(56% 0.16 305.58) --colors, |
| 178 | --red: oklch(56% .16 14.69) --colors, | 406 | --red: oklch(56% 0.16 14.69) --colors, |
| 179 | --green: oklch(56% .16 150.48) --colors, | 407 | --green: oklch(56% 0.16 150.48) --colors, |
| 180 | --yellow: oklch(56% .16 84.08) --colors, | 408 | --yellow: oklch(56% 0.16 84.08) --colors, |
| 181 | ), | 409 | ), |
| 182 | 410 | ||
| 183 | --semantic: map.merge($semantic-colors-common, ( | 411 | --semantic: map.merge( |
| 184 | --bg-base: --base --50, | 412 | $semantic-colors-common, |
| 185 | --bg-l1: --base --75, | 413 | ( |
| 186 | --bg-l2: --base --100, | 414 | --bg-base: --base --50, |
| 187 | 415 | --bg-l1: --base --75, | |
| 188 | --box: ( | 416 | --bg-l2: --base --100, |
| 189 | --border: --base --100, | 417 | --box: ( |
| 190 | --border-strong: --base --100, | 418 | --border: --base --100, |
| 419 | --border-strong: --base --100, | ||
| 420 | ), | ||
| 421 | ) | ||
| 191 | ), | 422 | ), |
| 192 | )), | ||
| 193 | |||
| 194 | --constants: ( | 423 | --constants: ( |
| 195 | --shadow: rgba(#000, .35), | 424 | --shadow: rgba(#000, 0.35), |
| 196 | ), | 425 | ), |
| 197 | ); | 426 | ); |
diff --git a/src/_config.scss b/src/_config.scss index a3ea6ee..6ddef96 100644 --- a/src/_config.scss +++ b/src/_config.scss | |||
| @@ -1,14 +1,17 @@ | |||
| 1 | @use 'sass:list'; | 1 | @use "sass:list"; |
| 2 | @use 'sass:map'; | 2 | @use "sass:map"; |
| 3 | @use 'sass:math'; | 3 | @use "sass:math"; |
| 4 | @use 'pkg:iro-sass/src/easing' as easing; | 4 | @use "pkg:iro-sass/easing" as easing; |
| 5 | @use 'config.defaults' as def; | 5 | @use "config.defaults" as def; |
| 6 | 6 | ||
| 7 | $static-colors-override: () !default; | 7 | $static-colors-override: () !default; |
| 8 | $static-colors: map.deep-merge(def.$static-colors, $static-colors-override) !default; | 8 | $static-colors: map.deep-merge(def.$static-colors, $static-colors-override) !default; |
| 9 | 9 | ||
| 10 | $semantic-colors-common-override: () !default; | 10 | $semantic-colors-common-override: () !default; |
| 11 | $semantic-colors-common: map.deep-merge(def.$semantic-colors-common, $semantic-colors-common-override) !default; | 11 | $semantic-colors-common: map.deep-merge( |
| 12 | def.$semantic-colors-common, | ||
| 13 | $semantic-colors-common-override | ||
| 14 | ) !default; | ||
| 12 | 15 | ||
| 13 | $theme-light-override: () !default; | 16 | $theme-light-override: () !default; |
| 14 | $theme-light: map.deep-merge(def.$theme-light, $theme-light-override) !default; | 17 | $theme-light: map.deep-merge(def.$theme-light, $theme-light-override) !default; |
| @@ -17,12 +20,15 @@ $theme-dark-override: () !default; | |||
| 17 | $theme-dark: map.deep-merge(def.$theme-dark, $theme-dark-override) !default; | 20 | $theme-dark: map.deep-merge(def.$theme-dark, $theme-dark-override) !default; |
| 18 | 21 | ||
| 19 | $themes-override: () !default; | 22 | $themes-override: () !default; |
| 20 | $themes: map.deep-merge(( | 23 | $themes: map.deep-merge( |
| 21 | --main: ( | 24 | ( |
| 22 | light: $theme-light, | 25 | --main: ( |
| 23 | dark: $theme-dark, | 26 | light: $theme-light, |
| 27 | dark: $theme-dark, | ||
| 28 | ), | ||
| 24 | ), | 29 | ), |
| 25 | ), $themes-override) !default; | 30 | $themes-override |
| 31 | ) !default; | ||
| 26 | 32 | ||
| 27 | $theme-default: list.nth(map.keys($themes), 1) !default; | 33 | $theme-default: list.nth(map.keys($themes), 1) !default; |
| 28 | 34 | ||
diff --git a/src/_core.scss b/src/_core.scss index 8c761ff..3427579 100644 --- a/src/_core.scss +++ b/src/_core.scss | |||
| @@ -1,42 +1,42 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:meta'; | 2 | @use "sass:meta"; |
| 3 | @use 'sass:string'; | 3 | @use "sass:string"; |
| 4 | @use 'pkg:iro-sass/src/bem'; | 4 | @use "pkg:iro-sass/bem"; |
| 5 | @use 'pkg:iro-sass/src/props'; | 5 | @use "pkg:iro-sass/props"; |
| 6 | @use 'config'; | 6 | @use "config"; |
| 7 | 7 | ||
| 8 | @use 'core.vars' as vars; | 8 | @use "core.vars" as vars; |
| 9 | @forward 'core.vars'; | 9 | @forward "core.vars"; |
| 10 | 10 | ||
| 11 | @mixin styles { | 11 | @mixin styles { |
| 12 | @each $theme-name, $theme in vars.$themes { | 12 | @each $theme-name, $theme in vars.$themes { |
| 13 | @if $theme-name == config.$theme-default { | 13 | @if $theme-name == config.$theme-default { |
| 14 | :root { | 14 | :root { |
| 15 | @include props.materialize(map.values(meta.module-variables('vars'))); | 15 | @include props.materialize(map.values(meta.module-variables("vars"))); |
| 16 | 16 | ||
| 17 | @if map.has-key($theme, 'dark') { | 17 | @if map.has-key($theme, "dark") { |
| 18 | @media (prefers-color-scheme: dark) { | 18 | @media (prefers-color-scheme: dark) { |
| 19 | @include props.materialize(map.get($theme, 'dark')); | 19 | @include props.materialize(map.get($theme, "dark")); |
| 20 | } | 20 | } |
| 21 | } | 21 | } |
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | @if map.has-key($theme, 'dark') and config.$explicit-dark-theme { | 24 | @if map.has-key($theme, "dark") and config.$explicit-dark-theme { |
| 25 | @include bem.theme('dark') { | 25 | @include bem.theme("dark") { |
| 26 | @include props.materialize(map.values(meta.module-variables('vars'))); | 26 | @include props.materialize(map.values(meta.module-variables("vars"))); |
| 27 | @include props.materialize(map.get($theme, 'dark')); | 27 | @include props.materialize(map.get($theme, "dark")); |
| 28 | } | 28 | } |
| 29 | } | 29 | } |
| 30 | } @else { | 30 | } @else { |
| 31 | @include bem.theme(string.slice($theme-name, 3)) { | 31 | @include bem.theme(string.slice($theme-name, 3)) { |
| 32 | @include props.materialize(map.get($theme, 'light')); | 32 | @include props.materialize(map.get($theme, "light")); |
| 33 | 33 | ||
| 34 | color: props.get(vars.$theme, --text); | 34 | color: props.get(vars.$theme, --text); |
| 35 | background-color: props.get(vars.$theme, --bg-base); | 35 | background-color: props.get(vars.$theme, --bg-base); |
| 36 | 36 | ||
| 37 | @if map.has-key($theme, 'dark') { | 37 | @if map.has-key($theme, "dark") { |
| 38 | @media (prefers-color-scheme: dark) { | 38 | @media (prefers-color-scheme: dark) { |
| 39 | @include props.materialize(map.get($theme, 'dark')); | 39 | @include props.materialize(map.get($theme, "dark")); |
| 40 | } | 40 | } |
| 41 | } | 41 | } |
| 42 | } | 42 | } |
diff --git a/src/_core.vars.scss b/src/_core.vars.scss index 11acbfa..bef5f88 100644 --- a/src/_core.vars.scss +++ b/src/_core.vars.scss | |||
| @@ -1,45 +1,45 @@ | |||
| 1 | // stylelint-disable scss/dollar-variable-pattern | 1 | // stylelint-disable scss/dollar-variable-pattern |
| 2 | 2 | ||
| 3 | @use 'sass:map'; | 3 | @use "sass:map"; |
| 4 | @use 'sass:meta'; | 4 | @use "sass:meta"; |
| 5 | @use 'sass:list'; | 5 | @use "sass:list"; |
| 6 | @use 'functions' as fn; | 6 | @use "functions" as fn; |
| 7 | @use 'config'; | 7 | @use "config"; |
| 8 | @use 'pkg:iro-sass/src/functions'; | 8 | @use "pkg:iro-sass/functions"; |
| 9 | @use 'pkg:iro-sass/src/props'; | 9 | @use "pkg:iro-sass/props"; |
| 10 | 10 | ||
| 11 | $size--0: props.def(--size--0, 0) !default; | 11 | $size--0: props.def(--size--0, 0) !default; |
| 12 | $size--10: props.def(--size--10, functions.px-to-rem(1px)) !default; | 12 | $size--10: props.def(--size--10, functions.px-to-rem(1px)) !default; |
| 13 | $size--25: props.def(--size--25, functions.px-to-rem(2px)) !default; | 13 | $size--25: props.def(--size--25, functions.px-to-rem(2px)) !default; |
| 14 | $size--40: props.def(--size--40, functions.px-to-rem(3px)) !default; | 14 | $size--40: props.def(--size--40, functions.px-to-rem(3px)) !default; |
| 15 | $size--50: props.def(--size--50, functions.px-to-rem(4px)) !default; | 15 | $size--50: props.def(--size--50, functions.px-to-rem(4px)) !default; |
| 16 | $size--65: props.def(--size--65, functions.px-to-rem(5px)) !default; | 16 | $size--65: props.def(--size--65, functions.px-to-rem(5px)) !default; |
| 17 | $size--75: props.def(--size--75, functions.px-to-rem(6px)) !default; | 17 | $size--75: props.def(--size--75, functions.px-to-rem(6px)) !default; |
| 18 | $size--85: props.def(--size--85, functions.px-to-rem(7px)) !default; | 18 | $size--85: props.def(--size--85, functions.px-to-rem(7px)) !default; |
| 19 | $size--100: props.def(--size--100, functions.px-to-rem(8px)) !default; | 19 | $size--100: props.def(--size--100, functions.px-to-rem(8px)) !default; |
| 20 | $size--115: props.def(--size--115, functions.px-to-rem(9px)) !default; | 20 | $size--115: props.def(--size--115, functions.px-to-rem(9px)) !default; |
| 21 | $size--125: props.def(--size--125, functions.px-to-rem(10px)) !default; | 21 | $size--125: props.def(--size--125, functions.px-to-rem(10px)) !default; |
| 22 | $size--130: props.def(--size--130, functions.px-to-rem(11px)) !default; | 22 | $size--130: props.def(--size--130, functions.px-to-rem(11px)) !default; |
| 23 | $size--150: props.def(--size--150, functions.px-to-rem(12px)) !default; | 23 | $size--150: props.def(--size--150, functions.px-to-rem(12px)) !default; |
| 24 | $size--160: props.def(--size--160, functions.px-to-rem(13px)) !default; | 24 | $size--160: props.def(--size--160, functions.px-to-rem(13px)) !default; |
| 25 | $size--175: props.def(--size--175, functions.px-to-rem(14px)) !default; | 25 | $size--175: props.def(--size--175, functions.px-to-rem(14px)) !default; |
| 26 | $size--200: props.def(--size--200, functions.px-to-rem(16px)) !default; | 26 | $size--200: props.def(--size--200, functions.px-to-rem(16px)) !default; |
| 27 | $size--225: props.def(--size--225, functions.px-to-rem(18px)) !default; | 27 | $size--225: props.def(--size--225, functions.px-to-rem(18px)) !default; |
| 28 | $size--250: props.def(--size--250, functions.px-to-rem(20px)) !default; | 28 | $size--250: props.def(--size--250, functions.px-to-rem(20px)) !default; |
| 29 | $size--275: props.def(--size--275, functions.px-to-rem(22px)) !default; | 29 | $size--275: props.def(--size--275, functions.px-to-rem(22px)) !default; |
| 30 | $size--300: props.def(--size--300, functions.px-to-rem(24px)) !default; | 30 | $size--300: props.def(--size--300, functions.px-to-rem(24px)) !default; |
| 31 | $size--325: props.def(--size--325, functions.px-to-rem(26px)) !default; | 31 | $size--325: props.def(--size--325, functions.px-to-rem(26px)) !default; |
| 32 | $size--350: props.def(--size--350, functions.px-to-rem(28px)) !default; | 32 | $size--350: props.def(--size--350, functions.px-to-rem(28px)) !default; |
| 33 | $size--375: props.def(--size--375, functions.px-to-rem(30px)) !default; | 33 | $size--375: props.def(--size--375, functions.px-to-rem(30px)) !default; |
| 34 | $size--400: props.def(--size--400, functions.px-to-rem(32px)) !default; | 34 | $size--400: props.def(--size--400, functions.px-to-rem(32px)) !default; |
| 35 | $size--450: props.def(--size--450, functions.px-to-rem(36px)) !default; | 35 | $size--450: props.def(--size--450, functions.px-to-rem(36px)) !default; |
| 36 | $size--500: props.def(--size--500, functions.px-to-rem(40px)) !default; | 36 | $size--500: props.def(--size--500, functions.px-to-rem(40px)) !default; |
| 37 | $size--550: props.def(--size--550, functions.px-to-rem(44px)) !default; | 37 | $size--550: props.def(--size--550, functions.px-to-rem(44px)) !default; |
| 38 | $size--600: props.def(--size--600, functions.px-to-rem(48px)) !default; | 38 | $size--600: props.def(--size--600, functions.px-to-rem(48px)) !default; |
| 39 | $size--650: props.def(--size--650, functions.px-to-rem(52px)) !default; | 39 | $size--650: props.def(--size--650, functions.px-to-rem(52px)) !default; |
| 40 | $size--700: props.def(--size--700, functions.px-to-rem(56px)) !default; | 40 | $size--700: props.def(--size--700, functions.px-to-rem(56px)) !default; |
| 41 | $size--800: props.def(--size--800, functions.px-to-rem(64px)) !default; | 41 | $size--800: props.def(--size--800, functions.px-to-rem(64px)) !default; |
| 42 | $size--900: props.def(--size--900, functions.px-to-rem(72px)) !default; | 42 | $size--900: props.def(--size--900, functions.px-to-rem(72px)) !default; |
| 43 | $size--1000: props.def(--size--1000, functions.px-to-rem(80px)) !default; | 43 | $size--1000: props.def(--size--1000, functions.px-to-rem(80px)) !default; |
| 44 | $size--1200: props.def(--size--1200, functions.px-to-rem(96px)) !default; | 44 | $size--1200: props.def(--size--1200, functions.px-to-rem(96px)) !default; |
| 45 | $size--1600: props.def(--size--1600, functions.px-to-rem(128px)) !default; | 45 | $size--1600: props.def(--size--1600, functions.px-to-rem(128px)) !default; |
| @@ -58,58 +58,105 @@ $size--4600: props.def(--size--4600, functions.px-to-rem(368px)) !default; | |||
| 58 | $size--5000: props.def(--size--5000, functions.px-to-rem(400px)) !default; | 58 | $size--5000: props.def(--size--5000, functions.px-to-rem(400px)) !default; |
| 59 | $size--6000: props.def(--size--6000, functions.px-to-rem(480px)) !default; | 59 | $size--6000: props.def(--size--6000, functions.px-to-rem(480px)) !default; |
| 60 | 60 | ||
| 61 | $font--standard--family: props.def(--font--standard--family, ('Inter', 'Open Sans', 'Segoe UI', 'Droid Sans', Roboto, Oxygen, 'Helvetica Neue', Helvetica, Tahoma, Arial, sans-serif)) !default; | 61 | $font--standard--family: props.def( |
| 62 | $font--standard--line-height: props.def(--font--standard--line-height, 1.5) !default; | 62 | --font--standard--family, |
| 63 | $font--standard--feature-settings: props.def(--font--standard--feature-settings, ('\'ss01\'')) !default; | 63 | ( |
| 64 | "Inter", | ||
| 65 | "Open Sans", | ||
| 66 | "Segoe UI", | ||
| 67 | "Droid Sans", | ||
| 68 | Roboto, | ||
| 69 | Oxygen, | ||
| 70 | "Helvetica Neue", | ||
| 71 | Helvetica, | ||
| 72 | Tahoma, | ||
| 73 | Arial, | ||
| 74 | sans-serif | ||
| 75 | ) | ||
| 76 | ) !default; | ||
| 77 | $font--standard--line-height: props.def(--font--standard--line-height, 1.5) !default; | ||
| 78 | $font--standard--feature-settings: props.def( | ||
| 79 | --font--standard--feature-settings, | ||
| 80 | ("'ss01'") | ||
| 81 | ) !default; | ||
| 64 | 82 | ||
| 65 | $font--headline--family: props.def(--font--headline--family, props.get($font--standard--family)) !default; | 83 | $font--headline--family: props.def( |
| 66 | $font--headline--line-height: props.def(--font--headline--line-height, 1.3) !default; | 84 | --font--headline--family, |
| 67 | $font--headline--weight: props.def(--font--headline--weight, 800) !default; | 85 | props.get($font--standard--family) |
| 68 | $font--headline--feature-settings: props.def(--font--headline--feature-settings, ('\'opsz\'' 32, '\'ss01\'', '\'cv06\'')) !default; | 86 | ) !default; |
| 87 | $font--headline--line-height: props.def(--font--headline--line-height, 1.3) !default; | ||
| 88 | $font--headline--weight: props.def(--font--headline--weight, 800) !default; | ||
| 89 | $font--headline--feature-settings: props.def( | ||
| 90 | --font--headline--feature-settings, | ||
| 91 | ("'opsz'" 32, "'ss01'", "'cv06'") | ||
| 92 | ) !default; | ||
| 69 | 93 | ||
| 70 | $font--mono--family: props.def(--font--mono--family, ('Iosevka Term SS09', 'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace)) !default; | 94 | $font--mono--family: props.def( |
| 71 | $font--mono--line-height: props.def(--font--mono--line-height, 1.4) !default; | 95 | --font--mono--family, |
| 72 | $font--mono--feature-settings: props.def(--font--mono--feature-settings, ('\'calt\'' 0, '\'dlig\' 1', '\'ss09\' 1')) !default; | 96 | ( |
| 97 | "Iosevka Term SS09", | ||
| 98 | "IBM Plex Mono", | ||
| 99 | "Menlo", | ||
| 100 | "DejaVu Sans Mono", | ||
| 101 | "Bitstream Vera Sans Mono", | ||
| 102 | Courier, | ||
| 103 | monospace | ||
| 104 | ) | ||
| 105 | ) !default; | ||
| 106 | $font--mono--line-height: props.def(--font--mono--line-height, 1.4) !default; | ||
| 107 | $font--mono--feature-settings: props.def( | ||
| 108 | --font--mono--feature-settings, | ||
| 109 | ("'calt'" 0, "'dlig' 1", "'ss09' 1") | ||
| 110 | ) !default; | ||
| 73 | 111 | ||
| 74 | $font-size--50: props.def(--font-size--50, functions.px-to-rem(12px)) !default; | 112 | $font-size--50: props.def(--font-size--50, functions.px-to-rem(12px)) !default; |
| 75 | $font-size--75: props.def(--font-size--75 , functions.px-to-rem(13px)) !default; | 113 | $font-size--75: props.def(--font-size--75, functions.px-to-rem(13px)) !default; |
| 76 | $font-size--100: props.def(--font-size--100, functions.px-to-rem(14px)) !default; | 114 | $font-size--100: props.def(--font-size--100, functions.px-to-rem(14px)) !default; |
| 77 | $font-size--150: props.def(--font-size--150, functions.px-to-rem(16px)) !default; | 115 | $font-size--150: props.def(--font-size--150, functions.px-to-rem(16px)) !default; |
| 78 | $font-size--200: props.def(--font-size--200, functions.px-to-rem(18px)) !default; | 116 | $font-size--200: props.def(--font-size--200, functions.px-to-rem(18px)) !default; |
| 79 | $font-size--300: props.def(--font-size--300, functions.px-to-rem(20px)) !default; | 117 | $font-size--300: props.def(--font-size--300, functions.px-to-rem(20px)) !default; |
| 80 | $font-size--400: props.def(--font-size--400, functions.px-to-rem(24px)) !default; | 118 | $font-size--400: props.def(--font-size--400, functions.px-to-rem(24px)) !default; |
| 81 | $font-size--500: props.def(--font-size--500, functions.px-to-rem(28px)) !default; | 119 | $font-size--500: props.def(--font-size--500, functions.px-to-rem(28px)) !default; |
| 82 | $font-size--600: props.def(--font-size--600, functions.px-to-rem(32px)) !default; | 120 | $font-size--600: props.def(--font-size--600, functions.px-to-rem(32px)) !default; |
| 83 | $font-size--700: props.def(--font-size--700, functions.px-to-rem(36px)) !default; | 121 | $font-size--700: props.def(--font-size--700, functions.px-to-rem(36px)) !default; |
| 84 | $font-size--800: props.def(--font-size--800, functions.px-to-rem(40px)) !default; | 122 | $font-size--800: props.def(--font-size--800, functions.px-to-rem(40px)) !default; |
| 85 | $font-size--900: props.def(--font-size--900, functions.px-to-rem(45px)) !default; | 123 | $font-size--900: props.def(--font-size--900, functions.px-to-rem(45px)) !default; |
| 86 | $font-size--1000: props.def(--font-size--1000, functions.px-to-rem(50px)) !default; | 124 | $font-size--1000: props.def(--font-size--1000, functions.px-to-rem(50px)) !default; |
| 87 | $font-size--1100: props.def(--font-size--1100, functions.px-to-rem(60px)) !default; | 125 | $font-size--1100: props.def(--font-size--1100, functions.px-to-rem(60px)) !default; |
| 88 | $font-size--1200: props.def(--font-size--1200, functions.px-to-rem(70px)) !default; | 126 | $font-size--1200: props.def(--font-size--1200, functions.px-to-rem(70px)) !default; |
| 89 | $font-size--1300: props.def(--font-size--1300, functions.px-to-rem(80px)) !default; | 127 | $font-size--1300: props.def(--font-size--1300, functions.px-to-rem(80px)) !default; |
| 90 | 128 | ||
| 91 | $border-width--thick: props.def(--border-width--thick, 4px) !default; | 129 | $border-width--thick: props.def(--border-width--thick, 4px) !default; |
| 92 | $border-width--medium: props.def(--border-width--medium, 2px) !default; | 130 | $border-width--medium: props.def(--border-width--medium, 2px) !default; |
| 93 | $border-width--thin: props.def(--border-width--thin, 1px) !default; | 131 | $border-width--thin: props.def(--border-width--thin, 1px) !default; |
| 94 | 132 | ||
| 95 | $shadow--l1--x: props.def(--shadow--l1--x, 0) !default; | 133 | $shadow--l1--x: props.def(--shadow--l1--x, 0) !default; |
| 96 | $shadow--l1--y: props.def(--shadow--l1--y, 2px) !default; | 134 | $shadow--l1--y: props.def(--shadow--l1--y, 2px) !default; |
| 97 | $shadow--l1--blur: props.def(--shadow--l1--blur, 3px) !default; | 135 | $shadow--l1--blur: props.def(--shadow--l1--blur, 3px) !default; |
| 98 | $shadow--l1--grow: props.def(--shadow--l1--grow, -1px) !default; | 136 | $shadow--l1--grow: props.def(--shadow--l1--grow, -1px) !default; |
| 99 | 137 | ||
| 100 | $shadow--l2--x: props.def(--shadow--l2--x, 0) !default; | 138 | $shadow--l2--x: props.def(--shadow--l2--x, 0) !default; |
| 101 | $shadow--l2--y: props.def(--shadow--l2--y, 5px) !default; | 139 | $shadow--l2--y: props.def(--shadow--l2--y, 5px) !default; |
| 102 | $shadow--l2--blur: props.def(--shadow--l2--blur, 12px) !default; | 140 | $shadow--l2--blur: props.def(--shadow--l2--blur, 12px) !default; |
| 103 | $shadow--l2--grow: props.def(--shadow--l2--grow, -4px) !default; | 141 | $shadow--l2--grow: props.def(--shadow--l2--grow, -4px) !default; |
| 104 | 142 | ||
| 105 | $rounding: props.def(--rounding, 12px) !default; | 143 | $rounding: props.def(--rounding, 12px) !default; |
| 106 | $rounding--sm: props.def(--rounding--sm, 4px) !default; | 144 | $rounding--sm: props.def(--rounding--sm, 4px) !default; |
| 107 | 145 | ||
| 108 | $key-focus--outline-width: props.def(--key-focus--outline-width, props.get($border-width--thick)) !default; | 146 | $key-focus--outline-width: props.def( |
| 109 | $key-focus--border-width: props.def(--key-focus--border-width, props.get($border-width--medium)) !default; | 147 | --key-focus--outline-width, |
| 110 | $key-focus--border-offset: props.def(--key-focus--border-offset, props.get($border-width--medium)) !default; | 148 | props.get($border-width--thick) |
| 149 | ) !default; | ||
| 150 | $key-focus--border-width: props.def( | ||
| 151 | --key-focus--border-width, | ||
| 152 | props.get($border-width--medium) | ||
| 153 | ) !default; | ||
| 154 | $key-focus--border-offset: props.def( | ||
| 155 | --key-focus--border-offset, | ||
| 156 | props.get($border-width--medium) | ||
| 157 | ) !default; | ||
| 111 | 158 | ||
| 112 | $list--indent: props.def(--list--indent, props.get($size--400)) !default; | 159 | $list--indent: props.def(--list--indent, props.get($size--400)) !default; |
| 113 | $list--compact-indent: props.def(--list--compact-indent, props.get($size--250)) !default; | 160 | $list--compact-indent: props.def(--list--compact-indent, props.get($size--250)) !default; |
| 114 | 161 | ||
| 115 | $sticky-top-offset: props.def(--sticky-top-offset, 0rem) !default; | 162 | $sticky-top-offset: props.def(--sticky-top-offset, 0rem) !default; |
| @@ -119,20 +166,34 @@ $sticky-top-offset: props.def(--sticky-top-offset, 0rem) !default; | |||
| 119 | $-static-colors: (); | 166 | $-static-colors: (); |
| 120 | 167 | ||
| 121 | @each $palette-name, $palette in map.get(config.$static-colors, --palettes) { | 168 | @each $palette-name, $palette in map.get(config.$static-colors, --palettes) { |
| 122 | $palette: fn.palette($palette, map.get(config.$static-colors, --levels), map.get(config.$static-colors, --base)); | 169 | $palette: fn.palette( |
| 123 | $-static-colors: map.merge($-static-colors, ( $palette-name: $palette )); | 170 | $palette, |
| 171 | map.get(config.$static-colors, --levels), | ||
| 172 | map.get(config.$static-colors, --base) | ||
| 173 | ); | ||
| 174 | $-static-colors: map.merge( | ||
| 175 | $-static-colors, | ||
| 176 | ( | ||
| 177 | $palette-name: $palette, | ||
| 178 | ) | ||
| 179 | ); | ||
| 124 | } | 180 | } |
| 125 | 181 | ||
| 126 | // | 182 | // |
| 127 | 183 | ||
| 128 | $transparent-colors: props.def(--transparent-colors, (), 'color'); | 184 | $transparent-colors: props.def(--transparent-colors, (), "color"); |
| 129 | 185 | ||
| 130 | @each $palette-name, $palette in (--black: #000 #fff, --white: #fff #000) { | 186 | @each $palette-name, $palette in (--black: #000 #fff, --white: #fff #000) { |
| 131 | $color: list.nth($palette, 1); | 187 | $color: list.nth($palette, 1); |
| 132 | $text: list.nth($palette, 2); | 188 | $text: list.nth($palette, 2); |
| 133 | 189 | ||
| 134 | $palette: fn.transparent-palette($color, $text, map.get(config.$static-colors, --transparents)); | 190 | $palette: fn.transparent-palette($color, $text, map.get(config.$static-colors, --transparents)); |
| 135 | $transparent-colors: props.merge($transparent-colors, ( $palette-name: $palette )); | 191 | $transparent-colors: props.merge( |
| 192 | $transparent-colors, | ||
| 193 | ( | ||
| 194 | $palette-name: $palette, | ||
| 195 | ) | ||
| 196 | ); | ||
| 136 | } | 197 | } |
| 137 | 198 | ||
| 138 | // | 199 | // |
| @@ -142,40 +203,64 @@ $themes: (); | |||
| 142 | @each $theme-name, $theme in config.$themes { | 203 | @each $theme-name, $theme in config.$themes { |
| 143 | @each $variant-name, $variant in $theme { | 204 | @each $variant-name, $variant in $theme { |
| 144 | @if $variant != null { | 205 | @if $variant != null { |
| 145 | $compiled: props.def(--colors, (), 'color'); | 206 | $compiled: props.def(--colors, (), "color"); |
| 146 | 207 | ||
| 147 | @each $palette-name, $palette in $-static-colors { | 208 | @each $palette-name, $palette in $-static-colors { |
| 148 | $compiled: props.merge($compiled, ( #{$palette-name}-static: $palette )); | 209 | $compiled: props.merge($compiled, (#{$palette-name}-static: $palette)); |
| 149 | } | 210 | } |
| 150 | 211 | ||
| 151 | @each $palette-name, $palette in map.get($variant, --palettes) { | 212 | @each $palette-name, $palette in map.get($variant, --palettes) { |
| 152 | $base-color: list.nth($palette, 1); | 213 | $base-color: list.nth($palette, 1); |
| 153 | $levels: list.nth($palette, 2); | 214 | $levels: list.nth($palette, 2); |
| 154 | 215 | ||
| 155 | $palette: fn.palette($base-color, map.get($variant, --levels, $levels), list.nth(map.get($variant, --palettes, --base), 1)); | 216 | $palette: fn.palette( |
| 156 | $compiled: props.merge($compiled, ( $palette-name: $palette )); | 217 | $base-color, |
| 218 | map.get($variant, --levels, $levels), | ||
| 219 | list.nth(map.get($variant, --palettes, --base), 1) | ||
| 220 | ); | ||
| 221 | $compiled: props.merge( | ||
| 222 | $compiled, | ||
| 223 | ( | ||
| 224 | $palette-name: $palette, | ||
| 225 | ) | ||
| 226 | ); | ||
| 157 | } | 227 | } |
| 158 | 228 | ||
| 159 | @each $color, $value in map.get($variant, --constants) { | 229 | @each $color, $value in map.get($variant, --constants) { |
| 160 | $compiled: props.merge($compiled, ( $color: $value )); | 230 | $compiled: props.merge( |
| 231 | $compiled, | ||
| 232 | ( | ||
| 233 | $color: $value, | ||
| 234 | ) | ||
| 235 | ); | ||
| 161 | } | 236 | } |
| 162 | 237 | ||
| 163 | @each $color, $ref in map.get($variant, --semantic) { | 238 | @each $color, $ref in map.get($variant, --semantic) { |
| 164 | $res: (); | 239 | $res: (); |
| 165 | 240 | ||
| 166 | @if meta.type-of($ref) == 'map' { | 241 | @if meta.type-of($ref) == "map" { |
| 167 | @each $key, $r in $ref { | 242 | @each $key, $r in $ref { |
| 168 | $re1: list.nth($r, 1); | 243 | $re1: list.nth($r, 1); |
| 169 | $re2: functions.list-slice($r, 2); | 244 | $re2: functions.list-slice($r, 2); |
| 170 | $res: map.merge($res, ($key: props.get($compiled, $re1, $re2...))); | 245 | $res: map.merge( |
| 246 | $res, | ||
| 247 | ( | ||
| 248 | $key: props.get($compiled, $re1, $re2...), | ||
| 249 | ) | ||
| 250 | ); | ||
| 171 | } | 251 | } |
| 172 | } @else { | 252 | } @else { |
| 173 | $ref1: list.nth($ref, 1); | 253 | $ref1: list.nth($ref, 1); |
| 174 | $ref2: functions.list-slice($ref, 2); | 254 | $ref2: functions.list-slice($ref, 2); |
| 175 | $res: props.get($compiled, $ref1, $ref2...); | 255 | $res: props.get($compiled, $ref1, $ref2...); |
| 176 | } | 256 | } |
| 177 | 257 | ||
| 178 | $compiled: props.merge($compiled, ( $color: $res )); | 258 | $compiled: props.merge( |
| 259 | $compiled, | ||
| 260 | ( | ||
| 261 | $color: $res, | ||
| 262 | ) | ||
| 263 | ); | ||
| 179 | } | 264 | } |
| 180 | 265 | ||
| 181 | $themes: map.set($themes, $theme-name, $variant-name, $compiled); | 266 | $themes: map.set($themes, $theme-name, $variant-name, $compiled); |
diff --git a/src/_functions.scss b/src/_functions.scss index e237ccc..8fb0d98 100644 --- a/src/_functions.scss +++ b/src/_functions.scss | |||
| @@ -1,17 +1,17 @@ | |||
| 1 | @use 'sass:color'; | 1 | @use "sass:color"; |
| 2 | @use 'sass:math'; | 2 | @use "sass:math"; |
| 3 | @use 'sass:map'; | 3 | @use "sass:map"; |
| 4 | @use 'sass:list'; | 4 | @use "sass:list"; |
| 5 | @use 'sass:meta'; | 5 | @use "sass:meta"; |
| 6 | 6 | ||
| 7 | @use 'pkg:iro-sass/src/easing'; | 7 | @use "pkg:iro-sass/easing"; |
| 8 | @use 'apca'; | 8 | @use "apca"; |
| 9 | 9 | ||
| 10 | @function palette($base-color, $levels, $ref-color: $base-color) { | 10 | @function palette($base-color, $levels, $ref-color: $base-color) { |
| 11 | $base-lch: color.to-space($base-color, oklch); | 11 | $base-lch: color.to-space($base-color, oklch); |
| 12 | $ref-lch: color.to-space($ref-color, oklch); | 12 | $ref-lch: color.to-space($ref-color, oklch); |
| 13 | 13 | ||
| 14 | $ref-l: color.channel($ref-lch, 'lightness'); | 14 | $ref-l: color.channel($ref-lch, "lightness"); |
| 15 | $ref-y: apca.sRGB_to_Y($ref-lch); | 15 | $ref-y: apca.sRGB_to_Y($ref-lch); |
| 16 | 16 | ||
| 17 | $black-y: apca.sRGB_to_Y(#000); | 17 | $black-y: apca.sRGB_to_Y(#000); |
| @@ -32,17 +32,19 @@ | |||
| 32 | $h: list.nth($level, 3); | 32 | $h: list.nth($level, 3); |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | @if meta.type-of($color) != 'color' { | 35 | @if meta.type-of($color) != "color" { |
| 36 | $y: apca.reverse($color, $ref-y); | 36 | $y: apca.reverse($color, $ref-y); |
| 37 | $l: color.channel($base-lch, 'lightness'); | 37 | $l: color.channel($base-lch, "lightness"); |
| 38 | 38 | ||
| 39 | @if $y != false { | 39 | @if $y != false { |
| 40 | $l: color.channel(apca.Y_to_sRGB($y), 'lightness', oklch); | 40 | $l: color.channel(apca.Y_to_sRGB($y), "lightness", oklch); |
| 41 | } @else { | 41 | } @else { |
| 42 | $y: $ref-y; | 42 | $y: $ref-y; |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | $color: oklch($l ($c * color.channel($base-lch, 'chroma')) ($h + color.channel($base-lch, 'hue'))); | 45 | $color: oklch( |
| 46 | $l ($c * color.channel($base-lch, "chroma")) ($h + color.channel($base-lch, "hue")) | ||
| 47 | ); | ||
| 46 | } @else { | 48 | } @else { |
| 47 | $y: apca.sRGB_to_Y($color); | 49 | $y: apca.sRGB_to_Y($color); |
| 48 | } | 50 | } |
| @@ -51,7 +53,11 @@ | |||
| 51 | $contrast-white: apca.contrast($white-y, $y); | 53 | $contrast-white: apca.contrast($white-y, $y); |
| 52 | 54 | ||
| 53 | $palette: map.set($palette, $key, $color); | 55 | $palette: map.set($palette, $key, $color); |
| 54 | $palette: map.set($palette, #{$key}-text, if(sass(math.abs($contrast-black) > math.abs($contrast-white)): #000; else: #fff)); | 56 | $palette: map.set( |
| 57 | $palette, | ||
| 58 | #{$key}-text, | ||
| 59 | if(sass(math.abs($contrast-black) > math.abs($contrast-white)): #000; else: #fff) | ||
| 60 | ); | ||
| 55 | } | 61 | } |
| 56 | 62 | ||
| 57 | @return $palette; | 63 | @return $palette; |
diff --git a/src/_props.scss b/src/_props.scss index 0830375..2683ca9 100644 --- a/src/_props.scss +++ b/src/_props.scss | |||
| @@ -1,46 +1,46 @@ | |||
| 1 | @use 'sass:list'; | 1 | @use "sass:list"; |
| 2 | @use 'sass:map'; | 2 | @use "sass:map"; |
| 3 | @use 'sass:meta'; | 3 | @use "sass:meta"; |
| 4 | @use 'sass:string'; | 4 | @use "sass:string"; |
| 5 | @use 'config'; | 5 | @use "config"; |
| 6 | @use 'pkg:include-media/dist/include-media' as media; | 6 | @use "pkg:include-media/dist/include-media" as media; |
| 7 | @use 'pkg:iro-sass/src/bem'; | 7 | @use "pkg:iro-sass/bem"; |
| 8 | @use 'pkg:iro-sass/src/props'; | 8 | @use "pkg:iro-sass/props"; |
| 9 | 9 | ||
| 10 | @mixin materialize-at-root($ref) { | 10 | @mixin materialize-at-root($ref) { |
| 11 | @if meta.type-of($ref) == 'map' { | 11 | @if meta.type-of($ref) == "map" { |
| 12 | $ref: map.values($ref); | 12 | $ref: map.values($ref); |
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | :root { | 15 | :root { |
| 16 | @include props.materialize($ref, null); | 16 | @include props.materialize($ref, null); |
| 17 | @include props.materialize($ref, 'color'); | 17 | @include props.materialize($ref, "color"); |
| 18 | 18 | ||
| 19 | @each $breakpoint in map.keys(media.$breakpoints) { | 19 | @each $breakpoint in map.keys(media.$breakpoints) { |
| 20 | @include media.media('<=#{$breakpoint}') { | 20 | @include media.media("<=#{$breakpoint}") { |
| 21 | @include props.materialize($ref, $breakpoint); | 21 | @include props.materialize($ref, $breakpoint); |
| 22 | } | 22 | } |
| 23 | } | 23 | } |
| 24 | 24 | ||
| 25 | @media (prefers-color-scheme: dark) { | 25 | @media (prefers-color-scheme: dark) { |
| 26 | @include props.materialize($ref, 'dark'); | 26 | @include props.materialize($ref, "dark"); |
| 27 | } | 27 | } |
| 28 | } | 28 | } |
| 29 | 29 | ||
| 30 | @if config.$explicit-dark-theme { | 30 | @if config.$explicit-dark-theme { |
| 31 | @include bem.theme('dark') { | 31 | @include bem.theme("dark") { |
| 32 | @include props.materialize($ref, 'color'); | 32 | @include props.materialize($ref, "color"); |
| 33 | @include props.materialize($ref, 'dark'); | 33 | @include props.materialize($ref, "dark"); |
| 34 | } | 34 | } |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | @each $theme-name in map.keys(config.$themes) { | 37 | @each $theme-name in map.keys(config.$themes) { |
| 38 | @if $theme-name != config.$theme-default { | 38 | @if $theme-name != config.$theme-default { |
| 39 | @include bem.theme(string.slice($theme-name, 3)) { | 39 | @include bem.theme(string.slice($theme-name, 3)) { |
| 40 | @include props.materialize($ref, 'color'); | 40 | @include props.materialize($ref, "color"); |
| 41 | 41 | ||
| 42 | @media (prefers-color-scheme: dark) { | 42 | @media (prefers-color-scheme: dark) { |
| 43 | @include props.materialize($ref, 'dark'); | 43 | @include props.materialize($ref, "dark"); |
| 44 | } | 44 | } |
| 45 | } | 45 | } |
| 46 | } | 46 | } |
diff --git a/src/_themes.scss b/src/_themes.scss index f06a5ca..be13e60 100644 --- a/src/_themes.scss +++ b/src/_themes.scss | |||
| @@ -1,71 +1,71 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:string'; | 2 | @use "sass:string"; |
| 3 | @use 'pkg:iro-sass/src/bem'; | 3 | @use "pkg:iro-sass/bem"; |
| 4 | @use 'pkg:iro-sass/src/props'; | 4 | @use "pkg:iro-sass/props"; |
| 5 | @use 'pkg:include-media/dist/include-media' as media; | 5 | @use "pkg:include-media/dist/include-media" as media; |
| 6 | 6 | ||
| 7 | @use 'core.vars' as vars; | 7 | @use "core.vars" as vars; |
| 8 | @forward 'core.vars'; | 8 | @forward "core.vars"; |
| 9 | 9 | ||
| 10 | @mixin styles { | 10 | @mixin styles { |
| 11 | @include bem.theme('base') { | 11 | @include bem.theme("base") { |
| 12 | background-color: props.get(vars.$theme, --bg-base); | 12 | background-color: props.get(vars.$theme, --bg-base); |
| 13 | 13 | ||
| 14 | @include bem.suffix('light') { | 14 | @include bem.suffix("light") { |
| 15 | @media (prefers-color-scheme: light) { | 15 | @media (prefers-color-scheme: light) { |
| 16 | background-color: props.get(vars.$theme, --bg-base); | 16 | background-color: props.get(vars.$theme, --bg-base); |
| 17 | } | 17 | } |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | @include bem.suffix('dark') { | 20 | @include bem.suffix("dark") { |
| 21 | @media (prefers-color-scheme: dark) { | 21 | @media (prefers-color-scheme: dark) { |
| 22 | background-color: props.get(vars.$theme, --bg-base); | 22 | background-color: props.get(vars.$theme, --bg-base); |
| 23 | } | 23 | } |
| 24 | } | 24 | } |
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | @include bem.theme('l1') { | 27 | @include bem.theme("l1") { |
| 28 | background-color: props.get(vars.$theme, --bg-l1); | 28 | background-color: props.get(vars.$theme, --bg-l1); |
| 29 | 29 | ||
| 30 | @include bem.suffix('light') { | 30 | @include bem.suffix("light") { |
| 31 | @media (prefers-color-scheme: light) { | 31 | @media (prefers-color-scheme: light) { |
| 32 | background-color: props.get(vars.$theme, --bg-l1); | 32 | background-color: props.get(vars.$theme, --bg-l1); |
| 33 | } | 33 | } |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | @include bem.suffix('dark') { | 36 | @include bem.suffix("dark") { |
| 37 | @media (prefers-color-scheme: dark) { | 37 | @media (prefers-color-scheme: dark) { |
| 38 | background-color: props.get(vars.$theme, --bg-l1); | 38 | background-color: props.get(vars.$theme, --bg-l1); |
| 39 | } | 39 | } |
| 40 | } | 40 | } |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | @include bem.theme('l2') { | 43 | @include bem.theme("l2") { |
| 44 | background-color: props.get(vars.$theme, --bg-l2); | 44 | background-color: props.get(vars.$theme, --bg-l2); |
| 45 | 45 | ||
| 46 | @include bem.suffix('light') { | 46 | @include bem.suffix("light") { |
| 47 | @media (prefers-color-scheme: light) { | 47 | @media (prefers-color-scheme: light) { |
| 48 | background-color: props.get(vars.$theme, --bg-l2); | 48 | background-color: props.get(vars.$theme, --bg-l2); |
| 49 | } | 49 | } |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | @include bem.suffix('dark') { | 52 | @include bem.suffix("dark") { |
| 53 | @media (prefers-color-scheme: dark) { | 53 | @media (prefers-color-scheme: dark) { |
| 54 | background-color: props.get(vars.$theme, --bg-l2); | 54 | background-color: props.get(vars.$theme, --bg-l2); |
| 55 | } | 55 | } |
| 56 | } | 56 | } |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | @include bem.theme('50') { | 59 | @include bem.theme("50") { |
| 60 | background-color: props.get(vars.$theme, --base, --50); | 60 | background-color: props.get(vars.$theme, --base, --50); |
| 61 | 61 | ||
| 62 | @include bem.suffix('light') { | 62 | @include bem.suffix("light") { |
| 63 | @media (prefers-color-scheme: light) { | 63 | @media (prefers-color-scheme: light) { |
| 64 | background-color: props.get(vars.$theme, --base, --50); | 64 | background-color: props.get(vars.$theme, --base, --50); |
| 65 | } | 65 | } |
| 66 | } | 66 | } |
| 67 | 67 | ||
| 68 | @include bem.suffix('dark') { | 68 | @include bem.suffix("dark") { |
| 69 | @media (prefers-color-scheme: dark) { | 69 | @media (prefers-color-scheme: dark) { |
| 70 | background-color: props.get(vars.$theme, --base, --50); | 70 | background-color: props.get(vars.$theme, --base, --50); |
| 71 | } | 71 | } |
diff --git a/src/_utils.scss b/src/_utils.scss index dd8e8bb..be2faab 100644 --- a/src/_utils.scss +++ b/src/_utils.scss | |||
| @@ -1,27 +1,27 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:string'; | 2 | @use "sass:string"; |
| 3 | @use 'pkg:iro-sass/src/bem'; | 3 | @use "pkg:iro-sass/bem"; |
| 4 | @use 'pkg:iro-sass/src/props'; | 4 | @use "pkg:iro-sass/props"; |
| 5 | @use 'pkg:include-media/dist/include-media' as media; | 5 | @use "pkg:include-media/dist/include-media" as media; |
| 6 | 6 | ||
| 7 | @use 'core.vars' as vars; | 7 | @use "core.vars" as vars; |
| 8 | @forward 'core.vars'; | 8 | @forward "core.vars"; |
| 9 | 9 | ||
| 10 | /* stylelint-disable-next-line scss/dollar-variable-pattern */ | 10 | /* stylelint-disable-next-line scss/dollar-variable-pattern */ |
| 11 | $-dirs: ( | 11 | $-dirs: ( |
| 12 | '': '', | 12 | "": "", |
| 13 | 'b': '-block', | 13 | "b": "-block", |
| 14 | 'bs': '-block-start', | 14 | "bs": "-block-start", |
| 15 | 'be': '-block-end', | 15 | "be": "-block-end", |
| 16 | 'i': '-inline', | 16 | "i": "-inline", |
| 17 | 'is': '-inline-start', | 17 | "is": "-inline-start", |
| 18 | 'ie': '-inline-end', | 18 | "ie": "-inline-end", |
| 19 | ) !default; | 19 | ) !default; |
| 20 | 20 | ||
| 21 | $-axes: ( | 21 | $-axes: ( |
| 22 | '': '', | 22 | "": "", |
| 23 | 'r': 'row-', | 23 | "r": "row-", |
| 24 | 'c': 'column-', | 24 | "c": "column-", |
| 25 | ) !default; | 25 | ) !default; |
| 26 | 26 | ||
| 27 | /* stylelint-disable-next-line scss/dollar-variable-pattern */ | 27 | /* stylelint-disable-next-line scss/dollar-variable-pattern */ |
| @@ -48,145 +48,145 @@ $-font-sizes: ( | |||
| 48 | ) !default; | 48 | ) !default; |
| 49 | 49 | ||
| 50 | $-aspect-ratios: ( | 50 | $-aspect-ratios: ( |
| 51 | '1\\/1': '1 / 1', | 51 | "1\\/1": "1 / 1", |
| 52 | '4\\/3': '4 / 3', | 52 | "4\\/3": "4 / 3", |
| 53 | '5\\/4': '5 / 4', | 53 | "5\\/4": "5 / 4", |
| 54 | ) !default; | 54 | ) !default; |
| 55 | 55 | ||
| 56 | @mixin styles { | 56 | @mixin styles { |
| 57 | @include bem.utility('d-block') { | 57 | @include bem.utility("d-block") { |
| 58 | display: block; | 58 | display: block; |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | @include bem.utility('d-inline-block') { | 61 | @include bem.utility("d-inline-block") { |
| 62 | display: inline-block; | 62 | display: inline-block; |
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | @include bem.utility('d-inline') { | 65 | @include bem.utility("d-inline") { |
| 66 | display: inline; | 66 | display: inline; |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | @include bem.utility('d-contents') { | 69 | @include bem.utility("d-contents") { |
| 70 | display: contents; | 70 | display: contents; |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | @include bem.utility('d-flex') { | 73 | @include bem.utility("d-flex") { |
| 74 | display: flex; | 74 | display: flex; |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | @include bem.utility('td-none') { | 77 | @include bem.utility("td-none") { |
| 78 | text-decoration: none; | 78 | text-decoration: none; |
| 79 | } | 79 | } |
| 80 | 80 | ||
| 81 | @include bem.utility('d-none') { | 81 | @include bem.utility("d-none") { |
| 82 | display: none; | 82 | display: none; |
| 83 | 83 | ||
| 84 | @each $breakpoint in map.keys(media.$breakpoints) { | 84 | @each $breakpoint in map.keys(media.$breakpoints) { |
| 85 | @include media.media('<=#{$breakpoint}') { | 85 | @include media.media("<=#{$breakpoint}") { |
| 86 | @include bem.suffix('#{$breakpoint}-lo') { | 86 | @include bem.suffix("#{$breakpoint}-lo") { |
| 87 | display: none; | 87 | display: none; |
| 88 | } | 88 | } |
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | @include media.media('>#{$breakpoint}') { | 91 | @include media.media(">#{$breakpoint}") { |
| 92 | @include bem.suffix('#{$breakpoint}-hi') { | 92 | @include bem.suffix("#{$breakpoint}-hi") { |
| 93 | display: none; | 93 | display: none; |
| 94 | } | 94 | } |
| 95 | } | 95 | } |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | @include bem.at-theme('js') { | 98 | @include bem.at-theme("js") { |
| 99 | @include bem.suffix('js') { | 99 | @include bem.suffix("js") { |
| 100 | display: none; | 100 | display: none; |
| 101 | } | 101 | } |
| 102 | } | 102 | } |
| 103 | 103 | ||
| 104 | @include bem.at-theme('no-js') { | 104 | @include bem.at-theme("no-js") { |
| 105 | @include bem.suffix('no-js') { | 105 | @include bem.suffix("no-js") { |
| 106 | display: none; | 106 | display: none; |
| 107 | } | 107 | } |
| 108 | } | 108 | } |
| 109 | 109 | ||
| 110 | @include bem.suffix('empty') { | 110 | @include bem.suffix("empty") { |
| 111 | &:empty { | 111 | &:empty { |
| 112 | display: none; | 112 | display: none; |
| 113 | } | 113 | } |
| 114 | } | 114 | } |
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | @include bem.utility('va-top') { | 117 | @include bem.utility("va-top") { |
| 118 | vertical-align: top; | 118 | vertical-align: top; |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | @include bem.utility('va-baseline') { | 121 | @include bem.utility("va-baseline") { |
| 122 | vertical-align: baseline; | 122 | vertical-align: baseline; |
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | @include bem.utility('va-middle') { | 125 | @include bem.utility("va-middle") { |
| 126 | vertical-align: middle; | 126 | vertical-align: middle; |
| 127 | } | 127 | } |
| 128 | 128 | ||
| 129 | @include bem.utility('va-bottom') { | 129 | @include bem.utility("va-bottom") { |
| 130 | vertical-align: bottom; | 130 | vertical-align: bottom; |
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | @include bem.utility('ta-start') { | 133 | @include bem.utility("ta-start") { |
| 134 | text-align: start; | 134 | text-align: start; |
| 135 | } | 135 | } |
| 136 | 136 | ||
| 137 | @include bem.utility('ta-end') { | 137 | @include bem.utility("ta-end") { |
| 138 | text-align: end; | 138 | text-align: end; |
| 139 | } | 139 | } |
| 140 | 140 | ||
| 141 | @include bem.utility('ta-center') { | 141 | @include bem.utility("ta-center") { |
| 142 | text-align: center; | 142 | text-align: center; |
| 143 | } | 143 | } |
| 144 | 144 | ||
| 145 | @include bem.utility('fw-normal') { | 145 | @include bem.utility("fw-normal") { |
| 146 | font-weight: normal; | 146 | font-weight: normal; |
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | @include bem.utility('ai-center') { | 149 | @include bem.utility("ai-center") { |
| 150 | align-items: center; | 150 | align-items: center; |
| 151 | } | 151 | } |
| 152 | 152 | ||
| 153 | @include bem.utility('ai-start') { | 153 | @include bem.utility("ai-start") { |
| 154 | align-items: flex-start; | 154 | align-items: flex-start; |
| 155 | } | 155 | } |
| 156 | 156 | ||
| 157 | @include bem.utility('ai-end') { | 157 | @include bem.utility("ai-end") { |
| 158 | align-items: flex-end; | 158 | align-items: flex-end; |
| 159 | } | 159 | } |
| 160 | 160 | ||
| 161 | @include bem.utility('ai-stretch') { | 161 | @include bem.utility("ai-stretch") { |
| 162 | align-items: stretch; | 162 | align-items: stretch; |
| 163 | } | 163 | } |
| 164 | 164 | ||
| 165 | @include bem.utility('ac-center') { | 165 | @include bem.utility("ac-center") { |
| 166 | align-content: center; | 166 | align-content: center; |
| 167 | } | 167 | } |
| 168 | 168 | ||
| 169 | @include bem.utility('jc-center') { | 169 | @include bem.utility("jc-center") { |
| 170 | justify-content: center; | 170 | justify-content: center; |
| 171 | } | 171 | } |
| 172 | 172 | ||
| 173 | @include bem.utility('jc-start') { | 173 | @include bem.utility("jc-start") { |
| 174 | justify-content: flex-start; | 174 | justify-content: flex-start; |
| 175 | } | 175 | } |
| 176 | 176 | ||
| 177 | @include bem.utility('jc-end') { | 177 | @include bem.utility("jc-end") { |
| 178 | justify-content: flex-end; | 178 | justify-content: flex-end; |
| 179 | } | 179 | } |
| 180 | 180 | ||
| 181 | @include bem.utility('tt-upper') { | 181 | @include bem.utility("tt-upper") { |
| 182 | text-transform: uppercase; | 182 | text-transform: uppercase; |
| 183 | } | 183 | } |
| 184 | 184 | ||
| 185 | @include bem.utility('tt-lower') { | 185 | @include bem.utility("tt-lower") { |
| 186 | text-transform: lowercase; | 186 | text-transform: lowercase; |
| 187 | } | 187 | } |
| 188 | 188 | ||
| 189 | @include bem.utility('c-heading') { | 189 | @include bem.utility("c-heading") { |
| 190 | color: props.get(vars.$theme, --heading); | 190 | color: props.get(vars.$theme, --heading); |
| 191 | 191 | ||
| 192 | @each $theme in map.keys(props.get(vars.$transparent-colors)) { | 192 | @each $theme in map.keys(props.get(vars.$transparent-colors)) { |
| @@ -198,7 +198,7 @@ $-aspect-ratios: ( | |||
| 198 | } | 198 | } |
| 199 | } | 199 | } |
| 200 | 200 | ||
| 201 | @include bem.utility('c-text') { | 201 | @include bem.utility("c-text") { |
| 202 | color: props.get(vars.$theme, --text); | 202 | color: props.get(vars.$theme, --text); |
| 203 | 203 | ||
| 204 | @each $theme in map.keys(props.get(vars.$transparent-colors)) { | 204 | @each $theme in map.keys(props.get(vars.$transparent-colors)) { |
| @@ -210,7 +210,7 @@ $-aspect-ratios: ( | |||
| 210 | } | 210 | } |
| 211 | } | 211 | } |
| 212 | 212 | ||
| 213 | @include bem.utility('c-mute') { | 213 | @include bem.utility("c-mute") { |
| 214 | color: props.get(vars.$theme, --text-mute); | 214 | color: props.get(vars.$theme, --text-mute); |
| 215 | 215 | ||
| 216 | @each $theme in map.keys(props.get(vars.$transparent-colors)) { | 216 | @each $theme in map.keys(props.get(vars.$transparent-colors)) { |
| @@ -222,7 +222,7 @@ $-aspect-ratios: ( | |||
| 222 | } | 222 | } |
| 223 | } | 223 | } |
| 224 | 224 | ||
| 225 | @include bem.utility('c-mute-more') { | 225 | @include bem.utility("c-mute-more") { |
| 226 | color: props.get(vars.$theme, --text-mute-more); | 226 | color: props.get(vars.$theme, --text-mute-more); |
| 227 | 227 | ||
| 228 | @each $theme in map.keys(props.get(vars.$transparent-colors)) { | 228 | @each $theme in map.keys(props.get(vars.$transparent-colors)) { |
| @@ -235,189 +235,195 @@ $-aspect-ratios: ( | |||
| 235 | } | 235 | } |
| 236 | 236 | ||
| 237 | @each $mod, $size in $-font-sizes { | 237 | @each $mod, $size in $-font-sizes { |
| 238 | @include bem.utility('fs-#{$mod}') { | 238 | @include bem.utility("fs-#{$mod}") { |
| 239 | font-size: props.get($size); | 239 | font-size: props.get($size); |
| 240 | } | 240 | } |
| 241 | } | 241 | } |
| 242 | 242 | ||
| 243 | @each $dir, $prop in (is: inline-size, bs: block-size) { | 243 | @each $dir, $prop in (is: inline-size, bs: block-size) { |
| 244 | @include bem.utility('#{$dir}-100') { | 244 | @include bem.utility("#{$dir}-100") { |
| 245 | #{$prop}: 100%; | 245 | #{$prop}: 100%; |
| 246 | } | 246 | } |
| 247 | 247 | ||
| 248 | @include bem.utility('#{$dir}-75') { | 248 | @include bem.utility("#{$dir}-75") { |
| 249 | #{$prop}: 75%; | 249 | #{$prop}: 75%; |
| 250 | } | 250 | } |
| 251 | 251 | ||
| 252 | @include bem.utility('#{$dir}-50') { | 252 | @include bem.utility("#{$dir}-50") { |
| 253 | #{$prop}: 50%; | 253 | #{$prop}: 50%; |
| 254 | } | 254 | } |
| 255 | 255 | ||
| 256 | @include bem.utility('#{$dir}-25') { | 256 | @include bem.utility("#{$dir}-25") { |
| 257 | #{$prop}: 25%; | 257 | #{$prop}: 25%; |
| 258 | } | 258 | } |
| 259 | 259 | ||
| 260 | @include bem.utility('#{$dir}-1px') { | 260 | @include bem.utility("#{$dir}-1px") { |
| 261 | #{$prop}: 1px; | 261 | #{$prop}: 1px; |
| 262 | } | 262 | } |
| 263 | 263 | ||
| 264 | @include bem.utility('#{$dir}-0') { | 264 | @include bem.utility("#{$dir}-0") { |
| 265 | #{$prop}: 0; | 265 | #{$prop}: 0; |
| 266 | } | 266 | } |
| 267 | } | 267 | } |
| 268 | 268 | ||
| 269 | @include bem.utility('elp') { | 269 | @include bem.utility("elp") { |
| 270 | overflow: hidden; | 270 | overflow: hidden; |
| 271 | text-overflow: ellipsis; | 271 | text-overflow: ellipsis; |
| 272 | white-space: nowrap; | 272 | white-space: nowrap; |
| 273 | } | 273 | } |
| 274 | 274 | ||
| 275 | @include bem.utility('hyph') { | 275 | @include bem.utility("hyph") { |
| 276 | hyphens: auto; | 276 | hyphens: auto; |
| 277 | hyphenate-limit-chars: auto; | 277 | hyphenate-limit-chars: auto; |
| 278 | } | 278 | } |
| 279 | 279 | ||
| 280 | @include bem.utility('tw-balance') { | 280 | @include bem.utility("tw-balance") { |
| 281 | text-wrap-style: balance; | 281 | text-wrap-style: balance; |
| 282 | } | 282 | } |
| 283 | 283 | ||
| 284 | @include bem.utility('o-auto') { | 284 | @include bem.utility("o-auto") { |
| 285 | overflow: auto; | 285 | overflow: auto; |
| 286 | } | 286 | } |
| 287 | 287 | ||
| 288 | @include bem.utility('o-hidden') { | 288 | @include bem.utility("o-hidden") { |
| 289 | overflow: hidden; | 289 | overflow: hidden; |
| 290 | } | 290 | } |
| 291 | 291 | ||
| 292 | @include bem.utility('p-static') { | 292 | @include bem.utility("p-static") { |
| 293 | position: static; | 293 | position: static; |
| 294 | } | 294 | } |
| 295 | 295 | ||
| 296 | @include bem.utility('p-relative') { | 296 | @include bem.utility("p-relative") { |
| 297 | position: relative; | 297 | position: relative; |
| 298 | } | 298 | } |
| 299 | 299 | ||
| 300 | @include bem.utility('p-fixed') { | 300 | @include bem.utility("p-fixed") { |
| 301 | position: fixed; | 301 | position: fixed; |
| 302 | } | 302 | } |
| 303 | 303 | ||
| 304 | @include bem.utility('p-sticky-bs') { | 304 | @include bem.utility("p-sticky-bs") { |
| 305 | position: sticky; | 305 | position: sticky; |
| 306 | inset-block-start: props.get(vars.$sticky-top-offset); | 306 | inset-block-start: props.get(vars.$sticky-top-offset); |
| 307 | } | 307 | } |
| 308 | 308 | ||
| 309 | @include bem.utility('p-sticky-be') { | 309 | @include bem.utility("p-sticky-be") { |
| 310 | position: sticky; | 310 | position: sticky; |
| 311 | inset-block-end: 0; | 311 | inset-block-end: 0; |
| 312 | } | 312 | } |
| 313 | 313 | ||
| 314 | @include bem.utility('br-round') { | 314 | @include bem.utility("br-round") { |
| 315 | border-radius: props.get(vars.$rounding); | 315 | border-radius: props.get(vars.$rounding); |
| 316 | } | 316 | } |
| 317 | 317 | ||
| 318 | @include bem.utility('br-round-sm') { | 318 | @include bem.utility("br-round-sm") { |
| 319 | border-radius: props.get(vars.$rounding--sm); | 319 | border-radius: props.get(vars.$rounding--sm); |
| 320 | } | 320 | } |
| 321 | 321 | ||
| 322 | @each $dir, $prefix in $-axes { | 322 | @each $dir, $prefix in $-axes { |
| 323 | @each $mod, $size in $-sizes { | 323 | @each $mod, $size in $-sizes { |
| 324 | @include bem.utility('#{$dir}g-#{$mod}') { | 324 | @include bem.utility("#{$dir}g-#{$mod}") { |
| 325 | #{$prefix}gap: props.get($size); | 325 | #{$prefix}gap: props.get($size); |
| 326 | } | 326 | } |
| 327 | } | 327 | } |
| 328 | } | 328 | } |
| 329 | 329 | ||
| 330 | @each $dir, $suffix in $-dirs { | 330 | @each $dir, $suffix in $-dirs { |
| 331 | @include bem.utility('m#{$dir}-auto') { | 331 | @include bem.utility("m#{$dir}-auto") { |
| 332 | margin#{$suffix}: auto; | 332 | margin#{$suffix}: auto; |
| 333 | } | 333 | } |
| 334 | 334 | ||
| 335 | @include bem.utility('p#{$dir}-auto') { | 335 | @include bem.utility("p#{$dir}-auto") { |
| 336 | padding#{$suffix}: auto; | 336 | padding#{$suffix}: auto; |
| 337 | } | 337 | } |
| 338 | 338 | ||
| 339 | @each $mod, $size in $-sizes { | 339 | @each $mod, $size in $-sizes { |
| 340 | @include bem.utility('m#{$dir}-#{$mod}') { | 340 | @include bem.utility("m#{$dir}-#{$mod}") { |
| 341 | margin#{$suffix}: props.get($size); | 341 | margin#{$suffix}: props.get($size); |
| 342 | } | 342 | } |
| 343 | 343 | ||
| 344 | @include bem.utility('p#{$dir}-#{$mod}') { | 344 | @include bem.utility("p#{$dir}-#{$mod}") { |
| 345 | padding#{$suffix}: props.get($size); | 345 | padding#{$suffix}: props.get($size); |
| 346 | } | 346 | } |
| 347 | } | 347 | } |
| 348 | 348 | ||
| 349 | @include bem.utility('b#{$dir}-0') { | 349 | @include bem.utility("b#{$dir}-0") { |
| 350 | border#{$suffix}: 0; | 350 | border#{$suffix}: 0; |
| 351 | 351 | ||
| 352 | @include bem.suffix('light') { | 352 | @include bem.suffix("light") { |
| 353 | @media (prefers-color-scheme: light) { | 353 | @media (prefers-color-scheme: light) { |
| 354 | border#{$suffix}: 0; | 354 | border#{$suffix}: 0; |
| 355 | } | 355 | } |
| 356 | } | 356 | } |
| 357 | 357 | ||
| 358 | @include bem.suffix('dark') { | 358 | @include bem.suffix("dark") { |
| 359 | @media (prefers-color-scheme: dark) { | 359 | @media (prefers-color-scheme: dark) { |
| 360 | border#{$suffix}: 0; | 360 | border#{$suffix}: 0; |
| 361 | } | 361 | } |
| 362 | } | 362 | } |
| 363 | } | 363 | } |
| 364 | 364 | ||
| 365 | @include bem.utility('b#{$dir}-1') { | 365 | @include bem.utility("b#{$dir}-1") { |
| 366 | border#{$suffix}: props.get(vars.$border-width--thin) solid props.get(vars.$theme, --border); | 366 | border#{$suffix}: props.get(vars.$border-width--thin) solid |
| 367 | props.get(vars.$theme, --border); | ||
| 367 | 368 | ||
| 368 | @include bem.suffix('light') { | 369 | @include bem.suffix("light") { |
| 369 | @media (prefers-color-scheme: light) { | 370 | @media (prefers-color-scheme: light) { |
| 370 | border#{$suffix}: props.get(vars.$border-width--thin) solid props.get(vars.$theme, --border); | 371 | border#{$suffix}: props.get(vars.$border-width--thin) solid |
| 372 | props.get(vars.$theme, --border); | ||
| 371 | } | 373 | } |
| 372 | } | 374 | } |
| 373 | 375 | ||
| 374 | @include bem.suffix('dark') { | 376 | @include bem.suffix("dark") { |
| 375 | @media (prefers-color-scheme: dark) { | 377 | @media (prefers-color-scheme: dark) { |
| 376 | border#{$suffix}: props.get(vars.$border-width--thin) solid props.get(vars.$theme, --border); | 378 | border#{$suffix}: props.get(vars.$border-width--thin) solid |
| 379 | props.get(vars.$theme, --border); | ||
| 377 | } | 380 | } |
| 378 | } | 381 | } |
| 379 | } | 382 | } |
| 380 | 383 | ||
| 381 | @include bem.utility('b#{$dir}-1-mute') { | 384 | @include bem.utility("b#{$dir}-1-mute") { |
| 382 | border#{$suffix}: props.get(vars.$border-width--thin) solid props.get(vars.$theme, --border-mute); | 385 | border#{$suffix}: props.get(vars.$border-width--thin) solid |
| 386 | props.get(vars.$theme, --border-mute); | ||
| 383 | 387 | ||
| 384 | @include bem.suffix('light') { | 388 | @include bem.suffix("light") { |
| 385 | @media (prefers-color-scheme: light) { | 389 | @media (prefers-color-scheme: light) { |
| 386 | border#{$suffix}: props.get(vars.$border-width--thin) solid props.get(vars.$theme, --border-mute); | 390 | border#{$suffix}: props.get(vars.$border-width--thin) solid |
| 391 | props.get(vars.$theme, --border-mute); | ||
| 387 | } | 392 | } |
| 388 | } | 393 | } |
| 389 | 394 | ||
| 390 | @include bem.suffix('dark') { | 395 | @include bem.suffix("dark") { |
| 391 | @media (prefers-color-scheme: dark) { | 396 | @media (prefers-color-scheme: dark) { |
| 392 | border#{$suffix}: props.get(vars.$border-width--thin) solid props.get(vars.$theme, --border-mute); | 397 | border#{$suffix}: props.get(vars.$border-width--thin) solid |
| 398 | props.get(vars.$theme, --border-mute); | ||
| 393 | } | 399 | } |
| 394 | } | 400 | } |
| 395 | } | 401 | } |
| 396 | } | 402 | } |
| 397 | 403 | ||
| 398 | @include bem.utility('mbs-neutralize') { | 404 | @include bem.utility("mbs-neutralize") { |
| 399 | &::before { | 405 | &::before { |
| 400 | display: block; | 406 | display: block; |
| 401 | margin-block: -100em 100em; | 407 | margin-block: -100em 100em; |
| 402 | content: ''; | 408 | content: ""; |
| 403 | } | 409 | } |
| 404 | } | 410 | } |
| 405 | 411 | ||
| 406 | @each $mod, $value in $-aspect-ratios { | 412 | @each $mod, $value in $-aspect-ratios { |
| 407 | @include bem.utility('ar-#{$mod}') { | 413 | @include bem.utility("ar-#{$mod}") { |
| 408 | aspect-ratio: string.unquote($value); | 414 | aspect-ratio: string.unquote($value); |
| 409 | } | 415 | } |
| 410 | } | 416 | } |
| 411 | 417 | ||
| 412 | @include bem.utility('sr-only') { | 418 | @include bem.utility("sr-only") { |
| 413 | position: absolute; | 419 | position: absolute; |
| 414 | width: 1px; | 420 | width: 1px; |
| 415 | height: 1px; | 421 | height: 1px; |
| 416 | padding: 0; | 422 | padding: 0; |
| 417 | margin: -1px; | 423 | margin: -1px; |
| 418 | overflow: hidden; | 424 | overflow: hidden; |
| 419 | white-space: nowrap; | 425 | white-space: nowrap; |
| 420 | border: 0; | 426 | border: 0; |
| 421 | clip-path: inset(50%); | 427 | clip-path: inset(50%); |
| 422 | } | 428 | } |
| 423 | } | 429 | } |
diff --git a/src/layouts/_card-list.scss b/src/layouts/_card-list.scss index f2a6ff5..c05b798 100644 --- a/src/layouts/_card-list.scss +++ b/src/layouts/_card-list.scss | |||
| @@ -1,39 +1,44 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:include-media/dist/include-media' as media; | 2 | @use "pkg:include-media/dist/include-media" as media; |
| 3 | @use 'pkg:iro-sass/src/bem'; | 3 | @use "pkg:iro-sass/bem"; |
| 4 | @use 'pkg:iro-sass/src/props'; | 4 | @use "pkg:iro-sass/props"; |
| 5 | @use '../props' as *; | 5 | @use "../props" as *; |
| 6 | 6 | ||
| 7 | @use '../objects/card.vars' as card; | 7 | @use "../objects/card.vars" as card; |
| 8 | 8 | ||
| 9 | @forward 'card-list.vars'; | 9 | @forward "card-list.vars"; |
| 10 | @use 'card-list.vars' as vars; | 10 | @use "card-list.vars" as vars; |
| 11 | 11 | ||
| 12 | @mixin styles { | 12 | @mixin styles { |
| 13 | @include materialize-at-root(meta.module-variables('vars')); | 13 | @include materialize-at-root(meta.module-variables("vars")); |
| 14 | 14 | ||
| 15 | @include bem.layout('card-list') { | 15 | @include bem.layout("card-list") { |
| 16 | display: flex; | 16 | display: flex; |
| 17 | flex-direction: column; | 17 | flex-direction: column; |
| 18 | gap: props.get(vars.$row-gap); | 18 | gap: props.get(vars.$row-gap); |
| 19 | 19 | ||
| 20 | @include bem.modifier('merge') { | 20 | @include bem.modifier("merge") { |
| 21 | position: relative; | 21 | position: relative; |
| 22 | gap: 0; | 22 | gap: 0; |
| 23 | border-radius: props.get(card.$rounding); | 23 | border-radius: props.get(card.$rounding); |
| 24 | 24 | ||
| 25 | @include bem.elem('card') { | 25 | @include bem.elem("card") { |
| 26 | border-color: props.get(card.$border-color) props.get(card.$border-color) props.get(vars.$border-color); | 26 | border-color: props.get(card.$border-color) props.get(card.$border-color) |
| 27 | props.get(vars.$border-color); | ||
| 27 | background-clip: content-box; | 28 | background-clip: content-box; |
| 28 | box-shadow: none; | 29 | box-shadow: none; |
| 29 | 30 | ||
| 30 | &:not(:last-child) { | 31 | &:not(:last-child) { |
| 31 | position: relative; | 32 | position: relative; |
| 32 | border-end-start-radius: 0; | 33 | border-end-start-radius: 0; |
| 33 | border-end-end-radius: 0; | 34 | border-end-end-radius: 0; |
| 34 | } | 35 | } |
| 35 | 36 | ||
| 36 | @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') { | 37 | @include bem.multi( |
| 38 | "&:link, &:visited, &:enabled", | ||
| 39 | "modifier" "interactive", | ||
| 40 | "modifier" "collapsible" | ||
| 41 | ) { | ||
| 37 | &:hover, | 42 | &:hover, |
| 38 | &:active, | 43 | &:active, |
| 39 | &:focus-visible { | 44 | &:focus-visible { |
| @@ -46,19 +51,28 @@ | |||
| 46 | } | 51 | } |
| 47 | 52 | ||
| 48 | @include bem.next-twin-elem { | 53 | @include bem.next-twin-elem { |
| 49 | margin-block-start: calc(-1 * props.get(card.$border-width)); | 54 | margin-block-start: calc(-1 * props.get(card.$border-width)); |
| 50 | border-block-start-color: transparent; | 55 | border-block-start-color: transparent; |
| 51 | border-start-start-radius: 0; | 56 | border-start-start-radius: 0; |
| 52 | border-start-end-radius: 0; | 57 | border-start-end-radius: 0; |
| 53 | 58 | ||
| 54 | @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') { | 59 | @include bem.multi( |
| 60 | "&:link, &:visited, &:enabled", | ||
| 61 | "modifier" "interactive", | ||
| 62 | "modifier" "collapsible" | ||
| 63 | ) { | ||
| 55 | &:hover, | 64 | &:hover, |
| 56 | &:active { | 65 | &:active { |
| 57 | border-block-start-color: props.get(card.$hover--border-color); | 66 | border-block-start-color: props.get(card.$hover--border-color); |
| 58 | } | 67 | } |
| 59 | 68 | ||
| 60 | &:focus-visible { | 69 | &:focus-visible { |
| 61 | margin-block-start: calc(-1 * props.get(card.$border-width) - props.get(card.$key-focus--border-width)); | 70 | margin-block-start: calc( |
| 71 | -1 * | ||
| 72 | props.get(card.$border-width) - props.get( | ||
| 73 | card.$key-focus--border-width | ||
| 74 | ) | ||
| 75 | ); | ||
| 62 | } | 76 | } |
| 63 | } | 77 | } |
| 64 | } | 78 | } |
| @@ -67,7 +81,11 @@ | |||
| 67 | border-block-end-color: props.get(card.$border-color); | 81 | border-block-end-color: props.get(card.$border-color); |
| 68 | } | 82 | } |
| 69 | 83 | ||
| 70 | @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') { | 84 | @include bem.multi( |
| 85 | "&:link, &:visited, &:enabled", | ||
| 86 | "modifier" "interactive", | ||
| 87 | "modifier" "collapsible" | ||
| 88 | ) { | ||
| 71 | &:hover, | 89 | &:hover, |
| 72 | &:active { | 90 | &:active { |
| 73 | border-color: props.get(card.$hover--border-color); | 91 | border-color: props.get(card.$hover--border-color); |
| @@ -75,17 +93,20 @@ | |||
| 75 | 93 | ||
| 76 | &:focus-visible { | 94 | &:focus-visible { |
| 77 | border-color: props.get(card.$hover--bg-color); | 95 | border-color: props.get(card.$hover--bg-color); |
| 78 | box-shadow: | 96 | box-shadow: 0 0 0 |
| 79 | 0 0 0 | 97 | calc( |
| 80 | calc(props.get(card.$key-focus--border-width) + props.get(card.$key-focus--outline-width)) | 98 | props.get(card.$key-focus--border-width) + |
| 99 | props.get(card.$key-focus--outline-width) | ||
| 100 | ) | ||
| 81 | props.get(card.$key-focus--outline-color); | 101 | props.get(card.$key-focus--outline-color); |
| 82 | } | 102 | } |
| 83 | } | 103 | } |
| 84 | } | 104 | } |
| 85 | 105 | ||
| 86 | @include bem.modifier('borderless') { | 106 | @include bem.modifier("borderless") { |
| 87 | @include bem.elem('card') { | 107 | @include bem.elem("card") { |
| 88 | border-color: props.get(card.$bg-color) props.get(card.$bg-color) props.get(vars.$border-color); | 108 | border-color: props.get(card.$bg-color) props.get(card.$bg-color) |
| 109 | props.get(vars.$border-color); | ||
| 89 | 110 | ||
| 90 | @include bem.next-twin-elem { | 111 | @include bem.next-twin-elem { |
| 91 | border-block-start-color: transparent; | 112 | border-block-start-color: transparent; |
| @@ -95,7 +116,11 @@ | |||
| 95 | border-block-end-color: props.get(card.$bg-color); | 116 | border-block-end-color: props.get(card.$bg-color); |
| 96 | } | 117 | } |
| 97 | 118 | ||
| 98 | @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') { | 119 | @include bem.multi( |
| 120 | "&:link, &:visited, &:enabled", | ||
| 121 | "modifier" "interactive", | ||
| 122 | "modifier" "collapsible" | ||
| 123 | ) { | ||
| 99 | &:hover, | 124 | &:hover, |
| 100 | &:active { | 125 | &:active { |
| 101 | border-color: props.get(card.$hover--border-color); | 126 | border-color: props.get(card.$hover--border-color); |
| @@ -108,84 +133,87 @@ | |||
| 108 | } | 133 | } |
| 109 | } | 134 | } |
| 110 | 135 | ||
| 111 | @include bem.modifier('shadow') { | 136 | @include bem.modifier("shadow") { |
| 112 | box-shadow: | 137 | box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) |
| 113 | props.get(vars.$shadow-x) | 138 | props.get(vars.$shadow-blur) props.get(vars.$shadow-grow) |
| 114 | props.get(vars.$shadow-y) | ||
| 115 | props.get(vars.$shadow-blur) | ||
| 116 | props.get(vars.$shadow-grow) | ||
| 117 | props.get(card.$shadow-color); | 139 | props.get(card.$shadow-color); |
| 118 | } | 140 | } |
| 119 | 141 | ||
| 120 | @include bem.modifier('interactive') { | 142 | @include bem.modifier("interactive") { |
| 121 | transition: transform .2s, box-shadow .2s; | 143 | transition: |
| 144 | transform 0.2s, | ||
| 145 | box-shadow 0.2s; | ||
| 122 | 146 | ||
| 123 | &:hover, | 147 | &:hover, |
| 124 | &:active, | 148 | &:active, |
| 125 | &:focus-within { | 149 | &:focus-within { |
| 126 | box-shadow: none; | 150 | box-shadow: none; |
| 127 | transform: translateY(props.get(card.$hover--offset-b)); | 151 | transform: translateY(props.get(card.$hover--offset-b)); |
| 128 | } | 152 | } |
| 129 | } | 153 | } |
| 130 | } | 154 | } |
| 131 | 155 | ||
| 132 | @include bem.modifier('quiet') { | 156 | @include bem.modifier("quiet") { |
| 133 | row-gap: props.get(vars.$quiet--row-gap); | 157 | row-gap: props.get(vars.$quiet--row-gap); |
| 134 | } | 158 | } |
| 135 | 159 | ||
| 136 | @each $mod, $row-gap, $col-gap, $col-width, $quiet--row-gap, $breakpoint in vars.$grid-layouts { | 160 | @each $mod, $row-gap, $col-gap, $col-width, $quiet--row-gap, |
| 161 | $breakpoint in vars.$grid-layouts | ||
| 162 | { | ||
| 137 | @include bem.modifier($mod) { | 163 | @include bem.modifier($mod) { |
| 138 | display: grid; | 164 | display: grid; |
| 139 | grid-template-columns: repeat(auto-fill, minmax(props.get($col-width), 1fr)); | 165 | grid-template-columns: repeat(auto-fill, minmax(props.get($col-width), 1fr)); |
| 140 | gap: props.get($row-gap) props.get($col-gap); | 166 | gap: props.get($row-gap) props.get($col-gap); |
| 141 | 167 | ||
| 142 | @include bem.modifier('quiet') { | 168 | @include bem.modifier("quiet") { |
| 143 | row-gap: props.get($quiet--row-gap); | 169 | row-gap: props.get($quiet--row-gap); |
| 144 | } | 170 | } |
| 145 | 171 | ||
| 146 | @include media.media('<=#{$breakpoint}') { | 172 | @include media.media("<=#{$breakpoint}") { |
| 147 | display: flex; | 173 | display: flex; |
| 148 | } | 174 | } |
| 149 | } | 175 | } |
| 150 | } | 176 | } |
| 151 | 177 | ||
| 152 | @each $mod, $row-gap, $col-gap, $col-width, $quiet--row-gap, $breakpoint in vars.$flex-layouts { | 178 | @each $mod, $row-gap, $col-gap, $col-width, $quiet--row-gap, |
| 179 | $breakpoint in vars.$flex-layouts | ||
| 180 | { | ||
| 153 | @include bem.modifier($mod) { | 181 | @include bem.modifier($mod) { |
| 154 | display: flex; | 182 | display: flex; |
| 155 | flex-flow: row wrap; | 183 | flex-flow: row wrap; |
| 156 | gap: props.get($row-gap) props.get($col-gap); | 184 | gap: props.get($row-gap) props.get($col-gap); |
| 157 | 185 | ||
| 158 | @include bem.modifier('quiet') { | 186 | @include bem.modifier("quiet") { |
| 159 | row-gap: props.get($quiet--row-gap); | 187 | row-gap: props.get($quiet--row-gap); |
| 160 | } | 188 | } |
| 161 | 189 | ||
| 162 | @include bem.elem('card') { | 190 | @include bem.elem("card") { |
| 163 | flex: 0.1 0 auto; | 191 | flex: 0.1 0 auto; |
| 164 | inline-size: props.get($col-width); | 192 | inline-size: props.get($col-width); |
| 165 | } | 193 | } |
| 166 | 194 | ||
| 167 | @include media.media('<=#{$breakpoint}') { | 195 | @include media.media("<=#{$breakpoint}") { |
| 168 | flex-flow: column nowrap; | 196 | flex-flow: column nowrap; |
| 169 | 197 | ||
| 170 | @include bem.elem('card') { | 198 | @include bem.elem("card") { |
| 171 | inline-size: auto; | 199 | inline-size: auto; |
| 172 | } | 200 | } |
| 173 | } | 201 | } |
| 174 | } | 202 | } |
| 175 | } | 203 | } |
| 176 | 204 | ||
| 177 | @include bem.modifier('masonry') { | 205 | @include bem.modifier("masonry") { |
| 178 | display: block; | 206 | display: block; |
| 179 | columns: auto props.get(vars.$masonry--col-width); | 207 | columns: auto props.get(vars.$masonry--col-width); |
| 180 | column-gap: props.get(vars.$masonry--col-gap); | 208 | column-gap: props.get(vars.$masonry--col-gap); |
| 181 | 209 | ||
| 182 | @include bem.elem('card') { | 210 | @include bem.elem("card") { |
| 183 | margin-block-end: props.get(vars.$masonry--row-gap); | 211 | margin-block-end: props.get(vars.$masonry--row-gap); |
| 184 | break-inside: avoid; | 212 | break-inside: avoid; |
| 185 | } | 213 | } |
| 186 | 214 | ||
| 187 | @include bem.modifier('quiet') { | 215 | @include bem.modifier("quiet") { |
| 188 | @include bem.elem('card') { | 216 | @include bem.elem("card") { |
| 189 | margin-block-end: props.get(vars.$masonry--quiet--row-gap); | 217 | margin-block-end: props.get(vars.$masonry--quiet--row-gap); |
| 190 | } | 218 | } |
| 191 | } | 219 | } |
| @@ -194,34 +222,34 @@ | |||
| 194 | @each $mod, $row-gap, $col-gap, $row-height, $quiet--row-gap in vars.$masonry-h-layouts { | 222 | @each $mod, $row-gap, $col-gap, $row-height, $quiet--row-gap in vars.$masonry-h-layouts { |
| 195 | @include bem.modifier($mod) { | 223 | @include bem.modifier($mod) { |
| 196 | flex-flow: row wrap; | 224 | flex-flow: row wrap; |
| 197 | gap: props.get($row-gap) props.get($col-gap); | 225 | gap: props.get($row-gap) props.get($col-gap); |
| 198 | 226 | ||
| 199 | @include bem.modifier('no-flush') { | 227 | @include bem.modifier("no-flush") { |
| 200 | &::after { | 228 | &::after { |
| 201 | display: block; | 229 | display: block; |
| 202 | flex: 1 0 auto; | 230 | flex: 1 0 auto; |
| 203 | inline-size: props.get($row-height); | 231 | inline-size: props.get($row-height); |
| 204 | content: ''; | 232 | content: ""; |
| 205 | } | 233 | } |
| 206 | } | 234 | } |
| 207 | 235 | ||
| 208 | @include bem.elem('card') { | 236 | @include bem.elem("card") { |
| 209 | flex: 1 0 auto; | 237 | flex: 1 0 auto; |
| 210 | max-inline-size: 100%; | 238 | max-inline-size: 100%; |
| 211 | } | 239 | } |
| 212 | 240 | ||
| 213 | @include bem.elem('card-image') { | 241 | @include bem.elem("card-image") { |
| 214 | block-size: props.get($row-height); | 242 | block-size: props.get($row-height); |
| 215 | } | 243 | } |
| 216 | 244 | ||
| 217 | @include bem.modifier('quiet') { | 245 | @include bem.modifier("quiet") { |
| 218 | row-gap: props.get($quiet--row-gap); | 246 | row-gap: props.get($quiet--row-gap); |
| 219 | } | 247 | } |
| 220 | } | 248 | } |
| 221 | } | 249 | } |
| 222 | 250 | ||
| 223 | @include bem.modifier('aspect-5\\/4') { | 251 | @include bem.modifier("aspect-5\\/4") { |
| 224 | @include bem.elem('card-image') { | 252 | @include bem.elem("card-image") { |
| 225 | aspect-ratio: 5 / 4; | 253 | aspect-ratio: 5 / 4; |
| 226 | } | 254 | } |
| 227 | } | 255 | } |
diff --git a/src/layouts/_card-list.vars.scss b/src/layouts/_card-list.vars.scss index fb89b52..ece68f3 100644 --- a/src/layouts/_card-list.vars.scss +++ b/src/layouts/_card-list.vars.scss | |||
| @@ -1,61 +1,116 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | @use '../objects/card' as card; | 3 | @use "../objects/card" as card; |
| 4 | 4 | ||
| 5 | $row-gap: props.def(--l-card-list--row-gap, props.get(core.$size--200)) !default; | 5 | $row-gap: props.def(--l-card-list--row-gap, props.get(core.$size--200)) !default; |
| 6 | $quiet--row-gap: props.def(--l-card-list--quiet--row-gap, props.get(core.$size--800)) !default; | 6 | $quiet--row-gap: props.def(--l-card-list--quiet--row-gap, props.get(core.$size--800)) !default; |
| 7 | 7 | ||
| 8 | $grid--row-gap: props.def(--l-card-list--grid--row-gap, props.get(core.$size--600)) !default; | 8 | $grid--row-gap: props.def(--l-card-list--grid--row-gap, props.get(core.$size--600)) !default; |
| 9 | $grid--col-gap: props.def(--l-card-list--grid--col-gap, props.get(core.$size--600)) !default; | 9 | $grid--col-gap: props.def(--l-card-list--grid--col-gap, props.get(core.$size--600)) !default; |
| 10 | $grid--col-width: props.def(--l-card-list--grid--col-width, props.get(core.$size--3200)) !default; | 10 | $grid--col-width: props.def(--l-card-list--grid--col-width, props.get(core.$size--3200)) !default; |
| 11 | $grid--quiet--row-gap: props.def(--l-card-list--grid--quiet--row-gap, props.get(core.$size--800)) !default; | 11 | $grid--quiet--row-gap: props.def( |
| 12 | --l-card-list--grid--quiet--row-gap, | ||
| 13 | props.get(core.$size--800) | ||
| 14 | ) !default; | ||
| 12 | 15 | ||
| 13 | $grid-sm--row-gap: props.def(--l-card-list--grid-sm--row-gap, props.get(core.$size--200)) !default; | 16 | $grid-sm--row-gap: props.def(--l-card-list--grid-sm--row-gap, props.get(core.$size--200)) !default; |
| 14 | $grid-sm--col-gap: props.def(--l-card-list--grid-sm--col-gap, props.get(core.$size--200)) !default; | 17 | $grid-sm--col-gap: props.def(--l-card-list--grid-sm--col-gap, props.get(core.$size--200)) !default; |
| 15 | $grid-sm--col-width: props.def(--l-card-list--grid-sm--col-width, props.get(core.$size--4600)) !default; | 18 | $grid-sm--col-width: props.def( |
| 16 | $grid-sm--quiet--row-gap: props.def(--l-card-list--grid-sm--quiet--row-gap, props.get(core.$size--800)) !default; | 19 | --l-card-list--grid-sm--col-width, |
| 20 | props.get(core.$size--4600) | ||
| 21 | ) !default; | ||
| 22 | $grid-sm--quiet--row-gap: props.def( | ||
| 23 | --l-card-list--grid-sm--quiet--row-gap, | ||
| 24 | props.get(core.$size--800) | ||
| 25 | ) !default; | ||
| 17 | 26 | ||
| 18 | $grid-xs--row-gap: props.def(--l-card-list--grid-xs--row-gap, props.get(core.$size--200)) !default; | 27 | $grid-xs--row-gap: props.def(--l-card-list--grid-xs--row-gap, props.get(core.$size--200)) !default; |
| 19 | $grid-xs--col-gap: props.def(--l-card-list--grid-xs--col-gap, props.get(core.$size--200)) !default; | 28 | $grid-xs--col-gap: props.def(--l-card-list--grid-xs--col-gap, props.get(core.$size--200)) !default; |
| 20 | $grid-xs--col-width: props.def(--l-card-list--grid-xs--col-width, props.get(core.$size--1600)) !default; | 29 | $grid-xs--col-width: props.def( |
| 21 | $grid-xs--quiet--row-gap: props.def(--l-card-list--grid-xs--quiet--row-gap, props.get(core.$size--800)) !default; | 30 | --l-card-list--grid-xs--col-width, |
| 31 | props.get(core.$size--1600) | ||
| 32 | ) !default; | ||
| 33 | $grid-xs--quiet--row-gap: props.def( | ||
| 34 | --l-card-list--grid-xs--quiet--row-gap, | ||
| 35 | props.get(core.$size--800) | ||
| 36 | ) !default; | ||
| 22 | 37 | ||
| 23 | $grid-layouts: ( | 38 | $grid-layouts: ( |
| 24 | 'grid' $grid--row-gap $grid--col-gap $grid--col-width $grid--quiet--row-gap sm, | 39 | "grid" $grid--row-gap $grid--col-gap $grid--col-width $grid--quiet--row-gap sm, |
| 25 | 'grid-sm' $grid-sm--row-gap $grid-sm--col-gap $grid-sm--col-width $grid-sm--quiet--row-gap sm, | 40 | "grid-sm" $grid-sm--row-gap $grid-sm--col-gap $grid-sm--col-width $grid-sm--quiet--row-gap sm, |
| 26 | 'grid-xs' $grid-xs--row-gap $grid-xs--col-gap $grid-xs--col-width $grid-xs--quiet--row-gap xs, | 41 | "grid-xs" $grid-xs--row-gap $grid-xs--col-gap $grid-xs--col-width $grid-xs--quiet--row-gap xs |
| 27 | ) !default; | 42 | ) !default; |
| 28 | 43 | ||
| 29 | $flex-layouts: ( | 44 | $flex-layouts: ( |
| 30 | 'flex' $grid--row-gap $grid--col-gap $grid--col-width $grid--quiet--row-gap sm, | 45 | "flex" $grid--row-gap $grid--col-gap $grid--col-width $grid--quiet--row-gap sm, |
| 31 | 'flex-sm' $grid-sm--row-gap $grid-sm--col-gap $grid-sm--col-width $grid-sm--quiet--row-gap sm, | 46 | "flex-sm" $grid-sm--row-gap $grid-sm--col-gap $grid-sm--col-width $grid-sm--quiet--row-gap sm, |
| 32 | 'flex-xs' $grid-xs--row-gap $grid-xs--col-gap $grid-xs--col-width $grid-xs--quiet--row-gap xs, | 47 | "flex-xs" $grid-xs--row-gap $grid-xs--col-gap $grid-xs--col-width $grid-xs--quiet--row-gap xs |
| 33 | ) !default; | 48 | ) !default; |
| 34 | 49 | ||
| 35 | $masonry-h--row-gap: props.def(--l-card-list--masonry-h--row-gap, props.get(core.$size--400)) !default; | 50 | $masonry-h--row-gap: props.def( |
| 36 | $masonry-h--col-gap: props.def(--l-card-list--masonry-h--col-gap, props.get(core.$size--400)) !default; | 51 | --l-card-list--masonry-h--row-gap, |
| 37 | $masonry-h--row-height: props.def(--l-card-list--masonry-h--row-height, props.get(core.$size--3200)) !default; | 52 | props.get(core.$size--400) |
| 38 | $masonry-h--quiet--row-gap: props.def(--l-card-list--masonry-h--quiet--row-gap, props.get(core.$size--800)) !default; | 53 | ) !default; |
| 54 | $masonry-h--col-gap: props.def( | ||
| 55 | --l-card-list--masonry-h--col-gap, | ||
| 56 | props.get(core.$size--400) | ||
| 57 | ) !default; | ||
| 58 | $masonry-h--row-height: props.def( | ||
| 59 | --l-card-list--masonry-h--row-height, | ||
| 60 | props.get(core.$size--3200) | ||
| 61 | ) !default; | ||
| 62 | $masonry-h--quiet--row-gap: props.def( | ||
| 63 | --l-card-list--masonry-h--quiet--row-gap, | ||
| 64 | props.get(core.$size--800) | ||
| 65 | ) !default; | ||
| 39 | 66 | ||
| 40 | $masonry-h-sm--row-gap: props.def(--l-card-list--masonry-h-sm--row-gap, props.get(core.$size--400)) !default; | 67 | $masonry-h-sm--row-gap: props.def( |
| 41 | $masonry-h-sm--col-gap: props.def(--l-card-list--masonry-h-sm--col-gap, props.get(core.$size--400)) !default; | 68 | --l-card-list--masonry-h-sm--row-gap, |
| 42 | $masonry-h-sm--row-height: props.def(--l-card-list--masonry-h-sm--row-height, props.get(core.$size--2600)) !default; | 69 | props.get(core.$size--400) |
| 43 | $masonry-h-sm--quiet--row-gap: props.def(--l-card-list--masonry-h-sm--quiet--row-gap, props.get(core.$size--800)) !default; | 70 | ) !default; |
| 71 | $masonry-h-sm--col-gap: props.def( | ||
| 72 | --l-card-list--masonry-h-sm--col-gap, | ||
| 73 | props.get(core.$size--400) | ||
| 74 | ) !default; | ||
| 75 | $masonry-h-sm--row-height: props.def( | ||
| 76 | --l-card-list--masonry-h-sm--row-height, | ||
| 77 | props.get(core.$size--2600) | ||
| 78 | ) !default; | ||
| 79 | $masonry-h-sm--quiet--row-gap: props.def( | ||
| 80 | --l-card-list--masonry-h-sm--quiet--row-gap, | ||
| 81 | props.get(core.$size--800) | ||
| 82 | ) !default; | ||
| 44 | 83 | ||
| 45 | $masonry-h-layouts: ( | 84 | $masonry-h-layouts: ( |
| 46 | 'masonry-h' $masonry-h--row-gap $masonry-h--col-gap $masonry-h--row-height $masonry-h--quiet--row-gap, | 85 | "masonry-h" $masonry-h--row-gap $masonry-h--col-gap $masonry-h--row-height |
| 47 | 'masonry-h-sm' $masonry-h-sm--row-gap $masonry-h-sm--col-gap $masonry-h-sm--row-height $masonry-h-sm--quiet--row-gap, | 86 | $masonry-h--quiet--row-gap, |
| 87 | "masonry-h-sm" $masonry-h-sm--row-gap $masonry-h-sm--col-gap $masonry-h-sm--row-height | ||
| 88 | $masonry-h-sm--quiet--row-gap | ||
| 48 | ) !default; | 89 | ) !default; |
| 49 | 90 | ||
| 50 | $masonry--row-gap: props.def(--l-card-list--masonry--row-gap, props.get(core.$size--400)) !default; | 91 | $masonry--row-gap: props.def(--l-card-list--masonry--row-gap, props.get(core.$size--400)) !default; |
| 51 | $masonry--col-gap: props.def(--l-card-list--masonry--col-gap, props.get(core.$size--400)) !default; | 92 | $masonry--col-gap: props.def(--l-card-list--masonry--col-gap, props.get(core.$size--400)) !default; |
| 52 | $masonry--col-width: props.def(--l-card-list--masonry--col-width, props.get(core.$size--3200)) !default; | 93 | $masonry--col-width: props.def( |
| 53 | $masonry--quiet--row-gap: props.def(--l-card-list--masonry--quiet--row-gap, props.get(core.$size--800)) !default; | 94 | --l-card-list--masonry--col-width, |
| 95 | props.get(core.$size--3200) | ||
| 96 | ) !default; | ||
| 97 | $masonry--quiet--row-gap: props.def( | ||
| 98 | --l-card-list--masonry--quiet--row-gap, | ||
| 99 | props.get(core.$size--800) | ||
| 100 | ) !default; | ||
| 54 | 101 | ||
| 55 | $shadow-x: props.def(--l-card-list--shadow-x, props.get(card.$shadow-x)) !default; | 102 | $shadow-x: props.def(--l-card-list--shadow-x, props.get(card.$shadow-x)) !default; |
| 56 | $shadow-y: props.def(--l-card-list--shadow-y, props.get(card.$shadow-y)) !default; | 103 | $shadow-y: props.def(--l-card-list--shadow-y, props.get(card.$shadow-y)) !default; |
| 57 | $shadow-blur: props.def(--l-card-list--shadow-blur, props.get(card.$shadow-blur)) !default; | 104 | $shadow-blur: props.def(--l-card-list--shadow-blur, props.get(card.$shadow-blur)) !default; |
| 58 | $shadow-grow: props.def(--l-card-list--shadow-grow, props.get(card.$shadow-grow)) !default; | 105 | $shadow-grow: props.def(--l-card-list--shadow-grow, props.get(card.$shadow-grow)) !default; |
| 59 | 106 | ||
| 60 | $border-color: props.def(--l-card-list--border-color, props.get(card.$border-color), 'color') !default; | 107 | $border-color: props.def( |
| 61 | $border-color-dark: props.def(--l-card-list--border-color, props.get(core.$theme, --border-mute), 'dark') !default; | 108 | --l-card-list--border-color, |
| 109 | props.get(card.$border-color), | ||
| 110 | "color" | ||
| 111 | ) !default; | ||
| 112 | $border-color-dark: props.def( | ||
| 113 | --l-card-list--border-color, | ||
| 114 | props.get(core.$theme, --border-mute), | ||
| 115 | "dark" | ||
| 116 | ) !default; | ||
diff --git a/src/layouts/_container.scss b/src/layouts/_container.scss index 46ded23..7b3dc3f 100644 --- a/src/layouts/_container.scss +++ b/src/layouts/_container.scss | |||
| @@ -1,37 +1,37 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'container.vars'; | 6 | @forward "container.vars"; |
| 7 | @use 'container.vars' as vars; | 7 | @use "container.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.layout('container') { | 12 | @include bem.layout("container") { |
| 13 | @each $mod, $size in vars.$fixed-sizes { | 13 | @each $mod, $size in vars.$fixed-sizes { |
| 14 | @include bem.modifier($mod) { | 14 | @include bem.modifier($mod) { |
| 15 | max-inline-size: props.get($size); | 15 | max-inline-size: props.get($size); |
| 16 | margin-inline: auto; | 16 | margin-inline: auto; |
| 17 | } | 17 | } |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | @include bem.modifier('pad-i') { | 20 | @include bem.modifier("pad-i") { |
| 21 | padding-inline: props.get(vars.$pad-i); | 21 | padding-inline: props.get(vars.$pad-i); |
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | @include bem.modifier('pad-b') { | 24 | @include bem.modifier("pad-b") { |
| 25 | padding-block: props.get(vars.$pad-b); | 25 | padding-block: props.get(vars.$pad-b); |
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | @each $mod, $pad-i, $pad-b in vars.$sizes { | 28 | @each $mod, $pad-i, $pad-b in vars.$sizes { |
| 29 | @include bem.modifier($mod) { | 29 | @include bem.modifier($mod) { |
| 30 | @include bem.modifier('pad-i') { | 30 | @include bem.modifier("pad-i") { |
| 31 | padding-inline: props.get($pad-i); | 31 | padding-inline: props.get($pad-i); |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | @include bem.modifier('pad-b') { | 34 | @include bem.modifier("pad-b") { |
| 35 | padding-block: props.get($pad-b); | 35 | padding-block: props.get($pad-b); |
| 36 | } | 36 | } |
| 37 | } | 37 | } |
diff --git a/src/layouts/_container.vars.scss b/src/layouts/_container.vars.scss index 094046f..09ef165 100644 --- a/src/layouts/_container.vars.scss +++ b/src/layouts/_container.vars.scss | |||
| @@ -1,39 +1,36 @@ | |||
| 1 | @use 'pkg:iro-sass/src/functions' as fn; | 1 | @use "pkg:iro-sass/functions" as fn; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | 4 | ||
| 5 | $fixed-200: props.def(--l-container--fixed-200, fn.px-to-rem(1300px)) !default; | 5 | $fixed-200: props.def(--l-container--fixed-200, fn.px-to-rem(1300px)) !default; |
| 6 | $fixed-150: props.def(--l-container--fixed-150, fn.px-to-rem(860px)) !default; | 6 | $fixed-150: props.def(--l-container--fixed-150, fn.px-to-rem(860px)) !default; |
| 7 | $fixed: props.def(--l-container--fixed, fn.px-to-rem(680px)) !default; | 7 | $fixed: props.def(--l-container--fixed, fn.px-to-rem(680px)) !default; |
| 8 | 8 | ||
| 9 | $fixed-sizes: ( | 9 | $fixed-sizes: ( |
| 10 | 'fixed-200': $fixed-200, | 10 | "fixed-200": $fixed-200, |
| 11 | 'fixed-150': $fixed-150, | 11 | "fixed-150": $fixed-150, |
| 12 | 'fixed': $fixed | 12 | "fixed": $fixed, |
| 13 | ) !default; | 13 | ) !default; |
| 14 | 14 | ||
| 15 | $pad-i: props.def(--l-container--pad-i, props.get(core.$size--600)) !default; | 15 | $pad-i: props.def(--l-container--pad-i, props.get(core.$size--600)) !default; |
| 16 | $pad-b: props.def(--l-container--pad-b, props.get(core.$size--800)) !default; | 16 | $pad-b: props.def(--l-container--pad-b, props.get(core.$size--800)) !default; |
| 17 | 17 | ||
| 18 | $pad-i--md: props.def(--l-container--pad-i, props.get(core.$size--400), 'md') !default; | 18 | $pad-i--md: props.def(--l-container--pad-i, props.get(core.$size--400), "md") !default; |
| 19 | $pad-b--md: props.def(--l-container--pad-b, props.get(core.$size--700), 'md') !default; | 19 | $pad-b--md: props.def(--l-container--pad-b, props.get(core.$size--700), "md") !default; |
| 20 | 20 | ||
| 21 | $pad-i--sm: props.def(--l-container--pad-i, props.get(core.$size--200), 'sm') !default; | 21 | $pad-i--sm: props.def(--l-container--pad-i, props.get(core.$size--200), "sm") !default; |
| 22 | $pad-b--sm: props.def(--l-container--pad-b, props.get(core.$size--600), 'sm') !default; | 22 | $pad-b--sm: props.def(--l-container--pad-b, props.get(core.$size--600), "sm") !default; |
| 23 | 23 | ||
| 24 | $pad-i--xs: props.def(--l-container--pad-i, props.get(core.$size--150), 'xs') !default; | 24 | $pad-i--xs: props.def(--l-container--pad-i, props.get(core.$size--150), "xs") !default; |
| 25 | $pad-b--xs: props.def(--l-container--pad-b, props.get(core.$size--450), 'xs') !default; | 25 | $pad-b--xs: props.def(--l-container--pad-b, props.get(core.$size--450), "xs") !default; |
| 26 | 26 | ||
| 27 | $sm--pad-i: props.def(--l-container--sm--pad-i, props.get(core.$size--300)) !default; | 27 | $sm--pad-i: props.def(--l-container--sm--pad-i, props.get(core.$size--300)) !default; |
| 28 | $sm--pad-b: props.def(--l-container--sm--pad-b, props.get(core.$size--800)) !default; | 28 | $sm--pad-b: props.def(--l-container--sm--pad-b, props.get(core.$size--800)) !default; |
| 29 | 29 | ||
| 30 | $sm--pad-i--sm: props.def(--l-container--sm--pad-i, props.get(core.$size--200), 'sm') !default; | 30 | $sm--pad-i--sm: props.def(--l-container--sm--pad-i, props.get(core.$size--200), "sm") !default; |
| 31 | $sm--pad-b--sm: props.def(--l-container--sm--pad-b, props.get(core.$size--600), 'sm') !default; | 31 | $sm--pad-b--sm: props.def(--l-container--sm--pad-b, props.get(core.$size--600), "sm") !default; |
| 32 | 32 | ||
| 33 | $sm--pad-i--xs: props.def(--l-container--sm--pad-i, props.get(core.$size--150), 'xs') !default; | 33 | $sm--pad-i--xs: props.def(--l-container--sm--pad-i, props.get(core.$size--150), "xs") !default; |
| 34 | $sm--pad-b--xs: props.def(--l-container--sm--pad-b, props.get(core.$size--450), 'xs') !default; | 34 | $sm--pad-b--xs: props.def(--l-container--sm--pad-b, props.get(core.$size--450), "xs") !default; |
| 35 | 35 | ||
| 36 | $sizes: ( | 36 | $sizes: ("sm" $sm--pad-i $sm--pad-b, "md" $sm--pad-i $sm--pad-b) !default; |
| 37 | 'sm' $sm--pad-i $sm--pad-b, | ||
| 38 | 'md' $sm--pad-i $sm--pad-b, | ||
| 39 | ) !default; | ||
diff --git a/src/layouts/_flex.scss b/src/layouts/_flex.scss index ea0b268..70d29f9 100644 --- a/src/layouts/_flex.scss +++ b/src/layouts/_flex.scss | |||
| @@ -1,18 +1,18 @@ | |||
| 1 | @use 'pkg:iro-sass/src/bem'; | 1 | @use "pkg:iro-sass/bem"; |
| 2 | 2 | ||
| 3 | @mixin styles { | 3 | @mixin styles { |
| 4 | @include bem.layout('flex') { | 4 | @include bem.layout("flex") { |
| 5 | display: flex; | 5 | display: flex; |
| 6 | 6 | ||
| 7 | @include bem.modifier('column') { | 7 | @include bem.modifier("column") { |
| 8 | flex-direction: column; | 8 | flex-direction: column; |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | @include bem.modifier('wrap') { | 11 | @include bem.modifier("wrap") { |
| 12 | flex-wrap: wrap; | 12 | flex-wrap: wrap; |
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | @include bem.modifier('wrap-reverse') { | 15 | @include bem.modifier("wrap-reverse") { |
| 16 | flex-wrap: wrap-reverse; | 16 | flex-wrap: wrap-reverse; |
| 17 | } | 17 | } |
| 18 | } | 18 | } |
diff --git a/src/layouts/_form.scss b/src/layouts/_form.scss index f094cbc..f71e469 100644 --- a/src/layouts/_form.scss +++ b/src/layouts/_form.scss | |||
| @@ -1,57 +1,57 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'form.vars'; | 6 | @forward "form.vars"; |
| 7 | @use 'form.vars' as vars; | 7 | @use "form.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.layout('form') { | 12 | @include bem.layout("form") { |
| 13 | display: flex; | 13 | display: flex; |
| 14 | flex-direction: column; | 14 | flex-direction: column; |
| 15 | gap: props.get(vars.$item-spacing-b) props.get(vars.$label-spacing-i); | 15 | gap: props.get(vars.$item-spacing-b) props.get(vars.$label-spacing-i); |
| 16 | 16 | ||
| 17 | @include bem.elem('item') { | 17 | @include bem.elem("item") { |
| 18 | display: block; | 18 | display: block; |
| 19 | } | 19 | } |
| 20 | 20 | ||
| 21 | @include bem.elem('item-content') { | 21 | @include bem.elem("item-content") { |
| 22 | @include bem.modifier('align-start') { | 22 | @include bem.modifier("align-start") { |
| 23 | align-self: start; | 23 | align-self: start; |
| 24 | } | 24 | } |
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | @include bem.modifier('row') { | 27 | @include bem.modifier("row") { |
| 28 | flex-direction: row; | 28 | flex-direction: row; |
| 29 | align-items: flex-end; | 29 | align-items: flex-end; |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | @include bem.modifier('labels-start', 'labels-end') { | 32 | @include bem.modifier("labels-start", "labels-end") { |
| 33 | display: grid; | 33 | display: grid; |
| 34 | grid-template-rows: auto; | 34 | grid-template-rows: auto; |
| 35 | grid-template-columns: auto 1fr; | 35 | grid-template-columns: auto 1fr; |
| 36 | align-items: baseline; | 36 | align-items: baseline; |
| 37 | 37 | ||
| 38 | @include bem.elem('item') { | 38 | @include bem.elem("item") { |
| 39 | display: contents; | 39 | display: contents; |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | @include bem.elem('item-label') { | 42 | @include bem.elem("item-label") { |
| 43 | grid-column: 1; | 43 | grid-column: 1; |
| 44 | padding-inline-end: 0; | 44 | padding-inline-end: 0; |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | @include bem.elem('item-content') { | 47 | @include bem.elem("item-content") { |
| 48 | grid-column: 2; | 48 | grid-column: 2; |
| 49 | margin-block-start: 0; | 49 | margin-block-start: 0; |
| 50 | } | 50 | } |
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | @include bem.modifier('labels-end') { | 53 | @include bem.modifier("labels-end") { |
| 54 | @include bem.elem('item-label') { | 54 | @include bem.elem("item-label") { |
| 55 | text-align: end; | 55 | text-align: end; |
| 56 | } | 56 | } |
| 57 | } | 57 | } |
diff --git a/src/layouts/_form.vars.scss b/src/layouts/_form.vars.scss index 52670cc..68cb23a 100644 --- a/src/layouts/_form.vars.scss +++ b/src/layouts/_form.vars.scss | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | 3 | ||
| 4 | $item-spacing-b: props.def(--l-form--item-spacing-b, props.get(core.$size--325)) !default; | 4 | $item-spacing-b: props.def(--l-form--item-spacing-b, props.get(core.$size--325)) !default; |
| 5 | $label-spacing-i: props.def(--l-form--label-spacing-i, props.get(core.$size--325)) !default; | 5 | $label-spacing-i: props.def(--l-form--label-spacing-i, props.get(core.$size--325)) !default; |
diff --git a/src/layouts/_hlist.scss b/src/layouts/_hlist.scss index 32b3097..00787db 100644 --- a/src/layouts/_hlist.scss +++ b/src/layouts/_hlist.scss | |||
| @@ -1,30 +1,30 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'hlist.vars'; | 6 | @forward "hlist.vars"; |
| 7 | @use 'hlist.vars' as vars; | 7 | @use "hlist.vars" as vars; |
| 8 | @use '../objects/button.vars' as button; | 8 | @use "../objects/button.vars" as button; |
| 9 | 9 | ||
| 10 | @mixin styles { | 10 | @mixin styles { |
| 11 | @include materialize-at-root(meta.module-variables('vars')); | 11 | @include materialize-at-root(meta.module-variables("vars")); |
| 12 | 12 | ||
| 13 | @include bem.layout('hlist') { | 13 | @include bem.layout("hlist") { |
| 14 | display: inline-flex; | 14 | display: inline-flex; |
| 15 | flex-wrap: wrap; | 15 | flex-wrap: wrap; |
| 16 | gap: props.get(vars.$gap); | 16 | gap: props.get(vars.$gap); |
| 17 | 17 | ||
| 18 | @each $mod, $size in vars.$sizes { | 18 | @each $mod, $size in vars.$sizes { |
| 19 | @include bem.modifier($mod) { | 19 | @include bem.modifier($mod) { |
| 20 | gap: props.get($size); | 20 | gap: props.get($size); |
| 21 | 21 | ||
| 22 | @include bem.modifier('separated') { | 22 | @include bem.modifier("separated") { |
| 23 | @include bem.elem('item') { | 23 | @include bem.elem("item") { |
| 24 | @include bem.next-twin-elem { | 24 | @include bem.next-twin-elem { |
| 25 | &::before { | 25 | &::before { |
| 26 | content: '·'; | 26 | content: "·"; |
| 27 | margin-inline: calc(.65 * props.get($size)); | 27 | margin-inline: calc(0.65 * props.get($size)); |
| 28 | } | 28 | } |
| 29 | } | 29 | } |
| 30 | } | 30 | } |
| @@ -32,40 +32,51 @@ | |||
| 32 | } | 32 | } |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | @include bem.modifier('separated') { | 35 | @include bem.modifier("separated") { |
| 36 | gap: 0; | 36 | gap: 0; |
| 37 | 37 | ||
| 38 | @include bem.elem('item') { | 38 | @include bem.elem("item") { |
| 39 | @include bem.next-twin-elem { | 39 | @include bem.next-twin-elem { |
| 40 | &::before { | 40 | &::before { |
| 41 | content: '·'; | 41 | content: "·"; |
| 42 | margin-inline: calc(.65 * props.get(vars.$gap)); | 42 | margin-inline: calc(0.65 * props.get(vars.$gap)); |
| 43 | } | 43 | } |
| 44 | } | 44 | } |
| 45 | } | 45 | } |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | @include bem.modifier('buttons') { | 48 | @include bem.modifier("buttons") { |
| 49 | margin-inline: calc(-1 * props.get(button.$pad-i) - props.get(button.$border-width)); | 49 | margin-inline: calc(-1 * props.get(button.$pad-i) - props.get(button.$border-width)); |
| 50 | 50 | ||
| 51 | @include bem.modifier('pill') { | 51 | @include bem.modifier("pill") { |
| 52 | margin-inline: calc(-1 * props.get(button.$pad-i-pill) - props.get(button.$border-width)); | 52 | margin-inline: calc( |
| 53 | -1 * props.get(button.$pad-i-pill) - props.get(button.$border-width) | ||
| 54 | ); | ||
| 53 | } | 55 | } |
| 54 | 56 | ||
| 55 | @include bem.modifier('icon') { | 57 | @include bem.modifier("icon") { |
| 56 | margin-inline: calc(-1 * props.get(button.$pad-b) - props.get(button.$border-width) - .5em * (props.get(button.$line-height) - 1)); | 58 | margin-inline: calc( |
| 59 | -1 * props.get(button.$pad-b) - props.get(button.$border-width) - 0.5em * | ||
| 60 | (props.get(button.$line-height) - 1) | ||
| 61 | ); | ||
| 57 | } | 62 | } |
| 58 | 63 | ||
| 59 | @each $mod, $pad-i, $pad-i-label, $pad-i-pill, $pad-b, $font-size in button.$fixed-sizes { | 64 | @each $mod, $pad-i, $pad-i-label, $pad-i-pill, $pad-b, $font-size in button.$fixed-sizes |
| 60 | @include bem.modifier('buttons-#{$mod}') { | 65 | { |
| 66 | @include bem.modifier("buttons-#{$mod}") { | ||
| 61 | margin-inline: calc(-1 * props.get($pad-i) - props.get(button.$border-width)); | 67 | margin-inline: calc(-1 * props.get($pad-i) - props.get(button.$border-width)); |
| 62 | 68 | ||
| 63 | @include bem.modifier('pill') { | 69 | @include bem.modifier("pill") { |
| 64 | margin-inline: calc(-1 * props.get($pad-i-pill) - props.get(button.$border-width)); | 70 | margin-inline: calc( |
| 71 | -1 * props.get($pad-i-pill) - props.get(button.$border-width) | ||
| 72 | ); | ||
| 65 | } | 73 | } |
| 66 | 74 | ||
| 67 | @include bem.modifier('icon') { | 75 | @include bem.modifier("icon") { |
| 68 | margin-inline: calc(-1 * props.get($pad-b) - props.get(button.$border-width) - .5em * (props.get(button.$line-height) - 1)); | 76 | margin-inline: calc( |
| 77 | -1 * props.get($pad-b) - props.get(button.$border-width) - 0.5em * | ||
| 78 | (props.get(button.$line-height) - 1) | ||
| 79 | ); | ||
| 69 | } | 80 | } |
| 70 | } | 81 | } |
| 71 | } | 82 | } |
diff --git a/src/layouts/_hlist.vars.scss b/src/layouts/_hlist.vars.scss index 2d99057..557cfae 100644 --- a/src/layouts/_hlist.vars.scss +++ b/src/layouts/_hlist.vars.scss | |||
| @@ -1,16 +1,16 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | 3 | ||
| 4 | $gap: props.def(--l-hlist--gap, props.get(core.$size--150)) !default; | 4 | $gap: props.def(--l-hlist--gap, props.get(core.$size--150)) !default; |
| 5 | 5 | ||
| 6 | $gapless: props.def(--l-hlist--gapless, 0) !default; | 6 | $gapless: props.def(--l-hlist--gapless, 0) !default; |
| 7 | $sm: props.def(--l-hlist--sm, props.get(core.$size--100)) !default; | 7 | $sm: props.def(--l-hlist--sm, props.get(core.$size--100)) !default; |
| 8 | $lg: props.def(--l-hlist--lg, props.get(core.$size--300)) !default; | 8 | $lg: props.def(--l-hlist--lg, props.get(core.$size--300)) !default; |
| 9 | $xl: props.def(--l-hlist--xl, props.get(core.$size--450)) !default; | 9 | $xl: props.def(--l-hlist--xl, props.get(core.$size--450)) !default; |
| 10 | 10 | ||
| 11 | $sizes: ( | 11 | $sizes: ( |
| 12 | 'gapless': $gapless, | 12 | "gapless": $gapless, |
| 13 | 'sm': $sm, | 13 | "sm": $sm, |
| 14 | 'lg': $lg, | 14 | "lg": $lg, |
| 15 | 'xl': $xl, | 15 | "xl": $xl, |
| 16 | ) !default; | 16 | ) !default; |
diff --git a/src/layouts/_media.scss b/src/layouts/_media.scss index 4492ea9..b6732bf 100644 --- a/src/layouts/_media.scss +++ b/src/layouts/_media.scss | |||
| @@ -1,17 +1,17 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'media.vars'; | 6 | @forward "media.vars"; |
| 7 | @use 'media.vars' as vars; | 7 | @use "media.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.layout('media') { | 12 | @include bem.layout("media") { |
| 13 | display: flex; | 13 | display: flex; |
| 14 | gap: props.get(vars.$gap); | 14 | gap: props.get(vars.$gap); |
| 15 | align-items: center; | 15 | align-items: center; |
| 16 | line-height: 1.4; | 16 | line-height: 1.4; |
| 17 | 17 | ||
| @@ -21,19 +21,19 @@ | |||
| 21 | } | 21 | } |
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | @include bem.modifier('wrap') { | 24 | @include bem.modifier("wrap") { |
| 25 | flex-wrap: wrap; | 25 | flex-wrap: wrap; |
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | @include bem.elem('block') { | 28 | @include bem.elem("block") { |
| 29 | flex: 0 0 auto; | 29 | flex: 0 0 auto; |
| 30 | 30 | ||
| 31 | @include bem.modifier('shrink', 'main') { | 31 | @include bem.modifier("shrink", "main") { |
| 32 | flex-shrink: 1; | 32 | flex-shrink: 1; |
| 33 | min-inline-size: 0; | 33 | min-inline-size: 0; |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | @include bem.modifier('main') { | 36 | @include bem.modifier("main") { |
| 37 | inline-size: 100%; | 37 | inline-size: 100%; |
| 38 | } | 38 | } |
| 39 | } | 39 | } |
diff --git a/src/layouts/_media.vars.scss b/src/layouts/_media.vars.scss index 78e157f..f24ea2a 100644 --- a/src/layouts/_media.vars.scss +++ b/src/layouts/_media.vars.scss | |||
| @@ -1,16 +1,16 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | 3 | ||
| 4 | $gap: props.def(--l-media--gap, props.get(core.$size--150)) !default; | 4 | $gap: props.def(--l-media--gap, props.get(core.$size--150)) !default; |
| 5 | 5 | ||
| 6 | $gapless: props.def(--l-media--gapless, 0) !default; | 6 | $gapless: props.def(--l-media--gapless, 0) !default; |
| 7 | $sm: props.def(--l-media--sm, props.get(core.$size--100)) !default; | 7 | $sm: props.def(--l-media--sm, props.get(core.$size--100)) !default; |
| 8 | $lg: props.def(--l-media--lg, props.get(core.$size--300)) !default; | 8 | $lg: props.def(--l-media--lg, props.get(core.$size--300)) !default; |
| 9 | $xl: props.def(--l-media--xl, props.get(core.$size--450)) !default; | 9 | $xl: props.def(--l-media--xl, props.get(core.$size--450)) !default; |
| 10 | 10 | ||
| 11 | $sizes: ( | 11 | $sizes: ( |
| 12 | 'gapless': $gapless, | 12 | "gapless": $gapless, |
| 13 | 'sm': $sm, | 13 | "sm": $sm, |
| 14 | 'lg': $lg, | 14 | "lg": $lg, |
| 15 | 'xl': $xl, | 15 | "xl": $xl, |
| 16 | ) !default; | 16 | ) !default; |
diff --git a/src/layouts/_overflow.scss b/src/layouts/_overflow.scss index ab983b9..57e2512 100644 --- a/src/layouts/_overflow.scss +++ b/src/layouts/_overflow.scss | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | @use 'pkg:iro-sass/src/bem'; | 1 | @use "pkg:iro-sass/bem"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | 4 | ||
| 5 | @mixin styles { | 5 | @mixin styles { |
| 6 | @include bem.layout('overflow') { | 6 | @include bem.layout("overflow") { |
| 7 | overflow: auto; | 7 | overflow: auto; |
| 8 | scrollbar-color: props.get(core.$theme, --text-disabled) transparent; | 8 | scrollbar-color: props.get(core.$theme, --text-disabled) transparent; |
| 9 | } | 9 | } |
| 10 | } | 10 | } |
diff --git a/src/layouts/_split-view.scss b/src/layouts/_split-view.scss index ea651c7..1bffddd 100644 --- a/src/layouts/_split-view.scss +++ b/src/layouts/_split-view.scss | |||
| @@ -1,101 +1,110 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:include-media/dist/include-media' as media; | 2 | @use "pkg:include-media/dist/include-media" as media; |
| 3 | @use 'pkg:iro-sass/src/bem'; | 3 | @use "pkg:iro-sass/bem"; |
| 4 | @use 'pkg:iro-sass/src/props'; | 4 | @use "pkg:iro-sass/props"; |
| 5 | @use '../props' as *; | 5 | @use "../props" as *; |
| 6 | 6 | ||
| 7 | @forward 'split-view.vars'; | 7 | @forward "split-view.vars"; |
| 8 | @use 'split-view.vars' as vars; | 8 | @use "split-view.vars" as vars; |
| 9 | 9 | ||
| 10 | @mixin styles { | 10 | @mixin styles { |
| 11 | @include materialize-at-root(meta.module-variables('vars')); | 11 | @include materialize-at-root(meta.module-variables("vars")); |
| 12 | 12 | ||
| 13 | @include bem.layout('split-view') { | 13 | @include bem.layout("split-view") { |
| 14 | display: flex; | 14 | display: flex; |
| 15 | gap: props.get(vars.$col-gap); | 15 | gap: props.get(vars.$col-gap); |
| 16 | align-items: start; | 16 | align-items: start; |
| 17 | 17 | ||
| 18 | @include bem.elem('panel') { | 18 | @include bem.elem("panel") { |
| 19 | flex: 1 1 auto; | 19 | flex: 1 1 auto; |
| 20 | inline-size: 100%; | 20 | inline-size: 100%; |
| 21 | min-inline-size: 0; | 21 | min-inline-size: 0; |
| 22 | 22 | ||
| 23 | &::before { | 23 | &::before { |
| 24 | display: block; | 24 | display: block; |
| 25 | margin-block: -100em 100em; | 25 | margin-block: -100em 100em; |
| 26 | content: ''; | 26 | content: ""; |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | @include bem.modifier('side-25') { | 29 | @include bem.modifier("side-25") { |
| 30 | flex: 0 0 auto; | 30 | flex: 0 0 auto; |
| 31 | inline-size: 25%; | 31 | inline-size: 25%; |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | @include bem.modifier('min-50') { | 34 | @include bem.modifier("min-50") { |
| 35 | min-inline-size: props.get(vars.$panel--min-50); | 35 | min-inline-size: props.get(vars.$panel--min-50); |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | @include bem.modifier('min-100') { | 38 | @include bem.modifier("min-100") { |
| 39 | min-inline-size: props.get(vars.$panel--min-100); | 39 | min-inline-size: props.get(vars.$panel--min-100); |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | @include bem.modifier('min-200') { | 42 | @include bem.modifier("min-200") { |
| 43 | min-inline-size: props.get(vars.$panel--min-200); | 43 | min-inline-size: props.get(vars.$panel--min-200); |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | @include bem.modifier('sticky') { | 46 | @include bem.modifier("sticky") { |
| 47 | position: sticky; | 47 | position: sticky; |
| 48 | inset-block-start: props.get(vars.$panel--sticky-offset); | 48 | inset-block-start: props.get(vars.$panel--sticky-offset); |
| 49 | } | 49 | } |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | @include bem.modifier('gapless') { | 52 | @include bem.modifier("gapless") { |
| 53 | gap: props.get(vars.$gapless); | 53 | gap: props.get(vars.$gapless); |
| 54 | 54 | ||
| 55 | @include bem.elem('panel') { | 55 | @include bem.elem("panel") { |
| 56 | @include bem.modifier('min-50') { | 56 | @include bem.modifier("min-50") { |
| 57 | min-inline-size: calc(props.get(vars.$panel--min-50) + props.get(vars.$col-gap) - props.get(vars.$gapless)); | 57 | min-inline-size: calc( |
| 58 | props.get(vars.$panel--min-50) + | ||
| 59 | props.get(vars.$col-gap) - props.get(vars.$gapless) | ||
| 60 | ); | ||
| 58 | } | 61 | } |
| 59 | 62 | ||
| 60 | @include bem.modifier('min-100') { | 63 | @include bem.modifier("min-100") { |
| 61 | min-inline-size: calc(props.get(vars.$panel--min-100) + props.get(vars.$col-gap) - props.get(vars.$gapless)); | 64 | min-inline-size: calc( |
| 65 | props.get(vars.$panel--min-100) + | ||
| 66 | props.get(vars.$col-gap) - props.get(vars.$gapless) | ||
| 67 | ); | ||
| 62 | } | 68 | } |
| 63 | 69 | ||
| 64 | @include bem.modifier('min-200') { | 70 | @include bem.modifier("min-200") { |
| 65 | min-inline-size: calc(props.get(vars.$panel--min-200) + props.get(vars.$col-gap) - props.get(vars.$gapless)); | 71 | min-inline-size: calc( |
| 72 | props.get(vars.$panel--min-200) + | ||
| 73 | props.get(vars.$col-gap) - props.get(vars.$gapless) | ||
| 74 | ); | ||
| 66 | } | 75 | } |
| 67 | } | 76 | } |
| 68 | } | 77 | } |
| 69 | 78 | ||
| 70 | @include bem.elem('content') { | 79 | @include bem.elem("content") { |
| 71 | inline-size: 100%; | 80 | inline-size: 100%; |
| 72 | } | 81 | } |
| 73 | 82 | ||
| 74 | @include media.media('<=md') { | 83 | @include media.media("<=md") { |
| 75 | flex-direction: column; | 84 | flex-direction: column; |
| 76 | gap: props.get(vars.$row-gap); | 85 | gap: props.get(vars.$row-gap); |
| 77 | align-items: stretch; | 86 | align-items: stretch; |
| 78 | 87 | ||
| 79 | @include bem.modifier('gapless') { | 88 | @include bem.modifier("gapless") { |
| 80 | gap: props.get(vars.$gapless); | 89 | gap: props.get(vars.$gapless); |
| 81 | } | 90 | } |
| 82 | 91 | ||
| 83 | @include bem.modifier('wrap-reverse') { | 92 | @include bem.modifier("wrap-reverse") { |
| 84 | flex-direction: column-reverse; | 93 | flex-direction: column-reverse; |
| 85 | } | 94 | } |
| 86 | 95 | ||
| 87 | @include bem.elem('panel') { | 96 | @include bem.elem("panel") { |
| 88 | inline-size: auto; | 97 | inline-size: auto; |
| 89 | 98 | ||
| 90 | @include bem.modifier('side-25') { | 99 | @include bem.modifier("side-25") { |
| 91 | inline-size: auto; | 100 | inline-size: auto; |
| 92 | } | 101 | } |
| 93 | 102 | ||
| 94 | @include bem.modifier('min-50', 'min-100', 'min-200') { | 103 | @include bem.modifier("min-50", "min-100", "min-200") { |
| 95 | min-inline-size: 0; | 104 | min-inline-size: 0; |
| 96 | } | 105 | } |
| 97 | 106 | ||
| 98 | @include bem.modifier('sticky') { | 107 | @include bem.modifier("sticky") { |
| 99 | position: static; | 108 | position: static; |
| 100 | } | 109 | } |
| 101 | } | 110 | } |
diff --git a/src/layouts/_split-view.vars.scss b/src/layouts/_split-view.vars.scss index b2944e7..9b6dd21 100644 --- a/src/layouts/_split-view.vars.scss +++ b/src/layouts/_split-view.vars.scss | |||
| @@ -1,13 +1,16 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | 3 | ||
| 4 | $col-gap: props.def(--l-split-view--col-gap, props.get(core.$size--800)) !default; | 4 | $col-gap: props.def(--l-split-view--col-gap, props.get(core.$size--800)) !default; |
| 5 | $row-gap: props.def(--l-split-view--row-gap, props.get(core.$size--600)) !default; | 5 | $row-gap: props.def(--l-split-view--row-gap, props.get(core.$size--600)) !default; |
| 6 | 6 | ||
| 7 | $gapless: props.def(--l-split-view--gapless, 0rem) !default; | 7 | $gapless: props.def(--l-split-view--gapless, 0rem) !default; |
| 8 | 8 | ||
| 9 | $panel--min-50: props.def(--l-split-view--panel--min-50, props.get(core.$size--2400)) !default; | 9 | $panel--min-50: props.def(--l-split-view--panel--min-50, props.get(core.$size--2400)) !default; |
| 10 | $panel--min-100: props.def(--l-split-view--panel--min-100, props.get(core.$size--3200)) !default; | 10 | $panel--min-100: props.def(--l-split-view--panel--min-100, props.get(core.$size--3200)) !default; |
| 11 | $panel--min-200: props.def(--l-split-view--panel--min-200, props.get(core.$size--4200)) !default; | 11 | $panel--min-200: props.def(--l-split-view--panel--min-200, props.get(core.$size--4200)) !default; |
| 12 | 12 | ||
| 13 | $panel--sticky-offset: props.def(--l-split-view--panel--sticky-offset, props.get(core.$sticky-top-offset)) !default; | 13 | $panel--sticky-offset: props.def( |
| 14 | --l-split-view--panel--sticky-offset, | ||
| 15 | props.get(core.$sticky-top-offset) | ||
| 16 | ) !default; | ||
diff --git a/src/objects/_alert.scss b/src/objects/_alert.scss index c2a1c58..3aeb781 100644 --- a/src/objects/_alert.scss +++ b/src/objects/_alert.scss | |||
| @@ -1,44 +1,37 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:meta'; | 2 | @use "sass:meta"; |
| 3 | @use 'pkg:iro-sass/src/bem'; | 3 | @use "pkg:iro-sass/bem"; |
| 4 | @use 'pkg:iro-sass/src/props'; | 4 | @use "pkg:iro-sass/props"; |
| 5 | @use '../props' as *; | 5 | @use "../props" as *; |
| 6 | 6 | ||
| 7 | @forward 'alert.vars'; | 7 | @forward "alert.vars"; |
| 8 | @use 'alert.vars' as vars; | 8 | @use "alert.vars" as vars; |
| 9 | 9 | ||
| 10 | @mixin styles { | 10 | @mixin styles { |
| 11 | @include materialize-at-root(meta.module-variables('vars')); | 11 | @include materialize-at-root(meta.module-variables("vars")); |
| 12 | 12 | ||
| 13 | @include bem.object('alert') { | 13 | @include bem.object("alert") { |
| 14 | padding-block: props.get(vars.$pad-b); | 14 | padding-block: props.get(vars.$pad-b); |
| 15 | padding-inline: props.get(vars.$pad-i); | 15 | padding-inline: props.get(vars.$pad-i); |
| 16 | background-color: props.get(vars.$bg-color); | 16 | background-color: props.get(vars.$bg-color); |
| 17 | border: props.get(vars.$border-width) solid transparent; | 17 | border: props.get(vars.$border-width) solid transparent; |
| 18 | border-color: props.get(vars.$border-color); | 18 | border-color: props.get(vars.$border-color); |
| 19 | border-radius: props.get(vars.$rounding); | 19 | border-radius: props.get(vars.$rounding); |
| 20 | box-shadow: | 20 | box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) props.get(vars.$shadow-blur) |
| 21 | props.get(vars.$shadow-x) | 21 | props.get(vars.$shadow-grow) props.get(vars.$shadow-color); |
| 22 | props.get(vars.$shadow-y) | ||
| 23 | props.get(vars.$shadow-blur) | ||
| 24 | props.get(vars.$shadow-grow) | ||
| 25 | props.get(vars.$shadow-color); | ||
| 26 | 22 | ||
| 27 | &::before { | 23 | &::before { |
| 28 | display: block; | 24 | display: block; |
| 29 | margin-block: -100em 100em; | 25 | margin-block: -100em 100em; |
| 30 | content: ''; | 26 | content: ""; |
| 31 | } | 27 | } |
| 32 | 28 | ||
| 33 | @each $mod, $theme in vars.$themes-config { | 29 | @each $mod, $theme in vars.$themes-config { |
| 34 | @include bem.modifier($mod) { | 30 | @include bem.modifier($mod) { |
| 35 | background-color: props.get(vars.$themes, $theme, --bg-color); | 31 | background-color: props.get(vars.$themes, $theme, --bg-color); |
| 36 | border-color: props.get(vars.$themes, $theme, --border-color); | 32 | border-color: props.get(vars.$themes, $theme, --border-color); |
| 37 | box-shadow: | 33 | box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) |
| 38 | props.get(vars.$shadow-x) | 34 | props.get(vars.$shadow-blur) props.get(vars.$shadow-grow) |
| 39 | props.get(vars.$shadow-y) | ||
| 40 | props.get(vars.$shadow-blur) | ||
| 41 | props.get(vars.$shadow-grow) | ||
| 42 | props.get(vars.$themes, $theme, --shadow-color); | 35 | props.get(vars.$themes, $theme, --shadow-color); |
| 43 | } | 36 | } |
| 44 | } | 37 | } |
diff --git a/src/objects/_alert.vars.scss b/src/objects/_alert.vars.scss index bbd3dad..aedd917 100644 --- a/src/objects/_alert.vars.scss +++ b/src/objects/_alert.vars.scss | |||
| @@ -1,36 +1,50 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | 3 | ||
| 4 | $border-width: props.def(--o-alert--border-width, props.get(core.$border-width--medium)) !default; | 4 | $border-width: props.def(--o-alert--border-width, props.get(core.$border-width--medium)) !default; |
| 5 | $pad-i: props.def(--o-alert--pad-i, props.get(core.$size--250)) !default; | 5 | $pad-i: props.def(--o-alert--pad-i, props.get(core.$size--250)) !default; |
| 6 | $pad-b: props.def(--o-alert--pad-b, props.get(core.$size--200)) !default; | 6 | $pad-b: props.def(--o-alert--pad-b, props.get(core.$size--200)) !default; |
| 7 | $rounding: props.def(--o-alert--rounding, props.get(core.$rounding)) !default; | 7 | $rounding: props.def(--o-alert--rounding, props.get(core.$rounding)) !default; |
| 8 | 8 | ||
| 9 | $shadow-x: props.def(--o-alert--shadow-x, props.get(core.$shadow--l2--x)) !default; | 9 | $shadow-x: props.def(--o-alert--shadow-x, props.get(core.$shadow--l2--x)) !default; |
| 10 | $shadow-y: props.def(--o-alert--shadow-y, props.get(core.$shadow--l2--y)) !default; | 10 | $shadow-y: props.def(--o-alert--shadow-y, props.get(core.$shadow--l2--y)) !default; |
| 11 | $shadow-blur: props.def(--o-alert--shadow-blur, props.get(core.$shadow--l2--blur)) !default; | 11 | $shadow-blur: props.def(--o-alert--shadow-blur, props.get(core.$shadow--l2--blur)) !default; |
| 12 | $shadow-grow: props.def(--o-alert--shadow-grow, props.get(core.$shadow--l2--grow)) !default; | 12 | $shadow-grow: props.def(--o-alert--shadow-grow, props.get(core.$shadow--l2--grow)) !default; |
| 13 | 13 | ||
| 14 | $bg-color: props.def(--o-alert--bg-color, props.get(core.$theme, --bg-l2), 'color') !default; | 14 | $bg-color: props.def(--o-alert--bg-color, props.get(core.$theme, --bg-l2), "color") !default; |
| 15 | $border-color: props.def(--o-alert--border-color, props.get(core.$theme, --text-mute-more) props.get(core.$theme, --text-mute-more) props.get(core.$theme, --text-mute), 'color') !default; | 15 | $border-color: props.def( |
| 16 | --o-alert--border-color, | ||
| 17 | props.get(core.$theme, --text-mute-more) props.get(core.$theme, --text-mute-more) | ||
| 18 | props.get(core.$theme, --text-mute), | ||
| 19 | "color" | ||
| 20 | ) !default; | ||
| 16 | 21 | ||
| 17 | $shadow-color: props.def(--o-alert--shadow-color, props.get(core.$transparent-colors, --black, --200), 'color') !default; | 22 | $shadow-color: props.def( |
| 23 | --o-alert--shadow-color, | ||
| 24 | props.get(core.$transparent-colors, --black, --200), | ||
| 25 | "color" | ||
| 26 | ) !default; | ||
| 18 | 27 | ||
| 19 | $themes-config: ( | 28 | $themes-config: ( |
| 20 | accent: --accent, | 29 | accent: --accent, |
| 21 | positive: --positive, | 30 | positive: --positive, |
| 22 | negative: --negative, | 31 | negative: --negative, |
| 23 | warning: --warning, | 32 | warning: --warning, |
| 24 | ) !default; | 33 | ) !default; |
| 25 | 34 | ||
| 26 | $themes: props.def(--o-alert, (), 'color'); | 35 | $themes: props.def(--o-alert, (), "color"); |
| 27 | 36 | ||
| 28 | @each $theme, $key in $themes-config { | 37 | @each $theme, $key in $themes-config { |
| 29 | $themes: props.merge($themes, ( | 38 | $themes: props.merge( |
| 30 | $key: ( | 39 | $themes, |
| 31 | --bg-color: props.get(core.$theme, --bg-l2), | 40 | ( |
| 32 | --border-color: props.get(core.$theme, $key, --700) props.get(core.$theme, $key, --700) props.get(core.$theme, $key, --800), | 41 | $key: ( |
| 33 | --shadow-color: props.get(core.$theme, $key, --200), | 42 | --bg-color: props.get(core.$theme, --bg-l2), |
| 43 | --border-color: props.get(core.$theme, $key, --700) | ||
| 44 | props.get(core.$theme, $key, --700) | ||
| 45 | props.get(core.$theme, $key, --800), | ||
| 46 | --shadow-color: props.get(core.$theme, $key, --200), | ||
| 47 | ), | ||
| 34 | ) | 48 | ) |
| 35 | )); | 49 | ); |
| 36 | } | 50 | } |
diff --git a/src/objects/_avatar.scss b/src/objects/_avatar.scss index 272c213..f805502 100644 --- a/src/objects/_avatar.scss +++ b/src/objects/_avatar.scss | |||
| @@ -1,118 +1,135 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'avatar.vars'; | 6 | @forward "avatar.vars"; |
| 7 | @use 'avatar.vars' as vars; | 7 | @use "avatar.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin status($indicator-size) { | 9 | @mixin status($indicator-size) { |
| 10 | @include bem.elem('status') { | 10 | @include bem.elem("status") { |
| 11 | inline-size: props.get($indicator-size); | 11 | inline-size: props.get($indicator-size); |
| 12 | block-size: props.get($indicator-size); | 12 | block-size: props.get($indicator-size); |
| 13 | 13 | ||
| 14 | @include bem.sibling-elem('content') { | 14 | @include bem.sibling-elem("content") { |
| 15 | mask-image: radial-gradient(circle calc(.5 * props.get($indicator-size) + props.get(vars.$indicator-spacing)) at | 15 | mask-image: radial-gradient( |
| 16 | calc(100% - .5 * props.get($indicator-size)) | 16 | circle calc(0.5 * props.get($indicator-size) + props.get(vars.$indicator-spacing)) |
| 17 | calc(100% - .5 * props.get($indicator-size)), | 17 | at calc(100% - 0.5 * props.get($indicator-size)) |
| 18 | transparent 95%, | 18 | calc(100% - 0.5 * props.get($indicator-size)), |
| 19 | #fff); | 19 | transparent 95%, |
| 20 | #fff | ||
| 21 | ); | ||
| 20 | } | 22 | } |
| 21 | } | 23 | } |
| 22 | } | 24 | } |
| 23 | 25 | ||
| 24 | @mixin styles { | 26 | @mixin styles { |
| 25 | @include materialize-at-root(meta.module-variables('vars')); | 27 | @include materialize-at-root(meta.module-variables("vars")); |
| 26 | 28 | ||
| 27 | @include bem.object('avatar') { | 29 | @include bem.object("avatar") { |
| 28 | position: relative; | 30 | position: relative; |
| 29 | display: inline-block; | 31 | display: inline-block; |
| 30 | font-style: normal; | 32 | font-style: normal; |
| 31 | vertical-align: .05em; | 33 | vertical-align: 0.05em; |
| 32 | border-radius: props.get(vars.$rounding); | 34 | border-radius: props.get(vars.$rounding); |
| 33 | 35 | ||
| 34 | &::after { | 36 | &::after { |
| 35 | position: absolute; | 37 | position: absolute; |
| 36 | inset: calc(-1 * props.get(vars.$key-focus--border-offset)); | 38 | inset: calc(-1 * props.get(vars.$key-focus--border-offset)); |
| 37 | z-index: 1; | 39 | z-index: 1; |
| 38 | display: none; | 40 | display: none; |
| 39 | pointer-events: none; | 41 | pointer-events: none; |
| 40 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | 42 | outline: props.get(vars.$key-focus--border-color) solid |
| 41 | content: ''; | 43 | props.get(vars.$key-focus--border-width); |
| 42 | border: props.get(vars.$key-focus--border-offset) solid transparent; | 44 | content: ""; |
| 43 | border-radius: props.get(vars.$rounding); | 45 | border: props.get(vars.$key-focus--border-offset) solid transparent; |
| 44 | box-shadow: | 46 | border-radius: props.get(vars.$rounding); |
| 45 | 0 | 47 | box-shadow: 0 0 0 |
| 46 | 0 | 48 | calc( |
| 47 | 0 | 49 | props.get(vars.$key-focus--border-width) + |
| 48 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | 50 | props.get(vars.$key-focus--outline-width) |
| 51 | ) | ||
| 49 | props.get(vars.$key-focus--outline-color); | 52 | props.get(vars.$key-focus--outline-color); |
| 50 | } | 53 | } |
| 51 | 54 | ||
| 52 | @include bem.elem('status') { | 55 | @include bem.elem("status") { |
| 53 | position: absolute; | 56 | position: absolute; |
| 54 | inset-block-end: 0; | 57 | inset-block-end: 0; |
| 55 | inset-inline-end: 0; | 58 | inset-inline-end: 0; |
| 56 | } | 59 | } |
| 57 | 60 | ||
| 58 | @include bem.elem('icon') { | 61 | @include bem.elem("icon") { |
| 59 | position: absolute; | 62 | position: absolute; |
| 60 | inset-block-end: 0; | 63 | inset-block-end: 0; |
| 61 | inset-inline-end: 0; | 64 | inset-inline-end: 0; |
| 62 | display: flex; | 65 | display: flex; |
| 63 | align-items: flex-end; | 66 | align-items: flex-end; |
| 64 | justify-content: flex-end; | 67 | justify-content: flex-end; |
| 65 | inline-size: props.get(vars.$icon-size); | 68 | inline-size: props.get(vars.$icon-size); |
| 66 | block-size: props.get(vars.$icon-size); | 69 | block-size: props.get(vars.$icon-size); |
| 67 | 70 | ||
| 68 | @include bem.sibling-elem('content') { | 71 | @include bem.sibling-elem("content") { |
| 69 | clip-path: props.get(vars.$icon-mask); | 72 | clip-path: props.get(vars.$icon-mask); |
| 70 | } | 73 | } |
| 71 | } | 74 | } |
| 72 | 75 | ||
| 73 | @include bem.elem('content') { | 76 | @include bem.elem("content") { |
| 74 | display: block; | 77 | display: block; |
| 75 | inline-size: props.get(vars.$size); | 78 | inline-size: props.get(vars.$size); |
| 76 | block-size: props.get(vars.$size); | 79 | block-size: props.get(vars.$size); |
| 77 | font-size: props.get(vars.$font-size); | 80 | font-size: props.get(vars.$font-size); |
| 78 | line-height: props.get(vars.$size); | 81 | line-height: props.get(vars.$size); |
| 79 | text-align: center; | 82 | text-align: center; |
| 80 | object-fit: cover; | 83 | object-fit: cover; |
| 81 | object-position: center center; | 84 | object-position: center center; |
| 82 | border-radius: props.get(vars.$rounding); | 85 | border-radius: props.get(vars.$rounding); |
| 83 | } | 86 | } |
| 84 | 87 | ||
| 85 | @include bem.modifier('circle') { | 88 | @include bem.modifier("circle") { |
| 86 | border-radius: 100%; | 89 | border-radius: 100%; |
| 87 | 90 | ||
| 88 | &::after { | 91 | &::after { |
| 89 | border-radius: 100%; | 92 | border-radius: 100%; |
| 90 | } | 93 | } |
| 91 | 94 | ||
| 92 | @include bem.elem('content') { | 95 | @include bem.elem("content") { |
| 93 | border-radius: 100%; | 96 | border-radius: 100%; |
| 94 | } | 97 | } |
| 95 | } | 98 | } |
| 96 | 99 | ||
| 97 | @include bem.modifier('placeholder') { | 100 | @include bem.modifier("placeholder") { |
| 98 | @include bem.elem('content') { | 101 | @include bem.elem("content") { |
| 99 | background-color: hsl(0, 0%, props.get(vars.$bg-color--l)); | 102 | background-color: hsl(0, 0%, props.get(vars.$bg-color--l)); |
| 100 | } | 103 | } |
| 101 | } | 104 | } |
| 102 | 105 | ||
| 103 | @include bem.modifier('colored') { | 106 | @include bem.modifier("colored") { |
| 104 | @include bem.elem('content') { | 107 | @include bem.elem("content") { |
| 105 | color: #fff; | 108 | color: #fff; |
| 106 | background-color: hsl(props.get(vars.$bg-color--h), props.get(vars.$bg-color--s), props.get(vars.$bg-color--l)); | 109 | background-color: hsl( |
| 110 | props.get(vars.$bg-color--h), | ||
| 111 | props.get(vars.$bg-color--s), | ||
| 112 | props.get(vars.$bg-color--l) | ||
| 113 | ); | ||
| 107 | } | 114 | } |
| 108 | } | 115 | } |
| 109 | 116 | ||
| 110 | @include bem.modifier('colored-gradient') { | 117 | @include bem.modifier("colored-gradient") { |
| 111 | @include bem.elem('content') { | 118 | @include bem.elem("content") { |
| 112 | color: #fff; | 119 | color: #fff; |
| 113 | background: linear-gradient(props.get(vars.$bg-angle), | 120 | background: linear-gradient( |
| 114 | hsl(props.get(vars.$bg-color--h), props.get(vars.$bg-color--s), props.get(vars.$bg-color--l)), | 121 | props.get(vars.$bg-angle), |
| 115 | hsl(props.get(vars.$bg-color-2--h), props.get(vars.$bg-color-2--s), props.get(vars.$bg-color-2--l))); | 122 | hsl( |
| 123 | props.get(vars.$bg-color--h), | ||
| 124 | props.get(vars.$bg-color--s), | ||
| 125 | props.get(vars.$bg-color--l) | ||
| 126 | ), | ||
| 127 | hsl( | ||
| 128 | props.get(vars.$bg-color-2--h), | ||
| 129 | props.get(vars.$bg-color-2--s), | ||
| 130 | props.get(vars.$bg-color-2--l) | ||
| 131 | ) | ||
| 132 | ); | ||
| 116 | } | 133 | } |
| 117 | } | 134 | } |
| 118 | 135 | ||
| @@ -122,19 +139,19 @@ | |||
| 122 | @include bem.modifier($mod) { | 139 | @include bem.modifier($mod) { |
| 123 | @include status($indicator-size); | 140 | @include status($indicator-size); |
| 124 | 141 | ||
| 125 | @include bem.elem('icon') { | 142 | @include bem.elem("icon") { |
| 126 | inline-size: props.get($icon-size); | 143 | inline-size: props.get($icon-size); |
| 127 | block-size: props.get($icon-size); | 144 | block-size: props.get($icon-size); |
| 128 | 145 | ||
| 129 | @include bem.sibling-elem('content') { | 146 | @include bem.sibling-elem("content") { |
| 130 | clip-path: props.get($icon-mask); | 147 | clip-path: props.get($icon-mask); |
| 131 | } | 148 | } |
| 132 | } | 149 | } |
| 133 | 150 | ||
| 134 | @include bem.elem('content') { | 151 | @include bem.elem("content") { |
| 135 | inline-size: props.get($size); | 152 | inline-size: props.get($size); |
| 136 | block-size: props.get($size); | 153 | block-size: props.get($size); |
| 137 | font-size: props.get($font-size); | 154 | font-size: props.get($font-size); |
| 138 | line-height: props.get($size); | 155 | line-height: props.get($size); |
| 139 | } | 156 | } |
| 140 | } | 157 | } |
diff --git a/src/objects/_avatar.vars.scss b/src/objects/_avatar.vars.scss index 467d7cc..7d1c342 100644 --- a/src/objects/_avatar.vars.scss +++ b/src/objects/_avatar.vars.scss | |||
| @@ -1,79 +1,102 @@ | |||
| 1 | @use 'sass:math'; | 1 | @use "sass:math"; |
| 2 | 2 | ||
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../core.vars' as core; | 4 | @use "../core.vars" as core; |
| 5 | 5 | ||
| 6 | @function icon-mask($p) { | 6 | @function icon-mask($p) { |
| 7 | $offset: 0.15 * math.div(0.5, $p); | 7 | $offset: 0.15 * math.div(0.5, $p); |
| 8 | @return 'data:image/svg+xml;utf8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg"><defs><clipPath id="avatar_mask" clipPathUnits="objectBoundingBox"><path d="M 0,0 H 1 V #{$p} H #{$p + $offset} C #{$p + 0.055},#{$p} #{$p},#{$p + 0.055} #{$p},#{$p + $offset} V 1 H 0 Z" /></clipPath></defs></svg>#avatar_mask'; | 8 | @return 'data:image/svg+xml;utf8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg"><defs><clipPath id="avatar_mask" clipPathUnits="objectBoundingBox"><path d="M 0,0 H 1 V #{$p} H #{$p + $offset} C #{$p + 0.055},#{$p} #{$p},#{$p + 0.055} #{$p},#{$p + $offset} V 1 H 0 Z" /></clipPath></defs></svg>#avatar_mask'; |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | $size: props.def(--o-avatar--size, props.get(core.$size--500)) !default; | 11 | $size: props.def(--o-avatar--size, props.get(core.$size--500)) !default; |
| 12 | $font-size: props.def(--o-avatar--font-size, props.get(core.$font-size--100)) !default; | 12 | $font-size: props.def(--o-avatar--font-size, props.get(core.$font-size--100)) !default; |
| 13 | $indicator-size: props.def(--o-avatar--indicator-size, props.get(core.$size--150)) !default; | 13 | $indicator-size: props.def(--o-avatar--indicator-size, props.get(core.$size--150)) !default; |
| 14 | $indicator-spacing: props.def(--o-avatar--indicator-spacing, props.get(core.$size--40)) !default; | 14 | $indicator-spacing: props.def(--o-avatar--indicator-spacing, props.get(core.$size--40)) !default; |
| 15 | $rounding: props.def(--o-avatar--rounding, 25%) !default; | 15 | $rounding: props.def(--o-avatar--rounding, 25%) !default; |
| 16 | $icon-size: props.def(--o-avatar--icon-size, 1.2em) !default; | 16 | $icon-size: props.def(--o-avatar--icon-size, 1.2em) !default; |
| 17 | $icon-mask: props.def(--o-avatar--icon-mask, url(icon-mask(.5))) !default; | 17 | $icon-mask: props.def(--o-avatar--icon-mask, url(icon-mask(0.5))) !default; |
| 18 | 18 | ||
| 19 | $size--xxxl: props.def(--o-avatar--xxxl--size, props.get(core.$size--1600)) !default; | 19 | $size--xxxl: props.def(--o-avatar--xxxl--size, props.get(core.$size--1600)) !default; |
| 20 | $font-size--xxxl: props.def(--o-avatar--xxxl--font-size, props.get(core.$font-size--800)) !default; | 20 | $font-size--xxxl: props.def(--o-avatar--xxxl--font-size, props.get(core.$font-size--800)) !default; |
| 21 | $indicator-size--xxxl: props.def(--o-avatar--xxxl--indicator-size, props.get(core.$size--400)) !default; | 21 | $indicator-size--xxxl: props.def( |
| 22 | $icon-size--xxxl: props.def(--o-avatar--xxxl--icon-size, 1.9em) !default; | 22 | --o-avatar--xxxl--indicator-size, |
| 23 | $icon-mask--xxxl: props.def(--o-avatar--xxxl--icon-mask, url(icon-mask(.75))) !default; | 23 | props.get(core.$size--400) |
| 24 | ) !default; | ||
| 25 | $icon-size--xxxl: props.def(--o-avatar--xxxl--icon-size, 1.9em) !default; | ||
| 26 | $icon-mask--xxxl: props.def(--o-avatar--xxxl--icon-mask, url(icon-mask(0.75))) !default; | ||
| 24 | 27 | ||
| 25 | $size--xxl: props.def(--o-avatar--xxl--size, props.get(core.$size--1200)) !default; | 28 | $size--xxl: props.def(--o-avatar--xxl--size, props.get(core.$size--1200)) !default; |
| 26 | $font-size--xxl: props.def(--o-avatar--xxl--font-size, props.get(core.$font-size--600)) !default; | 29 | $font-size--xxl: props.def(--o-avatar--xxl--font-size, props.get(core.$font-size--600)) !default; |
| 27 | $indicator-size--xxl: props.def(--o-avatar--xxl--indicator-size, props.get(core.$size--300)) !default; | 30 | $indicator-size--xxl: props.def( |
| 28 | $icon-size--xxl: props.def(--o-avatar--xxl--icon-size, 1.7em) !default; | 31 | --o-avatar--xxl--indicator-size, |
| 29 | $icon-mask--xxl: props.def(--o-avatar--xxl--icon-mask, url(icon-mask(.7))) !default; | 32 | props.get(core.$size--300) |
| 33 | ) !default; | ||
| 34 | $icon-size--xxl: props.def(--o-avatar--xxl--icon-size, 1.7em) !default; | ||
| 35 | $icon-mask--xxl: props.def(--o-avatar--xxl--icon-mask, url(icon-mask(0.7))) !default; | ||
| 30 | 36 | ||
| 31 | $size--xl: props.def(--o-avatar--xl--size, props.get(core.$size--800)) !default; | 37 | $size--xl: props.def(--o-avatar--xl--size, props.get(core.$size--800)) !default; |
| 32 | $font-size--xl: props.def(--o-avatar--xl--font-size, props.get(core.$font-size--300)) !default; | 38 | $font-size--xl: props.def(--o-avatar--xl--font-size, props.get(core.$font-size--300)) !default; |
| 33 | $indicator-size--xl: props.def(--o-avatar--xl--indicator-size, props.get(core.$size--225)) !default; | 39 | $indicator-size--xl: props.def(--o-avatar--xl--indicator-size, props.get(core.$size--225)) !default; |
| 34 | $icon-size--xl: props.def(--o-avatar--xl--icon-size, 1.5em) !default; | 40 | $icon-size--xl: props.def(--o-avatar--xl--icon-size, 1.5em) !default; |
| 35 | $icon-mask--xl: props.def(--o-avatar--xl--icon-mask, url(icon-mask(.6))) !default; | 41 | $icon-mask--xl: props.def(--o-avatar--xl--icon-mask, url(icon-mask(0.6))) !default; |
| 36 | 42 | ||
| 37 | $size--lg: props.def(--o-avatar--lg--size, props.get(core.$size--650)) !default; | 43 | $size--lg: props.def(--o-avatar--lg--size, props.get(core.$size--650)) !default; |
| 38 | $font-size--lg: props.def(--o-avatar--lg--font-size, props.get(core.$font-size--200)) !default; | 44 | $font-size--lg: props.def(--o-avatar--lg--font-size, props.get(core.$font-size--200)) !default; |
| 39 | $indicator-size--lg: props.def(--o-avatar--lg--indicator-size, props.get(core.$size--175)) !default; | 45 | $indicator-size--lg: props.def(--o-avatar--lg--indicator-size, props.get(core.$size--175)) !default; |
| 40 | $icon-size--lg: props.def(--o-avatar--lg--icon-size, 1.25em) !default; | 46 | $icon-size--lg: props.def(--o-avatar--lg--icon-size, 1.25em) !default; |
| 41 | $icon-mask--lg: props.def(--o-avatar--lg--icon-mask, url(icon-mask(.55))) !default; | 47 | $icon-mask--lg: props.def(--o-avatar--lg--icon-mask, url(icon-mask(0.55))) !default; |
| 42 | 48 | ||
| 43 | $size--sm: props.def(--o-avatar--sm--size, props.get(core.$size--375)) !default; | 49 | $size--sm: props.def(--o-avatar--sm--size, props.get(core.$size--375)) !default; |
| 44 | $font-size--sm: props.def(--o-avatar--sm--font-size, props.get(core.$font-size--75)) !default; | 50 | $font-size--sm: props.def(--o-avatar--sm--font-size, props.get(core.$font-size--75)) !default; |
| 45 | $indicator-size--sm: props.def(--o-avatar--sm--indicator-size, props.get(core.$size--125)) !default; | 51 | $indicator-size--sm: props.def(--o-avatar--sm--indicator-size, props.get(core.$size--125)) !default; |
| 46 | $icon-size--sm: props.def(--o-avatar--sm--icon-size, 1.2em) !default; | 52 | $icon-size--sm: props.def(--o-avatar--sm--icon-size, 1.2em) !default; |
| 47 | $icon-mask--sm: props.def(--o-avatar--sm--icon-mask, url(icon-mask(.5))) !default; | 53 | $icon-mask--sm: props.def(--o-avatar--sm--icon-mask, url(icon-mask(0.5))) !default; |
| 48 | 54 | ||
| 49 | $size--xs: props.def(--o-avatar--xs--size, props.get(core.$size--250)) !default; | 55 | $size--xs: props.def(--o-avatar--xs--size, props.get(core.$size--250)) !default; |
| 50 | $font-size--xs: props.def(--o-avatar--xs--font-size, props.get(core.$font-size--50)) !default; | 56 | $font-size--xs: props.def(--o-avatar--xs--font-size, props.get(core.$font-size--50)) !default; |
| 51 | $indicator-size--xs: props.def(--o-avatar--xs--indicator-size, props.get(core.$size--100)) !default; | 57 | $indicator-size--xs: props.def(--o-avatar--xs--indicator-size, props.get(core.$size--100)) !default; |
| 52 | $icon-size--xs: props.def(--o-avatar--xs--icon-size, 1.2em) !default; | 58 | $icon-size--xs: props.def(--o-avatar--xs--icon-size, 1.2em) !default; |
| 53 | $icon-mask--xs: props.def(--o-avatar--xs--icon-mask, url(icon-mask(.5))) !default; | 59 | $icon-mask--xs: props.def(--o-avatar--xs--icon-mask, url(icon-mask(0.5))) !default; |
| 54 | 60 | ||
| 55 | $key-focus--border-width: props.def(--o-avatar--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; | 61 | $key-focus--border-width: props.def( |
| 56 | $key-focus--border-offset: props.def(--o-avatar--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; | 62 | --o-avatar--key-focus--border-width, |
| 57 | $key-focus--outline-width: props.def(--o-avatar--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; | 63 | props.get(core.$key-focus--border-width) |
| 64 | ) !default; | ||
| 65 | $key-focus--border-offset: props.def( | ||
| 66 | --o-avatar--key-focus--border-offset, | ||
| 67 | props.get(core.$key-focus--border-offset) | ||
| 68 | ) !default; | ||
| 69 | $key-focus--outline-width: props.def( | ||
| 70 | --o-avatar--key-focus--outline-width, | ||
| 71 | props.get(core.$key-focus--outline-width) | ||
| 72 | ) !default; | ||
| 58 | 73 | ||
| 59 | $bg-color--h: props.def(--o-avatar--bg-color--h, 354, 'color') !default; | 74 | $bg-color--h: props.def(--o-avatar--bg-color--h, 354, "color") !default; |
| 60 | $bg-color--s: props.def(--o-avatar--bg-color--s, 44%, 'color') !default; | 75 | $bg-color--s: props.def(--o-avatar--bg-color--s, 44%, "color") !default; |
| 61 | $bg-color--l: props.def(--o-avatar--bg-color--l, 45%, 'color') !default; | 76 | $bg-color--l: props.def(--o-avatar--bg-color--l, 45%, "color") !default; |
| 62 | 77 | ||
| 63 | $bg-color-2--h: props.def(--o-avatar--bg-color-2--h, 354, 'color') !default; | 78 | $bg-color-2--h: props.def(--o-avatar--bg-color-2--h, 354, "color") !default; |
| 64 | $bg-color-2--s: props.def(--o-avatar--bg-color-2--s, 44%, 'color') !default; | 79 | $bg-color-2--s: props.def(--o-avatar--bg-color-2--s, 44%, "color") !default; |
| 65 | $bg-color-2--l: props.def(--o-avatar--bg-color-2--l, 45%, 'color') !default; | 80 | $bg-color-2--l: props.def(--o-avatar--bg-color-2--l, 45%, "color") !default; |
| 66 | 81 | ||
| 67 | $bg-angle: props.def(--o-avatar--bg-angle, 180deg) !default; | 82 | $bg-angle: props.def(--o-avatar--bg-angle, 180deg) !default; |
| 68 | 83 | ||
| 69 | $key-focus--border-color: props.def(--o-avatar--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; | 84 | $key-focus--border-color: props.def( |
| 70 | $key-focus--outline-color: props.def(--o-avatar--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; | 85 | --o-avatar--key-focus--border-color, |
| 86 | props.get(core.$theme, --focus, --border), | ||
| 87 | "color" | ||
| 88 | ) !default; | ||
| 89 | $key-focus--outline-color: props.def( | ||
| 90 | --o-avatar--key-focus--outline-color, | ||
| 91 | props.get(core.$theme, --focus, --outline), | ||
| 92 | "color" | ||
| 93 | ) !default; | ||
| 71 | 94 | ||
| 72 | $sizes: ( | 95 | $sizes: ( |
| 73 | 'xs' $size--xs $font-size--xs $indicator-size--xs $icon-size--xs $icon-mask--xs, | 96 | "xs" $size--xs $font-size--xs $indicator-size--xs $icon-size--xs $icon-mask--xs, |
| 74 | 'sm' $size--sm $font-size--sm $indicator-size--sm $icon-size--sm $icon-mask--sm, | 97 | "sm" $size--sm $font-size--sm $indicator-size--sm $icon-size--sm $icon-mask--sm, |
| 75 | 'lg' $size--lg $font-size--lg $indicator-size--lg $icon-size--lg $icon-mask--lg, | 98 | "lg" $size--lg $font-size--lg $indicator-size--lg $icon-size--lg $icon-mask--lg, |
| 76 | 'xl' $size--xl $font-size--xl $indicator-size--xl $icon-size--xl $icon-mask--xl, | 99 | "xl" $size--xl $font-size--xl $indicator-size--xl $icon-size--xl $icon-mask--xl, |
| 77 | 'xxl' $size--xxl $font-size--xxl $indicator-size--xxl $icon-size--xxl $icon-mask--xxl, | 100 | "xxl" $size--xxl $font-size--xxl $indicator-size--xxl $icon-size--xxl $icon-mask--xxl, |
| 78 | 'xxxl' $size--xxxl $font-size--xxxl $indicator-size--xxxl $icon-size--xxxl $icon-mask--xxxl, | 101 | "xxxl" $size--xxxl $font-size--xxxl $indicator-size--xxxl $icon-size--xxxl $icon-mask--xxxl |
| 79 | ) !default; | 102 | ) !default; |
diff --git a/src/objects/_backdrop.scss b/src/objects/_backdrop.scss index 6660abf..1a7d1fa 100644 --- a/src/objects/_backdrop.scss +++ b/src/objects/_backdrop.scss | |||
| @@ -1,23 +1,23 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'backdrop.vars'; | 6 | @forward "backdrop.vars"; |
| 7 | @use 'backdrop.vars' as vars; | 7 | @use "backdrop.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.object('backdrop') { | 12 | @include bem.object("backdrop") { |
| 13 | position: fixed; | 13 | position: fixed; |
| 14 | inset: 0; | 14 | inset: 0; |
| 15 | z-index: props.get(vars.$z-index); | 15 | z-index: props.get(vars.$z-index); |
| 16 | box-sizing: border-box; | 16 | box-sizing: border-box; |
| 17 | display: flex; | 17 | display: flex; |
| 18 | flex-direction: column; | 18 | flex-direction: column; |
| 19 | overflow: auto; | 19 | overflow: auto; |
| 20 | background-color: props.get(vars.$bg-color); | 20 | background-color: props.get(vars.$bg-color); |
| 21 | backdrop-filter: blur(props.get(vars.$blur)); | 21 | backdrop-filter: blur(props.get(vars.$blur)); |
| 22 | } | 22 | } |
| 23 | } | 23 | } |
diff --git a/src/objects/_backdrop.vars.scss b/src/objects/_backdrop.vars.scss index 9206117..78f4742 100644 --- a/src/objects/_backdrop.vars.scss +++ b/src/objects/_backdrop.vars.scss | |||
| @@ -1,6 +1,10 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | 3 | ||
| 4 | $z-index: props.def(--o-backdrop--z-index, 10000) !default; | 4 | $z-index: props.def(--o-backdrop--z-index, 10000) !default; |
| 5 | $blur: props.def(--o-backdrop--blur, 2em) !default; | 5 | $blur: props.def(--o-backdrop--blur, 2em) !default; |
| 6 | $bg-color: props.def(--o-backdrop--bg-color, props.get(core.$transparent-colors, --black, --600), 'color') !default; | 6 | $bg-color: props.def( |
| 7 | --o-backdrop--bg-color, | ||
| 8 | props.get(core.$transparent-colors, --black, --600), | ||
| 9 | "color" | ||
| 10 | ) !default; | ||
diff --git a/src/objects/_button.scss b/src/objects/_button.scss index a3c8187..8adc0f7 100644 --- a/src/objects/_button.scss +++ b/src/objects/_button.scss | |||
| @@ -1,115 +1,119 @@ | |||
| 1 | @use 'sass:list'; | 1 | @use "sass:list"; |
| 2 | @use 'sass:map'; | 2 | @use "sass:map"; |
| 3 | @use 'sass:meta'; | 3 | @use "sass:meta"; |
| 4 | @use 'sass:string'; | 4 | @use "sass:string"; |
| 5 | @use 'pkg:iro-sass/src/bem'; | 5 | @use "pkg:iro-sass/bem"; |
| 6 | @use 'pkg:iro-sass/src/props'; | 6 | @use "pkg:iro-sass/props"; |
| 7 | @use '../props' as *; | 7 | @use "../props" as *; |
| 8 | 8 | ||
| 9 | @forward 'button.vars'; | 9 | @forward "button.vars"; |
| 10 | @use 'button.vars' as vars; | 10 | @use "button.vars" as vars; |
| 11 | 11 | ||
| 12 | @mixin -apply-theme($theme, $key: ()) { | 12 | @mixin -apply-theme($theme, $key: ()) { |
| 13 | color: props.get($theme, list.join($key, --disabled --label-color)...); | 13 | color: props.get($theme, list.join($key, --disabled --label-color)...); |
| 14 | background-color: props.get($theme, list.join($key, --disabled --bg-color)...); | 14 | background-color: props.get($theme, list.join($key, --disabled --bg-color)...); |
| 15 | border-color: props.get($theme, list.join($key, --disabled --border-color)...); | 15 | border-color: props.get($theme, list.join($key, --disabled --border-color)...); |
| 16 | 16 | ||
| 17 | &::after { | 17 | &::after { |
| 18 | outline-color: props.get($theme, list.join($key, --key-focus --border-color)...); | 18 | outline-color: props.get($theme, list.join($key, --key-focus --border-color)...); |
| 19 | box-shadow: | 19 | box-shadow: 0 0 0 |
| 20 | 0 | 20 | calc( |
| 21 | 0 | 21 | props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width) |
| 22 | 0 | 22 | ) |
| 23 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | ||
| 24 | props.get($theme, list.join($key, --key-focus --outline-color)...); | 23 | props.get($theme, list.join($key, --key-focus --outline-color)...); |
| 25 | } | 24 | } |
| 26 | 25 | ||
| 27 | &:link, | 26 | &:link, |
| 28 | &:visited, | 27 | &:visited, |
| 29 | &:enabled { | 28 | &:enabled { |
| 30 | color: props.get($theme, list.join($key, --label-color)...); | 29 | color: props.get($theme, list.join($key, --label-color)...); |
| 31 | background-color: props.get($theme, list.join($key, --bg-color)...); | 30 | background-color: props.get($theme, list.join($key, --bg-color)...); |
| 32 | border-color: props.get($theme, list.join($key, --border-color)...); | 31 | border-color: props.get($theme, list.join($key, --border-color)...); |
| 33 | box-shadow: | 32 | box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) props.get(vars.$shadow-blur) |
| 34 | props.get(vars.$shadow-x) | 33 | props.get(vars.$shadow-grow) props.get($theme, list.join($key, --shadow-color)...); |
| 35 | props.get(vars.$shadow-y) | ||
| 36 | props.get(vars.$shadow-blur) | ||
| 37 | props.get(vars.$shadow-grow) | ||
| 38 | props.get($theme, list.join($key, --shadow-color)...); | ||
| 39 | 34 | ||
| 40 | &:hover, | 35 | &:hover, |
| 41 | &:focus-visible { | 36 | &:focus-visible { |
| 42 | color: props.get($theme, list.join($key, --hover --label-color)...); | 37 | color: props.get($theme, list.join($key, --hover --label-color)...); |
| 43 | background-color: props.get($theme, list.join($key, --hover --bg-color)...); | 38 | background-color: props.get($theme, list.join($key, --hover --bg-color)...); |
| 44 | border-color: props.get($theme, list.join($key, --hover --border-color)...); | 39 | border-color: props.get($theme, list.join($key, --hover --border-color)...); |
| 45 | } | 40 | } |
| 46 | 41 | ||
| 47 | &:active { | 42 | &:active { |
| 48 | color: props.get($theme, list.join($key, --active --label-color)...); | 43 | color: props.get($theme, list.join($key, --active --label-color)...); |
| 49 | background-color: props.get($theme, list.join($key, --active --bg-color)...); | 44 | background-color: props.get($theme, list.join($key, --active --bg-color)...); |
| 50 | border-color: props.get($theme, list.join($key, --active --border-color)...); | 45 | border-color: props.get($theme, list.join($key, --active --border-color)...); |
| 51 | box-shadow: none; | 46 | box-shadow: none; |
| 52 | } | 47 | } |
| 53 | } | 48 | } |
| 54 | 49 | ||
| 55 | @include bem.modifier('badge') { | 50 | @include bem.modifier("badge") { |
| 56 | color: props.get($theme, list.join($key, --badge --label-color)...); | 51 | color: props.get($theme, list.join($key, --badge --label-color)...); |
| 57 | background-color: props.get($theme, list.join($key, --badge --bg-color)...); | 52 | background-color: props.get($theme, list.join($key, --badge --bg-color)...); |
| 58 | border-color: props.get($theme, list.join($key, --badge --border-color)...); | 53 | border-color: props.get($theme, list.join($key, --badge --border-color)...); |
| 59 | box-shadow: none; | 54 | box-shadow: none; |
| 60 | 55 | ||
| 61 | &:link, | 56 | &:link, |
| 62 | &:visited, | 57 | &:visited, |
| 63 | &:enabled { | 58 | &:enabled { |
| 64 | color: props.get($theme, list.join($key, --badge --label-color)...); | 59 | color: props.get($theme, list.join($key, --badge --label-color)...); |
| 65 | background-color: props.get($theme, list.join($key, --badge --bg-color)...); | 60 | background-color: props.get($theme, list.join($key, --badge --bg-color)...); |
| 66 | border-color: props.get($theme, list.join($key, --badge --border-color)...); | 61 | border-color: props.get($theme, list.join($key, --badge --border-color)...); |
| 67 | box-shadow: none; | 62 | box-shadow: none; |
| 68 | 63 | ||
| 69 | &:hover, | 64 | &:hover, |
| 70 | &:focus-visible { | 65 | &:focus-visible { |
| 71 | color: props.get($theme, list.join($key, --badge --hover --label-color)...); | 66 | color: props.get($theme, list.join($key, --badge --hover --label-color)...); |
| 72 | background-color: props.get($theme, list.join($key, --badge --hover --bg-color)...); | 67 | background-color: props.get($theme, list.join($key, --badge --hover --bg-color)...); |
| 73 | border-color: props.get($theme, list.join($key, --badge --hover --border-color)...); | 68 | border-color: props.get($theme, list.join($key, --badge --hover --border-color)...); |
| 74 | } | 69 | } |
| 75 | 70 | ||
| 76 | &:active { | 71 | &:active { |
| 77 | color: props.get($theme, list.join($key, --badge --active --label-color)...); | 72 | color: props.get($theme, list.join($key, --badge --active --label-color)...); |
| 78 | background-color: props.get($theme, list.join($key, --badge --active --bg-color)...); | 73 | background-color: props.get( |
| 79 | border-color: props.get($theme, list.join($key, --badge --active --border-color)...); | 74 | $theme, |
| 75 | list.join($key, --badge --active --bg-color)... | ||
| 76 | ); | ||
| 77 | border-color: props.get( | ||
| 78 | $theme, | ||
| 79 | list.join($key, --badge --active --border-color)... | ||
| 80 | ); | ||
| 80 | } | 81 | } |
| 81 | } | 82 | } |
| 82 | } | 83 | } |
| 83 | 84 | ||
| 84 | @include bem.modifier('quiet') { | 85 | @include bem.modifier("quiet") { |
| 85 | color: props.get($theme, list.join($key, --quiet --disabled --label-color)...); | 86 | color: props.get($theme, list.join($key, --quiet --disabled --label-color)...); |
| 86 | background-color: transparent; | 87 | background-color: transparent; |
| 87 | border-color: transparent; | 88 | border-color: transparent; |
| 88 | 89 | ||
| 89 | &:link, | 90 | &:link, |
| 90 | &:visited, | 91 | &:visited, |
| 91 | &:enabled { | 92 | &:enabled { |
| 92 | color: props.get($theme, list.join($key, --quiet --label-color)...); | 93 | color: props.get($theme, list.join($key, --quiet --label-color)...); |
| 93 | background-color: transparent; | 94 | background-color: transparent; |
| 94 | border-color: transparent; | 95 | border-color: transparent; |
| 95 | box-shadow: none; | 96 | box-shadow: none; |
| 96 | 97 | ||
| 97 | &:hover, | 98 | &:hover, |
| 98 | &:focus-visible { | 99 | &:focus-visible { |
| 99 | color: props.get($theme, list.join($key, --quiet --hover --label-color)...); | 100 | color: props.get($theme, list.join($key, --quiet --hover --label-color)...); |
| 100 | background-color: props.get($theme, list.join($key, --quiet --hover --bg-color)...); | 101 | background-color: props.get($theme, list.join($key, --quiet --hover --bg-color)...); |
| 101 | border-color: transparent; | 102 | border-color: transparent; |
| 102 | } | 103 | } |
| 103 | 104 | ||
| 104 | &:active { | 105 | &:active { |
| 105 | color: props.get($theme, list.join($key, --quiet --active --label-color)...); | 106 | color: props.get($theme, list.join($key, --quiet --active --label-color)...); |
| 106 | background-color: props.get($theme, list.join($key, --quiet --active --bg-color)...); | 107 | background-color: props.get( |
| 107 | border-color: transparent; | 108 | $theme, |
| 109 | list.join($key, --quiet --active --bg-color)... | ||
| 110 | ); | ||
| 111 | border-color: transparent; | ||
| 108 | } | 112 | } |
| 109 | } | 113 | } |
| 110 | } | 114 | } |
| 111 | 115 | ||
| 112 | @include bem.is('highlighted') { | 116 | @include bem.is("highlighted") { |
| 113 | &:link, | 117 | &:link, |
| 114 | &:visited, | 118 | &:visited, |
| 115 | &:enabled { | 119 | &:enabled { |
| @@ -121,32 +125,27 @@ | |||
| 121 | 125 | ||
| 122 | box-shadow: | 126 | box-shadow: |
| 123 | 0 0 0 1px props.get($theme, list.join($key, --highlighted --border-color)...), | 127 | 0 0 0 1px props.get($theme, list.join($key, --highlighted --border-color)...), |
| 124 | props.get(vars.$shadow-x) | 128 | props.get(vars.$shadow-x) props.get(vars.$shadow-y) props.get(vars.$shadow-blur) |
| 125 | props.get(vars.$shadow-y) | 129 | props.get(vars.$shadow-grow) |
| 126 | props.get(vars.$shadow-blur) | 130 | props.get($theme, list.join($key, --highlighted --shadow-color)...); |
| 127 | props.get(vars.$shadow-grow) | ||
| 128 | props.get($theme, list.join($key, --highlighted --shadow-color)...); | ||
| 129 | 131 | ||
| 130 | &:focus-visible { | 132 | &:focus-visible { |
| 131 | box-shadow: | 133 | box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) |
| 132 | props.get(vars.$shadow-x) | 134 | props.get(vars.$shadow-blur) props.get(vars.$shadow-grow) |
| 133 | props.get(vars.$shadow-y) | ||
| 134 | props.get(vars.$shadow-blur) | ||
| 135 | props.get(vars.$shadow-grow) | ||
| 136 | props.get($theme, list.join($key, --shadow-color)...); | 135 | props.get($theme, list.join($key, --shadow-color)...); |
| 137 | } | 136 | } |
| 138 | } | 137 | } |
| 139 | } | 138 | } |
| 140 | 139 | ||
| 141 | @include bem.is('selected') { | 140 | @include bem.is("selected") { |
| 142 | color: props.get($theme, list.join($key, --selected --disabled --label-color)...); | 141 | color: props.get($theme, list.join($key, --selected --disabled --label-color)...); |
| 143 | background-color: props.get($theme, list.join($key, --selected --disabled --bg-color)...); | 142 | background-color: props.get($theme, list.join($key, --selected --disabled --bg-color)...); |
| 144 | border-color: props.get($theme, list.join($key, --selected --disabled --border-color)...); | 143 | border-color: props.get($theme, list.join($key, --selected --disabled --border-color)...); |
| 145 | 144 | ||
| 146 | @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'badge') { | 145 | @include bem.multi("&:link, &:visited, &:enabled", "modifier" "badge") { |
| 147 | color: props.get($theme, list.join($key, --selected --label-color)...); | 146 | color: props.get($theme, list.join($key, --selected --label-color)...); |
| 148 | background-color: props.get($theme, list.join($key, --selected --bg-color)...); | 147 | background-color: props.get($theme, list.join($key, --selected --bg-color)...); |
| 149 | border-color: props.get($theme, list.join($key, --selected --border-color)...); | 148 | border-color: props.get($theme, list.join($key, --selected --border-color)...); |
| 150 | } | 149 | } |
| 151 | 150 | ||
| 152 | &:link, | 151 | &:link, |
| @@ -154,47 +153,67 @@ | |||
| 154 | &:enabled { | 153 | &:enabled { |
| 155 | &:hover, | 154 | &:hover, |
| 156 | &:focus-visible { | 155 | &:focus-visible { |
| 157 | color: props.get($theme, list.join($key, --selected --hover --label-color)...); | 156 | color: props.get($theme, list.join($key, --selected --hover --label-color)...); |
| 158 | background-color: props.get($theme, list.join($key, --selected --hover --bg-color)...); | 157 | background-color: props.get( |
| 159 | border-color: props.get($theme, list.join($key, --selected --hover --border-color)...); | 158 | $theme, |
| 159 | list.join($key, --selected --hover --bg-color)... | ||
| 160 | ); | ||
| 161 | border-color: props.get( | ||
| 162 | $theme, | ||
| 163 | list.join($key, --selected --hover --border-color)... | ||
| 164 | ); | ||
| 160 | } | 165 | } |
| 161 | 166 | ||
| 162 | &:active { | 167 | &:active { |
| 163 | color: props.get($theme, list.join($key, --selected --active --label-color)...); | 168 | color: props.get($theme, list.join($key, --selected --active --label-color)...); |
| 164 | background-color: props.get($theme, list.join($key, --selected --active --bg-color)...); | 169 | background-color: props.get( |
| 165 | border-color: props.get($theme, list.join($key, --selected --active --border-color)...); | 170 | $theme, |
| 171 | list.join($key, --selected --active --bg-color)... | ||
| 172 | ); | ||
| 173 | border-color: props.get( | ||
| 174 | $theme, | ||
| 175 | list.join($key, --selected --active --border-color)... | ||
| 176 | ); | ||
| 166 | } | 177 | } |
| 167 | } | 178 | } |
| 168 | } | 179 | } |
| 169 | } | 180 | } |
| 170 | 181 | ||
| 171 | @mixin styles { | 182 | @mixin styles { |
| 172 | @include materialize-at-root(meta.module-variables('vars')); | 183 | @include materialize-at-root(meta.module-variables("vars")); |
| 173 | 184 | ||
| 174 | @include bem.object('button') { | 185 | @include bem.object("button") { |
| 175 | position: relative; | 186 | position: relative; |
| 176 | display: inline-block; | 187 | display: inline-block; |
| 177 | padding-block: props.get(vars.$pad-b); | 188 | padding-block: props.get(vars.$pad-b); |
| 178 | padding-inline: props.get(vars.$pad-i); | 189 | padding-inline: props.get(vars.$pad-i); |
| 179 | text-overflow: ellipsis; | 190 | text-overflow: ellipsis; |
| 180 | font-size: props.get(vars.$font-size); | 191 | font-size: props.get(vars.$font-size); |
| 181 | line-height: props.get(vars.$line-height); | 192 | line-height: props.get(vars.$line-height); |
| 182 | text-align: center; | 193 | text-align: center; |
| 183 | white-space: nowrap; | 194 | white-space: nowrap; |
| 184 | text-decoration: none; | 195 | text-decoration: none; |
| 185 | border: props.get(vars.$border-width) solid transparent; | 196 | border: props.get(vars.$border-width) solid transparent; |
| 186 | border-radius: props.get(vars.$rounding); | 197 | border-radius: props.get(vars.$rounding); |
| 187 | transition: color .1s, background-color .1s, border-color .1s, box-shadow .1s; | 198 | transition: |
| 199 | color 0.1s, | ||
| 200 | background-color 0.1s, | ||
| 201 | border-color 0.1s, | ||
| 202 | box-shadow 0.1s; | ||
| 188 | 203 | ||
| 189 | &::after { | 204 | &::after { |
| 190 | position: absolute; | 205 | position: absolute; |
| 191 | inset: calc(-1 * props.get(vars.$border-width) - props.get(vars.$key-focus--border-offset)); | 206 | inset: calc( |
| 192 | z-index: 1; | 207 | -1 * props.get(vars.$border-width) - props.get(vars.$key-focus--border-offset) |
| 193 | display: none; | 208 | ); |
| 209 | z-index: 1; | ||
| 210 | display: none; | ||
| 194 | pointer-events: none; | 211 | pointer-events: none; |
| 195 | outline: transparent solid props.get(vars.$key-focus--border-width); | 212 | outline: transparent solid props.get(vars.$key-focus--border-width); |
| 196 | content: ''; | 213 | content: ""; |
| 197 | border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)); | 214 | border-radius: calc( |
| 215 | props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset) | ||
| 216 | ); | ||
| 198 | } | 217 | } |
| 199 | 218 | ||
| 200 | &:link, | 219 | &:link, |
| @@ -209,7 +228,7 @@ | |||
| 209 | } | 228 | } |
| 210 | } | 229 | } |
| 211 | 230 | ||
| 212 | @include bem.elem('label') { | 231 | @include bem.elem("label") { |
| 213 | display: inline-block; | 232 | display: inline-block; |
| 214 | margin-inline: props.get(vars.$pad-i-label); | 233 | margin-inline: props.get(vars.$pad-i-label); |
| 215 | } | 234 | } |
| @@ -222,79 +241,91 @@ | |||
| 222 | } | 241 | } |
| 223 | } | 242 | } |
| 224 | 243 | ||
| 225 | @include bem.modifier('pill') { | 244 | @include bem.modifier("pill") { |
| 226 | padding-inline: props.get(vars.$pad-i-pill); | 245 | padding-inline: props.get(vars.$pad-i-pill); |
| 227 | border-radius: 100em; | 246 | border-radius: 100em; |
| 228 | 247 | ||
| 229 | &::after { | 248 | &::after { |
| 230 | border-radius: 100em; | 249 | border-radius: 100em; |
| 231 | } | 250 | } |
| 232 | } | 251 | } |
| 233 | 252 | ||
| 234 | @include bem.modifier('icon') { | 253 | @include bem.modifier("icon") { |
| 235 | inline-size: calc(1em * props.get(vars.$line-height) + 2 * props.get(vars.$pad-b)); | 254 | inline-size: calc(1em * props.get(vars.$line-height) + 2 * props.get(vars.$pad-b)); |
| 236 | padding-inline: 0; | 255 | padding-inline: 0; |
| 237 | } | 256 | } |
| 238 | 257 | ||
| 239 | @include bem.modifier('wide') { | 258 | @include bem.modifier("wide") { |
| 240 | @include bem.elem('label') { | 259 | @include bem.elem("label") { |
| 241 | margin-inline: props.get(vars.$pad-i-wide); | 260 | margin-inline: props.get(vars.$pad-i-wide); |
| 242 | } | 261 | } |
| 243 | } | 262 | } |
| 244 | 263 | ||
| 245 | @include bem.modifier('justify') { | 264 | @include bem.modifier("justify") { |
| 246 | text-align: justify; | 265 | text-align: justify; |
| 247 | text-align-last: justify; | 266 | text-align-last: justify; |
| 248 | } | 267 | } |
| 249 | 268 | ||
| 250 | @each $mod, $pad-i, $pad-i-label, $pad-i-wide, $pad-i-pill, $pad-b, $font-size in vars.$fixed-sizes { | 269 | @each $mod, $pad-i, $pad-i-label, $pad-i-wide, $pad-i-pill, $pad-b, |
| 270 | $font-size in vars.$fixed-sizes | ||
| 271 | { | ||
| 251 | @include bem.modifier($mod) { | 272 | @include bem.modifier($mod) { |
| 252 | padding-block: props.get($pad-b); | 273 | padding-block: props.get($pad-b); |
| 253 | padding-inline: props.get($pad-i); | 274 | padding-inline: props.get($pad-i); |
| 254 | font-size: props.get($font-size); | 275 | font-size: props.get($font-size); |
| 255 | 276 | ||
| 256 | @include bem.elem('label') { | 277 | @include bem.elem("label") { |
| 257 | margin-inline: props.get($pad-i-label); | 278 | margin-inline: props.get($pad-i-label); |
| 258 | } | 279 | } |
| 259 | 280 | ||
| 260 | @include bem.modifier('pill') { | 281 | @include bem.modifier("pill") { |
| 261 | padding-inline: props.get($pad-i-pill); | 282 | padding-inline: props.get($pad-i-pill); |
| 262 | } | 283 | } |
| 263 | 284 | ||
| 264 | @include bem.modifier('icon') { | 285 | @include bem.modifier("icon") { |
| 265 | inline-size: calc(1em * props.get(vars.$line-height) + 2 * props.get($pad-b)); | 286 | inline-size: calc(1em * props.get(vars.$line-height) + 2 * props.get($pad-b)); |
| 266 | padding-inline: 0; | 287 | padding-inline: 0; |
| 267 | } | 288 | } |
| 268 | 289 | ||
| 269 | @include bem.modifier('wide') { | 290 | @include bem.modifier("wide") { |
| 270 | @include bem.elem('label') { | 291 | @include bem.elem("label") { |
| 271 | margin-inline: props.get($pad-i-wide); | 292 | margin-inline: props.get($pad-i-wide); |
| 272 | } | 293 | } |
| 273 | } | 294 | } |
| 274 | } | 295 | } |
| 275 | } | 296 | } |
| 276 | 297 | ||
| 277 | @include bem.modifier('align-block') { | 298 | @include bem.modifier("align-block") { |
| 278 | margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$border-width)); | 299 | margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$border-width)); |
| 279 | 300 | ||
| 280 | @include bem.modifier('pill') { | 301 | @include bem.modifier("pill") { |
| 281 | margin-inline: calc(-1 * props.get(vars.$pad-i-pill) - props.get(vars.$border-width)); | 302 | margin-inline: calc( |
| 303 | -1 * props.get(vars.$pad-i-pill) - props.get(vars.$border-width) | ||
| 304 | ); | ||
| 282 | } | 305 | } |
| 283 | 306 | ||
| 284 | @include bem.modifier('icon') { | 307 | @include bem.modifier("icon") { |
| 285 | margin-inline: calc(-1 * props.get(vars.$pad-b) - props.get(vars.$border-width) - .5em * (props.get(vars.$line-height) - 1)); | 308 | margin-inline: calc( |
| 309 | -1 * props.get(vars.$pad-b) - props.get(vars.$border-width) - 0.5em * | ||
| 310 | (props.get(vars.$line-height) - 1) | ||
| 311 | ); | ||
| 286 | } | 312 | } |
| 287 | 313 | ||
| 288 | @each $mod, $pad-i, $pad-i-label, $pad-i-pill, $pad-b, $font-size in vars.$fixed-sizes { | 314 | @each $mod, $pad-i, $pad-i-label, $pad-i-pill, $pad-b, $font-size in vars.$fixed-sizes { |
| 289 | @include bem.modifier($mod) { | 315 | @include bem.modifier($mod) { |
| 290 | margin-inline: calc(-1 * props.get($pad-i) - props.get(vars.$border-width)); | 316 | margin-inline: calc(-1 * props.get($pad-i) - props.get(vars.$border-width)); |
| 291 | 317 | ||
| 292 | @include bem.modifier('pill') { | 318 | @include bem.modifier("pill") { |
| 293 | margin-inline: calc(-1 * props.get($pad-i-pill) - props.get(vars.$border-width)); | 319 | margin-inline: calc( |
| 320 | -1 * props.get($pad-i-pill) - props.get(vars.$border-width) | ||
| 321 | ); | ||
| 294 | } | 322 | } |
| 295 | 323 | ||
| 296 | @include bem.modifier('icon') { | 324 | @include bem.modifier("icon") { |
| 297 | margin-inline: calc(-1 * props.get($pad-b) - props.get(vars.$border-width) - .5em * (props.get(vars.$line-height) - 1)); | 325 | margin-inline: calc( |
| 326 | -1 * props.get($pad-b) - props.get(vars.$border-width) - 0.5em * | ||
| 327 | (props.get(vars.$line-height) - 1) | ||
| 328 | ); | ||
| 298 | } | 329 | } |
| 299 | } | 330 | } |
| 300 | } | 331 | } |
diff --git a/src/objects/_button.vars.scss b/src/objects/_button.vars.scss index 3f835ae..a137d6d 100644 --- a/src/objects/_button.vars.scss +++ b/src/objects/_button.vars.scss | |||
| @@ -1,386 +1,456 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:string'; | 2 | @use "sass:string"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../core.vars' as core; | 4 | @use "../core.vars" as core; |
| 5 | 5 | ||
| 6 | $line-height: props.def(--o-button--line-height, 1.4) !default; | 6 | $line-height: props.def(--o-button--line-height, 1.4) !default; |
| 7 | $border-width: props.def(--o-button--border-width, props.get(core.$border-width--thin)) !default; | 7 | $border-width: props.def(--o-button--border-width, props.get(core.$border-width--thin)) !default; |
| 8 | $rounding: props.def(--o-button--rounding, props.get(core.$rounding--sm)) !default; | 8 | $rounding: props.def(--o-button--rounding, props.get(core.$rounding--sm)) !default; |
| 9 | 9 | ||
| 10 | $pad-i--xs: props.def(--o-button--xs--pad-i, props.get(core.$size--75)) !default; | 10 | $pad-i--xs: props.def(--o-button--xs--pad-i, props.get(core.$size--75)) !default; |
| 11 | $pad-i-label--xs: props.def(--o-button--xs--pad-i-label, props.get(core.$size--40)) !default; | 11 | $pad-i-label--xs: props.def(--o-button--xs--pad-i-label, props.get(core.$size--40)) !default; |
| 12 | $pad-i-wide--xs: props.def(--o-button--xs--pad-i-wide, props.get(core.$size--150)) !default; | 12 | $pad-i-wide--xs: props.def(--o-button--xs--pad-i-wide, props.get(core.$size--150)) !default; |
| 13 | $pad-i-pill--xs: props.def(--o-button--xs--pad-i-pill, props.get(core.$size--115)) !default; | 13 | $pad-i-pill--xs: props.def(--o-button--xs--pad-i-pill, props.get(core.$size--115)) !default; |
| 14 | $pad-b--xs: props.def(--o-button--xs--pad-b, props.get(core.$size--40)) !default; | 14 | $pad-b--xs: props.def(--o-button--xs--pad-b, props.get(core.$size--40)) !default; |
| 15 | $font-size--xs: props.def(--o-button--xs--font-size, props.get(core.$font-size--75)) !default; | 15 | $font-size--xs: props.def(--o-button--xs--font-size, props.get(core.$font-size--75)) !default; |
| 16 | 16 | ||
| 17 | $pad-i--sm: props.def(--o-button--sm--pad-i, props.get(core.$size--85)) !default; | 17 | $pad-i--sm: props.def(--o-button--sm--pad-i, props.get(core.$size--85)) !default; |
| 18 | $pad-i-label--sm: props.def(--o-button--sm--pad-i-label, props.get(core.$size--50)) !default; | 18 | $pad-i-label--sm: props.def(--o-button--sm--pad-i-label, props.get(core.$size--50)) !default; |
| 19 | $pad-i-wide--sm: props.def(--o-button--sm--pad-i-wide, props.get(core.$size--175)) !default; | 19 | $pad-i-wide--sm: props.def(--o-button--sm--pad-i-wide, props.get(core.$size--175)) !default; |
| 20 | $pad-i-pill--sm: props.def(--o-button--sm--pad-i-pill, props.get(core.$size--125)) !default; | 20 | $pad-i-pill--sm: props.def(--o-button--sm--pad-i-pill, props.get(core.$size--125)) !default; |
| 21 | $pad-b--sm: props.def(--o-button--sm--pad-b, props.get(core.$size--50)) !default; | 21 | $pad-b--sm: props.def(--o-button--sm--pad-b, props.get(core.$size--50)) !default; |
| 22 | $font-size--sm: props.def(--o-button--sm--font-size, props.get(core.$font-size--100)) !default; | 22 | $font-size--sm: props.def(--o-button--sm--font-size, props.get(core.$font-size--100)) !default; |
| 23 | 23 | ||
| 24 | $pad-i: props.def(--o-button--pad-i, props.get(core.$size--115)) !default; | 24 | $pad-i: props.def(--o-button--pad-i, props.get(core.$size--115)) !default; |
| 25 | $pad-i-label: props.def(--o-button--pad-i-label, props.get(core.$size--50)) !default; | 25 | $pad-i-label: props.def(--o-button--pad-i-label, props.get(core.$size--50)) !default; |
| 26 | $pad-i-wide: props.def(--o-button--pad-i-wide, props.get(core.$size--200)) !default; | 26 | $pad-i-wide: props.def(--o-button--pad-i-wide, props.get(core.$size--200)) !default; |
| 27 | $pad-i-pill: props.def(--o-button--pad-i-pill, props.get(core.$size--160)) !default; | 27 | $pad-i-pill: props.def(--o-button--pad-i-pill, props.get(core.$size--160)) !default; |
| 28 | $pad-b: props.def(--o-button--pad-b, props.get(core.$size--85)) !default; | 28 | $pad-b: props.def(--o-button--pad-b, props.get(core.$size--85)) !default; |
| 29 | $font-size: props.def(--o-button--font-size, props.get(core.$font-size--100)) !default; | 29 | $font-size: props.def(--o-button--font-size, props.get(core.$font-size--100)) !default; |
| 30 | 30 | ||
| 31 | $pad-i--lg: props.def(--o-button--lg--pad-i, props.get(core.$size--160)) !default; | 31 | $pad-i--lg: props.def(--o-button--lg--pad-i, props.get(core.$size--160)) !default; |
| 32 | $pad-i-label--lg: props.def(--o-button--lg--pad-i-label, props.get(core.$size--65)) !default; | 32 | $pad-i-label--lg: props.def(--o-button--lg--pad-i-label, props.get(core.$size--65)) !default; |
| 33 | $pad-i-wide--lg: props.def(--o-button--lg--pad-i-wide, props.get(core.$size--300)) !default; | 33 | $pad-i-wide--lg: props.def(--o-button--lg--pad-i-wide, props.get(core.$size--300)) !default; |
| 34 | $pad-i-pill--lg: props.def(--o-button--lg--pad-i-pill, props.get(core.$size--175)) !default; | 34 | $pad-i-pill--lg: props.def(--o-button--lg--pad-i-pill, props.get(core.$size--175)) !default; |
| 35 | $pad-b--lg: props.def(--o-button--lg--pad-b, props.get(core.$size--115)) !default; | 35 | $pad-b--lg: props.def(--o-button--lg--pad-b, props.get(core.$size--115)) !default; |
| 36 | $font-size--lg: props.def(--o-button--lg--font-size, props.get(core.$font-size--150)) !default; | 36 | $font-size--lg: props.def(--o-button--lg--font-size, props.get(core.$font-size--150)) !default; |
| 37 | 37 | ||
| 38 | $pad-i--xl: props.def(--o-button--xl--pad-i, props.get(core.$size--200)) !default; | 38 | $pad-i--xl: props.def(--o-button--xl--pad-i, props.get(core.$size--200)) !default; |
| 39 | $pad-i-label--xl: props.def(--o-button--xl--pad-i-label, props.get(core.$size--85)) !default; | 39 | $pad-i-label--xl: props.def(--o-button--xl--pad-i-label, props.get(core.$size--85)) !default; |
| 40 | $pad-i-wide--xl: props.def(--o-button--xl--pad-i-wide, props.get(core.$size--400)) !default; | 40 | $pad-i-wide--xl: props.def(--o-button--xl--pad-i-wide, props.get(core.$size--400)) !default; |
| 41 | $pad-i-pill--xl: props.def(--o-button--xl--pad-i-pill, props.get(core.$size--225)) !default; | 41 | $pad-i-pill--xl: props.def(--o-button--xl--pad-i-pill, props.get(core.$size--225)) !default; |
| 42 | $pad-b--xl: props.def(--o-button--xl--pad-b, props.get(core.$size--150)) !default; | 42 | $pad-b--xl: props.def(--o-button--xl--pad-b, props.get(core.$size--150)) !default; |
| 43 | $font-size--xl: props.def(--o-button--xl--font-size, props.get(core.$font-size--200)) !default; | 43 | $font-size--xl: props.def(--o-button--xl--font-size, props.get(core.$font-size--200)) !default; |
| 44 | 44 | ||
| 45 | $shadow-x: props.def(--o-button--shadow-x, props.get(core.$shadow--l1--x)) !default; | 45 | $shadow-x: props.def(--o-button--shadow-x, props.get(core.$shadow--l1--x)) !default; |
| 46 | $shadow-y: props.def(--o-button--shadow-y, props.get(core.$shadow--l1--y)) !default; | 46 | $shadow-y: props.def(--o-button--shadow-y, props.get(core.$shadow--l1--y)) !default; |
| 47 | $shadow-blur: props.def(--o-button--shadow-blur, props.get(core.$shadow--l1--blur)) !default; | 47 | $shadow-blur: props.def(--o-button--shadow-blur, props.get(core.$shadow--l1--blur)) !default; |
| 48 | $shadow-grow: props.def(--o-button--shadow-grow, props.get(core.$shadow--l1--grow)) !default; | 48 | $shadow-grow: props.def(--o-button--shadow-grow, props.get(core.$shadow--l1--grow)) !default; |
| 49 | 49 | ||
| 50 | $key-focus--border-width: props.def(--o-button--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; | 50 | $key-focus--border-width: props.def( |
| 51 | $key-focus--border-offset: props.def(--o-button--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; | 51 | --o-button--key-focus--border-width, |
| 52 | $key-focus--outline-width: props.def(--o-button--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; | 52 | props.get(core.$key-focus--border-width) |
| 53 | ) !default; | ||
| 54 | $key-focus--border-offset: props.def( | ||
| 55 | --o-button--key-focus--border-offset, | ||
| 56 | props.get(core.$key-focus--border-offset) | ||
| 57 | ) !default; | ||
| 58 | $key-focus--outline-width: props.def( | ||
| 59 | --o-button--key-focus--outline-width, | ||
| 60 | props.get(core.$key-focus--outline-width) | ||
| 61 | ) !default; | ||
| 53 | 62 | ||
| 54 | $fixed-sizes: ( | 63 | $fixed-sizes: ( |
| 55 | 'xs' $pad-i--xs $pad-i-label--xs $pad-i-wide--xs $pad-i-pill--xs $pad-b--xs $font-size--xs, | 64 | "xs" $pad-i--xs $pad-i-label--xs $pad-i-wide--xs $pad-i-pill--xs $pad-b--xs $font-size--xs, |
| 56 | 'sm' $pad-i--sm $pad-i-label--sm $pad-i-wide--sm $pad-i-pill--sm $pad-b--sm $font-size--sm, | 65 | "sm" $pad-i--sm $pad-i-label--sm $pad-i-wide--sm $pad-i-pill--sm $pad-b--sm $font-size--sm, |
| 57 | 'lg' $pad-i--lg $pad-i-label--lg $pad-i-wide--lg $pad-i-pill--lg $pad-b--lg $font-size--lg, | 66 | "lg" $pad-i--lg $pad-i-label--lg $pad-i-wide--lg $pad-i-pill--lg $pad-b--lg $font-size--lg, |
| 58 | 'xl' $pad-i--xl $pad-i-label--xl $pad-i-wide--xl $pad-i-pill--xl $pad-b--xl $font-size--xl, | 67 | "xl" $pad-i--xl $pad-i-label--xl $pad-i-wide--xl $pad-i-pill--xl $pad-b--xl $font-size--xl |
| 59 | ) !default; | 68 | ) !default; |
| 60 | 69 | ||
| 61 | $themes: props.def(--o-button, (), 'color'); | 70 | $themes: props.def(--o-button, (), "color"); |
| 62 | 71 | ||
| 63 | $default-theme-override: () !default; | 72 | $default-theme-override: () !default; |
| 64 | $default-theme: map.deep-merge(( | 73 | $default-theme: map.deep-merge( |
| 65 | --bg-color: props.get(core.$theme, --bg-l2), | 74 | ( |
| 66 | --label-color: props.get(core.$theme, --text), | 75 | --bg-color: props.get(core.$theme, --bg-l2), |
| 67 | --border-color: props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border-strong), | 76 | --label-color: props.get(core.$theme, --text), |
| 68 | --shadow-color: props.get(core.$theme, --shadow), | 77 | --border-color: props.get(core.$theme, --box, --border) |
| 69 | 78 | props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border-strong), | |
| 70 | --hover: ( | 79 | --shadow-color: props.get(core.$theme, --shadow), |
| 71 | --bg-color: props.get(core.$theme, --bg-l1), | ||
| 72 | --label-color: props.get(core.$theme, --heading), | ||
| 73 | --border-color: props.get(core.$theme, --border), | ||
| 74 | ), | ||
| 75 | |||
| 76 | --active: ( | ||
| 77 | --bg-color: props.get(core.$theme, --border-mute), | ||
| 78 | --label-color: props.get(core.$theme, --heading), | ||
| 79 | --border-color: props.get(core.$theme, --border-strong), | ||
| 80 | ), | ||
| 81 | |||
| 82 | --disabled: ( | ||
| 83 | --bg-color: transparent, | ||
| 84 | --label-color: props.get(core.$theme, --border-strong), | ||
| 85 | --border-color: props.get(core.$theme, --text-disabled), | ||
| 86 | ), | ||
| 87 | |||
| 88 | --key-focus: ( | ||
| 89 | --border-color: props.get(core.$theme, --focus, --border), | ||
| 90 | --outline-color: props.get(core.$theme, --focus, --outline), | ||
| 91 | ), | ||
| 92 | |||
| 93 | --highlighted: ( | ||
| 94 | --border-color: props.get(core.$theme, --focus, --border), | ||
| 95 | --shadow-color: props.get(core.$theme, --focus, --outline), | ||
| 96 | ), | ||
| 97 | |||
| 98 | --selected: ( | ||
| 99 | --bg-color: props.get(core.$theme, --heading), | ||
| 100 | --label-color: props.get(core.$theme, --base, --50), | ||
| 101 | --border-color: props.get(core.$theme, --heading), | ||
| 102 | |||
| 103 | --hover: ( | 80 | --hover: ( |
| 104 | --bg-color: props.get(core.$theme, --text), | 81 | --bg-color: props.get(core.$theme, --bg-l1), |
| 105 | --label-color: props.get(core.$theme, --base, --50), | 82 | --label-color: props.get(core.$theme, --heading), |
| 106 | --border-color: props.get(core.$theme, --text), | 83 | --border-color: props.get(core.$theme, --border), |
| 107 | ), | 84 | ), |
| 108 | 85 | ||
| 109 | --active: ( | 86 | --active: ( |
| 110 | --bg-color: props.get(core.$theme, --text-mute), | 87 | --bg-color: props.get(core.$theme, --border-mute), |
| 111 | --label-color: props.get(core.$theme, --base, --50), | 88 | --label-color: props.get(core.$theme, --heading), |
| 112 | --border-color: props.get(core.$theme, --text-mute), | 89 | --border-color: props.get(core.$theme, --border-strong), |
| 113 | ), | 90 | ), |
| 114 | 91 | ||
| 115 | --disabled: ( | 92 | --disabled: ( |
| 116 | --bg-color: props.get(core.$theme, --border-mute), | 93 | --bg-color: transparent, |
| 117 | --label-color: props.get(core.$theme, --border-strong), | 94 | --label-color: props.get(core.$theme, --border-strong), |
| 118 | --border-color: props.get(core.$theme, --border-mute), | 95 | --border-color: props.get(core.$theme, --text-disabled), |
| 119 | ), | 96 | ), |
| 120 | ), | ||
| 121 | 97 | ||
| 122 | --badge: ( | 98 | --key-focus: ( |
| 123 | --bg-color: props.get(core.$theme, --border-mute), | 99 | --border-color: props.get(core.$theme, --focus, --border), |
| 124 | --label-color: props.get(core.$theme, --heading), | 100 | --outline-color: props.get(core.$theme, --focus, --outline), |
| 125 | --border-color: props.get(core.$theme, --border-mute), | ||
| 126 | |||
| 127 | --hover: ( | ||
| 128 | --bg-color: props.get(core.$theme, --border), | ||
| 129 | --label-color: props.get(core.$theme, --heading), | ||
| 130 | --border-color: props.get(core.$theme, --border), | ||
| 131 | ), | 101 | ), |
| 132 | 102 | ||
| 133 | --active: ( | 103 | --highlighted: ( |
| 134 | --bg-color: props.get(core.$theme, --border-strong), | 104 | --border-color: props.get(core.$theme, --focus, --border), |
| 135 | --label-color: props.get(core.$theme, --heading), | 105 | --shadow-color: props.get(core.$theme, --focus, --outline), |
| 136 | --border-color: props.get(core.$theme, --border-strong), | ||
| 137 | ), | 106 | ), |
| 138 | ), | ||
| 139 | 107 | ||
| 140 | --quiet: ( | 108 | --selected: ( |
| 141 | --label-color: props.get(core.$theme, --text), | 109 | --bg-color: props.get(core.$theme, --heading), |
| 110 | --label-color: props.get(core.$theme, --base, --50), | ||
| 111 | --border-color: props.get(core.$theme, --heading), | ||
| 112 | --hover: ( | ||
| 113 | --bg-color: props.get(core.$theme, --text), | ||
| 114 | --label-color: props.get(core.$theme, --base, --50), | ||
| 115 | --border-color: props.get(core.$theme, --text), | ||
| 116 | ), | ||
| 142 | 117 | ||
| 143 | --hover: ( | 118 | --active: ( |
| 144 | --bg-color: props.get(core.$theme, --border-mute), | 119 | --bg-color: props.get(core.$theme, --text-mute), |
| 145 | --label-color: props.get(core.$theme, --heading), | 120 | --label-color: props.get(core.$theme, --base, --50), |
| 121 | --border-color: props.get(core.$theme, --text-mute), | ||
| 122 | ), | ||
| 123 | |||
| 124 | --disabled: ( | ||
| 125 | --bg-color: props.get(core.$theme, --border-mute), | ||
| 126 | --label-color: props.get(core.$theme, --border-strong), | ||
| 127 | --border-color: props.get(core.$theme, --border-mute), | ||
| 128 | ), | ||
| 146 | ), | 129 | ), |
| 147 | 130 | ||
| 148 | --active: ( | 131 | --badge: ( |
| 149 | --bg-color: props.get(core.$theme, --border), | 132 | --bg-color: props.get(core.$theme, --border-mute), |
| 150 | --label-color: props.get(core.$theme, --heading), | 133 | --label-color: props.get(core.$theme, --heading), |
| 134 | --border-color: props.get(core.$theme, --border-mute), | ||
| 135 | --hover: ( | ||
| 136 | --bg-color: props.get(core.$theme, --border), | ||
| 137 | --label-color: props.get(core.$theme, --heading), | ||
| 138 | --border-color: props.get(core.$theme, --border), | ||
| 139 | ), | ||
| 140 | |||
| 141 | --active: ( | ||
| 142 | --bg-color: props.get(core.$theme, --border-strong), | ||
| 143 | --label-color: props.get(core.$theme, --heading), | ||
| 144 | --border-color: props.get(core.$theme, --border-strong), | ||
| 145 | ), | ||
| 151 | ), | 146 | ), |
| 152 | 147 | ||
| 153 | --disabled: ( | 148 | --quiet: ( |
| 154 | --label-color: props.get(core.$theme, --border-strong), | 149 | --label-color: props.get(core.$theme, --text), |
| 150 | --hover: ( | ||
| 151 | --bg-color: props.get(core.$theme, --border-mute), | ||
| 152 | --label-color: props.get(core.$theme, --heading), | ||
| 153 | ), | ||
| 154 | |||
| 155 | --active: ( | ||
| 156 | --bg-color: props.get(core.$theme, --border), | ||
| 157 | --label-color: props.get(core.$theme, --heading), | ||
| 158 | ), | ||
| 159 | |||
| 160 | --disabled: ( | ||
| 161 | --label-color: props.get(core.$theme, --border-strong), | ||
| 162 | ), | ||
| 155 | ), | 163 | ), |
| 156 | ), | 164 | ), |
| 157 | ), $default-theme-override) !default; | 165 | $default-theme-override |
| 158 | $default-theme: props.def(--o-button, $default-theme, 'color'); | 166 | ) !default; |
| 167 | $default-theme: props.def(--o-button, $default-theme, "color"); | ||
| 159 | 168 | ||
| 160 | $default-theme-dark-override: () !default; | 169 | $default-theme-dark-override: () !default; |
| 161 | $default-theme-dark: map.deep-merge(( | 170 | $default-theme-dark: map.deep-merge( |
| 162 | --bg-color: props.get(core.$theme, --border-mute), | 171 | ( |
| 163 | --border-color: props.get(core.$theme, --border-mute), | 172 | --bg-color: props.get(core.$theme, --border-mute), |
| 164 | 173 | --border-color: props.get(core.$theme, --border-mute), | |
| 165 | --hover: ( | 174 | --hover: ( |
| 166 | --bg-color: props.get(core.$theme, --border), | 175 | --bg-color: props.get(core.$theme, --border), |
| 167 | --border-color: props.get(core.$theme, --border), | 176 | --border-color: props.get(core.$theme, --border), |
| 168 | ), | 177 | ), |
| 169 | 178 | ||
| 170 | --active: ( | 179 | --active: ( |
| 171 | --bg-color: props.get(core.$theme, --border-strong), | 180 | --bg-color: props.get(core.$theme, --border-strong), |
| 172 | --border-color: props.get(core.$theme, --border-strong), | 181 | --border-color: props.get(core.$theme, --border-strong), |
| 173 | ), | 182 | ), |
| 174 | 183 | ||
| 175 | --selected: ( | 184 | --selected: ( |
| 176 | --border-color: props.get(core.$theme, --text), | 185 | --border-color: props.get(core.$theme, --text), |
| 186 | ), | ||
| 177 | ), | 187 | ), |
| 178 | ), $default-theme-override) !default; | 188 | $default-theme-override |
| 179 | $default-theme-dark: props.def(--o-button, $default-theme-dark, 'dark'); | 189 | ) !default; |
| 190 | $default-theme-dark: props.def(--o-button, $default-theme-dark, "dark"); | ||
| 180 | 191 | ||
| 181 | @each $theme in map.keys(props.get(core.$transparent-colors)) { | 192 | @each $theme in map.keys(props.get(core.$transparent-colors)) { |
| 182 | $button-theme: --static-#{string.slice($theme, 3)}; | 193 | $button-theme: --static-#{string.slice($theme, 3)}; |
| 183 | 194 | ||
| 184 | $themes: props.merge($themes, ( | 195 | $themes: props.merge( |
| 185 | $button-theme: ( | 196 | $themes, |
| 186 | --bg-color: props.get(core.$transparent-colors, $theme, --200), | 197 | ( |
| 187 | --label-color: props.get(core.$transparent-colors, $theme, --900), | 198 | $button-theme: ( |
| 188 | --border-color: props.get(core.$transparent-colors, $theme, --300) props.get(core.$transparent-colors, $theme, --300) props.get(core.$transparent-colors, $theme, --400), | 199 | --bg-color: props.get(core.$transparent-colors, $theme, --200), |
| 189 | --shadow-color: props.get(core.$transparent-colors, --black, --200), | 200 | --label-color: props.get(core.$transparent-colors, $theme, --900), |
| 190 | 201 | --border-color: props.get(core.$transparent-colors, $theme, --300) | |
| 191 | --hover: ( | 202 | props.get(core.$transparent-colors, $theme, --300) |
| 192 | --bg-color: props.get(core.$transparent-colors, $theme, --300), | 203 | props.get(core.$transparent-colors, $theme, --400), |
| 193 | --label-color: props.get(core.$transparent-colors, $theme, --900), | 204 | --shadow-color: props.get(core.$transparent-colors, --black, --200), |
| 194 | --border-color: props.get(core.$transparent-colors, $theme, --400), | 205 | --hover: ( |
| 195 | ), | 206 | --bg-color: props.get(core.$transparent-colors, $theme, --300), |
| 207 | --label-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 208 | --border-color: props.get(core.$transparent-colors, $theme, --400), | ||
| 209 | ), | ||
| 196 | 210 | ||
| 197 | --active: ( | 211 | --active: ( |
| 198 | --bg-color: props.get(core.$transparent-colors, $theme, --400), | 212 | --bg-color: props.get(core.$transparent-colors, $theme, --400), |
| 199 | --label-color: props.get(core.$transparent-colors, $theme, --900), | 213 | --label-color: props.get(core.$transparent-colors, $theme, --900), |
| 200 | --border-color: props.get(core.$transparent-colors, $theme, --500), | 214 | --border-color: props.get(core.$transparent-colors, $theme, --500), |
| 201 | ), | 215 | ), |
| 202 | 216 | ||
| 203 | --disabled: ( | 217 | --disabled: ( |
| 204 | --bg-color: props.get(core.$transparent-colors, $theme, --100), | 218 | --bg-color: props.get(core.$transparent-colors, $theme, --100), |
| 205 | --label-color: props.get(core.$transparent-colors, $theme, --500), | 219 | --label-color: props.get(core.$transparent-colors, $theme, --500), |
| 206 | --border-color: props.get(core.$transparent-colors, $theme, --300), | 220 | --border-color: props.get(core.$transparent-colors, $theme, --300), |
| 207 | ), | 221 | ), |
| 208 | 222 | ||
| 209 | --key-focus: ( | 223 | --key-focus: ( |
| 210 | --border-color: props.get(core.$transparent-colors, $theme, --900), | 224 | --border-color: props.get(core.$transparent-colors, $theme, --900), |
| 211 | --outline-color: props.get(core.$transparent-colors, $theme, --300), | 225 | --outline-color: props.get(core.$transparent-colors, $theme, --300), |
| 212 | ), | 226 | ), |
| 213 | 227 | ||
| 214 | --highlighted: ( | 228 | --highlighted: ( |
| 215 | --border-color: props.get(core.$transparent-colors, $theme, --900), | 229 | --border-color: props.get(core.$transparent-colors, $theme, --900), |
| 216 | --shadow-color: props.get(core.$transparent-colors, --black, --200), | 230 | --shadow-color: props.get(core.$transparent-colors, --black, --200), |
| 217 | ), | 231 | ), |
| 218 | 232 | ||
| 219 | --selected: ( | 233 | --selected: ( |
| 220 | --bg-color: props.get(core.$transparent-colors, $theme, --900), | 234 | --bg-color: props.get(core.$transparent-colors, $theme, --900), |
| 221 | --label-color: props.get(core.$transparent-colors, $theme, --text), | 235 | --label-color: props.get(core.$transparent-colors, $theme, --text), |
| 222 | --border-color: props.get(core.$transparent-colors, $theme, --100) props.get(core.$transparent-colors, $theme, --100) props.get(core.$transparent-colors, $theme, --200), | 236 | --border-color: props.get(core.$transparent-colors, $theme, --100) |
| 237 | props.get(core.$transparent-colors, $theme, --100) | ||
| 238 | props.get(core.$transparent-colors, $theme, --200), | ||
| 239 | --hover: ( | ||
| 240 | --bg-color: props.get(core.$transparent-colors, $theme, --800), | ||
| 241 | --label-color: props.get( | ||
| 242 | core.$transparent-colors, | ||
| 243 | $theme, | ||
| 244 | --text | ||
| 245 | ), | ||
| 246 | --border-color: props.get( | ||
| 247 | core.$transparent-colors, | ||
| 248 | $theme, | ||
| 249 | --100 | ||
| 250 | ), | ||
| 251 | ), | ||
| 223 | 252 | ||
| 224 | --hover: ( | 253 | --active: ( |
| 225 | --bg-color: props.get(core.$transparent-colors, $theme, --800), | 254 | --bg-color: props.get(core.$transparent-colors, $theme, --800), |
| 226 | --label-color: props.get(core.$transparent-colors, $theme, --text), | 255 | --label-color: props.get( |
| 227 | --border-color: props.get(core.$transparent-colors, $theme, --100), | 256 | core.$transparent-colors, |
| 228 | ), | 257 | $theme, |
| 258 | --text | ||
| 259 | ), | ||
| 260 | --border-color: props.get( | ||
| 261 | core.$transparent-colors, | ||
| 262 | $theme, | ||
| 263 | --100 | ||
| 264 | ), | ||
| 265 | ), | ||
| 229 | 266 | ||
| 230 | --active: ( | 267 | --disabled: ( |
| 231 | --bg-color: props.get(core.$transparent-colors, $theme, --800), | 268 | --bg-color: props.get(core.$transparent-colors, $theme, --200), |
| 232 | --label-color: props.get(core.$transparent-colors, $theme, --text), | 269 | --label-color: props.get( |
| 233 | --border-color: props.get(core.$transparent-colors, $theme, --100), | 270 | core.$transparent-colors, |
| 234 | ), | 271 | $theme, |
| 272 | --500 | ||
| 273 | ), | ||
| 274 | --border-color: props.get( | ||
| 275 | core.$transparent-colors, | ||
| 276 | $theme, | ||
| 277 | --100 | ||
| 278 | ), | ||
| 279 | ), | ||
| 280 | ), | ||
| 235 | 281 | ||
| 236 | --disabled: ( | 282 | --badge: ( |
| 237 | --bg-color: props.get(core.$transparent-colors, $theme, --200), | 283 | --bg-color: props.get(core.$transparent-colors, $theme, --200), |
| 238 | --label-color: props.get(core.$transparent-colors, $theme, --500), | 284 | --label-color: props.get(core.$transparent-colors, $theme, --900), |
| 239 | --border-color: props.get(core.$transparent-colors, $theme, --100), | 285 | --border-color: transparent, |
| 240 | ), | ||
| 241 | ), | ||
| 242 | 286 | ||
| 243 | --badge: ( | 287 | --hover: ( |
| 244 | --bg-color: props.get(core.$transparent-colors, $theme, --200), | 288 | --bg-color: props.get(core.$transparent-colors, $theme, --300), |
| 245 | --label-color: props.get(core.$transparent-colors, $theme, --900), | 289 | --label-color: props.get( |
| 246 | --border-color: transparent, | 290 | core.$transparent-colors, |
| 291 | $theme, | ||
| 292 | --900 | ||
| 293 | ), | ||
| 294 | --border-color: transparent, | ||
| 295 | ), | ||
| 247 | 296 | ||
| 248 | --hover: ( | 297 | --active: ( |
| 249 | --bg-color: props.get(core.$transparent-colors, $theme, --300), | 298 | --bg-color: props.get(core.$transparent-colors, $theme, --400), |
| 250 | --label-color: props.get(core.$transparent-colors, $theme, --900), | 299 | --label-color: props.get( |
| 251 | --border-color: transparent, | 300 | core.$transparent-colors, |
| 252 | ), | 301 | $theme, |
| 302 | --900 | ||
| 303 | ), | ||
| 304 | --border-color: transparent, | ||
| 305 | ), | ||
| 306 | ), | ||
| 253 | 307 | ||
| 254 | --active: ( | 308 | --quiet: ( |
| 255 | --bg-color: props.get(core.$transparent-colors, $theme, --400), | 309 | --label-color: props.get(core.$transparent-colors, $theme, --900), |
| 256 | --label-color: props.get(core.$transparent-colors, $theme, --900), | 310 | --hover: ( |
| 257 | --border-color: transparent, | 311 | --bg-color: props.get(core.$transparent-colors, $theme, --200), |
| 258 | ), | 312 | --label-color: props.get( |
| 259 | ), | 313 | core.$transparent-colors, |
| 314 | $theme, | ||
| 315 | --900 | ||
| 316 | ), | ||
| 317 | ), | ||
| 260 | 318 | ||
| 261 | --quiet: ( | 319 | --active: ( |
| 262 | --label-color: props.get(core.$transparent-colors, $theme, --900), | 320 | --bg-color: props.get(core.$transparent-colors, $theme, --300), |
| 321 | --label-color: props.get( | ||
| 322 | core.$transparent-colors, | ||
| 323 | $theme, | ||
| 324 | --900 | ||
| 325 | ), | ||
| 326 | ), | ||
| 263 | 327 | ||
| 264 | --hover: ( | 328 | --disabled: ( |
| 265 | --bg-color: props.get(core.$transparent-colors, $theme, --200), | 329 | --label-color: props.get( |
| 266 | --label-color: props.get(core.$transparent-colors, $theme, --900), | 330 | core.$transparent-colors, |
| 331 | $theme, | ||
| 332 | --500 | ||
| 333 | ), | ||
| 334 | ), | ||
| 335 | ), | ||
| 267 | ), | 336 | ), |
| 268 | |||
| 269 | --active: ( | ||
| 270 | --bg-color: props.get(core.$transparent-colors, $theme, --300), | ||
| 271 | --label-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 272 | ), | ||
| 273 | |||
| 274 | --disabled: ( | ||
| 275 | --label-color: props.get(core.$transparent-colors, $theme, --500), | ||
| 276 | ), | ||
| 277 | ), | ||
| 278 | ) | 337 | ) |
| 279 | )); | 338 | ); |
| 280 | } | 339 | } |
| 281 | 340 | ||
| 282 | $themes-config: ( | 341 | $themes-config: ( |
| 283 | accent: --accent, | 342 | accent: --accent, |
| 284 | positive: --positive, | 343 | positive: --positive, |
| 285 | negative: --negative, | 344 | negative: --negative, |
| 286 | warning: --warning, | 345 | warning: --warning, |
| 287 | ) !default; | 346 | ) !default; |
| 288 | 347 | ||
| 289 | @each $theme, $key in $themes-config { | 348 | @each $theme, $key in $themes-config { |
| 290 | $themes: props.merge($themes, ( | 349 | $themes: props.merge( |
| 291 | --#{$theme}: ( | 350 | $themes, |
| 292 | --bg-color: props.get(core.$theme, $key, --100), | 351 | ( |
| 293 | --label-color: props.get(core.$theme, $key, --1100), | 352 | --#{$theme}: ( |
| 294 | --border-color: props.get(core.$theme, $key, --500) props.get(core.$theme, $key, --500) props.get(core.$theme, $key, --600), | 353 | --bg-color: props.get(core.$theme, $key, --100), |
| 295 | --shadow-color: props.get(core.$theme, $key, --200), | 354 | --label-color: props.get(core.$theme, $key, --1100), |
| 355 | --border-color: props.get(core.$theme, $key, --500) | ||
| 356 | props.get(core.$theme, $key, --500) | ||
| 357 | props.get(core.$theme, $key, --600), | ||
| 358 | --shadow-color: props.get(core.$theme, $key, --200), | ||
| 359 | --hover: ( | ||
| 360 | --bg-color: props.get(core.$theme, $key, --200), | ||
| 361 | --label-color: props.get(core.$theme, $key, --1200), | ||
| 362 | --border-color: props.get(core.$theme, $key, --600), | ||
| 363 | ), | ||
| 296 | 364 | ||
| 297 | --hover: ( | 365 | --active: ( |
| 298 | --bg-color: props.get(core.$theme, $key, --200), | 366 | --bg-color: props.get(core.$theme, $key, --300), |
| 299 | --label-color: props.get(core.$theme, $key, --1200), | 367 | --label-color: props.get(core.$theme, $key, --1300), |
| 300 | --border-color: props.get(core.$theme, $key, --600), | 368 | --border-color: props.get(core.$theme, $key, --800), |
| 301 | ), | 369 | ), |
| 302 | 370 | ||
| 303 | --active: ( | 371 | --disabled: ( |
| 304 | --bg-color: props.get(core.$theme, $key, --300), | 372 | --bg-color: props.get(core.$theme, --bg-l1), |
| 305 | --label-color: props.get(core.$theme, $key, --1300), | 373 | --label-color: props.get(core.$theme, --border-strong), |
| 306 | --border-color: props.get(core.$theme, $key, --800), | 374 | --border-color: props.get(core.$theme, --border), |
| 307 | ), | 375 | ), |
| 308 | 376 | ||
| 309 | --disabled: ( | 377 | --key-focus: ( |
| 310 | --bg-color: props.get(core.$theme, --bg-l1), | 378 | --border-color: props.get(core.$theme, --focus, --border), |
| 311 | --label-color: props.get(core.$theme, --border-strong), | 379 | --outline-color: props.get(core.$theme, --focus, --outline), |
| 312 | --border-color: props.get(core.$theme, --border), | 380 | ), |
| 313 | ), | ||
| 314 | 381 | ||
| 315 | --key-focus: ( | 382 | --highlighted: ( |
| 316 | --border-color: props.get(core.$theme, --focus, --border), | 383 | --border-color: props.get(core.$theme, $key, --900), |
| 317 | --outline-color: props.get(core.$theme, --focus, --outline), | 384 | --shadow-color: props.get(core.$theme, $key, --200), |
| 318 | ), | 385 | ), |
| 319 | 386 | ||
| 320 | --highlighted: ( | 387 | --selected: ( |
| 321 | --border-color: props.get(core.$theme, $key, --900), | 388 | --bg-color: props.get(core.$theme, #{$key}-static, --900), |
| 322 | --shadow-color: props.get(core.$theme, $key, --200), | 389 | --label-color: props.get(core.$theme, #{$key}-static, --900-text), |
| 323 | ), | 390 | --border-color: props.get(core.$theme, #{$key}-static, --900) |
| 391 | props.get(core.$theme, #{$key}-static, --900) | ||
| 392 | props.get(core.$theme, #{$key}-static, --1000), | ||
| 393 | --hover: ( | ||
| 394 | --bg-color: props.get(core.$theme, #{$key}-static, --1000), | ||
| 395 | --label-color: props.get( | ||
| 396 | core.$theme, | ||
| 397 | #{$key}-static, | ||
| 398 | --1000-text | ||
| 399 | ), | ||
| 400 | --border-color: props.get(core.$theme, #{$key}-static, --1000), | ||
| 401 | ), | ||
| 324 | 402 | ||
| 325 | --selected: ( | 403 | --active: ( |
| 326 | --bg-color: props.get(core.$theme, #{$key}-static, --900), | 404 | --bg-color: props.get(core.$theme, #{$key}-static, --1100), |
| 327 | --label-color: props.get(core.$theme, #{$key}-static, --900-text), | 405 | --label-color: props.get( |
| 328 | --border-color: props.get(core.$theme, #{$key}-static, --900) props.get(core.$theme, #{$key}-static, --900) props.get(core.$theme, #{$key}-static, --1000), | 406 | core.$theme, |
| 407 | #{$key}-static, | ||
| 408 | --1100-text | ||
| 409 | ), | ||
| 410 | --border-color: props.get(core.$theme, #{$key}-static, --1100), | ||
| 411 | ), | ||
| 329 | 412 | ||
| 330 | --hover: ( | 413 | --disabled: ( |
| 331 | --bg-color: props.get(core.$theme, #{$key}-static, --1000), | 414 | --bg-color: props.get(core.$theme, --border-mute), |
| 332 | --label-color: props.get(core.$theme, #{$key}-static, --1000-text), | 415 | --label-color: props.get(core.$theme, --border-strong), |
| 333 | --border-color: props.get(core.$theme, #{$key}-static, --1000), | 416 | --border-color: props.get(core.$theme, --border-mute), |
| 334 | ), | 417 | ), |
| 418 | ), | ||
| 335 | 419 | ||
| 336 | --active: ( | 420 | --badge: ( |
| 337 | --bg-color: props.get(core.$theme, #{$key}-static, --1100), | 421 | --bg-color: props.get(core.$theme, $key, --100), |
| 338 | --label-color: props.get(core.$theme, #{$key}-static, --1100-text), | 422 | --label-color: props.get(core.$theme, $key, --1100), |
| 339 | --border-color: props.get(core.$theme, #{$key}-static, --1100), | 423 | --border-color: props.get(core.$theme, $key, --300), |
| 340 | ), | 424 | --hover: ( |
| 341 | 425 | --bg-color: props.get(core.$theme, $key, --200), | |
| 342 | --disabled: ( | 426 | --label-color: props.get(core.$theme, $key, --1200), |
| 343 | --bg-color: props.get(core.$theme, --border-mute), | 427 | --border-color: props.get(core.$theme, $key, --400), |
| 344 | --label-color: props.get(core.$theme, --border-strong), | 428 | ), |
| 345 | --border-color: props.get(core.$theme, --border-mute), | ||
| 346 | ), | ||
| 347 | ), | ||
| 348 | |||
| 349 | --badge: ( | ||
| 350 | --bg-color: props.get(core.$theme, $key, --100), | ||
| 351 | --label-color: props.get(core.$theme, $key, --1100), | ||
| 352 | --border-color: props.get(core.$theme, $key, --300), | ||
| 353 | |||
| 354 | --hover: ( | ||
| 355 | --bg-color: props.get(core.$theme, $key, --200), | ||
| 356 | --label-color: props.get(core.$theme, $key, --1200), | ||
| 357 | --border-color: props.get(core.$theme, $key, --400), | ||
| 358 | ), | ||
| 359 | 429 | ||
| 360 | --active: ( | 430 | --active: ( |
| 361 | --bg-color: props.get(core.$theme, $key, --300), | 431 | --bg-color: props.get(core.$theme, $key, --300), |
| 362 | --label-color: props.get(core.$theme, $key, --1300), | 432 | --label-color: props.get(core.$theme, $key, --1300), |
| 363 | --border-color: props.get(core.$theme, $key, --500), | 433 | --border-color: props.get(core.$theme, $key, --500), |
| 364 | ), | 434 | ), |
| 365 | ), | 435 | ), |
| 366 | 436 | ||
| 367 | --quiet: ( | 437 | --quiet: ( |
| 368 | --label-color: props.get(core.$theme, $key, --1100), | 438 | --label-color: props.get(core.$theme, $key, --1100), |
| 439 | --hover: ( | ||
| 440 | --bg-color: props.get(core.$theme, $key, --200), | ||
| 441 | --label-color: props.get(core.$theme, $key, --1200), | ||
| 442 | ), | ||
| 369 | 443 | ||
| 370 | --hover: ( | 444 | --active: ( |
| 371 | --bg-color: props.get(core.$theme, $key, --200), | 445 | --bg-color: props.get(core.$theme, $key, --300), |
| 372 | --label-color: props.get(core.$theme, $key, --1200), | 446 | --label-color: props.get(core.$theme, $key, --1300), |
| 373 | ), | 447 | ), |
| 374 | 448 | ||
| 375 | --active: ( | 449 | --disabled: ( |
| 376 | --bg-color: props.get(core.$theme, $key, --300), | 450 | --label-color: props.get(core.$theme, --border-strong), |
| 377 | --label-color: props.get(core.$theme, $key, --1300), | 451 | ), |
| 378 | ), | 452 | ), |
| 379 | 453 | ) | |
| 380 | --disabled: ( | ||
| 381 | --label-color: props.get(core.$theme, --border-strong), | ||
| 382 | ), | ||
| 383 | ), | ||
| 384 | ) | 454 | ) |
| 385 | )); | 455 | ); |
| 386 | } | 456 | } |
diff --git a/src/objects/_card.scss b/src/objects/_card.scss index b8bc727..3275bc8 100644 --- a/src/objects/_card.scss +++ b/src/objects/_card.scss | |||
| @@ -1,84 +1,95 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | @use 'avatar.vars' as avatar; | 5 | @use "avatar.vars" as avatar; |
| 6 | 6 | ||
| 7 | @forward 'card.vars'; | 7 | @forward "card.vars"; |
| 8 | @use 'card.vars' as vars; | 8 | @use "card.vars" as vars; |
| 9 | 9 | ||
| 10 | @mixin styles { | 10 | @mixin styles { |
| 11 | @include materialize-at-root(meta.module-variables('vars')); | 11 | @include materialize-at-root(meta.module-variables("vars")); |
| 12 | 12 | ||
| 13 | @include bem.object('card') { | 13 | @include bem.object("card") { |
| 14 | position: relative; | 14 | position: relative; |
| 15 | display: flex; | 15 | display: flex; |
| 16 | flex-direction: column; | 16 | flex-direction: column; |
| 17 | background-color: props.get(vars.$bg-color); | 17 | background-color: props.get(vars.$bg-color); |
| 18 | border: props.get(vars.$border-width) solid transparent; | 18 | border: props.get(vars.$border-width) solid transparent; |
| 19 | border-color: props.get(vars.$border-color); | 19 | border-color: props.get(vars.$border-color); |
| 20 | border-radius: props.get(vars.$rounding); | 20 | border-radius: props.get(vars.$rounding); |
| 21 | transition: transform .2s, background-color .2s, border-color .2s, box-shadow .2s; | 21 | transition: |
| 22 | transform 0.2s, | ||
| 23 | background-color 0.2s, | ||
| 24 | border-color 0.2s, | ||
| 25 | box-shadow 0.2s; | ||
| 22 | 26 | ||
| 23 | @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') { | 27 | @include bem.multi( |
| 28 | "&:link, &:visited, &:enabled", | ||
| 29 | "modifier" "interactive", | ||
| 30 | "modifier" "collapsible" | ||
| 31 | ) { | ||
| 24 | &:hover, | 32 | &:hover, |
| 25 | &:active, | 33 | &:active, |
| 26 | &:focus-visible { | 34 | &:focus-visible { |
| 27 | background-color: props.get(vars.$hover--bg-color); | 35 | background-color: props.get(vars.$hover--bg-color); |
| 28 | border-color: props.get(vars.$hover--border-color); | 36 | border-color: props.get(vars.$hover--border-color); |
| 29 | box-shadow: none; | 37 | box-shadow: none; |
| 30 | transform: translateY(props.get(vars.$hover--offset-b)); | 38 | transform: translateY(props.get(vars.$hover--offset-b)); |
| 31 | } | 39 | } |
| 32 | 40 | ||
| 33 | &:focus-visible { | 41 | &:focus-visible { |
| 34 | margin: calc(-1 * props.get(vars.$key-focus--border-width)); | 42 | margin: calc(-1 * props.get(vars.$key-focus--border-width)); |
| 35 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | 43 | outline: props.get(vars.$key-focus--border-color) solid |
| 36 | border: calc(props.get(vars.$key-focus--border-offset) + props.get(vars.$border-width)) solid transparent; | 44 | props.get(vars.$key-focus--border-width); |
| 37 | border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)); | 45 | border: calc( |
| 38 | box-shadow: | 46 | props.get(vars.$key-focus--border-offset) + props.get(vars.$border-width) |
| 39 | 0 0 0 | 47 | ) |
| 40 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | 48 | solid transparent; |
| 49 | border-radius: calc( | ||
| 50 | props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset) | ||
| 51 | ); | ||
| 52 | box-shadow: 0 0 0 | ||
| 53 | calc( | ||
| 54 | props.get(vars.$key-focus--border-width) + | ||
| 55 | props.get(vars.$key-focus--outline-width) | ||
| 56 | ) | ||
| 41 | props.get(vars.$key-focus--outline-color); | 57 | props.get(vars.$key-focus--outline-color); |
| 42 | transition: transform .2s; | 58 | transition: transform 0.2s; |
| 43 | } | 59 | } |
| 44 | } | 60 | } |
| 45 | 61 | ||
| 46 | @include bem.modifier('borderless') { | 62 | @include bem.modifier("borderless") { |
| 47 | border-color: props.get(vars.$bg-color); | 63 | border-color: props.get(vars.$bg-color); |
| 48 | } | 64 | } |
| 49 | 65 | ||
| 50 | @include bem.modifier('shadow') { | 66 | @include bem.modifier("shadow") { |
| 51 | box-shadow: | 67 | box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) |
| 52 | props.get(vars.$shadow-x) | 68 | props.get(vars.$shadow-blur) props.get(vars.$shadow-grow) |
| 53 | props.get(vars.$shadow-y) | ||
| 54 | props.get(vars.$shadow-blur) | ||
| 55 | props.get(vars.$shadow-grow) | ||
| 56 | props.get(vars.$shadow-color); | 69 | props.get(vars.$shadow-color); |
| 57 | 70 | ||
| 58 | @include bem.modifier('quiet') { | 71 | @include bem.modifier("quiet") { |
| 59 | @include bem.elem('image') { | 72 | @include bem.elem("image") { |
| 60 | box-shadow: | 73 | box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) |
| 61 | props.get(vars.$shadow-x) | 74 | props.get(vars.$shadow-blur) props.get(vars.$shadow-grow) |
| 62 | props.get(vars.$shadow-y) | ||
| 63 | props.get(vars.$shadow-blur) | ||
| 64 | props.get(vars.$shadow-grow) | ||
| 65 | props.get(vars.$shadow-color); | 75 | props.get(vars.$shadow-color); |
| 66 | } | 76 | } |
| 67 | } | 77 | } |
| 68 | } | 78 | } |
| 69 | 79 | ||
| 70 | @include bem.modifier('highlight') { | 80 | @include bem.modifier("highlight") { |
| 71 | margin: calc(props.get(vars.$border-width) - props.get(vars.$highlight--border-width)); | 81 | margin: calc(props.get(vars.$border-width) - props.get(vars.$highlight--border-width)); |
| 72 | border-color: props.get(vars.$highlight--border-color); | 82 | border-color: props.get(vars.$highlight--border-color); |
| 73 | border-width: props.get(vars.$highlight--border-width); | 83 | border-width: props.get(vars.$highlight--border-width); |
| 74 | box-shadow: | 84 | box-shadow: props.get(vars.$highlight--shadow-x) props.get(vars.$highlight--shadow-y) |
| 75 | props.get(vars.$highlight--shadow-x) | 85 | props.get(vars.$highlight--shadow-blur) props.get(vars.$highlight--shadow-grow) |
| 76 | props.get(vars.$highlight--shadow-y) | ||
| 77 | props.get(vars.$highlight--shadow-blur) | ||
| 78 | props.get(vars.$highlight--shadow-grow) | ||
| 79 | props.get(vars.$highlight--shadow-color); | 86 | props.get(vars.$highlight--shadow-color); |
| 80 | 87 | ||
| 81 | @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') { | 88 | @include bem.multi( |
| 89 | "&:link, &:visited, &:enabled", | ||
| 90 | "modifier" "interactive", | ||
| 91 | "modifier" "collapsible" | ||
| 92 | ) { | ||
| 82 | &:hover, | 93 | &:hover, |
| 83 | &:active { | 94 | &:active { |
| 84 | border-color: props.get(vars.$highlight--border-color); | 95 | border-color: props.get(vars.$highlight--border-color); |
| @@ -86,207 +97,238 @@ | |||
| 86 | } | 97 | } |
| 87 | } | 98 | } |
| 88 | 99 | ||
| 89 | @include bem.elem('avatar') { | 100 | @include bem.elem("avatar") { |
| 90 | margin-block-start: props.get(vars.$pad-b); | 101 | margin-block-start: props.get(vars.$pad-b); |
| 91 | margin-inline-start: props.get(vars.$pad-i); | 102 | margin-inline-start: props.get(vars.$pad-i); |
| 92 | } | 103 | } |
| 93 | 104 | ||
| 94 | @include bem.elem('image') { | 105 | @include bem.elem("image") { |
| 95 | position: relative; | 106 | position: relative; |
| 96 | display: block; | 107 | display: block; |
| 97 | flex: 0 0 auto; | 108 | flex: 0 0 auto; |
| 98 | inline-size: calc(100% + 2 * props.get(vars.$border-width)); | 109 | inline-size: calc(100% + 2 * props.get(vars.$border-width)); |
| 99 | margin: calc(-1 * props.get(vars.$border-width)); | 110 | margin: calc(-1 * props.get(vars.$border-width)); |
| 100 | overflow: hidden; | 111 | overflow: hidden; |
| 101 | object-fit: cover; | 112 | object-fit: cover; |
| 102 | transition: background-color .2s, transform .2s, opacity .2s; | 113 | transition: |
| 114 | background-color 0.2s, | ||
| 115 | transform 0.2s, | ||
| 116 | opacity 0.2s; | ||
| 103 | 117 | ||
| 104 | &:first-child { | 118 | &:first-child { |
| 105 | border-start-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); | 119 | border-start-start-radius: calc( |
| 106 | border-start-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); | 120 | props.get(vars.$rounding) - props.get(vars.$border-width) |
| 121 | ); | ||
| 122 | border-start-end-radius: calc( | ||
| 123 | props.get(vars.$rounding) - props.get(vars.$border-width) | ||
| 124 | ); | ||
| 107 | } | 125 | } |
| 108 | 126 | ||
| 109 | &:last-child { | 127 | &:last-child { |
| 110 | border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); | 128 | border-end-start-radius: calc( |
| 111 | border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); | 129 | props.get(vars.$rounding) - props.get(vars.$border-width) |
| 130 | ); | ||
| 131 | border-end-end-radius: calc( | ||
| 132 | props.get(vars.$rounding) - props.get(vars.$border-width) | ||
| 133 | ); | ||
| 112 | } | 134 | } |
| 113 | 135 | ||
| 114 | @include bem.next-elem('avatar') { | 136 | @include bem.next-elem("avatar") { |
| 115 | margin-block-start: calc(-.7 * props.get(avatar.$size--xl)); | 137 | margin-block-start: calc(-0.7 * props.get(avatar.$size--xl)); |
| 116 | } | 138 | } |
| 117 | } | 139 | } |
| 118 | 140 | ||
| 119 | @include bem.elem('image-img') { | 141 | @include bem.elem("image-img") { |
| 120 | display: block; | 142 | display: block; |
| 121 | inline-size: 100%; | 143 | inline-size: 100%; |
| 122 | block-size: 100%; | 144 | block-size: 100%; |
| 123 | object-fit: cover; | 145 | object-fit: cover; |
| 124 | } | 146 | } |
| 125 | 147 | ||
| 126 | @include bem.elem('image-overlay') { | 148 | @include bem.elem("image-overlay") { |
| 127 | position: absolute; | 149 | position: absolute; |
| 128 | inset-block-end: 0; | 150 | inset-block-end: 0; |
| 129 | inset-inline: 0; | 151 | inset-inline: 0; |
| 130 | z-index: 5; | 152 | z-index: 5; |
| 131 | padding-block: props.get(vars.$image-overlay--pad-b); | 153 | padding-block: props.get(vars.$image-overlay--pad-b); |
| 132 | padding-inline: props.get(vars.$image-overlay--pad-i); | 154 | padding-inline: props.get(vars.$image-overlay--pad-i); |
| 133 | } | 155 | } |
| 134 | 156 | ||
| 135 | @include bem.elem('body') { | 157 | @include bem.elem("body") { |
| 136 | flex: 0 0 auto; | 158 | flex: 0 0 auto; |
| 137 | padding-block: props.get(vars.$pad-b); | 159 | padding-block: props.get(vars.$pad-b); |
| 138 | padding-inline: props.get(vars.$pad-i); | 160 | padding-inline: props.get(vars.$pad-i); |
| 139 | 161 | ||
| 140 | &::before { | 162 | &::before { |
| 141 | display: block; | 163 | display: block; |
| 142 | margin-block: -100em 100em; | 164 | margin-block: -100em 100em; |
| 143 | content: ''; | 165 | content: ""; |
| 144 | } | 166 | } |
| 145 | 167 | ||
| 146 | @include bem.modifier('no-mbs-neutralize') { | 168 | @include bem.modifier("no-mbs-neutralize") { |
| 147 | &::before { | 169 | &::before { |
| 148 | display: none; | 170 | display: none; |
| 149 | } | 171 | } |
| 150 | } | 172 | } |
| 151 | 173 | ||
| 152 | @include bem.modifier('main') { | 174 | @include bem.modifier("main") { |
| 153 | flex-shrink: 1; | 175 | flex-shrink: 1; |
| 154 | block-size: 100%; | 176 | block-size: 100%; |
| 155 | min-block-size: 0; | 177 | min-block-size: 0; |
| 156 | } | 178 | } |
| 157 | } | 179 | } |
| 158 | 180 | ||
| 159 | @include bem.elem('content') { | 181 | @include bem.elem("content") { |
| 160 | margin-block-start: props.get(vars.$spacing); | 182 | margin-block-start: props.get(vars.$spacing); |
| 161 | } | 183 | } |
| 162 | 184 | ||
| 163 | @include bem.elem('footer') { | 185 | @include bem.elem("footer") { |
| 164 | flex: 0 0 auto; | 186 | flex: 0 0 auto; |
| 165 | padding-block: 0 props.get(vars.$pad-b); | 187 | padding-block: 0 props.get(vars.$pad-b); |
| 166 | padding-inline: props.get(vars.$pad-i); | 188 | padding-inline: props.get(vars.$pad-i); |
| 167 | margin-block-start: calc(-1 * props.get(vars.$pad-b)); | 189 | margin-block-start: calc(-1 * props.get(vars.$pad-b)); |
| 168 | 190 | ||
| 169 | &::before { | 191 | &::before { |
| 170 | display: block; | 192 | display: block; |
| 171 | block-size: props.get(vars.$divider-width); | 193 | block-size: props.get(vars.$divider-width); |
| 172 | margin-block: props.get(vars.$spacing); | 194 | margin-block: props.get(vars.$spacing); |
| 173 | content: ''; | 195 | content: ""; |
| 174 | background-color: props.get(vars.$divider-width); | 196 | background-color: props.get(vars.$divider-width); |
| 175 | } | 197 | } |
| 176 | } | 198 | } |
| 177 | 199 | ||
| 178 | @include bem.modifier('quiet') { | 200 | @include bem.modifier("quiet") { |
| 179 | margin-inline: 0; | 201 | margin-inline: 0; |
| 180 | background-color: transparent; | 202 | background-color: transparent; |
| 181 | border: 0; | 203 | border: 0; |
| 182 | box-shadow: none; | 204 | box-shadow: none; |
| 183 | 205 | ||
| 184 | @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') { | 206 | @include bem.multi( |
| 207 | "&:link, &:visited, &:enabled", | ||
| 208 | "modifier" "interactive", | ||
| 209 | "modifier" "collapsible" | ||
| 210 | ) { | ||
| 185 | &:hover, | 211 | &:hover, |
| 186 | &:active, | 212 | &:active, |
| 187 | &:focus-visible { | 213 | &:focus-visible { |
| 188 | background-color: transparent; | 214 | background-color: transparent; |
| 189 | transform: none; | 215 | transform: none; |
| 190 | 216 | ||
| 191 | @include bem.elem('image') { | 217 | @include bem.elem("image") { |
| 192 | background-color: props.get(vars.$quiet--hover--image-color); | 218 | background-color: props.get(vars.$quiet--hover--image-color); |
| 193 | opacity: .75; | 219 | opacity: 0.75; |
| 194 | transform: translateY(props.get(vars.$hover--offset-b)); | 220 | transform: translateY(props.get(vars.$hover--offset-b)); |
| 195 | } | 221 | } |
| 196 | } | 222 | } |
| 197 | 223 | ||
| 198 | &:focus-visible { | 224 | &:focus-visible { |
| 199 | margin: 0; | 225 | margin: 0; |
| 200 | outline: none; | 226 | outline: none; |
| 201 | border: 0; | 227 | border: 0; |
| 202 | box-shadow: none; | 228 | box-shadow: none; |
| 203 | 229 | ||
| 204 | @include bem.elem('image') { | 230 | @include bem.elem("image") { |
| 205 | margin: calc(-1 * props.get(vars.$key-focus--border-width) - props.get(vars.$border-width)); | 231 | margin: calc( |
| 206 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | 232 | -1 * |
| 233 | props.get(vars.$key-focus--border-width) - props.get( | ||
| 234 | vars.$border-width | ||
| 235 | ) | ||
| 236 | ); | ||
| 237 | outline: props.get(vars.$key-focus--border-color) solid | ||
| 238 | props.get(vars.$key-focus--border-width); | ||
| 207 | background-color: props.get(vars.$quiet--hover--image-color); | 239 | background-color: props.get(vars.$quiet--hover--image-color); |
| 208 | border: props.get(vars.$key-focus--border-offset) solid transparent; | 240 | border: props.get(vars.$key-focus--border-offset) solid transparent; |
| 209 | border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)); | 241 | border-radius: calc( |
| 210 | box-shadow: | 242 | props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset) |
| 211 | 0 | 243 | ); |
| 212 | 0 | 244 | box-shadow: 0 0 0 |
| 213 | 0 | 245 | calc( |
| 214 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | 246 | props.get(vars.$key-focus--border-width) + |
| 247 | props.get(vars.$key-focus--outline-width) | ||
| 248 | ) | ||
| 215 | props.get(vars.$key-focus--outline-color); | 249 | props.get(vars.$key-focus--outline-color); |
| 216 | opacity: 1; | 250 | opacity: 1; |
| 217 | } | 251 | } |
| 218 | } | 252 | } |
| 219 | } | 253 | } |
| 220 | 254 | ||
| 221 | @include bem.elem('image') { | 255 | @include bem.elem("image") { |
| 222 | position: relative; | 256 | position: relative; |
| 223 | background-color: props.get(vars.$quiet--image-color); | 257 | background-color: props.get(vars.$quiet--image-color); |
| 224 | background-clip: padding-box; | 258 | background-clip: padding-box; |
| 225 | border-radius: props.get(vars.$rounding); | 259 | border-radius: props.get(vars.$rounding); |
| 226 | } | 260 | } |
| 227 | 261 | ||
| 228 | @include bem.elem('body') { | 262 | @include bem.elem("body") { |
| 229 | padding: 0; | 263 | padding: 0; |
| 230 | padding-block-start: props.get(vars.$spacing); | 264 | padding-block-start: props.get(vars.$spacing); |
| 231 | } | 265 | } |
| 232 | 266 | ||
| 233 | @include bem.elem('footer') { | 267 | @include bem.elem("footer") { |
| 234 | padding-inline: 0; | 268 | padding-inline: 0; |
| 235 | } | 269 | } |
| 236 | } | 270 | } |
| 237 | 271 | ||
| 238 | @include bem.modifier('thumbnail') { | 272 | @include bem.modifier("thumbnail") { |
| 239 | @include bem.elem('image') { | 273 | @include bem.elem("image") { |
| 240 | border-radius: props.get(vars.$rounding); | 274 | border-radius: props.get(vars.$rounding); |
| 241 | } | 275 | } |
| 242 | 276 | ||
| 243 | @include bem.elem('body') { | 277 | @include bem.elem("body") { |
| 244 | position: absolute; | 278 | position: absolute; |
| 245 | inset-block-end: calc(-1 * props.get(vars.$border-width)); | 279 | inset-block-end: calc(-1 * props.get(vars.$border-width)); |
| 246 | inset-inline: calc(-1 * props.get(vars.$border-width)); | 280 | inset-inline: calc(-1 * props.get(vars.$border-width)); |
| 247 | z-index: 10; | 281 | z-index: 10; |
| 248 | visibility: hidden; | 282 | visibility: hidden; |
| 249 | background-color: props.get(vars.$hover--bg-color); | 283 | background-color: props.get(vars.$hover--bg-color); |
| 250 | border-color: transparent; | 284 | border-color: transparent; |
| 251 | border-style: solid; | 285 | border-style: solid; |
| 252 | border-width: 0 props.get(vars.$border-width) props.get(vars.$border-width); | 286 | border-width: 0 props.get(vars.$border-width) props.get(vars.$border-width); |
| 253 | border-end-start-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); | 287 | border-end-start-radius: calc( |
| 254 | border-end-end-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); | 288 | props.get(vars.$rounding) - props.get(vars.$border-width) |
| 255 | opacity: 0; | 289 | ); |
| 290 | border-end-end-radius: calc( | ||
| 291 | props.get(vars.$rounding) - props.get(vars.$border-width) | ||
| 292 | ); | ||
| 293 | opacity: 0; | ||
| 256 | transition: | 294 | transition: |
| 257 | border-color .2s ease, | 295 | border-color 0.2s ease, |
| 258 | opacity .2s ease, | 296 | opacity 0.2s ease, |
| 259 | visibility 0s .2s linear; | 297 | visibility 0s 0.2s linear; |
| 260 | } | 298 | } |
| 261 | 299 | ||
| 262 | @include bem.multi('&:link, &:visited, &:enabled', 'modifier' 'interactive', 'modifier' 'collapsible') { | 300 | @include bem.multi( |
| 301 | "&:link, &:visited, &:enabled", | ||
| 302 | "modifier" "interactive", | ||
| 303 | "modifier" "collapsible" | ||
| 304 | ) { | ||
| 263 | &:hover, | 305 | &:hover, |
| 264 | &:active, | 306 | &:active, |
| 265 | &:focus-visible { | 307 | &:focus-visible { |
| 266 | @include bem.elem('body') { | 308 | @include bem.elem("body") { |
| 267 | visibility: visible; | 309 | visibility: visible; |
| 268 | border-color: props.get(vars.$hover--border-color); | 310 | border-color: props.get(vars.$hover--border-color); |
| 269 | opacity: 1; | 311 | opacity: 1; |
| 270 | transition: | 312 | transition: |
| 271 | border-color .2s ease, | 313 | border-color 0.2s ease, |
| 272 | opacity .2s ease, | 314 | opacity 0.2s ease, |
| 273 | visibility .2s linear; | 315 | visibility 0.2s linear; |
| 274 | } | 316 | } |
| 275 | } | 317 | } |
| 276 | } | 318 | } |
| 277 | } | 319 | } |
| 278 | 320 | ||
| 279 | @include bem.modifier('horizontal') { | 321 | @include bem.modifier("horizontal") { |
| 280 | flex-direction: row; | 322 | flex-direction: row; |
| 281 | align-items: center; | 323 | align-items: center; |
| 282 | 324 | ||
| 283 | @include bem.elem('image') { | 325 | @include bem.elem("image") { |
| 284 | align-self: stretch; | 326 | align-self: stretch; |
| 285 | inline-size: auto; | 327 | inline-size: auto; |
| 286 | 328 | ||
| 287 | &:first-child { | 329 | &:first-child { |
| 288 | border-start-end-radius: 0; | 330 | border-start-end-radius: 0; |
| 289 | border-end-start-radius: props.get(vars.$rounding); | 331 | border-end-start-radius: props.get(vars.$rounding); |
| 290 | } | 332 | } |
| 291 | 333 | ||
| 292 | &:last-child { | 334 | &:last-child { |
| @@ -295,37 +337,38 @@ | |||
| 295 | } | 337 | } |
| 296 | } | 338 | } |
| 297 | 339 | ||
| 298 | @include bem.elem('body') { | 340 | @include bem.elem("body") { |
| 299 | @include bem.modifier('main') { | 341 | @include bem.modifier("main") { |
| 300 | block-size: auto; | 342 | block-size: auto; |
| 301 | min-block-size: none; | 343 | min-block-size: none; |
| 302 | inline-size: 100%; | 344 | inline-size: 100%; |
| 303 | min-inline-size: 0; | 345 | min-inline-size: 0; |
| 304 | } | 346 | } |
| 305 | } | 347 | } |
| 306 | } | 348 | } |
| 307 | 349 | ||
| 308 | @include bem.modifier('collapsible') { | 350 | @include bem.modifier("collapsible") { |
| 309 | display: block; | 351 | display: block; |
| 310 | interpolate-size: allow-keywords; | 352 | interpolate-size: allow-keywords; |
| 311 | 353 | ||
| 312 | @include bem.elem("header") { | 354 | @include bem.elem("header") { |
| 313 | display: flex; | 355 | display: flex; |
| 314 | align-items: center; | 356 | align-items: center; |
| 315 | gap: 1em; | 357 | gap: 1em; |
| 316 | cursor: pointer; | 358 | cursor: pointer; |
| 317 | 359 | ||
| 318 | &::before { | 360 | &::before { |
| 319 | margin: 0; | 361 | margin: 0; |
| 320 | inline-size: 1em; | 362 | inline-size: 1em; |
| 321 | font-size: 0.8em; | 363 | font-size: 0.8em; |
| 322 | content: "â–¶"; | 364 | content: "â–¶"; |
| 323 | } | 365 | } |
| 324 | 366 | ||
| 325 | &:focus-visible { | 367 | &:focus-visible { |
| 326 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | 368 | outline: props.get(vars.$key-focus--border-color) solid |
| 369 | props.get(vars.$key-focus--border-width); | ||
| 327 | outline-offset: calc(-1 * props.get(vars.$key-focus--border-width)); | 370 | outline-offset: calc(-1 * props.get(vars.$key-focus--border-width)); |
| 328 | border-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); | 371 | border-radius: calc(props.get(vars.$rounding) - props.get(vars.$border-width)); |
| 329 | } | 372 | } |
| 330 | 373 | ||
| 331 | @include bem.next-elem("body") { | 374 | @include bem.next-elem("body") { |
| @@ -334,7 +377,7 @@ | |||
| 334 | } | 377 | } |
| 335 | 378 | ||
| 336 | &::details-content { | 379 | &::details-content { |
| 337 | opacity: 0; | 380 | opacity: 0; |
| 338 | block-size: 0; | 381 | block-size: 0; |
| 339 | overflow-y: clip; | 382 | overflow-y: clip; |
| 340 | transition: | 383 | transition: |
| @@ -351,7 +394,7 @@ | |||
| 351 | } | 394 | } |
| 352 | 395 | ||
| 353 | &::details-content { | 396 | &::details-content { |
| 354 | opacity: 1; | 397 | opacity: 1; |
| 355 | block-size: auto; | 398 | block-size: auto; |
| 356 | } | 399 | } |
| 357 | } | 400 | } |
diff --git a/src/objects/_card.vars.scss b/src/objects/_card.vars.scss index 4616c80..96f3cb9 100644 --- a/src/objects/_card.vars.scss +++ b/src/objects/_card.vars.scss | |||
| @@ -1,51 +1,130 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | 4 | ||
| 5 | $divider-width: props.def(--o-card--divider-width, props.get(core.$border-width--thin)) !default; | 5 | $divider-width: props.def(--o-card--divider-width, props.get(core.$border-width--thin)) !default; |
| 6 | $border-width: props.def(--o-card--border-width, props.get(core.$border-width--thin)) !default; | 6 | $border-width: props.def(--o-card--border-width, props.get(core.$border-width--thin)) !default; |
| 7 | $sub-border-width: props.def(--o-card--sub-border-width, props.get(core.$border-width--thick)) !default; | 7 | $sub-border-width: props.def( |
| 8 | $pad-i: props.def(--o-card--pad-i, props.get(core.$size--300)) !default; | 8 | --o-card--sub-border-width, |
| 9 | $pad-b: props.def(--o-card--pad-b, props.get(core.$size--250)) !default; | 9 | props.get(core.$border-width--thick) |
| 10 | $spacing: props.def(--o-card--spacing, props.get(core.$size--200)) !default; | 10 | ) !default; |
| 11 | $rounding: props.def(--o-card--rounding, props.get(core.$rounding)) !default; | 11 | $pad-i: props.def(--o-card--pad-i, props.get(core.$size--300)) !default; |
| 12 | $pad-b: props.def(--o-card--pad-b, props.get(core.$size--250)) !default; | ||
| 13 | $spacing: props.def(--o-card--spacing, props.get(core.$size--200)) !default; | ||
| 14 | $rounding: props.def(--o-card--rounding, props.get(core.$rounding)) !default; | ||
| 12 | $image-overlay--pad-i: props.def(--o-card--image-overlay--pad-i, props.get($pad-i)) !default; | 15 | $image-overlay--pad-i: props.def(--o-card--image-overlay--pad-i, props.get($pad-i)) !default; |
| 13 | $image-overlay--pad-b: props.def(--o-card--image-overlay--pad-b, props.get($pad-b)) !default; | 16 | $image-overlay--pad-b: props.def(--o-card--image-overlay--pad-b, props.get($pad-b)) !default; |
| 14 | 17 | ||
| 15 | $hover--offset-b: props.def(--o-card--hover--offset-b, calc(-1 * props.get(core.$size--65))) !default; | 18 | $hover--offset-b: props.def( |
| 19 | --o-card--hover--offset-b, | ||
| 20 | calc(-1 * props.get(core.$size--65)) | ||
| 21 | ) !default; | ||
| 16 | 22 | ||
| 17 | $shadow-x: props.def(--o-card--shadow-x, props.get(core.$shadow--l1--x)) !default; | 23 | $shadow-x: props.def(--o-card--shadow-x, props.get(core.$shadow--l1--x)) !default; |
| 18 | $shadow-y: props.def(--o-card--shadow-y, props.get(core.$shadow--l1--y)) !default; | 24 | $shadow-y: props.def(--o-card--shadow-y, props.get(core.$shadow--l1--y)) !default; |
| 19 | $shadow-blur: props.def(--o-card--shadow-blur, props.get(core.$shadow--l1--blur)) !default; | 25 | $shadow-blur: props.def(--o-card--shadow-blur, props.get(core.$shadow--l1--blur)) !default; |
| 20 | $shadow-grow: props.def(--o-card--shadow-grow, props.get(core.$shadow--l1--grow)) !default; | 26 | $shadow-grow: props.def(--o-card--shadow-grow, props.get(core.$shadow--l1--grow)) !default; |
| 21 | 27 | ||
| 22 | $key-focus--border-width: props.def(--o-card--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; | 28 | $key-focus--border-width: props.def( |
| 23 | $key-focus--border-offset: props.def(--o-card--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; | 29 | --o-card--key-focus--border-width, |
| 24 | $key-focus--outline-width: props.def(--o-card--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; | 30 | props.get(core.$key-focus--border-width) |
| 31 | ) !default; | ||
| 32 | $key-focus--border-offset: props.def( | ||
| 33 | --o-card--key-focus--border-offset, | ||
| 34 | props.get(core.$key-focus--border-offset) | ||
| 35 | ) !default; | ||
| 36 | $key-focus--outline-width: props.def( | ||
| 37 | --o-card--key-focus--outline-width, | ||
| 38 | props.get(core.$key-focus--outline-width) | ||
| 39 | ) !default; | ||
| 25 | 40 | ||
| 26 | $shadow-color: props.def(--o-card--shadow-color, props.get(core.$theme, --shadow), 'color') !default; | 41 | $shadow-color: props.def( |
| 27 | $bg-color: props.def(--o-card--bg-color, props.get(core.$theme, --bg-l2), 'color') !default; | 42 | --o-card--shadow-color, |
| 28 | $border-color: props.def(--o-card--border-color, props.get(core.$theme, --box, --border), 'color') !default; | 43 | props.get(core.$theme, --shadow), |
| 29 | $divider-color: props.def(--o-card--divider-color, props.get(core.$theme, --border-mute), 'color') !default; | 44 | "color" |
| 45 | ) !default; | ||
| 46 | $bg-color: props.def(--o-card--bg-color, props.get(core.$theme, --bg-l2), "color") !default; | ||
| 47 | $border-color: props.def( | ||
| 48 | --o-card--border-color, | ||
| 49 | props.get(core.$theme, --box, --border), | ||
| 50 | "color" | ||
| 51 | ) !default; | ||
| 52 | $divider-color: props.def( | ||
| 53 | --o-card--divider-color, | ||
| 54 | props.get(core.$theme, --border-mute), | ||
| 55 | "color" | ||
| 56 | ) !default; | ||
| 30 | 57 | ||
| 31 | $highlight--shadow-x: props.def(--o-card--highlight--shadow-x, props.get(core.$shadow--l2--x)) !default; | 58 | $highlight--shadow-x: props.def( |
| 32 | $highlight--shadow-y: props.def(--o-card--highlight--shadow-y, props.get(core.$shadow--l2--y)) !default; | 59 | --o-card--highlight--shadow-x, |
| 33 | $highlight--shadow-blur: props.def(--o-card--highlight--shadow-blur, props.get(core.$shadow--l2--blur)) !default; | 60 | props.get(core.$shadow--l2--x) |
| 34 | $highlight--shadow-grow: props.def(--o-card--highlight--shadow-grow, props.get(core.$shadow--l2--grow)) !default; | 61 | ) !default; |
| 62 | $highlight--shadow-y: props.def( | ||
| 63 | --o-card--highlight--shadow-y, | ||
| 64 | props.get(core.$shadow--l2--y) | ||
| 65 | ) !default; | ||
| 66 | $highlight--shadow-blur: props.def( | ||
| 67 | --o-card--highlight--shadow-blur, | ||
| 68 | props.get(core.$shadow--l2--blur) | ||
| 69 | ) !default; | ||
| 70 | $highlight--shadow-grow: props.def( | ||
| 71 | --o-card--highlight--shadow-grow, | ||
| 72 | props.get(core.$shadow--l2--grow) | ||
| 73 | ) !default; | ||
| 35 | 74 | ||
| 36 | $highlight--border-width: props.def(--o-card--highlight--border-width, props.get(core.$border-width--medium)) !default; | 75 | $highlight--border-width: props.def( |
| 37 | $highlight--border-color: props.def(--o-card--highlight--border-color, props.get(core.$theme, --accent, --700) props.get(core.$theme, --accent, --700) props.get(core.$theme, --accent, --800), 'color') !default; | 76 | --o-card--highlight--border-width, |
| 38 | $highlight--shadow-color: props.def(--o-card--highlight--shadow-color, props.get(core.$theme, --accent, --200), 'color') !default; | 77 | props.get(core.$border-width--medium) |
| 78 | ) !default; | ||
| 79 | $highlight--border-color: props.def( | ||
| 80 | --o-card--highlight--border-color, | ||
| 81 | props.get(core.$theme, --accent, --700) props.get(core.$theme, --accent, --700) | ||
| 82 | props.get(core.$theme, --accent, --800), | ||
| 83 | "color" | ||
| 84 | ) !default; | ||
| 85 | $highlight--shadow-color: props.def( | ||
| 86 | --o-card--highlight--shadow-color, | ||
| 87 | props.get(core.$theme, --accent, --200), | ||
| 88 | "color" | ||
| 89 | ) !default; | ||
| 39 | 90 | ||
| 40 | $hover--bg-color: props.def(--o-card--hover--bg-color, color-mix(in lch, props.get($bg-color), props.get(core.$theme, --border-mute)), 'color') !default; | 91 | $hover--bg-color: props.def( |
| 41 | $hover--border-color: props.def(--o-card--hover--border-color, props.get(core.$theme, --border), 'color') !default; | 92 | --o-card--hover--bg-color, |
| 93 | color-mix(in lch, props.get($bg-color), props.get(core.$theme, --border-mute)), | ||
| 94 | "color" | ||
| 95 | ) !default; | ||
| 96 | $hover--border-color: props.def( | ||
| 97 | --o-card--hover--border-color, | ||
| 98 | props.get(core.$theme, --border), | ||
| 99 | "color" | ||
| 100 | ) !default; | ||
| 42 | 101 | ||
| 43 | $key-focus--label-color: props.def(--o-card--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default; | 102 | $key-focus--label-color: props.def( |
| 44 | $key-focus--border-color: props.def(--o-card--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; | 103 | --o-card--key-focus--label-color, |
| 45 | $key-focus--outline-color: props.def(--o-card--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; | 104 | props.get(core.$theme, --focus, --text), |
| 105 | "color" | ||
| 106 | ) !default; | ||
| 107 | $key-focus--border-color: props.def( | ||
| 108 | --o-card--key-focus--border-color, | ||
| 109 | props.get(core.$theme, --focus, --border), | ||
| 110 | "color" | ||
| 111 | ) !default; | ||
| 112 | $key-focus--outline-color: props.def( | ||
| 113 | --o-card--key-focus--outline-color, | ||
| 114 | props.get(core.$theme, --focus, --outline), | ||
| 115 | "color" | ||
| 116 | ) !default; | ||
| 46 | 117 | ||
| 47 | $quiet--image-color: props.def(--o-card--quiet--image-color, props.get(core.$theme, --bg-base), 'color') !default; | 118 | $quiet--image-color: props.def( |
| 48 | $quiet--hover--image-color: props.def(--o-card--quiet--hover--image-color, props.get(core.$theme, --border), 'color') !default; | 119 | --o-card--quiet--image-color, |
| 120 | props.get(core.$theme, --bg-base), | ||
| 121 | "color" | ||
| 122 | ) !default; | ||
| 123 | $quiet--hover--image-color: props.def( | ||
| 124 | --o-card--quiet--hover--image-color, | ||
| 125 | props.get(core.$theme, --border), | ||
| 126 | "color" | ||
| 127 | ) !default; | ||
| 49 | 128 | ||
| 50 | $pad-i--sm: props.def(--o-card--pad-i, props.get(core.$size--200), 'sm') !default; | 129 | $pad-i--sm: props.def(--o-card--pad-i, props.get(core.$size--200), "sm") !default; |
| 51 | $pad-b--sm: props.def(--o-card--pad-b, props.get(core.$size--175), 'sm') !default; | 130 | $pad-b--sm: props.def(--o-card--pad-b, props.get(core.$size--175), "sm") !default; |
diff --git a/src/objects/_checkbox.scss b/src/objects/_checkbox.scss index f3fb793..60cee65 100644 --- a/src/objects/_checkbox.scss +++ b/src/objects/_checkbox.scss | |||
| @@ -1,130 +1,140 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/functions' as fn; | 3 | @use "pkg:iro-sass/functions" as fn; |
| 4 | @use 'pkg:iro-sass/src/props'; | 4 | @use "pkg:iro-sass/props"; |
| 5 | @use '../props' as *; | 5 | @use "../props" as *; |
| 6 | @use '../core.vars' as core; | 6 | @use "../core.vars" as core; |
| 7 | 7 | ||
| 8 | @forward 'checkbox.vars'; | 8 | @forward "checkbox.vars"; |
| 9 | @use 'checkbox.vars' as vars; | 9 | @use "checkbox.vars" as vars; |
| 10 | 10 | ||
| 11 | @mixin styles { | 11 | @mixin styles { |
| 12 | @include materialize-at-root(meta.module-variables('vars')); | 12 | @include materialize-at-root(meta.module-variables("vars")); |
| 13 | 13 | ||
| 14 | @include bem.object('checkbox') { | 14 | @include bem.object("checkbox") { |
| 15 | position: relative; | 15 | position: relative; |
| 16 | display: inline-block; | 16 | display: inline-block; |
| 17 | padding-block: props.get(vars.$pad-b); | 17 | padding-block: props.get(vars.$pad-b); |
| 18 | padding-inline: props.get(vars.$pad-i); | 18 | padding-inline: props.get(vars.$pad-i); |
| 19 | margin-inline: | 19 | margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)) |
| 20 | calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)) | 20 | calc( |
| 21 | calc(props.get(vars.$spacing-sibling) - props.get(vars.$pad-b) - props.get(vars.$key-focus--border-offset)); | 21 | props.get(vars.$spacing-sibling) - props.get(vars.$pad-b) - props.get( |
| 22 | vars.$key-focus--border-offset | ||
| 23 | ) | ||
| 24 | ); | ||
| 22 | 25 | ||
| 23 | @include bem.elem('box') { | 26 | @include bem.elem("box") { |
| 24 | position: relative; | 27 | position: relative; |
| 25 | display: inline-block; | 28 | display: inline-block; |
| 26 | flex: 0 0 auto; | 29 | flex: 0 0 auto; |
| 27 | inline-size: props.get(vars.$size); | 30 | inline-size: props.get(vars.$size); |
| 28 | block-size: props.get(vars.$size); | 31 | block-size: props.get(vars.$size); |
| 29 | margin-block-start: calc(.5em * props.get(core.$font--standard--line-height) - .5 * props.get(vars.$size) - props.get(vars.$key-focus--border-offset)); | 32 | margin-block-start: calc( |
| 30 | vertical-align: top; | 33 | 0.5em * props.get(core.$font--standard--line-height) - 0.5 * |
| 31 | background-color: props.get(vars.$box-border-color); | 34 | props.get(vars.$size) - props.get(vars.$key-focus--border-offset) |
| 32 | background-clip: padding-box; | 35 | ); |
| 33 | border: props.get(vars.$key-focus--border-offset) solid transparent; | 36 | vertical-align: top; |
| 34 | border-radius: calc(props.get(vars.$border-width) + props.get(vars.$key-focus--border-offset)); | 37 | background-color: props.get(vars.$box-border-color); |
| 38 | background-clip: padding-box; | ||
| 39 | border: props.get(vars.$key-focus--border-offset) solid transparent; | ||
| 40 | border-radius: calc( | ||
| 41 | props.get(vars.$border-width) + props.get(vars.$key-focus--border-offset) | ||
| 42 | ); | ||
| 35 | 43 | ||
| 36 | &::before, | 44 | &::before, |
| 37 | &::after { | 45 | &::after { |
| 38 | position: absolute; | 46 | position: absolute; |
| 39 | display: block; | 47 | display: block; |
| 40 | content: ''; | 48 | content: ""; |
| 41 | } | 49 | } |
| 42 | 50 | ||
| 43 | &::before { | 51 | &::before { |
| 44 | inset-block-start: props.get(vars.$border-width); | 52 | inset-block-start: props.get(vars.$border-width); |
| 45 | inset-inline-start: props.get(vars.$border-width); | 53 | inset-inline-start: props.get(vars.$border-width); |
| 46 | z-index: 2; | 54 | z-index: 2; |
| 47 | inline-size: calc(props.get(vars.$size) - 2 * props.get(vars.$border-width)); | 55 | inline-size: calc(props.get(vars.$size) - 2 * props.get(vars.$border-width)); |
| 48 | block-size: calc(props.get(vars.$size) - 2 * props.get(vars.$border-width)); | 56 | block-size: calc(props.get(vars.$size) - 2 * props.get(vars.$border-width)); |
| 49 | background-color: props.get(vars.$box-bg-color); | 57 | background-color: props.get(vars.$box-bg-color); |
| 50 | transition: transform .2s ease; | 58 | transition: transform 0.2s ease; |
| 51 | } | 59 | } |
| 52 | 60 | ||
| 53 | &::after { | 61 | &::after { |
| 54 | inset-block-start: calc(.5 * props.get(vars.$size) - 1px); | 62 | inset-block-start: calc(0.5 * props.get(vars.$size) - 1px); |
| 55 | inset-inline-start: calc(1.5 * props.get(vars.$border-width)); | 63 | inset-inline-start: calc(1.5 * props.get(vars.$border-width)); |
| 56 | z-index: 3; | 64 | z-index: 3; |
| 57 | box-sizing: border-box; | 65 | box-sizing: border-box; |
| 58 | inline-size: calc(props.get(vars.$size) - 3 * props.get(vars.$border-width)); | 66 | inline-size: calc(props.get(vars.$size) - 3 * props.get(vars.$border-width)); |
| 59 | block-size: 0; | 67 | block-size: 0; |
| 60 | border-color: props.get(vars.$box-bg-color); | 68 | border-color: props.get(vars.$box-bg-color); |
| 61 | border-style: solid; | 69 | border-style: solid; |
| 62 | border-radius: 2px; | 70 | border-radius: 2px; |
| 63 | transform: scale(0); | 71 | transform: scale(0); |
| 64 | transition: transform .2s ease; | 72 | transition: transform 0.2s ease; |
| 65 | border-block-width: 0 2px; | 73 | border-block-width: 0 2px; |
| 66 | border-inline-width: 0 2px; | 74 | border-inline-width: 0 2px; |
| 67 | } | 75 | } |
| 68 | } | 76 | } |
| 69 | 77 | ||
| 70 | @include bem.elem('check-icon') { | 78 | @include bem.elem("check-icon") { |
| 71 | position: absolute; | 79 | position: absolute; |
| 72 | inset-block-start: calc(1 * props.get(vars.$border-width)); | 80 | inset-block-start: calc(1 * props.get(vars.$border-width)); |
| 73 | inset-inline-start: calc(1 * props.get(vars.$border-width)); | 81 | inset-inline-start: calc(1 * props.get(vars.$border-width)); |
| 74 | z-index: 2; | 82 | z-index: 2; |
| 75 | display: block; | 83 | display: block; |
| 76 | inline-size: calc(100% - 2 * props.get(vars.$border-width)); | 84 | inline-size: calc(100% - 2 * props.get(vars.$border-width)); |
| 77 | block-size: calc(100% - 2 * props.get(vars.$border-width)); | 85 | block-size: calc(100% - 2 * props.get(vars.$border-width)); |
| 78 | margin: 0; | 86 | margin: 0; |
| 79 | color: props.get(vars.$box-bg-color); | 87 | color: props.get(vars.$box-bg-color); |
| 80 | stroke-width: fn.px-to-rem(3px); | 88 | stroke-width: fn.px-to-rem(3px); |
| 81 | transform: scale(0); | 89 | transform: scale(0); |
| 82 | transform-origin: 40% 90%; | 90 | transform-origin: 40% 90%; |
| 83 | transition: transform .2s ease; | 91 | transition: transform 0.2s ease; |
| 84 | } | 92 | } |
| 85 | 93 | ||
| 86 | @include bem.elem('label') { | 94 | @include bem.elem("label") { |
| 87 | margin-inline-start: calc(props.get(vars.$label-gap) - props.get(vars.$key-focus--border-offset)); | 95 | margin-inline-start: calc( |
| 96 | props.get(vars.$label-gap) - props.get(vars.$key-focus--border-offset) | ||
| 97 | ); | ||
| 88 | } | 98 | } |
| 89 | 99 | ||
| 90 | @include bem.elem('native') { | 100 | @include bem.elem("native") { |
| 91 | position: absolute; | 101 | position: absolute; |
| 92 | inset-block-start: 0; | 102 | inset-block-start: 0; |
| 93 | inset-inline-start: 0; | 103 | inset-inline-start: 0; |
| 94 | z-index: -1; | 104 | z-index: -1; |
| 95 | inline-size: 100%; | 105 | inline-size: 100%; |
| 96 | block-size: 100%; | 106 | block-size: 100%; |
| 97 | padding: 0; | 107 | padding: 0; |
| 98 | margin: 0; | 108 | margin: 0; |
| 99 | overflow: hidden; | 109 | overflow: hidden; |
| 100 | appearance: none; | 110 | appearance: none; |
| 101 | border-radius: props.get(vars.$rounding); | 111 | border-radius: props.get(vars.$rounding); |
| 102 | 112 | ||
| 103 | &:hover, | 113 | &:hover, |
| 104 | &:focus-visible { | 114 | &:focus-visible { |
| 105 | @include bem.sibling-elem('label') { | 115 | @include bem.sibling-elem("label") { |
| 106 | color: props.get(vars.$hover--label-color); | 116 | color: props.get(vars.$hover--label-color); |
| 107 | } | 117 | } |
| 108 | 118 | ||
| 109 | @include bem.sibling-elem('box') { | 119 | @include bem.sibling-elem("box") { |
| 110 | background-color: props.get(vars.$hover--box-border-color); | 120 | background-color: props.get(vars.$hover--box-border-color); |
| 111 | } | 121 | } |
| 112 | } | 122 | } |
| 113 | 123 | ||
| 114 | &:checked { | 124 | &:checked { |
| 115 | @include bem.sibling-elem('box') { | 125 | @include bem.sibling-elem("box") { |
| 116 | &::before { | 126 | &::before { |
| 117 | transform: scale(0); | 127 | transform: scale(0); |
| 118 | } | 128 | } |
| 119 | 129 | ||
| 120 | @include bem.elem('check-icon') { | 130 | @include bem.elem("check-icon") { |
| 121 | transform: scale(1); | 131 | transform: scale(1); |
| 122 | } | 132 | } |
| 123 | } | 133 | } |
| 124 | } | 134 | } |
| 125 | 135 | ||
| 126 | &:indeterminate { | 136 | &:indeterminate { |
| 127 | @include bem.sibling-elem('box') { | 137 | @include bem.sibling-elem("box") { |
| 128 | &::before { | 138 | &::before { |
| 129 | transform: scale(0); | 139 | transform: scale(0); |
| 130 | } | 140 | } |
| @@ -133,18 +143,18 @@ | |||
| 133 | transform: scale(1); | 143 | transform: scale(1); |
| 134 | } | 144 | } |
| 135 | 145 | ||
| 136 | @include bem.elem('check-icon') { | 146 | @include bem.elem("check-icon") { |
| 137 | transform: scale(0); | 147 | transform: scale(0); |
| 138 | } | 148 | } |
| 139 | } | 149 | } |
| 140 | } | 150 | } |
| 141 | 151 | ||
| 142 | &:disabled { | 152 | &:disabled { |
| 143 | @include bem.sibling-elem('label') { | 153 | @include bem.sibling-elem("label") { |
| 144 | color: props.get(vars.$disabled--label-color); | 154 | color: props.get(vars.$disabled--label-color); |
| 145 | } | 155 | } |
| 146 | 156 | ||
| 147 | @include bem.sibling-elem('box') { | 157 | @include bem.sibling-elem("box") { |
| 148 | background-color: props.get(vars.$disabled--box-border-color); | 158 | background-color: props.get(vars.$disabled--box-border-color); |
| 149 | 159 | ||
| 150 | &::before { | 160 | &::before { |
| @@ -154,58 +164,59 @@ | |||
| 154 | } | 164 | } |
| 155 | 165 | ||
| 156 | &:focus-visible { | 166 | &:focus-visible { |
| 157 | @include bem.sibling-elem('label') { | 167 | @include bem.sibling-elem("label") { |
| 158 | color: props.get(vars.$key-focus--label-color); | 168 | color: props.get(vars.$key-focus--label-color); |
| 159 | } | 169 | } |
| 160 | 170 | ||
| 161 | @include bem.sibling-elem('box') { | 171 | @include bem.sibling-elem("box") { |
| 162 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | 172 | outline: props.get(vars.$key-focus--border-color) solid |
| 163 | box-shadow: | 173 | props.get(vars.$key-focus--border-width); |
| 164 | 0 | 174 | box-shadow: 0 0 0 |
| 165 | 0 | 175 | calc( |
| 166 | 0 | 176 | props.get(vars.$key-focus--border-width) + |
| 167 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | 177 | props.get(vars.$key-focus--outline-width) |
| 178 | ) | ||
| 168 | props.get(vars.$key-focus--outline-color); | 179 | props.get(vars.$key-focus--outline-color); |
| 169 | } | 180 | } |
| 170 | } | 181 | } |
| 171 | } | 182 | } |
| 172 | 183 | ||
| 173 | @include bem.modifier('standalone') { | 184 | @include bem.modifier("standalone") { |
| 174 | @include bem.elem('box') { | 185 | @include bem.elem("box") { |
| 175 | margin-block-start: 0; | 186 | margin-block-start: 0; |
| 176 | } | 187 | } |
| 177 | } | 188 | } |
| 178 | 189 | ||
| 179 | @include bem.modifier('accent') { | 190 | @include bem.modifier("accent") { |
| 180 | @include bem.elem('native') { | 191 | @include bem.elem("native") { |
| 181 | &:checked { | 192 | &:checked { |
| 182 | @include bem.sibling-elem('box') { | 193 | @include bem.sibling-elem("box") { |
| 183 | background-color: props.get(vars.$accent--box-border-color); | 194 | background-color: props.get(vars.$accent--box-border-color); |
| 184 | } | 195 | } |
| 185 | 196 | ||
| 186 | &:hover, | 197 | &:hover, |
| 187 | &:focus-visible { | 198 | &:focus-visible { |
| 188 | @include bem.sibling-elem('box') { | 199 | @include bem.sibling-elem("box") { |
| 189 | background-color: props.get(vars.$accent--hover--box-border-color); | 200 | background-color: props.get(vars.$accent--hover--box-border-color); |
| 190 | } | 201 | } |
| 191 | } | 202 | } |
| 192 | } | 203 | } |
| 193 | 204 | ||
| 194 | &:indeterminate { | 205 | &:indeterminate { |
| 195 | @include bem.sibling-elem('box') { | 206 | @include bem.sibling-elem("box") { |
| 196 | background-color: props.get(vars.$accent--box-border-color); | 207 | background-color: props.get(vars.$accent--box-border-color); |
| 197 | } | 208 | } |
| 198 | 209 | ||
| 199 | &:hover, | 210 | &:hover, |
| 200 | &:focus-visible { | 211 | &:focus-visible { |
| 201 | @include bem.sibling-elem('box') { | 212 | @include bem.sibling-elem("box") { |
| 202 | background-color: props.get(vars.$accent--hover--box-border-color); | 213 | background-color: props.get(vars.$accent--hover--box-border-color); |
| 203 | } | 214 | } |
| 204 | } | 215 | } |
| 205 | } | 216 | } |
| 206 | 217 | ||
| 207 | &:disabled { | 218 | &:disabled { |
| 208 | @include bem.sibling-elem('box') { | 219 | @include bem.sibling-elem("box") { |
| 209 | background-color: props.get(vars.$disabled--box-border-color); | 220 | background-color: props.get(vars.$disabled--box-border-color); |
| 210 | 221 | ||
| 211 | &::before { | 222 | &::before { |
| @@ -214,13 +225,13 @@ | |||
| 214 | } | 225 | } |
| 215 | 226 | ||
| 216 | &:checked { | 227 | &:checked { |
| 217 | @include bem.sibling-elem('box') { | 228 | @include bem.sibling-elem("box") { |
| 218 | background-color: props.get(vars.$disabled--box-border-color); | 229 | background-color: props.get(vars.$disabled--box-border-color); |
| 219 | } | 230 | } |
| 220 | } | 231 | } |
| 221 | 232 | ||
| 222 | &:indeterminate { | 233 | &:indeterminate { |
| 223 | @include bem.sibling-elem('box') { | 234 | @include bem.sibling-elem("box") { |
| 224 | background-color: props.get(vars.$disabled--box-border-color); | 235 | background-color: props.get(vars.$disabled--box-border-color); |
| 225 | } | 236 | } |
| 226 | } | 237 | } |
diff --git a/src/objects/_checkbox.vars.scss b/src/objects/_checkbox.vars.scss index 278aac8..8362aa7 100644 --- a/src/objects/_checkbox.vars.scss +++ b/src/objects/_checkbox.vars.scss | |||
| @@ -1,32 +1,92 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | 4 | ||
| 5 | $size: props.def(--o-checkbox--size, props.get(core.$size--175)) !default; | 5 | $size: props.def(--o-checkbox--size, props.get(core.$size--175)) !default; |
| 6 | $label-gap: props.def(--o-checkbox--label-gap, props.get(core.$size--125)) !default; | 6 | $label-gap: props.def(--o-checkbox--label-gap, props.get(core.$size--125)) !default; |
| 7 | $border-width: props.def(--o-checkbox--border-width, props.get(core.$border-width--medium)) !default; | 7 | $border-width: props.def( |
| 8 | $pad-i: props.def(--o-checkbox--pad-i, props.get(core.$size--65)) !default; | 8 | --o-checkbox--border-width, |
| 9 | $pad-b: props.def(--o-checkbox--pad-b, props.get(core.$size--65)) !default; | 9 | props.get(core.$border-width--medium) |
| 10 | $rounding: props.def(--o-checkbox--rounding, props.get(core.$rounding--sm)) !default; | 10 | ) !default; |
| 11 | $pad-i: props.def(--o-checkbox--pad-i, props.get(core.$size--65)) !default; | ||
| 12 | $pad-b: props.def(--o-checkbox--pad-b, props.get(core.$size--65)) !default; | ||
| 13 | $rounding: props.def(--o-checkbox--rounding, props.get(core.$rounding--sm)) !default; | ||
| 11 | $spacing-sibling: props.def(--o-checkbox--spacing-sibling, props.get(core.$size--300)) !default; | 14 | $spacing-sibling: props.def(--o-checkbox--spacing-sibling, props.get(core.$size--300)) !default; |
| 12 | 15 | ||
| 13 | $key-focus--border-width: props.def(--o-checkbox--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; | 16 | $key-focus--border-width: props.def( |
| 14 | $key-focus--border-offset: props.def(--o-checkbox--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; | 17 | --o-checkbox--key-focus--border-width, |
| 15 | $key-focus--outline-width: props.def(--o-checkbox--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; | 18 | props.get(core.$key-focus--border-width) |
| 19 | ) !default; | ||
| 20 | $key-focus--border-offset: props.def( | ||
| 21 | --o-checkbox--key-focus--border-offset, | ||
| 22 | props.get(core.$key-focus--border-offset) | ||
| 23 | ) !default; | ||
| 24 | $key-focus--outline-width: props.def( | ||
| 25 | --o-checkbox--key-focus--outline-width, | ||
| 26 | props.get(core.$key-focus--outline-width) | ||
| 27 | ) !default; | ||
| 16 | 28 | ||
| 17 | $box-border-color: props.def(--o-checkbox--box-border-color, props.get(core.$theme, --text-mute-more), 'color') !default; | 29 | $box-border-color: props.def( |
| 18 | $box-bg-color: props.def(--o-checkbox--box-bg-color, props.get(core.$theme, --base, --75), 'color') !default; | 30 | --o-checkbox--box-border-color, |
| 31 | props.get(core.$theme, --text-mute-more), | ||
| 32 | "color" | ||
| 33 | ) !default; | ||
| 34 | $box-bg-color: props.def( | ||
| 35 | --o-checkbox--box-bg-color, | ||
| 36 | props.get(core.$theme, --base, --75), | ||
| 37 | "color" | ||
| 38 | ) !default; | ||
| 19 | 39 | ||
| 20 | $hover--label-color: props.def(--o-checkbox--hover--label-color, props.get(core.$theme, --heading), 'color') !default; | 40 | $hover--label-color: props.def( |
| 21 | $hover--box-border-color: props.def(--o-checkbox--hover--box-border-color, props.get(core.$theme, --text-mute), 'color') !default; | 41 | --o-checkbox--hover--label-color, |
| 42 | props.get(core.$theme, --heading), | ||
| 43 | "color" | ||
| 44 | ) !default; | ||
| 45 | $hover--box-border-color: props.def( | ||
| 46 | --o-checkbox--hover--box-border-color, | ||
| 47 | props.get(core.$theme, --text-mute), | ||
| 48 | "color" | ||
| 49 | ) !default; | ||
| 22 | 50 | ||
| 23 | $accent--box-border-color: props.def(--o-checkbox--accent--box-border-color, props.get(core.$theme, --accent, --900), 'color') !default; | 51 | $accent--box-border-color: props.def( |
| 24 | $accent--hover--box-border-color: props.def(--o-checkbox--accent--hover--box-border-color, props.get(core.$theme, --accent, --1000), 'color') !default; | 52 | --o-checkbox--accent--box-border-color, |
| 53 | props.get(core.$theme, --accent, --900), | ||
| 54 | "color" | ||
| 55 | ) !default; | ||
| 56 | $accent--hover--box-border-color: props.def( | ||
| 57 | --o-checkbox--accent--hover--box-border-color, | ||
| 58 | props.get(core.$theme, --accent, --1000), | ||
| 59 | "color" | ||
| 60 | ) !default; | ||
| 25 | 61 | ||
| 26 | $disabled--label-color: props.def(--o-checkbox--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default; | 62 | $disabled--label-color: props.def( |
| 27 | $disabled--box-border-color: props.def(--o-checkbox--disabled--box-border-color, props.get(core.$theme, --border-strong), 'color') !default; | 63 | --o-checkbox--disabled--label-color, |
| 28 | $disabled--box-bg-color: props.def(--o-checkbox--disabled--box-bg-color, props.get(core.$theme, --base, --75), 'color') !default; | 64 | props.get(core.$theme, --text-disabled), |
| 65 | "color" | ||
| 66 | ) !default; | ||
| 67 | $disabled--box-border-color: props.def( | ||
| 68 | --o-checkbox--disabled--box-border-color, | ||
| 69 | props.get(core.$theme, --border-strong), | ||
| 70 | "color" | ||
| 71 | ) !default; | ||
| 72 | $disabled--box-bg-color: props.def( | ||
| 73 | --o-checkbox--disabled--box-bg-color, | ||
| 74 | props.get(core.$theme, --base, --75), | ||
| 75 | "color" | ||
| 76 | ) !default; | ||
| 29 | 77 | ||
| 30 | $key-focus--label-color: props.def(--o-checkbox--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default; | 78 | $key-focus--label-color: props.def( |
| 31 | $key-focus--border-color: props.def(--o-checkbox--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; | 79 | --o-checkbox--key-focus--label-color, |
| 32 | $key-focus--outline-color: props.def(--o-checkbox--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; | 80 | props.get(core.$theme, --focus, --text), |
| 81 | "color" | ||
| 82 | ) !default; | ||
| 83 | $key-focus--border-color: props.def( | ||
| 84 | --o-checkbox--key-focus--border-color, | ||
| 85 | props.get(core.$theme, --focus, --border), | ||
| 86 | "color" | ||
| 87 | ) !default; | ||
| 88 | $key-focus--outline-color: props.def( | ||
| 89 | --o-checkbox--key-focus--outline-color, | ||
| 90 | props.get(core.$theme, --focus, --outline), | ||
| 91 | "color" | ||
| 92 | ) !default; | ||
diff --git a/src/objects/_dialog.scss b/src/objects/_dialog.scss index d2ee8c3..f5584e6 100644 --- a/src/objects/_dialog.scss +++ b/src/objects/_dialog.scss | |||
| @@ -1,29 +1,29 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'dialog.vars'; | 6 | @forward "dialog.vars"; |
| 7 | @use 'dialog.vars' as vars; | 7 | @use "dialog.vars" as vars; |
| 8 | 8 | ||
| 9 | @use 'backdrop.vars' as backdrop; | 9 | @use "backdrop.vars" as backdrop; |
| 10 | @use 'divider.vars' as divider; | 10 | @use "divider.vars" as divider; |
| 11 | 11 | ||
| 12 | @mixin styles { | 12 | @mixin styles { |
| 13 | @include materialize-at-root(meta.module-variables('vars')); | 13 | @include materialize-at-root(meta.module-variables("vars")); |
| 14 | 14 | ||
| 15 | @include bem.object('dialog') { | 15 | @include bem.object("dialog") { |
| 16 | display: none; | 16 | display: none; |
| 17 | box-sizing: border-box; | 17 | box-sizing: border-box; |
| 18 | inline-size: 100%; | 18 | inline-size: 100%; |
| 19 | max-inline-size: none; | 19 | max-inline-size: none; |
| 20 | block-size: 100%; | 20 | block-size: 100%; |
| 21 | min-block-size: 0; | 21 | min-block-size: 0; |
| 22 | max-block-size: none; | 22 | max-block-size: none; |
| 23 | padding: props.get(vars.$pad-b) props.get(vars.$pad-i); | 23 | padding: props.get(vars.$pad-b) props.get(vars.$pad-i); |
| 24 | margin: 0; | 24 | margin: 0; |
| 25 | background-color: transparent; | 25 | background-color: transparent; |
| 26 | border: 0; | 26 | border: 0; |
| 27 | 27 | ||
| 28 | &::backdrop { | 28 | &::backdrop { |
| 29 | background-color: props.get(backdrop.$bg-color); | 29 | background-color: props.get(backdrop.$bg-color); |
| @@ -31,38 +31,40 @@ | |||
| 31 | } | 31 | } |
| 32 | 32 | ||
| 33 | &[open], | 33 | &[open], |
| 34 | &:popover-open { | 34 | &:popover-open { |
| 35 | display: flex; | 35 | display: flex; |
| 36 | flex-direction: column; | 36 | flex-direction: column; |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | @include bem.elem('content') { | 39 | @include bem.elem("content") { |
| 40 | pointer-events: auto; | 40 | pointer-events: auto; |
| 41 | border-radius: props.get(vars.$rounding); | 41 | border-radius: props.get(vars.$rounding); |
| 42 | background-color: props.get(vars.$bg-color); | 42 | background-color: props.get(vars.$bg-color); |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | @include bem.elem('header') { | 45 | @include bem.elem("header") { |
| 46 | display: flex; | 46 | display: flex; |
| 47 | align-items: center; | 47 | align-items: center; |
| 48 | padding: props.get(vars.$body--pad-i) props.get(vars.$body--pad-i) 0; | 48 | padding: props.get(vars.$body--pad-i) props.get(vars.$body--pad-i) 0; |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | @include bem.elem('divider') { | 51 | @include bem.elem("divider") { |
| 52 | margin-inline: props.get(vars.$body--pad-i); | 52 | margin-inline: props.get(vars.$body--pad-i); |
| 53 | 53 | ||
| 54 | @include bem.next-elem('body') { | 54 | @include bem.next-elem("body") { |
| 55 | padding-block-start: calc(.5 * props.get(vars.$body--pad-b) - props.get(divider.$margin-b)); | 55 | padding-block-start: calc( |
| 56 | 0.5 * props.get(vars.$body--pad-b) - props.get(divider.$margin-b) | ||
| 57 | ); | ||
| 56 | } | 58 | } |
| 57 | } | 59 | } |
| 58 | 60 | ||
| 59 | @include bem.elem('body') { | 61 | @include bem.elem("body") { |
| 60 | padding: props.get(vars.$body--pad-b) props.get(vars.$body--pad-i); | 62 | padding: props.get(vars.$body--pad-b) props.get(vars.$body--pad-i); |
| 61 | 63 | ||
| 62 | &::before { | 64 | &::before { |
| 63 | display: block; | 65 | display: block; |
| 64 | margin-block: -100em 100em; | 66 | margin-block: -100em 100em; |
| 65 | content: ''; | 67 | content: ""; |
| 66 | } | 68 | } |
| 67 | } | 69 | } |
| 68 | } | 70 | } |
diff --git a/src/objects/_dialog.vars.scss b/src/objects/_dialog.vars.scss index 39c47ba..8650e51 100644 --- a/src/objects/_dialog.vars.scss +++ b/src/objects/_dialog.vars.scss | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | @use '../layouts/container.vars' as container; | 4 | @use "../layouts/container.vars" as container; |
| 5 | 5 | ||
| 6 | $pad-b: props.def(--o-dialog--pad-b, props.get(container.$pad-i)) !default; | 6 | $pad-b: props.def(--o-dialog--pad-b, props.get(container.$pad-i)) !default; |
| 7 | $pad-i: props.def(--o-dialog--pad-b, props.get(container.$pad-i)) !default; | 7 | $pad-i: props.def(--o-dialog--pad-b, props.get(container.$pad-i)) !default; |
| 8 | $rounding: props.def(--o-dialog--rounding, props.get(core.$rounding)) !default; | 8 | $rounding: props.def(--o-dialog--rounding, props.get(core.$rounding)) !default; |
| 9 | 9 | ||
| 10 | $border-width: props.def(--o-dialog--border-width, props.get(core.$border-width--thin)) !default; | 10 | $border-width: props.def(--o-dialog--border-width, props.get(core.$border-width--thin)) !default; |
| @@ -12,5 +12,9 @@ $border-width: props.def(--o-dialog--border-width, props.get(core.$border-width- | |||
| 12 | $body--pad-b: props.def(--o-dialog--body--pad-b, props.get(container.$pad-i)) !default; | 12 | $body--pad-b: props.def(--o-dialog--body--pad-b, props.get(container.$pad-i)) !default; |
| 13 | $body--pad-i: props.def(--o-dialog--body--pad-i, props.get(container.$pad-i)) !default; | 13 | $body--pad-i: props.def(--o-dialog--body--pad-i, props.get(container.$pad-i)) !default; |
| 14 | 14 | ||
| 15 | $bg-color: props.def(--o-dialog--bg-color, props.get(core.$theme, --bg-l1), 'color') !default; | 15 | $bg-color: props.def(--o-dialog--bg-color, props.get(core.$theme, --bg-l1), "color") !default; |
| 16 | $border-color: props.def(--o-dialog--border-color, props.get(core.$theme, --border-mute), 'color') !default; | 16 | $border-color: props.def( |
| 17 | --o-dialog--border-color, | ||
| 18 | props.get(core.$theme, --border-mute), | ||
| 19 | "color" | ||
| 20 | ) !default; | ||
diff --git a/src/objects/_divider.scss b/src/objects/_divider.scss index d81284b..f082d12 100644 --- a/src/objects/_divider.scss +++ b/src/objects/_divider.scss | |||
| @@ -1,38 +1,38 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:meta'; | 2 | @use "sass:meta"; |
| 3 | @use 'sass:string'; | 3 | @use "sass:string"; |
| 4 | @use 'pkg:iro-sass/src/bem'; | 4 | @use "pkg:iro-sass/bem"; |
| 5 | @use 'pkg:iro-sass/src/props'; | 5 | @use "pkg:iro-sass/props"; |
| 6 | @use '../props' as *; | 6 | @use "../props" as *; |
| 7 | @use '../core.vars' as core; | 7 | @use "../core.vars" as core; |
| 8 | 8 | ||
| 9 | @forward 'divider.vars'; | 9 | @forward "divider.vars"; |
| 10 | @use 'divider.vars' as vars; | 10 | @use "divider.vars" as vars; |
| 11 | 11 | ||
| 12 | @mixin styles { | 12 | @mixin styles { |
| 13 | @include materialize-at-root(meta.module-variables('vars')); | 13 | @include materialize-at-root(meta.module-variables("vars")); |
| 14 | 14 | ||
| 15 | @include bem.object('divider') { | 15 | @include bem.object("divider") { |
| 16 | display: flex; | 16 | display: flex; |
| 17 | flex: 0 0 auto; | 17 | flex: 0 0 auto; |
| 18 | flex-direction: row; | 18 | flex-direction: row; |
| 19 | align-items: center; | 19 | align-items: center; |
| 20 | block-size: 1em; | 20 | block-size: 1em; |
| 21 | margin-block: props.get(vars.$margin-b); | 21 | margin-block: props.get(vars.$margin-b); |
| 22 | font-size: props.get(vars.$strong--label-font-size); | 22 | font-size: props.get(vars.$strong--label-font-size); |
| 23 | font-weight: 700; | 23 | font-weight: 700; |
| 24 | line-height: 1; | 24 | line-height: 1; |
| 25 | color: props.get(vars.$strong--label-color); | 25 | color: props.get(vars.$strong--label-color); |
| 26 | text-transform: uppercase; | 26 | text-transform: uppercase; |
| 27 | letter-spacing: props.get(vars.$letter-spacing); | 27 | letter-spacing: props.get(vars.$letter-spacing); |
| 28 | background-color: transparent; | 28 | background-color: transparent; |
| 29 | 29 | ||
| 30 | &::before, | 30 | &::before, |
| 31 | &::after { | 31 | &::after { |
| 32 | flex: 1 1 auto; | 32 | flex: 1 1 auto; |
| 33 | inline-size: 100%; | 33 | inline-size: 100%; |
| 34 | block-size: props.get(vars.$strong--border-width); | 34 | block-size: props.get(vars.$strong--border-width); |
| 35 | content: ''; | 35 | content: ""; |
| 36 | background-color: props.get(vars.$strong--bg-color); | 36 | background-color: props.get(vars.$strong--bg-color); |
| 37 | } | 37 | } |
| 38 | 38 | ||
| @@ -40,15 +40,15 @@ | |||
| 40 | display: block; | 40 | display: block; |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | @include bem.elem('label') { | 43 | @include bem.elem("label") { |
| 44 | flex: 0 0 auto; | 44 | flex: 0 0 auto; |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | @include bem.modifier('vertical') { | 47 | @include bem.modifier("vertical") { |
| 48 | align-self: stretch; | 48 | align-self: stretch; |
| 49 | inline-size: props.get(vars.$vertical--border-width); | 49 | inline-size: props.get(vars.$vertical--border-width); |
| 50 | block-size: auto; | 50 | block-size: auto; |
| 51 | margin-block: 0; | 51 | margin-block: 0; |
| 52 | background-color: props.get(vars.$strong--bg-color); | 52 | background-color: props.get(vars.$strong--bg-color); |
| 53 | 53 | ||
| 54 | &::before, | 54 | &::before, |
| @@ -57,13 +57,13 @@ | |||
| 57 | } | 57 | } |
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | @include bem.modifier('dot') { | 60 | @include bem.modifier("dot") { |
| 61 | align-self: center; | 61 | align-self: center; |
| 62 | inline-size: props.get(vars.$dot--size); | 62 | inline-size: props.get(vars.$dot--size); |
| 63 | block-size: props.get(vars.$dot--size); | 63 | block-size: props.get(vars.$dot--size); |
| 64 | margin-block: 0; | 64 | margin-block: 0; |
| 65 | background-color: props.get(vars.$strong--bg-color); | 65 | background-color: props.get(vars.$strong--bg-color); |
| 66 | border-radius: props.get(vars.$dot--size); | 66 | border-radius: props.get(vars.$dot--size); |
| 67 | 67 | ||
| 68 | &::before, | 68 | &::before, |
| 69 | &::after { | 69 | &::after { |
| @@ -71,73 +71,73 @@ | |||
| 71 | } | 71 | } |
| 72 | } | 72 | } |
| 73 | 73 | ||
| 74 | @include bem.modifier('medium') { | 74 | @include bem.modifier("medium") { |
| 75 | font-size: props.get(vars.$medium--label-font-size); | 75 | font-size: props.get(vars.$medium--label-font-size); |
| 76 | font-weight: 500; | 76 | font-weight: 500; |
| 77 | color: props.get(vars.$medium--label-color); | 77 | color: props.get(vars.$medium--label-color); |
| 78 | 78 | ||
| 79 | &::before, | 79 | &::before, |
| 80 | &::after { | 80 | &::after { |
| 81 | block-size: props.get(vars.$medium--border-width); | 81 | block-size: props.get(vars.$medium--border-width); |
| 82 | background-color: props.get(vars.$medium--bg-color); | 82 | background-color: props.get(vars.$medium--bg-color); |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | @include bem.modifier('vertical') { | 85 | @include bem.modifier("vertical") { |
| 86 | background-color: props.get(vars.$medium--bg-color); | 86 | background-color: props.get(vars.$medium--bg-color); |
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | @include bem.modifier('dot') { | 89 | @include bem.modifier("dot") { |
| 90 | background-color: props.get(vars.$medium--bg-color); | 90 | background-color: props.get(vars.$medium--bg-color); |
| 91 | } | 91 | } |
| 92 | } | 92 | } |
| 93 | 93 | ||
| 94 | @include bem.modifier('quiet') { | 94 | @include bem.modifier("quiet") { |
| 95 | font-size: props.get(vars.$quiet--label-font-size); | 95 | font-size: props.get(vars.$quiet--label-font-size); |
| 96 | font-weight: 500; | 96 | font-weight: 500; |
| 97 | color: props.get(vars.$quiet--label-color); | 97 | color: props.get(vars.$quiet--label-color); |
| 98 | 98 | ||
| 99 | &::before, | 99 | &::before, |
| 100 | &::after { | 100 | &::after { |
| 101 | block-size: props.get(vars.$quiet--border-width); | 101 | block-size: props.get(vars.$quiet--border-width); |
| 102 | background-color: props.get(vars.$quiet--bg-color); | 102 | background-color: props.get(vars.$quiet--bg-color); |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | @include bem.modifier('vertical') { | 105 | @include bem.modifier("vertical") { |
| 106 | background-color: props.get(vars.$vertical--quiet--bg-color); | 106 | background-color: props.get(vars.$vertical--quiet--bg-color); |
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | @include bem.modifier('dot') { | 109 | @include bem.modifier("dot") { |
| 110 | background-color: props.get(vars.$dot--quiet--bg-color); | 110 | background-color: props.get(vars.$dot--quiet--bg-color); |
| 111 | } | 111 | } |
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | @include bem.modifier('faint') { | 114 | @include bem.modifier("faint") { |
| 115 | font-size: props.get(vars.$faint--label-font-size); | 115 | font-size: props.get(vars.$faint--label-font-size); |
| 116 | font-weight: 500; | 116 | font-weight: 500; |
| 117 | color: props.get(vars.$faint--label-color); | 117 | color: props.get(vars.$faint--label-color); |
| 118 | 118 | ||
| 119 | &::before, | 119 | &::before, |
| 120 | &::after { | 120 | &::after { |
| 121 | block-size: props.get(vars.$faint--border-width); | 121 | block-size: props.get(vars.$faint--border-width); |
| 122 | background-color: props.get(vars.$faint--bg-color); | 122 | background-color: props.get(vars.$faint--bg-color); |
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | @include bem.modifier('vertical') { | 125 | @include bem.modifier("vertical") { |
| 126 | background-color: props.get(vars.$vertical--quiet--bg-color); | 126 | background-color: props.get(vars.$vertical--quiet--bg-color); |
| 127 | } | 127 | } |
| 128 | 128 | ||
| 129 | @include bem.modifier('dot') { | 129 | @include bem.modifier("dot") { |
| 130 | background-color: props.get(vars.$dot--quiet--bg-color); | 130 | background-color: props.get(vars.$dot--quiet--bg-color); |
| 131 | } | 131 | } |
| 132 | } | 132 | } |
| 133 | 133 | ||
| 134 | @include bem.modifier('labelled') { | 134 | @include bem.modifier("labelled") { |
| 135 | &::before { | 135 | &::before { |
| 136 | margin-inline-end: 1em; | 136 | margin-inline-end: 1em; |
| 137 | } | 137 | } |
| 138 | 138 | ||
| 139 | &::after { | 139 | &::after { |
| 140 | display: block; | 140 | display: block; |
| 141 | margin-inline-start: 1em; | 141 | margin-inline-start: 1em; |
| 142 | } | 142 | } |
| 143 | } | 143 | } |
| @@ -149,7 +149,7 @@ | |||
| 149 | background-color: props.get(vars.$themes, $theme, --bg); | 149 | background-color: props.get(vars.$themes, $theme, --bg); |
| 150 | } | 150 | } |
| 151 | 151 | ||
| 152 | @include bem.elem('label') { | 152 | @include bem.elem("label") { |
| 153 | color: props.get(vars.$themes, $theme, --label); | 153 | color: props.get(vars.$themes, $theme, --label); |
| 154 | } | 154 | } |
| 155 | } | 155 | } |
| @@ -162,39 +162,39 @@ | |||
| 162 | background-color: props.get(vars.$static-themes, $theme, --strong, --bg); | 162 | background-color: props.get(vars.$static-themes, $theme, --strong, --bg); |
| 163 | } | 163 | } |
| 164 | 164 | ||
| 165 | @include bem.elem('label') { | 165 | @include bem.elem("label") { |
| 166 | color: props.get(vars.$static-themes, $theme, --strong, --label); | 166 | color: props.get(vars.$static-themes, $theme, --strong, --label); |
| 167 | } | 167 | } |
| 168 | 168 | ||
| 169 | @include bem.modifier('medium') { | 169 | @include bem.modifier("medium") { |
| 170 | &::before, | 170 | &::before, |
| 171 | &::after { | 171 | &::after { |
| 172 | background-color: props.get(vars.$static-themes, $theme, --medium, --bg); | 172 | background-color: props.get(vars.$static-themes, $theme, --medium, --bg); |
| 173 | } | 173 | } |
| 174 | 174 | ||
| 175 | @include bem.elem('label') { | 175 | @include bem.elem("label") { |
| 176 | color: props.get(vars.$static-themes, $theme, --medium, --label); | 176 | color: props.get(vars.$static-themes, $theme, --medium, --label); |
| 177 | } | 177 | } |
| 178 | } | 178 | } |
| 179 | 179 | ||
| 180 | @include bem.modifier('quiet') { | 180 | @include bem.modifier("quiet") { |
| 181 | &::before, | 181 | &::before, |
| 182 | &::after { | 182 | &::after { |
| 183 | background-color: props.get(vars.$static-themes, $theme, --quiet, --bg); | 183 | background-color: props.get(vars.$static-themes, $theme, --quiet, --bg); |
| 184 | } | 184 | } |
| 185 | 185 | ||
| 186 | @include bem.elem('label') { | 186 | @include bem.elem("label") { |
| 187 | color: props.get(vars.$static-themes, $theme, --quiet, --label); | 187 | color: props.get(vars.$static-themes, $theme, --quiet, --label); |
| 188 | } | 188 | } |
| 189 | } | 189 | } |
| 190 | 190 | ||
| 191 | @include bem.modifier('faint') { | 191 | @include bem.modifier("faint") { |
| 192 | &::before, | 192 | &::before, |
| 193 | &::after { | 193 | &::after { |
| 194 | background-color: props.get(vars.$static-themes, $theme, --faint, --bg); | 194 | background-color: props.get(vars.$static-themes, $theme, --faint, --bg); |
| 195 | } | 195 | } |
| 196 | 196 | ||
| 197 | @include bem.elem('label') { | 197 | @include bem.elem("label") { |
| 198 | color: props.get(vars.$static-themes, $theme, --faint, --label); | 198 | color: props.get(vars.$static-themes, $theme, --faint, --label); |
| 199 | } | 199 | } |
| 200 | } | 200 | } |
diff --git a/src/objects/_divider.vars.scss b/src/objects/_divider.vars.scss index a8b0f9f..38224d4 100644 --- a/src/objects/_divider.vars.scss +++ b/src/objects/_divider.vars.scss | |||
| @@ -1,80 +1,153 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:string'; | 2 | @use "sass:string"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../core.vars' as core; | 4 | @use "../core.vars" as core; |
| 5 | 5 | ||
| 6 | $margin-b: props.def(--o-divider--size, props.get(core.$size--85)) !default; | 6 | $margin-b: props.def(--o-divider--size, props.get(core.$size--85)) !default; |
| 7 | $vertical--border-width: props.def(--o-divider--vertical--width, props.get(core.$border-width--thin)) !default; | 7 | $vertical--border-width: props.def( |
| 8 | $dot--size: props.def(--o-divider--dot--size, props.get(core.$size--50)) !default; | 8 | --o-divider--vertical--width, |
| 9 | $letter-spacing: props.def(--o-divider--letter-spacing, 1px) !default; | 9 | props.get(core.$border-width--thin) |
| 10 | ) !default; | ||
| 11 | $dot--size: props.def(--o-divider--dot--size, props.get(core.$size--50)) !default; | ||
| 12 | $letter-spacing: props.def(--o-divider--letter-spacing, 1px) !default; | ||
| 10 | 13 | ||
| 11 | $strong--border-width: props.def(--o-divider--strong--border-width, props.get(core.$border-width--thick)) !default; | 14 | $strong--border-width: props.def( |
| 12 | $strong--label-font-size: props.def(--o-divider--strong--label-font-size, props.get(core.$font-size--100)) !default; | 15 | --o-divider--strong--border-width, |
| 16 | props.get(core.$border-width--thick) | ||
| 17 | ) !default; | ||
| 18 | $strong--label-font-size: props.def( | ||
| 19 | --o-divider--strong--label-font-size, | ||
| 20 | props.get(core.$font-size--100) | ||
| 21 | ) !default; | ||
| 13 | 22 | ||
| 14 | $medium--border-width: props.def(--o-divider--medium--border-width, props.get(core.$border-width--medium)) !default; | 23 | $medium--border-width: props.def( |
| 15 | $medium--label-font-size: props.def(--o-divider--medium--label-font-size, props.get(core.$font-size--75)) !default; | 24 | --o-divider--medium--border-width, |
| 25 | props.get(core.$border-width--medium) | ||
| 26 | ) !default; | ||
| 27 | $medium--label-font-size: props.def( | ||
| 28 | --o-divider--medium--label-font-size, | ||
| 29 | props.get(core.$font-size--75) | ||
| 30 | ) !default; | ||
| 16 | 31 | ||
| 17 | $quiet--border-width: props.def(--o-divider--quiet--border-width, props.get(core.$border-width--thin)) !default; | 32 | $quiet--border-width: props.def( |
| 18 | $quiet--label-font-size: props.def(--o-divider--quiet--label-font-size, props.get(core.$font-size--50)) !default; | 33 | --o-divider--quiet--border-width, |
| 34 | props.get(core.$border-width--thin) | ||
| 35 | ) !default; | ||
| 36 | $quiet--label-font-size: props.def( | ||
| 37 | --o-divider--quiet--label-font-size, | ||
| 38 | props.get(core.$font-size--50) | ||
| 39 | ) !default; | ||
| 19 | 40 | ||
| 20 | $faint--border-width: props.def(--o-divider--faint--border-width, props.get(core.$border-width--thin)) !default; | 41 | $faint--border-width: props.def( |
| 21 | $faint--label-font-size: props.def(--o-divider--faint--label-font-size, props.get(core.$font-size--50)) !default; | 42 | --o-divider--faint--border-width, |
| 43 | props.get(core.$border-width--thin) | ||
| 44 | ) !default; | ||
| 45 | $faint--label-font-size: props.def( | ||
| 46 | --o-divider--faint--label-font-size, | ||
| 47 | props.get(core.$font-size--50) | ||
| 48 | ) !default; | ||
| 22 | 49 | ||
| 23 | $strong--bg-color: props.def(--o-divider--strong--bg-color, props.get(core.$theme, --text), 'color') !default; | 50 | $strong--bg-color: props.def( |
| 24 | $strong--label-color: props.def(--o-divider--strong--label-color, props.get(core.$theme, --text), 'color') !default; | 51 | --o-divider--strong--bg-color, |
| 52 | props.get(core.$theme, --text), | ||
| 53 | "color" | ||
| 54 | ) !default; | ||
| 55 | $strong--label-color: props.def( | ||
| 56 | --o-divider--strong--label-color, | ||
| 57 | props.get(core.$theme, --text), | ||
| 58 | "color" | ||
| 59 | ) !default; | ||
| 25 | 60 | ||
| 26 | $medium--bg-color: props.def(--o-divider--medium--bg-color, props.get(core.$theme, --border), 'color') !default; | 61 | $medium--bg-color: props.def( |
| 27 | $medium--label-color: props.def(--o-divider--medium--label-color, props.get(core.$theme, --text-mute), 'color') !default; | 62 | --o-divider--medium--bg-color, |
| 63 | props.get(core.$theme, --border), | ||
| 64 | "color" | ||
| 65 | ) !default; | ||
| 66 | $medium--label-color: props.def( | ||
| 67 | --o-divider--medium--label-color, | ||
| 68 | props.get(core.$theme, --text-mute), | ||
| 69 | "color" | ||
| 70 | ) !default; | ||
| 28 | 71 | ||
| 29 | $quiet--bg-color: props.def(--o-divider--quiet--bg-color, props.get(core.$theme, --border), 'color') !default; | 72 | $quiet--bg-color: props.def( |
| 30 | $quiet--label-color: props.def(--o-divider--quiet--label-color, props.get(core.$theme, --text-mute-more), 'color') !default; | 73 | --o-divider--quiet--bg-color, |
| 74 | props.get(core.$theme, --border), | ||
| 75 | "color" | ||
| 76 | ) !default; | ||
| 77 | $quiet--label-color: props.def( | ||
| 78 | --o-divider--quiet--label-color, | ||
| 79 | props.get(core.$theme, --text-mute-more), | ||
| 80 | "color" | ||
| 81 | ) !default; | ||
| 31 | 82 | ||
| 32 | $faint--bg-color: props.def(--o-divider--faint--bg-color, props.get(core.$theme, --border-mute), 'color') !default; | 83 | $faint--bg-color: props.def( |
| 33 | $faint--label-color: props.def(--o-divider--faint--label-color, props.get(core.$theme, --text-disabled), 'color') !default; | 84 | --o-divider--faint--bg-color, |
| 85 | props.get(core.$theme, --border-mute), | ||
| 86 | "color" | ||
| 87 | ) !default; | ||
| 88 | $faint--label-color: props.def( | ||
| 89 | --o-divider--faint--label-color, | ||
| 90 | props.get(core.$theme, --text-disabled), | ||
| 91 | "color" | ||
| 92 | ) !default; | ||
| 34 | 93 | ||
| 35 | $vertical--quiet--bg-color: props.def(--o-divider--vertical--quiet--bg-color, props.get(core.$theme, --border-mute), 'color') !default; | 94 | $vertical--quiet--bg-color: props.def( |
| 95 | --o-divider--vertical--quiet--bg-color, | ||
| 96 | props.get(core.$theme, --border-mute), | ||
| 97 | "color" | ||
| 98 | ) !default; | ||
| 36 | 99 | ||
| 37 | $dot--quiet--bg-color: props.def(--o-divider--dot--quiet--bg-color, props.get(core.$theme, --border-mute), 'color') !default; | 100 | $dot--quiet--bg-color: props.def( |
| 101 | --o-divider--dot--quiet--bg-color, | ||
| 102 | props.get(core.$theme, --border-mute), | ||
| 103 | "color" | ||
| 104 | ) !default; | ||
| 38 | 105 | ||
| 39 | $static-themes: props.def(--o-divider, (), 'color'); | 106 | $static-themes: props.def(--o-divider, (), "color"); |
| 40 | 107 | ||
| 41 | @each $theme in map.keys(props.get(core.$transparent-colors)) { | 108 | @each $theme in map.keys(props.get(core.$transparent-colors)) { |
| 42 | $button-theme: --static-#{string.slice($theme, 3)}; | 109 | $button-theme: --static-#{string.slice($theme, 3)}; |
| 43 | 110 | ||
| 44 | $static-themes: props.merge($static-themes, ( | 111 | $static-themes: props.merge( |
| 45 | $button-theme: ( | 112 | $static-themes, |
| 46 | --strong: ( | 113 | ( |
| 47 | --bg: props.get(core.$transparent-colors, $theme, --800), | 114 | $button-theme: ( |
| 48 | --label: props.get(core.$transparent-colors, $theme, --900), | 115 | --strong: ( |
| 49 | ), | 116 | --bg: props.get(core.$transparent-colors, $theme, --800), |
| 50 | --medium: ( | 117 | --label: props.get(core.$transparent-colors, $theme, --900), |
| 51 | --bg: props.get(core.$transparent-colors, $theme, --300), | 118 | ), |
| 52 | --label: props.get(core.$transparent-colors, $theme, --500), | 119 | --medium: ( |
| 53 | ), | 120 | --bg: props.get(core.$transparent-colors, $theme, --300), |
| 54 | --quiet: ( | 121 | --label: props.get(core.$transparent-colors, $theme, --500), |
| 55 | --bg: props.get(core.$transparent-colors, $theme, --300), | 122 | ), |
| 56 | --label: props.get(core.$transparent-colors, $theme, --500), | 123 | --quiet: ( |
| 57 | ), | 124 | --bg: props.get(core.$transparent-colors, $theme, --300), |
| 58 | --faint: ( | 125 | --label: props.get(core.$transparent-colors, $theme, --500), |
| 59 | --bg: props.get(core.$transparent-colors, $theme, --200), | 126 | ), |
| 60 | --label: props.get(core.$transparent-colors, $theme, --400), | 127 | --faint: ( |
| 61 | ), | 128 | --bg: props.get(core.$transparent-colors, $theme, --200), |
| 129 | --label: props.get(core.$transparent-colors, $theme, --400), | ||
| 130 | ), | ||
| 131 | ), | ||
| 62 | ) | 132 | ) |
| 63 | )); | 133 | ); |
| 64 | } | 134 | } |
| 65 | 135 | ||
| 66 | $themes-config: ( | 136 | $themes-config: ( |
| 67 | accent: --accent, | 137 | accent: --accent, |
| 68 | negative: --negative, | 138 | negative: --negative, |
| 69 | ) !default; | 139 | ) !default; |
| 70 | 140 | ||
| 71 | $themes: props.def(--o-divider, (), 'color'); | 141 | $themes: props.def(--o-divider, (), "color"); |
| 72 | 142 | ||
| 73 | @each $theme, $key in $themes-config { | 143 | @each $theme, $key in $themes-config { |
| 74 | $themes: props.merge($themes, ( | 144 | $themes: props.merge( |
| 75 | --#{$theme}: ( | 145 | $themes, |
| 76 | --bg: props.get(core.$theme, $key, --800), | 146 | ( |
| 77 | --label: props.get(core.$theme, $key, --1000), | 147 | --#{$theme}: ( |
| 148 | --bg: props.get(core.$theme, $key, --800), | ||
| 149 | --label: props.get(core.$theme, $key, --1000), | ||
| 150 | ) | ||
| 78 | ) | 151 | ) |
| 79 | )); | 152 | ); |
| 80 | } | 153 | } |
diff --git a/src/objects/_emoji.scss b/src/objects/_emoji.scss index 655e662..0257b32 100644 --- a/src/objects/_emoji.scss +++ b/src/objects/_emoji.scss | |||
| @@ -1,49 +1,55 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | @use 'icon.vars' as icon; | 5 | @use "icon.vars" as icon; |
| 6 | 6 | ||
| 7 | @forward 'emoji.vars'; | 7 | @forward "emoji.vars"; |
| 8 | @use 'emoji.vars' as vars; | 8 | @use "emoji.vars" as vars; |
| 9 | 9 | ||
| 10 | @mixin styles { | 10 | @mixin styles { |
| 11 | @include materialize-at-root(meta.module-variables('vars')); | 11 | @include materialize-at-root(meta.module-variables("vars")); |
| 12 | 12 | ||
| 13 | @include bem.object('emoji') { | 13 | @include bem.object("emoji") { |
| 14 | position: relative; | 14 | position: relative; |
| 15 | display: inline-block; | 15 | display: inline-block; |
| 16 | inline-size: calc(props.get(vars.$size)); | 16 | inline-size: calc(props.get(vars.$size)); |
| 17 | block-size: calc(props.get(vars.$size)); | 17 | block-size: calc(props.get(vars.$size)); |
| 18 | padding: calc(props.get(vars.$pad)); | 18 | padding: calc(props.get(vars.$pad)); |
| 19 | margin: calc(-1 * props.get(vars.$pad)); | 19 | margin: calc(-1 * props.get(vars.$pad)); |
| 20 | vertical-align: props.get(vars.$valign); | 20 | vertical-align: props.get(vars.$valign); |
| 21 | object-fit: contain; | 21 | object-fit: contain; |
| 22 | 22 | ||
| 23 | @include bem.modifier('icon') { | 23 | @include bem.modifier("icon") { |
| 24 | margin: calc(-1 * props.get(vars.$pad) - .5 * (props.get(vars.$size) - props.get(icon.$size))); | 24 | margin: calc( |
| 25 | -1 * props.get(vars.$pad) - 0.5 * (props.get(vars.$size) - props.get(icon.$size)) | ||
| 26 | ); | ||
| 25 | vertical-align: props.get(icon.$valign); | 27 | vertical-align: props.get(icon.$valign); |
| 26 | } | 28 | } |
| 27 | 29 | ||
| 28 | @each $mod, $size, $valign in vars.$sizes { | 30 | @each $mod, $size, $valign in vars.$sizes { |
| 29 | @include bem.modifier($mod) { | 31 | @include bem.modifier($mod) { |
| 30 | inline-size: props.get($size); | 32 | inline-size: props.get($size); |
| 31 | block-size: props.get($size); | 33 | block-size: props.get($size); |
| 32 | vertical-align: props.get($valign); | 34 | vertical-align: props.get($valign); |
| 33 | 35 | ||
| 34 | @include bem.modifier('icon') { | 36 | @include bem.modifier("icon") { |
| 35 | margin: calc(-1 * props.get(vars.$pad) - .5 * (props.get($size) - props.get(icon.$size))); | 37 | margin: calc( |
| 38 | -1 * props.get(vars.$pad) - 0.5 * (props.get($size) - props.get(icon.$size)) | ||
| 39 | ); | ||
| 36 | } | 40 | } |
| 37 | } | 41 | } |
| 38 | } | 42 | } |
| 39 | 43 | ||
| 40 | @include bem.modifier('zoomable') { | 44 | @include bem.modifier("zoomable") { |
| 41 | border-radius: calc(props.get(vars.$rounding) / props.get(vars.$zoom)); | 45 | border-radius: calc(props.get(vars.$rounding) / props.get(vars.$zoom)); |
| 42 | transition: transform .2s ease, background-color .2s ease; | 46 | transition: |
| 47 | transform 0.2s ease, | ||
| 48 | background-color 0.2s ease; | ||
| 43 | 49 | ||
| 44 | &:hover { | 50 | &:hover { |
| 45 | background-color: props.get(vars.$bg-color); | 51 | background-color: props.get(vars.$bg-color); |
| 46 | transform: scale(props.get(vars.$zoom)); | 52 | transform: scale(props.get(vars.$zoom)); |
| 47 | } | 53 | } |
| 48 | } | 54 | } |
| 49 | } | 55 | } |
diff --git a/src/objects/_emoji.vars.scss b/src/objects/_emoji.vars.scss index cf940cf..1c2a0e2 100644 --- a/src/objects/_emoji.vars.scss +++ b/src/objects/_emoji.vars.scss | |||
| @@ -1,26 +1,26 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | 4 | ||
| 5 | $size: props.def(--o-emoji--size, calc(1 / 14 * 18em)) !default; | 5 | $size: props.def(--o-emoji--size, calc(1 / 14 * 18em)) !default; |
| 6 | $pad: props.def(--o-emoji--pad, .3em) !default; | 6 | $pad: props.def(--o-emoji--pad, 0.3em) !default; |
| 7 | $rounding: props.def(--o-emoji--rounding, props.get(core.$rounding--sm)) !default; | 7 | $rounding: props.def(--o-emoji--rounding, props.get(core.$rounding--sm)) !default; |
| 8 | $zoom: props.def(--o-emoji--zoom, 3) !default; | 8 | $zoom: props.def(--o-emoji--zoom, 3) !default; |
| 9 | $valign: props.def(--o-emoji--valign, -.25em) !default; | 9 | $valign: props.def(--o-emoji--valign, -0.25em) !default; |
| 10 | 10 | ||
| 11 | $size--125: props.def(--o-emoji--125--size, calc(1 / 14 * 23em)) !default; | 11 | $size--125: props.def(--o-emoji--125--size, calc(1 / 14 * 23em)) !default; |
| 12 | $valign--125: props.def(--o-emoji--125--valign, -.45em) !default; | 12 | $valign--125: props.def(--o-emoji--125--valign, -0.45em) !default; |
| 13 | 13 | ||
| 14 | $size--150: props.def(--o-emoji--150--size, calc(1 / 14 * 28em)) !default; | 14 | $size--150: props.def(--o-emoji--150--size, calc(1 / 14 * 28em)) !default; |
| 15 | $valign--150: props.def(--o-emoji--150--valign, -.65em) !default; | 15 | $valign--150: props.def(--o-emoji--150--valign, -0.65em) !default; |
| 16 | 16 | ||
| 17 | $size--200: props.def(--o-emoji--200--size, calc(1 / 14 * 38em)) !default; | 17 | $size--200: props.def(--o-emoji--200--size, calc(1 / 14 * 38em)) !default; |
| 18 | $valign--200: props.def(--o-emoji--200--valign, -1em) !default; | 18 | $valign--200: props.def(--o-emoji--200--valign, -1em) !default; |
| 19 | 19 | ||
| 20 | $sizes: ( | 20 | $sizes: ( |
| 21 | '125' $size--125 $valign--125, | 21 | "125" $size--125 $valign--125, |
| 22 | '150' $size--150 $valign--150, | 22 | "150" $size--150 $valign--150, |
| 23 | '200' $size--200 $valign--200, | 23 | "200" $size--200 $valign--200 |
| 24 | ) !default; | 24 | ) !default; |
| 25 | 25 | ||
| 26 | $bg-color: props.def(--o-emoji--bg-color, props.get(core.$theme, --border-mute), 'color') !default; | 26 | $bg-color: props.def(--o-emoji--bg-color, props.get(core.$theme, --border-mute), "color") !default; |
diff --git a/src/objects/_field-label.scss b/src/objects/_field-label.scss index 23875f5..fb664b4 100644 --- a/src/objects/_field-label.scss +++ b/src/objects/_field-label.scss | |||
| @@ -1,74 +1,74 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'field-label.vars'; | 6 | @forward "field-label.vars"; |
| 7 | @use 'field-label.vars' as vars; | 7 | @use "field-label.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.object('field-label') { | 12 | @include bem.object("field-label") { |
| 13 | @include bem.elem('label') { | 13 | @include bem.elem("label") { |
| 14 | display: block; | 14 | display: block; |
| 15 | flex: 0 0 auto; | 15 | flex: 0 0 auto; |
| 16 | padding-inline-end: props.get(vars.$spacing-i); | 16 | padding-inline-end: props.get(vars.$spacing-i); |
| 17 | font-size: props.get(vars.$label-font-size); | 17 | font-size: props.get(vars.$label-font-size); |
| 18 | font-weight: 400; | 18 | font-weight: 400; |
| 19 | line-height: 1.3; | 19 | line-height: 1.3; |
| 20 | color: props.get(vars.$label-color); | 20 | color: props.get(vars.$label-color); |
| 21 | 21 | ||
| 22 | @include bem.next-elem('content') { | 22 | @include bem.next-elem("content") { |
| 23 | margin-block-start: props.get(vars.$spacing-b); | 23 | margin-block-start: props.get(vars.$spacing-b); |
| 24 | } | 24 | } |
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | @include bem.elem('content') { | 27 | @include bem.elem("content") { |
| 28 | display: block; | 28 | display: block; |
| 29 | flex: 1 1 auto; | 29 | flex: 1 1 auto; |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | @include bem.elem('hint') { | 32 | @include bem.elem("hint") { |
| 33 | display: block; | 33 | display: block; |
| 34 | margin-block-start: props.get(vars.$spacing-b); | 34 | margin-block-start: props.get(vars.$spacing-b); |
| 35 | font-size: props.get(vars.$hint-font-size); | 35 | font-size: props.get(vars.$hint-font-size); |
| 36 | color: props.get(vars.$hint-color); | 36 | color: props.get(vars.$hint-color); |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | @include bem.is('invalid') { | 39 | @include bem.is("invalid") { |
| 40 | @include bem.elem('hint') { | 40 | @include bem.elem("hint") { |
| 41 | color: props.get(vars.$error-hint-color); | 41 | color: props.get(vars.$error-hint-color); |
| 42 | } | 42 | } |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | @include bem.is('disabled') { | 45 | @include bem.is("disabled") { |
| 46 | @include bem.elem('label', 'hint') { | 46 | @include bem.elem("label", "hint") { |
| 47 | color: props.get(vars.$disabled-color); | 47 | color: props.get(vars.$disabled-color); |
| 48 | } | 48 | } |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | @include bem.modifier('align-start', 'align-end') { | 51 | @include bem.modifier("align-start", "align-end") { |
| 52 | display: flex; | 52 | display: flex; |
| 53 | align-items: baseline; | 53 | align-items: baseline; |
| 54 | 54 | ||
| 55 | @include bem.elem('label') { | 55 | @include bem.elem("label") { |
| 56 | display: inline-block; | 56 | display: inline-block; |
| 57 | 57 | ||
| 58 | @include bem.next-elem('content') { | 58 | @include bem.next-elem("content") { |
| 59 | margin-block-start: 0; | 59 | margin-block-start: 0; |
| 60 | } | 60 | } |
| 61 | } | 61 | } |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | @include bem.modifier('align-start') { | 64 | @include bem.modifier("align-start") { |
| 65 | @include bem.elem('label') { | 65 | @include bem.elem("label") { |
| 66 | text-align: start; | 66 | text-align: start; |
| 67 | } | 67 | } |
| 68 | } | 68 | } |
| 69 | 69 | ||
| 70 | @include bem.modifier('align-end') { | 70 | @include bem.modifier("align-end") { |
| 71 | @include bem.elem('label') { | 71 | @include bem.elem("label") { |
| 72 | text-align: end; | 72 | text-align: end; |
| 73 | } | 73 | } |
| 74 | } | 74 | } |
diff --git a/src/objects/_field-label.vars.scss b/src/objects/_field-label.vars.scss index 5bd4547..4588e70 100644 --- a/src/objects/_field-label.vars.scss +++ b/src/objects/_field-label.vars.scss | |||
| @@ -1,12 +1,34 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | 3 | ||
| 4 | $spacing-i: props.def(--o-field-label--spacing-i, props.get(core.$size--150)) !default; | 4 | $spacing-i: props.def(--o-field-label--spacing-i, props.get(core.$size--150)) !default; |
| 5 | $spacing-b: props.def(--o-field-label--spacing-b, props.get(core.$size--85)) !default; | 5 | $spacing-b: props.def(--o-field-label--spacing-b, props.get(core.$size--85)) !default; |
| 6 | $label-font-size: props.def(--o-field-label--label-font-size, props.get(core.$font-size--75)) !default; | 6 | $label-font-size: props.def( |
| 7 | $hint-font-size: props.def(--o-field-label--hint-font-size, props.get(core.$font-size--75)) !default; | 7 | --o-field-label--label-font-size, |
| 8 | props.get(core.$font-size--75) | ||
| 9 | ) !default; | ||
| 10 | $hint-font-size: props.def( | ||
| 11 | --o-field-label--hint-font-size, | ||
| 12 | props.get(core.$font-size--75) | ||
| 13 | ) !default; | ||
| 8 | 14 | ||
| 9 | $label-color: props.def(--o-field-label--label-color, props.get(core.$theme, --text-mute), 'color') !default; | 15 | $label-color: props.def( |
| 10 | $hint-color: props.def(--o-field-label--hint-color, props.get(core.$theme, --text-mute), 'color') !default; | 16 | --o-field-label--label-color, |
| 11 | $error-hint-color: props.def(--o-field-label--error-hint-color, props.get(core.$theme, --negative, --900), 'color') !default; | 17 | props.get(core.$theme, --text-mute), |
| 12 | $disabled-color: props.def(--o-field-label--disabled-color, props.get(core.$theme, --text-disabled), 'color') !default; | 18 | "color" |
| 19 | ) !default; | ||
| 20 | $hint-color: props.def( | ||
| 21 | --o-field-label--hint-color, | ||
| 22 | props.get(core.$theme, --text-mute), | ||
| 23 | "color" | ||
| 24 | ) !default; | ||
| 25 | $error-hint-color: props.def( | ||
| 26 | --o-field-label--error-hint-color, | ||
| 27 | props.get(core.$theme, --negative, --900), | ||
| 28 | "color" | ||
| 29 | ) !default; | ||
| 30 | $disabled-color: props.def( | ||
| 31 | --o-field-label--disabled-color, | ||
| 32 | props.get(core.$theme, --text-disabled), | ||
| 33 | "color" | ||
| 34 | ) !default; | ||
diff --git a/src/objects/_figure.scss b/src/objects/_figure.scss index 04b9bdf..d3e37b3 100644 --- a/src/objects/_figure.scss +++ b/src/objects/_figure.scss | |||
| @@ -1,25 +1,25 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'figure.vars'; | 6 | @forward "figure.vars"; |
| 7 | @use 'figure.vars' as vars; | 7 | @use "figure.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.object('figure') { | 12 | @include bem.object("figure") { |
| 13 | @include bem.elem('caption') { | 13 | @include bem.elem("caption") { |
| 14 | padding-block: props.get(vars.$pad-b); | 14 | padding-block: props.get(vars.$pad-b); |
| 15 | font-size: props.get(vars.$font-size); | 15 | font-size: props.get(vars.$font-size); |
| 16 | color: props.get(vars.$text-color); | 16 | color: props.get(vars.$text-color); |
| 17 | border-block-end: props.get(vars.$border-width) solid props.get(vars.$border-color); | 17 | border-block-end: props.get(vars.$border-width) solid props.get(vars.$border-color); |
| 18 | 18 | ||
| 19 | &::before { | 19 | &::before { |
| 20 | display: block; | 20 | display: block; |
| 21 | margin-block: -100em 100em; | 21 | margin-block: -100em 100em; |
| 22 | content: ''; | 22 | content: ""; |
| 23 | } | 23 | } |
| 24 | } | 24 | } |
| 25 | } | 25 | } |
diff --git a/src/objects/_figure.vars.scss b/src/objects/_figure.vars.scss index 3de3406..936932d 100644 --- a/src/objects/_figure.vars.scss +++ b/src/objects/_figure.vars.scss | |||
| @@ -1,9 +1,17 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | 3 | ||
| 4 | $pad-b: props.def(--o-figure--pad-b, props.get(core.$size--100)) !default; | 4 | $pad-b: props.def(--o-figure--pad-b, props.get(core.$size--100)) !default; |
| 5 | $border-width: props.def(--o-figure--border-width, props.get(core.$border-width--thin)) !default; | 5 | $border-width: props.def(--o-figure--border-width, props.get(core.$border-width--thin)) !default; |
| 6 | $font-size: props.def(--o-figure--font-size, props.get(core.$font-size--100)) !default; | 6 | $font-size: props.def(--o-figure--font-size, props.get(core.$font-size--100)) !default; |
| 7 | 7 | ||
| 8 | $text-color: props.def(--o-figure--text-color, props.get(core.$theme, --text-mute-more), 'color') !default; | 8 | $text-color: props.def( |
| 9 | $border-color: props.def(--o-figure--border-color, props.get(core.$theme, --border), 'color') !default; | 9 | --o-figure--text-color, |
| 10 | props.get(core.$theme, --text-mute-more), | ||
| 11 | "color" | ||
| 12 | ) !default; | ||
| 13 | $border-color: props.def( | ||
| 14 | --o-figure--border-color, | ||
| 15 | props.get(core.$theme, --border), | ||
| 16 | "color" | ||
| 17 | ) !default; | ||
diff --git a/src/objects/_heading.scss b/src/objects/_heading.scss index 0e8392e..87a6269 100644 --- a/src/objects/_heading.scss +++ b/src/objects/_heading.scss | |||
| @@ -1,64 +1,70 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:meta'; | 2 | @use "sass:meta"; |
| 3 | @use 'sass:string'; | 3 | @use "sass:string"; |
| 4 | @use 'pkg:iro-sass/src/bem'; | 4 | @use "pkg:iro-sass/bem"; |
| 5 | @use 'pkg:iro-sass/src/props'; | 5 | @use "pkg:iro-sass/props"; |
| 6 | @use '../props' as *; | 6 | @use "../props" as *; |
| 7 | 7 | ||
| 8 | @forward 'heading.vars'; | 8 | @forward "heading.vars"; |
| 9 | @use 'heading.vars' as vars; | 9 | @use "heading.vars" as vars; |
| 10 | 10 | ||
| 11 | @mixin styles { | 11 | @mixin styles { |
| 12 | @include materialize-at-root(meta.module-variables('vars')); | 12 | @include materialize-at-root(meta.module-variables("vars")); |
| 13 | 13 | ||
| 14 | @include bem.object('heading') { | 14 | @include bem.object("heading") { |
| 15 | display: block; | 15 | display: block; |
| 16 | margin-block-start: props.get(vars.$margin-bs); | 16 | margin-block-start: props.get(vars.$margin-bs); |
| 17 | font-family: props.get(vars.$font-family); | 17 | font-family: props.get(vars.$font-family); |
| 18 | font-weight: props.get(vars.$font-weight); | 18 | font-weight: props.get(vars.$font-weight); |
| 19 | font-feature-settings: props.get(vars.$feature-settings); | 19 | font-feature-settings: props.get(vars.$feature-settings); |
| 20 | line-height: props.get(vars.$line-height); | 20 | line-height: props.get(vars.$line-height); |
| 21 | color: props.get(vars.$text-color); | 21 | color: props.get(vars.$text-color); |
| 22 | text-transform: props.get(vars.$text-transform); | 22 | text-transform: props.get(vars.$text-transform); |
| 23 | letter-spacing: normal; | 23 | letter-spacing: normal; |
| 24 | 24 | ||
| 25 | & + & { | 25 | & + & { |
| 26 | margin-block-start: props.get(vars.$margin-bs-sibling); | 26 | margin-block-start: props.get(vars.$margin-bs-sibling); |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | @include bem.elem('highlight') { | 29 | @include bem.elem("highlight") { |
| 30 | background-image: linear-gradient(to top, | 30 | background-image: linear-gradient( |
| 31 | transparent props.get(vars.$bg-start), | 31 | to top, |
| 32 | props.get(vars.$bg-color) props.get(vars.$bg-start), | 32 | transparent props.get(vars.$bg-start), |
| 33 | props.get(vars.$bg-color) props.get(vars.$bg-end), | 33 | props.get(vars.$bg-color) props.get(vars.$bg-start), |
| 34 | transparent props.get(vars.$bg-end)); | 34 | props.get(vars.$bg-color) props.get(vars.$bg-end), |
| 35 | transparent props.get(vars.$bg-end) | ||
| 36 | ); | ||
| 35 | } | 37 | } |
| 36 | 38 | ||
| 37 | @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, $feature-settings, $text-transform, $text-color in vars.$sizes { | 39 | @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, |
| 40 | $feature-settings, $text-transform, $text-color in vars.$sizes | ||
| 41 | { | ||
| 38 | @include bem.modifier($mod) { | 42 | @include bem.modifier($mod) { |
| 39 | font-family: props.get($font-family); | 43 | font-family: props.get($font-family); |
| 40 | font-size: props.get($font-size); | 44 | font-size: props.get($font-size); |
| 41 | font-weight: props.get($font-weight); | 45 | font-weight: props.get($font-weight); |
| 42 | font-feature-settings: props.get($feature-settings); | 46 | font-feature-settings: props.get($feature-settings); |
| 43 | line-height: props.get($line-height); | 47 | line-height: props.get($line-height); |
| 44 | color: props.get($text-color); | 48 | color: props.get($text-color); |
| 45 | text-transform: props.get($text-transform); | 49 | text-transform: props.get($text-transform); |
| 46 | letter-spacing: props.get($letter-spacing); | 50 | letter-spacing: props.get($letter-spacing); |
| 47 | } | 51 | } |
| 48 | } | 52 | } |
| 49 | 53 | ||
| 50 | @include bem.modifier('display') { | 54 | @include bem.modifier("display") { |
| 51 | @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, $feature-settings, $text-transform, $text-color in vars.$display--sizes { | 55 | @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, |
| 56 | $feature-settings, $text-transform, $text-color in vars.$display--sizes | ||
| 57 | { | ||
| 52 | @include bem.modifier($mod) { | 58 | @include bem.modifier($mod) { |
| 53 | font-family: props.get($font-family); | 59 | font-family: props.get($font-family); |
| 54 | font-size: props.get($font-size); | 60 | font-size: props.get($font-size); |
| 55 | font-weight: props.get($font-weight); | 61 | font-weight: props.get($font-weight); |
| 56 | font-feature-settings: props.get($feature-settings); | 62 | font-feature-settings: props.get($feature-settings); |
| 57 | line-height: props.get($line-height); | 63 | line-height: props.get($line-height); |
| 58 | color: props.get($text-color); | 64 | color: props.get($text-color); |
| 59 | text-transform: props.get($text-transform); | 65 | text-transform: props.get($text-transform); |
| 60 | letter-spacing: props.get($letter-spacing); | 66 | letter-spacing: props.get($letter-spacing); |
| 61 | transform: translateX(props.get(vars.$offset)); | 67 | transform: translateX(props.get(vars.$offset)); |
| 62 | } | 68 | } |
| 63 | } | 69 | } |
| 64 | } | 70 | } |
| @@ -73,18 +79,26 @@ | |||
| 73 | } | 79 | } |
| 74 | } | 80 | } |
| 75 | 81 | ||
| 76 | @include bem.elem('highlight') { | 82 | @include bem.elem("highlight") { |
| 77 | background-image: linear-gradient(to top, | 83 | background-image: linear-gradient( |
| 78 | transparent props.get(vars.$bg-start), | 84 | to top, |
| 79 | props.get(vars.$static-themes, $theme, --bg-color) props.get(vars.$bg-start), | 85 | transparent props.get(vars.$bg-start), |
| 80 | props.get(vars.$static-themes, $theme, --bg-color) props.get(vars.$bg-end), | 86 | props.get(vars.$static-themes, $theme, --bg-color) props.get(vars.$bg-start), |
| 81 | transparent props.get(vars.$bg-end)); | 87 | props.get(vars.$static-themes, $theme, --bg-color) props.get(vars.$bg-end), |
| 88 | transparent props.get(vars.$bg-end) | ||
| 89 | ); | ||
| 82 | } | 90 | } |
| 83 | 91 | ||
| 84 | @include bem.modifier('display') { | 92 | @include bem.modifier("display") { |
| 85 | @each $mod, $value in vars.$sizes { | 93 | @each $mod, $value in vars.$sizes { |
| 86 | @include bem.modifier($mod) { | 94 | @include bem.modifier($mod) { |
| 87 | color: props.get(vars.$static-themes, $theme, --display, --#{$mod}, --text-color); | 95 | color: props.get( |
| 96 | vars.$static-themes, | ||
| 97 | $theme, | ||
| 98 | --display, | ||
| 99 | --#{$mod}, | ||
| 100 | --text-color | ||
| 101 | ); | ||
| 88 | } | 102 | } |
| 89 | } | 103 | } |
| 90 | } | 104 | } |
diff --git a/src/objects/_heading.vars.scss b/src/objects/_heading.vars.scss index 4267b8c..8943622 100644 --- a/src/objects/_heading.vars.scss +++ b/src/objects/_heading.vars.scss | |||
| @@ -1,208 +1,472 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:string'; | 2 | @use "sass:string"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../core.vars' as core; | 4 | @use "../core.vars" as core; |
| 5 | 5 | ||
| 6 | $offset: props.def(--o-heading--offset, -.02em) !default; | 6 | $offset: props.def(--o-heading--offset, -0.02em) !default; |
| 7 | $margin-bs: props.def(--o-heading--margin-bs, props.get(core.$size--700)) !default; | 7 | $margin-bs: props.def(--o-heading--margin-bs, props.get(core.$size--700)) !default; |
| 8 | $margin-bs-sibling: props.def(--o-heading--margin-bs-sibling, props.get(core.$size--325)) !default; | 8 | $margin-bs-sibling: props.def(--o-heading--margin-bs-sibling, props.get(core.$size--325)) !default; |
| 9 | 9 | ||
| 10 | $text-color: props.def(--o-heading--text-color, props.get(core.$theme, --heading), 'color') !default; | 10 | $text-color: props.def( |
| 11 | $bg-color: props.def(--o-heading--bg-color, props.get(core.$theme, --base, --50), 'color') !default; | 11 | --o-heading--text-color, |
| 12 | props.get(core.$theme, --heading), | ||
| 13 | "color" | ||
| 14 | ) !default; | ||
| 15 | $bg-color: props.def(--o-heading--bg-color, props.get(core.$theme, --base, --50), "color") !default; | ||
| 12 | 16 | ||
| 13 | $text-color--xxl: props.def(--o-heading--xxl--text-color, props.get(core.$theme, --heading), 'color') !default; | 17 | $text-color--xxl: props.def( |
| 14 | $text-color--xl: props.def(--o-heading--xl--text-color, props.get($text-color--xxl), 'color') !default; | 18 | --o-heading--xxl--text-color, |
| 15 | $text-color--lg: props.def(--o-heading--lg--text-color, props.get($text-color--xxl), 'color') !default; | 19 | props.get(core.$theme, --heading), |
| 16 | $text-color--md: props.def(--o-heading--md--text-color, props.get($text-color--xxl), 'color') !default; | 20 | "color" |
| 17 | $text-color--sm: props.def(--o-heading--sm--text-color, props.get(core.$theme, --text-mute-more), 'color') !default; | 21 | ) !default; |
| 18 | $text-color--xs: props.def(--o-heading--xs--text-color, props.get($text-color--sm), 'color') !default; | 22 | $text-color--xl: props.def( |
| 23 | --o-heading--xl--text-color, | ||
| 24 | props.get($text-color--xxl), | ||
| 25 | "color" | ||
| 26 | ) !default; | ||
| 27 | $text-color--lg: props.def( | ||
| 28 | --o-heading--lg--text-color, | ||
| 29 | props.get($text-color--xxl), | ||
| 30 | "color" | ||
| 31 | ) !default; | ||
| 32 | $text-color--md: props.def( | ||
| 33 | --o-heading--md--text-color, | ||
| 34 | props.get($text-color--xxl), | ||
| 35 | "color" | ||
| 36 | ) !default; | ||
| 37 | $text-color--sm: props.def( | ||
| 38 | --o-heading--sm--text-color, | ||
| 39 | props.get(core.$theme, --text-mute-more), | ||
| 40 | "color" | ||
| 41 | ) !default; | ||
| 42 | $text-color--xs: props.def( | ||
| 43 | --o-heading--xs--text-color, | ||
| 44 | props.get($text-color--sm), | ||
| 45 | "color" | ||
| 46 | ) !default; | ||
| 19 | 47 | ||
| 20 | $display--text-color--xxl: props.def(--o-heading--display--xxl--text-color, props.get(core.$theme, --heading), 'color') !default; | 48 | $display--text-color--xxl: props.def( |
| 21 | $display--text-color--xl: props.def(--o-heading--display--xl--text-color, props.get($display--text-color--xxl), 'color') !default; | 49 | --o-heading--display--xxl--text-color, |
| 22 | $display--text-color--lg: props.def(--o-heading--display--lg--text-color, props.get($display--text-color--xxl), 'color') !default; | 50 | props.get(core.$theme, --heading), |
| 23 | $display--text-color--md: props.def(--o-heading--display--md--text-color, props.get($display--text-color--xxl), 'color') !default; | 51 | "color" |
| 24 | $display--text-color--sm: props.def(--o-heading--display--sm--text-color, props.get($display--text-color--xxl), 'color') !default; | 52 | ) !default; |
| 25 | $display--text-color--xs: props.def(--o-heading--display--xs--text-color, props.get(core.$theme, --text-mute-more), 'color') !default; | 53 | $display--text-color--xl: props.def( |
| 54 | --o-heading--display--xl--text-color, | ||
| 55 | props.get($display--text-color--xxl), | ||
| 56 | "color" | ||
| 57 | ) !default; | ||
| 58 | $display--text-color--lg: props.def( | ||
| 59 | --o-heading--display--lg--text-color, | ||
| 60 | props.get($display--text-color--xxl), | ||
| 61 | "color" | ||
| 62 | ) !default; | ||
| 63 | $display--text-color--md: props.def( | ||
| 64 | --o-heading--display--md--text-color, | ||
| 65 | props.get($display--text-color--xxl), | ||
| 66 | "color" | ||
| 67 | ) !default; | ||
| 68 | $display--text-color--sm: props.def( | ||
| 69 | --o-heading--display--sm--text-color, | ||
| 70 | props.get($display--text-color--xxl), | ||
| 71 | "color" | ||
| 72 | ) !default; | ||
| 73 | $display--text-color--xs: props.def( | ||
| 74 | --o-heading--display--xs--text-color, | ||
| 75 | props.get(core.$theme, --text-mute-more), | ||
| 76 | "color" | ||
| 77 | ) !default; | ||
| 26 | 78 | ||
| 27 | $bg-start: props.def(--o-heading--bg-start, .05em) !default; | 79 | $bg-start: props.def(--o-heading--bg-start, 0.05em) !default; |
| 28 | $bg-end: props.def(--o-heading--bg-end, .5em) !default; | 80 | $bg-end: props.def(--o-heading--bg-end, 0.5em) !default; |
| 29 | 81 | ||
| 30 | $font-family: props.def(--o-heading--font-family, props.get(core.$font--standard--family)) !default; | 82 | $font-family: props.def(--o-heading--font-family, props.get(core.$font--standard--family)) !default; |
| 31 | $line-height: props.def(--o-heading--line-height, props.get(core.$font--standard--line-height)) !default; | 83 | $line-height: props.def( |
| 32 | $font-weight: props.def(--o-heading--font-weight, bold) !default; | 84 | --o-heading--line-height, |
| 33 | $feature-settings: props.def(--o-heading--feature-settings, props.get(core.$font--standard--feature-settings)) !default; | 85 | props.get(core.$font--standard--line-height) |
| 34 | $text-transform: props.def(--o-heading--text-transform, none) !default; | 86 | ) !default; |
| 87 | $font-weight: props.def(--o-heading--font-weight, bold) !default; | ||
| 88 | $feature-settings: props.def( | ||
| 89 | --o-heading--feature-settings, | ||
| 90 | props.get(core.$font--standard--feature-settings) | ||
| 91 | ) !default; | ||
| 92 | $text-transform: props.def(--o-heading--text-transform, none) !default; | ||
| 35 | 93 | ||
| 36 | $font-family--xxl: props.def(--o-heading--xxl--font-family, props.get(core.$font--standard--family)) !default; | 94 | $font-family--xxl: props.def( |
| 37 | $line-height--xxl: props.def(--o-heading--xxl--line-height, props.get(core.$font--standard--line-height)) !default; | 95 | --o-heading--xxl--font-family, |
| 38 | $font-size--xxl: props.def(--o-heading--xxl--font-size, props.get(core.$font-size--300)) !default; | 96 | props.get(core.$font--standard--family) |
| 39 | $font-weight--xxl: props.def(--o-heading--xxl--font-weight, bold) !default; | 97 | ) !default; |
| 40 | $letter-spacing--xxl: props.def(--o-heading--xxl--letter-spacing, 0) !default; | 98 | $line-height--xxl: props.def( |
| 41 | $feature-settings--xxl: props.def(--o-heading--xxl--feature-settings, props.get(core.$font--standard--feature-settings)) !default; | 99 | --o-heading--xxl--line-height, |
| 42 | $text-transform--xxl: props.def(--o-heading--xxl--text-transform, none) !default; | 100 | props.get(core.$font--standard--line-height) |
| 101 | ) !default; | ||
| 102 | $font-size--xxl: props.def(--o-heading--xxl--font-size, props.get(core.$font-size--300)) !default; | ||
| 103 | $font-weight--xxl: props.def(--o-heading--xxl--font-weight, bold) !default; | ||
| 104 | $letter-spacing--xxl: props.def(--o-heading--xxl--letter-spacing, 0) !default; | ||
| 105 | $feature-settings--xxl: props.def( | ||
| 106 | --o-heading--xxl--feature-settings, | ||
| 107 | props.get(core.$font--standard--feature-settings) | ||
| 108 | ) !default; | ||
| 109 | $text-transform--xxl: props.def(--o-heading--xxl--text-transform, none) !default; | ||
| 43 | 110 | ||
| 44 | $font-family--xl: props.def(--o-heading--xl--font-family, props.get(core.$font--standard--family)) !default; | 111 | $font-family--xl: props.def( |
| 45 | $line-height--xl: props.def(--o-heading--xl--line-height, props.get(core.$font--standard--line-height)) !default; | 112 | --o-heading--xl--font-family, |
| 46 | $font-size--xl: props.def(--o-heading--xl--font-size, props.get(core.$font-size--200)) !default; | 113 | props.get(core.$font--standard--family) |
| 47 | $font-weight--xl: props.def(--o-heading--xl--font-weight, bold) !default; | 114 | ) !default; |
| 48 | $letter-spacing--xl: props.def(--o-heading--xl--letter-spacing, 0) !default; | 115 | $line-height--xl: props.def( |
| 49 | $feature-settings--xl: props.def(--o-heading--xl--feature-settings, props.get(core.$font--standard--feature-settings)) !default; | 116 | --o-heading--xl--line-height, |
| 50 | $text-transform--xl: props.def(--o-heading--xl--text-transform, none) !default; | 117 | props.get(core.$font--standard--line-height) |
| 118 | ) !default; | ||
| 119 | $font-size--xl: props.def(--o-heading--xl--font-size, props.get(core.$font-size--200)) !default; | ||
| 120 | $font-weight--xl: props.def(--o-heading--xl--font-weight, bold) !default; | ||
| 121 | $letter-spacing--xl: props.def(--o-heading--xl--letter-spacing, 0) !default; | ||
| 122 | $feature-settings--xl: props.def( | ||
| 123 | --o-heading--xl--feature-settings, | ||
| 124 | props.get(core.$font--standard--feature-settings) | ||
| 125 | ) !default; | ||
| 126 | $text-transform--xl: props.def(--o-heading--xl--text-transform, none) !default; | ||
| 51 | 127 | ||
| 52 | $font-family--lg: props.def(--o-heading--lg--font-family, props.get(core.$font--standard--family)) !default; | 128 | $font-family--lg: props.def( |
| 53 | $line-height--lg: props.def(--o-heading--lg--line-height, props.get(core.$font--standard--line-height)) !default; | 129 | --o-heading--lg--font-family, |
| 54 | $font-size--lg: props.def(--o-heading--lg--font-size, props.get(core.$font-size--150)) !default; | 130 | props.get(core.$font--standard--family) |
| 55 | $font-weight--lg: props.def(--o-heading--lg--font-weight, bold) !default; | 131 | ) !default; |
| 56 | $letter-spacing--lg: props.def(--o-heading--lg--letter-spacing, 0) !default; | 132 | $line-height--lg: props.def( |
| 57 | $feature-settings--lg: props.def(--o-heading--lg--feature-settings, props.get(core.$font--standard--feature-settings)) !default; | 133 | --o-heading--lg--line-height, |
| 58 | $text-transform--lg: props.def(--o-heading--lg--text-transform, none) !default; | 134 | props.get(core.$font--standard--line-height) |
| 135 | ) !default; | ||
| 136 | $font-size--lg: props.def(--o-heading--lg--font-size, props.get(core.$font-size--150)) !default; | ||
| 137 | $font-weight--lg: props.def(--o-heading--lg--font-weight, bold) !default; | ||
| 138 | $letter-spacing--lg: props.def(--o-heading--lg--letter-spacing, 0) !default; | ||
| 139 | $feature-settings--lg: props.def( | ||
| 140 | --o-heading--lg--feature-settings, | ||
| 141 | props.get(core.$font--standard--feature-settings) | ||
| 142 | ) !default; | ||
| 143 | $text-transform--lg: props.def(--o-heading--lg--text-transform, none) !default; | ||
| 59 | 144 | ||
| 60 | $font-family--md: props.def(--o-heading--md--font-family, props.get(core.$font--standard--family)) !default; | 145 | $font-family--md: props.def( |
| 61 | $line-height--md: props.def(--o-heading--md--line-height, props.get(core.$font--standard--line-height)) !default; | 146 | --o-heading--md--font-family, |
| 62 | $font-size--md: props.def(--o-heading--md--font-size, props.get(core.$font-size--100)) !default; | 147 | props.get(core.$font--standard--family) |
| 63 | $font-weight--md: props.def(--o-heading--md--font-weight, bold) !default; | 148 | ) !default; |
| 64 | $letter-spacing--md: props.def(--o-heading--md--letter-spacing, 0) !default; | 149 | $line-height--md: props.def( |
| 65 | $feature-settings--md: props.def(--o-heading--md--feature-settings, props.get(core.$font--standard--feature-settings)) !default; | 150 | --o-heading--md--line-height, |
| 66 | $text-transform--md: props.def(--o-heading--md--text-transform, none) !default; | 151 | props.get(core.$font--standard--line-height) |
| 152 | ) !default; | ||
| 153 | $font-size--md: props.def(--o-heading--md--font-size, props.get(core.$font-size--100)) !default; | ||
| 154 | $font-weight--md: props.def(--o-heading--md--font-weight, bold) !default; | ||
| 155 | $letter-spacing--md: props.def(--o-heading--md--letter-spacing, 0) !default; | ||
| 156 | $feature-settings--md: props.def( | ||
| 157 | --o-heading--md--feature-settings, | ||
| 158 | props.get(core.$font--standard--feature-settings) | ||
| 159 | ) !default; | ||
| 160 | $text-transform--md: props.def(--o-heading--md--text-transform, none) !default; | ||
| 67 | 161 | ||
| 68 | $font-family--sm: props.def(--o-heading--sm--font-family, props.get(core.$font--standard--family)) !default; | 162 | $font-family--sm: props.def( |
| 69 | $line-height--sm: props.def(--o-heading--sm--line-height, props.get(core.$font--standard--line-height)) !default; | 163 | --o-heading--sm--font-family, |
| 70 | $font-size--sm: props.def(--o-heading--sm--font-size, props.get(core.$font-size--100)) !default; | 164 | props.get(core.$font--standard--family) |
| 71 | $font-weight--sm: props.def(--o-heading--sm--font-weight, normal) !default; | 165 | ) !default; |
| 72 | $letter-spacing--sm: props.def(--o-heading--sm--letter-spacing, 0) !default; | 166 | $line-height--sm: props.def( |
| 73 | $feature-settings--sm: props.def(--o-heading--sm--feature-settings, props.get(core.$font--standard--feature-settings)) !default; | 167 | --o-heading--sm--line-height, |
| 74 | $text-transform--sm: props.def(--o-heading--sm--text-transform, none) !default; | 168 | props.get(core.$font--standard--line-height) |
| 169 | ) !default; | ||
| 170 | $font-size--sm: props.def(--o-heading--sm--font-size, props.get(core.$font-size--100)) !default; | ||
| 171 | $font-weight--sm: props.def(--o-heading--sm--font-weight, normal) !default; | ||
| 172 | $letter-spacing--sm: props.def(--o-heading--sm--letter-spacing, 0) !default; | ||
| 173 | $feature-settings--sm: props.def( | ||
| 174 | --o-heading--sm--feature-settings, | ||
| 175 | props.get(core.$font--standard--feature-settings) | ||
| 176 | ) !default; | ||
| 177 | $text-transform--sm: props.def(--o-heading--sm--text-transform, none) !default; | ||
| 75 | 178 | ||
| 76 | $font-family--xs: props.def(--o-heading--xs--font-family, props.get(core.$font--standard--family)) !default; | 179 | $font-family--xs: props.def( |
| 77 | $line-height--xs: props.def(--o-heading--xs--line-height, props.get(core.$font--standard--line-height)) !default; | 180 | --o-heading--xs--font-family, |
| 78 | $font-size--xs: props.def(--o-heading--xs--font-size, props.get(core.$font-size--50)) !default; | 181 | props.get(core.$font--standard--family) |
| 79 | $font-weight--xs: props.def(--o-heading--xs--font-weight, normal) !default; | 182 | ) !default; |
| 80 | $letter-spacing--xs: props.def(--o-heading--xs--letter-spacing, 1px) !default; | 183 | $line-height--xs: props.def( |
| 81 | $feature-settings--xs: props.def(--o-heading--xs--feature-settings, props.get(core.$font--standard--feature-settings)) !default; | 184 | --o-heading--xs--line-height, |
| 82 | $text-transform--xs: props.def(--o-heading--xs--text-transform, none) !default; | 185 | props.get(core.$font--standard--line-height) |
| 186 | ) !default; | ||
| 187 | $font-size--xs: props.def(--o-heading--xs--font-size, props.get(core.$font-size--50)) !default; | ||
| 188 | $font-weight--xs: props.def(--o-heading--xs--font-weight, normal) !default; | ||
| 189 | $letter-spacing--xs: props.def(--o-heading--xs--letter-spacing, 1px) !default; | ||
| 190 | $feature-settings--xs: props.def( | ||
| 191 | --o-heading--xs--feature-settings, | ||
| 192 | props.get(core.$font--standard--feature-settings) | ||
| 193 | ) !default; | ||
| 194 | $text-transform--xs: props.def(--o-heading--xs--text-transform, none) !default; | ||
| 83 | 195 | ||
| 84 | $sizes: ( | 196 | $sizes: ( |
| 85 | 'xs' $font-family--xs $line-height--xs $font-size--xs $font-weight--xs $letter-spacing--xs $feature-settings--xs $text-transform--xs $text-color--xs, | 197 | "xs" $font-family--xs $line-height--xs $font-size--xs $font-weight--xs $letter-spacing--xs |
| 86 | 'sm' $font-family--sm $line-height--sm $font-size--sm $font-weight--sm $letter-spacing--sm $feature-settings--sm $text-transform--sm $text-color--sm, | 198 | $feature-settings--xs $text-transform--xs $text-color--xs, |
| 87 | 'md' $font-family--md $line-height--md $font-size--md $font-weight--md $letter-spacing--md $feature-settings--md $text-transform--md $text-color--md, | 199 | "sm" $font-family--sm $line-height--sm $font-size--sm $font-weight--sm $letter-spacing--sm |
| 88 | 'lg' $font-family--lg $line-height--lg $font-size--lg $font-weight--lg $letter-spacing--lg $feature-settings--lg $text-transform--lg $text-color--lg, | 200 | $feature-settings--sm $text-transform--sm $text-color--sm, |
| 89 | 'xl' $font-family--xl $line-height--xl $font-size--xl $font-weight--xl $letter-spacing--xl $feature-settings--xl $text-transform--xl $text-color--xl, | 201 | "md" $font-family--md $line-height--md $font-size--md $font-weight--md $letter-spacing--md |
| 90 | 'xxl' $font-family--xxl $line-height--xxl $font-size--xxl $font-weight--xxl $letter-spacing--xxl $feature-settings--xxl $text-transform--xxl $text-color--xxl, | 202 | $feature-settings--md $text-transform--md $text-color--md, |
| 203 | "lg" $font-family--lg $line-height--lg $font-size--lg $font-weight--lg $letter-spacing--lg | ||
| 204 | $feature-settings--lg $text-transform--lg $text-color--lg, | ||
| 205 | "xl" $font-family--xl $line-height--xl $font-size--xl $font-weight--xl $letter-spacing--xl | ||
| 206 | $feature-settings--xl $text-transform--xl $text-color--xl, | ||
| 207 | "xxl" $font-family--xxl $line-height--xxl $font-size--xxl $font-weight--xxl $letter-spacing--xxl | ||
| 208 | $feature-settings--xxl $text-transform--xxl $text-color--xxl | ||
| 91 | ) !default; | 209 | ) !default; |
| 92 | 210 | ||
| 93 | $display--font-family--xxl: props.def(--o-heading--display--xxl--font-family, props.get(core.$font--headline--family)) !default; | 211 | $display--font-family--xxl: props.def( |
| 94 | $display--line-height--xxl: props.def(--o-heading--display--xxl--line-height, props.get(core.$font--headline--line-height)) !default; | 212 | --o-heading--display--xxl--font-family, |
| 95 | $display--font-size--xxl: props.def(--o-heading--display--xxl--font-size, props.get(core.$font-size--1100)) !default; | 213 | props.get(core.$font--headline--family) |
| 96 | $display--font-weight--xxl: props.def(--o-heading--display--xxl--font-weight, props.get(core.$font--headline--weight)) !default; | 214 | ) !default; |
| 97 | $display--letter-spacing--xxl: props.def(--o-heading--display--xxl--letter-spacing, 0) !default; | 215 | $display--line-height--xxl: props.def( |
| 98 | $display--feature-settings--xxl: props.def(--o-heading--display--xxl--feature-settings, props.get(core.$font--headline--feature-settings)) !default; | 216 | --o-heading--display--xxl--line-height, |
| 99 | $display--text-transform--xxl: props.def(--o-heading--display--xxl--text-transform, none) !default; | 217 | props.get(core.$font--headline--line-height) |
| 218 | ) !default; | ||
| 219 | $display--font-size--xxl: props.def( | ||
| 220 | --o-heading--display--xxl--font-size, | ||
| 221 | props.get(core.$font-size--1100) | ||
| 222 | ) !default; | ||
| 223 | $display--font-weight--xxl: props.def( | ||
| 224 | --o-heading--display--xxl--font-weight, | ||
| 225 | props.get(core.$font--headline--weight) | ||
| 226 | ) !default; | ||
| 227 | $display--letter-spacing--xxl: props.def(--o-heading--display--xxl--letter-spacing, 0) !default; | ||
| 228 | $display--feature-settings--xxl: props.def( | ||
| 229 | --o-heading--display--xxl--feature-settings, | ||
| 230 | props.get(core.$font--headline--feature-settings) | ||
| 231 | ) !default; | ||
| 232 | $display--text-transform--xxl: props.def(--o-heading--display--xxl--text-transform, none) !default; | ||
| 100 | 233 | ||
| 101 | $display--font-family--xl: props.def(--o-heading--display--xl--font-family, props.get(core.$font--headline--family)) !default; | 234 | $display--font-family--xl: props.def( |
| 102 | $display--line-height--xl: props.def(--o-heading--display--xl--line-height, props.get(core.$font--headline--line-height)) !default; | 235 | --o-heading--display--xl--font-family, |
| 103 | $display--font-size--xl: props.def(--o-heading--display--xl--font-size, props.get(core.$font-size--700)) !default; | 236 | props.get(core.$font--headline--family) |
| 104 | $display--font-weight--xl: props.def(--o-heading--display--xl--font-weight, props.get(core.$font--headline--weight)) !default; | 237 | ) !default; |
| 105 | $display--letter-spacing--xl: props.def(--o-heading--display--xl--letter-spacing, 0) !default; | 238 | $display--line-height--xl: props.def( |
| 106 | $display--feature-settings--xl: props.def(--o-heading--display--xl--feature-settings, props.get(core.$font--headline--feature-settings)) !default; | 239 | --o-heading--display--xl--line-height, |
| 107 | $display--text-transform--xl: props.def(--o-heading--display--xl--text-transform, none) !default; | 240 | props.get(core.$font--headline--line-height) |
| 241 | ) !default; | ||
| 242 | $display--font-size--xl: props.def( | ||
| 243 | --o-heading--display--xl--font-size, | ||
| 244 | props.get(core.$font-size--700) | ||
| 245 | ) !default; | ||
| 246 | $display--font-weight--xl: props.def( | ||
| 247 | --o-heading--display--xl--font-weight, | ||
| 248 | props.get(core.$font--headline--weight) | ||
| 249 | ) !default; | ||
| 250 | $display--letter-spacing--xl: props.def(--o-heading--display--xl--letter-spacing, 0) !default; | ||
| 251 | $display--feature-settings--xl: props.def( | ||
| 252 | --o-heading--display--xl--feature-settings, | ||
| 253 | props.get(core.$font--headline--feature-settings) | ||
| 254 | ) !default; | ||
| 255 | $display--text-transform--xl: props.def(--o-heading--display--xl--text-transform, none) !default; | ||
| 108 | 256 | ||
| 109 | $display--font-family--lg: props.def(--o-heading--display--lg--font-family, props.get(core.$font--headline--family)) !default; | 257 | $display--font-family--lg: props.def( |
| 110 | $display--line-height--lg: props.def(--o-heading--display--lg--line-height, props.get(core.$font--headline--line-height)) !default; | 258 | --o-heading--display--lg--font-family, |
| 111 | $display--font-size--lg: props.def(--o-heading--display--lg--font-size, props.get(core.$font-size--300)) !default; | 259 | props.get(core.$font--headline--family) |
| 112 | $display--font-weight--lg: props.def(--o-heading--display--lg--font-weight, props.get(core.$font--headline--weight)) !default; | 260 | ) !default; |
| 113 | $display--letter-spacing--lg: props.def(--o-heading--display--lg--letter-spacing, 1px) !default; | 261 | $display--line-height--lg: props.def( |
| 114 | $display--feature-settings--lg: props.def(--o-heading--display--lg--feature-settings, props.get(core.$font--headline--feature-settings)) !default; | 262 | --o-heading--display--lg--line-height, |
| 115 | $display--text-transform--lg: props.def(--o-heading--display--lg--text-transform, uppercase) !default; | 263 | props.get(core.$font--headline--line-height) |
| 264 | ) !default; | ||
| 265 | $display--font-size--lg: props.def( | ||
| 266 | --o-heading--display--lg--font-size, | ||
| 267 | props.get(core.$font-size--300) | ||
| 268 | ) !default; | ||
| 269 | $display--font-weight--lg: props.def( | ||
| 270 | --o-heading--display--lg--font-weight, | ||
| 271 | props.get(core.$font--headline--weight) | ||
| 272 | ) !default; | ||
| 273 | $display--letter-spacing--lg: props.def(--o-heading--display--lg--letter-spacing, 1px) !default; | ||
| 274 | $display--feature-settings--lg: props.def( | ||
| 275 | --o-heading--display--lg--feature-settings, | ||
| 276 | props.get(core.$font--headline--feature-settings) | ||
| 277 | ) !default; | ||
| 278 | $display--text-transform--lg: props.def( | ||
| 279 | --o-heading--display--lg--text-transform, | ||
| 280 | uppercase | ||
| 281 | ) !default; | ||
| 116 | 282 | ||
| 117 | $display--font-family--md: props.def(--o-heading--display--md--font-family, props.get(core.$font--standard--family)) !default; | 283 | $display--font-family--md: props.def( |
| 118 | $display--line-height--md: props.def(--o-heading--display--md--line-height, props.get(core.$font--standard--line-height)) !default; | 284 | --o-heading--display--md--font-family, |
| 119 | $display--font-size--md: props.def(--o-heading--display--md--font-size, props.get(core.$font-size--150)) !default; | 285 | props.get(core.$font--standard--family) |
| 120 | $display--font-weight--md: props.def(--o-heading--display--md--font-weight, bold) !default; | 286 | ) !default; |
| 121 | $display--letter-spacing--md: props.def(--o-heading--display--md--letter-spacing, 0) !default; | 287 | $display--line-height--md: props.def( |
| 122 | $display--feature-settings--md: props.def(--o-heading--display--md--feature-settings, props.get(core.$font--standard--feature-settings)) !default; | 288 | --o-heading--display--md--line-height, |
| 123 | $display--text-transform--md: props.def(--o-heading--display--md--text-transform, none) !default; | 289 | props.get(core.$font--standard--line-height) |
| 290 | ) !default; | ||
| 291 | $display--font-size--md: props.def( | ||
| 292 | --o-heading--display--md--font-size, | ||
| 293 | props.get(core.$font-size--150) | ||
| 294 | ) !default; | ||
| 295 | $display--font-weight--md: props.def(--o-heading--display--md--font-weight, bold) !default; | ||
| 296 | $display--letter-spacing--md: props.def(--o-heading--display--md--letter-spacing, 0) !default; | ||
| 297 | $display--feature-settings--md: props.def( | ||
| 298 | --o-heading--display--md--feature-settings, | ||
| 299 | props.get(core.$font--standard--feature-settings) | ||
| 300 | ) !default; | ||
| 301 | $display--text-transform--md: props.def(--o-heading--display--md--text-transform, none) !default; | ||
| 124 | 302 | ||
| 125 | $display--font-family--sm: props.def(--o-heading--display--sm--font-family, props.get(core.$font--standard--family)) !default; | 303 | $display--font-family--sm: props.def( |
| 126 | $display--line-height--sm: props.def(--o-heading--display--sm--line-height, props.get(core.$font--standard--line-height)) !default; | 304 | --o-heading--display--sm--font-family, |
| 127 | $display--font-size--sm: props.def(--o-heading--display--sm--font-size, props.get(core.$font-size--100)) !default; | 305 | props.get(core.$font--standard--family) |
| 128 | $display--font-weight--sm: props.def(--o-heading--display--sm--font-weight, bold) !default; | 306 | ) !default; |
| 129 | $display--letter-spacing--sm: props.def(--o-heading--display--sm--letter-spacing, 0) !default; | 307 | $display--line-height--sm: props.def( |
| 130 | $display--feature-settings--sm: props.def(--o-heading--display--sm--feature-settings, props.get(core.$font--standard--feature-settings)) !default; | 308 | --o-heading--display--sm--line-height, |
| 131 | $display--text-transform--sm: props.def(--o-heading--display--sm--text-transform, none) !default; | 309 | props.get(core.$font--standard--line-height) |
| 310 | ) !default; | ||
| 311 | $display--font-size--sm: props.def( | ||
| 312 | --o-heading--display--sm--font-size, | ||
| 313 | props.get(core.$font-size--100) | ||
| 314 | ) !default; | ||
| 315 | $display--font-weight--sm: props.def(--o-heading--display--sm--font-weight, bold) !default; | ||
| 316 | $display--letter-spacing--sm: props.def(--o-heading--display--sm--letter-spacing, 0) !default; | ||
| 317 | $display--feature-settings--sm: props.def( | ||
| 318 | --o-heading--display--sm--feature-settings, | ||
| 319 | props.get(core.$font--standard--feature-settings) | ||
| 320 | ) !default; | ||
| 321 | $display--text-transform--sm: props.def(--o-heading--display--sm--text-transform, none) !default; | ||
| 132 | 322 | ||
| 133 | $display--font-family--xs: props.def(--o-heading--display--xs--font-family, props.get(core.$font--standard--family)) !default; | 323 | $display--font-family--xs: props.def( |
| 134 | $display--line-height--xs: props.def(--o-heading--display--xs--line-height, props.get(core.$font--standard--line-height)) !default; | 324 | --o-heading--display--xs--font-family, |
| 135 | $display--font-size--xs: props.def(--o-heading--display--xs--font-size, props.get(core.$font-size--50)) !default; | 325 | props.get(core.$font--standard--family) |
| 136 | $display--font-weight--xs: props.def(--o-heading--display--xs--font-weight, normal) !default; | 326 | ) !default; |
| 137 | $display--letter-spacing--xs: props.def(--o-heading--display--xs--letter-spacing, 1px) !default; | 327 | $display--line-height--xs: props.def( |
| 138 | $display--feature-settings--xs: props.def(--o-heading--display--xs--feature-settings, props.get(core.$font--standard--feature-settings)) !default; | 328 | --o-heading--display--xs--line-height, |
| 139 | $display--text-transform--xs: props.def(--o-heading--display--xs--text-transform, none) !default; | 329 | props.get(core.$font--standard--line-height) |
| 330 | ) !default; | ||
| 331 | $display--font-size--xs: props.def( | ||
| 332 | --o-heading--display--xs--font-size, | ||
| 333 | props.get(core.$font-size--50) | ||
| 334 | ) !default; | ||
| 335 | $display--font-weight--xs: props.def(--o-heading--display--xs--font-weight, normal) !default; | ||
| 336 | $display--letter-spacing--xs: props.def(--o-heading--display--xs--letter-spacing, 1px) !default; | ||
| 337 | $display--feature-settings--xs: props.def( | ||
| 338 | --o-heading--display--xs--feature-settings, | ||
| 339 | props.get(core.$font--standard--feature-settings) | ||
| 340 | ) !default; | ||
| 341 | $display--text-transform--xs: props.def(--o-heading--display--xs--text-transform, none) !default; | ||
| 140 | 342 | ||
| 141 | $display--font-size--xxl--md: props.def(--o-heading--display--xxl--font-size, props.get(core.$font-size--900), 'md') !default; | 343 | $display--font-size--xxl--md: props.def( |
| 142 | $display--font-size--xl--md: props.def(--o-heading--display--xl--font-size, props.get(core.$font-size--600), 'md') !default; | 344 | --o-heading--display--xxl--font-size, |
| 143 | $display--font-size--lg--md: props.def(--o-heading--display--lg--font-size, props.get(core.$font-size--200), 'md') !default; | 345 | props.get(core.$font-size--900), |
| 144 | $display--font-size--md--md: props.def(--o-heading--display--md--font-size, props.get(core.$font-size--100), 'md') !default; | 346 | "md" |
| 145 | $display--font-size--sm--md: props.def(--o-heading--display--sm--font-size, props.get(core.$font-size--75), 'md') !default; | 347 | ) !default; |
| 146 | $display--font-size--xs--md: props.def(--o-heading--display--xs--font-size, props.get(core.$font-size--50), 'md') !default; | 348 | $display--font-size--xl--md: props.def( |
| 349 | --o-heading--display--xl--font-size, | ||
| 350 | props.get(core.$font-size--600), | ||
| 351 | "md" | ||
| 352 | ) !default; | ||
| 353 | $display--font-size--lg--md: props.def( | ||
| 354 | --o-heading--display--lg--font-size, | ||
| 355 | props.get(core.$font-size--200), | ||
| 356 | "md" | ||
| 357 | ) !default; | ||
| 358 | $display--font-size--md--md: props.def( | ||
| 359 | --o-heading--display--md--font-size, | ||
| 360 | props.get(core.$font-size--100), | ||
| 361 | "md" | ||
| 362 | ) !default; | ||
| 363 | $display--font-size--sm--md: props.def( | ||
| 364 | --o-heading--display--sm--font-size, | ||
| 365 | props.get(core.$font-size--75), | ||
| 366 | "md" | ||
| 367 | ) !default; | ||
| 368 | $display--font-size--xs--md: props.def( | ||
| 369 | --o-heading--display--xs--font-size, | ||
| 370 | props.get(core.$font-size--50), | ||
| 371 | "md" | ||
| 372 | ) !default; | ||
| 147 | 373 | ||
| 148 | $display--sizes: ( | 374 | $display--sizes: ( |
| 149 | 'xs' $display--font-family--xs $display--line-height--xs $display--font-size--xs $display--font-weight--xs $display--letter-spacing--xs $display--feature-settings--xs $display--text-transform--xs $display--text-color--xs, | 375 | "xs" $display--font-family--xs $display--line-height--xs $display--font-size--xs |
| 150 | 'sm' $display--font-family--sm $display--line-height--sm $display--font-size--sm $display--font-weight--sm $display--letter-spacing--sm $display--feature-settings--sm $display--text-transform--sm $display--text-color--sm, | 376 | $display--font-weight--xs $display--letter-spacing--xs $display--feature-settings--xs |
| 151 | 'md' $display--font-family--md $display--line-height--md $display--font-size--md $display--font-weight--md $display--letter-spacing--md $display--feature-settings--md $display--text-transform--md $display--text-color--md, | 377 | $display--text-transform--xs $display--text-color--xs, |
| 152 | 'lg' $display--font-family--lg $display--line-height--lg $display--font-size--lg $display--font-weight--lg $display--letter-spacing--lg $display--feature-settings--lg $display--text-transform--lg $display--text-color--lg, | 378 | "sm" $display--font-family--sm $display--line-height--sm $display--font-size--sm |
| 153 | 'xl' $display--font-family--xl $display--line-height--xl $display--font-size--xl $display--font-weight--xl $display--letter-spacing--xl $display--feature-settings--xl $display--text-transform--xl $display--text-color--xl, | 379 | $display--font-weight--sm $display--letter-spacing--sm $display--feature-settings--sm |
| 154 | 'xxl' $display--font-family--xxl $display--line-height--xxl $display--font-size--xxl $display--font-weight--xxl $display--letter-spacing--xxl $display--feature-settings--xxl $display--text-transform--xxl $display--text-color--xxl, | 380 | $display--text-transform--sm $display--text-color--sm, |
| 381 | "md" $display--font-family--md $display--line-height--md $display--font-size--md | ||
| 382 | $display--font-weight--md $display--letter-spacing--md $display--feature-settings--md | ||
| 383 | $display--text-transform--md $display--text-color--md, | ||
| 384 | "lg" $display--font-family--lg $display--line-height--lg $display--font-size--lg | ||
| 385 | $display--font-weight--lg $display--letter-spacing--lg $display--feature-settings--lg | ||
| 386 | $display--text-transform--lg $display--text-color--lg, | ||
| 387 | "xl" $display--font-family--xl $display--line-height--xl $display--font-size--xl | ||
| 388 | $display--font-weight--xl $display--letter-spacing--xl $display--feature-settings--xl | ||
| 389 | $display--text-transform--xl $display--text-color--xl, | ||
| 390 | "xxl" $display--font-family--xxl $display--line-height--xxl $display--font-size--xxl | ||
| 391 | $display--font-weight--xxl $display--letter-spacing--xxl $display--feature-settings--xxl | ||
| 392 | $display--text-transform--xxl $display--text-color--xxl | ||
| 155 | ) !default; | 393 | ) !default; |
| 156 | 394 | ||
| 157 | $static-themes: props.def(--o-heading, (), 'color'); | 395 | $static-themes: props.def(--o-heading, (), "color"); |
| 158 | 396 | ||
| 159 | @each $theme in map.keys(props.get(core.$transparent-colors)) { | 397 | @each $theme in map.keys(props.get(core.$transparent-colors)) { |
| 160 | $heading-theme: --static-#{string.slice($theme, 3)}; | 398 | $heading-theme: --static-#{string.slice($theme, 3)}; |
| 161 | 399 | ||
| 162 | $static-themes: props.merge($static-themes, ( | 400 | $static-themes: props.merge( |
| 163 | $heading-theme: ( | 401 | $static-themes, |
| 164 | --bg-color: props.get(core.$transparent-colors, $theme, --200), | 402 | ( |
| 165 | --text-color: props.get(core.$transparent-colors, $theme, --900), | 403 | $heading-theme: ( |
| 166 | 404 | --bg-color: props.get(core.$transparent-colors, $theme, --200), | |
| 167 | --xxl: ( | ||
| 168 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 169 | ), | ||
| 170 | --xl: ( | ||
| 171 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 172 | ), | ||
| 173 | --lg: ( | ||
| 174 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 175 | ), | ||
| 176 | --md: ( | ||
| 177 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 178 | ), | ||
| 179 | --sm: ( | ||
| 180 | --text-color: props.get(core.$transparent-colors, $theme, --500), | ||
| 181 | ), | ||
| 182 | --xs: ( | ||
| 183 | --text-color: props.get(core.$transparent-colors, $theme, --500), | ||
| 184 | ), | ||
| 185 | |||
| 186 | --display: ( | ||
| 187 | --xxl: ( | ||
| 188 | --text-color: props.get(core.$transparent-colors, $theme, --900), | 405 | --text-color: props.get(core.$transparent-colors, $theme, --900), |
| 406 | --xxl: ( | ||
| 407 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 408 | ), | ||
| 409 | --xl: ( | ||
| 410 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 411 | ), | ||
| 412 | --lg: ( | ||
| 413 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 414 | ), | ||
| 415 | --md: ( | ||
| 416 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 417 | ), | ||
| 418 | --sm: ( | ||
| 419 | --text-color: props.get(core.$transparent-colors, $theme, --500), | ||
| 420 | ), | ||
| 421 | --xs: ( | ||
| 422 | --text-color: props.get(core.$transparent-colors, $theme, --500), | ||
| 423 | ), | ||
| 424 | |||
| 425 | --display: ( | ||
| 426 | --xxl: ( | ||
| 427 | --text-color: props.get( | ||
| 428 | core.$transparent-colors, | ||
| 429 | $theme, | ||
| 430 | --900 | ||
| 431 | ), | ||
| 432 | ), | ||
| 433 | --xl: ( | ||
| 434 | --text-color: props.get( | ||
| 435 | core.$transparent-colors, | ||
| 436 | $theme, | ||
| 437 | --900 | ||
| 438 | ), | ||
| 439 | ), | ||
| 440 | --lg: ( | ||
| 441 | --text-color: props.get( | ||
| 442 | core.$transparent-colors, | ||
| 443 | $theme, | ||
| 444 | --900 | ||
| 445 | ), | ||
| 446 | ), | ||
| 447 | --md: ( | ||
| 448 | --text-color: props.get( | ||
| 449 | core.$transparent-colors, | ||
| 450 | $theme, | ||
| 451 | --900 | ||
| 452 | ), | ||
| 453 | ), | ||
| 454 | --sm: ( | ||
| 455 | --text-color: props.get( | ||
| 456 | core.$transparent-colors, | ||
| 457 | $theme, | ||
| 458 | --900 | ||
| 459 | ), | ||
| 460 | ), | ||
| 461 | --xs: ( | ||
| 462 | --text-color: props.get( | ||
| 463 | core.$transparent-colors, | ||
| 464 | $theme, | ||
| 465 | --500 | ||
| 466 | ), | ||
| 467 | ), | ||
| 468 | ), | ||
| 189 | ), | 469 | ), |
| 190 | --xl: ( | ||
| 191 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 192 | ), | ||
| 193 | --lg: ( | ||
| 194 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 195 | ), | ||
| 196 | --md: ( | ||
| 197 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 198 | ), | ||
| 199 | --sm: ( | ||
| 200 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 201 | ), | ||
| 202 | --xs: ( | ||
| 203 | --text-color: props.get(core.$transparent-colors, $theme, --500), | ||
| 204 | ), | ||
| 205 | ), | ||
| 206 | ) | 470 | ) |
| 207 | )); | 471 | ); |
| 208 | } | 472 | } |
diff --git a/src/objects/_icon.scss b/src/objects/_icon.scss index 1d046e0..7baa3f8 100644 --- a/src/objects/_icon.scss +++ b/src/objects/_icon.scss | |||
| @@ -1,24 +1,24 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'icon.vars'; | 6 | @forward "icon.vars"; |
| 7 | @use 'icon.vars' as vars; | 7 | @use "icon.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.object('icon') { | 12 | @include bem.object("icon") { |
| 13 | display: inline; | 13 | display: inline; |
| 14 | inline-size: props.get(vars.$size); | 14 | inline-size: props.get(vars.$size); |
| 15 | block-size: props.get(vars.$size); | 15 | block-size: props.get(vars.$size); |
| 16 | vertical-align: props.get(vars.$valign); | 16 | vertical-align: props.get(vars.$valign); |
| 17 | stroke-width: props.get(vars.$stroke-width); | 17 | stroke-width: props.get(vars.$stroke-width); |
| 18 | stroke-linecap: round; | 18 | stroke-linecap: round; |
| 19 | stroke-linejoin: round; | 19 | stroke-linejoin: round; |
| 20 | 20 | ||
| 21 | @include bem.modifier('block') { | 21 | @include bem.modifier("block") { |
| 22 | display: block; | 22 | display: block; |
| 23 | } | 23 | } |
| 24 | } | 24 | } |
diff --git a/src/objects/_icon.vars.scss b/src/objects/_icon.vars.scss index 2a37212..4fdbfae 100644 --- a/src/objects/_icon.vars.scss +++ b/src/objects/_icon.vars.scss | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | 2 | ||
| 3 | $stroke-width: props.def(--o-icon--stroke-width, 1.5px) !default; | 3 | $stroke-width: props.def(--o-icon--stroke-width, 1.5px) !default; |
| 4 | $size: props.def(--o-icon--size, calc(1 / 14 * 16em)) !default; | 4 | $size: props.def(--o-icon--size, calc(1 / 14 * 16em)) !default; |
| 5 | $valign: props.def(--o-icon--valign, -.18em) !default; | 5 | $valign: props.def(--o-icon--valign, -0.18em) !default; |
diff --git a/src/objects/_lightbox.scss b/src/objects/_lightbox.scss index a173d57..2b4abad 100644 --- a/src/objects/_lightbox.scss +++ b/src/objects/_lightbox.scss | |||
| @@ -1,40 +1,40 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:meta'; | 2 | @use "sass:meta"; |
| 3 | @use 'sass:string'; | 3 | @use "sass:string"; |
| 4 | @use 'pkg:iro-sass/src/bem'; | 4 | @use "pkg:iro-sass/bem"; |
| 5 | @use 'pkg:iro-sass/src/props'; | 5 | @use "pkg:iro-sass/props"; |
| 6 | @use '../props' as *; | 6 | @use "../props" as *; |
| 7 | 7 | ||
| 8 | @forward 'lightbox.vars'; | 8 | @forward "lightbox.vars"; |
| 9 | @use 'lightbox.vars' as vars; | 9 | @use "lightbox.vars" as vars; |
| 10 | 10 | ||
| 11 | @use 'button.vars' as button; | 11 | @use "button.vars" as button; |
| 12 | @use 'backdrop.vars' as backdrop; | 12 | @use "backdrop.vars" as backdrop; |
| 13 | @use 'thumbnail.vars' as thumbnail; | 13 | @use "thumbnail.vars" as thumbnail; |
| 14 | 14 | ||
| 15 | @mixin styles { | 15 | @mixin styles { |
| 16 | @include materialize-at-root(meta.module-variables('vars')); | 16 | @include materialize-at-root(meta.module-variables("vars")); |
| 17 | 17 | ||
| 18 | @include bem.object('lightbox') { | 18 | @include bem.object("lightbox") { |
| 19 | box-sizing: border-box; | 19 | box-sizing: border-box; |
| 20 | display: none; | 20 | display: none; |
| 21 | flex: 1 1 auto; | 21 | flex: 1 1 auto; |
| 22 | grid-template-areas: 'image' 'thumbnails'; | 22 | grid-template-areas: "image" "thumbnails"; |
| 23 | grid-template-rows: 1fr auto; | 23 | grid-template-rows: 1fr auto; |
| 24 | grid-template-columns: 1fr; | 24 | grid-template-columns: 1fr; |
| 25 | align-items: center; | 25 | align-items: center; |
| 26 | justify-items: center; | 26 | justify-items: center; |
| 27 | inline-size: 100%; | 27 | inline-size: 100%; |
| 28 | max-inline-size: none; | 28 | max-inline-size: none; |
| 29 | block-size: 100%; | 29 | block-size: 100%; |
| 30 | min-block-size: 0; | 30 | min-block-size: 0; |
| 31 | max-block-size: none; | 31 | max-block-size: none; |
| 32 | padding: 0; | 32 | padding: 0; |
| 33 | margin: 0; | 33 | margin: 0; |
| 34 | overflow: hidden; | 34 | overflow: hidden; |
| 35 | background-color: transparent; | 35 | background-color: transparent; |
| 36 | border: 0; | 36 | border: 0; |
| 37 | pointer-events: none; | 37 | pointer-events: none; |
| 38 | 38 | ||
| 39 | &::backdrop { | 39 | &::backdrop { |
| 40 | background-color: props.get(backdrop.$bg-color); | 40 | background-color: props.get(backdrop.$bg-color); |
| @@ -42,7 +42,7 @@ | |||
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | &[open], | 44 | &[open], |
| 45 | &:popover-open { | 45 | &:popover-open { |
| 46 | display: grid; | 46 | display: grid; |
| 47 | } | 47 | } |
| 48 | 48 | ||
| @@ -50,80 +50,79 @@ | |||
| 50 | pointer-events: auto; | 50 | pointer-events: auto; |
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | @include bem.elem('info', 'controls') { | 53 | @include bem.elem("info", "controls") { |
| 54 | position: absolute; | 54 | position: absolute; |
| 55 | inset-block-start: props.get(vars.$pad); | 55 | inset-block-start: props.get(vars.$pad); |
| 56 | z-index: 20; | 56 | z-index: 20; |
| 57 | display: flex; | 57 | display: flex; |
| 58 | align-items: center; | 58 | align-items: center; |
| 59 | block-size: props.get(vars.$controls--block-size); | 59 | block-size: props.get(vars.$controls--block-size); |
| 60 | padding-inline: props.get(vars.$controls--pad-i); | 60 | padding-inline: props.get(vars.$controls--pad-i); |
| 61 | background-color: props.get(vars.$controls--bg); | 61 | background-color: props.get(vars.$controls--bg); |
| 62 | border-radius: 10em; | 62 | border-radius: 10em; |
| 63 | box-shadow: | 63 | box-shadow: props.get(vars.$controls--shadow-x) props.get(vars.$controls--shadow-y) |
| 64 | props.get(vars.$controls--shadow-x) | 64 | props.get(vars.$controls--shadow-blur) props.get(vars.$controls--shadow-grow) |
| 65 | props.get(vars.$controls--shadow-y) | ||
| 66 | props.get(vars.$controls--shadow-blur) | ||
| 67 | props.get(vars.$controls--shadow-grow) | ||
| 68 | props.get(vars.$controls--shadow-color); | 65 | props.get(vars.$controls--shadow-color); |
| 69 | } | 66 | } |
| 70 | 67 | ||
| 71 | @include bem.elem('info') { | 68 | @include bem.elem("info") { |
| 72 | inset-inline-start: props.get(vars.$pad); | 69 | inset-inline-start: props.get(vars.$pad); |
| 73 | font-variant-numeric: tabular-nums; | 70 | font-variant-numeric: tabular-nums; |
| 74 | } | 71 | } |
| 75 | 72 | ||
| 76 | @include bem.elem('controls') { | 73 | @include bem.elem("controls") { |
| 77 | inset-inline-end: props.get(vars.$pad); | 74 | inset-inline-end: props.get(vars.$pad); |
| 78 | } | 75 | } |
| 79 | 76 | ||
| 80 | @include bem.elem('img') { | 77 | @include bem.elem("img") { |
| 81 | position: relative; | 78 | position: relative; |
| 82 | z-index: 10; | 79 | z-index: 10; |
| 83 | display: block; | 80 | display: block; |
| 84 | grid-area: image; | 81 | grid-area: image; |
| 85 | inline-size: auto; | 82 | inline-size: auto; |
| 86 | min-inline-size: 0; | 83 | min-inline-size: 0; |
| 87 | max-inline-size: 100%; | 84 | max-inline-size: 100%; |
| 88 | block-size: auto; | 85 | block-size: auto; |
| 89 | min-block-size: 0; | 86 | min-block-size: 0; |
| 90 | max-block-size: 100%; | 87 | max-block-size: 100%; |
| 91 | user-select: none; | 88 | user-select: none; |
| 92 | object-fit: contain; | 89 | object-fit: contain; |
| 93 | 90 | ||
| 94 | @include bem.is('hidden') { | 91 | @include bem.is("hidden") { |
| 95 | display: none; | 92 | display: none; |
| 96 | 93 | ||
| 97 | @include bem.next-elem('placeholder') { | 94 | @include bem.next-elem("placeholder") { |
| 98 | display: block; | 95 | display: block; |
| 99 | } | 96 | } |
| 100 | } | 97 | } |
| 101 | } | 98 | } |
| 102 | 99 | ||
| 103 | @include bem.elem('placeholder') { | 100 | @include bem.elem("placeholder") { |
| 104 | position: absolute; | 101 | position: absolute; |
| 105 | inset-block-start: 50%; | 102 | inset-block-start: 50%; |
| 106 | inset-inline-start: 50%; | 103 | inset-inline-start: 50%; |
| 107 | z-index: 5; | 104 | z-index: 5; |
| 108 | display: none; | 105 | display: none; |
| 109 | transform: translate(-50, -50); | 106 | transform: translate(-50, -50); |
| 110 | } | 107 | } |
| 111 | 108 | ||
| 112 | @include bem.elem('thumbnails') { | 109 | @include bem.elem("thumbnails") { |
| 113 | display: flex; | 110 | display: flex; |
| 114 | grid-area: thumbnails; | 111 | grid-area: thumbnails; |
| 115 | gap: props.get(vars.$thumbnail--spacing); | 112 | gap: props.get(vars.$thumbnail--spacing); |
| 116 | justify-content: center; | 113 | justify-content: center; |
| 117 | padding: props.get(vars.$pad); | 114 | padding: props.get(vars.$pad); |
| 118 | overflow: auto; | 115 | overflow: auto; |
| 119 | } | 116 | } |
| 120 | 117 | ||
| 121 | @include bem.elem('thumbnail') { | 118 | @include bem.elem("thumbnail") { |
| 122 | inline-size: props.get(vars.$thumbnail--width); | 119 | inline-size: props.get(vars.$thumbnail--width); |
| 123 | transition: inline-size .2s ease, margin-inline .2s ease; | 120 | transition: |
| 121 | inline-size 0.2s ease, | ||
| 122 | margin-inline 0.2s ease; | ||
| 124 | 123 | ||
| 125 | @include bem.is('selected') { | 124 | @include bem.is("selected") { |
| 126 | inline-size: props.get(vars.$thumbnail--active--width); | 125 | inline-size: props.get(vars.$thumbnail--active--width); |
| 127 | margin-inline: props.get(vars.$thumbnail--active--spacing); | 126 | margin-inline: props.get(vars.$thumbnail--active--spacing); |
| 128 | } | 127 | } |
| 129 | } | 128 | } |
diff --git a/src/objects/_lightbox.vars.scss b/src/objects/_lightbox.vars.scss index 6fb84f7..dc9a2a1 100644 --- a/src/objects/_lightbox.vars.scss +++ b/src/objects/_lightbox.vars.scss | |||
| @@ -1,37 +1,80 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:string'; | 2 | @use "sass:string"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../core.vars' as core; | 4 | @use "../core.vars" as core; |
| 5 | 5 | ||
| 6 | $pad: props.def(--o-lightbox--pad, props.get(core.$size--150)) !default; | 6 | $pad: props.def(--o-lightbox--pad, props.get(core.$size--150)) !default; |
| 7 | 7 | ||
| 8 | $controls--pad-i: props.def(--o-lightbox--controls--pad-i, props.get(core.$size--150)) !default; | 8 | $controls--pad-i: props.def(--o-lightbox--controls--pad-i, props.get(core.$size--150)) !default; |
| 9 | $controls--block-size: props.def(--o-lightbox--controls--block-size, props.get(core.$size--550)) !default; | 9 | $controls--block-size: props.def( |
| 10 | --o-lightbox--controls--block-size, | ||
| 11 | props.get(core.$size--550) | ||
| 12 | ) !default; | ||
| 10 | 13 | ||
| 11 | $controls--shadow-x: props.def(--o-lightbox--controls--shadow-x, props.get(core.$shadow--l2--x)) !default; | 14 | $controls--shadow-x: props.def( |
| 12 | $controls--shadow-y: props.def(--o-lightbox--controls--shadow-y, props.get(core.$shadow--l2--y)) !default; | 15 | --o-lightbox--controls--shadow-x, |
| 13 | $controls--shadow-blur: props.def(--o-lightbox--controls--shadow-blur, props.get(core.$shadow--l2--blur)) !default; | 16 | props.get(core.$shadow--l2--x) |
| 14 | $controls--shadow-grow: props.def(--o-lightbox--controls--shadow-grow, props.get(core.$shadow--l2--grow)) !default; | 17 | ) !default; |
| 18 | $controls--shadow-y: props.def( | ||
| 19 | --o-lightbox--controls--shadow-y, | ||
| 20 | props.get(core.$shadow--l2--y) | ||
| 21 | ) !default; | ||
| 22 | $controls--shadow-blur: props.def( | ||
| 23 | --o-lightbox--controls--shadow-blur, | ||
| 24 | props.get(core.$shadow--l2--blur) | ||
| 25 | ) !default; | ||
| 26 | $controls--shadow-grow: props.def( | ||
| 27 | --o-lightbox--controls--shadow-grow, | ||
| 28 | props.get(core.$shadow--l2--grow) | ||
| 29 | ) !default; | ||
| 15 | 30 | ||
| 16 | $thumbnail--width: props.def(--o-lightbox--thumbnail--width, props.get(core.$size--600)) !default; | 31 | $thumbnail--width: props.def(--o-lightbox--thumbnail--width, props.get(core.$size--600)) !default; |
| 17 | $thumbnail--spacing: props.def(--o-lightbox--thumbnail--spacing, props.get(core.$size--100)) !default; | 32 | $thumbnail--spacing: props.def( |
| 18 | $thumbnail--active--width: props.def(--o-lightbox--thumbnail--active--width, props.get(core.$size--1000)) !default; | 33 | --o-lightbox--thumbnail--spacing, |
| 19 | $thumbnail--active--spacing: props.def(--o-lightbox--thumbnail--active--spacing, props.get(core.$size--250)) !default; | 34 | props.get(core.$size--100) |
| 35 | ) !default; | ||
| 36 | $thumbnail--active--width: props.def( | ||
| 37 | --o-lightbox--thumbnail--active--width, | ||
| 38 | props.get(core.$size--1000) | ||
| 39 | ) !default; | ||
| 40 | $thumbnail--active--spacing: props.def( | ||
| 41 | --o-lightbox--thumbnail--active--spacing, | ||
| 42 | props.get(core.$size--250) | ||
| 43 | ) !default; | ||
| 20 | 44 | ||
| 21 | $thumbnail--width--md: props.def(--o-lightbox--thumbnail--width, props.get(core.$size--400), 'md') !default; | 45 | $thumbnail--width--md: props.def( |
| 22 | $thumbnail--active--width--md: props.def(--o-lightbox--thumbnail--active--width, props.get(core.$size--600), 'md') !default; | 46 | --o-lightbox--thumbnail--width, |
| 47 | props.get(core.$size--400), | ||
| 48 | "md" | ||
| 49 | ) !default; | ||
| 50 | $thumbnail--active--width--md: props.def( | ||
| 51 | --o-lightbox--thumbnail--active--width, | ||
| 52 | props.get(core.$size--600), | ||
| 53 | "md" | ||
| 54 | ) !default; | ||
| 23 | 55 | ||
| 24 | $controls--bg: props.def(--o-lightbox--controls--bg, props.get(core.$transparent-colors, --black, --700), 'color') !default; | 56 | $controls--bg: props.def( |
| 25 | $controls--shadow-color: props.def(--o-lightbox--controls--shadow-color, props.get(core.$transparent-colors, --black, --300), 'color') !default; | 57 | --o-lightbox--controls--bg, |
| 58 | props.get(core.$transparent-colors, --black, --700), | ||
| 59 | "color" | ||
| 60 | ) !default; | ||
| 61 | $controls--shadow-color: props.def( | ||
| 62 | --o-lightbox--controls--shadow-color, | ||
| 63 | props.get(core.$transparent-colors, --black, --300), | ||
| 64 | "color" | ||
| 65 | ) !default; | ||
| 26 | 66 | ||
| 27 | $static-themes: props.def(--o-lightbox, (), 'color'); | 67 | $static-themes: props.def(--o-lightbox, (), "color"); |
| 28 | 68 | ||
| 29 | @each $theme in map.keys(props.get(core.$transparent-colors)) { | 69 | @each $theme in map.keys(props.get(core.$transparent-colors)) { |
| 30 | $lightbox-theme: --static-#{string.slice($theme, 3)}; | 70 | $lightbox-theme: --static-#{string.slice($theme, 3)}; |
| 31 | 71 | ||
| 32 | $static-themes: props.merge($static-themes, ( | 72 | $static-themes: props.merge( |
| 33 | $lightbox-theme: ( | 73 | $static-themes, |
| 34 | --text: props.get(core.$transparent-colors, $theme, --text), | 74 | ( |
| 75 | $lightbox-theme: ( | ||
| 76 | --text: props.get(core.$transparent-colors, $theme, --text), | ||
| 77 | ), | ||
| 35 | ) | 78 | ) |
| 36 | )); | 79 | ); |
| 37 | } | 80 | } |
diff --git a/src/objects/_menu.scss b/src/objects/_menu.scss index dce14a8..c7fbc0e 100644 --- a/src/objects/_menu.scss +++ b/src/objects/_menu.scss | |||
| @@ -1,75 +1,82 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | @use 'icon.vars' as icon; | 5 | @use "icon.vars" as icon; |
| 6 | 6 | ||
| 7 | @forward 'menu.vars'; | 7 | @forward "menu.vars"; |
| 8 | @use 'menu.vars' as vars; | 8 | @use "menu.vars" as vars; |
| 9 | 9 | ||
| 10 | @mixin styles { | 10 | @mixin styles { |
| 11 | @include materialize-at-root(meta.module-variables('vars')); | 11 | @include materialize-at-root(meta.module-variables("vars")); |
| 12 | 12 | ||
| 13 | @include bem.object('menu') { | 13 | @include bem.object("menu") { |
| 14 | display: flex; | 14 | display: flex; |
| 15 | flex-direction: column; | 15 | flex-direction: column; |
| 16 | gap: props.get(vars.$spacing); | 16 | gap: props.get(vars.$spacing); |
| 17 | 17 | ||
| 18 | @include bem.elem('header') { | 18 | @include bem.elem("header") { |
| 19 | padding-block: props.get(vars.$item--pad-b); | 19 | padding-block: props.get(vars.$item--pad-b); |
| 20 | padding-inline: props.get(vars.$item--pad-i); | 20 | padding-inline: props.get(vars.$item--pad-i); |
| 21 | font-size: props.get(vars.$header--font-size); | 21 | font-size: props.get(vars.$header--font-size); |
| 22 | font-weight: 500; | 22 | font-weight: 500; |
| 23 | color: props.get(vars.$header--label-color); | 23 | color: props.get(vars.$header--label-color); |
| 24 | text-transform: uppercase; | 24 | text-transform: uppercase; |
| 25 | letter-spacing: .5px; | 25 | letter-spacing: 0.5px; |
| 26 | 26 | ||
| 27 | @include bem.next-twin-elem { | 27 | @include bem.next-twin-elem { |
| 28 | margin-block-start: calc(props.get(vars.$separator-width) + props.get(vars.$spacing)); | 28 | margin-block-start: calc( |
| 29 | props.get(vars.$separator-width) + props.get(vars.$spacing) | ||
| 30 | ); | ||
| 29 | } | 31 | } |
| 30 | } | 32 | } |
| 31 | 33 | ||
| 32 | @include bem.elem('item') { | 34 | @include bem.elem("item") { |
| 33 | padding-block: props.get(vars.$item--pad-b); | 35 | padding-block: props.get(vars.$item--pad-b); |
| 34 | padding-inline: props.get(vars.$item--pad-i); | 36 | padding-inline: props.get(vars.$item--pad-i); |
| 35 | margin: calc(-1 * props.get(vars.$item--key-focus--outline-width)); | 37 | margin: calc(-1 * props.get(vars.$item--key-focus--outline-width)); |
| 36 | color: props.get(vars.$item--disabled--label-color); | 38 | color: props.get(vars.$item--disabled--label-color); |
| 37 | background-clip: padding-box; | 39 | background-clip: padding-box; |
| 38 | border: props.get(vars.$item--key-focus--outline-width) solid transparent; | 40 | border: props.get(vars.$item--key-focus--outline-width) solid transparent; |
| 39 | border-radius: calc(props.get(vars.$item--rounding) + props.get(vars.$item--key-focus--outline-width)); | 41 | border-radius: calc( |
| 42 | props.get(vars.$item--rounding) + props.get(vars.$item--key-focus--outline-width) | ||
| 43 | ); | ||
| 40 | 44 | ||
| 41 | &:link, | 45 | &:link, |
| 42 | &:visited, | 46 | &:visited, |
| 43 | &:enabled { | 47 | &:enabled { |
| 44 | color: currentColor; | 48 | color: currentColor; |
| 45 | 49 | ||
| 46 | @include bem.multi('&:hover, &:focus-visible', 'is' 'selected') { | 50 | @include bem.multi("&:hover, &:focus-visible", "is" "selected") { |
| 47 | color: props.get(vars.$item--hover--label-color); | 51 | color: props.get(vars.$item--hover--label-color); |
| 48 | background-color: props.get(vars.$item--hover--bg-color); | 52 | background-color: props.get(vars.$item--hover--bg-color); |
| 49 | } | 53 | } |
| 50 | 54 | ||
| 51 | &:active { | 55 | &:active { |
| 52 | color: props.get(vars.$item--active--label-color); | 56 | color: props.get(vars.$item--active--label-color); |
| 53 | background-color: props.get(vars.$item--active--bg-color); | 57 | background-color: props.get(vars.$item--active--bg-color); |
| 54 | } | 58 | } |
| 55 | 59 | ||
| 56 | &:focus-visible { | 60 | &:focus-visible { |
| 57 | outline: props.get(vars.$item--key-focus--border-color) solid props.get(vars.$item--key-focus--border-width); | 61 | outline: props.get(vars.$item--key-focus--border-color) solid |
| 58 | box-shadow: | 62 | props.get(vars.$item--key-focus--border-width); |
| 59 | 0 | 63 | box-shadow: 0 0 0 |
| 60 | 0 | 64 | calc( |
| 61 | 0 | 65 | props.get(vars.$item--key-focus--border-width) + |
| 62 | calc(props.get(vars.$item--key-focus--border-width) + props.get(vars.$item--key-focus--outline-width)) | 66 | props.get(vars.$item--key-focus--outline-width) |
| 67 | ) | ||
| 63 | props.get(vars.$item--key-focus--outline-color); | 68 | props.get(vars.$item--key-focus--outline-color); |
| 64 | } | 69 | } |
| 65 | } | 70 | } |
| 66 | 71 | ||
| 67 | @include bem.next-elem('header') { | 72 | @include bem.next-elem("header") { |
| 68 | margin-block-start: calc(props.get(vars.$separator-width) + props.get(vars.$spacing)); | 73 | margin-block-start: calc( |
| 74 | props.get(vars.$separator-width) + props.get(vars.$spacing) | ||
| 75 | ); | ||
| 69 | } | 76 | } |
| 70 | } | 77 | } |
| 71 | 78 | ||
| 72 | @include bem.elem('header') { | 79 | @include bem.elem("header") { |
| 73 | &:link, | 80 | &:link, |
| 74 | &:visited, | 81 | &:visited, |
| 75 | &:enabled { | 82 | &:enabled { |
| @@ -77,25 +84,25 @@ | |||
| 77 | } | 84 | } |
| 78 | } | 85 | } |
| 79 | 86 | ||
| 80 | @include bem.elem('separator') { | 87 | @include bem.elem("separator") { |
| 81 | block-size: 1px; | 88 | block-size: 1px; |
| 82 | margin-block: props.get(vars.$separator-width); | 89 | margin-block: props.get(vars.$separator-width); |
| 83 | margin-inline: props.get(vars.$item--pad-i); | 90 | margin-inline: props.get(vars.$item--pad-i); |
| 84 | background-color: props.get(vars.$separator-color); | 91 | background-color: props.get(vars.$separator-color); |
| 85 | } | 92 | } |
| 86 | 93 | ||
| 87 | @include bem.elem('slot') { | 94 | @include bem.elem("slot") { |
| 88 | padding-block: props.get(vars.$item--pad-b); | 95 | padding-block: props.get(vars.$item--pad-b); |
| 89 | padding-inline: props.get(vars.$item--pad-i); | 96 | padding-inline: props.get(vars.$item--pad-i); |
| 90 | } | 97 | } |
| 91 | 98 | ||
| 92 | @include bem.elem('icon-slot') { | 99 | @include bem.elem("icon-slot") { |
| 93 | display: flex; | 100 | display: flex; |
| 94 | justify-content: center; | 101 | justify-content: center; |
| 95 | inline-size: props.get(icon.$size); | 102 | inline-size: props.get(icon.$size); |
| 96 | } | 103 | } |
| 97 | 104 | ||
| 98 | @include bem.modifier('pull') { | 105 | @include bem.modifier("pull") { |
| 99 | margin: calc(-1 * props.get(vars.$item--pad-i)); | 106 | margin: calc(-1 * props.get(vars.$item--pad-i)); |
| 100 | } | 107 | } |
| 101 | } | 108 | } |
diff --git a/src/objects/_menu.vars.scss b/src/objects/_menu.vars.scss index 9396117..c168c30 100644 --- a/src/objects/_menu.vars.scss +++ b/src/objects/_menu.vars.scss | |||
| @@ -1,29 +1,74 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | 4 | ||
| 5 | $spacing: props.def(--o-menu--spacing, 0em) !default; | 5 | $spacing: props.def(--o-menu--spacing, 0em) !default; |
| 6 | $header--font-size: props.def(--o-menu--header--font-size, props.get(core.$font-size--50)) !default; | 6 | $header--font-size: props.def(--o-menu--header--font-size, props.get(core.$font-size--50)) !default; |
| 7 | $separator-width: props.def(--o-menu--separator-width, props.get(core.$size--100)) !default; | 7 | $separator-width: props.def(--o-menu--separator-width, props.get(core.$size--100)) !default; |
| 8 | 8 | ||
| 9 | $item--pad-i: props.def(--o-menu--item--pad-i, props.get(core.$size--150)) !default; | 9 | $item--pad-i: props.def(--o-menu--item--pad-i, props.get(core.$size--150)) !default; |
| 10 | $item--pad-b: props.def(--o-menu--item--pad-b, props.get(core.$size--100)) !default; | 10 | $item--pad-b: props.def(--o-menu--item--pad-b, props.get(core.$size--100)) !default; |
| 11 | $item--rounding: props.def(--o-menu--item--rounding, 0em) !default; | 11 | $item--rounding: props.def(--o-menu--item--rounding, 0em) !default; |
| 12 | 12 | ||
| 13 | $item--key-focus--border-width: props.def(--o-menu--item--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; | 13 | $item--key-focus--border-width: props.def( |
| 14 | $item--key-focus--border-offset: props.def(--o-menu--item--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; | 14 | --o-menu--item--key-focus--border-width, |
| 15 | $item--key-focus--outline-width: props.def(--o-menu--item--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; | 15 | props.get(core.$key-focus--border-width) |
| 16 | ) !default; | ||
| 17 | $item--key-focus--border-offset: props.def( | ||
| 18 | --o-menu--item--key-focus--border-offset, | ||
| 19 | props.get(core.$key-focus--border-offset) | ||
| 20 | ) !default; | ||
| 21 | $item--key-focus--outline-width: props.def( | ||
| 22 | --o-menu--item--key-focus--outline-width, | ||
| 23 | props.get(core.$key-focus--outline-width) | ||
| 24 | ) !default; | ||
| 16 | 25 | ||
| 17 | $separator-color: props.def(--o-menu--separator-color, props.get(core.$theme, --border), 'color') !default; | 26 | $separator-color: props.def( |
| 18 | $header--label-color: props.def(--o-menu--header--label-color, props.get(core.$theme, --heading), 'color') !default; | 27 | --o-menu--separator-color, |
| 28 | props.get(core.$theme, --border), | ||
| 29 | "color" | ||
| 30 | ) !default; | ||
| 31 | $header--label-color: props.def( | ||
| 32 | --o-menu--header--label-color, | ||
| 33 | props.get(core.$theme, --heading), | ||
| 34 | "color" | ||
| 35 | ) !default; | ||
| 19 | 36 | ||
| 20 | $item--hover--bg-color: props.def(--o-menu--item--hover--bg-color, props.get(core.$theme, --border-mute), 'color') !default; | 37 | $item--hover--bg-color: props.def( |
| 21 | $item--hover--label-color: props.def(--o-menu--item--hover--label-color, props.get(core.$theme, --heading), 'color') !default; | 38 | --o-menu--item--hover--bg-color, |
| 39 | props.get(core.$theme, --border-mute), | ||
| 40 | "color" | ||
| 41 | ) !default; | ||
| 42 | $item--hover--label-color: props.def( | ||
| 43 | --o-menu--item--hover--label-color, | ||
| 44 | props.get(core.$theme, --heading), | ||
| 45 | "color" | ||
| 46 | ) !default; | ||
| 22 | 47 | ||
| 23 | $item--active--bg-color: props.def(--o-menu--item--active--bg-color, props.get(core.$theme, --border), 'color') !default; | 48 | $item--active--bg-color: props.def( |
| 24 | $item--active--label-color: props.def(--o-menu--item--active--label-color, props.get(core.$theme, --heading), 'color') !default; | 49 | --o-menu--item--active--bg-color, |
| 50 | props.get(core.$theme, --border), | ||
| 51 | "color" | ||
| 52 | ) !default; | ||
| 53 | $item--active--label-color: props.def( | ||
| 54 | --o-menu--item--active--label-color, | ||
| 55 | props.get(core.$theme, --heading), | ||
| 56 | "color" | ||
| 57 | ) !default; | ||
| 25 | 58 | ||
| 26 | $item--disabled--label-color: props.def(--o-menu--item--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default; | 59 | $item--disabled--label-color: props.def( |
| 60 | --o-menu--item--disabled--label-color, | ||
| 61 | props.get(core.$theme, --text-disabled), | ||
| 62 | "color" | ||
| 63 | ) !default; | ||
| 27 | 64 | ||
| 28 | $item--key-focus--border-color: props.def(--o-menu--item--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; | 65 | $item--key-focus--border-color: props.def( |
| 29 | $item--key-focus--outline-color: props.def(--o-menu--item--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; | 66 | --o-menu--item--key-focus--border-color, |
| 67 | props.get(core.$theme, --focus, --border), | ||
| 68 | "color" | ||
| 69 | ) !default; | ||
| 70 | $item--key-focus--outline-color: props.def( | ||
| 71 | --o-menu--item--key-focus--outline-color, | ||
| 72 | props.get(core.$theme, --focus, --outline), | ||
| 73 | "color" | ||
| 74 | ) !default; | ||
diff --git a/src/objects/_navbar.scss b/src/objects/_navbar.scss index cc1eaaa..4b678e0 100644 --- a/src/objects/_navbar.scss +++ b/src/objects/_navbar.scss | |||
| @@ -1,151 +1,197 @@ | |||
| 1 | @use 'sass:list'; | 1 | @use "sass:list"; |
| 2 | @use 'sass:map'; | 2 | @use "sass:map"; |
| 3 | @use 'sass:meta'; | 3 | @use "sass:meta"; |
| 4 | @use 'sass:string'; | 4 | @use "sass:string"; |
| 5 | @use 'pkg:iro-sass/src/bem'; | 5 | @use "pkg:iro-sass/bem"; |
| 6 | @use 'pkg:iro-sass/src/props'; | 6 | @use "pkg:iro-sass/props"; |
| 7 | @use '../props' as *; | 7 | @use "../props" as *; |
| 8 | 8 | ||
| 9 | @forward 'navbar.vars'; | 9 | @forward "navbar.vars"; |
| 10 | @use 'navbar.vars' as vars; | 10 | @use "navbar.vars" as vars; |
| 11 | 11 | ||
| 12 | @mixin -apply-theme($theme, $key: ()) { | 12 | @mixin -apply-theme($theme, $key: ()) { |
| 13 | @include bem.elem('item-label') { | 13 | @include bem.elem("item-label") { |
| 14 | color: props.get($theme, list.join($key, --disabled --label-color)...); | 14 | color: props.get($theme, list.join($key, --disabled --label-color)...); |
| 15 | } | 15 | } |
| 16 | 16 | ||
| 17 | @include bem.elem('item-content') { | 17 | @include bem.elem("item-content") { |
| 18 | color: props.get($theme, list.join($key, --disabled --text-color)...); | 18 | color: props.get($theme, list.join($key, --disabled --text-color)...); |
| 19 | 19 | ||
| 20 | &::after { | 20 | &::after { |
| 21 | outline: props.get($theme, list.join($key, --key-focus --border)...) solid props.get(vars.$key-focus--border-width); | 21 | outline: props.get($theme, list.join($key, --key-focus --border)...) solid |
| 22 | box-shadow: | 22 | props.get(vars.$key-focus--border-width); |
| 23 | 0 | 23 | box-shadow: 0 0 0 |
| 24 | 0 | 24 | calc( |
| 25 | 0 | 25 | props.get(vars.$key-focus--border-width) + |
| 26 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | 26 | props.get(vars.$key-focus--outline-width) |
| 27 | ) | ||
| 27 | props.get($theme, list.join($key, --key-focus --outline)...); | 28 | props.get($theme, list.join($key, --key-focus --outline)...); |
| 28 | } | 29 | } |
| 29 | } | 30 | } |
| 30 | 31 | ||
| 31 | @include bem.elem('item') { | 32 | @include bem.elem("item") { |
| 32 | &:link, | 33 | &:link, |
| 33 | &:visited, | 34 | &:visited, |
| 34 | &:enabled { | 35 | &:enabled { |
| 35 | @include bem.elem('item-label') { | 36 | @include bem.elem("item-label") { |
| 36 | color: props.get($theme, list.join($key, --label-color)...); | 37 | color: props.get($theme, list.join($key, --label-color)...); |
| 37 | } | 38 | } |
| 38 | 39 | ||
| 39 | @include bem.elem('item-content') { | 40 | @include bem.elem("item-content") { |
| 40 | color: props.get($theme, list.join($key, --text-color)...); | 41 | color: props.get($theme, list.join($key, --text-color)...); |
| 41 | } | 42 | } |
| 42 | 43 | ||
| 43 | &:hover, | 44 | &:hover, |
| 44 | &:focus-visible { | 45 | &:focus-visible { |
| 45 | @include bem.elem('item-label') { | 46 | @include bem.elem("item-label") { |
| 46 | color: props.get($theme, list.join($key, --hover --label-color)...); | 47 | color: props.get($theme, list.join($key, --hover --label-color)...); |
| 47 | } | 48 | } |
| 48 | 49 | ||
| 49 | @include bem.elem('item-content') { | 50 | @include bem.elem("item-content") { |
| 50 | color: props.get($theme, list.join($key, --hover --text-color)...); | 51 | color: props.get($theme, list.join($key, --hover --text-color)...); |
| 51 | background-color: props.get($theme, list.join($key, --hover --bg-color)...); | 52 | background-color: props.get($theme, list.join($key, --hover --bg-color)...); |
| 52 | } | 53 | } |
| 53 | } | 54 | } |
| 54 | 55 | ||
| 55 | &:focus-visible { | 56 | &:focus-visible { |
| 56 | @include bem.elem('item-label') { | 57 | @include bem.elem("item-label") { |
| 57 | color: props.get($theme, list.join($key, --key-focus --label)...); | 58 | color: props.get($theme, list.join($key, --key-focus --label)...); |
| 58 | } | 59 | } |
| 59 | } | 60 | } |
| 60 | 61 | ||
| 61 | &:active { | 62 | &:active { |
| 62 | @include bem.elem('item-label') { | 63 | @include bem.elem("item-label") { |
| 63 | color: props.get($theme, list.join($key, --active --label-color)...); | 64 | color: props.get($theme, list.join($key, --active --label-color)...); |
| 64 | } | 65 | } |
| 65 | 66 | ||
| 66 | @include bem.elem('item-content') { | 67 | @include bem.elem("item-content") { |
| 67 | color: props.get($theme, list.join($key, --active --text-color)...); | 68 | color: props.get($theme, list.join($key, --active --text-color)...); |
| 68 | background-color: props.get($theme, list.join($key, --active --bg-color)...); | 69 | background-color: props.get($theme, list.join($key, --active --bg-color)...); |
| 69 | } | 70 | } |
| 70 | } | 71 | } |
| 71 | } | 72 | } |
| 72 | 73 | ||
| 73 | @include bem.is('selected') { | 74 | @include bem.is("selected") { |
| 74 | @include bem.elem('item-label') { | 75 | @include bem.elem("item-label") { |
| 75 | color: props.get($theme, list.join($key, --selected --disabled --label-color)...); | 76 | color: props.get($theme, list.join($key, --selected --disabled --label-color)...); |
| 76 | } | 77 | } |
| 77 | 78 | ||
| 78 | @include bem.elem('item-content') { | 79 | @include bem.elem("item-content") { |
| 79 | color: props.get($theme, list.join($key, --selected --disabled --text-color)...); | 80 | color: props.get($theme, list.join($key, --selected --disabled --text-color)...); |
| 80 | background-color: props.get($theme, list.join($key, --selected --disabled --bg-color)...); | 81 | background-color: props.get( |
| 82 | $theme, | ||
| 83 | list.join($key, --selected --disabled --bg-color)... | ||
| 84 | ); | ||
| 81 | } | 85 | } |
| 82 | 86 | ||
| 83 | &:link, | 87 | &:link, |
| 84 | &:visited, | 88 | &:visited, |
| 85 | &:enabled { | 89 | &:enabled { |
| 86 | @include bem.elem('item-label') { | 90 | @include bem.elem("item-label") { |
| 87 | color: props.get($theme, list.join($key, --selected --label-color)...); | 91 | color: props.get($theme, list.join($key, --selected --label-color)...); |
| 88 | } | 92 | } |
| 89 | 93 | ||
| 90 | @include bem.elem('item-content') { | 94 | @include bem.elem("item-content") { |
| 91 | color: props.get($theme, list.join($key, --selected --text-color)...); | 95 | color: props.get($theme, list.join($key, --selected --text-color)...); |
| 92 | background-color: props.get($theme, list.join($key, --selected --bg-color)...); | 96 | background-color: props.get($theme, list.join($key, --selected --bg-color)...); |
| 93 | } | 97 | } |
| 94 | 98 | ||
| 95 | &:hover, | 99 | &:hover, |
| 96 | &:focus-visible { | 100 | &:focus-visible { |
| 97 | @include bem.elem('item-label') { | 101 | @include bem.elem("item-label") { |
| 98 | color: props.get($theme, list.join($key, --selected --hover --label-color)...); | 102 | color: props.get( |
| 103 | $theme, | ||
| 104 | list.join($key, --selected --hover --label-color)... | ||
| 105 | ); | ||
| 99 | } | 106 | } |
| 100 | 107 | ||
| 101 | @include bem.elem('item-content') { | 108 | @include bem.elem("item-content") { |
| 102 | color: props.get($theme, list.join($key, --selected --hover --text-color)...); | 109 | color: props.get( |
| 103 | background-color: props.get($theme, list.join($key, --selected --hover --bg-color)...); | 110 | $theme, |
| 111 | list.join($key, --selected --hover --text-color)... | ||
| 112 | ); | ||
| 113 | background-color: props.get( | ||
| 114 | $theme, | ||
| 115 | list.join($key, --selected --hover --bg-color)... | ||
| 116 | ); | ||
| 104 | } | 117 | } |
| 105 | } | 118 | } |
| 106 | 119 | ||
| 107 | &:active { | 120 | &:active { |
| 108 | @include bem.elem('item-label') { | 121 | @include bem.elem("item-label") { |
| 109 | color: props.get($theme, list.join($key, --selected --active --label-color)...); | 122 | color: props.get( |
| 123 | $theme, | ||
| 124 | list.join($key, --selected --active --label-color)... | ||
| 125 | ); | ||
| 110 | } | 126 | } |
| 111 | 127 | ||
| 112 | @include bem.elem('item-content') { | 128 | @include bem.elem("item-content") { |
| 113 | color: props.get($theme, list.join($key, --selected --active --text-color)...); | 129 | color: props.get( |
| 114 | background-color: props.get($theme, list.join($key, --selected --active --bg-color)...); | 130 | $theme, |
| 131 | list.join($key, --selected --active --text-color)... | ||
| 132 | ); | ||
| 133 | background-color: props.get( | ||
| 134 | $theme, | ||
| 135 | list.join($key, --selected --active --bg-color)... | ||
| 136 | ); | ||
| 115 | } | 137 | } |
| 116 | } | 138 | } |
| 117 | } | 139 | } |
| 118 | } | 140 | } |
| 119 | } | 141 | } |
| 120 | 142 | ||
| 121 | @include bem.modifier('quiet') { | 143 | @include bem.modifier("quiet") { |
| 122 | @include bem.elem('item') { | 144 | @include bem.elem("item") { |
| 123 | @include bem.is('selected') { | 145 | @include bem.is("selected") { |
| 124 | @include bem.elem('item-content') { | 146 | @include bem.elem("item-content") { |
| 125 | color: props.get($theme, list.join($key, --quiet --selected --disabled --text-color)...); | 147 | color: props.get( |
| 126 | background-color: props.get($theme, list.join($key, --quiet --selected --disabled --bg-color)...); | 148 | $theme, |
| 149 | list.join($key, --quiet --selected --disabled --text-color)... | ||
| 150 | ); | ||
| 151 | background-color: props.get( | ||
| 152 | $theme, | ||
| 153 | list.join($key, --quiet --selected --disabled --bg-color)... | ||
| 154 | ); | ||
| 127 | } | 155 | } |
| 128 | 156 | ||
| 129 | &:link, | 157 | &:link, |
| 130 | &:visited, | 158 | &:visited, |
| 131 | &:enabled { | 159 | &:enabled { |
| 132 | @include bem.elem('item-content') { | 160 | @include bem.elem("item-content") { |
| 133 | color: props.get($theme, list.join($key, --quiet --selected --text-color)...); | 161 | color: props.get( |
| 134 | background-color: props.get($theme, list.join($key, --quiet --selected --bg-color)...); | 162 | $theme, |
| 163 | list.join($key, --quiet --selected --text-color)... | ||
| 164 | ); | ||
| 165 | background-color: props.get( | ||
| 166 | $theme, | ||
| 167 | list.join($key, --quiet --selected --bg-color)... | ||
| 168 | ); | ||
| 135 | } | 169 | } |
| 136 | 170 | ||
| 137 | &:hover, | 171 | &:hover, |
| 138 | &:focus-visible { | 172 | &:focus-visible { |
| 139 | @include bem.elem('item-content') { | 173 | @include bem.elem("item-content") { |
| 140 | color: props.get($theme, list.join($key, --quiet --selected --hover --text-color)...); | 174 | color: props.get( |
| 141 | background-color: props.get($theme, list.join($key, --quiet --selected --hover --bg-color)...); | 175 | $theme, |
| 176 | list.join($key, --quiet --selected --hover --text-color)... | ||
| 177 | ); | ||
| 178 | background-color: props.get( | ||
| 179 | $theme, | ||
| 180 | list.join($key, --quiet --selected --hover --bg-color)... | ||
| 181 | ); | ||
| 142 | } | 182 | } |
| 143 | } | 183 | } |
| 144 | 184 | ||
| 145 | &:active { | 185 | &:active { |
| 146 | @include bem.elem('item-content') { | 186 | @include bem.elem("item-content") { |
| 147 | color: props.get($theme, list.join($key, --quiet --selected --active --text-color)...); | 187 | color: props.get( |
| 148 | background-color: props.get($theme, list.join($key, --quiet --selected --active --bg-color)...); | 188 | $theme, |
| 189 | list.join($key, --quiet --selected --active --text-color)... | ||
| 190 | ); | ||
| 191 | background-color: props.get( | ||
| 192 | $theme, | ||
| 193 | list.join($key, --quiet --selected --active --bg-color)... | ||
| 194 | ); | ||
| 149 | } | 195 | } |
| 150 | } | 196 | } |
| 151 | } | 197 | } |
| @@ -155,64 +201,64 @@ | |||
| 155 | } | 201 | } |
| 156 | 202 | ||
| 157 | @mixin styles { | 203 | @mixin styles { |
| 158 | @include materialize-at-root(meta.module-variables('vars')); | 204 | @include materialize-at-root(meta.module-variables("vars")); |
| 159 | 205 | ||
| 160 | @include bem.object('navbar') { | 206 | @include bem.object("navbar") { |
| 161 | display: flex; | 207 | display: flex; |
| 162 | block-size: props.get(vars.$block-size); | 208 | block-size: props.get(vars.$block-size); |
| 163 | 209 | ||
| 164 | @include bem.elem('item-label') { | 210 | @include bem.elem("item-label") { |
| 165 | order: 2; | 211 | order: 2; |
| 166 | margin-block-start: props.get(vars.$item--pad-b-icon); | 212 | margin-block-start: props.get(vars.$item--pad-b-icon); |
| 167 | font-size: props.get(vars.$item--label-font-size); | 213 | font-size: props.get(vars.$item--label-font-size); |
| 168 | font-weight: bold; | 214 | font-weight: bold; |
| 169 | 215 | ||
| 170 | @include bem.next-elem('item-content') { | 216 | @include bem.next-elem("item-content") { |
| 171 | padding-block: props.get(vars.$item--pad-b-icon); | 217 | padding-block: props.get(vars.$item--pad-b-icon); |
| 172 | padding-inline: props.get(vars.$item--pad-i-icon); | 218 | padding-inline: props.get(vars.$item--pad-i-icon); |
| 173 | font-size: props.get(vars.$item--icon-size); | 219 | font-size: props.get(vars.$item--icon-size); |
| 174 | } | 220 | } |
| 175 | } | 221 | } |
| 176 | 222 | ||
| 177 | @include bem.elem('item-content-text') { | 223 | @include bem.elem("item-content-text") { |
| 178 | margin-inline: props.get(vars.$item--pad-i-label); | 224 | margin-inline: props.get(vars.$item--pad-i-label); |
| 179 | } | 225 | } |
| 180 | 226 | ||
| 181 | @include bem.elem('item-content') { | 227 | @include bem.elem("item-content") { |
| 182 | position: relative; | 228 | position: relative; |
| 183 | order: 1; | 229 | order: 1; |
| 184 | padding-block: props.get(vars.$item--pad-b); | 230 | padding-block: props.get(vars.$item--pad-b); |
| 185 | padding-inline: props.get(vars.$item--pad-i); | 231 | padding-inline: props.get(vars.$item--pad-i); |
| 186 | font-size: props.get(vars.$item--font-size); | 232 | font-size: props.get(vars.$item--font-size); |
| 187 | white-space: nowrap; | 233 | white-space: nowrap; |
| 188 | border-radius: 100em; | 234 | border-radius: 100em; |
| 189 | 235 | ||
| 190 | &::after { | 236 | &::after { |
| 191 | position: absolute; | 237 | position: absolute; |
| 192 | inset: calc(-1 * props.get(vars.$key-focus--border-offset)); | 238 | inset: calc(-1 * props.get(vars.$key-focus--border-offset)); |
| 193 | z-index: -10; | 239 | z-index: -10; |
| 194 | display: block; | 240 | display: block; |
| 195 | visibility: hidden; | 241 | visibility: hidden; |
| 196 | pointer-events: none; | 242 | pointer-events: none; |
| 197 | content: ''; | 243 | content: ""; |
| 198 | border-radius: 100em; | 244 | border-radius: 100em; |
| 199 | } | 245 | } |
| 200 | } | 246 | } |
| 201 | 247 | ||
| 202 | @include bem.elem('item') { | 248 | @include bem.elem("item") { |
| 203 | display: flex; | 249 | display: flex; |
| 204 | flex-direction: column; | 250 | flex-direction: column; |
| 205 | align-items: center; | 251 | align-items: center; |
| 206 | justify-content: center; | 252 | justify-content: center; |
| 207 | inline-size: 100%; | 253 | inline-size: 100%; |
| 208 | padding-inline: calc(.5 * props.get(vars.$spacing)); | 254 | padding-inline: calc(0.5 * props.get(vars.$spacing)); |
| 209 | font-weight: 500; | 255 | font-weight: 500; |
| 210 | 256 | ||
| 211 | &:link, | 257 | &:link, |
| 212 | &:visited, | 258 | &:visited, |
| 213 | &:enabled { | 259 | &:enabled { |
| 214 | &:focus-visible { | 260 | &:focus-visible { |
| 215 | @include bem.elem('item-content') { | 261 | @include bem.elem("item-content") { |
| 216 | &::after { | 262 | &::after { |
| 217 | visibility: visible; | 263 | visibility: visible; |
| 218 | } | 264 | } |
| @@ -220,7 +266,7 @@ | |||
| 220 | } | 266 | } |
| 221 | } | 267 | } |
| 222 | 268 | ||
| 223 | @include bem.is('selected') { | 269 | @include bem.is("selected") { |
| 224 | font-weight: bold; | 270 | font-weight: bold; |
| 225 | } | 271 | } |
| 226 | } | 272 | } |
| @@ -233,22 +279,21 @@ | |||
| 233 | } | 279 | } |
| 234 | } | 280 | } |
| 235 | 281 | ||
| 236 | @include bem.modifier('hide-unselected') { | 282 | @include bem.modifier("hide-unselected") { |
| 237 | @include bem.elem('item') { | 283 | @include bem.elem("item") { |
| 238 | display: none; | 284 | display: none; |
| 239 | 285 | ||
| 240 | @include bem.is('selected') { | 286 | @include bem.is("selected") { |
| 241 | display: flex; | 287 | display: flex; |
| 242 | } | 288 | } |
| 243 | } | 289 | } |
| 244 | } | 290 | } |
| 245 | 291 | ||
| 246 | @include bem.modifier('adapt') { | 292 | @include bem.modifier("adapt") { |
| 247 | block-size: 100%; | 293 | block-size: 100%; |
| 248 | } | 294 | } |
| 249 | 295 | ||
| 250 | 296 | @include bem.modifier("align-block") { | |
| 251 | @include bem.modifier('align-block') { | ||
| 252 | margin-inline: calc(-1 * props.get(vars.$item--pad-i)); | 297 | margin-inline: calc(-1 * props.get(vars.$item--pad-i)); |
| 253 | } | 298 | } |
| 254 | } | 299 | } |
diff --git a/src/objects/_navbar.vars.scss b/src/objects/_navbar.vars.scss index e96b714..b7d7e16 100644 --- a/src/objects/_navbar.vars.scss +++ b/src/objects/_navbar.vars.scss | |||
| @@ -1,178 +1,242 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:string'; | 2 | @use "sass:string"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../core.vars' as core; | 4 | @use "../core.vars" as core; |
| 5 | 5 | ||
| 6 | $block-size: props.def(--o-navbar--block-size, props.get(core.$size--1000)) !default; | 6 | $block-size: props.def(--o-navbar--block-size, props.get(core.$size--1000)) !default; |
| 7 | $spacing: props.def(--o-navbar--spacing, props.get(core.$size--50)) !default; | 7 | $spacing: props.def(--o-navbar--spacing, props.get(core.$size--50)) !default; |
| 8 | 8 | ||
| 9 | $item--pad-i: props.def(--o-navbar--item--pad-i, props.get(core.$size--150)) !default; | 9 | $item--pad-i: props.def(--o-navbar--item--pad-i, props.get(core.$size--150)) !default; |
| 10 | $item--pad-i-label: props.def(--o-navbar--item--pad-i-label, props.get(core.$size--75)) !default; | 10 | $item--pad-i-label: props.def(--o-navbar--item--pad-i-label, props.get(core.$size--75)) !default; |
| 11 | $item--pad-i-icon: props.def(--o-navbar--item--pad-i-icon, props.get(core.$size--250)) !default; | 11 | $item--pad-i-icon: props.def(--o-navbar--item--pad-i-icon, props.get(core.$size--250)) !default; |
| 12 | $item--pad-b: props.def(--o-navbar--item--pad-b, props.get(core.$size--75)) !default; | 12 | $item--pad-b: props.def(--o-navbar--item--pad-b, props.get(core.$size--75)) !default; |
| 13 | $item--pad-b-icon: props.def(--o-navbar--item--pad-b-icon, props.get(core.$size--40)) !default; | 13 | $item--pad-b-icon: props.def(--o-navbar--item--pad-b-icon, props.get(core.$size--40)) !default; |
| 14 | $item--font-size: props.def(--o-navbar--item--font-size, props.get(core.$font-size--100)) !default; | 14 | $item--font-size: props.def(--o-navbar--item--font-size, props.get(core.$font-size--100)) !default; |
| 15 | $item--icon-size: props.def(--o-navbar--item--icon-size, props.get(core.$font-size--200)) !default; | 15 | $item--icon-size: props.def(--o-navbar--item--icon-size, props.get(core.$font-size--200)) !default; |
| 16 | $item--label-font-size: props.def(--o-navbar--item--label-font-size, props.get(core.$font-size--50)) !default; | 16 | $item--label-font-size: props.def( |
| 17 | --o-navbar--item--label-font-size, | ||
| 18 | props.get(core.$font-size--50) | ||
| 19 | ) !default; | ||
| 17 | 20 | ||
| 18 | $key-focus--border-width: props.def(--o-navbar--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; | 21 | $key-focus--border-width: props.def( |
| 19 | $key-focus--border-offset: props.def(--o-navbar--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; | 22 | --o-navbar--key-focus--border-width, |
| 20 | $key-focus--outline-width: props.def(--o-navbar--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; | 23 | props.get(core.$key-focus--border-width) |
| 24 | ) !default; | ||
| 25 | $key-focus--border-offset: props.def( | ||
| 26 | --o-navbar--key-focus--border-offset, | ||
| 27 | props.get(core.$key-focus--border-offset) | ||
| 28 | ) !default; | ||
| 29 | $key-focus--outline-width: props.def( | ||
| 30 | --o-navbar--key-focus--outline-width, | ||
| 31 | props.get(core.$key-focus--outline-width) | ||
| 32 | ) !default; | ||
| 21 | 33 | ||
| 22 | $themes: props.def(--o-navbar, (), 'color'); | 34 | $themes: props.def(--o-navbar, (), "color"); |
| 23 | 35 | ||
| 24 | $default-theme-override: () !default; | 36 | $default-theme-override: () !default; |
| 25 | $default-theme: map.deep-merge(( | 37 | $default-theme: map.deep-merge( |
| 26 | --text-color: props.get(core.$theme, --text), | 38 | ( |
| 27 | --label-color: props.get(core.$theme, --text-mute), | 39 | --text-color: props.get(core.$theme, --text), |
| 28 | 40 | --label-color: props.get(core.$theme, --text-mute), | |
| 29 | --hover: ( | ||
| 30 | --bg-color: props.get(core.$theme, --border-mute), | ||
| 31 | --text-color: props.get(core.$theme, --heading), | ||
| 32 | --label-color: props.get(core.$theme, --text), | ||
| 33 | ), | ||
| 34 | |||
| 35 | --active: ( | ||
| 36 | --bg-color: props.get(core.$theme, --border), | ||
| 37 | --text-color: props.get(core.$theme, --heading), | ||
| 38 | --label-color: props.get(core.$theme, --heading), | ||
| 39 | ), | ||
| 40 | |||
| 41 | --disabled: ( | ||
| 42 | --text-color: props.get(core.$theme, --border-strong), | ||
| 43 | --label-color: props.get(core.$theme, --text-disabled), | ||
| 44 | ), | ||
| 45 | |||
| 46 | --key-focus: ( | ||
| 47 | --label: props.get(core.$theme, --focus, --text), | ||
| 48 | --border: props.get(core.$theme, --focus, --border), | ||
| 49 | --outline: props.get(core.$theme, --focus, --outline), | ||
| 50 | ), | ||
| 51 | |||
| 52 | --selected: ( | ||
| 53 | --bg-color: props.get(core.$theme, --heading), | ||
| 54 | --text-color: props.get(core.$theme, --base, --50), | ||
| 55 | --label-color: props.get(core.$theme, --heading), | ||
| 56 | |||
| 57 | --hover: ( | 41 | --hover: ( |
| 58 | --bg-color: props.get(core.$theme, --text), | 42 | --bg-color: props.get(core.$theme, --border-mute), |
| 59 | --text-color: props.get(core.$theme, --base, --50), | 43 | --text-color: props.get(core.$theme, --heading), |
| 60 | --label-color: props.get(core.$theme, --heading), | 44 | --label-color: props.get(core.$theme, --text), |
| 61 | ), | 45 | ), |
| 62 | 46 | ||
| 63 | --active: ( | 47 | --active: ( |
| 64 | --bg-color: props.get(core.$theme, --text-mute), | 48 | --bg-color: props.get(core.$theme, --border), |
| 65 | --text-color: props.get(core.$theme, --base, --50), | 49 | --text-color: props.get(core.$theme, --heading), |
| 66 | --label-color: props.get(core.$theme, --heading), | 50 | --label-color: props.get(core.$theme, --heading), |
| 67 | ), | 51 | ), |
| 68 | 52 | ||
| 69 | --disabled: ( | 53 | --disabled: ( |
| 70 | --bg-color: props.get(core.$theme, --border-mute), | 54 | --text-color: props.get(core.$theme, --border-strong), |
| 71 | --text-color: props.get(core.$theme, --border-strong), | ||
| 72 | --label-color: props.get(core.$theme, --text-disabled), | 55 | --label-color: props.get(core.$theme, --text-disabled), |
| 73 | ), | 56 | ), |
| 74 | ), | ||
| 75 | |||
| 76 | --quiet: ( | ||
| 77 | --selected: ( | ||
| 78 | --bg-color: props.get(core.$theme, --border-mute), | ||
| 79 | --text-color: props.get(core.$theme, --heading), | ||
| 80 | |||
| 81 | --hover: ( | ||
| 82 | --bg-color: props.get(core.$theme, --border), | ||
| 83 | --text-color: props.get(core.$theme, --heading), | ||
| 84 | ), | ||
| 85 | |||
| 86 | --active: ( | ||
| 87 | --bg-color: props.get(core.$theme, --border-strong), | ||
| 88 | --text-color: props.get(core.$theme, --heading), | ||
| 89 | ), | ||
| 90 | |||
| 91 | --disabled: ( | ||
| 92 | --bg-color: props.get(core.$theme, --border-mute), | ||
| 93 | --text-color: props.get(core.$theme, --border-strong), | ||
| 94 | ), | ||
| 95 | ) | ||
| 96 | ) | ||
| 97 | ), $default-theme-override) !default; | ||
| 98 | $default-theme: props.def(--o-navbar, $default-theme, 'color'); | ||
| 99 | |||
| 100 | @each $theme in map.keys(props.get(core.$transparent-colors)) { | ||
| 101 | $nav-theme: --static-#{string.slice($theme, 3)}; | ||
| 102 | 57 | ||
| 103 | $themes: props.merge($themes, ( | 58 | --key-focus: ( |
| 104 | $nav-theme: ( | 59 | --label: props.get(core.$theme, --focus, --text), |
| 105 | --text-color: props.get(core.$transparent-colors, $theme, --800), | 60 | --border: props.get(core.$theme, --focus, --border), |
| 106 | --label-color: props.get(core.$transparent-colors, $theme, --700), | 61 | --outline: props.get(core.$theme, --focus, --outline), |
| 62 | ), | ||
| 107 | 63 | ||
| 64 | --selected: ( | ||
| 65 | --bg-color: props.get(core.$theme, --heading), | ||
| 66 | --text-color: props.get(core.$theme, --base, --50), | ||
| 67 | --label-color: props.get(core.$theme, --heading), | ||
| 108 | --hover: ( | 68 | --hover: ( |
| 109 | --bg-color: props.get(core.$transparent-colors, $theme, --300), | 69 | --bg-color: props.get(core.$theme, --text), |
| 110 | --text-color: props.get(core.$transparent-colors, $theme, --900), | 70 | --text-color: props.get(core.$theme, --base, --50), |
| 111 | --label-color: props.get(core.$transparent-colors, $theme, --800), | 71 | --label-color: props.get(core.$theme, --heading), |
| 112 | ), | 72 | ), |
| 113 | 73 | ||
| 114 | --active: ( | 74 | --active: ( |
| 115 | --bg-color: props.get(core.$transparent-colors, $theme, --400), | 75 | --bg-color: props.get(core.$theme, --text-mute), |
| 116 | --text-color: props.get(core.$transparent-colors, $theme, --900), | 76 | --text-color: props.get(core.$theme, --base, --50), |
| 117 | --label-color: props.get(core.$transparent-colors, $theme, --900), | 77 | --label-color: props.get(core.$theme, --heading), |
| 118 | ), | 78 | ), |
| 119 | 79 | ||
| 120 | --disabled: ( | 80 | --disabled: ( |
| 121 | --text-color: props.get(core.$transparent-colors, $theme, --500), | 81 | --bg-color: props.get(core.$theme, --border-mute), |
| 122 | --label-color: props.get(core.$transparent-colors, $theme, --500), | 82 | --text-color: props.get(core.$theme, --border-strong), |
| 123 | ), | 83 | --label-color: props.get(core.$theme, --text-disabled), |
| 124 | |||
| 125 | --key-focus: ( | ||
| 126 | --label: props.get(core.$transparent-colors, $theme, --800), | ||
| 127 | --border: props.get(core.$transparent-colors, $theme, --900), | ||
| 128 | --outline: props.get(core.$transparent-colors, $theme, --300), | ||
| 129 | ), | 84 | ), |
| 85 | ), | ||
| 130 | 86 | ||
| 87 | --quiet: ( | ||
| 131 | --selected: ( | 88 | --selected: ( |
| 132 | --bg-color: props.get(core.$transparent-colors, $theme, --900), | 89 | --bg-color: props.get(core.$theme, --border-mute), |
| 133 | --text-color: props.get(core.$transparent-colors, $theme, --text), | 90 | --text-color: props.get(core.$theme, --heading), |
| 134 | --label-color: props.get(core.$transparent-colors, $theme, --800), | ||
| 135 | |||
| 136 | --hover: ( | 91 | --hover: ( |
| 137 | --bg-color: props.get(core.$transparent-colors, $theme, --800), | 92 | --bg-color: props.get(core.$theme, --border), |
| 138 | --text-color: props.get(core.$transparent-colors, $theme, --text), | 93 | --text-color: props.get(core.$theme, --heading), |
| 139 | --label-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 140 | ), | 94 | ), |
| 141 | 95 | ||
| 142 | --active: ( | 96 | --active: ( |
| 143 | --bg-color: props.get(core.$transparent-colors, $theme, --800), | 97 | --bg-color: props.get(core.$theme, --border-strong), |
| 144 | --text-color: props.get(core.$transparent-colors, $theme, --text), | 98 | --text-color: props.get(core.$theme, --heading), |
| 145 | --label-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 146 | ), | 99 | ), |
| 147 | 100 | ||
| 148 | --disabled: ( | 101 | --disabled: ( |
| 149 | --bg-color: props.get(core.$transparent-colors, $theme, --200), | 102 | --bg-color: props.get(core.$theme, --border-mute), |
| 150 | --text-color: props.get(core.$transparent-colors, $theme, --500), | 103 | --text-color: props.get(core.$theme, --border-strong), |
| 151 | --label-color: props.get(core.$transparent-colors, $theme, --100), | ||
| 152 | ), | 104 | ), |
| 153 | ), | 105 | ), |
| 106 | ), | ||
| 107 | ), | ||
| 108 | $default-theme-override | ||
| 109 | ) !default; | ||
| 110 | $default-theme: props.def(--o-navbar, $default-theme, "color"); | ||
| 154 | 111 | ||
| 155 | --quiet: ( | 112 | @each $theme in map.keys(props.get(core.$transparent-colors)) { |
| 156 | --selected: ( | 113 | $nav-theme: --static-#{string.slice($theme, 3)}; |
| 157 | --bg-color: props.get(core.$transparent-colors, $theme, --300), | ||
| 158 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 159 | 114 | ||
| 115 | $themes: props.merge( | ||
| 116 | $themes, | ||
| 117 | ( | ||
| 118 | $nav-theme: ( | ||
| 119 | --text-color: props.get(core.$transparent-colors, $theme, --800), | ||
| 120 | --label-color: props.get(core.$transparent-colors, $theme, --700), | ||
| 160 | --hover: ( | 121 | --hover: ( |
| 161 | --bg-color: props.get(core.$transparent-colors, $theme, --400), | 122 | --bg-color: props.get(core.$transparent-colors, $theme, --300), |
| 162 | --text-color: props.get(core.$transparent-colors, $theme, --900), | 123 | --text-color: props.get(core.$transparent-colors, $theme, --900), |
| 163 | ), | 124 | --label-color: props.get(core.$transparent-colors, $theme, --800), |
| 125 | ), | ||
| 164 | 126 | ||
| 165 | --active: ( | 127 | --active: ( |
| 166 | --bg-color: props.get(core.$transparent-colors, $theme, --500), | 128 | --bg-color: props.get(core.$transparent-colors, $theme, --400), |
| 167 | --text-color: props.get(core.$transparent-colors, $theme, --900), | 129 | --text-color: props.get(core.$transparent-colors, $theme, --900), |
| 168 | ), | 130 | --label-color: props.get(core.$transparent-colors, $theme, --900), |
| 131 | ), | ||
| 169 | 132 | ||
| 170 | --disabled: ( | 133 | --disabled: ( |
| 171 | --bg-color: props.get(core.$transparent-colors, $theme, --100), | 134 | --text-color: props.get(core.$transparent-colors, $theme, --500), |
| 172 | --text-color: props.get(core.$transparent-colors, $theme, --500), | 135 | --label-color: props.get(core.$transparent-colors, $theme, --500), |
| 173 | ), | 136 | ), |
| 174 | ) | 137 | |
| 175 | ) | 138 | --key-focus: ( |
| 139 | --label: props.get(core.$transparent-colors, $theme, --800), | ||
| 140 | --border: props.get(core.$transparent-colors, $theme, --900), | ||
| 141 | --outline: props.get(core.$transparent-colors, $theme, --300), | ||
| 142 | ), | ||
| 143 | |||
| 144 | --selected: ( | ||
| 145 | --bg-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 146 | --text-color: props.get(core.$transparent-colors, $theme, --text), | ||
| 147 | --label-color: props.get(core.$transparent-colors, $theme, --800), | ||
| 148 | --hover: ( | ||
| 149 | --bg-color: props.get(core.$transparent-colors, $theme, --800), | ||
| 150 | --text-color: props.get( | ||
| 151 | core.$transparent-colors, | ||
| 152 | $theme, | ||
| 153 | --text | ||
| 154 | ), | ||
| 155 | --label-color: props.get( | ||
| 156 | core.$transparent-colors, | ||
| 157 | $theme, | ||
| 158 | --900 | ||
| 159 | ), | ||
| 160 | ), | ||
| 161 | |||
| 162 | --active: ( | ||
| 163 | --bg-color: props.get(core.$transparent-colors, $theme, --800), | ||
| 164 | --text-color: props.get( | ||
| 165 | core.$transparent-colors, | ||
| 166 | $theme, | ||
| 167 | --text | ||
| 168 | ), | ||
| 169 | --label-color: props.get( | ||
| 170 | core.$transparent-colors, | ||
| 171 | $theme, | ||
| 172 | --900 | ||
| 173 | ), | ||
| 174 | ), | ||
| 175 | |||
| 176 | --disabled: ( | ||
| 177 | --bg-color: props.get(core.$transparent-colors, $theme, --200), | ||
| 178 | --text-color: props.get( | ||
| 179 | core.$transparent-colors, | ||
| 180 | $theme, | ||
| 181 | --500 | ||
| 182 | ), | ||
| 183 | --label-color: props.get( | ||
| 184 | core.$transparent-colors, | ||
| 185 | $theme, | ||
| 186 | --100 | ||
| 187 | ), | ||
| 188 | ), | ||
| 189 | ), | ||
| 190 | |||
| 191 | --quiet: ( | ||
| 192 | --selected: ( | ||
| 193 | --bg-color: props.get(core.$transparent-colors, $theme, --300), | ||
| 194 | --text-color: props.get( | ||
| 195 | core.$transparent-colors, | ||
| 196 | $theme, | ||
| 197 | --900 | ||
| 198 | ), | ||
| 199 | --hover: ( | ||
| 200 | --bg-color: props.get( | ||
| 201 | core.$transparent-colors, | ||
| 202 | $theme, | ||
| 203 | --400 | ||
| 204 | ), | ||
| 205 | --text-color: props.get( | ||
| 206 | core.$transparent-colors, | ||
| 207 | $theme, | ||
| 208 | --900 | ||
| 209 | ), | ||
| 210 | ), | ||
| 211 | |||
| 212 | --active: ( | ||
| 213 | --bg-color: props.get( | ||
| 214 | core.$transparent-colors, | ||
| 215 | $theme, | ||
| 216 | --500 | ||
| 217 | ), | ||
| 218 | --text-color: props.get( | ||
| 219 | core.$transparent-colors, | ||
| 220 | $theme, | ||
| 221 | --900 | ||
| 222 | ), | ||
| 223 | ), | ||
| 224 | |||
| 225 | --disabled: ( | ||
| 226 | --bg-color: props.get( | ||
| 227 | core.$transparent-colors, | ||
| 228 | $theme, | ||
| 229 | --100 | ||
| 230 | ), | ||
| 231 | --text-color: props.get( | ||
| 232 | core.$transparent-colors, | ||
| 233 | $theme, | ||
| 234 | --500 | ||
| 235 | ), | ||
| 236 | ), | ||
| 237 | ), | ||
| 238 | ), | ||
| 239 | ), | ||
| 176 | ) | 240 | ) |
| 177 | )); | 241 | ); |
| 178 | } | 242 | } |
diff --git a/src/objects/_palette.scss b/src/objects/_palette.scss index f503812..88448e0 100644 --- a/src/objects/_palette.scss +++ b/src/objects/_palette.scss | |||
| @@ -1,21 +1,27 @@ | |||
| 1 | @use 'sass:list'; | 1 | @use "sass:list"; |
| 2 | @use 'sass:map'; | 2 | @use "sass:map"; |
| 3 | @use 'sass:string'; | 3 | @use "sass:string"; |
| 4 | @use 'pkg:iro-sass/src/bem'; | 4 | @use "pkg:iro-sass/bem"; |
| 5 | @use '../config'; | 5 | @use "../config"; |
| 6 | @use 'pkg:iro-sass/src/props'; | 6 | @use "pkg:iro-sass/props"; |
| 7 | @use '../core.vars' as core; | 7 | @use "../core.vars" as core; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include bem.object('palette') { | 10 | @include bem.object("palette") { |
| 11 | display: flex; | 11 | display: flex; |
| 12 | block-size: 3em; | 12 | block-size: 3em; |
| 13 | 13 | ||
| 14 | @include bem.elem('item') { | 14 | @include bem.elem("item") { |
| 15 | flex: 1 1 auto; | 15 | flex: 1 1 auto; |
| 16 | 16 | ||
| 17 | $palette: map.get(config.$themes, config.$theme-default, light, --palettes, --base); | 17 | $palette: map.get(config.$themes, config.$theme-default, light, --palettes, --base); |
| 18 | $levels: map.get(config.$themes, config.$theme-default, light, --levels, list.nth($palette, 2)); | 18 | $levels: map.get( |
| 19 | config.$themes, | ||
| 20 | config.$theme-default, | ||
| 21 | light, | ||
| 22 | --levels, | ||
| 23 | list.nth($palette, 2) | ||
| 24 | ); | ||
| 19 | 25 | ||
| 20 | @for $i from 1 through list.length($levels) { | 26 | @for $i from 1 through list.length($levels) { |
| 21 | $key: list.nth(map.keys($levels), $i); | 27 | $key: list.nth(map.keys($levels), $i); |
| @@ -26,11 +32,19 @@ | |||
| 26 | } | 32 | } |
| 27 | } | 33 | } |
| 28 | 34 | ||
| 29 | @each $palette-name, $palette in map.get(config.$themes, config.$theme-default, light, --palettes) { | 35 | @each $palette-name, |
| 30 | $levels: map.get(config.$themes, config.$theme-default, light, --levels, list.nth($palette, 2)); | 36 | $palette in map.get(config.$themes, config.$theme-default, light, --palettes) |
| 37 | { | ||
| 38 | $levels: map.get( | ||
| 39 | config.$themes, | ||
| 40 | config.$theme-default, | ||
| 41 | light, | ||
| 42 | --levels, | ||
| 43 | list.nth($palette, 2) | ||
| 44 | ); | ||
| 31 | 45 | ||
| 32 | @include bem.modifier(string.slice($palette-name, 3)) { | 46 | @include bem.modifier(string.slice($palette-name, 3)) { |
| 33 | @include bem.elem('item') { | 47 | @include bem.elem("item") { |
| 34 | @for $i from 1 through list.length($levels) { | 48 | @for $i from 1 through list.length($levels) { |
| 35 | $key: list.nth(map.keys($levels), $i); | 49 | $key: list.nth(map.keys($levels), $i); |
| 36 | 50 | ||
| @@ -42,17 +56,21 @@ | |||
| 42 | } | 56 | } |
| 43 | } | 57 | } |
| 44 | 58 | ||
| 45 | @include bem.modifier('static') { | 59 | @include bem.modifier("static") { |
| 46 | @each $palette-name, $palette in map.get(config.$static-colors, --palettes) { | 60 | @each $palette-name, $palette in map.get(config.$static-colors, --palettes) { |
| 47 | $levels: map.get(config.$static-colors, --levels); | 61 | $levels: map.get(config.$static-colors, --levels); |
| 48 | 62 | ||
| 49 | @include bem.modifier(string.slice($palette-name, 3)) { | 63 | @include bem.modifier(string.slice($palette-name, 3)) { |
| 50 | @include bem.elem('item') { | 64 | @include bem.elem("item") { |
| 51 | @for $i from 1 through list.length($levels) { | 65 | @for $i from 1 through list.length($levels) { |
| 52 | $key: list.nth(map.keys($levels), $i); | 66 | $key: list.nth(map.keys($levels), $i); |
| 53 | 67 | ||
| 54 | &:nth-child(#{$i}) { | 68 | &:nth-child(#{$i}) { |
| 55 | background-color: props.get(core.$theme, #{$palette-name}-static, $key); | 69 | background-color: props.get( |
| 70 | core.$theme, | ||
| 71 | #{$palette-name}-static, | ||
| 72 | $key | ||
| 73 | ); | ||
| 56 | } | 74 | } |
| 57 | } | 75 | } |
| 58 | } | 76 | } |
diff --git a/src/objects/_placeholders.scss b/src/objects/_placeholders.scss index 683f57e..d0af033 100644 --- a/src/objects/_placeholders.scss +++ b/src/objects/_placeholders.scss | |||
| @@ -1,22 +1,22 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'placeholders.vars'; | 6 | @forward "placeholders.vars"; |
| 7 | @use 'placeholders.vars' as vars; | 7 | @use "placeholders.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.object('placeholders') { | 12 | @include bem.object("placeholders") { |
| 13 | @include bem.elem('placeholder') { | 13 | @include bem.elem("placeholder") { |
| 14 | display: inline-block; | 14 | display: inline-block; |
| 15 | min-block-size: props.get(vars.$min-block-size); | 15 | min-block-size: props.get(vars.$min-block-size); |
| 16 | vertical-align: middle; | 16 | vertical-align: middle; |
| 17 | background-color: currentColor; | 17 | background-color: currentColor; |
| 18 | border-radius: props.get(vars.$rounding); | 18 | border-radius: props.get(vars.$rounding); |
| 19 | opacity: props.get(vars.$opacity); | 19 | opacity: props.get(vars.$opacity); |
| 20 | } | 20 | } |
| 21 | } | 21 | } |
| 22 | } | 22 | } |
diff --git a/src/objects/_placeholders.vars.scss b/src/objects/_placeholders.vars.scss index 1ac4ef7..87e1657 100644 --- a/src/objects/_placeholders.vars.scss +++ b/src/objects/_placeholders.vars.scss | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | 3 | ||
| 4 | $min-block-size: props.def(--o-placeholder--min-block-size, 1em) !default; | 4 | $min-block-size: props.def(--o-placeholder--min-block-size, 1em) !default; |
| 5 | $rounding: props.def(--o-placeholder--rounding, props.get(core.$rounding)) !default; | 5 | $rounding: props.def(--o-placeholder--rounding, props.get(core.$rounding)) !default; |
| 6 | $opacity: props.def(--o-placeholder--opacity, .5) !default; | 6 | $opacity: props.def(--o-placeholder--opacity, 0.5) !default; |
diff --git a/src/objects/_popover.scss b/src/objects/_popover.scss index 1cb5660..90187c1 100644 --- a/src/objects/_popover.scss +++ b/src/objects/_popover.scss | |||
| @@ -1,44 +1,40 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'popover.vars'; | 6 | @forward "popover.vars"; |
| 7 | @use 'popover.vars' as vars; | 7 | @use "popover.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.object('popover') { | 12 | @include bem.object("popover") { |
| 13 | position: fixed; | 13 | position: fixed; |
| 14 | inset-block-start: 0; | 14 | inset-block-start: 0; |
| 15 | inset-inline-start: 0; | 15 | inset-inline-start: 0; |
| 16 | z-index: props.get(vars.$z-index); | 16 | z-index: props.get(vars.$z-index); |
| 17 | padding-block: props.get(vars.$pad-b); | 17 | padding-block: props.get(vars.$pad-b); |
| 18 | padding-inline: props.get(vars.$pad-i); | 18 | padding-inline: props.get(vars.$pad-i); |
| 19 | margin: 0; | 19 | margin: 0; |
| 20 | color: currentColor; | 20 | color: currentColor; |
| 21 | background-color: props.get(vars.$bg-color); | 21 | background-color: props.get(vars.$bg-color); |
| 22 | border: props.get(vars.$border-width) solid transparent; | 22 | border: props.get(vars.$border-width) solid transparent; |
| 23 | border-color: props.get(vars.$border-color); | 23 | border-color: props.get(vars.$border-color); |
| 24 | border-radius: props.get(vars.$rounding); | 24 | border-radius: props.get(vars.$rounding); |
| 25 | box-shadow: | 25 | box-shadow: props.get(vars.$shadow-x) props.get(vars.$shadow-y) props.get(vars.$shadow-blur) |
| 26 | props.get(vars.$shadow-x) | 26 | props.get(vars.$shadow-grow) props.get(vars.$shadow-color); |
| 27 | props.get(vars.$shadow-y) | 27 | transform: translate(var(--x), var(--y)); |
| 28 | props.get(vars.$shadow-blur) | ||
| 29 | props.get(vars.$shadow-grow) | ||
| 30 | props.get(vars.$shadow-color); | ||
| 31 | transform: translate(var(--x), var(--y)); | ||
| 32 | 28 | ||
| 33 | @include bem.modifier('up-left') { | 29 | @include bem.modifier("up-left") { |
| 34 | transform: translate(var(--x), calc(var(--y) - 100%)); | 30 | transform: translate(var(--x), calc(var(--y) - 100%)); |
| 35 | } | 31 | } |
| 36 | 32 | ||
| 37 | @include bem.modifier('up-right') { | 33 | @include bem.modifier("up-right") { |
| 38 | transform: translate(calc(var(--x) - 100%), calc(var(--y) - 100%)); | 34 | transform: translate(calc(var(--x) - 100%), calc(var(--y) - 100%)); |
| 39 | } | 35 | } |
| 40 | 36 | ||
| 41 | @include bem.modifier('down-right') { | 37 | @include bem.modifier("down-right") { |
| 42 | transform: translate(calc(var(--x) - 100%), var(--y)); | 38 | transform: translate(calc(var(--x) - 100%), var(--y)); |
| 43 | } | 39 | } |
| 44 | } | 40 | } |
diff --git a/src/objects/_popover.vars.scss b/src/objects/_popover.vars.scss index 202d71a..df1072e 100644 --- a/src/objects/_popover.vars.scss +++ b/src/objects/_popover.vars.scss | |||
| @@ -1,19 +1,28 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | 4 | ||
| 5 | $z-index: props.def(--o-popover--z-index, 11000) !default; | 5 | $z-index: props.def(--o-popover--z-index, 11000) !default; |
| 6 | $pad-i: props.def(--o-popover--pad-i, 0) !default; | 6 | $pad-i: props.def(--o-popover--pad-i, 0) !default; |
| 7 | $pad-b: props.def(--o-popover--pad-b, props.get(core.$size--85)) !default; | 7 | $pad-b: props.def(--o-popover--pad-b, props.get(core.$size--85)) !default; |
| 8 | $separator-width: props.def(--o-popover--separator-width, props.get(core.$size--85)) !default; | 8 | $separator-width: props.def(--o-popover--separator-width, props.get(core.$size--85)) !default; |
| 9 | $rounding: props.def(--o-popover--rounding, props.get(core.$rounding)) !default; | 9 | $rounding: props.def(--o-popover--rounding, props.get(core.$rounding)) !default; |
| 10 | $border-width: props.def(--o-popover--border-width, props.get(core.$border-width--thin)) !default; | 10 | $border-width: props.def(--o-popover--border-width, props.get(core.$border-width--thin)) !default; |
| 11 | 11 | ||
| 12 | $shadow-x: props.def(--o-popover--shadow-x, props.get(core.$shadow--l2--x)) !default; | 12 | $shadow-x: props.def(--o-popover--shadow-x, props.get(core.$shadow--l2--x)) !default; |
| 13 | $shadow-y: props.def(--o-popover--shadow-y, props.get(core.$shadow--l2--y)) !default; | 13 | $shadow-y: props.def(--o-popover--shadow-y, props.get(core.$shadow--l2--y)) !default; |
| 14 | $shadow-blur: props.def(--o-popover--shadow-blur, props.get(core.$shadow--l2--blur)) !default; | 14 | $shadow-blur: props.def(--o-popover--shadow-blur, props.get(core.$shadow--l2--blur)) !default; |
| 15 | $shadow-grow: props.def(--o-popover--shadow-grow, props.get(core.$shadow--l2--grow)) !default; | 15 | $shadow-grow: props.def(--o-popover--shadow-grow, props.get(core.$shadow--l2--grow)) !default; |
| 16 | 16 | ||
| 17 | $bg-color: props.def(--o-popover--bg-color, props.get(core.$theme, --bg-l2), 'color') !default; | 17 | $bg-color: props.def(--o-popover--bg-color, props.get(core.$theme, --bg-l2), "color") !default; |
| 18 | $border-color: props.def(--o-popover--border-color, props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border-strong), 'color') !default; | 18 | $border-color: props.def( |
| 19 | $shadow-color: props.def(--o-popover--shadow-color, props.get(core.$theme, --shadow), 'color') !default; | 19 | --o-popover--border-color, |
| 20 | props.get(core.$theme, --box, --border) props.get(core.$theme, --box, --border) | ||
| 21 | props.get(core.$theme, --box, --border-strong), | ||
| 22 | "color" | ||
| 23 | ) !default; | ||
| 24 | $shadow-color: props.def( | ||
| 25 | --o-popover--shadow-color, | ||
| 26 | props.get(core.$theme, --shadow), | ||
| 27 | "color" | ||
| 28 | ) !default; | ||
diff --git a/src/objects/_radio.scss b/src/objects/_radio.scss index ae4a85a..c964657 100644 --- a/src/objects/_radio.scss +++ b/src/objects/_radio.scss | |||
| @@ -1,92 +1,100 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | @use '../core.vars' as core; | 5 | @use "../core.vars" as core; |
| 6 | 6 | ||
| 7 | @forward 'radio.vars'; | 7 | @forward "radio.vars"; |
| 8 | @use 'radio.vars' as vars; | 8 | @use "radio.vars" as vars; |
| 9 | 9 | ||
| 10 | @mixin styles { | 10 | @mixin styles { |
| 11 | @include materialize-at-root(meta.module-variables('vars')); | 11 | @include materialize-at-root(meta.module-variables("vars")); |
| 12 | 12 | ||
| 13 | @include bem.object('radio') { | 13 | @include bem.object("radio") { |
| 14 | position: relative; | 14 | position: relative; |
| 15 | display: inline-block; | 15 | display: inline-block; |
| 16 | padding-block: props.get(vars.$pad-b); | 16 | padding-block: props.get(vars.$pad-b); |
| 17 | padding-inline: props.get(vars.$pad-i); | 17 | padding-inline: props.get(vars.$pad-i); |
| 18 | margin-inline: | 18 | margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)) |
| 19 | calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)) | 19 | calc( |
| 20 | calc(props.get(vars.$spacing-sibling) - props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)); | 20 | props.get(vars.$spacing-sibling) - props.get(vars.$pad-i) - props.get( |
| 21 | vars.$key-focus--border-offset | ||
| 22 | ) | ||
| 23 | ); | ||
| 21 | 24 | ||
| 22 | @include bem.elem('circle') { | 25 | @include bem.elem("circle") { |
| 23 | display: inline-block; | 26 | display: inline-block; |
| 24 | flex: 0 0 auto; | 27 | flex: 0 0 auto; |
| 25 | inline-size: props.get(vars.$diameter); | 28 | inline-size: props.get(vars.$diameter); |
| 26 | block-size: props.get(vars.$diameter); | 29 | block-size: props.get(vars.$diameter); |
| 27 | margin-block-start: calc(.5em * props.get(core.$font--standard--line-height) - .5 * props.get(vars.$diameter) - props.get(vars.$key-focus--border-offset)); | 30 | margin-block-start: calc( |
| 28 | vertical-align: top; | 31 | 0.5em * props.get(core.$font--standard--line-height) - 0.5 * |
| 29 | background-color: props.get(vars.$circle-border-color); | 32 | props.get(vars.$diameter) - props.get(vars.$key-focus--border-offset) |
| 30 | background-clip: padding-box; | 33 | ); |
| 31 | border: props.get(vars.$key-focus--border-offset) solid transparent; | 34 | vertical-align: top; |
| 32 | border-radius: 2em; | 35 | background-color: props.get(vars.$circle-border-color); |
| 36 | background-clip: padding-box; | ||
| 37 | border: props.get(vars.$key-focus--border-offset) solid transparent; | ||
| 38 | border-radius: 2em; | ||
| 33 | 39 | ||
| 34 | &::after { | 40 | &::after { |
| 35 | position: relative; | 41 | position: relative; |
| 36 | inset-block-start: props.get(vars.$border-width); | 42 | inset-block-start: props.get(vars.$border-width); |
| 37 | inset-inline-start: props.get(vars.$border-width); | 43 | inset-inline-start: props.get(vars.$border-width); |
| 38 | display: block; | 44 | display: block; |
| 39 | inline-size: calc(props.get(vars.$diameter) - 2 * props.get(vars.$border-width)); | 45 | inline-size: calc(props.get(vars.$diameter) - 2 * props.get(vars.$border-width)); |
| 40 | block-size: calc(props.get(vars.$diameter) - 2 * props.get(vars.$border-width)); | 46 | block-size: calc(props.get(vars.$diameter) - 2 * props.get(vars.$border-width)); |
| 41 | content: ''; | 47 | content: ""; |
| 42 | background-color: props.get(vars.$circle-bg-color); | 48 | background-color: props.get(vars.$circle-bg-color); |
| 43 | border-radius: props.get(vars.$diameter); | 49 | border-radius: props.get(vars.$diameter); |
| 44 | transition: transform .2s ease; | 50 | transition: transform 0.2s ease; |
| 45 | } | 51 | } |
| 46 | } | 52 | } |
| 47 | 53 | ||
| 48 | @include bem.elem('label') { | 54 | @include bem.elem("label") { |
| 49 | margin-inline-start: calc(props.get(vars.$label-gap) - props.get(vars.$key-focus--border-offset)); | 55 | margin-inline-start: calc( |
| 56 | props.get(vars.$label-gap) - props.get(vars.$key-focus--border-offset) | ||
| 57 | ); | ||
| 50 | } | 58 | } |
| 51 | 59 | ||
| 52 | @include bem.elem('native') { | 60 | @include bem.elem("native") { |
| 53 | position: absolute; | 61 | position: absolute; |
| 54 | inset-block-start: 0; | 62 | inset-block-start: 0; |
| 55 | inset-inline-start: 0; | 63 | inset-inline-start: 0; |
| 56 | z-index: -1; | 64 | z-index: -1; |
| 57 | inline-size: 100%; | 65 | inline-size: 100%; |
| 58 | block-size: 100%; | 66 | block-size: 100%; |
| 59 | padding: 0; | 67 | padding: 0; |
| 60 | margin: 0; | 68 | margin: 0; |
| 61 | overflow: hidden; | 69 | overflow: hidden; |
| 62 | appearance: none; | 70 | appearance: none; |
| 63 | border-radius: props.get(vars.$rounding); | 71 | border-radius: props.get(vars.$rounding); |
| 64 | 72 | ||
| 65 | &:hover, | 73 | &:hover, |
| 66 | &:focus-visible { | 74 | &:focus-visible { |
| 67 | @include bem.sibling-elem('label') { | 75 | @include bem.sibling-elem("label") { |
| 68 | color: props.get(vars.$hover--label-color); | 76 | color: props.get(vars.$hover--label-color); |
| 69 | } | 77 | } |
| 70 | 78 | ||
| 71 | @include bem.sibling-elem('circle') { | 79 | @include bem.sibling-elem("circle") { |
| 72 | background-color: props.get(vars.$hover--circle-border-color); | 80 | background-color: props.get(vars.$hover--circle-border-color); |
| 73 | } | 81 | } |
| 74 | } | 82 | } |
| 75 | 83 | ||
| 76 | &:checked { | 84 | &:checked { |
| 77 | @include bem.sibling-elem('circle') { | 85 | @include bem.sibling-elem("circle") { |
| 78 | &::after { | 86 | &::after { |
| 79 | transform: scale(.44); | 87 | transform: scale(0.44); |
| 80 | } | 88 | } |
| 81 | } | 89 | } |
| 82 | } | 90 | } |
| 83 | 91 | ||
| 84 | &:disabled { | 92 | &:disabled { |
| 85 | @include bem.sibling-elem('label') { | 93 | @include bem.sibling-elem("label") { |
| 86 | color: props.get(vars.$disabled--label-color); | 94 | color: props.get(vars.$disabled--label-color); |
| 87 | } | 95 | } |
| 88 | 96 | ||
| 89 | @include bem.sibling-elem('circle') { | 97 | @include bem.sibling-elem("circle") { |
| 90 | background-color: props.get(vars.$disabled--circle-border-color); | 98 | background-color: props.get(vars.$disabled--circle-border-color); |
| 91 | 99 | ||
| 92 | &::after { | 100 | &::after { |
| @@ -96,45 +104,46 @@ | |||
| 96 | } | 104 | } |
| 97 | 105 | ||
| 98 | &:focus-visible { | 106 | &:focus-visible { |
| 99 | @include bem.sibling-elem('label') { | 107 | @include bem.sibling-elem("label") { |
| 100 | color: props.get(vars.$key-focus--label-color); | 108 | color: props.get(vars.$key-focus--label-color); |
| 101 | } | 109 | } |
| 102 | 110 | ||
| 103 | @include bem.sibling-elem('circle') { | 111 | @include bem.sibling-elem("circle") { |
| 104 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | 112 | outline: props.get(vars.$key-focus--border-color) solid |
| 105 | box-shadow: | 113 | props.get(vars.$key-focus--border-width); |
| 106 | 0 | 114 | box-shadow: 0 0 0 |
| 107 | 0 | 115 | calc( |
| 108 | 0 | 116 | props.get(vars.$key-focus--border-width) + |
| 109 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | 117 | props.get(vars.$key-focus--outline-width) |
| 118 | ) | ||
| 110 | props.get(vars.$key-focus--outline-color); | 119 | props.get(vars.$key-focus--outline-color); |
| 111 | } | 120 | } |
| 112 | } | 121 | } |
| 113 | } | 122 | } |
| 114 | 123 | ||
| 115 | @include bem.modifier('standalone') { | 124 | @include bem.modifier("standalone") { |
| 116 | @include bem.elem('circle') { | 125 | @include bem.elem("circle") { |
| 117 | margin-block-start: 0; | 126 | margin-block-start: 0; |
| 118 | } | 127 | } |
| 119 | } | 128 | } |
| 120 | 129 | ||
| 121 | @include bem.modifier('accent') { | 130 | @include bem.modifier("accent") { |
| 122 | @include bem.elem('native') { | 131 | @include bem.elem("native") { |
| 123 | &:checked { | 132 | &:checked { |
| 124 | @include bem.sibling-elem('circle') { | 133 | @include bem.sibling-elem("circle") { |
| 125 | background-color: props.get(vars.$accent--circle-border-color); | 134 | background-color: props.get(vars.$accent--circle-border-color); |
| 126 | } | 135 | } |
| 127 | 136 | ||
| 128 | &:hover, | 137 | &:hover, |
| 129 | &:focus-visible { | 138 | &:focus-visible { |
| 130 | @include bem.sibling-elem('circle') { | 139 | @include bem.sibling-elem("circle") { |
| 131 | background-color: props.get(vars.$accent--hover--circle-border-color); | 140 | background-color: props.get(vars.$accent--hover--circle-border-color); |
| 132 | } | 141 | } |
| 133 | } | 142 | } |
| 134 | } | 143 | } |
| 135 | 144 | ||
| 136 | &:disabled { | 145 | &:disabled { |
| 137 | @include bem.sibling-elem('circle') { | 146 | @include bem.sibling-elem("circle") { |
| 138 | background-color: props.get(vars.$disabled--circle-border-color); | 147 | background-color: props.get(vars.$disabled--circle-border-color); |
| 139 | 148 | ||
| 140 | &::after { | 149 | &::after { |
| @@ -143,7 +152,7 @@ | |||
| 143 | } | 152 | } |
| 144 | 153 | ||
| 145 | &:checked { | 154 | &:checked { |
| 146 | @include bem.sibling-elem('circle') { | 155 | @include bem.sibling-elem("circle") { |
| 147 | background-color: props.get(vars.$disabled--circle-border-color); | 156 | background-color: props.get(vars.$disabled--circle-border-color); |
| 148 | } | 157 | } |
| 149 | } | 158 | } |
diff --git a/src/objects/_radio.vars.scss b/src/objects/_radio.vars.scss index a5f249d..e7a41a4 100644 --- a/src/objects/_radio.vars.scss +++ b/src/objects/_radio.vars.scss | |||
| @@ -1,33 +1,90 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | 4 | ||
| 5 | $diameter: props.def(--o-radio--diameter, props.get(core.$size--200)) !default; | 5 | $diameter: props.def(--o-radio--diameter, props.get(core.$size--200)) !default; |
| 6 | $label-gap: props.def(--o-radio--label-gap, props.get(core.$size--125)) !default; | 6 | $label-gap: props.def(--o-radio--label-gap, props.get(core.$size--125)) !default; |
| 7 | $border-width: props.def(--o-radio--border-width, props.get(core.$border-width--medium)) !default; | 7 | $border-width: props.def(--o-radio--border-width, props.get(core.$border-width--medium)) !default; |
| 8 | $pad-i: props.def(--o-radio--pad-i, props.get(core.$size--65)) !default; | 8 | $pad-i: props.def(--o-radio--pad-i, props.get(core.$size--65)) !default; |
| 9 | $pad-b: props.def(--o-radio--pad-b, props.get(core.$size--65)) !default; | 9 | $pad-b: props.def(--o-radio--pad-b, props.get(core.$size--65)) !default; |
| 10 | $rounding: props.def(--o-radio--rounding, props.get(core.$rounding--sm)) !default; | 10 | $rounding: props.def(--o-radio--rounding, props.get(core.$rounding--sm)) !default; |
| 11 | $spacing-sibling: props.def(--o-radio--spacing-sibling, props.get(core.$size--300)) !default; | 11 | $spacing-sibling: props.def(--o-radio--spacing-sibling, props.get(core.$size--300)) !default; |
| 12 | 12 | ||
| 13 | $key-focus--border-width: props.def(--o-radio--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; | 13 | $key-focus--border-width: props.def( |
| 14 | $key-focus--border-offset: props.def(--o-radio--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; | 14 | --o-radio--key-focus--border-width, |
| 15 | $key-focus--outline-width: props.def(--o-radio--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; | 15 | props.get(core.$key-focus--border-width) |
| 16 | ) !default; | ||
| 17 | $key-focus--border-offset: props.def( | ||
| 18 | --o-radio--key-focus--border-offset, | ||
| 19 | props.get(core.$key-focus--border-offset) | ||
| 20 | ) !default; | ||
| 21 | $key-focus--outline-width: props.def( | ||
| 22 | --o-radio--key-focus--outline-width, | ||
| 23 | props.get(core.$key-focus--outline-width) | ||
| 24 | ) !default; | ||
| 16 | 25 | ||
| 17 | $circle-border-color: props.def(--o-radio--circle-border-color, props.get(core.$theme, --text-mute-more), 'color') !default; | 26 | $circle-border-color: props.def( |
| 18 | $circle-bg-color: props.def(--o-radio--circle-bg-color, props.get(core.$theme, --base, --75), 'color') !default; | 27 | --o-radio--circle-border-color, |
| 28 | props.get(core.$theme, --text-mute-more), | ||
| 29 | "color" | ||
| 30 | ) !default; | ||
| 31 | $circle-bg-color: props.def( | ||
| 32 | --o-radio--circle-bg-color, | ||
| 33 | props.get(core.$theme, --base, --75), | ||
| 34 | "color" | ||
| 35 | ) !default; | ||
| 19 | 36 | ||
| 20 | $hover--label-color: props.def(--o-radio--hover--label-color, props.get(core.$theme, --heading), 'color') !default; | 37 | $hover--label-color: props.def( |
| 21 | $hover--circle-border-color: props.def(--o-radio--hover--circle-border-color, props.get(core.$theme, --text-mute), 'color') !default; | 38 | --o-radio--hover--label-color, |
| 39 | props.get(core.$theme, --heading), | ||
| 40 | "color" | ||
| 41 | ) !default; | ||
| 42 | $hover--circle-border-color: props.def( | ||
| 43 | --o-radio--hover--circle-border-color, | ||
| 44 | props.get(core.$theme, --text-mute), | ||
| 45 | "color" | ||
| 46 | ) !default; | ||
| 22 | 47 | ||
| 23 | $accent--circle-border-color: props.def(--o-radio--accent--circle-border-color, props.get(core.$theme, --accent, --900), 'color') !default; | 48 | $accent--circle-border-color: props.def( |
| 49 | --o-radio--accent--circle-border-color, | ||
| 50 | props.get(core.$theme, --accent, --900), | ||
| 51 | "color" | ||
| 52 | ) !default; | ||
| 24 | 53 | ||
| 25 | $accent--hover--circle-border-color: props.def(--o-radio--accent--hover--circle-border-color, props.get(core.$theme, --accent, --1000), 'color') !default; | 54 | $accent--hover--circle-border-color: props.def( |
| 55 | --o-radio--accent--hover--circle-border-color, | ||
| 56 | props.get(core.$theme, --accent, --1000), | ||
| 57 | "color" | ||
| 58 | ) !default; | ||
| 26 | 59 | ||
| 27 | $disabled--label-color: props.def(--o-radio--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default; | 60 | $disabled--label-color: props.def( |
| 28 | $disabled--circle-border-color: props.def(--o-radio--disabled--circle-border-color, props.get(core.$theme, --border-strong), 'color') !default; | 61 | --o-radio--disabled--label-color, |
| 29 | $disabled--circle-bg-color: props.def(--o-radio--disabled--circle-bg-color, props.get(core.$theme, --base, --75), 'color') !default; | 62 | props.get(core.$theme, --text-disabled), |
| 63 | "color" | ||
| 64 | ) !default; | ||
| 65 | $disabled--circle-border-color: props.def( | ||
| 66 | --o-radio--disabled--circle-border-color, | ||
| 67 | props.get(core.$theme, --border-strong), | ||
| 68 | "color" | ||
| 69 | ) !default; | ||
| 70 | $disabled--circle-bg-color: props.def( | ||
| 71 | --o-radio--disabled--circle-bg-color, | ||
| 72 | props.get(core.$theme, --base, --75), | ||
| 73 | "color" | ||
| 74 | ) !default; | ||
| 30 | 75 | ||
| 31 | $key-focus--label-color: props.def(--o-radio--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default; | 76 | $key-focus--label-color: props.def( |
| 32 | $key-focus--border-color: props.def(--o-radio--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; | 77 | --o-radio--key-focus--label-color, |
| 33 | $key-focus--outline-color: props.def(--o-radio--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; | 78 | props.get(core.$theme, --focus, --text), |
| 79 | "color" | ||
| 80 | ) !default; | ||
| 81 | $key-focus--border-color: props.def( | ||
| 82 | --o-radio--key-focus--border-color, | ||
| 83 | props.get(core.$theme, --focus, --border), | ||
| 84 | "color" | ||
| 85 | ) !default; | ||
| 86 | $key-focus--outline-color: props.def( | ||
| 87 | --o-radio--key-focus--outline-color, | ||
| 88 | props.get(core.$theme, --focus, --outline), | ||
| 89 | "color" | ||
| 90 | ) !default; | ||
diff --git a/src/objects/_side-nav.scss b/src/objects/_side-nav.scss index 272d38c..ed0f3dc 100644 --- a/src/objects/_side-nav.scss +++ b/src/objects/_side-nav.scss | |||
| @@ -1,76 +1,79 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | @use 'icon.vars' as icon; | 5 | @use "icon.vars" as icon; |
| 6 | 6 | ||
| 7 | @forward 'side-nav.vars'; | 7 | @forward "side-nav.vars"; |
| 8 | @use 'side-nav.vars' as vars; | 8 | @use "side-nav.vars" as vars; |
| 9 | 9 | ||
| 10 | @mixin styles { | 10 | @mixin styles { |
| 11 | @include materialize-at-root(meta.module-variables('vars')); | 11 | @include materialize-at-root(meta.module-variables("vars")); |
| 12 | 12 | ||
| 13 | @include bem.object('side-nav') { | 13 | @include bem.object("side-nav") { |
| 14 | display: flex; | 14 | display: flex; |
| 15 | flex-direction: column; | 15 | flex-direction: column; |
| 16 | gap: props.get(vars.$spacing); | 16 | gap: props.get(vars.$spacing); |
| 17 | 17 | ||
| 18 | @include bem.elem('header') { | 18 | @include bem.elem("header") { |
| 19 | padding-block: props.get(vars.$item--pad-b); | 19 | padding-block: props.get(vars.$item--pad-b); |
| 20 | padding-inline: props.get(vars.$item--pad-i); | 20 | padding-inline: props.get(vars.$item--pad-i); |
| 21 | font-size: props.get(vars.$header--font-size); | 21 | font-size: props.get(vars.$header--font-size); |
| 22 | font-weight: 500; | 22 | font-weight: 500; |
| 23 | color: props.get(vars.$header--label-color); | 23 | color: props.get(vars.$header--label-color); |
| 24 | text-transform: uppercase; | 24 | text-transform: uppercase; |
| 25 | letter-spacing: .5px; | 25 | letter-spacing: 0.5px; |
| 26 | 26 | ||
| 27 | @include bem.next-twin-elem { | 27 | @include bem.next-twin-elem { |
| 28 | margin-block-start: calc(props.get(vars.$separator) + props.get(vars.$spacing)); | 28 | margin-block-start: calc(props.get(vars.$separator) + props.get(vars.$spacing)); |
| 29 | } | 29 | } |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | @include bem.elem('item') { | 32 | @include bem.elem("item") { |
| 33 | display: block; | 33 | display: block; |
| 34 | padding-block: props.get(vars.$item--pad-b); | 34 | padding-block: props.get(vars.$item--pad-b); |
| 35 | padding-inline: props.get(vars.$item--pad-i); | 35 | padding-inline: props.get(vars.$item--pad-i); |
| 36 | margin: calc(-1 * props.get(vars.$item--key-focus--border-offset)); | 36 | margin: calc(-1 * props.get(vars.$item--key-focus--border-offset)); |
| 37 | color: props.get(vars.$item--disabled--label-color); | 37 | color: props.get(vars.$item--disabled--label-color); |
| 38 | background-clip: padding-box; | 38 | background-clip: padding-box; |
| 39 | border: props.get(vars.$item--key-focus--border-offset) solid transparent; | 39 | border: props.get(vars.$item--key-focus--border-offset) solid transparent; |
| 40 | border-radius: calc(props.get(vars.$item--rounding) + props.get(vars.$item--key-focus--border-offset)); | 40 | border-radius: calc( |
| 41 | props.get(vars.$item--rounding) + props.get(vars.$item--key-focus--border-offset) | ||
| 42 | ); | ||
| 41 | 43 | ||
| 42 | &:link, | 44 | &:link, |
| 43 | &:visited, | 45 | &:visited, |
| 44 | &:enabled { | 46 | &:enabled { |
| 45 | color: currentColor; | 47 | color: currentColor; |
| 46 | 48 | ||
| 47 | @include bem.multi('&:hover, &:focus-visible', 'is' 'selected') { | 49 | @include bem.multi("&:hover, &:focus-visible", "is" "selected") { |
| 48 | color: props.get(vars.$item--hover--label-color); | 50 | color: props.get(vars.$item--hover--label-color); |
| 49 | background-color: props.get(vars.$item--hover--bg-color); | 51 | background-color: props.get(vars.$item--hover--bg-color); |
| 50 | } | 52 | } |
| 51 | 53 | ||
| 52 | &:active { | 54 | &:active { |
| 53 | color: props.get(vars.$item--active--label-color); | 55 | color: props.get(vars.$item--active--label-color); |
| 54 | background-color: props.get(vars.$item--active--bg-color); | 56 | background-color: props.get(vars.$item--active--bg-color); |
| 55 | } | 57 | } |
| 56 | 58 | ||
| 57 | &:focus-visible { | 59 | &:focus-visible { |
| 58 | outline: props.get(vars.$item--key-focus--border-color) solid props.get(vars.$item--key-focus--border-width); | 60 | outline: props.get(vars.$item--key-focus--border-color) solid |
| 59 | box-shadow: | 61 | props.get(vars.$item--key-focus--border-width); |
| 60 | 0 | 62 | box-shadow: 0 0 0 |
| 61 | 0 | 63 | calc( |
| 62 | 0 | 64 | props.get(vars.$item--key-focus--border-width) + |
| 63 | calc(props.get(vars.$item--key-focus--border-width) + props.get(vars.$item--key-focus--outline-width)) | 65 | props.get(vars.$item--key-focus--outline-width) |
| 66 | ) | ||
| 64 | props.get(vars.$item--key-focus--outline-color); | 67 | props.get(vars.$item--key-focus--outline-color); |
| 65 | } | 68 | } |
| 66 | } | 69 | } |
| 67 | 70 | ||
| 68 | @include bem.next-elem('header') { | 71 | @include bem.next-elem("header") { |
| 69 | margin-block-start: calc(props.get(vars.$separator) + props.get(vars.$spacing)); | 72 | margin-block-start: calc(props.get(vars.$separator) + props.get(vars.$spacing)); |
| 70 | } | 73 | } |
| 71 | } | 74 | } |
| 72 | 75 | ||
| 73 | @include bem.elem('header') { | 76 | @include bem.elem("header") { |
| 74 | &:link, | 77 | &:link, |
| 75 | &:visited, | 78 | &:visited, |
| 76 | &:enabled { | 79 | &:enabled { |
| @@ -78,14 +81,14 @@ | |||
| 78 | } | 81 | } |
| 79 | } | 82 | } |
| 80 | 83 | ||
| 81 | @include bem.elem('separator') { | 84 | @include bem.elem("separator") { |
| 82 | block-size: props.get(vars.$separator); | 85 | block-size: props.get(vars.$separator); |
| 83 | } | 86 | } |
| 84 | 87 | ||
| 85 | @include bem.elem('icon-slot') { | 88 | @include bem.elem("icon-slot") { |
| 86 | display: flex; | 89 | display: flex; |
| 87 | justify-content: center; | 90 | justify-content: center; |
| 88 | inline-size: props.get(icon.$size); | 91 | inline-size: props.get(icon.$size); |
| 89 | } | 92 | } |
| 90 | } | 93 | } |
| 91 | } | 94 | } |
diff --git a/src/objects/_side-nav.vars.scss b/src/objects/_side-nav.vars.scss index d6a7de1..8abb0df 100644 --- a/src/objects/_side-nav.vars.scss +++ b/src/objects/_side-nav.vars.scss | |||
| @@ -1,28 +1,72 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | 4 | ||
| 5 | $spacing: props.def(--o-side-nav--spacing, props.get(core.$size--50)) !default; | 5 | $spacing: props.def(--o-side-nav--spacing, props.get(core.$size--50)) !default; |
| 6 | $header--font-size: props.def(--o-side-nav--header--font-size, props.get(core.$font-size--50)) !default; | 6 | $header--font-size: props.def( |
| 7 | $separator: props.def(--o-side-nav--separator, props.get(core.$size--200)) !default; | 7 | --o-side-nav--header--font-size, |
| 8 | props.get(core.$font-size--50) | ||
| 9 | ) !default; | ||
| 10 | $separator: props.def(--o-side-nav--separator, props.get(core.$size--200)) !default; | ||
| 8 | 11 | ||
| 9 | $item--pad-i: props.def(--o-side-nav--item--pad-i, props.get(core.$size--150)) !default; | 12 | $item--pad-i: props.def(--o-side-nav--item--pad-i, props.get(core.$size--150)) !default; |
| 10 | $item--pad-b: props.def(--o-side-nav--item--pad-b, props.get(core.$size--75)) !default; | 13 | $item--pad-b: props.def(--o-side-nav--item--pad-b, props.get(core.$size--75)) !default; |
| 11 | $item--rounding: props.def(--o-side-nav--item--rounding, props.get(core.$rounding--sm)) !default; | 14 | $item--rounding: props.def(--o-side-nav--item--rounding, props.get(core.$rounding--sm)) !default; |
| 12 | 15 | ||
| 13 | $item--key-focus--border-width: props.def(--o-side-nav--item--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; | 16 | $item--key-focus--border-width: props.def( |
| 14 | $item--key-focus--border-offset: props.def(--o-side-nav--item--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; | 17 | --o-side-nav--item--key-focus--border-width, |
| 15 | $item--key-focus--outline-width: props.def(--o-side-nav--item--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; | 18 | props.get(core.$key-focus--border-width) |
| 19 | ) !default; | ||
| 20 | $item--key-focus--border-offset: props.def( | ||
| 21 | --o-side-nav--item--key-focus--border-offset, | ||
| 22 | props.get(core.$key-focus--border-offset) | ||
| 23 | ) !default; | ||
| 24 | $item--key-focus--outline-width: props.def( | ||
| 25 | --o-side-nav--item--key-focus--outline-width, | ||
| 26 | props.get(core.$key-focus--outline-width) | ||
| 27 | ) !default; | ||
| 16 | 28 | ||
| 17 | $header--label-color: props.def(--o-side-nav--header--label-color, props.get(core.$theme, --text-mute-more), 'color') !default; | 29 | $header--label-color: props.def( |
| 30 | --o-side-nav--header--label-color, | ||
| 31 | props.get(core.$theme, --text-mute-more), | ||
| 32 | "color" | ||
| 33 | ) !default; | ||
| 18 | 34 | ||
| 19 | $item--hover--bg-color: props.def(--o-side-nav--item--hover--bg-color, props.get(core.$theme, --border-mute), 'color') !default; | 35 | $item--hover--bg-color: props.def( |
| 20 | $item--hover--label-color: props.def(--o-side-nav--item--hover--label-color, props.get(core.$theme, --heading), 'color') !default; | 36 | --o-side-nav--item--hover--bg-color, |
| 37 | props.get(core.$theme, --border-mute), | ||
| 38 | "color" | ||
| 39 | ) !default; | ||
| 40 | $item--hover--label-color: props.def( | ||
| 41 | --o-side-nav--item--hover--label-color, | ||
| 42 | props.get(core.$theme, --heading), | ||
| 43 | "color" | ||
| 44 | ) !default; | ||
| 21 | 45 | ||
| 22 | $item--active--bg-color: props.def(--o-side-nav--item--active--bg-color, props.get(core.$theme, --border), 'color') !default; | 46 | $item--active--bg-color: props.def( |
| 23 | $item--active--label-color: props.def(--o-side-nav--item--active--label-color, props.get(core.$theme, --heading), 'color') !default; | 47 | --o-side-nav--item--active--bg-color, |
| 48 | props.get(core.$theme, --border), | ||
| 49 | "color" | ||
| 50 | ) !default; | ||
| 51 | $item--active--label-color: props.def( | ||
| 52 | --o-side-nav--item--active--label-color, | ||
| 53 | props.get(core.$theme, --heading), | ||
| 54 | "color" | ||
| 55 | ) !default; | ||
| 24 | 56 | ||
| 25 | $item--disabled--label-color: props.def(--o-side-nav--item--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default; | 57 | $item--disabled--label-color: props.def( |
| 58 | --o-side-nav--item--disabled--label-color, | ||
| 59 | props.get(core.$theme, --text-disabled), | ||
| 60 | "color" | ||
| 61 | ) !default; | ||
| 26 | 62 | ||
| 27 | $item--key-focus--border-color: props.def(--o-side-nav--item--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; | 63 | $item--key-focus--border-color: props.def( |
| 28 | $item--key-focus--outline-color: props.def(--o-side-nav--item--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; | 64 | --o-side-nav--item--key-focus--border-color, |
| 65 | props.get(core.$theme, --focus, --border), | ||
| 66 | "color" | ||
| 67 | ) !default; | ||
| 68 | $item--key-focus--outline-color: props.def( | ||
| 69 | --o-side-nav--item--key-focus--outline-color, | ||
| 70 | props.get(core.$theme, --focus, --outline), | ||
| 71 | "color" | ||
| 72 | ) !default; | ||
diff --git a/src/objects/_status-indicator.scss b/src/objects/_status-indicator.scss index fe8fe26..8885929 100644 --- a/src/objects/_status-indicator.scss +++ b/src/objects/_status-indicator.scss | |||
| @@ -1,22 +1,22 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:meta'; | 2 | @use "sass:meta"; |
| 3 | @use 'sass:string'; | 3 | @use "sass:string"; |
| 4 | @use 'pkg:iro-sass/src/bem'; | 4 | @use "pkg:iro-sass/bem"; |
| 5 | @use 'pkg:iro-sass/src/props'; | 5 | @use "pkg:iro-sass/props"; |
| 6 | @use '../props' as *; | 6 | @use "../props" as *; |
| 7 | 7 | ||
| 8 | @forward 'status-indicator.vars'; | 8 | @forward "status-indicator.vars"; |
| 9 | @use 'status-indicator.vars' as vars; | 9 | @use "status-indicator.vars" as vars; |
| 10 | 10 | ||
| 11 | @mixin styles { | 11 | @mixin styles { |
| 12 | @include materialize-at-root(meta.module-variables('vars')); | 12 | @include materialize-at-root(meta.module-variables("vars")); |
| 13 | 13 | ||
| 14 | @include bem.object('status-indicator') { | 14 | @include bem.object("status-indicator") { |
| 15 | display: inline-block; | 15 | display: inline-block; |
| 16 | inline-size: props.get(vars.$size); | 16 | inline-size: props.get(vars.$size); |
| 17 | block-size: props.get(vars.$size); | 17 | block-size: props.get(vars.$size); |
| 18 | background-color: props.get(vars.$default); | 18 | background-color: props.get(vars.$default); |
| 19 | border-radius: 10em; | 19 | border-radius: 10em; |
| 20 | 20 | ||
| 21 | @each $theme in map.keys(props.get(vars.$themes)) { | 21 | @each $theme in map.keys(props.get(vars.$themes)) { |
| 22 | @include bem.is(string.slice($theme, 3)) { | 22 | @include bem.is(string.slice($theme, 3)) { |
diff --git a/src/objects/_status-indicator.vars.scss b/src/objects/_status-indicator.vars.scss index dfe628f..66a11e8 100644 --- a/src/objects/_status-indicator.vars.scss +++ b/src/objects/_status-indicator.vars.scss | |||
| @@ -1,26 +1,32 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../config'; | 3 | @use "../config"; |
| 4 | @use '../core.vars' as core; | 4 | @use "../core.vars" as core; |
| 5 | 5 | ||
| 6 | $size: props.def(--o-status-indicator--size, props.get(core.$size--125)) !default; | 6 | $size: props.def(--o-status-indicator--size, props.get(core.$size--125)) !default; |
| 7 | 7 | ||
| 8 | $default: props.def(--o-status-indicator--default, props.get(core.$theme, --border-strong), 'color') !default; | 8 | $default: props.def( |
| 9 | $primary: props.def(--o-status-indicator--primary, props.get(core.$theme, --text), 'color') !default; | 9 | --o-status-indicator--default, |
| 10 | props.get(core.$theme, --border-strong), | ||
| 11 | "color" | ||
| 12 | ) !default; | ||
| 13 | $primary: props.def( | ||
| 14 | --o-status-indicator--primary, | ||
| 15 | props.get(core.$theme, --text), | ||
| 16 | "color" | ||
| 17 | ) !default; | ||
| 10 | 18 | ||
| 11 | $themes-config: ( | 19 | $themes-config: ( |
| 12 | accent: --accent, | 20 | accent: --accent, |
| 13 | positive: --positive, | 21 | positive: --positive, |
| 14 | negative: --negative, | 22 | negative: --negative, |
| 15 | warning: --warning, | 23 | warning: --warning, |
| 16 | ) !default; | 24 | ) !default; |
| 17 | 25 | ||
| 18 | $themes: props.def(--o-status-indicator, (), 'color'); | 26 | $themes: props.def(--o-status-indicator, (), "color"); |
| 19 | 27 | ||
| 20 | @each $theme, $key in $themes-config { | 28 | @each $theme, $key in $themes-config { |
| 21 | @if $theme != --base { | 29 | @if $theme != --base { |
| 22 | $themes: props.merge($themes, ( | 30 | $themes: props.merge($themes, (--#{$theme}: props.get(core.$theme, $key, --700))); |
| 23 | --#{$theme}: props.get(core.$theme, $key, --700), | ||
| 24 | )); | ||
| 25 | } | 31 | } |
| 26 | } | 32 | } |
diff --git a/src/objects/_switch.scss b/src/objects/_switch.scss index 0ef95e6..c1f7411 100644 --- a/src/objects/_switch.scss +++ b/src/objects/_switch.scss | |||
| @@ -1,73 +1,79 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | @use '../core.vars' as core; | 5 | @use "../core.vars" as core; |
| 6 | 6 | ||
| 7 | @forward 'switch.vars'; | 7 | @forward "switch.vars"; |
| 8 | @use 'switch.vars' as vars; | 8 | @use "switch.vars" as vars; |
| 9 | 9 | ||
| 10 | @mixin styles { | 10 | @mixin styles { |
| 11 | @include materialize-at-root(meta.module-variables('vars')); | 11 | @include materialize-at-root(meta.module-variables("vars")); |
| 12 | 12 | ||
| 13 | @include bem.object('switch') { | 13 | @include bem.object("switch") { |
| 14 | position: relative; | 14 | position: relative; |
| 15 | display: inline-block; | 15 | display: inline-block; |
| 16 | padding-block: props.get(vars.$pad-b); | 16 | padding-block: props.get(vars.$pad-b); |
| 17 | padding-inline: props.get(vars.$pad-i); | 17 | padding-inline: props.get(vars.$pad-i); |
| 18 | margin-inline: | 18 | margin-inline: calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)) |
| 19 | calc(-1 * props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)) | 19 | calc( |
| 20 | calc(props.get(vars.$spacing-sibling) - props.get(vars.$pad-i) - props.get(vars.$key-focus--border-offset)); | 20 | props.get(vars.$spacing-sibling) - props.get(vars.$pad-i) - props.get( |
| 21 | vars.$key-focus--border-offset | ||
| 22 | ) | ||
| 23 | ); | ||
| 21 | 24 | ||
| 22 | @include bem.elem('indicator') { | 25 | @include bem.elem("indicator") { |
| 23 | display: inline-block; | 26 | display: inline-block; |
| 24 | flex: 0 0 auto; | 27 | flex: 0 0 auto; |
| 25 | inline-size: props.get(vars.$inline-size); | 28 | inline-size: props.get(vars.$inline-size); |
| 26 | block-size: props.get(vars.$block-size); | 29 | block-size: props.get(vars.$block-size); |
| 27 | margin-block-start: calc(.5em * props.get(core.$font--standard--line-height) - .5 * props.get(vars.$block-size) - props.get(vars.$key-focus--border-offset)); | 30 | margin-block-start: calc( |
| 28 | vertical-align: top; | 31 | 0.5em * props.get(core.$font--standard--line-height) - 0.5 * |
| 29 | background-color: props.get(vars.$track-bg-color); | 32 | props.get(vars.$block-size) - props.get(vars.$key-focus--border-offset) |
| 30 | background-clip: padding-box; | 33 | ); |
| 31 | border: props.get(vars.$key-focus--border-offset) solid transparent; | 34 | vertical-align: top; |
| 32 | border-radius: 2em; | 35 | background-color: props.get(vars.$track-bg-color); |
| 33 | transition: background-color .2s ease; | 36 | background-clip: padding-box; |
| 37 | border: props.get(vars.$key-focus--border-offset) solid transparent; | ||
| 38 | border-radius: 2em; | ||
| 39 | transition: background-color 0.2s ease; | ||
| 34 | 40 | ||
| 35 | &::after { | 41 | &::after { |
| 36 | display: block; | 42 | display: block; |
| 37 | inline-size: calc(props.get(vars.$block-size) - 2 * props.get(vars.$border-width)); | 43 | inline-size: calc(props.get(vars.$block-size) - 2 * props.get(vars.$border-width)); |
| 38 | block-size: calc(props.get(vars.$block-size) - 2 * props.get(vars.$border-width)); | 44 | block-size: calc(props.get(vars.$block-size) - 2 * props.get(vars.$border-width)); |
| 39 | content: ''; | 45 | content: ""; |
| 40 | background-color: props.get(vars.$handle-bg-color); | 46 | background-color: props.get(vars.$handle-bg-color); |
| 41 | border: props.get(vars.$border-width) solid props.get(vars.$handle-border-color); | 47 | border: props.get(vars.$border-width) solid props.get(vars.$handle-border-color); |
| 42 | border-radius: props.get(vars.$inline-size); | 48 | border-radius: props.get(vars.$inline-size); |
| 43 | transition: transform .2s ease; | 49 | transition: transform 0.2s ease; |
| 44 | } | 50 | } |
| 45 | } | 51 | } |
| 46 | 52 | ||
| 47 | @include bem.elem('label') { | 53 | @include bem.elem("label") { |
| 48 | margin-inline-start: props.get(vars.$label-gap); | 54 | margin-inline-start: props.get(vars.$label-gap); |
| 49 | } | 55 | } |
| 50 | 56 | ||
| 51 | @include bem.elem('native') { | 57 | @include bem.elem("native") { |
| 52 | position: absolute; | 58 | position: absolute; |
| 53 | inset-block-start: 0; | 59 | inset-block-start: 0; |
| 54 | inset-inline-start: 0; | 60 | inset-inline-start: 0; |
| 55 | z-index: -1; | 61 | z-index: -1; |
| 56 | inline-size: 100%; | 62 | inline-size: 100%; |
| 57 | block-size: 100%; | 63 | block-size: 100%; |
| 58 | padding: 0; | 64 | padding: 0; |
| 59 | margin: 0; | 65 | margin: 0; |
| 60 | overflow: hidden; | 66 | overflow: hidden; |
| 61 | appearance: none; | 67 | appearance: none; |
| 62 | border-radius: props.get(vars.$rounding); | 68 | border-radius: props.get(vars.$rounding); |
| 63 | 69 | ||
| 64 | &:hover, | 70 | &:hover, |
| 65 | &:focus-visible { | 71 | &:focus-visible { |
| 66 | @include bem.sibling-elem('label') { | 72 | @include bem.sibling-elem("label") { |
| 67 | color: props.get(vars.$hover--label-color); | 73 | color: props.get(vars.$hover--label-color); |
| 68 | } | 74 | } |
| 69 | 75 | ||
| 70 | @include bem.sibling-elem('indicator') { | 76 | @include bem.sibling-elem("indicator") { |
| 71 | &::after { | 77 | &::after { |
| 72 | border-color: props.get(vars.$hover--handle-border-color); | 78 | border-color: props.get(vars.$hover--handle-border-color); |
| 73 | } | 79 | } |
| @@ -75,18 +81,23 @@ | |||
| 75 | } | 81 | } |
| 76 | 82 | ||
| 77 | &:checked { | 83 | &:checked { |
| 78 | @include bem.sibling-elem('indicator') { | 84 | @include bem.sibling-elem("indicator") { |
| 79 | background-color: props.get(vars.$handle-border-color); | 85 | background-color: props.get(vars.$handle-border-color); |
| 80 | 86 | ||
| 81 | &::after { | 87 | &::after { |
| 82 | border-color: props.get(vars.$handle-border-color); | 88 | border-color: props.get(vars.$handle-border-color); |
| 83 | transform: translate(calc(props.get(vars.$inline-size) - props.get(vars.$block-size) + .5px), 0); | 89 | transform: translate( |
| 90 | calc( | ||
| 91 | props.get(vars.$inline-size) - props.get(vars.$block-size) + 0.5px | ||
| 92 | ), | ||
| 93 | 0 | ||
| 94 | ); | ||
| 84 | } | 95 | } |
| 85 | } | 96 | } |
| 86 | 97 | ||
| 87 | &:hover, | 98 | &:hover, |
| 88 | &:focus-visible { | 99 | &:focus-visible { |
| 89 | @include bem.sibling-elem('indicator') { | 100 | @include bem.sibling-elem("indicator") { |
| 90 | background-color: props.get(vars.$hover--handle-border-color); | 101 | background-color: props.get(vars.$hover--handle-border-color); |
| 91 | 102 | ||
| 92 | &::after { | 103 | &::after { |
| @@ -97,21 +108,21 @@ | |||
| 97 | } | 108 | } |
| 98 | 109 | ||
| 99 | &:disabled { | 110 | &:disabled { |
| 100 | @include bem.sibling-elem('label') { | 111 | @include bem.sibling-elem("label") { |
| 101 | color: props.get(vars.$disabled--label-color); | 112 | color: props.get(vars.$disabled--label-color); |
| 102 | } | 113 | } |
| 103 | 114 | ||
| 104 | @include bem.sibling-elem('indicator') { | 115 | @include bem.sibling-elem("indicator") { |
| 105 | background-color: props.get(vars.$disabled--track-bg-color); | 116 | background-color: props.get(vars.$disabled--track-bg-color); |
| 106 | 117 | ||
| 107 | &::after { | 118 | &::after { |
| 108 | background-color: props.get(vars.$disabled--handle-bg-color); | 119 | background-color: props.get(vars.$disabled--handle-bg-color); |
| 109 | border-color: props.get(vars.$disabled--handle-border-color); | 120 | border-color: props.get(vars.$disabled--handle-border-color); |
| 110 | } | 121 | } |
| 111 | } | 122 | } |
| 112 | 123 | ||
| 113 | &:checked { | 124 | &:checked { |
| 114 | @include bem.sibling-elem('indicator') { | 125 | @include bem.sibling-elem("indicator") { |
| 115 | background-color: props.get(vars.$disabled--handle-border-color); | 126 | background-color: props.get(vars.$disabled--handle-border-color); |
| 116 | 127 | ||
| 117 | &::after { | 128 | &::after { |
| @@ -122,32 +133,33 @@ | |||
| 122 | } | 133 | } |
| 123 | 134 | ||
| 124 | &:focus-visible { | 135 | &:focus-visible { |
| 125 | @include bem.sibling-elem('label') { | 136 | @include bem.sibling-elem("label") { |
| 126 | color: props.get(vars.$key-focus--label-color); | 137 | color: props.get(vars.$key-focus--label-color); |
| 127 | } | 138 | } |
| 128 | 139 | ||
| 129 | @include bem.sibling-elem('indicator') { | 140 | @include bem.sibling-elem("indicator") { |
| 130 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | 141 | outline: props.get(vars.$key-focus--border-color) solid |
| 131 | box-shadow: | 142 | props.get(vars.$key-focus--border-width); |
| 132 | 0 | 143 | box-shadow: 0 0 0 |
| 133 | 0 | 144 | calc( |
| 134 | 0 | 145 | props.get(vars.$key-focus--border-width) + |
| 135 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | 146 | props.get(vars.$key-focus--outline-width) |
| 147 | ) | ||
| 136 | props.get(vars.$key-focus--outline-color); | 148 | props.get(vars.$key-focus--outline-color); |
| 137 | } | 149 | } |
| 138 | } | 150 | } |
| 139 | } | 151 | } |
| 140 | 152 | ||
| 141 | @include bem.modifier('standalone') { | 153 | @include bem.modifier("standalone") { |
| 142 | @include bem.elem('indicator') { | 154 | @include bem.elem("indicator") { |
| 143 | margin-block-start: 0; | 155 | margin-block-start: 0; |
| 144 | } | 156 | } |
| 145 | } | 157 | } |
| 146 | 158 | ||
| 147 | @include bem.modifier('accent') { | 159 | @include bem.modifier("accent") { |
| 148 | @include bem.elem('native') { | 160 | @include bem.elem("native") { |
| 149 | &:checked { | 161 | &:checked { |
| 150 | @include bem.sibling-elem('indicator') { | 162 | @include bem.sibling-elem("indicator") { |
| 151 | background-color: props.get(vars.$accent--handle-border-color); | 163 | background-color: props.get(vars.$accent--handle-border-color); |
| 152 | 164 | ||
| 153 | &::after { | 165 | &::after { |
| @@ -157,7 +169,7 @@ | |||
| 157 | 169 | ||
| 158 | &:hover, | 170 | &:hover, |
| 159 | &:focus-visible { | 171 | &:focus-visible { |
| 160 | @include bem.sibling-elem('indicator') { | 172 | @include bem.sibling-elem("indicator") { |
| 161 | background-color: props.get(vars.$accent--hover--handle-border-color); | 173 | background-color: props.get(vars.$accent--hover--handle-border-color); |
| 162 | 174 | ||
| 163 | &::after { | 175 | &::after { |
| @@ -168,12 +180,12 @@ | |||
| 168 | } | 180 | } |
| 169 | 181 | ||
| 170 | &:disabled { | 182 | &:disabled { |
| 171 | @include bem.sibling-elem('label') { | 183 | @include bem.sibling-elem("label") { |
| 172 | color: props.get(vars.$disabled--label-color); | 184 | color: props.get(vars.$disabled--label-color); |
| 173 | } | 185 | } |
| 174 | 186 | ||
| 175 | &:checked { | 187 | &:checked { |
| 176 | @include bem.sibling-elem('indicator') { | 188 | @include bem.sibling-elem("indicator") { |
| 177 | background-color: props.get(vars.$disabled--handle-border-color); | 189 | background-color: props.get(vars.$disabled--handle-border-color); |
| 178 | 190 | ||
| 179 | &::after { | 191 | &::after { |
diff --git a/src/objects/_switch.vars.scss b/src/objects/_switch.vars.scss index 761cacd..6f56ec7 100644 --- a/src/objects/_switch.vars.scss +++ b/src/objects/_switch.vars.scss | |||
| @@ -1,36 +1,101 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | 4 | ||
| 5 | $inline-size: props.def(--o-switch--inline-size, props.get(core.$size--350)) !default; | 5 | $inline-size: props.def(--o-switch--inline-size, props.get(core.$size--350)) !default; |
| 6 | $block-size: props.def(--o-switch--block-size, props.get(core.$size--200)) !default; | 6 | $block-size: props.def(--o-switch--block-size, props.get(core.$size--200)) !default; |
| 7 | $label-gap: props.def(--o-switch--label-gap, props.get(core.$size--125)) !default; | 7 | $label-gap: props.def(--o-switch--label-gap, props.get(core.$size--125)) !default; |
| 8 | $border-width: props.def(--o-switch--border-width, props.get(core.$border-width--medium)) !default; | 8 | $border-width: props.def(--o-switch--border-width, props.get(core.$border-width--medium)) !default; |
| 9 | $pad-i: props.def(--o-switch--pad-i, props.get(core.$size--65)) !default; | 9 | $pad-i: props.def(--o-switch--pad-i, props.get(core.$size--65)) !default; |
| 10 | $pad-b: props.def(--o-switch--pad-b, props.get(core.$size--65)) !default; | 10 | $pad-b: props.def(--o-switch--pad-b, props.get(core.$size--65)) !default; |
| 11 | $rounding: props.def(--o-switch--rounding, props.get(core.$rounding--sm)) !default; | 11 | $rounding: props.def(--o-switch--rounding, props.get(core.$rounding--sm)) !default; |
| 12 | $spacing-sibling: props.def(--o-switch--spacing-sibling, props.get(core.$size--300)) !default; | 12 | $spacing-sibling: props.def(--o-switch--spacing-sibling, props.get(core.$size--300)) !default; |
| 13 | 13 | ||
| 14 | $key-focus--border-width: props.def(--o-switch--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; | 14 | $key-focus--border-width: props.def( |
| 15 | $key-focus--border-offset: props.def(--o-switch--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; | 15 | --o-switch--key-focus--border-width, |
| 16 | $key-focus--outline-width: props.def(--o-switch--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; | 16 | props.get(core.$key-focus--border-width) |
| 17 | ) !default; | ||
| 18 | $key-focus--border-offset: props.def( | ||
| 19 | --o-switch--key-focus--border-offset, | ||
| 20 | props.get(core.$key-focus--border-offset) | ||
| 21 | ) !default; | ||
| 22 | $key-focus--outline-width: props.def( | ||
| 23 | --o-switch--key-focus--outline-width, | ||
| 24 | props.get(core.$key-focus--outline-width) | ||
| 25 | ) !default; | ||
| 17 | 26 | ||
| 18 | $track-bg-color: props.def(--o-switch--track-bg-color, props.get(core.$theme, --border), 'color') !default; | 27 | $track-bg-color: props.def( |
| 19 | $handle-border-color: props.def(--o-switch--handle-border-color, props.get(core.$theme, --text-mute-more), 'color') !default; | 28 | --o-switch--track-bg-color, |
| 20 | $handle-bg-color: props.def(--o-switch--handle-bg-color, props.get(core.$theme, --base, --50), 'color') !default; | 29 | props.get(core.$theme, --border), |
| 30 | "color" | ||
| 31 | ) !default; | ||
| 32 | $handle-border-color: props.def( | ||
| 33 | --o-switch--handle-border-color, | ||
| 34 | props.get(core.$theme, --text-mute-more), | ||
| 35 | "color" | ||
| 36 | ) !default; | ||
| 37 | $handle-bg-color: props.def( | ||
| 38 | --o-switch--handle-bg-color, | ||
| 39 | props.get(core.$theme, --base, --50), | ||
| 40 | "color" | ||
| 41 | ) !default; | ||
| 21 | 42 | ||
| 22 | $hover--label-color: props.def(--o-switch--hover--label-color, props.get(core.$theme, --heading), 'color') !default; | 43 | $hover--label-color: props.def( |
| 23 | $hover--handle-border-color: props.def(--o-switch--hover--handle-border-color, props.get(core.$theme, --text-mute), 'color') !default; | 44 | --o-switch--hover--label-color, |
| 45 | props.get(core.$theme, --heading), | ||
| 46 | "color" | ||
| 47 | ) !default; | ||
| 48 | $hover--handle-border-color: props.def( | ||
| 49 | --o-switch--hover--handle-border-color, | ||
| 50 | props.get(core.$theme, --text-mute), | ||
| 51 | "color" | ||
| 52 | ) !default; | ||
| 24 | 53 | ||
| 25 | $accent--handle-border-color: props.def(--o-switch--accent--handle-border-color, props.get(core.$theme, --accent, --900), 'color') !default; | 54 | $accent--handle-border-color: props.def( |
| 55 | --o-switch--accent--handle-border-color, | ||
| 56 | props.get(core.$theme, --accent, --900), | ||
| 57 | "color" | ||
| 58 | ) !default; | ||
| 26 | 59 | ||
| 27 | $accent--hover--handle-border-color: props.def(--o-switch--accent--hover--handle-border-color, props.get(core.$theme, --accent, --1000), 'color') !default; | 60 | $accent--hover--handle-border-color: props.def( |
| 61 | --o-switch--accent--hover--handle-border-color, | ||
| 62 | props.get(core.$theme, --accent, --1000), | ||
| 63 | "color" | ||
| 64 | ) !default; | ||
| 28 | 65 | ||
| 29 | $disabled--label-color: props.def(--o-switch--disabled--label-color, props.get(core.$theme, --text-disabled), 'color') !default; | 66 | $disabled--label-color: props.def( |
| 30 | $disabled--track-bg-color: props.def(--o-switch--disabled--track-bg-color, props.get(core.$theme, --border), 'color') !default; | 67 | --o-switch--disabled--label-color, |
| 31 | $disabled--handle-border-color: props.def(--o-switch--disabled--handle-border-color, props.get(core.$theme, --border-strong), 'color') !default; | 68 | props.get(core.$theme, --text-disabled), |
| 32 | $disabled--handle-bg-color: props.def(--o-switch--disabled--handle-bg-color, props.get(core.$theme, --base, --50), 'color') !default; | 69 | "color" |
| 70 | ) !default; | ||
| 71 | $disabled--track-bg-color: props.def( | ||
| 72 | --o-switch--disabled--track-bg-color, | ||
| 73 | props.get(core.$theme, --border), | ||
| 74 | "color" | ||
| 75 | ) !default; | ||
| 76 | $disabled--handle-border-color: props.def( | ||
| 77 | --o-switch--disabled--handle-border-color, | ||
| 78 | props.get(core.$theme, --border-strong), | ||
| 79 | "color" | ||
| 80 | ) !default; | ||
| 81 | $disabled--handle-bg-color: props.def( | ||
| 82 | --o-switch--disabled--handle-bg-color, | ||
| 83 | props.get(core.$theme, --base, --50), | ||
| 84 | "color" | ||
| 85 | ) !default; | ||
| 33 | 86 | ||
| 34 | $key-focus--label-color: props.def(--o-switch--key-focus--label-color, props.get(core.$theme, --focus, --text), 'color') !default; | 87 | $key-focus--label-color: props.def( |
| 35 | $key-focus--border-color: props.def(--o-switch--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; | 88 | --o-switch--key-focus--label-color, |
| 36 | $key-focus--outline-color: props.def(--o-switch--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; | 89 | props.get(core.$theme, --focus, --text), |
| 90 | "color" | ||
| 91 | ) !default; | ||
| 92 | $key-focus--border-color: props.def( | ||
| 93 | --o-switch--key-focus--border-color, | ||
| 94 | props.get(core.$theme, --focus, --border), | ||
| 95 | "color" | ||
| 96 | ) !default; | ||
| 97 | $key-focus--outline-color: props.def( | ||
| 98 | --o-switch--key-focus--outline-color, | ||
| 99 | props.get(core.$theme, --focus, --outline), | ||
| 100 | "color" | ||
| 101 | ) !default; | ||
diff --git a/src/objects/_tabbar.scss b/src/objects/_tabbar.scss index d43208f..02519f9 100644 --- a/src/objects/_tabbar.scss +++ b/src/objects/_tabbar.scss | |||
| @@ -1,75 +1,77 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:meta'; | 2 | @use "sass:meta"; |
| 3 | @use 'sass:string'; | 3 | @use "sass:string"; |
| 4 | @use 'pkg:iro-sass/src/bem'; | 4 | @use "pkg:iro-sass/bem"; |
| 5 | @use 'pkg:iro-sass/src/props'; | 5 | @use "pkg:iro-sass/props"; |
| 6 | @use '../props' as *; | 6 | @use "../props" as *; |
| 7 | 7 | ||
| 8 | @forward 'tabbar.vars'; | 8 | @forward "tabbar.vars"; |
| 9 | @use 'tabbar.vars' as vars; | 9 | @use "tabbar.vars" as vars; |
| 10 | 10 | ||
| 11 | @mixin styles { | 11 | @mixin styles { |
| 12 | @include materialize-at-root(meta.module-variables('vars')); | 12 | @include materialize-at-root(meta.module-variables("vars")); |
| 13 | 13 | ||
| 14 | @include bem.object('tabbar') { | 14 | @include bem.object("tabbar") { |
| 15 | min-inline-size: 0; | 15 | min-inline-size: 0; |
| 16 | block-size: props.get(vars.$block-size); | 16 | block-size: props.get(vars.$block-size); |
| 17 | overflow: hidden; | 17 | overflow: hidden; |
| 18 | 18 | ||
| 19 | &::after { | 19 | &::after { |
| 20 | display: block; | 20 | display: block; |
| 21 | block-size: props.get(vars.$border--width); | 21 | block-size: props.get(vars.$border--width); |
| 22 | margin-block-start: calc(-1 * props.get(vars.$border--width)); | 22 | margin-block-start: calc(-1 * props.get(vars.$border--width)); |
| 23 | content: ''; | 23 | content: ""; |
| 24 | background-color: props.get(vars.$railing--bg-color); | 24 | background-color: props.get(vars.$railing--bg-color); |
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | @include bem.elem('tabs') { | 27 | @include bem.elem("tabs") { |
| 28 | display: flex; | 28 | display: flex; |
| 29 | block-size: 100%; | 29 | block-size: 100%; |
| 30 | overflow-inline: auto; | 30 | overflow-inline: auto; |
| 31 | } | 31 | } |
| 32 | 32 | ||
| 33 | @include bem.modifier('quiet') { | 33 | @include bem.modifier("quiet") { |
| 34 | box-shadow: none; | 34 | box-shadow: none; |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | @include bem.modifier('adapt') { | 37 | @include bem.modifier("adapt") { |
| 38 | block-size: 100%; | 38 | block-size: 100%; |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | @include bem.modifier('snap') { | 41 | @include bem.modifier("snap") { |
| 42 | scroll-snap-align: start; | 42 | scroll-snap-align: start; |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | @include bem.elem('tab') { | 45 | @include bem.elem("tab") { |
| 46 | position: relative; | 46 | position: relative; |
| 47 | display: flex; | 47 | display: flex; |
| 48 | align-items: center; | 48 | align-items: center; |
| 49 | padding-inline: calc(.5 * props.get(vars.$spacing)); | 49 | padding-inline: calc(0.5 * props.get(vars.$spacing)); |
| 50 | margin-inline: calc(-.5 * props.get(vars.$spacing)); | 50 | margin-inline: calc(-0.5 * props.get(vars.$spacing)); |
| 51 | color: props.get(vars.$tab--text-color); | 51 | color: props.get(vars.$tab--text-color); |
| 52 | white-space: nowrap; | 52 | white-space: nowrap; |
| 53 | 53 | ||
| 54 | &::before { | 54 | &::before { |
| 55 | position: absolute; | 55 | position: absolute; |
| 56 | inset-block-start: 50%; | 56 | inset-block-start: 50%; |
| 57 | inset-inline: calc(-1 * props.get(vars.$tab--pad-i) + .5 * props.get(vars.$spacing)); | 57 | inset-inline: calc( |
| 58 | z-index: -10; | 58 | -1 * props.get(vars.$tab--pad-i) + 0.5 * props.get(vars.$spacing) |
| 59 | block-size: 1.5em; | 59 | ); |
| 60 | content: ''; | 60 | z-index: -10; |
| 61 | border-radius: props.get(vars.$rounding); | 61 | block-size: 1.5em; |
| 62 | transform: translateY(-50%); | 62 | content: ""; |
| 63 | border-radius: props.get(vars.$rounding); | ||
| 64 | transform: translateY(-50%); | ||
| 63 | } | 65 | } |
| 64 | 66 | ||
| 65 | &::after { | 67 | &::after { |
| 66 | position: absolute; | 68 | position: absolute; |
| 67 | inset-block-end: 0; | 69 | inset-block-end: 0; |
| 68 | inset-inline: calc(.5 * props.get(vars.$spacing)); | 70 | inset-inline: calc(0.5 * props.get(vars.$spacing)); |
| 69 | z-index: 10; | 71 | z-index: 10; |
| 70 | display: none; | 72 | display: none; |
| 71 | block-size: props.get(vars.$indicator--width); | 73 | block-size: props.get(vars.$indicator--width); |
| 72 | content: ''; | 74 | content: ""; |
| 73 | background-color: props.get(vars.$tab--selected--text-color); | 75 | background-color: props.get(vars.$tab--selected--text-color); |
| 74 | } | 76 | } |
| 75 | 77 | ||
| @@ -83,21 +85,25 @@ | |||
| 83 | 85 | ||
| 84 | &:focus-visible { | 86 | &:focus-visible { |
| 85 | &::before { | 87 | &::before { |
| 86 | color: props.get(vars.$key-focus--text-color); | 88 | color: props.get(vars.$key-focus--text-color); |
| 87 | text-decoration: none; | 89 | text-decoration: none; |
| 88 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | 90 | outline: props.get(vars.$key-focus--border-color) solid |
| 91 | props.get(vars.$key-focus--border-width); | ||
| 89 | box-shadow: 0 0 0 | 92 | box-shadow: 0 0 0 |
| 90 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | 93 | calc( |
| 94 | props.get(vars.$key-focus--border-width) + | ||
| 95 | props.get(vars.$key-focus--outline-width) | ||
| 96 | ) | ||
| 91 | props.get(vars.$key-focus--outline-color); | 97 | props.get(vars.$key-focus--outline-color); |
| 92 | } | 98 | } |
| 93 | } | 99 | } |
| 94 | } | 100 | } |
| 95 | 101 | ||
| 96 | @include bem.next-twin-elem { | 102 | @include bem.next-twin-elem { |
| 97 | margin-inline-start: calc(.5 * props.get(vars.$spacing)); | 103 | margin-inline-start: calc(0.5 * props.get(vars.$spacing)); |
| 98 | } | 104 | } |
| 99 | 105 | ||
| 100 | @include bem.is('selected') { | 106 | @include bem.is("selected") { |
| 101 | color: props.get(vars.$tab--selected--text-color); | 107 | color: props.get(vars.$tab--selected--text-color); |
| 102 | 108 | ||
| 103 | &::after { | 109 | &::after { |
| @@ -106,13 +112,13 @@ | |||
| 106 | } | 112 | } |
| 107 | } | 113 | } |
| 108 | 114 | ||
| 109 | @include bem.modifier('accent') { | 115 | @include bem.modifier("accent") { |
| 110 | @include bem.elem('tab') { | 116 | @include bem.elem("tab") { |
| 111 | &::after { | 117 | &::after { |
| 112 | background-color: props.get(vars.$tab--accent--text-color); | 118 | background-color: props.get(vars.$tab--accent--text-color); |
| 113 | } | 119 | } |
| 114 | 120 | ||
| 115 | @include bem.is('selected') { | 121 | @include bem.is("selected") { |
| 116 | color: props.get(vars.$tab--accent--text-color); | 122 | color: props.get(vars.$tab--accent--text-color); |
| 117 | } | 123 | } |
| 118 | } | 124 | } |
diff --git a/src/objects/_tabbar.vars.scss b/src/objects/_tabbar.vars.scss index d9cc53e..d26f302 100644 --- a/src/objects/_tabbar.vars.scss +++ b/src/objects/_tabbar.vars.scss | |||
| @@ -1,26 +1,66 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:string'; | 2 | @use "sass:string"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../core.vars' as core; | 4 | @use "../core.vars" as core; |
| 5 | 5 | ||
| 6 | $block-size: props.def(--o-tabbar--block-size, props.get(core.$size--700)) !default; | 6 | $block-size: props.def(--o-tabbar--block-size, props.get(core.$size--700)) !default; |
| 7 | $rounding: props.def(--o-tabbar--rounding, props.get(core.$rounding--sm)) !default; | 7 | $rounding: props.def(--o-tabbar--rounding, props.get(core.$rounding--sm)) !default; |
| 8 | $spacing: props.def(--o-tabbar--spacing, props.get(core.$size--400)) !default; | 8 | $spacing: props.def(--o-tabbar--spacing, props.get(core.$size--400)) !default; |
| 9 | $tab--pad-i: props.def(--o-tabbar--tab--pad-i, props.get(core.$size--50)) !default; | 9 | $tab--pad-i: props.def(--o-tabbar--tab--pad-i, props.get(core.$size--50)) !default; |
| 10 | 10 | ||
| 11 | $border--width: props.def(--o-tabbar--border--width, props.get(core.$border-width--thin)) !default; | 11 | $border--width: props.def(--o-tabbar--border--width, props.get(core.$border-width--thin)) !default; |
| 12 | $indicator--width: props.def(--o-tabbar--indicator--width, props.get(core.$border-width--medium)) !default; | 12 | $indicator--width: props.def( |
| 13 | --o-tabbar--indicator--width, | ||
| 14 | props.get(core.$border-width--medium) | ||
| 15 | ) !default; | ||
| 13 | 16 | ||
| 14 | $key-focus--border-width: props.def(--o-tabbar--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; | 17 | $key-focus--border-width: props.def( |
| 15 | $key-focus--border-offset: props.def(--o-tabbar--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; | 18 | --o-tabbar--key-focus--border-width, |
| 16 | $key-focus--outline-width: props.def(--o-tabbar--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; | 19 | props.get(core.$key-focus--border-width) |
| 20 | ) !default; | ||
| 21 | $key-focus--border-offset: props.def( | ||
| 22 | --o-tabbar--key-focus--border-offset, | ||
| 23 | props.get(core.$key-focus--border-offset) | ||
| 24 | ) !default; | ||
| 25 | $key-focus--outline-width: props.def( | ||
| 26 | --o-tabbar--key-focus--outline-width, | ||
| 27 | props.get(core.$key-focus--outline-width) | ||
| 28 | ) !default; | ||
| 17 | 29 | ||
| 18 | $tab--text-color: props.def(--o-tabbar--tab--text-color, props.get(core.$theme, --text-mute), 'color') !default; | 30 | $tab--text-color: props.def( |
| 19 | $tab--selected--text-color: props.def(--o-tabbar--tab--selected--text-color, props.get(core.$theme, --heading), 'color') !default; | 31 | --o-tabbar--tab--text-color, |
| 20 | $tab--accent--text-color: props.def(--o-tabbar--tab--accent--text-color, props.get(core.$theme, --accent, --1100), 'color') !default; | 32 | props.get(core.$theme, --text-mute), |
| 33 | "color" | ||
| 34 | ) !default; | ||
| 35 | $tab--selected--text-color: props.def( | ||
| 36 | --o-tabbar--tab--selected--text-color, | ||
| 37 | props.get(core.$theme, --heading), | ||
| 38 | "color" | ||
| 39 | ) !default; | ||
| 40 | $tab--accent--text-color: props.def( | ||
| 41 | --o-tabbar--tab--accent--text-color, | ||
| 42 | props.get(core.$theme, --accent, --1100), | ||
| 43 | "color" | ||
| 44 | ) !default; | ||
| 21 | 45 | ||
| 22 | $railing--bg-color: props.def(--o-tabbar--railing--bg-color, props.get(core.$theme, --border-mute), 'color') !default; | 46 | $railing--bg-color: props.def( |
| 47 | --o-tabbar--railing--bg-color, | ||
| 48 | props.get(core.$theme, --border-mute), | ||
| 49 | "color" | ||
| 50 | ) !default; | ||
| 23 | 51 | ||
| 24 | $key-focus--text-color: props.def(--o-tabbar--key-focus--text-color, props.get(core.$theme, --focus, --text), 'color') !default; | 52 | $key-focus--text-color: props.def( |
| 25 | $key-focus--border-color: props.def(--o-tabbar--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; | 53 | --o-tabbar--key-focus--text-color, |
| 26 | $key-focus--outline-color: props.def(--o-tabbar--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; | 54 | props.get(core.$theme, --focus, --text), |
| 55 | "color" | ||
| 56 | ) !default; | ||
| 57 | $key-focus--border-color: props.def( | ||
| 58 | --o-tabbar--key-focus--border-color, | ||
| 59 | props.get(core.$theme, --focus, --border), | ||
| 60 | "color" | ||
| 61 | ) !default; | ||
| 62 | $key-focus--outline-color: props.def( | ||
| 63 | --o-tabbar--key-focus--outline-color, | ||
| 64 | props.get(core.$theme, --focus, --outline), | ||
| 65 | "color" | ||
| 66 | ) !default; | ||
diff --git a/src/objects/_table.scss b/src/objects/_table.scss index effa61f..a985f78 100644 --- a/src/objects/_table.scss +++ b/src/objects/_table.scss | |||
| @@ -1,57 +1,57 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'table.vars'; | 6 | @forward "table.vars"; |
| 7 | @use 'table.vars' as vars; | 7 | @use "table.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.object('table') { | 12 | @include bem.object("table") { |
| 13 | border-spacing: 0; | 13 | border-spacing: 0; |
| 14 | border-collapse: separate; | 14 | border-collapse: separate; |
| 15 | 15 | ||
| 16 | @include bem.modifier('fixed') { | 16 | @include bem.modifier("fixed") { |
| 17 | table-layout: fixed; | 17 | table-layout: fixed; |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | @include bem.elem('head-cell') { | 20 | @include bem.elem("head-cell") { |
| 21 | padding-block: props.get(vars.$pad-b); | 21 | padding-block: props.get(vars.$pad-b); |
| 22 | padding-inline: props.get(vars.$pad-i); | 22 | padding-inline: props.get(vars.$pad-i); |
| 23 | font-family: props.get(vars.$heading--font-family); | 23 | font-family: props.get(vars.$heading--font-family); |
| 24 | font-size: props.get(vars.$heading--font-size); | 24 | font-size: props.get(vars.$heading--font-size); |
| 25 | font-weight: props.get(vars.$heading--font-weight); | 25 | font-weight: props.get(vars.$heading--font-weight); |
| 26 | color: props.get(vars.$heading-color); | 26 | color: props.get(vars.$heading-color); |
| 27 | text-align: start; | 27 | text-align: start; |
| 28 | text-transform: props.get(vars.$heading--text-transform); | 28 | text-transform: props.get(vars.$heading--text-transform); |
| 29 | letter-spacing: props.get(vars.$heading--letter-spacing); | 29 | letter-spacing: props.get(vars.$heading--letter-spacing); |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | @include bem.elem('cell') { | 32 | @include bem.elem("cell") { |
| 33 | padding-block: props.get(vars.$pad-b); | 33 | padding-block: props.get(vars.$pad-b); |
| 34 | padding-inline: props.get(vars.$pad-i); | 34 | padding-inline: props.get(vars.$pad-i); |
| 35 | border-color: props.get(vars.$border-color); | 35 | border-color: props.get(vars.$border-color); |
| 36 | border-style: solid; | 36 | border-style: solid; |
| 37 | border-width: 0; | 37 | border-width: 0; |
| 38 | border-block-start-width: props.get(vars.$border-width); | 38 | border-block-start-width: props.get(vars.$border-width); |
| 39 | 39 | ||
| 40 | @include bem.modifier('divider') { | 40 | @include bem.modifier("divider") { |
| 41 | border-inline-end-width: props.get(vars.$border-width); | 41 | border-inline-end-width: props.get(vars.$border-width); |
| 42 | } | 42 | } |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | @include bem.elem('row') { | 45 | @include bem.elem("row") { |
| 46 | &:last-child { | 46 | &:last-child { |
| 47 | @include bem.elem('cell') { | 47 | @include bem.elem("cell") { |
| 48 | border-block-end-width: props.get(vars.$border-width); | 48 | border-block-end-width: props.get(vars.$border-width); |
| 49 | } | 49 | } |
| 50 | } | 50 | } |
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | @include bem.modifier('flush') { | 53 | @include bem.modifier("flush") { |
| 54 | @include bem.elem('head-cell', 'cell') { | 54 | @include bem.elem("head-cell", "cell") { |
| 55 | &:first-child { | 55 | &:first-child { |
| 56 | padding-inline-start: 0; | 56 | padding-inline-start: 0; |
| 57 | } | 57 | } |
| @@ -62,8 +62,8 @@ | |||
| 62 | } | 62 | } |
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | @include bem.modifier('box') { | 65 | @include bem.modifier("box") { |
| 66 | @include bem.elem('cell') { | 66 | @include bem.elem("cell") { |
| 67 | background-color: props.get(vars.$box--bg-color); | 67 | background-color: props.get(vars.$box--bg-color); |
| 68 | 68 | ||
| 69 | &:first-child { | 69 | &:first-child { |
| @@ -75,9 +75,9 @@ | |||
| 75 | } | 75 | } |
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | @include bem.elem('row') { | 78 | @include bem.elem("row") { |
| 79 | &:first-child { | 79 | &:first-child { |
| 80 | @include bem.elem('cell') { | 80 | @include bem.elem("cell") { |
| 81 | &:first-child { | 81 | &:first-child { |
| 82 | border-start-start-radius: props.get(vars.$rounding); | 82 | border-start-start-radius: props.get(vars.$rounding); |
| 83 | } | 83 | } |
| @@ -89,7 +89,7 @@ | |||
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | &:last-child { | 91 | &:last-child { |
| 92 | @include bem.elem('cell') { | 92 | @include bem.elem("cell") { |
| 93 | &:first-child { | 93 | &:first-child { |
| 94 | border-end-start-radius: props.get(vars.$rounding); | 94 | border-end-start-radius: props.get(vars.$rounding); |
| 95 | } | 95 | } |
| @@ -102,35 +102,35 @@ | |||
| 102 | } | 102 | } |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | @include bem.modifier('interactive') { | 105 | @include bem.modifier("interactive") { |
| 106 | @include bem.elem('row') { | 106 | @include bem.elem("row") { |
| 107 | @include bem.elem('cell') { | 107 | @include bem.elem("cell") { |
| 108 | cursor: pointer; | 108 | cursor: pointer; |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | &:hover { | 111 | &:hover { |
| 112 | @include bem.elem('cell') { | 112 | @include bem.elem("cell") { |
| 113 | background-color: props.get(vars.$hover--bg-color); | 113 | background-color: props.get(vars.$hover--bg-color); |
| 114 | } | 114 | } |
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | &:active { | 117 | &:active { |
| 118 | @include bem.elem('cell') { | 118 | @include bem.elem("cell") { |
| 119 | background-color: props.get(vars.$active--bg-color); | 119 | background-color: props.get(vars.$active--bg-color); |
| 120 | } | 120 | } |
| 121 | } | 121 | } |
| 122 | } | 122 | } |
| 123 | 123 | ||
| 124 | @include bem.modifier('box') { | 124 | @include bem.modifier("box") { |
| 125 | @include bem.elem('row') { | 125 | @include bem.elem("row") { |
| 126 | &:hover { | 126 | &:hover { |
| 127 | @include bem.elem('cell') { | 127 | @include bem.elem("cell") { |
| 128 | background-color: props.get(vars.$box--hover--bg-color); | 128 | background-color: props.get(vars.$box--hover--bg-color); |
| 129 | } | 129 | } |
| 130 | } | 130 | } |
| 131 | 131 | ||
| 132 | &:active { | 132 | &:active { |
| 133 | @include bem.elem('cell') { | 133 | @include bem.elem("cell") { |
| 134 | background-color: props.get(vars.$box--active--bg-color); | 134 | background-color: props.get(vars.$box--active--bg-color); |
| 135 | } | 135 | } |
| 136 | } | 136 | } |
| @@ -138,8 +138,8 @@ | |||
| 138 | } | 138 | } |
| 139 | } | 139 | } |
| 140 | 140 | ||
| 141 | @include bem.modifier('sm') { | 141 | @include bem.modifier("sm") { |
| 142 | @include bem.elem('head-cell', 'cell') { | 142 | @include bem.elem("head-cell", "cell") { |
| 143 | padding-block: props.get(vars.$pad-b--sm); | 143 | padding-block: props.get(vars.$pad-b--sm); |
| 144 | } | 144 | } |
| 145 | } | 145 | } |
diff --git a/src/objects/_table.vars.scss b/src/objects/_table.vars.scss index 7c5683c..e00010f 100644 --- a/src/objects/_table.vars.scss +++ b/src/objects/_table.vars.scss | |||
| @@ -1,25 +1,59 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | 4 | ||
| 5 | $pad-i: props.def(--o-table--pad-i, props.get(core.$size--175)) !default; | 5 | $pad-i: props.def(--o-table--pad-i, props.get(core.$size--175)) !default; |
| 6 | $pad-b: props.def(--o-table--pad-b, props.get(core.$size--125)) !default; | 6 | $pad-b: props.def(--o-table--pad-b, props.get(core.$size--125)) !default; |
| 7 | $rounding: props.def(--o-table--rounding, props.get(core.$rounding--sm)) !default; | 7 | $rounding: props.def(--o-table--rounding, props.get(core.$rounding--sm)) !default; |
| 8 | $border-width: props.def(--o-table--border-width, props.get(core.$border-width--thin)) !default; | 8 | $border-width: props.def(--o-table--border-width, props.get(core.$border-width--thin)) !default; |
| 9 | 9 | ||
| 10 | $heading--font-family: props.def(--o-table--heading--font-family, props.get(core.$font--standard--family)) !default; | 10 | $heading--font-family: props.def( |
| 11 | $heading--font-size: props.def(--o-table--heading--font-size, props.get(core.$font-size--50)) !default; | 11 | --o-table--heading--font-family, |
| 12 | $heading--font-weight: props.def(--o-table--heading--font-weight, bold) !default; | 12 | props.get(core.$font--standard--family) |
| 13 | ) !default; | ||
| 14 | $heading--font-size: props.def( | ||
| 15 | --o-table--heading--font-size, | ||
| 16 | props.get(core.$font-size--50) | ||
| 17 | ) !default; | ||
| 18 | $heading--font-weight: props.def(--o-table--heading--font-weight, bold) !default; | ||
| 13 | $heading--text-transform: props.def(--o-table--heading--text-transform, uppercase) !default; | 19 | $heading--text-transform: props.def(--o-table--heading--text-transform, uppercase) !default; |
| 14 | $heading--letter-spacing: props.def(--o-table--heading--letter-spacing, .5px) !default; | 20 | $heading--letter-spacing: props.def(--o-table--heading--letter-spacing, 0.5px) !default; |
| 15 | 21 | ||
| 16 | $pad-b--sm: props.def(--o-table--sm--pad-b, props.get(core.$size--75)) !default; | 22 | $pad-b--sm: props.def(--o-table--sm--pad-b, props.get(core.$size--75)) !default; |
| 17 | 23 | ||
| 18 | $border-color: props.def(--o-table--border-color, props.get(core.$theme, --border), 'color') !default; | 24 | $border-color: props.def( |
| 19 | $heading-color: props.def(--o-table--heading-color, props.get(core.$theme, --heading), 'color') !default; | 25 | --o-table--border-color, |
| 20 | $hover--bg-color: props.def(--o-table--hover--bg-color, props.get(core.$theme, --border-mute), 'color') !default; | 26 | props.get(core.$theme, --border), |
| 21 | $active--bg-color: props.def(--o-table--active--bg-color, props.get(core.$theme, --border), 'color') !default; | 27 | "color" |
| 28 | ) !default; | ||
| 29 | $heading-color: props.def( | ||
| 30 | --o-table--heading-color, | ||
| 31 | props.get(core.$theme, --heading), | ||
| 32 | "color" | ||
| 33 | ) !default; | ||
| 34 | $hover--bg-color: props.def( | ||
| 35 | --o-table--hover--bg-color, | ||
| 36 | props.get(core.$theme, --border-mute), | ||
| 37 | "color" | ||
| 38 | ) !default; | ||
| 39 | $active--bg-color: props.def( | ||
| 40 | --o-table--active--bg-color, | ||
| 41 | props.get(core.$theme, --border), | ||
| 42 | "color" | ||
| 43 | ) !default; | ||
| 22 | 44 | ||
| 23 | $box--bg-color: props.def(--o-table--box--bg-color, props.get(core.$theme, --base, --50), 'color') !default; | 45 | $box--bg-color: props.def( |
| 24 | $box--hover--bg-color: props.def(--o-table--box--hover--bg-color, props.get(core.$theme, --bg-base), 'color') !default; | 46 | --o-table--box--bg-color, |
| 25 | $box--active--bg-color: props.def(--o-table--box--active--bg-color, props.get(core.$theme, --border-mute), 'color') !default; | 47 | props.get(core.$theme, --base, --50), |
| 48 | "color" | ||
| 49 | ) !default; | ||
| 50 | $box--hover--bg-color: props.def( | ||
| 51 | --o-table--box--hover--bg-color, | ||
| 52 | props.get(core.$theme, --bg-base), | ||
| 53 | "color" | ||
| 54 | ) !default; | ||
| 55 | $box--active--bg-color: props.def( | ||
| 56 | --o-table--box--active--bg-color, | ||
| 57 | props.get(core.$theme, --border-mute), | ||
| 58 | "color" | ||
| 59 | ) !default; | ||
diff --git a/src/objects/_text-field.scss b/src/objects/_text-field.scss index 5a48df3..a8d3ec8 100644 --- a/src/objects/_text-field.scss +++ b/src/objects/_text-field.scss | |||
| @@ -1,84 +1,91 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'text-field.vars'; | 6 | @forward "text-field.vars"; |
| 7 | @use 'text-field.vars' as vars; | 7 | @use "text-field.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin -invalid { | 9 | @mixin -invalid { |
| 10 | $focus-border-offset: calc(props.get(vars.$border-width) - props.get(vars.$focus--border-width)); | 10 | $focus-border-offset: calc( |
| 11 | props.get(vars.$border-width) - props.get(vars.$focus--border-width) | ||
| 12 | ); | ||
| 11 | 13 | ||
| 12 | @include bem.sibling-elem('bg') { | 14 | @include bem.sibling-elem("bg") { |
| 13 | inset-block: $focus-border-offset; | 15 | inset-block: $focus-border-offset; |
| 14 | inset-inline: $focus-border-offset; | 16 | inset-inline: $focus-border-offset; |
| 15 | border: props.get(vars.$focus--border-width) solid props.get(vars.$error--border-color); | 17 | border: props.get(vars.$focus--border-width) solid props.get(vars.$error--border-color); |
| 16 | border-radius: calc(props.get(vars.$rounding) - $focus-border-offset); | 18 | border-radius: calc(props.get(vars.$rounding) - $focus-border-offset); |
| 17 | } | 19 | } |
| 18 | 20 | ||
| 19 | &:hover { | 21 | &:hover { |
| 20 | @include bem.sibling-elem('bg') { | 22 | @include bem.sibling-elem("bg") { |
| 21 | border-color: props.get(vars.$error--hover--border-color); | 23 | border-color: props.get(vars.$error--hover--border-color); |
| 22 | } | 24 | } |
| 23 | } | 25 | } |
| 24 | 26 | ||
| 25 | &:focus { | 27 | &:focus { |
| 26 | @include bem.sibling-elem('bg') { | 28 | @include bem.sibling-elem("bg") { |
| 27 | border-color: props.get(vars.$error--focus--border-color); | 29 | border-color: props.get(vars.$error--focus--border-color); |
| 28 | } | 30 | } |
| 29 | } | 31 | } |
| 30 | } | 32 | } |
| 31 | 33 | ||
| 32 | @mixin -keyboard-focus { | 34 | @mixin -keyboard-focus { |
| 33 | @include bem.sibling-elem('bg') { | 35 | @include bem.sibling-elem("bg") { |
| 34 | outline: props.get(vars.$key-focus--outline-color) solid props.get(vars.$key-focus--border-width); | 36 | outline: props.get(vars.$key-focus--outline-color) solid |
| 35 | border-color: props.get(vars.$key-focus--border-color); | 37 | props.get(vars.$key-focus--border-width); |
| 38 | border-color: props.get(vars.$key-focus--border-color); | ||
| 36 | //outline-offset: props.get(vars.$focus --border); | 39 | //outline-offset: props.get(vars.$focus --border); |
| 37 | } | 40 | } |
| 38 | } | 41 | } |
| 39 | 42 | ||
| 40 | @mixin styles { | 43 | @mixin styles { |
| 41 | @include materialize-at-root(meta.module-variables('vars')); | 44 | @include materialize-at-root(meta.module-variables("vars")); |
| 42 | 45 | ||
| 43 | @include bem.object('text-field') { | 46 | @include bem.object("text-field") { |
| 44 | $focus-border-offset: calc(props.get(vars.$border-width) - props.get(vars.$focus--border-width)); | 47 | $focus-border-offset: calc( |
| 48 | props.get(vars.$border-width) - props.get(vars.$focus--border-width) | ||
| 49 | ); | ||
| 45 | 50 | ||
| 46 | position: relative; | 51 | position: relative; |
| 47 | min-inline-size: 0; | 52 | min-inline-size: 0; |
| 48 | background-color: props.get(vars.$bg-color); | 53 | background-color: props.get(vars.$bg-color); |
| 49 | border-radius: props.get(vars.$rounding); | 54 | border-radius: props.get(vars.$rounding); |
| 50 | 55 | ||
| 51 | @include bem.elem('bg') { | 56 | @include bem.elem("bg") { |
| 52 | position: absolute; | 57 | position: absolute; |
| 53 | inset-block: 0; | 58 | inset-block: 0; |
| 54 | inset-inline: 0; | 59 | inset-inline: 0; |
| 55 | display: block; | 60 | display: block; |
| 56 | pointer-events: none; | 61 | pointer-events: none; |
| 57 | border: props.get(vars.$border-width) solid props.get(vars.$border-color); | 62 | border: props.get(vars.$border-width) solid props.get(vars.$border-color); |
| 58 | border-radius: props.get(vars.$rounding); | 63 | border-radius: props.get(vars.$rounding); |
| 59 | } | 64 | } |
| 60 | 65 | ||
| 61 | @include bem.elem('native') { | 66 | @include bem.elem("native") { |
| 62 | box-sizing: border-box; | 67 | box-sizing: border-box; |
| 63 | inline-size: 100%; | 68 | inline-size: 100%; |
| 64 | padding-block: calc(props.get(vars.$pad-b) - .5em * (props.get(vars.$line-height) - 1)); | 69 | padding-block: calc( |
| 65 | padding-inline: props.get(vars.$pad-i); | 70 | props.get(vars.$pad-b) - 0.5em * (props.get(vars.$line-height) - 1) |
| 66 | font: inherit; | 71 | ); |
| 67 | line-height: props.get(vars.$line-height); | 72 | padding-inline: props.get(vars.$pad-i); |
| 68 | color: props.get(vars.$text-color); | 73 | font: inherit; |
| 69 | appearance: none; | 74 | line-height: props.get(vars.$line-height); |
| 70 | resize: none; | 75 | color: props.get(vars.$text-color); |
| 76 | appearance: none; | ||
| 77 | resize: none; | ||
| 71 | background-color: transparent; | 78 | background-color: transparent; |
| 72 | border: 1px solid transparent; | 79 | border: 1px solid transparent; |
| 73 | 80 | ||
| 74 | &::placeholder { | 81 | &::placeholder { |
| 75 | font-style: italic; | 82 | font-style: italic; |
| 76 | color: props.get(vars.$placeholder-color); | 83 | color: props.get(vars.$placeholder-color); |
| 77 | opacity: 1; | 84 | opacity: 1; |
| 78 | } | 85 | } |
| 79 | 86 | ||
| 80 | &:hover { | 87 | &:hover { |
| 81 | @include bem.sibling-elem('bg') { | 88 | @include bem.sibling-elem("bg") { |
| 82 | border-color: props.get(vars.$hover--border-color); | 89 | border-color: props.get(vars.$hover--border-color); |
| 83 | } | 90 | } |
| 84 | } | 91 | } |
| @@ -86,10 +93,11 @@ | |||
| 86 | &:focus { | 93 | &:focus { |
| 87 | outline: 0; | 94 | outline: 0; |
| 88 | 95 | ||
| 89 | @include bem.sibling-elem('bg') { | 96 | @include bem.sibling-elem("bg") { |
| 90 | inset-block: $focus-border-offset; | 97 | inset-block: $focus-border-offset; |
| 91 | inset-inline: $focus-border-offset; | 98 | inset-inline: $focus-border-offset; |
| 92 | border: props.get(vars.$focus--border-width) solid props.get(vars.$focus--border-color); | 99 | border: props.get(vars.$focus--border-width) solid |
| 100 | props.get(vars.$focus--border-color); | ||
| 93 | border-radius: calc(props.get(vars.$rounding) - $focus-border-offset); | 101 | border-radius: calc(props.get(vars.$rounding) - $focus-border-offset); |
| 94 | } | 102 | } |
| 95 | } | 103 | } |
| @@ -104,46 +112,49 @@ | |||
| 104 | } | 112 | } |
| 105 | } | 113 | } |
| 106 | 114 | ||
| 107 | @include bem.modifier('extended') { | 115 | @include bem.modifier("extended") { |
| 108 | padding: props.get(vars.$extended--pad); | 116 | padding: props.get(vars.$extended--pad); |
| 109 | 117 | ||
| 110 | @include bem.multi('&', 'elem' 'bg') { | 118 | @include bem.multi("&", "elem" "bg") { |
| 111 | border-radius: calc(props.get(vars.$rounding) + props.get(vars.$extended--pad)); | 119 | border-radius: calc(props.get(vars.$rounding) + props.get(vars.$extended--pad)); |
| 112 | } | 120 | } |
| 113 | 121 | ||
| 114 | @include bem.elem('native') { | 122 | @include bem.elem("native") { |
| 115 | &:focus { | 123 | &:focus { |
| 116 | @include bem.sibling-elem('bg') { | 124 | @include bem.sibling-elem("bg") { |
| 117 | border-radius: calc(props.get(vars.$rounding) + props.get(vars.$extended--pad) - $focus-border-offset); | 125 | border-radius: calc( |
| 126 | props.get(vars.$rounding) + props.get(vars.$extended--pad) - | ||
| 127 | $focus-border-offset | ||
| 128 | ); | ||
| 118 | } | 129 | } |
| 119 | } | 130 | } |
| 120 | } | 131 | } |
| 121 | } | 132 | } |
| 122 | 133 | ||
| 123 | @include bem.modifier('pill') { | 134 | @include bem.modifier("pill") { |
| 124 | @include bem.multi('&', 'elem' 'bg') { | 135 | @include bem.multi("&", "elem" "bg") { |
| 125 | border-radius: 100em; | 136 | border-radius: 100em; |
| 126 | } | 137 | } |
| 127 | 138 | ||
| 128 | @include bem.elem('native') { | 139 | @include bem.elem("native") { |
| 129 | padding-inline: props.get(vars.$pad-i-pill); | 140 | padding-inline: props.get(vars.$pad-i-pill); |
| 130 | 141 | ||
| 131 | &:focus { | 142 | &:focus { |
| 132 | @include bem.sibling-elem('bg') { | 143 | @include bem.sibling-elem("bg") { |
| 133 | border-radius: 100em; | 144 | border-radius: 100em; |
| 134 | } | 145 | } |
| 135 | } | 146 | } |
| 136 | } | 147 | } |
| 137 | 148 | ||
| 138 | @include bem.modifier('extended') { | 149 | @include bem.modifier("extended") { |
| 139 | @include bem.elem('native') { | 150 | @include bem.elem("native") { |
| 140 | padding-inline: props.get(vars.$pad-i); | 151 | padding-inline: props.get(vars.$pad-i); |
| 141 | } | 152 | } |
| 142 | } | 153 | } |
| 143 | } | 154 | } |
| 144 | 155 | ||
| 145 | @include bem.is('invalid') { | 156 | @include bem.is("invalid") { |
| 146 | @include bem.elem('native') { | 157 | @include bem.elem("native") { |
| 147 | @include -invalid; | 158 | @include -invalid; |
| 148 | 159 | ||
| 149 | &:focus-visible { | 160 | &:focus-visible { |
| @@ -152,10 +163,10 @@ | |||
| 152 | } | 163 | } |
| 153 | } | 164 | } |
| 154 | 165 | ||
| 155 | @include bem.is('disabled') { | 166 | @include bem.is("disabled") { |
| 156 | background-color: props.get(vars.$disabled--bg-color); | 167 | background-color: props.get(vars.$disabled--bg-color); |
| 157 | 168 | ||
| 158 | @include bem.elem('native') { | 169 | @include bem.elem("native") { |
| 159 | color: props.get(vars.$disabled--text-color); | 170 | color: props.get(vars.$disabled--text-color); |
| 160 | 171 | ||
| 161 | &::placeholder { | 172 | &::placeholder { |
| @@ -163,21 +174,21 @@ | |||
| 163 | } | 174 | } |
| 164 | } | 175 | } |
| 165 | 176 | ||
| 166 | @include bem.elem('bg') { | 177 | @include bem.elem("bg") { |
| 167 | border-color: props.get(vars.$disabled--border-color); | 178 | border-color: props.get(vars.$disabled--border-color); |
| 168 | } | 179 | } |
| 169 | 180 | ||
| 170 | @include bem.is('invalid') { | 181 | @include bem.is("invalid") { |
| 171 | @include bem.elem('native') { | 182 | @include bem.elem("native") { |
| 172 | @include bem.sibling-elem('bg') { | 183 | @include bem.sibling-elem("bg") { |
| 173 | border-color: props.get(vars.$disabled--border-color); | 184 | border-color: props.get(vars.$disabled--border-color); |
| 174 | } | 185 | } |
| 175 | } | 186 | } |
| 176 | } | 187 | } |
| 177 | 188 | ||
| 178 | @include bem.elem('native') { | 189 | @include bem.elem("native") { |
| 179 | &:invalid { | 190 | &:invalid { |
| 180 | @include bem.sibling-elem('bg') { | 191 | @include bem.sibling-elem("bg") { |
| 181 | border-color: props.get(vars.$disabled--border-color); | 192 | border-color: props.get(vars.$disabled--border-color); |
| 182 | } | 193 | } |
| 183 | } | 194 | } |
diff --git a/src/objects/_text-field.vars.scss b/src/objects/_text-field.vars.scss index ef06822..9a2a16a 100644 --- a/src/objects/_text-field.vars.scss +++ b/src/objects/_text-field.vars.scss | |||
| @@ -1,39 +1,108 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../core.vars' as core; | 3 | @use "../core.vars" as core; |
| 4 | 4 | ||
| 5 | $line-height: props.def(--o-text-field--line-height, 1.4) !default; | 5 | $line-height: props.def(--o-text-field--line-height, 1.4) !default; |
| 6 | $pad-i: props.def(--o-text-field--pad-i, props.get(core.$size--125)) !default; | 6 | $pad-i: props.def(--o-text-field--pad-i, props.get(core.$size--125)) !default; |
| 7 | $pad-i-pill: props.def(--o-text-field--pad-i-pill, props.get(core.$size--175)) !default; | 7 | $pad-i-pill: props.def(--o-text-field--pad-i-pill, props.get(core.$size--175)) !default; |
| 8 | $pad-b: props.def(--o-text-field--pad-b, props.get(core.$size--125)) !default; | 8 | $pad-b: props.def(--o-text-field--pad-b, props.get(core.$size--125)) !default; |
| 9 | $border-width: props.def(--o-text-field--border-width, props.get(core.$border-width--thin)) !default; | 9 | $border-width: props.def( |
| 10 | $rounding: props.def(--o-text-field--rounding, props.get(core.$rounding--sm)) !default; | 10 | --o-text-field--border-width, |
| 11 | props.get(core.$border-width--thin) | ||
| 12 | ) !default; | ||
| 13 | $rounding: props.def(--o-text-field--rounding, props.get(core.$rounding--sm)) !default; | ||
| 11 | 14 | ||
| 12 | $extended--pad: props.def(--o-text-field--extended--pad, props.get(core.$size--50)) !default; | 15 | $extended--pad: props.def(--o-text-field--extended--pad, props.get(core.$size--50)) !default; |
| 13 | 16 | ||
| 14 | $focus--border-width: props.def(--o-text-field--focus--border-width, props.get(core.$border-width--medium)) !default; | 17 | $focus--border-width: props.def( |
| 18 | --o-text-field--focus--border-width, | ||
| 19 | props.get(core.$border-width--medium) | ||
| 20 | ) !default; | ||
| 15 | 21 | ||
| 16 | $key-focus--border-width: props.def(--o-text-field--key-focus--border-width, props.get(core.$key-focus--outline-width)) !default; | 22 | $key-focus--border-width: props.def( |
| 23 | --o-text-field--key-focus--border-width, | ||
| 24 | props.get(core.$key-focus--outline-width) | ||
| 25 | ) !default; | ||
| 17 | 26 | ||
| 18 | $bg-color: props.def(--o-text-field--bg-color, props.get(core.$theme, --base, --50), 'color') !default; | 27 | $bg-color: props.def( |
| 19 | $placeholder-color: props.def(--o-text-field--placeholder-color, props.get(core.$theme, --text-mute-more), 'color') !default; | 28 | --o-text-field--bg-color, |
| 20 | $text-color: props.def(--o-text-field--text-color, props.get(core.$theme, --text), 'color') !default; | 29 | props.get(core.$theme, --base, --50), |
| 21 | $border-color: props.def(--o-text-field--border-color, props.get(core.$theme, --border-strong), 'color') !default; | 30 | "color" |
| 31 | ) !default; | ||
| 32 | $placeholder-color: props.def( | ||
| 33 | --o-text-field--placeholder-color, | ||
| 34 | props.get(core.$theme, --text-mute-more), | ||
| 35 | "color" | ||
| 36 | ) !default; | ||
| 37 | $text-color: props.def( | ||
| 38 | --o-text-field--text-color, | ||
| 39 | props.get(core.$theme, --text), | ||
| 40 | "color" | ||
| 41 | ) !default; | ||
| 42 | $border-color: props.def( | ||
| 43 | --o-text-field--border-color, | ||
| 44 | props.get(core.$theme, --border-strong), | ||
| 45 | "color" | ||
| 46 | ) !default; | ||
| 22 | 47 | ||
| 23 | $hover--border-color: props.def(--o-text-field--hover--border-color, props.get(core.$theme, --text-mute-more), 'color') !default; | 48 | $hover--border-color: props.def( |
| 49 | --o-text-field--hover--border-color, | ||
| 50 | props.get(core.$theme, --text-mute-more), | ||
| 51 | "color" | ||
| 52 | ) !default; | ||
| 24 | 53 | ||
| 25 | $focus--border-color: props.def(--o-text-field--focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; | 54 | $focus--border-color: props.def( |
| 55 | --o-text-field--focus--border-color, | ||
| 56 | props.get(core.$theme, --focus, --border), | ||
| 57 | "color" | ||
| 58 | ) !default; | ||
| 26 | 59 | ||
| 27 | $key-focus--border-color: props.def(--o-text-field--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; | 60 | $key-focus--border-color: props.def( |
| 28 | $key-focus--outline-color: props.def(--o-text-field--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; | 61 | --o-text-field--key-focus--border-color, |
| 62 | props.get(core.$theme, --focus, --border), | ||
| 63 | "color" | ||
| 64 | ) !default; | ||
| 65 | $key-focus--outline-color: props.def( | ||
| 66 | --o-text-field--key-focus--outline-color, | ||
| 67 | props.get(core.$theme, --focus, --outline), | ||
| 68 | "color" | ||
| 69 | ) !default; | ||
| 29 | 70 | ||
| 30 | $error--border-color: props.def(--o-text-field--error--border-color, props.get(core.$theme, --negative, --700), 'color') !default; | 71 | $error--border-color: props.def( |
| 72 | --o-text-field--error--border-color, | ||
| 73 | props.get(core.$theme, --negative, --700), | ||
| 74 | "color" | ||
| 75 | ) !default; | ||
| 31 | 76 | ||
| 32 | $error--hover--border-color: props.def(--o-text-field--error--hover--border-color, props.get(core.$theme, --negative, --900), 'color') !default; | 77 | $error--hover--border-color: props.def( |
| 78 | --o-text-field--error--hover--border-color, | ||
| 79 | props.get(core.$theme, --negative, --900), | ||
| 80 | "color" | ||
| 81 | ) !default; | ||
| 33 | 82 | ||
| 34 | $error--focus--border-color: props.def(--o-text-field--error--focus--border-color, props.get(core.$theme, --negative, --900), 'color') !default; | 83 | $error--focus--border-color: props.def( |
| 84 | --o-text-field--error--focus--border-color, | ||
| 85 | props.get(core.$theme, --negative, --900), | ||
| 86 | "color" | ||
| 87 | ) !default; | ||
| 35 | 88 | ||
| 36 | $disabled--bg-color: props.def(--o-text-field--disabled--bg-color, props.get(core.$theme, --border-mute), 'color') !default; | 89 | $disabled--bg-color: props.def( |
| 37 | $disabled--placeholder-color: props.def(--o-text-field--disabled--placeholder-color, props.get(core.$theme, --text-disabled), 'color') !default; | 90 | --o-text-field--disabled--bg-color, |
| 38 | $disabled--text-color: props.def(--o-text-field--disabled--text-color, props.get(core.$theme, --text-disabled), 'color') !default; | 91 | props.get(core.$theme, --border-mute), |
| 39 | $disabled--border-color: props.def(--o-text-field--disabled--border-color, props.get(core.$theme, --border-mute), 'color') !default; | 92 | "color" |
| 93 | ) !default; | ||
| 94 | $disabled--placeholder-color: props.def( | ||
| 95 | --o-text-field--disabled--placeholder-color, | ||
| 96 | props.get(core.$theme, --text-disabled), | ||
| 97 | "color" | ||
| 98 | ) !default; | ||
| 99 | $disabled--text-color: props.def( | ||
| 100 | --o-text-field--disabled--text-color, | ||
| 101 | props.get(core.$theme, --text-disabled), | ||
| 102 | "color" | ||
| 103 | ) !default; | ||
| 104 | $disabled--border-color: props.def( | ||
| 105 | --o-text-field--disabled--border-color, | ||
| 106 | props.get(core.$theme, --border-mute), | ||
| 107 | "color" | ||
| 108 | ) !default; | ||
diff --git a/src/objects/_thumbnail.scss b/src/objects/_thumbnail.scss index 9925dd0..c7a9791 100644 --- a/src/objects/_thumbnail.scss +++ b/src/objects/_thumbnail.scss | |||
| @@ -1,65 +1,66 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:meta'; | 2 | @use "sass:meta"; |
| 3 | @use 'sass:string'; | 3 | @use "sass:string"; |
| 4 | @use 'pkg:iro-sass/src/bem'; | 4 | @use "pkg:iro-sass/bem"; |
| 5 | @use 'pkg:iro-sass/src/props'; | 5 | @use "pkg:iro-sass/props"; |
| 6 | @use '../props' as *; | 6 | @use "../props" as *; |
| 7 | 7 | ||
| 8 | @forward 'thumbnail.vars'; | 8 | @forward "thumbnail.vars"; |
| 9 | @use 'thumbnail.vars' as vars; | 9 | @use "thumbnail.vars" as vars; |
| 10 | 10 | ||
| 11 | @mixin styles { | 11 | @mixin styles { |
| 12 | @include materialize-at-root(meta.module-variables('vars')); | 12 | @include materialize-at-root(meta.module-variables("vars")); |
| 13 | 13 | ||
| 14 | @include bem.object('thumbnail') { | 14 | @include bem.object("thumbnail") { |
| 15 | position: relative; | 15 | position: relative; |
| 16 | display: block; | 16 | display: block; |
| 17 | flex: 0 0 auto; | 17 | flex: 0 0 auto; |
| 18 | inline-size: props.get(vars.$size); | 18 | inline-size: props.get(vars.$size); |
| 19 | block-size: props.get(vars.$size); | 19 | block-size: props.get(vars.$size); |
| 20 | overflow: hidden; | 20 | overflow: hidden; |
| 21 | outline: props.get(vars.$border-color) solid props.get(vars.$border-width); | 21 | outline: props.get(vars.$border-color) solid props.get(vars.$border-width); |
| 22 | outline-offset: calc(-1 * props.get(vars.$border-width)); | 22 | outline-offset: calc(-1 * props.get(vars.$border-width)); |
| 23 | border-radius: props.get(vars.$rounding); | 23 | border-radius: props.get(vars.$rounding); |
| 24 | 24 | ||
| 25 | &:hover, | 25 | &:hover, |
| 26 | &:active, | 26 | &:active, |
| 27 | &:focus-visible { | 27 | &:focus-visible { |
| 28 | outline-color: props.get(vars.$hover--border-color); | 28 | outline-color: props.get(vars.$hover--border-color); |
| 29 | opacity: 1; | 29 | opacity: 1; |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | @include bem.elem('image') { | 32 | @include bem.elem("image") { |
| 33 | position: absolute; | 33 | position: absolute; |
| 34 | inset-block-start: 0; | 34 | inset-block-start: 0; |
| 35 | inset-inline-start: 0; | 35 | inset-inline-start: 0; |
| 36 | display: block; | 36 | display: block; |
| 37 | inline-size: 100%; | 37 | inline-size: 100%; |
| 38 | block-size: 100%; | 38 | block-size: 100%; |
| 39 | object-fit: cover; | 39 | object-fit: cover; |
| 40 | object-position: center center; | 40 | object-position: center center; |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | @include bem.elem('icon') { | 43 | @include bem.elem("icon") { |
| 44 | position: absolute; | 44 | position: absolute; |
| 45 | inset-block-start: 50%; | 45 | inset-block-start: 50%; |
| 46 | inset-inline-start: 50%; | 46 | inset-inline-start: 50%; |
| 47 | transform: translate(-50%, -50%); | 47 | transform: translate(-50%, -50%); |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | &:focus-visible { | 50 | &:focus-visible { |
| 51 | $focus-border-offset: calc(-1 * props.get(vars.$key-focus--border-offset)); | 51 | $focus-border-offset: calc(-1 * props.get(vars.$key-focus--border-offset)); |
| 52 | 52 | ||
| 53 | margin: $focus-border-offset; | 53 | margin: $focus-border-offset; |
| 54 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | 54 | outline: props.get(vars.$key-focus--border-color) solid |
| 55 | props.get(vars.$key-focus--border-width); | ||
| 55 | outline-offset: 0; | 56 | outline-offset: 0; |
| 56 | border: props.get(vars.$key-focus--border-offset) solid transparent; | 57 | border: props.get(vars.$key-focus--border-offset) solid transparent; |
| 57 | border-radius: calc(props.get(vars.$rounding) - $focus-border-offset); | 58 | border-radius: calc(props.get(vars.$rounding) - $focus-border-offset); |
| 58 | box-shadow: | 59 | box-shadow: 0 0 0 |
| 59 | 0 | 60 | calc( |
| 60 | 0 | 61 | props.get(vars.$key-focus--outline-width) + |
| 61 | 0 | 62 | props.get(vars.$key-focus--border-width) |
| 62 | calc(props.get(vars.$key-focus--outline-width) + props.get(vars.$key-focus--border-width)) | 63 | ) |
| 63 | props.get(vars.$key-focus--outline-color); | 64 | props.get(vars.$key-focus--outline-color); |
| 64 | } | 65 | } |
| 65 | 66 | ||
| @@ -73,18 +74,18 @@ | |||
| 73 | outline-color: props.get(vars.$static-themes, $theme, --hover, --border); | 74 | outline-color: props.get(vars.$static-themes, $theme, --hover, --border); |
| 74 | } | 75 | } |
| 75 | 76 | ||
| 76 | @include bem.is('selected') { | 77 | @include bem.is("selected") { |
| 77 | border-color: props.get(vars.$static-themes, $theme, --selected, --border); | 78 | border-color: props.get(vars.$static-themes, $theme, --selected, --border); |
| 78 | } | 79 | } |
| 79 | 80 | ||
| 80 | &:focus-visible { | 81 | &:focus-visible { |
| 81 | outline-color: props.get(vars.$static-themes, $theme, --key-focus, --border); | 82 | outline-color: props.get(vars.$static-themes, $theme, --key-focus, --border); |
| 82 | border-color: transparent; | 83 | border-color: transparent; |
| 83 | box-shadow: | 84 | box-shadow: 0 0 0 |
| 84 | 0 | 85 | calc( |
| 85 | 0 | 86 | props.get(vars.$key-focus--outline-width) + |
| 86 | 0 | 87 | props.get(vars.$key-focus--border-width) |
| 87 | calc(props.get(vars.$key-focus--outline-width) + props.get(vars.$key-focus--border-width)) | 88 | ) |
| 88 | props.get(vars.$static-themes, $theme, --key-focus, --outline); | 89 | props.get(vars.$static-themes, $theme, --key-focus, --outline); |
| 89 | } | 90 | } |
| 90 | } | 91 | } |
diff --git a/src/objects/_thumbnail.vars.scss b/src/objects/_thumbnail.vars.scss index a5625fc..737a626 100644 --- a/src/objects/_thumbnail.vars.scss +++ b/src/objects/_thumbnail.vars.scss | |||
| @@ -1,51 +1,85 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:string'; | 2 | @use "sass:string"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../core.vars' as core; | 4 | @use "../core.vars" as core; |
| 5 | 5 | ||
| 6 | $size: props.def(--o-thumbnail--size, props.get(core.$size--900)) !default; | 6 | $size: props.def(--o-thumbnail--size, props.get(core.$size--900)) !default; |
| 7 | $rounding: props.def(--o-thumbnail--rounding, props.get(core.$rounding--sm)) !default; | 7 | $rounding: props.def(--o-thumbnail--rounding, props.get(core.$rounding--sm)) !default; |
| 8 | $spacing: props.def(--o-thumbnail--spacing, props.get(core.$size--100)) !default; | 8 | $spacing: props.def(--o-thumbnail--spacing, props.get(core.$size--100)) !default; |
| 9 | $border-width: props.def(--o-thumbnail--border-width, props.get(core.$border-width--thin)) !default; | 9 | $border-width: props.def(--o-thumbnail--border-width, props.get(core.$border-width--thin)) !default; |
| 10 | 10 | ||
| 11 | $selected--border-width: props.def(--o-thumbnail--selected--border-width, props.get(core.$border-width--medium)) !default; | 11 | $selected--border-width: props.def( |
| 12 | --o-thumbnail--selected--border-width, | ||
| 13 | props.get(core.$border-width--medium) | ||
| 14 | ) !default; | ||
| 12 | 15 | ||
| 13 | $key-focus--border-width: props.def(--o-thumbnail--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; | 16 | $key-focus--border-width: props.def( |
| 14 | $key-focus--border-offset: props.def(--o-thumbnail--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; | 17 | --o-thumbnail--key-focus--border-width, |
| 15 | $key-focus--outline-width: props.def(--o-thumbnail--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; | 18 | props.get(core.$key-focus--border-width) |
| 19 | ) !default; | ||
| 20 | $key-focus--border-offset: props.def( | ||
| 21 | --o-thumbnail--key-focus--border-offset, | ||
| 22 | props.get(core.$key-focus--border-offset) | ||
| 23 | ) !default; | ||
| 24 | $key-focus--outline-width: props.def( | ||
| 25 | --o-thumbnail--key-focus--outline-width, | ||
| 26 | props.get(core.$key-focus--outline-width) | ||
| 27 | ) !default; | ||
| 16 | 28 | ||
| 17 | $border-color: props.def(--o-thumbnail--border-color, props.get(core.$theme, --border-strong), 'color') !default; | 29 | $border-color: props.def( |
| 30 | --o-thumbnail--border-color, | ||
| 31 | props.get(core.$theme, --border-strong), | ||
| 32 | "color" | ||
| 33 | ) !default; | ||
| 18 | 34 | ||
| 19 | $hover--border-color: props.def(--o-thumbnail--hover--border-color, props.get(core.$theme, --text-mute-more), 'color') !default; | 35 | $hover--border-color: props.def( |
| 36 | --o-thumbnail--hover--border-color, | ||
| 37 | props.get(core.$theme, --text-mute-more), | ||
| 38 | "color" | ||
| 39 | ) !default; | ||
| 20 | 40 | ||
| 21 | $selected--border-color: props.def(--o-thumbnail--selected--border-color, props.get(core.$theme, --heading), 'color') !default; | 41 | $selected--border-color: props.def( |
| 42 | --o-thumbnail--selected--border-color, | ||
| 43 | props.get(core.$theme, --heading), | ||
| 44 | "color" | ||
| 45 | ) !default; | ||
| 22 | 46 | ||
| 23 | $key-focus--border-color: props.def(--o-thumbnail--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; | 47 | $key-focus--border-color: props.def( |
| 24 | $key-focus--outline-color: props.def(--o-thumbnail--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; | 48 | --o-thumbnail--key-focus--border-color, |
| 49 | props.get(core.$theme, --focus, --border), | ||
| 50 | "color" | ||
| 51 | ) !default; | ||
| 52 | $key-focus--outline-color: props.def( | ||
| 53 | --o-thumbnail--key-focus--outline-color, | ||
| 54 | props.get(core.$theme, --focus, --outline), | ||
| 55 | "color" | ||
| 56 | ) !default; | ||
| 25 | 57 | ||
| 26 | $size--md: props.def(--o-thumbnail--size, props.get(core.$size--600), 'md') !default; | 58 | $size--md: props.def(--o-thumbnail--size, props.get(core.$size--600), "md") !default; |
| 27 | 59 | ||
| 28 | $static-themes: props.def(--o-thumbnail, (), 'color'); | 60 | $static-themes: props.def(--o-thumbnail, (), "color"); |
| 29 | 61 | ||
| 30 | @each $theme in map.keys(props.get(core.$transparent-colors)) { | 62 | @each $theme in map.keys(props.get(core.$transparent-colors)) { |
| 31 | $thumbnail-theme: --static-#{string.slice($theme, 3)}; | 63 | $thumbnail-theme: --static-#{string.slice($theme, 3)}; |
| 32 | 64 | ||
| 33 | $static-themes: props.merge($static-themes, ( | 65 | $static-themes: props.merge( |
| 34 | $thumbnail-theme: ( | 66 | $static-themes, |
| 35 | --border: props.get(core.$transparent-colors, $theme, --400), | 67 | ( |
| 68 | $thumbnail-theme: ( | ||
| 69 | --border: props.get(core.$transparent-colors, $theme, --400), | ||
| 70 | --hover: ( | ||
| 71 | --border: props.get(core.$transparent-colors, $theme, --500), | ||
| 72 | ), | ||
| 36 | 73 | ||
| 37 | --hover: ( | 74 | --selected: ( |
| 38 | --border: props.get(core.$transparent-colors, $theme, --500), | 75 | --border: props.get(core.$transparent-colors, $theme, --900), |
| 39 | ), | 76 | ), |
| 40 | 77 | ||
| 41 | --selected: ( | 78 | --key-focus: ( |
| 42 | --border: props.get(core.$transparent-colors, $theme, --900), | 79 | --border: props.get(core.$transparent-colors, $theme, --900), |
| 43 | ), | 80 | --outline: props.get(core.$transparent-colors, $theme, --300), |
| 44 | 81 | ), | |
| 45 | --key-focus: ( | 82 | ), |
| 46 | --border: props.get(core.$transparent-colors, $theme, --900), | ||
| 47 | --outline: props.get(core.$transparent-colors, $theme, --300), | ||
| 48 | ), | ||
| 49 | ) | 83 | ) |
| 50 | )); | 84 | ); |
| 51 | } | 85 | } |
diff --git a/src/scopes/_blockquotes.scss b/src/scopes/_blockquotes.scss index 10e6d81..bc4fd39 100644 --- a/src/scopes/_blockquotes.scss +++ b/src/scopes/_blockquotes.scss | |||
| @@ -1,25 +1,27 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'blockquotes.vars'; | 6 | @forward "blockquotes.vars"; |
| 7 | @use 'blockquotes.vars' as vars; | 7 | @use "blockquotes.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.scope('blockquotes') { | 12 | @include bem.scope("blockquotes") { |
| 13 | blockquote { | 13 | blockquote { |
| 14 | padding-inline-start: calc(props.get(vars.$indent) - props.get(vars.$border-width)); | 14 | padding-inline-start: calc(props.get(vars.$indent) - props.get(vars.$border-width)); |
| 15 | margin-block: props.get(vars.$margin-bs) 0; | 15 | margin-block: props.get(vars.$margin-bs) 0; |
| 16 | margin-inline: 1px 0; | 16 | margin-inline: 1px 0; |
| 17 | border-inline-start: props.get(vars.$border-width) solid props.get(vars.$border-color); | 17 | border-inline-start: props.get(vars.$border-width) solid props.get(vars.$border-color); |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | @include bem.modifier('compact') { | 20 | @include bem.modifier("compact") { |
| 21 | blockquote { | 21 | blockquote { |
| 22 | padding-inline-start: calc(props.get(vars.$compact--indent) - props.get(vars.$border-width)); | 22 | padding-inline-start: calc( |
| 23 | props.get(vars.$compact--indent) - props.get(vars.$border-width) | ||
| 24 | ); | ||
| 23 | } | 25 | } |
| 24 | } | 26 | } |
| 25 | } | 27 | } |
diff --git a/src/scopes/_blockquotes.vars.scss b/src/scopes/_blockquotes.vars.scss index 63c40b0..117b4a6 100644 --- a/src/scopes/_blockquotes.vars.scss +++ b/src/scopes/_blockquotes.vars.scss | |||
| @@ -1,11 +1,24 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | @use './implicit.vars' as implicit; | 3 | @use "./implicit.vars" as implicit; |
| 4 | 4 | ||
| 5 | $indent: props.def(--s-blockquotes--indent, props.get(core.$list--indent)) !default; | 5 | $indent: props.def(--s-blockquotes--indent, props.get(core.$list--indent)) !default; |
| 6 | $margin-bs: props.def(--s-blockquotes--margin-bs, props.get(implicit.$paragraph--margin-bs)) !default; | 6 | $margin-bs: props.def( |
| 7 | $border-width: props.def(--s-blockquotes--border-width, props.get(core.$border-width--thick)) !default; | 7 | --s-blockquotes--margin-bs, |
| 8 | props.get(implicit.$paragraph--margin-bs) | ||
| 9 | ) !default; | ||
| 10 | $border-width: props.def( | ||
| 11 | --s-blockquotes--border-width, | ||
| 12 | props.get(core.$border-width--thick) | ||
| 13 | ) !default; | ||
| 8 | 14 | ||
| 9 | $compact--indent: props.def(--s-blockquotes--compact--indent, props.get(core.$list--compact-indent)) !default; | 15 | $compact--indent: props.def( |
| 16 | --s-blockquotes--compact--indent, | ||
| 17 | props.get(core.$list--compact-indent) | ||
| 18 | ) !default; | ||
| 10 | 19 | ||
| 11 | $border-color: props.def(--s-blockquotes--border-color, props.get(core.$theme, --border), 'color') !default; | 20 | $border-color: props.def( |
| 21 | --s-blockquotes--border-color, | ||
| 22 | props.get(core.$theme, --border), | ||
| 23 | "color" | ||
| 24 | ) !default; | ||
diff --git a/src/scopes/_body.scss b/src/scopes/_body.scss index 77a3eb1..6c5ba63 100644 --- a/src/scopes/_body.scss +++ b/src/scopes/_body.scss | |||
| @@ -1,15 +1,15 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'body.vars'; | 6 | @forward "body.vars"; |
| 7 | @use 'body.vars' as vars; | 7 | @use "body.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.scope('body') { | 12 | @include bem.scope("body") { |
| 13 | font-size: props.get(vars.$font-size); | 13 | font-size: props.get(vars.$font-size); |
| 14 | line-height: props.get(vars.$line-height); | 14 | line-height: props.get(vars.$line-height); |
| 15 | 15 | ||
| @@ -30,11 +30,11 @@ | |||
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | img { | 32 | img { |
| 33 | display: block; | 33 | display: block; |
| 34 | inline-size: auto; | 34 | inline-size: auto; |
| 35 | max-inline-size: 100%; | 35 | max-inline-size: 100%; |
| 36 | block-size: auto; | 36 | block-size: auto; |
| 37 | max-block-size: props.get(vars.$img--max-block-size); | 37 | max-block-size: props.get(vars.$img--max-block-size); |
| 38 | margin-block-start: props.get(vars.$paragraph--margin-bs); | 38 | margin-block-start: props.get(vars.$paragraph--margin-bs); |
| 39 | } | 39 | } |
| 40 | 40 | ||
diff --git a/src/scopes/_body.vars.scss b/src/scopes/_body.vars.scss index 981ef32..414e0c1 100644 --- a/src/scopes/_body.vars.scss +++ b/src/scopes/_body.vars.scss | |||
| @@ -1,12 +1,25 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | 3 | ||
| 4 | @use '../layouts/container.vars' as container; | 4 | @use "../layouts/container.vars" as container; |
| 5 | 5 | ||
| 6 | $font-size: props.def(--s-body--font-size, props.get(core.$font-size--150)) !default; | 6 | $font-size: props.def(--s-body--font-size, props.get(core.$font-size--150)) !default; |
| 7 | $line-height: props.def(--s-body--line-height, calc(props.get(core.$font--standard--line-height) + .1)) !default; | 7 | $line-height: props.def( |
| 8 | $paragraph--margin-bs: props.def(--s-body--paragraph--margin-bs, props.get(core.$size--300)) !default; | 8 | --s-body--line-height, |
| 9 | $paragraph--max-inline-size: props.def(--s-body--paragraph--max-inline-size, props.get(container.$fixed)) !default; | 9 | calc(props.get(core.$font--standard--line-height) + 0.1) |
| 10 | $img--max-block-size: props.def(--s-body--img--max-block-size, none) !default; | 10 | ) !default; |
| 11 | $paragraph--margin-bs: props.def( | ||
| 12 | --s-body--paragraph--margin-bs, | ||
| 13 | props.get(core.$size--300) | ||
| 14 | ) !default; | ||
| 15 | $paragraph--max-inline-size: props.def( | ||
| 16 | --s-body--paragraph--max-inline-size, | ||
| 17 | props.get(container.$fixed) | ||
| 18 | ) !default; | ||
| 19 | $img--max-block-size: props.def(--s-body--img--max-block-size, none) !default; | ||
| 11 | 20 | ||
| 12 | $strong--text-color: props.def(--s-body--strong--text-color, props.get(core.$theme, --heading), 'color') !default; | 21 | $strong--text-color: props.def( |
| 22 | --s-body--strong--text-color, | ||
| 23 | props.get(core.$theme, --heading), | ||
| 24 | "color" | ||
| 25 | ) !default; | ||
diff --git a/src/scopes/_code.scss b/src/scopes/_code.scss index db43de0..d931c22 100644 --- a/src/scopes/_code.scss +++ b/src/scopes/_code.scss | |||
| @@ -1,39 +1,39 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | 5 | ||
| 6 | @forward 'code.vars'; | 6 | @forward "code.vars"; |
| 7 | @use 'code.vars' as vars; | 7 | @use "code.vars" as vars; |
| 8 | 8 | ||
| 9 | @mixin styles { | 9 | @mixin styles { |
| 10 | @include materialize-at-root(meta.module-variables('vars')); | 10 | @include materialize-at-root(meta.module-variables("vars")); |
| 11 | 11 | ||
| 12 | @include bem.scope('code') { | 12 | @include bem.scope("code") { |
| 13 | code { | 13 | code { |
| 14 | padding-block: props.get(vars.$inline--pad-b); | 14 | padding-block: props.get(vars.$inline--pad-b); |
| 15 | padding-inline: props.get(vars.$inline--pad-i); | 15 | padding-inline: props.get(vars.$inline--pad-i); |
| 16 | color: props.get(vars.$inline--fg); | 16 | color: props.get(vars.$inline--fg); |
| 17 | background-color: props.get(vars.$inline--bg); | 17 | background-color: props.get(vars.$inline--bg); |
| 18 | border-radius: props.get(vars.$inline--rounding); | 18 | border-radius: props.get(vars.$inline--rounding); |
| 19 | } | 19 | } |
| 20 | 20 | ||
| 21 | pre { | 21 | pre { |
| 22 | padding-block: props.get(vars.$block--pad-b); | 22 | padding-block: props.get(vars.$block--pad-b); |
| 23 | padding-inline: props.get(vars.$block--pad-i); | 23 | padding-inline: props.get(vars.$block--pad-i); |
| 24 | margin-block: props.get(vars.$block--margin-bs) 0; | 24 | margin-block: props.get(vars.$block--margin-bs) 0; |
| 25 | margin-inline: 0; | 25 | margin-inline: 0; |
| 26 | color: props.get(vars.$block--fg); | 26 | color: props.get(vars.$block--fg); |
| 27 | background-color: props.get(vars.$block--bg); | 27 | background-color: props.get(vars.$block--bg); |
| 28 | border-radius: props.get(vars.$block--rounding); | 28 | border-radius: props.get(vars.$block--rounding); |
| 29 | 29 | ||
| 30 | code { | 30 | code { |
| 31 | display: inline-block; | 31 | display: inline-block; |
| 32 | padding: 0; | 32 | padding: 0; |
| 33 | margin-inline-end: props.get(vars.$block--pad-i); | 33 | margin-inline-end: props.get(vars.$block--pad-i); |
| 34 | color: currentColor; | 34 | color: currentColor; |
| 35 | background-color: transparent; | 35 | background-color: transparent; |
| 36 | border-radius: 0; | 36 | border-radius: 0; |
| 37 | } | 37 | } |
| 38 | } | 38 | } |
| 39 | } | 39 | } |
diff --git a/src/scopes/_code.vars.scss b/src/scopes/_code.vars.scss index 329d372..e22421c 100644 --- a/src/scopes/_code.vars.scss +++ b/src/scopes/_code.vars.scss | |||
| @@ -1,18 +1,25 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | @use './implicit.vars' as implicit; | 3 | @use "./implicit.vars" as implicit; |
| 4 | 4 | ||
| 5 | $inline--pad-i: props.def(--s-code--inline--pad-i, props.get(core.$size--50)) !default; | 5 | $inline--pad-i: props.def(--s-code--inline--pad-i, props.get(core.$size--50)) !default; |
| 6 | $inline--pad-b: props.def(--s-code--inline--pad-b, props.get(core.$size--10)) !default; | 6 | $inline--pad-b: props.def(--s-code--inline--pad-b, props.get(core.$size--10)) !default; |
| 7 | $inline--rounding: props.def(--s-code--inline--rounding, props.get(core.$rounding--sm)) !default; | 7 | $inline--rounding: props.def(--s-code--inline--rounding, props.get(core.$rounding--sm)) !default; |
| 8 | 8 | ||
| 9 | $block--pad-i: props.def(--s-code--block--pad-i, props.get(core.$size--150)) !default; | 9 | $block--pad-i: props.def(--s-code--block--pad-i, props.get(core.$size--150)) !default; |
| 10 | $block--pad-b: props.def(--s-code--block--pad-b, props.get(core.$size--85)) !default; | 10 | $block--pad-b: props.def(--s-code--block--pad-b, props.get(core.$size--85)) !default; |
| 11 | $block--margin-bs: props.def(--s-code--block--margin-bs, props.get(implicit.$paragraph--margin-bs)) !default; | 11 | $block--margin-bs: props.def( |
| 12 | $block--rounding: props.def(--s-code--block--rounding, props.get(core.$rounding--sm)) !default; | 12 | --s-code--block--margin-bs, |
| 13 | props.get(implicit.$paragraph--margin-bs) | ||
| 14 | ) !default; | ||
| 15 | $block--rounding: props.def(--s-code--block--rounding, props.get(core.$rounding--sm)) !default; | ||
| 13 | 16 | ||
| 14 | $inline--fg: props.def(--s-code--inline--fg, props.get(core.$theme, --heading), 'color') !default; | 17 | $inline--fg: props.def(--s-code--inline--fg, props.get(core.$theme, --heading), "color") !default; |
| 15 | $inline--bg: props.def(--s-code--inline--bg, props.get(core.$theme, --base, --200), 'color') !default; | 18 | $inline--bg: props.def( |
| 19 | --s-code--inline--bg, | ||
| 20 | props.get(core.$theme, --base, --200), | ||
| 21 | "color" | ||
| 22 | ) !default; | ||
| 16 | 23 | ||
| 17 | $block--fg: props.def(--s-code--block--fg, props.get(core.$theme, --text), 'color') !default; | 24 | $block--fg: props.def(--s-code--block--fg, props.get(core.$theme, --text), "color") !default; |
| 18 | $block--bg: props.def(--s-code--block--bg, props.get(core.$theme, --base, --50), 'color') !default; | 25 | $block--bg: props.def(--s-code--block--bg, props.get(core.$theme, --base, --50), "color") !default; |
diff --git a/src/scopes/_figures.scss b/src/scopes/_figures.scss index c993f5a..852ab5a 100644 --- a/src/scopes/_figures.scss +++ b/src/scopes/_figures.scss | |||
| @@ -1,20 +1,20 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../objects/figure.vars' as figure; | 4 | @use "../objects/figure.vars" as figure; |
| 5 | 5 | ||
| 6 | @mixin styles { | 6 | @mixin styles { |
| 7 | @include bem.scope('figures') { | 7 | @include bem.scope("figures") { |
| 8 | figcaption { | 8 | figcaption { |
| 9 | padding-block: props.get(figure.$pad-b); | 9 | padding-block: props.get(figure.$pad-b); |
| 10 | font-size: props.get(figure.$font-size); | 10 | font-size: props.get(figure.$font-size); |
| 11 | color: props.get(figure.$text-color); | 11 | color: props.get(figure.$text-color); |
| 12 | border-block-end: props.get(figure.$border-width) solid props.get(figure.$border-color); | 12 | border-block-end: props.get(figure.$border-width) solid props.get(figure.$border-color); |
| 13 | 13 | ||
| 14 | &::before { | 14 | &::before { |
| 15 | display: block; | 15 | display: block; |
| 16 | margin-block: -100em 100em; | 16 | margin-block: -100em 100em; |
| 17 | content: ''; | 17 | content: ""; |
| 18 | } | 18 | } |
| 19 | } | 19 | } |
| 20 | } | 20 | } |
diff --git a/src/scopes/_headings.scss b/src/scopes/_headings.scss index 23623fd..a6a7bbb 100644 --- a/src/scopes/_headings.scss +++ b/src/scopes/_headings.scss | |||
| @@ -1,8 +1,8 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:string'; | 2 | @use "sass:string"; |
| 3 | @use 'pkg:iro-sass/src/bem'; | 3 | @use "pkg:iro-sass/bem"; |
| 4 | @use 'pkg:iro-sass/src/props'; | 4 | @use "pkg:iro-sass/props"; |
| 5 | @use '../objects/heading.vars' as heading; | 5 | @use "../objects/heading.vars" as heading; |
| 6 | 6 | ||
| 7 | @mixin styles { | 7 | @mixin styles { |
| 8 | /* stylelint-disable-next-line scss/dollar-variable-pattern */ | 8 | /* stylelint-disable-next-line scss/dollar-variable-pattern */ |
| @@ -15,56 +15,62 @@ | |||
| 15 | xxl: h1, | 15 | xxl: h1, |
| 16 | ); | 16 | ); |
| 17 | 17 | ||
| 18 | @include bem.scope('headings') { | 18 | @include bem.scope("headings") { |
| 19 | h1, | 19 | h1, |
| 20 | h2, | 20 | h2, |
| 21 | h3, | 21 | h3, |
| 22 | h4, | 22 | h4, |
| 23 | h5, | 23 | h5, |
| 24 | h6 { | 24 | h6 { |
| 25 | display: block; | 25 | display: block; |
| 26 | margin-block-start: props.get(heading.$margin-bs); | 26 | margin-block-start: props.get(heading.$margin-bs); |
| 27 | font-family: props.get(heading.$font-family); | 27 | font-family: props.get(heading.$font-family); |
| 28 | font-weight: props.get(heading.$font-weight); | 28 | font-weight: props.get(heading.$font-weight); |
| 29 | font-feature-settings: props.get(heading.$feature-settings); | 29 | font-feature-settings: props.get(heading.$feature-settings); |
| 30 | line-height: props.get(heading.$line-height); | 30 | line-height: props.get(heading.$line-height); |
| 31 | text-transform: props.get(heading.$text-transform); | 31 | text-transform: props.get(heading.$text-transform); |
| 32 | letter-spacing: normal; | 32 | letter-spacing: normal; |
| 33 | transform: translateX(props.get(heading.$offset)); | 33 | transform: translateX(props.get(heading.$offset)); |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | @include bem.elem('highlight') { | 36 | @include bem.elem("highlight") { |
| 37 | background-image: linear-gradient(to top, | 37 | background-image: linear-gradient( |
| 38 | transparent .15em, | 38 | to top, |
| 39 | props.get(heading.$bg-color) .15em, | 39 | transparent 0.15em, |
| 40 | props.get(heading.$bg-color) .6em, | 40 | props.get(heading.$bg-color) 0.15em, |
| 41 | transparent .6em); | 41 | props.get(heading.$bg-color) 0.6em, |
| 42 | transparent 0.6em | ||
| 43 | ); | ||
| 42 | } | 44 | } |
| 43 | 45 | ||
| 44 | @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, $feature-settings, $text-transform, $text-color in heading.$sizes { | 46 | @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, |
| 47 | $feature-settings, $text-transform, $text-color in heading.$sizes | ||
| 48 | { | ||
| 45 | #{map.get($-size-map, $mod)} { | 49 | #{map.get($-size-map, $mod)} { |
| 46 | font-family: props.get($font-family); | 50 | font-family: props.get($font-family); |
| 47 | font-size: props.get($font-size); | 51 | font-size: props.get($font-size); |
| 48 | font-weight: props.get($font-weight); | 52 | font-weight: props.get($font-weight); |
| 49 | font-feature-settings: props.get($feature-settings); | 53 | font-feature-settings: props.get($feature-settings); |
| 50 | line-height: props.get($line-height); | 54 | line-height: props.get($line-height); |
| 51 | color: props.get($text-color); | 55 | color: props.get($text-color); |
| 52 | text-transform: props.get($text-transform); | 56 | text-transform: props.get($text-transform); |
| 53 | letter-spacing: props.get($letter-spacing); | 57 | letter-spacing: props.get($letter-spacing); |
| 54 | } | 58 | } |
| 55 | } | 59 | } |
| 56 | 60 | ||
| 57 | @include bem.modifier('display') { | 61 | @include bem.modifier("display") { |
| 58 | @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, $feature-settings, $text-transform, $text-color in heading.$display--sizes { | 62 | @each $mod, $font-family, $line-height, $font-size, $font-weight, $letter-spacing, |
| 63 | $feature-settings, $text-transform, $text-color in heading.$display--sizes | ||
| 64 | { | ||
| 59 | #{map.get($-size-map, $mod)} { | 65 | #{map.get($-size-map, $mod)} { |
| 60 | font-family: props.get($font-family); | 66 | font-family: props.get($font-family); |
| 61 | font-size: props.get($font-size); | 67 | font-size: props.get($font-size); |
| 62 | font-weight: props.get($font-weight); | 68 | font-weight: props.get($font-weight); |
| 63 | font-feature-settings: props.get($feature-settings); | 69 | font-feature-settings: props.get($feature-settings); |
| 64 | line-height: props.get($line-height); | 70 | line-height: props.get($line-height); |
| 65 | color: props.get($text-color); | 71 | color: props.get($text-color); |
| 66 | text-transform: props.get($text-transform); | 72 | text-transform: props.get($text-transform); |
| 67 | letter-spacing: props.get($letter-spacing); | 73 | letter-spacing: props.get($letter-spacing); |
| 68 | } | 74 | } |
| 69 | } | 75 | } |
| 70 | } | 76 | } |
| @@ -79,10 +85,16 @@ | |||
| 79 | } | 85 | } |
| 80 | } | 86 | } |
| 81 | 87 | ||
| 82 | @include bem.modifier('display') { | 88 | @include bem.modifier("display") { |
| 83 | @each $mod, $value in heading.$sizes { | 89 | @each $mod, $value in heading.$sizes { |
| 84 | #{map.get($-size-map, $mod)} { | 90 | #{map.get($-size-map, $mod)} { |
| 85 | color: props.get(heading.$static-themes, $theme, --display, --#{$mod}, --text-color); | 91 | color: props.get( |
| 92 | heading.$static-themes, | ||
| 93 | $theme, | ||
| 94 | --display, | ||
| 95 | --#{$mod}, | ||
| 96 | --text-color | ||
| 97 | ); | ||
| 86 | } | 98 | } |
| 87 | } | 99 | } |
| 88 | } | 100 | } |
diff --git a/src/scopes/_implicit.scss b/src/scopes/_implicit.scss index 728fd22..f8c575d 100644 --- a/src/scopes/_implicit.scss +++ b/src/scopes/_implicit.scss | |||
| @@ -1,21 +1,21 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:math'; | 2 | @use "sass:math"; |
| 3 | @use 'sass:meta'; | 3 | @use "sass:meta"; |
| 4 | @use 'sass:string'; | 4 | @use "sass:string"; |
| 5 | @use 'pkg:iro-sass/src/bem'; | 5 | @use "pkg:iro-sass/bem"; |
| 6 | @use 'pkg:iro-sass/src/props'; | 6 | @use "pkg:iro-sass/props"; |
| 7 | @use '../props' as *; | 7 | @use "../props" as *; |
| 8 | @use '../core.vars' as core; | 8 | @use "../core.vars" as core; |
| 9 | 9 | ||
| 10 | @forward 'implicit.vars'; | 10 | @forward "implicit.vars"; |
| 11 | @use 'implicit.vars' as vars; | 11 | @use "implicit.vars" as vars; |
| 12 | 12 | ||
| 13 | @mixin styles { | 13 | @mixin styles { |
| 14 | @include materialize-at-root(meta.module-variables('vars')); | 14 | @include materialize-at-root(meta.module-variables("vars")); |
| 15 | 15 | ||
| 16 | @layer scope { | 16 | @layer scope { |
| 17 | html { | 17 | html { |
| 18 | accent-color: props.get(core.$theme, --accent, --600); | 18 | accent-color: props.get(core.$theme, --accent, --600); |
| 19 | scrollbar-color: props.get(core.$theme, --text-disabled) transparent; | 19 | scrollbar-color: props.get(core.$theme, --text-disabled) transparent; |
| 20 | 20 | ||
| 21 | &:has(dialog[open]), | 21 | &:has(dialog[open]), |
| @@ -26,31 +26,31 @@ | |||
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | body { | 28 | body { |
| 29 | padding: 0; | 29 | padding: 0; |
| 30 | margin: 0; | 30 | margin: 0; |
| 31 | font-family: props.get(vars.$body--font-family); | 31 | font-family: props.get(vars.$body--font-family); |
| 32 | font-size: props.get(vars.$body--font-size); | 32 | font-size: props.get(vars.$body--font-size); |
| 33 | font-feature-settings: props.get(vars.$body--feature-settings); | 33 | font-feature-settings: props.get(vars.$body--feature-settings); |
| 34 | line-height: props.get(vars.$body--line-height); | 34 | line-height: props.get(vars.$body--line-height); |
| 35 | color: props.get(core.$theme, --text); | 35 | color: props.get(core.$theme, --text); |
| 36 | background-color: props.get(core.$theme, --bg-base); | 36 | background-color: props.get(core.$theme, --bg-base); |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | pre, | 39 | pre, |
| 40 | code { | 40 | code { |
| 41 | font-family: props.get(vars.$code--font-family); | 41 | font-family: props.get(vars.$code--font-family); |
| 42 | font-size: props.get(vars.$code--font-size); | 42 | font-size: props.get(vars.$code--font-size); |
| 43 | font-feature-settings: props.get(vars.$code--feature-settings); | 43 | font-feature-settings: props.get(vars.$code--feature-settings); |
| 44 | line-height: props.get(vars.$code--line-height); | 44 | line-height: props.get(vars.$code--line-height); |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | pre { | 47 | pre { |
| 48 | margin: 0; | 48 | margin: 0; |
| 49 | overflow-x: auto; | 49 | overflow-x: auto; |
| 50 | 50 | ||
| 51 | code { | 51 | code { |
| 52 | font-size: 1em; | 52 | font-size: 1em; |
| 53 | color: currentColor; | 53 | color: currentColor; |
| 54 | } | 54 | } |
| 55 | } | 55 | } |
| 56 | 56 | ||
| @@ -60,13 +60,13 @@ | |||
| 60 | h4, | 60 | h4, |
| 61 | h5, | 61 | h5, |
| 62 | h6 { | 62 | h6 { |
| 63 | margin-block: props.get(vars.$heading--margin-bs) 0; | 63 | margin-block: props.get(vars.$heading--margin-bs) 0; |
| 64 | font-family: props.get(vars.$heading--font-family); | 64 | font-family: props.get(vars.$heading--font-family); |
| 65 | font-size: props.get(vars.$heading--font-size); | 65 | font-size: props.get(vars.$heading--font-size); |
| 66 | font-weight: props.get(vars.$heading--font-weight); | 66 | font-weight: props.get(vars.$heading--font-weight); |
| 67 | font-feature-settings: props.get(vars.$heading--feature-settings); | 67 | font-feature-settings: props.get(vars.$heading--feature-settings); |
| 68 | line-height: props.get(vars.$heading--line-height); | 68 | line-height: props.get(vars.$heading--line-height); |
| 69 | color: props.get(vars.$heading--color); | 69 | color: props.get(vars.$heading--color); |
| 70 | 70 | ||
| 71 | & + & { | 71 | & + & { |
| 72 | margin-block-start: props.get(vars.$heading--margin-bs-sibling); | 72 | margin-block-start: props.get(vars.$heading--margin-bs-sibling); |
| @@ -91,14 +91,14 @@ | |||
| 91 | 91 | ||
| 92 | ul, | 92 | ul, |
| 93 | ol { | 93 | ol { |
| 94 | padding: 0; | 94 | padding: 0; |
| 95 | margin: 0; | 95 | margin: 0; |
| 96 | list-style: none; | 96 | list-style: none; |
| 97 | } | 97 | } |
| 98 | 98 | ||
| 99 | li { | 99 | li { |
| 100 | padding: 0; | 100 | padding: 0; |
| 101 | margin: 0; | 101 | margin: 0; |
| 102 | } | 102 | } |
| 103 | 103 | ||
| 104 | :focus, | 104 | :focus, |
| @@ -108,28 +108,27 @@ | |||
| 108 | 108 | ||
| 109 | :link, | 109 | :link, |
| 110 | :visited { | 110 | :visited { |
| 111 | color: currentColor; | 111 | color: currentColor; |
| 112 | text-decoration: none; | 112 | text-decoration: none; |
| 113 | } | 113 | } |
| 114 | 114 | ||
| 115 | |||
| 116 | button, | 115 | button, |
| 117 | input, | 116 | input, |
| 118 | textarea { | 117 | textarea { |
| 119 | box-sizing: content-box; | 118 | box-sizing: content-box; |
| 120 | padding: 0; | 119 | padding: 0; |
| 121 | margin: 0; | 120 | margin: 0; |
| 122 | font-family: inherit; | 121 | font-family: inherit; |
| 123 | font-size: 1em; | 122 | font-size: 1em; |
| 124 | font-style: inherit; | 123 | font-style: inherit; |
| 125 | font-weight: inherit; | 124 | font-weight: inherit; |
| 126 | line-height: inherit; | 125 | line-height: inherit; |
| 127 | color: currentColor; | 126 | color: currentColor; |
| 128 | text-align: inherit; | 127 | text-align: inherit; |
| 129 | text-transform: inherit; | 128 | text-transform: inherit; |
| 130 | appearance: none; | 129 | appearance: none; |
| 131 | background: none; | 130 | background: none; |
| 132 | border: 0; | 131 | border: 0; |
| 133 | 132 | ||
| 134 | &::-moz-focus-inner { | 133 | &::-moz-focus-inner { |
| 135 | border: 0; | 134 | border: 0; |
| @@ -139,7 +138,7 @@ | |||
| 139 | input, | 138 | input, |
| 140 | textarea { | 139 | textarea { |
| 141 | &::placeholder { | 140 | &::placeholder { |
| 142 | color: props.get(core.$theme, --text-mute); | 141 | color: props.get(core.$theme, --text-mute); |
| 143 | opacity: 1; | 142 | opacity: 1; |
| 144 | } | 143 | } |
| 145 | 144 | ||
| @@ -153,15 +152,15 @@ | |||
| 153 | } | 152 | } |
| 154 | 153 | ||
| 155 | hr { | 154 | hr { |
| 156 | block-size: props.get(core.$border-width--thin); | 155 | block-size: props.get(core.$border-width--thin); |
| 157 | margin: 0; | 156 | margin: 0; |
| 158 | background-color: props.get(core.$theme, --border); | 157 | background-color: props.get(core.$theme, --border); |
| 159 | border: 0; | 158 | border: 0; |
| 160 | } | 159 | } |
| 161 | 160 | ||
| 162 | figure { | 161 | figure { |
| 163 | padding: 0; | 162 | padding: 0; |
| 164 | margin: 0; | 163 | margin: 0; |
| 165 | } | 164 | } |
| 166 | 165 | ||
| 167 | @each $theme in map.keys(props.get(core.$transparent-colors)) { | 166 | @each $theme in map.keys(props.get(core.$transparent-colors)) { |
diff --git a/src/scopes/_implicit.vars.scss b/src/scopes/_implicit.vars.scss index 64d4a8f..f0256b0 100644 --- a/src/scopes/_implicit.vars.scss +++ b/src/scopes/_implicit.vars.scss | |||
| @@ -1,26 +1,69 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | 3 | ||
| 4 | $paragraph--margin-bs: props.def(--s-implicit--paragraph--margin-bs, props.get(core.$size--200)) !default; | 4 | $paragraph--margin-bs: props.def( |
| 5 | --s-implicit--paragraph--margin-bs, | ||
| 6 | props.get(core.$size--200) | ||
| 7 | ) !default; | ||
| 5 | 8 | ||
| 6 | $small--font-size: props.def(--s-implicit--small--font-size, props.get(core.$font-size--75)) !default; | 9 | $small--font-size: props.def( |
| 10 | --s-implicit--small--font-size, | ||
| 11 | props.get(core.$font-size--75) | ||
| 12 | ) !default; | ||
| 7 | 13 | ||
| 8 | $body--font-family: props.def(--s-implicit--body--font-family, props.get(core.$font--standard--family)) !default; | 14 | $body--font-family: props.def( |
| 9 | $body--line-height: props.def(--s-implicit--body--line-height, props.get(core.$font--standard--line-height)) !default; | 15 | --s-implicit--body--font-family, |
| 10 | $body--font-size: props.def(--s-implicit--body--font-size, props.get(core.$font-size--100)); | 16 | props.get(core.$font--standard--family) |
| 11 | $body--feature-settings: props.def(--s-implicit--body--feature-settings, props.get(core.$font--standard--feature-settings)) !default; | 17 | ) !default; |
| 18 | $body--line-height: props.def( | ||
| 19 | --s-implicit--body--line-height, | ||
| 20 | props.get(core.$font--standard--line-height) | ||
| 21 | ) !default; | ||
| 22 | $body--font-size: props.def(--s-implicit--body--font-size, props.get(core.$font-size--100)); | ||
| 23 | $body--feature-settings: props.def( | ||
| 24 | --s-implicit--body--feature-settings, | ||
| 25 | props.get(core.$font--standard--feature-settings) | ||
| 26 | ) !default; | ||
| 12 | 27 | ||
| 13 | $code--font-family: props.def(--s-implicit--code--font-family, props.get(core.$font--mono--family)) !default; | 28 | $code--font-family: props.def( |
| 14 | $code--line-height: props.def(--s-implicit--code--line-height, props.get(core.$font--mono--line-height)) !default; | 29 | --s-implicit--code--font-family, |
| 15 | $code--font-size: props.def(--s-implicit--code--font-size, .93em); | 30 | props.get(core.$font--mono--family) |
| 16 | $code--feature-settings: props.def(--s-implicit--code--feature-settings, props.get(core.$font--mono--feature-settings)) !default; | 31 | ) !default; |
| 32 | $code--line-height: props.def( | ||
| 33 | --s-implicit--code--line-height, | ||
| 34 | props.get(core.$font--mono--line-height) | ||
| 35 | ) !default; | ||
| 36 | $code--font-size: props.def(--s-implicit--code--font-size, 0.93em); | ||
| 37 | $code--feature-settings: props.def( | ||
| 38 | --s-implicit--code--feature-settings, | ||
| 39 | props.get(core.$font--mono--feature-settings) | ||
| 40 | ) !default; | ||
| 17 | 41 | ||
| 18 | $heading--margin-bs: props.def(--s-implicit--heading--margin-bs, props.get(core.$size--700)) !default; | 42 | $heading--margin-bs: props.def( |
| 19 | $heading--margin-bs-sibling: props.def(--s-implicit--heading--margin-bs-sibling, props.get(core.$size--325)) !default; | 43 | --s-implicit--heading--margin-bs, |
| 20 | $heading--font-family: props.def(--s-implicit--heading--font-family, props.get(core.$font--standard--family)) !default; | 44 | props.get(core.$size--700) |
| 21 | $heading--line-height: props.def(--s-implicit--heading--line-height, props.get(core.$font--standard--line-height)) !default; | 45 | ) !default; |
| 22 | $heading--font-weight: props.def(--s-implicit--heading--font-weight, bold) !default; | 46 | $heading--margin-bs-sibling: props.def( |
| 23 | $heading--font-size: props.def(--s-implicit--heading--font-size, props.get(core.$font-size--100)); | 47 | --s-implicit--heading--margin-bs-sibling, |
| 24 | $heading--feature-settings: props.def(--s-implicit--heading--feature-settings, props.get(core.$font--standard--feature-settings)) !default; | 48 | props.get(core.$size--325) |
| 49 | ) !default; | ||
| 50 | $heading--font-family: props.def( | ||
| 51 | --s-implicit--heading--font-family, | ||
| 52 | props.get(core.$font--standard--family) | ||
| 53 | ) !default; | ||
| 54 | $heading--line-height: props.def( | ||
| 55 | --s-implicit--heading--line-height, | ||
| 56 | props.get(core.$font--standard--line-height) | ||
| 57 | ) !default; | ||
| 58 | $heading--font-weight: props.def(--s-implicit--heading--font-weight, bold) !default; | ||
| 59 | $heading--font-size: props.def(--s-implicit--heading--font-size, props.get(core.$font-size--100)); | ||
| 60 | $heading--feature-settings: props.def( | ||
| 61 | --s-implicit--heading--feature-settings, | ||
| 62 | props.get(core.$font--standard--feature-settings) | ||
| 63 | ) !default; | ||
| 25 | 64 | ||
| 26 | $heading--color: props.def(--s-implicit--heading--color, props.get(core.$theme, --heading), 'color') !default; | 65 | $heading--color: props.def( |
| 66 | --s-implicit--heading--color, | ||
| 67 | props.get(core.$theme, --heading), | ||
| 68 | "color" | ||
| 69 | ) !default; | ||
diff --git a/src/scopes/_links.scss b/src/scopes/_links.scss index 8498487..fea78f1 100644 --- a/src/scopes/_links.scss +++ b/src/scopes/_links.scss | |||
| @@ -1,78 +1,79 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:meta'; | 2 | @use "sass:meta"; |
| 3 | @use 'sass:string'; | 3 | @use "sass:string"; |
| 4 | @use 'pkg:iro-sass/src/bem'; | 4 | @use "pkg:iro-sass/bem"; |
| 5 | @use 'pkg:iro-sass/src/props'; | 5 | @use "pkg:iro-sass/props"; |
| 6 | @use '../props' as *; | 6 | @use "../props" as *; |
| 7 | 7 | ||
| 8 | @forward 'links.vars'; | 8 | @forward "links.vars"; |
| 9 | @use 'links.vars' as vars; | 9 | @use "links.vars" as vars; |
| 10 | 10 | ||
| 11 | @mixin styles { | 11 | @mixin styles { |
| 12 | @include materialize-at-root(meta.module-variables('vars')); | 12 | @include materialize-at-root(meta.module-variables("vars")); |
| 13 | 13 | ||
| 14 | @include bem.scope('links') { | 14 | @include bem.scope("links") { |
| 15 | :link, | 15 | :link, |
| 16 | :visited { | 16 | :visited { |
| 17 | color: currentColor; | 17 | color: currentColor; |
| 18 | text-decoration: underline; | 18 | text-decoration: underline; |
| 19 | text-decoration-thickness: props.get(vars.$underline-width); | 19 | text-decoration-thickness: props.get(vars.$underline-width); |
| 20 | text-decoration-color: props.get(vars.$underline-color); | 20 | text-decoration-color: props.get(vars.$underline-color); |
| 21 | border-radius: props.get(vars.$rounding-sm); | 21 | border-radius: props.get(vars.$rounding-sm); |
| 22 | box-decoration-break: clone; | 22 | box-decoration-break: clone; |
| 23 | 23 | ||
| 24 | &:hover { | 24 | &:hover { |
| 25 | text-decoration: underline; | 25 | text-decoration: underline; |
| 26 | text-decoration-thickness: props.get(vars.$hover--underline-width); | 26 | text-decoration-thickness: props.get(vars.$hover--underline-width); |
| 27 | text-decoration-skip-ink: none; | 27 | text-decoration-skip-ink: none; |
| 28 | } | 28 | } |
| 29 | 29 | ||
| 30 | &:focus-visible { | 30 | &:focus-visible { |
| 31 | color: props.get(vars.$key-focus--text-color); | 31 | color: props.get(vars.$key-focus--text-color); |
| 32 | text-decoration: none; | 32 | text-decoration: none; |
| 33 | outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); | 33 | outline: props.get(vars.$key-focus--border-color) solid |
| 34 | box-shadow: | 34 | props.get(vars.$key-focus--border-width); |
| 35 | 0 | 35 | box-shadow: 0 0 0 |
| 36 | 0 | 36 | calc( |
| 37 | 0 | 37 | props.get(vars.$key-focus--border-width) + |
| 38 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | 38 | props.get(vars.$key-focus--outline-width) |
| 39 | ) | ||
| 39 | props.get(vars.$key-focus--outline-color); | 40 | props.get(vars.$key-focus--outline-color); |
| 40 | } | 41 | } |
| 41 | } | 42 | } |
| 42 | 43 | ||
| 43 | @include bem.modifier('invisible') { | 44 | @include bem.modifier("invisible") { |
| 44 | :link, | 45 | :link, |
| 45 | :visited { | 46 | :visited { |
| 46 | text-decoration: none; | 47 | text-decoration: none; |
| 47 | } | 48 | } |
| 48 | } | 49 | } |
| 49 | 50 | ||
| 50 | @include bem.modifier('colored') { | 51 | @include bem.modifier("colored") { |
| 51 | :link { | 52 | :link { |
| 52 | color: props.get(vars.$colored--text-color); | 53 | color: props.get(vars.$colored--text-color); |
| 53 | text-decoration-color: props.get(vars.$colored--underline-color); | 54 | text-decoration-color: props.get(vars.$colored--underline-color); |
| 54 | 55 | ||
| 55 | &:hover { | 56 | &:hover { |
| 56 | color: props.get(vars.$colored--hover--text-color); | 57 | color: props.get(vars.$colored--hover--text-color); |
| 57 | } | 58 | } |
| 58 | } | 59 | } |
| 59 | 60 | ||
| 60 | :visited { | 61 | :visited { |
| 61 | color: props.get(vars.$colored--visited--text-color); | 62 | color: props.get(vars.$colored--visited--text-color); |
| 62 | text-decoration-color: props.get(vars.$colored--visited--underline-color); | 63 | text-decoration-color: props.get(vars.$colored--visited--underline-color); |
| 63 | 64 | ||
| 64 | &:hover { | 65 | &:hover { |
| 65 | color: props.get(vars.$colored--visited--hover--text-color); | 66 | color: props.get(vars.$colored--visited--hover--text-color); |
| 66 | } | 67 | } |
| 67 | } | 68 | } |
| 68 | } | 69 | } |
| 69 | 70 | ||
| 70 | @include bem.modifier('mark-external') { | 71 | @include bem.modifier("mark-external") { |
| 71 | :link, | 72 | :link, |
| 72 | :visited { | 73 | :visited { |
| 73 | &[href^='http'] { | 74 | &[href^="http"] { |
| 74 | &::after { | 75 | &::after { |
| 75 | content: ' ↗'; | 76 | content: " ↗"; |
| 76 | } | 77 | } |
| 77 | } | 78 | } |
| 78 | } | 79 | } |
| @@ -82,21 +83,30 @@ | |||
| 82 | @include bem.modifier(string.slice($theme, 3)) { | 83 | @include bem.modifier(string.slice($theme, 3)) { |
| 83 | :link, | 84 | :link, |
| 84 | :visited { | 85 | :visited { |
| 85 | color: props.get(vars.$static-themes, $theme, --text-color); | 86 | color: props.get(vars.$static-themes, $theme, --text-color); |
| 86 | text-decoration-color: props.get(vars.$static-themes, $theme, --underline-color); | 87 | text-decoration-color: props.get( |
| 88 | vars.$static-themes, | ||
| 89 | $theme, | ||
| 90 | --underline-color | ||
| 91 | ); | ||
| 87 | 92 | ||
| 88 | &:hover { | 93 | &:hover { |
| 89 | color: props.get(vars.$static-themes, $theme, --hover, --text-color); | 94 | color: props.get(vars.$static-themes, $theme, --hover, --text-color); |
| 90 | } | 95 | } |
| 91 | 96 | ||
| 92 | &:focus-visible { | 97 | &:focus-visible { |
| 93 | color: props.get(vars.$static-themes, $theme, --key-focus, --text-color); | 98 | color: props.get(vars.$static-themes, $theme, --key-focus, --text-color); |
| 94 | outline-color: props.get(vars.$static-themes, $theme, --key-focus, --border-color); | 99 | outline-color: props.get( |
| 95 | box-shadow: | 100 | vars.$static-themes, |
| 96 | 0 | 101 | $theme, |
| 97 | 0 | 102 | --key-focus, |
| 98 | 0 | 103 | --border-color |
| 99 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | 104 | ); |
| 105 | box-shadow: 0 0 0 | ||
| 106 | calc( | ||
| 107 | props.get(vars.$key-focus--border-width) + | ||
| 108 | props.get(vars.$key-focus--outline-width) | ||
| 109 | ) | ||
| 100 | props.get(vars.$static-themes, $theme, --key-focus, --outline-color); | 110 | props.get(vars.$static-themes, $theme, --key-focus, --outline-color); |
| 101 | } | 111 | } |
| 102 | } | 112 | } |
| @@ -106,21 +116,26 @@ | |||
| 106 | :has(img) { | 116 | :has(img) { |
| 107 | img { | 117 | img { |
| 108 | margin-inline: calc(-1 * props.get(vars.$key-focus--border-offset)); | 118 | margin-inline: calc(-1 * props.get(vars.$key-focus--border-offset)); |
| 109 | border: props.get(vars.$key-focus--border-offset) solid transparent; | 119 | border: props.get(vars.$key-focus--border-offset) solid transparent; |
| 110 | border-radius: calc(props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset)); | 120 | border-radius: calc( |
| 121 | props.get(vars.$rounding) + props.get(vars.$key-focus--border-offset) | ||
| 122 | ); | ||
| 111 | } | 123 | } |
| 112 | 124 | ||
| 113 | &:link, | 125 | &:link, |
| 114 | &:visited { | 126 | &:visited { |
| 115 | &:focus-visible { | 127 | &:focus-visible { |
| 116 | outline: none; | 128 | outline: none; |
| 117 | box-shadow: none; | 129 | box-shadow: none; |
| 118 | 130 | ||
| 119 | img { | 131 | img { |
| 120 | outline: props.get(vars.$key-focus--border-color) solid | 132 | outline: props.get(vars.$key-focus--border-color) solid |
| 121 | props.get(vars.$key-focus--border-width); | 133 | props.get(vars.$key-focus--border-width); |
| 122 | box-shadow: 0 0 0 | 134 | box-shadow: 0 0 0 |
| 123 | calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) | 135 | calc( |
| 136 | props.get(vars.$key-focus--border-width) + | ||
| 137 | props.get(vars.$key-focus--outline-width) | ||
| 138 | ) | ||
| 124 | props.get(vars.$key-focus--outline-color); | 139 | props.get(vars.$key-focus--outline-color); |
| 125 | } | 140 | } |
| 126 | } | 141 | } |
diff --git a/src/scopes/_links.vars.scss b/src/scopes/_links.vars.scss index cd80e4c..c06789b 100644 --- a/src/scopes/_links.vars.scss +++ b/src/scopes/_links.vars.scss | |||
| @@ -1,49 +1,106 @@ | |||
| 1 | @use 'sass:map'; | 1 | @use "sass:map"; |
| 2 | @use 'sass:string'; | 2 | @use "sass:string"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../core.vars' as core; | 4 | @use "../core.vars" as core; |
| 5 | 5 | ||
| 6 | $rounding: props.def(--s-links--rounding, props.get(core.$rounding)) !default; | 6 | $rounding: props.def(--s-links--rounding, props.get(core.$rounding)) !default; |
| 7 | $rounding-sm: props.def(--s-links--rounding-sm, props.get(core.$rounding--sm)) !default; | 7 | $rounding-sm: props.def(--s-links--rounding-sm, props.get(core.$rounding--sm)) !default; |
| 8 | $underline-width: props.def(--s-links--underline-width, props.get(core.$border-width--thin)) !default; | 8 | $underline-width: props.def( |
| 9 | $hover--underline-width: props.def(--s-links--hover--underline-width, props.get(core.$border-width--medium)) !default; | 9 | --s-links--underline-width, |
| 10 | props.get(core.$border-width--thin) | ||
| 11 | ) !default; | ||
| 12 | $hover--underline-width: props.def( | ||
| 13 | --s-links--hover--underline-width, | ||
| 14 | props.get(core.$border-width--medium) | ||
| 15 | ) !default; | ||
| 10 | 16 | ||
| 11 | $key-focus--border-width: props.def(--s-links--key-focus--border-width, props.get(core.$key-focus--border-width)) !default; | 17 | $key-focus--border-width: props.def( |
| 12 | $key-focus--border-offset: props.def(--s-links--key-focus--border-offset, props.get(core.$key-focus--border-offset)) !default; | 18 | --s-links--key-focus--border-width, |
| 13 | $key-focus--outline-width: props.def(--s-links--key-focus--outline-width, props.get(core.$key-focus--outline-width)) !default; | 19 | props.get(core.$key-focus--border-width) |
| 20 | ) !default; | ||
| 21 | $key-focus--border-offset: props.def( | ||
| 22 | --s-links--key-focus--border-offset, | ||
| 23 | props.get(core.$key-focus--border-offset) | ||
| 24 | ) !default; | ||
| 25 | $key-focus--outline-width: props.def( | ||
| 26 | --s-links--key-focus--outline-width, | ||
| 27 | props.get(core.$key-focus--outline-width) | ||
| 28 | ) !default; | ||
| 14 | 29 | ||
| 15 | $underline-color: props.def(--s-links--underline-color, props.get(core.$theme, --text-mute-more), 'color') !default; | 30 | $underline-color: props.def( |
| 31 | --s-links--underline-color, | ||
| 32 | props.get(core.$theme, --text-mute-more), | ||
| 33 | "color" | ||
| 34 | ) !default; | ||
| 16 | 35 | ||
| 17 | $colored--text-color: props.def(--s-links--colored--text-color, props.get(core.$theme, --accent, --1100), 'color') !default; | 36 | $colored--text-color: props.def( |
| 18 | $colored--underline-color: props.def(--s-links--colored--underline-color, props.get(core.$theme, --accent, --600), 'color') !default; | 37 | --s-links--colored--text-color, |
| 19 | $colored--hover--text-color: props.def(--s-links--colored--hover--text-color, props.get(core.$theme, --accent, --1300), 'color') !default; | 38 | props.get(core.$theme, --accent, --1100), |
| 39 | "color" | ||
| 40 | ) !default; | ||
| 41 | $colored--underline-color: props.def( | ||
| 42 | --s-links--colored--underline-color, | ||
| 43 | props.get(core.$theme, --accent, --600), | ||
| 44 | "color" | ||
| 45 | ) !default; | ||
| 46 | $colored--hover--text-color: props.def( | ||
| 47 | --s-links--colored--hover--text-color, | ||
| 48 | props.get(core.$theme, --accent, --1300), | ||
| 49 | "color" | ||
| 50 | ) !default; | ||
| 20 | 51 | ||
| 21 | $colored--visited--text-color: props.def(--s-links--colored--visited--text-color, props.get(core.$theme, --purple, --1100), 'color') !default; | 52 | $colored--visited--text-color: props.def( |
| 22 | $colored--visited--underline-color: props.def(--s-links--colored--visited--underline-color, props.get(core.$theme, --purple, --600), 'color') !default; | 53 | --s-links--colored--visited--text-color, |
| 23 | $colored--visited--hover--text-color: props.def(--s-links--colored--visited--hover--text-color, props.get(core.$theme, --purple, --1300), 'color') !default; | 54 | props.get(core.$theme, --purple, --1100), |
| 55 | "color" | ||
| 56 | ) !default; | ||
| 57 | $colored--visited--underline-color: props.def( | ||
| 58 | --s-links--colored--visited--underline-color, | ||
| 59 | props.get(core.$theme, --purple, --600), | ||
| 60 | "color" | ||
| 61 | ) !default; | ||
| 62 | $colored--visited--hover--text-color: props.def( | ||
| 63 | --s-links--colored--visited--hover--text-color, | ||
| 64 | props.get(core.$theme, --purple, --1300), | ||
| 65 | "color" | ||
| 66 | ) !default; | ||
| 24 | 67 | ||
| 25 | $key-focus--text-color: props.def(--s-links--key-focus--text-color, props.get(core.$theme, --focus, --text), 'color') !default; | 68 | $key-focus--text-color: props.def( |
| 26 | $key-focus--border-color: props.def(--s-links--key-focus--border-color, props.get(core.$theme, --focus, --border), 'color') !default; | 69 | --s-links--key-focus--text-color, |
| 27 | $key-focus--outline-color: props.def(--s-links--key-focus--outline-color, props.get(core.$theme, --focus, --outline), 'color') !default; | 70 | props.get(core.$theme, --focus, --text), |
| 71 | "color" | ||
| 72 | ) !default; | ||
| 73 | $key-focus--border-color: props.def( | ||
| 74 | --s-links--key-focus--border-color, | ||
| 75 | props.get(core.$theme, --focus, --border), | ||
| 76 | "color" | ||
| 77 | ) !default; | ||
| 78 | $key-focus--outline-color: props.def( | ||
| 79 | --s-links--key-focus--outline-color, | ||
| 80 | props.get(core.$theme, --focus, --outline), | ||
| 81 | "color" | ||
| 82 | ) !default; | ||
| 28 | 83 | ||
| 29 | $static-themes: props.def(--s-links, (), 'color'); | 84 | $static-themes: props.def(--s-links, (), "color"); |
| 30 | @each $theme in map.keys(props.get(core.$transparent-colors)) { | 85 | @each $theme in map.keys(props.get(core.$transparent-colors)) { |
| 31 | $link-theme: --static-#{string.slice($theme, 3)}; | 86 | $link-theme: --static-#{string.slice($theme, 3)}; |
| 32 | 87 | ||
| 33 | $static-themes: props.merge($static-themes, ( | 88 | $static-themes: props.merge( |
| 34 | $link-theme: ( | 89 | $static-themes, |
| 35 | --text-color: currentColor, | 90 | ( |
| 36 | --underline-color: props.get(core.$transparent-colors, $theme, --500), | 91 | $link-theme: ( |
| 92 | --text-color: currentColor, | ||
| 93 | --underline-color: props.get(core.$transparent-colors, $theme, --500), | ||
| 94 | --hover: ( | ||
| 95 | --text-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 96 | ), | ||
| 37 | 97 | ||
| 38 | --hover: ( | 98 | --key-focus: ( |
| 39 | --text-color: props.get(core.$transparent-colors, $theme, --900), | 99 | --text-color: props.get(core.$transparent-colors, $theme, --900), |
| 40 | ), | 100 | --border-color: props.get(core.$transparent-colors, $theme, --900), |
| 41 | 101 | --outline-color: props.get(core.$transparent-colors, $theme, --300), | |
| 42 | --key-focus: ( | 102 | ), |
| 43 | --text-color: props.get(core.$transparent-colors, $theme, --900), | 103 | ), |
| 44 | --border-color: props.get(core.$transparent-colors, $theme, --900), | ||
| 45 | --outline-color: props.get(core.$transparent-colors, $theme, --300), | ||
| 46 | ), | ||
| 47 | ) | 104 | ) |
| 48 | )); | 105 | ); |
| 49 | } | 106 | } |
diff --git a/src/scopes/_lists.scss b/src/scopes/_lists.scss index 0285bb0..7b9ddbc 100644 --- a/src/scopes/_lists.scss +++ b/src/scopes/_lists.scss | |||
| @@ -1,20 +1,20 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | @use '../core.vars' as core; | 5 | @use "../core.vars" as core; |
| 6 | 6 | ||
| 7 | @forward 'lists.vars'; | 7 | @forward "lists.vars"; |
| 8 | @use 'lists.vars' as vars; | 8 | @use "lists.vars" as vars; |
| 9 | 9 | ||
| 10 | @mixin styles { | 10 | @mixin styles { |
| 11 | @include materialize-at-root(meta.module-variables('vars')); | 11 | @include materialize-at-root(meta.module-variables("vars")); |
| 12 | 12 | ||
| 13 | @include bem.scope('lists') { | 13 | @include bem.scope("lists") { |
| 14 | ul, | 14 | ul, |
| 15 | ol { | 15 | ol { |
| 16 | padding-inline-start: props.get(vars.$indent); | 16 | padding-inline-start: props.get(vars.$indent); |
| 17 | margin-block-start: props.get(vars.$margin-bs); | 17 | margin-block-start: props.get(vars.$margin-bs); |
| 18 | 18 | ||
| 19 | ul, | 19 | ul, |
| 20 | ol { | 20 | ol { |
| @@ -31,22 +31,22 @@ | |||
| 31 | } | 31 | } |
| 32 | 32 | ||
| 33 | dl { | 33 | dl { |
| 34 | padding: 0; | 34 | padding: 0; |
| 35 | margin-block: props.get(vars.$margin-bs) 0; | 35 | margin-block: props.get(vars.$margin-bs) 0; |
| 36 | margin-inline: 0; | 36 | margin-inline: 0; |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | dt { | 39 | dt { |
| 40 | font-weight: bold; | 40 | font-weight: bold; |
| 41 | color: props.get(core.$theme, --heading); | 41 | color: props.get(core.$theme, --heading); |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | dd { | 44 | dd { |
| 45 | margin-block: 0; | 45 | margin-block: 0; |
| 46 | margin-inline: props.get(vars.$indent) 0; | 46 | margin-inline: props.get(vars.$indent) 0; |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | @include bem.modifier('compact') { | 49 | @include bem.modifier("compact") { |
| 50 | ul, | 50 | ul, |
| 51 | ol { | 51 | ol { |
| 52 | padding-inline-start: calc(props.get(vars.$compact--indent) - 3px); | 52 | padding-inline-start: calc(props.get(vars.$compact--indent) - 3px); |
diff --git a/src/scopes/_lists.vars.scss b/src/scopes/_lists.vars.scss index e40f194..57fcc54 100644 --- a/src/scopes/_lists.vars.scss +++ b/src/scopes/_lists.vars.scss | |||
| @@ -1,8 +1,11 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use '../core.vars' as core; | 2 | @use "../core.vars" as core; |
| 3 | @use './implicit.vars' as implicit; | 3 | @use "./implicit.vars" as implicit; |
| 4 | 4 | ||
| 5 | $indent: props.def(--s-lists--indent, calc(props.get(core.$list--indent) + 1em)) !default; | 5 | $indent: props.def(--s-lists--indent, calc(props.get(core.$list--indent) + 1em)) !default; |
| 6 | $margin-bs: props.def(--s-lists--margin-bs, props.get(implicit.$paragraph--margin-bs)) !default; | 6 | $margin-bs: props.def(--s-lists--margin-bs, props.get(implicit.$paragraph--margin-bs)) !default; |
| 7 | 7 | ||
| 8 | $compact--indent: props.def(--s-lists--compact--indent, props.get(core.$list--compact-indent)) !default; | 8 | $compact--indent: props.def( |
| 9 | --s-lists--compact--indent, | ||
| 10 | props.get(core.$list--compact-indent) | ||
| 11 | ) !default; | ||
diff --git a/src/scopes/_tables.scss b/src/scopes/_tables.scss index cb3a10c..7442874 100644 --- a/src/scopes/_tables.scss +++ b/src/scopes/_tables.scss | |||
| @@ -1,40 +1,40 @@ | |||
| 1 | @use 'sass:meta'; | 1 | @use "sass:meta"; |
| 2 | @use 'pkg:iro-sass/src/bem'; | 2 | @use "pkg:iro-sass/bem"; |
| 3 | @use 'pkg:iro-sass/src/props'; | 3 | @use "pkg:iro-sass/props"; |
| 4 | @use '../props' as *; | 4 | @use "../props" as *; |
| 5 | @use '../objects/table.vars' as table; | 5 | @use "../objects/table.vars" as table; |
| 6 | 6 | ||
| 7 | @forward 'tables.vars'; | 7 | @forward "tables.vars"; |
| 8 | @use 'tables.vars' as vars; | 8 | @use "tables.vars" as vars; |
| 9 | 9 | ||
| 10 | @mixin styles { | 10 | @mixin styles { |
| 11 | @include materialize-at-root(meta.module-variables('vars')); | 11 | @include materialize-at-root(meta.module-variables("vars")); |
| 12 | 12 | ||
| 13 | @include bem.scope('tables') { | 13 | @include bem.scope("tables") { |
| 14 | table { | 14 | table { |
| 15 | margin-block-start: props.get(vars.$margin-bs); | 15 | margin-block-start: props.get(vars.$margin-bs); |
| 16 | border-spacing: 0; | 16 | border-spacing: 0; |
| 17 | border-collapse: separate; | 17 | border-collapse: separate; |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | th { | 20 | th { |
| 21 | padding-block: props.get(table.$pad-b); | 21 | padding-block: props.get(table.$pad-b); |
| 22 | padding-inline: props.get(table.$pad-i); | 22 | padding-inline: props.get(table.$pad-i); |
| 23 | font-family: props.get(table.$heading--font-family); | 23 | font-family: props.get(table.$heading--font-family); |
| 24 | font-size: props.get(table.$heading--font-size); | 24 | font-size: props.get(table.$heading--font-size); |
| 25 | font-weight: props.get(table.$heading--font-weight); | 25 | font-weight: props.get(table.$heading--font-weight); |
| 26 | color: props.get(table.$heading-color); | 26 | color: props.get(table.$heading-color); |
| 27 | text-align: start; | 27 | text-align: start; |
| 28 | text-transform: props.get(table.$heading--text-transform); | 28 | text-transform: props.get(table.$heading--text-transform); |
| 29 | letter-spacing: props.get(table.$heading--letter-spacing); | 29 | letter-spacing: props.get(table.$heading--letter-spacing); |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | td { | 32 | td { |
| 33 | padding-block: props.get(table.$pad-b); | 33 | padding-block: props.get(table.$pad-b); |
| 34 | padding-inline: props.get(table.$pad-i); | 34 | padding-inline: props.get(table.$pad-i); |
| 35 | border-color: props.get(table.$border-color); | 35 | border-color: props.get(table.$border-color); |
| 36 | border-style: solid; | 36 | border-style: solid; |
| 37 | border-width: 0; | 37 | border-width: 0; |
| 38 | border-block-start-width: props.get(table.$border-width); | 38 | border-block-start-width: props.get(table.$border-width); |
| 39 | } | 39 | } |
| 40 | 40 | ||
| @@ -46,7 +46,7 @@ | |||
| 46 | } | 46 | } |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | @include bem.modifier('flush') { | 49 | @include bem.modifier("flush") { |
| 50 | th, | 50 | th, |
| 51 | td { | 51 | td { |
| 52 | &:first-child { | 52 | &:first-child { |
| @@ -59,7 +59,7 @@ | |||
| 59 | } | 59 | } |
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | @include bem.modifier('box') { | 62 | @include bem.modifier("box") { |
| 63 | td { | 63 | td { |
| 64 | background-color: props.get(table.$box--bg-color); | 64 | background-color: props.get(table.$box--bg-color); |
| 65 | 65 | ||
diff --git a/src/scopes/_tables.vars.scss b/src/scopes/_tables.vars.scss index dfb4c76..12d0a0c 100644 --- a/src/scopes/_tables.vars.scss +++ b/src/scopes/_tables.vars.scss | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | @use 'pkg:iro-sass/src/props'; | 1 | @use "pkg:iro-sass/props"; |
| 2 | @use 'implicit.vars' as implicit; | 2 | @use "implicit.vars" as implicit; |
| 3 | 3 | ||
| 4 | $margin-bs: props.def(--s-tables--margin-bs, props.get(implicit.$paragraph--margin-bs)) !default; | 4 | $margin-bs: props.def(--s-tables--margin-bs, props.get(implicit.$paragraph--margin-bs)) !default; |
diff --git a/src_demo/components/_box.scss b/src_demo/components/_box.scss index 20e3bcd..2a88480 100644 --- a/src_demo/components/_box.scss +++ b/src_demo/components/_box.scss | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | @use 'pkg:iro-sass/src/bem'; | 1 | @use "pkg:iro-sass/bem"; |
| 2 | @use 'pkg:iro-sass/src/props'; | 2 | @use "pkg:iro-sass/props"; |
| 3 | @use '../../src/core.vars'; | 3 | @use "../../src/core.vars"; |
| 4 | 4 | ||
| 5 | @include bem.component('box') { | 5 | @include bem.component("box") { |
| 6 | padding: 2em; | 6 | padding: 2em; |
| 7 | margin-block: 2em; | 7 | margin-block: 2em; |
| 8 | border: 1px solid props.get(core.$theme, --border); | 8 | border: 1px solid props.get(core.$theme, --border); |
| 9 | } | 9 | } |
diff --git a/src_demo/components/_content.scss b/src_demo/components/_content.scss index acfccbe..acd32a5 100644 --- a/src_demo/components/_content.scss +++ b/src_demo/components/_content.scss | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | @use 'pkg:iro-sass/src/bem'; | 1 | @use "pkg:iro-sass/bem"; |
| 2 | 2 | ||
| 3 | @include bem.component('content') { | 3 | @include bem.component("content") { |
| 4 | grid-area: content; | 4 | grid-area: content; |
| 5 | overflow: auto; | 5 | overflow: auto; |
| 6 | } | 6 | } |
diff --git a/src_demo/components/_sidebar.scss b/src_demo/components/_sidebar.scss index 7643d07..4542847 100644 --- a/src_demo/components/_sidebar.scss +++ b/src_demo/components/_sidebar.scss | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | @use 'pkg:iro-sass/src/bem'; | 1 | @use "pkg:iro-sass/bem"; |
| 2 | 2 | ||
| 3 | @include bem.component('sidebar') { | 3 | @include bem.component("sidebar") { |
| 4 | grid-area: sidebar; | 4 | grid-area: sidebar; |
| 5 | min-inline-size: 15em; | 5 | min-inline-size: 15em; |
| 6 | min-block-size: 0; | 6 | min-block-size: 0; |
| 7 | } | 7 | } |
diff --git a/src_demo/components/_view.scss b/src_demo/components/_view.scss index 8d80995..7471cdb 100644 --- a/src_demo/components/_view.scss +++ b/src_demo/components/_view.scss | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | @use 'pkg:iro-sass/src/bem'; | 1 | @use "pkg:iro-sass/bem"; |
| 2 | 2 | ||
| 3 | @include bem.component('view') { | 3 | @include bem.component("view") { |
| 4 | display: none; | 4 | display: none; |
| 5 | 5 | ||
| 6 | &:target { | 6 | &:target { |
| 7 | display: block; | 7 | display: block; |
| 8 | } | 8 | } |
| 9 | } | 9 | } |
