@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
@@ -17,6 +17,7 @@
17
17
  --#{config.$prefix}list-item-dash-height: #{rem.rem(list.$list-item-dash-height)};
18
18
 
19
19
  padding-left: var(--#{config.$prefix}list-padding-left);
20
+ list-style: none;
20
21
 
21
22
  &__item {
22
23
  color: var(--#{config.$prefix}list-color);
@@ -330,4 +330,180 @@
330
330
  cursor: not-allowed;
331
331
  }
332
332
  }
333
+
334
+ // Glass morphism variant
335
+ &--glass {
336
+ background: transparent;
337
+ border: none;
338
+ padding: 0;
339
+
340
+ #{$root}__glass-content {
341
+ padding: var(--#{config.$prefix}messages-padding-y) var(--#{config.$prefix}messages-padding-x);
342
+ border-radius: var(--#{config.$prefix}messages-border-radius);
343
+ }
344
+
345
+ // Enhanced body styling for glass variant
346
+ #{$root}__body {
347
+ border-radius: border.$border-radius-md;
348
+ padding: rem.rem(8px);
349
+ @include dynamic-background(
350
+ var(--#{config.$prefix}body-bg),
351
+ $background-transparency-enable: true,
352
+ $transparency: 0.15
353
+ );
354
+ }
355
+
356
+ // Text messages styling
357
+ #{$root}__text {
358
+ @include dynamic-background(
359
+ var(--#{config.$prefix}body-bg),
360
+ $background-transparency-enable: true
361
+ );
362
+ backdrop-filter: blur(8px);
363
+ border: 1px solid rgba(255, 255, 255, 0.2);
364
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
365
+ }
366
+
367
+ // Self message text styling
368
+ #{$root}__content--self {
369
+ #{$root}__text {
370
+ @include dynamic-background(
371
+ var(--#{config.$prefix}brand-bg-subtle),
372
+ $background-transparency-enable: true
373
+ );
374
+ border: 1px solid rgba(var(--#{config.$prefix}primary-rgb), 0.3);
375
+ backdrop-filter: blur(8px);
376
+ }
377
+
378
+ #{$root}__file {
379
+ @include dynamic-background(
380
+ var(--#{config.$prefix}brand-bg-subtle),
381
+ $background-transparency-enable: true
382
+ );
383
+ border: 1px solid rgba(var(--#{config.$prefix}primary-rgb), 0.3);
384
+ backdrop-filter: blur(8px);
385
+ }
386
+ }
387
+
388
+ // File attachment styling
389
+ #{$root}__file {
390
+ @include dynamic-background(
391
+ var(--#{config.$prefix}brand-bg-subtle),
392
+ $background-transparency-enable: true
393
+ );
394
+ border: 1px solid rgba(var(--#{config.$prefix}primary-rgb), 0.3);
395
+ backdrop-filter: blur(8px);
396
+ border: 1px solid rgba(255, 255, 255, 0.2);
397
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
398
+ }
399
+
400
+ #{$root}__file-icon {
401
+ @include dynamic-background(
402
+ var(--#{config.$prefix}brand-bg-subtle),
403
+ $background-transparency-enable: true
404
+ );
405
+ backdrop-filter: blur(8px);
406
+ border: 1px solid rgba(255, 255, 255, 0.15);
407
+ }
408
+
409
+ // Image styling
410
+ #{$root}__image {
411
+ border: 1px solid rgba(255, 255, 255, 0.3);
412
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
413
+ }
414
+
415
+ // Avatar styling
416
+ #{$root}__avatar {
417
+ border: 2px solid rgba(255, 255, 255, 0.4);
418
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
419
+ }
420
+
421
+ // Name label styling
422
+ #{$root}__name {
423
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
424
+ font-weight: typo.$font-weight-semibold;
425
+ }
426
+
427
+ // Time label styling
428
+ #{$root}__time {
429
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
430
+ }
431
+
432
+ // Enhanced form styling
433
+ #{$root}__form {
434
+ padding-top: rem.rem(12px);
435
+ border-top: 1px solid rgba(255, 255, 255, 0.2);
436
+ margin-top: rem.rem(16px);
437
+ }
438
+
439
+ // Input group styling
440
+ #{$root}__input {
441
+ background: rgba(255, 255, 255, 0.3);
442
+ backdrop-filter: blur(8px);
443
+ border: 1px solid rgba(255, 255, 255, 0.3);
444
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
445
+ color: var(--#{config.$prefix}primary-text-emphasis);
446
+
447
+ &:focus {
448
+ background: rgba(255, 255, 255, 0.45);
449
+ border-color: var(--#{config.$prefix}primary);
450
+ box-shadow: 0 0 0 3px rgba(var(--#{config.$prefix}primary-rgb), 0.15);
451
+ }
452
+
453
+ &::placeholder {
454
+ opacity: 0.8;
455
+ color: var(--#{config.$prefix}primary-text-emphasis);
456
+ }
457
+ }
458
+
459
+ // Options buttons styling
460
+ #{$root}__option {
461
+ padding: rem.rem(6px);
462
+ border-radius: border.$border-radius-sm;
463
+ transition: background-color 0.2s ease;
464
+
465
+ &:hover:not(:disabled) {
466
+ background: rgba(var(--#{config.$prefix}secondary-bg-rgb), 0.4);
467
+ }
468
+
469
+ &:focus-visible {
470
+ outline: 2px solid var(--#{config.$prefix}primary);
471
+ outline-offset: 2px;
472
+ }
473
+ }
474
+
475
+ #{$root}__option-icon {
476
+ opacity: 0.8;
477
+ transition: opacity 0.2s ease;
478
+
479
+ #{$root}__option:hover & {
480
+ opacity: 1;
481
+ }
482
+ }
483
+
484
+ // Submit button styling
485
+ #{$root}__submit {
486
+ background: rgba(var(--#{config.$prefix}primary-rgb), 0.9);
487
+ backdrop-filter: blur(8px);
488
+ border: 1px solid rgba(var(--#{config.$prefix}primary-rgb), 0.4);
489
+ box-shadow: 0 2px 8px rgba(var(--#{config.$prefix}primary-rgb), 0.3);
490
+ transition: all 0.2s ease;
491
+
492
+ &:hover:not(:disabled) {
493
+ background: rgba(var(--#{config.$prefix}primary-rgb), 1);
494
+ box-shadow: 0 4px 12px rgba(var(--#{config.$prefix}primary-rgb), 0.4);
495
+ transform: translateY(-1px);
496
+ }
497
+
498
+ &:active:not(:disabled) {
499
+ transform: translateY(0);
500
+ box-shadow: 0 1px 4px rgba(var(--#{config.$prefix}primary-rgb), 0.3);
501
+ }
502
+
503
+ &:disabled {
504
+ opacity: 0.5;
505
+ background: rgba(var(--#{config.$prefix}primary-rgb), 0.5);
506
+ }
507
+ }
508
+ }
333
509
  }
@@ -40,11 +40,14 @@
40
40
  --#{config.$prefix}modal-xl: #{rem.rem(modal.$modal-xl)};
41
41
  --#{config.$prefix}modal-width: var(--#{config.$prefix}modal-md);
42
42
 
43
- position: fixed;
43
+ position: absolute;
44
44
  inset: 0;
45
45
  @include square(100%);
46
46
  display: none;
47
- z-index: map.get($z-layers, modal);
47
+
48
+ &:not(.c-modal--glass) {
49
+ z-index: map.get($z-layers, modal);
50
+ }
48
51
 
49
52
  &__backdrop {
50
53
  position: absolute;
@@ -66,10 +69,8 @@
66
69
  right: auto;
67
70
  }
68
71
  opacity: 0;
69
- z-index: 2;
70
72
  pointer-events: none;
71
73
  transition: 0.3s ease;
72
- will-change: transform;
73
74
  }
74
75
 
75
76
  &__content {
@@ -143,6 +144,17 @@
143
144
  --#{config.$prefix}modal-width: var(--#{config.$prefix}modal-xl);
144
145
  }
145
146
 
147
+ &--glass {
148
+ #{$root} {
149
+ & &__content {
150
+ @include dynamic-background(
151
+ var(--#{config.$prefix}modal-content-bg),
152
+ $background-transparency-enable: true
153
+ );
154
+ }
155
+ }
156
+ }
157
+
146
158
  &.is-open {
147
159
  #{$root} {
148
160
  &__backdrop {
@@ -231,9 +231,13 @@
231
231
  }
232
232
  }
233
233
 
234
+ &--fixed:not(.c-navbar--glass),
235
+ &--fixed-bottom:not(.c-navbar--glass) {
236
+ position: fixed;
237
+ }
238
+
234
239
  &--fixed,
235
240
  &--fixed-bottom {
236
- position: fixed;
237
241
  left: 0;
238
242
  right: 0;
239
243
  width: 100%;
@@ -244,12 +248,19 @@
244
248
  top: 0;
245
249
  }
246
250
 
251
+ &--glass {
252
+ position: relative;
253
+ background-color: transparent;
254
+ border-bottom: none;
255
+ }
256
+
247
257
  &--fixed-bottom {
248
258
  bottom: 0;
249
259
 
250
260
  .c-nav__dropdown-menu {
251
261
  top: auto;
252
262
  bottom: 100%;
263
+ z-index: 999;
253
264
  }
254
265
 
255
266
  .c-nav--end .c-nav__dropdown-menu {
@@ -205,6 +205,11 @@
205
205
  flex: 1;
206
206
  }
207
207
 
208
+ &--glass {
209
+ background-color: transparent;
210
+ border-bottom: none;
211
+ }
212
+
208
213
  // 6. State Classes
209
214
  &.is-open {
210
215
  #{$root}__toggler-icon {
@@ -17,12 +17,14 @@
17
17
  display: inline-block;
18
18
  width: var(--#{$prefix}skeleton-width);
19
19
  min-height: var(--#{$prefix}skeleton-height);
20
- @include dynamic-background(linear-gradient(
21
- 90deg,
22
- var(--#{$prefix}skeleton-gradient-from-color) 25%,
23
- var(--#{$prefix}skeleton-gradient-to-color) 37%,
24
- var(--#{$prefix}skeleton-gradient-from-color) 63%
25
- ));
20
+ @include dynamic-background(
21
+ linear-gradient(
22
+ 90deg,
23
+ var(--#{$prefix}skeleton-gradient-from-color) 25%,
24
+ var(--#{$prefix}skeleton-gradient-to-color) 37%,
25
+ var(--#{$prefix}skeleton-gradient-from-color) 63%
26
+ )
27
+ );
26
28
  background-size: 400% 100%;
27
29
  border-radius: var(--#{$prefix}skeleton-border-radius);
28
30
  animation-name: #{$prefix}-skeleton-loading;
@@ -58,6 +58,9 @@
58
58
  --#{$prefix}upload-disabled-opacity: #{$upload-disabled-opacity};
59
59
  --#{$prefix}upload-loader-control-icon-size: #{$upload-loader-control-icon-size};
60
60
  --#{$prefix}upload-loader-contorl-color: #{$upload-loader-contorl-color};
61
+ --#{$prefix}upload-helper-text-opacity: #{$upload-helper-text-opacity};
62
+ --#{$prefix}upload-text-opacity: #{$upload-text-opacity};
63
+ --#{$prefix}upload-text-margin-bottom: #{$upload-text-margin-bottom};
61
64
 
62
65
  width: 100%;
63
66
  max-width: var(--#{$prefix}upload-width);
@@ -78,14 +81,31 @@
78
81
  padding: var(--#{$prefix}upload-inner-padding-y) var(--#{$prefix}upload-inner-padding-x);
79
82
  border-radius: var(--#{$prefix}upload-border-radius);
80
83
  border: var(--#{$prefix}upload-border-width) dashed var(--#{$prefix}upload-border-color);
84
+ cursor: pointer;
85
+ transition: all 0.3s ease-in-out;
86
+
87
+ &:hover {
88
+ border-color: var(--#{$prefix}primary-6);
89
+ background-color: var(--#{$prefix}primary-bg-subtle);
90
+ transform: translateY(-2px);
91
+ box-shadow: var(--#{$prefix}box-shadow);
92
+ }
81
93
  }
82
94
 
83
95
  &__icon {
84
96
  font-size: var(--#{$prefix}upload-icon-size);
85
- padding: var(--#{$prefix}upload-icon-padding);
86
- @include dynamic-background(var(--#{$prefix}upload-icon-bg));
87
-
88
- @include border-radius($border-radius-pill);
97
+ padding: rem(12);
98
+ color: var(--#{$prefix}primary-6);
99
+ background-color: var(--#{$prefix}primary-bg-subtle);
100
+ border-radius: var(--#{$prefix}border-radius-pill);
101
+ margin-bottom: rem(12);
102
+ transition: all 0.3s ease-in-out;
103
+
104
+ &:hover {
105
+ color: var(--#{$prefix}primary-7);
106
+ background-color: var(--#{$prefix}primary-border-subtle);
107
+ transform: scale(1.05);
108
+ }
89
109
  }
90
110
 
91
111
  &__title {
@@ -93,6 +113,9 @@
93
113
  font-size: var(--#{$prefix}upload-title-font-size);
94
114
  font-weight: var(--#{$prefix}upload-title-font-weight);
95
115
  margin-top: var(--#{$prefix}upload-title-margin-top);
116
+ margin-bottom: var(--#{$prefix}upload-title-margin-bottom);
117
+ text-align: center;
118
+ line-height: 1.4;
96
119
  }
97
120
 
98
121
  &__text {
@@ -100,6 +123,10 @@
100
123
  font-size: var(--#{$prefix}upload-text-font-size);
101
124
  font-weight: var(--#{$prefix}upload-text-font-weight);
102
125
  margin-top: var(--#{$prefix}upload-text-margin-top);
126
+ margin-bottom: var(--#{$prefix}upload-text-margin-bottom);
127
+ text-align: center;
128
+ line-height: 1.5;
129
+ opacity: var(--#{$prefix}upload-text-opacity);
103
130
  }
104
131
 
105
132
  &__btn {
@@ -111,6 +138,9 @@
111
138
  font-size: var(--#{$prefix}upload-helper-text-font-size);
112
139
  font-weight: var(--#{$prefix}upload-helper-text-font-weight);
113
140
  margin-top: var(--#{$prefix}upload-helper-text-margin-top);
141
+ text-align: center;
142
+ opacity: var(--#{$prefix}upload-helper-text-opacity);
143
+ line-height: 1.4;
114
144
  }
115
145
 
116
146
  &__row {
@@ -134,6 +164,7 @@
134
164
  --upload-loader-percentage: 0;
135
165
 
136
166
  display: flex;
167
+ align-items: center;
137
168
  justify-content: space-between;
138
169
  position: relative;
139
170
  width: 100%;
@@ -143,6 +174,8 @@
143
174
  var(--#{$prefix}upload-loader-border-color);
144
175
  border-radius: var(--#{$prefix}upload-loader-border-radius);
145
176
  margin-top: var(--#{$prefix}upload-loader-margin-top);
177
+ background-color: var(--#{$prefix}body-bg);
178
+ box-shadow: var(--#{$prefix}box-shadow-sm);
146
179
  overflow: hidden;
147
180
  }
148
181
 
@@ -171,6 +204,22 @@
171
204
  &__loader-close {
172
205
  color: var(--#{$prefix}upload-loader-contorl-color);
173
206
  font-size: var(--#{$prefix}upload-loader-control-icon-size);
207
+ background: none;
208
+ border: none;
209
+ cursor: pointer;
210
+ padding: rem(4);
211
+ border-radius: var(--#{$prefix}border-radius-sm);
212
+ transition: all 0.2s ease-in-out;
213
+
214
+ &:hover {
215
+ background-color: var(--#{$prefix}danger-bg-subtle);
216
+ color: var(--#{$prefix}danger-text-emphasis);
217
+ }
218
+
219
+ &:focus {
220
+ outline: 2px solid var(--#{$prefix}focus-border-color);
221
+ outline-offset: 2px;
222
+ }
174
223
  }
175
224
 
176
225
  &__loader-bar {
@@ -247,5 +296,171 @@
247
296
  #{$root}__btn {
248
297
  pointer-events: none;
249
298
  }
299
+
300
+ #{$root}__inner {
301
+ cursor: not-allowed;
302
+
303
+ &:hover {
304
+ transform: none;
305
+ box-shadow: none;
306
+ border-color: var(--#{$prefix}upload-border-color);
307
+ background-color: transparent;
308
+ }
309
+ }
310
+ }
311
+
312
+ // Dragging state
313
+ &--dragging {
314
+ #{$root}__inner {
315
+ border-color: var(--#{$prefix}primary-6);
316
+ background-color: var(--#{$prefix}primary-bg-subtle);
317
+ transform: scale(1.02);
318
+ box-shadow: var(--#{$prefix}box-shadow-lg);
319
+ }
320
+
321
+ #{$root}__icon {
322
+ color: var(--#{$prefix}primary-7);
323
+ background-color: var(--#{$prefix}primary-border-subtle);
324
+ transform: scale(1.1);
325
+ }
326
+
327
+ #{$root}__title {
328
+ color: var(--#{$prefix}primary-6);
329
+ }
330
+ }
331
+
332
+ // Loading state
333
+ &--loading {
334
+ #{$root}__loader-bar circle:nth-child(2) {
335
+ stroke: var(--#{$prefix}primary-6);
336
+ }
337
+ }
338
+
339
+ // Success state
340
+ &--success {
341
+ #{$root}__loader-bar circle:nth-child(2) {
342
+ stroke: var(--#{$prefix}success-6);
343
+ }
344
+ }
345
+
346
+ // Error state
347
+ &--error {
348
+ #{$root}__loader-bar circle:nth-child(2) {
349
+ stroke: var(--#{$prefix}error-6);
350
+ }
351
+ }
352
+
353
+ // Input element (visually hidden)
354
+ &__input {
355
+ position: absolute;
356
+ width: 1px;
357
+ height: 1px;
358
+ padding: 0;
359
+ margin: -1px;
360
+ overflow: hidden;
361
+ clip: rect(0, 0, 0, 0);
362
+ white-space: nowrap;
363
+ border: 0;
364
+ }
365
+ }
366
+
367
+ // Responsive Design
368
+ // =============================================================================
369
+ @media (max-width: 768px) {
370
+ .c-upload {
371
+ max-width: 100%;
372
+
373
+ &__inner {
374
+ padding: rem(16) rem(12);
375
+ }
376
+
377
+ &__icon {
378
+ font-size: rem(28);
379
+ padding: rem(8);
380
+ margin-bottom: rem(8);
381
+ }
382
+
383
+ &__title {
384
+ font-size: var(--#{$prefix}font-size-md);
385
+ }
386
+
387
+ &__text {
388
+ font-size: var(--#{$prefix}font-size-xs);
389
+ }
390
+
391
+ &__loader {
392
+ padding: rem(8) rem(12);
393
+ flex-direction: column;
394
+ align-items: flex-start;
395
+ gap: rem(8);
396
+ }
397
+
398
+ &__loader-control {
399
+ align-self: flex-end;
400
+ }
401
+ }
402
+ }
403
+
404
+ // Accessibility Enhancements
405
+ // =============================================================================
406
+ @media (prefers-reduced-motion: reduce) {
407
+ .c-upload {
408
+ $root: &;
409
+
410
+ &__inner {
411
+ transition: none;
412
+
413
+ &:hover {
414
+ transform: none;
415
+ }
416
+ }
417
+
418
+ &__icon {
419
+ transition: none;
420
+
421
+ &:hover {
422
+ transform: none;
423
+ }
424
+ }
425
+
426
+ &--dragging {
427
+ #{$root}__inner {
428
+ transform: none;
429
+ }
430
+
431
+ #{$root}__icon {
432
+ transform: none;
433
+ }
434
+ }
435
+ }
436
+ }
437
+
438
+ @media (prefers-contrast: high) {
439
+ .c-upload {
440
+ $root: &;
441
+
442
+ &__inner {
443
+ border-width: 3px;
444
+ }
445
+
446
+ &--dragging {
447
+ #{$root}__inner {
448
+ border-width: 4px;
449
+ }
450
+ }
451
+
452
+ &__loader {
453
+ border-width: 2px;
454
+ }
455
+ }
456
+ }
457
+
458
+ // Focus management
459
+ .c-upload {
460
+ &__inner {
461
+ &:focus-visible {
462
+ outline: 2px solid var(--#{$prefix}focus-border-color);
463
+ outline-offset: 2px;
464
+ }
250
465
  }
251
466
  }
@@ -1333,7 +1333,6 @@ $chart-gradients: (
1333
1333
  .c-chart__data-point {
1334
1334
  cursor: pointer;
1335
1335
  transition: all $chart-transition-duration $chart-transition-timing !important;
1336
- transform-origin: center center;
1337
1336
 
1338
1337
  &:hover {
1339
1338
  opacity: 0.8;
@@ -1346,7 +1345,7 @@ $chart-gradients: (
1346
1345
  }
1347
1346
 
1348
1347
  &:active {
1349
- transform: scale(1.05);
1348
+ transform: none;
1350
1349
  }
1351
1350
 
1352
1351
  // Enhanced interaction states
@@ -2355,14 +2354,6 @@ $chart-gradients: (
2355
2354
  font-size: $font-size-xs;
2356
2355
  }
2357
2356
 
2358
- // Simplified hover states on mobile
2359
- .c-chart:hover {
2360
- transform: none;
2361
- }
2362
-
2363
- .c-chart__data-point:hover {
2364
- transform: scale(1.1);
2365
- }
2366
2357
 
2367
2358
  .pie-slice:hover,
2368
2359
  .donut-slice:hover {
@@ -2733,26 +2724,6 @@ $chart-gradients: (
2733
2724
  }
2734
2725
  }
2735
2726
 
2736
- // Performance optimizations
2737
- .c-chart {
2738
- // Enable hardware acceleration
2739
- will-change: transform, opacity;
2740
-
2741
- // Optimize rendering
2742
- &.c-chart--optimized {
2743
- .c-chart__canvas {
2744
- transform: translateZ(0);
2745
- backface-visibility: hidden;
2746
- }
2747
-
2748
- .c-chart__data-point,
2749
- .bar,
2750
- .pie-slice,
2751
- .donut-slice {
2752
- will-change: transform;
2753
- }
2754
- }
2755
- }
2756
2727
 
2757
2728
  // CSS Grid support for complex layouts
2758
2729
  .c-chart--grid {
@@ -4,6 +4,7 @@
4
4
  @forward 'utilities.clearfix';
5
5
  @forward 'utilities.display';
6
6
  @forward 'utilities.flex';
7
+ @forward 'utilities.glass-fixes';
7
8
  @forward 'utilities.link';
8
9
  @forward 'utilities.object-fit';
9
10
  @forward 'utilities.opacity';
@@ -14,6 +14,7 @@
14
14
  transform-style: flat !important;
15
15
  will-change: auto !important;
16
16
  transform: none !important;
17
+ z-index: unset;
17
18
  }
18
19
 
19
20
  // =============================================================================
@@ -40,4 +40,4 @@ $utilities: map.merge($utilities, visibility.$utilities-visibility);
40
40
  $utilities: map.merge($utilities, z-index.$utilities-z-index);
41
41
 
42
42
  // Generate all utility classes
43
- @include util-api.generate-utilities($utilities, breakpoints.$grid-breakpoints);
43
+ @include util-api.generate-utilities($utilities, breakpoints.$grid-breakpoints);