@guebbit/css-toolkit 1.2.2 → 1.3.1

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 (84) hide show
  1. package/docs/.vitepress/config.ts +1 -1
  2. package/docs/.vitepress/dist/404.html +4 -4
  3. package/docs/.vitepress/dist/assets/app.CE7x4Dlp.js +1 -0
  4. package/docs/.vitepress/dist/assets/chunks/@localSearchIndexroot.CS_28jj8.js +1 -0
  5. package/docs/.vitepress/dist/assets/chunks/VPLocalSearchBox.TmXlq6CT.js +8 -0
  6. package/docs/.vitepress/dist/assets/chunks/framework.BZemHgQ6.js +18 -0
  7. package/docs/.vitepress/dist/assets/chunks/theme.BWSHCtHe.js +2 -0
  8. package/docs/.vitepress/dist/assets/{colors_bootstrap.md.B8QNot57.js → colors_bootstrap.md.CFg-dNGF.js} +1 -1
  9. package/docs/.vitepress/dist/assets/{colors_bootstrap.md.B8QNot57.lean.js → colors_bootstrap.md.CFg-dNGF.lean.js} +1 -1
  10. package/docs/.vitepress/dist/assets/colors_brands.md.CUxoS0ml.js +1 -0
  11. package/docs/.vitepress/dist/assets/colors_brands.md.CUxoS0ml.lean.js +1 -0
  12. package/docs/.vitepress/dist/assets/{colors_customs.md.B9XC2fYm.js → colors_customs.md.CnHhl84q.js} +1 -1
  13. package/docs/.vitepress/dist/assets/{colors_customs.md.B9XC2fYm.lean.js → colors_customs.md.CnHhl84q.lean.js} +1 -1
  14. package/docs/.vitepress/dist/assets/{functions_colors.md.8WIzA1Az.js → functions_colors.md.BsOBqU9L.js} +1 -1
  15. package/docs/.vitepress/dist/assets/functions_colors.md.BsOBqU9L.lean.js +1 -0
  16. package/docs/.vitepress/dist/assets/functions_helpers.md.B3A_IOEL.js +1 -0
  17. package/docs/.vitepress/dist/assets/functions_helpers.md.B3A_IOEL.lean.js +1 -0
  18. package/docs/.vitepress/dist/assets/{functions_strings.md.B-I-mSmy.js → functions_strings.md.BdV8Kx9J.js} +1 -1
  19. package/docs/.vitepress/dist/assets/{functions_strings.md.B-I-mSmy.lean.js → functions_strings.md.BdV8Kx9J.lean.js} +1 -1
  20. package/docs/.vitepress/dist/assets/{index.md.DO-yHYeM.js → index.md.Cn1TneoC.js} +1 -1
  21. package/docs/.vitepress/dist/assets/{index.md.DO-yHYeM.lean.js → index.md.Cn1TneoC.lean.js} +1 -1
  22. package/docs/.vitepress/dist/assets/{mixins_build-aspect-ratio.md.Cjv_a3MY.js → mixins_build-aspect-ratio.md.cD70Q1mW.js} +1 -1
  23. package/docs/.vitepress/dist/assets/{mixins_build-aspect-ratio.md.Cjv_a3MY.lean.js → mixins_build-aspect-ratio.md.cD70Q1mW.lean.js} +1 -1
  24. package/docs/.vitepress/dist/assets/{mixins_build-compatibility.md.BO6wODYa.js → mixins_build-compatibility.md.DvZg2OSO.js} +15 -4
  25. package/docs/.vitepress/dist/assets/mixins_build-compatibility.md.DvZg2OSO.lean.js +1 -0
  26. package/docs/.vitepress/dist/assets/{mixins_build-scrollbar.md.BX34elgD.js → mixins_build-scrollbar.md.Bze7PgzU.js} +1 -1
  27. package/docs/.vitepress/dist/assets/mixins_build-scrollbar.md.Bze7PgzU.lean.js +1 -0
  28. package/docs/.vitepress/dist/assets/{mixins_create-colors.md.82HeTZt6.js → mixins_create-colors.md.Bi4iqAHf.js} +1 -1
  29. package/docs/.vitepress/dist/assets/{mixins_create-colors.md.82HeTZt6.lean.js → mixins_create-colors.md.Bi4iqAHf.lean.js} +1 -1
  30. package/docs/.vitepress/dist/assets/{mixins_create-helper-margin.md.D2-T7z0a.js → mixins_create-helper-margin.md.DqwBKQ0G.js} +1 -1
  31. package/docs/.vitepress/dist/assets/mixins_create-helper-margin.md.DqwBKQ0G.lean.js +1 -0
  32. package/docs/.vitepress/dist/assets/{mixins_create-helper-padding.md.Cp-laxuA.js → mixins_create-helper-padding.md.Br9TOGl1.js} +1 -1
  33. package/docs/.vitepress/dist/assets/mixins_create-helper-padding.md.Br9TOGl1.lean.js +1 -0
  34. package/docs/.vitepress/dist/assets/{mixins_create-instruction.md.dJ83FO6R.js → mixins_create-instruction.md.BeAIoeQx.js} +15 -7
  35. package/docs/.vitepress/dist/assets/mixins_create-instruction.md.BeAIoeQx.lean.js +1 -0
  36. package/docs/.vitepress/dist/assets/style.BsKZwvOR.css +1 -0
  37. package/docs/.vitepress/dist/colors/bootstrap.html +8 -8
  38. package/docs/.vitepress/dist/colors/brands.html +8 -8
  39. package/docs/.vitepress/dist/colors/customs.html +8 -8
  40. package/docs/.vitepress/dist/functions/colors.html +8 -8
  41. package/docs/.vitepress/dist/functions/helpers.html +8 -8
  42. package/docs/.vitepress/dist/functions/strings.html +8 -8
  43. package/docs/.vitepress/dist/hashmap.json +1 -1
  44. package/docs/.vitepress/dist/index.html +8 -8
  45. package/docs/.vitepress/dist/mixins/build-aspect-ratio.html +8 -8
  46. package/docs/.vitepress/dist/mixins/build-compatibility.html +21 -10
  47. package/docs/.vitepress/dist/mixins/build-scrollbar.html +8 -8
  48. package/docs/.vitepress/dist/mixins/create-colors.html +8 -8
  49. package/docs/.vitepress/dist/mixins/create-helper-margin.html +9 -9
  50. package/docs/.vitepress/dist/mixins/create-helper-padding.html +8 -8
  51. package/docs/.vitepress/dist/mixins/create-instruction.html +21 -13
  52. package/docs/.vitepress/dist/vp-icons.css +0 -2
  53. package/docs/mixins/build-compatibility.md +1 -1
  54. package/docs/mixins/create-instruction.md +2 -2
  55. package/package.json +12 -12
  56. package/src/colors/_brands.scss +2 -2
  57. package/src/colors/_index.scss +4 -4
  58. package/src/functions/_colors.scss +5 -4
  59. package/src/index.scss +2 -1
  60. package/src/mixins/_build-compatibility.scss +13 -2
  61. package/src/mixins/_create-class.scss +19 -0
  62. package/src/mixins/_create-colors-vars.scss +35 -0
  63. package/src/mixins/_create-colors.scss +94 -53
  64. package/test/compile.test.js +28 -2
  65. package/test/test.css +9825 -4881
  66. package/test/test.scss +43 -5
  67. package/vite.config.ts +1 -1
  68. package/docs/.vitepress/dist/assets/app.BQiPqeST.js +0 -1
  69. package/docs/.vitepress/dist/assets/chunks/@localSearchIndexroot.C9A3MdGo.js +0 -1
  70. package/docs/.vitepress/dist/assets/chunks/VPLocalSearchBox.Bz_zRP0g.js +0 -8
  71. package/docs/.vitepress/dist/assets/chunks/framework.BQmytedh.js +0 -18
  72. package/docs/.vitepress/dist/assets/chunks/theme.DOuq-6g9.js +0 -2
  73. package/docs/.vitepress/dist/assets/colors_brands.md.DA7CAmLz.js +0 -1
  74. package/docs/.vitepress/dist/assets/colors_brands.md.DA7CAmLz.lean.js +0 -1
  75. package/docs/.vitepress/dist/assets/functions_colors.md.8WIzA1Az.lean.js +0 -10
  76. package/docs/.vitepress/dist/assets/functions_helpers.md.DlnJURDc.js +0 -1
  77. package/docs/.vitepress/dist/assets/functions_helpers.md.DlnJURDc.lean.js +0 -1
  78. package/docs/.vitepress/dist/assets/mixins_build-compatibility.md.BO6wODYa.lean.js +0 -30
  79. package/docs/.vitepress/dist/assets/mixins_build-scrollbar.md.BX34elgD.lean.js +0 -32
  80. package/docs/.vitepress/dist/assets/mixins_create-helper-margin.md.D2-T7z0a.lean.js +0 -46
  81. package/docs/.vitepress/dist/assets/mixins_create-helper-padding.md.Cp-laxuA.lean.js +0 -45
  82. package/docs/.vitepress/dist/assets/mixins_create-instruction.md.dJ83FO6R.lean.js +0 -20
  83. package/docs/.vitepress/dist/assets/style.BKBz-tcN.css +0 -1
  84. package/src/mixins/_create-instructions.scss +0 -11
