@shohojdhara/atomix 0.5.6 → 0.5.8

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 (60) hide show
  1. package/dist/atomix.css +452 -369
  2. package/dist/atomix.css.map +1 -1
  3. package/dist/atomix.min.css +5 -5
  4. package/dist/atomix.min.css.map +1 -1
  5. package/dist/atomix.umd.js +2 -0
  6. package/dist/atomix.umd.js.map +1 -0
  7. package/dist/atomix.umd.min.js +1 -0
  8. package/dist/core.d.ts +4 -3
  9. package/dist/index.d.ts +4 -3
  10. package/dist/index.esm.js +20 -7
  11. package/dist/index.esm.js.map +1 -1
  12. package/dist/index.js +20 -7
  13. package/dist/index.js.map +1 -1
  14. package/dist/index.min.js +1 -1
  15. package/dist/index.min.js.map +1 -1
  16. package/dist/theme.js +7 -3
  17. package/dist/theme.js.map +1 -1
  18. package/package.json +3 -3
  19. package/src/components/Breadcrumb/Breadcrumb.tsx +3 -3
  20. package/src/lib/config/loader.ts +27 -6
  21. package/src/lib/theme/config/configLoader.ts +7 -2
  22. package/src/lib/theme/config/loader.ts +7 -6
  23. package/src/styles/06-components/_components.avatar-group.scss +1 -3
  24. package/src/styles/06-components/_components.avatar.scss +1 -1
  25. package/src/styles/06-components/_components.badge.scss +2 -2
  26. package/src/styles/06-components/_components.button.scss +3 -3
  27. package/src/styles/06-components/_components.callout.scss +5 -5
  28. package/src/styles/06-components/_components.card.scss +2 -5
  29. package/src/styles/06-components/_components.checkbox.scss +1 -1
  30. package/src/styles/06-components/_components.data-table.scss +1 -1
  31. package/src/styles/06-components/_components.datepicker.scss +1 -1
  32. package/src/styles/06-components/_components.dropdown.scss +3 -3
  33. package/src/styles/06-components/_components.edge-panel.scss +5 -9
  34. package/src/styles/06-components/_components.footer.scss +12 -13
  35. package/src/styles/06-components/_components.hero.scss +2 -2
  36. package/src/styles/06-components/_components.input.scss +3 -3
  37. package/src/styles/06-components/_components.list.scss +1 -1
  38. package/src/styles/06-components/_components.menu.scss +2 -2
  39. package/src/styles/06-components/_components.messages.scss +16 -18
  40. package/src/styles/06-components/_components.modal.scss +6 -6
  41. package/src/styles/06-components/_components.nav.scss +0 -3
  42. package/src/styles/06-components/_components.navbar.scss +3 -3
  43. package/src/styles/06-components/_components.pagination.scss +3 -3
  44. package/src/styles/06-components/_components.photoviewer.scss +3 -3
  45. package/src/styles/06-components/_components.popover.scss +3 -3
  46. package/src/styles/06-components/_components.product-review.scss +2 -2
  47. package/src/styles/06-components/_components.progress.scss +2 -2
  48. package/src/styles/06-components/_components.river.scss +1 -1
  49. package/src/styles/06-components/_components.sectionintro.scss +1 -1
  50. package/src/styles/06-components/_components.select.scss +5 -6
  51. package/src/styles/06-components/_components.side-menu.scss +6 -6
  52. package/src/styles/06-components/_components.skeleton.scss +8 -8
  53. package/src/styles/06-components/_components.slider.scss +6 -6
  54. package/src/styles/06-components/_components.steps.scss +2 -2
  55. package/src/styles/06-components/_components.tabs.scss +2 -2
  56. package/src/styles/06-components/_components.todo.scss +1 -1
  57. package/src/styles/06-components/_components.toggle.scss +3 -5
  58. package/src/styles/06-components/_components.tooltip.scss +2 -4
  59. package/src/styles/06-components/_components.upload.scss +1 -2
  60. package/src/styles/06-components/_components.video-player.scss +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shohojdhara/atomix",
3
- "version": "0.5.6",
3
+ "version": "0.5.8",
4
4
  "description": "Atomix Design System - A modern component library for web applications",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -17,7 +17,6 @@
17
17
  "sass": "src/styles/index.scss",
18
18
  "unpkg": "dist/atomix.umd.min.js",
19
19
  "jsdelivr": "dist/atomix.umd.min.js",
