@nuvoui/core 1.2.4 → 1.2.5

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.
@@ -11,100 +11,89 @@
11
11
  * - Transform origin
12
12
  */
13
13
 
14
+ // Common transform function to avoid repetition
15
+ @mixin apply-transform {
16
+ transform:
17
+ translateX(var(--translate-x, 0))
18
+ translateY(var(--translate-y, 0))
19
+ translateZ(var(--translate-z, 0))
20
+ rotate(var(--rotate, 0))
21
+ skewX(var(--skew-x, 0))
22
+ skewY(var(--skew-y, 0))
23
+ scaleX(var(--scale-x, 1))
24
+ scaleY(var(--scale-y, 1))
25
+ scaleZ(var(--scale-z, 1));
26
+ }
27
+
28
+
14
29
  // Translation mixins
15
30
  @mixin translate-x($value) {
16
- & {
17
- --translate-x: #{$value};
18
-
19
- transform: translateX(var(--translate-x)) translateY(var(--translate-y, 0)) 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)) scaleZ(var(--scale-z, 1));
20
- }
31
+ // Store the value in a CSS variable
32
+ --translate-x: #{$value};
33
+ @include apply-transform;
21
34
  }
22
35
 
23
36
  @mixin translate-y($value) {
24
- & {
25
- --translate-y: #{$value};
26
-
27
- transform: translateX(var(--translate-x, 0)) 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)) scaleZ(var(--scale-z, 1));
28
- }
37
+ // Store the value in a CSS variable
38
+ --translate-y: #{$value};
39
+ @include apply-transform;
29
40
  }
30
41
 
31
42
  @mixin translate-z($value) {
32
- & {
33
- --translate-z: #{$value};
34
-
35
- transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
36
- }
43
+ // Store the value in a CSS variable
44
+ --translate-z: #{$value};
45
+ @include apply-transform;
37
46
  }
38
47
 
39
48
  @mixin translate($x, $y: null) {
40
- & {
41
- --translate-x: #{$x};
42
-
43
- @if $y {
44
- --translate-y: #{$y};
45
- }
46
-
47
- transform: translateX(var(--translate-x)) translateY(var(--translate-y, 0)) 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)) scaleZ(var(--scale-z, 1));
49
+ // Always set the x value
50
+ --translate-x: #{$x};
51
+
52
+ // Only set y if provided
53
+ @if $y {
54
+ --translate-y: #{$y};
48
55
  }
56
+
57
+ @include apply-transform;
49
58
  }
50
59
 
51
60
  // Scale mixins
52
61
  @mixin scale-x($value) {
53
- & {
54
- --scale-x: #{$value};
55
-
56
- transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
57
- }
62
+ --scale-x: #{$value};
63
+ @include apply-transform;
58
64
  }
59
65
 
60
66
  @mixin scale-y($value) {
61
- & {
62
- --scale-y: #{$value};
63
-
64
- transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) 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)) scaleZ(var(--scale-z, 1));
65
- }
67
+ --scale-y: #{$value};
68
+ @include apply-transform;
66
69
  }
67
70
 
68
71
  @mixin scale($value) {
69
- & {
70
- --scale-x: #{$value};
71
- --scale-y: #{$value};
72
-
73
- transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x)) scaleY(var(--scale-y)) scaleZ(var(--scale-z, 1));
74
- }
72
+ --scale-x: #{$value};
73
+ --scale-y: #{$value};
74
+ @include apply-transform;
75
75
  }
76
76
 
77
77
  // Rotation mixins
78
78
  @mixin rotate($value) {
79
- & {
80
- --rotate: #{$value};
81
-
82
- transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate)) skewX(var(--skew-x, 0)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
83
- }
79
+ --rotate: #{$value};
80
+ @include apply-transform;
84
81
  }
85
82
 
86
83
  // Skew mixins
87
84
  @mixin skew-x($value) {
88
- & {
89
- --skew-x: #{$value};
90
-
91
- transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x)) skewY(var(--skew-y, 0)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
92
- }
85
+ --skew-x: #{$value};
86
+ @include apply-transform;
93
87
  }
94
88
 
95
89
  @mixin skew-y($value) {
96
- & {
97
- --skew-y: #{$value};
98
-
99
- transform: translateX(var(--translate-x, 0)) translateY(var(--translate-y, 0)) translateZ(var(--translate-z, 0)) rotate(var(--rotate, 0)) skewX(var(--skew-x, 0)) skewY(var(--skew-y)) scaleX(var(--scale-x, 1)) scaleY(var(--scale-y, 1)) scaleZ(var(--scale-z, 1));
100
- }
90
+ --skew-y: #{$value};
91
+ @include apply-transform;
101
92
  }
