@nuvoui/core 1.2.4 → 1.2.6

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 (41) hide show
  1. package/README.md +2 -2
  2. package/dist/nuvoui.css +27685 -22739
  3. package/dist/nuvoui.css.map +1 -1
  4. package/dist/nuvoui.min.css +1 -1
  5. package/dist/nuvoui.min.css.map +1 -1
  6. package/package.json +7 -8
  7. package/src/styles/abstracts/_config.scss +87 -34
  8. package/src/styles/abstracts/_functions.scss +70 -37
  9. package/src/styles/base/_base.scss +79 -59
  10. package/src/styles/base/_reset.scss +11 -8
  11. package/src/styles/index.scss +32 -17
  12. package/src/styles/layouts/_container.scss +1 -2
  13. package/src/styles/layouts/_flex.scss +442 -154
  14. package/src/styles/layouts/_grid.scss +145 -75
  15. package/src/styles/mixins-map.scss +1085 -1
  16. package/src/styles/themes/_theme.scss +95 -106
  17. package/src/styles/utilities/_alignment.scss +40 -13
  18. package/src/styles/utilities/_animations.scss +361 -92
  19. package/src/styles/utilities/_backdrop-filters.scss +297 -0
  20. package/src/styles/utilities/_borders.scss +360 -159
  21. package/src/styles/utilities/_colors.scss +24 -34
  22. package/src/styles/utilities/_container-queries.scss +7 -7
  23. package/src/styles/utilities/_cursor.scss +10 -17
  24. package/src/styles/utilities/_display.scss +234 -85
  25. package/src/styles/utilities/_helpers.scss +5 -5
  26. package/src/styles/utilities/_media-queries.scss +24 -27
  27. package/src/styles/utilities/_opacity.scss +15 -31
  28. package/src/styles/utilities/_position.scss +129 -66
  29. package/src/styles/utilities/_shadows.scss +23 -29
  30. package/src/styles/utilities/_sizing.scss +270 -92
  31. package/src/styles/utilities/_spacing.scss +317 -169
  32. package/src/styles/utilities/_tooltips.scss +36 -29
  33. package/src/styles/utilities/_transforms.scss +243 -154
  34. package/src/styles/utilities/_transitions.scss +129 -75
  35. package/src/styles/utilities/_typography.scss +341 -127
  36. package/src/styles/utilities/_z-index.scss +144 -0
  37. package/src/styles/abstracts/_index.scss +0 -1
  38. package/src/styles/base/_index.scss +0 -2
  39. package/src/styles/layouts/_index.scss +0 -3
  40. package/src/styles/themes/_index.scss +0 -1
  41. package/src/styles/utilities/_index.scss +0 -20
@@ -1,8 +1,10 @@
1
- :root {
1
+ @use "../abstracts/config" as VAR;
2
+
3
+ @mixin tooltip-variables {
2
4
  // Tooltip core variables
3
5
  --tooltip-bg: rgba(17 17 17 / 90%);
4
6
  --tooltip-shadow-color: rgb(0 0 0 / 20%);
5
- --tooltip-text-color: #FFF;
7
+ --tooltip-text-color: #fff;
6
8
 
7
9
  // Animation variables
8
10
  --microtip-transition-duration: 0.18s;
@@ -21,7 +23,18 @@
21
23
  --tooltip-border-radius: 4px;
22
24
  }
23
25
 
24
- [data-tooltip][role~="tooltip"] {
26
+ // Apply variables based on parent selector
27
+ @if VAR.$parent-selector == "" {
28
+ :root {
29
+ @include tooltip-variables;
30
+ }
31
+ } @else {
32
+ #{VAR.$parent-selector} {
33
+ @include tooltip-variables;
34
+ }
35
+ }
36
+
37
+ #{VAR.$parent-selector} [data-tooltip][role~="tooltip"] {
25
38
  position: relative;
26
39
 
27
40
  &::before,
@@ -31,8 +44,7 @@
31
44
  will-change: transform;
32
45
  opacity: 0;
33
46
  pointer-events: none;
34
- transition: all var(--microtip-transition-duration) var(--microtip-transition-easing)
35
- var(--microtip-transition-delay);
47
+ transition: all var(--microtip-transition-duration) var(--microtip-transition-easing) var(--microtip-transition-delay);
36
48
  position: absolute;
37
49
  box-sizing: border-box;
38
50
  z-index: 10;
@@ -68,13 +80,12 @@
68
80
  }