@@ -4,19 +4,21 @@
4
4
 
5
5
  /**
6
6
  * Create all the needed classes for the requested colors
7
- * $color-list - list of colors (like $colors-collection: ("branch": ( "leaf: $color" )))
8
- * $branch-list: - when filled: becomes a whitelist (aka: include only listed brands)
9
- * $feature-list: - when filled: becomes a whitelist. May become cumbersome and many are not needed. Use with care.
10
- * - root
11
- * - on-root (color's "best contrast" partner color)
12
- * - color
7
+ * WARNING: $gradient-* are not meant to be used in color and border classes (because they have gradients)
8
+ *
9
+ * @param $color-list - list of colors (like $colors-collection: ("branch": ( "leaf: $color" )))
10
+ * @param $vars: if true, use css vars instead of rgb
11
+ * @param $prefix: prefix that applies to classes
12
+ * @param $prefixV: prefix that applies to vars (if true)
13
+ * @param $branch-list: - when filled: becomes a whitelist (aka: include only listed brands)
14
+ * @param $feature-list: - when filled: becomes a whitelist. May become cumbersome and many are not needed. Use with care.
15
+ * - text
13
16
  * - background
14
17
  * - border
15
- * - pseudo (bg only, color very rarely used)
18
+ * - pseudo (bg only, text very rarely used)
16
19
  * - hover
17
- * $prefix: prefix that applies to classes
18
20
  */
