@finqu/cool 1.2.29 → 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 (221) hide show
  1. package/README.md +694 -1
  2. package/dist/css/cool.css +26902 -14322
  3. package/dist/css/cool.css.map +1 -154
  4. package/dist/css/cool.min.css +2 -7
  5. package/dist/css/cool.min.css.map +1 -1
  6. package/dist/js/cool.bundle.js +16191 -5588
  7. package/dist/js/cool.bundle.js.map +1 -1
  8. package/dist/js/cool.bundle.min.js +13 -8
  9. package/dist/js/cool.bundle.min.js.map +1 -1
  10. package/dist/js/cool.esm.js +4722 -4812
  11. package/dist/js/cool.esm.js.map +1 -1
  12. package/dist/js/cool.esm.min.js +4 -9
  13. package/dist/js/cool.esm.min.js.map +1 -1
  14. package/dist/js/cool.js +5143 -5240
  15. package/dist/js/cool.js.map +1 -1
  16. package/dist/js/cool.min.js +4 -9
  17. package/dist/js/cool.min.js.map +1 -1
  18. package/package.json +125 -60
  19. package/scss/LISENCE +1 -1
  20. package/scss/_badge.scss +134 -102
  21. package/scss/_button-group.scss +80 -129
  22. package/scss/_buttons.scss +257 -201
  23. package/scss/_dark.scss +637 -0
  24. package/scss/_dialog.scss +314 -123
  25. package/scss/_dropdown.scss +165 -233
  26. package/scss/_forms.scss +555 -200
  27. package/scss/_frame.scss +945 -624
  28. package/scss/_grid.scss +215 -35
  29. package/scss/_input-group.scss +326 -285
  30. package/scss/_list-group.scss +127 -82
  31. package/scss/_media.scss +439 -0
  32. package/scss/_navbar.scss +116 -284
  33. package/scss/_notification.scss +111 -9
  34. package/scss/_pagination.scss +82 -88
  35. package/scss/_popover.scss +61 -167
  36. package/scss/_reboot.scss +306 -284
  37. package/scss/_root.scss +848 -15
  38. package/scss/_section.scss +735 -977
  39. package/scss/_select.scss +559 -187
  40. package/scss/_tables.scss +471 -595
  41. package/scss/_tabs.scss +50 -178
  42. package/scss/_toast.scss +242 -147
  43. package/scss/_tooltip.scss +130 -101
  44. package/scss/_typography.scss +166 -0
  45. package/scss/_variables.scss +1154 -748
  46. package/scss/cool.scss +64 -32
  47. package/scss/utilities/_align.scss +51 -41
  48. package/scss/utilities/_animation.scss +165 -0
  49. package/scss/utilities/_background.scss +72 -14
  50. package/scss/utilities/_borders.scss +205 -146
  51. package/scss/utilities/_collapse.scss +20 -25
  52. package/scss/utilities/_cursor.scss +160 -22
  53. package/scss/utilities/_display.scss +116 -16
  54. package/scss/utilities/_embed.scss +89 -78
  55. package/scss/utilities/_fill.scss +79 -0
  56. package/scss/utilities/_filters.scss +233 -0
  57. package/scss/utilities/_flex.scss +216 -52
  58. package/scss/utilities/_grid.scss +136 -0
  59. package/scss/utilities/_opacity.scss +131 -0
  60. package/scss/utilities/_overflow.scss +242 -6
  61. package/scss/utilities/_perfect-scrollbar.scss +147 -141
  62. package/scss/utilities/_pointer-events.scss +125 -0
  63. package/scss/utilities/_position.scss +130 -30
  64. package/scss/utilities/_screen-readers.scss +95 -0
  65. package/scss/utilities/_shadows.scss +195 -0
  66. package/scss/utilities/_sizing.scss +288 -32
  67. package/scss/utilities/_spacing.scss +168 -92
  68. package/scss/utilities/_stroke.scss +124 -0
  69. package/scss/utilities/_text.scss +420 -99
  70. package/scss/utilities/_transform.scss +232 -0
  71. package/scss/utilities/_transitions.scss +147 -0
  72. package/scss/utilities/_user-select.scss +89 -10
  73. package/scss/utilities/_visibility.scss +62 -6
  74. package/scss/utilities/_z-index.scss +169 -0
  75. package/.babelrc.js +0 -20
  76. package/.browserslistrc +0 -13
  77. package/build/.eslintrc.json +0 -10
  78. package/build/banner.js +0 -14
  79. package/build/build-plugins.js +0 -92
  80. package/build/rollup.config.js +0 -46
  81. package/dist/css/cool-grid.css +0 -4390
  82. package/dist/css/cool-grid.css.map +0 -30
  83. package/dist/css/cool-grid.min.css +0 -7
  84. package/dist/css/cool-grid.min.css.map +0 -1
  85. package/dist/css/cool-reboot.css +0 -286
  86. package/dist/css/cool-reboot.css.map +0 -62
  87. package/dist/css/cool-reboot.min.css +0 -7
  88. package/dist/css/cool-reboot.min.css.map +0 -1
  89. package/html/index.html +0 -2703
  90. package/js/dist/collapse.js +0 -5535
  91. package/js/dist/collapse.js.map +0 -1
  92. package/js/dist/common.js +0 -21996
  93. package/js/dist/common.js.map +0 -1
  94. package/js/dist/cooldropdown.js +0 -467
  95. package/js/dist/cooldropdown.js.map +0 -1
  96. package/js/dist/coolpopover.js +0 -391
  97. package/js/dist/coolpopover.js.map +0 -1
  98. package/js/dist/coolsectiontabs.js +0 -256
  99. package/js/dist/coolsectiontabs.js.map +0 -1
  100. package/js/dist/coolselect.js +0 -796
  101. package/js/dist/coolselect.js.map +0 -1
  102. package/js/dist/cooltooltip.js +0 -360
  103. package/js/dist/cooltooltip.js.map +0 -1
  104. package/js/dist/coolui.js +0 -73
  105. package/js/dist/coolui.js.map +0 -1
  106. package/js/dist/dropdown.js +0 -27421
  107. package/js/dist/dropdown.js.map +0 -1
  108. package/js/dist/popover.js +0 -9472
  109. package/js/dist/popover.js.map +0 -1
  110. package/js/dist/sectiontabs.js +0 -4483
  111. package/js/dist/sectiontabs.js.map +0 -1
  112. package/js/dist/select.js +0 -37080
  113. package/js/dist/select.js.map +0 -1
  114. package/js/dist/tooltip.js +0 -8786
  115. package/js/dist/tooltip.js.map +0 -1
  116. package/js/index.esm.js +0 -21
  117. package/js/index.umd.js +0 -21
  118. package/js/src/abstract-ui-component.js +0 -81
  119. package/js/src/collapse.js +0 -286
  120. package/js/src/common.js +0 -296
  121. package/js/src/dialog.js +0 -579
  122. package/js/src/dropdown.js +0 -525
  123. package/js/src/popover.js +0 -632
  124. package/js/src/section-tabs.js +0 -215
  125. package/js/src/select.js +0 -1342
  126. package/js/src/toast.js +0 -581
  127. package/js/src/tooltip.js +0 -591
  128. package/js/src/util/animate-css.js +0 -22
  129. package/js/src/util/index.js +0 -122
  130. package/js/src/util/perfect-scrollbar.js +0 -1316
  131. package/less/alert.less +0 -345
  132. package/less/badge.less +0 -38
  133. package/less/bootstrap-noconflict.less +0 -23
  134. package/less/bootstrap.less +0 -23
  135. package/less/button-group.less +0 -153
  136. package/less/buttons.less +0 -287
  137. package/less/dialog-noconflict.less +0 -174
  138. package/less/dialog.less +0 -203
  139. package/less/dropdown.less +0 -209
  140. package/less/forms.less +0 -770
  141. package/less/images.less +0 -242
  142. package/less/input-group.less +0 -163
  143. package/less/list-group.less +0 -73
  144. package/less/mixins/aspect-ratio.less +0 -23
  145. package/less/mixins/border-radius.less +0 -24
  146. package/less/mixins/box-shadow.less +0 -4
  147. package/less/mixins/buttons.less +0 -17
  148. package/less/mixins/caret.less +0 -51
  149. package/less/mixins/clearfix.less +0 -10
  150. package/less/mixins/gradients.less +0 -34
  151. package/less/mixins/nav-divider.less +0 -7
  152. package/less/mixins/object-fit.less +0 -13
  153. package/less/mixins/reset-text.less +0 -16
  154. package/less/mixins.less +0 -11
  155. package/less/package.json +0 -11
  156. package/less/pagination.less +0 -69
  157. package/less/popover.less +0 -143
  158. package/less/project.sublime-workspace +0 -774
  159. package/less/reboot.less +0 -235
  160. package/less/section.less +0 -793
  161. package/less/select.less +0 -150
  162. package/less/tables.less +0 -737
  163. package/less/tabs.less +0 -162
  164. package/less/tooltip.less +0 -87
  165. package/less/type.less +0 -71
  166. package/less/utilities/align.less +0 -27
  167. package/less/utilities/animate.less +0 -3512
  168. package/less/utilities/background.less +0 -70
  169. package/less/utilities/borders.less +0 -16
  170. package/less/utilities/color.less +0 -70
  171. package/less/utilities/cursor.less +0 -8
  172. package/less/utilities/display.less +0 -38
  173. package/less/utilities/embed.less +0 -61
  174. package/less/utilities/flex.less +0 -76
  175. package/less/utilities/jquery-ui.less +0 -116
  176. package/less/utilities/lazyload.less +0 -29
  177. package/less/utilities/overflow.less +0 -11
  178. package/less/utilities/pace.less +0 -25
  179. package/less/utilities/placeholder.less +0 -60
  180. package/less/utilities/position.less +0 -42
  181. package/less/utilities/scrollbar.less +0 -152
  182. package/less/utilities/spacing.less +0 -197
  183. package/less/utilities/text.less +0 -68
  184. package/less/utilities/transform.less +0 -7
  185. package/less/utilities.less +0 -21
  186. package/less/variables.less +0 -343
  187. package/scss/_alert.scss +0 -102
  188. package/scss/_custom-forms.scss +0 -444
  189. package/scss/_functions.scss +0 -124
  190. package/scss/_images.scss +0 -361
  191. package/scss/_mixins.scss +0 -34
  192. package/scss/_type.scss +0 -129
  193. package/scss/_utilities.scss +0 -23
  194. package/scss/cool-grid.scss +0 -29
  195. package/scss/cool-reboot.scss +0 -11
  196. package/scss/mixins/_alert-variant.scss +0 -20
  197. package/scss/mixins/_aspect-ratio.scss +0 -29
  198. package/scss/mixins/_background-variant.scss +0 -25
  199. package/scss/mixins/_badge-variant.scss +0 -36
  200. package/scss/mixins/_breakpoints.scss +0 -102
  201. package/scss/mixins/_buttons.scss +0 -104
  202. package/scss/mixins/_caret.scss +0 -80
  203. package/scss/mixins/_clearfix.scss +0 -10
  204. package/scss/mixins/_float.scss +0 -14
  205. package/scss/mixins/_forms.scss +0 -67
  206. package/scss/mixins/_gradients.scss +0 -40
  207. package/scss/mixins/_grid-framework.scss +0 -72
  208. package/scss/mixins/_grid.scss +0 -60
  209. package/scss/mixins/_nav-divider.scss +0 -9
  210. package/scss/mixins/_notification-variant.scss +0 -7
  211. package/scss/mixins/_object-fit.scss +0 -16
  212. package/scss/mixins/_reset-text.scss +0 -19
  213. package/scss/mixins/_text-emphasis.scss +0 -21
  214. package/scss/mixins/_text-hide.scss +0 -10
  215. package/scss/mixins/_text-truncate.scss +0 -81
  216. package/scss/mixins/_visibility.scss +0 -7
  217. package/scss/project.sublime-workspace +0 -491
  218. package/scss/utilities/_animate.scss +0 -3512
  219. package/scss/utilities/_clearfix.scss +0 -6
  220. package/scss/utilities/_lazyload.scss +0 -31
  221. package/scss/utilities/_placeholder.scss +0 -77