69
81
 
70
82
  // Top position tooltips
71
- [role~="tooltip"][data-microtip-position|="top"] {
83
+ #{VAR.$parent-selector} [role~="tooltip"][data-microtip-position|="top"] {
72
84
  &::before {
73
- background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2236px%22%20height%3D%2212px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%280%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E")
74
- no-repeat;
85
+ background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2236px%22%20height%3D%2212px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%280%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E") no-repeat;
75
86
  height: 6px;
76
87
  width: 18px;
77
- margin-bottom: 5px;
88
+ margin-bottom: 6px;
78
89
  transform: translate3d(-50%, 0, 0);
79
90
  bottom: 100%;
80
91
  left: 50%;
@@ -90,15 +101,13 @@
90
101
  &:hover::before {
91
102
  transform: translate3d(-50%, -5px, 0);
92
103
  }
93
- }
94
104
 
95
- [role~="tooltip"][data-microtip-position="top"] {
96
105
  &:hover::after {
97
106
  transform: translate3d(-50%, -5px, 0);
98
107
  }
99
108
  }
100
109
 
101
- [role~="tooltip"][data-microtip-position="top-left"] {
110
+ #{VAR.$parent-selector} [role~="tooltip"][data-microtip-position="top-left"] {
102
111
  &::after {
103
112
  transform: translate3d(calc(-100% + 16px), 0, 0);
104
113
  bottom: 100%;
@@ -109,7 +118,7 @@
109
118
  }
110
119
  }
111
120
 
112
- [role~="tooltip"][data-microtip-position="top-right"] {
121
+ #{VAR.$parent-selector} [role~="tooltip"][data-microtip-position="top-right"] {
113
122
  &::after {
114
123
  transform: translate3d(calc(0% + -16px), 0, 0);
115
124
  bottom: 100%;
@@ -121,10 +130,9 @@
121
130
  }
122
131
 
123
132
  // Bottom position tooltips
124
- [role~="tooltip"][data-microtip-position|="bottom"] {
133
+ #{VAR.$parent-selector} [role~="tooltip"][data-microtip-position|="bottom"] {
125
134
  &::before {
126
- background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2236px%22%20height%3D%2212px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%28180%2018%206%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E")
127
- no-repeat;
135
+ background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2236px%22%20height%3D%2212px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%28180%2018%206%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E") no-repeat;
128
136
  height: 6px;
129
137
  width: 18px;
130
138
  margin-top: 5px;
@@ -145,15 +153,13 @@
145
153
  &:hover::before {
146
154
  transform: translate3d(-50%, 0, 0);
147
155
  }
148
- }
149
156
 
150
- [role~="tooltip"][data-microtip-position="bottom"] {
151
157
  &:hover::after {
152
158
  transform: translate3d(-50%, 0, 0);
153
159
  }
154
160
  }
155
161
 
156
- [role~="tooltip"][data-microtip-position="bottom-left"] {
162
+ #{VAR.$parent-selector} [role~="tooltip"][data-microtip-position="bottom-left"] {
157
163
  &::after {
158
164
  transform: translate3d(calc(-100% + 16px), -10px, 0);
159
165
  top: 100%;
@@ -164,7 +170,7 @@
164
170
  }
165
171
  }
166
172
 
167
- [role~="tooltip"][data-microtip-position="bottom-right"] {
173
+ #{VAR.$parent-selector} [role~="tooltip"][data-microtip-position="bottom-right"] {
168
174
  &::after {
169
175
  transform: translate3d(calc(0% + -16px), -10px, 0);
170
176
  top: 100%;
@@ -176,16 +182,18 @@
176
182
  }
177
183
 
178
184
  // Left position tooltips
179
- [role~="tooltip"][data-microtip-position="left"] {
185
+ #{VAR.$parent-selector} [role~="tooltip"][data-microtip-position="left"] {
180
186
  &::before,
181
187
  &::after {
182
188
  inset: auto auto auto 100%;
189
+ left: auto; // Remove any left positioning
190
+ right: 100%; // Position to the left of the element
191
+ top: 50%;
183
192
  transform: translate3d(10px, -50%, 0);
184
193
  }
185
194
 
186
195
  &::before {
187
- background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212px%22%20height%3D%2236px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%28-90%2018%2018%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E")
188
- no-repeat;
196
+ background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212px%22%20height%3D%2236px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%28-90%2018%2018%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E") no-repeat;
189
197
  height: 18px;
190
198
  width: 6px;
191
199
  margin-right: 5px;
@@ -203,7 +211,7 @@
203
211
  }
204
212
 
205
213
  // Right position tooltips
206
- [role~="tooltip"][data-microtip-position="right"] {
214
+ #{VAR.$parent-selector} [role~="tooltip"][data-microtip-position="right"] {
207
215
  &::before,
208
216
  &::after {
209
217
  bottom: auto;
@@ -213,8 +221,7 @@
213
221
  }
214
222
 
215
223
  &::before {
216
- background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212px%22%20height%3D%2236px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%2890%206%206%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E")
217
- no-repeat;
224
+ background: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212px%22%20height%3D%2236px%22%3E%3Cpath%20fill%3D%22rgba%2817,%2017,%2017,%200.9%29%22%20transform%3D%22rotate%2890%206%206%29%22%20d%3D%22M2.658,0.000%20C-13.615,0.000%2050.938,0.000%2034.662,0.000%20C28.662,0.000%2023.035,12.002%2018.660,12.002%20C14.285,12.002%208.594,0.000%202.658,0.000%20Z%22/%3E%3C/svg%3E") no-repeat;
218
225
  height: 18px;
219
226
  width: 6px;
220
227
  margin-bottom: 0;
@@ -232,17 +239,17 @@
232
239
  }
233
240
 
234
241
  // Tooltip sizes
235
- [role~="tooltip"][data-microtip-size="small"]::after {
242
+ #{VAR.$parent-selector} [role~="tooltip"][data-microtip-size="small"]::after {
236
243
  white-space: initial;
237
244
  width: var(--tooltip-small-width);
238
245
  }
239
246
 
240
- [role~="tooltip"][data-microtip-size="medium"]::after {
247
+ #{VAR.$parent-selector} [role~="tooltip"][data-microtip-size="medium"]::after {
241
248
  white-space: initial;
242
249
  width: var(--tooltip-medium-width);
243
250
  }
244
251
 
245
- [role~="tooltip"][data-microtip-size="large"]::after {
252
+ #{VAR.$parent-selector} [role~="tooltip"][data-microtip-size="large"]::after {
246
253
  white-space: initial;
247
254
  width: var(--tooltip-large-width);
248
255
  }
@@ -1,5 +1,5 @@
1
- @use '../abstracts' as *;
2
- @use 'sass:map';
1
+ @use "../abstracts/config" as VAR;
2
+ @use "sass:map";
3
3
 
4
4
  /**
5
5
  * Transform Utilities
@@ -11,211 +11,300 @@
11
11
  * - Transform origin
12
12
  */
13
13
 
14
+ // Common transform function to avoid repetition
15
+ @mixin apply-transform {
16
+ 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, 1)) scaleZ(var(--scale-z, 1));
17
+ }
18
+
14
19
  // Translation mixins
15
20
  @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
- }
21
+ // Store the value in a CSS variable
22
+ --translate-x: #{$value};
23
+ @include apply-transform;
21
24
  }
22
25
 
23
26
  @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
- }
27
+ // Store the value in a CSS variable
28
+ --translate-y: #{$value};
29
+ @include apply-transform;
29
30
  }