19
- @mixin create-colors($color-list: (), $branch-list: (), $feature-list: (), $prefix: "") {
21
+ @mixin create-colors($color-list: (), $vars: false, $prefix: "", $prefixV: "", $branch-list: (), $feature-list: ()) {
20
22
  // for every branch
21
23
  @each $branch-name, $branch in $color-list {
22
24
  // check that there is no $branch-list or, if present, it's correctly whitelisted
@@ -25,13 +27,22 @@
25
27
  // for every leaf
26
28
  @each $sname, $scolor in $branch {
27
29
 
28
- @if not list.index($branch-name, "advanced"){
29
- @if list.length($feature-list) < 1 or list.index($feature-list, "color") {
30
- .#{$prefix}#{$branch-name}-#{$sname}-text {
30
+ @if not list.index($branch-name, "gradient") and (list.length($feature-list) < 1 or list.index($feature-list, "text")) {
31
+ .#{$prefix}#{$branch-name}-#{$sname}-text {
32
+ @if $vars {
33
+ color: var(--#{$prefixV}#{$branch-name}-#{$sname}) !important;
34
+ } @else {
31
35
  color: $scolor !important;
32
36
  }
33
37
  }
34
- @if list.length($feature-list) < 1 or list.index($feature-list, "border") {
38
+ }
39
+
40
+ @if not list.index($branch-name, "gradient") and (list.length($feature-list) < 1 or list.index($feature-list, "border")) {
41
+ @if $vars {
42
+ .#{$prefix}#{$branch-name}-#{$sname}-border {
43
+ border-color: var(--#{$prefixV}#{$branch-name}-#{$sname}) !important;
44
+ }
45
+ } @else {
35
46
  .#{$prefix}#{$branch-name}-#{$sname}-border {
36
47
  border-color: $scolor !important;
37
48
  }
@@ -39,31 +50,62 @@
39
50
  }
40
51
 
41
52
  @if list.length($feature-list) < 1 or list.index($feature-list, "background") {
42
- .#{$prefix}#{$branch-name}-#{$sname}-bg {
43
- background: $scolor !important;
53
+ @if $vars {
54
+ .#{$prefix}#{$branch-name}-#{$sname}-bg {
55
+ background-color: var(--#{$prefixV}#{$branch-name}-#{$sname}) !important;
56
+ color: var(--#{$prefixV}on-#{$branch-name}-#{$sname}) !important;
57
+ }
58
+ } @else {
59
+ .#{$prefix}#{$branch-name}-#{$sname}-bg {
60
+ background-color: $scolor !important;
61
+ }
44
62
  }
45
63
  }
46
64
 
47
65
  @if list.length($feature-list) < 1 or list.index($feature-list, "pseudo") {
48
- .#{$prefix}#{$branch-name}-#{$sname}-pseudo-bg {
49
- &::after,
50
- &::before {
51
- background: $scolor !important;
66
+ @if $vars {
67
+ .#{$prefix}#{$branch-name}-#{$sname}-pseudo-bg {
68
+ &::after,
69
+ &::before {
70
+ background-color: var(--#{$prefixV}#{$branch-name}-#{$sname}) !important;
71
+ }
72
+ }
73
+ } @else {
74
+ .#{$prefix}#{$branch-name}-#{$sname}-pseudo-bg {
75
+ &::after,
76
+ &::before {
77
+ background-color: $scolor !important;
78
+ }
52
79
  }
53
80
  }
54
81
  }
55
82
 
56
- @if list.length($feature-list) < 1 or list.index($feature-list, "hover"){
83
+ @if list.length($feature-list) < 1 or list.index($feature-list, "hover") {
57
84
 
58
- @if not list.index($branch-name, "advanced"){
59
- @if list.length($feature-list) < 1 or list.index($feature-list, "color"){
85
+ @if not list.index($branch-name, "gradient") and (list.length($feature-list) < 1 or list.index($feature-list, "text")) {
86
+ @if $vars {
87
+ .#{$prefix}#{$branch-name}-#{$sname}-hover-text {
88
+ &:hover {
89
+ color: var(--#{$prefixV}#{$branch-name}-#{$sname}) !important;
90
+ }
91
+ }
92
+ } @else {
60
93
  .#{$prefix}#{$branch-name}-#{$sname}-hover-text {
61
94
  &:hover {
62
95
  color: $scolor !important;
63
96
  }
64
97
  }
65
98
  }
66
- @if list.length($feature-list) < 1 or list.index($feature-list, "border"){
99
+ }
100
+
101
+ @if not list.index($branch-name, "gradient") and (list.length($feature-list) < 1 or list.index($feature-list, "border")) {
102
+ @if $vars {
103
+ .#{$prefix}#{$branch-name}-#{$sname}-hover-border {
104
+ &:hover {
105
+ border-color: var(--#{$prefixV}#{$branch-name}-#{$sname}) !important;
106
+ }
107
+ }
108
+ } @else {
67
109
  .#{$prefix}#{$branch-name}-#{$sname}-hover-border {
68
110
  &:hover {
69
111
  border-color: $scolor !important;
@@ -73,19 +115,39 @@
73
115
  }
74
116
 
75
117
  @if list.length($feature-list) < 1 or list.index($feature-list, "background") {
76
- .#{$prefix}#{$branch-name}-#{$sname}-hover-bg {
77
- &:hover {
78
- background: $scolor !important;
118
+ @if $vars {
119
+ .#{$prefix}#{$branch-name}-#{$sname}-hover-bg {
120
+ &:hover {
121
+ background-color: var(--#{$prefixV}#{$branch-name}-#{$sname}) !important;
122
+ color: var(--#{$prefixV}on-#{$branch-name}-#{$sname}) !important;
123
+ }
124
+ }
125
+ } @else {
126
+ .#{$prefix}#{$branch-name}-#{$sname}-hover-bg {
127
+ &:hover {
128
+ background-color: $scolor !important;
129
+ }
79
130
  }
80
131
  }
81
132
  }
82
133
 
83
134
  @if list.length($feature-list) < 1 or list.index($feature-list, "pseudo") {
84
- .#{$prefix}#{$branch-name}-#{$sname}-hover-pseudo-bg {
85
- &:hover{
86
- &::after,
87
- &::before {
88
- background: $scolor !important;
135
+ @if $vars {
136
+ .#{$prefix}#{$branch-name}-#{$sname}-hover-pseudo-bg {
137
+ &:hover {
138
+ &::after,
139
+ &::before {
140
+ background-color: var(--#{$prefixV}#{$branch-name}-#{$sname}) !important;
141
+ }
142
+ }
143
+ }
144
+ } @else {
145
+ .#{$prefix}#{$branch-name}-#{$sname}-hover-pseudo-bg {
146
+ &:hover {
147
+ &::after,
148
+ &::before {
149
+ background-color: $scolor !important;
150
+ }
89
151
  }
90
152
  }
91
153
  }
@@ -94,26 +156,5 @@
94
156
  }
95
157
  }
96
158
  }
159
+ }
97
160
 
98
- /**
99
- * CSS VARS on root (they will be translated in "RGB" instead of "HEX"
100
- */
101
- :root{
102
- @if list.length($feature-list) < 1 or list.index($feature-list, "root"){
103
- @each $branch-name, $branch in $color-list {
104
- @each $sname, $scolor in $branch {
105
- --#{$prefix}#{$branch-name}-#{$sname}: #{color-functions.extract-colors($scolor)};
106
- }
107
- }
108
- }
109
- @if list.length($feature-list) < 1 or list.index($feature-list, "on-root"){
110
- @each $branch-name, $branch in $color-list {
111
- @each $sname, $scolor in $branch {
112
- // @if meta.type-of($scolor) == color {
113
- --#{$prefix}on-#{$branch-name}-#{$sname}: #{color-functions.extract-colors(color-functions.color-contrast($scolor))};
114
- // _}
115
- }
116
- }
117
- }
118
- }
119
- }
@@ -35,11 +35,37 @@ describe("COMPILE", function() {
35
35
  expect(cssCompiled).to.contain('.blue-400-text {');
36
36
  expect(cssCompiled).to.contain('color: rgb(61.4, 139, 253.4) !important;');
37
37
  expect(cssCompiled).to.contain('.blue-400-bg {');
38
- expect(cssCompiled).to.contain('background: rgb(61.4, 139, 253.4) !important;');
38
+ expect(cssCompiled).to.contain('background-color: rgb(61.4, 139, 253.4) !important;');
39
+ expect(cssCompiled).to.contain('.blue-400-border {');
40
+ expect(cssCompiled).to.contain('border-color: rgb(61.4, 139, 253.4) !important;');
41
+ expect(cssCompiled).to.contain('.blue-400-pseudo-bg::after, .blue-400-pseudo-bg::before {');
42
+ expect(cssCompiled).to.contain('background-color: rgb(61.4, 139, 253.4) !important;');
43
+ expect(cssCompiled).to.contain('.blue-400-hover-text:hover {');
44
+ expect(cssCompiled).to.contain('.blue-400-hover-bg:hover {');
45
+ expect(cssCompiled).to.contain('.blue-400-hover-border:hover {');
46
+ expect(cssCompiled).to.contain('.blue-400-hover-pseudo-bg:hover::after, .blue-400-hover-pseudo-bg:hover::before {');
39
47
  // --
48
+ expect(cssCompiled).to.contain('.primary-500-text {');
49
+ expect(cssCompiled).to.contain('color: var(--g-theme-primary-500) !important;');
50
+ expect(cssCompiled).to.contain('.primary-500-bg {');
51
+ expect(cssCompiled).to.contain('background-color: var(--g-theme-primary-500) !important;');
52
+ expect(cssCompiled).to.contain('.primary-500-border {');
53
+ expect(cssCompiled).to.contain('border-color: var(--g-theme-primary-500) !important;');
54
+ expect(cssCompiled).to.contain('.primary-500-pseudo-bg::after, .primary-500-pseudo-bg::before {');
55
+ expect(cssCompiled).to.contain('.primary-500-hover-text:hover {');
56
+ expect(cssCompiled).to.contain('.primary-500-hover-bg:hover {');
57
+ expect(cssCompiled).to.contain('.primary-500-hover-border:hover {');
58
+ expect(cssCompiled).to.contain('.primary-500-hover-pseudo-bg:hover::after, .primary-500-hover-pseudo-bg:hover::before {');
59
+ // --
60
+ expect(cssCompiled).to.contain('--g-theme-primary-500: 255 0 255;');
61
+ expect(cssCompiled).to.contain('--g-theme-on-primary-500: 255 255 255;');
40
62
  expect(cssCompiled).to.contain('--blue-400: 61.4 139 253.4;');
63
+ expect(cssCompiled).to.contain('--on-blue-400: 0 0 0;');
41
64
  expect(cssCompiled).to.contain('--manga-red-500: 212 24 22;');
42
- expect(cssCompiled).to.contain('--advanced-brand-instagram: linear-gradient(45deg, #f09433 0%, #e6683c 25%, #dc2743 50%, #cc2366 75%, #bc1888 100%);');
65
+ expect(cssCompiled).to.contain('--gradient-brand-instagram: linear-gradient(45deg, #f09433 0%, #e6683c 25%, #dc2743 50%, #cc2366 75%, #bc1888 100%);');
66
+ expect(cssCompiled).to.contain('.text-align-right {');
67
+ expect(cssCompiled).to.contain('text-align: right !important;');
68
+
43
69
  expect(cssCompiled).to.contain('.mt-auto {');
44
70
  expect(cssCompiled).to.contain('margin-top: auto;');
45
71
  expect(cssCompiled).to.contain('.my-48 {');