bulma-rails 0.9.4 → 1.0.4

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 (143) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +86 -13
  3. data/app/assets/stylesheets/bulma.scss +4 -0
  4. data/app/assets/stylesheets/bulma_sass/_index.scss +10 -0
  5. data/app/assets/stylesheets/bulma_sass/base/_index.scss +6 -0
  6. data/app/assets/stylesheets/bulma_sass/base/animations.scss +15 -0
  7. data/app/assets/stylesheets/bulma_sass/base/generic.scss +240 -0
  8. data/app/assets/stylesheets/bulma_sass/base/minireset.scss +92 -0
  9. data/app/assets/stylesheets/bulma_sass/base/skeleton.scss +114 -0
  10. data/app/assets/stylesheets/bulma_sass/components/_index.scss +13 -0
  11. data/app/assets/stylesheets/bulma_sass/components/breadcrumb.scss +139 -0
  12. data/app/assets/stylesheets/bulma_sass/components/card.scss +162 -0
  13. data/app/assets/stylesheets/bulma_sass/components/dropdown.scss +188 -0
  14. data/app/assets/stylesheets/bulma_sass/components/menu.scss +165 -0
  15. data/app/assets/stylesheets/bulma_sass/components/message.scss +183 -0
  16. data/app/assets/stylesheets/bulma_sass/components/modal.scss +164 -0
  17. data/app/assets/stylesheets/bulma_sass/components/navbar.scss +799 -0
  18. data/app/assets/stylesheets/bulma_sass/components/pagination.scss +379 -0
  19. data/app/assets/stylesheets/bulma_sass/components/panel.scss +218 -0
  20. data/app/assets/stylesheets/bulma_sass/components/tabs.scss +273 -0
  21. data/app/assets/stylesheets/bulma_sass/elements/_index.scss +16 -0
  22. data/app/assets/stylesheets/bulma_sass/elements/block.scss +6 -0
  23. data/app/assets/stylesheets/bulma_sass/elements/box.scss +59 -0
  24. data/app/assets/stylesheets/bulma_sass/elements/button.scss +659 -0
  25. data/app/assets/stylesheets/bulma_sass/elements/content.scss +289 -0
  26. data/app/assets/stylesheets/bulma_sass/elements/delete.scss +6 -0
  27. data/app/assets/stylesheets/bulma_sass/elements/icon.scss +67 -0
  28. data/app/assets/stylesheets/bulma_sass/elements/image.scss +64 -0
  29. data/app/assets/stylesheets/bulma_sass/elements/loader.scss +15 -0
  30. data/app/assets/stylesheets/bulma_sass/elements/notification.scss +105 -0
  31. data/app/assets/stylesheets/bulma_sass/elements/progress.scss +115 -0
  32. data/app/assets/stylesheets/bulma_sass/elements/table.scss +261 -0
  33. data/app/assets/stylesheets/bulma_sass/elements/tag.scss +219 -0
  34. data/app/assets/stylesheets/bulma_sass/elements/title.scss +130 -0
  35. data/app/assets/stylesheets/bulma_sass/form/_index.scss +9 -0
  36. data/app/assets/stylesheets/bulma_sass/form/checkbox-radio.scss +36 -0
  37. data/app/assets/stylesheets/bulma_sass/form/file.scss +330 -0
  38. data/app/assets/stylesheets/bulma_sass/form/input-textarea.scss +115 -0
  39. data/app/assets/stylesheets/bulma_sass/form/select.scss +144 -0
  40. data/app/assets/stylesheets/bulma_sass/form/shared.scss +178 -0
  41. data/app/assets/stylesheets/bulma_sass/form/tools.scss +352 -0
  42. data/app/assets/stylesheets/bulma_sass/grid/_index.scss +5 -0
  43. data/app/assets/stylesheets/bulma_sass/grid/columns.scss +961 -0
  44. data/app/assets/stylesheets/bulma_sass/grid/grid.scss +209 -0
  45. data/app/assets/stylesheets/bulma_sass/helpers/_index.scss +15 -0
  46. data/app/assets/stylesheets/bulma_sass/helpers/aspect-ratio.scss +12 -0
  47. data/app/assets/stylesheets/bulma_sass/helpers/border.scss +15 -0
  48. data/app/assets/stylesheets/bulma_sass/helpers/color.scss +344 -0
  49. data/app/assets/stylesheets/bulma_sass/helpers/flexbox.scss +62 -0
  50. data/app/assets/stylesheets/bulma_sass/helpers/float.scss +28 -0
  51. data/app/assets/stylesheets/bulma_sass/helpers/gap.scss +24 -0
  52. data/app/assets/stylesheets/bulma_sass/helpers/other.scss +19 -0
  53. data/app/assets/stylesheets/bulma_sass/helpers/overflow.scss +21 -0
  54. data/app/assets/stylesheets/bulma_sass/helpers/position.scss +19 -0
  55. data/app/assets/stylesheets/bulma_sass/helpers/spacing.scss +64 -0
  56. data/app/assets/stylesheets/bulma_sass/helpers/typography.scss +174 -0
  57. data/app/assets/stylesheets/bulma_sass/helpers/visibility.scss +221 -0
  58. data/app/assets/stylesheets/bulma_sass/layout/_index.scss +9 -0
  59. data/app/assets/stylesheets/bulma_sass/layout/container.scss +59 -0
  60. data/app/assets/stylesheets/bulma_sass/layout/footer.scss +23 -0
  61. data/app/assets/stylesheets/bulma_sass/layout/hero.scss +273 -0
  62. data/app/assets/stylesheets/bulma_sass/layout/level.scss +107 -0
  63. data/app/assets/stylesheets/bulma_sass/layout/media.scss +106 -0
  64. data/app/assets/stylesheets/bulma_sass/layout/section.scss +38 -0
  65. data/app/assets/stylesheets/bulma_sass/themes/_index.scss +36 -0
  66. data/app/assets/stylesheets/bulma_sass/themes/dark.scss +57 -0
  67. data/app/assets/stylesheets/bulma_sass/themes/light.scss +147 -0
  68. data/app/assets/stylesheets/bulma_sass/themes/setup.scss +174 -0
  69. data/app/assets/stylesheets/bulma_sass/utilities/_index.scss +7 -0
  70. data/app/assets/stylesheets/bulma_sass/utilities/controls.scss +85 -0
  71. data/app/assets/stylesheets/bulma_sass/utilities/css-variables.scss +502 -0
  72. data/app/assets/stylesheets/bulma_sass/utilities/derived-variables.scss +112 -0
  73. data/app/assets/stylesheets/bulma_sass/utilities/extends.scss +34 -0
  74. data/app/assets/stylesheets/bulma_sass/utilities/functions.scss +310 -0
  75. data/app/assets/stylesheets/bulma_sass/utilities/initial-variables.scss +157 -0
  76. data/app/assets/stylesheets/bulma_sass/utilities/mixins.scss +462 -0
  77. data/bulma-rails.gemspec +4 -6
  78. metadata +83 -74
  79. data/app/assets/stylesheets/bulma.sass +0 -10
  80. data/app/assets/stylesheets/sass/base/_all.sass +0 -6
  81. data/app/assets/stylesheets/sass/base/animations.sass +0 -5
  82. data/app/assets/stylesheets/sass/base/generic.sass +0 -145
  83. data/app/assets/stylesheets/sass/base/helpers.sass +0 -1
  84. data/app/assets/stylesheets/sass/base/minireset.sass +0 -79
  85. data/app/assets/stylesheets/sass/components/_all.sass +0 -15
  86. data/app/assets/stylesheets/sass/components/breadcrumb.sass +0 -77
  87. data/app/assets/stylesheets/sass/components/card.sass +0 -103
  88. data/app/assets/stylesheets/sass/components/dropdown.sass +0 -83
  89. data/app/assets/stylesheets/sass/components/level.sass +0 -79
  90. data/app/assets/stylesheets/sass/components/media.sass +0 -59
  91. data/app/assets/stylesheets/sass/components/menu.sass +0 -59
  92. data/app/assets/stylesheets/sass/components/message.sass +0 -101
  93. data/app/assets/stylesheets/sass/components/modal.sass +0 -117
  94. data/app/assets/stylesheets/sass/components/navbar.sass +0 -446
  95. data/app/assets/stylesheets/sass/components/pagination.sass +0 -167
  96. data/app/assets/stylesheets/sass/components/panel.sass +0 -121
  97. data/app/assets/stylesheets/sass/components/tabs.sass +0 -176
  98. data/app/assets/stylesheets/sass/elements/_all.sass +0 -16
  99. data/app/assets/stylesheets/sass/elements/box.sass +0 -26
  100. data/app/assets/stylesheets/sass/elements/button.sass +0 -357
  101. data/app/assets/stylesheets/sass/elements/container.sass +0 -29
  102. data/app/assets/stylesheets/sass/elements/content.sass +0 -162
  103. data/app/assets/stylesheets/sass/elements/form.sass +0 -1
  104. data/app/assets/stylesheets/sass/elements/icon.sass +0 -46
  105. data/app/assets/stylesheets/sass/elements/image.sass +0 -73
  106. data/app/assets/stylesheets/sass/elements/notification.sass +0 -52
  107. data/app/assets/stylesheets/sass/elements/other.sass +0 -31
  108. data/app/assets/stylesheets/sass/elements/progress.sass +0 -73
  109. data/app/assets/stylesheets/sass/elements/table.sass +0 -134
  110. data/app/assets/stylesheets/sass/elements/tag.sass +0 -140
  111. data/app/assets/stylesheets/sass/elements/title.sass +0 -70
  112. data/app/assets/stylesheets/sass/form/_all.sass +0 -9
  113. data/app/assets/stylesheets/sass/form/checkbox-radio.sass +0 -22
  114. data/app/assets/stylesheets/sass/form/file.sass +0 -184
  115. data/app/assets/stylesheets/sass/form/input-textarea.sass +0 -66
  116. data/app/assets/stylesheets/sass/form/select.sass +0 -88
  117. data/app/assets/stylesheets/sass/form/shared.sass +0 -60
  118. data/app/assets/stylesheets/sass/form/tools.sass +0 -215
  119. data/app/assets/stylesheets/sass/grid/_all.sass +0 -5
  120. data/app/assets/stylesheets/sass/grid/columns.sass +0 -513
  121. data/app/assets/stylesheets/sass/grid/tiles.sass +0 -36
  122. data/app/assets/stylesheets/sass/helpers/_all.sass +0 -12
  123. data/app/assets/stylesheets/sass/helpers/color.sass +0 -39
  124. data/app/assets/stylesheets/sass/helpers/flexbox.sass +0 -35
  125. data/app/assets/stylesheets/sass/helpers/float.sass +0 -10
  126. data/app/assets/stylesheets/sass/helpers/other.sass +0 -14
  127. data/app/assets/stylesheets/sass/helpers/overflow.sass +0 -2
  128. data/app/assets/stylesheets/sass/helpers/position.sass +0 -7
  129. data/app/assets/stylesheets/sass/helpers/spacing.sass +0 -31
  130. data/app/assets/stylesheets/sass/helpers/typography.sass +0 -103
  131. data/app/assets/stylesheets/sass/helpers/visibility.sass +0 -122
  132. data/app/assets/stylesheets/sass/layout/_all.sass +0 -6
  133. data/app/assets/stylesheets/sass/layout/footer.sass +0 -11
  134. data/app/assets/stylesheets/sass/layout/hero.sass +0 -153
  135. data/app/assets/stylesheets/sass/layout/section.sass +0 -17
  136. data/app/assets/stylesheets/sass/utilities/_all.sass +0 -9
  137. data/app/assets/stylesheets/sass/utilities/animations.sass +0 -1
  138. data/app/assets/stylesheets/sass/utilities/controls.sass +0 -49
  139. data/app/assets/stylesheets/sass/utilities/derived-variables.sass +0 -114
  140. data/app/assets/stylesheets/sass/utilities/extends.sass +0 -25
  141. data/app/assets/stylesheets/sass/utilities/functions.sass +0 -135
  142. data/app/assets/stylesheets/sass/utilities/initial-variables.sass +0 -79
  143. data/app/assets/stylesheets/sass/utilities/mixins.sass +0 -303