30
31
 
31
32
  @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
- }
33
+ // Store the value in a CSS variable
34
+ --translate-z: #{$value};
35
+ @include apply-transform;
37
36
  }
38
37
 
39
38
  @mixin translate($x, $y: null) {
40
- & {
41
- --translate-x: #{$x};
39
+ // Always set the x value
40
+ --translate-x: #{$x};
42
41
 
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));
42
+ // Only set y if provided
43
+ @if $y {
44
+ --translate-y: #{$y};
48
45
  }
46
+
47
+ @include apply-transform;
49
48
  }
50
49
 
51
50
  // Scale mixins
52
51
  @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
- }
52
+ --scale-x: #{$value};
53
+ @include apply-transform;
58
54
  }
59
55
 
60
56
  @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
- }
57
+ --scale-y: #{$value};
58
+ @include apply-transform;
66
59
  }
67
60
 
68
61
  @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
- }
62
+ --scale-x: #{$value};
63
+ --scale-y: #{$value};
64
+ @include apply-transform;
75
65
  }
76
66
 
77
67
  // Rotation mixins
78
68
  @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
- }
69
+ --rotate: #{$value};
70
+ @include apply-transform;
84
71
  }
85
72
 
86
73
  // Skew mixins
87
74
  @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
- }
75
+ --skew-x: #{$value};
76
+ @include apply-transform;
93
77
  }
