@shohojdhara/atomix 0.2.3 → 0.2.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.
Files changed (225) hide show
  1. package/README.md +19 -0
  2. package/dist/atomix.css +1703 -1544
  3. package/dist/atomix.min.css +4 -4
  4. package/dist/index.d.ts +1465 -963
  5. package/dist/index.esm.js +16289 -25908
  6. package/dist/index.esm.js.map +1 -1
  7. package/dist/index.js +15650 -21780
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.min.js +1 -1
  10. package/dist/index.min.js.map +1 -1
  11. package/dist/themes/applemix.css +15008 -0
  12. package/dist/themes/applemix.min.css +72 -0
  13. package/dist/themes/boomdevs.css +1608 -1450
  14. package/dist/themes/boomdevs.min.css +5 -5
  15. package/dist/themes/esrar.css +1702 -1543
  16. package/dist/themes/esrar.min.css +4 -4
  17. package/dist/themes/flashtrade.css +15159 -0
  18. package/dist/themes/flashtrade.min.css +86 -0
  19. package/dist/themes/mashroom.css +1699 -1540
  20. package/dist/themes/mashroom.min.css +7 -7
  21. package/dist/themes/shaj-default.css +1693 -1534
  22. package/dist/themes/shaj-default.min.css +4 -4
  23. package/package.json +6 -17
  24. package/src/components/Accordion/Accordion.stories.tsx +662 -21
  25. package/src/components/Accordion/Accordion.tsx +21 -14
  26. package/src/components/AtomixGlass/AtomixGlass.test.tsx +106 -72
  27. package/src/components/AtomixGlass/AtomixGlass.tsx +529 -1195
  28. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +400 -0
  29. package/src/components/AtomixGlass/GlassFilter.tsx +156 -0
  30. package/src/components/AtomixGlass/README.md +124 -2
  31. package/src/components/AtomixGlass/atomixGLass.old.tsx +1266 -0
  32. package/src/components/AtomixGlass/glass-utils.ts +263 -0
  33. package/src/components/AtomixGlass/shader-utils.ts +792 -68
  34. package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +1250 -0
  35. package/src/components/AtomixGlass/stories/Examples.stories.tsx +5768 -0
  36. package/src/components/AtomixGlass/stories/Modes.stories.tsx +1065 -0
  37. package/src/components/AtomixGlass/stories/Playground.stories.tsx +1129 -0
  38. package/src/components/AtomixGlass/stories/ShaderVariants.stories.tsx +395 -0
  39. package/src/components/AtomixGlass/stories/shared-components.tsx +301 -0
  40. package/src/components/AtomixGlass/utils.ts +3 -3
  41. package/src/components/Avatar/Avatar.tsx +3 -0
  42. package/src/components/Avatar/AvatarGroup.tsx +2 -1
  43. package/src/components/Badge/Badge.stories.tsx +76 -55
  44. package/src/components/Badge/Badge.tsx +12 -14
  45. package/src/components/Breadcrumb/Breadcrumb.tsx +23 -4
  46. package/src/components/Button/Button.stories.tsx +501 -20
  47. package/src/components/Button/Button.tsx +5 -8
  48. package/src/components/Callout/Callout.stories.tsx +86 -35
  49. package/src/components/Callout/Callout.tsx +31 -9
  50. package/src/components/Card/Card.stories.tsx +565 -2
  51. package/src/components/Card/Card.tsx +15 -4
  52. package/src/components/Card/ElevationCard.tsx +2 -0
  53. package/src/components/Chart/AnimatedChart.tsx +179 -156
  54. package/src/components/Chart/AreaChart.tsx +123 -12
  55. package/src/components/Chart/BarChart.tsx +91 -100
  56. package/src/components/Chart/BaseChart.tsx +80 -0
  57. package/src/components/Chart/BubbleChart.tsx +114 -290
  58. package/src/components/Chart/CandlestickChart.tsx +282 -622
  59. package/src/components/Chart/Chart.stories.tsx +576 -179
  60. package/src/components/Chart/Chart.tsx +374 -75
  61. package/src/components/Chart/ChartRenderer.tsx +371 -220
  62. package/src/components/Chart/ChartToolbar.tsx +372 -61
  63. package/src/components/Chart/ChartTooltip.tsx +33 -18
  64. package/src/components/Chart/DonutChart.tsx +172 -254
  65. package/src/components/Chart/FunnelChart.tsx +169 -240
  66. package/src/components/Chart/GaugeChart.tsx +224 -392
  67. package/src/components/Chart/HeatmapChart.tsx +302 -440
  68. package/src/components/Chart/LineChart.tsx +148 -103
  69. package/src/components/Chart/MultiAxisChart.tsx +267 -395
  70. package/src/components/Chart/PieChart.tsx +114 -64
  71. package/src/components/Chart/RadarChart.tsx +202 -218
  72. package/src/components/Chart/ScatterChart.tsx +111 -97
  73. package/src/components/Chart/TreemapChart.tsx +147 -222
  74. package/src/components/Chart/WaterfallChart.tsx +253 -291
  75. package/src/components/Chart/index.ts +11 -9
  76. package/src/components/Chart/types.ts +85 -9
  77. package/src/components/Chart/utils.ts +66 -0
  78. package/src/components/ColorModeToggle/ColorModeToggle.tsx +6 -3
  79. package/src/components/Countdown/Countdown.tsx +4 -0
  80. package/src/components/DataTable/DataTable.tsx +2 -1
  81. package/src/components/DatePicker/DatePicker.stories.tsx +689 -12
  82. package/src/components/DatePicker/DatePicker.tsx +3 -9
  83. package/src/components/DatePicker/types.ts +5 -0
  84. package/src/components/Dropdown/Dropdown.stories.tsx +32 -25
  85. package/src/components/Dropdown/Dropdown.tsx +26 -28
  86. package/src/components/EdgePanel/EdgePanel.stories.tsx +473 -2
  87. package/src/components/EdgePanel/EdgePanel.tsx +101 -13
  88. package/src/components/Footer/Footer.stories.tsx +187 -60
  89. package/src/components/Footer/Footer.test.tsx +134 -0
  90. package/src/components/Footer/Footer.tsx +133 -34
  91. package/src/components/Footer/FooterLink.tsx +1 -1
  92. package/src/components/Footer/FooterSection.tsx +53 -36
  93. package/src/components/Footer/FooterSocialLink.tsx +32 -29
  94. package/src/components/Footer/README.md +82 -3
  95. package/src/components/Footer/index.ts +1 -1
  96. package/src/components/Form/Checkbox.stories.tsx +13 -5
  97. package/src/components/Form/Checkbox.tsx +3 -6
  98. package/src/components/Form/Form.stories.tsx +10 -3
  99. package/src/components/Form/Form.tsx +2 -0
  100. package/src/components/Form/FormGroup.tsx +2 -1
  101. package/src/components/Form/Input.stories.tsx +12 -11
  102. package/src/components/Form/Input.tsx +97 -95
  103. package/src/components/Form/Radio.stories.tsx +22 -7
  104. package/src/components/Form/Radio.tsx +3 -6
  105. package/src/components/Form/Select.stories.tsx +21 -6
  106. package/src/components/Form/Select.tsx +3 -5
  107. package/src/components/Form/Textarea.stories.tsx +13 -11
  108. package/src/components/Form/Textarea.tsx +88 -86
  109. package/src/components/Hero/Hero.stories.tsx +2 -3
  110. package/src/components/Hero/Hero.tsx +5 -6
  111. package/src/components/Icon/Icon.tsx +12 -1
  112. package/src/components/List/List.tsx +2 -1
  113. package/src/components/List/ListGroup.tsx +2 -1
  114. package/src/components/Messages/Messages.stories.tsx +113 -0
  115. package/src/components/Messages/Messages.tsx +52 -9
  116. package/src/components/Modal/Modal.stories.tsx +48 -32
  117. package/src/components/Modal/Modal.tsx +19 -24
  118. package/src/components/Navigation/Menu/MegaMenu.tsx +2 -2
  119. package/src/components/Navigation/Menu/Menu.tsx +2 -2
  120. package/src/components/Navigation/Nav/Nav.stories.tsx +469 -0
  121. package/src/components/Navigation/Nav/Nav.tsx +22 -4
  122. package/src/components/Navigation/Nav/NavDropdown.tsx +10 -1
  123. package/src/components/Navigation/Navbar/Navbar.stories.tsx +413 -0
  124. package/src/components/Navigation/Navbar/Navbar.tsx +70 -29
  125. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +340 -0
  126. package/src/components/Navigation/SideMenu/SideMenu.tsx +29 -2
  127. package/src/components/Pagination/Pagination.stories.tsx +13 -6
  128. package/src/components/Pagination/Pagination.tsx +7 -6
  129. package/src/components/PhotoViewer/PhotoViewer.tsx +2 -1
  130. package/src/components/Popover/Popover.stories.tsx +32 -24
  131. package/src/components/Popover/Popover.tsx +4 -1
  132. package/src/components/ProductReview/ProductReview.tsx +8 -2
  133. package/src/components/Progress/Progress.tsx +19 -3
  134. package/src/components/Rating/Rating.stories.tsx +11 -6
  135. package/src/components/Rating/Rating.tsx +3 -5
  136. package/src/components/River/River.tsx +5 -5
  137. package/src/components/SectionIntro/SectionIntro.tsx +8 -2
  138. package/src/components/Slider/Slider.stories.tsx +4 -4
  139. package/src/components/Slider/Slider.tsx +4 -3
  140. package/src/components/Spinner/Spinner.tsx +19 -3
  141. package/src/components/Steps/Steps.stories.tsx +5 -4
  142. package/src/components/Steps/Steps.tsx +8 -5
  143. package/src/components/Tab/Tab.stories.tsx +4 -3
  144. package/src/components/Tab/Tab.tsx +8 -6
  145. package/src/components/Testimonial/Testimonial.tsx +8 -2
  146. package/src/components/Todo/Todo.tsx +2 -1
  147. package/src/components/Toggle/Toggle.stories.tsx +5 -4
  148. package/src/components/Toggle/Toggle.tsx +8 -5
  149. package/src/components/Tooltip/Tooltip.stories.tsx +40 -30
  150. package/src/components/Tooltip/Tooltip.tsx +9 -2
  151. package/src/components/Upload/Upload.stories.tsx +252 -0
  152. package/src/components/Upload/Upload.tsx +92 -53
  153. package/src/components/VideoPlayer/VideoPlayer.tsx +3 -1
  154. package/src/components/index.ts +0 -4
  155. package/src/layouts/Grid/Grid.stories.tsx +10 -23
  156. package/src/layouts/Grid/Grid.tsx +20 -1
  157. package/src/layouts/Grid/GridCol.tsx +76 -48
  158. package/src/lib/composables/useAtomixGlass.ts +861 -44
  159. package/src/lib/composables/useBarChart.ts +21 -4
  160. package/src/lib/composables/useChart.ts +227 -370
  161. package/src/lib/composables/useChartExport.ts +19 -78
  162. package/src/lib/composables/useChartToolbar.ts +11 -21
  163. package/src/lib/composables/useEdgePanel.ts +125 -71
  164. package/src/lib/composables/useFooter.ts +3 -3
  165. package/src/lib/composables/useGlassContainer.ts +16 -7
  166. package/src/lib/composables/useLineChart.ts +11 -2
  167. package/src/lib/composables/usePieChart.ts +4 -14
  168. package/src/lib/composables/useRiver.ts +5 -0
  169. package/src/lib/composables/useSlider.ts +62 -24
  170. package/src/lib/composables/useVideoPlayer.ts +60 -63
  171. package/src/lib/constants/components.ts +147 -32
  172. package/src/lib/types/components.ts +355 -25
  173. package/src/lib/utils/displacement-generator.ts +55 -49
  174. package/src/lib/utils/icons.ts +1 -1
  175. package/src/lib/utils/index.ts +16 -10
  176. package/src/styles/01-settings/_settings.accordion.scss +19 -19
  177. package/src/styles/01-settings/_settings.animations.scss +5 -5
  178. package/src/styles/01-settings/_settings.avatar-group.scss +1 -1
  179. package/src/styles/01-settings/_settings.avatar.scss +17 -17
  180. package/src/styles/01-settings/_settings.background.scss +0 -3
  181. package/src/styles/01-settings/_settings.badge.scss +1 -1
  182. package/src/styles/01-settings/_settings.breadcrumb.scss +1 -1
  183. package/src/styles/01-settings/_settings.card.scss +1 -1
  184. package/src/styles/01-settings/_settings.chart.scss +65 -2
  185. package/src/styles/01-settings/_settings.dropdown.scss +1 -1
  186. package/src/styles/01-settings/_settings.edge-panel.scss +1 -1
  187. package/src/styles/01-settings/_settings.footer.scss +35 -42
  188. package/src/styles/01-settings/_settings.input.scss +1 -1
  189. package/src/styles/01-settings/_settings.list.scss +1 -1
  190. package/src/styles/01-settings/_settings.rating.scss +1 -1
  191. package/src/styles/01-settings/_settings.tabs.scss +1 -1
  192. package/src/styles/01-settings/_settings.upload.scss +6 -5
  193. package/src/styles/02-tools/_tools.animations.scss +4 -5
  194. package/src/styles/02-tools/_tools.background.scss +1 -13
  195. package/src/styles/02-tools/_tools.glass.scss +0 -1
  196. package/src/styles/02-tools/_tools.utility-api.scss +91 -48
  197. package/src/styles/03-generic/_generic.root.scss +1 -4
  198. package/src/styles/04-elements/_elements.body.scss +0 -1
  199. package/src/styles/06-components/_components.atomix-glass.scss +249 -0
  200. package/src/styles/06-components/_components.badge.scss +8 -23
  201. package/src/styles/06-components/_components.button.scss +8 -3
  202. package/src/styles/06-components/_components.callout.scss +10 -5
  203. package/src/styles/06-components/_components.card.scss +2 -14
  204. package/src/styles/06-components/_components.chart.scss +969 -1449
  205. package/src/styles/06-components/_components.dropdown.scss +19 -7
  206. package/src/styles/06-components/_components.edge-panel.scss +103 -0
  207. package/src/styles/06-components/_components.footer.scss +166 -85
  208. package/src/styles/06-components/_components.input.scss +8 -9
  209. package/src/styles/06-components/_components.list.scss +1 -0
  210. package/src/styles/06-components/_components.messages.scss +176 -0
  211. package/src/styles/06-components/_components.modal.scss +16 -4
  212. package/src/styles/06-components/_components.navbar.scss +12 -1
  213. package/src/styles/06-components/_components.side-menu.scss +5 -0
  214. package/src/styles/06-components/_components.skeleton.scss +8 -6
  215. package/src/styles/06-components/_components.upload.scss +219 -4
  216. package/src/styles/06-components/old.chart.styles.scss +1 -30
  217. package/src/styles/99-utilities/_index.scss +1 -0
  218. package/src/styles/99-utilities/_utilities.glass-fixes.scss +1 -0
  219. package/src/styles/99-utilities/_utilities.scss +1 -1
  220. package/src/components/AtomixGlass/AtomixGlass.stories.tsx +0 -3011
  221. package/src/components/AtomixGlass/AtomixGlassComprehensivePreview.stories.tsx +0 -1369
  222. package/src/components/Chart/AdvancedChart.tsx +0 -624
  223. package/src/components/Chart/LineChartNew.tsx +0 -167
  224. package/src/components/Chart/RealTimeChart.tsx +0 -436
  225. package/src/components/DatePicker/DatePicker copy.tsx +0 -551
