beathers 5.3.6 → 5.4.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 (88) hide show
  1. package/.prettierrc.js +8 -0
  2. package/CHANGELOG +176 -154
  3. package/css/beathers-icons.min.css.map +1 -0
  4. package/{dist/css → css}/beathers.min.css +2 -2
  5. package/css/beathers.min.css.map +1 -0
  6. package/data/colors.d.ts.map +1 -0
  7. package/data/font.d.ts.map +1 -0
  8. package/data/index.d.ts.map +1 -0
  9. package/index.d.ts.map +1 -0
  10. package/package.json +27 -26
  11. package/readme.md +263 -256
  12. package/scripts/cli.d.ts.map +1 -0
  13. package/{dist/scripts → scripts}/cli.js +0 -0
  14. package/scripts/commands/build.d.ts.map +1 -0
  15. package/{dist/scripts → scripts}/commands/build.js +16 -4
  16. package/scripts/commands/colors.d.ts.map +1 -0
  17. package/scripts/commands/fonts.d.ts.map +1 -0
  18. package/scripts/commands/help.d.ts.map +1 -0
  19. package/scripts/commands/index.d.ts.map +1 -0
  20. package/scripts/commands/init.d.ts.map +1 -0
  21. package/scripts/commands/list.d.ts.map +1 -0
  22. package/scripts/commands/version.d.ts.map +1 -0
  23. package/scripts/helpers/BuildScssVariables.d.ts.map +1 -0
  24. package/scripts/helpers/BuildScssVariables.js +138 -0
  25. package/scripts/helpers/CallNewVariables.d.ts +2 -0
  26. package/scripts/helpers/CallNewVariables.d.ts.map +1 -0
  27. package/{dist/scripts → scripts}/helpers/CallNewVariables.js +5 -3
  28. package/scripts/helpers/LoadUserConfigs.d.ts.map +1 -0
  29. package/scripts/helpers/Merge.d.ts.map +1 -0
  30. package/scripts/helpers/ReadDefaultValues.d.ts.map +1 -0
  31. package/scripts/helpers/index.d.ts.map +1 -0
  32. package/scripts/types.d.ts.map +1 -0
  33. package/{dist/scss → scss}/_variables.scss +21 -0
  34. package/{dist/scss → scss}/beathers-icons.min.scss +265 -265
  35. package/{dist/scss → scss}/beathers.min.scss +11 -11
  36. package/{dist/scss → scss}/functions/_colors.scss +230 -243
  37. package/{dist/scss → scss}/functions/_mediaQueries.scss +133 -138
  38. package/{dist/scss → scss}/functions/_others.scss +87 -92
  39. package/{dist/scss → scss}/functions/_typographic.scss +129 -134
  40. package/{dist/scss → scss}/functions/_validations.scss +251 -251
  41. package/{dist/scss → scss}/settings/_configs.scss +295 -295
  42. package/{dist/scss → scss}/settings/_defaults.scss +178 -178
  43. package/{dist/scss → scss}/settings/_index.scss +68 -68
  44. package/{dist/scss → scss}/style/_colors.scss +146 -155
  45. package/{dist/scss → scss}/style/_grid.scss +89 -90
  46. package/{dist/scss → scss}/style/_resets.scss +110 -119
  47. package/{dist/scss → scss}/style/_shaping.scss +388 -425
  48. package/{dist/scss → scss}/style/_typographic.scss +319 -347
  49. package/dist/css/beathers-icons.min.css.map +0 -1
  50. package/dist/css/beathers.min.css.map +0 -1
  51. package/dist/scripts/helpers/BuildScssVariables.js +0 -111
  52. package/dist/scripts/helpers/CallNewVariables.d.ts +0 -2
  53. /package/{dist/css → css}/beathers-icons.min.css +0 -0
  54. /package/{dist/data → data}/colors.d.ts +0 -0
  55. /package/{dist/data → data}/colors.js +0 -0
  56. /package/{dist/data → data}/font.d.ts +0 -0
  57. /package/{dist/data → data}/font.js +0 -0
  58. /package/{dist/data → data}/index.d.ts +0 -0
  59. /package/{dist/data → data}/index.js +0 -0
  60. /package/{dist/index.d.ts → index.d.ts} +0 -0
  61. /package/{dist/index.js → index.js} +0 -0
  62. /package/{dist/scripts → scripts}/cli.d.ts +0 -0
  63. /package/{dist/scripts → scripts}/commands/build.d.ts +0 -0
  64. /package/{dist/scripts → scripts}/commands/colors.d.ts +0 -0
  65. /package/{dist/scripts → scripts}/commands/colors.js +0 -0
  66. /package/{dist/scripts → scripts}/commands/fonts.d.ts +0 -0
  67. /package/{dist/scripts → scripts}/commands/fonts.js +0 -0
  68. /package/{dist/scripts → scripts}/commands/help.d.ts +0 -0
  69. /package/{dist/scripts → scripts}/commands/help.js +0 -0
  70. /package/{dist/scripts → scripts}/commands/index.d.ts +0 -0
  71. /package/{dist/scripts → scripts}/commands/index.js +0 -0
  72. /package/{dist/scripts → scripts}/commands/init.d.ts +0 -0
  73. /package/{dist/scripts → scripts}/commands/init.js +0 -0
  74. /package/{dist/scripts → scripts}/commands/list.d.ts +0 -0
  75. /package/{dist/scripts → scripts}/commands/list.js +0 -0
  76. /package/{dist/scripts → scripts}/commands/version.d.ts +0 -0
  77. /package/{dist/scripts → scripts}/commands/version.js +0 -0
  78. /package/{dist/scripts → scripts}/helpers/BuildScssVariables.d.ts +0 -0
  79. /package/{dist/scripts → scripts}/helpers/LoadUserConfigs.d.ts +0 -0
  80. /package/{dist/scripts → scripts}/helpers/LoadUserConfigs.js +0 -0
  81. /package/{dist/scripts → scripts}/helpers/Merge.d.ts +0 -0
  82. /package/{dist/scripts → scripts}/helpers/Merge.js +0 -0
  83. /package/{dist/scripts → scripts}/helpers/ReadDefaultValues.d.ts +0 -0
  84. /package/{dist/scripts → scripts}/helpers/ReadDefaultValues.js +0 -0
  85. /package/{dist/scripts → scripts}/helpers/index.d.ts +0 -0
  86. /package/{dist/scripts → scripts}/helpers/index.js +0 -0
  87. /package/{dist/scripts → scripts}/types.d.ts +0 -0
  88. /package/{dist/scripts → scripts}/types.js +0 -0