94
78
 
95
79
  @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
- }
80
+ --skew-y: #{$value};
81
+ @include apply-transform;
101
82
  }
102
83
 
103
84
  // Transform origin
104
85
  @mixin origin($value) {
105
- & {
106
- transform-origin: $value;
107
- }
86
+ transform-origin: $value;
108
87
  }
109
88
 
110
89
  // Common transform values
111
90
  $translate-values: (
112
- '0': 0,
113
- '1': 0.25rem,
114
- '2': 0.5rem,
115
- '3': 0.75rem,
116
- '4': 1rem,
117
- '5': 1.25rem,
118
- '6': 1.5rem,
119
- '8': 2rem,
120
- '10': 2.5rem,
121
- '12': 3rem,
122
- '16': 4rem,
123
- '20': 5rem,
124
- '25p': 25%,
125
- '33p': 33.333%,
126
- '50p': 50%,
127
- '66p': 66.667%,
128
- '75p': 75%,
129
- '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%,
91
+ "0": 0,
92
+ "1": 0.25rem,
93
+ "2": 0.5rem,
94
+ "3": 0.75rem,
95
+ "4": 1rem,
96
+ "5": 1.25rem,
97
+ "6": 1.5rem,
98
+ "8": 2rem,
99
+ "10": 2.5rem,
100
+ "12": 3rem,
101
+ "16": 4rem,
102
+ "20": 5rem,
103
+ "25p": 25%,
104
+ "33p": 33.333%,
105
+ "50p": 50%,
106
+ "66p": 66.667%,
107
+ "75p": 75%,
108
+ "100p": 100%,
109
+ );
110
+
111
+ $negative-translate-values: (
112
+ "1": -0.25rem,
113
+ "2": -0.5rem,
114
+ "3": -0.75rem,
115
+ "4": -1rem,
116
+ "5": -1.25rem,
117
+ "6": -1.5rem,
118
+ "8": -2rem,
119
+ "10": -2.5rem,
120
+ "12": -3rem,
121
+ "16": -4rem,
122
+ "20": -5rem,
123
+ "25p": -25%,
124
+ "33p": -33.333%,
125
+ "50p": -50%,
126
+ "66p": -66.667%,
127
+ "75p": -75%,
128
+ "100p": -100%,
129
+ );
130
+
131
+ // Scale hover utilities
132
+ $scale-values: (
133
+ "0": 0,
134
+ "50": 0.5,
135
+ "75": 0.75,
136
+ "90": 0.9,
137
+ "95": 0.95,
138
+ "100": 1,
139
+ "105": 1.05,
140
+ "110": 1.1,
141
+ "125": 1.25,
142
+ "150": 1.5,
143
+ );
144
+
145
+ // Rotation hover utilities
146
+ $rotation-values: (
147
+ "0": 0deg,
148
+ "45": 45deg,
149
+ "90": 90deg,
150
+ "180": 180deg,
151
+ "270": 270deg,
152
+ );
153
+
154
+ // Separate map for negative rotations
155
+ $negative-rotation-values: (
156
+ "45": -45deg,
157
+ "90": -90deg,
158
+ "180": -180deg,
159
+ "270": -270deg,
160
+ );
161
+
162
+ // Origin hover utilities
163
+ $origin-values: (
164
+ "center": center,
165
+ "top": top,
166
+ "top-right": top right,
167
+ "right": right,
168
+ "bottom-right": bottom right,
169
+ "bottom": bottom,
170
+ "bottom-left": bottom left,
171
+ "left": left,
172
+ "top-left": top left,
147
173
  );
