raikar10 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (189) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +50 -0
  4. data/_includes/breadcrumb.html +17 -0
  5. data/_includes/footer.html +54 -0
  6. data/_includes/head.html +26 -0
  7. data/_includes/header.html +34 -0
  8. data/_includes/icon.html +3 -0
  9. data/_includes/nav_page.html +57 -0
  10. data/_includes/nav_side.html +68 -0
  11. data/_includes/toc_pure_liquid.html +68 -0
  12. data/_layouts/default.html +252 -0
  13. data/_layouts/page.html +5 -0
  14. data/_layouts/post.html +5 -0
  15. data/_sass/_accordion.scss +77 -0
  16. data/_sass/_article.scss +96 -0
  17. data/_sass/_base.scss +48 -0
  18. data/_sass/_bootstrap-icons.scss +7 -0
  19. data/_sass/_breadcrumb.scss +20 -0
  20. data/_sass/_btn.scss +9 -0
  21. data/_sass/_callout.scss +13 -0
  22. data/_sass/_fonts.scss +63 -0
  23. data/_sass/_footer.scss +38 -0
  24. data/_sass/_helpers.scss +2 -0
  25. data/_sass/_icons.scss +27 -0
  26. data/_sass/_link-main.scss +22 -0
  27. data/_sass/_list-links.scss +33 -0
  28. data/_sass/_list-tags.scss +9 -0
  29. data/_sass/_navbar.scss +81 -0
  30. data/_sass/_search.scss +51 -0
  31. data/_sass/_section-main.scss +54 -0
  32. data/_sass/_socials.scss +26 -0
  33. data/_sass/_switch.scss +56 -0
  34. data/_sass/_table.scss +100 -0
  35. data/_sass/_theme.scss +63 -0
  36. data/_sass/_tile.scss +34 -0
  37. data/_sass/_tiles.scss +9 -0
  38. data/_sass/_variables.scss +11 -0
  39. data/_sass/_widget.scss +15 -0
  40. data/_sass/_widgets.scss +12 -0
  41. data/_sass/bootstrap/scss/_accordion.scss +158 -0
  42. data/_sass/bootstrap/scss/_alert.scss +68 -0
  43. data/_sass/bootstrap/scss/_badge.scss +38 -0
  44. data/_sass/bootstrap/scss/_breadcrumb.scss +40 -0
  45. data/_sass/bootstrap/scss/_button-group.scss +142 -0
  46. data/_sass/bootstrap/scss/_buttons.scss +207 -0
  47. data/_sass/bootstrap/scss/_card.scss +239 -0
  48. data/_sass/bootstrap/scss/_carousel.scss +244 -0
  49. data/_sass/bootstrap/scss/_close.scss +63 -0
  50. data/_sass/bootstrap/scss/_containers.scss +41 -0
  51. data/_sass/bootstrap/scss/_dropdown.scss +250 -0
  52. data/_sass/bootstrap/scss/_forms.scss +9 -0
  53. data/_sass/bootstrap/scss/_functions.scss +302 -0
  54. data/_sass/bootstrap/scss/_grid.scss +39 -0
  55. data/_sass/bootstrap/scss/_helpers.scss +12 -0
  56. data/_sass/bootstrap/scss/_images.scss +42 -0
  57. data/_sass/bootstrap/scss/_list-group.scss +197 -0
  58. data/_sass/bootstrap/scss/_maps.scss +174 -0
  59. data/_sass/bootstrap/scss/_mixins.scss +42 -0
  60. data/_sass/bootstrap/scss/_modal.scss +237 -0
  61. data/_sass/bootstrap/scss/_nav.scss +209 -0
  62. data/_sass/bootstrap/scss/_navbar.scss +288 -0
  63. data/_sass/bootstrap/scss/_offcanvas.scss +146 -0
  64. data/_sass/bootstrap/scss/_pagination.scss +109 -0
  65. data/_sass/bootstrap/scss/_placeholders.scss +51 -0
  66. data/_sass/bootstrap/scss/_popover.scss +196 -0
  67. data/_sass/bootstrap/scss/_progress.scss +68 -0
  68. data/_sass/bootstrap/scss/_reboot.scss +610 -0
  69. data/_sass/bootstrap/scss/_root.scss +188 -0
  70. data/_sass/bootstrap/scss/_spinners.scss +85 -0
  71. data/_sass/bootstrap/scss/_tables.scss +164 -0
  72. data/_sass/bootstrap/scss/_toasts.scss +73 -0
  73. data/_sass/bootstrap/scss/_tooltip.scss +119 -0
  74. data/_sass/bootstrap/scss/_transitions.scss +27 -0
  75. data/_sass/bootstrap/scss/_type.scss +106 -0
  76. data/_sass/bootstrap/scss/_utilities.scss +806 -0
  77. data/_sass/bootstrap/scss/_variables-dark.scss +85 -0
  78. data/_sass/bootstrap/scss/_variables.scss +1743 -0
  79. data/_sass/bootstrap/scss/bootstrap-grid.scss +62 -0
  80. data/_sass/bootstrap/scss/bootstrap-reboot.scss +10 -0
  81. data/_sass/bootstrap/scss/bootstrap-utilities.scss +19 -0
  82. data/_sass/bootstrap/scss/bootstrap.scss +52 -0
  83. data/_sass/bootstrap/scss/forms/_floating-labels.scss +90 -0
  84. data/_sass/bootstrap/scss/forms/_form-check.scss +188 -0
  85. data/_sass/bootstrap/scss/forms/_form-control.scss +214 -0
  86. data/_sass/bootstrap/scss/forms/_form-range.scss +91 -0
  87. data/_sass/bootstrap/scss/forms/_form-select.scss +80 -0
  88. data/_sass/bootstrap/scss/forms/_form-text.scss +11 -0
  89. data/_sass/bootstrap/scss/forms/_input-group.scss +132 -0
  90. data/_sass/bootstrap/scss/forms/_labels.scss +36 -0
  91. data/_sass/bootstrap/scss/forms/_validation.scss +12 -0
  92. data/_sass/bootstrap/scss/helpers/_clearfix.scss +3 -0
  93. data/_sass/bootstrap/scss/helpers/_color-bg.scss +10 -0
  94. data/_sass/bootstrap/scss/helpers/_colored-links.scss +32 -0
  95. data/_sass/bootstrap/scss/helpers/_focus-ring.scss +5 -0
  96. data/_sass/bootstrap/scss/helpers/_icon-link.scss +25 -0
  97. data/_sass/bootstrap/scss/helpers/_position.scss +36 -0
  98. data/_sass/bootstrap/scss/helpers/_ratio.scss +26 -0
  99. data/_sass/bootstrap/scss/helpers/_stacks.scss +15 -0
  100. data/_sass/bootstrap/scss/helpers/_stretched-link.scss +15 -0
  101. data/_sass/bootstrap/scss/helpers/_text-truncation.scss +7 -0
  102. data/_sass/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
  103. data/_sass/bootstrap/scss/helpers/_vr.scss +8 -0
  104. data/_sass/bootstrap/scss/mixins/_alert.scss +18 -0
  105. data/_sass/bootstrap/scss/mixins/_backdrop.scss +14 -0
  106. data/_sass/bootstrap/scss/mixins/_banner.scss +7 -0
  107. data/_sass/bootstrap/scss/mixins/_border-radius.scss +78 -0
  108. data/_sass/bootstrap/scss/mixins/_box-shadow.scss +18 -0
  109. data/_sass/bootstrap/scss/mixins/_breakpoints.scss +127 -0
  110. data/_sass/bootstrap/scss/mixins/_buttons.scss +70 -0
  111. data/_sass/bootstrap/scss/mixins/_caret.scss +69 -0
  112. data/_sass/bootstrap/scss/mixins/_clearfix.scss +9 -0
  113. data/_sass/bootstrap/scss/mixins/_color-mode.scss +21 -0
  114. data/_sass/bootstrap/scss/mixins/_color-scheme.scss +7 -0
  115. data/_sass/bootstrap/scss/mixins/_container.scss +11 -0
  116. data/_sass/bootstrap/scss/mixins/_deprecate.scss +10 -0
  117. data/_sass/bootstrap/scss/mixins/_forms.scss +153 -0
  118. data/_sass/bootstrap/scss/mixins/_gradients.scss +47 -0
  119. data/_sass/bootstrap/scss/mixins/_grid.scss +151 -0
  120. data/_sass/bootstrap/scss/mixins/_image.scss +16 -0
  121. data/_sass/bootstrap/scss/mixins/_list-group.scss +26 -0
  122. data/_sass/bootstrap/scss/mixins/_lists.scss +7 -0
  123. data/_sass/bootstrap/scss/mixins/_pagination.scss +10 -0
  124. data/_sass/bootstrap/scss/mixins/_reset-text.scss +17 -0
  125. data/_sass/bootstrap/scss/mixins/_resize.scss +6 -0
  126. data/_sass/bootstrap/scss/mixins/_table-variants.scss +24 -0
  127. data/_sass/bootstrap/scss/mixins/_text-truncate.scss +8 -0
  128. data/_sass/bootstrap/scss/mixins/_transition.scss +26 -0
  129. data/_sass/bootstrap/scss/mixins/_utilities.scss +97 -0
  130. data/_sass/bootstrap/scss/mixins/_visually-hidden.scss +33 -0
  131. data/_sass/bootstrap/scss/tests/jasmine.js +18 -0
  132. data/_sass/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
  133. data/_sass/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
  134. data/_sass/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
  135. data/_sass/bootstrap/scss/tests/sass-true/register.js +15 -0
  136. data/_sass/bootstrap/scss/tests/sass-true/runner.js +19 -0
  137. data/_sass/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
  138. data/_sass/bootstrap/scss/utilities/_api.scss +47 -0
  139. data/_sass/bootstrap/scss/vendor/_rfs.scss +354 -0
  140. data/_sass/raikar09.scss +1 -0
  141. data/assets/css/fonts/IBMPlexMono-Light.woff +0 -0
  142. data/assets/css/fonts/IBMPlexMono-Light.woff2 +0 -0
  143. data/assets/css/fonts/Jost-Bold.woff +0 -0
  144. data/assets/css/fonts/Jost-Bold.woff2 +0 -0
  145. data/assets/css/fonts/Jost-Italic.woff +0 -0
  146. data/assets/css/fonts/Jost-Italic.woff2 +0 -0
  147. data/assets/css/fonts/Jost-Regular.woff +0 -0
  148. data/assets/css/fonts/Jost-Regular.woff2 +0 -0
  149. data/assets/css/fonts/Jost-SemiBold.woff +0 -0
  150. data/assets/css/fonts/Jost-SemiBold.woff2 +0 -0
  151. data/assets/css/fonts/Ubuntu-Regular.woff +0 -0
  152. data/assets/css/fonts/Ubuntu-Regular.woff2 +0 -0
  153. data/assets/css/fonts/ZillaSlab-Regular.woff +0 -0
  154. data/assets/css/fonts/ZillaSlab-Regular.woff2 +0 -0
  155. data/assets/css/style.scss +31 -0
  156. data/assets/img/bootstrap-icons.svg +1 -0
  157. data/assets/img/ico-1.svg +17 -0
  158. data/assets/img/ico-2.svg +12 -0
  159. data/assets/img/ico-3.svg +18 -0
  160. data/assets/img/ico-4.svg +19 -0
  161. data/assets/img/ico-5.svg +13 -0
  162. data/assets/img/ico-6.svg +22 -0
  163. data/assets/img/ico-account.svg +17 -0
  164. data/assets/img/ico-clock.svg +23 -0
  165. data/assets/img/ico-facebook-square.svg +1 -0
  166. data/assets/img/ico-facebook.svg +11 -0
  167. data/assets/img/ico-github.svg +1 -0
  168. data/assets/img/ico-home.svg +11 -0
  169. data/assets/img/ico-instagram.svg +13 -0
  170. data/assets/img/ico-linkedin.svg +1 -0
  171. data/assets/img/ico-location.svg +12 -0
  172. data/assets/img/ico-mail.svg +12 -0
  173. data/assets/img/ico-moon.svg +11 -0
  174. data/assets/img/ico-pen.svg +13 -0
  175. data/assets/img/ico-phone.svg +12 -0
  176. data/assets/img/ico-search.svg +16 -0
  177. data/assets/img/ico-sun.svg +11 -0
  178. data/assets/img/ico-tag.svg +11 -0
  179. data/assets/img/ico-twitter.svg +1 -0
  180. data/assets/img/ico-whatsapp.svg +12 -0
  181. data/assets/img/ico-youtube.svg +1 -0
  182. data/assets/img/image-2.png +0 -0
  183. data/assets/img/image.jpg +0 -0
  184. data/assets/img/logo.png +0 -0
  185. data/assets/js/bootstrap.bundle.min.js +7 -0
  186. data/assets/js/functions.js +14 -0
  187. data/assets/js/jquery.min.js +2 -0
  188. data/assets/js/script.js +7 -0
  189. metadata +279 -0