@@ -88,7 +88,6 @@
88
88
  display: flex;
89
89
  opacity: 0;
90
90
  visibility: hidden;
91
- transform-origin: top center;
92
91
  // Improved transitions - shorter and with better easing
93
92
  transition:
94
93
  opacity var(--#{$prefix}dropdown-animation-duration)
@@ -97,11 +96,15 @@
97
96
  var(--#{$prefix}dropdown-animation-timing),
98
97
  transform var(--#{$prefix}dropdown-animation-duration)
99
98
  var(--#{$prefix}dropdown-animation-timing);
100
- transform: translateY(-15px) scale(0.95);
101
99
  pointer-events: none;
102
- will-change: transform, opacity, visibility;
103
100
 
104
- &.is-open {
101
+ &:not(.is-glass) {
102
+ will-change: transform, opacity, visibility;
103
+ transform: translateY(-15px) scale(0.95);
104
+ transform-origin: top center;
105
+ }
106
+
107
+ &.is-open:not(.is-glass) {
105
108
  opacity: 1;
106
109
  transform: translateY(0) scale(1);
107
110
  visibility: visible;
@@ -110,7 +113,13 @@
110
113
  pointer-events: auto;
111
114
  }
112
115
 
113
- &:not(.is-open) {
116
+ &.is-open.is-glass {
117
+ opacity: 1;
118
+ visibility: visible;
119
+ pointer-events: auto;
120
+ }
121
+
122
+ &:not(.is-open):not(.is-glass) {
114
123
  animation: #{$prefix}dropdown-fade-out var(--#{$prefix}dropdown-animation-duration)
115
124
  var(--#{$prefix}dropdown-animation-timing) forwards;
116
125
  }
@@ -177,14 +186,17 @@
177
186
  padding: var(--#{$prefix}dropdown-padding-y) var(--#{$prefix}dropdown-padding-x);
178
187
  list-style: none;
179
188
  @include mb(0);
180
- border: 1px solid rgba(255, 255, 255, 0.08);
189
+ border: 1px solid rgba(255, 255, 255, 0.08);
181
190
  @include dynamic-background(var(--#{$prefix}dropdown-bg));
182
191
  border-radius: var(--#{$prefix}dropdown-border-radius);
183
192
  box-shadow: var(--#{$prefix}dropdown-box-shadow);
184
193
  overflow: hidden;
185
194
 
186
195
  &--glass {
187
- @include dynamic-background(var(--#{$prefix}dropdown-bg), $background-transparency-enable: true);
196
+ @include dynamic-background(
197
+ var(--#{$prefix}dropdown-bg),
198
+ $background-transparency-enable: true
199
+ );
188
200
  box-shadow: var(--#{$prefix}dropdown-box-shadow);
189
201
  }
190
202
  }
@@ -349,3 +349,106 @@
349
349
  transform: translateY(100%);
350
350
  }
351
351
  }
352
+
353
+ // Glass Variant Styles
354
+ .c-edge-panel--glass {
355
+ position: absolute;
356
+ z-index: unset;
357
+
358
+ .c-edge-panel__container {
359
+ background: transparent;
360
+ box-shadow: none;
361
+ overflow: hidden;
362
+ border: none;
363
+ padding: 0;
364
+ z-index: unset;
365
+ will-change: initial;
366
+ transform: none !important;
367
+ border-radius: inherit;
368
+ opacity: 0;
369
+ transition: opacity 0.3s ease;
370
+ }
371
+
372
+ .c-edge-panel__glass-content {
373
+ display: flex;
374
+ flex-direction: column;
375
+ overflow: hidden;
376
+ width: 100%;
377
+ height: 100vh;
378
+ padding: 0;
379
+ border-radius: inherit;
380
+ transition: opacity 0.3s ease;
381
+ }
382
+
383
+ .c-edge-panel__header {
384
+ background: transparent;
385
+ border-bottom: 1px solid rgba(255, 255, 255, 0.15);
386
+ flex-shrink: 0;
387
+ padding: var(--#{$prefix}edge-panel-padding-y) var(--#{$prefix}edge-panel-padding-x);
388
+ }
389
+
390
+ .c-edge-panel__body {
391
+ background: transparent;
392
+ flex: 1;
393
+ overflow-y: auto;
394
+ padding: var(--#{$prefix}edge-panel-padding-y) var(--#{$prefix}edge-panel-padding-x);
395
+ }
396
+
397
+ .c-edge-panel__close {
398
+ background: rgba(255, 255, 255, 0.05);
399
+
400
+ &:hover {
401
+ background: rgba(255, 255, 255, 0.15);
402
+ }
403
+
404
+ &:focus-visible {
405
+ outline-color: rgba(255, 255, 255, 0.5);
406
+ }
407
+ }
408
+
409
+ .c-edge-panel__backdrop {
410
+ animation: fadeIn 0.3s ease forwards;
411
+ z-index: 0;
412
+
413
+ &.is-animating-out {
414
+ animation: fadeOut 0.3s ease forwards;
415
+ }
416
+ }
417
+
418
+ // Remove borders for glass variant on all positions
419
+ &.c-edge-panel--start .c-edge-panel__glass-wrapper {
420
+ animation: slideInStart 0.3s ease forwards;
421
+
422
+ &.is-animating-out {
423
+ animation: slideOutStart 0.3s ease forwards;
424
+ }
425
+ }
426
+
427
+ &.c-edge-panel--end .c-edge-panel__glass-wrapper {
428
+ animation: slideInEnd 0.3s ease forwards;
429
+
430
+ &.is-animating-out {
431
+ animation: slideOutEnd 0.3s ease forwards;
432
+ }
433
+ }
434
+
435
+ &.c-edge-panel--top .c-edge-panel__glass-wrapper {
436
+ animation: slideInTop 0.3s ease forwards;
437
+ }
438
+
439
+ &.c-edge-panel--bottom .c-edge-panel__glass-wrapper {
440
+ animation: slideInBottom 0.3s ease forwards;
441
+ }
442
+
443
+ &.c-edge-panel--bottom .c-edge-panel__container,
444
+ &.c-edge-panel--top .c-edge-panel__container {
445
+ width: 100vw;
446
+ height: auto;
447
+ }
448
+
449
+ &.c-edge-panel--bottom .c-edge-panel__glass-content,
450
+ &.c-edge-panel--top .c-edge-panel__glass-content {
451
+ width: 100vw;
452
+ height: auto;
453
+ }
454
+ }
@@ -6,6 +6,7 @@
6
6
  @use '../01-settings/settings.maps' as maps;
7
7
  @use '../02-tools/tools.animations' as *;
8
8
  @use '../02-tools/tools.background' as *;
9
+ @use '../02-tools/tools.to-rgb' as *;
9
10
 
10
11
  .c-footer {
11
12
  $root: &;
@@ -24,6 +25,12 @@
24
25
  --#{$prefix}footer-newsletter-padding: #{rem($footer-newsletter-padding)};
25
26
  --#{$prefix}footer-bottom-padding-top: #{rem($footer-bottom-padding-top)};
26
27
  --#{$prefix}footer-bottom-margin-top: #{rem($footer-bottom-margin-top)};
28
+ --#{$prefix}footer-brand-logo-margin-bottom: #{rem($footer-brand-logo-margin-bottom)};
29
+ --#{$prefix}footer-brand-logo-hover-opacity: #{$footer-brand-logo-hover-opacity};
30
+ --#{$prefix}footer-section-header-gap: #{rem($footer-section-header-gap)};
31
+ --#{$prefix}footer-section-toggle-padding: #{$footer-section-toggle-padding};
32
+ --#{$prefix}footer-bg-rgb: #{to-rgb($footer-bg)};
33
+ --#{$prefix}disabled-opacity: 0.6;
27
34
 
28
35
  // Base Styles
29
36
  @include dynamic-background(var(--#{$prefix}footer-bg));
@@ -32,6 +39,21 @@
32
39
  padding: var(--#{$prefix}footer-padding-y) 0;
33
40
  position: relative;
34
41
 
42
+ &--glass {
43
+ padding: 0;
44
+ margin: 0;
45
+ border-radius: 0;
46
+ box-shadow: none;
47
+ background: transparent;
48
+
49
+ #{$root}__glass {
50
+ @include dynamic-background(rgba(var(--#{$prefix}footer-bg-rgb), 0.5, true));
51
+ color: var(--#{$prefix}footer-color);
52
+ border-top: var(--#{$prefix}footer-border-width) solid var(--#{$prefix}footer-border-color);
53
+ padding: var(--#{$prefix}footer-padding-y) 0;
54
+ }
55
+ }
56
+
35
57
  &__container {
36
58
  display: flex;
37
59
  flex-direction: column;
@@ -42,28 +64,49 @@
42
64
  }
43
65
 
44
66
  &__sections {
45
- display: grid;
46
- gap: var(--#{$prefix}footer-section-margin-bottom);
47
67
  margin-bottom: var(--#{$prefix}footer-bottom-margin-top);
48
- grid-template-columns: 1fr;
68
+ width: 100%;
69
+ max-width: var(--#{$prefix}footer-container-max-width);
70
+ margin-left: auto;
71
+ margin-right: auto;
49
72
 
50
- @include media.media-up('md') {
51
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
52
- gap: clamp(2rem, 4vw, 3rem);
73
+ &--columns {
74
+ // Default grid behavior
75
+ }
76
+
77
+ &--centered {
78
+ justify-content: center;
79
+ align-items: center;
80
+ }
81
+
82
+ &--stacked {
83
+ display: flex;
84
+ flex-direction: column;
85
+ align-items: center;
86
+ text-align: center;
87
+ gap: clamp(1.5rem, 4vw, 2.5rem);
88
+ max-width: 600px;
89
+ margin-left: auto;
90
+ margin-right: auto;
53
91
  }
54
92
  }
55
93
 
56
94
  // Brand Section
57
95
  &__brand {
96
+ grid-area: brand;
58
97
  margin-bottom: var(--#{$prefix}footer-brand-margin-bottom);
59
98
 
99
+ @include media.media-up('md') {
100
+ margin-bottom: 0;
101
+ }
102
+
60
103
  &-logo {
61
104
  display: inline-block;
62
- margin-bottom: 1rem;
105
+ margin-bottom: var(--#{$prefix}footer-brand-logo-margin-bottom);
63
106
  transition: opacity 0.2s ease;
64
107
 
65
108
  &:hover {
66
- opacity: 0.8;
109
+ opacity: var(--#{$prefix}footer-brand-logo-hover-opacity);
67
110
  }
68
111
 
69
112
  img {
@@ -95,7 +138,12 @@
95
138
 
96
139
  // Section
97
140
  &__section {
98
- margin-bottom: var(--#{$prefix}footer-section-margin-bottom);
141
+ margin-bottom: 0; // Reset margin as grid gap handles spacing
142
+
143
+ // Only add margin on mobile when not using grid areas
144
+ @include media.media-down('sm') {
145
+ margin-bottom: var(--#{$prefix}footer-section-margin-bottom);
146
+ }
99
147
 
100
148
  &-header {
101
149
  margin-bottom: #{$footer-section-title-margin-bottom};
@@ -103,7 +151,7 @@
103
151
  &-content {
104
152
  display: flex;
105
153
  align-items: center;
106
- gap: 0.5rem;
154
+ gap: var(--#{$prefix}footer-section-header-gap);
107
155
  }
108
156
  }
109
157
 
@@ -112,7 +160,7 @@
112
160
  align-items: center;
113
161
  justify-content: space-between;
114
162
  width: 100%;
115
- padding: 0.75rem 0;
163
+ padding: var(--#{$prefix}footer-section-toggle-padding);
116
164
  background: none;
117
165
  border: none;
118
166
  cursor: pointer;
@@ -134,6 +182,7 @@
134
182
 
135
183
  &-title {
136
184
  margin: 0;
185
+ width: 100%;
137
186
  font-size: #{$footer-section-title-font-size};
138
187
  font-weight: #{$footer-section-title-font-weight};
139
188
  color: #{$footer-section-title-color};
@@ -150,7 +199,7 @@
150
199
  &-chevron {
151
200
  font-size: 0.875rem;
152
201
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
153
- color: var(--#{$prefix}text-muted);
202
+ color: var(--#{$prefix}gray-6);
154
203
  }
155
204
 
156
205
  &-content {
@@ -246,7 +295,7 @@
246
295
  color: #{$footer-link-disabled-color};
247
296
  cursor: not-allowed;
248
297
  pointer-events: none;
249
- opacity: 0.6;
298
+ opacity: var(--#{$prefix}disabled-opacity);
250
299
  }
251
300
 
252
301
  &-icon {
@@ -296,7 +345,12 @@
296
345
  content: '';
297
346
  position: absolute;
298
347
  inset: 0;
299
- background: linear-gradient(45deg, transparent 30%, rgba(255, 255, 255, 0.1) 50%, transparent 70%);
348
+ background: linear-gradient(
349
+ 45deg,
350
+ transparent 30%,
351
+ rgba(255, 255, 255, 0.1) 50%,
352
+ transparent 70%
353
+ );
300
354
  transform: translateX(-100%);
301
355
  transition: transform 0.6s ease;
302
356
  }
@@ -329,7 +383,7 @@
329
383
  }
330
384
 
331
385
  &--disabled {
332
- opacity: 0.5;
386
+ opacity: var(--#{$prefix}disabled-opacity);
333
387
  cursor: not-allowed;
334
388
  pointer-events: none;
335
389
  }
@@ -352,21 +406,41 @@
352
406
  }
353
407
 
354
408
  // Platform-specific colors with modern gradients
355
- &--facebook:hover { background: linear-gradient(135deg, #1877f2, #42a5f5); }
356
- &--twitter:hover { background: linear-gradient(135deg, #1da1f2, #64b5f6); }
357
- &--instagram:hover { background: linear-gradient(135deg, #e4405f, #f06292, #ba68c8); }
358
- &--linkedin:hover { background: linear-gradient(135deg, #0077b5, #42a5f5); }
359
- &--youtube:hover { background: linear-gradient(135deg, #ff0000, #ff5722); }
360
- &--github:hover { background: linear-gradient(135deg, #333, #666); }
361
- &--discord:hover { background: linear-gradient(135deg, #5865f2, #7289da); }
362
- &--tiktok:hover { background: linear-gradient(135deg, #000, #ff0050); }
363
- &--whatsapp:hover { background: linear-gradient(135deg, #25d366, #66bb6a); }
409
+ &--facebook:hover {
410
+ background: linear-gradient(135deg, #1877f2, #42a5f5);
411
+ }
412
+ &--twitter:hover {
413
+ background: linear-gradient(135deg, #1da1f2, #64b5f6);
414
+ }
415
+ &--instagram:hover {
416
+ background: linear-gradient(135deg, #e4405f, #f06292, #ba68c8);
417
+ }
418
+ &--linkedin:hover {
419
+ background: linear-gradient(135deg, #0077b5, #42a5f5);
420
+ }
421
+ &--youtube:hover {
422
+ background: linear-gradient(135deg, #ff0000, #ff5722);
423
+ }
424
+ &--github:hover {
425
+ background: linear-gradient(135deg, #333, #666);
426
+ }
427
+ &--discord:hover {
428
+ background: linear-gradient(135deg, #5865f2, #7289da);
429
+ }
430
+ &--tiktok:hover {
431
+ background: linear-gradient(135deg, #000, #ff0050);
432
+ }
433
+ &--whatsapp:hover {
434
+ background: linear-gradient(135deg, #25d366, #66bb6a);
435
+ }
364
436
  }
365
437
  }
366
438
 
367
439
  // Newsletter
368
440
  &__newsletter {
369
- @include dynamic-background(linear-gradient(135deg, #{$footer-newsletter-bg}, rgba(#{$footer-newsletter-bg}, 0.8)));
441
+ @include dynamic-background(
442
+ linear-gradient(135deg, #{$footer-newsletter-bg}, rgba(#{$footer-newsletter-bg}, 0.8))
443
+ );
370
444
  padding: #{$footer-newsletter-padding};
371
445
  border-radius: #{$footer-newsletter-border-radius};
372
446
  border: 1px solid var(--#{$prefix}border-subtle);
@@ -397,12 +471,16 @@
397
471
  color: #{$footer-newsletter-description-color};
398
472
  line-height: 1.6;
399
473
  max-width: 45ch;
474
+ width: 100%;
475
+ box-sizing: border-box;
400
476
  }
401
477
 
402
478
  &-form {
403
479
  display: flex;
404
480
  gap: 0.75rem;
405
481
  align-items: flex-end;
482
+ width: 100%;
483
+ max-width: 100%;
406
484
 
407
485
  @include media.media-down('sm') {
408
486
  flex-direction: column;
@@ -431,6 +509,7 @@
431
509
  border-radius: #{$footer-newsletter-input-border-radius};
432
510
  outline: none;
433
511
  transition: all 0.3s ease;
512
+ box-sizing: border-box;
434
513
 
435
514
  &:focus {
436
515
  border-color: #{$footer-newsletter-input-focus-border-color};
@@ -439,7 +518,7 @@
439
518
  }
440
519
 
441
520
  &::placeholder {
442
- color: var(--#{$prefix}text-muted);
521
+ color: var(--#{$prefix}gray-6);
443
522
  transition: opacity 0.3s ease;
444
523
  }
445
524
 
@@ -465,7 +544,12 @@
465
544
  content: '';
466
545
  position: absolute;
467
546
  inset: 0;
468
- background: linear-gradient(45deg, transparent 30%, rgba(255, 255, 255, 0.2) 50%, transparent 70%);
547
+ background: linear-gradient(
548
+ 45deg,
549
+ transparent 30%,
550
+ rgba(255, 255, 255, 0.2) 50%,
551
+ transparent 70%
552
+ );
469
553
  transform: translateX(-100%);
470
554
  transition: transform 0.6s ease;
471
555
  }
@@ -527,24 +611,31 @@
527
611
  align-items: center;
528
612
  gap: 0.5rem;
529
613
  padding: 0.75rem 1.25rem;
530
- @include dynamic-background(var(--#{$prefix}surface-variant));
614
+ @include dynamic-background(var(--#{$prefix}secondary-bg));
531
615
  border: 1px solid var(--#{$prefix}border-subtle);
532
616
  color: #{$footer-back-to-top-color};
533
617
  font-size: #{$footer-back-to-top-font-size};
534
618
  font-weight: #{$footer-back-to-top-font-weight};
535
619
  cursor: pointer;
536
- transition: #{$footer-back-to-top-transition};
620
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
537
621
  border-radius: 2rem;
538
622
  position: relative;
539
623
  overflow: hidden;
624
+ text-decoration: none;
625
+ outline: none;
540
626
 
541
627
  &::before {
542
628
  content: '';
543
629
  position: absolute;
544
630
  inset: 0;
545
- background: linear-gradient(45deg, transparent 30%, rgba(255, 255, 255, 0.1) 50%, transparent 70%);
631
+ background: linear-gradient(
632
+ 45deg,
633
+ transparent 30%,
634
+ rgba(255, 255, 255, 0.1) 50%,
635
+ transparent 70%
636
+ );
546
637
  transform: translateX(-100%);
547
- transition: transform 0.6s ease;
638
+ transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
548
639
  }
549
640
 
550
641
  &:hover,
@@ -552,8 +643,8 @@
552
643
  color: #{$footer-back-to-top-hover-color};
553
644
  @include dynamic-background(var(--#{$prefix}primary));
554
645
  border-color: var(--#{$prefix}primary);
555
- transform: translateY(-2px);
556
- box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
646
+ transform: translateY(-3px);
647
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
557
648
 
558
649
  &::before {
559
650
  transform: translateX(100%);
@@ -564,6 +655,11 @@
564
655
  }
565
656
  }
566
657
 
658
+ &:active {
659
+ transform: translateY(-1px);
660
+ box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15);
661
+ }
662
+
567
663
  &:focus-visible {
568
664
  outline: 2px solid var(--#{$prefix}primary);
569
665
  outline-offset: 2px;
@@ -572,7 +668,7 @@
572
668
  &-icon {
573
669
  font-size: 1.25em;
574
670
  font-weight: bold;
575
- transition: transform 0.3s ease;
671
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
576
672
  }
577
673
 
578
674
  &-text {
@@ -593,28 +689,12 @@
593
689
 
594
690
  // Layout Variants
595
691
  &--columns {
596
- #{$root}__sections {
597
- @include media.media-up('md') {
598
- display: grid;
599
- grid-template-columns: minmax(300px, 1fr) 2fr minmax(250px, 1fr);
600
- gap: clamp(2rem, 5vw, 4rem);
601
- align-items: start;
602
- }
603
-
604
- @include media.media-up('lg') {
605
- grid-template-columns: minmax(350px, 1fr) 3fr minmax(300px, 1fr);
606
- }
607
- }
692
+ // Removed CSS grid styles to use layout components instead
608
693
  }
609
694
 
610
695
  &--centered {
611
696
  text-align: center;
612
697
 
613
- #{$root}__sections {
614
- justify-content: center;
615
- align-items: center;
616
- }
617
-
618
698
  #{$root}__social {
619
699
  justify-content: center;
620
700
  }
@@ -627,6 +707,7 @@
627
707
 
628
708
  &--minimal {
629
709
  --#{$prefix}footer-padding-y: #{rem($footer-padding-sm)};
710
+ --#{$prefix}footer-social-gap: #{rem(0.75)};
630
711
 
631
712
  #{$root}__sections {
632
713
  margin-bottom: 1rem;
@@ -634,7 +715,7 @@
634
715
  }
635
716
 
636
717
  #{$root}__section {
637
- margin-bottom: 1rem;
718
+ margin-bottom: 0;
638
719
  }
639
720
 
640
721
  #{$root}__newsletter {
@@ -655,17 +736,39 @@
655
736
  }
656
737
  }
657
738
 
739
+ &--flexible {
740
+ #{$root}__section-col {
741
+ flex: 1 1 auto;
742
+ min-width: 250px;
743
+ }
744
+ }
745
+
746
+ &--sidebar {
747
+ #{$root}__sections {
748
+ &--columns {
749
+ align-items: flex-start;
750
+ }
751
+ }
752
+ }
753
+
754
+ &--wide {
755
+ #{$root}__sections {
756
+ max-width: 100%;
757
+ padding: 0 1rem;
758
+ }
759
+ }
760
+
658
761
  // Size Variants
659
762
  &--sm {
660
763
  --#{$prefix}footer-padding-y: #{rem($footer-padding-sm)};
661
764
  --#{$prefix}footer-section-margin-bottom: #{rem(1.5rem)};
662
- --#{$prefix}footer-brand-margin-bottom: #{rem(1rem)};
663
765
  --#{$prefix}footer-social-gap: #{rem(0.75rem)};
664
766
  }
665
767
 
666
768
  &--md {
667
769
  --#{$prefix}footer-padding-y: #{rem($footer-padding-md)};
668
770
  --#{$prefix}footer-section-margin-bottom: #{rem(2rem)};
771
+ --#{$prefix}footer-social-gap: #{rem(1rem)};
669
772
  }
670
773
 
671
774
  &--lg {
@@ -684,7 +787,7 @@
684
787
  &--#{$color} {
685
788
  --#{$prefix}footer-bg: var(--#{$prefix}#{$color}-bg-subtle);
686
789
  --#{$prefix}footer-border-color: var(--#{$prefix}#{$color}-border-subtle);
687
- --#{$prefix}footer-color: var(--#{$prefix}#{$color}-text);
790
+ --#{$prefix}footer-color: var(--#{$prefix}#{$color}-text-emphasis);
688
791
 
689
792
  #{$root}__brand-name h3,
690
793
  #{$root}__section-title {
@@ -693,11 +796,11 @@
693
796
 
694
797
  #{$root}__brand-description,
695
798
  #{$root}__copyright {
696
- color: var(--#{$prefix}#{$color}-text-muted);
799
+ color: var(--#{$prefix}gray-6);
697
800
  }
698
801
 
699
802
  #{$root}__link {
700
- color: var(--#{$prefix}#{$color}-text);
803
+ color: var(--#{$prefix}#{$color}-text-emphasis);
701
804
 
702
805
  &:hover,
703
806
  &:focus {
@@ -710,8 +813,12 @@
710
813
  }
711
814
 
712
815
  #{$root}__newsletter {
713
- background: linear-gradient(135deg, var(--#{$prefix}#{$color}-bg), rgba(var(--#{$prefix}#{$color}-bg-rgb), 0.8));
714
- border-color: var(--#{$prefix}#{$color}-border);
816
+ background: linear-gradient(
817
+ 135deg,
818
+ var(--#{$prefix}#{$color}-bg-subtle),
819
+ rgba(var(--#{$prefix}#{$color}-bg-subtle), 0.8)
820
+ );
821
+ border-color: var(--#{$prefix}#{$color}-border-subtle);
715
822
 
716
823
  &::before {
717
824
  background: linear-gradient(90deg, transparent, var(--#{$prefix}#{$color}), transparent);
@@ -730,32 +837,6 @@
730
837
  background-color: rgba(var(--#{$prefix}footer-bg-rgb), 0.95);
731
838
  }
732
839
 
733
- // Dark Mode Support
734
- @media (prefers-color-scheme: dark) {
735
- --#{$prefix}footer-bg: #{$footer-bg-dark};
736
- --#{$prefix}footer-color: #{$footer-color-dark};
737
- --#{$prefix}footer-border-color: #{$footer-border-color-dark};
738
- }
739
-
740
- .dark-mode & {
741
- --#{$prefix}footer-bg: #{$footer-bg-dark};
742
- --#{$prefix}footer-color: #{$footer-color-dark};
743
- --#{$prefix}footer-border-color: #{$footer-border-color-dark};
744
-
745
- #{$root}__newsletter {
746
- background: linear-gradient(135deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.02));
747
- border-color: rgba(255, 255, 255, 0.1);
748
- }
749
-
750
- #{$root}__social-link {
751
- background-color: rgba(255, 255, 255, 0.1);
752
-
753
- &:hover {
754
- background-color: rgba(255, 255, 255, 0.2);
755
- }
756
- }
757
- }
758
-
759
840
  // Accessibility
760
841
  @media (prefers-reduced-motion: reduce) {
761
842
  *,
@@ -822,4 +903,4 @@
822
903
  image-rendering: crisp-edges;
823
904
  }
824
905
  }
825
- }
906
+ }
@@ -109,21 +109,20 @@
109
109
  // Glass morphism effect styles
110
110
  &--glass {
111
111
  @include dynamic-background(var(--#{$prefix}input-bg), $background-transparency-enable: true);
112
- box-shadow:
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;
115
+ border-color: color-mix(in srgb, var(--#{$prefix}input-border-color) 50%, transparent);
115
116
 
116
117
  &:focus,
117
118
  &: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);
119
+ @include dynamic-background(
120
+ var(--#{$prefix}input-bg),
121
+ $background-transparency-enable: true,
122
+ $transparency: 0.9
123
+ );
123
124
  }
124
125
 
125
-
126
-
127
126
  &#{$root}--textarea {
128
127
  resize: vertical;
129
128
  }
@@ -135,4 +134,4 @@
135
134
  opacity: 0.6;
136
135
  }
137
136
  }
138
- }
137
+ }