@shohojdhara/atomix 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/README.md +1 -28
  2. package/dist/atomix.css +1500 -241
  3. package/dist/atomix.min.css +6 -6
  4. package/dist/index.d.ts +1052 -194
  5. package/dist/index.esm.js +12201 -6066
  6. package/dist/index.esm.js.map +1 -1
  7. package/dist/index.js +5481 -2827
  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/boomdevs.css +1500 -301
  12. package/dist/themes/boomdevs.min.css +60 -8
  13. package/dist/themes/esrar.css +1500 -241
  14. package/dist/themes/esrar.min.css +6 -6
  15. package/dist/themes/mashroom.css +1496 -237
  16. package/dist/themes/mashroom.min.css +8 -8
  17. package/dist/themes/shaj-default.css +1451 -192
  18. package/dist/themes/shaj-default.min.css +6 -6
  19. package/package.json +66 -15
  20. package/src/components/Accordion/Accordion.stories.tsx +137 -0
  21. package/src/components/Accordion/Accordion.tsx +33 -3
  22. package/src/components/AtomixGlass/AtomixGlass.stories.tsx +3011 -0
  23. package/src/components/AtomixGlass/AtomixGlass.test.tsx +199 -0
  24. package/src/components/AtomixGlass/AtomixGlass.tsx +1281 -0
  25. package/src/components/AtomixGlass/AtomixGlassComprehensivePreview.stories.tsx +1369 -0
  26. package/src/components/AtomixGlass/README.md +134 -0
  27. package/src/components/AtomixGlass/index.ts +10 -0
  28. package/src/components/AtomixGlass/shader-utils.ts +140 -0
  29. package/src/components/AtomixGlass/utils.ts +8 -0
  30. package/src/components/Badge/Badge.stories.tsx +169 -0
  31. package/src/components/Badge/Badge.tsx +27 -2
  32. package/src/components/Button/Button.stories.tsx +345 -0
  33. package/src/components/Button/Button.tsx +35 -3
  34. package/src/components/Button/README.md +216 -0
  35. package/src/components/Callout/Callout.stories.tsx +813 -78
  36. package/src/components/Callout/Callout.test.tsx +368 -0
  37. package/src/components/Callout/Callout.tsx +26 -7
  38. package/src/components/Callout/README.md +409 -0
  39. package/src/components/Card/Card.stories.tsx +140 -0
  40. package/src/components/Card/Card.tsx +19 -3
  41. package/src/components/DatePicker/DatePicker copy.tsx +551 -0
  42. package/src/components/DatePicker/DatePicker.stories.tsx +188 -0
  43. package/src/components/DatePicker/DatePicker.tsx +379 -332
  44. package/src/components/DatePicker/readme.md +110 -1
  45. package/src/components/DatePicker/types.ts +8 -0
  46. package/src/components/Dropdown/Dropdown.stories.tsx +145 -0
  47. package/src/components/Dropdown/Dropdown.tsx +34 -5
  48. package/src/components/Footer/Footer.stories.tsx +388 -0
  49. package/src/components/Footer/Footer.tsx +197 -0
  50. package/src/components/Footer/FooterLink.tsx +72 -0
  51. package/src/components/Footer/FooterSection.tsx +87 -0
  52. package/src/components/Footer/FooterSocialLink.tsx +117 -0
  53. package/src/components/Footer/README.md +261 -0
  54. package/src/components/Footer/index.ts +13 -0
  55. package/src/components/Form/Checkbox.stories.tsx +101 -0
  56. package/src/components/Form/Checkbox.tsx +26 -2
  57. package/src/components/Form/Input.stories.tsx +124 -0
  58. package/src/components/Form/Input.tsx +36 -7
  59. package/src/components/Form/Radio.stories.tsx +139 -0
  60. package/src/components/Form/Radio.tsx +26 -2
  61. package/src/components/Form/Select.stories.tsx +110 -0
  62. package/src/components/Form/Select.tsx +26 -2
  63. package/src/components/Form/Textarea.stories.tsx +104 -0
  64. package/src/components/Form/Textarea.tsx +36 -7
  65. package/src/components/Hero/Hero.stories.tsx +54 -1
  66. package/src/components/Hero/Hero.tsx +70 -11
  67. package/src/components/Modal/Modal.stories.tsx +235 -0
  68. package/src/components/Modal/Modal.tsx +64 -35
  69. package/src/components/Pagination/Pagination.stories.tsx +101 -0
  70. package/src/components/Pagination/Pagination.tsx +25 -1
  71. package/src/components/Popover/Popover.stories.tsx +94 -0
  72. package/src/components/Popover/Popover.tsx +30 -4
  73. package/src/components/Rating/Rating.stories.tsx +112 -0
  74. package/src/components/Rating/Rating.tsx +25 -1
  75. package/src/components/SectionIntro/SectionIntro.tsx +9 -11
  76. package/src/components/Slider/Slider.stories.tsx +634 -50
  77. package/src/components/Slider/Slider.tsx +5 -3
  78. package/src/components/Steps/Steps.stories.tsx +119 -0
  79. package/src/components/Steps/Steps.tsx +32 -1
  80. package/src/components/Tab/Tab.stories.tsx +88 -0
  81. package/src/components/Tab/Tab.tsx +32 -1
  82. package/src/components/Toggle/Toggle.stories.tsx +92 -0
  83. package/src/components/Toggle/Toggle.tsx +32 -1
  84. package/src/components/Tooltip/Tooltip.stories.tsx +131 -0
  85. package/src/components/Tooltip/Tooltip.tsx +43 -7
  86. package/src/components/VideoPlayer/VideoPlayer.stories.tsx +1002 -196
  87. package/src/components/VideoPlayer/VideoPlayer.tsx +161 -4
  88. package/src/components/index.ts +14 -0
  89. package/src/layouts/Grid/Grid.stories.tsx +226 -159
  90. package/src/lib/composables/index.ts +4 -0
  91. package/src/lib/composables/useAtomixGlass.ts +71 -0
  92. package/src/lib/composables/useButton.ts +3 -1
  93. package/src/lib/composables/useCallout.ts +4 -1
  94. package/src/lib/composables/useFooter.ts +85 -0
  95. package/src/lib/composables/useGlassContainer.ts +168 -0
  96. package/src/lib/composables/useSlider.ts +191 -4
  97. package/src/lib/constants/components.ts +173 -0
  98. package/src/lib/types/components.ts +622 -0
  99. package/src/lib/utils/displacement-generator.ts +86 -0
  100. package/src/styles/01-settings/_index.scss +1 -0
  101. package/src/styles/01-settings/_settings.accordion.scss +20 -19
  102. package/src/styles/01-settings/_settings.animations.scss +5 -5
  103. package/src/styles/01-settings/_settings.avatar-group.scss +1 -1
  104. package/src/styles/01-settings/_settings.avatar.scss +17 -18
  105. package/src/styles/01-settings/_settings.background.scss +10 -0
  106. package/src/styles/01-settings/_settings.badge.scss +1 -1
  107. package/src/styles/01-settings/_settings.breadcrumb.scss +8 -2
  108. package/src/styles/01-settings/_settings.callout.scss +7 -7
  109. package/src/styles/01-settings/_settings.card.scss +2 -2
  110. package/src/styles/01-settings/_settings.chart.scss +7 -7
  111. package/src/styles/01-settings/_settings.checkbox-group.scss +5 -2
  112. package/src/styles/01-settings/_settings.checkbox.scss +10 -4
  113. package/src/styles/01-settings/_settings.countdown.scss +6 -4
  114. package/src/styles/01-settings/_settings.dropdown.scss +9 -7
  115. package/src/styles/01-settings/_settings.edge-panel.scss +3 -2
  116. package/src/styles/01-settings/_settings.footer.scss +125 -0
  117. package/src/styles/01-settings/_settings.form-group.scss +3 -1
  118. package/src/styles/01-settings/_settings.form.scss +4 -2
  119. package/src/styles/01-settings/_settings.hero.scss +9 -7
  120. package/src/styles/01-settings/_settings.input.scss +9 -7
  121. package/src/styles/01-settings/_settings.list-group.scss +4 -2
  122. package/src/styles/01-settings/_settings.list.scss +4 -2
  123. package/src/styles/01-settings/_settings.menu.scss +10 -8
  124. package/src/styles/01-settings/_settings.messages.scss +19 -17
  125. package/src/styles/01-settings/_settings.modal.scss +6 -4
  126. package/src/styles/01-settings/_settings.nav.scss +6 -4
  127. package/src/styles/01-settings/_settings.navbar.scss +8 -5
  128. package/src/styles/01-settings/_settings.pagination.scss +5 -3
  129. package/src/styles/01-settings/_settings.popover.scss +6 -4
  130. package/src/styles/01-settings/_settings.rating.scss +5 -3
  131. package/src/styles/01-settings/_settings.river.scss +8 -6
  132. package/src/styles/01-settings/_settings.sectionintro.scss +8 -6
  133. package/src/styles/01-settings/_settings.select.scss +7 -5
  134. package/src/styles/01-settings/_settings.side-menu.scss +15 -13
  135. package/src/styles/01-settings/_settings.spacing.scss +4 -0
  136. package/src/styles/01-settings/_settings.steps.scss +7 -5
  137. package/src/styles/01-settings/_settings.tabs.scss +7 -5
  138. package/src/styles/01-settings/_settings.testimonials.scss +6 -4
  139. package/src/styles/01-settings/_settings.toggle.scss +3 -1
  140. package/src/styles/01-settings/_settings.tooltip.scss +5 -3
  141. package/src/styles/01-settings/_settings.upload.scss +22 -20
  142. package/src/styles/02-tools/_tools.animations.scss +19 -0
  143. package/src/styles/02-tools/_tools.background.scss +87 -0
  144. package/src/styles/02-tools/_tools.glass.scss +1 -0
  145. package/src/styles/02-tools/_tools.rem.scss +18 -5
  146. package/src/styles/02-tools/_tools.utility-api.scss +32 -26
  147. package/src/styles/03-generic/_generic.root.scss +15 -2
  148. package/src/styles/04-elements/_elements.body.scss +6 -0
  149. package/src/styles/06-components/_components.accordion.scss +24 -4
  150. package/src/styles/06-components/_components.atomix-glass.scss +0 -0
  151. package/src/styles/06-components/_components.avatar-group.scss +2 -1
  152. package/src/styles/06-components/_components.avatar.scss +2 -1
  153. package/src/styles/06-components/_components.badge.scss +36 -1
  154. package/src/styles/06-components/_components.breadcrumb.scss +2 -1
  155. package/src/styles/06-components/_components.button.scss +14 -3
  156. package/src/styles/06-components/_components.callout.scss +44 -4
  157. package/src/styles/06-components/_components.card.scss +21 -2
  158. package/src/styles/06-components/_components.chart.scss +3 -2
  159. package/src/styles/06-components/_components.checkbox.scss +2 -1
  160. package/src/styles/06-components/_components.color-mode-toggle.scss +3 -2
  161. package/src/styles/06-components/_components.countdown.scss +2 -1
  162. package/src/styles/06-components/_components.data-table.scss +7 -6
  163. package/src/styles/06-components/_components.datepicker.scss +20 -1
  164. package/src/styles/06-components/_components.dropdown.scss +11 -4
  165. package/src/styles/06-components/_components.edge-panel.scss +4 -3
  166. package/src/styles/06-components/_components.footer.scss +825 -0
  167. package/src/styles/06-components/_components.form-group.scss +1 -0
  168. package/src/styles/06-components/_components.hero.scss +4 -4
  169. package/src/styles/06-components/_components.image-gallery.scss +1 -0
  170. package/src/styles/06-components/_components.input.scss +33 -2
  171. package/src/styles/06-components/_components.list-group.scss +3 -2
  172. package/src/styles/06-components/_components.list.scss +2 -1
  173. package/src/styles/06-components/_components.menu.scss +5 -4
  174. package/src/styles/06-components/_components.messages.scss +8 -7
  175. package/src/styles/06-components/_components.modal.scss +3 -2
  176. package/src/styles/06-components/_components.nav.scss +6 -5
  177. package/src/styles/06-components/_components.navbar.scss +4 -3
  178. package/src/styles/06-components/_components.pagination.scss +2 -1
  179. package/src/styles/06-components/_components.photoviewer.scss +4 -3
  180. package/src/styles/06-components/_components.popover.scss +3 -2
  181. package/src/styles/06-components/_components.product-review.scss +3 -2
  182. package/src/styles/06-components/_components.progress.scss +3 -2
  183. package/src/styles/06-components/_components.river.scss +3 -2
  184. package/src/styles/06-components/_components.sectionintro.scss +2 -1
  185. package/src/styles/06-components/_components.select.scss +5 -4
  186. package/src/styles/06-components/_components.side-menu.scss +8 -7
  187. package/src/styles/06-components/_components.skeleton.scss +3 -2
  188. package/src/styles/06-components/_components.slider.scss +7 -6
  189. package/src/styles/06-components/_components.spinner.scss +1 -0
  190. package/src/styles/06-components/_components.steps.scss +3 -2
  191. package/src/styles/06-components/_components.tabs.scss +4 -3
  192. package/src/styles/06-components/_components.testimonials.scss +2 -1
  193. package/src/styles/06-components/_components.todo.scss +3 -2
  194. package/src/styles/06-components/_components.toggle.scss +5 -4
  195. package/src/styles/06-components/_components.tooltip.scss +3 -2
  196. package/src/styles/06-components/_components.upload.scss +4 -3
  197. package/src/styles/06-components/_components.video-player.scss +50 -27
  198. package/src/styles/06-components/_index.scss +2 -0
  199. package/src/styles/99-utilities/_utilities.glass-fixes.scss +48 -0
  200. package/dist/themes/yabai.css +0 -13711
  201. package/dist/themes/yabai.min.css +0 -189