@@ -0,0 +1,502 @@
1
+ @use "sass:color";
2
+ @use "sass:list";
3
+ @use "sass:map";
4
+ @use "sass:math";
5
+
6
+ @use "initial-variables" as iv;
7
+ @use "functions" as fn;
8
+
9
+ @function buildVarName($name, $prefix: "", $suffix: "") {
10
+ @return "--#{iv.$cssvars-prefix}#{$prefix}#{$name}#{$suffix}";
11
+ }
12
+
13
+ @function buildHslaString($name, $l, $a: 1) {
14
+ $lightness: getVar($name, "", "-l");
15
+ @if ($l) {
16
+ $lightness: $l;
17
+ }
18
+ @return "hsla(#{getVar($name, '', '-h')}, #{getVar($name, '', '-s')}, #{$lightness}, #{$a})";
19
+ }
20
+
21
+ @function getVar($name, $prefix: "", $suffix: "") {
22
+ $varName: buildVarName($name, $prefix, $suffix);
23
+ @return var(#{$varName});
24
+ }
25
+
26
+ @function getVarWithBackup($name, $backup, $prefix: "", $suffix: "") {
27
+ $varName: buildVarName($name, $prefix, $suffix);
28
+ $backupName: buildVarName($backup, $prefix, $suffix);
29
+ @return var(#{$varName}, var(#{$backupName}));
30
+ }
31
+
32
+ @function getRgbaVar($name, $alpha, $prefix: "", $suffix: "") {
33
+ $varName: buildVarName($name, $prefix, $suffix);
34
+ @return unquote("rgba(var(#{$varName}), #{$alpha})");
35
+ }
36
+
37
+ @mixin register-var($name, $value, $prefix: "", $suffix: "") {
38
+ $varName: buildVarName($name, $prefix, $suffix);
39
+ #{$varName}: #{$value};
40
+ }
41
+
42
+ @mixin register-vars($vars, $prefix: "", $suffix: "") {
43
+ @each $name, $value in $vars {
44
+ @include register-var($name, $value, $prefix, $suffix);
45
+ }
46
+ }
47
+
48
+ @mixin register-rgb($name, $value) {
49
+ @include register-var(
50
+ $name,
51
+ (
52
+ color.channel($value, "red", $space: rgb),
53
+ color.channel($value, "green", $space: rgb),
54
+ color.channel($value, "blue", $space: rgb)
55
+ ),
56
+ "",
57
+ "-rgb"
58
+ );
59
+ }
60
+
61
+ @mixin register-hsl($name, $value) {
62
+ @include register-var(
63
+ $name,
64
+ math.round(color.channel($value, "hue", $space: hsl)),
65
+ "",
66
+ "-h"
67
+ );
68
+ @include register-var(
69
+ $name,
70
+ math.round(color.channel($value, "saturation", $space: hsl)),
71
+ "",
72
+ "-s"
73
+ );
74
+ @include register-var(
75
+ $name,
76
+ math.round(color.channel($value, "lightness", $space: hsl)),
77
+ "",
78
+ "-l"
79
+ );
80
+ }
81
+
82
+ @mixin generate-on-scheme-colors($name, $base, $scheme-main) {
83
+ // Accessibility Contrast System
84
+ $scheme-main-brightness: fn.bulmaColorBrightness($scheme-main);
85
+ $on-scheme-color: $base;
86
+ $fg-lum: fn.bulmaColorLuminance($on-scheme-color);
87
+ $bg-lum: fn.bulmaColorLuminance($scheme-main);
88
+ $ratio: 0;
89
+ $found-decent-color: false;
90
+
91
+ @if ($fg-lum > $bg-lum) {
92
+ @for $i from 0 through 20 {
93
+ $ratio: math.div(($fg-lum + 0.05), ($bg-lum + 0.05));
94
+
95
+ @if $ratio > 5 {
96
+ $found-decent-color: true;
97
+ } @else {
98
+ $on-scheme-color: color.adjust(
99
+ $on-scheme-color,
100
+ $lightness: 5%,
101
+ $space: hsl
102
+ );
103
+ $fg-lum: fn.bulmaColorLuminance($on-scheme-color);
104
+ }
105
+ }
106
+ } @else {
107
+ @for $i from 0 through 20 {
108
+ $ratio: math.div(($bg-lum + 0.05), ($fg-lum + 0.05));
109
+
110
+ @if $ratio > 5 {
111
+ $found-decent-color: true;
112
+ } @else {
113
+ $on-scheme-color: color.adjust(
114
+ $on-scheme-color,
115
+ $lightness: -5%,
116
+ $space: hsl
117
+ );
118
+ $fg-lum: fn.bulmaColorLuminance($on-scheme-color);
119
+ }
120
+ }
121
+ }
122
+
123
+ $on-scheme-lightness: color.channel(
124
+ $on-scheme-color,
125
+ "lightness",
126
+ $space: hsl
127
+ );
128
+ @include register-var($name, $on-scheme-lightness, "", "-on-scheme-l");
129
+ $on-scheme-l: getVar($name, "", "-on-scheme-l");
130
+ @include register-var(
131
+ "#{$name}-on-scheme",
132
+ buildHslaString($name, $on-scheme-l)
133
+ );
134
+ }
135
+
136
+ @mixin v1-generate-on-scheme-colors($name, $base, $scheme-main) {
137
+ // Accessibility Contrast System
138
+ $scheme-main-brightness: fn.bulmaColorBrightness($scheme-main);
139
+ $on-scheme-color: $base;
140
+
141
+ @if ($scheme-main-brightness == "bright") {
142
+ @while (fn.bulmaEnoughContrast($on-scheme-color, #fff) == false) {
143
+ // We're on a light background, so we'll darken the test color step by step.
144
+ $on-scheme-color: color.adjust(
145
+ $on-scheme-color,
146
+ $lightness: -5%,
147
+ $space: hsl
148
+ );
149
+ }
150
+ } @else {
151
+ @while (fn.bulmaEnoughContrast($on-scheme-color, #000) == false) {
152
+ // We're on a dark background, so we'll lighten the test color step by step.
153
+ $on-scheme-color: color.adjust(
154
+ $on-scheme-color,
155
+ $lightness: 5%,
156
+ $space: hsl
157
+ );
158
+ }
159
+ }
160
+
161
+ $on-scheme-lightness: color.channel(
162
+ $on-scheme-color,
163
+ "lightness",
164
+ $space: hsl
165
+ );
166
+ @include register-var($name, $on-scheme-lightness, "", "-on-scheme-l");
167
+ }
168
+
169
+ @mixin register-base-color($name, $base) {
170
+ $hsla: buildHslaString($name, getVar($name, "", "-l"));
171
+ @include register-var($name, $hsla);
172
+ @include register-var($name, $hsla, "", "-base"); // Just for reference
173
+ @include register-rgb($name, $base);
174
+ @include register-hsl($name, $base);
175
+ }
176
+
177
+ @mixin generate-basic-palette($name, $base, $invert: null) {
178
+ @include register-base-color($name, $base);
179
+
180
+ @if $invert {
181
+ @include register-var(
182
+ $name,
183
+ color.channel($invert, "lightness", $space: hsl),
184
+ "",
185
+ "-invert-l"
186
+ );
187
+ @include register-var("#{$name}-invert", $invert);
188
+ }
189
+ }
190
+
191
+ @mixin generate-color-palette(
192
+ $name,
193
+ $base,
194
+ $scheme-main-l: 100%,
195
+ $invert: null,
196
+ $light: null,
197
+ $dark: null
198
+ ) {
199
+ $h:math.round(color.channel($base, "hue", $space: hsl)); // Hue
200
+ $s:math.round(color.channel($base, "saturation", $space: hsl)); // Saturation
201
+ $l:math.round(color.channel($base, "lightness", $space: hsl)); // Lightness
202
+ $base-lum: fn.bulmaColorLuminance($base);
203
+ $l-base: math.round($l % 10); // Get lightness second digit: 53% -> 3%
204
+ $l-0: 0%; // 5% or less
205
+ $l-5: 5%; // More than 5%
206
+ $a: 1; // Alpha
207
+ $base-digits: "00";
208
+
209
+ // Calculate digits like "40" for the scheme-main
210
+ $scheme-l-0: 0%;
211
+ $scheme-l-base: math.round($scheme-main-l % 10);
212
+ $closest-5: math.round(math.div($scheme-main-l, 5)) * 5;
213
+ $pct-to-int: math.div($closest-5, 100%) * 100;
214
+ $scheme-main-digits: #{$pct-to-int};
215
+
216
+ // === STEP 1 ===
217
+ // Register the base colors
218
+ @include register-base-color($name, $base);
219
+
220
+ // === STEP 2 ===
221
+ // Generating 20 shades of the color
222
+
223
+ // 00: 0%, 1%, 2%
224
+ // 05: 3%, 4%, 5%, 6%, 7%
225
+ // 10: 8%, 9%
226
+
227
+ @if ($l-base < 3%) {
228
+ $l-0: $l-base;
229
+ $l-5: $l-base + 5%;
230
+ } @else if ($l-base < 8%) {
231
+ // $l-0: math.max($l-base - 5%, 0%);
232
+ $l-0: $l-base - 5%;
233
+ $l-5: $l-base;
234
+ } @else {
235
+ // $l-0: math.max($l-base - 10%, 0%);
236
+ $l-0: $l-base - 10%;
237
+ $l-5: $l-base - 5%;
238
+ }
239
+
240
+ $shades: ();
241
+
242
+ @for $i from 0 through 9 {
243
+ // if $l-base = 3%, then we get 3%, 13%, 23%, 33% etc.
244
+ $color-l-0: math.max($l-0 + $i * 10, 0%);
245
+
246
+ // if $l-base = 3%, then we get 8%, 18%, 28%, 38% etc.
247
+ $color-l-5: $l-5 + $i * 10;
248
+
249
+ $shades: map.set($shades, "#{$i}0", $color-l-0);
250
+ $shades: map.set($shades, "#{$i}5", $color-l-5);
251
+
252
+ @include register-var($name, $color-l-0, "", "-#{$i}0-l");
253
+ @include register-var($name, $color-l-5, "", "-#{$i}5-l");
254
+
255
+ @if $color-l-0 == $l {
256
+ $base-digits: "#{$i}0";
257
+ } @else if $color-l-5 == $l {
258
+ $base-digits: "#{$i}5";
259
+ }
260
+ }
261
+
262
+ $l-100: math.min($l-0 + 100%, 100%);
263
+ $shades: map.set($shades, "100", $l-100);
264
+ @include register-var($name, $l-100, "", "-100-l");
265
+
266
+ // === STEP 3 ===
267
+ // Find accessible color combinations
268
+
269
+ $combos: ();
270
+
271
+ @each $digits-bg, $bg-l in $shades {
272
+ $background: hsl($h, $s, $bg-l);
273
+ $bg-lum: fn.bulmaColorLuminance($background);
274
+ $bg-is-light: $bg-lum > 0.55;
275
+ $candidates: ();
276
+ $found: false;
277
+
278
+ // If the background color is the base color
279
+ @if $bg-l == $l {
280
+ $base-digits: $digits-bg;
281
+
282
+ // Even if the base color as a background
283
+ // doesn't have an appropriate foreground,
284
+ // we still add to the list of "valid" contrast combos for now.
285
+ @if $bg-is-light {
286
+ $combos: map.set($combos, $base-digits, "10");
287
+ } @else {
288
+ $combos: map.set($combos, $base-digits, "100");
289
+ }
290
+ }
291
+
292
+ // We capture all contrast ratios for any given background
293
+ // using all foreground options
294
+ $current-best-digits: "00";
295
+ $current-best-ratio: 0;
296
+
297
+ @each $digits-fg, $fg-l in $shades {
298
+ $foreground: hsl($h, $s, $fg-l);
299
+ $ratio: 0;
300
+ $is-light-fg: false;
301
+
302
+ // Source: https://www.w3.org/TR/WCAG20-TECHS/G17.html
303
+ $fg-lum: fn.bulmaColorLuminance($foreground);
304
+
305
+ @if (
306
+ color.channel($foreground, "lightness", $space: hsl) >
307
+ color.channel($background, "lightness", $space: hsl)
308
+ ) {
309
+ $is-light-fg: true;
310
+ $ratio: math.div(($fg-lum + 0.05), ($bg-lum + 0.05));
311
+ } @else {
312
+ $ratio: math.div(($bg-lum + 0.05), ($fg-lum + 0.05));
313
+ }
314
+
315
+ @if $ratio > 7 {
316
+ $candidates: list.append(
317
+ $candidates,
318
+ fn.bulmaStringToNumber($digits-fg)
319
+ );
320
+
321
+ @if ($is-light-fg) {
322
+ @if (not $found) {
323
+ // Store the background/foreground combination
324
+ $combos: map.set($combos, $digits-bg, $digits-fg);
325
+ $current-best-digits: $digits-fg;
326
+ $current-best-ratio: $ratio;
327
+ $found: true;
328
+ }
329
+ } @else {
330
+ $combos: map.set($combos, $digits-bg, $digits-fg);
331
+ $current-best-digits: $digits-fg;
332
+ $current-best-ratio: $ratio;
333
+ }
334
+ }
335
+ }
336
+
337
+ // We haven't found a decent ratio
338
+ @each $digits-fg, $fg-l in $shades {
339
+ @if (map.has-key($combos, $digits-bg) == false) {
340
+ @if ($bg-is-light) {
341
+ // Light background so we set a dark foreground
342
+ $combos: map.set($combos, $digits-bg, "00");
343
+ } @else {
344
+ // Dark background so we set a light foreground
345
+ $combos: map.set($combos, $digits-bg, "100");
346
+ }
347
+ }
348
+ }
349
+ }
350
+
351
+ // The output needs to be:
352
+ // --bulma-primary-invert-l: var(--bulma-primary-100-l);
353
+
354
+ @each $bg, $fg in $combos {
355
+ // Just using this loop to register all 20 digits
356
+ $bg-l: getVar($name, "", "-#{$bg}-l");
357
+ @include register-var("#{$name}-#{$bg}", buildHslaString($name, $bg-l));
358
+
359
+ // Register the lightness
360
+ @include register-var(
361
+ $name,
362
+ getVar($name, "", "-#{$fg}-l"),
363
+ "",
364
+ "-#{$bg}-invert-l"
365
+ );
366
+
367
+ // Resiter the color using that lightness
368
+ $bg-invert-l: getVar($name, "", "-#{$bg}-invert-l");
369
+ @include register-var(
370
+ "#{$name}-#{$bg}-invert",
371
+ buildHslaString($name, $bg-invert-l)
372
+ );
373
+ }
374
+
375
+ // If an invert color is provided by the user
376
+ @if $invert {
377
+ @include register-var(
378
+ $name,
379
+ color.channel($invert, "lightness", $space: hsl),
380
+ "",
381
+ "-invert-l"
382
+ );
383
+ @include register-var("#{$name}-invert", $invert);
384
+ } @else {
385
+ $base-invert-l-digits: map.get($combos, $base-digits);
386
+ @include register-var(
387
+ $name,
388
+ getVar($name, "", "-#{$base-invert-l-digits}-l"),
389
+ "",
390
+ "-invert-l"
391
+ );
392
+
393
+ $base-invert-l: getVar($name, "", "-invert-l");
394
+ @include register-var(
395
+ "#{$name}-invert",
396
+ buildHslaString($name, $base-invert-l)
397
+ );
398
+ }
399
+
400
+ // Good color on light background (90% lightness)
401
+ @if $light and $dark {
402
+ @include register-var(
403
+ $name,
404
+ color.channel($light, "lightness", $space: hsl),
405
+ "",
406
+ "-light-l"
407
+ );
408
+ @include register-var(
409
+ $name,
410
+ color.channel($light, "lightness", $space: hsl),
411
+ "",
412
+ "-dark-invert-l"
413
+ );
414
+ @include register-var("#{$name}-light", $light);
415
+ @include register-var("#{$name}-dark-invert", $light);
416
+
417
+ @include register-var(
418
+ $name,
419
+ color.channel($dark, "lightness", $space: hsl),
420
+ "",
421
+ "-dark-l"
422
+ );
423
+ @include register-var(
424
+ $name,
425
+ color.channel($dark, "lightness", $space: hsl),
426
+ "",
427
+ "-light-invert-l"
428
+ );
429
+ @include register-var("#{$name}-dark", $dark);
430
+ @include register-var("#{$name}-light-invert", $dark);
431
+ } @else {
432
+ @include register-var($name, getVar($name, "", "-90-l"), "", "-light-l");
433
+
434
+ $light-l: getVar($name, "", "-light-l");
435
+ @include register-var("#{$name}-light", buildHslaString($name, $light-l));
436
+
437
+ $light-invert-l-digits: map.get($combos, "90");
438
+ @include register-var(
439
+ $name,
440
+ getVar($name, "", "-#{$light-invert-l-digits}-l"),
441
+ "",
442
+ "-light-invert-l"
443
+ );
444
+
445
+ $light-invert-l: getVar($name, "", "-light-invert-l");
446
+ @include register-var(
447
+ "#{$name}-light-invert",
448
+ buildHslaString($name, $light-invert-l)
449
+ );
450
+
451
+ // Good color on dark background (10% lightness)
452
+ @include register-var($name, getVar($name, "", "-10-l"), "", "-dark-l");
453
+
454
+ $dark-l: getVar($name, "", "-dark-l");
455
+ @include register-var("#{$name}-dark", buildHslaString($name, $dark-l));
456
+
457
+ $dark-invert-l-digits: map.get($combos, "10");
458
+ @include register-var(
459
+ $name,
460
+ getVar($name, "", "-#{$dark-invert-l-digits}-l"),
461
+ "",
462
+ "-dark-invert-l"
463
+ );
464
+
465
+ $dark-invert-l: getVar($name, "", "-dark-invert-l");
466
+ @include register-var(
467
+ "#{$name}-dark-invert",
468
+ buildHslaString($name, $dark-invert-l)
469
+ );
470
+
471
+ // Soft and Bold colors
472
+ $soft-l: getVar("soft-l");
473
+ $soft-invert-l: getVar("soft-invert-l");
474
+ $bold-l: getVar("bold-l");
475
+ $bold-invert-l: getVar("bold-invert-l");
476
+ @include register-var("#{$name}-soft", buildHslaString($name, $soft-l));
477
+ @include register-var("#{$name}-bold", buildHslaString($name, $bold-l));
478
+ @include register-var(
479
+ "#{$name}-soft-invert",
480
+ buildHslaString($name, $soft-invert-l)
481
+ );
482
+ @include register-var(
483
+ "#{$name}-bold-invert",
484
+ buildHslaString($name, $bold-invert-l)
485
+ );
486
+ }
487
+ }
488
+
489
+ @mixin bulma-theme($name) {
490
+ [data-#{iv.$class-prefix}theme="#{$name}"],
491
+ .#{iv.$class-prefix}theme-#{$name} {
492
+ @content;
493
+ }
494
+ }
495
+
496
+ @mixin system-theme($name) {
497
+ @media (prefers-color-scheme: #{$name}) {
498
+ #{iv.$variables-host} {
499
+ @content;
500
+ }
501
+ }
502
+ }
@@ -0,0 +1,112 @@
1
+ @use "initial-variables" as iv;
2
+ @use "functions" as fn;
3
+
4
+ // Scheme colors
5
+
6
+ $scheme-main: iv.$white !default;
7
+ $scheme-main-bis: iv.$white-bis !default;
8
+ $scheme-main-ter: iv.$white-ter !default;
9
+ $scheme-invert: iv.$black !default;
10
+ $scheme-invert-bis: iv.$black-bis !default;
11
+ $scheme-invert-ter: iv.$black-ter !default;
12
+
13
+ // Text colors
14
+
15
+ $text: iv.$grey-dark !default;
16
+ $text-invert: fn.bulmaFindColorInvert($text) !default;
17
+ $text-weak: iv.$grey !default;
18
+ $text-strong: iv.$grey-darker !default;
19
+
20
+ // Status colors
21
+
22
+ $primary: iv.$turquoise !default;
23
+ $info: iv.$cyan !default;
24
+ $success: iv.$green !default;
25
+ $warning: iv.$yellow !default;
26
+ $danger: iv.$red !default;
27
+ $light: iv.$white-ter !default;
28
+ $dark: iv.$grey-darker !default;
29
+
30
+ // Link colors
31
+
32
+ $link: iv.$blue !default;
33
+
34
+ // Decorative colors
35
+
36
+ $background: iv.$white-ter !default;
37
+ $border: iv.$grey-lighter !default;
38
+ $border-weak: iv.$grey-lightest !default;
39
+
40
+ // Code colors
41
+
42
+ $code: iv.$red !default;
43
+ $code-background: $background !default;
44
+
45
+ $pre: $text !default;
46
+ $pre-background: $background !default;
47
+
48
+ // Typography
49
+
50
+ $family-primary: iv.$family-sans-serif !default;
51
+ $family-secondary: iv.$family-sans-serif !default;
52
+ $family-code: iv.$family-monospace !default;
53
+
54
+ $size-small: iv.$size-7 !default;
55
+ $size-normal: iv.$size-6 !default;
56
+ $size-medium: iv.$size-5 !default;
57
+ $size-large: iv.$size-4 !default;
58
+
59
+ // Effects
60
+
61
+ $shadow-color: iv.$black !default;
62
+
63
+ // Lists and maps
64
+ $custom-colors: null !default;
65
+ $custom-shades: null !default;
66
+
67
+ $colors: fn.mergeColorMaps(
68
+ (
69
+ "white": (
70
+ iv.$white,
71
+ iv.$black,
72
+ ),
73
+ "black": (
74
+ iv.$black,
75
+ iv.$white,
76
+ ),
77
+ "light": (
78
+ $light,
79
+ $dark,
80
+ ),
81
+ "dark": (
82
+ $dark,
83
+ $light,
84
+ ),
85
+ "text": $text,
86
+ "primary": $primary,
87
+ "link": $link,
88
+ "info": $info,
89
+ "success": $success,
90
+ "warning": $warning,
91
+ "danger": $danger,
92
+ ),
93
+ $custom-colors
94
+ ) !default;
95
+
96
+ $shades: fn.mergeColorMaps(
97
+ (
98
+ "black-bis": iv.$black-bis,
99
+ "black-ter": iv.$black-ter,
100
+ "grey-darker": iv.$grey-darker,
101
+ "grey-dark": iv.$grey-dark,
102
+ "grey": iv.$grey,
103
+ "grey-light": iv.$grey-light,
104
+ "grey-lighter": iv.$grey-lighter,
105
+ "white-ter": iv.$white-ter,
106
+ "white-bis": iv.$white-bis,
107
+ ),
108
+ $custom-shades
109
+ ) !default;
110
+
111
+ $sizes: iv.$size-1 iv.$size-2 iv.$size-3 iv.$size-4 iv.$size-5 iv.$size-6
112
+ iv.$size-7 !default;
@@ -0,0 +1,34 @@
1
+ @use "controls";
2
+ @use "mixins";
3
+
4
+ %arrow {
5
+ @include mixins.arrow;
6
+ }
7
+
8
+ %block {
9
+ @include mixins.block;
10
+ }
11
+
12
+ %control {
13
+ @include controls.control;
14
+ }
15
+
16
+ %delete {
17
+ @include mixins.delete;
18
+ }
19
+
20
+ %loader {
21
+ @include mixins.loader;
22
+ }
23
+
24
+ %overlay {
25
+ @include mixins.overlay;
26
+ }
27
+
28
+ %reset {
29
+ @include mixins.reset;
30
+ }
31
+
32
+ %unselectable {
33
+ @include mixins.unselectable;
34
+ }