@shohojdhara/atomix 0.3.14 → 0.4.0

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 (343) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/build-tools/EXAMPLES.md +372 -0
  3. package/build-tools/README.md +242 -0
  4. package/build-tools/__tests__/error-handler.test.js +230 -0
  5. package/build-tools/__tests__/index.test.js +141 -0
  6. package/build-tools/__tests__/rollup-plugin.test.js +194 -0
  7. package/build-tools/__tests__/utils.test.js +161 -0
  8. package/build-tools/__tests__/vite-plugin.test.js +129 -0
  9. package/build-tools/__tests__/webpack-loader.test.js +190 -0
  10. package/build-tools/error-handler.js +308 -0
  11. package/build-tools/index.d.ts +44 -0
  12. package/build-tools/index.js +88 -0
  13. package/build-tools/package.json +50 -0
  14. package/build-tools/rollup-plugin.js +236 -0
  15. package/build-tools/types.d.ts +163 -0
  16. package/build-tools/utils.js +203 -0
  17. package/build-tools/vite-plugin.js +161 -0
  18. package/build-tools/webpack-loader.js +123 -0
  19. package/dist/atomix.css +21044 -2618
  20. package/dist/atomix.css.map +1 -1
  21. package/dist/atomix.min.css +77 -3
  22. package/dist/atomix.min.css.map +1 -1
  23. package/dist/build-tools/EXAMPLES.md +372 -0
  24. package/dist/build-tools/README.md +242 -0
  25. package/dist/build-tools/__tests__/error-handler.test.js +230 -0
  26. package/dist/build-tools/__tests__/index.test.js +141 -0
  27. package/dist/build-tools/__tests__/rollup-plugin.test.js +194 -0
  28. package/dist/build-tools/__tests__/utils.test.js +161 -0
  29. package/dist/build-tools/__tests__/vite-plugin.test.js +129 -0
  30. package/dist/build-tools/__tests__/webpack-loader.test.js +190 -0
  31. package/dist/build-tools/error-handler.js +308 -0
  32. package/dist/build-tools/index.d.ts +44 -0
  33. package/dist/build-tools/index.js +88 -0
  34. package/dist/build-tools/package.json +50 -0
  35. package/dist/build-tools/rollup-plugin.js +236 -0
  36. package/dist/build-tools/types.d.ts +163 -0
  37. package/dist/build-tools/utils.js +203 -0
  38. package/dist/build-tools/vite-plugin.js +161 -0
  39. package/dist/build-tools/webpack-loader.js +123 -0
  40. package/dist/charts.d.ts +1 -1
  41. package/dist/charts.js +86 -57
  42. package/dist/charts.js.map +1 -1
  43. package/dist/core.d.ts +1 -1
  44. package/dist/core.js +136 -112
  45. package/dist/core.js.map +1 -1
  46. package/dist/forms.d.ts +2 -5
  47. package/dist/forms.js +140 -128
  48. package/dist/forms.js.map +1 -1
  49. package/dist/heavy.d.ts +1 -1
  50. package/dist/heavy.js +136 -112
  51. package/dist/heavy.js.map +1 -1
  52. package/dist/index.d.ts +152 -78
  53. package/dist/index.esm.js +346 -340
  54. package/dist/index.esm.js.map +1 -1
  55. package/dist/index.js +359 -353
  56. package/dist/index.js.map +1 -1
  57. package/dist/index.min.js +1 -1
  58. package/dist/index.min.js.map +1 -1
  59. package/dist/layout.js.map +1 -1
  60. package/dist/theme.d.ts +9 -9
  61. package/dist/theme.js.map +1 -1
  62. package/package.json +23 -8
  63. package/scripts/atomix-cli.js +170 -73
  64. package/scripts/cli/__tests__/README.md +81 -0
  65. package/scripts/cli/__tests__/basic.test.js +115 -0
  66. package/scripts/cli/__tests__/component-generator.test.js +332 -0
  67. package/scripts/cli/__tests__/integration.test.js +327 -0
  68. package/scripts/cli/__tests__/test-setup.js +133 -0
  69. package/scripts/cli/__tests__/token-manager.test.js +251 -0
  70. package/scripts/cli/__tests__/utils.test.js +161 -0
  71. package/scripts/cli/component-generator.js +253 -299
  72. package/scripts/cli/dependency-checker.js +355 -0
  73. package/scripts/cli/interactive-init.js +46 -5
  74. package/scripts/cli/template-manager.js +0 -2
  75. package/scripts/cli/templates/common-templates.js +636 -0
  76. package/scripts/cli/templates/composable-templates.js +148 -126
  77. package/scripts/cli/templates/index.js +23 -16
  78. package/scripts/cli/templates/project-templates.js +151 -23
  79. package/scripts/cli/templates/react-templates.js +280 -210
  80. package/scripts/cli/templates/scss-templates.js +90 -91
  81. package/scripts/cli/templates/testing-templates.js +206 -27
  82. package/scripts/cli/templates/testing-utils.js +278 -0
  83. package/scripts/cli/templates/types-templates.js +70 -56
  84. package/scripts/cli/theme-bridge.js +8 -2
  85. package/scripts/cli/token-manager.js +318 -206
  86. package/scripts/cli/utils.js +0 -1
  87. package/src/components/Accordion/Accordion.stories.tsx +358 -850
  88. package/src/components/Accordion/Accordion.test.tsx +70 -50
  89. package/src/components/Accordion/Accordion.tsx +99 -94
  90. package/src/components/AtomixGlass/AtomixGlass.test.tsx +1 -1
  91. package/src/components/AtomixGlass/AtomixGlass.tsx +80 -39
  92. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +103 -81
  93. package/src/components/AtomixGlass/GlassFilter.tsx +9 -16
  94. package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +8 -7
  95. package/src/components/AtomixGlass/glass-utils.ts +6 -5
  96. package/src/components/AtomixGlass/shader-utils.ts +133 -52
  97. package/src/components/AtomixGlass/stories/Customization.stories.tsx +131 -0
  98. package/src/components/AtomixGlass/stories/Examples.stories.tsx +2957 -2853
  99. package/src/components/AtomixGlass/stories/Modes.stories.tsx +1 -1
  100. package/src/components/AtomixGlass/stories/Overview.stories.tsx +348 -0
  101. package/src/components/AtomixGlass/stories/Performance.stories.tsx +103 -0
  102. package/src/components/AtomixGlass/stories/Playground.stories.tsx +51 -36
  103. package/src/components/AtomixGlass/stories/{ShaderVariants.stories.tsx → Shaders.stories.tsx} +2 -2
  104. package/src/components/AtomixGlass/stories/shared-components.tsx +90 -190
  105. package/src/components/Avatar/Avatar.stories.tsx +195 -0
  106. package/src/components/Avatar/Avatar.tsx +58 -56
  107. package/src/components/Badge/Badge.stories.tsx +122 -352
  108. package/src/components/Badge/Badge.test.tsx +41 -41
  109. package/src/components/Badge/Badge.tsx +64 -62
  110. package/src/components/Block/Block.stories.tsx +30 -11
  111. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +142 -23
  112. package/src/components/Breadcrumb/Breadcrumb.tsx +62 -60
  113. package/src/components/Button/Button.stories.tsx +454 -1126
  114. package/src/components/Button/Button.test.tsx +123 -0
  115. package/src/components/Button/Button.tsx +88 -60
  116. package/src/components/Button/ButtonGroup.stories.tsx +376 -215
  117. package/src/components/Button/ButtonGroup.tsx +4 -15
  118. package/src/components/Callout/Callout.stories.tsx +316 -568
  119. package/src/components/Card/Card.stories.tsx +292 -81
  120. package/src/components/Card/Card.tsx +30 -14
  121. package/src/components/Chart/AreaChart.tsx +1 -1
  122. package/src/components/Chart/CandlestickChart.tsx +23 -16
  123. package/src/components/Chart/Chart.stories.tsx +153 -16
  124. package/src/components/Chart/Chart.tsx +40 -44
  125. package/src/components/Chart/ChartRenderer.tsx +39 -12
  126. package/src/components/Chart/ChartToolbar.tsx +21 -5
  127. package/src/components/Chart/DonutChart.tsx +1 -1
  128. package/src/components/Chart/FunnelChart.tsx +4 -1
  129. package/src/components/Chart/GaugeChart.tsx +3 -1
  130. package/src/components/Chart/HeatmapChart.tsx +50 -37
  131. package/src/components/Chart/LineChart.tsx +3 -2
  132. package/src/components/Chart/MultiAxisChart.tsx +24 -16
  133. package/src/components/Chart/RadarChart.tsx +19 -17
  134. package/src/components/Chart/ScatterChart.tsx +29 -21
  135. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +152 -66
  136. package/src/components/ColorModeToggle/ColorModeToggle.tsx +15 -3
  137. package/src/components/Countdown/Countdown.stories.tsx +114 -7
  138. package/src/components/DataTable/DataTable.stories.tsx +349 -144
  139. package/src/components/DataTable/DataTable.test.tsx +26 -148
  140. package/src/components/DataTable/DataTable.tsx +485 -456
  141. package/src/components/DatePicker/DatePicker.stories.tsx +310 -1066
  142. package/src/components/DatePicker/DatePicker.tsx +31 -26
  143. package/src/components/Dropdown/Dropdown.stories.tsx +153 -36
  144. package/src/components/Dropdown/Dropdown.tsx +313 -299
  145. package/src/components/EdgePanel/EdgePanel.stories.tsx +221 -25
  146. package/src/components/EdgePanel/EdgePanel.tsx +1 -3
  147. package/src/components/Footer/Footer.stories.tsx +396 -327
  148. package/src/components/Footer/Footer.tsx +130 -128
  149. package/src/components/Footer/FooterLink.tsx +2 -2
  150. package/src/components/Form/Checkbox.stories.tsx +140 -6
  151. package/src/components/Form/Checkbox.test.tsx +63 -0
  152. package/src/components/Form/Checkbox.tsx +122 -78
  153. package/src/components/Form/Form.stories.tsx +110 -19
  154. package/src/components/Form/FormGroup.stories.tsx +127 -4
  155. package/src/components/Form/Input.stories.tsx +22 -39
  156. package/src/components/Form/Input.test.tsx +38 -44
  157. package/src/components/Form/Radio.stories.tsx +146 -17
  158. package/src/components/Form/Radio.tsx +68 -66
  159. package/src/components/Form/Select.stories.tsx +140 -8
  160. package/src/components/Form/Select.tsx +184 -182
  161. package/src/components/Form/Textarea.stories.tsx +149 -6
  162. package/src/components/Form/Textarea.test.tsx +27 -32
  163. package/src/components/Hero/Hero.stories.tsx +372 -38
  164. package/src/components/Hero/Hero.tsx +201 -55
  165. package/src/components/Icon/index.ts +7 -1
  166. package/src/components/List/List.stories.tsx +141 -3
  167. package/src/components/List/List.tsx +19 -23
  168. package/src/components/Modal/Modal.stories.tsx +183 -43
  169. package/src/components/Modal/Modal.tsx +130 -127
  170. package/src/components/Navigation/Menu/MegaMenu.tsx +70 -70
  171. package/src/components/Navigation/Nav/NavDropdown.tsx +1 -5
  172. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +128 -28
  173. package/src/components/Navigation/SideMenu/SideMenu.tsx +5 -7
  174. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +4 -5
  175. package/src/components/Pagination/Pagination.stories.tsx +7 -4
  176. package/src/components/Pagination/Pagination.tsx +199 -202
  177. package/src/components/PhotoViewer/PhotoViewer.tsx +4 -1
  178. package/src/components/Popover/Popover.stories.tsx +354 -97
  179. package/src/components/Popover/Popover.tsx +41 -37
  180. package/src/components/Progress/Progress.stories.tsx +160 -7
  181. package/src/components/River/River.stories.tsx +3 -2
  182. package/src/components/SectionIntro/SectionIntro.stories.tsx +239 -47
  183. package/src/components/Slider/Slider.stories.tsx +12 -4
  184. package/src/components/Spinner/Spinner.stories.tsx +104 -8
  185. package/src/components/Spinner/Spinner.test.tsx +23 -23
  186. package/src/components/Spinner/Spinner.tsx +43 -46
  187. package/src/components/Steps/Steps.stories.tsx +173 -42
  188. package/src/components/Tabs/Tabs.stories.tsx +141 -12
  189. package/src/components/Tabs/Tabs.tsx +74 -72
  190. package/src/components/Testimonial/Testimonial.stories.tsx +120 -3
  191. package/src/components/Todo/Todo.stories.tsx +198 -9
  192. package/src/components/Toggle/Toggle.stories.tsx +137 -36
  193. package/src/components/Toggle/Toggle.test.tsx +65 -70
  194. package/src/components/Toggle/Toggle.tsx +4 -1
  195. package/src/components/Tooltip/Tooltip.stories.tsx +194 -100
  196. package/src/components/Tooltip/Tooltip.tsx +104 -106
  197. package/src/components/Upload/Upload.stories.tsx +241 -150
  198. package/src/components/Upload/Upload.tsx +287 -283
  199. package/src/components/VideoPlayer/VideoPlayer.tsx +6 -1
  200. package/src/components/index.ts +13 -2
  201. package/src/layouts/Grid/Grid.stories.tsx +9 -3
  202. package/src/layouts/MasonryGrid/MasonryGrid.tsx +5 -1
  203. package/src/lib/README.md +2 -2
  204. package/src/lib/__tests__/theme-tools.test.ts +219 -0
  205. package/src/lib/composables/index.ts +2 -2
  206. package/src/lib/composables/shared-mouse-tracker.ts +13 -14
  207. package/src/lib/composables/useAtomixGlass.ts +126 -97
  208. package/src/lib/composables/useChartExport.ts +3 -8
  209. package/src/lib/composables/useDataTable.ts +72 -43
  210. package/src/lib/composables/useHero.ts +58 -14
  211. package/src/lib/composables/useHeroBackgroundSlider.ts +2 -9
  212. package/src/lib/composables/useInput.ts +10 -8
  213. package/src/lib/composables/useSideMenu.ts +6 -5
  214. package/src/lib/composables/useTooltip.ts +1 -2
  215. package/src/lib/composables/useVideoPlayer.ts +44 -35
  216. package/src/lib/config/index.ts +154 -154
  217. package/src/lib/constants/components.ts +9 -32
  218. package/src/lib/constants/cssVariables.ts +29 -29
  219. package/src/lib/hooks/__tests__/useComponentCustomization.test.ts +2 -6
  220. package/src/lib/hooks/index.ts +1 -1
  221. package/src/lib/hooks/useComponentCustomization.ts +11 -17
  222. package/src/lib/hooks/usePerformanceMonitor.ts +6 -7
  223. package/src/lib/patterns/__tests__/slots.test.ts +1 -1
  224. package/src/lib/patterns/index.ts +1 -1
  225. package/src/lib/patterns/slots.tsx +8 -13
  226. package/src/lib/storybook/InteractiveDemo.tsx +13 -18
  227. package/src/lib/storybook/PreviewContainer.tsx +1 -1
  228. package/src/lib/storybook/VariantsGrid.tsx +3 -7
  229. package/src/lib/storybook/index.ts +1 -1
  230. package/src/lib/theme/adapters/cssVariableMapper.ts +47 -74
  231. package/src/lib/theme/adapters/index.ts +3 -9
  232. package/src/lib/theme/adapters/themeAdapter.ts +41 -26
  233. package/src/lib/theme/config/index.ts +1 -1
  234. package/src/lib/theme/config/types.ts +2 -2
  235. package/src/lib/theme/config/validator.ts +10 -5
  236. package/src/lib/theme/constants/constants.ts +2 -2
  237. package/src/lib/theme/constants/index.ts +1 -2
  238. package/src/lib/theme/core/__tests__/createTheme.test.ts +20 -22
  239. package/src/lib/theme/core/composeTheme.ts +32 -26
  240. package/src/lib/theme/core/createTheme.ts +1 -1
  241. package/src/lib/theme/core/createThemeObject.ts +308 -301
  242. package/src/lib/theme/core/index.ts +3 -3
  243. package/src/lib/theme/devtools/CLI.ts +107 -105
  244. package/src/lib/theme/devtools/Comparator.tsx +50 -32
  245. package/src/lib/theme/devtools/DesignTokensCustomizer.stories.tsx +50 -48
  246. package/src/lib/theme/devtools/DesignTokensCustomizer.tsx +257 -63
  247. package/src/lib/theme/devtools/Inspector.tsx +75 -60
  248. package/src/lib/theme/devtools/LiveEditor.tsx +97 -76
  249. package/src/lib/theme/devtools/Preview.tsx +150 -106
  250. package/src/lib/theme/devtools/ThemeValidator.ts +29 -21
  251. package/src/lib/theme/devtools/index.ts +3 -9
  252. package/src/lib/theme/devtools/useHistory.ts +23 -21
  253. package/src/lib/theme/errors/errors.ts +12 -11
  254. package/src/lib/theme/errors/index.ts +2 -7
  255. package/src/lib/theme/generators/generateCSS.ts +9 -13
  256. package/src/lib/theme/generators/generateCSSNested.ts +1 -6
  257. package/src/lib/theme/generators/generateCSSVariables.ts +673 -630
  258. package/src/lib/theme/generators/index.ts +1 -4
  259. package/src/lib/theme/i18n/index.ts +1 -1
  260. package/src/lib/theme/i18n/rtl.ts +13 -13
  261. package/src/lib/theme/index.ts +7 -16
  262. package/src/lib/theme/runtime/ThemeApplicator.ts +4 -4
  263. package/src/lib/theme/runtime/ThemeContext.tsx +1 -1
  264. package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +19 -23
  265. package/src/lib/theme/runtime/ThemeProvider.tsx +230 -239
  266. package/src/lib/theme/runtime/__tests__/ThemeProvider.integration.test.tsx +1 -1
  267. package/src/lib/theme/runtime/__tests__/ThemeProvider.test.tsx +24 -29
  268. package/src/lib/theme/runtime/index.ts +2 -5
  269. package/src/lib/theme/runtime/useTheme.ts +18 -18
  270. package/src/lib/theme/runtime/useThemeTokens.ts +22 -22
  271. package/src/lib/theme/test/testTheme.ts +15 -16
  272. package/src/lib/theme/tokens/index.ts +2 -7
  273. package/src/lib/theme/tokens/tokens.ts +25 -24
  274. package/src/lib/theme/types.ts +428 -411
  275. package/src/lib/theme/utils/__tests__/themeValidation.test.ts +3 -3
  276. package/src/lib/theme/utils/componentTheming.ts +18 -18
  277. package/src/lib/theme/utils/domUtils.ts +277 -289
  278. package/src/lib/theme/utils/index.ts +1 -2
  279. package/src/lib/theme/utils/injectCSS.ts +10 -14
  280. package/src/lib/theme/utils/naming.ts +20 -16
  281. package/src/lib/theme/utils/themeHelpers.ts +10 -12
  282. package/src/lib/theme/utils/themeUtils.ts +85 -86
  283. package/src/lib/theme/utils/themeValidation.ts +82 -33
  284. package/src/lib/theme-tools.ts +8 -6
  285. package/src/lib/types/components.ts +172 -71
  286. package/src/lib/types/partProps.ts +1 -1
  287. package/src/lib/utils/__tests__/csv.test.ts +45 -0
  288. package/src/lib/utils/componentUtils.ts +8 -12
  289. package/src/lib/utils/csv.ts +19 -0
  290. package/src/lib/utils/dataTableExport.ts +2 -15
  291. package/src/lib/utils/fontPreloader.ts +10 -19
  292. package/src/lib/utils/icons.ts +4 -1
  293. package/src/lib/utils/index.ts +2 -6
  294. package/src/lib/utils/memoryMonitor.ts +10 -8
  295. package/src/lib/utils/themeNaming.ts +2 -2
  296. package/src/styles/01-settings/_index.scss +1 -1
  297. package/src/styles/01-settings/_settings.accordion.scss +28 -7
  298. package/src/styles/01-settings/_settings.colors.scss +11 -11
  299. package/src/styles/01-settings/_settings.design-tokens.scss +61 -50
  300. package/src/styles/01-settings/_settings.navbar.scss +1 -1
  301. package/src/styles/01-settings/_settings.spacing.scss +3 -4
  302. package/src/styles/01-settings/_settings.tooltip.scss +1 -1
  303. package/src/styles/01-settings/_settings.typography.scss +4 -4
  304. package/src/styles/02-tools/_tools.button.scss +51 -21
  305. package/src/styles/02-tools/_tools.utility-api.scss +38 -12
  306. package/src/styles/03-generic/_generic.root.scss +4 -3
  307. package/src/styles/06-components/_components.accordion.scss +56 -14
  308. package/src/styles/06-components/_components.atomix-glass.scss +13 -9
  309. package/src/styles/06-components/_components.button.scss +16 -4
  310. package/src/styles/06-components/_components.callout.scss +27 -21
  311. package/src/styles/06-components/_components.card.scss +5 -14
  312. package/src/styles/06-components/_components.chart.scss +22 -19
  313. package/src/styles/06-components/_components.checkbox.scss +25 -17
  314. package/src/styles/06-components/_components.color-mode-toggle.scss +3 -1
  315. package/src/styles/06-components/_components.edge-panel.scss +9 -2
  316. package/src/styles/06-components/_components.footer.scss +1 -1
  317. package/src/styles/06-components/_components.side-menu.scss +5 -5
  318. package/src/styles/06-components/_components.toggle.scss +18 -0
  319. package/src/styles/06-components/_index.scss +1 -1
  320. package/src/styles/06-components/old.chart.styles.scss +0 -2
  321. package/src/styles/99-utilities/_index.scss +2 -0
  322. package/src/styles/99-utilities/_utilities.border.scss +69 -27
  323. package/src/styles/99-utilities/_utilities.display.scss +1 -1
  324. package/src/styles/99-utilities/_utilities.opacity.scss +10 -0
  325. package/src/styles/99-utilities/_utilities.position.scss +16 -9
  326. package/src/styles/99-utilities/_utilities.scss +2 -0
  327. package/src/styles/99-utilities/_utilities.sizes.scss +47 -18
  328. package/src/styles/99-utilities/_utilities.spacing.scss +118 -66
  329. package/src/styles/99-utilities/_utilities.text-gradient.scss +45 -0
  330. package/src/styles/99-utilities/_utilities.text.scss +67 -46
  331. package/themes/dark-complementary/README.md +98 -0
  332. package/themes/dark-complementary/index.scss +158 -0
  333. package/themes/default-light/README.md +81 -0
  334. package/themes/default-light/index.scss +154 -0
  335. package/themes/high-contrast/README.md +105 -0
  336. package/themes/high-contrast/index.scss +172 -0
  337. package/themes/test-theme/README.md +38 -0
  338. package/themes/test-theme/index.scss +47 -0
  339. package/scripts/cli/templates-original-backup.js +0 -1655
  340. package/scripts/cli/templates_backup.js +0 -684
  341. package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +0 -1438
  342. package/src/lib/composables/useButton.ts +0 -93
  343. package/src/lib/composables/useCheckbox.ts +0 -70
