@shohojdhara/atomix 0.5.0 → 0.5.2

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 (168) hide show
  1. package/atomix.config.ts +12 -0
  2. package/build-tools/webpack-loader.js +5 -4
  3. package/dist/atomix.css +230 -83
  4. package/dist/atomix.css.map +1 -1
  5. package/dist/atomix.min.css +1 -1
  6. package/dist/atomix.min.css.map +1 -1
  7. package/dist/build-tools/webpack-loader.js +5 -4
  8. package/dist/charts.d.ts +24 -23
  9. package/dist/charts.js +271 -369
  10. package/dist/charts.js.map +1 -1
  11. package/dist/config.d.ts +624 -0
  12. package/dist/config.js +59 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/core.d.ts +3 -2
  15. package/dist/core.js +342 -382
  16. package/dist/core.js.map +1 -1
  17. package/dist/forms.d.ts +4 -6
  18. package/dist/forms.js +233 -334
  19. package/dist/forms.js.map +1 -1
  20. package/dist/heavy.d.ts +11 -2
  21. package/dist/heavy.js +406 -445
  22. package/dist/heavy.js.map +1 -1
  23. package/dist/index.d.ts +109 -65
  24. package/dist/index.esm.js +654 -748
  25. package/dist/index.esm.js.map +1 -1
  26. package/dist/index.js +621 -717
  27. package/dist/index.js.map +1 -1
  28. package/dist/index.min.js +1 -1
  29. package/dist/index.min.js.map +1 -1
  30. package/dist/layout.js +59 -60
  31. package/dist/layout.js.map +1 -1
  32. package/dist/theme.js +4 -4
  33. package/dist/theme.js.map +1 -1
  34. package/package.json +24 -9
  35. package/scripts/atomix-cli.js +15 -1
  36. package/scripts/cli/__tests__/complexity-utils.test.js +24 -0
  37. package/scripts/cli/__tests__/detector.test.js +50 -0
  38. package/scripts/cli/__tests__/template-engine.test.js +23 -0
  39. package/scripts/cli/__tests__/test-setup.js +1 -133
  40. package/scripts/cli/commands/doctor.js +15 -3
  41. package/scripts/cli/commands/generate.js +113 -51
  42. package/scripts/cli/internal/ai-engine.js +30 -10
  43. package/scripts/cli/internal/complexity-utils.js +60 -0
  44. package/scripts/cli/internal/component-validator.js +49 -16
  45. package/scripts/cli/internal/generator.js +89 -36
  46. package/scripts/cli/internal/hook-generator.js +5 -2
  47. package/scripts/cli/internal/itcss-generator.js +16 -12
  48. package/scripts/cli/templates/next-templates.js +81 -30
  49. package/scripts/cli/templates/storybook-templates.js +12 -2
  50. package/scripts/cli/utils/detector.js +45 -7
  51. package/scripts/cli/utils/diagnostics.js +78 -0
  52. package/scripts/cli/utils/telemetry.js +13 -0
  53. package/src/components/Accordion/Accordion.stories.tsx +4 -0
  54. package/src/components/AtomixGlass/AtomixGlass.tsx +188 -128
  55. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +63 -91
  56. package/src/components/AtomixGlass/PerformanceDashboard.tsx +153 -201
  57. package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +9 -6
  58. package/src/components/AtomixGlass/glass-utils.ts +51 -1
  59. package/src/components/AtomixGlass/stories/AnimationFeatures.stories.tsx +52 -46
  60. package/src/components/AtomixGlass/stories/Examples.stories.tsx +573 -236
  61. package/src/components/AtomixGlass/stories/Playground.stories.tsx +88 -41
  62. package/src/components/AtomixGlass/stories/argTypes.ts +19 -19
  63. package/src/components/AtomixGlass/stories/shared-components.tsx +7 -12
  64. package/src/components/AtomixGlass/stories/types.ts +3 -3
  65. package/src/components/Button/Button.tsx +114 -57
  66. package/src/components/Callout/Callout.tsx +4 -4
  67. package/src/components/Chart/ChartRenderer.tsx +1 -1
  68. package/src/components/Chart/DonutChart.tsx +11 -8
  69. package/src/components/EdgePanel/EdgePanel.tsx +119 -115
  70. package/src/components/Form/Select.tsx +4 -4
  71. package/src/components/List/List.tsx +4 -4
  72. package/src/components/Navigation/SideMenu/SideMenu.tsx +6 -6
  73. package/src/components/PhotoViewer/PhotoViewerImage.tsx +1 -1
  74. package/src/components/ProductReview/ProductReview.tsx +4 -2
  75. package/src/components/Rating/Rating.tsx +4 -2
  76. package/src/components/SectionIntro/SectionIntro.tsx +4 -2
  77. package/src/components/Steps/Steps.tsx +1 -1
  78. package/src/components/Tabs/Tabs.tsx +5 -5
  79. package/src/components/Testimonial/Testimonial.tsx +4 -2
  80. package/src/components/VideoPlayer/VideoPlayer.tsx +4 -2
  81. package/src/layouts/CssGrid/CssGrid.stories.tsx +464 -0
  82. package/src/layouts/CssGrid/CssGrid.tsx +215 -0
  83. package/src/layouts/CssGrid/index.ts +8 -0
  84. package/src/layouts/CssGrid/scripts/CssGrid.js +284 -0
  85. package/src/layouts/CssGrid/scripts/index.js +43 -0
  86. package/src/layouts/Grid/scripts/Container.js +139 -0
  87. package/src/layouts/Grid/scripts/Grid.js +184 -0
  88. package/src/layouts/Grid/scripts/GridCol.js +273 -0
  89. package/src/layouts/Grid/scripts/Row.js +154 -0
  90. package/src/layouts/Grid/scripts/index.js +48 -0
  91. package/src/layouts/MasonryGrid/MasonryGrid.tsx +71 -59
  92. package/src/lib/composables/atomix-glass/useGlassSize.ts +1 -1
  93. package/src/lib/composables/useAccordion.ts +5 -5
  94. package/src/lib/composables/useAtomixGlass.ts +111 -74
  95. package/src/lib/composables/useAtomixGlassStyles.ts +0 -2
  96. package/src/lib/composables/useBarChart.ts +2 -2
  97. package/src/lib/composables/useChart.ts +3 -2
  98. package/src/lib/composables/useChartToolbar.ts +48 -66
  99. package/src/lib/composables/useDataTable.ts +1 -1
  100. package/src/lib/composables/useDatePicker.ts +2 -2
  101. package/src/lib/composables/useEdgePanel.ts +45 -54
  102. package/src/lib/composables/useHeroBackgroundSlider.ts +5 -5
  103. package/src/lib/composables/usePhotoViewer.ts +2 -3
  104. package/src/lib/composables/usePieChart.ts +1 -1
  105. package/src/lib/composables/usePopover.ts +151 -139
  106. package/src/lib/composables/useSideMenu.ts +28 -41
  107. package/src/lib/composables/useSlider.ts +2 -6
  108. package/src/lib/composables/useTooltip.ts +2 -2
  109. package/src/lib/config/index.ts +39 -0
  110. package/src/lib/constants/components.ts +1 -0
  111. package/src/lib/theme/devtools/Comparator.tsx +1 -1
  112. package/src/lib/theme/devtools/Inspector.tsx +1 -1
  113. package/src/lib/theme/devtools/LiveEditor.tsx +1 -1
  114. package/src/lib/theme/runtime/ThemeProvider.tsx +1 -1
  115. package/src/lib/types/components.ts +1 -0
  116. package/src/styles/01-settings/_index.scss +1 -0
  117. package/src/styles/01-settings/_settings.atomix-glass.scss +174 -0
  118. package/src/styles/01-settings/_settings.masonry-grid.scss +42 -6
  119. package/src/styles/02-tools/_tools.glass.scss +6 -0
  120. package/src/styles/05-objects/_objects.masonry-grid.scss +162 -24
  121. package/src/styles/06-components/_components.atomix-glass.scss +160 -99
  122. package/scripts/cli/__tests__/README.md +0 -81
  123. package/scripts/cli/__tests__/basic.test.js +0 -116
  124. package/scripts/cli/__tests__/clean.test.js +0 -278
  125. package/scripts/cli/__tests__/component-generator.test.js +0 -332
  126. package/scripts/cli/__tests__/component-validator.test.js +0 -433
  127. package/scripts/cli/__tests__/generator.test.js +0 -613
  128. package/scripts/cli/__tests__/glass-motion.test.js +0 -256
  129. package/scripts/cli/__tests__/integration.test.js +0 -938
  130. package/scripts/cli/__tests__/migrate.test.js +0 -74
  131. package/scripts/cli/__tests__/security.test.js +0 -206
  132. package/scripts/cli/__tests__/theme-bridge.test.js +0 -507
  133. package/scripts/cli/__tests__/token-manager.test.js +0 -251
  134. package/scripts/cli/__tests__/token-provider.test.js +0 -361
  135. package/scripts/cli/__tests__/utils.test.js +0 -165
  136. package/src/components/AtomixGlass/stories/AnimationTests.stories.tsx +0 -95
  137. package/src/components/AtomixGlass/stories/CardExamples.stories.tsx +0 -212
  138. package/src/components/AtomixGlass/stories/Customization.stories.tsx +0 -131
  139. package/src/components/AtomixGlass/stories/DashboardExamples.stories.tsx +0 -348
  140. package/src/components/AtomixGlass/stories/EcommerceExamples.stories.tsx +0 -410
  141. package/src/components/AtomixGlass/stories/FormExamples.stories.tsx +0 -436
  142. package/src/components/AtomixGlass/stories/HeroExamples.stories.tsx +0 -264
  143. package/src/components/AtomixGlass/stories/InteractivePlayground.stories.tsx +0 -247
  144. package/src/components/AtomixGlass/stories/MobileUIExamples.stories.tsx +0 -418
  145. package/src/components/AtomixGlass/stories/ModalExamples.stories.tsx +0 -402
  146. package/src/components/AtomixGlass/stories/Modes.stories.tsx +0 -1082
  147. package/src/components/AtomixGlass/stories/Overview.stories.tsx +0 -497
  148. package/src/components/AtomixGlass/stories/Performance.stories.tsx +0 -103
  149. package/src/components/AtomixGlass/stories/PresetGallery.stories.tsx +0 -335
  150. package/src/components/AtomixGlass/stories/Shaders.stories.tsx +0 -395
  151. package/src/components/AtomixGlass/stories/WidgetExamples.stories.tsx +0 -441
  152. package/src/components/TypedButton/TypedButton.stories.tsx +0 -59
  153. package/src/components/TypedButton/TypedButton.tsx +0 -39
  154. package/src/components/TypedButton/index.ts +0 -2
  155. package/src/lib/composables/useBreadcrumb.ts +0 -81
  156. package/src/lib/composables/useChartInteractions.ts +0 -123
  157. package/src/lib/composables/useChartPerformance.ts +0 -347
  158. package/src/lib/composables/useDropdown.ts +0 -338
  159. package/src/lib/composables/useModal.ts +0 -110
  160. package/src/lib/composables/useTypedButton.ts +0 -66
  161. package/src/lib/hooks/usePerformanceMonitor.ts +0 -148
  162. package/src/lib/utils/displacement-generator.ts +0 -92
  163. package/src/lib/utils/memoryMonitor.ts +0 -191
  164. package/src/styles/01-settings/_settings.testtypecheck.scss +0 -53
  165. package/src/styles/01-settings/_settings.typedbutton.scss +0 -53
  166. package/src/styles/06-components/_components.testbutton.scss +0 -212
  167. package/src/styles/06-components/_components.testtypecheck.scss +0 -212
  168. package/src/styles/06-components/_components.typedbutton.scss +0 -212
