@shohojdhara/atomix 0.5.5 → 0.5.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 (37) hide show
  1. package/README.md +43 -21
  2. package/dist/atomix.css +647 -1395
  3. package/dist/atomix.css.map +1 -1
  4. package/dist/atomix.min.css +5 -5
  5. package/dist/atomix.min.css.map +1 -1
  6. package/dist/core.d.ts +100 -8
  7. package/dist/core.js +89 -79
  8. package/dist/core.js.map +1 -1
  9. package/dist/forms.js +1 -7
  10. package/dist/forms.js.map +1 -1
  11. package/dist/heavy.js +7 -3
  12. package/dist/heavy.js.map +1 -1
  13. package/dist/index.d.ts +179 -54
  14. package/dist/index.esm.js +112 -99
  15. package/dist/index.esm.js.map +1 -1
  16. package/dist/index.js +112 -99
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.min.js +1 -1
  19. package/dist/index.min.js.map +1 -1
  20. package/package.json +1 -1
  21. package/src/components/Accordion/Accordion.tsx +40 -25
  22. package/src/components/Breadcrumb/Breadcrumb.tsx +22 -13
  23. package/src/components/Button/Button.tsx +4 -5
  24. package/src/components/Callout/Callout.tsx +98 -96
  25. package/src/components/Card/Card.tsx +117 -103
  26. package/src/components/Card/index.ts +7 -5
  27. package/src/components/Dropdown/Dropdown.tsx +27 -8
  28. package/src/components/EdgePanel/EdgePanel.tsx +7 -2
  29. package/src/components/Modal/Modal.tsx +27 -8
  30. package/src/components/Spinner/Spinner.tsx +60 -43
  31. package/src/components/Tabs/Tabs.tsx +163 -149
  32. package/src/lib/composables/useInput.ts +11 -9
  33. package/src/lib/types/components.ts +84 -0
  34. package/src/styles/01-settings/_settings.background.scss +2 -1
  35. package/src/styles/02-tools/_tools.background.scss +100 -294
  36. package/src/styles/06-components/_components.card.scss +2 -2
  37. package/src/styles/99-utilities/_utilities.link.scss +4 -5
@@ -1,14 +1,75 @@
1
- @use 'sass:meta';
2
- @use 'sass:string';
3
1
  @use 'sass:math';
4
2
  @use 'sass:color';
5
3
  @use 'sass:map';
6
4
  @use 'sass:list';
7
5
  @use '../01-settings/settings.background' as *;
8
- @use '../01-settings/settings.config' as *;
9
6
  @use '../01-settings/settings.colors' as *;
