beercss 1.2.9 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +3 -3
  2. package/dist/cdn/beer.min.css +1 -1
  3. package/dist/cdn/beer.min.js +1 -1
  4. package/package.json +13 -13
  5. package/src/cdn/beer.css +2 -1
  6. package/src/cdn/beer.js +68 -43
  7. package/src/cdn/elements/badges.css +4 -4
  8. package/src/cdn/elements/buttons.css +77 -22
  9. package/src/cdn/elements/cards.css +6 -4
  10. package/src/cdn/elements/chips.css +13 -17
  11. package/src/cdn/elements/dropdowns.css +10 -9
  12. package/src/cdn/elements/expansions.css +1 -1
  13. package/src/cdn/elements/fields.css +195 -201
  14. package/src/cdn/elements/icons.css +1 -0
  15. package/src/cdn/elements/layouts.css +52 -1
  16. package/src/cdn/elements/loaders.css +1 -1
  17. package/src/cdn/elements/media.css +48 -2
  18. package/src/cdn/elements/menus.css +26 -38
  19. package/src/cdn/elements/modals.css +22 -8
  20. package/src/cdn/elements/navs.css +2 -2
  21. package/src/cdn/elements/overlays.css +3 -8
  22. package/src/cdn/elements/pages.css +7 -5
  23. package/src/cdn/elements/progress.css +29 -0
  24. package/src/cdn/elements/selections.css +21 -18
  25. package/src/cdn/elements/tables.css +2 -1
  26. package/src/cdn/elements/tabs.css +22 -3
  27. package/src/cdn/elements/toasts.css +9 -4
  28. package/src/cdn/elements/tooltips.css +2 -2
  29. package/src/cdn/helpers/colors.css +245 -226
  30. package/src/cdn/helpers/dividers.css +3 -3
  31. package/src/cdn/helpers/forms.css +14 -0
  32. package/src/cdn/helpers/margins.css +1 -1
  33. package/src/cdn/helpers/paddings.css +14 -14
  34. package/src/cdn/helpers/{others.css → reset.css} +29 -16
  35. package/src/cdn/helpers/shadows.css +16 -0
  36. package/src/cdn/helpers/typography.css +10 -10
  37. package/src/cdn/helpers/waves.css +3 -3
  38. package/src/cdn/settings/dark.css +37 -18
  39. package/src/cdn/settings/light.css +37 -18
package/src/cdn/beer.js CHANGED
@@ -1,7 +1,7 @@
1
1
  (() => {
2
2
  const guid = () => {
3
3
  return "fxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
4
- var r = (Math.random() * 16) | 0,
4
+ let r = (Math.random() * 16) | 0,
5
5
  v = c == "x" ? r : (r & 0x3) | 0x8;
6
6
  return v.toString(16);
7
7
  });
@@ -12,9 +12,7 @@
12
12
  return selector instanceof HTMLElement
13
13
  ? selector
14
14
  : (element || document).querySelector(selector);
15
- } catch {
16
- return null;
17
- }
15
+ } catch {}
18
16
  };
19
17
 
20
18
  const queryAll = (selector, element) => {
@@ -22,9 +20,7 @@
22
20
  return Array.isArray(selector)
23
21
  ? selector
24
22
  : (element || document).querySelectorAll(selector);
25
- } catch {
26
- return null;
27
- }
23
+ } catch {}
28
24
  };
29
25
 
30
26
  const hasClass = (element, name) => {
@@ -80,43 +76,62 @@
80
76
  };
81
77
 
82
78
  const create = (json) => {
83
- var element = document.createElement("div");
79
+ let element = document.createElement("div");
84
80
 
85
- for (var i in json)
81
+ for (let i in json)
86
82
  element[i] = json[i];
87
83
 
88
84
  return element;
89
85
  };
90
86
 
