beercss 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +14 -6
  2. package/dist/cdn/beer.min.css +1 -1
  3. package/dist/cdn/beer.min.js +1 -1
  4. package/package.json +1 -1
  5. package/src/cdn/beer.css +18 -17
  6. package/src/cdn/beer.ts +398 -0
  7. package/src/cdn/elements/badges.css +5 -15
  8. package/src/cdn/elements/buttons.css +18 -87
  9. package/src/cdn/elements/cards.css +5 -32
  10. package/src/cdn/elements/chips.css +9 -31
  11. package/src/cdn/elements/containers.css +20 -22
  12. package/src/cdn/elements/dropdowns.css +18 -41
  13. package/src/cdn/elements/expansions.css +0 -15
  14. package/src/cdn/elements/fields.css +41 -56
  15. package/src/cdn/elements/grids.css +170 -0
  16. package/src/cdn/elements/icons.css +18 -18
  17. package/src/cdn/elements/layouts.css +31 -23
  18. package/src/cdn/elements/loaders.css +21 -28
  19. package/src/cdn/elements/media.css +82 -106
  20. package/src/cdn/elements/modals.css +30 -54
  21. package/src/cdn/elements/navigations.css +74 -72
  22. package/src/cdn/elements/overlays.css +0 -1
  23. package/src/cdn/elements/progress.css +4 -3
  24. package/src/cdn/elements/selections.css +46 -59
  25. package/src/cdn/elements/tables.css +2 -19
  26. package/src/cdn/elements/tabs.css +8 -10
  27. package/src/cdn/elements/toasts.css +4 -9
  28. package/src/cdn/elements/tooltips.css +0 -42
  29. package/src/cdn/helpers/alignments.css +12 -28
  30. package/src/cdn/helpers/dividers.css +6 -20
  31. package/src/cdn/helpers/elevates.css +16 -0
  32. package/src/cdn/helpers/forms.css +33 -62
  33. package/src/cdn/helpers/margins.css +4 -0
  34. package/src/cdn/helpers/paddings.css +5 -1
  35. package/src/cdn/helpers/positions.css +2 -2
  36. package/src/cdn/helpers/reset.css +4 -3
  37. package/src/cdn/helpers/responsive.css +3 -18
  38. package/src/cdn/helpers/scrolls.css +1 -1
  39. package/src/cdn/helpers/shadows.css +4 -25
  40. package/src/cdn/helpers/sizes.css +4 -6
  41. package/src/cdn/helpers/spaces.css +8 -7
  42. package/src/cdn/helpers/theme.css +7 -0
  43. package/src/cdn/helpers/typography.css +13 -9
  44. package/src/cdn/helpers/waves.css +5 -3
  45. package/src/cdn/settings/dark.css +4 -3
  46. package/src/cdn/settings/light.css +4 -3
  47. package/src/cdn/settings/urls.css +1 -1
  48. package/src/cdn/beer.js +0 -409
  49. package/src/cdn/elements/rows.css +0 -251