@@ -1,256 +0,0 @@
1
- /**
2
- * Glassmorphism & Motion Generator Tests
3
- * Tests for Phase 3: Premium UI & Animation System
4
- */
5
-
6
- import { describe, it, expect, beforeEach } from 'vitest';
7
- import {
8
- GLASS_PRESETS,
9
- generateGlassStyles,
10
- getGlassPresets,
11
- validateGlassConfig
12
- } from '../internal/glass-generator.js';
13
-
14
- import {
15
- ANIMATION_PRESETS,
16
- generateMotionTokens,
17
- getAnimationPresets
18
- } from '../internal/motion-generator.js';
19
-
20
- describe('Glass Generator', () => {
21
- describe('Glass Presets', () => {
22
- it('should have all predefined presets', () => {
23
- const presets = getGlassPresets();
24
-
25
- expect(presets).toContain('subtle');
26
- expect(presets).toContain('default');
27
- expect(presets).toContain('strong');
28
- expect(presets).toContain('frost');
29
- expect(presets).toContain('crystal');
30
- });
31
-
32
- it('should have valid preset configurations', () => {
33
- for (const [name, config] of Object.entries(GLASS_PRESETS)) {
34
- expect(config).toHaveProperty('displacementScale');
35
- expect(config).toHaveProperty('blurAmount');
36
- expect(config).toHaveProperty('saturation');
37
- expect(config).toHaveProperty('opacity');
38
- expect(config).toHaveProperty('borderOpacity');
39
-
40
- // Validate ranges
41
- expect(config.displacementScale).toBeGreaterThanOrEqual(0);
42
- expect(config.displacementScale).toBeLessThanOrEqual(100);
43
- expect(config.blurAmount).toBeGreaterThanOrEqual(0);
44
- expect(config.blurAmount).toBeLessThanOrEqual(50);
45
- expect(config.opacity).toBeGreaterThanOrEqual(0);
46
- expect(config.opacity).toBeLessThanOrEqual(1);
47
- }
48
- });
49
- });
50
-
51
- describe('Glass Styles Generation', () => {
52
- it('should generate glass styles with default preset', () => {
53
- const styles = generateGlassStyles('Button', 'default');
54
-
55
- expect(styles).toContain('.button--glass');
56
- expect(styles).toContain('backdrop-filter');
57
- expect(styles).toContain('background: rgba');
58
- expect(styles).toContain('&:hover');
59
- });
60
-
61
- it('should include dark mode styles', () => {
62
- const styles = generateGlassStyles('Card', 'strong');
63
-
64
- expect(styles).toContain('.dark .card--glass');
65
- });
66
-
67
- it('should include accessibility features', () => {
68
- const styles = generateGlassStyles('Modal', 'subtle');
69
-
70
- expect(styles).toContain('prefers-reduced-transparency');
71
- expect(styles).toContain('prefers-reduced-motion');
72
- });
73
-
74
- it('should generate different styles for different presets', () => {
75
- const subtleStyles = generateGlassStyles('Button', 'subtle');
76
- const crystalStyles = generateGlassStyles('Button', 'crystal');
77
-
78
- expect(subtleStyles).not.toBe(crystalStyles);
79
- expect(crystalStyles).toContain('blur(40px)');
80
- expect(subtleStyles).toContain('blur(5px)');
81
- });
82
- });
83
-
84
- describe('Glass Config Validation', () => {
85
- it('should validate correct configuration', () => {
86
- const result = validateGlassConfig({
87
- displacementScale: 20,
88
- blurAmount: 10,
89
- saturation: 200,
90
- opacity: 0.15
91
- });
92
-
93
- expect(result.valid).toBe(true);
94
- expect(result.issues).toHaveLength(0);
95
- });
96
-
97
- it('should reject invalid displacement scale', () => {
98
- const result = validateGlassConfig({
99
- displacementScale: 150 // Out of range
100
- });
101
-
102
- expect(result.valid).toBe(false);
103
- expect(result.issues).toContain('displacementScale must be between 0 and 100');
104
- });
105
-
106
- it('should reject invalid blur amount', () => {
107
- const result = validateGlassConfig({
108
- blurAmount: -5 // Negative
109
- });
110
-
111
- expect(result.valid).toBe(false);
112
- expect(result.issues).toContain('blurAmount must be between 0 and 50');
113
- });
114
-
115
- it('should reject invalid opacity', () => {
116
- const result = validateGlassConfig({
117
- opacity: 1.5 // > 1
118
- });
119
-
120
- expect(result.valid).toBe(false);
121
- expect(result.issues).toContain('opacity must be between 0 and 1');
122
- });
123
-
124
- it('should accept multiple validation errors', () => {
125
- const result = validateGlassConfig({
126
- displacementScale: 200,
127
- blurAmount: 100,
128
- opacity: 2
129
- });
130
-
131
- expect(result.valid).toBe(false);
132
- expect(result.issues.length).toBeGreaterThan(2);
133
- });
134
- });
135
- });
136
-
137
- describe('Motion Generator', () => {
138
- describe('Animation Presets', () => {
139
- it('should have all animation presets', () => {
140
- const presets = getAnimationPresets();
141
-
142
- expect(presets).toContain('fade');
143
- expect(presets).toContain('fadeIn');
144
- expect(presets).toContain('fadeOut');
145
- expect(presets).toContain('slideInUp');
146
- expect(presets).toContain('slideInDown');
147
- expect(presets).toContain('scaleIn');
148
- expect(presets).toContain('bounce');
149
- expect(presets).toContain('spin');
150
- expect(presets).toContain('shake');
151
- expect(presets).toContain('pulse');
152
- expect(presets).toContain('shimmer');
153
- });
154
-
155
- it('should have valid preset structure', () => {
156
- for (const [name, preset] of Object.entries(ANIMATION_PRESETS)) {
157
- expect(preset).toHaveProperty('keyframes');
158
- expect(preset).toHaveProperty('duration');
159
- expect(preset).toHaveProperty('easing');
160
-
161
- // Keyframes should be non-empty string
162
- expect(typeof preset.keyframes).toBe('string');
163
- expect(preset.keyframes.length).toBeGreaterThan(0);
164
- }
165
- });
166
- });
167
-
168
- describe('Motion Tokens Generation', () => {
169
- it('should generate duration scale tokens', () => {
170
- const tokens = generateMotionTokens();
171
-
172
- expect(tokens).toContain('--atomix-duration-instant');
173
- expect(tokens).toContain('--atomix-duration-fast');
174
- expect(tokens).toContain('--atomix-duration-base');
175
- expect(tokens).toContain('--atomix-duration-slow');
176
- });
177
-
178
- it('should generate easing tokens', () => {
179
- const tokens = generateMotionTokens();
180
-
181
- expect(tokens).toContain('--atomix-easing-linear');
182
- expect(tokens).toContain('--atomix-ease-in');
183
- expect(tokens).toContain('--atomix-ease-out');
184
- expect(tokens).toContain('--atomix-ease-in-out');
185
- expect(tokens).toContain('--atomix-easing-smooth');
186
- });
187
-
188
- it('should generate keyframe definitions', () => {
189
- const tokens = generateMotionTokens();
190
-
191
- expect(tokens).toContain('@keyframes atomix-fade-in');
192
- expect(tokens).toContain('@keyframes atomix-slide-in-up');
193
- expect(tokens).toContain('@keyframes atomix-scale-in');
194
- expect(tokens).toContain('@keyframes atomix-bounce');
195
- expect(tokens).toContain('@keyframes atomix-spin');
196
- });
197
-
198
- it('should generate utility classes', () => {
199
- const tokens = generateMotionTokens();
200
-
201
- expect(tokens).toContain('.atomix-animate-fade-in');
202
- expect(tokens).toContain('.atomix-animate-slide-in-up');
203
- expect(tokens).toContain('.atomix-animate-scale-in');
204
- expect(tokens).toContain('.atomix-animate-spin');
205
- });
206
-
207
- it('should include reduced motion media query', () => {
208
- const tokens = generateMotionTokens();
209
-
210
- expect(tokens).toContain('@media (prefers-reduced-motion: reduce)');
211
- expect(tokens).toContain('animation-duration: 0.01ms !important');
212
- });
213
-
214
- it('should generate transition presets', () => {
215
- const tokens = generateMotionTokens();
216
-
217
- expect(tokens).toContain('--atomix-transition-fast');
218
- expect(tokens).toContain('--atomix-transition-base');
219
- expect(tokens).toContain('--atomix-transition-colors');
220
- expect(tokens).toContain('--atomix-transition-opacity');
221
- });
222
- });
223
-
224
- describe('Component Animation Generation', () => {
225
- it('should generate component-specific animation config', () => {
226
- // This would be tested through generateComponentAnimation
227
- // which is exported but we're testing the pattern here
228
- expect(ANIMATION_PRESETS.fade).toBeDefined();
229
- expect(ANIMATION_PRESETS.fade.duration).toBe('var(--atomix-duration-base)');
230
- });
231
- });
232
- });
233
-
234
- describe('Integration Tests', () => {
235
- it('should work together for premium components', () => {
236
- // Verify both generators can be used together
237
- const glassStyles = generateGlassStyles('PremiumCard', 'crystal');
238
- const motionTokens = generateMotionTokens();
239
-
240
- expect(glassStyles).toBeDefined();
241
- expect(motionTokens).toBeDefined();
242
-
243
- // Both should include accessibility features
244
- expect(glassStyles).toContain('prefers-reduced');
245
- expect(motionTokens).toContain('prefers-reduced-motion');
246
- });
247
-
248
- it('should provide consistent design tokens', () => {
249
- const glassConfig = GLASS_PRESETS.default;
250
- const fadeAnimation = ANIMATION_PRESETS.fade;
251
-
252
- // Both should use CSS custom properties for theming
253
- expect(fadeAnimation.duration).toContain('var(--');
254
- expect(fadeAnimation.easing).toContain('var(--');
255
- });
256
- });