87
+ const updateInput = (input, label, parentTarget) => {
88
+ if (!input.value && document.activeElement != input) return input.style.clipPath = "";
89
+
90
+ if (label && hasClass(parentTarget, "border") && !hasClass(parentTarget, "fill")) {
91
+ let width = Math.round(label.offsetWidth / (label.offsetHeight / 14));
92
+ let start = hasClass(parentTarget, "round") ? 20 : 12;
93
+ let end = width + start + 8;
94
+ input.style.clipPath = `polygon(0% 0%, ${start}rem 0%, ${start}rem 8rem, ${end}rem 8rem, ${end}rem 0%, 100% 0%, 100% 100%, 0% 100%)`;
95
+ } else {
96
+ input.style.clipPath = "";
97
+ }
98
+ }
99
+
91
100
  const onClickElement = (e) => {
92
101
  if (/input/i.test(e.tagName)) return;
93
102
  return open(e.currentTarget);
94
103
  };
95
104
 
96
105
  const onClickLabel = (e) => {
97
- var input = query('input:not([type=checkbox]):not([type=radio]), select, textarea', parent(e.currentTarget));
106
+ let input = query('input:not([type=checkbox]):not([type=radio]), select, textarea', parent(e.currentTarget));
98
107
  input.focus();
99
108
  };
100
109
 
101
110
  const onFocusInput = (e) => {
102
- var label = query("label", parent(e.currentTarget));
111
+ let parentTarget = parent(e.currentTarget);
112
+ let label = query("label", parentTarget);
113
+
103
114
  addClass(label, "active");
115
+ updateInput(e.currentTarget, label, parentTarget);
104
116
 
105
117
  if (e.currentTarget.getAttribute("data-ui"))
106
118
  open(e.currentTarget);
107
119
  };
108
120
 
109
121
  const onBlurInput = (e) => {
110
- var label = query("label", parent(e.currentTarget));
122
+ let label = query("label", parent(e.currentTarget));
111
123
 
112
- if (!e.currentTarget.value) removeClass(label, "active");
124
+ if (!e.currentTarget.value) {
125
+ removeClass(label, "active");
126
+ e.currentTarget.style.clipPath = "";
127
+ }
113
128
 
114
129
  if (e.currentTarget.getAttribute("data-ui"))
115
130
  open(e.currentTarget);
116
131
  };
117
132
 
118
133
  const onClickDocument = (e) => {
119
- var dropdowns = queryAll(".dropdown.active");
134
+ let dropdowns = queryAll(".dropdown.active");
120
135
  dropdowns.forEach((x) => {
121
136
  removeClass(x, "active");
122
137
  });
@@ -131,7 +146,7 @@
131
146
  clearTimeout(timeoutToast);
132
147
  };
133
148
 
134
- var timeoutToast = null;
149
+ let timeoutToast = null;
135
150
 
136
151
  const open = (from, to, config) => {
137
152
  if (!to)
@@ -141,23 +156,21 @@
141
156
  if (hasClass(to, "dropdown")) return dropdown(from, to, config);
142
157
  if (hasClass(to, "toast")) return toast(from, to, config);
143
158
  if (hasClass(to, "page")) return page(from, to, config);
159
+ if (hasClass(to, "progress")) return progress(from, to, config);
144
160
 
145
161
  tab(from, to, config);
146
162
 
147
- if (hasClass(to, "active")) {
148
- removeClass(to, "active");
149
- return;
150
- }
163
+ if (hasClass(to, "active")) return removeClass(to, "active");
151
164
 
152
165
  addClass(to, "active");
153
166
  };
154
167
 