102
93
 
103
94
  // Transform origin
104
95
  @mixin origin($value) {
105
- & {
106
96
  transform-origin: $value;
107
- }
108
97
  }
109
98
 
110
99
  // Common transform values
@@ -127,95 +116,172 @@ $translate-values: (
127
116
  '66p': 66.667%,
128
117
  '75p': 75%,
129
118
  '100p': 100%,
130
- '-1': -0.25rem,
131
- '-2': -0.5rem,
132
- '-3': -0.75rem,
133
- '-4': -1rem,
134
- '-5': -1.25rem,
135
- '-6': -1.5rem,
136
- '-8': -2rem,
137
- '-10': -2.5rem,
138
- '-12': -3rem,
139
- '-16': -4rem,
140
- '-20': -5rem,
141
- '-25p': 25%,
142
- '-33p': 33.333%,
143
- '-50p': 50%,
144
- '-66p': 66.667%,
145
- '-75p': 75%,
146
- '-100p': -100%,
147
119
  );
148
120
 
121
+ $negative-translate-values: (
122
+ '1': -0.25rem,
123
+ '2': -0.5rem,
124
+ '3': -0.75rem,
125
+ '4': -1rem,
126
+ '5': -1.25rem,
127
+ '6': -1.5rem,
128
+ '8': -2rem,
129
+ '10': -2.5rem,
130
+ '12': -3rem,
131
+ '16': -4rem,
132
+ '20': -5rem,
133
+ '25p': 25%,
134
+ '33p': 33.333%,
135
+ '50p': 50%,
136
+ '66p': 66.667%,
137
+ '75p': 75%,
138
+ '100p': -100%,
139
+ );
140
+
141
+ // Scale hover utilities
142
+ $scale-values: (
143
+ '0': 0,
144
+ '50': 0.5,
145
+ '75': 0.75,
146
+ '90': 0.9,
147
+ '95': 0.95,
148
+ '100': 1,
149
+ '105': 1.05,
150
+ '110': 1.1,
151
+ '125': 1.25,
152
+ '150': 1.5
153
+ );
154
+
155
+ // Rotation hover utilities
156
+ $rotation-values: (
157
+ '0': 0deg,
158
+ '45': 45deg,
159
+ '90': 90deg,
160
+ '180': 180deg,
161
+ '270': 270deg
162
+ );
163
+
164
+ // Separate map for negative rotations
165
+ $negative-rotation-values: (
166
+ '45': -45deg,
167
+ '90': -90deg,
168
+ '180': -180deg,
169
+ '270': -270deg
170
+ );
171
+
172
+ // Origin hover utilities
173
+ $origin-values: (
174
+ 'center': center,
175
+ 'top': top,
176
+ 'top-right': top right,
177
+ 'right': right,
178
+ 'bottom-right': bottom right,
179
+ 'bottom': bottom,
180
+ 'bottom-left': bottom left,
181
+ 'left': left,
182
+ 'top-left': top left
183
+ );
184
+
149
185
  // Generate utility classes