148
174
 
149
175
  // Generate utility classes
150
- @if $generate-utility-classes {
176
+ @if VAR.$generate-utility-classes {
151
177
  // Translate utilities
152
178
  @each $key, $value in $translate-values {
153
- .translate-x-#{$key} { @include translate-x($value); }
154
- .translate-y-#{$key} { @include translate-y($value); }
179
+ #{VAR.$parent-selector} .translate-x-#{$key},
180
+ #{VAR.$parent-selector} .hover\:translate-x-#{$key}:hover,
181
+ #{VAR.$parent-selector} .group:hover .group-hover\:translate-x-#{$key} {
182
+ @include translate-x($value);
183
+ }
184
+
185
+ #{VAR.$parent-selector} .translate-y-#{$key},
186
+ #{VAR.$parent-selector} .hover\:translate-y-#{$key}:hover,
187
+ #{VAR.$parent-selector} .group:hover .group-hover\:translate-y-#{$key} {
188
+ @include translate-y($value);
189
+ }
155
190
  }
156
-
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); }
168
-
191
+ @each $key, $value in $negative-translate-values {
192
+ #{VAR.$parent-selector} .-translate-x-#{$key},
193
+ #{VAR.$parent-selector} .hover\:-translate-x-#{$key}:hover,
194
+ #{VAR.$parent-selector} .group:hover .group-hover\:-translate-x-#{$key} {
195
+ @include translate-x($value);
196
+ }
197
+
198
+ #{VAR.$parent-selector} .-translate-y-#{$key},
199
+ #{VAR.$parent-selector} .hover\:-translate-y-#{$key}:hover,
200
+ #{VAR.$parent-selector} .group:hover .group-hover\:-translate-y-#{$key} {
201
+ @include translate-y($value);
202
+ }
203
+ }
204
+
205
+ @each $key, $value in $scale-values {
206
+ #{VAR.$parent-selector} .scale-#{$key},
207
+ #{VAR.$parent-selector} .hover\:scale-#{$key}:hover,
208
+ #{VAR.$parent-selector} .group:hover .group-hover\:scale-#{$key} {
209
+ @include scale($value);
210
+ }
211
+
212
+ #{VAR.$parent-selector} .scale-x-#{$key},
213
+ #{VAR.$parent-selector} .hover\:scale-x-#{$key}:hover,
214
+ #{VAR.$parent-selector} .group:hover .group-hover\:scale-x-#{$key} {
215
+ @include scale-x($value);
216
+ }
217
+
218
+ #{VAR.$parent-selector} .scale-y-#{$key},
219
+ #{VAR.$parent-selector} .hover\:scale-y-#{$key}:hover,
220
+ #{VAR.$parent-selector} .group:hover .group-hover\:scale-y-#{$key} {
221
+ @include scale-y($value);
222
+ }
223
+ }
224
+
169
225
  // 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); }
179
-
226
+ @each $key, $value in $rotation-values {
227
+ #{VAR.$parent-selector} .rotate-#{$key},
228
+ #{VAR.$parent-selector} .hover\:rotate-#{$key}:hover,
229
+ #{VAR.$parent-selector} .group:hover .group-hover\:rotate-#{$key} {
230
+ @include rotate($value);
231
+ }
232
+ }
233
+
234
+ // Negative rotation utilities
235
+ @each $key, $value in $negative-rotation-values {
236
+ #{VAR.$parent-selector} .-rotate-#{$key},
237
+ #{VAR.$parent-selector} .hover\:-rotate-#{$key}:hover,
238
+ #{VAR.$parent-selector} .group:hover .group-hover\:-rotate-#{$key} {
239
+ @include rotate($value);
240
+ }
241
+ }
242
+
180
243
  // 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
