@shohojdhara/atomix 0.2.2 → 0.2.3

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 (108) hide show
  1. package/dist/atomix.css +292 -529
  2. package/dist/atomix.min.css +5 -5
  3. package/dist/index.d.ts +623 -121
  4. package/dist/index.esm.js +11475 -6047
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/index.js +4698 -2755
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.min.js +1 -1
  9. package/dist/index.min.js.map +1 -1
  10. package/dist/themes/boomdevs.css +291 -528
  11. package/dist/themes/boomdevs.min.css +6 -6
  12. package/dist/themes/esrar.css +292 -529
  13. package/dist/themes/esrar.min.css +6 -6
  14. package/dist/themes/mashroom.css +286 -526
  15. package/dist/themes/mashroom.min.css +6 -6
  16. package/dist/themes/shaj-default.css +286 -526
  17. package/dist/themes/shaj-default.min.css +6 -6
  18. package/package.json +66 -15
  19. package/src/components/Accordion/Accordion.stories.tsx +137 -0
  20. package/src/components/Accordion/Accordion.tsx +33 -3
  21. package/src/components/AtomixGlass/AtomixGlass.stories.tsx +3011 -0
  22. package/src/components/AtomixGlass/AtomixGlass.test.tsx +199 -0
  23. package/src/components/AtomixGlass/AtomixGlass.tsx +1281 -0
  24. package/src/components/AtomixGlass/AtomixGlassComprehensivePreview.stories.tsx +1369 -0
  25. package/src/components/AtomixGlass/README.md +134 -0
  26. package/src/components/AtomixGlass/index.ts +10 -0
  27. package/src/components/AtomixGlass/shader-utils.ts +140 -0
  28. package/src/components/AtomixGlass/utils.ts +8 -0
  29. package/src/components/Badge/Badge.stories.tsx +169 -0
  30. package/src/components/Badge/Badge.tsx +27 -2
  31. package/src/components/Button/Button.stories.tsx +345 -0
  32. package/src/components/Button/Button.tsx +35 -3
  33. package/src/components/Button/README.md +216 -0
  34. package/src/components/Callout/Callout.stories.tsx +813 -78
  35. package/src/components/Callout/Callout.test.tsx +368 -0
  36. package/src/components/Callout/Callout.tsx +26 -7
  37. package/src/components/Callout/README.md +409 -0
  38. package/src/components/Card/Card.stories.tsx +140 -0
  39. package/src/components/Card/Card.tsx +19 -3
  40. package/src/components/DatePicker/DatePicker copy.tsx +551 -0
  41. package/src/components/DatePicker/DatePicker.stories.tsx +188 -0
  42. package/src/components/DatePicker/DatePicker.tsx +379 -332
  43. package/src/components/DatePicker/readme.md +110 -1
  44. package/src/components/DatePicker/types.ts +8 -0
  45. package/src/components/Dropdown/Dropdown.stories.tsx +145 -0
  46. package/src/components/Dropdown/Dropdown.tsx +34 -5
  47. package/src/components/Form/Checkbox.stories.tsx +101 -0
  48. package/src/components/Form/Checkbox.tsx +26 -2
  49. package/src/components/Form/Input.stories.tsx +124 -0
  50. package/src/components/Form/Input.tsx +36 -7
  51. package/src/components/Form/Radio.stories.tsx +139 -0
  52. package/src/components/Form/Radio.tsx +26 -2
  53. package/src/components/Form/Select.stories.tsx +110 -0
  54. package/src/components/Form/Select.tsx +26 -2
  55. package/src/components/Form/Textarea.stories.tsx +104 -0
  56. package/src/components/Form/Textarea.tsx +36 -7
  57. package/src/components/Hero/Hero.stories.tsx +54 -1
  58. package/src/components/Hero/Hero.tsx +70 -11
  59. package/src/components/Modal/Modal.stories.tsx +235 -0
  60. package/src/components/Modal/Modal.tsx +64 -35
  61. package/src/components/Pagination/Pagination.stories.tsx +101 -0
  62. package/src/components/Pagination/Pagination.tsx +25 -1
  63. package/src/components/Popover/Popover.stories.tsx +94 -0
  64. package/src/components/Popover/Popover.tsx +30 -4
  65. package/src/components/Rating/Rating.stories.tsx +112 -0
  66. package/src/components/Rating/Rating.tsx +25 -1
  67. package/src/components/Steps/Steps.stories.tsx +119 -0
  68. package/src/components/Steps/Steps.tsx +32 -1
  69. package/src/components/Tab/Tab.stories.tsx +88 -0
  70. package/src/components/Tab/Tab.tsx +32 -1
  71. package/src/components/Toggle/Toggle.stories.tsx +92 -0
  72. package/src/components/Toggle/Toggle.tsx +32 -1
  73. package/src/components/Tooltip/Tooltip.stories.tsx +131 -0
  74. package/src/components/Tooltip/Tooltip.tsx +43 -7
  75. package/src/components/VideoPlayer/VideoPlayer.stories.tsx +1002 -196
  76. package/src/components/VideoPlayer/VideoPlayer.tsx +161 -4
  77. package/src/components/index.ts +1 -0
  78. package/src/lib/composables/index.ts +4 -0
  79. package/src/lib/composables/useAtomixGlass.ts +71 -0
  80. package/src/lib/composables/useButton.ts +3 -1
  81. package/src/lib/composables/useCallout.ts +4 -1
  82. package/src/lib/composables/useGlassContainer.ts +168 -0
  83. package/src/lib/constants/components.ts +88 -0
  84. package/src/lib/types/components.ts +352 -0
  85. package/src/lib/utils/displacement-generator.ts +86 -0
  86. package/src/styles/01-settings/_settings.background.scss +8 -7
  87. package/src/styles/01-settings/_settings.callout.scss +7 -7
  88. package/src/styles/02-tools/_tools.animations.scss +19 -0
  89. package/src/styles/02-tools/_tools.background.scss +19 -17
  90. package/src/styles/02-tools/_tools.glass.scss +1 -0
  91. package/src/styles/03-generic/_generic.root.scss +3 -2
  92. package/src/styles/04-elements/_elements.body.scss +0 -18
  93. package/src/styles/06-components/_components.accordion.scss +16 -0
  94. package/src/styles/06-components/_components.atomix-glass.scss +0 -0
  95. package/src/styles/06-components/_components.badge.scss +34 -0
  96. package/src/styles/06-components/_components.button.scss +10 -0
  97. package/src/styles/06-components/_components.callout.scss +41 -2
  98. package/src/styles/06-components/_components.card.scss +17 -0
  99. package/src/styles/06-components/_components.chart.scss +1 -1
  100. package/src/styles/06-components/_components.datepicker.scss +18 -0
  101. package/src/styles/06-components/_components.dropdown.scss +7 -1
  102. package/src/styles/06-components/_components.hero.scss +1 -2
  103. package/src/styles/06-components/_components.input.scss +31 -1
  104. package/src/styles/06-components/_components.video-player.scss +48 -26
  105. package/src/styles/06-components/_index.scss +1 -0
  106. package/src/styles/99-utilities/_utilities.glass-fixes.scss +48 -0
  107. package/dist/themes/yabai.css +0 -15207
  108. package/dist/themes/yabai.min.css +0 -189