150
186
  @if $generate-utility-classes {
151
187
  // Translate utilities
152
188
  @each $key, $value in $translate-values {
153
- .translate-x-#{$key} { @include translate-x($value); }
154
- .translate-y-#{$key} { @include translate-y($value); }
189
+ .translate-x-#{$key},
190
+ .hover\:translate-x-#{$key}:hover,
191
+ .group:hover .group-hover\:translate-x-#{$key} { @include translate-x($value); }
192
+
193
+ .translate-y-#{$key},
194
+ .hover\:translate-y-#{$key}:hover,
195
+ .group:hover .group-hover\:translate-y-#{$key} { @include translate-y($value); }
196
+ }
197
+ @each $key, $value in $negative-translate-values {
198
+ .-translate-x-#{$key},
199
+ .hover\:-translate-x-#{$key}:hover,
200
+ .group:hover .group-hover\:-translate-x-#{$key} { @include translate-x($value); }
201
+
202
+ .-translate-y-#{$key},
203
+ .hover\:-translate-y-#{$key}:hover,
204
+ .group:hover .group-hover\:-translate-y-#{$key} { @include translate-y($value); }
155
205
  }
156
206
 
157
- // Scale utilities
158
- .scale-0 { @include scale(0); }
159
- .scale-50 { @include scale(0.5); }
160
- .scale-75 { @include scale(0.75); }
161
- .scale-90 { @include scale(0.9); }
162
- .scale-95 { @include scale(0.95); }
163
- .scale-100 { @include scale(1); }
164
- .scale-105 { @include scale(1.05); }
165
- .scale-110 { @include scale(1.1); }
166
- .scale-125 { @include scale(1.25); }
167
- .scale-150 { @include scale(1.5); }
207
+ @each $key, $value in $scale-values {
208
+ .scale-#{$key},
209
+ .hover\:scale-#{$key}:hover,
210
+ .group:hover .group-hover\:scale-#{$key} { @include scale($value); }
211
+
212
+ .scale-x-#{$key},
213
+ .hover\:scale-x-#{$key}:hover,
214
+ .group:hover .group-hover\:scale-x-#{$key} { @include scale-x($value); }
215
+
216
+ .scale-y-#{$key},
217
+ .hover\:scale-y-#{$key}:hover,
218
+ .group:hover .group-hover\:scale-y-#{$key} { @include scale-y($value); }
219
+ }
168
220
 
169
221
  // Rotation utilities
170
- .rotate-0 { @include rotate(0deg); }
171
- .rotate-45 { @include rotate(45deg); }
172
- .rotate-90 { @include rotate(90deg); }
173
- .rotate-180 { @include rotate(180deg); }
174
- .rotate-270 { @include rotate(270deg); }
175
- .-rotate-45 { @include rotate(-45deg); }
176
- .-rotate-90 { @include rotate(-90deg); }
177
- .-rotate-180 { @include rotate(-180deg); }
178
- .-rotate-270 { @include rotate(-270deg); }
222
+ @each $key, $value in $rotation-values {
223
+ .rotate-#{$key},
224
+ .hover\:rotate-#{$key}:hover,
225
+ .group:hover .group-hover\:rotate-#{$key} { @include rotate($value); }
226
+ }
227
+
228
+ // Negative rotation utilities
229
+ @each $key, $value in $negative-rotation-values {
230
+ .-rotate-#{$key},
231
+ .hover\:-rotate-#{$key}:hover,
232
+ .group:hover .group-hover\:-rotate-#{$key} { @include rotate($value); }
233
+ }
179
234
 
180
235
  // Origin utilities
181
- .origin-center { @include origin(center); }
182
- .origin-top { @include origin(top); }
183
- .origin-top-right { @include origin(top right); }
184
- .origin-right { @include origin(right); }
185
- .origin-bottom-right { @include origin(bottom right); }
186
- .origin-bottom { @include origin(bottom); }
187
- .origin-bottom-left { @include origin(bottom left); }
188
- .origin-left { @include origin(left); }
189
- .origin-top-left { @include origin(top left); }
190
-
236
+ @each $key, $value in $origin-values {
237
+ .origin-#{$key},
238
+ .hover\:origin-#{$key}:hover,
239
+ .group:hover .group-hover\:origin-#{$key} { @include origin($value); }
240
+ }
241
+
191
242
  // Responsive variants
192
243
  @each $breakpoint, $width in $breakpoints {
193
244
  @media (min-width: #{$width}) {
194
245
  @each $key, $value in $translate-values {
195
- .translate-x-#{$key}\@#{$breakpoint} { @include translate-x($value); }
196
- .translate-y-#{$key}\@#{$breakpoint} { @include translate-y($value); }
246
+ .translate-x-#{$key}\@#{$breakpoint},
247
+ .hover\:translate-x-#{$key}\@#{$breakpoint}:hover,
248
+ .group:hover .group-hover\:translate-x-#{$key}\@#{$breakpoint} { @include translate-x($value); }
249
+
250
+ .translate-x-#{$key}\@#{$breakpoint},
251
+ .hover\:translate-y-#{$key}\@#{$breakpoint}:hover,
252
+ .group:hover .group-hover\:translate-y-#{$key}\@#{$breakpoint} { @include translate-y($value); }
253
+ }
254
+ @each $key, $value in $negative-translate-values {
255
+ .-translate-x-#{$key}\@#{$breakpoint},
256
+ .hover\:-translate-x-#{$key}\@#{$breakpoint}:hover,
257
+ .group:hover .group-hover\:-translate-x-#{$key}\@#{$breakpoint} { @include translate-x($value); }
258
+
259
+ .-translate-x-#{$key}\@#{$breakpoint},
260
+ .hover\:-translate-y-#{$key}\@#{$breakpoint}:hover,
261
+ .group:hover .group-hover\:-translate-y-#{$key}\@#{$breakpoint} { @include translate-y($value); }
197
262
  }
198
263
 
199
- // Scale responsive
200
- .scale-0\@#{$breakpoint} { @include scale(0); }
201
- .scale-50\@#{$breakpoint} { @include scale(0.5); }
202
- .scale-75\@#{$breakpoint} { @include scale(0.75); }
203
- .scale-90\@#{$breakpoint} { @include scale(0.9); }
204
- .scale-95\@#{$breakpoint} { @include scale(0.95); }
205
- .scale-100\@#{$breakpoint} { @include scale(1); }
206
- .scale-105\@#{$breakpoint} { @include scale(1.05); }
207
- .scale-110\@#{$breakpoint} { @include scale(1.1); }
208
- .scale-125\@#{$breakpoint} { @include scale(1.25); }
209
- .scale-150\@#{$breakpoint} { @include scale(1.5); }
264
+ // Scale hover responsive
265
+ @each $key, $value in $scale-values {
266
+ .scale-#{$key}\@#{$breakpoint},
267
+ .hover\:scale-#{$key}\@#{$breakpoint}:hover,
268
+ .group:hover .group-hover\:scale-#{$key}\@#{$breakpoint} { @include scale($value); }
269
+ }
210
270
 
211
- // Rotation responsive
212
- .rotate-0\@#{$breakpoint} { @include rotate(0deg); }
213
- .rotate-45\@#{$breakpoint} { @include rotate(45deg); }
214
- .rotate-90\@#{$breakpoint} { @include rotate(90deg); }
215
- .rotate-180\@#{$breakpoint} { @include rotate(180deg); }
216
- .-rotate-45\@#{$breakpoint} { @include rotate(-45deg); }
217
- .-rotate-90\@#{$breakpoint} { @include rotate(-90deg); }
218
- .-rotate-180\@#{$breakpoint} { @include rotate(-180deg); }
271
+ // Rotation hover responsive
272
+ @each $key, $value in $rotation-values {
273
+ .rotate-#{$key}\@#{$breakpoint},
274
+ .hover\:rotate-#{$key}\@#{$breakpoint}:hover,
275
+ .group:hover .group-hover\:rotate-#{$key}\@#{$breakpoint} { @include rotate($value); }
276
+ }
277
+
278
+ // Negative rotation utilities
279
+ @each $key, $value in $negative-rotation-values {
280
+ .-rotate-#{$key}\@#{$breakpoint},
281
+ .hover\:-rotate-#{$key}\@#{$breakpoint}:hover,
282
+ .group:hover .group-hover\:-rotate-#{$key}\@#{$breakpoint} { @include rotate($value); }
283
+ }
284
+
219
285
  }
220
286
  }
221
287
  }
