beathers 5.0.0
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.
- package/dist/css/beathers-icons.min.css +1 -0
- package/dist/css/beathers-icons.min.css.map +1 -0
- package/dist/css/beathers.min.css +4 -0
- package/dist/css/beathers.min.css.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/scripts/BuildScssVariables.d.ts +2 -0
- package/dist/scripts/BuildScssVariables.js +111 -0
- package/dist/scripts/BuildTheme.d.ts +1 -0
- package/dist/scripts/BuildTheme.js +99 -0
- package/dist/scripts/CallNewVariables.d.ts +1 -0
- package/dist/scripts/CallNewVariables.js +17 -0
- package/dist/scripts/LoadUserConfigs.d.ts +2 -0
- package/dist/scripts/LoadUserConfigs.js +42 -0
- package/dist/scripts/Merge.d.ts +2 -0
- package/dist/scripts/Merge.js +26 -0
- package/dist/scripts/ReadDefaultValues.d.ts +2 -0
- package/dist/scripts/ReadDefaultValues.js +168 -0
- package/dist/scripts/cli.d.ts +2 -0
- package/dist/scripts/cli.js +14 -0
- package/dist/scripts/types.d.ts +57 -0
- package/dist/scripts/types.js +1 -0
- package/package.json +84 -0
- package/readme.md +235 -0
- package/src/scss/_variables.scss +305 -0
- package/src/scss/beathers-icons.min.scss +265 -0
- package/src/scss/beathers.min.scss +13 -0
- package/src/scss/functions/_colors.scss +232 -0
- package/src/scss/functions/_mediaQueries.scss +128 -0
- package/src/scss/functions/_others.scss +83 -0
- package/src/scss/functions/_typographic.scss +125 -0
- package/src/scss/functions/_validations.scss +256 -0
- package/src/scss/settings/_configs.scss +366 -0
- package/src/scss/settings/_defaults.scss +251 -0
- package/src/scss/settings/_index.scss +68 -0
- package/src/scss/settings/_resets.scss +103 -0
- package/src/scss/style/_colors.scss +139 -0
- package/src/scss/style/_grid.scss +92 -0
- package/src/scss/style/_shaping.scss +372 -0
- package/src/scss/style/_typographic.scss +304 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
@use "./configs" as configs;
|
|
2
|
+
@use "../settings/defaults" as vars;
|
|
3
|
+
@use "../functions/colors" as colors;
|
|
4
|
+
@use "../settings/index" as settings;
|
|
5
|
+
|
|
6
|
+
html {
|
|
7
|
+
scroll-behavior: smooth;
|
|
8
|
+
interpolate-size: allow-keywords;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
body {
|
|
12
|
+
position: relative;
|
|
13
|
+
font-family: "regular";
|
|
14
|
+
overflow-x: hidden;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
*,
|
|
18
|
+
::before,
|
|
19
|
+
::after {
|
|
20
|
+
margin: 0;
|
|
21
|
+
padding: 0;
|
|
22
|
+
box-sizing: border-box;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
:focus,
|
|
26
|
+
button:focus {
|
|
27
|
+
outline: unset !important;
|
|
28
|
+
box-shadow: unset !important;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
ul {
|
|
32
|
+
margin: unset;
|
|
33
|
+
list-style: none;
|
|
34
|
+
padding: 0;
|
|
35
|
+
|
|
36
|
+
li {
|
|
37
|
+
margin-bottom: unset;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
a {
|
|
42
|
+
text-decoration: unset;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@if settings.$useColors {
|
|
46
|
+
@if settings.$useColorsLightMode {
|
|
47
|
+
.light::selection {
|
|
48
|
+
background-color: colors.useColorWithMap("custom-2");
|
|
49
|
+
color: colors.useColorWithMap("white");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
@if settings.$useColorsDarkMode {
|
|
53
|
+
.dark::selection {
|
|
54
|
+
background-color: colors.useColorWithMap("custom-2", "dark");
|
|
55
|
+
color: colors.useColorWithMap("black");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
::-webkit-scrollbar {
|
|
61
|
+
width: 6px;
|
|
62
|
+
|
|
63
|
+
&-track {
|
|
64
|
+
background-color: transparent;
|
|
65
|
+
border-radius: unset;
|
|
66
|
+
}
|
|
67
|
+
&-thumb {
|
|
68
|
+
border-radius: 100vw;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
@if settings.$useColors {
|
|
72
|
+
@if settings.$useColorsLightMode {
|
|
73
|
+
.light::-webkit-scrollbar-thumb {
|
|
74
|
+
background: colors.useColorWithMap("third");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
@if settings.$useColorsDarkMode {
|
|
78
|
+
.dark::-webkit-scrollbar-thumb {
|
|
79
|
+
background: colors.useColorWithMap("third", "dark");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
@each $option, $properties in configs.$clearanceOptions {
|
|
85
|
+
@each $property, $value in $properties {
|
|
86
|
+
.i\:#{$option} {
|
|
87
|
+
#{$property}: $value !important;
|
|
88
|
+
}
|
|
89
|
+
.#{$option} {
|
|
90
|
+
#{$property}: $value;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@each $cursor in configs.$cursors {
|
|
96
|
+
.cursor#{\:}#{$cursor} {
|
|
97
|
+
cursor: #{$cursor};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.scroll-smooth {
|
|
102
|
+
scroll-behavior: smooth;
|
|
103
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
@use "sass:map";
|
|
2
|
+
@use "../settings/defaults" as vars;
|
|
3
|
+
@use "../functions/validations" as val;
|
|
4
|
+
@use "../settings/configs" as configs;
|
|
5
|
+
@use "../functions/colors" as colors;
|
|
6
|
+
@use "../settings/index" as settings;
|
|
7
|
+
|
|
8
|
+
// Colors System Module
|
|
9
|
+
// --------------------------
|
|
10
|
+
// This file is responsible for generating color utility classes and CSS variables
|
|
11
|
+
// based on the color maps defined in the variables file.
|
|
12
|
+
//
|
|
13
|
+
// Key features:
|
|
14
|
+
// 1. Generates color utility classes from the main colors map
|
|
15
|
+
// 2. Creates currentColor utility classes
|
|
16
|
+
// 3. Sets up CSS variables for all defined colors
|
|
17
|
+
//
|
|
18
|
+
// The color system supports:
|
|
19
|
+
// - Light and dark mode theming
|
|
20
|
+
// - Opacity variations
|
|
21
|
+
// - Pseudo-class variants (:hover, :focus, etc.)
|
|
22
|
+
//
|
|
23
|
+
// @requires ../functions/colors.scss - For color utility functions and mixins
|
|
24
|
+
// @requires ../settings/configs.scss - For configuration variables
|
|
25
|
+
// @requires ../functions/validations.scss - For validation utilities
|
|
26
|
+
// @requires ../settings/defaults.scss - For color definitions
|
|
27
|
+
|
|
28
|
+
@if settings.$useColors {
|
|
29
|
+
// Color Utility Classes
|
|
30
|
+
// --------------------
|
|
31
|
+
// Generate color utility classes from the main colors map.
|
|
32
|
+
// Uses the useColorsMap mixin from colors functions to create a comprehensive
|
|
33
|
+
// set of color utilities for all the colors defined in vars.$colors.
|
|
34
|
+
//
|
|
35
|
+
// Generated classes include:
|
|
36
|
+
// - .color-[colorName] - Sets text color
|
|
37
|
+
// - .bg-color-[colorName] - Sets background color
|
|
38
|
+
// - .border-color-[colorName] - Sets border color
|
|
39
|
+
//
|
|
40
|
+
// With light/dark theme variants:
|
|
41
|
+
// - Automatically applies correct color based on .light/.dark context
|
|
42
|
+
// - Supports direct class application with .color-[colorName].light
|
|
43
|
+
//
|
|
44
|
+
// With opacity variants (e.g., :50 for 50% opacity):
|
|
45
|
+
// - .color-[colorName]:50
|
|
46
|
+
// - .bg-color-[colorName]:75
|
|
47
|
+
//
|
|
48
|
+
// With pseudo-class variants:
|
|
49
|
+
// - .color-[colorName]:hover
|
|
50
|
+
// - .bg-color-[colorName]:focus
|
|
51
|
+
@include colors.useColorsMap();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@if settings.$useCurrentColors {
|
|
55
|
+
// CurrentColor Utility Classes
|
|
56
|
+
// ----------------------------
|
|
57
|
+
// Creates utility classes for applying the CSS `currentColor` value to various CSS properties
|
|
58
|
+
// as defined in the configs.$colorsPropertiesMap.
|
|
59
|
+
//
|
|
60
|
+
// For each property in the map (color, background-color, border-color, etc.):
|
|
61
|
+
// - Creates a base class (.{property}-current-color)
|
|
62
|
+
// - Creates pseudo-class variants for interaction states
|
|
63
|
+
//
|
|
64
|
+
// Examples:
|
|
65
|
+
// - .current-color { color: currentColor; }
|
|
66
|
+
// - .bg-current-color { background-color: currentColor; }
|
|
67
|
+
// - .border-current-color { border-color: currentColor; }
|
|
68
|
+
// - .current-color\:hover:hover { color: currentColor; }
|
|
69
|
+
// - .bg-current-color\:focus:focus { background-color: currentColor; }
|
|
70
|
+
//
|
|
71
|
+
// Usage:
|
|
72
|
+
// <div class="current-color bg-current-color:hover">
|
|
73
|
+
// This text uses currentColor and background changes to currentColor on hover
|
|
74
|
+
// </div>
|
|
75
|
+
@each $class, $property in configs.$colorsPropertiesMap {
|
|
76
|
+
$mainClass: if($class, "#{$class}#{\:}current-color", "current-color");
|
|
77
|
+
|
|
78
|
+
.#{$mainClass} {
|
|
79
|
+
#{$property}: currentColor;
|
|
80
|
+
|
|
81
|
+
@each $pseudoClass, $pseudo in configs.$colorsPseudoMap {
|
|
82
|
+
@if $pseudoClass != "placeholder" or ($pseudoClass == "placeholder" and $class == null) {
|
|
83
|
+
&#{\:}#{$pseudoClass}#{$pseudo} {
|
|
84
|
+
#{$property}: currentColor;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@if settings.$useRootColors {
|
|
93
|
+
// CSS Color Variables
|
|
94
|
+
// ------------------
|
|
95
|
+
// Generates CSS custom properties (variables) for all colors in the vars.$colors map.
|
|
96
|
+
// These variables can be used throughout the application to ensure color consistency.
|
|
97
|
+
//
|
|
98
|
+
// The implementation:
|
|
99
|
+
// 1. Iterates through each color in the vars.$colors map
|
|
100
|
+
// 2. Validates the color values through val.mapItem and val.hexColor functions
|
|
101
|
+
// 3. Determines if light and dark variants are the same
|
|
102
|
+
// 4. Creates appropriate CSS variables based on variant differences
|
|
103
|
+
//
|
|
104
|
+
// Format:
|
|
105
|
+
// - For colors with light/dark variants: --color-{name}-{variant}: {color-value}
|
|
106
|
+
// - For colors without variants: --color-{name}: {color-value}
|
|
107
|
+
//
|
|
108
|
+
// Examples:
|
|
109
|
+
// --color-main-light: #ffffff
|
|
110
|
+
// --color-main-dark: #1a1d21
|
|
111
|
+
// --color-accent: #3498db (when light and dark variants are the same)
|
|
112
|
+
//
|
|
113
|
+
// Usage:
|
|
114
|
+
// .my-element {
|
|
115
|
+
// background-color: var(--color-main-light);
|
|
116
|
+
// color: var(--color-accent);
|
|
117
|
+
// }
|
|
118
|
+
:root {
|
|
119
|
+
@each $color, $modes in vars.$colors {
|
|
120
|
+
// Validate parameters
|
|
121
|
+
$checkedLight: val.mapItem($modes, "light", "light/dark", "root-colors()");
|
|
122
|
+
$checkedDark: val.mapItem($modes, "dark", "light/dark", "root-colors()");
|
|
123
|
+
|
|
124
|
+
$light: map.get($modes, "light");
|
|
125
|
+
$dark: map.get($modes, "dark");
|
|
126
|
+
|
|
127
|
+
// Validate colors
|
|
128
|
+
$checkedLightValue: val.hexColor("#{$color}.light", $light, "root-colors()");
|
|
129
|
+
$checkedDarkValue: val.hexColor("#{$color}.dark", $dark, "root-colors()");
|
|
130
|
+
|
|
131
|
+
@if ($light == $dark) {
|
|
132
|
+
--color-#{$color}: #{$checkedLightValue};
|
|
133
|
+
} @else {
|
|
134
|
+
--color-#{$color}-light: #{$checkedLightValue};
|
|
135
|
+
--color-#{$color}-dark: #{$checkedDarkValue};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
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
|
+
|
|
7
|
+
@if settings.$useGrid {
|
|
8
|
+
.grid {
|
|
9
|
+
display: grid;
|
|
10
|
+
|
|
11
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
12
|
+
@include func.gridDivision(column, $size, $divider);
|
|
13
|
+
@include func.gridDivision(row, $size, $divider);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@if settings.$useFlex {
|
|
19
|
+
.flex {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-direction: row;
|
|
22
|
+
flex-wrap: wrap;
|
|
23
|
+
|
|
24
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
25
|
+
@each $property, $values in configs.$flexProperties {
|
|
26
|
+
// Validate parameters
|
|
27
|
+
$checkedProperty: val.listItem((flex-wrap, flex-direction), $property, "flex.properties");
|
|
28
|
+
|
|
29
|
+
@each $value in $values {
|
|
30
|
+
// Validate parameters
|
|
31
|
+
$checkedProperty: val.listItem(
|
|
32
|
+
(wrap, nowrap, row, row-reverse, column, column-reverse),
|
|
33
|
+
$value,
|
|
34
|
+
"flex.properties.values"
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
$mainClass: if($size, #{$size}#{$divider}#{$value}, $value);
|
|
38
|
+
|
|
39
|
+
&.#{$mainClass} {
|
|
40
|
+
#{$property}: if($size, $value !important, $value);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&.row,
|
|
46
|
+
&.row-reverse {
|
|
47
|
+
@include func.flexDivision(width, "cols", $size, $divider);
|
|
48
|
+
@include func.flexDivision(width, "col", $size, $divider);
|
|
49
|
+
}
|
|
50
|
+
&.column,
|
|
51
|
+
&.column-reverse {
|
|
52
|
+
@include func.flexDivision(height, "rows", $size, $divider);
|
|
53
|
+
@include func.flexDivision(height, "row", $size, $divider);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@if settings.$useFlex or settings.$useGrid {
|
|
60
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
61
|
+
@each $way, $selections in configs.$justify {
|
|
62
|
+
@each $selection, $properties in $selections {
|
|
63
|
+
@each $property in $properties {
|
|
64
|
+
$mainClass: if(
|
|
65
|
+
$size,
|
|
66
|
+
"#{$size}#{$divider}#{$way}-#{$selection}#{\:}",
|
|
67
|
+
"#{$way}-#{$selection}#{\:}"
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
.#{$mainClass} {
|
|
71
|
+
$prefix: if(
|
|
72
|
+
$property == "around" or $property == "between" or $property == "evenly",
|
|
73
|
+
"space-",
|
|
74
|
+
""
|
|
75
|
+
);
|
|
76
|
+
$flexPrefix: if($property == "start" or $property == "end", "flex-", "");
|
|
77
|
+
$value: #{$prefix}#{$property};
|
|
78
|
+
$flexValue: #{$flexPrefix}#{$value};
|
|
79
|
+
|
|
80
|
+
&#{$property} {
|
|
81
|
+
&.flex {
|
|
82
|
+
#{$way}-#{$selection}: if($size, $flexValue !important, $flexValue);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
#{$way}-#{$selection}: if($size, $value !important, $value);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
@use "sass:map";
|
|
2
|
+
@use "sass:list";
|
|
3
|
+
@use "sass:math";
|
|
4
|
+
@use "../functions/mediaQueries" as mQ;
|
|
5
|
+
@use "../settings/configs" as configs;
|
|
6
|
+
@use "../functions/validations" as val;
|
|
7
|
+
@use "../settings/index" as settings;
|
|
8
|
+
@use "../functions/others" as func;
|
|
9
|
+
|
|
10
|
+
@if settings.$useWrappers {
|
|
11
|
+
@each $wSize, $properties in configs.$wrappers {
|
|
12
|
+
$mainWSize: if($wSize, "#{$wSize}#{\:}wrapper", "wrapper");
|
|
13
|
+
|
|
14
|
+
$size: list.nth($properties, 1);
|
|
15
|
+
$padding: if(list.nth($properties, 2), list.nth($properties, 2), 0);
|
|
16
|
+
|
|
17
|
+
// Validate parameters
|
|
18
|
+
$checkedSize: val.notNull($size, "Wrappers.size");
|
|
19
|
+
|
|
20
|
+
.#{$mainWSize} {
|
|
21
|
+
width: 100%;
|
|
22
|
+
|
|
23
|
+
@if ($padding != 0) {
|
|
24
|
+
padding-inline: $padding;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@include mQ.mQ(min, md) {
|
|
28
|
+
padding-inline: calc((100% - #{$size}) / 2 + $padding);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@if settings.$useShadows {
|
|
35
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
36
|
+
@each $class, $values in configs.$shadows {
|
|
37
|
+
$x: map.get($values, x);
|
|
38
|
+
$y: map.get($values, y);
|
|
39
|
+
$blur: map.get($values, blur);
|
|
40
|
+
$spread: map.get($values, spread);
|
|
41
|
+
$opacity: map.get($values, opacity);
|
|
42
|
+
|
|
43
|
+
// Validate parameters
|
|
44
|
+
$checkedX: val.number($x, "Shadows.x");
|
|
45
|
+
$checkedY: val.number($y, "Shadows.y");
|
|
46
|
+
$checkedBlur: val.number($blur, "Shadows.blur");
|
|
47
|
+
$checkedSpread: val.number($spread, "Shadows.spread");
|
|
48
|
+
$checkedOpacity: val.opacity($opacity, "Shadows.opacity");
|
|
49
|
+
|
|
50
|
+
$mainClass: if($size, "#{$size}#{$divider}divider-#{$class}", "divider-#{$class}");
|
|
51
|
+
|
|
52
|
+
.#{$mainClass} {
|
|
53
|
+
box-shadow: func.shadowValue($x)
|
|
54
|
+
func.shadowValue($y)
|
|
55
|
+
func.shadowValue($blur)
|
|
56
|
+
func.shadowValue($spread)
|
|
57
|
+
rgba(0, 0, 0, $opacity);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@if settings.$useDisplays {
|
|
64
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
65
|
+
@each $display in configs.$displays {
|
|
66
|
+
// Validate parameters
|
|
67
|
+
$checkedDisplay: val.listItem(configs.$displays, $display, "Shaping.displays");
|
|
68
|
+
|
|
69
|
+
$mainClass: if($size, "#{$size}#{$divider}d-#{$display}", "d-#{$display}");
|
|
70
|
+
|
|
71
|
+
.#{$mainClass} {
|
|
72
|
+
display: if($size, $display !important, $display);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
@if settings.$useOverflows {
|
|
79
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
80
|
+
@each $dir in configs.$overflowsDirections {
|
|
81
|
+
// Validate parameters
|
|
82
|
+
@if $dir {
|
|
83
|
+
$checkedDir: val.listItem(("x", "y"), $dir, "Shaping.overflow.direction");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
$dirClass: if($dir, "#{$dir}#{\:}overflow", "overflow");
|
|
87
|
+
$mainClass: if($size, "#{$size}#{$divider}#{$dirClass}", $dirClass);
|
|
88
|
+
$property: if($dir, "overflow-#{$dir}", "overflow");
|
|
89
|
+
|
|
90
|
+
.#{$mainClass} {
|
|
91
|
+
@each $value in configs.$overflows {
|
|
92
|
+
// Validate parameters
|
|
93
|
+
$checkedClass: val.listItem(configs.$overflows, $value, "Shaping.overflow.value");
|
|
94
|
+
|
|
95
|
+
&-#{$value} {
|
|
96
|
+
#{$property}: if($size, $value !important, $value);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
@if settings.$useOpacities {
|
|
105
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
106
|
+
@each $value in configs.$opacities {
|
|
107
|
+
$checkedValue: val.opacity(math.div($value, 100), "Shaping.opacity");
|
|
108
|
+
|
|
109
|
+
$mainClass: if($size, "#{$size}#{$divider}op", "op");
|
|
110
|
+
|
|
111
|
+
.#{$mainClass}#{\:}#{$value} {
|
|
112
|
+
opacity: if($size, $checkedValue !important, $checkedValue);
|
|
113
|
+
|
|
114
|
+
&#{\:}hover:hover {
|
|
115
|
+
opacity: if($size, $checkedValue !important, $checkedValue);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@if settings.$useBlur {
|
|
123
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
124
|
+
@each $value in configs.$blurValues {
|
|
125
|
+
$checkedValue: val.listItem(configs.$blurValues, $value, "Shaping.blur");
|
|
126
|
+
|
|
127
|
+
$mainClass: if($size, "#{$size}#{$divider}bg#{\:}blur", "bg#{\:}blur");
|
|
128
|
+
$calcValue: blur(#{$checkedValue}#{px});
|
|
129
|
+
|
|
130
|
+
.#{$mainClass}#{\:}#{$value} {
|
|
131
|
+
backdrop-filter: if($size, $calcValue !important, $calcValue);
|
|
132
|
+
|
|
133
|
+
&#{\:}hover:hover {
|
|
134
|
+
backdrop-filter: if($size, $calcValue !important, $calcValue);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
@if settings.$useObjectFits {
|
|
142
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
143
|
+
@each $fit in configs.$objectsFits {
|
|
144
|
+
// Validate parameters
|
|
145
|
+
$checkedFit: val.listItem(configs.$objectsFits, $fit, "Shaping.objectFit");
|
|
146
|
+
|
|
147
|
+
$mainClass: if($size, "#{$size}#{$divider}object-fit", "object-fit");
|
|
148
|
+
|
|
149
|
+
.#{$mainClass}#{\:}#{$fit} {
|
|
150
|
+
object-fit: if($size, $fit !important, $fit);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
@if settings.$usePositions {
|
|
157
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
158
|
+
@each $position in configs.$positions {
|
|
159
|
+
// Validate parameters
|
|
160
|
+
$checkedPosition: val.listItem(configs.$positions, $position, "Shaping.position");
|
|
161
|
+
|
|
162
|
+
$mainClass: if($size, "#{$size}#{$divider}p-", "p-");
|
|
163
|
+
|
|
164
|
+
.#{$mainClass}#{$position} {
|
|
165
|
+
position: if($size, $position !important, $position);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@if settings.$useInsets {
|
|
172
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
173
|
+
@each $value in configs.$insetValues {
|
|
174
|
+
@each $position in configs.$insetPositions {
|
|
175
|
+
// Validate parameters
|
|
176
|
+
$checkedPosition: val.listItem(configs.$insetPositions, $position, "Shaping.inset");
|
|
177
|
+
|
|
178
|
+
$mainClass: if($size, "#{$size}#{$divider}inset", "inset");
|
|
179
|
+
$posClass: if($position, "#{$mainClass}-#{$position}", "#{$mainClass}");
|
|
180
|
+
$property: if($position, "inset-#{$position}", "inset");
|
|
181
|
+
$val: if($value == 0, "full", $value);
|
|
182
|
+
|
|
183
|
+
.#{$posClass}#{\:}#{$val} {
|
|
184
|
+
#{$property}: $value;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
@if settings.$useSizes {
|
|
192
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
193
|
+
@each $dir, $direction in configs.$spacesDirections {
|
|
194
|
+
// Validate parameters
|
|
195
|
+
$checkedDir: val.listItem(
|
|
196
|
+
("w", "min#{\:}w", "max#{\:}w", "h", "min#{\:}h", "max#{\:}h"),
|
|
197
|
+
$dir,
|
|
198
|
+
"Shaping.space.direction"
|
|
199
|
+
);
|
|
200
|
+
$checkedDirection: val.listItem(
|
|
201
|
+
("width", "min-width", "max-width", "height", "min-height", "max-height"),
|
|
202
|
+
$direction,
|
|
203
|
+
"Shaping.space.direction"
|
|
204
|
+
);
|
|
205
|
+
$checkedStep: val.number(configs.$spacesStep, "Shaping.space.step");
|
|
206
|
+
|
|
207
|
+
$mainClass: if($size, #{$size}#{$divider}#{$dir}, $dir);
|
|
208
|
+
|
|
209
|
+
.#{$mainClass} {
|
|
210
|
+
@for $i from 0 through 100 {
|
|
211
|
+
$value: $i * $checkedStep;
|
|
212
|
+
|
|
213
|
+
@if ($value != 0) and ($value % $checkedStep == 0) and ($value <= 100) {
|
|
214
|
+
&#{\:}#{$value} {
|
|
215
|
+
#{$direction}: if($size, #{$value}#{"%"} !important, #{$value}#{"%"});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
@if settings.$useGutters {
|
|
225
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
226
|
+
@each $class, $property in configs.$gutters {
|
|
227
|
+
// Validate parameters
|
|
228
|
+
$checkedClass: val.listItem(
|
|
229
|
+
(p, px, py, ps, pe, pt, pb, m, mx, my, ms, me, mt, mb, g, gx, gy),
|
|
230
|
+
$class,
|
|
231
|
+
"Shaping.gutter.class"
|
|
232
|
+
);
|
|
233
|
+
$checkedProperty: val.listItem(
|
|
234
|
+
(
|
|
235
|
+
padding,
|
|
236
|
+
padding-inline,
|
|
237
|
+
padding-block,
|
|
238
|
+
padding-inline-start,
|
|
239
|
+
padding-inline-end,
|
|
240
|
+
padding-block-start,
|
|
241
|
+
padding-block-end,
|
|
242
|
+
margin,
|
|
243
|
+
margin-inline,
|
|
244
|
+
margin-block,
|
|
245
|
+
margin-inline-start,
|
|
246
|
+
margin-inline-end,
|
|
247
|
+
margin-block-start,
|
|
248
|
+
margin-block-end,
|
|
249
|
+
gap,
|
|
250
|
+
column-gap,
|
|
251
|
+
row-gap
|
|
252
|
+
),
|
|
253
|
+
$property,
|
|
254
|
+
"Shaping.gutter.property"
|
|
255
|
+
);
|
|
256
|
+
|
|
257
|
+
$mainClass: if($size, #{$size}#{$divider}#{$class}, $class);
|
|
258
|
+
|
|
259
|
+
.#{$mainClass} {
|
|
260
|
+
@each $vClass, $value in configs.$guttersValues {
|
|
261
|
+
&-#{$vClass} {
|
|
262
|
+
@if $size {
|
|
263
|
+
#{$property}: if($size, $value !important, $value);
|
|
264
|
+
} @else {
|
|
265
|
+
#{$property}: $value;
|
|
266
|
+
|
|
267
|
+
&\:i {
|
|
268
|
+
#{$property}: $value !important;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
@if settings.$useBorders {
|
|
279
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
280
|
+
@for $i from 1 through configs.$bordersValue {
|
|
281
|
+
@each $dir, $property in configs.$bordersDirections {
|
|
282
|
+
// Validate parameters
|
|
283
|
+
$checkedDir: val.listItem((null, "top", "bottom", "start", "end"), $dir, "Shaping.borders");
|
|
284
|
+
$checkedProperty: val.listItem(
|
|
285
|
+
(border, border-block-start, border-block-end, border-inline-start, border-inline-end),
|
|
286
|
+
$property,
|
|
287
|
+
"Shaping.borders"
|
|
288
|
+
);
|
|
289
|
+
|
|
290
|
+
$mainClass: if($size, "#{$size}#{$divider}border", "border");
|
|
291
|
+
$dirClass: if($dir, "#{$dir}#{\:}", $dir);
|
|
292
|
+
|
|
293
|
+
.#{$mainClass}#{\:}#{$dirClass}#{$i} {
|
|
294
|
+
#{$property}-width: if($size, #{$i}#{px} !important, #{$i}#{px});
|
|
295
|
+
|
|
296
|
+
@if not $size {
|
|
297
|
+
#{$property}-style: if($size, solid !important, solid);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
@if settings.$useTextBorders {
|
|
306
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
307
|
+
@for $i from 1 through configs.$bordersValue {
|
|
308
|
+
$mainClass: if($size, "#{$size}#{$divider}stroke", "stroke");
|
|
309
|
+
$value: math.div($i, 10);
|
|
310
|
+
|
|
311
|
+
// Validate parameters
|
|
312
|
+
$checkedValue: val.number($value, "Shaping.textBorder");
|
|
313
|
+
|
|
314
|
+
.#{$mainClass}#{\:}#{$i} {
|
|
315
|
+
-webkit-text-stroke-width: if($size, #{$value}#{px} !important, #{$value}#{px});
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
@if settings.$useRadius {
|
|
322
|
+
@include mQ.multiSizes() using ($size, $divider) {
|
|
323
|
+
@each $dir, $properties in configs.$radiusDirection {
|
|
324
|
+
// Validate parameters
|
|
325
|
+
$checkedDir: val.listItem(
|
|
326
|
+
(
|
|
327
|
+
null,
|
|
328
|
+
"top",
|
|
329
|
+
"bottom",
|
|
330
|
+
"start",
|
|
331
|
+
"end",
|
|
332
|
+
"top-start",
|
|
333
|
+
"top-end",
|
|
334
|
+
"bottom-start",
|
|
335
|
+
"bottom-end"
|
|
336
|
+
),
|
|
337
|
+
$dir,
|
|
338
|
+
"Shaping.radius.direction"
|
|
339
|
+
);
|
|
340
|
+
|
|
341
|
+
$mainClass: if($size, "#{$size}#{$divider}radius", "radius");
|
|
342
|
+
$dirClass: if($dir, "#{$dir}#{\:}", $dir);
|
|
343
|
+
|
|
344
|
+
@each $property in $properties {
|
|
345
|
+
.#{$mainClass}#{\:}#{$dirClass} {
|
|
346
|
+
&full {
|
|
347
|
+
#{$property}: if($size, 100vw !important, 100vw);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
@each $value in configs.$radiuses {
|
|
351
|
+
// Validate parameters
|
|
352
|
+
$checkedProperty: val.listItem(
|
|
353
|
+
(
|
|
354
|
+
border-radius,
|
|
355
|
+
border-start-start-radius,
|
|
356
|
+
border-start-end-radius,
|
|
357
|
+
border-end-start-radius,
|
|
358
|
+
border-end-end-radius
|
|
359
|
+
),
|
|
360
|
+
$property,
|
|
361
|
+
"Shaping.radius.property"
|
|
362
|
+
);
|
|
363
|
+
|
|
364
|
+
&#{$value} {
|
|
365
|
+
#{$property}: if($size, #{$value}#{px} !important, #{$value}#{"px"});
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|