@@ -0,0 +1,398 @@
1
+ (() => {
2
+ if (window["ui"]) return;
3
+
4
+ interface ILastTheme {
5
+ dark:string,
6
+ light:string
7
+ }
8
+
9
+ let _timeoutToast:NodeJS.Timeout = null;
10
+ let _timeoutMutation:NodeJS.Timeout = null;
11
+ let _mutation:MutationObserver = null;
12
+ let _lastTheme:ILastTheme = {
13
+ light: "",
14
+ dark: ""
15
+ }
16
+
17
+ const guid = ():string => {
18
+ return "fxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c:string) => {
19
+ let r = (Math.random() * 16) | 0,
20
+ v = c == "x" ? r : (r & 0x3) | 0x8;
21
+ return v.toString(16);
22
+ });
23
+ }
24
+
25
+ const query = (selector:string|Element, element?:Element):Element => {
26
+ try {
27
+ return typeof selector == "string"
28
+ ? (element || document).querySelector(selector)
29
+ : selector;
30
+ } catch {}
31
+ }
32
+
33
+ const queryAll = (selector:string|NodeListOf<Element>, element?:Element) => {
34
+ try {
35
+ return typeof selector == "string"
36
+ ? (element || document).querySelectorAll(selector)
37
+ : selector;
38
+ } catch {}
39
+ }
40
+
41
+ const hasClass = (element:Element, name:string):boolean => {
42
+ if (!element) return false;
43
+ return element.classList.contains(name);
44
+ }
45
+
46
+ const addClass = (element:Element, name:string) => {
47
+ if (!element) return;
48
+ element.classList.add(name);
49
+ }
50
+
51
+ const removeClass = (element:Element, name:string) => {
52
+ if (!element) return;
53
+ element.classList.remove(name);
54
+ }
55
+
56
+ const on = (element:Element, name:string, callback:any) => {
57
+ element.addEventListener(name, callback, true);
58
+ }
59
+
60
+ const off = (element:Element, name:string, callback:any) => {
61
+ element.removeEventListener(name, callback, true);
62
+ }
63
+
64
+ const insertBefore = (newElement:Element, element:Element):Element => {
65
+ if (!element) return;
66
+ return element.parentNode.insertBefore(newElement, element);
67
+ }
68
+
69
+ const prev = (element:Element):Element => {
70
+ if (!element) return;
71
+ return element.previousElementSibling;
72
+ }
73
+
74
+ const next = (element:Element):Element => {
75
+ if (!element) return;
76
+ return element.nextElementSibling;
77
+ }
78
+
79
+ const parent = (element:Element):Element => {
80
+ if (!element) return;
81
+ return element.parentElement;
82
+ }
83
+
84
+ const create = (json:any) => {
85
+ let element = document.createElement("div");
86
+
87
+ for (let i in json)
88
+ element[i] = json[i];
89
+
90
+ return element;
91
+ }
92
+
93
+ const updateInput = (target:Element) => {
94
+ let input = target as HTMLInputElement;
95
+ let parentTarget = parent(target);
96
+ let label = query("label", parentTarget) as HTMLLabelElement;
97
+ let isBorder = hasClass(parentTarget, "border") && !hasClass(parentTarget, "fill");
98
+ let toActive = document.activeElement == target || input.value || /date|time/.test(input.type);
99
+
100
+ if (toActive) {
101
+ if (isBorder && label) {
102
+ let width = hasClass(label, "active") ? label.offsetWidth : Math.round(label.offsetWidth / 1.33);
103
+ let start = hasClass(parentTarget, "round") ? 20 : 12;
104
+ let end = width + start + 8;
105
+ input.style.clipPath = `polygon(0% 0%, ${start}rem 0%, ${start}rem 8rem, ${end}rem 8rem, ${end}rem 0%, 100% 0%, 100% 100%, 0% 100%)`;
106
+ } else
107
+ input.style.clipPath = "";
108
+ addClass(label, "active");
109
+ } else {
110
+ removeClass(label, "active");
111
+ input.style.clipPath = "";
112
+ }
113
+
114
+ if (target.getAttribute("data-ui")) open(target);
115
+ }
116
+
117
+ const onClickElement = (e:Event) => {
118
+ let target = e.currentTarget as HTMLElement;
119
+ if (/input/i.test(target.tagName)) return;
120
+ open(target);
121
+ }
122
+
123
+ const onClickLabel = (e:Event) => {
124
+ let target = e.currentTarget as Element;
125
+ let input = query('input:not([type=file]):not([type=checkbox]):not([type=radio]), select, textarea', parent(target)) as HTMLElement;
126
+ if (input) input.focus();
127
+ }
128
+
129
+ const onFocusInput = (e:Event) => {
130
+ let target = e.currentTarget as Element;
131
+ updateInput(target);
132
+ }
133
+
134
+ const onBlurInput = (e:Event) => {
135
+ let target = e.currentTarget as Element;
136
+ updateInput(target);
137
+ }
138
+
139
+ const onClickDocument = (e:Event) => {
140
+ let target = e.currentTarget as Element;
141
+ let dropdowns = queryAll(".dropdown.active");
142
+ dropdowns.forEach((x:Element) => removeClass(x, "active"));
143
+
144
+ off(target, "click", onClickDocument);
145
+ }
146
+
147
+ const onClickToast = (e:Event) => {
148
+ let target = e.currentTarget as Element;
149
+ removeClass(target, "active");
150
+
151
+ if (_timeoutToast) clearTimeout(_timeoutToast);
152
+ }
153
+
154
+ const onChangeFile = (e:Event) => {
155
+ let target = e.currentTarget as HTMLInputElement;
156
+ updateFile(target);
157
+ }
158
+
159
+ const onKeydownFile = (e:KeyboardEvent) => {
160
+ let target = e.currentTarget as HTMLInputElement;
161
+ updateFile(target, e);
162
+ }
163
+
164
+ const onMutation = () => {
165
+ if (_timeoutMutation) clearTimeout(_timeoutMutation);
166
+ _timeoutMutation = setTimeout(ui, 180);
167
+ }
168
+
169
+ const updateFile = (target:Element, e?:KeyboardEvent) => {
170
+ if (e) {
171
+ if (e.key !== "Enter") return;
172
+
173
+ let target = e.currentTarget as Element;
174
+ let nextTarget = next(target) as HTMLInputElement;
175
+ if (!nextTarget || !/file/i.test(nextTarget.type)) return;
176
+ return nextTarget.click();
177
+ }
178
+
179
+ let currentTarget = target as HTMLInputElement;
180
+ let previousTarget = prev(target) as HTMLInputElement;
181
+ if (!previousTarget || !/text/i.test(previousTarget.type)) return;
182
+ previousTarget.value = Array.from(currentTarget.files).map((x) => x.name).join(", ");
183
+ previousTarget.readOnly = true;
184
+ previousTarget.addEventListener("keydown", onKeydownFile);
185
+ updateInput(previousTarget);
186
+ }
187
+
188
+ const open = (from?:Element, to?:Element, config?:any) => {
189
+ if (!to) to = query(from.getAttribute("data-ui"))
190
+ if (hasClass(to, "modal")) return modal(from, to);
191
+ if (hasClass(to, "dropdown")) return dropdown(from, to);
192
+ if (hasClass(to, "toast")) return toast(from, to, config);
193
+ if (hasClass(to, "page")) return page(from, to);
194
+ if (hasClass(to, "progress")) return progress(to, config);
195
+
196
+ tab(from);
197
+
198
+ if (hasClass(to, "active")) return removeClass(to, "active");
199
+
200
+ addClass(to, "active");
201
+ }
202
+
203
+ const tab = (from:Element) => {
204
+ let container = parent(from);
205
+ if (!hasClass(container, "tabs")) return;
206
+
207
+ let tabs = queryAll("a", container);
208
+ tabs.forEach((x:Element) => removeClass(x, "active"));
209
+
210
+ addClass(from, "active");
211
+ }
212
+
213
+ const page = (from:Element, to:Element,) => {
214
+ tab(from);
215
+
216
+ let container = parent(to);
217
+ for (let i = 0; i < container.children.length; i++)
218
+ if (hasClass(container.children[i], "page")) removeClass(container.children[i], "active");
219
+
220
+ addClass(to, "active");
221
+ }
222
+
223
+ const dropdown = (from:Element, to:Element) => {
224
+ tab(from);
225
+
226
+ if (hasClass(to, "active")) return removeClass(to, "active");
227
+
228
+ let dropdowns = queryAll(".dropdown.active");
229
+ dropdowns.forEach((x:Element) => removeClass(x, "active"));
230
+
231
+ addClass(to, "active");
232
+ on(document.body, "click", onClickDocument);
233
+ }
234
+
235
+ const modal = (from:Element, to:Element) => {
236
+ tab(from);
237
+
238
+ let overlay = prev(to) as HTMLElement;
239
+ if (!hasClass(overlay, "overlay")) {
240
+ overlay = create({ className: "overlay active" });
241
+ insertBefore(overlay, to);
242
+ }
243
+
244
+ overlay.onclick = () => {
245
+ removeClass(from, "active");
246
+ removeClass(to, "active");
247
+ removeClass(overlay, "active");
248
+ }
249
+
250
+ let isActive = hasClass(to, "active");
251
+ let container = parent(to);
252
+ if (/nav/i.test(container.tagName)) {
253
+ let elements = queryAll(".modal, a, .overlay", container);
254
+ elements.forEach((x:Element) => removeClass(x, "active"));
255
+ }
256
+
257
+ if (isActive) {
258
+ removeClass(from, "active");
259
+ removeClass(overlay, "active");
260
+ removeClass(to, "active");
261
+ } else {
262
+ if (!/button/i.test(from.tagName) && !hasClass(from, "button") && !hasClass(from, "chip")) addClass(from, "active");
263
+ addClass(overlay, "active");
264
+ addClass(to, "active");
265
+ }
266
+ }
267
+
268
+ const toast = (from:Element, to:Element, config:any) => {
269
+ tab(from);
270
+
271
+ let elements = queryAll(".toast.active");
272
+ elements.forEach((x:Element) => removeClass(x, "active"));
273
+ addClass(to, "active");
274
+ on(to, "click", onClickToast);
275
+
276
+ if (_timeoutToast) clearTimeout(_timeoutToast);
277
+
278
+ if (config && config == -1) return;
279
+
280
+ _timeoutToast = setTimeout(() => {
281
+ removeClass(to, "active");
282
+ }, config && config ? config : 6000);
283
+ }
284
+
285
+ const progress = (to:Element, config:any) => {
286
+ let element = to as HTMLElement;
287
+
288
+ if (hasClass(element, "left")) return element.style.clipPath = `polygon(0% 0%, 0% 100%, ${config}% 100%, ${config}% 0%)`;
289
+
290
+ if (hasClass(element, "top")) return element.style.clipPath = `polygon(0% 0%, 100% 0%, 100% ${config}%, 0% ${config}%)`;
291
+
292
+ if (hasClass(element, "right")) return element.style.clipPath = `polygon(100% 0%, 100% 100%, ${100 - config}% 100%, ${100 - config}% 0%)`;
293
+
294
+ if (hasClass(element, "bottom")) return element.style.clipPath = `polygon(0% 100%, 100% 100%, 100% ${100 - config}%, 0% ${100 - config}%)`;
295
+ }
296
+
297
+ const lastTheme = ():ILastTheme => {
298
+ if (_lastTheme.light && _lastTheme.dark) return _lastTheme;
299
+
300
+ let light = document.createElement("body");
301
+ light.className = "light";
302
+ document.body.appendChild(light);
303
+
304
+ let dark = document.createElement("body");
305
+ dark.className = "dark";
306
+ document.body.appendChild(dark);
307
+
308
+ let fromLight = getComputedStyle(light);
309
+ let fromDark = getComputedStyle(dark);
310
+ let variables = ['--primary', '--on-primary', '--primary-container', '--on-primary-container', '--secondary', '--on-secondary', '--secondary-container', '--on-secondary-container', '--tertiary', '--on-tertiary', '--tertiary-container', '--on-tertiary-container', '--error', '--on-error', '--error-container', '--on-error-container', '--background', '--on-background', '--surface', '--on-surface', '--outline', '--surface-variant', '--on-surface-variant', '--inverse-surface', '--inverse-on-surface'];
311
+ for(let i=0; i<variables.length; i++) {
312
+ _lastTheme.light += variables[i] + ":" + fromLight.getPropertyValue(variables[i]) + ";";
313
+ _lastTheme.dark += variables[i] + ":" + fromDark.getPropertyValue(variables[i]) + ";";
314
+ }
315
+
316
+ document.body.removeChild(light);
317
+ document.body.removeChild(dark);
318
+ return _lastTheme;
319
+ }
320
+
321
+ const theme = (source:any):ILastTheme => {
322
+ if (!source || !window["materialDynamicColors"]) return lastTheme();
323
+
324
+ let mode = /dark/i.test(document.body.className) ? "dark" : "light";
325
+ if (source && source.light && source.dark) {
326
+ _lastTheme.light = source.light;
327
+ _lastTheme.dark = source.dark;
328
+ document.body.setAttribute("style", source[mode]);
329
+ return source;
330
+ }
331
+
332
+ return window["materialDynamicColors"](source).then((theme) => {
333
+ const toCss = (data) => {
334
+ let style = "";
335
+ for (let i in data) {
336
+ let kebabCase = i.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();
337
+ style += "--"+kebabCase+":"+data[i]+";";
338
+ }
339
+ return style;
340
+ }
341
+
342
+ _lastTheme.light = toCss(theme.light);
343
+ _lastTheme.dark = toCss(theme.dark);
344
+ document.body.setAttribute("style", _lastTheme[mode]);
345
+ return _lastTheme;
346
+ });
347
+ }
348
+
349
+ const mode = (value:string):string => {
350
+ if (!value) return /dark/i.test(document.body.className) ? "dark" : "light";
351
+ document.body.classList.remove("light", "dark");
352
+ document.body.classList.add(value);
353
+ if (window["materialDynamicColors"]) document.body.setAttribute("style", _lastTheme[value]);
354
+ return value;
355
+ }
356
+
357
+ const setup = () => {
358
+ if (_mutation) return;
359
+ _mutation = new MutationObserver(onMutation);
360
+ _mutation.observe(document.body, { childList: true, subtree: true });
361
+ ui();
362
+ }
363
+
364
+ const ui = (selector?:string, config?:any) => {
365
+ if (selector) {
366
+ if (selector == "setup") return setup();
367
+ if (selector == "guid") return guid();
368
+ if (selector == "mode") return mode(config);
369
+ if (selector == "theme") return theme(config);
370
+
371
+ let to = query(selector);
372
+ let from = query("[data-ui='#" + to.id + "']");
373
+ open(from, to, config);
374
+ }
375
+
376
+ let elements = queryAll("[data-ui]");
377
+ elements.forEach((x:Element) => on(x, "click", onClickElement));
378
+
379
+ let labels = queryAll(".field > label");
380
+ labels.forEach((x:HTMLLabelElement) => on(x, "click", onClickLabel));
381
+
382
+ let inputs = queryAll(".field > input:not([type=file]):not([type=checkbox]):not([type=radio]), .field > select, .field > textarea");
383
+ inputs.forEach((x:Element) => {
384
+ on(x, "focus", onFocusInput);
385
+ on(x, "blur", onBlurInput);
386
+ updateInput(x);
387
+ });
388
+
389
+ let files = queryAll(".field > input[type=file]");
390
+ files.forEach((x:Element) => {
391
+ on(x, "change", onChangeFile);
392
+ updateFile(x);
393
+ });
394
+ }
395
+
396
+ window["ui"] = ui;
397
+ window.addEventListener("load", () => ui("setup"));
398
+ })();
@@ -3,7 +3,7 @@
3
3
  align-items: center;
