beercss 3.13.2 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +331 -328
  3. package/custom-element/index.d.ts +18 -18
  4. package/custom-element/index.js +7 -7
  5. package/dist/cdn/arch.svg +3 -3
  6. package/dist/cdn/arrow.svg +3 -3
  7. package/dist/cdn/beer.css +5904 -4792
  8. package/dist/cdn/beer.custom-element.js +37 -38
  9. package/dist/cdn/beer.custom-element.min.js +1 -1
  10. package/dist/cdn/beer.js +636 -635
  11. package/dist/cdn/beer.min.css +1 -1
  12. package/dist/cdn/beer.min.js +1 -1
  13. package/dist/cdn/beer.scoped.css +5909 -4793
  14. package/dist/cdn/beer.scoped.min.css +2 -1
  15. package/dist/cdn/boom.svg +3 -3
  16. package/dist/cdn/bun.svg +3 -3
  17. package/dist/cdn/burst.svg +3 -3
  18. package/dist/cdn/circle.svg +3 -3
  19. package/dist/cdn/clamshell.svg +3 -3
  20. package/dist/cdn/diamond.svg +3 -3
  21. package/dist/cdn/fan.svg +3 -3
  22. package/dist/cdn/flower.svg +3 -3
  23. package/dist/cdn/gem.svg +3 -3
  24. package/dist/cdn/ghost-ish.svg +3 -3
  25. package/dist/cdn/heart.svg +3 -3
  26. package/dist/cdn/leaf-clover4.svg +3 -3
  27. package/dist/cdn/leaf-clover8.svg +3 -3
  28. package/dist/cdn/loading-indicator.svg +18 -18
  29. package/dist/cdn/oval.svg +3 -3
  30. package/dist/cdn/pentagon.svg +3 -3
  31. package/dist/cdn/pill.svg +3 -3
  32. package/dist/cdn/pixel-circle.svg +3 -3
  33. package/dist/cdn/pixel-triangle.svg +3 -3
  34. package/dist/cdn/puffy-diamond.svg +3 -3
  35. package/dist/cdn/puffy.svg +3 -3
  36. package/dist/cdn/semicircle.svg +3 -3
  37. package/dist/cdn/sided-cookie12.svg +3 -3
  38. package/dist/cdn/sided-cookie4.svg +3 -3
  39. package/dist/cdn/sided-cookie6.svg +3 -3
  40. package/dist/cdn/sided-cookie7.svg +3 -3
  41. package/dist/cdn/sided-cookie9.svg +3 -3
  42. package/dist/cdn/slanted.svg +3 -3
  43. package/dist/cdn/soft-boom.svg +3 -3
  44. package/dist/cdn/soft-burst.svg +3 -3
  45. package/dist/cdn/square.svg +3 -3
  46. package/dist/cdn/sunny.svg +3 -3
  47. package/dist/cdn/triangle.svg +3 -3
  48. package/dist/cdn/very-sunny.svg +3 -3
  49. package/dist/cdn/wavy-circle.svg +3 -3
  50. package/dist/cdn/wavy.svg +4 -4
  51. package/index.d.ts +18 -18
  52. package/index.js +6 -6
  53. package/package.json +76 -76
  54. package/scoped/index.d.ts +18 -18
  55. package/scoped/index.js +6 -6
  56. package/src/cdn/beer.css +54 -52
  57. package/src/cdn/beer.ts +120 -120
  58. package/src/cdn/customElement.js +37 -38
  59. package/src/cdn/elements/badges.css +74 -74
  60. package/src/cdn/elements/bars.css +91 -91
  61. package/src/cdn/elements/buttons.css +105 -106
  62. package/src/cdn/elements/cards.css +26 -26
  63. package/src/cdn/elements/chips.css +37 -38
  64. package/src/cdn/elements/dialogs.css +145 -151
  65. package/src/cdn/elements/dialogs.ts +69 -69
  66. package/src/cdn/elements/dividers.css +48 -48
  67. package/src/cdn/elements/expansions.css +17 -10
  68. package/src/cdn/elements/fields.css +438 -439
  69. package/src/cdn/elements/fields.ts +165 -165
  70. package/src/cdn/elements/grids.css +171 -171
  71. package/src/cdn/elements/icons.css +77 -77
  72. package/src/cdn/elements/layouts.css +35 -35
  73. package/src/cdn/elements/lists.css +75 -71
  74. package/src/cdn/elements/mainLayouts.css +57 -57
  75. package/src/cdn/elements/media.css +112 -112
  76. package/src/cdn/elements/menus.css +294 -294
  77. package/src/cdn/elements/menus.ts +40 -40
  78. package/src/cdn/elements/navigations.css +461 -462
  79. package/src/cdn/elements/overlays.css +31 -31
  80. package/src/cdn/elements/pages.css +41 -41
  81. package/src/cdn/elements/pages.ts +6 -6
  82. package/src/cdn/elements/progress.css +207 -207
  83. package/src/cdn/elements/progress.ts +36 -34
  84. package/src/cdn/elements/selections.css +256 -256
  85. package/src/cdn/elements/shapes.css +258 -258
  86. package/src/cdn/elements/sliders.css +353 -357
  87. package/src/cdn/elements/sliders.ts +74 -74
  88. package/src/cdn/elements/snackbars.css +47 -47
  89. package/src/cdn/elements/snackbars.ts +26 -26
  90. package/src/cdn/elements/tables.css +65 -65
  91. package/src/cdn/elements/tabs.css +52 -52
  92. package/src/cdn/elements/tooltips.css +131 -131
  93. package/src/cdn/helpers/alignments.css +29 -29
  94. package/src/cdn/helpers/blurs.css +21 -21
  95. package/src/cdn/helpers/colors.css +930 -930
  96. package/src/cdn/helpers/directions.css +28 -28
  97. package/src/cdn/helpers/elevates.css +16 -16
  98. package/src/cdn/helpers/forms.css +75 -75
  99. package/src/cdn/helpers/margins.css +49 -49
  100. package/src/cdn/helpers/opacities.css +19 -19
  101. package/src/cdn/helpers/paddings.css +45 -45
  102. package/src/cdn/helpers/positions.css +45 -45
  103. package/src/cdn/helpers/responsive.css +22 -22
  104. package/src/cdn/helpers/ripples.css +33 -33
  105. package/src/cdn/helpers/ripples.ts +30 -30
  106. package/src/cdn/helpers/scrolls.css +7 -8
  107. package/src/cdn/helpers/shadows.css +23 -23
  108. package/src/cdn/helpers/sizes.css +45 -45
  109. package/src/cdn/helpers/spaces.css +19 -19
  110. package/src/cdn/helpers/typography.css +226 -225
  111. package/src/cdn/helpers/waves.css +43 -43
  112. package/src/cdn/helpers/zoom.css +19 -19
  113. package/src/cdn/interfaces.ts +3 -3
  114. package/src/cdn/settings/dark.css +38 -38
  115. package/src/cdn/settings/fonts.css +35 -35
  116. package/src/cdn/settings/globals.css +55 -18
  117. package/src/cdn/settings/light.css +39 -39
  118. package/src/cdn/{helpers → settings}/reset.css +76 -94
  119. package/src/cdn/{helpers → settings}/theme.css +186 -186
  120. package/src/cdn/{helpers → settings}/theme.ts +83 -83
  121. package/src/cdn/shapes/arch.svg +3 -3
  122. package/src/cdn/shapes/arrow.svg +3 -3
  123. package/src/cdn/shapes/boom.svg +3 -3
  124. package/src/cdn/shapes/bun.svg +3 -3
  125. package/src/cdn/shapes/burst.svg +3 -3
  126. package/src/cdn/shapes/circle.svg +3 -3
  127. package/src/cdn/shapes/clamshell.svg +3 -3
  128. package/src/cdn/shapes/diamond.svg +3 -3
  129. package/src/cdn/shapes/fan.svg +3 -3
  130. package/src/cdn/shapes/flower.svg +3 -3
  131. package/src/cdn/shapes/gem.svg +3 -3
  132. package/src/cdn/shapes/ghost-ish.svg +3 -3
  133. package/src/cdn/shapes/heart.svg +3 -3
  134. package/src/cdn/shapes/leaf-clover4.svg +3 -3
  135. package/src/cdn/shapes/leaf-clover8.svg +3 -3
  136. package/src/cdn/shapes/loading-indicator.svg +18 -18
  137. package/src/cdn/shapes/oval.svg +3 -3
  138. package/src/cdn/shapes/pentagon.svg +3 -3
  139. package/src/cdn/shapes/pill.svg +3 -3
  140. package/src/cdn/shapes/pixel-circle.svg +3 -3
  141. package/src/cdn/shapes/pixel-triangle.svg +3 -3
  142. package/src/cdn/shapes/puffy-diamond.svg +3 -3
  143. package/src/cdn/shapes/puffy.svg +3 -3
  144. package/src/cdn/shapes/semicircle.svg +3 -3
  145. package/src/cdn/shapes/sided-cookie12.svg +3 -3
  146. package/src/cdn/shapes/sided-cookie4.svg +3 -3
  147. package/src/cdn/shapes/sided-cookie6.svg +3 -3
  148. package/src/cdn/shapes/sided-cookie7.svg +3 -3
  149. package/src/cdn/shapes/sided-cookie9.svg +3 -3
  150. package/src/cdn/shapes/slanted.svg +3 -3
  151. package/src/cdn/shapes/soft-boom.svg +3 -3
  152. package/src/cdn/shapes/soft-burst.svg +3 -3
  153. package/src/cdn/shapes/square.svg +3 -3
  154. package/src/cdn/shapes/sunny.svg +3 -3
  155. package/src/cdn/shapes/triangle.svg +3 -3
  156. package/src/cdn/shapes/very-sunny.svg +3 -3
  157. package/src/cdn/shapes/wavy-circle.svg +3 -3
  158. package/src/cdn/shapes/wavy.svg +4 -4
  159. package/src/cdn/utils.ts +154 -154
