@nuvoui/core 1.2.2 → 1.2.4

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.
@@ -5,137 +5,182 @@
5
5
  @use "../abstracts" as *;
6
6
 
7
7
  @if $generate-utility-classes {
8
- :root {
9
- // Theme color CSS variables
10
- @each $color-name, $scale in COL.$colors {
11
- --#{$color-name}: #{color.adjust(map.get($scale, 500), $alpha: 1)};
12
- @each $shade, $value in $scale {
13
- --#{$color-name}-#{$shade}: #{color.adjust($value, $alpha: 1)};
8
+ :root {
9
+ // Theme color CSS variables
10
+ @each $color-name, $scale in COL.$colors {
11
+ --#{$color-name}: #{color.adjust(map.get($scale, 500), $alpha: 1)};
12
+ @each $shade, $value in $scale {
13
+ --#{$color-name}-#{$shade}: #{color.adjust($value, $alpha: 1)};
14
+ }
14
15
  }
15
- }
16
16
 
17
- // Primitive color CSS variables
18
- @each $color-name, $scale in COL.$colors-primitives {
19
- --#{$color-name}: #{color.adjust(map.get($scale, 500), $alpha: 1)};
20
- @each $shade, $value in $scale {
21
- --#{$color-name}-#{$shade}: #{color.adjust($value, $alpha: 1)};
17
+ // Primitive color CSS variables
18
+ @each $color-name, $scale in COL.$colors-primitives {
19
+ --#{$color-name}: #{color.adjust(map.get($scale, 500), $alpha: 1)};
20
+ @each $shade, $value in $scale {
21
+ --#{$color-name}-#{$shade}: #{color.adjust($value, $alpha: 1)};
22
+ }
22
23
  }
23
- }
24
-
25
- // Light theme variables
26
- --background: #{map.get($light-theme, "background")};
27
- --foreground: #{map.get($light-theme, "foreground")};
28
- --surface: #{map.get($light-theme, "surface")};
29
- --border: var(--gray-600);
30
- --text-primary: var(--gray-900);
31
- --text-secondary: var(--gray-600);
32
- --button-bg-color: var(--primary);
33
- --button-bg-color-hover: var(--primary-600);
34
- --button-text-color: var(--gray-100);
35
- --link-color: var(--primary);
36
- --link-hover-color: var(--primary-600);
37
- --inverted-text-color: var(--gray-100);
38
-
39
- // Scrollbar styling
40
- &::-webkit-scrollbar {
41
- width: 12px;
42
- }
43
24
 
44
- &::-webkit-scrollbar-track {
45
- background: var(--background);
46
- }
25
+ // Light theme variables
26
+ --background: #{map.get($light-theme, "background")};
27
+ --foreground: #{map.get($light-theme, "foreground")};
28
+ --surface: #{map.get($light-theme, "surface")};
29
+ --border: var(--gray-600);
30
+ --text-primary: var(--gray-900);
31
+ --text-secondary: var(--gray-600);
32
+ --button-bg-color: var(--primary);
33
+ --button-bg-color-hover: var(--primary-600);
34
+ --button-text-color: var(--gray-100);
35
+ --link-color: var(--primary);
36
+ --link-hover-color: var(--primary-600);
37
+ --inverted-text-color: var(--gray-100);
38
+
39
+ // Scrollbar styling
40
+ &::-webkit-scrollbar {
41
+ width: 12px;
42
+ }
47
43
 
48
- &::-webkit-scrollbar-thumb {
49
- background-color: #888;
50
- border-radius: 6px;
51
- border: 3px solid var(--background);
52
- }
44
+ &::-webkit-scrollbar-track {
45
+ background: var(--background);
46
+ }
53
47
 
54
- scrollbar-width: thin;
55
- scrollbar-color: #888 var(--background);
56
- }
48
+ &::-webkit-scrollbar-thumb {
49
+ background-color: #888;
50
+ border-radius: 6px;
51
+ border: 3px solid var(--background);
52
+ }
57
53
 
58
- // Dark theme settings
59
- [data-theme="dark"] {
60
- --background: #{map.get($dark-theme, "background")};
61
- --foreground: #{map.get($dark-theme, "foreground")};
62
- --surface: #{map.get($dark-theme, "surface")};
63
- --border: var(--gray-400);
64
- --text-primary: var(--gray-100);
65
- --text-secondary: var(--gray-400);
66
- --button-bg-color: var(--primary);
67
- --button-bg-color-hover: var(--primary-400);
68
- --button-text-color: var(--gray-200);
69
- --link-color: var(--primary);
70
- --link-hover-color: var(--primary-400);
71
- --inverted-text-color: var(--gray-900);
54
+ scrollbar-width: thin;
55
+ scrollbar-color: #888 var(--background);
56
+ }
57
+
58
+ @if $enable-dark-mode {
59
+ // Dark theme settings
60
+ [data-theme="dark"] {
61
+ --background: #{map.get($dark-theme, "background")};
62
+ --foreground: #{map.get($dark-theme, "foreground")};
63
+ --surface: #{map.get($dark-theme, "surface")};
64
+ --border: var(--gray-400);
65
+ --text-primary: var(--gray-100);
66
+ --text-secondary: var(--gray-400);
67
+ --button-bg-color: var(--primary);
68
+ --button-bg-color-hover: var(--primary-400);
69
+ --button-text-color: var(--gray-200);
70
+ --link-color: var(--primary);
71
+ --link-hover-color: var(--primary-400);
72
+ --inverted-text-color: var(--gray-900);
73
+
74
+ &::-webkit-scrollbar-track {
75
+ background: var(--background);
76
+ }
72
77
 
73
- &::-webkit-scrollbar-track {
74
- background: var(--background);
75
- }
78
+ &::-webkit-scrollbar-thumb {
79
+ background-color: #555;
80
+ border: 3px solid var(--background);
81
+ }
76
82
 
77
- &::-webkit-scrollbar-thumb {
78
- background-color: #555;
79
- border: 3px solid var(--background);
83
+ scrollbar-color: #555 var(--background);
84
+ }
80
85
  }
81
86
 
82
- scrollbar-color: #555 var(--background);
83
- }
84
-
85
- // -----------------------------------------------
86
- // COLOR UTILITY CLASSES
87
- // -----------------------------------------------
87
+ // -----------------------------------------------
88
+ // COLOR UTILITY CLASSES
89
+ // -----------------------------------------------
88
90
 
89
91
  // Theme color background utilities
92
+ // primar, secondry, warning etc.
90
93
  @each $color-name, $scale in COL.$colors {
91
94
  @each $shade, $value in $scale {
92
- .bg-#{$color-name}-#{$shade} {
93
- background-color: var(--#{$color-name}-#{$shade});
94
- }
95
-
96
95
  // Automatic text contrast for backgrounds
96
+ // todo: documentaton may add karo issay
97
97
  .text-on-#{$color-name}-#{$shade} {
98
98
  color: COL.find-text-color($value);
99
99
  }
100
100
 
101
- .text-#{$color-name}-#{$shade} {
101
+ .text-#{$color-name}-#{$shade},
102
+ .hover\:text--#{$color-name}-#{$shade}:hover, // todo: improve these loops to save time
103
+ .group:hover .group-hover\:text--#{$color-name}-#{$shade} {
102
104
  color: var(--#{$color-name}-#{$shade});
103
105
  }
106
+
107
+ .bg-#{$color-name}-#{$shade},
108
+ .hover\:bg-#{$color-name}-#{$shade}:hover, // todo: improve these loops to save time
109
+ .group:hover .group-hover\:bg-#{$color-name}-#{$shade} {
110
+ background-color: var(--#{$color-name}-#{$shade});
111
+ }
112
+
113
+ .border-#{$color-name}-#{$shade},
114
+ .hover\:border-#{$color-name}-#{$shade}:hover,
115
+ .group:hover .group-hover\:border-#{$color-name}-#{$shade} {
116
+ border-color: var(--#{$color-name}-#{$shade});
117
+ }
104
118
  }
105
119
 
106
120
  // Base color classes
107
- .bg-#{$color-name} {
121
+ .text-#{$color-name},
122
+ .hover\:text--#{$color-name}:hover, // todo: improve these loops to save time
123
+ .group:hover .group-hover\:text--#{$color-name} {
124
+ color: var(--#{$color-name});
125
+ }
126
+
127
+ .bg-#{$color-name},
128
+ .hover\:bg-#{$color-name}:hover, // todo: improve these loops to save time
129
+ .group:hover .group-hover\:bg-#{$color-name} {
108
130
  background-color: var(--#{$color-name});
109
131
  }
110
132
 
111
- .text-#{$color-name} {
112
- color: var(--#{$color-name});
133
+ .border-#{$color-name},
134
+ .hover\:border-#{$color-name}:hover,
135
+ .group:hover .group-hover\:border-#{$color-name} {
136
+ border-color: var(--#{$color-name});
113
137
  }
114
138
  }
115
139
 
116
140
  // Primitive color utilities
141
+ // green, purple, pink etc.
117
142
  @each $color-name, $scale in COL.$colors-primitives {
118
143
  @each $shade, $value in $scale {
119
- .bg-#{$color-name}-#{$shade} {
120
- background-color: var(--#{$color-name}-#{$shade});
121
- }
122
-
123
144
  .text-on-#{$color-name}-#{$shade} {
124
145
  color: COL.find-text-color($value);
125
146
  }
126
147
 
127
- .text-#{$color-name}-#{$shade} {
148
+ .text-#{$color-name}-#{$shade},
149
+ .hover\:text--#{$color-name}-#{$shade}:hover, // todo: improve these loops to save time
150
+ .group:hover .group-hover\:text--#{$color-name}-#{$shade} {
128
151
  color: var(--#{$color-name}-#{$shade});
129
152
  }
153
+
154
+ .bg-#{$color-name}-#{$shade},
155
+ .hover\:bg-#{$color-name}-#{$shade}:hover, // todo: improve these loops to save time
156
+ .group:hover .group-hover\:bg-#{$color-name}-#{$shade} {
157
+ background-color: var(--#{$color-name}-#{$shade});
158
+ }
159
+
160
+ .border-#{$color-name}-#{$shade},
161
+ .hover\:border-#{$color-name}-#{$shade}:hover,
162
+ .group:hover .group-hover\:border-#{$color-name}-#{$shade} {
163
+ border-color: var(--#{$color-name}-#{$shade});
164
+ }
130
165
  }
131
166
 
132
167
  // Base color classes
133
- .bg-#{$color-name} {
168
+ .text-#{$color-name},
169
+ .hover\:text--#{$color-name}:hover, // todo: improve these loops to save time
170
+ .group:hover .group-hover\:text--#{$color-name} {
171
+ color: var(--#{$color-name});
172
+ }
173
+
174
+ .bg-#{$color-name},
175
+ .hover\:bg-#{$color-name}:hover, // todo: improve these loops to save time
176
+ .group:hover .group-hover\:bg-#{$color-name} {
134
177
  background-color: var(--#{$color-name});
135
178
  }
136
179
 
137
- .text-#{$color-name} {
138
- color: var(--#{$color-name});
180
+ .border-#{$color-name},
181
+ .hover\:border-#{$color-name}:hover,
182
+ .group:hover .group-hover\:border-#{$color-name} {
183
+ border-color: var(--#{$color-name});
139
184
  }
140
185
  }
141
186
 
@@ -156,6 +201,14 @@
156
201
  background-color: var(--button-bg-color-hover);
157
202
  }
158
203
 
204
+ .bg-white {
205
+ background-color: white;
206
+ }
207
+
208
+ .bg-black {
209
+ background-color: black;
210
+ }
211
+
159
212
  .text-default {
160
213
  color: var(--text-primary);
161
214
  }
@@ -173,14 +226,6 @@
173
226
  color: var(--inverted-text-color);
174
227
  }
175
228
 
176
- .bg-white {
177
- background-color: white;
178
- }
179
-
180
- .bg-black {
181
- background-color: black;
182
- }
183
-
184
229
  .text-white {
185
230
  color: white;
186
231
  }
@@ -188,44 +233,19 @@
188
233
  .text-black {
189
234
  color: black;
190
235
  }
191
-
192
- // Hover utilities
193
- @each $color-name, $scale in COL.$colors {
194
- @each $shade, $value in $scale {
195
- .hover\:bg-#{$color-name}-#{$shade}:hover {
196
- background-color: var(--#{$color-name}-#{$shade});
197
- }
198
-
199
- .hover\:text-#{$color-name}-#{$shade}:hover {
200
- color: var(--#{$color-name}-#{$shade});
201
- }
202
- }
203
- }
204
-
205
- @each $color-name, $scale in COL.$colors-primitives {
206
- @each $shade, $value in $scale {
207
- .hover\:bg-#{$color-name}-#{$shade}:hover {
208
- background-color: var(--#{$color-name}-#{$shade});
209
- }
210
-
211
- .hover\:text-#{$color-name}-#{$shade}:hover {
212
- color: var(--#{$color-name}-#{$shade});
213
- }
214
- }
215
- }
216
236
  }
217
237
 
218
238
  // Glass effects
219
239
  .glass-effect {
220
- @include COL.backdrop-filter(blur(8px));
240
+ background-color: rgb(255 255 255 / 10%);
241
+ border: 1px solid rgb(255 255 255 / 20%);
221
242
 
222
- background-color: rgb(255 255 255 / 10%);
223
- border: 1px solid rgb(255 255 255 / 20%);
243
+ @include COL.backdrop-filter(blur(8px));
224
244
  }
225
245
 
226
246
  .frosted-glass {
227
- @include COL.backdrop-filter(blur(15px));
247
+ background-color: rgb(255 255 255 / 70%);
248
+ border: 1px solid rgb(255 255 255 / 80%);
228
249
 
229
- background-color: rgb(255 255 255 / 70%);
230
- border: 1px solid rgb(255 255 255 / 80%);
250
+ @include COL.backdrop-filter(blur(15px));
231
251
  }
@@ -6,17 +6,17 @@
6
6
  @mixin align-bottom { & { vertical-align: bottom; } }
7
7
 
8
8
  @if VAR.$generate-utility-classes {
9
- .align-baseline { @include align-baseline; }
10
- .align-top { @include align-top; }
11
- .align-middle { @include align-middle; }
12
- .align-bottom { @include align-bottom; }
9
+ .align-baseline { @include align-baseline; }
10
+ .align-top { @include align-top; }
11
+ .align-middle { @include align-middle; }
12
+ .align-bottom { @include align-bottom; }
13
13
 
14
- @each $breakpoint, $width in VAR.$breakpoints {
15
- @media (min-width: #{$width}) {
16
- .align-baseline\@#{$breakpoint} { @include align-baseline; }
17
- .align-top\@#{$breakpoint} { @include align-top; }
18
- .align-middle\@#{$breakpoint} { @include align-middle; }
19
- .align-bottom\@#{$breakpoint} { @include align-bottom; }
20
- }
14
+ @each $breakpoint, $width in VAR.$breakpoints {
15
+ @media (min-width: #{$width}) {
16
+ .align-baseline\@#{$breakpoint} { @include align-baseline; }
17
+ .align-top\@#{$breakpoint} { @include align-top; }
18
+ .align-middle\@#{$breakpoint} { @include align-middle; }
19
+ .align-bottom\@#{$breakpoint} { @include align-bottom; }
21
20
  }
22
- }
21
+ }
22
+ }
@@ -46,15 +46,13 @@ $generated-keyframes: ();
46
46
  // Handle units
47
47
  $x-unit: if($x, safe-unit-name(get-unit($x)), "-");
48
48
  $y-unit: if($y, safe-unit-name(get-unit($y)), "-");
49
-
49
+
50
50
  // Clean values (remove units)
51
51
  $clean-x: if($x, strip-unit($x), 0);
52
52
  $clean-y: if($y, strip-unit($y), 0);
53
53
  $animation-name: anim-bounce-#{$clean-x}#{$x-unit}-#{$clean-y}#{$y-unit};
54
54
 
55
- & {
56
- animation: #{$animation-name} $duration $easing $iteration;
57
- }
55
+ animation: #{$animation-name} $duration $easing $iteration;
58
56
  @include generate-bounce-keyframes($animation-name, $x, $y);
59
57
  }