@@ -0,0 +1,393 @@
1
+ $prefix: bs-;
2
+ $enable-important-utilities: false;
3
+
4
+ // Important: Do not import rfs to check that the mixin just calls the appropriate functions from it
5
+ @import "../../mixins/utilities";
6
+
7
+ @mixin test-generate-utility($params...) {
8
+ @include assert() {
9
+ @include output() {
10
+ @include generate-utility($params...);
11
+ }
12
+
13
+ @include expect() {
14
+ @content;
15
+ }
16
+ }
17
+ }
18
+
19
+ @include describe(generate-utility) {
20
+ @include it("generates a utility class for each value") {
21
+ @include test-generate-utility(
22
+ (
23
+ property: "padding",
24
+ values: (small: .5rem, large: 2rem)
25
+ )
26
+ ) {
27
+ .padding-small {
28
+ padding: .5rem;
29
+ }
30
+
31
+ .padding-large {
32
+ padding: 2rem;
33
+ }
34
+ }
35
+ }
36
+
37
+ @include describe("global $enable-important-utilities: true") {
38
+ @include it("sets !important") {
39
+ $enable-important-utilities: true !global;
40
+
41
+ @include test-generate-utility(
42
+ (
43
+ property: "padding",
44
+ values: (small: .5rem, large: 2rem)
45
+ )
46
+ ) {
47
+ .padding-small {
48
+ padding: .5rem !important;
49
+ }
50
+
51
+ .padding-large {
52
+ padding: 2rem !important;
53
+ }
54
+ }
55
+
56
+ $enable-important-utilities: false !global;
57
+ }
58
+ }
59
+
60
+ @include describe("$utility") {
61
+ @include describe("values") {
62
+ @include it("supports null keys") {
63
+ @include test-generate-utility(
64
+ (
65
+ property: "padding",
66
+ values: (null: 1rem, small: .5rem, large: 2rem)
67
+ ),
68
+ ) {
69
+ .padding {
70
+ padding: 1rem;
71
+ }
72
+
73
+ .padding-small {
74
+ padding: .5rem;
75
+ }
76
+
77
+ .padding-large {
78
+ padding: 2rem;
79
+ }
80
+ }
81
+ }
82
+
83
+ @include it("ignores null values") {
84
+ @include test-generate-utility(
85
+ (
86
+ property: "padding",
87
+ values: (small: null, large: 2rem)
88
+ )
89
+ ) {
90
+ .padding-large {
91
+ padding: 2rem;
92
+ }
93
+ }
94
+ }
95
+
96
+ @include it("supports lists") {
97
+ @include test-generate-utility(
98
+ (
99
+ property: "padding",
100
+ values: 1rem 2rem
101
+ )
102
+ ) {
103
+ .padding-1rem {
104
+ padding: 1rem;
105
+ }
106
+
107
+ .padding-2rem {
108
+ padding: 2rem;
109
+ }
110
+ }
111
+ }
112
+
113
+ @include it("supports single values") {
114
+ @include test-generate-utility(
115
+ (
116
+ property: padding,
117
+ values: 1rem
118
+ )
119
+ ) {
120
+ .padding-1rem {
121
+ padding: 1rem;
122
+ }
123
+ }
124
+ }
125
+ }
126
+
127
+ @include describe("class & property") {
128
+ @include it("adds each property to the declaration") {
129
+ @include test-generate-utility(
130
+ (
131
+ class: padding-x,
132
+ property: padding-inline-start padding-inline-end,
133
+ values: 1rem
134
+ )
135
+ ) {
136
+ .padding-x-1rem {
137
+ padding-inline-start: 1rem;
138
+ padding-inline-end: 1rem;
139
+ }
140
+ }
141
+ }
142
+
143
+ @include it("uses the first property as class name") {
144
+ @include test-generate-utility(
145
+ (
146
+ property: padding-inline-start padding-inline-end,
147
+ values: 1rem
148
+ )
149
+ ) {
150
+ .padding-inline-start-1rem {
151
+ padding-inline-start: 1rem;
152
+ padding-inline-end: 1rem;
153
+ }
154
+ }
155
+ }
156
+
157
+ @include it("supports a null class to create classes straight from the values") {
158
+ @include test-generate-utility(
159
+ (
160
+ property: visibility,
161
+ class: null,
162
+ values: (
163
+ visible: visible,
164
+ invisible: hidden,
165
+ )
166
+ )
167
+ ) {
168
+ .visible {
169
+ visibility: visible;
170
+ }
171
+
172
+ .invisible {
173
+ visibility: hidden;
174
+ }
175
+ }
176
+ }
177
+ }
178
+
179
+ @include describe("state") {
180
+ @include it("Generates selectors for each states") {
181
+ @include test-generate-utility(
182
+ (
183
+ property: padding,
184
+ values: 1rem,
185
+ state: hover focus,
186
+ )
187
+ ) {
188
+ .padding-1rem {
189
+ padding: 1rem;
190
+ }
191
+
192
+ .padding-1rem-hover:hover {
193
+ padding: 1rem;
194
+ }
195
+
196
+ .padding-1rem-focus:focus {
197
+ padding: 1rem;
198
+ }
199
+ }
200
+ }
201
+ }
202
+
203
+ @include describe("css-var"){
204
+ @include it("sets a CSS variable instead of the property") {
205
+ @include test-generate-utility(
206
+ (
207
+ property: padding,
208
+ css-variable-name: padding,
209
+ css-var: true,
210
+ values: 1rem 2rem
211
+ )
212
+ ) {
213
+ .padding-1rem {
214
+ --bs-padding: 1rem;
215
+ }
216
+
217
+ .padding-2rem {
218
+ --bs-padding: 2rem;
219
+ }
220
+ }
221
+ }
222
+
223
+ @include it("defaults to class") {
224
+ @include test-generate-utility(
225
+ (
226
+ property: padding,
227
+ class: padding,
228
+ css-var: true,
229
+ values: 1rem 2rem
230
+ )
231
+ ) {
232
+ .padding-1rem {
233
+ --bs-padding: 1rem;
234
+ }
235
+
236
+ .padding-2rem {
237
+ --bs-padding: 2rem;
238
+ }
239
+ }
240
+ }
241
+ }
242
+
243
+ @include describe("local-vars") {
244
+ @include it("generates the listed variables") {
245
+ @include test-generate-utility(
246
+ (
247
+ property: color,
248
+ class: desaturated-color,
249
+ local-vars: (
250
+ color-opacity: 1,
251
+ color-saturation: .25
252
+ ),
253
+ values: (
254
+ blue: hsla(192deg, var(--bs-color-saturation), 0, var(--bs-color-opacity))
255
+ )
256
+ )
257
+ ) {
258
+ .desaturated-color-blue {
259
+ --bs-color-opacity: 1;
260
+ // Sass compilation will put a leading zero so we want to keep that one
261
+ // stylelint-disable-next-line number-leading-zero
262
+ --bs-color-saturation: 0.25;
263
+ color: hsla(192deg, var(--bs-color-saturation), 0, var(--bs-color-opacity));
264
+ }
265
+ }
266
+ }
267
+ }
268
+
269
+ @include describe("css-var & state") {
270
+ @include it("Generates a rule with for each state with a CSS variable") {
271
+ @include test-generate-utility(
272
+ (
273
+ property: padding,
274
+ css-var: true,
275
+ css-variable-name: padding,
276
+ values: 1rem,
277
+ state: hover focus,
278
+ )
279
+ ) {
280
+ .padding-1rem {
281
+ --bs-padding: 1rem;
282
+ }
283
+
284
+ .padding-1rem-hover:hover {
285
+ --bs-padding: 1rem;
286
+ }
287
+
288
+ .padding-1rem-focus:focus {
289
+ --bs-padding: 1rem;
290
+ }
291
+ }
292
+ }
293
+ }
294
+
295
+ @include describe("rtl") {
296
+ @include it("sets up RTLCSS for removal when false") {
297
+ @include test-generate-utility(
298
+ (
299
+ property: padding,
300
+ values: 1rem,
301
+ rtl: false
302
+ )
303
+ ) {
304
+ /* rtl:begin:remove */
305
+
306
+ .padding-1rem {
307
+ padding: 1rem;
308
+ }
309
+
310
+ /* rtl:end:remove */
311
+
312
+ }
313
+ }
314
+ }
315
+
316
+ @include describe("rfs") {
317
+ @include it("sets the fluid value when not inside media query") {
318
+ @include test-generate-utility(
319
+ (
320
+ property: padding,
321
+ values: 1rem,
322
+ rfs: true
323
+ )
324
+ ) {
325
+ .padding-1rem {
326
+ padding: rfs-fluid-value(1rem);
327
+ }
328
+ }
329
+ }
330
+
331
+ @include it("sets the value when inside the media query") {
332
+ @include test-generate-utility(
333
+ (
334
+ property: padding,
335
+ values: 1rem,
336
+ rfs: true
337
+ ),
338
+ $is-rfs-media-query: true
339
+ ) {
340
+ .padding-1rem {
341
+ padding: rfs-value(1rem);
342
+ }
343
+ }
344
+ }
345
+ }
346
+ }
347
+
348
+ @include describe("$infix") {
349
+ @include it("inserts the given infix") {
350
+ @include test-generate-utility(
351
+ (
352
+ property: "padding",
353
+ values: (null: 1rem, small: .5rem, large: 2rem)
354
+ ),
355
+ $infix: -sm
356
+ ) {
357
+ .padding-sm {
358
+ padding: 1rem;
359
+ }
360
+
361
+ .padding-sm-small {
362
+ padding: .5rem;
363
+ }
364
+
365
+ .padding-sm-large {
366
+ padding: 2rem;
367
+ }
368
+ }
369
+ }
370
+
371
+ @include it("strips leading - if class is null") {
372
+ @include test-generate-utility(
373
+ (
374
+ property: visibility,
375
+ class: null,
376
+ values: (
377
+ visible: visible,
378
+ invisible: hidden,
379
+ )
380
+ ),
381
+ -sm
382
+ ) {
383
+ .sm-visible {
384
+ visibility: visible;
385
+ }
386
+
387
+ .sm-invisible {
388
+ visibility: hidden;
389
+ }
390
+ }
391
+ }
392
+ }
393
+ }
@@ -0,0 +1,15 @@
1
+ /* eslint-env node */
2
+
3
+ 'use strict'
4
+
5
+ const path = require('node:path')
6
+ const runnerPath = path.join(__dirname, 'runner').replace(/\\/g, '/')
7
+
8
+ require.extensions['.scss'] = (module, filename) => {
9
+ const normalizedFilename = filename.replace(/\\/g, '/')
10
+
11
+ return module._compile(`
12
+ const runner = require('${runnerPath}')
13
+ runner('${normalizedFilename}', { describe, it })
14
+ `, filename)
15
+ }
@@ -0,0 +1,19 @@
1
+ /* eslint-env node */
2
+
3
+ 'use strict'
4
+
5
+ const { runSass } = require('sass-true')
6
+ const fs = require('node:fs')
7
+ const path = require('node:path')
8
+
9
+ module.exports = (filename, { describe, it }) => {
10
+ const data = fs.readFileSync(filename, 'utf8')
11
+ const TRUE_SETUP = '$true-terminal-output: false; @import "true";'
12
+ const sassString = TRUE_SETUP + data
13
+
14
+ runSass(
15
+ { describe, it, sourceType: 'string' },
16
+ sassString,
17
+ { loadPaths: [path.dirname(filename)] }
18
+ )
19
+ }
@@ -0,0 +1,75 @@
1
+ @import "../../functions";
2
+ @import "../../variables";
3
+ @import "../../variables-dark";
4
+ @import "../../maps";
5
+ @import "../../mixins";
6
+
7
+ $utilities: ();
8
+
9
+ @include describe("utilities/api") {
10
+ @include it("generates utilities for each breakpoints") {
11
+ $utilities: (
12
+ margin: (
13
+ property: margin,
14
+ values: auto
15
+ ),
16
+ padding: (
17
+ property: padding,
18
+ responsive: true,
19
+ values: 1rem
20
+ ),
21
+ font-size: (
22
+ property: font-size,
23
+ values: (large: 1.25rem),
24
+ print: true
25
+ )
26
+ ) !global;
27
+
28
+ $grid-breakpoints: (
29
+ xs: 0,
30
+ sm: 333px,
31
+ md: 666px
32
+ ) !global;
33
+
34
+ @include assert() {
35
+ @include output() {
36
+ @import "../../utilities/api";
37
+ }
38
+
39
+ @include expect() {
40
+ // margin is not set to responsive
41
+ .margin-auto {
42
+ margin: auto !important;
43
+ }
44
+
45
+ // padding is, though
46
+ .padding-1rem {
47
+ padding: 1rem !important;
48
+ }
49
+
50
+ .font-size-large {
51
+ font-size: 1.25rem !important;
52
+ }
53
+
54
+ @media (min-width: 333px) {
55
+ .padding-sm-1rem {
56
+ padding: 1rem !important;
57
+ }
58
+ }
59
+
60
+ @media (min-width: 666px) {
61
+ .padding-md-1rem {
62
+ padding: 1rem !important;
63
+ }
64
+ }
65
+
66
+ @media print {
67
+ .font-size-print-large {
68
+ font-size: 1.25rem !important;
69
+ }
70
+ }
71
+ }
72
+
73
+ }
74
+ }
75
+ }
@@ -0,0 +1,47 @@
1
+ // Loop over each breakpoint
2
+ @each $breakpoint in map-keys($grid-breakpoints) {
3
+
4
+ // Generate media query if needed
5
+ @include media-breakpoint-up($breakpoint) {
6
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
7
+
8
+ // Loop over each utility property
9
+ @each $key, $utility in $utilities {
10
+ // The utility can be disabled with `false`, thus check if the utility is a map first
11
+ // Only proceed if responsive media queries are enabled or if it's the base media query
12
+ @if type-of($utility) == "map" and (map-get($utility, responsive) or $infix == "") {
13
+ @include generate-utility($utility, $infix);
14
+ }
15
+ }
16
+ }
17
+ }
18
+
19
+ // RFS rescaling
20
+ @media (min-width: $rfs-mq-value) {
21
+ @each $breakpoint in map-keys($grid-breakpoints) {
22
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
23
+
24
+ @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {
25
+ // Loop over each utility property
26
+ @each $key, $utility in $utilities {
27
+ // The utility can be disabled with `false`, thus check if the utility is a map first
28
+ // Only proceed if responsive media queries are enabled or if it's the base media query
29
+ @if type-of($utility) == "map" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == "") {
30
+ @include generate-utility($utility, $infix, true);
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+
37
+
38
+ // Print utilities
39
+ @media print {
40
+ @each $key, $utility in $utilities {
41
+ // The utility can be disabled with `false`, thus check if the utility is a map first
42
+ // Then check if the utility needs print styles
43
+ @if type-of($utility) == "map" and map-get($utility, print) == true {
44
+ @include generate-utility($utility, "-print");
45
+ }
46
+ }
47
+ }