@@ -10,6 +10,7 @@
10
10
  @mixin dynamic-background(
11
11
  $color,
12
12
  $transparency: $background-transparency,
13
+ $background-transparency-enable: $background-transparency-enable,
13
14
  $blur: $background-blur,
14
15
  $use-backdrop-filter: $background-enable-backdrop-filter
15
16
  ) {
@@ -22,10 +23,11 @@
22
23
  @error 'Blur value must be non-negative, got #{$blur}px';
23
24
  }
24
25
 
25
- @if $transparency > 0 {
26
+ // Apply background based on transparency settings
27
+ @if $background-transparency-enable and $transparency > 0 {
26
28
  @if $background-enable-gradient-overlay {
27
29
  background:
28
- // Top highlight layer
30
+ // Top highlight layer
29
31
  linear-gradient(
30
32
  135deg,
31
33
  rgba(255, 255, 255, 0.15) 0%,
@@ -46,7 +48,6 @@
46
48
  color-mix(in srgb, #{$color} #{math.percentage($transparency * 0.3)}, transparent) 0%,
47
49
  transparent 70%
48
50
  );
49
-
50
51
  } @else {
51
52
  background-color: color-mix(
52
53
  in srgb,
@@ -57,29 +58,30 @@
57
58
  } @else {
58
59
  background-color: $color;
59
60
  }
60
- // Apply backdrop filter with browser support
61
- @if $blur > 0 or $use-backdrop-filter {
62
- backdrop-filter: blur(#{$blur}px) saturate(1.5) contrast(1.2) brightness(1.1);
63
- -webkit-backdrop-filter: blur(#{$blur}px) saturate(1.2) contrast(1.2) brightness(1.1);;
61
+
62
+ // Apply backdrop filter effects based on settings
63
+ @if $background-enable-backdrop-filter and ($blur > 0 or $use-backdrop-filter) {
64
+ backdrop-filter: blur(#{$blur}px) saturate(1.5) contrast(1.2) brightness(1.1);
65
+ -webkit-backdrop-filter: blur(#{$blur}px) saturate(1.2) contrast(1.2) brightness(1.1);
66
+ }
67
+
68
+ @if $background-enable-with-shadow {
64
69
  box-shadow:
65
70
  var(--atomix-box-shadow-inset),
66
71
  // Inner glow
67
- inset
68
- 0
69
- 1px
70
- 0
71
- rgba(255, 255, 255, 0.25),
72
- inset 0 -1px 0 color-mix(in srgb, #{$color} 10%, transparent),
72
+ // inset
73
+ // 0
74
+ // 1px
75
+ // 0
76
+ // rgba(255, 255, 255, 0.25),
77
+ // inset 0 -1px 0 color-mix(in srgb, #{$color} 10%, transparent),
73
78
  // Outer depth
74
79
  4px
75
80
  8px
76
81
  32px
77
82
  color-mix(in srgb, #{$color} 20%, transparent),
78
83
  0 1px 2px rgba(0, 0, 0, 0.1),
79
- 0
80
- 8px
81
- 20px
82
- color-mix(in srgb, #{$color} 20%, transparent),
84
+ 0 8px 20px color-mix(in srgb, #{$color} 20%, transparent),
83
85
  0 1px 2px rgba(0, 0, 0, 0.1);
84
86
  }
85
87
  }
@@ -8,6 +8,7 @@
8
8
  @use '../01-settings/settings.box-shadow' as box-shadow;
9
9
  @use '../01-settings/settings.typography' as typography;
10
10
  @use 'sass:meta';
11
+ @use 'sass:map';
11
12
 
12
13
 
13
14
  :root,
@@ -56,7 +57,7 @@
56
57
  --#{config.$prefix}#{$color}-gradient: #{$value};
57
58
  }
58
59
 
59
- --#{config.$prefix}gradient: #{map-get(color-maps.$gradient-colors, light)};
60
+ --#{config.$prefix}gradient: #{map.get(color-maps.$gradient-colors, light)};
60
61
 
61
62
  // Fonts
62
63
 
@@ -171,7 +172,7 @@
171
172
  --#{config.$prefix}#{$color}-gradient: #{$value};
172
173
  }
173
174
 
174
- --#{config.$prefix}gradient: #{map-get(color-maps.$gradient-colors, dark)};
175
+ --#{config.$prefix}gradient: #{map.get(color-maps.$gradient-colors, dark)};
175
176
 
176
177
  --#{config.$prefix}box-shadow: #{box-shadow.$box-shadow-dark};
177
178
  --#{config.$prefix}box-shadow-xs: #{box-shadow.$box-shadow-xs-dark};
@@ -18,22 +18,4 @@ body {
18
18
  overflow: hidden;
19
19
  }
20
20
 
21
- @if ($background-enable-backdrop-filter) {
22
- background: url('https://plus.unsplash.com/premium_photo-1685082778205-8665f65e8c2c?q=80&w=3864&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D');
23
- background-size: cover;
24
- background-repeat: no-repeat;
25
- background-attachment: fixed;
26
-
27
- &::after {
28
- content: '';
29
- position: fixed;
30
- top: 0;
31
- left: 0;
32
- width: 100%;
33
- height: 100%;
34
- opacity: 0.7;
35
- z-index: -1;
36
- background: var(--#{config.$prefix}gradient) ;
37
- }
38
- }
39
21
  }
@@ -112,4 +112,20 @@
112
112
  --#{config.$prefix}accordion-body-color: var(--#{config.$prefix}accordion-disable-color);
113
113
  --#{config.$prefix}accordion-icon-color: var(--#{config.$prefix}accordion-disable-color);
114
114
  }
115
+
116
+ &--glass {
117
+ border-color: transparent;
118
+ #{$root}__header {
119
+ @include dynamic-background(
120
+ var(--#{config.$prefix}accordion-header-bg),
121
+ $background-transparency-enable: true
122
+ );
123
+ }
124
+ #{$root}__body {
125
+ @include dynamic-background(
126
+ var(--#{config.$prefix}accordion-header-bg),
127
+ $background-transparency-enable: true
128
+ );
129
+ }
130
+ }
115
131
  }
@@ -43,6 +43,24 @@
43
43
  --#{$prefix}tag-padding-y: #{$badge-padding-y-lg};
44
44
  }
45
45
 
46
+ &--glass {
47
+ @include dynamic-background(
48
+ var(--#{$prefix}tag-bg-color),
49
+ $background-transparency-enable: true,
50
+ $transparency: 0.8
51
+ );
52
+ border: 1px solid color-mix(in srgb, var(--#{$prefix}tag-color) 20%, transparent);
53
+
54
+
55
+ // // Outer depth and glass effect
56
+ // 0 1px 3px rgba(0, 0, 0, 0.2),
57
+ // 0 2px 8px rgba(0, 0, 0, 0.15),
58
+ // 0 4px 16px rgba(0, 0, 0, 0.1),
59
+
60
+ // Subtle highlight on top edge
61
+ // 0 -1px 0 rgba(255, 255, 255, 0.1);
62
+ }
63
+
46
64
  @each $color, $value in maps.$theme-colors {
47
65
  &--#{$color} {
48
66
  @if ($color == 'primary') {
@@ -51,9 +69,11 @@
51
69
  } @else if ($color == 'dark') {
52
70
  --#{$prefix}tag-bg-color: var(--#{$prefix}dark);
53
71
  --#{$prefix}tag-color: var(--#{$prefix}light);
72
+ border: 1px solid var(--#{$prefix}dark);
54
73
  } @else if ($color == 'light') {
55
74
  --#{$prefix}tag-bg-color: var(--#{$prefix}light);
56
75
  --#{$prefix}tag-color: var(--#{$prefix}dark);
76
+ border: 1px solid var(--#{$prefix}light);
57
77
  } @else {
58
78
  --#{$prefix}tag-bg-color: var(--#{$prefix}#{$color}-bg-subtle);
59
79
  --#{$prefix}tag-color: var(--#{$prefix}#{$color}-text-emphasis);
@@ -61,3 +81,17 @@
61
81
  }
62
82
  }
63
83
  }
84
+
85
+ .c-badge-glass {
86
+ box-shadow:
87
+ // Inner glow
88
+ inset 1px 2px 3px rgba(255, 255, 255, 0.1),
89
+ inset 0 -2px 2px rgba(0, 0, 0, 0.3);
90
+ // 0 1px 3px rgba(0, 0, 0, 0.2),
91
+ // 0 2px 8px rgba(0, 0, 0, 0.15),
92
+ // 0 4px 16px rgba(0, 0, 0, 0.1),
93
+ // Subtle highlight on top edge
94
+ // 0 -1px 0 rgba(255, 255, 255, 0.1);
95
+ border-radius: 999px;
96
+
97
+ }
@@ -132,4 +132,14 @@
132
132
  border-color: var(--#{config.$prefix}btn-disabled-border-color);
133
133
  opacity: var(--#{config.$prefix}btn-disabled-opacity);
134
134
  }
135
+
136
+ // Glass morphism effect styles
137
+ &--glass {
138
+ @include dynamic-background(var(--#{config.$prefix}btn-bg), $background-transparency-enable: true);
139
+
140
+ &:hover {
141
+ @include dynamic-background(var(--#{config.$prefix}btn-hover-bg), $background-transparency-enable: true);
142
+ }
143
+
144
+ }
135
145
  }
@@ -90,9 +90,9 @@
90
90
  &__actions {
91
91
  display: flex;
92
92
  align-items: center;
93
- flex-wrap: wrap;
94
93
  gap: var(--#{config.$prefix}callout-actions-spacer);
95
94
  margin-left: auto;
95
+ margin-right: 10px;
96
96
  }
97
97
 
98
98
  &__close-btn {
@@ -191,7 +191,7 @@
191
191
  --#{config.$prefix}callout-title-color: var(--#{config.$prefix}light);
192
192
  --#{config.$prefix}callout-text-color: #{$gray-4};
193
193
  --#{config.$prefix}callout-bg: var(--#{config.$prefix}dark);
194
- --#{config.$prefix}callout-border-color: var(--#{config.$prefix}primary-border-subtle);
194
+ --#{config.$prefix}callout-border-color: var(--#{config.$prefix}dark-border-subtle);
195
195
  --#{config.$prefix}callout-icon-color: var(--#{config.$prefix}light);
196
196
  } @else {
197
197
  --#{config.$prefix}callout-bg: var(--#{config.$prefix}#{$color}-bg-subtle);
@@ -201,6 +201,45 @@
201
201
  }
202
202
  }
203
203
 
204
+ // Glass morphism effect styles
205
+ &--glass {
206
+ @include dynamic-background(var(--#{config.$prefix}callout-bg), $background-transparency-enable: true);
207
+ padding: 0;
208
+ border: none;
209
+ display: block;
210
+
211
+ #{$root}__glass-content {
212
+ display: flex;
213
+ justify-content: center;
214
+ align-items: center;
215
+ padding: var(--#{config.$prefix}callout-padding-y) var(--#{config.$prefix}callout-padding-x);
216
+ border: var(--#{config.$prefix}callout-border-witdh) solid
217
+ var(--#{config.$prefix}callout-border-color);
218
+ max-width: var(--#{config.$prefix}callout-width);
219
+ border-radius: var(--#{config.$prefix}callout-border-radius);
220
+ width: 100%;
221
+ }
222
+
223
+ // Adjust text colors for glass effect
224
+ #{$root}__title {
225
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
226
+ }
227
+
228
+ #{$root}__text {
229
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
230
+ }
231
+
232
+ // Glass effect for toast variant
233
+ &#{$root}--toast {
234
+ @include dynamic-background(var(--#{config.$prefix}callout-bg), $background-transparency-enable: true);
235
+ box-shadow:
236
+ 0 8px 32px rgba(0, 0, 0, 0.1),
237
+ 0 0 0 1px rgba(255, 255, 255, 0.1) inset;
238
+ }
239
+
240
+
241
+ }
242
+
204
243
  &.is-hide {
205
244
  opacity: 0;
206
245
  transform: translateY(-10px);
@@ -137,6 +137,23 @@
137
137
  padding-top: 0;
138
138
  }
139
139
  }
140
+
141
+ &--glass {
142
+ background-color: transparent;
143
+ padding: 0;
144
+ border: none;
145
+ display: block;
146
+ border-radius: 0;
147
+
148
+ #{$root}__glass-content {
149
+ padding: var(--#{$prefix}card-spacer-y) var(--#{$prefix}card-spacer-x);
150
+ max-width: var(--#{$prefix}card-width);
151
+ border-radius: var(--#{$prefix}card-border-radius);
152
+ width: 100%;
153
+ @include dynamic-background(var(--#{$prefix}card-bg), $background-transparency-enable: true);
154
+ background-blend-mode: overlay;
155
+ }
156
+ }
140
157
  }
141
158
 
142
159
  // Elevation effect for ElevationCard
@@ -2021,7 +2021,7 @@
2021
2021
 
2022
2022
  // Focus management for keyboard navigation
2023
2023
  .c-chart:focus-within {
2024
- &__data-point:focus {
2024
+ .c-chart__data-point:focus {
2025
2025
  outline: 2px solid var(--#{$prefix}primary-6);
2026
2026
  outline-offset: 2px;
2027
2027
  z-index: 10;
@@ -161,6 +161,24 @@
161
161
  &--right-end {
162
162
  bottom: 0;
163
163
  }
164
+
165
+ &--glass {
166
+ z-index: unset;
167
+ box-shadow: none;
168
+ border: none;
169
+ border-radius: 0;
170
+ padding: 0;
171
+ background: transparent;
172
+ }
173
+ }
174
+
175
+ &__glass-content {
176
+ z-index: unset;
177
+ box-shadow: none;
178
+ border: none;
179
+ border-radius: var(--#{$prefix}datepicker-border-radius);
180
+ padding: var(--#{$prefix}datepicker-padding-y) var(--#{$prefix}datepicker-padding-x);
181
+ background: color-mix(in srgb, var(--#{$prefix}datepicker-bg) 50%, transparent 0%);
164
182
  }
165
183
 
166
184
  // Inline mode
@@ -84,7 +84,7 @@
84
84
  &__menu-wrapper {
85
85
  position: absolute;
86
86
  left: 0;
87
- z-index: 99;
87
+ // z-index: 99;
88
88
  display: flex;
89
89
  opacity: 0;
90
90
  visibility: hidden;
@@ -177,10 +177,16 @@
177
177
  padding: var(--#{$prefix}dropdown-padding-y) var(--#{$prefix}dropdown-padding-x);
178
178
  list-style: none;
179
179
  @include mb(0);
180
+ border: 1px solid rgba(255, 255, 255, 0.08);
180
181
  @include dynamic-background(var(--#{$prefix}dropdown-bg));
181
182
  border-radius: var(--#{$prefix}dropdown-border-radius);
182
183
  box-shadow: var(--#{$prefix}dropdown-box-shadow);
183
184
  overflow: hidden;
185
+
186
+ &--glass {
187
+ @include dynamic-background(var(--#{$prefix}dropdown-bg), $background-transparency-enable: true);
188
+ box-shadow: var(--#{$prefix}dropdown-box-shadow);
189
+ }
184
190
  }
185
191
 
186
192
  &__menu-item {
@@ -60,12 +60,11 @@
60
60
  inset: 0;
61
61
  @include dynamic-background(var(--#{$prefix}hero-overlay));
62
62
  opacity: var(--#{$prefix}hero-overlay-opacity);
63
- z-index: 1;
63
+ z-index: 0;
64
64
  }
65
65
 
66
66
  &__container {
67
67
  position: relative;
68
- z-index: 2;
69
68
  }
70
69
 
71
70
  &__grid {
@@ -105,4 +105,34 @@
105
105
  --#{$prefix}input-bg: #{$input-disabled-bg};
106
106
  pointer-events: none;
107
107
  }
108
- }
108
+
109
+ // Glass morphism effect styles
110
+ &--glass {
111
+ @include dynamic-background(var(--#{$prefix}input-bg), $background-transparency-enable: true);
112
+ box-shadow:
113
+ 0 8px 32px rgba(0, 0, 0, 0.1),
114
+ 0 0 0 1px rgba(255, 255, 255, 0.1) inset;
115
+
116
+ &:focus,
117
+ &:hover {
118
+ @include dynamic-background(var(--#{$prefix}input-bg), $background-transparency-enable: true);
119
+ box-shadow:
120
+ 0 8px 32px rgba(0, 0, 0, 0.15),
121
+ 0 0 0 1px rgba(255, 255, 255, 0.2) inset,
122
+ 0 0 0 2px rgba(var(--#{$prefix}primary-rgb, 122, 255, 215), 0.3);
123
+ }
124
+
125
+
126
+
127
+ &#{$root}--textarea {
128
+ resize: vertical;
129
+ }
130
+
131
+ // Glass disabled state
132
+ &:disabled,
133
+ &.is-disabled {
134
+ @include dynamic-background(var(--#{$prefix}input-bg), $background-transparency-enable: true);
135
+ opacity: 0.6;
136
+ }
137
+ }
138
+ }
@@ -8,31 +8,31 @@
8
8
  @use '../02-tools/tools.background' as *;
9
9
 
10
10
  .c-video-player {
11
- --atomix-video-player-bg: #{$video-player-bg};
12
- --atomix-video-player-border-radius: #{$video-player-border-radius};
13
- --atomix-video-player-controls-padding: #{$video-player-controls-padding};
14
- --atomix-video-player-progress-height: #{$video-player-progress-height};
15
- --atomix-video-player-button-size: #{$video-player-button-size};
16
- --atomix-video-player-font-size: #{$video-player-font-size};
17
- --atomix-video-player-transition: #{$video-player-transition};
18
- --atomix-video-player-volume-width: #{$video-player-volume-width};
19
- --atomix-video-player-volume-width-mobile: #{$video-player-volume-width-mobile};
20
- --atomix-video-player-volume-height: #{$video-player-volume-height};
21
- --atomix-video-player-volume-height-hover: #{$video-player-volume-height-hover};
22
- --atomix-video-player-volume-thumb-size: #{$video-player-volume-thumb-size};
23
- --atomix-video-player-volume-bg: #{$video-player-volume-bg};
24
- --atomix-video-player-volume-bg-hover: #{$video-player-volume-bg-hover};
25
- --atomix-video-player-volume-fill: #{$video-player-volume-fill};
26
- --atomix-video-player-volume-fill-hover: #{$video-player-volume-fill-hover};
27
- --atomix-video-player-volume-fill-active: #{$video-player-volume-fill-active};
28
- --atomix-video-player-subtitle-bg: #{$video-player-subtitle-bg};
29
- --atomix-video-player-subtitle-color: #{$video-player-subtitle-color};
30
- --atomix-video-player-subtitle-font-size: #{$video-player-subtitle-font-size};
31
- --atomix-video-player-subtitle-font-weight: #{$video-player-subtitle-font-weight};
32
- --atomix-video-player-subtitle-line-height: #{$video-player-subtitle-line-height};
33
- --atomix-video-player-subtitle-border-radius: #{$video-player-subtitle-border-radius};
34
- --atomix-video-player-subtitle-text-shadow: #{$video-player-subtitle-text-shadow};
35
- --atomix-video-player-subtitle-box-shadow: #{$video-player-subtitle-box-shadow};
11
+ --#{$prefix}-video-player-bg: #{$video-player-bg};
12
+ --#{$prefix}-video-player-border-radius: #{$video-player-border-radius};
13
+ --#{$prefix}-video-player-controls-padding: #{$video-player-controls-padding};
14
+ --#{$prefix}-video-player-progress-height: #{$video-player-progress-height};
15
+ --#{$prefix}-video-player-button-size: #{$video-player-button-size};
16
+ --#{$prefix}-video-player-font-size: #{$video-player-font-size};
17
+ --#{$prefix}-video-player-transition: #{$video-player-transition};
18
+ --#{$prefix}-video-player-volume-width: #{$video-player-volume-width};
19
+ --#{$prefix}-video-player-volume-width-mobile: #{$video-player-volume-width-mobile};
20
+ --#{$prefix}-video-player-volume-height: #{$video-player-volume-height};
21
+ --#{$prefix}-video-player-volume-height-hover: #{$video-player-volume-height-hover};
22
+ --#{$prefix}-video-player-volume-thumb-size: #{$video-player-volume-thumb-size};
23
+ --#{$prefix}-video-player-volume-bg: #{$video-player-volume-bg};
24
+ --#{$prefix}-video-player-volume-bg-hover: #{$video-player-volume-bg-hover};
25
+ --#{$prefix}-video-player-volume-fill: #{$video-player-volume-fill};
26
+ --#{$prefix}-video-player-volume-fill-hover: #{$video-player-volume-fill-hover};
27
+ --#{$prefix}-video-player-volume-fill-active: #{$video-player-volume-fill-active};
28
+ --#{$prefix}-video-player-subtitle-bg: #{$video-player-subtitle-bg};
29
+ --#{$prefix}-video-player-subtitle-color: #{$video-player-subtitle-color};
30
+ --#{$prefix}-video-player-subtitle-font-size: #{$video-player-subtitle-font-size};
31
+ --#{$prefix}-video-player-subtitle-font-weight: #{$video-player-subtitle-font-weight};
32
+ --#{$prefix}-video-player-subtitle-line-height: #{$video-player-subtitle-line-height};
33
+ --#{$prefix}-video-player-subtitle-border-radius: #{$video-player-subtitle-border-radius};
34
+ --#{$prefix}-video-player-subtitle-text-shadow: #{$video-player-subtitle-text-shadow};
35
+ --#{$prefix}-video-player-subtitle-box-shadow: #{$video-player-subtitle-box-shadow};
36
36
 
37
37
  position: relative;
38
38
  width: 100%;
@@ -128,7 +128,7 @@
128
128
  bottom: 0;
129
129
  left: 0;
130
130
  right: 0;
131
- @include dynamic-background(linear-gradient(transparent, rgba(0, 0, 0, 0.8)));
131
+ background: linear-gradient(transparent, rgba(0, 0, 0, 0.8));
132
132
  padding: 1.25rem 1rem 1rem;
133
133
  opacity: 0;
134
134
  visibility: hidden;
@@ -573,6 +573,28 @@
573
573
  display: block;
574
574
  }
575
575
 
576
+ // Glass morphism variant
577
+ &--glass {
578
+ position: relative;
579
+ }
580
+
581
+ &__glass-overlay {
582
+ overflow: hidden;
583
+ position: absolute;
584
+ top: 0;
585
+ left: 0;
586
+ border-radius: var(--#{$prefix}-video-player-border-radius, 0.5rem);
587
+ }
588
+
589
+ &__glass-content {
590
+ position: absolute;
591
+ top: 0;
592
+ left: 0;
593
+ right: 0;
594
+ bottom: 0;
595
+ pointer-events: auto;
596
+ }
597
+
576
598
  // Subtitle track styling (fallback for browsers that don't support ::cue)
577
599
  &__subtitles {
578
600
  position: absolute;
@@ -2,6 +2,7 @@
2
2
  @forward 'components.accordion';
3
3
  @forward 'components.avatar';
4
4
  @forward 'components.avatar-group';
5
+ @forward 'components.atomix-glass';
5
6
  @forward 'components.badge';
6
7
  @forward 'components.breadcrumb';
7
8
  @forward 'components.btn-group';
@@ -0,0 +1,48 @@
1
+ // =============================================================================
2
+ // GLASS EFFECT UTILITIES
3
+ // =============================================================================
4
+ // Minimal utilities that don't duplicate React component inline styles
5
+
6
+ // =============================================================================
7
+ // BACKDROP FILTER FIXES
8
+ // =============================================================================
9
+
10
+ // Remove problematic properties that break backdrop-filter
11
+ .u-glass-clean-root {
12
+ isolation: initial !important;
13
+ contain: none !important;
14
+ transform-style: flat !important;
15
+ will-change: auto !important;
16
+ transform: none !important;
17
+ }
18
+
19
+ // =============================================================================
20
+ // DEBUG UTILITIES
21
+ // =============================================================================
22
+
23
+ .u-glass-debug {
24
+ outline: 2px dashed red !important;
25
+
26
+ &::after {
27
+ content: 'Glass Debug';
28
+ position: absolute;
29
+ top: -20px;
30
+ left: 0;
31
+ background: red;
32
+ color: white;
33
+ font-size: 10px;
34
+ padding: 2px 4px;
35
+ z-index: 9999;
36
+ }
37
+ }
38
+
39
+ // =============================================================================
40
+ // ACCESSIBILITY
41
+ // =============================================================================
42
+
43
+ @media (prefers-reduced-motion: reduce) {
44
+ .u-glass-no-motion {
45
+ transition: none !important;
46
+ animation: none !important;
47
+ }
48
+ }