20
- "browser": "dist/atomix.umd.min.js",
21
20
  "bin": {
22
21
  "atomix": "scripts/atomix-cli.js"
23
22
  },
@@ -115,6 +114,7 @@
115
114
  "default": "./dist/heavy.js"
116
115
  },
117
116
  "./cdn": {
117
+ "types": "./dist/index.d.ts",
118
118
  "import": "./dist/atomix.umd.min.js",
119
119
  "require": "./dist/atomix.umd.min.js",
120
120
  "default": "./dist/atomix.umd.min.js"
@@ -233,7 +233,7 @@
233
233
  "build:types": "rollup -c rollup.config.types.js",
234
234
  "build:styles": "rollup -c rollup.config.styles.js",
235
235
  "build:themes": "rollup -c rollup/config/themes.js",
236
- "build:parallel": "concurrently \"npm:build:js\" \"npm:build:types\" \"npm:build:styles\"",
236
+ "build:parallel": "concurrently \"npm:build:js\" \"npm:build:types\" \"npm:build:styles\" \"npm:build:umd\"",
237
237
  "build:umd": "rollup -c rollup.config.umd.js",
238
238
  "build:cli": "rollup -c rollup.config.cli.js",
239
239
  "build:cli:dev": "rollup -c rollup.config.cli.js --environment NODE_ENV:development",
@@ -6,7 +6,6 @@ import React, {
6
6
  cloneElement,
7
7
  isValidElement,
8
8
  ElementType,
9
- ComponentType,
10
9
  MouseEvent,
11
10
  AnchorHTMLAttributes,
12
11
  } from 'react';
@@ -58,10 +57,11 @@ interface LinkComponentProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
58
57
  href?: string;
59
58
  to?: string;
60
59
  onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;
60
+ [key: string]: any;
61
61
  }
62
62
 
63
63
  // Compound Component Props