@@ -1,155 +1,146 @@
1
- @use 'sass:meta';
2
- @use 'sass:map';
3
- @use '../variables' as vars;
4
- @use '../settings/defaults' as defs;
5
- @use '../functions/validations' as val;
6
- @use '../settings/configs' as configs;
7
- @use '../functions/colors' as colors;
8
- @use '../settings/index' as settings;
9
-
10
- // Definitions
11
- $useColors: if(meta.variable-exists('vars.$useColors') and vars.$useColors, vars.$useColors, settings.$useColors);
12
- $useCurrentColors: if(
13
- meta.variable-exists('vars.$useCurrentColors') and vars.$useCurrentColors,
14
- vars.$useCurrentColors,
15
- settings.$useCurrentColors
16
- );
17
- $useRootColors: if(
18
- meta.variable-exists('vars.$useRootColors') and vars.$useRootColors,
19
- vars.$useRootColors,
20
- settings.$useRootColors
21
- );
22
- $colors: if(meta.variable-exists('vars.$colors') and vars.$colors, vars.$colors, defs.$colors);
23
-
24
- // Colors System Module
25
- // --------------------------
26
- // This file is responsible for generating color utility classes and CSS variables
27
- // based on the color maps defined in the variables file.
28
- //
29
- // Key features:
30
- // 1. Generates color utility classes from the main colors map
31
- // 2. Creates currentColor utility classes
32
- // 3. Sets up CSS variables for all defined colors
33
- //
34
- // The color system supports:
35
- // - Light and dark mode theming
36
- // - Opacity variations
37
- // - Pseudo-class variants (:hover, :focus, etc.)
38
- //
39
- // @requires ../functions/colors.scss - For color utility functions and mixins
40
- // @requires ../settings/configs.scss - For configuration variables
41
- // @requires ../functions/validations.scss - For validation utilities
42
- // @requires ../variables.scss - For color definitions
43
-
44
- @if $useColors {
45
- // Color Utility Classes
46
- // --------------------
47
- // Generate color utility classes from the main colors map.
48
- // Uses the useColorsMap mixin from colors functions to create a comprehensive
49
- // set of color utilities for all the colors defined in $colors.
50
- //
51
- // Generated classes include:
52
- // - .color-[colorName] - Sets text color
53
- // - .bg-color-[colorName] - Sets background color
54
- // - .border-color-[colorName] - Sets border color
55
- //
56
- // With light/dark theme variants:
57
- // - Automatically applies correct color based on .light/.dark context
58
- // - Supports direct class application with .color-[colorName].light
59
- //
60
- // With opacity variants (e.g., :50 for 50% opacity):
61
- // - .color-[colorName]:50
62
- // - .bg-color-[colorName]:75
63
- //
64
- // With pseudo-class variants:
65
- // - .color-[colorName]:hover
66
- // - .bg-color-[colorName]:focus
67
- @include colors.useColorsMap;
68
- }
69
-
70
- @if $useCurrentColors {
71
- // CurrentColor Utility Classes
72
- // ----------------------------
73
- // Creates utility classes for applying the CSS `currentColor` value to various CSS properties
74
- // as defined in the configs.$colorsPropertiesMap.
75
- //
76
- // For each property in the map (color, background-color, border-color, etc.):
77
- // - Creates a base class (.{property}-current-color)
78
- // - Creates pseudo-class variants for interaction states
79
- //
80
- // Examples:
81
- // - .current-color { color: currentColor; }
82
- // - .bg-current-color { background-color: currentColor; }
83
- // - .border-current-color { border-color: currentColor; }
84
- // - .current-color\:hover:hover { color: currentColor; }
85
- // - .bg-current-color\:focus:focus { background-color: currentColor; }
86
- //
87
- // Usage:
88
- // <div class="current-color bg-current-color:hover">
89
- // This text uses currentColor and background changes to currentColor on hover
90
- // </div>
91
- @each $class, $property in configs.$colorsPropertiesMap {
92
- $mainClass: if($class, '#{$class}#{\:}current-color', 'current-color');
93
-
94
- .#{$mainClass} {
95
- #{$property}: currentColor;
96
-
97
- @each $pseudoClass, $pseudo in configs.$colorsPseudoMap {
98
- @if $pseudoClass != 'placeholder' or ($pseudoClass == 'placeholder' and $class == null) {
99
- &#{\:}#{$pseudoClass}#{$pseudo} {
100
- #{$property}: currentColor;
101
- }
102
- }
103
- }
104
- }
105
- }
106
- }
107
-
108
- @if $useRootColors {
109
- // CSS Color Variables
110
- // ------------------
111
- // Generates CSS custom properties (variables) for all colors in the $colors map.
112
- // These variables can be used throughout the application to ensure color consistency.
113
- //
114
- // The implementation:
115
- // 1. Iterates through each color in the $colors map
116
- // 2. Validates the color values through val.mapItem and val.hexColor functions
117
- // 3. Determines if light and dark variants are the same
118
- // 4. Creates appropriate CSS variables based on variant differences
119
- //
120
- // Format:
121
- // - For colors with light/dark variants: --color-{name}-{variant}: {color-value}
122
- // - For colors without variants: --color-{name}: {color-value}
123
- //
124
- // Examples:
125
- // --color-main-light: #ffffff
126
- // --color-main-dark: #1a1d21
127
- // --color-accent: #3498db (when light and dark variants are the same)
128
- //
129
- // Usage:
130
- // .my-element {
131
- // background-color: var(--color-main-light);
132
- // color: var(--color-accent);
133
- // }
134
- :root {
135
- @each $color, $modes in $colors {
136
- // Validate parameters
137
- $checkedLight: val.mapItem($modes, 'light', 'light/dark', 'root-colors()');
138
- $checkedDark: val.mapItem($modes, 'dark', 'light/dark', 'root-colors()');
139
-
140
- $light: map.get($modes, 'light');
141
- $dark: map.get($modes, 'dark');
142
-
143
- // Validate colors
144
- $checkedLightValue: val.hexColor('#{$color}.light', $light, 'root-colors()');
145
- $checkedDarkValue: val.hexColor('#{$color}.dark', $dark, 'root-colors()');
146
-
147
- @if ($light == $dark) {
148
- --color-#{$color}: #{$checkedLightValue};
149
- } @else {
150
- --color-#{$color}-light: #{$checkedLightValue};
151
- --color-#{$color}-dark: #{$checkedDarkValue};
152
- }
153
- }
154
- }
155
- }
1
+ @use 'sass:map';
2
+ @use '../variables' as vars;
3
+ @use '../settings/defaults' as defs;
4
+ @use '../functions/validations' as val;
5
+ @use '../settings/configs' as configs;
6
+ @use '../functions/colors' as colors;
7
+ @use '../settings/index' as settings;
8
+
9
+ // Definitions
10
+ $useColors: if(vars.$useColors != null, vars.$useColors, settings.$useColors);
11
+ $colors: if(vars.$colors != (), vars.$colors, defs.$colors);
12
+ $useCurrentColors: if(vars.$useCurrentColors != null, vars.$useCurrentColors, settings.$useCurrentColors);
13
+ $useRootColors: if(vars.$useRootColors != null, vars.$useRootColors, settings.$useRootColors);
14
+
15
+ // Colors System Module
16
+ // --------------------------
17
+ // This file is responsible for generating color utility classes and CSS variables
18
+ // based on the color maps defined in the variables file.
19
+ //
20
+ // Key features:
21
+ // 1. Generates color utility classes from the main colors map
22
+ // 2. Creates currentColor utility classes
23
+ // 3. Sets up CSS variables for all defined colors
24
+ //
25
+ // The color system supports:
26
+ // - Light and dark mode theming
27
+ // - Opacity variations
28
+ // - Pseudo-class variants (:hover, :focus, etc.)
29
+ //
30
+ // @requires ../functions/colors.scss - For color utility functions and mixins
31
+ // @requires ../settings/configs.scss - For configuration variables
32
+ // @requires ../functions/validations.scss - For validation utilities
33
+ // @requires ../variables.scss - For color definitions
34
+
35
+ @if $useColors {
36
+ // Color Utility Classes
37
+ // --------------------
38
+ // Generate color utility classes from the main colors map.
39
+ // Uses the useColorsMap mixin from colors functions to create a comprehensive
40
+ // set of color utilities for all the colors defined in $colors.
41
+ //
42
+ // Generated classes include:
43
+ // - .color-[colorName] - Sets text color
44
+ // - .bg-color-[colorName] - Sets background color
45
+ // - .border-color-[colorName] - Sets border color
46
+ //
47
+ // With light/dark theme variants:
48
+ // - Automatically applies correct color based on .light/.dark context
49
+ // - Supports direct class application with .color-[colorName].light
50
+ //
51
+ // With opacity variants (e.g., :50 for 50% opacity):
52
+ // - .color-[colorName]:50
53
+ // - .bg-color-[colorName]:75
54
+ //
55
+ // With pseudo-class variants:
56
+ // - .color-[colorName]:hover
57
+ // - .bg-color-[colorName]:focus
58
+ @include colors.useColorsMap;
59
+ }
60
+
61
+ @if $useCurrentColors {
62
+ // CurrentColor Utility Classes
63
+ // ----------------------------
64
+ // Creates utility classes for applying the CSS `currentColor` value to various CSS properties
65
+ // as defined in the configs.$colorsPropertiesMap.
66
+ //
67
+ // For each property in the map (color, background-color, border-color, etc.):
68
+ // - Creates a base class (.{property}-current-color)
69
+ // - Creates pseudo-class variants for interaction states
70
+ //
71
+ // Examples:
72
+ // - .current-color { color: currentColor; }
73
+ // - .bg-current-color { background-color: currentColor; }
74
+ // - .border-current-color { border-color: currentColor; }
75
+ // - .current-color\:hover:hover { color: currentColor; }
76
+ // - .bg-current-color\:focus:focus { background-color: currentColor; }
77
+ //
78
+ // Usage:
79
+ // <div class="current-color bg-current-color:hover">
80
+ // This text uses currentColor and background changes to currentColor on hover
81
+ // </div>
82
+ @each $class, $property in configs.$colorsPropertiesMap {
83
+ $mainClass: if($class, '#{$class}#{\:}current-color', 'current-color');
84
+
85
+ .#{$mainClass} {
86
+ #{$property}: currentColor;
87
+
88
+ @each $pseudoClass, $pseudo in configs.$colorsPseudoMap {
89
+ @if $pseudoClass != 'placeholder' or ($pseudoClass == 'placeholder' and $class == null) {
90
+ &#{\:}#{$pseudoClass}#{$pseudo} {
91
+ #{$property}: currentColor;
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+
99
+ @if $useRootColors {
100
+ // CSS Color Variables
101
+ // ------------------
102
+ // Generates CSS custom properties (variables) for all colors in the $colors map.
103
+ // These variables can be used throughout the application to ensure color consistency.
104
+ //
105
+ // The implementation:
106
+ // 1. Iterates through each color in the $colors map
107
+ // 2. Validates the color values through val.mapItem and val.hexColor functions
108
+ // 3. Determines if light and dark variants are the same
109
+ // 4. Creates appropriate CSS variables based on variant differences
110
+ //
111
+ // Format:
112
+ // - For colors with light/dark variants: --color-{name}-{variant}: {color-value}
113
+ // - For colors without variants: --color-{name}: {color-value}
114
+ //
115
+ // Examples:
116
+ // --color-main-light: #ffffff
117
+ // --color-main-dark: #1a1d21
118
+ // --color-accent: #3498db (when light and dark variants are the same)
119
+ //
120
+ // Usage:
121
+ // .my-element {
122
+ // background-color: var(--color-main-light);
123
+ // color: var(--color-accent);
124
+ // }
125
+ :root {
126
+ @each $color, $modes in $colors {
127
+ // Validate parameters
128
+ $checkedLight: val.mapItem($modes, 'light', 'light/dark', 'root-colors()');
129
+ $checkedDark: val.mapItem($modes, 'dark', 'light/dark', 'root-colors()');
130
+
131
+ $light: map.get($modes, 'light');
132
+ $dark: map.get($modes, 'dark');
133
+
134
+ // Validate colors
135
+ $checkedLightValue: val.hexColor('#{$color}.light', $light, 'root-colors()');
136
+ $checkedDarkValue: val.hexColor('#{$color}.dark', $dark, 'root-colors()');
137
+
138
+ @if ($light == $dark) {
139
+ --color-#{$color}: #{$checkedLightValue};
140
+ } @else {
141
+ --color-#{$color}-light: #{$checkedLightValue};
142
+ --color-#{$color}-dark: #{$checkedDarkValue};
143
+ }
144
+ }
145
+ }
146
+ }
@@ -1,90 +1,89 @@
1
- @use 'sass:meta';
2
- @use '../functions/mediaQueries' as mQ;
3
- @use '../settings/configs' as configs;
4
- @use '../functions/validations' as val;
5
- @use '../settings/index' as settings;
6
- @use '../functions/others' as func;
7
- @use '../variables' as vars;
8
-
9
- // Definitions
10
- $useGrid: if(meta.variable-exists('vars.$useGrid') and vars.$useGrid, vars.$useGrid, settings.$useGrid);
11
- $useFlex: if(meta.variable-exists('vars.$useFlex') and vars.$useFlex, vars.$useFlex, settings.$useFlex);
12
-
13
- @if $useGrid {
14
- .grid {
15
- display: grid;
16
-
17
- @include mQ.multiSizes() using ($size, $divider) {
18
- @include func.gridDivision(column, $size, $divider);
19
- @include func.gridDivision(row, $size, $divider);
20
- }
21
- }
22
- }
23
-
24
- @if $useFlex {
25
- .flex {
26
- display: flex;
27
- flex-direction: row;
28
- flex-wrap: wrap;
29
-
30
- @include mQ.multiSizes() using ($size, $divider) {
31
- @each $property, $values in configs.$flexProperties {
32
- // Validate parameters
33
- $checkedProperty: val.listItem((flex-wrap, flex-direction), $property, 'flex.properties');
34
-
35
- @each $value in $values {
36
- // Validate parameters
37
- $checkedProperty: val.listItem(
38
- (wrap, nowrap, row, row-reverse, column, column-reverse),
39
- $value,
40
- 'flex.properties.values'
41
- );
42
-
43
- $mainClass: if($size, #{$size}#{$divider}#{$value}, $value);
44
-
45
- &.#{$mainClass} {
46
- #{$property}: if($size, $value !important, $value);
47
- }
48
- }
49
- }
50
-
51
- &.row,
52
- &.row-reverse {
53
- @include func.flexDivision(width, 'cols', $size, $divider);
54
- @include func.flexDivision(width, 'col', $size, $divider);
55
- }
56
- &.column,
57
- &.column-reverse {
58
- @include func.flexDivision(height, 'rows', $size, $divider);
59
- @include func.flexDivision(height, 'row', $size, $divider);
60
- }
61
- }
62
- }
63
- }
64
-
65
- @if $useFlex or $useGrid {
66
- @include mQ.multiSizes() using ($size, $divider) {
67
- @each $way, $selections in configs.$justify {
68
- @each $selection, $properties in $selections {
69
- @each $property in $properties {
70
- $mainClass: if($size, '#{$size}#{$divider}#{$way}-#{$selection}#{\:}', '#{$way}-#{$selection}#{\:}');
71
-
72
- .#{$mainClass} {
73
- $prefix: if($property == 'around' or $property == 'between' or $property == 'evenly', 'space-', '');
74
- $flexPrefix: if($property == 'start' or $property == 'end', 'flex-', '');
75
- $value: #{$prefix}#{$property};
76
- $flexValue: #{$flexPrefix}#{$value};
77
-
78
- &#{$property} {
79
- &.flex {
80
- #{$way}-#{$selection}: if($size, $flexValue !important, $flexValue);
81
- }
82
-
83
- #{$way}-#{$selection}: if($size, $value !important, $value);
84
- }
85
- }
86
- }
87
- }
88
- }
89
- }
90
- }
1
+ @use '../functions/mediaQueries' as mQ;
2
+ @use '../settings/configs' as configs;
3
+ @use '../functions/validations' as val;
4
+ @use '../settings/index' as settings;
5
+ @use '../functions/others' as func;
6
+ @use '../variables' as vars;
7
+
8
+ // Definitions
9
+ $useGrid: if(vars.$useGrid != null, vars.$useGrid, settings.$useGrid);
10
+ $useFlex: if(vars.$useFlex != null, vars.$useFlex, settings.$useFlex);
11
+
12
+ @if $useGrid {
13
+ .grid {
14
+ display: grid;
15
+
16
+ @include mQ.multiSizes() using ($size, $divider) {
17
+ @include func.gridDivision(column, $size, $divider);
18
+ @include func.gridDivision(row, $size, $divider);
19
+ }
20
+ }
21
+ }
22
+
23
+ @if $useFlex {
24
+ .flex {
25
+ display: flex;
26
+ flex-direction: row;
27
+ flex-wrap: wrap;
28
+
29
+ @include mQ.multiSizes() using ($size, $divider) {
30
+ @each $property, $values in configs.$flexProperties {
31
+ // Validate parameters
32
+ $checkedProperty: val.listItem((flex-wrap, flex-direction), $property, 'flex.properties');
33
+
34
+ @each $value in $values {
35
+ // Validate parameters
36
+ $checkedProperty: val.listItem(
37
+ (wrap, nowrap, row, row-reverse, column, column-reverse),
38
+ $value,
39
+ 'flex.properties.values'
40
+ );
41
+
42
+ $mainClass: if($size, #{$size}#{$divider}#{$value}, $value);
43
+
44
+ &.#{$mainClass} {
45
+ #{$property}: if($size, $value !important, $value);
46
+ }
47
+ }
48
+ }
49
+
50
+ &.row,
51
+ &.row-reverse {
52
+ @include func.flexDivision(width, 'cols', $size, $divider);
53
+ @include func.flexDivision(width, 'col', $size, $divider);
54
+ }
55
+ &.column,
56
+ &.column-reverse {
57
+ @include func.flexDivision(height, 'rows', $size, $divider);
58
+ @include func.flexDivision(height, 'row', $size, $divider);
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ @if $useFlex or $useGrid {
65
+ @include mQ.multiSizes() using ($size, $divider) {
66
+ @each $way, $selections in configs.$justify {
67
+ @each $selection, $properties in $selections {
68
+ @each $property in $properties {
69
+ $mainClass: if($size, '#{$size}#{$divider}#{$way}-#{$selection}#{\:}', '#{$way}-#{$selection}#{\:}');
70
+
71
+ .#{$mainClass} {
72
+ $prefix: if($property == 'around' or $property == 'between' or $property == 'evenly', 'space-', '');
73
+ $flexPrefix: if($property == 'start' or $property == 'end', 'flex-', '');
74
+ $value: #{$prefix}#{$property};
75
+ $flexValue: #{$flexPrefix}#{$value};
76
+
77
+ &#{$property} {
78
+ &.flex {
79
+ #{$way}-#{$selection}: if($size, $flexValue !important, $flexValue);
80
+ }
81
+
82
+ #{$way}-#{$selection}: if($size, $value !important, $value);
83
+ }
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ }