@shohojdhara/atomix 0.5.2 → 0.5.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.
- package/atomix.config.ts +33 -33
- package/dist/atomix.css +3213 -159
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +5 -5
- package/dist/atomix.min.css.map +1 -1
- package/dist/config.d.ts +187 -112
- package/dist/config.js +2 -47
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1958 -900
- package/dist/index.esm.js +2279 -382
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +2332 -413
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/theme.d.ts +1390 -276
- package/dist/theme.js +2125 -621
- package/dist/theme.js.map +1 -1
- package/package.json +1 -1
- package/scripts/cli/internal/config-loader.js +30 -20
- package/src/lib/config/index.ts +38 -362
- package/src/lib/config/loader.ts +422 -0
- package/src/lib/config/public-api.ts +43 -0
- package/src/lib/config/types.ts +389 -0
- package/src/lib/config/validator.ts +305 -0
- package/src/lib/theme/adapters/index.ts +1 -1
- package/src/lib/theme/adapters/themeAdapter.ts +358 -229
- package/src/lib/theme/components/ThemeToggle.tsx +276 -0
- package/src/lib/theme/config/configLoader.ts +351 -0
- package/src/lib/theme/config/loader.ts +221 -0
- package/src/lib/theme/core/createTheme.ts +126 -50
- package/src/lib/theme/core/createThemeObject.ts +7 -4
- package/src/lib/theme/hooks/useThemeSwitcher.ts +164 -0
- package/src/lib/theme/index.ts +322 -38
- package/src/lib/theme/runtime/ThemeProvider.tsx +44 -10
- package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +44 -393
- package/src/lib/theme/runtime/useTheme.ts +1 -0
- package/src/lib/theme/tokens/tokens.ts +101 -1
- package/src/lib/theme/types.ts +91 -0
- package/src/lib/theme/utils/performanceMonitor.ts +315 -0
- package/src/lib/theme/utils/responsive.ts +280 -0
- package/src/lib/theme/utils/themeUtils.ts +531 -117
- package/src/styles/01-settings/_settings.background.scss +34 -5
- package/src/styles/02-tools/_tools.background.scss +330 -52
- package/src/styles/05-objects/_objects.masonry-grid.scss +3 -3
- package/src/styles/06-components/_components.accordion.scss +2 -2
- package/src/styles/06-components/_components.badge.scss +1 -1
- package/src/styles/06-components/_components.button.scss +2 -2
- package/src/styles/06-components/_components.callout.scss +2 -2
- package/src/styles/06-components/_components.card.scss +1 -1
- package/src/styles/06-components/_components.dropdown.scss +1 -1
- package/src/styles/06-components/_components.dynamic-background.scss +69 -0
- package/src/styles/06-components/_components.edge-panel.scss +2 -2
- package/src/styles/06-components/_components.input.scss +3 -3
- package/src/styles/06-components/_components.messages.scss +6 -6
- package/src/styles/06-components/_components.modal.scss +1 -1
- package/src/styles/06-components/_components.navbar.scss +1 -1
- package/src/styles/06-components/_components.popover.scss +1 -1
- package/src/styles/06-components/_components.toggle.scss +1 -1
- package/src/styles/06-components/_components.tooltip.scss +3 -3
- package/src/styles/06-components/_index.scss +1 -0
|
@@ -1,7 +1,36 @@
|
|
|
1
1
|
// Global effect toggles
|
|
2
|
-
$background-enable-gradient-overlay:
|
|
3
|
-
$background-transparency-enable:
|
|
4
|
-
$background-enable-with-shadow:
|
|
2
|
+
$background-enable-gradient-overlay: true !default;
|
|
3
|
+
$background-transparency-enable: true !default;
|
|
4
|
+
$background-enable-with-shadow: true !default;
|
|
5
|
+
$background-enable-mesh-gradient: false !default;
|
|
6
|
+
$background-enable-noise-texture: false !default;
|
|
7
|
+
$background-enable-shimmer: false !default;
|
|
5
8
|
|
|
6
|
-
// Core transparency levels
|
|
7
|
-
$background-transparency: 0.
|
|
9
|
+
// Core transparency levels
|
|
10
|
+
$background-transparency: 0.65 !default;
|
|
11
|
+
$background-transparency-hover: 0.8 !default;
|
|
12
|
+
$background-transparency-active: 0.9 !default;
|
|
13
|
+
|
|
14
|
+
// Gradient configuration
|
|
15
|
+
$background-gradient-angle: 135deg !default;
|
|
16
|
+
$background-gradient-stops: 4 !default;
|
|
17
|
+
$background-gradient-intensity: 1.2 !default;
|
|
18
|
+
|
|
19
|
+
// Shadow configuration
|
|
20
|
+
$background-shadow-layers: 3 !default;
|
|
21
|
+
$background-shadow-intensity: 0.2 !default;
|
|
22
|
+
$background-shadow-blur-base: 8px !default;
|
|
23
|
+
$background-shadow-spread: 2px !default;
|
|
24
|
+
|
|
25
|
+
// Border configuration
|
|
26
|
+
$background-border-width: 1px !default;
|
|
27
|
+
$background-border-opacity: 0.2 !default;
|
|
28
|
+
$background-border-gradient-enable: true !default;
|
|
29
|
+
|
|
30
|
+
// Noise texture (for glass-like grain)
|
|
31
|
+
$background-noise-opacity: 0.03 !default;
|
|
32
|
+
$background-noise-scale: 200 !default;
|
|
33
|
+
|
|
34
|
+
// Shimmer effect
|
|
35
|
+
$background-shimmer-duration: 3s !default;
|
|
36
|
+
$background-shimmer-intensity: 0.15 !default;
|
|
@@ -3,73 +3,351 @@
|
|
|
3
3
|
@use 'sass:math';
|
|
4
4
|
@use 'sass:color';
|
|
5
5
|
@use 'sass:map';
|
|
6
|
+
@use 'sass:list';
|
|
6
7
|
@use '../01-settings/settings.background' as *;
|
|
7
8
|
@use '../01-settings/settings.config' as *;
|
|
9
|
+
@use '../01-settings/settings.colors' as *;
|
|
8
10
|
@use '../02-tools/tools.to-rgb' as *;
|
|
9
11
|
|
|
12
|
+
/// Dynamic background mixin with glass morphism effects
|
|
13
|
+
/// @param {Color} $color - Base color for the background
|
|
14
|
+
/// @param {Number} $transparency [0.65] - Transparency level (0-1)
|
|
15
|
+
/// @param {Boolean} $enable-transparency [true] - Enable transparency effects
|
|
16
|
+
/// @param {Boolean} $enable-gradient [true] - Enable gradient overlay
|
|
17
|
+
/// @param {Boolean} $enable-shadow [true] - Enable shadow layers
|
|
18
|
+
/// @param {Boolean} $enable-border [false] - Enable border gradient
|
|
19
|
+
/// @param {Boolean} $enable-noise [false] - Enable noise texture
|
|
20
|
+
/// @param {String} $variant ['glass'] - Variant: 'glass', 'solid', 'mesh', 'shimmer'
|
|
10
21
|
@mixin dynamic-background(
|
|
11
22
|
$color,
|
|
12
23
|
$transparency: $background-transparency,
|
|
13
|
-
$
|
|
24
|
+
$enable-transparency: $background-transparency-enable,
|
|
25
|
+
$enable-gradient: $background-enable-gradient-overlay,
|
|
26
|
+
$enable-shadow: $background-enable-with-shadow,
|
|
27
|
+
$enable-border: false,
|
|
28
|
+
$enable-noise: $background-enable-noise-texture,
|
|
29
|
+
$variant: 'glass'
|
|
14
30
|
) {
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
31
|
+
// Base positioning for pseudo-elements
|
|
32
|
+
position: relative;
|
|
33
|
+
isolation: isolate;
|
|
19
34
|
|
|
20
|
-
//
|
|
21
|
-
@if $
|
|
22
|
-
@if $
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
// ─── Glass Variant (Default) ────────────────────────────────────────────────
|
|
36
|
+
@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%
|
|
38
63
|
),
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
ellipse at
|
|
42
|
-
color-mix(in srgb, #{$color}
|
|
43
|
-
transparent
|
|
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%
|
|
44
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
|
+
}
|
|
45
81
|
} @else {
|
|
46
|
-
background-color: color
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
82
|
+
background-color: $color;
|
|
83
|
+
}
|
|
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
|
+
}
|
|
51
107
|
}
|
|
52
|
-
|
|
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' {
|
|
53
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);
|
|
159
|
+
}
|
|
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
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
&: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
|
+
}
|
|
54
293
|
}
|
|
294
|
+
}
|
|
55
295
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
// 0
|
|
64
|
-
// rgba(255, 255, 255, 0.25),
|
|
65
|
-
// inset 0 -1px 0 color-mix(in srgb, #{$color} 10%, transparent),
|
|
66
|
-
// Outer depth
|
|
67
|
-
4px
|
|
68
|
-
8px
|
|
69
|
-
32px
|
|
70
|
-
color-mix(in srgb, #{$color} 20%, transparent),
|
|
71
|
-
0 1px 2px rgba(0, 0, 0, 0.1),
|
|
72
|
-
0 8px 20px color-mix(in srgb, #{$color} 20%, transparent),
|
|
73
|
-
0 1px 2px rgba(0, 0, 0, 0.1);
|
|
296
|
+
// ─── Shimmer Animation ──────────────────────────────────────────────────────
|
|
297
|
+
@keyframes shimmer {
|
|
298
|
+
0% {
|
|
299
|
+
transform: translateX(-100%);
|
|
300
|
+
}
|
|
301
|
+
100% {
|
|
302
|
+
transform: translateX(200%);
|
|
74
303
|
}
|
|
75
304
|
}
|
|
305
|
+
|
|
306
|
+
/// Simplified dynamic background for quick usage
|
|
307
|
+
/// @param {Color} $color - Base color
|
|
308
|
+
/// @param {Number} $transparency [0.65] - Transparency level
|
|
309
|
+
@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
|
+
);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/// Solid background with subtle gradient
|
|
321
|
+
/// @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
|
+
}
|
|
330
|
+
|
|
331
|
+
/// Mesh gradient background
|
|
332
|
+
/// @param {Color} $color - Base color
|
|
333
|
+
/// @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
|
+
}
|
|
342
|
+
|
|
343
|
+
/// Shimmer effect background
|
|
344
|
+
/// @param {Color} $color - Base color
|
|
345
|
+
/// @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
|
+
}
|
|
@@ -131,12 +131,12 @@
|
|
|
131
131
|
opacity: 0;
|
|
132
132
|
// CSS @property for smoother opacity transitions
|
|
133
133
|
@supports (property: opacity) and (animation-timeline: view()) {
|
|
134
|
+
opacity: var(--masonry-img-opacity);
|
|
134
135
|
@property --masonry-img-opacity {
|
|
135
136
|
syntax: '<number>';
|
|
136
137
|
inherits: false;
|
|
137
138
|
initial-value: 0;
|
|
138
139
|
}
|
|
139
|
-
opacity: var(--masonry-img-opacity);
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
}
|
|
@@ -149,13 +149,13 @@
|
|
|
149
149
|
|
|
150
150
|
// CSS @property for precise opacity control
|
|
151
151
|
@supports (property: opacity) and (animation-timeline: view()) {
|
|
152
|
+
opacity: var(--masonry-img-opacity);
|
|
153
|
+
animation: masonry-item-fade-in-advanced masonry.$masonry-grid-item-animation-duration masonry.$masonry-grid-item-animation-timing forwards;
|
|
152
154
|
@property --masonry-img-opacity {
|
|
153
155
|
syntax: '<number>';
|
|
154
156
|
inherits: false;
|
|
155
157
|
initial-value: 0;
|
|
156
158
|
}
|
|
157
|
-
opacity: var(--masonry-img-opacity);
|
|
158
|
-
animation: masonry-item-fade-in-advanced masonry.$masonry-grid-item-animation-duration masonry.$masonry-grid-item-animation-timing forwards;
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
}
|
|
@@ -146,13 +146,13 @@
|
|
|
146
146
|
#{$root}__header {
|
|
147
147
|
@include dynamic-background(
|
|
148
148
|
var(--#{config.$prefix}accordion-header-bg),
|
|
149
|
-
$
|
|
149
|
+
$enable-transparency: true
|
|
150
150
|
);
|
|
151
151
|
}
|
|
152
152
|
#{$root}__body {
|
|
153
153
|
@include dynamic-background(
|
|
154
154
|
var(--#{config.$prefix}accordion-header-bg),
|
|
155
|
-
$
|
|
155
|
+
$enable-transparency: true
|
|
156
156
|
);
|
|
157
157
|
}
|
|
158
158
|
}
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
&--glass {
|
|
47
47
|
@include dynamic-background(
|
|
48
48
|
var(--#{$prefix}tag-bg-color),
|
|
49
|
-
$
|
|
49
|
+
$enable-transparency: true,
|
|
50
50
|
$transparency: 0.2
|
|
51
51
|
);
|
|
52
52
|
border: 1px solid color-mix(in srgb, var(--#{$prefix}tag-color) 50%, transparent);
|
|
@@ -231,13 +231,13 @@
|
|
|
231
231
|
&--glass {
|
|
232
232
|
@include dynamic-background(
|
|
233
233
|
var(--#{config.$prefix}btn-bg),
|
|
234
|
-
$
|
|
234
|
+
$enable-transparency: true
|
|
235
235
|
);
|
|
236
236
|
|
|
237
237
|
&:hover {
|
|
238
238
|
@include dynamic-background(
|
|
239
239
|
var(--#{config.$prefix}btn-hover-bg),
|
|
240
|
-
$
|
|
240
|
+
$enable-transparency: true
|
|
241
241
|
);
|
|
242
242
|
}
|
|
243
243
|
}
|
|
@@ -220,7 +220,7 @@
|
|
|
220
220
|
width: 100%;
|
|
221
221
|
@include dynamic-background(
|
|
222
222
|
var(--#{config.$prefix}callout-bg),
|
|
223
|
-
$
|
|
223
|
+
$enable-transparency: true
|
|
224
224
|
);
|
|
225
225
|
}
|
|
226
226
|
|
|
@@ -237,7 +237,7 @@
|
|
|
237
237
|
&#{$root}--toast {
|
|
238
238
|
@include dynamic-background(
|
|
239
239
|
var(--#{config.$prefix}callout-bg),
|
|
240
|
-
$
|
|
240
|
+
$enable-transparency: true
|
|
241
241
|
);
|
|
242
242
|
box-shadow:
|
|
243
243
|
0 8px 32px rgba(0, 0, 0, 0.1),
|
|
@@ -222,7 +222,7 @@
|
|
|
222
222
|
|
|
223
223
|
&--glass {
|
|
224
224
|
max-width: none;
|
|
225
|
-
@include dynamic-background(var(--#{$prefix}card-bg), $
|
|
225
|
+
@include dynamic-background(var(--#{$prefix}card-bg), $enable-transparency: true);
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
&--outlined {
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
@use '../../styles/01-settings/settings.colors' as *;
|
|
2
|
+
@use '../../styles/01-settings/settings.background' as *;
|
|
3
|
+
@use '../../styles/02-tools/tools.background' as *;
|
|
4
|
+
|
|
5
|
+
.c-dynamic-background {
|
|
6
|
+
// Base styles
|
|
7
|
+
min-height: 200px;
|
|
8
|
+
border-radius: 16px;
|
|
9
|
+
|
|
10
|
+
// Glass variant (default)
|
|
11
|
+
&--glass {
|
|
12
|
+
@include glass-background($primary-6, $background-transparency);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// Solid variant
|
|
16
|
+
&--solid {
|
|
17
|
+
@include solid-background($primary-6);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Mesh variant
|
|
21
|
+
&--mesh {
|
|
22
|
+
@include mesh-background($primary-6, $background-transparency);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Shimmer variant
|
|
26
|
+
&--shimmer {
|
|
27
|
+
@include shimmer-background($primary-6, $background-transparency);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Border modifier
|
|
31
|
+
&--with-border {
|
|
32
|
+
&::before {
|
|
33
|
+
content: '';
|
|
34
|
+
position: absolute;
|
|
35
|
+
inset: 0;
|
|
36
|
+
border-radius: inherit;
|
|
37
|
+
padding: $background-border-width;
|
|
38
|
+
background: linear-gradient(
|
|
39
|
+
$background-gradient-angle,
|
|
40
|
+
rgba(255, 255, 255, $background-border-opacity * 1.2) 0%,
|
|
41
|
+
rgba(255, 255, 255, $background-border-opacity * 0.6) 50%,
|
|
42
|
+
rgba(255, 255, 255, $background-border-opacity * 0.3) 100%
|
|
43
|
+
);
|
|
44
|
+
-webkit-mask:
|
|
45
|
+
linear-gradient(#fff 0 0) content-box,
|
|
46
|
+
linear-gradient(#fff 0 0);
|
|
47
|
+
-webkit-mask-composite: xor;
|
|
48
|
+
mask-composite: exclude;
|
|
49
|
+
pointer-events: none;
|
|
50
|
+
z-index: 1;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Noise modifier
|
|
55
|
+
&--with-noise {
|
|
56
|
+
&::after {
|
|
57
|
+
content: '';
|
|
58
|
+
position: absolute;
|
|
59
|
+
inset: 0;
|
|
60
|
+
border-radius: inherit;
|
|
61
|
+
opacity: $background-noise-opacity;
|
|
62
|
+
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");
|
|
63
|
+
background-size: #{$background-noise-scale}px;
|
|
64
|
+
pointer-events: none;
|
|
65
|
+
mix-blend-mode: overlay;
|
|
66
|
+
z-index: 2;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -373,7 +373,7 @@
|
|
|
373
373
|
transition: opacity 0.3s ease;
|
|
374
374
|
@include dynamic-background(
|
|
375
375
|
var(--#{$prefix}edge-panel-bg),
|
|
376
|
-
$
|
|
376
|
+
$enable-transparency: true
|
|
377
377
|
);
|
|
378
378
|
}
|
|
379
379
|
|
|
@@ -406,7 +406,7 @@
|
|
|
406
406
|
.c-edge-panel__backdrop {
|
|
407
407
|
@include dynamic-background(
|
|
408
408
|
var(--#{$prefix}edge-panel-backdrop-bg),
|
|
409
|
-
$
|
|
409
|
+
$enable-transparency: true
|
|
410
410
|
);
|
|
411
411
|
animation: fadeIn 0.3s ease forwards;
|
|
412
412
|
z-index: map.get($z-layers, 1);
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
|
|
109
109
|
// Glass morphism effect styles
|
|
110
110
|
&--glass {
|
|
111
|
-
@include dynamic-background(var(--#{$prefix}input-bg), $
|
|
111
|
+
@include dynamic-background(var(--#{$prefix}input-bg), $enable-transparency: true);
|
|
112
112
|
box-shadow:
|
|
113
113
|
0 8px 32px rgba(0, 0, 0, 0.1),
|
|
114
114
|
0 0 0 1px rgba(255, 255, 255, 0.1) inset;
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
&:hover {
|
|
119
119
|
@include dynamic-background(
|
|
120
120
|
var(--#{$prefix}input-bg),
|
|
121
|
-
$
|
|
121
|
+
$enable-transparency: true,
|
|
122
122
|
$transparency: 0.9
|
|
123
123
|
);
|
|
124
124
|
}
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
// Glass disabled state
|
|
131
131
|
&:disabled,
|
|
132
132
|
&.is-disabled {
|
|
133
|
-
@include dynamic-background(var(--#{$prefix}input-bg), $
|
|
133
|
+
@include dynamic-background(var(--#{$prefix}input-bg), $enable-transparency: true);
|
|
134
134
|
opacity: 0.6;
|
|
135
135
|
}
|
|
136
136
|
}
|