@nuvoui/core 1.2.3 → 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.
@@ -54,32 +54,34 @@
54
54
  scrollbar-width: thin;
55
55
  scrollbar-color: #888 var(--background);
56
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
+ }
57
77
 
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);
72
-
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);
80
84
  }
81
-
82
- scrollbar-color: #555 var(--background);
83
85
  }
84
86
 
85
87
  // -----------------------------------------------
@@ -90,34 +92,47 @@
90
92
  // primar, secondry, warning etc.
91
93
  @each $color-name, $scale in COL.$colors {
92
94
  @each $shade, $value in $scale {
93
- .bg-#{$color-name}-#{$shade} {
94
- background-color: var(--#{$color-name}-#{$shade});
95
- }
96
-
97
95
  // Automatic text contrast for backgrounds
98
96
  // todo: documentaton may add karo issay
99
97
  .text-on-#{$color-name}-#{$shade} {
100
98
  color: COL.find-text-color($value);
101
99
  }
102
100
 
103
- .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} {
104
104
  color: var(--#{$color-name}-#{$shade});
105
105
  }
106
- .border-#{$color-name}-#{$shade} {
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} {
107
116
  border-color: var(--#{$color-name}-#{$shade});
108
117
  }
109
118
  }
110
119
 
111
120
  // Base color classes
112
- .bg-#{$color-name} {
113
- background-color: var(--#{$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});
114
125
  }
115
126
 
116
- .text-#{$color-name} {
117
- color: var(--#{$color-name});
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} {
130
+ background-color: var(--#{$color-name});
118
131
  }
119
-
120
- .border-#{$color-name} {
132
+
133
+ .border-#{$color-name},
134
+ .hover\:border-#{$color-name}:hover,
135
+ .group:hover .group-hover\:border-#{$color-name} {
121
136
  border-color: var(--#{$color-name});
122
137
  }
123
138
  }
@@ -126,32 +141,45 @@
126
141
  // green, purple, pink etc.
127
142
  @each $color-name, $scale in COL.$colors-primitives {
128
143
  @each $shade, $value in $scale {
129
- .bg-#{$color-name}-#{$shade} {
130
- background-color: var(--#{$color-name}-#{$shade});
131
- }
132
-
133
144
  .text-on-#{$color-name}-#{$shade} {
134
145
  color: COL.find-text-color($value);
135
146
  }
136
147
 
137
- .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} {
138
151
  color: var(--#{$color-name}-#{$shade});
139
152
  }
140
- .border-#{$color-name}-#{$shade} {
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} {
141
163
  border-color: var(--#{$color-name}-#{$shade});
142
164
  }
143
165
  }
144
166
 
145
167
  // Base color classes
146
- .bg-#{$color-name} {
147
- background-color: var(--#{$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});
148
172
  }
149
173
 
150
- .text-#{$color-name} {
151
- color: var(--#{$color-name});
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} {
177
+ background-color: var(--#{$color-name});
152
178
  }
153
-
154
- .border-#{$color-name} {
179
+
180
+ .border-#{$color-name},
181
+ .hover\:border-#{$color-name}:hover,
182
+ .group:hover .group-hover\:border-#{$color-name} {
155
183
  border-color: var(--#{$color-name});
156
184
  }
157
185
  }
@@ -173,6 +201,14 @@
173
201
  background-color: var(--button-bg-color-hover);
174
202
  }
175
203
 
204
+ .bg-white {
205
+ background-color: white;
206
+ }
207
+
208
+ .bg-black {
209
+ background-color: black;
210
+ }
211
+
176
212
  .text-default {
177
213
  color: var(--text-primary);
178
214
  }
@@ -190,14 +226,6 @@
190
226
  color: var(--inverted-text-color);
191
227
  }
192
228
 
193
- .bg-white {
194
- background-color: white;
195
- }
196
-
197
- .bg-black {
198
- background-color: black;
199
- }
200
-
201
229
  .text-white {
202
230
  color: white;
203
231
  }
@@ -205,31 +233,6 @@
205
233
  .text-black {
206
234
  color: black;
207
235
  }
