@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
@@ -23,7 +23,7 @@ $tabs-nav-btn-border-color: transparent !default;
23
23
  $tabs-nav-btn-border-active-color: var(--#{config.$prefix}brand-border-subtle) !default;
24
24
  $tabs-nav-btn-border-disabled-color: var(--#{config.$prefix}primary-border-subtle) !default;
25
25
  $tabs-nav-btns-gap: 0px !default;
26
- $tabs-nav-btn-inner-gap:map.get($spacing-sizes, 2) !default; //8px
26
+ $tabs-nav-btn-inner-gap: map.get($spacing-sizes, 2) !default; //8px
27
27
  $tab-nav-btn-icon-size: map.get($spacing-sizes, 5) !default; //20px
28
28
 
29
29
  $tabs-panel-padding-x: math.div(grid.$grid-gutter-width, 2) !default;
@@ -30,13 +30,14 @@ $upload-icon-bg: var(--#{config.$prefix}body-bg) !default;
30
30
  $upload-title-font-size: typography.$font-size-lg !default;
31
31
  $upload-title-font-weight: typography.$headings-font-weight !default;
32
32
  $upload-title-color: var(--#{config.$prefix}body-color) !default;
33
- $upload-title-margin-top: map.get($spacing-sizes, 2) !default; //8px
34
-
33
+ $upload-title-margin-top: map.get($spacing-sizes, 2) !default; //8px
34
+ $upload-title-margin-bottom: map.get($spacing-sizes, 2) !default; //8px
35
+ $upload-text-opacity: 0.8 !default; //0.8 - opacity of the text
35
36
  $upload-text-font-size: typography.$font-size-sm !default;
36
37
  $upload-text-font-weight: typography.$font-weight-normal !default;
37
38
  $upload-text-color: var(--#{config.$prefix}body-color) !default;
38
- $upload-text-margin-top: map.get($spacing-sizes, 4) !default; //4px
39
-
39
+ $upload-text-margin-top: map.get($spacing-sizes, 4) !default; //4px
40
+ $upload-text-margin-bottom: map.get($spacing-sizes, 4) !default; //16px
40
41
  $upload-btn-margin-top: map.get($spacing-sizes, 5) !default; //20px
41
42
  $upload-btn-margin-left: map.get($spacing-sizes, 4) !default; //16px
42
43
 
@@ -46,7 +47,7 @@ $upload-helper-text-font-size: typography.$font-size-sm !default;
46
47
  $upload-helper-text-font-weight: typography.$font-weight-normal !default;
47
48
  $upload-helper-text-color: var(--#{config.$prefix}body-color) !default;
48
49
  $upload-helper-text-margin-top: map.get($spacing-sizes, 2) !default; //8px
49
-
50
+ $upload-helper-text-opacity: 0.7 !default; //0.7 - opacity of the helper text
50
51
  $upload-disabled-opacity: 0.5 !default;
51
52
 
52
53
  $upload-loader-padding-x: map.get($spacing-sizes, 3) !default; //12px
@@ -100,15 +100,14 @@
100
100
  // );
101
101
  // }
102
102
 
103
-
104
- @keyframes backgroundMoving {
103
+ @keyframes backgroundMoving {
105
104
  0% {
106
105
  background-position: 0 0%;
107
106
  }
108
- 250% {
107
+ 250% {
109
108
  background-position: 100% 100%;
110
109
  }
111
- 50% {
110
+ 50% {
112
111
  background-position: 100% 0%;
113
112
  }
114
113
  75% {
@@ -117,4 +116,4 @@
117
116
  100% {
118
117
  background-position: 100% 100%;
119
118
  }
120
- }
119
+ }
@@ -10,19 +10,13 @@
10
10
  @mixin dynamic-background(
11
11
  $color,
12
12
  $transparency: $background-transparency,
13
- $background-transparency-enable: $background-transparency-enable,
14
- $blur: $background-blur,
15
- $use-backdrop-filter: $background-enable-backdrop-filter
13
+ $background-transparency-enable: $background-transparency-enable
16
14
  ) {
17
15
  // Validate inputs
18
16
  @if $transparency < 0 or $transparency > 1 {
19
17
  @error 'Transparency must be between 0 and 1, got #{$transparency}';
20
18
  }
21
19
 
22
- @if $blur < 0 {
23
- @error 'Blur value must be non-negative, got #{$blur}px';
24
- }
25
-
26
20
  // Apply background based on transparency settings
27
21
  @if $background-transparency-enable and $transparency > 0 {
28
22
  @if $background-enable-gradient-overlay {
@@ -59,12 +53,6 @@
59
53
  background-color: $color;
60
54
  }
61
55
 
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
56
  @if $background-enable-with-shadow {
69
57
  box-shadow:
70
58
  var(--atomix-box-shadow-inset),
@@ -1 +0,0 @@
1
-
@@ -14,19 +14,20 @@
14
14
 
15
15
  // Default config for utilities
16
16
  $utility-defaults: (
17
- responsive: true,
18
- rfs: false,
19
- print: false,
20
- dark: false,
21
- class: null,
22
- state: null,
23
- local-vars: (),
24
- rtl: true,
17
+ responsive: true,
18
+ rfs: false,
19
+ print: false,
20
+ dark: false,
21
+ class: null,
22
+ state: null,
23
+ local-vars: (),
24
+ rtl: true,
25
25
  ) !default;
26
26
 
27
27
  // Core function to generate utility classes
28
28
  @mixin generate-utility($utility, $infix: '', $is-rfs: false) {
29
29
  $values: map.get($utility, values);
30
+ $css-var: map.get($utility, css-var);
30
31
 
31
32
  // If the values are a list or string, convert it to a map
32
33
  @if meta.type-of($values) == 'string' or meta.type-of($values) == 'list' {
@@ -36,44 +37,72 @@ $utility-defaults: (
36
37
  @each $key, $value in $values {
37
38
  $properties: map.get($utility, property);
38
39
  $property-class: map.get($utility, class);
39
- $property-class: if($property-class, $property-class, list.nth($properties, 1));
40
40
 
41
- // Handle decimal key case for spacing, only for numbers (integers or floats)
42
- @if meta.type-of($key) == 'number' and $key % 1 != 0 {
43
- $key: round($key); // Round to the nearest integer
41
+ // Handle case where property-class is null
42
+ @if $property-class == null and $properties {
43
+ $property-class: if(
44
+ meta.type-of($properties) == 'list',
45
+ list.nth($properties, 1),
46
+ $properties
47
+ );
44
48
  }
45
49
 
46
- // Multiple properties are possible, like with borders or shadows
47
- $property-class: if(
48
- meta.type-of($property-class) == 'list',
49
- list.nth($property-class, 1),
50
- $property-class
51
- );
52
-
53
50
  // State variants (hover, focus, active, etc.)
51
+ // Create a local copy of infix to avoid affecting other utilities
52
+ $local-infix: $infix;
54
53
  $state: map.get($utility, state);
55
- $infix: if($state, if(meta.type-of($state) == 'string', '#{$state}#{$infix}', $infix), $infix);
54
+ $local-infix: if(
55
+ $state,
56
+ if(meta.type-of($state) == 'string', '#{$state}#{$local-infix}', $local-infix),
57
+ $local-infix
58
+ );
56
59
 
57
- // Don't prefix if value key is null (e.g. with shadow-none utility)
58
- // Escape key to ensure valid CSS selector (e.g. 1.5 -> 1\.5)
60
+ // Escape special characters in key for valid CSS class names
59
61
  $escaped-key: if($key, _escape-key($key), null);
60
62
 
61
- $class-name: if(
62
- $escaped-key,
63
- '#{$property-class}-#{$escaped-key}#{$infix}',
64
- '#{$property-class}#{$infix}'
65
- );
66
-
67
63
  @if map.get($utility, class) == null {
64
+ // Generate class with property name as class
65
+ $class-name: if(
66
+ $key,
67
+ '#{$property-class}-#{$escaped-key}#{$local-infix}',
68
+ '#{$property-class}#{$local-infix}'
69
+ );
70
+
68
71
  .#{$class-name} {
69
- @each $property in $properties {
70
- #{$property}: $value if(map.get($utility, rtl), null, !important);
72
+ @if $css-var {
73
+ // Handle CSS variable generation
74
+ $css-variable-name: str-replace(#{$property-class}, '.', '\\.');
75
+ --atomix-u-#{$css-variable-name}: #{$value};
76
+ } @else if $properties {
77
+ @each $property in $properties {
78
+ #{$property}: $value if(map.get($utility, rtl), null, !important);
79
+ }
80
+ } @else {
81
+ #{$property-class}: $value if(map.get($utility, rtl), null, !important);
71
82
  }
72
83
  }
73
84
  } @else {
74
- .#{map.get($utility, class)}#{$infix}#{if($escaped-key, '-#{$escaped-key}', '')} {
75
- @each $property in $properties {
76
- #{$property}: $value if(map.get($utility, rtl), null, !important);
85
+ // Generate class with custom class name
86
+ $base-class: map.get($utility, class);
87
+ $modifier: if($key, '-#{$escaped-key}', '');
88
+
89
+ .#{$base-class}#{$local-infix}#{$modifier} {
90
+ @if $css-var and $properties {
91
+ // Handle CSS variable generation with properties
92
+ @each $property in $properties {
93
+ $css-variable-name: str-replace(#{$property}, '.', '\\.');
94
+ --atomix-u-#{$css-variable-name}: #{$value};
95
+ }
96
+ } @else if $css-var {
97
+ // Handle CSS variable generation without properties
98
+ $css-variable-name: str-replace(#{$base-class}, '.', '\\.');
99
+ --atomix-u-#{$css-variable-name}#{$modifier}: #{$value};
100
+ } @else if $properties {
101
+ @each $property in $properties {
102
+ #{$property}: $value if(map.get($utility, rtl), null, !important);
103
+ }
104
+ } @else {
105
+ #{$base-class}: $value if(map.get($utility, rtl), null, !important);
77
106
  }
78
107
  }
79
108
  }
@@ -105,9 +134,9 @@ $utility-defaults: (
105
134
  ) {
106
135
  // Set default breakpoint infix generator if not provided
107
136
  $breakpoint-infix-generator: if(
108
- $breakpoint-infix-generator,
109
- $breakpoint-infix-generator,
110
- get-breakpoint-infix
137
+ $breakpoint-infix-generator,
138
+ $breakpoint-infix-generator,
139
+ get-breakpoint-infix
111
140
  );
112
141
 
113
142
  @each $utility, $config in $utilities {
@@ -117,17 +146,19 @@ $utility-defaults: (
117
146
  // Only process if the utility is not explicitly set to false
118
147
  @if map.get($config, generated) != false {
119
148
  $utility-map: (
120
- property: map.get($config, property),
121
- values: map.get($config, values),
122
- class: map.get($config, class),
123
- state: map.get($config, state),
124
- rtl: map.get($config, rtl),
149
+ property: map.get($config, property),
150
+ values: map.get($config, values),
151
+ class: map.get($config, class),
152
+ state: map.get($config, state),
153
+ rtl: map.get($config, rtl),
154
+ css-var: map.get($config, css-var),
155
+ local-vars: map.get($config, local-vars),
125
156
  );
126
157
 
127
158
  @include generate-responsive-utilities(
128
- $utility-map,
129
- $breakpoints,
130
- $breakpoint-infix-generator
159
+ $utility-map,
160
+ $breakpoints,
161
+ $breakpoint-infix-generator
131
162
  );
132
163
  }
133
164
  }
@@ -159,13 +190,25 @@ $utility-defaults: (
159
190
 
160
191
  @each $key in $keys {
161
192
  $result: map.merge(
162
- $result,
163
- (
164
- $key: if($index <= list.length($values), list.nth($values, $index), null),
165
- )
193
+ $result,
194
+ (
195
+ $key: if($index <= list.length($values), list.nth($values, $index), null),
196
+ )
166
197
  );
167
198
  $index: $index + 1;
168
199
  }
169
200
 
170
201
  @return $result;
171
202
  }
203
+
204
+ // Helper function to replace strings
205
+ @function str-replace($string, $search, $replace: '') {
206
+ $index: string.index($string, $search);
207
+
208
+ @if $index {
209
+ @return str-slice($string, 1, $index - 1) + $replace +
210
+ str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
211
+ }
212
+
213
+ @return $string;
214
+ }
@@ -10,7 +10,6 @@
10
10
  @use 'sass:meta';
11
11
  @use 'sass:map';
12
12
 
13
-
14
13
  :root,
15
14
  [data-#{config.$prefix}color-mode='light'] {
16
15
  // Note: Custom variable values only support SassScript inside `#{}`.
@@ -66,8 +65,6 @@
66
65
  --#{config.$prefix}font-sans-serif: #{meta.inspect(typography.$font-family-sans-serif)};
67
66
  --#{config.$prefix}font-monospace: #{meta.inspect(typography.$font-family-monospace)};
68
67
 
69
-
70
-
71
68
  // Root and body
72
69
  // scss-docs-start root-body-variables
73
70
  @if typography.$font-size-root != null {
@@ -172,7 +169,7 @@
172
169
  --#{config.$prefix}#{$color}-gradient: #{$value};
173
170
  }
174
171
 
175
- --#{config.$prefix}gradient: #{map.get(color-maps.$gradient-colors, dark)};
172
+ --#{config.$prefix}gradient: #{map.get(color-maps.$gradient-colors, dark)};
176
173
 
177
174
  --#{config.$prefix}box-shadow: #{box-shadow.$box-shadow-dark};
178
175
  --#{config.$prefix}box-shadow-xs: #{box-shadow.$box-shadow-xs-dark};
@@ -17,5 +17,4 @@ body {
17
17
  &.is-modal-open {
18
18
  overflow: hidden;
19
19
  }
20
-
21
20
  }
@@ -0,0 +1,249 @@
1
+ // Component: AtomixGlass
2
+ // =============================================================================
3
+
4
+ .c-atomix-glass {
5
+ position: relative;
6
+
7
+ // CSS custom property defaults
8
+ --atomix-glass-radius: var(--atomix-radius-md, 16px);
9
+ --atomix-glass-transform: none;
10
+ --atomix-glass-transition: opacity var(--atomix-transition-duration, 0.2s) ease-out;
11
+ --atomix-glass-position: absolute;
12
+ --atomix-glass-container-width: 100%;
13
+ --atomix-glass-container-height: 100%;
14
+ --atomix-glass-border-width: var(--atomix-spacing-0-5, 0.09375rem);
15
+
16
+ // Base layer styles for all effect layers (hover, border, overlay)
17
+ &__hover-1,
18
+ &__hover-2,
19
+ &__hover-3,
20
+ &__base,
21
+ &__overlay {
22
+ position: absolute;
23
+ inset: 0;
24
+ pointer-events: none;
25
+ border-radius: var(--atomix-glass-radius);
26
+ transform: var(--atomix-glass-transform);
27
+ transition: var(--atomix-glass-transition);
28
+ }
29
+
30
+ // Interactive hover effects
31
+ &__hover-1,
32
+ &__hover-2,
33
+ &__hover-3 {
34
+ mix-blend-mode: overlay;
35
+ // Dynamic opacity and background are set via inline styles using CSS variables
36
+ opacity: var(--atomix-glass-hover-1-opacity, 0);
37
+ background: var(--atomix-glass-hover-1-gradient, none);
38
+ }
39
+
40
+ &__hover-1 {
41
+ transition: opacity 0.2s ease-out;
42
+ opacity: var(--atomix-glass-hover-1-opacity, 0);
43
+ background: var(--atomix-glass-hover-1-gradient, none);
44
+ }
45
+
46
+ &__hover-2 {
47
+ transition: opacity 0.4s ease-out;
48
+ opacity: var(--atomix-glass-hover-2-opacity, 0);
49
+ background: var(--atomix-glass-hover-2-gradient, none);
50
+ }
51
+
52
+ &__hover-3 {
53
+ transition: opacity 0.6s ease-out;
54
+ opacity: var(--atomix-glass-hover-3-opacity, 0);
55
+ background: var(--atomix-glass-hover-3-gradient, none);
56
+ }
57
+
58
+ // Base and overlay layers for over-light mode
59
+ &__base {
60
+ mix-blend-mode: soft-light;
61
+ // Dynamic opacity and background are set via inline styles using CSS variables
62
+ opacity: var(--atomix-glass-base-opacity, 0);
63
+ background: var(--atomix-glass-base-gradient, none);
64
+ }
65
+
66
+ &__overlay {
67
+ mix-blend-mode: overlay;
68
+ // Dynamic opacity and background are set via inline styles using CSS variables
69
+ opacity: var(--atomix-glass-overlay-opacity, 0);
70
+ background: var(--atomix-glass-overlay-gradient, none);
71
+ }
72
+
73
+ &__overlay-highlight {
74
+ position: absolute;
75
+ inset: var(--atomix-spacing-0-5, 0.125rem);
76
+ pointer-events: none;
77
+ border-radius: var(--atomix-glass-radius);
78
+ transform: var(--atomix-glass-transform);
79
+ transition: var(--atomix-glass-transition);
80
+ mix-blend-mode: screen;
81
+ // Dynamic opacity and background are set via inline styles
82
+ // Opacity is calculated: opacityValues.over * OVERLAY_HIGHLIGHT.OPACITY_MULTIPLIER
83
+ // Background gradient uses constants for positioning
84
+ }
85
+
86
+ // Border effect layers - matching old version exactly
87
+ &__border-1,
88
+ &__border-2 {
89
+ // Static styles
90
+ padding: var(--atomix-glass-border-width);
91
+ box-sizing: border-box;
92
+ overflow: hidden;
93
+ pointer-events: none;
94
+ -webkit-mask:
95
+ linear-gradient(var(--atomix-black, #000000) 0 0) content-box,
96
+ linear-gradient(var(--atomix-black, #000000) 0 0);
97
+ -webkit-mask-composite: xor;
98
+ mask:
99
+ linear-gradient(var(--atomix-black, #000000) 0 0) content-box,
100
+ linear-gradient(var(--atomix-black, #000000) 0 0);
101
+ mask-composite: exclude;
102
+
103
+ // Dynamic values set via inline styles using CSS variables
104
+ position: var(--atomix-glass-position);
105
+ top: var(--atomix-glass-top);
106
+ left: var(--atomix-glass-left);
107
+ width: var(--atomix-glass-width);
108
+ height: var(--atomix-glass-height);
109
+ border-radius: var(--atomix-glass-radius);
110
+ transform: var(--atomix-glass-transform);
111
+ transition: var(--atomix-glass-transition);
112
+ }
113
+
114
+ &__border-1 {
115
+ opacity: var(--atomix-opacity-20, 0.2);
116
+ mix-blend-mode: screen;
117
+ z-index: var(--atomix-z-index-5, 5);
118
+ // Dynamic gradient background set via CSS variable
119
+ background: var(--atomix-glass-border-gradient-1, none);
120
+ // Note: Box-shadow rgba values use CSS custom properties for colors via CSS variables
121
+ // These are set dynamically in TypeScript component via --atomix-glass-border-shadow
122
+ box-shadow: var(--atomix-glass-border-shadow, 0 0 0 0.03125rem rgba(255, 255, 255, 0.5) inset, 0 0.25rem 0.75rem rgba(255, 255, 255, 0.25) inset, 0 0.25rem 1rem rgba(0, 0, 0, 0.35));
123
+ }
124
+
125
+ &__border-2 {
126
+ mix-blend-mode: overlay;
127
+ z-index: var(--atomix-z-index-6, 6);
128
+ // Dynamic gradient background set via CSS variable
129
+ background: var(--atomix-glass-border-gradient-2, none);
130
+ // Note: Box-shadow rgba values use CSS custom properties for colors via CSS variables
131
+ // These are set dynamically in TypeScript component via --atomix-glass-border-shadow
132
+ box-shadow: var(--atomix-glass-border-shadow, 0 0 0 0.03125rem rgba(255, 255, 255, 0.5) inset, 0 0.25rem 0.75rem rgba(255, 255, 255, 0.25) inset, 0 0.25rem 1rem rgba(0, 0, 0, 0.35));
133
+ }
134
+
135
+ // Container styles
136
+ &__container {
137
+ width: var(--atomix-glass-container-width);
138
+ height: var(--atomix-glass-container-height);
139
+ position: relative;
140
+ border-radius: var(--atomix-glass-radius);
141
+ transition: border-radius 0.25s ease-out;
142
+ }
143
+
144
+ &__inner {
145
+ width: var(--atomix-glass-container-width);
146
+ height: var(--atomix-glass-container-height);
147
+ position: relative;
148
+ // Padding and border-radius are set dynamically via inline styles
149
+ border-radius: var(--atomix-glass-radius);
150
+ }
151
+
152
+ &__filter {
153
+ position: absolute;
154
+ top: 0;
155
+ left: 0;
156
+ width: 100%;
157
+ height: 100%;
158
+ pointer-events: none;
159
+ }
160
+
161
+ &__filter-overlay {
162
+ position: absolute;
163
+ inset: 0;
164
+ pointer-events: none;
165
+ }
166
+
167
+ &__filter-shadow {
168
+ position: absolute;
169
+ inset: var(--atomix-glass-border-width);
170
+ pointer-events: none;
171
+ }
172
+
173
+ &__content {
174
+ position: relative;
175
+ width: var(--atomix-glass-container-width);
176
+ height: var(--atomix-glass-container-height);
177
+ }
178
+
179
+ // Background layers for over-light mode
180
+ &__background-layer {
181
+ position: absolute;
182
+ pointer-events: none;
183
+ border-radius: var(--atomix-glass-radius);
184
+ transform: var(--atomix-glass-transform);
185
+ transition: var(--atomix-glass-transition);
186
+ will-change: transform;
187
+ // Dynamic values: position, width, height are set via inline styles
188
+ // Position comes from positionStyles, width/height from adjustedSize
189
+
190
+ // Dark background variant
191
+ &--dark {
192
+ background-color: var(--atomix-gray-9, #1f2937);
193
+ }
194
+
195
+ // Black background variant
196
+ &--black {
197
+ background-color: var(--atomix-black, #000000);
198
+ mix-blend-mode: overlay;
199
+ }
200
+
201
+ // Over-light state modifier (50% opacity for dark, 25% for black)
202
+ // When both --dark and --over-light modifiers are present
203
+ &--dark#{&}--over-light {
204
+ opacity: var(--atomix-opacity-50, 0.5);
205
+ }
206
+
207
+ &--black#{&}--over-light {
208
+ opacity: var(--atomix-opacity-25, 0.25);
209
+ }
210
+
211
+ // Hidden state modifier
212
+ &--hidden {
213
+ opacity: var(--atomix-opacity-0, 0);
214
+ }
215
+ }
216
+
217
+ // State modifiers
218
+ &--reduced-motion {
219
+ --atomix-glass-transition: none;
220
+
221
+ * {
222
+ transition: none !important;
223
+ }
224
+ }
225
+
226
+ &--high-contrast {
227
+ border: var(--atomix-spacing-0-5, 2px) solid currentColor;
228
+ outline: var(--atomix-spacing-0-5, 2px) solid transparent;
229
+ outline-offset: var(--atomix-spacing-0-5, 2px);
230
+ }
231
+
232
+ &--disabled-effects {
233
+ --atomix-glass-transform: none;
234
+ --atomix-glass-transition: none;
235
+ }
236
+
237
+ // Responsive and accessibility
238
+ @media (prefers-reduced-motion: reduce) {
239
+ --atomix-glass-transition: none;
240
+
241
+ * {
242
+ transition: none !important;
243
+ }
244
+ }
245
+
246
+ @media (prefers-contrast: high) {
247
+ border-width: var(--atomix-spacing-0-5, 0.125rem);
248
+ }
249
+ }
@@ -47,18 +47,17 @@
47
47
  @include dynamic-background(
48
48
  var(--#{$prefix}tag-bg-color),
49
49
  $background-transparency-enable: true,
50
- $transparency: 0.8
50
+ $transparency: 0.2
51
51
  );
52
- border: 1px solid color-mix(in srgb, var(--#{$prefix}tag-color) 20%, transparent);
52
+ border: 1px solid color-mix(in srgb, var(--#{$prefix}tag-color) 90%, transparent);
53
53
 
54
+ // // Outer depth and glass effect
55
+ // 0 1px 3px rgba(0, 0, 0, 0.2),
56
+ // 0 2px 8px rgba(0, 0, 0, 0.15),
57
+ // 0 4px 16px rgba(0, 0, 0, 0.1),
54
58
 
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);
59
+ // Subtle highlight on top edge
60
+ // 0 -1px 0 rgba(255, 255, 255, 0.1);
62
61
  }
63
62
 
64
63
  @each $color, $value in maps.$theme-colors {
@@ -81,17 +80,3 @@
81
80
  }
82
81
  }
83
82
  }
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
- }
@@ -135,11 +135,16 @@
135
135
 
136
136
  // Glass morphism effect styles
137
137
  &--glass {
138
- @include dynamic-background(var(--#{config.$prefix}btn-bg), $background-transparency-enable: true);
138
+ @include dynamic-background(
139
+ var(--#{config.$prefix}btn-bg),
140
+ $background-transparency-enable: true
141
+ );
139
142
 
140
143
  &:hover {
141
- @include dynamic-background(var(--#{config.$prefix}btn-hover-bg), $background-transparency-enable: true);
144
+ @include dynamic-background(
145
+ var(--#{config.$prefix}btn-hover-bg),
146
+ $background-transparency-enable: true
147
+ );
142
148
  }
143
-
144
149
  }
145
150
  }
@@ -203,7 +203,7 @@
203
203
 
204
204
  // Glass morphism effect styles
205
205
  &--glass {
206
- @include dynamic-background(var(--#{config.$prefix}callout-bg), $background-transparency-enable: true);
206
+ background: none;
207
207
  padding: 0;
208
208
  border: none;
209
209
  display: block;
@@ -214,10 +214,14 @@
214
214
  align-items: center;
215
215
  padding: var(--#{config.$prefix}callout-padding-y) var(--#{config.$prefix}callout-padding-x);
216
216
  border: var(--#{config.$prefix}callout-border-witdh) solid
217
- var(--#{config.$prefix}callout-border-color);
217
+ color-mix(in srgb, var(--#{config.$prefix}callout-border-color) 20%, transparent);
218
218
  max-width: var(--#{config.$prefix}callout-width);
219
219
  border-radius: var(--#{config.$prefix}callout-border-radius);
220
220
  width: 100%;
221
+ @include dynamic-background(
222
+ var(--#{config.$prefix}callout-bg),
223
+ $background-transparency-enable: true
224
+ );
221
225
  }
222
226
 
223
227
  // Adjust text colors for glass effect
@@ -231,13 +235,14 @@
231
235
 
232
236
  // Glass effect for toast variant
233
237
  &#{$root}--toast {
234
- @include dynamic-background(var(--#{config.$prefix}callout-bg), $background-transparency-enable: true);
238
+ @include dynamic-background(
239
+ var(--#{config.$prefix}callout-bg),
240
+ $background-transparency-enable: true
241
+ );
235
242
  box-shadow:
236
243
  0 8px 32px rgba(0, 0, 0, 0.1),
237
244
  0 0 0 1px rgba(255, 255, 255, 0.1) inset;
238
245
  }
239
-
240
-
241
246
  }
242
247
 
243
248
  &.is-hide {