155
168
  const tab = (from, to, config) => {
156
- var container = parent(from);
169
+ let container = parent(from);
157
170
  if (!hasClass(container, "tabs"))
158
171
  return;
159
172
 
160
- var tabs = queryAll("a", container);
173
+ let tabs = queryAll("a", container);
161
174
  tabs.forEach((x) => {
162
175
  removeClass(x, "active");
163
176
  });
@@ -168,8 +181,8 @@
168
181
  const page = (from, to, config) => {
169
182
  tab(from, to, config);
170
183
 
171
- var container = parent(to);
172
- for (var i = 0; i < container.children.length; i++) {
184
+ let container = parent(to);
185
+ for (let i = 0; i < container.children.length; i++) {
173
186
  if (hasClass(container.children[i], "page"))
174
187
  removeClass(container.children[i], "active");
175
188
  }
@@ -180,12 +193,9 @@
180
193
  const dropdown = (from, to, config) => {
181
194
  tab(from, to, config);
182
195
 
183
- if (hasClass(to, "active")) {
184
- removeClass(to, "active");
185
- return;
186
- }
196
+ if (hasClass(to, "active")) return removeClass(to, "active");
187
197
 
188
- var dropdowns = queryAll(".dropdown.active");
198
+ let dropdowns = queryAll(".dropdown.active");
189
199
  dropdowns.forEach((x) => {
190
200
  removeClass(x, "active");
191
201
  });
@@ -197,7 +207,7 @@
197
207
  const modal = (from, to, config) => {
198
208
  tab(from, to, config);
199
209
 
200
- var overlay = prev(to);
210
+ let overlay = prev(to);
201
211
  if (!hasClass(overlay, "overlay")) {
202
212
  overlay = create({ className: "overlay active" });
203
213
  insertBefore(overlay, to);
@@ -209,10 +219,10 @@
209
219
  removeClass(overlay, "active");
210
220
  }
211
221
 
212
- var isActive = hasClass(to, "active");
213
- var container = parent(to);
222
+ let isActive = hasClass(to, "active");
223
+ let container = parent(to);
214
224
  if (hasClass(container, "menu")) {
215
- var elements = queryAll(".menu > .modal, .menu > a, .menu > .overlay");
225
+ let elements = queryAll(".menu > .modal, .menu > a, .menu > .overlay");
216
226
  elements.forEach((x) => {
217
227
  removeClass(x, "active");
218
228
  });
@@ -232,7 +242,7 @@
232
242
  const toast = (from, to, config) => {
233
243
  tab(from, to, config);
234
244
 
235
- var elements = queryAll(".toast.active");
245
+ let elements = queryAll(".toast.active");
236
246
  elements.forEach((x) => {
237
247
  removeClass(x, "active");
238
248
  });
@@ -242,43 +252,58 @@
242
252
  if (timeoutToast)
243
253
  clearTimeout(timeoutToast);
244
254
 
245
- if (config && config.timeout == -1)
255
+ if (config && config == -1)
246
256
  return;
247
257
 
248
258
  timeoutToast = setTimeout(() => {
249
259
  removeClass(to, "active");
250
- }, config && config.timeout ? config.timeout : 6000);
260
+ }, config && config ? config : 6000);
261
+ };
262
+
263
+ const progress = (from, to, config) => {
264
+ if (hasClass(to, "left"))
265
+ return to.style.clipPath = `polygon(0% 0%, 0% 100%, ${config}% 100%, ${config}% 0%)`;
266
+
267
+ if (hasClass(to, "top"))
268
+ return to.style.clipPath = `polygon(0% 0%, 100% 0%, 100% ${config}%, 0% ${config}%)`;
269
+
270
+ if (hasClass(to, "right"))
271
+ return to.style.clipPath = `polygon(100% 0%, 100% 100%, ${100 - config}% 100%, ${100 - config}% 0%)`;
272
+
273
+ if (hasClass(to, "bottom"))
274
+ return to.style.clipPath = `polygon(0% 100%, 100% 100%, 100% ${100 - config}%, 0% ${100 - config}%)`;
251
275
  };
252
276
 
253
277
  const ui = (selector, config) => {
254
278
  if (selector) {
255
279
  if (selector == "guid") return guid();
256
280
 
257
- var to = query(selector);
258
- var from = query("[data-ui='#" + to.id + "']");
259
- open(from, to, config);
260
- return;
281
+ let to = query(selector);
282
+ let from = query("[data-ui='#" + to.id + "']");
283
+ return open(from, to, config);
261
284
  }
262
285
 
263
- var elements = queryAll("[data-ui]");
286
+ let elements = queryAll("[data-ui]");
264
287
  elements.forEach((x) => {
265
288
  on(x, "click", onClickElement);
266
289
  });
267
290
 
268
- var labels = queryAll(".field > label");
291
+ let labels = queryAll(".field > label");
269
292
  labels.forEach((x) => {
270
293
  on(x, "click", onClickLabel);
271
294
  });
272
295
 
273
- var inputs = queryAll(".field > input:not([type=checkbox]):not([type=radio]), select, textarea");
296
+ let inputs = queryAll(".field > input:not([type=checkbox]):not([type=radio]), select, textarea");
274
297
  inputs.forEach((x) => {
275
- var label = query("label", parent(x));
298
+ let parentTarget = parent(x);
299
+ let label = query("label", parentTarget);
276
300
 
277
301
  on(x, "focus", onFocusInput);
278
302
  on(x, "blur", onBlurInput);
279
303
 
280
304
  if (x.value) addClass(label, "active");
281
305
  else removeClass(label, "active");
306
+ updateInput(x, label, parentTarget);
282
307
  });
283
308
  };
284
309
 
@@ -7,8 +7,8 @@
7
7
  text-transform: none;
8
8
  z-index: 1;
9
9
  padding: 0 6rem;
10
- background-color:var(--color-3);
11
- color: #ffffff;
10
+ background-color: var(--error);
11
+ color: var(--on-error);
12
12
  top: 0;
13
13
  left: auto;
14
14
  bottom: auto;
@@ -93,9 +93,9 @@
93
93
  }
94
94
 
95
95
  .badge.border {
96
- border: 1rem solid var(--color-3);
96
+ border: 1rem solid var(--error);
97
97
  background-color: transparent;
98
- color:var(--color-3);
98
+ color:var(--error);
99
99
  }
100
100
 
101
101
  .badge.round {
@@ -4,33 +4,22 @@ button {
4
4
  display: inline-flex;
5
5
  align-items: center;
6
6
  justify-content: center;
7
- box-shadow: var(--shadow-1);
7
+ box-shadow: var(--shadow1);
8
8
  min-height: 40rem;
9
9
  height: 40rem;
10
10
  font-size: 14rem;
11
11
  font-weight: 500;
12
- color: #ffffff;
13
- padding: 0 12rem;
14
- background-color: var(--color-1);
12
+ color: var(--on-primary);
13
+ padding: 0 16rem;
14
+ background-color: var(--primary);
15
15
  margin: 0 8rem;
16
- text-transform: uppercase;
17
16
  border-radius: 4rem;
18
- transition: var(--speed-3) transform, var(--speed-3) border-radius, var(--speed-3) padding;
17
+ transition: var(--speed3) transform, var(--speed3) border-radius, var(--speed3) padding;
19
18
  }
20
19
 
21
- button > :not(.dropdown, .badge) + :not(.dropdown, .badge),
22
- .button > :not(.dropdown, .badge) + :not(.dropdown, .badge) {
23
- margin-left: 6rem;
24
- }
25
-
26
- button > .responsive:first-child,
27
- .button > .responsive:first-child {
28
- margin-left: -12rem;
29
- }
30
-
31
- button > .responsive:last-child,
32
- .button > .responsive:last-child {
33
- margin-right: -12rem;
20
+ .button > :not(.dropdown, .progress, .badge, .tooltip) + :not(.dropdown, .progress, .badge, .tooltip),
21
+ button > :not(.dropdown, .progress, .badge, .tooltip) + :not(.dropdown, .progress, .badge, .tooltip) {
22
+ margin-left: 4rem;
34
23
  }
35
24
 
36
25
  .button.none,
@@ -40,7 +29,7 @@ button.none {
40
29
  min-width: auto;
41
30
  height: auto;
42
31
  min-height: auto;
43
- color: var(--color-1);
32
+ color: var(--primary);
44
33
  padding: 0;
45
34
  background-color: transparent;
46
35
  margin: 0 8rem;
@@ -50,6 +39,7 @@ button.none {
50
39
  button.small {
51
40
  min-height: 32rem !important;
52
41
  height: 32rem;
42
+ font-size: 14rem;
53
43
  }
54
44
 
55
45
  .button.medium,
@@ -68,13 +58,14 @@ button.large {
68
58
  button.extra {
69
59
  min-height: 56rem !important;
70
60
  height: 56rem;
61
+ font-size: 16rem;
71
62
  }
72
63
 
73
64
  .button.border,
74
65
  button.border {
75
- border: 1rem solid var(--color-1);
66
+ border: 1rem solid var(--primary);
76
67
  background-color: transparent;
77
- color: var(--color-1);
68
+ color: var(--primary);
78
69
  box-shadow: none;
79
70
  }
80
71
 
@@ -137,4 +128,68 @@ button.square {
137
128
  transform: none;
138
129
  border-radius: 4rem;
139
130
  padding: 0;
131
+ }
132
+
133
+ .button.extend,
134
+ button.extend {
135
+ min-height: 56rem !important;
136
+ min-width: 56rem !important;
137
+ padding: 0;
138
+ }
139
+
140
+ .button.extend > span,
141
+ button.extend > span {
142
+ display: none;
143
+ }
144
+
145
+ .button.extend:hover,
146
+ button.extend:hover,
147
+ .button.extend.active,
148
+ button.extend.active {
149
+ width: auto;
150
+ max-width: none;
151
+ min-width: auto;
152
+ padding: 0 16rem;
153
+ }
154
+
155
+ .button.extend:hover > i + span,
156
+ button.extend:hover > i + span,
157
+ .button.extend.active > i + span,
158
+ button.extend.active > i + span {
159
+ display: inherit;
160
+ margin-left: 32rem;
161
+ }
162
+
163
+ .button.extend:hover > img + span,
164
+ button.extend:hover > img + span,
165
+ .button.extend.active > img + span,
166
+ button.extend.active > img + span {
167
+ display: inherit;
168
+ margin-left: 48rem;
169
+ }
170
+
171
+ .button.square:not(.flat, .border),
172
+ .button.circle:not(.flat, .border),
173
+ .button.diamond:not(.flat, .border),
174
+ button.square:not(.flat, .border),
175
+ button.circle:not(.flat, .border),
176
+ button.diamond:not(.flat, .border) {
177
+ box-shadow: var(--shadow2);
178
+ }
179
+
180
+ .button[disabled],
181
+ button:disabled {
182
+ opacity: .5;
183
+ cursor: not-allowed;
184
+ }
185
+
186
+ .button[disabled] {
187
+ pointer-events: none;
188
+ }
189
+
190
+ .button[disabled]::before,
191
+ button:disabled::before,
192
+ .button[disabled]::after,
193
+ button:disabled::after {
194
+ display: none;
140
195
  }
@@ -1,11 +1,12 @@
1
1
  .card,
2
2
  article {
3
- box-shadow: var(--shadow-1);
4
- background-color: var(--color-4);
3
+ box-shadow: var(--shadow1);
4
+ background-color: var(--surface-variant);
5
+ color: var(--on-surface-variant);
5
6
  padding: 16rem;
6
7
  border-radius: 4rem;
7
8
  display: block;
8
- transition: var(--speed-3) transform, var(--speed-3) border-radius, var(--speed-3) padding;
9
+ transition: var(--speed3) transform, var(--speed3) border-radius, var(--speed3) padding;
9
10
  }
10
11
 
11
12
  .card + .card,
@@ -40,8 +41,9 @@ article.large {
40
41
 
41
42
  .card.border,
42
43
  article.border {
43
- border: 1rem solid var(--color-2b);
44
+ border: 1rem solid var(--outline);
44
45
  box-shadow: none;
46
+ background-color: transparent;
45
47
  }
46
48
 
47
49
  .card.round,
@@ -8,27 +8,19 @@
8
8
  height: 40rem;
9
9
  font-size: 14rem;
10
10
  font-weight: 500;
11
- color: var(--color-2);
12
- padding: 0 12rem;
13
- background-color: var(--color-2a);
11
+ color: var(--on-secondary);
12
+ padding: 0 16rem;
13
+ background-color: var(--secondary);
14
14
  margin: 0 8rem;
15
15
  text-transform: none;
16
- border-radius: 24rem;
17
- transition: var(--speed-3) transform, var(--speed-3) border-radius, var(--speed-3) padding;
16
+ border-radius: 8rem;
17
+ transition: var(--speed3) transform, var(--speed3) border-radius, var(--speed3) padding;
18
18
  }
19
19
 
20
- .chip > :not(.dropdown, .badge) + :not(.dropdown, .badge) {
20
+ .chip > :not(.dropdown, .progress, .badge, .tooltip) + :not(.dropdown, .progress, .badge, .tooltip) {
21
21
  margin-left: 4rem;
22
22
  }
23
23
 
24
- .chip > .responsive:first-child {
25
- margin-left: -12rem;
26
- }
27
-
28
- .chip > .responsive:last-child {
29
- margin-right: -12rem;
30
- }
31
-
32
24
  .chip.small {
33
25
  min-height: 32rem !important;
34
26
  height: 32rem;
@@ -45,9 +37,9 @@
45
37
  }
46
38
 
47
39
  .chip.border {
48
- border: 1rem solid var(--color-2b);
40
+ border: 1rem solid var(--secondary);
49
41
  background-color: transparent;
50
- color: inherit;
42
+ color: var(--secondary);
51
43
  }
52
44
 
53
45
  .chip.active::before {
@@ -58,7 +50,7 @@
58
50
  width: 100%;
59
51
  height: 100%;
60
52
  border-radius: inherit;
61
- background-color: var(--color-2b);
53
+ background-color: var(--active);
62
54
  }
63
55
 
64
56
  .chip.circle {
@@ -72,4 +64,8 @@
72
64
  transform: none;
73
65
  border-radius: 4rem;
74
66
  padding: 0;
67
+ }
68
+
69
+ .chip.round {
70
+ border-radius: 24rem;
75
71
  }
@@ -2,8 +2,8 @@
2
2
  opacity: 0;
3
3
  visibility: hidden;
4
4
  position: absolute;
5
- box-shadow: var(--shadow-2);
6
- background-color: var(--color-4);
5
+ box-shadow: var(--shadow2);
6
+ background-color: var(--surface);
7
7
  box-sizing: border-box;
8
8
  z-index: 2;
9
9
  top: auto;
@@ -18,7 +18,7 @@
18
18
  font-size: 14rem;
19
19
  font-weight: normal;
20
20
  text-transform: none;
21
- color: var(--color-2);
21
+ color: var(--on-surface);
22
22
  line-height: normal;
23
23
  text-align: left;
24
24
  }
@@ -29,17 +29,17 @@
29
29
 
30
30
  .dropdown.active,
31
31
  .dropdown:not([data-ui]):active,
32
- button:not([data-ui]):focus > .dropdown,
33
- .button:not([data-ui]):focus > .dropdown,
34
- .field > :not([data-ui]):focus ~ .dropdown {
32
+ button:not([data-ui]):focus-within > .dropdown,
33
+ .button:not([data-ui]):focus-within > .dropdown,
34
+ .field > :not([data-ui]):focus-within ~ .dropdown {
35
35
  opacity: 1;
36
36
  visibility: visible;
37
37
  max-width: none;
38
- animation: var(--speed-1) dropdown-to-bottom;
38
+ animation: var(--speed1) dropdown-to-bottom;
39
39
  }
40
40
 
41
41
  .dropdown.border {
42
- border: 1rem solid var(--color-2b);
42
+ border: 1rem solid var(--outline);
43
43
  box-shadow: none;
44
44
  }
45
45
 
@@ -63,8 +63,9 @@ button:not([data-ui]):focus > .dropdown,
63
63
  }
64
64
 
65
65
  .dropdown > a:hover,
66
+ .dropdown > a:focus,
66
67
  .dropdown > a.active {
67
- background-color: var(--color-2a);
68
+ background-color: var(--active);
68
69
  }
69
70
 
70
71
  .dropdown.no-wrap > a {
@@ -1,5 +1,5 @@
1
1
  details[open] > :not(summary) {
2
- animation: details-to-open var(--speed-3) ease;
2
+ animation: details-to-open var(--speed3) ease;
3
3
  }
4
4
 
5
5
  summary.none {