208
-
209
- // Hover utilities
210
- @each $color-name, $scale in COL.$colors {
211
- @each $shade, $value in $scale {
212
- .hover\:bg-#{$color-name}-#{$shade}:hover {
213
- background-color: var(--#{$color-name}-#{$shade});
214
- }
215
-
216
- .hover\:text-#{$color-name}-#{$shade}:hover {
217
- color: var(--#{$color-name}-#{$shade});
218
- }
219
- }
220
- }
221
-
222
- @each $color-name, $scale in COL.$colors-primitives {
223
- @each $shade, $value in $scale {
224
- .hover\:bg-#{$color-name}-#{$shade}:hover {
225
- background-color: var(--#{$color-name}-#{$shade});
226
- }
227
-
228
- .hover\:text-#{$color-name}-#{$shade}:hover {
229
- color: var(--#{$color-name}-#{$shade});
230
- }
231
- }
232
- }
233
236
  }
234
237
 
235
238
  // Glass effects
@@ -238,7 +241,6 @@
238
241
  border: 1px solid rgb(255 255 255 / 20%);
239
242
 
240
243
  @include COL.backdrop-filter(blur(8px));
241
-
242
244
  }
243
245
 
244
246
  .frosted-glass {
@@ -73,6 +73,7 @@
73
73
  }
74
74
  }
75
75
 
76
+ // todo: doc
76
77
  // Touch devices
77
78
  @mixin touch {
78
79
  @media (hover: none) and (pointer: coarse) {
@@ -80,6 +81,7 @@
80
81
  }
81
82
  }
82
83
 
84
+ // todo: doc
83
85
  // Print media
84
86
  @mixin print {
85
87
  @media print {
@@ -87,6 +89,7 @@
87
89
  }
88
90
  }
89
91
 
92
+ // todo: doc
90
93
  // Example: @include supports(display: grid) { }
91
94
  @mixin supports($property) {
92
95
  @supports (#{$property}) {
@@ -94,6 +97,7 @@
94
97
  }
95
98
  }
96
99
 
100
+ // todo: doc
97
101
  // System preference only
98
102
  @mixin prefers-dark {
99
103
  @media (prefers-color-scheme: dark) {
@@ -101,21 +105,25 @@
101
105
  }
102
106
  }
103
107
 
108
+ // todo: doc
104
109
  // User preference takes precedence