4
4
  justify-content: center;
5
5
  position: absolute;
6
- font-size: 10rem;
6
+ font-size: 12rem;
7
7
  text-transform: none;
8
8
  z-index: 1;
9
9
  padding: 0 6rem;
@@ -14,8 +14,7 @@
14
14
  bottom: auto;
15
15
  right: 0;
16
16
  transform: translate(50%, -100%);
17
- width: 16rem;
18
- height: 16rem;
17
+ height: 20rem;
19
18
  }
20
19
 
21
20
  .badge.none {
@@ -94,24 +93,15 @@
94
93
 
95
94
  .badge.border {
96
95
  border: 1rem solid var(--error);
97
- background-color: transparent;
98
- color:var(--error);
99
- }
100
-
101
- .badge.round {
102
- border-radius: 8rem;
96
+ color: var(--error);
103
97
  }
104
98
 
105
99
  .badge.circle,
106
100
  .badge.square {
107
101
  padding: 0;
108
102
  text-align: center;
109
- width: 16rem;
110
- height: 16rem;
111
- min-width: auto;
112
- min-height: auto;
113
- max-width: none;
114
- max-height: none;
103
+ width: 20rem;
104
+ height: 20rem;
115
105
  }
116
106
 
117
107
  .badge.circle {
@@ -4,137 +4,73 @@ button {
4
4
  display: inline-flex;
5
5
  align-items: center;
6
6
  justify-content: center;
7
- box-shadow: var(--shadow1);
8
- min-height: 40rem;
9
7
  height: 40rem;
8
+ min-width: 40rem;
10
9
  font-size: 14rem;
11
10
  font-weight: 500;
12
11
  color: var(--on-primary);
13
- padding: 0 16rem;
12
+ padding: 0 24rem;
14
13
  background-color: var(--primary);
15
14
  margin: 0 8rem;
16
15
  border-radius: 8rem;
17
16
  transition: var(--speed3) transform, var(--speed3) border-radius, var(--speed3) padding;
18
17
  user-select: none;
19
- }
20
-
21
- .button > :not(.dropdown, .progress, .badge, .tooltip) + :not(.dropdown, .progress, .badge, .tooltip),
22
- button > :not(.dropdown, .progress, .badge, .tooltip) + :not(.dropdown, .progress, .badge, .tooltip) {
23
- margin-left: 4rem;
18
+ gap: 8rem;
24
19
  }
25
20
 
26
21
  .button.none,
27
22
  button.none {
28
- box-shadow: none;
29
23
  width: auto;
30
- min-width: auto;
31
24
  height: auto;
32
- min-height: auto;
33
25
  color: var(--primary);
34
26
  padding: 0;
35
27
  background-color: transparent;
36
- margin: 0 8rem;
28
+ min-width: auto;
29
+ min-height: 24rem;
37
30
  }
38
31
 
39
32
  .button.small,
40
33
  button.small {
41
- min-height: 32rem !important;
42
34
  height: 32rem;
35
+ min-width: 32rem;
43
36
  font-size: 14rem;
44
37
  }
45
38
 
46
- .button.medium,
47
- button.medium {
48
- min-height: 40rem !important;
49
- height: 40rem;
50
- }
51
-
52
39
  .button.large,
53
40
  button.large {
54
- min-height: 48rem !important;
55
41
  height: 48rem;
42
+ min-width: 48rem;
56
43
  }
57
44
 
58
45
  .button.extra,
59
- button.extra {
60
- min-height: 56rem !important;
46
+ button.extra,
47
+ .button.extend,
48
+ button.extend {
61
49
  height: 56rem;
50
+ min-width: 56rem;
62
51
  font-size: 16rem;
63
52
  }
64
53
 
65
54
  .button.border,
66
55
  button.border {
67
56
  border: 1rem solid var(--primary);
68
- background-color: transparent;
69
57
  color: var(--primary);
70
- box-shadow: none;
71
- }
72
-
73
- .button.round,
74
- button.round {
75
- transform: none;
76
- border-radius: 32rem;
77
- }
78
-
79
- .button.top-round,
80
- button.top-round {
81
- border-radius: 32rem 32rem 4rem 4rem !important;
82
- }
83
-
84
- .button.bottom-round,
85
- button.bottom-round {
86
- border-radius: 4rem 4rem 32rem 32rem !important;
87
- }
88
-
89
- .button.left-round,
90
- button.left-round {
91
- border-radius: 32rem 4rem 4rem 32rem !important;
92
- }
93
-
94
- .button.right-round,
95
- button.right-round {
96
- border-radius: 4rem 32rem 32rem 4rem !important;
97
- }
98
-
99
- .button.top-round.left-round,
100
- button.top-round.left-round {
101
- border-radius: 32rem 32rem 4rem 32rem !important;
102
- }
103
-
104
- .button.top-round.right-round,
105
- button.top-round.right-round {
106
- border-radius: 32rem 32rem 32rem 4rem !important;
107
- }
108
-
109
- .button.bottom-round.left-round,
110
- button.bottom-round.left-round {
111
- border-radius: 32rem 4rem 32rem 32rem !important;
112
- }
113
-
114
- .button.bottom-round.right-round,
115
- button.bottom-round.right-round {
116
- border-radius: 4rem 32rem 32rem 32rem !important;
117
58
  }
118
59
 
119
60
  .button.circle,
120
61
  button.circle {
121
- transform: none;
122
- padding: 0;
123
62
  border-radius: 40rem;
124
63
  padding: 0;
125
64
  }
126
65
 
127
66
  .button.square,
128
67
  button.square {
129
- transform: none;
130
- border-radius: 4rem;
68
+ border-radius: 0;
131
69
  padding: 0;
132
70
  }
133
71
 
134
72
  .button.extend,
135
73
  button.extend {
136
- min-height: 56rem !important;
137
- min-width: 56rem !important;
138
74
  padding: 0;
139
75
  }
140
76
 
@@ -148,8 +84,6 @@ button.extend:hover,
148
84
  .button.extend.active,
149
85
  button.extend.active {
150
86
  width: auto;
151
- max-width: none;
152
- min-width: auto;
153
87
  padding: 0 16rem;
154
88
  }
155
89
 
@@ -169,15 +103,6 @@ button.extend.active > img + span {
169
103
  margin-left: 48rem;
170
104
  }
171
105
 
172
- .button.square:not(.flat, .border),
173
- .button.circle:not(.flat, .border),
174
- .button.diamond:not(.flat, .border),
175
- button.square:not(.flat, .border),
176
- button.circle:not(.flat, .border),
177
- button.diamond:not(.flat, .border) {
178
- box-shadow: var(--shadow2);
179
- }
180
-
181
106
  .button[disabled],
182
107
  button:disabled {
183
108
  opacity: .5;
@@ -193,4 +118,10 @@ button:disabled::before,
193
118
  .button[disabled]::after,
194
119
  button:disabled::after {
195
120
  display: none;
121
+ }
122
+
123
+ .button.fill,
124
+ button.fill {
125
+ background-color: var(--secondary-container) !important;
126
+ color: var(--on-secondary-container) !important;
196
127
  }
@@ -1,52 +1,25 @@
1
- .card,
2
1
  article {
3
- box-shadow: var(--shadow1);
4
- background-color: var(--surface-variant);
5
- color: var(--on-surface-variant);
2
+ box-shadow: var(--elevate1);
3
+ background-color: var(--surface);
4
+ color: var(--on-surface);
6
5
  padding: 16rem;
7
- border-radius: 4rem;
6
+ border-radius: 12rem;
8
7
  display: block;
9
8
  transition: var(--speed3) transform, var(--speed3) border-radius, var(--speed3) padding;
10
9
  }
11
10
 
12
- .card + .card,
13
- article + article {
11
+ * + article {
14
12
  margin-top: 16rem;
15
13
  }
16
14
 
17
- .row.medium-space > .col > .card + .card,
18
- .row.medium-space > .col > article + article {
19
- margin-top: 24rem;
20
- }
21
-
22
- .row.large-space > .col > .card + .card,
23
- .row.large-space > .col > article + article {
24
- margin-top: 32rem;
25
- }
26
-
27
- .card.small,
28
15
  article.small {
29
16
  height: 192rem;
30
17
  }
31
18
 
32
- .card.medium,
33
19
  article.medium {
34
20
  height: 320rem;
35
21
  }
36
22
 
37
- .card.large,
38
23
  article.large {
39
24
  height: 512rem;
40
- }
41
-
42
- .card.border,
43
- article.border {
44
- border: 1rem solid var(--outline);
45
- box-shadow: none;
46
- background-color: transparent;
47
- }
48
-
49
- .card.round,
50
- article.round {
51
- border-radius: 24rem;
52
25
  }