@@ -1,444 +0,0 @@
1
- // Custom forms
2
- // ---------------------------------------------------------------------------------------------------------------
3
-
4
- // Animations
5
- @keyframes wave {
6
- 50% {transform: scale(.9);}
7
- }
8
-
9
-
10
- $check-color: theme-color('info');
11
- $check-border-color: $grey-200;
12
- $check-border-width: 2px;
13
- $check-radius: 6px;
14
-
15
- // Styled checkbox
16
- .styled-checkbox {
17
- line-height: 0;
18
-
19
- label {
20
- display: inline-flex;
21
- align-items: center;
22
- margin: auto;
23
- user-select: none;
24
- cursor: pointer;
25
-
26
- > span {
27
- display: inline-block;
28
- vertical-align: middle;
29
-
30
- &:first-child {
31
- position: relative;
32
- width: 17px;
33
- height: 17px;
34
- min-width: 17px;
35
- min-height: 17px;
36
- border-radius: $check-radius;
37
- transform: scale(1);
38
- vertical-align: middle;
39
- border: $check-border-width solid $check-border-color;
40
- transition: all .2s ease;
41
-
42
- svg {
43
- position: absolute;
44
- top: 4px;
45
- left: 3px;
46
- fill: none;
47
- stroke: #ffffff;
48
- stroke-width: 2;
49
- stroke-linecap: round;
50
- stroke-linejoin: round;
51
- stroke-dasharray: 16px;
52
- stroke-dashoffset: 16px;
53
- transition: all .3s ease;
54
- transition-delay: .1s;
55
- }
56
-
57
- &:before {
58
- content: '';
59
- width: 100%;
60
- height: 100%;
61
- background: $check-color;
62
- display: block;
63
- transform: scale(0);
64
- opacity: 1;
65
- border-radius: $check-radius;
66
- }
67
- }
68
-
69
- &.checkbox-label {
70
- width: 100%;
71
- padding-left: 8px;
72
- overflow: hidden;
73
- text-overflow: ellipsis;
74
- @include reset-text;
75
- }
76
- }
77
-
78
- &:hover > span:first-child {
79
- border-color: $check-color;
80
- }
81
- }
82
-
83
- input[type="checkbox"] {
84
- display: none;
85
- }
86
-
87
- input[type="checkbox"]:checked + label {
88
- > span {
89
- &:first-child {
90
- background: $check-color;
91
- border-color: $check-color;
92
- animation: wave .4s ease;
93
-
94
- svg {
95
- stroke-dashoffset: 0;
96
- }
97
-
98
- &:before {
99
- transform: scale(3.5);
100
- opacity: 0;
101
- transition: all .6s ease;
102
- }
103
- }
104
- }
105
- }
106
-
107
- input[type="checkbox"]:disabled + label,
108
- input[type="checkbox"].disabled + label {
109
- > span {
110
- &:first-child {
111
- cursor: not-allowed;
112
- background-color: theme-color('light');
113
- border: $check-border-width solid $check-border-color;
114
- opacity: 0.35;
115
- }
116
- }
117
-
118
- &:hover {
119
- > span {
120
- &:first-child {
121
- border: $check-border-width solid $check-border-color;
122
- }
123
- }
124
- }
125
- }
126
- }
127
-
128
-
129
- // Styled radio
130
- .styled-radio {
131
- line-height: 0;
132
-
133
- label {
134
- display: inline-flex;
135
- align-items: center;
136
- margin: auto;
137
- user-select: none;
138
- cursor: pointer;
139
-
140
- > span {
141
- display: inline-block;
142
- vertical-align: middle;
143
-
144
- &:first-child {
145
- position: relative;
146
- width: 17px;
147
- height: 17px;
148
- min-width: 17px;
149
- min-height: 17px;
150
- border-radius: 50%;
151
- transform: scale(1);
152
- vertical-align: middle;
153
- border: $check-border-width solid $check-border-color;
154
- transition: all .2s ease;
155
-
156
- svg {
157
- position: absolute;
158
- top: 4px;
159
- left: 3px;
160
- fill: none;
161
- stroke: #ffffff;
162
- stroke-width: 2;
163
- stroke-linecap: round;
164
- stroke-linejoin: round;
165
- stroke-dasharray: 16px;
166
- stroke-dashoffset: 16px;
167
- transition: all .3s ease;
168
- transition-delay: .1s;
169
- }
170
-
171
- &:before {
172
- content: '';
173
- width: 100%;
174
- height: 100%;
175
- background: $check-color;
176
- display: block;
177
- transform: scale(0);
178
- opacity: 1;
179
- border-radius: 50%;
180
- }
181
- }
182
-
183
- &.radio-label {
184
- width: 100%;
185
- padding-left: 8px;
186
- overflow: hidden;
187
- text-overflow: ellipsis;
188
- @include reset-text;
189
- }
190
- }
191
-
192
- &:hover > span:first-child {
193
- border-color: $check-color;
194
- }
195
- }
196
-
197
- input[type="radio"] {
198
- display: none;
199
- }
200
-
201
- input[type="radio"]:checked + label {
202
- > span {
203
- &:first-child {
204
- background: $check-color;
205
- border-color: $check-color;
206
- animation: wave .4s ease;
207
-
208
- svg {
209
- stroke-dashoffset: 0;
210
- }
211
-
212
- &:before {
213
- transform: scale(3.5);
214
- opacity: 0;
215
- transition: all .6s ease;
216
- }
217
- }
218
- }
219
- }
220
-
221
- input[type="radio"]:disabled + label,
222
- input[type="radio"].disabled + label {
223
- > span {
224
- &:first-child {
225
- cursor: not-allowed;
226
- background-color: theme-color('light');
227
- border: $check-border-width solid $check-border-color;
228
- opacity: 0.35;
229
- }
230
- }
231
-
232
- &:hover {
233
- > span {
234
- &:first-child {
235
- border: $check-border-width solid $check-border-color;
236
- }
237
- }
238
- }
239
- }
240
- }
241
-
242
- $onoffswitch-height: 20px;
243
-
244
- // ON/OFF Switch
245
- .onoffswitch {
246
- display: inline-flex;
247
- vertical-align: middle;
248
- position: relative;
249
- user-select: none;
250
- width: 40px;
251
- margin: 0 auto;
252
-
253
- & + label {
254
- margin-left: 10px;
255
- margin-bottom: 0;
256
- flex-basis: 0;
257
- flex-grow: 1;
258
- }
259
-
260
- .onoffswitch-checkbox {
261
- display: none;
262
- background: color('red');
263
-
264
- &:disabled {
265
- cursor: not-allowed;
266
- pointer-events: none;
267
-
268
- & + .onoffswitch-label {
269
- opacity: 0.4;
270
-
271
- &:hover {
272
- cursor: not-allowed;
273
- }
274
- }
275
- }
276
- }
277
-
278
- .onoffswitch-label {
279
- display: block;
280
- width: 100%;
281
- overflow: hidden;
282
- cursor: pointer;
283
- height: $onoffswitch-height;
284
- padding: 0;
285
- line-height: $onoffswitch-height;
286
- border: 2px solid $grey-600;
287
- border-radius: $onoffswitch-height;
288
- background-color: $grey-600;
289
- margin-bottom: 0;
290
- box-sizing: content-box;
291
- transition: background-color 0.3s ease-in, border-color 0.3s ease-in;
292
-
293
- &:before {
294
- content: '';
295
- display: block;
296
- width: $onoffswitch-height;
297
- height: $onoffswitch-height;
298
- margin: 0px;
299
- background: #ffffff;
300
- position: absolute;
301
- top: 0;
302
- right: 16px;
303
- bottom: 0;
304
- border: 2px solid $grey-600;
305
- border-radius: $onoffswitch-height;
306
- transition: background-color 0.3s ease-in, border-color 0.3s ease-in, right 0.3s ease-in;
307
- box-sizing: content-box;
308
- }
309
- }
310
-
311
- .onoffswitch-checkbox:checked + .onoffswitch-label {
312
- background-color: theme-color('brand');
313
- }
314
-
315
- .onoffswitch-checkbox:checked + .onoffswitch-label,
316
- .onoffswitch-checkbox:checked + .onoffswitch-label:before {
317
- border-color: theme-color('brand');
318
- }
319
-
320
- .onoffswitch-checkbox:checked + .onoffswitch-label:before {
321
- right: 0px;
322
- }
323
- }
324
-
325
-
326
- // Form label gorup
327
- .form-label-group {
328
- position: relative;
329
-
330
- select {
331
- -webkit-appearance: none;
332
-
333
- @-moz-document url-prefix() {
334
- text-indent: -2px;
335
- }
336
- }
337
-
338
- & > input, select, textarea, label,
339
- & > .input-group > label {
340
- padding: $input-padding-y-lg $input-padding-x-lg;
341
- }
342
-
343
- & > label,
344
- & > .input-group > label {
345
- position: absolute;
346
- top: 0;
347
- left: 0;
348
- display: block;
349
- width: 100%;
350
- margin-bottom: 0;
351
- line-height: $input-line-height-lg;
352
- color: $input-placeholder-color;
353
- border: 1px solid transparent;
354
- border-radius: $border-radius;
355
- transition: all .1s ease-in-out;
356
- pointer-events: none;
357
- font-size: $input-font-size-lg;
358
- white-space: nowrap;
359
- text-overflow: ellipsis;
360
- overflow: hidden;
361
- }
362
-
363
- input::-webkit-input-placeholder,
364
- input:-ms-input-placeholder,
365
- input::-ms-input-placeholder,
366
- input::-moz-placeholder,
367
- input::placeholder {
368
- color: transparent;
369
- }
370
-
371
- &:not(.label-on-top) .show-when-label-on-top {
372
- display: none;
373
- }
374
-
375
- &.label-on-top {
376
- input, select, textarea {
377
- padding-top: calc(#{$input-padding-y-lg} + #{$input-padding-y-lg} * (2 / 3));
378
- padding-bottom: calc(#{$input-padding-y-lg} / 3);
379
-
380
- & ~ label {
381
- padding-top: calc(#{$input-padding-y-lg} / 3);
382
- padding-bottom: calc(#{$input-padding-y-lg} / 3);
383
- font-size: $small-font-size;
384
- color: $input-placeholder-color;
385
- }
386
- }
387
- }
388
-
389
- input:-webkit-autofill {
390
- padding-top: calc(#{$input-padding-y-lg} + #{$input-padding-y-lg} * (2 / 3));
391
- padding-bottom: calc(#{$input-padding-y-lg} / 3);
392
-
393
- & ~ label {
394
- padding-top: calc(#{$input-padding-y-lg} / 3);
395
- padding-bottom: calc(#{$input-padding-y-lg} / 3);
396
- font-size: $small-font-size;
397
- color: $input-placeholder-color;
398
- }
399
- }
400
- }
401
-
402
-
403
- // Fake input
404
- .fake-input {
405
- background: $input-bg;
406
- border: 1px solid $border-color;
407
- line-height: $input-line-height;
408
- border-radius: $border-radius;
409
- height: $input-height;
410
- padding: $input-padding-y $input-padding-x;
411
- font-family: inherit;
412
- font-size: $font-size-base;
413
- box-sizing: border-box;
414
- }
415
-
416
-
417
- // Form contorl placeholder
418
- .form-control-placeholder {
419
- display: block;
420
- width: 100%;
421
- height: $input-height;
422
- padding: $input-padding-y $input-padding-x;
423
- font-family: $input-font-family;
424
- font-size: $input-font-size;
425
- line-height: input-line-height;
426
- color: $body-color;
427
- box-sizing: border-box;
428
- &.input-lg {
429
- padding: $input-padding-y-lg $input-padding-x-lg;
430
- font-size: $input-font-size-lg;
431
- height: $input-height-lg;
432
- line-height: $input-line-height-lg;
433
- }
434
- &.input-sm {
435
- padding: $input-padding-y-sm $input-padding-x-sm;
436
- font-size: $input-font-size-sm;
437
- height: $input-height-sm;
438
- line-height: $input-line-height-sm;
439
- }
440
- & + .input-validation {
441
- width: 100%;
442
- flex: 1;
443
- }
444
- }
@@ -1,124 +0,0 @@
1
- // Functions
2
- // ---------------------------------------------------------------------------------------------------------------
3
-
4
- // Ascending
5
- // Used to evaluate Sass maps like our grid breakpoints.
6
- @mixin _assert-ascending($map, $map-name) {
7
-
8
- $prev-key: null;
9
- $prev-num: null;
10
-
11
- @each $key, $num in $map {
12
- @if $prev-num == null or unit($num) == "%" {
13
- // Do nothing
14
- } @else if not comparable($prev-num, $num) {
15
- @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
16
- } @else if $prev-num >= $num {
17
- @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
18
- }
19
- $prev-key: $key;
20
- $prev-num: $num;
21
- }
22
- }
23
-
24
-
25
- // Starts at zero
26
- // Used to ensure the min-width of the lowest breakpoint starts at 0.
27
- @mixin _assert-starts-at-zero($map, $map-name: '$grid-breakpoints') {
28
-
29
- $values: map-values($map);
30
- $first-value: nth($values, 1);
31
-
32
- @if $first-value != 0 {
33
- @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
34
- }
35
- }
36
-
37
-
38
- // Make spacers
39
- @function spacer($key) {
40
-
41
- @if map-has-key($spacers, $key) {
42
- @return map-get($spacers, $key);
43
- }
44
-
45
- @warn "Unknown `#{$key}` in $spacers.";
46
- @return null;
47
- }
48
-
49
-
50
- // Replace `$search` with `$replace` in `$string`
51
- // Used on our SVG icon backgrounds for custom forms.
52
- //
53
- // @author Hugo Giraudel
54
- // @param {String} $string - Initial string
55
- // @param {String} $search - Substring to replace
56
- // @param {String} $replace ('') - New value
57
- // @return {String} - Updated string
58
- @function str-replace($string, $search, $replace: '') {
59
-
60
- $index: str-index($string, $search);
61
-
62
- @if $index {
63
- @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
64
- }
65
-
66
- @return $string;
67
- }
68
-
69
-
70
- // Color contrast
71
- @function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
72
-
73
- @if type-of($color) == 'color' {
74
-
75
- $r: red($color);
76
- $g: green($color);
77
- $b: blue($color);
78
-
79
- $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
80
-
81
- @if ($yiq >= $yiq-contrasted-threshold) {
82
- @return $dark;
83
- } @else {
84
- @return $light;
85
- }
86
- }
87
-
88
- @warn "`#{$color}` is not a color.";
89
- @return null;
90
- }
91
-
92
-
93
- // // Color
94
- @function color($key) {
95
-
96
- @if map-has-key($colors, $key) {
97
- @return map-get($colors, $key);
98
- }
99
-
100
- @warn "Unknown `#{$key}` in $colors.";
101
- @return null;
102
- }
103
-
104
-
105
- // Theme color
106
- @function theme-color($key) {
107
-
108
- @if map-has-key($theme-colors, $key) {
109
- @return map-get($theme-colors, $key);
110
- }
111
-
112
- @warn "Unknown `#{$key}` in $theme-colors.";
113
- @return null;
114
- }
115
-
116
- // Strip unit
117
- @function strip-unit($number) {
118
-
119
- @if type-of($number) == 'number' and not unitless($number) {
120
- @return $number / ($number * 0 + 1);
121
- }
122
-
123
- @return $number;
124
- }