105
110
  @mixin dark-mode {
106
- // Apply when user explicitly chooses dark
107
- [data-theme="dark"] & {
108
- @content;
109
- }
110
-
111
- // Apply when system is dark AND user hasn't made a choice
112
- @media (prefers-color-scheme: dark) {
113
- [data-theme="system"] & {
111
+ @if $enable-dark-mode { // todo: documentation as this will fully remove the dark mode by force
112
+ // Apply when user explicitly chooses dark
113
+ [data-theme="dark"] & {
114
114
  @content;
115
115
  }
116
+
117
+ // Apply when system is dark AND user hasn't made a choice
118
+ @media (prefers-color-scheme: dark) {
119
+ [data-theme="system"] & {
120
+ @content;
121
+ }
122
+ }
116
123
  }
117
124
  }
118
125
 
126
+ // todo: doc
119
127
  // Device orientation
120
128
  @mixin landscape {
121
129
  @media screen and (orientation: landscape) {
@@ -123,17 +131,20 @@
123
131
  }
124
132
  }
125
133
 
134
+ // todo: doc
126
135
  @mixin portrait {
127
136
  @media screen and (orientation: portrait) {
128
137
  @content;
129
138
  }
130
139
  }
131
140
 
141
+ // todo: doc
132
142
  // Modern aspect ratio
133
143
  @mixin aspect-ratio($ratio) {
134
144
  aspect-ratio: #{$ratio};
135
145
  }
136
146
 
147
+ // todo: doc
137
148
  // Dynamic viewport units (modern browsers)
138
149
  @mixin dvh {
139
150
  @supports (height: 100dvh) {
@@ -145,24 +156,20 @@
145
156
  }
146
157
  }
147
158
 
159
+ // todo: doc
148
160
  // Safe area insets (notches, home indicators)
149
161
  @mixin safe-area-inset($property, $position) {
150
162
  #{$property}: env(safe-area-inset-#{$position});
151
163
  }
152
164
 
165
+ // todo: doc
153
166
  @mixin reduced-motion {
154
167
  @media (prefers-reduced-motion: reduce) {
155
168
  @content;
156
169
  }
157
170
  }
158
171
 
159
- // Data-saving mode
160
- @mixin save-data {
161
- @media (prefers-reduced-data: reduce) {
162
- @content;
163
- }
164
- }
165
-
172
+ // todo: doc
166
173
  // Mouse precision detection
167
174
  @mixin fine-pointer {
168
175
  @media (pointer: fine) {
@@ -170,6 +177,7 @@
170
177
  }
171
178
  }
172
179
 
180
+ // todo: doc
173
181
  // Display mode for PWAs
174
182
  @mixin display-mode($mode: "standalone") {
175
183
  @media (display-mode: #{$mode}) {
@@ -177,6 +185,7 @@
177
185
  }
178
186
  }
179
187
 
188
+ // todo: doc
180
189
  // High contrast mode
181
190
  @mixin high-contrast {
182
191
  @media (forced-colors: active) {
@@ -20,14 +20,20 @@
20
20
  @mixin max-width-percent($i) { max-width: str.unquote($i + '%'); }
21
21
  @mixin max-height-percent($i) { max-height: str.unquote($i + '%'); }
22
22
 
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%; }
23
+ @mixin w-auto { @include width(auto);}
24
+ @mixin w-full { @include width(100%);}
25
+ @mixin h-auto { @include height(auto);}
26
+ @mixin h-full { @include height(100%);}
27
+ @mixin w-max { @include width(max-content);}
28
+ @mixin h-max { @include height(max-content);}
29
+ @mixin w-min { @include width(min-content);}
30
+ @mixin h-min { @include height(min-content);}
31
+ @mixin w-fit { @include width(fit-content);}
32
+ @mixin h-fit { @include height(fit-content);}
33
+ @mixin min-w-full { @include min-width(100%);}
34
+ @mixin max-w-full { @include max-width(100%);}
35
+ @mixin min-h-full { @include min-height(100%);}
36
+ @mixin max-h-full { @include max-height(100%);}
31
37
 
32
38
  @mixin w-screen { width: 100vw; }
33
39
  @mixin h-screen { height: 100dvh; }
@@ -38,9 +44,13 @@
38
44
 
39
45
  .w-auto { @include w-auto; }
40
46
  .w-full { @include w-full; }
41
-
42
47
  .h-auto { @include h-auto; }
43
48
  .h-full { @include h-full; }
49
+ .w-min { @include w-min;}
50
+ .h-min { @include h-min;}
51
+ .w-fit { @include w-fit;}
52
+ .h-fit { @include h-fit;}
53
+
44
54
  .min-w-full { @include min-w-full; }
45
55
  .max-w-full { @include max-w-full; }
46
56
  .min-h-full { @include min-h-full; }
@@ -73,6 +83,16 @@
73
83
  .min-w-#{$breakpoint} { @include min-width($width); }
74
84
  .max-w-#{$breakpoint} { @include max-width($width); }
75
85
 
86
+
87
+ .w-auto\@#{$breakpoint} { @include w-auto; }
88
+ .w-full\@#{$breakpoint} { @include w-full; }
89
+ .h-auto\@#{$breakpoint} { @include h-auto; }
90
+ .h-full\@#{$breakpoint} { @include h-full; }
91
+ .w-min\@#{$breakpoint}{ @include w-min;}
92
+ .h-min\@#{$breakpoint}{ @include h-min;}
93
+ .w-fit\@#{$breakpoint}{ @include w-fit;}
94
+ .h-fit\@#{$breakpoint}{ @include h-fit;}
95
+
76
96
  @include MQ.media-up ($breakpoint) {
77
97
  // Generate utilities from spacing map
78
98
  @each $i in VAR.$percentages {
@@ -127,8 +127,7 @@
127
127
  @mixin px($val) {
128
128
  $val: format-unit-value($val);
129
129
 
130
- padding-left: $val;
131
- padding-right: $val;
130
+ padding-inline: $val;
132
131
  }
133
132
 
134
133
  /**
@@ -138,9 +137,8 @@
138
137
  */
139
138
  @mixin py($val) {
140
139
  $val: format-unit-value($val);
141
-
142
- padding-top: $val;
143
- padding-bottom: $val;
140
+
141
+ padding-block: $val;
144
142
  }
145
143
 
146
144
  /**
@@ -210,8 +208,7 @@
210
208
  @mixin mx($val) {
211
209
  $val: format-unit-value($val);
212
210
 
213
- margin-left: $val;
214
- margin-right: $val;
211
+ margin-inline: $val;
215
212
  }
216
213
 
217
214
  /**
@@ -220,10 +217,9 @@
220
217
  * @param {Number|String} $val - Margin value
221
218
  */
222
219
  @mixin my($val) {
223
- $val: format-unit-value($val);
220
+ $val: format-unit-value($val);
224
221
 
225
- margin-top: $val;
226
- margin-bottom: $val;
222
+ margin-block: $val;
227
223
  }
228
224
 
229
225
  /**