10
- @use '../02-tools/tools.to-rgb' as *;
7
+ /* Background utility simplification
8
+ * - Consolidates duplicated glass, mesh, shadow, border, and noise patterns into private helpers.
9
+ * - Replaces magic values with local token aliases backed by existing background settings.
10
+ * - Flattens variant and interaction branching, keeps public mixin signatures intact, and removes old backdrop prefixes.
11
+ */
12
+
13
+ $_bg-highlight: $white !default;
14
+ $_bg-shadow: $black !default;
15
+ $_bg-filters: ('glass': blur(12px) saturate(1.4), 'solid': blur(8px), 'mesh': blur(16px)) !default;
16
+ $_bg-motion: ('base': 0.3s, 'press': 0.2s, 'easing': cubic-bezier(0.4, 0, 0.2, 1), 'scale': 0.98) !default;
17
+ $_bg-glass: ('angle': 110deg, 'edge-angle': 180deg, 'edge-stop': 30%, 'ambient-stop': 60%, 'ambient-size': ellipse 120% 80% at 50% 120%) !default;
18
+ $_bg-states: ('base': ('shimmer': (0.08, 0.12, 0.08), 'edge': (0.15, 0.05), 'mix': (0.13, 0, -0.1, 0.03), 'ambient': 0.4), 'hover': ('shimmer': (0.1, 0.15, 0.1), 'edge': (0.18, 0.08), 'mix': (0.16, 0, -0.12, 0.04), 'ambient': 0.5), 'active': ('edge': (0.12, 0.05), 'mix': (0.18, 0, -0.09))) !default;
19
+ $_bg-shadow-ambient: ('base': 0 2px 4px rgba($_bg-shadow, 0.05), 'hover': 0 2px 4px rgba($_bg-shadow, 0.08)) !default;
20
+
21
+ // Changelog: Added a shared color-mix helper so all variants use the same tokenized transparency math.
22
+ @function _bg-mix($color, $weight) { @return color-mix(in srgb, #{$color} #{math.percentage($weight)}, transparent); }
23
+
24
+ // Changelog: Added compact token readers to remove repeated literal lookups from the public mixin.
25
+ @function _bg-state($state, $group) { @return map.get($_bg-states, $state, $group); }
26
+ @function _bg-surface($state, $transparency) { @return if($state == 'hover', $background-transparency-hover, if($state == 'active', $background-transparency-active, $transparency)); }
27
+ @function _bg-noise-image() { @return url("data:image/svg+xml,%3Csvg viewBox='0 0 #{$background-noise-scale} #{$background-noise-scale}' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' /%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' /%3E%3C/svg%3E"); }
28
+
29
+ // Changelog: Extracted glass background generation so base, hover, and active states reuse one recipe.
30
+ @function _bg-glass($color, $transparency, $state: 'base') {
31
+ $surface: _bg-surface($state, $transparency);
32
+ $edge: _bg-state($state, 'edge');
33
+ $mix: _bg-state($state, 'mix');
34
+ @if $state == 'active' {
35
+ @return linear-gradient(map.get($_bg-glass, 'edge-angle'), rgba($_bg-highlight, list.nth($edge, 1)) 0%, rgba($_bg-highlight, list.nth($edge, 2)) 20%, transparent 40%), linear-gradient($background-gradient-angle, _bg-mix($color, $surface + list.nth($mix, 1)) 0%, _bg-mix($color, $surface + list.nth($mix, 2)) 50%, _bg-mix($color, $surface + list.nth($mix, 3)) 100%);
36
+ }
37
+ $shimmer: _bg-state($state, 'shimmer');
38
+ @return linear-gradient(map.get($_bg-glass, 'angle'), transparent 0%, rgba($_bg-highlight, list.nth($shimmer, 1)) 45%, rgba($_bg-highlight, list.nth($shimmer, 2)) 50%, rgba($_bg-highlight, list.nth($shimmer, 3)) 55%, transparent 100%), linear-gradient(map.get($_bg-glass, 'edge-angle'), rgba($_bg-highlight, list.nth($edge, 1)) 0%, rgba($_bg-highlight, list.nth($edge, 2)) 15%, transparent map.get($_bg-glass, 'edge-stop')), linear-gradient($background-gradient-angle, _bg-mix($color, $surface + list.nth($mix, 1)) 0%, _bg-mix($color, $surface + list.nth($mix, 2)) 40%, _bg-mix($color, $surface + list.nth($mix, 3)) 70%, _bg-mix($color, $surface + list.nth($mix, 4)) 100%), radial-gradient(map.get($_bg-glass, 'ambient-size'), _bg-mix($color, $surface * map.get($_bg-states, $state, 'ambient')) 0%, transparent map.get($_bg-glass, 'ambient-stop'));
39
+ }
40
+
41
+ // Changelog: Extracted shadow composition so base and hover shadows share one loop and corrected opacity scaling.
42
+ @function _bg-shadows($color, $hover: false) {
43
+ $shadows: (inset 0 1px 0 rgba($_bg-highlight, if($hover, 0.15, 0.1)));
44
+ $multiplier: if($hover, 1.5, 1);
45
+ @for $i from 1 through $background-shadow-layers {
46
+ $blur: $background-shadow-blur-base * $i * $multiplier;
47
+ $opacity: math.div($background-shadow-intensity, $i) * $multiplier;
48
+ $shadows: list.append($shadows, 0 $blur ($blur * 2) if($i == 1, $background-shadow-spread, 0) _bg-mix($color, $opacity), comma);
49
+ }
50
+ @return list.append($shadows, map.get($_bg-shadow-ambient, if($hover, 'hover', 'base')), comma);
51
+ }
52
+
53
+ // Changelog: Extracted a shared overlay scaffold so border, noise, and shimmer pseudo-elements stay aligned.
54
+ @mixin _bg-overlay($z) { content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: $z; }
55
+
56
+ // Changelog: Moved the glass border effect into a private helper to remove duplicate pseudo-element declarations.
57
+ @mixin _bg-border() {
58
+ &::before { @include _bg-overlay(1); padding: $background-border-width; background: linear-gradient($background-gradient-angle, rgba($_bg-highlight, $background-border-opacity * 1.2) 0%, rgba($_bg-highlight, $background-border-opacity * 0.6) 50%, rgba($_bg-highlight, $background-border-opacity * 0.3) 100%); -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; }
59
+ }
60
+
61
+ // Changelog: Moved the noise overlay into a helper so the SVG asset and sizing are defined once.
62
+ @mixin _bg-noise() {
63
+ &::after { @include _bg-overlay(2); opacity: $background-noise-opacity; background-image: _bg-noise-image(); background-size: #{$background-noise-scale}px; mix-blend-mode: overlay; }
64
+ }
65
+
66
+ // Changelog: Moved the shimmer overlay into a helper so the variant branch only selects the effect.
67
+ @mixin _bg-shimmer() {
68
+ overflow: hidden;
69
+ &::before { @include _bg-overlay(1); background: linear-gradient(map.get($_bg-glass, 'angle'), transparent 0%, rgba($_bg-highlight, $background-shimmer-intensity) 50%, transparent 100%); transform: translateX(-100%); animation: shimmer $background-shimmer-duration infinite; }
70
+ }
11
71
 
72
+ // Changelog: Rebuilt the main utility mixin around private helpers to preserve the API while removing nesting and redundancy.
12
73
  /// Dynamic background mixin with glass morphism effects
13
74
  /// @param {Color} $color - Base color for the background
14
75
  /// @param {Number} $transparency [0.65] - Transparency level (0-1)
@@ -28,326 +89,71 @@
28
89
  $enable-noise: $background-enable-noise-texture,
29
90
  $variant: 'glass'
30
91
  ) {
31
- // Base positioning for pseudo-elements
32
92
  position: relative;
33
93
  isolation: isolate;
34
-
35
- // ─── Glass Variant (Default) ────────────────────────────────────────────────
36
94
  @if $variant == 'glass' {
37
- @if $enable-transparency {
38
- @if $enable-gradient {
39
- background:
40
- // Shimmer highlight
41
- linear-gradient(
42
- 110deg,
43
- transparent 0%,
44
- rgba(255, 255, 255, 0.08) 45%,
45
- rgba(255, 255, 255, 0.12) 50%,
46
- rgba(255, 255, 255, 0.08) 55%,
47
- transparent 100%
48
- ),
49
- // Top edge highlight
50
- linear-gradient(
51
- 180deg,
52
- rgba(255, 255, 255, 0.15) 0%,
53
- rgba(255, 255, 255, 0.05) 15%,
54
- transparent 30%
55
- ),
56
- // Main glass layer with depth
57
- linear-gradient(
58
- $background-gradient-angle,
59
- color-mix(in srgb, #{$color} 78%, transparent) 0%,
60
- color-mix(in srgb, #{$color} 65%, transparent) 40%,
61
- color-mix(in srgb, #{$color} 55%, transparent) 70%,
62
- color-mix(in srgb, #{$color} 68%, transparent) 100%
63
- ),
64
- // Bottom ambient shadow
65
- radial-gradient(
66
- ellipse 120% 80% at 50% 120%,
67
- color-mix(in srgb, #{$color} 26%, transparent) 0%,
68
- transparent 60%
69
- );
70
- backdrop-filter: blur(12px) saturate(1.4);
71
- -webkit-backdrop-filter: blur(12px) saturate(1.4);
72
- } @else {
73
- background-color: color-mix(
74
- in srgb,
75
- #{$color} 65%,
76
- transparent
77
- );
78
- backdrop-filter: blur(8px);
79
- -webkit-backdrop-filter: blur(8px);
80
- }
95
+ @if $enable-transparency and $enable-gradient {
96
+ background: _bg-glass($color, $transparency);
97
+ backdrop-filter: map.get($_bg-filters, 'glass');
98
+ } @else if $enable-transparency {
99
+ background-color: _bg-mix($color, $transparency);
100
+ backdrop-filter: map.get($_bg-filters, 'solid');
81
101
  } @else {
82
102
  background-color: $color;
83
103
  }
84
-
85
- // Glass border gradient
86
- @if $enable-border {
87
- &::before {
88
- content: '';
89
- position: absolute;
90
- inset: 0;
91
- border-radius: inherit;
92
- padding: $background-border-width;
93
- background: linear-gradient(
94
- $background-gradient-angle,
95
- rgba(255, 255, 255, $background-border-opacity * 1.2) 0%,
96
- rgba(255, 255, 255, $background-border-opacity * 0.6) 50%,
97
- rgba(255, 255, 255, $background-border-opacity * 0.3) 100%
98
- );
99
- -webkit-mask:
100
- linear-gradient(#fff 0 0) content-box,
101
- linear-gradient(#fff 0 0);
102
- -webkit-mask-composite: xor;
103
- mask-composite: exclude;
104
- pointer-events: none;
105
- z-index: 1;
106
- }
107
- }
108
-
109
- // Noise texture overlay
110
- @if $enable-noise {
111
- &::after {
112
- content: '';
113
- position: absolute;
114
- inset: 0;
115
- border-radius: inherit;
116
- opacity: $background-noise-opacity;
117
- background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 #{$background-noise-scale} #{$background-noise-scale}' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' /%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' /%3E%3C/svg%3E");
118
- background-size: #{$background-noise-scale}px;
119
- pointer-events: none;
120
- mix-blend-mode: overlay;
121
- z-index: 2;
122
- }
123
- }
124
- }
125
-
126
- // ─── Solid Variant ──────────────────────────────────────────────────────────
127
- @else if $variant == 'solid' {
128
- background-color: $color;
129
- @if $enable-gradient {
130
- background: linear-gradient(
131
- $background-gradient-angle,
132
- color.adjust($color, $lightness: 5%) 0%,
133
- $color 50%,
134
- color.adjust($color, $lightness: -5%) 100%
135
- );
136
- }
137
- }
138
-
139
- // ─── Mesh Gradient Variant ──────────────────────────────────────────────────
140
- @else if $variant == 'mesh' {
141
- background:
142
- radial-gradient(
143
- circle at 20% 30%,
144
- color-mix(in srgb, #{$color} 40%, transparent) 0%,
145
- transparent 50%
146
- ),
147
- radial-gradient(
148
- circle at 80% 70%,
149
- color-mix(in srgb, #{$color} 35%, transparent) 0%,
150
- transparent 50%
151
- ),
152
- radial-gradient(
153
- circle at 50% 50%,
154
- color-mix(in srgb, #{$color} 65%, transparent) 0%,
155
- color-mix(in srgb, #{$color} 39%, transparent) 100%
156
- );
157
- backdrop-filter: blur(16px);
158
- -webkit-backdrop-filter: blur(16px);
104
+ @if $enable-border { @include _bg-border(); }
105
+ @if $enable-noise { @include _bg-noise(); }
106
+ } @else if $variant == 'solid' {
107
+ background: if($enable-gradient, linear-gradient($background-gradient-angle, color.adjust($color, $lightness: 5%) 0%, $color 50%, color.adjust($color, $lightness: -5%) 100%), $color);
108
+ } @else if $variant == 'mesh' {
109
+ background: radial-gradient(circle at 20% 30%, _bg-mix($color, 0.4) 0%, transparent 50%), radial-gradient(circle at 80% 70%, _bg-mix($color, 0.35) 0%, transparent 50%), radial-gradient(circle at 50% 50%, _bg-mix($color, $transparency) 0%, _bg-mix($color, 0.39) 100%);
110
+ backdrop-filter: map.get($_bg-filters, 'mesh');
111
+ } @else if $variant == 'shimmer' {
112
+ background: _bg-mix($color, 0.75);
113
+ @include _bg-shimmer();
159
114
  }
160
-
161
- // ─── Shimmer Variant ────────────────────────────────────────────────────────
162
- @else if $variant == 'shimmer' {
163
- background: color-mix(
164
- in srgb,
165
- #{$color} 75%,
166
- transparent
167
- );
168
- overflow: hidden;
169
-
170
- &::before {
171
- content: '';
172
- position: absolute;
173
- inset: 0;
174
- background: linear-gradient(
175
- 110deg,
176
- transparent 0%,
177
- rgba(255, 255, 255, $background-shimmer-intensity) 50%,
178
- transparent 100%
179
- );
180
- transform: translateX(-100%);
181
- animation: shimmer $background-shimmer-duration infinite;
182
- pointer-events: none;
183
- }
184
- }
185
-
186
- // ─── Shadow Layers ──────────────────────────────────────────────────────────
187
- @if $enable-shadow {
188
- $shadow-list: ();
189
-
190
- // Inner glow
191
- $shadow-list: list.append(
192
- $shadow-list,
193
- inset 0 1px 0 rgba(255, 255, 255, 0.1),
194
- comma
195
- );
196
-
197
- // Layered outer shadows
198
- @for $i from 1 through $background-shadow-layers {
199
- $blur: $background-shadow-blur-base * $i;
200
- $spread: if($i == 1, $background-shadow-spread, 0);
201
- $opacity: math.div($background-shadow-intensity, $i);
202
-
203
- $shadow-list: list.append(
204
- $shadow-list,
205
- 0 #{$blur} #{$blur * 2} #{$spread} color-mix(in srgb, #{$color} #{math.percentage($opacity * 100)}, transparent),
206
- comma
207
- );
208
- }
209
-
210
- // Ambient shadow
211
- $shadow-list: list.append(
212
- $shadow-list,
213
- 0 2px 4px rgba(0, 0, 0, 0.05),
214
- comma
215
- );
216
-
217
- box-shadow: $shadow-list;
218
- }
219
-
220
- // ─── Hover & Active States ──────────────────────────────────────────────────
221
- transition:
222
- background 0.3s cubic-bezier(0.4, 0, 0.2, 1),
223
- box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1),
224
- transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
225
-
226
- @media (hover: hover) {
227
- &:hover {
228
- @if $variant == 'glass' and $enable-transparency {
229
- & {
230
- background:
231
- linear-gradient(
232
- 110deg,
233
- transparent 0%,
234
- rgba(255, 255, 255, 0.1) 45%,
235
- rgba(255, 255, 255, 0.15) 50%,
236
- rgba(255, 255, 255, 0.1) 55%,
237
- transparent 100%
238
- ),
239
- linear-gradient(
240
- 180deg,
241
- rgba(255, 255, 255, 0.18) 0%,
242
- rgba(255, 255, 255, 0.08) 15%,
243
- transparent 30%
244
- ),
245
- linear-gradient(
246
- $background-gradient-angle,
247
- color-mix(in srgb, #{$color} 96%, transparent) 0%,
248
- color-mix(in srgb, #{$color} 80%, transparent) 40%,
249
- color-mix(in srgb, #{$color} 68%, transparent) 70%,
250
- color-mix(in srgb, #{$color} 84%, transparent) 100%
251
- ),
252
- radial-gradient(
253
- ellipse 120% 80% at 50% 120%,
254
- color-mix(in srgb, #{$color} 40%, transparent) 0%,
255
- transparent 60%
256
- );
257
- }
258
- }
259
-
260
- @if $enable-shadow {
261
- & {
262
- box-shadow:
263
- inset 0 1px 0 rgba(255, 255, 255, 0.15),
264
- 0 #{$background-shadow-blur-base * 1.5} #{$background-shadow-blur-base * 3} #{$background-shadow-spread} color-mix(in srgb, #{$color} #{math.percentage($background-shadow-intensity * 150)}, transparent),
265
- 0 #{$background-shadow-blur-base * 2.5} #{$background-shadow-blur-base * 5} 0 color-mix(in srgb, #{$color} #{math.percentage($background-shadow-intensity * 100)}, transparent),
266
- 0 2px 4px rgba(0, 0, 0, 0.08);
267
- }
115
+ @if $enable-shadow { box-shadow: _bg-shadows($color); }
116
+ transition: background map.get($_bg-motion, 'base') map.get($_bg-motion, 'easing'), box-shadow map.get($_bg-motion, 'base') map.get($_bg-motion, 'easing');
117
+ @if $background-enable-hover-effects {
118
+ @media (hover: hover) {
119
+ &:hover {
120
+ @if $variant == 'glass' and $enable-transparency { background: _bg-glass($color, $transparency, 'hover'); }
121
+ @if $enable-shadow { box-shadow: _bg-shadows($color, true); }
268
122
  }
269
123
  }
270
124
  }
271
-
272
125
  &:active {
273
- @if $variant == 'glass' and $enable-transparency {
274
- & {
275
- background:
276
- linear-gradient(
277
- 180deg,
278
- rgba(255, 255, 255, 0.12) 0%,
279
- rgba(255, 255, 255, 0.05) 20%,
280
- transparent 40%
281
- ),
282
- linear-gradient(
283
- $background-gradient-angle,
284
- color-mix(in srgb, #{$color} 108%, transparent) 0%,
285
- color-mix(in srgb, #{$color} 90%, transparent) 50%,
286
- color-mix(in srgb, #{$color} 81%, transparent) 100%
287
- );
288
- }
289
- }
290
- & {
291
- transform: scale(0.98);
292
- }
126
+ @if $variant == 'glass' and $enable-transparency { background: _bg-glass($color, $transparency, 'active'); }
293
127
  }
294
128
  }
295
129
 
296
- // ─── Shimmer Animation ──────────────────────────────────────────────────────
130
+ // Changelog: Kept the public animation name intact while trimming it to the minimal required transform states.
297
131
  @keyframes shimmer {
298
- 0% {
299
- transform: translateX(-100%);
300
- }
301
- 100% {
302
- transform: translateX(200%);
303
- }
132
+ from { transform: translateX(-100%); }
133
+ to { transform: translateX(200%); }
304
134
  }
305
135
 
136
+ // Changelog: Preserved the public glass wrapper and routed it through the simplified core mixin.
306
137
  /// Simplified dynamic background for quick usage
307
138
  /// @param {Color} $color - Base color
308
139
  /// @param {Number} $transparency [0.65] - Transparency level
309
140
  @mixin glass-background($color, $transparency: $background-transparency) {
310
- @include dynamic-background(
311
- $color: $color,
312
- $transparency: $transparency,
313
- $enable-transparency: true,
314
- $enable-gradient: true,
315
- $enable-shadow: true,
316
- $variant: 'glass'
317
- );
141
+ @include dynamic-background($color, $transparency, true, true, true, false, $background-enable-noise-texture, 'glass');
318
142
  }
319
143
 
144
+ // Changelog: Preserved the solid wrapper while delegating the implementation to the shared utility mixin.
320
145
  /// Solid background with subtle gradient
321
146
  /// @param {Color} $color - Base color
322
- @mixin solid-background($color) {
323
- @include dynamic-background(
324
- $color: $color,
325
- $variant: 'solid',
326
- $enable-gradient: true,
327
- $enable-shadow: false
328
- );
329
- }
147
+ @mixin solid-background($color) { @include dynamic-background($color, $background-transparency, false, true, false, false, false, 'solid'); }
330
148
 
149
+ // Changelog: Preserved the mesh wrapper and kept the same defaults through the refactored core mixin.
331
150
  /// Mesh gradient background
332
151
  /// @param {Color} $color - Base color
333
152
  /// @param {Number} $transparency [0.65] - Transparency level
334
- @mixin mesh-background($color, $transparency: $background-transparency) {
335
- @include dynamic-background(
336
- $color: $color,
337
- $transparency: $transparency,
338
- $variant: 'mesh',
339
- $enable-shadow: true
340
- );
341
- }
153
+ @mixin mesh-background($color, $transparency: $background-transparency) { @include dynamic-background($color, $transparency, true, true, true, false, false, 'mesh'); }
342
154
 
155
+ // Changelog: Preserved the shimmer wrapper while delegating effect composition to the shared helpers.
343
156
  /// Shimmer effect background
344
157
  /// @param {Color} $color - Base color
345
158
  /// @param {Number} $transparency [0.65] - Transparency level
346
- @mixin shimmer-background($color, $transparency: $background-transparency) {
347
- @include dynamic-background(
348
- $color: $color,
349
- $transparency: $transparency,
350
- $variant: 'shimmer',
351
- $enable-shadow: false
352
- );
353
- }
159
+ @mixin shimmer-background($color, $transparency: $background-transparency) { @include dynamic-background($color, $transparency, true, true, false, false, false, 'shimmer'); }
@@ -307,7 +307,7 @@
307
307
  }
308
308
 
309
309
  &:active:not(&--disabled) {
310
- transform: translateY(0);
310
+ transform: translateY(-2px); // Keep the same transform as hover state to prevent scale down effect
311
311
  }
312
312
  }
313
313
 
@@ -320,7 +320,7 @@
320
320
  }
321
321
 
322
322
  &:active:not(&--disabled) {
323
- transform: translateY(0);
323
+ transform: translateY(-2px); // Keep the same transform as hover state to prevent scale down effect
324
324
  }
325
325
 
326
326
  // Hover elevation modifiers
@@ -64,12 +64,11 @@ $utilities-link: (
64
64
  $enable-important-utilities: true !default;
65
65
  $link-shade-percentage: 15% !default;
66
66
 
67
- // All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251
68
67
  @each $color, $value in color-maps.$theme-colors {
69
68
  .u-link-#{$color} {
70
- color: RGBA(var(--#{config.$prefix}#{$color}-rgb), var(--#{config.$prefix}u-link-opacity, 1))
69
+ color: rgba(var(--#{config.$prefix}#{$color}-rgb), var(--#{config.$prefix}u-link-opacity, 1))
71
70
  if($enable-important-utilities, !important, null);
72
- text-decoration-color: RGBA(
71
+ text-decoration-color: rgba(
73
72
  var(--#{config.$prefix}#{$color}-rgb),
74
73
  var(--#{config.$prefix}u-link-underline-opacity, 1)
75
74
  )
@@ -83,9 +82,9 @@ $link-shade-percentage: 15% !default;
83
82
  shade-color($value, $link-shade-percentage),
84
83
  tint-color($value, $link-shade-percentage)
85
84
  );
86
- color: RGBA(#{to-rgb($hover-color)}, var(--#{config.$prefix}u-link-opacity, 1))
85
+ color: rgba(#{to-rgb($hover-color)}, var(--#{config.$prefix}u-link-opacity, 1))
87
86
  if($enable-important-utilities, !important, null);
88
- text-decoration-color: RGBA(
87
+ text-decoration-color: rgba(
89
88
  #{to-rgb($hover-color)},
90
89
  var(--#{config.$prefix}u-link-underline-opacity, 1)
91
90
  )