-
244
+ @each $key, $value in $origin-values {
245
+ #{VAR.$parent-selector} .origin-#{$key},
246
+ #{VAR.$parent-selector} .hover\:origin-#{$key}:hover,
247
+ #{VAR.$parent-selector} .group:hover .group-hover\:origin-#{$key} {
248
+ @include origin($value);
249
+ }
250
+ }
251
+
191
252
  // Responsive variants
192
- @each $breakpoint, $width in $breakpoints {
253
+ @each $breakpoint, $width in VAR.$breakpoints {
193
254
  @media (min-width: #{$width}) {
194
255
  @each $key, $value in $translate-values {
195
- .translate-x-#{$key}\@#{$breakpoint} { @include translate-x($value); }
196
- .translate-y-#{$key}\@#{$breakpoint} { @include translate-y($value); }
256
+ #{VAR.$parent-selector} .translate-x-#{$key}\@#{$breakpoint},
257
+ #{VAR.$parent-selector} .hover\:translate-x-#{$key}\@#{$breakpoint}:hover,
258
+ #{VAR.$parent-selector} .group:hover .group-hover\:translate-x-#{$key}\@#{$breakpoint} {
259
+ @include translate-x($value);
260
+ }
261
+
262
+ #{VAR.$parent-selector} .translate-x-#{$key}\@#{$breakpoint},
263
+ #{VAR.$parent-selector} .hover\:translate-y-#{$key}\@#{$breakpoint}:hover,
264
+ #{VAR.$parent-selector} .group:hover .group-hover\:translate-y-#{$key}\@#{$breakpoint} {
265
+ @include translate-y($value);
266
+ }
267
+ }
268
+ @each $key, $value in $negative-translate-values {
269
+ #{VAR.$parent-selector} .-translate-x-#{$key}\@#{$breakpoint},
270
+ #{VAR.$parent-selector} .hover\:-translate-x-#{$key}\@#{$breakpoint}:hover,
271
+ #{VAR.$parent-selector} .group:hover .group-hover\:-translate-x-#{$key}\@#{$breakpoint} {
272
+ @include translate-x($value);
273
+ }
274
+
275
+ #{VAR.$parent-selector} .-translate-x-#{$key}\@#{$breakpoint},
276
+ #{VAR.$parent-selector} .hover\:-translate-y-#{$key}\@#{$breakpoint}:hover,
277
+ #{VAR.$parent-selector} .group:hover .group-hover\:-translate-y-#{$key}\@#{$breakpoint} {
278
+ @include translate-y($value);
279
+ }
280
+ }
281
+
282
+ // Scale hover responsive
283
+ @each $key, $value in $scale-values {
284
+ #{VAR.$parent-selector} .scale-#{$key}\@#{$breakpoint},
285
+ #{VAR.$parent-selector} .hover\:scale-#{$key}\@#{$breakpoint}:hover,
286
+ #{VAR.$parent-selector} .group:hover .group-hover\:scale-#{$key}\@#{$breakpoint} {
287
+ @include scale($value);
288
+ }
289
+ }
290
+
291
+ // Rotation hover responsive
292
+ @each $key, $value in $rotation-values {
293
+ #{VAR.$parent-selector} .rotate-#{$key}\@#{$breakpoint},
294
+ #{VAR.$parent-selector} .hover\:rotate-#{$key}\@#{$breakpoint}:hover,
295
+ #{VAR.$parent-selector} .group:hover .group-hover\:rotate-#{$key}\@#{$breakpoint} {
296
+ @include rotate($value);
297
+ }
298
+ }
299
+
300
+ // Negative rotation utilities
301
+ @each $key, $value in $negative-rotation-values {
302
+ #{VAR.$parent-selector} .-rotate-#{$key}\@#{$breakpoint},
303
+ #{VAR.$parent-selector} .hover\:-rotate-#{$key}\@#{$breakpoint}:hover,
304
+ #{VAR.$parent-selector} .group:hover .group-hover\:-rotate-#{$key}\@#{$breakpoint} {
305
+ @include rotate($value);
306
+ }
197
307
  }
198
-
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); }
210
-
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); }
219
308
  }
220
309
  }
221
- }
310
+ }