60
58
 
@@ -77,11 +75,9 @@ $generated-keyframes: ();
77
75
  }
78
76
 
79
77
  @mixin hover-ready {
80
- & {
81
- transition-property: all;
82
- transition-duration: 0.2s;
83
- transition-timing-function: ease-in-out;
84
- }
78
+ transition-property: all;
79
+ transition-duration: 0.2s;
80
+ transition-timing-function: ease-in-out;
85
81
  }
86
82
 
87
83
  @if VAR.$generate-utility-classes {
@@ -17,118 +17,115 @@ $border-styles: (solid, dashed, dotted, double, none);
17
17
  // Core Border Mixins - improved to include style and color by default
18
18
  // SKIP Documentation
19
19
  @mixin border($val, $style: solid, $color: var(--border)) {
20
- $val: if($val == 0, $val, $val + px);
21
-
22
- & {
23
- border-width: $val;
24
- @if $val != 0 {
25
- border-style: $style;
26
- border-color: $color;
27
- }
28
- }
20
+ border-width: $val;
21
+ @if $val != 0 {
22
+ border-style: $style;
23
+ border-color: $color;
24
+ }
29
25
  }
30
26
 
31
27
  @mixin border-top($val) {
32
- $val: if($val == 0, $val, $val + px);
33
-
34
- & {
35
- border-top-width: $val;
36
- @if $val != 0 {
37
- border-top-style: solid;
38
- border-top-color: var(--border, var(--border));
39
- }
28
+ border-top-width: $val;
29
+ @if $val != 0 {
30
+ border-top-style: solid;
31
+ border-top-color: var(--border, var(--border));
40
32
  }
41
33
  }
42
34
 
43
35
  @mixin border-right($val) {
44
- $val: if($val == 0, $val, $val + px);
45
-
46
- & {
47
- border-right-width: $val;
48
- @if $val != 0 {
49
- border-right-style: solid;
50
- border-right-color: var(--border, var(--border));
51
- }
36
+ border-right-width: $val;
37
+ @if $val != 0 {
38
+ border-right-style: solid;
39
+ border-right-color: var(--border, var(--border));
52
40
  }
53
41
  }
54
42
 
55
43
  @mixin border-bottom($val) {
56
- $val: if($val == 0, $val, $val + px);
57
-
58
- & {
59
- border-bottom-width: $val;
60
- @if $val != 0 {
61
- border-bottom-style: solid;
62
- border-bottom-color: var(--border, var(--border));
63
- }
44
+ border-bottom-width: $val;
45
+ @if $val != 0 {
46
+ border-bottom-style: solid;
47
+ border-bottom-color: var(--border, var(--border));
64
48
  }
65
49
  }
66
50
 
67
51
  @mixin border-left($val) {
68
- $val: if($val == 0, $val, $val + px);
69
-
70
- & {
71
- border-left-width: $val;
72
- @if $val != 0 {
73
- border-left-style: solid;
74
- border-left-color: var(--border, var(--border));
75
- }
52
+ border-left-width: $val;
53
+ @if $val != 0 {
54
+ border-left-style: solid;
55
+ border-left-color: var(--border, var(--border));
76
56
  }
77
57
  }
78
-
79
- // Border Radius Mixins
80
- @mixin rounded($val: map.get($border-radii, 'md')) {
81
- & {border-radius: $val; }
58
+
59
+ /**
60
+ * @description Applies border radius to all corners
61
+ * @param {String} $val - The border radius value
62
+ */
63
+ @mixin rounded($val: null) {
64
+ border-radius: if($val == null, map.get($border-radii, 'md'), $val);
82
65
  }
83
66
 
84
- @mixin rounded-t($val) {
85
- & {
86
- border-top-left-radius: $val;
87
- border-top-right-radius: $val;
88
- }
67
+ @mixin rounded-t($val: null) {
68
+ $val: if($val == null, map.get($border-radii, 'md'), $val);
69
+
70
+ border-top-left-radius: $val;
71
+ border-top-right-radius: $val;
89
72
  }
90
73
 
91
- @mixin rounded-r($val) {
92
- & {
93
- border-top-right-radius: $val;
94
- border-bottom-right-radius: $val;
95
- }
74
+ @mixin rounded-r($val: null) {
75
+ $val: if($val == null, map.get($border-radii, 'md'), $val);
76
+
77
+ border-top-right-radius: $val;
78
+ border-bottom-right-radius: $val;
96
79
  }
97
80
 
98
- @mixin rounded-b($val) {
99
- & {
100
- border-bottom-left-radius: $val;
101
- border-bottom-right-radius: $val;
102
- }
81
+ @mixin rounded-b($val: null) {
82
+ $val: if($val == null, map.get($border-radii, 'md'), $val);
83
+
84
+ border-bottom-left-radius: $val;
85
+ border-bottom-right-radius: $val;
103
86
  }
104
87
 
105
- @mixin rounded-l($val) {
106
- & {
107
- border-top-left-radius: $val;
108
- border-bottom-left-radius: $val;
109
- }
88
+ @mixin rounded-l($val: null) {
89
+ $val: if($val == null, map.get($border-radii, 'md'), $val);
90
+
91
+ border-top-left-radius: $val;
92
+ border-bottom-left-radius: $val;
110
93
  }
111
94
 
112
- @mixin rounded-tl($val) { & {border-top-left-radius: $val; }}
113
- @mixin rounded-tr($val) { & {border-top-right-radius: $val; }}
114
- @mixin rounded-br($val) { & {border-bottom-right-radius: $val; }}
115
- @mixin rounded-bl($val) { & {border-bottom-left-radius: $val; }}
95
+ @mixin rounded-tl($val: null) {
96
+ $val: if($val == null, map.get($border-radii, 'md'), $val);
97
+
98
+ border-top-left-radius: $val;
99
+ }
100
+ @mixin rounded-tr($val: null) {
101
+ $val: if($val == null, map.get($border-radii, 'md'), $val);
102
+
103
+ border-top-right-radius: $val;
104
+ }
105
+ @mixin rounded-br($val: null) {
106
+ $val: if($val == null, map.get($border-radii, 'md'), $val);
107
+
108
+ border-bottom-right-radius: $val;
109
+ }
110
+ @mixin rounded-bl($val: null) {
111
+ $val: if($val == null, map.get($border-radii, 'md'), $val);
112
+
113
+ border-bottom-left-radius: $val;
114
+ }
116
115
 
117
116
  // Border Style and Color
118
- @mixin border-style($style) { & {border-style: $style; }}
119
- @mixin border-color($color) { & {border-color: $color; }}
117
+ @mixin border-style($style) { border-style: $style; }
118
+ @mixin border-color($color) { border-color: $color; }
120
119
 
121
120
  // Combined border properties
122
121
  @mixin border-all($width, $style, $color) {
123
- @debug "border: #{$width} #{$style} #{$color}";
124
-
125
- & {
126
- border-width: $width;
127
- border-style: $style;
128
- border-color: $color;
129
- }
122
+ border-width: $width;
123
+ border-style: $style;
124
+ border-color: $color;
130
125
  }
131
126
 
127
+ @mixin pill { @include rounded(9999px); } // todo: doc missing
128
+
132
129
  // -----------------------------------------------
133
130
  // VARIABLES
134
131
  // -----------------------------------------------
@@ -198,7 +195,7 @@ $border-radii: (
198
195
  }
199
196
 
200
197
  // Pill shape (alias for full radius)
201
- .pill { @include rounded(9999px); }
198
+ .pill { @include pill; }
202
199
 
203
200
  // Border styles - these override the default solid style if needed
204
201
  @each $style in $border-styles {
@@ -313,7 +310,7 @@ $border-radii: (
313
310
 
314
311
  .rounded\@#{$breakpoint} { @include rounded; }
315
312
  .square\@#{$breakpoint} { @include rounded(0); }
316
- .pill\@#{$breakpoint} { @include rounded(9999px); }
313
+ .pill\@#{$breakpoint} { @include pill; }
317
314
  }
318
315
  }
319
316
  }