64
- export interface BreadcrumbItemProps extends React.HTMLAttributes<HTMLLIElement> {
64
+ export interface BreadcrumbItemProps extends Omit<React.HTMLAttributes<HTMLLIElement>, 'onClick'> {
65
65
  /**
66
66
  * URL for the breadcrumb item
67
67
  */
@@ -85,7 +85,7 @@ export interface BreadcrumbItemProps extends React.HTMLAttributes<HTMLLIElement>
85
85
  /**
86
86
  * Optional custom link component
87
87
  */
88
- linkAs?: ComponentType<LinkComponentProps>;
88
+ linkAs?: ElementType;
89
89
 
90
90
  /**
91
91
  * Link props to pass to the underlying anchor or linkComponent
@@ -354,8 +354,11 @@ export function loadAtomixConfig(
354
354
  */
355
355
  function loadConfigAtPath(path: string, required: boolean, defaultConfig: AtomixConfig): AtomixConfig {
356
356
  try {
357
- // Use dynamic import for ESM compatibility
358
- const configModule = require(path);
357
+ // Use dynamic requirement to hide from bundlers
358
+ const req = typeof require !== 'undefined' ? require : undefined;
359
+ if (!req) return defaultConfig;
360
+
361
+ const configModule = req(path);
359
362
  const config = configModule.default || configModule;
360
363
 
361
364
  // Validate it's an AtomixConfig
@@ -391,10 +394,28 @@ export function resolveConfigPath(configPath?: string): string | null {
391
394
  return null;
392
395
  }
393
396
 
394
- // eslint-disable-next-line @typescript-eslint/no-var-requires
395
- const { existsSync } = require('fs') as typeof import('fs');
396
- // eslint-disable-next-line @typescript-eslint/no-var-requires
397
- const { join } = require('path') as typeof import('path');
397
+ // Use dynamic requirement to hide from bundlers like Turbopack/Webpack
398
+ let nodeFs: any;
399
+ let nodePath: any;
400
+
401
+ try {
402
+ // Using a dynamic string and eval-like approach to prevent static analysis
403
+ // This is safe here because we've already checked for window (browser)
404
+ const req = typeof require !== 'undefined' ? require : undefined;
405
+ if (req) {
406
+ nodeFs = req(['f', 's'].join(''));
407
+ nodePath = req(['p', 'a', 't', 'h'].join(''));
408
+ }
409
+ } catch (e) {
410
+ return null;
411
+ }
412
+
413
+ if (!nodeFs || !nodePath) {
414
+ return null;
415
+ }
416
+
417
+ const { existsSync } = nodeFs;
418
+ const { join } = nodePath;
398
419
 
399
420
  // If a specific config path is provided, check if it exists
400
421
  if (configPath) {
@@ -29,7 +29,9 @@ export function loadThemeFromConfigSync(options?: { configPath?: string; require
29
29
 
30
30
  try {
31
31
  // eslint-disable-next-line @typescript-eslint/no-var-requires
32
- const { loadAtomixConfig: loader } = require('../../config/loader');
32
+ const req = typeof require !== 'undefined' ? require : undefined;
33
+ if (!req) throw new Error('require is not available');
34
+ const { loadAtomixConfig: loader } = req('../../config/loader');
33
35
  loadAtomixConfig = loader;
34
36
  } catch (error) {
35
37
  if (options?.required !== false) {
@@ -214,7 +216,10 @@ export async function loadThemeFromConfig(options?: { configPath?: string; requi
214
216
  let config: any;
215
217
  try {
216
218
  // eslint-disable-next-line @typescript-eslint/no-var-requires
217
- const { loadAtomixConfig } = require('../../config/loader');
219
+ const req = typeof require !== 'undefined' ? require : undefined;
220
+ if (!req) throw new Error('require is not available');
221
+ const { loadAtomixConfig: loader } = req('../../config/loader');
222
+ loadAtomixConfig = loader;
218
223
  config = loadAtomixConfig({ configPath: options?.configPath, required: options?.required !== false });
219
224
  } catch (error) {
220
225
  // If loadAtomixConfig is not available (e.g., in browser bundle), provide helpful error
@@ -72,7 +72,8 @@ export function loadThemeConfig(
72
72
  // In ESM environments, require might be undefined.
73
73
  let nodeRequire: any;
74
74
  try {
75
- nodeRequire = require;
75
+ // Use eval('require') or similar to hide from bundlers
76
+ nodeRequire = typeof require !== 'undefined' ? require : undefined;
76
77
  } catch {
77
78
  // require is not defined
78
79
  }
@@ -94,8 +95,8 @@ export function loadThemeConfig(
94
95
 
95
96
  // If a specific config path is provided, try to use it
96
97
  if (configPath && configPath !== DEFAULT_ATOMIX_CONFIG_PATH) {
97
- const path = nodeRequire('path') as typeof import('path');
98
- const fs = nodeRequire('fs') as typeof import('fs');
98
+ const path = nodeRequire(['p', 'a', 't', 'h'].join('')) as typeof import('path');
99
+ const fs = nodeRequire(['f', 's'].join('')) as typeof import('fs');
99
100
  const fullPath = path.resolve(process.cwd(), configPath);
100
101
 
101
102
  if (fs.existsSync(fullPath)) {
@@ -109,8 +110,8 @@ export function loadThemeConfig(
109
110
  'atomix.config.json'
110
111
  ];
111
112
 
112
- const path = nodeRequire('path') as typeof import('path');
113
- const fs = nodeRequire('fs') as typeof import('fs');
113
+ const path = nodeRequire(['p', 'a', 't', 'h'].join('')) as typeof import('path');
114
+ const fs = nodeRequire(['f', 's'].join('')) as typeof import('fs');
114
115
 
115
116
  for (const fileName of possiblePaths) {
116
117
  const fullPath = path.resolve(process.cwd(), fileName);
@@ -131,7 +132,7 @@ export function loadThemeConfig(
131
132
 
132
133
  // Handle JSON files differently
133
134
  if (resolvedConfigPath.endsWith('.json')) {
134
- const fs = nodeRequire('fs') as typeof import('fs');
135
+ const fs = nodeRequire(['f', 's'].join('')) as typeof import('fs');
135
136
  configModule = JSON.parse(fs.readFileSync(resolvedConfigPath, 'utf8'));
136
137
  } else {
137
138
  // Use require (Node.js/CommonJS) for JS/TS files
@@ -36,14 +36,12 @@
36
36
  color: var(--#{$prefix}avatar-group-more-color);
37
37
  font-size: var(--#{$prefix}avatar-group-more-font-size);
38
38
  font-weight: var(--#{$prefix}avatar-group-more-font-weight);
39
- @include dynamic-background(var(--#{$prefix}avatar-group-more-bg));
40
39
  border: var(--#{$prefix}avatar-group-more-border-width) solid
41
40
  var(--#{$prefix}avatar-group-more-border-color);
42
-
43
- // Inherit size and shape from avatars
44
41
  width: var(--#{$prefix}avatar-size);
45
42
  height: var(--#{$prefix}avatar-size);
46
43
  border-radius: var(--#{$prefix}avatar-border-radius);
44
+ @include dynamic-background(var(--#{$prefix}avatar-group-more-bg));
47
45
  }
48
46
 
49
47
  // Stacked variant
@@ -32,12 +32,12 @@
32
32
  justify-content: center;
33
33
  @include square(var(--#{$prefix}avatar-size));
34
34
  border-radius: var(--#{$prefix}avatar-border-radius);
35
- @include dynamic-background(var(--#{$prefix}avatar-bg));
36
35
  color: var(--#{$prefix}avatar-color);
37
36
  border: var(--#{$prefix}avatar-border-width) solid var(--#{$prefix}avatar-border-color);
38
37
  overflow: hidden;
39
38
  user-select: none;
40
39
  @include basic-transition(opacity);
40
+ @include dynamic-background(var(--#{$prefix}avatar-bg));
41
41
 
42
42
  // Size variants
43
43
  @each $size, $value in $avatar-size {
@@ -26,8 +26,8 @@
26
26
  line-height: 1;
27
27
  padding: var(--#{$prefix}tag-padding-y) var(--#{$prefix}tag-padding-x);
28
28
  border-radius: var(--#{$prefix}tag-border-radius);
29
- @include dynamic-background(var(--#{$prefix}tag-bg-color));
30
29
  user-select: none;
30
+ @include dynamic-background(var(--#{$prefix}tag-bg-color));
31
31
 
32
32
  &__icon {
33
33
  font-size: var(--#{$prefix}tag-icon-size);
@@ -44,12 +44,12 @@
44
44
  }
45
45
 
46
46
  &--glass {
47
+ border: 1px solid color-mix(in srgb, var(--#{$prefix}tag-color) 50%, transparent);
47
48
  @include dynamic-background(
48
49
  var(--#{$prefix}tag-bg-color),
49
50
  $enable-transparency: true,
50
51
  $transparency: 0.2
51
52
  );
52
- border: 1px solid color-mix(in srgb, var(--#{$prefix}tag-color) 50%, transparent);
53
53
 
54
54
  // // Outer depth and glass effect
55
55
  // 0 1px 3px rgba(0, 0, 0, 0.2),
@@ -44,12 +44,12 @@
44
44
  text-decoration: if(colors.$link-decoration == none, null, none);
45
45
  white-space: button.$btn-white-space;
46
46
  vertical-align: middle;
47
- @include dynamic-background(var(--#{config.$prefix}btn-bg));
48
47
  cursor: if(button.$enable-button-pointers, pointer, null);
49
48
  user-select: none;
50
49
  border: var(--#{config.$prefix}btn-border-width) solid var(--#{config.$prefix}btn-border-color);
51
50
  border-radius: var(--#{config.$prefix}btn-border-radius);
52
51
  transition: button.$btn-transition;
52
+ @include dynamic-background(var(--#{config.$prefix}btn-bg));
53
53
 
54
54
  &__icon {
55
55
  font-size: var(--#{config.$prefix}btn-icon-size);
@@ -58,8 +58,8 @@
58
58
  &:hover {
59
59
  color: var(--#{config.$prefix}btn-hover-color);
60
60
  text-decoration: if(colors.$link-hover-decoration == underline, none, null);
61
- @include dynamic-background(var(--#{config.$prefix}btn-hover-bg));
62
61
  border-color: var(--#{config.$prefix}btn-hover-border-color);
62
+ @include dynamic-background(var(--#{config.$prefix}btn-hover-bg));
63
63
  }
64
64
 
65
65
  @each $color, $value in color-maps.$theme-colors {
@@ -216,11 +216,11 @@
216
216
  fieldset:disabled & {
217
217
  color: var(--#{config.$prefix}btn-disabled-color);
218
218
  pointer-events: none;
219
- @include dynamic-background(var(--#{config.$prefix}btn-disabled-bg));
220
219
  background-image: if(button.$enable-gradients, none, null);
221
220
  border-color: var(--#{config.$prefix}btn-disabled-border-color);
222
221
  opacity: var(--#{config.$prefix}btn-disabled-opacity);
223
222
  cursor: not-allowed;
223
+ @include dynamic-background(var(--#{config.$prefix}btn-disabled-bg));
224
224
 
225
225
  &:focus-visible {
226
226
  outline: none;
@@ -41,7 +41,6 @@
41
41
  max-width: var(--#{config.$prefix}callout-width);
42
42
  gap: var(--#{config.$prefix}callout-actions-spacer);
43
43
  padding: var(--#{config.$prefix}callout-padding-y) var(--#{config.$prefix}callout-padding-x);
44
- @include dynamic-background(var(--#{config.$prefix}callout-bg));
45
44
  border-radius: var(--#{config.$prefix}callout-border-radius);
46
45
  border: var(--#{config.$prefix}callout-border-witdh) solid
47
46
  var(--#{config.$prefix}callout-border-color);
@@ -50,6 +49,7 @@
50
49
  var(--#{config.$prefix}callout-transition-timing),
51
50
  transform var(--#{config.$prefix}callout-transition-duration)
52
51
  var(--#{config.$prefix}callout-transition-timing);
52
+ @include dynamic-background(var(--#{config.$prefix}callout-bg));
53
53
 
54
54
  &__content {
55
55
  width: 100%;
@@ -145,9 +145,9 @@
145
145
  align-items: flex-start;
146
146
  justify-content: flex-start;
147
147
  border: none;
148
- @include dynamic-background(var(--#{config.$prefix}callout-toast-bg));
149
148
  box-shadow: var(--#{config.$prefix}callout-box-shadow);
150
149
  animation: calloutToastIn 0.3s var(--#{config.$prefix}callout-transition-timing) forwards;
150
+ @include dynamic-background(var(--#{config.$prefix}callout-toast-bg));
151
151
 
152
152
  #{$root} {
153
153
  &__content {
@@ -235,13 +235,13 @@
235
235
 
236
236
  // Glass effect for toast variant
237
237
  &#{$root}--toast {
238
+ box-shadow:
239
+ 0 8px 32px rgba(0, 0, 0, 0.1),
240
+ 0 0 0 1px rgba(255, 255, 255, 0.1) inset;
238
241
  @include dynamic-background(
239
242
  var(--#{config.$prefix}callout-bg),
240
243
  $enable-transparency: true
241
244
  );
242
- box-shadow:
243
- 0 8px 32px rgba(0, 0, 0, 0.1),
244
- 0 0 0 1px rgba(255, 255, 255, 0.1) inset;
245
245
  }
246
246
  }
247
247
 
@@ -42,14 +42,11 @@
42
42
  padding: var(--#{$prefix}card-spacer-y) var(--#{$prefix}card-spacer-x);
43
43
  border: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);
44
44
  border-radius: var(--#{$prefix}card-border-radius);
45
- @include basic-transition();
46
-
47
- @include dynamic-background(var(--#{$prefix}card-bg));
48
-
49
- // Link card support - ensure anchor elements behave like block elements
50
45
  display: block;
51
46
  text-decoration: none;
52
47
  color: inherit;
48
+ @include basic-transition();
49
+ @include dynamic-background(var(--#{$prefix}card-bg));
53
50
 
54
51
  // Reset anchor element default styles when card is used as a link
55
52
  // This needs higher specificity to override global link styles
@@ -34,7 +34,6 @@
34
34
  &__input {
35
35
  position: relative;
36
36
  appearance: none;
37
- @include dynamic-background(var(--#{$prefix}checkbox-bg));
38
37
  width: var(--#{$prefix}checkbox-width);
39
38
  height: var(--#{$prefix}checkbox-height);
40
39
  color: currentColor;
@@ -42,6 +41,7 @@
42
41
  border-radius: var(--#{$prefix}checkbox-border-radius);
43
42
  overflow: hidden;
44
43
  @include basic-transition();
44
+ @include dynamic-background(var(--#{$prefix}checkbox-bg));
45
45
 
46
46
  &[type='radio'] {
47
47
  border-radius: $border-radius-pill;
@@ -33,8 +33,8 @@
33
33
  width: 100%;
34
34
  margin-bottom: 0;
35
35
  color: var(--#{config.$prefix}data-table-color);
36
- @include dynamic-background(var(--#{config.$prefix}data-table-bg));
37
36
  border-collapse: collapse;
37
+ @include dynamic-background(var(--#{config.$prefix}data-table-bg));
38
38
 
39
39
  // Header
40
40
  &__header {
@@ -106,10 +106,10 @@
106
106
  z-index: map.get($z-layers, 5);
107
107
  width: var(--#{$prefix}datepicker-width);
108
108
  padding: var(--#{$prefix}datepicker-padding-y) var(--#{$prefix}datepicker-padding-x);
109
- @include dynamic-background(var(--#{$prefix}datepicker-bg));
110
109
  border-radius: var(--#{$prefix}datepicker-border-radius);
111
110
  box-shadow: var(--#{$prefix}datepicker-box-shadow);
112
111
  margin-top: rem(4px);
112
+ @include dynamic-background(var(--#{$prefix}datepicker-bg));
113
113
 
114
114
  // Calendar placements
115
115
  &--top-start,
@@ -186,17 +186,17 @@
186
186
  list-style: none;
187
187
  @include mb(0);
188
188
  border: 1px solid rgba(255, 255, 255, 0.08);
189
- @include dynamic-background(var(--#{$prefix}dropdown-bg));
190
189
  border-radius: var(--#{$prefix}dropdown-border-radius);
191
190
  box-shadow: var(--#{$prefix}dropdown-box-shadow);
192
191
  overflow: hidden;
192
+ @include dynamic-background(var(--#{$prefix}dropdown-bg));
193
193
 
194
194
  &--glass {
195
+ box-shadow: var(--#{$prefix}dropdown-box-shadow);
195
196
  @include dynamic-background(
196
197
  var(--#{$prefix}dropdown-bg),
197
198
  $enable-transparency: true
198
199
  );
199
- box-shadow: var(--#{$prefix}dropdown-box-shadow);
200
200
  }
201
201
  }
202
202
 
@@ -217,9 +217,9 @@
217
217
  &:hover,
218
218
  &:focus {
219
219
  color: var(--#{$prefix}dropdown-link-hover-color);
220
- @include dynamic-background(var(--#{$prefix}dropdown-link-hover-bg));
221
220
  outline: none;
222
221
  padding-left: calc(var(--#{$prefix}dropdown-item-padding-x) + 3px);
222
+ @include dynamic-background(var(--#{$prefix}dropdown-link-hover-bg));
223
223
  }
224
224
 
225
225
  &.is-active {
@@ -35,10 +35,10 @@
35
35
  &__backdrop {
36
36
  position: absolute;
37
37
  inset: 0;
38
- @include dynamic-background(var(--#{$prefix}edge-panel-backdrop-bg));
39
38
  opacity: 0;
40
39
  z-index: map.get($z-layers, 1);
41
40
  transition: opacity var(--#{$prefix}edge-panel-animation-duration) ease;
41
+ @include dynamic-background(var(--#{$prefix}edge-panel-backdrop-bg));
42
42
 
43
43
  &.is-animating {
44
44
  animation: fadeIn 0.3s ease forwards;
@@ -55,12 +55,12 @@
55
55
  color: var(--#{$prefix}edge-panel-color);
56
56
  width: var(--#{$prefix}edge-panel-width);
57
57
  height: 100%;
58
- @include dynamic-background(var(--#{$prefix}edge-panel-bg));
59
58
  box-shadow: var(--#{$prefix}edge-panel-shadow);
60
59
  z-index: map.get($z-layers, 2);
61
60
  overflow: hidden;
62
61
  display: flex;
63
62
  flex-direction: column;
63
+ @include dynamic-background(var(--#{$prefix}edge-panel-bg));
64
64
 
65
65
  &.is-animating {
66
66
  animation: slideIn var(--#{$prefix}edge-panel-animation-duration)
@@ -371,10 +371,7 @@
371
371
  padding: 0;
372
372
  border-radius: inherit;
373
373
  transition: opacity 0.3s ease;
374
- @include dynamic-background(
375
- var(--#{$prefix}edge-panel-bg),
376
- $enable-transparency: true
377
- );
374
+ @include dynamic-background(var(--#{$prefix}edge-panel-bg), $enable-transparency: true);
378
375
  }
379
376
 
380
377
  .c-edge-panel__header {
@@ -404,13 +401,12 @@
404
401
  }
405
402
 
406
403
  .c-edge-panel__backdrop {
404
+ animation: fadeIn 0.3s ease forwards;
405
+ z-index: map.get($z-layers, 1);
407
406
  @include dynamic-background(
408
407
  var(--#{$prefix}edge-panel-backdrop-bg),
409
408
  $enable-transparency: true
410
409
  );
411
- animation: fadeIn 0.3s ease forwards;
412
- z-index: map.get($z-layers, 1);
413
-
414
410
  &.is-animating-out {
415
411
  animation: fadeOut 0.3s ease forwards;
416
412
  }
@@ -33,11 +33,11 @@
33
33
  --#{$prefix}disabled-opacity: 0.6;
34
34
 
35
35
  // Base Styles
36
- @include dynamic-background(var(--#{$prefix}footer-bg));
37
36
  color: var(--#{$prefix}footer-color);
38
37
  border-top: var(--#{$prefix}footer-border-width) solid var(--#{$prefix}footer-border-color);
39
38
  padding: var(--#{$prefix}footer-padding-y) 0;
40
39
  position: relative;
40
+ @include dynamic-background(var(--#{$prefix}footer-bg));
41
41
 
42
42
  &--glass {
43
43
  padding: 0;
@@ -47,10 +47,10 @@
47
47
  background: transparent;
48
48
 
49
49
  #{$root}__glass {
50
- @include dynamic-background(rgba(var(--#{$prefix}footer-bg-rgb), 0.5, true));
51
50
  color: var(--#{$prefix}footer-color);
52
51
  border-top: var(--#{$prefix}footer-border-width) solid var(--#{$prefix}footer-border-color);
53
52
  padding: var(--#{$prefix}footer-padding-y) 0;
53
+ @include dynamic-background(rgba(var(--#{$prefix}footer-bg-rgb), 0.5, true));
54
54
  }
55
55
  }
56
56
 
@@ -333,13 +333,13 @@
333
333
  justify-content: center;
334
334
  width: #{$footer-social-link-size};
335
335
  height: #{$footer-social-link-size};
336
- @include dynamic-background(#{$footer-social-link-bg});
337
336
  color: #{$footer-social-link-color};
338
337
  border-radius: #{$footer-social-link-border-radius};
339
338
  text-decoration: none;
340
339
  transition: #{$footer-social-link-transition};
341
340
  position: relative;
342
341
  overflow: hidden;
342
+ @include dynamic-background(#{$footer-social-link-bg});
343
343
 
344
344
  &::before {
345
345
  content: '';
@@ -357,10 +357,10 @@
357
357
 
358
358
  &:hover,
359
359
  &:focus {
360
- @include dynamic-background(#{$footer-social-link-hover-bg});
361
360
  color: #{$footer-social-link-hover-color};
362
361
  transform: translateY(-3px) scale(1.05);
363
362
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
363
+ @include dynamic-background(#{$footer-social-link-hover-bg});
364
364
 
365
365
  &::before {
366
366
  transform: translateX(100%);
@@ -438,15 +438,14 @@
438
438
 
439
439
  // Newsletter
440
440
  &__newsletter {
441
- @include dynamic-background(
442
- linear-gradient(135deg, #{$footer-newsletter-bg}, rgba(#{$footer-newsletter-bg}, 0.8))
443
- );
444
441
  padding: #{$footer-newsletter-padding};
445
442
  border-radius: #{$footer-newsletter-border-radius};
446
443
  border: 1px solid var(--#{$prefix}border-subtle);
447
444
  position: relative;
448
445
  overflow: hidden;
449
-
446
+ @include dynamic-background(
447
+ linear-gradient(135deg, #{$footer-newsletter-bg}, rgba(#{$footer-newsletter-bg}, 0.8))
448
+ );
450
449
  &::before {
451
450
  content: '';
452
451
  position: absolute;
@@ -503,13 +502,13 @@
503
502
  flex: 1;
504
503
  padding: #{$footer-newsletter-input-padding};
505
504
  font-size: #{$footer-newsletter-input-font-size};
506
- @include dynamic-background(#{$footer-newsletter-input-bg});
507
505
  color: #{$footer-newsletter-input-color};
508
506
  border: #{$footer-newsletter-input-border};
509
507
  border-radius: #{$footer-newsletter-input-border-radius};
510
508
  outline: none;
511
509
  transition: all 0.3s ease;
512
510
  box-sizing: border-box;
511
+ @include dynamic-background(#{$footer-newsletter-input-bg});
513
512
 
514
513
  &:focus {
515
514
  border-color: #{$footer-newsletter-input-focus-border-color};
@@ -529,7 +528,6 @@
529
528
 
530
529
  &-button {
531
530
  padding: #{$footer-newsletter-button-padding};
532
- @include dynamic-background(#{$footer-newsletter-button-bg});
533
531
  color: #{$footer-newsletter-button-color};
534
532
  border: none;
535
533
  border-radius: #{$footer-newsletter-button-border-radius};
@@ -539,6 +537,7 @@
539
537
  white-space: nowrap;
540
538
  position: relative;
541
539
  overflow: hidden;
540
+ @include dynamic-background(#{$footer-newsletter-button-bg});
542
541
 
543
542
  &::before {
544
543
  content: '';
@@ -556,9 +555,9 @@
556
555
 
557
556
  &:hover,
558
557
  &:focus {
559
- @include dynamic-background(#{$footer-newsletter-button-hover-bg});
560
558
  transform: translateY(-2px);
561
559
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
560
+ @include dynamic-background(#{$footer-newsletter-button-hover-bg});
562
561
 
563
562
  &::before {
564
563
  transform: translateX(100%);
@@ -611,7 +610,6 @@
611
610
  align-items: center;
612
611
  gap: 0.5rem;
613
612
  padding: 0.75rem 1.25rem;
614
- @include dynamic-background(var(--#{$prefix}secondary-bg));
615
613
  border: 1px solid var(--#{$prefix}border-subtle);
616
614
  color: #{$footer-back-to-top-color};
617
615
  font-size: #{$footer-back-to-top-font-size};
@@ -623,6 +621,7 @@
623
621
  overflow: hidden;
624
622
  text-decoration: none;
625
623
  outline: none;
624
+ @include dynamic-background(var(--#{$prefix}secondary-bg));
626
625
 
627
626
  &::before {
628
627
  content: '';
@@ -641,10 +640,10 @@
641
640
  &:hover,
642
641
  &:focus {
643
642
  color: #{$footer-back-to-top-hover-color};
644
- @include dynamic-background(var(--#{$prefix}primary));
645
643
  border-color: var(--#{$prefix}primary);
646
644
  transform: translateY(-3px);
647
645
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
646
+ @include dynamic-background(var(--#{$prefix}primary));
648
647
 
649
648
  &::before {
650
649
  transform: translateX(100%);
@@ -36,8 +36,8 @@
36
36
  display: grid;
37
37
  place-items: center;
38
38
  padding: var(--#{$prefix}hero-padding-y) var(--#{$prefix}hero-padding-x);
39
- @include dynamic-background(var(--#{$prefix}hero-bg));
40
39
  overflow: hidden;
40
+ @include dynamic-background(var(--#{$prefix}hero-bg));
41
41
 
42
42
  &__bg {
43
43
  position: absolute;
@@ -58,9 +58,9 @@
58
58
  &__overlay {
59
59
  position: absolute;
60
60
  inset: 0;
61
- @include dynamic-background(var(--#{$prefix}hero-overlay));
62
61
  opacity: var(--#{$prefix}hero-overlay-opacity);
63
62
  z-index: 1;
63
+ @include dynamic-background(var(--#{$prefix}hero-overlay));
64
64
  }
65
65
 
66
66
  &__container {
@@ -31,8 +31,8 @@
31
31
  border: var(--#{$prefix}input-border-width) solid var(--#{$prefix}input-border-color);
32
32
  border-radius: var(--#{$prefix}input-border-radius);
33
33
  outline: none;
34
- @include dynamic-background(var(--#{$prefix}input-bg));
35
34
  @include basic-transition();
35
+ @include dynamic-background(var(--#{$prefix}input-bg));
36
36
 
37
37
  &:focus,
38
38
  &:hover {
@@ -108,11 +108,11 @@
108
108
 
109
109
  // Glass morphism effect styles
110
110
  &--glass {
111
- @include dynamic-background(var(--#{$prefix}input-bg), $enable-transparency: true);
112
111
  box-shadow:
113
112
  0 8px 32px rgba(0, 0, 0, 0.1),
114
113
  0 0 0 1px rgba(255, 255, 255, 0.1) inset;
115
114
  border-color: color-mix(in srgb, var(--#{$prefix}input-border-color) 50%, transparent);
115
+ @include dynamic-background(var(--#{$prefix}input-bg), $enable-transparency: true);
116
116
 
117
117
  &:focus,
118
118
  &:hover {
@@ -130,8 +130,8 @@
130
130
  // Glass disabled state
131
131
  &:disabled,
132
132
  &.is-disabled {
133
- @include dynamic-background(var(--#{$prefix}input-bg), $enable-transparency: true);
134
133
  opacity: 0.6;
134
+ @include dynamic-background(var(--#{$prefix}input-bg), $enable-transparency: true);
135
135
  }
136
136
  }
137
137
  }
@@ -43,8 +43,8 @@
43
43
  left: 0;
44
44
  width: var(--#{config.$prefix}list-item-dash-width);
45
45
  height: var(--#{config.$prefix}list-item-dash-height);
46
- @include dynamic-background(var(--#{config.$prefix}list-color));
47
46
  transform: translateY(-50%);
47
+ @include dynamic-background(var(--#{config.$prefix}list-color));
48
48
  }
49
49
  }
50
50
  }