@@ -0,0 +1,199 @@
1
+ import React from 'react';
2
+ import { render, screen } from '@testing-library/react';
3
+ import userEvent from '@testing-library/user-event';
4
+ import AtomixGlass from './AtomixGlass';
5
+
6
+ // Mock the ShaderDisplacementGenerator since it uses browser APIs
7
+ jest.mock('./shader-utils', () => ({
8
+ ShaderDisplacementGenerator: class MockShaderDisplacementGenerator {
9
+ updateShader() {
10
+ return 'data:image/png;base64,mockBase64String';
11
+ }
12
+ destroy() {}
13
+ },
14
+ fragmentShaders: {
15
+ liquidGlass: jest.fn(),
16
+ },
17
+ }));
18
+
19
+ describe('AtomixGlass Component', () => {
20
+ test('renders children correctly', () => {
21
+ render(
22
+ <AtomixGlass>
23
+ <div data-testid="test-content">Test Content</div>
24
+ </AtomixGlass>
25
+ );
26
+
27
+ expect(screen.getByTestId('test-content')).toBeInTheDocument();
28
+ expect(screen.getByText('Test Content')).toBeInTheDocument();
29
+ });
30
+
31
+ test('applies custom className', () => {
32
+ const { container } = render(
33
+ <AtomixGlass className="custom-class">
34
+ <div>Content</div>
35
+ </AtomixGlass>
36
+ );
37
+
38
+ expect(container.querySelector('.c-glass-container')).toHaveClass('custom-class');
39
+ });
40
+
41
+ test('renders with showHoverEffects enabled', () => {
42
+ render(
43
+ <AtomixGlass showHoverEffects={true}>
44
+ <div>Test Content</div>
45
+ </AtomixGlass>
46
+ );
47
+
48
+ // Check that hover effects are enabled
49
+ expect(screen.getByTestId('atomix-glass')).toHaveAttribute('data-hover-effects', 'true');
50
+ });
51
+
52
+ test('applies clickable class when onClick is provided', () => {
53
+ const handleClick = jest.fn();
54
+ const { container } = render(
55
+ <AtomixGlass onClick={handleClick}>
56
+ <div>Content</div>
57
+ </AtomixGlass>
58
+ );
59
+
60
+ expect(container.querySelector('.c-glass-container')).toHaveClass('c-glass-container--clickable');
61
+ });
62
+
63
+ test('calls onClick when clicked', async () => {
64
+ const handleClick = jest.fn();
65
+ render(
66
+ <AtomixGlass onClick={handleClick}>
67
+ <div>Content</div>
68
+ </AtomixGlass>
69
+ );
70
+
71
+ await userEvent.click(screen.getByText('Content'));
72
+ expect(handleClick).toHaveBeenCalledTimes(1);
73
+ });
74
+
75
+ test('applies overLight class when overLight prop is true', () => {
76
+ const { container } = render(
77
+ <AtomixGlass overLight={true}>
78
+ <div>Content</div>
79
+ </AtomixGlass>
80
+ );
81
+
82
+ expect(container.querySelector('.c-glass-container')).toHaveClass('c-glass-container--over-light');
83
+ });
84
+
85
+ test('applies custom style', () => {
86
+ const customStyle = { backgroundColor: 'red' };
87
+ const { container } = render(
88
+ <AtomixGlass style={customStyle}>
89
+ <div>Content</div>
90
+ </AtomixGlass>
91
+ );
92
+
93
+ const glassContainer = container.querySelector('.c-glass-container');
94
+ expect(glassContainer).toHaveStyle('background-color: red');
95
+ });
96
+
97
+ test('uses standard mode by default', () => {
98
+ const { container } = render(
99
+ <AtomixGlass>
100
+ <div>Content</div>
101
+ </AtomixGlass>
102
+ );
103
+
104
+ // Check if the filter element exists
105
+ expect(container.querySelector('svg')).toBeInTheDocument();
106
+ });
107
+
108
+ test('handles mouse events correctly', async () => {
109
+ const handleMouseEnter = jest.fn();
110
+ const handleMouseLeave = jest.fn();
111
+ const handleMouseDown = jest.fn();
112
+ const handleMouseUp = jest.fn();
113
+
114
+ render(
115
+ <AtomixGlass
116
+ onClick={() => {
117
+ handleMouseEnter();
118
+ handleMouseLeave();
119
+ handleMouseDown();
120
+ handleMouseUp();
121
+ }}
122
+ >
123
+ <div>Content</div>
124
+ </AtomixGlass>
125
+ );
126
+
127
+ const glassContent = screen.getByText('Content').parentElement;
128
+ if (!glassContent) throw new Error('Glass content not found');
129
+
130
+ await userEvent.hover(glassContent);
131
+ expect(handleMouseEnter).toHaveBeenCalledTimes(1);
132
+
133
+ await userEvent.unhover(glassContent);
134
+ expect(handleMouseLeave).toHaveBeenCalledTimes(1);
135
+
136
+ await userEvent.pointer([{ keys: '[MouseLeft>]', target: glassContent }]);
137
+ expect(handleMouseDown).toHaveBeenCalledTimes(1);
138
+
139
+ await userEvent.pointer([{ keys: '[/MouseLeft]', target: glassContent }]);
140
+ expect(handleMouseUp).toHaveBeenCalledTimes(1);
141
+ });
142
+ });
143
+
144
+ // Visual regression tests
145
+ describe('AtomixGlass Visual Regression', () => {
146
+ test('matches snapshot with default props', () => {
147
+ const { container } = render(
148
+ <AtomixGlass>
149
+ <div>Default Glass</div>
150
+ </AtomixGlass>
151
+ );
152
+
153
+ expect(container).toMatchSnapshot();
154
+ });
155
+
156
+ test('matches snapshot with custom props', () => {
157
+ const { container } = render(
158
+ <AtomixGlass
159
+ displacementScale={30}
160
+ blurAmount={15}
161
+ saturation={200}
162
+ aberrationIntensity={3}
163
+ cornerRadius={15}
164
+ overLight={true}
165
+ mode="polar"
166
+ >
167
+ <div>Custom Glass</div>
168
+ </AtomixGlass>
169
+ );
170
+
171
+ expect(container).toMatchSnapshot();
172
+ });
173
+
174
+ test('matches snapshot with shader mode', () => {
175
+ const { container } = render(
176
+ <AtomixGlass
177
+ mode="shader"
178
+ displacementScale={25}
179
+ blurAmount={12}
180
+ saturation={180}
181
+ aberrationIntensity={2}
182
+ >
183
+ <div>Shader Glass</div>
184
+ </AtomixGlass>
185
+ );
186
+
187
+ expect(container).toMatchSnapshot();
188
+ });
189
+
190
+ test('matches snapshot with showHoverEffects', () => {
191
+ const { container } = render(
192
+ <AtomixGlass showHoverEffects={true}>
193
+ <div>Glass with Hover Effects</div>
194
+ </AtomixGlass>
195
+ );
196
+
197
+ expect(container).toMatchSnapshot();
198
+ });
199
+ });