@nuvoui/core 1.2.2 → 1.2.3
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/nuvoui.css +15444 -14758
- package/dist/nuvoui.css.map +1 -1
- package/dist/nuvoui.min.css +1 -1
- package/dist/nuvoui.min.css.map +1 -1
- package/package.json +1 -1
- package/src/styles/index.scss +5 -2
- package/src/styles/layouts/_flex.scss +61 -46
- package/src/styles/layouts/_grid.scss +13 -13
- package/src/styles/mixins-map.scss +1 -1
- package/src/styles/themes/_theme.scss +92 -74
- package/src/styles/utilities/_alignment.scss +12 -12
- package/src/styles/utilities/_animations.scss +5 -9
- package/src/styles/utilities/_borders.scss +77 -80
- package/src/styles/utilities/_colors.scss +61 -65
- package/src/styles/utilities/_cursor.scss +23 -0
- package/src/styles/utilities/_index.scss +1 -0
- package/src/styles/utilities/_opacity.scss +14 -21
- package/src/styles/utilities/_position.scss +1 -3
- package/src/styles/utilities/_sizing.scss +72 -73
- package/src/styles/utilities/_spacing.scss +73 -99
- package/src/styles/utilities/_transitions.scss +4 -6
- package/src/styles/utilities/_typography.scss +92 -95
|
@@ -9,42 +9,42 @@
|
|
|
9
9
|
|
|
10
10
|
// Color Validation
|
|
11
11
|
@function is-valid-color($color) {
|
|
12
|
-
|
|
12
|
+
@return meta.type-of($color) == 'color';
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
// Scale Generation Function
|
|
16
16
|
@function create-color-scale($color) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
$scale: map.set($scale, $shade, $adjusted-color);
|
|
17
|
+
$scale: ();
|
|
18
|
+
$stops: (
|
|
19
|
+
50: 95%,
|
|
20
|
+
100: 85%,
|
|
21
|
+
200: 75%,
|
|
22
|
+
300: 65%,
|
|
23
|
+
400: 55%,
|
|
24
|
+
500: 50%, // Base color
|
|
25
|
+
600: 45%,
|
|
26
|
+
700: 35%,
|
|
27
|
+
800: 25%,
|
|
28
|
+
900: 15%
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
@each $shade, $lightness in $stops {
|
|
32
|
+
$adjusted-color: $color;
|
|
33
|
+
|
|
34
|
+
@if $shade < 500 {
|
|
35
|
+
// Lighter shades: mix with white
|
|
36
|
+
$mix-percentage: math.div($lightness - 50%, 50%) * 100%;
|
|
37
|
+
$adjusted-color: color.mix(white, $color, $mix-percentage);
|
|
38
|
+
} @else if $shade > 500 {
|
|
39
|
+
// Darker shades: mix with black
|
|
40
|
+
$mix-percentage: math.div(50% - $lightness, 50%) * 100%;
|
|
41
|
+
$adjusted-color: color.mix(black, $color, $mix-percentage);
|
|
45
42
|
}
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
|
|
44
|
+
$scale: map.set($scale, $shade, $adjusted-color);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@return $scale;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
// Luminance calculation for contrast
|
|
@@ -52,72 +52,68 @@
|
|
|
52
52
|
$red: math.div(color.channel($color, "red"), 255);
|
|
53
53
|
$green: math.div(color.channel($color, "green"), 255);
|
|
54
54
|
$blue: math.div(color.channel($color, "blue"), 255);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
|
|
56
|
+
$red: if($red <= 0.0393, math.div($red, 12.92), math.pow((math.div($red + 0.055, 1.055)), 2.4));
|
|
57
|
+
$green: if($green <= 0.0393, math.div($green, 12.92), math.pow((math.div($green + 0.055, 1.055)), 2.4));
|
|
58
|
+
$blue: if($blue <= 0.0393, math.div($blue, 12.92), math.pow((math.div($blue + 0.055, 1.055)), 2.4));
|
|
59
|
+
|
|
60
|
+
@return 0.2126 * $red + 0.7152 * $green + 0.0722 * $blue;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
// Find appropriate text color for a background
|
|
64
64
|
@function find-text-color($background) {
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
$luminance: luminance($background);
|
|
66
|
+
@return if($luminance > 0.55, #000, #fff);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
// Adaptive contrast mixin
|
|
70
70
|
@mixin adaptive-contrast($color) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
color.adjust($color, $lightness: -10%),
|
|
71
|
+
background-color: $color;
|
|
72
|
+
color: find-text-color($color);
|
|
73
|
+
|
|
74
|
+
@media (prefers-contrast: more) {
|
|
75
|
+
$adjusted: if(color.lightness($color) > 50%,
|
|
76
|
+
color.adjust($color, $lightness: -10%),
|
|
77
77
|
color.adjust($color, $lightness: 10%));
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
background-color: $adjusted;
|
|
80
|
+
color: find-text-color($adjusted);
|
|
81
|
+
}
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
// Generate color scales
|
|
85
85
|
$colors: (
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
'primary': create-color-scale($primary),
|
|
87
|
+
'secondary': create-color-scale($secondary),
|
|
88
|
+
'success': create-color-scale($success),
|
|
89
|
+
'danger': create-color-scale($danger),
|
|
90
|
+
'warning': create-color-scale($warning),
|
|
91
|
+
'info': create-color-scale($info)
|
|
92
92
|
);
|
|
93
93
|
|
|
94
94
|
// Generate scales for primitives
|
|
95
95
|
$colors-primitives: ();
|
|
96
96
|
|
|
97
97
|
@each $name, $color in $color-primitives {
|
|
98
|
-
|
|
98
|
+
$colors-primitives: map.set($colors-primitives, $name, create-color-scale($color));
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
// todo: documentation
|
|
102
102
|
@mixin bg($color) {
|
|
103
|
-
|
|
104
|
-
background-color: $color;
|
|
105
|
-
}
|
|
103
|
+
background-color: $color;
|
|
106
104
|
}
|
|
107
105
|
@mixin color($color) {
|
|
108
|
-
|
|
109
|
-
color: $color;
|
|
110
|
-
}
|
|
106
|
+
color: $color;
|
|
111
107
|
}
|
|
112
108
|
@mixin gradient($direction, $colors...) {
|
|
113
|
-
|
|
109
|
+
background-image: linear-gradient($direction, $colors);
|
|
114
110
|
}
|
|
115
111
|
|
|
116
112
|
// Filter Mixins
|
|
117
113
|
@mixin backdrop-filter($value) {
|
|
118
|
-
|
|
114
|
+
backdrop-filter: $value;
|
|
119
115
|
}
|
|
120
116
|
|
|
121
117
|
@mixin filter($value) {
|
|
122
|
-
|
|
123
|
-
}
|
|
118
|
+
filter: $value;
|
|
119
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
@use '../abstracts' as VAR;
|
|
2
|
+
|
|
3
|
+
@mixin cursor($cursor-value) {
|
|
4
|
+
cursor: $cursor-value;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
@if VAR.$generate-utility-classes {
|
|
8
|
+
.cursor-auto {@include cursor(auto);}
|
|
9
|
+
.cursor-pointer { @include cursor(pointer); }
|
|
10
|
+
.cursor-default { @include cursor(default); }
|
|
11
|
+
.cursor-move { @include cursor(move); }
|
|
12
|
+
.cursor-not-allowed { @include cursor(not-allowed); }
|
|
13
|
+
.cursor-wait { @include cursor(wait); }
|
|
14
|
+
.cursor-help { @include cursor(help); }
|
|
15
|
+
.cursor-text { @include cursor(text); }
|
|
16
|
+
.cursor-cell { @include cursor(cell); }
|
|
17
|
+
.cursor-crosshair { @include cursor(crosshair); }
|
|
18
|
+
.cursor-grabbing { @include cursor(grabbing); }
|
|
19
|
+
.cursor-grab { @include cursor(grab); }
|
|
20
|
+
.cursor-zoom-in { @include cursor(zoom-in); }
|
|
21
|
+
.cursor-zoom-out { @include cursor(zoom-out); }
|
|
22
|
+
.cursor-none { @include cursor(none); }
|
|
23
|
+
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Module: Opacity
|
|
3
3
|
|
|
4
4
|
@use "sass:math";
|
|
5
|
+
@use "sass:meta";
|
|
5
6
|
@use "../abstracts" as *;
|
|
6
7
|
|
|
7
8
|
/**
|
|
@@ -68,30 +69,30 @@
|
|
|
68
69
|
* Opacity values are defined in the $percentages variable
|
|
69
70
|
* Transition timing can be customized via CSS variables
|
|
70
71
|
*
|
|
71
|
-
* @see transitions
|
|
72
|
+
* @see transitions
|
|
72
73
|
*/
|
|
73
74
|
|
|
74
75
|
@mixin opacity($value) {
|
|
75
|
-
opacity:
|
|
76
|
+
opacity: calc(#{$value} / 100);
|
|
76
77
|
}
|
|
77
78
|
|
|
78
79
|
@if $generate-utility-classes {
|
|
79
80
|
// Opacity Utilities
|
|
80
81
|
@each $i in $percentages {
|
|
81
82
|
.opacity-#{$i} {
|
|
82
|
-
@include opacity
|
|
83
|
+
@include opacity($i);
|
|
83
84
|
}
|
|
84
85
|
.hover\:opacity-#{$i}:hover {
|
|
85
|
-
@include opacity
|
|
86
|
+
@include opacity($i);
|
|
86
87
|
}
|
|
87
88
|
.focus\:opacity-#{$i}:focus {
|
|
88
|
-
@include opacity
|
|
89
|
+
@include opacity($i);
|
|
89
90
|
}
|
|
90
91
|
.active\:opacity-#{$i}:active {
|
|
91
|
-
@include opacity
|
|
92
|
+
@include opacity($i);
|
|
92
93
|
}
|
|
93
94
|
.group:hover .group-hover\:opacity-#{$i} {
|
|
94
|
-
@include opacity
|
|
95
|
+
@include opacity($i);
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
|
|
@@ -100,29 +101,21 @@
|
|
|
100
101
|
@media (min-width: #{$width}) {
|
|
101
102
|
@each $i in $percentages {
|
|
102
103
|
.opacity-#{$i}\@#{$breakpoint} {
|
|
103
|
-
@include opacity
|
|
104
|
+
@include opacity($i);
|
|
104
105
|
}
|
|
105
106
|
.hover\:opacity-#{$i}\@#{$breakpoint}:hover {
|
|
106
|
-
@include opacity
|
|
107
|
+
@include opacity($i);
|
|
107
108
|
}
|
|
108
109
|
.focus\:opacity-#{$i}\@#{$breakpoint}:focus {
|
|
109
|
-
@include opacity
|
|
110
|
+
@include opacity($i);
|
|
110
111
|
}
|
|
111
112
|
.active\:opacity-#{$i}\@#{$breakpoint}:active {
|
|
112
|
-
@include opacity
|
|
113
|
+
@include opacity($i);
|
|
113
114
|
}
|
|
114
115
|
.group:hover .group-hover\:opacity-#{$i}\@#{$breakpoint} {
|
|
115
|
-
@include opacity
|
|
116
|
+
@include opacity($i);
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
119
|
}
|
|
119
120
|
}
|
|
120
|
-
|
|
121
|
-
// Transition Opacity
|
|
122
|
-
// TODO move to transitons may be?
|
|
123
|
-
.transition-opacity {
|
|
124
|
-
transition-property: opacity;
|
|
125
|
-
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
126
|
-
transition-duration: 150ms;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
121
|
+
}
|
|
@@ -173,7 +173,6 @@
|
|
|
173
173
|
|
|
174
174
|
// todo: Documentation
|
|
175
175
|
@mixin absolute-center {
|
|
176
|
-
& {
|
|
177
176
|
position: absolute;
|
|
178
177
|
left: 50%;
|
|
179
178
|
top: 50%;
|
|
@@ -182,7 +181,6 @@
|
|
|
182
181
|
--translate-y: -50%;
|
|
183
182
|
|
|
184
183
|
transform: translateX(var(--translate-x)) translateY(var(--translate-y)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1));
|
|
185
|
-
}
|
|
186
184
|
}
|
|
187
185
|
|
|
188
186
|
// todo: Documentation
|
|
@@ -255,4 +253,4 @@ $position-fractions: (
|
|
|
255
253
|
}
|
|
256
254
|
}
|
|
257
255
|
}
|
|
258
|
-
}
|
|
256
|
+
}
|
|
@@ -1,98 +1,97 @@
|
|
|
1
1
|
// _spacing.scss
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
@use 'sass:math';
|
|
4
4
|
@use 'sass:string' as str;
|
|
5
5
|
@use '../abstracts' as VAR;
|
|
6
6
|
@use './container-queries' as Q;
|
|
7
7
|
@use './media-queries' as MQ;
|
|
8
8
|
|
|
9
|
-
@mixin width($value) {
|
|
10
|
-
@mixin height($value) {
|
|
9
|
+
@mixin width($value) { width: $value; }
|
|
10
|
+
@mixin height($value) { height: $value; }
|
|
11
11
|
@mixin min-width($value) { min-width: $value; }
|
|
12
12
|
@mixin min-height($value) { min-height: $value; }
|
|
13
13
|
@mixin max-width($value) { max-width: $value; }
|
|
14
14
|
@mixin max-height($value) { max-height: $value; }
|
|
15
15
|
|
|
16
|
-
@mixin width-percent($i) {
|
|
17
|
-
@mixin height-percent($i) {
|
|
18
|
-
@mixin min-width-percent($i) {
|
|
19
|
-
@mixin min-height-percent($i) {
|
|
20
|
-
@mixin max-width-percent($i) {
|
|
21
|
-
@mixin max-height-percent($i) {
|
|
16
|
+
@mixin width-percent($i) { width: str.unquote($i + '%'); }
|
|
17
|
+
@mixin height-percent($i) { height: str.unquote($i + '%'); }
|
|
18
|
+
@mixin min-width-percent($i) { min-width: str.unquote($i + '%'); }
|
|
19
|
+
@mixin min-height-percent($i) { min-height: str.unquote($i + '%'); }
|
|
20
|
+
@mixin max-width-percent($i) { max-width: str.unquote($i + '%'); }
|
|
21
|
+
@mixin max-height-percent($i) { max-height: str.unquote($i + '%'); }
|
|
22
22
|
|
|
23
|
-
@mixin w-auto {
|
|
24
|
-
@mixin w-full {
|
|
25
|
-
@mixin h-auto {
|
|
26
|
-
@mixin h-full {
|
|
27
|
-
@mixin min-w-full {
|
|
28
|
-
@mixin max-w-full {
|
|
29
|
-
@mixin min-h-full {
|
|
30
|
-
@mixin max-h-full {
|
|
23
|
+
@mixin w-auto { width: auto; }
|
|
24
|
+
@mixin w-full { width: 100%; }
|
|
25
|
+
@mixin h-auto { height: auto; }
|
|
26
|
+
@mixin h-full { height: 100%; }
|
|
27
|
+
@mixin min-w-full { min-width: 100%; }
|
|
28
|
+
@mixin max-w-full { max-width: 100%; }
|
|
29
|
+
@mixin min-h-full { min-height: 100%; }
|
|
30
|
+
@mixin max-h-full { max-height: 100%; }
|
|
31
31
|
|
|
32
|
-
@mixin w-screen {
|
|
33
|
-
@mixin h-screen {
|
|
32
|
+
@mixin w-screen { width: 100vw; }
|
|
33
|
+
@mixin h-screen { height: 100dvh; }
|
|
34
34
|
|
|
35
35
|
@if VAR.$generate-utility-classes {
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
.w-screen { @include w-screen; }
|
|
37
|
+
.h-screen { @include h-screen; }
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
:not(.flex)>.w-full { @include w-full; }
|
|
39
|
+
.w-auto { @include w-auto; }
|
|
40
|
+
.w-full { @include w-full; }
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
.h-auto { @include h-auto; }
|
|
43
|
+
.h-full { @include h-full; }
|
|
44
|
+
.min-w-full { @include min-w-full; }
|
|
45
|
+
.max-w-full { @include max-w-full; }
|
|
46
|
+
.min-h-full { @include min-h-full; }
|
|
47
|
+
.max-h-full { @include max-h-full; }
|
|
49
48
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
49
|
+
// Percentage widths
|
|
50
|
+
@each $i in VAR.$percentages {
|
|
51
|
+
.w-#{$i}p { @include width-percent($i); }
|
|
52
|
+
.h-#{$i}p { @include height-percent($i); }
|
|
53
|
+
.min-w-#{$i}p { @include min-width-percent($i); }
|
|
54
|
+
.min-h-#{$i}p { @include min-height-percent($i); }
|
|
55
|
+
.max-w-#{$i}p { @include max-width-percent($i); }
|
|
56
|
+
.max-h-#{$i}p { @include max-height-percent($i); }
|
|
57
|
+
}
|
|
59
58
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
59
|
+
// Generate utilities from spacing map
|
|
60
|
+
@each $key, $value in VAR.$spacings {
|
|
61
|
+
.w-#{$key} { @include width($value); }
|
|
62
|
+
.h-#{$key} { @include height($value); }
|
|
63
|
+
.min-w-#{$key} { @include min-width($value); }
|
|
64
|
+
.min-h-#{$key} { @include min-height($value); }
|
|
65
|
+
.max-w-#{$key} { @include max-width($value); }
|
|
66
|
+
.max-h-#{$key} { @include max-height($value); }
|
|
67
|
+
}
|
|
69
68
|
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
// Pixel widths based on spacing scale
|
|
70
|
+
@each $breakpoint, $width in VAR.$breakpoints {
|
|
72
71
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
.w-#{$breakpoint} { @include width($width); }
|
|
73
|
+
.min-w-#{$breakpoint} { @include min-width($width); }
|
|
74
|
+
.max-w-#{$breakpoint} { @include max-width($width); }
|
|
76
75
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
76
|
+
@include MQ.media-up ($breakpoint) {
|
|
77
|
+
// Generate utilities from spacing map
|
|
78
|
+
@each $i in VAR.$percentages {
|
|
79
|
+
.w-#{$i}p\@#{$breakpoint} { @include width-percent($i); }
|
|
80
|
+
.h-#{$i}p\@#{$breakpoint} { @include height-percent($i); }
|
|
81
|
+
.min-w-#{$i}p\@#{$breakpoint} { @include min-width-percent($i); }
|
|
82
|
+
.min-h-#{$i}p\@#{$breakpoint} { @include min-height-percent($i); }
|
|
83
|
+
.max-w-#{$i}p\@#{$breakpoint} { @include max-width-percent($i); }
|
|
84
|
+
.max-h-#{$i}p\@#{$breakpoint} { @include max-height-percent($i); }
|
|
85
|
+
}
|
|
87
86
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
87
|
+
@each $key, $value in VAR.$spacings {
|
|
88
|
+
.w-#{$key}\@#{$breakpoint} { @include width($value); }
|
|
89
|
+
.h-#{$key}\@#{$breakpoint} { @include height($value); }
|
|
90
|
+
.min-w-#{$key}\@#{$breakpoint} { @include min-width($value); }
|
|
91
|
+
.min-h-#{$key}\@#{$breakpoint} { @include min-height($value); }
|
|
92
|
+
.max-w-#{$key}\@#{$breakpoint} { @include max-width($value); }
|
|
93
|
+
.max-h-#{$key}\@#{$breakpoint} { @include max-height($value); }
|
|
94
|
+
}
|
|
97
95
|
}
|
|
98
|
-
}
|
|
96
|
+
}
|
|
97
|
+
}
|