@@ -20,7 +20,9 @@ vi.mock('../Pagination/Pagination', () => ({
20
20
  Pagination: ({ currentPage, totalPages, onPageChange }: any) => (
21
21
  <div data-testid="pagination">
22
22
  <button onClick={() => onPageChange(currentPage - 1)}>Prev</button>
23
- <span>{currentPage} / {totalPages}</span>
23
+ <span>
24
+ {currentPage} / {totalPages}
25
+ </span>
24
26
  <button onClick={() => onPageChange(currentPage + 1)}>Next</button>
25
27
  </div>
26
28
  ),
@@ -100,25 +102,13 @@ describe('DataTable Component', () => {
100
102
  });
101
103
 
102
104
  it('displays empty message when no data', () => {
103
- render(
104
- <DataTable
105
- data={[]}
106
- columns={sampleColumns}
107
- emptyMessage="No records found"
108
- />
109
- );
105
+ render(<DataTable data={[]} columns={sampleColumns} emptyMessage="No records found" />);
110
106
 
111
107
  expect(screen.getByText('No records found')).toBeInTheDocument();
112
108
  });
113
109
 
114
110
  it('displays loading state', () => {
115
- render(
116
- <DataTable
117
- data={sampleData}
118
- columns={sampleColumns}
119
- loading={true}
120
- />
121
- );
111
+ render(<DataTable data={sampleData} columns={sampleColumns} loading={true} />);
122
112
 
123
113
  expect(screen.getByTestId('spinner')).toBeInTheDocument();
124
114
  });
@@ -126,13 +116,7 @@ describe('DataTable Component', () => {
126
116
 
127
117
  describe('Sorting', () => {
128
118
  it('renders sortable columns when sortable is enabled', () => {
129
- render(
130
- <DataTable
131
- data={sampleData}
132
- columns={sampleColumns}
133
- sortable={true}
134
- />
135
- );
119
+ render(<DataTable data={sampleData} columns={sampleColumns} sortable={true} />);
136
120
 
137
121
  const nameHeader = screen.getByText('Name').closest('th');
138
122
  expect(nameHeader).toHaveClass('c-data-table__header-cell--sortable');
@@ -141,12 +125,7 @@ describe('DataTable Component', () => {
141
125
  it('calls onSort when column header is clicked', () => {
142
126
  const handleSort = vi.fn();
143
127
  render(
144
- <DataTable
145
- data={sampleData}
146
- columns={sampleColumns}
147
- sortable={true}
148
- onSort={handleSort}
149
- />
128
+ <DataTable data={sampleData} columns={sampleColumns} sortable={true} onSort={handleSort} />
150
129
  );
151
130
 
152
131
  const nameHeader = screen.getByText('Name').closest('th');
@@ -163,26 +142,14 @@ describe('DataTable Component', () => {
163
142
 
164
143
  describe('Filtering', () => {
165
144
  it('renders search input when filterable is enabled', () => {
166
- render(
167
- <DataTable
168
- data={sampleData}
169
- columns={sampleColumns}
170
- filterable={true}
171
- />
172
- );
145
+ render(<DataTable data={sampleData} columns={sampleColumns} filterable={true} />);
173
146
 
174
147
  const searchInput = screen.getByPlaceholderText('Search...');
175
148
  expect(searchInput).toBeInTheDocument();
176
149
  });
177
150
 
178
151
  it('filters data when search query is entered', async () => {
179
- render(
180
- <DataTable
181
- data={sampleData}
182
- columns={sampleColumns}
183
- filterable={true}
184
- />
185
- );
152
+ render(<DataTable data={sampleData} columns={sampleColumns} filterable={true} />);
186
153
 
187
154
  const searchInput = screen.getByPlaceholderText('Search...');
188
155
  fireEvent.change(searchInput, { target: { value: 'John' } });
@@ -194,13 +161,7 @@ describe('DataTable Component', () => {
194
161
  });
195
162
 
196
163
  it('renders column filters when columnFilters is enabled', () => {
197
- render(
198
- <DataTable
199
- data={sampleData}
200
- columns={sampleColumns}
201
- columnFilters={true}
202
- />
203
- );
164
+ render(<DataTable data={sampleData} columns={sampleColumns} columnFilters={true} />);
204
165
 
205
166
  const columnFilters = screen.getAllByPlaceholderText('Filter...');
206
167
  expect(columnFilters.length).toBeGreaterThan(0);
@@ -209,26 +170,13 @@ describe('DataTable Component', () => {
209
170
 
210
171
  describe('Pagination', () => {
211
172
  it('renders pagination when paginated is enabled', () => {
212
- render(
213
- <DataTable
214
- data={sampleData}
215
- columns={sampleColumns}
216
- paginated={true}
217
- pageSize={2}
218
- />
219
- );
173
+ render(<DataTable data={sampleData} columns={sampleColumns} paginated={true} pageSize={2} />);
220
174
 
221
175
  expect(screen.getByTestId('pagination')).toBeInTheDocument();
222
176
  });
223
177
 
224
178
  it('does not render pagination when paginated is false', () => {
225
- render(
226
- <DataTable
227
- data={sampleData}
228
- columns={sampleColumns}
229
- paginated={false}
230
- />
231
- );
179
+ render(<DataTable data={sampleData} columns={sampleColumns} paginated={false} />);
232
180
 
233
181
  expect(screen.queryByTestId('pagination')).not.toBeInTheDocument();
234
182
  });
@@ -236,26 +184,14 @@ describe('DataTable Component', () => {
236
184
 
237
185
  describe('Row Selection', () => {
238
186
  it('renders selection checkboxes when selectionMode is multiple', () => {
239
- render(
240
- <DataTable
241
- data={sampleData}
242
- columns={sampleColumns}
243
- selectionMode="multiple"
244
- />
245
- );
187
+ render(<DataTable data={sampleData} columns={sampleColumns} selectionMode="multiple" />);
246
188
 
247
189
  const checkboxes = screen.getAllByTestId('checkbox');
248
190
  expect(checkboxes.length).toBeGreaterThan(0);
249
191
  });
250
192
 
251
193
  it('renders select all checkbox in header for multiple selection', () => {
252
- render(
253
- <DataTable
254
- data={sampleData}
255
- columns={sampleColumns}
256
- selectionMode="multiple"
257
- />
258
- );
194
+ render(<DataTable data={sampleData} columns={sampleColumns} selectionMode="multiple" />);
259
195
 
260
196
  const checkboxes = screen.getAllByTestId('checkbox');
261
197
  // Should have at least one checkbox (select all)
@@ -285,13 +221,7 @@ describe('DataTable Component', () => {
285
221
  describe('Row Click', () => {
286
222
  it('calls onRowClick when row is clicked', () => {
287
223
  const handleRowClick = vi.fn();
288
- render(
289
- <DataTable
290
- data={sampleData}
291
- columns={sampleColumns}
292
- onRowClick={handleRowClick}
293
- />
294
- );
224
+ render(<DataTable data={sampleData} columns={sampleColumns} onRowClick={handleRowClick} />);
295
225
 
296
226
  const row = screen.getByText('John Doe').closest('tr');
297
227
  fireEvent.click(row!);
@@ -302,26 +232,14 @@ describe('DataTable Component', () => {
302
232
 
303
233
  describe('Export Functionality', () => {
304
234
  it('renders export dropdown when exportable is enabled', () => {
305
- render(
306
- <DataTable
307
- data={sampleData}
308
- columns={sampleColumns}
309
- exportable={true}
310
- />
311
- );
235
+ render(<DataTable data={sampleData} columns={sampleColumns} exportable={true} />);
312
236
 
313
237
  const exportButton = screen.getByText('Export');
314
238
  expect(exportButton).toBeInTheDocument();
315
239
  });
316
240
 
317
241
  it('does not render export when exportable is false', () => {
318
- render(
319
- <DataTable
320
- data={sampleData}
321
- columns={sampleColumns}
322
- exportable={false}
323
- />
324
- );
242
+ render(<DataTable data={sampleData} columns={sampleColumns} exportable={false} />);
325
243
 
326
244
  expect(screen.queryByText('Export')).not.toBeInTheDocument();
327
245
  });
@@ -329,13 +247,7 @@ describe('DataTable Component', () => {
329
247
 
330
248
  describe('Column Visibility', () => {
331
249
  it('renders column visibility dropdown when showColumnVisibility is enabled', () => {
332
- render(
333
- <DataTable
334
- data={sampleData}
335
- columns={sampleColumns}
336
- showColumnVisibility={true}
337
- />
338
- );
250
+ render(<DataTable data={sampleData} columns={sampleColumns} showColumnVisibility={true} />);
339
251
 
340
252
  const columnsButton = screen.getByText('Columns');
341
253
  expect(columnsButton).toBeInTheDocument();
@@ -345,11 +257,7 @@ describe('DataTable Component', () => {
345
257
  describe('Styling Variants', () => {
346
258
  it('applies striped class when striped is enabled', () => {
347
259
  const { container } = render(
348
- <DataTable
349
- data={sampleData}
350
- columns={sampleColumns}
351
- striped={true}
352
- />
260
+ <DataTable data={sampleData} columns={sampleColumns} striped={true} />
353
261
  );
354
262
 
355
263
  const table = container.querySelector('.c-data-table');
@@ -358,11 +266,7 @@ describe('DataTable Component', () => {
358
266
 
359
267
  it('applies bordered class when bordered is enabled', () => {
360
268
  const { container } = render(
361
- <DataTable
362
- data={sampleData}
363
- columns={sampleColumns}
364
- bordered={true}
365
- />
269
+ <DataTable data={sampleData} columns={sampleColumns} bordered={true} />
366
270
  );
367
271
 
368
272
  const table = container.querySelector('.c-data-table');
@@ -371,11 +275,7 @@ describe('DataTable Component', () => {
371
275
 
372
276
  it('applies dense class when dense is enabled', () => {
373
277
  const { container } = render(
374
- <DataTable
375
- data={sampleData}
376
- columns={sampleColumns}
377
- dense={true}
378
- />
278
+ <DataTable data={sampleData} columns={sampleColumns} dense={true} />
379
279
  );
380
280
 
381
281
  const table = container.querySelector('.c-data-table');
@@ -384,11 +284,7 @@ describe('DataTable Component', () => {
384
284
 
385
285
  it('applies sticky header class when stickyHeader is enabled', () => {
386
286
  const { container } = render(
387
- <DataTable
388
- data={sampleData}
389
- columns={sampleColumns}
390
- stickyHeader={true}
391
- />
287
+ <DataTable data={sampleData} columns={sampleColumns} stickyHeader={true} />
392
288
  );
393
289
 
394
290
  const table = container.querySelector('.c-data-table');
@@ -402,16 +298,11 @@ describe('DataTable Component', () => {
402
298
  {
403
299
  key: 'name',
404
300
  title: 'Name',
405
- render: (value) => <strong>{value}</strong>,
301
+ render: value => <strong>{value}</strong>,
406
302
  },
407
303
  ];
408
304
 
409
- render(
410
- <DataTable
411
- data={[{ name: 'John Doe' }]}
412
- columns={columnsWithRender}
413
- />
414
- );
305
+ render(<DataTable data={[{ name: 'John Doe' }]} columns={columnsWithRender} />);
415
306
 
416
307
  const strongElement = screen.getByText('John Doe').closest('strong');
417
308
  expect(strongElement).toBeInTheDocument();
@@ -420,13 +311,7 @@ describe('DataTable Component', () => {
420
311
 
421
312
  describe('Accessibility', () => {
422
313
  it('applies correct ARIA attributes for sortable columns', () => {
423
- render(
424
- <DataTable
425
- data={sampleData}
426
- columns={sampleColumns}
427
- sortable={true}
428
- />
429
- );
314
+ render(<DataTable data={sampleData} columns={sampleColumns} sortable={true} />);
430
315
 
431
316
  const nameHeader = screen.getByText('Name').closest('th');
432
317
  expect(nameHeader).toHaveAttribute('aria-sort');
@@ -434,17 +319,10 @@ describe('DataTable Component', () => {
434
319
 
435
320
  it('applies role="button" to clickable rows', () => {
436
321
  const handleRowClick = vi.fn();
437
- render(
438
- <DataTable
439
- data={sampleData}
440
- columns={sampleColumns}
441
- onRowClick={handleRowClick}
442
- />
443
- );
322
+ render(<DataTable data={sampleData} columns={sampleColumns} onRowClick={handleRowClick} />);
444
323
 
445
324
  const row = screen.getByText('John Doe').closest('tr');
446
325
  expect(row).toHaveAttribute('role', 'button');
447
326
  });
448
327
  });
449
328
  });
450
-