@@ -9,18 +9,11 @@
9
9
  * - .duration-{time}: Set transition duration
10
10
  * - .ease-{type}: Set transition timing function
11
11
  * - .delay-{time}: Set transition delay
12
- */
13
-
14
- // Base transition mixins
15
- @mixin transition {
16
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
17
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
18
- transition-duration: 150ms;
19
- }
12
+ */
20
13
 
21
14
  // Property-specific transition mixins
22
15
  @mixin transition-none { transition-property: none; }
23
- @mixin transition-all { transition-property: all; }
16
+ @mixin transition { transition-property: all; }
24
17
  @mixin transition-colors { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; }
25
18
  @mixin transition-opacity { transition-property: opacity; }
26
19
  @mixin transition-shadow { transition-property: box-shadow; }
@@ -79,14 +72,9 @@ $delays: (
79
72
 
80
73
 
81
74
  @if $generate-utility-classes {
82
- // Base transition
83
- .transition {
84
- @include transition;
85
- }
86
-
87
75
  // Property-specific transitions
88
76
  .transition-none { @include transition-none; }
89
- .transition-all { @include transition-all; }
77
+ .transition { @include transition; }
90
78
  .transition-colors { @include transition-colors; }
91
79
  .transition-opacity { @include transition-opacity; }
92
80
  .transition-shadow { @include transition-shadow; }
@@ -126,7 +114,7 @@ $delays: (
126
114
 
127
115
  // Property-specific transitions
128
116
  .transition-none\@#{$breakpoint} { @include transition-none; }
129
- .transition-all\@#{$breakpoint} { @include transition-all; }
117
+ .transition\@#{$breakpoint} { @include transition; }
130
118
  .transition-colors\@#{$breakpoint} { @include transition-colors; }
131
119
  .transition-opacity\@#{$breakpoint} { @include transition-opacity; }
132
120
  .transition-shadow\@#{$breakpoint} { @include transition-shadow; }
@@ -0,0 +1,114 @@
1
+ // Section: Layout
2
+ // Module: Z-Index
3
+
4
+ @use 'sass:map';
5
+ @use 'sass:meta';
6
+
7
+ // Import variables
8
+ @use '../abstracts' as VAR;
9
+
10
+ /**
11
+ * Z-Index Utilities
12
+ *
13
+ * Classes:
14
+ * - z-index values: .z-0, .z-10, .z-20, etc.
15
+ * - Named z-index levels: .z-auto, .z-base, .z-dropdown, etc.
16
+ *
17
+ * All utilities support responsive variants with @breakpoint suffix:
18
+ * - .z-10@md, .z-dropdown@lg, etc.
19
+ */
20
+
21
+ // Z-index values map (can be moved to variables)
22
+ $z-indexes: (
23
+ 'auto': auto,
24
+ '0': 0,
25
+ '10': 10,
26
+ '20': 20,
27
+ '30': 30,
28
+ '40': 40,
29
+ '50': 50,
30
+ '60': 60,
31
+ '70': 70,
32
+ '80': 80,
33
+ '90': 90,
34
+ '100': 100,
35
+ '200': 200,
36
+ '500': 500,
37
+ '1000': 1000,
38
+ );
39
+
40
+ // Named z-index levels (can be moved to variables)
41
+ $z-index-levels: (
42
+ 'base': 0,
43
+ 'hover': 10,
44
+ 'dropdown': 100,
45
+ 'sticky': 200,
46
+ 'fixed': 300,
47
+ 'drawer': 400,
48
+ 'modal': 500,
49
+ 'popover': 600,
50
+ 'tooltip': 700,
51
+ 'overlay': 800,
52
+ 'toast': 900,
53
+ 'max': 9999
54
+ );
55
+
56
+ /**
57
+ * Apply a z-index value
58
+ * @param {Number|String} $value - Z-index value or key
59
+ */
60
+ @mixin z-index($value) {
61
+ @if map.has-key($z-indexes, $value) {
62
+ z-index: map.get($z-indexes, $value);
63
+ } @else if map.has-key($z-index-levels, $value) {
64
+ z-index: map.get($z-index-levels, $value);
65
+ } @else {
66
+ z-index: $value;
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Generate z-index utility classes
72
+ * @param {String} $breakpoint - Optional breakpoint name for responsive variants
73
+ */
74
+ @mixin z-index-utilities($breakpoint: null) {
75
+ $suffix: if($breakpoint, "\\@#{$breakpoint}", "");
76
+
77
+ // Standard numbered z-index utilities
78
+ @each $key, $value in $z-indexes {
79
+ .z-#{$key}#{$suffix} { @include z-index($key); }
80
+ }
81
+
82
+ // Named semantic z-index utilities
83
+ @each $key, $value in $z-index-levels {
84
+ .z-#{$key}#{$suffix} { @include z-index($value); }
85
+ }
86
+ }
87
+
88
+ // Create specific named utilities as mixins for use in other files
89
+ @mixin z-base { @include z-index('base'); }
90
+ @mixin z-hover { @include z-index('hover'); }
91
+ @mixin z-dropdown { @include z-index('dropdown'); }
92
+ @mixin z-sticky { @include z-index('sticky'); }
93
+ @mixin z-fixed { @include z-index('fixed'); }
94
+ @mixin z-drawer { @include z-index('drawer'); }
95
+ @mixin z-modal { @include z-index('modal'); }
96
+ @mixin z-popover { @include z-index('popover'); }
97
+ @mixin z-tooltip { @include z-index('tooltip'); }
98
+ @mixin z-overlay { @include z-index('overlay'); }
99
+ @mixin z-toast { @include z-index('toast'); }
100
+ @mixin z-max { @include z-index('max'); }
101
+ @mixin z-auto { @include z-index('auto'); }
102
+
103
+ // Generate utility classes
104
+ @if VAR.$generate-utility-classes {
105
+ // Generate base utilities
106
+ @include z-index-utilities;
107
+
108
+ // Generate responsive variants
109
+ @each $breakpoint, $width in VAR.$breakpoints {
110
+ @media (min-width: #{$width}) {
111
+ @include z-index-utilities($breakpoint);
112
+ }
113
+ }
114
+ }