@@ -1,166 +1,166 @@
1
- import { query, next, prev, hasType, parent, queryAll, onWeak, isChrome, isMac, isIOS, on, hasClass, rootSizeInPixels } from "../utils";
2
-
3
- function updatePlaceholder(element: HTMLInputElement | HTMLTextAreaElement) {
4
- if (!element.placeholder) element.placeholder = " ";
5
- }
6
-
7
- function onClickLabel(e: Event) {
8
- const label = e.currentTarget as HTMLLabelElement;
9
- const field = parent(label);
10
- const input = query("input:not([type=file], [type=checkbox], [type=radio]), select, textarea", field) as HTMLElement;
11
- if (input) input.focus();
12
- }
13
-
14
- function onFocusInput(e: Event) {
15
- const input = e.currentTarget as HTMLInputElement;
16
- updateInput(input);
17
- }
18
-
19
- function onBlurInput(e: Event) {
20
- const input = e.currentTarget as HTMLInputElement;
21
- updateInput(input);
22
- }
23
-
24
- function onChangeFile(e: Event) {
25
- const input = e.currentTarget as HTMLInputElement;
26
- updateFile(input);
27
- }
28
-
29
- function onChangeColor(e: Event) {
30
- const input = e.currentTarget as HTMLInputElement;
31
- updateColor(input);
32
- }
33
-
34
- function onKeydownFile(e: KeyboardEvent) {
35
- const input = e.currentTarget as HTMLInputElement;
36
- updateFile(input, e);
37
- }
38
-
39
- function onKeydownColor(e: KeyboardEvent) {
40
- const input = e.currentTarget as HTMLInputElement;
41
- updateColor(input, e);
42
- }
43
-
44
- function onPasswordIconClick(e: Event) {
45
- const icon = e.currentTarget as HTMLElement;
46
- const input = query("input", parent(icon)) as HTMLInputElement;
47
- if (input && icon.textContent?.includes("visibility")) input.type = input.type === "password" ? "text" : "password";
48
- }
49
-
50
- function onInputTextarea(e: Event) {
51
- const textarea = e.currentTarget as HTMLTextAreaElement;
52
- updateTextarea(textarea);
53
- }
54
-
55
- function updateAllLabels() {
56
- const labels = queryAll(".field > label");
57
- for (let i=0; i<labels.length; i++) {
58
- onWeak(labels[i], "click", onClickLabel);
59
- }
60
- }
61
-
62
- function updateAllInputs() {
63
- const inputs = queryAll(".field > input:not([type=file], [type=color], [type=range])") as NodeListOf<HTMLInputElement>;
64
- for (let i=0; i<inputs.length; i++) {
65
- onWeak(inputs[i], "focus", onFocusInput);
66
- onWeak(inputs[i], "blur", onBlurInput);
67
- updateInput(inputs[i]);
68
- }
69
- }
70
-
71
- function updateAllSelects() {
72
- const selects = queryAll(".field > select") as NodeListOf<HTMLSelectElement>;
73
- for (let i=0; i<selects.length; i++) {
74
- onWeak(selects[i], "focus", onFocusInput);
75
- onWeak(selects[i], "blur", onBlurInput);
76
- }
77
- }
78
-
79
- function updateAllFiles() {
80
- const files = queryAll(".field > input[type=file]") as NodeListOf<HTMLInputElement>;
81
- for (let i=0; i<files.length; i++) {
82
- onWeak(files[i], "change", onChangeFile);
83
- updateFile(files[i]);
84
- }
85
- }
86
-
87
- function updateAllColors() {
88
- const colors = queryAll(".field > input[type=color]") as NodeListOf<HTMLInputElement>;
89
- for (let i=0; i<colors.length; i++) {
90
- onWeak(colors[i], "change", onChangeColor);
91
- updateColor(colors[i]);
92
- }
93
- }
94
-
95
- function updateAllTextareas() {
96
- const textareas = queryAll(".field > textarea") as NodeListOf<HTMLTextAreaElement>;
97
- for (let i=0; i<textareas.length; i++) {
98
- onWeak(textareas[i], "focus", onFocusInput);
99
- onWeak(textareas[i], "blur", onBlurInput);
100
-
101
- if (isChrome && !isMac && !isIOS) continue;
102
-
103
- onWeak(textareas[i], "input", onInputTextarea);
104
- updateTextarea(textareas[i]);
105
- }
106
- }
107
-
108
- function updateAllPasswordIcons() {
109
- const icons = queryAll("input[type=password] ~ :is(i, a)");
110
- for (let i=0; i<icons.length; i++) onWeak(icons[i], "click", onPasswordIconClick);
111
- }
112
-
113
- function updateInput(input: HTMLInputElement) {
114
- if (hasType(input, "number") && !input.value) input.value = "";
115
- updatePlaceholder(input);
116
- }
117
-
118
- function updateFile(input: HTMLInputElement, e?: KeyboardEvent) {
119
- if (e?.key === "Enter") {
120
- const previousInput = prev(input) as HTMLInputElement;
121
- if (!hasType(previousInput, "file")) return;
122
- previousInput.click(); return;
123
- }
124
-
125
- const nextInput = next(input) as HTMLInputElement;
126
- if (!hasType(nextInput, "text")) return;
127
- nextInput.value = input.files ? Array.from(input.files).map((x) => x.name).join(", ") : "";
128
- nextInput.readOnly = true;
129
- onWeak(nextInput, "keydown", onKeydownFile, false);
130
- updateInput(nextInput);
131
- }
132
-
133
- function updateColor(input: HTMLInputElement, e?: KeyboardEvent) {
134
- if (e?.key === "Enter") {
135
- const previousInput = prev(input) as HTMLInputElement;
136
- if (!hasType(previousInput, "color")) return;
137
- previousInput.click(); return;
138
- }
139
-
140
- const nextInput = next(input) as HTMLInputElement;
141
- if (!hasType(nextInput, "text")) return;
142
- nextInput.readOnly = true;
143
- nextInput.value = input.value;
144
- onWeak(nextInput, "keydown", onKeydownColor, false);
145
- updateInput(nextInput);
146
- }
147
-
148
- function updateTextarea(textarea: HTMLTextAreaElement) {
149
- updatePlaceholder(textarea);
150
-
151
- if (textarea.hasAttribute("rows")) return;
152
-
153
- const rootSize = rootSizeInPixels();
154
- textarea.style.blockSize = "auto";
155
- textarea.style.blockSize = `${textarea.scrollHeight - rootSize}px`;
156
- }
157
-
158
- export function updateAllFields() {
159
- updateAllLabels();
160
- updateAllInputs();
161
- updateAllSelects();
162
- updateAllFiles();
163
- updateAllColors();
164
- updateAllTextareas();
165
- updateAllPasswordIcons();
1
+ import { query, next, prev, hasType, parent, queryAll, onWeak, isChrome, isMac, isIOS, on, hasClass, rootSizeInPixels } from "../utils";
2
+
3
+ function updatePlaceholder(element: HTMLInputElement | HTMLTextAreaElement) {
4
+ if (!element.placeholder) element.placeholder = " ";
5
+ }
6
+
7
+ function onClickLabel(e: Event) {
8
+ const label = e.currentTarget as HTMLLabelElement;
9
+ const field = parent(label);
10
+ const input = query("input:not([type=file], [type=checkbox], [type=radio]), select, textarea", field) as HTMLElement;
11
+ if (input) input.focus();
12
+ }
13
+
14
+ function onFocusInput(e: Event) {
15
+ const input = e.currentTarget as HTMLInputElement;
16
+ updateInput(input);
17
+ }
18
+
19
+ function onBlurInput(e: Event) {
20
+ const input = e.currentTarget as HTMLInputElement;
21
+ updateInput(input);
22
+ }
23
+
24
+ function onChangeFile(e: Event) {
25
+ const input = e.currentTarget as HTMLInputElement;
26
+ updateFile(input);
27
+ }
28
+
29
+ function onChangeColor(e: Event) {
30
+ const input = e.currentTarget as HTMLInputElement;
31
+ updateColor(input);
32
+ }
33
+
34
+ function onKeydownFile(e: KeyboardEvent) {
35
+ const input = e.currentTarget as HTMLInputElement;
36
+ updateFile(input, e);
37
+ }
38
+
39
+ function onKeydownColor(e: KeyboardEvent) {
40
+ const input = e.currentTarget as HTMLInputElement;
41
+ updateColor(input, e);
42
+ }
43
+
44
+ function onPasswordIconClick(e: Event) {
45
+ const icon = e.currentTarget as HTMLElement;
46
+ const input = query("input", parent(icon)) as HTMLInputElement;
47
+ if (input && icon.textContent?.includes("visibility")) input.type = input.type === "password" ? "text" : "password";
48
+ }
49
+
50
+ function onInputTextarea(e: Event) {
51
+ const textarea = e.currentTarget as HTMLTextAreaElement;
52
+ updateTextarea(textarea);
53
+ }
54
+
55
+ function updateAllLabels() {
56
+ const labels = queryAll(".field > label");
57
+ for (let i=0; i<labels.length; i++) {
58
+ onWeak(labels[i], "click", onClickLabel);
59
+ }
60
+ }
61
+
62
+ function updateAllInputs() {
63
+ const inputs = queryAll(".field > input:not([type=file], [type=color], [type=range])") as NodeListOf<HTMLInputElement>;
64
+ for (let i=0; i<inputs.length; i++) {
65
+ onWeak(inputs[i], "focus", onFocusInput);
66
+ onWeak(inputs[i], "blur", onBlurInput);
67
+ updateInput(inputs[i]);
68
+ }
69
+ }
70
+
71
+ function updateAllSelects() {
72
+ const selects = queryAll(".field > select") as NodeListOf<HTMLSelectElement>;
73
+ for (let i=0; i<selects.length; i++) {
74
+ onWeak(selects[i], "focus", onFocusInput);
75
+ onWeak(selects[i], "blur", onBlurInput);
76
+ }
77
+ }
78
+
79
+ function updateAllFiles() {
80
+ const files = queryAll(".field > input[type=file]") as NodeListOf<HTMLInputElement>;
81
+ for (let i=0; i<files.length; i++) {
82
+ onWeak(files[i], "change", onChangeFile);
83
+ updateFile(files[i]);
84
+ }
85
+ }
86
+
87
+ function updateAllColors() {
88
+ const colors = queryAll(".field > input[type=color]") as NodeListOf<HTMLInputElement>;
89
+ for (let i=0; i<colors.length; i++) {
90
+ onWeak(colors[i], "change", onChangeColor);
91
+ updateColor(colors[i]);
92
+ }
93
+ }
94
+
95
+ function updateAllTextareas() {
96
+ const textareas = queryAll(".field > textarea") as NodeListOf<HTMLTextAreaElement>;
97
+ for (let i=0; i<textareas.length; i++) {
98
+ onWeak(textareas[i], "focus", onFocusInput);
99
+ onWeak(textareas[i], "blur", onBlurInput);
100
+
101
+ if (isChrome && !isMac && !isIOS) continue;
102
+
103
+ onWeak(textareas[i], "input", onInputTextarea);
104
+ updateTextarea(textareas[i]);
105
+ }
106
+ }
107
+
108
+ function updateAllPasswordIcons() {
109
+ const icons = queryAll("input[type=password] ~ :is(i, a)");
110
+ for (let i=0; i<icons.length; i++) onWeak(icons[i], "click", onPasswordIconClick);
111
+ }
112
+
113
+ function updateInput(input: HTMLInputElement) {
114
+ if (hasType(input, "number") && !input.value) input.value = "";
115
+ updatePlaceholder(input);
116
+ }
117
+
118
+ function updateFile(input: HTMLInputElement, e?: KeyboardEvent) {
119
+ if (e?.key === "Enter") {
120
+ const previousInput = prev(input) as HTMLInputElement;
121
+ if (!hasType(previousInput, "file")) return;
122
+ previousInput.click(); return;
123
+ }
124
+
125
+ const nextInput = next(input) as HTMLInputElement;
126
+ if (!hasType(nextInput, "text")) return;
127
+ nextInput.value = input.files ? Array.from(input.files).map((x) => x.name).join(", ") : "";
128
+ nextInput.readOnly = true;
129
+ onWeak(nextInput, "keydown", onKeydownFile, false);
130
+ updateInput(nextInput);
131
+ }
132
+
133
+ function updateColor(input: HTMLInputElement, e?: KeyboardEvent) {
134
+ if (e?.key === "Enter") {
135
+ const previousInput = prev(input) as HTMLInputElement;
136
+ if (!hasType(previousInput, "color")) return;
137
+ previousInput.click(); return;
138
+ }
139
+
140
+ const nextInput = next(input) as HTMLInputElement;
141
+ if (!hasType(nextInput, "text")) return;
142
+ nextInput.readOnly = true;
143
+ nextInput.value = input.value;
144
+ onWeak(nextInput, "keydown", onKeydownColor, false);
145
+ updateInput(nextInput);
146
+ }
147
+
148
+ function updateTextarea(textarea: HTMLTextAreaElement) {
149
+ updatePlaceholder(textarea);
150
+
151
+ if (textarea.hasAttribute("rows")) return;
152
+
153
+ const rootSize = rootSizeInPixels();
154
+ textarea.style.blockSize = "auto";
155
+ textarea.style.blockSize = `${textarea.scrollHeight - rootSize}px`;
156
+ }
157
+
158
+ export function updateAllFields() {
159
+ updateAllLabels();
160
+ updateAllInputs();
161
+ updateAllSelects();
162
+ updateAllFiles();
163
+ updateAllColors();
164
+ updateAllTextareas();
165
+ updateAllPasswordIcons();
166
166
  }
@@ -1,171 +1,171 @@
1
- .grid {
2
- --_gap: 1rem;
3
- display: grid;
4
- grid-template-columns: repeat(12, 1fr);
5
- gap: var(--_gap);
6
- block-size: auto;
7
- }
8
-
9
- .grid.no-space {
10
- --_gap: 0rem;
11
- }
12
-
13
- .grid.medium-space {
14
- --_gap: 1.5rem;
15
- }
16
-
17
- .grid.large-space {
18
- --_gap: 2rem;
19
- }
20
-
21
- .grid > * {
22
- margin: 0;
23
- }
24
-
25
- .s1 {
26
- grid-area: auto/span 1;
27
- }
28
-
29
- .s2 {
30
- grid-area: auto/span 2;
31
- }
32
-
33
- .s3 {
34
- grid-area: auto/span 3;
35
- }
36
-
37
- .s4 {
38
- grid-area: auto/span 4;
39
- }
40
-
41
- .s5 {
42
- grid-area: auto/span 5;
43
- }
44
-
45
- .s6 {
46
- grid-area: auto/span 6;
47
- }
48
-
49
- .s7 {
50
- grid-area: auto/span 7;
51
- }
52
-
53
- .s8 {
54
- grid-area: auto/span 8;
55
- }
56
-
57
- .s9 {
58
- grid-area: auto/span 9;
59
- }
60
-
61
- .s10 {
62
- grid-area: auto/span 10;
63
- }
64
-
65
- .s11 {
66
- grid-area: auto/span 11;
67
- }
68
-
69
- .s12 {
70
- grid-area: auto/span 12;
71
- }
72
-
73
- @media only screen and (min-width: 601px) {
74
- .m1 {
75
- grid-area: auto/span 1;
76
- }
77
-
78
- .m2 {
79
- grid-area: auto/span 2;
80
- }
81
-
82
- .m3 {
83
- grid-area: auto/span 3;
84
- }
85
-
86
- .m4 {
87
- grid-area: auto/span 4;
88
- }
89
-
90
- .m5 {
91
- grid-area: auto/span 5;
92
- }
93
-
94
- .m6 {
95
- grid-area: auto/span 6;
96
- }
97
-
98
- .m7 {
99
- grid-area: auto/span 7;
100
- }
101
-
102
- .m8 {
103
- grid-area: auto/span 8;
104
- }
105
-
106
- .m9 {
107
- grid-area: auto/span 9;
108
- }
109
-
110
- .m10 {
111
- grid-area: auto/span 10;
112
- }
113
-
114
- .m11 {
115
- grid-area: auto/span 11;
116
- }
117
-
118
- .m12 {
119
- grid-area: auto/span 12;
120
- }
121
- }
122
-
123
- @media only screen and (min-width: 993px) {
124
- .l1 {
125
- grid-area: auto/span 1;
126
- }
127
-
128
- .l2 {
129
- grid-area: auto/span 2;
130
- }
131
-
132
- .l3 {
133
- grid-area: auto/span 3;
134
- }
135
-
136
- .l4 {
137
- grid-area: auto/span 4;
138
- }
139
-
140
- .l5 {
141
- grid-area: auto/span 5;
142
- }
143
-
144
- .l6 {
145
- grid-area: auto/span 6;
146
- }
147
-
148
- .l7 {
149
- grid-area: auto/span 7;
150
- }
151
-
152
- .l8 {
153
- grid-area: auto/span 8;
154
- }
155
-
156
- .l9 {
157
- grid-area: auto/span 9;
158
- }
159
-
160
- .l10 {
161
- grid-area: auto/span 10;
162
- }
163
-
164
- .l11 {
165
- grid-area: auto/span 11;
166
- }
167
-
168
- .l12 {
169
- grid-area: auto/span 12;
170
- }
171
- }
1
+ .grid {
2
+ --_gap: 1rem;
3
+ display: grid;
4
+ grid-template-columns: repeat(12, 1fr);
5
+ gap: var(--_gap);
6
+ block-size: auto;
7
+ }
8
+
9
+ .grid.no-space {
10
+ --_gap: 0rem;
11
+ }
12
+
13
+ .grid.medium-space {
14
+ --_gap: 1.5rem;
15
+ }
16
+
17
+ .grid.large-space {
18
+ --_gap: 2rem;
19
+ }
20
+
21
+ .grid > * {
22
+ margin: 0;
23
+ }
24
+
25
+ .s1 {
26
+ grid-area: auto/span 1;
27
+ }
28
+
29
+ .s2 {
30
+ grid-area: auto/span 2;
31
+ }
32
+
33
+ .s3 {
34
+ grid-area: auto/span 3;
35
+ }
36
+
37
+ .s4 {
38
+ grid-area: auto/span 4;
39
+ }
40
+
41
+ .s5 {
42
+ grid-area: auto/span 5;
43
+ }
44
+
45
+ .s6 {
46
+ grid-area: auto/span 6;
47
+ }
48
+
49
+ .s7 {
50
+ grid-area: auto/span 7;
51
+ }
52
+
53
+ .s8 {
54
+ grid-area: auto/span 8;
55
+ }
56
+
57
+ .s9 {
58
+ grid-area: auto/span 9;
59
+ }
60
+
61
+ .s10 {
62
+ grid-area: auto/span 10;
63
+ }
64
+
65
+ .s11 {
66
+ grid-area: auto/span 11;
67
+ }
68
+
69
+ .s12 {
70
+ grid-area: auto/span 12;
71
+ }
72
+
73
+ @media only screen and (min-width: 601px) {
74
+ .m1 {
75
+ grid-area: auto/span 1;
76
+ }
77
+
78
+ .m2 {
79
+ grid-area: auto/span 2;
80
+ }
81
+
82
+ .m3 {
83
+ grid-area: auto/span 3;
84
+ }
85
+
86
+ .m4 {
87
+ grid-area: auto/span 4;
88
+ }
89
+
90
+ .m5 {
91
+ grid-area: auto/span 5;
92
+ }
93
+
94
+ .m6 {
95
+ grid-area: auto/span 6;
96
+ }
97
+
98
+ .m7 {
99
+ grid-area: auto/span 7;
100
+ }
101
+
102
+ .m8 {
103
+ grid-area: auto/span 8;
104
+ }
105
+
106
+ .m9 {
107
+ grid-area: auto/span 9;
108
+ }
109
+
110
+ .m10 {
111
+ grid-area: auto/span 10;
112
+ }
113
+
114
+ .m11 {
115
+ grid-area: auto/span 11;
116
+ }
117
+
118
+ .m12 {
119
+ grid-area: auto/span 12;
120
+ }
121
+ }
122
+
123
+ @media only screen and (min-width: 993px) {
124
+ .l1 {
125
+ grid-area: auto/span 1;
126
+ }
127
+
128
+ .l2 {
129
+ grid-area: auto/span 2;
130
+ }
131
+
132
+ .l3 {
133
+ grid-area: auto/span 3;
134
+ }
135
+
136
+ .l4 {
137
+ grid-area: auto/span 4;
138
+ }
139
+
140
+ .l5 {
141
+ grid-area: auto/span 5;
142
+ }
143
+
144
+ .l6 {
145
+ grid-area: auto/span 6;
146
+ }
147
+
148
+ .l7 {
149
+ grid-area: auto/span 7;
150
+ }
151
+
152
+ .l8 {
153
+ grid-area: auto/span 8;
154
+ }
155
+
156
+ .l9 {
157
+ grid-area: auto/span 9;
158
+ }
159
+
160
+ .l10 {
161
+ grid-area: auto/span 10;
162
+ }
163
+
164
+ .l11 {
165
+ grid-area: auto/span 11;
166
+ }
167
+
168
+ .l12 {
169
+ grid-area: auto/span 12;
170
+ }
171
+ }