@shohojdhara/atomix 0.1.16 → 0.1.18

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 (525) hide show
  1. package/CONTRIBUTING.md +151 -0
  2. package/NEXTJS_INTEGRATION.md +358 -0
  3. package/README.md +168 -119
  4. package/babel.config.js +58 -0
  5. package/css.d.ts +10 -0
  6. package/dist/css/atomix.css +1 -2
  7. package/dist/js/194.js +1 -2
  8. package/dist/js/244.js +1 -0
  9. package/dist/js/atomix.react.cjs.js +1 -0
  10. package/dist/js/atomix.react.esm.js +1 -2
  11. package/dist/js/atomix.react.umd.js +1 -2
  12. package/dist/js/chunks/cjs/202.9d3b1ef1eaa0d5c8a309.js +1 -0
  13. package/dist/js/chunks/cjs/308.6ea9685ea38ead4120d0.js +1 -0
  14. package/dist/js/chunks/cjs/54.73db6922594e421ba6b1.js +1 -0
  15. package/dist/js/chunks/cjs/619.51feecaadcab819780d4.js +1 -0
  16. package/dist/js/chunks/cjs/690.90f6d11164081cbcbc4d.js +1 -0
  17. package/dist/js/chunks/cjs/894.24877561df336a8dfd14.js +1 -0
  18. package/dist/js/chunks/cjs/897.6c2a71fae95338890de7.js +1 -0
  19. package/dist/js/chunks/esm/{202.ff48d27672233280e021.js → 202.82aa7b3244e53c9edb72.js} +1 -2
  20. package/dist/js/chunks/esm/{308.f873332126eba90e5c62.js → 308.27e1e4005705ae320432.js} +1 -2
  21. package/dist/js/chunks/esm/{54.4db919e5e4e5cc6d7c72.js → 54.ece1fd6964f98d4d994f.js} +1 -2
  22. package/dist/js/chunks/esm/{619.afc5a718eff77fa423b5.js → 619.ebeb0298432a066ac05c.js} +1 -2
  23. package/dist/js/chunks/esm/{690.a9e968c7497d61e56cdc.js → 690.c5f412cc979b55740359.js} +1 -2
  24. package/dist/js/chunks/esm/{894.f1091a4a8758c26d29e4.js → 894.3604ddc9367d75191198.js} +1 -2
  25. package/dist/js/chunks/esm/{897.561a50f7d043d42169da.js → 897.a4aab2fad9401693eb12.js} +1 -2
  26. package/dist/js/chunks/umd/{202.dac7605cc555b6bda542.js → 202.5017dd0403d696bf1644.js} +1 -2
  27. package/dist/js/chunks/umd/{308.6709979849dcbdb90c9b.js → 308.4bc14b9d7b16b6ee0ab8.js} +1 -2
  28. package/dist/js/chunks/umd/{54.403470e1f7d0ef4424a7.js → 54.7fdfb4a031989470a70d.js} +1 -2
  29. package/dist/js/chunks/umd/{619.fa05ea98c10270eb64c5.js → 619.84a0c35ecee695250085.js} +1 -2
  30. package/dist/js/chunks/umd/{690.aa7054d1c53e5402c2d6.js → 690.d7041094a34a4a434be2.js} +1 -2
  31. package/dist/js/chunks/umd/{894.3e1eaf0a2aadf4434390.js → 894.c127ee4e9513c22ee97d.js} +1 -2
  32. package/dist/js/chunks/umd/{897.554ea37be4453698c167.js → 897.26932ac837a39fc91907.js} +1 -2
  33. package/dist/types/components/Badge/index.d.ts +3 -3
  34. package/dist/types/components/{Navbar → Navigation/Menu}/MegaMenu.d.ts +1 -1
  35. package/dist/types/components/{Navbar → Navigation/Menu}/Menu.d.ts +1 -1
  36. package/dist/types/components/Navigation/Nav/Nav.d.ts +20 -0
  37. package/dist/types/components/{Navbar → Navigation/Nav}/NavDropdown.d.ts +1 -1
  38. package/dist/types/components/Navigation/Nav/NavItem.d.ts +33 -0
  39. package/dist/types/components/Navigation/Navbar/Navbar.d.ts +19 -0
  40. package/dist/types/components/Navigation/SideMenu/SideMenu.d.ts +20 -0
  41. package/dist/types/components/Navigation/SideMenu/SideMenuItem.d.ts +30 -0
  42. package/dist/types/components/Navigation/SideMenu/SideMenuList.d.ts +17 -0
  43. package/dist/types/components/Navigation/index.d.ts +10 -0
  44. package/dist/types/components/PhotoViewer/PhotoViewer.d.ts +2 -2
  45. package/dist/types/components/PhotoViewer/PhotoViewerHeader.d.ts +2 -2
  46. package/dist/types/components/Tab/index.d.ts +2 -2
  47. package/dist/types/components/Toggle/index.d.ts +2 -2
  48. package/dist/types/components/Tooltip/index.d.ts +3 -3
  49. package/dist/types/components/index.d.ts +1 -1
  50. package/dist/types/lib/composables/index.d.ts +1 -0
  51. package/dist/types/lib/composables/useDatePicker.d.ts +1 -1
  52. package/dist/types/lib/composables/useDropdown.d.ts +1 -1
  53. package/dist/types/lib/composables/useModal.d.ts +1 -1
  54. package/dist/types/lib/composables/usePhotoViewer.d.ts +1 -1
  55. package/dist/types/lib/composables/useRating.d.ts +1 -1
  56. package/dist/types/lib/composables/useSideMenu.d.ts +28 -0
  57. package/dist/types/lib/constants/components.d.ts +72 -0
  58. package/dist/types/lib/types/components.d.ts +103 -0
  59. package/examples/nextjs-example.tsx +271 -0
  60. package/implementation-guide.md +505 -0
  61. package/next.config.js +69 -0
  62. package/package.json +80 -42
  63. package/postcss.config.js +28 -0
  64. package/src/Introduction.mdx +3 -5
  65. package/src/assets/fonts/HelveticaNeue/stylesheet.css +140 -127
  66. package/src/components/Accordion/Accordion.stories.tsx +58 -45
  67. package/src/components/Accordion/Accordion.tsx +14 -4
  68. package/src/components/Accordion/scripts/accordionInteractions.ts +9 -9
  69. package/src/components/Accordion/scripts/bundle.ts +1 -1
  70. package/src/components/Accordion/scripts/index.ts +3 -3
  71. package/src/components/AtomixLogo.tsx +13 -19
  72. package/src/components/Avatar/Avatar.stories.tsx +24 -21
  73. package/src/components/Avatar/Avatar.tsx +5 -8
  74. package/src/components/Avatar/AvatarGroup.tsx +11 -11
  75. package/src/components/Avatar/index.ts +1 -1
  76. package/src/components/Avatar/scripts/index.ts +66 -71
  77. package/src/components/Badge/Badge.stories.tsx +51 -21
  78. package/src/components/Badge/Badge.tsx +14 -12
  79. package/src/components/Badge/index.ts +3 -3
  80. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +40 -40
  81. package/src/components/Breadcrumb/Breadcrumb.tsx +19 -26
  82. package/src/components/Breadcrumb/index.ts +1 -1
  83. package/src/components/Breadcrumb/scripts/breadcrumb.ts +36 -34
  84. package/src/components/Breadcrumb/scripts/index.ts +1 -1
  85. package/src/components/Breadcrumb/scripts/types.ts +9 -9
  86. package/src/components/Button/Button.stories.tsx +36 -12
  87. package/src/components/Button/Button.tsx +52 -39
  88. package/src/components/Button/index.ts +1 -1
  89. package/src/components/Button/scripts/buttonInteractions.ts +9 -9
  90. package/src/components/Button/scripts/index.ts +1 -1
  91. package/src/components/Callout/Callout.stories.tsx +207 -114
  92. package/src/components/Callout/Callout.tsx +12 -12
  93. package/src/components/Callout/index.ts +1 -1
  94. package/src/components/Callout/scripts/CalloutInteractions.ts +58 -48
  95. package/src/components/Callout/scripts/bundle.ts +2 -2
  96. package/src/components/Callout/scripts/index.ts +19 -15
  97. package/src/components/Card/Card.stories.tsx +2 -2
  98. package/src/components/Card/Card.tsx +49 -72
  99. package/src/components/Card/ElevationCard.tsx +4 -8
  100. package/src/components/Card/index.ts +1 -1
  101. package/src/components/Card/scripts/bundle.ts +7 -7
  102. package/src/components/Card/scripts/cardInteractions.ts +24 -24
  103. package/src/components/Card/scripts/index.ts +25 -26
  104. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +6 -3
  105. package/src/components/ColorModeToggle/ColorModeToggle.tsx +12 -15
  106. package/src/components/ColorModeToggle/index.ts +1 -1
  107. package/src/components/Countdown/Countdown.stories.tsx +6 -2
  108. package/src/components/Countdown/Countdown.tsx +56 -48
  109. package/src/components/Countdown/index.ts +1 -1
  110. package/src/components/Countdown/scripts/index.ts +33 -28
  111. package/src/components/DataTable/DataTable.stories.tsx +23 -18
  112. package/src/components/DataTable/DataTable.tsx +39 -39
  113. package/src/components/DataTable/index.ts +1 -1
  114. package/src/components/DataTable/scripts/bundle.ts +8 -3
  115. package/src/components/DataTable/scripts/index.ts +182 -164
  116. package/src/components/DatePicker/DatePicker.stories.tsx +136 -148
  117. package/src/components/DatePicker/DatePicker.tsx +461 -420
  118. package/src/components/DatePicker/scripts/bundle.ts +12 -7
  119. package/src/components/DatePicker/scripts/componentInteractions.ts +76 -46
  120. package/src/components/DatePicker/scripts/index.ts +176 -156
  121. package/src/components/DatePicker/types.ts +32 -32
  122. package/src/components/DatePicker/utils.ts +41 -30
  123. package/src/components/Dropdown/Dropdown.stories.tsx +85 -55
  124. package/src/components/Dropdown/Dropdown.tsx +97 -88
  125. package/src/components/Dropdown/index.ts +5 -10
  126. package/src/components/Dropdown/scripts/bundle.ts +10 -10
  127. package/src/components/Dropdown/scripts/componentInteractions.ts +10 -2
  128. package/src/components/Dropdown/scripts/index.ts +122 -117
  129. package/src/components/EdgePanel/EdgePanel.stories.tsx +142 -58
  130. package/src/components/EdgePanel/EdgePanel.tsx +7 -13
  131. package/src/components/EdgePanel/index.ts +1 -1
  132. package/src/components/EdgePanel/scripts/bundle.ts +5 -5
  133. package/src/components/EdgePanel/scripts/edgePanelInteractions.ts +26 -26
  134. package/src/components/EdgePanel/scripts/index.ts +53 -53
  135. package/src/components/Form/Checkbox.stories.tsx +2 -2
  136. package/src/components/Form/Checkbox.tsx +13 -7
  137. package/src/components/Form/Form.stories.tsx +144 -218
  138. package/src/components/Form/Form.tsx +6 -6
  139. package/src/components/Form/FormGroup.stories.tsx +21 -38
  140. package/src/components/Form/FormGroup.tsx +18 -20
  141. package/src/components/Form/Input.stories.tsx +1 -1
  142. package/src/components/Form/Input.tsx +18 -8
  143. package/src/components/Form/Radio.stories.tsx +12 -25
  144. package/src/components/Form/Radio.tsx +11 -6
  145. package/src/components/Form/Select.stories.tsx +6 -6
  146. package/src/components/Form/Select.tsx +31 -33
  147. package/src/components/Form/Textarea.stories.tsx +7 -2
  148. package/src/components/Form/Textarea.tsx +17 -8
  149. package/src/components/Form/index.ts +1 -1
  150. package/src/components/Hero/Hero.stories.tsx +44 -42
  151. package/src/components/Hero/Hero.tsx +28 -38
  152. package/src/components/Hero/index.ts +1 -1
  153. package/src/components/Hero/scripts/bundle.ts +6 -6
  154. package/src/components/Hero/scripts/heroInteractions.ts +24 -29
  155. package/src/components/Hero/scripts/index.ts +16 -17
  156. package/src/components/Icon/Icon.tsx +16 -18
  157. package/src/components/Icon/index.ts +1 -1
  158. package/src/components/List/List.stories.tsx +1 -3
  159. package/src/components/List/List.tsx +6 -10
  160. package/src/components/List/ListGroup.tsx +1 -1
  161. package/src/components/List/index.ts +1 -1
  162. package/src/components/Messages/Messages.stories.tsx +30 -29
  163. package/src/components/Messages/Messages.tsx +60 -55
  164. package/src/components/Messages/index.ts +1 -1
  165. package/src/components/Messages/scripts/bundle.ts +1 -6
  166. package/src/components/Messages/scripts/componentInteractions.ts +32 -37
  167. package/src/components/Messages/scripts/index.ts +61 -55
  168. package/src/components/Modal/Modal.stories.tsx +77 -53
  169. package/src/components/Modal/Modal.tsx +63 -62
  170. package/src/components/Modal/index.ts +1 -1
  171. package/src/components/Modal/scripts/bundle.ts +3 -3
  172. package/src/components/Modal/scripts/index.ts +96 -84
  173. package/src/components/Modal/scripts/modalInteractions.ts +16 -14
  174. package/src/components/{Navbar → Navigation/Menu}/MegaMenu.tsx +50 -59
  175. package/src/components/Navigation/Menu/Menu.stories.tsx +340 -0
  176. package/src/components/Navigation/Menu/Menu.tsx +110 -0
  177. package/src/components/Navigation/Nav/Nav.stories.tsx +458 -0
  178. package/src/components/Navigation/Nav/Nav.tsx +50 -0
  179. package/src/components/Navigation/Nav/NavDropdown.tsx +105 -0
  180. package/src/components/Navigation/Nav/NavItem.tsx +159 -0
  181. package/src/components/{Navbar → Navigation/Navbar}/Navbar.stories.tsx +198 -104
  182. package/src/components/Navigation/Navbar/Navbar.tsx +150 -0
  183. package/src/components/Navigation/README.md +314 -0
  184. package/src/components/Navigation/SideMenu/SideMenu.README.md +494 -0
  185. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +618 -0
  186. package/src/components/Navigation/SideMenu/SideMenu.tsx +101 -0
  187. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +95 -0
  188. package/src/components/Navigation/SideMenu/SideMenuList.tsx +41 -0
  189. package/src/components/Navigation/index.ts +23 -0
  190. package/src/components/Navigation/scripts/NavbarInteractions.ts +171 -0
  191. package/src/components/Navigation/scripts/SideMenu.ts +319 -0
  192. package/src/components/Navigation/scripts/SideMenuBundle.ts +69 -0
  193. package/src/components/Navigation/scripts/SideMenuInteractions.ts +250 -0
  194. package/src/components/Navigation/scripts/bundle.ts +58 -0
  195. package/src/components/Navigation/scripts/index.ts +248 -0
  196. package/src/components/Pagination/Pagination.stories.tsx +34 -33
  197. package/src/components/Pagination/Pagination.tsx +25 -35
  198. package/src/components/Pagination/index.ts +1 -1
  199. package/src/components/Pagination/scripts/index.ts +42 -37
  200. package/src/components/PhotoViewer/PhotoViewer.stories.tsx +48 -48
  201. package/src/components/PhotoViewer/PhotoViewer.tsx +29 -46
  202. package/src/components/PhotoViewer/PhotoViewerHeader.tsx +20 -26
  203. package/src/components/PhotoViewer/PhotoViewerImage.tsx +19 -17
  204. package/src/components/PhotoViewer/PhotoViewerInfo.tsx +13 -5
  205. package/src/components/PhotoViewer/PhotoViewerNavigation.tsx +5 -5
  206. package/src/components/PhotoViewer/PhotoViewerThumbnails.tsx +31 -30
  207. package/src/components/PhotoViewer/examples/ImageGallery.tsx +27 -37
  208. package/src/components/PhotoViewer/examples/SimpleGallery.tsx +19 -13
  209. package/src/components/PhotoViewer/examples/index.ts +1 -1
  210. package/src/components/PhotoViewer/index.ts +1 -1
  211. package/src/components/PhotoViewer/scripts/PhotoViewerInteractions.ts +43 -33
  212. package/src/components/PhotoViewer/scripts/bundle.ts +14 -14
  213. package/src/components/PhotoViewer/scripts/index.ts +173 -129
  214. package/src/components/Popover/Popover.stories.tsx +11 -12
  215. package/src/components/Popover/Popover.tsx +36 -36
  216. package/src/components/Popover/index.ts +1 -1
  217. package/src/components/Popover/scripts/bundle.ts +1 -1
  218. package/src/components/Popover/scripts/componentInteractions.ts +34 -46
  219. package/src/components/Popover/scripts/index.ts +64 -53
  220. package/src/components/ProductReview/ProductReview.stories.tsx +10 -8
  221. package/src/components/ProductReview/ProductReview.tsx +28 -32
  222. package/src/components/ProductReview/scripts/componentInteractions.ts +20 -20
  223. package/src/components/Progress/Progress.tsx +36 -34
  224. package/src/components/Progress/scripts/bundle.ts +7 -2
  225. package/src/components/Progress/scripts/componentInteractions.ts +29 -23
  226. package/src/components/Progress/scripts/index.ts +45 -39
  227. package/src/components/Rating/Rating.stories.tsx +3 -16
  228. package/src/components/Rating/Rating.tsx +250 -231
  229. package/src/components/Rating/scripts/bundle.ts +11 -6
  230. package/src/components/Rating/scripts/index.ts +85 -80
  231. package/src/components/Rating/scripts/ratingInteractions.ts +27 -24
  232. package/src/components/River/River.stories.tsx +70 -24
  233. package/src/components/River/River.tsx +28 -38
  234. package/src/components/River/index.ts +1 -1
  235. package/src/components/River/scripts/index.ts +11 -12
  236. package/src/components/SectionIntro/SectionIntro.stories.tsx +12 -9
  237. package/src/components/SectionIntro/SectionIntro.tsx +25 -31
  238. package/src/components/SectionIntro/scripts/componentInteractions.ts +1 -1
  239. package/src/components/SectionIntro/scripts/index.ts +30 -16
  240. package/src/components/Spinner/Spinner.stories.tsx +5 -7
  241. package/src/components/Spinner/Spinner.tsx +11 -6
  242. package/src/components/Spinner/index.ts +2 -2
  243. package/src/components/Steps/Steps.stories.tsx +44 -48
  244. package/src/components/Steps/Steps.tsx +20 -20
  245. package/src/components/Steps/index.ts +1 -1
  246. package/src/components/Steps/scripts/index.ts +9 -9
  247. package/src/components/Tab/Tab.stories.tsx +14 -6
  248. package/src/components/Tab/Tab.tsx +16 -18
  249. package/src/components/Tab/index.ts +2 -2
  250. package/src/components/Tab/scripts/index.ts +13 -13
  251. package/src/components/Testimonial/Testimonial.stories.tsx +54 -51
  252. package/src/components/Testimonial/Testimonial.tsx +18 -19
  253. package/src/components/Testimonial/index.ts +1 -1
  254. package/src/components/Testimonial/scripts/index.ts +19 -8
  255. package/src/components/Todo/Todo.stories.tsx +7 -24
  256. package/src/components/Todo/Todo.tsx +35 -46
  257. package/src/components/Todo/index.ts +1 -1
  258. package/src/components/Todo/scripts/bundle.ts +1 -1
  259. package/src/components/Todo/scripts/index.ts +99 -81
  260. package/src/components/Todo/scripts/todoInteractions.ts +12 -12
  261. package/src/components/Todo/scripts/types.ts +3 -3
  262. package/src/components/Toggle/Toggle.stories.tsx +2 -2
  263. package/src/components/Toggle/Toggle.tsx +18 -18
  264. package/src/components/Toggle/index.ts +2 -2
  265. package/src/components/Toggle/scripts/bundle.ts +7 -2
  266. package/src/components/Toggle/scripts/index.ts +14 -10
  267. package/src/components/Toggle/scripts/toggleInteractions.ts +11 -14
  268. package/src/components/Tooltip/Tooltip.stories.tsx +13 -6
  269. package/src/components/Tooltip/Tooltip.tsx +25 -15
  270. package/src/components/Tooltip/index.ts +3 -3
  271. package/src/components/Tooltip/scripts/bundle.ts +0 -1
  272. package/src/components/Tooltip/scripts/index.ts +44 -41
  273. package/src/components/Tooltip/scripts/tooltipInteractions.ts +22 -22
  274. package/src/components/Upload/Upload.stories.tsx +28 -34
  275. package/src/components/Upload/Upload.tsx +86 -71
  276. package/src/components/Upload/index.ts +1 -1
  277. package/src/components/Upload/scripts/index.ts +58 -43
  278. package/src/components/index.ts +5 -6
  279. package/src/design-tokens/BoxShadow/BoxShadow.stories.tsx +13 -10
  280. package/src/design-tokens/Colors/colors.scss +10 -7
  281. package/src/design-tokens/Colors/colors.stories.tsx +46 -59
  282. package/src/design-tokens/Spacing/Spacing.scss +7 -5
  283. package/src/design-tokens/Spacing/Spacing.stories.tsx +19 -18
  284. package/src/design-tokens/Typography/Typography.scss +88 -25
  285. package/src/design-tokens/Typography/Typography.stories.tsx +22 -25
  286. package/src/docs/implementation-guide.mdx +2 -2
  287. package/src/htmlComponentsEntry.ts +23 -23
  288. package/src/index.ts +1 -1
  289. package/src/layouts/Grid/Container.tsx +6 -10
  290. package/src/layouts/Grid/Grid.stories.tsx +72 -34
  291. package/src/layouts/Grid/Grid.tsx +6 -13
  292. package/src/layouts/Grid/GridCol.tsx +29 -26
  293. package/src/layouts/Grid/Row.tsx +6 -13
  294. package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +79 -72
  295. package/src/layouts/MasonryGrid/MasonryGrid.tsx +23 -25
  296. package/src/layouts/MasonryGrid/MasonryGridItem.tsx +4 -12
  297. package/src/layouts/index.ts +3 -4
  298. package/src/lib/composables/index.ts +3 -3
  299. package/src/lib/composables/useAccordion.ts +15 -6
  300. package/src/lib/composables/useBadge.ts +3 -3
  301. package/src/lib/composables/useBreadcrumb.ts +6 -12
  302. package/src/lib/composables/useButton.ts +3 -3
  303. package/src/lib/composables/useCallout.ts +3 -3
  304. package/src/lib/composables/useCard.ts +50 -28
  305. package/src/lib/composables/useCheckbox.ts +7 -7
  306. package/src/lib/composables/useDataTable.ts +61 -57
  307. package/src/lib/composables/useDatePicker.ts +255 -231
  308. package/src/lib/composables/useDropdown.ts +90 -75
  309. package/src/lib/composables/useEdgePanel.ts +50 -47
  310. package/src/lib/composables/useForm.ts +4 -7
  311. package/src/lib/composables/useFormGroup.ts +11 -12
  312. package/src/lib/composables/useHero.ts +36 -38
  313. package/src/lib/composables/useInput.ts +9 -10
  314. package/src/lib/composables/useMessages.ts +12 -14
  315. package/src/lib/composables/useModal.ts +37 -34
  316. package/src/lib/composables/useNavbar.ts +33 -22
  317. package/src/lib/composables/usePagination.ts +3 -10
  318. package/src/lib/composables/usePhotoViewer.ts +625 -578
  319. package/src/lib/composables/usePopover.ts +68 -62
  320. package/src/lib/composables/useProgress.ts +9 -12
  321. package/src/lib/composables/useRadio.ts +4 -4
  322. package/src/lib/composables/useRating.ts +82 -70
  323. package/src/lib/composables/useRiver.ts +28 -31
  324. package/src/lib/composables/useSelect.ts +7 -8
  325. package/src/lib/composables/useSideMenu.ts +197 -0
  326. package/src/lib/composables/useSpinner.ts +3 -3
  327. package/src/lib/composables/useTextarea.ts +8 -9
  328. package/src/lib/composables/useTodo.ts +14 -18
  329. package/src/lib/constants/components.ts +191 -118
  330. package/src/lib/constants/index.ts +1 -1
  331. package/src/lib/types/components.ts +454 -324
  332. package/src/lib/utils/dom.ts +2 -6
  333. package/src/lib/utils/icons.ts +20 -12
  334. package/src/lib/utils/index.ts +2 -2
  335. package/src/lib/utils/useForkRef.ts +1 -2
  336. package/src/styles/01-settings/_index.scss +59 -59
  337. package/src/styles/01-settings/_settings.accordion.scss +21 -21
  338. package/src/styles/01-settings/_settings.animations.scss +2 -2
  339. package/src/styles/01-settings/_settings.avatar-group.scss +14 -14
  340. package/src/styles/01-settings/_settings.avatar.scss +31 -31
  341. package/src/styles/01-settings/_settings.badge.scss +11 -11
  342. package/src/styles/01-settings/_settings.border-radius.scss +10 -9
  343. package/src/styles/01-settings/_settings.border.scss +7 -7
  344. package/src/styles/01-settings/_settings.box-shadow.scss +24 -12
  345. package/src/styles/01-settings/_settings.breadcrumb.scss +18 -18
  346. package/src/styles/01-settings/_settings.btn-group.scss +1 -1
  347. package/src/styles/01-settings/_settings.button.scss +63 -49
  348. package/src/styles/01-settings/_settings.callout.scss +27 -7
  349. package/src/styles/01-settings/_settings.card.scss +27 -30
  350. package/src/styles/01-settings/_settings.checkbox-group.scss +2 -3
  351. package/src/styles/01-settings/_settings.checkbox.scss +17 -18
  352. package/src/styles/01-settings/_settings.color-mode.scss +1 -1
  353. package/src/styles/01-settings/_settings.colors.scss +197 -214
  354. package/src/styles/01-settings/_settings.config.scss +1 -3
  355. package/src/styles/01-settings/_settings.countdown.scss +14 -14
  356. package/src/styles/01-settings/_settings.data-table.scss +6 -6
  357. package/src/styles/01-settings/_settings.datepicker.scss +40 -42
  358. package/src/styles/01-settings/_settings.dropdown.scss +30 -30
  359. package/src/styles/01-settings/_settings.edge-panel.scss +16 -16
  360. package/src/styles/01-settings/_settings.fonts.scss +14 -12
  361. package/src/styles/01-settings/_settings.form-group.scss +10 -10
  362. package/src/styles/01-settings/_settings.form.scss +3 -3
  363. package/src/styles/01-settings/_settings.grid.scss +1 -1
  364. package/src/styles/01-settings/_settings.hero.scss +23 -23
  365. package/src/styles/01-settings/_settings.input.scss +32 -32
  366. package/src/styles/01-settings/_settings.link.scss +6 -6
  367. package/src/styles/01-settings/_settings.list-group.scss +12 -12
  368. package/src/styles/01-settings/_settings.list.scss +2 -2
  369. package/src/styles/01-settings/_settings.maps.scss +183 -188
  370. package/src/styles/01-settings/_settings.masonry-grid.scss +2 -2
  371. package/src/styles/01-settings/_settings.menu.scss +35 -38
  372. package/src/styles/01-settings/_settings.messages.scss +71 -77
  373. package/src/styles/01-settings/_settings.modal.scss +24 -24
  374. package/src/styles/01-settings/_settings.nav.scss +15 -15
  375. package/src/styles/01-settings/_settings.navbar.scss +39 -12
  376. package/src/styles/01-settings/_settings.pagination.scss +21 -21
  377. package/src/styles/01-settings/_settings.photoviewer.scss +1 -1
  378. package/src/styles/01-settings/_settings.popover.scss +3 -3
  379. package/src/styles/01-settings/_settings.position.scss +2 -2
  380. package/src/styles/01-settings/_settings.progress.scss +15 -18
  381. package/src/styles/01-settings/_settings.rating.scss +7 -7
  382. package/src/styles/01-settings/_settings.river.scss +25 -25
  383. package/src/styles/01-settings/_settings.sectionintro.scss +15 -16
  384. package/src/styles/01-settings/_settings.select.scss +31 -31
  385. package/src/styles/01-settings/_settings.side-menu.scss +64 -16
  386. package/src/styles/01-settings/_settings.skeleton.scss +12 -12
  387. package/src/styles/01-settings/_settings.spacing.scss +62 -33
  388. package/src/styles/01-settings/_settings.spinner.scss +10 -10
  389. package/src/styles/01-settings/_settings.steps.scss +22 -22
  390. package/src/styles/01-settings/_settings.tabs.scss +25 -25
  391. package/src/styles/01-settings/_settings.testimonials.scss +17 -19
  392. package/src/styles/01-settings/_settings.todo.scss +1 -1
  393. package/src/styles/01-settings/_settings.toggle.scss +26 -26
  394. package/src/styles/01-settings/_settings.tooltip.scss +15 -15
  395. package/src/styles/01-settings/_settings.typography.scss +65 -48
  396. package/src/styles/01-settings/_settings.upload.scss +70 -77
  397. package/src/styles/01-settings/_settings.z-layers.scss +1 -1
  398. package/src/styles/02-tools/_index.scss +19 -19
  399. package/src/styles/02-tools/_tools.animations.scss +4 -4
  400. package/src/styles/02-tools/_tools.border-radius.scss +4 -5
  401. package/src/styles/02-tools/_tools.breakpoints.scss +33 -34
  402. package/src/styles/02-tools/_tools.button.scss +49 -25
  403. package/src/styles/02-tools/_tools.color-mode.scss +11 -11
  404. package/src/styles/02-tools/_tools.event.scss +1 -1
  405. package/src/styles/02-tools/_tools.hidden-visually.scss +1 -1
  406. package/src/styles/02-tools/_tools.hidden.scss +1 -1
  407. package/src/styles/02-tools/_tools.map-loop.scss +9 -9
  408. package/src/styles/02-tools/_tools.media-queries.scss +5 -3
  409. package/src/styles/02-tools/_tools.object-fit.scss +3 -3
  410. package/src/styles/02-tools/_tools.placeholder.scss +0 -1
  411. package/src/styles/02-tools/_tools.rem.scss +1 -1
  412. package/src/styles/02-tools/_tools.spacing.scss +8 -34
  413. package/src/styles/02-tools/_tools.to-rgb.scss +3 -3
  414. package/src/styles/02-tools/_tools.transition.scss +1 -1
  415. package/src/styles/02-tools/_tools.utility-api.scss +29 -14
  416. package/src/styles/03-generic/_generic.fonts.scss +0 -1
  417. package/src/styles/03-generic/_generic.reset.scss +13 -8
  418. package/src/styles/03-generic/_generic.root.scss +5 -5
  419. package/src/styles/03-generic/_index.scss +4 -4
  420. package/src/styles/04-elements/_elements.all.scss +2 -2
  421. package/src/styles/04-elements/_elements.body.scss +1 -2
  422. package/src/styles/04-elements/_elements.heading.scss +37 -21
  423. package/src/styles/04-elements/_elements.links.scss +0 -1
  424. package/src/styles/04-elements/_index.scss +5 -5
  425. package/src/styles/05-objects/_index.scss +3 -3
  426. package/src/styles/05-objects/_objects.container.scss +5 -4
  427. package/src/styles/05-objects/_objects.grid.scss +12 -12
  428. package/src/styles/05-objects/_objects.masonry-grid.scss +80 -74
  429. package/src/styles/06-components/_components.accordion.scss +12 -6
  430. package/src/styles/06-components/_components.avatar-group.scss +9 -8
  431. package/src/styles/06-components/_components.avatar.scss +78 -77
  432. package/src/styles/06-components/_components.badge.scss +48 -48
  433. package/src/styles/06-components/_components.breadcrumb.scss +57 -58
  434. package/src/styles/06-components/_components.btn-group.scss +22 -22
  435. package/src/styles/06-components/_components.button.scss +118 -110
  436. package/src/styles/06-components/_components.callout.scss +21 -15
  437. package/src/styles/06-components/_components.card.scss +6 -10
  438. package/src/styles/06-components/_components.checkbox-group.scss +9 -10
  439. package/src/styles/06-components/_components.checkbox.scss +10 -17
  440. package/src/styles/06-components/_components.color-mode-toggle.scss +6 -6
  441. package/src/styles/06-components/_components.countdown.scss +53 -54
  442. package/src/styles/06-components/_components.data-table.scss +40 -36
  443. package/src/styles/06-components/_components.datepicker.scss +95 -73
  444. package/src/styles/06-components/_components.dropdown.scss +15 -9
  445. package/src/styles/06-components/_components.edge-panel.scss +87 -46
  446. package/src/styles/06-components/_components.form-group.scss +5 -4
  447. package/src/styles/06-components/_components.hero.scss +128 -132
  448. package/src/styles/06-components/_components.icon.scss +16 -16
  449. package/src/styles/06-components/_components.image-gallery.scss +9 -7
  450. package/src/styles/06-components/_components.input.scss +18 -16
  451. package/src/styles/06-components/_components.list-group.scss +52 -51
  452. package/src/styles/06-components/_components.list.scss +15 -15
  453. package/src/styles/06-components/_components.menu.scss +225 -220
  454. package/src/styles/06-components/_components.messages.scss +45 -32
  455. package/src/styles/06-components/_components.modal.scss +0 -1
  456. package/src/styles/06-components/_components.nav.scss +56 -11
  457. package/src/styles/06-components/_components.navbar.scss +278 -202
  458. package/src/styles/06-components/_components.pagination.scss +7 -6
  459. package/src/styles/06-components/_components.photoviewer.scss +121 -116
  460. package/src/styles/06-components/_components.popover.scss +10 -10
  461. package/src/styles/06-components/_components.product-review.scss +3 -3
  462. package/src/styles/06-components/_components.progress.scss +32 -35
  463. package/src/styles/06-components/_components.rating.scss +9 -8
  464. package/src/styles/06-components/_components.river.scss +4 -2
  465. package/src/styles/06-components/_components.sectionintro.scss +19 -26
  466. package/src/styles/06-components/_components.select.scss +7 -8
  467. package/src/styles/06-components/_components.side-menu.scss +154 -28
  468. package/src/styles/06-components/_components.skeleton.scss +0 -1
  469. package/src/styles/06-components/_components.spinner.scss +2 -4
  470. package/src/styles/06-components/_components.steps.scss +76 -77
  471. package/src/styles/06-components/_components.tabs.scss +17 -12
  472. package/src/styles/06-components/_components.testimonials.scss +49 -52
  473. package/src/styles/06-components/_components.todo.scss +26 -26
  474. package/src/styles/06-components/_components.tooltip.scss +114 -115
  475. package/src/styles/06-components/_components.upload.scss +8 -18
  476. package/src/styles/06-components/_index.scss +48 -48
  477. package/src/styles/99-utilities/_index.scss +18 -18
  478. package/src/styles/99-utilities/_utilities.background.scss +13 -13
  479. package/src/styles/99-utilities/_utilities.border.scss +30 -30
  480. package/src/styles/99-utilities/_utilities.clearfix.scss +1 -1
  481. package/src/styles/99-utilities/_utilities.display.scss +5 -4
  482. package/src/styles/99-utilities/_utilities.flex.scss +19 -19
  483. package/src/styles/99-utilities/_utilities.link.scss +52 -35
  484. package/src/styles/99-utilities/_utilities.object-fit.scss +3 -3
  485. package/src/styles/99-utilities/_utilities.opacity.scss +6 -6
  486. package/src/styles/99-utilities/_utilities.overflow.scss +4 -4
  487. package/src/styles/99-utilities/_utilities.position.scss +8 -8
  488. package/src/styles/99-utilities/_utilities.shadow.scss +13 -13
  489. package/src/styles/99-utilities/_utilities.sizes.scss +17 -17
  490. package/src/styles/99-utilities/_utilities.spacing.scss +72 -37
  491. package/src/styles/99-utilities/_utilities.text.scss +15 -15
  492. package/src/styles/99-utilities/_utilities.visibility.scss +8 -8
  493. package/src/styles/99-utilities/_utilities.visually-hidden.scss +1 -1
  494. package/src/styles/99-utilities/_utilities.z-index.scss +2 -2
  495. package/tsconfig.json +74 -0
  496. package/webpack.config.js +463 -0
  497. package/NPM_PUBLISHING.md +0 -221
  498. package/dist/css/atomix.css.map +0 -1
  499. package/dist/js/194.js.map +0 -1
  500. package/dist/js/atomix.react.esm.js.map +0 -1
  501. package/dist/js/atomix.react.umd.js.map +0 -1
  502. package/dist/js/chunks/esm/202.ff48d27672233280e021.js.map +0 -1
  503. package/dist/js/chunks/esm/308.f873332126eba90e5c62.js.map +0 -1
  504. package/dist/js/chunks/esm/54.4db919e5e4e5cc6d7c72.js.map +0 -1
  505. package/dist/js/chunks/esm/619.afc5a718eff77fa423b5.js.map +0 -1
  506. package/dist/js/chunks/esm/690.a9e968c7497d61e56cdc.js.map +0 -1
  507. package/dist/js/chunks/esm/894.f1091a4a8758c26d29e4.js.map +0 -1
  508. package/dist/js/chunks/esm/897.561a50f7d043d42169da.js.map +0 -1
  509. package/dist/js/chunks/umd/202.dac7605cc555b6bda542.js.map +0 -1
  510. package/dist/js/chunks/umd/308.6709979849dcbdb90c9b.js.map +0 -1
  511. package/dist/js/chunks/umd/54.403470e1f7d0ef4424a7.js.map +0 -1
  512. package/dist/js/chunks/umd/619.fa05ea98c10270eb64c5.js.map +0 -1
  513. package/dist/js/chunks/umd/690.aa7054d1c53e5402c2d6.js.map +0 -1
  514. package/dist/js/chunks/umd/894.3e1eaf0a2aadf4434390.js.map +0 -1
  515. package/dist/js/chunks/umd/897.554ea37be4453698c167.js.map +0 -1
  516. package/dist/types/components/Navbar/Nav.d.ts +0 -5
  517. package/dist/types/components/Navbar/NavItem.d.ts +0 -5
  518. package/dist/types/components/Navbar/Navbar.d.ts +0 -5
  519. package/dist/types/components/Navbar/index.d.ts +0 -6
  520. package/src/components/Navbar/Menu.tsx +0 -122
  521. package/src/components/Navbar/Nav.tsx +0 -35
  522. package/src/components/Navbar/NavDropdown.tsx +0 -108
  523. package/src/components/Navbar/NavItem.tsx +0 -128
  524. package/src/components/Navbar/Navbar.tsx +0 -124
  525. package/src/components/Navbar/index.ts +0 -6
@@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react';
2
2
  import { Meta, StoryObj } from '@storybook/react';
3
3
  import { MasonryGrid } from './MasonryGrid';
4
4
  import { MasonryGridItem } from './MasonryGridItem';
5
- import Card from '../../components/Card/Card';
5
+ import Card from '../../components/Card/Card';
6
6
  import ElevationCard from '../../components/Card/Card';
7
7
 
8
8
  const meta: Meta<typeof MasonryGrid> = {
@@ -12,7 +12,7 @@ const meta: Meta<typeof MasonryGrid> = {
12
12
  layout: 'fullscreen',
13
13
  },
14
14
  decorators: [
15
- (Story) => (
15
+ Story => (
16
16
  <div style={{ padding: '1rem' }}>
17
17
  <Story />
18
18
  </div>
@@ -28,10 +28,10 @@ const getPlaceholderImage = (index: number, width = 600, height?: number) => {
28
28
  // Create different heights for variety if not specified
29
29
  const heights = [300, 400, 500, 350, 450, 550, 320, 420];
30
30
  const imgHeight = height || heights[index % heights.length];
31
-
31
+
32
32
  // Use different image IDs for variety
33
33
  const imageId = (index % 30) + 10; // Use IDs between 10-40 for variety
34
-
34
+
35
35
  // Use Picsum Photos which is more reliable
36
36
  return `https://picsum.photos/id/${imageId}/${width}/${imgHeight}`;
37
37
  };
@@ -47,13 +47,15 @@ const CardWithImage: React.FC<{
47
47
  }> = ({ index, title, text, useElevation = false, width, height }) => {
48
48
  const CardComponent = useElevation ? ElevationCard : Card;
49
49
  const imageUrl = getPlaceholderImage(index, width, height);
50
-
50
+
51
51
  // Generate random content if not provided
52
52
  const cardTitle = title || `Card Title ${index + 1}`;
53
- const cardText = text || (index % 2 === 0 ?
54
- 'This is a short description for this card item.' :
55
- 'This is a longer description that takes up more space to demonstrate how the masonry layout handles different content heights effectively.');
56
-
53
+ const cardText =
54
+ text ||
55
+ (index % 2 === 0
56
+ ? 'This is a short description for this card item.'
57
+ : 'This is a longer description that takes up more space to demonstrate how the masonry layout handles different content heights effectively.');
58
+
57
59
  return (
58
60
  <CardComponent
59
61
  image={imageUrl}
@@ -78,8 +80,11 @@ export const BasicMasonryGrid: Story = {
78
80
  render: () => (
79
81
  <div>
80
82
  <h3 className="u-mb-4">Basic Masonry Grid</h3>
81
- <p className="u-mb-4">Items are automatically positioned in the optimal location based on available vertical space.</p>
82
-
83
+ <p className="u-mb-4">
84
+ Items are automatically positioned in the optimal location based on available vertical
85
+ space.
86
+ </p>
87
+
83
88
  <MasonryGrid xs={1} sm={2} md={3} lg={4}>
84
89
  {Array.from({ length: 8 }).map((_, index) => (
85
90
  <MasonryGridItem key={index}>
@@ -99,14 +104,11 @@ export const CustomGap: Story = {
99
104
  <div>
100
105
  <h3 className="u-mb-4">Custom Gap (24px)</h3>
101
106
  <p className="u-mb-4">The gap between items can be customized.</p>
102
-
107
+
103
108
  <MasonryGrid xs={1} sm={2} md={3} lg={4} gap={24}>
104
109
  {Array.from({ length: 6 }).map((_, index) => (
105
110
  <MasonryGridItem key={index}>
106
- <CardWithImage
107
- index={index + 10}
108
- title={`Card with Gap ${index + 1}`}
109
- />
111
+ <CardWithImage index={index + 10} title={`Card with Gap ${index + 1}`} />
110
112
  </MasonryGridItem>
111
113
  ))}
112
114
  </MasonryGrid>
@@ -123,44 +125,44 @@ export const DynamicLoading: Story = {
123
125
  const DynamicLoadingExample = () => {
124
126
  const [items, setItems] = useState<number[]>([]);
125
127
  const [loading, setLoading] = useState(true);
126
-
128
+
127
129
  useEffect(() => {
128
130
  // Simulate loading items in batches
129
131
  const loadItems = () => {
130
132
  setLoading(true);
131
-
133
+
132
134
  // Initial set of items
133
135
  setTimeout(() => {
134
136
  setItems([0, 1, 2, 3, 4, 5]);
135
137
  setLoading(false);
136
138
  }, 1000);
137
-
139
+
138
140
  // Add more items after a delay
139
141
  setTimeout(() => {
140
142
  setItems(prev => [...prev, 6, 7, 8, 9, 10, 11]);
141
143
  }, 3000);
142
144
  };
143
-
145
+
144
146
  loadItems();
145
147
  }, []);
146
-
148
+
147
149
  return (
148
150
  <div>
149
151
  <h3 className="u-mb-4">Dynamic Loading</h3>
150
152
  <p className="u-mb-4">The masonry grid recalculates positions as new items are added.</p>
151
-
153
+
152
154
  {loading && (
153
155
  <div className="u-p-4 u-mb-4 u-bg-light u-border u-rounded u-text-center">
154
156
  <div className="u-spinner u-spinner-primary u-mb-3"></div>
155
157
  <p className="u-m-0">Loading initial items...</p>
156
158
  </div>
157
159
  )}
158
-
160
+
159
161
  <MasonryGrid xs={1} sm={2} md={3} lg={4}>
160
- {items.map((index) => (
162
+ {items.map(index => (
161
163
  <MasonryGridItem key={index}>
162
- <CardWithImage
163
- index={index + 20}
164
+ <CardWithImage
165
+ index={index + 20}
164
166
  useElevation={true}
165
167
  title={`Dynamic Card ${index + 1}`}
166
168
  />
@@ -170,7 +172,7 @@ export const DynamicLoading: Story = {
170
172
  </div>
171
173
  );
172
174
  };
173
-
175
+
174
176
  return <DynamicLoadingExample />;
175
177
  },
176
178
  };
@@ -183,14 +185,18 @@ export const CustomColumns: Story = {
183
185
  <div>
184
186
  <h3 className="u-mb-4">Custom Column Configuration</h3>
185
187
  <p className="u-mb-4">Different column counts can be specified for each breakpoint.</p>
186
-
188
+
187
189
  <MasonryGrid xs={1} sm={2} md={2} lg={3} xl={4} xxl={5}>
188
190
  {Array.from({ length: 10 }).map((_, index) => (
189
191
  <MasonryGridItem key={index}>
190
- <CardWithImage
191
- index={index + 30}
192
+ <CardWithImage
193
+ index={index + 30}
192
194
  title={`Column Config ${index + 1}`}
193
- text={index % 2 === 0 ? undefined : 'This card demonstrates the custom column configuration across different breakpoints.'}
195
+ text={
196
+ index % 2 === 0
197
+ ? undefined
198
+ : 'This card demonstrates the custom column configuration across different breakpoints.'
199
+ }
194
200
  />
195
201
  </MasonryGridItem>
196
202
  ))}
@@ -206,18 +212,22 @@ export const WithElevationCards: Story = {
206
212
  render: () => (
207
213
  <div>
208
214
  <h3 className="u-mb-4">Elevation Cards in Masonry Layout</h3>
209
- <p className="u-mb-4">The masonry grid works well with elevation card components that have hover effects.</p>
210
-
215
+ <p className="u-mb-4">
216
+ The masonry grid works well with elevation card components that have hover effects.
217
+ </p>
218
+
211
219
  <MasonryGrid xs={1} sm={2} md={3} lg={4}>
212
220
  {Array.from({ length: 8 }).map((_, index) => (
213
221
  <MasonryGridItem key={index}>
214
- <CardWithImage
215
- index={index + 40}
222
+ <CardWithImage
223
+ index={index + 40}
216
224
  useElevation={true}
217
225
  title={`Elevation Card ${index + 1}`}
218
- text={index % 2 === 0 ?
219
- 'Hover over this card to see the elevation effect.' :
220
- 'This card demonstrates the elevation effect when hovered. The masonry layout handles different content heights automatically.'}
226
+ text={
227
+ index % 2 === 0
228
+ ? 'Hover over this card to see the elevation effect.'
229
+ : 'This card demonstrates the elevation effect when hovered. The masonry layout handles different content heights automatically.'
230
+ }
221
231
  />
222
232
  </MasonryGridItem>
223
233
  ))}
@@ -234,14 +244,11 @@ export const NoAnimation: Story = {
234
244
  <div>
235
245
  <h3 className="u-mb-4">No Animation</h3>
236
246
  <p className="u-mb-4">The animation can be disabled for immediate positioning.</p>
237
-
247
+
238
248
  <MasonryGrid xs={1} sm={2} md={3} lg={4} animate={false}>
239
249
  {Array.from({ length: 6 }).map((_, index) => (
240
250
  <MasonryGridItem key={index}>
241
- <CardWithImage
242
- index={index + 50}
243
- title={`No Animation ${index + 1}`}
244
- />
251
+ <CardWithImage index={index + 50} title={`No Animation ${index + 1}`} />
245
252
  </MasonryGridItem>
246
253
  ))}
247
254
  </MasonryGrid>
@@ -257,23 +264,27 @@ export const ProgressiveImageLoading: Story = {
257
264
  const [loadedCount, setLoadedCount] = useState(0);
258
265
  const [totalCount, setTotalCount] = useState(0);
259
266
  const [layoutComplete, setLayoutComplete] = useState(false);
260
-
267
+
261
268
  return (
262
269
  <div>
263
270
  <h3 className="u-mb-4">Progressive Image Loading</h3>
264
- <p className="u-mb-4">The grid shows items immediately and updates positions as each image loads.</p>
265
-
271
+ <p className="u-mb-4">
272
+ The grid shows items immediately and updates positions as each image loads.
273
+ </p>
274
+
266
275
  <div className="u-bg-light u-p-3 u-rounded u-mb-4">
267
276
  <h4 className="u-mb-2">Loading Progress</h4>
268
277
  {totalCount > 0 && (
269
278
  <div className="u-mb-2">
270
279
  <div className="u-d-flex u-justify-content-between u-mb-1">
271
- <span>Loading images: {loadedCount} of {totalCount}</span>
280
+ <span>
281
+ Loading images: {loadedCount} of {totalCount}
282
+ </span>
272
283
  <span>{Math.round((loadedCount / totalCount) * 100)}%</span>
273
284
  </div>
274
285
  <div className="u-progress u-mb-2" style={{ height: '8px' }}>
275
- <div
276
- className="u-progress-bar u-bg-primary"
286
+ <div
287
+ className="u-progress-bar u-bg-primary"
277
288
  style={{ width: `${(loadedCount / totalCount) * 100}%` }}
278
289
  ></div>
279
290
  </div>
@@ -285,13 +296,13 @@ export const ProgressiveImageLoading: Story = {
285
296
  </div>
286
297
  )}
287
298
  </div>
288
-
289
- <MasonryGrid
290
- xs={1}
291
- sm={2}
292
- md={3}
299
+
300
+ <MasonryGrid
301
+ xs={1}
302
+ sm={2}
303
+ md={3}
293
304
  lg={4}
294
- gap={16}
305
+ gap={16}
295
306
  imagesLoaded={true}
296
307
  onLayoutComplete={() => setLayoutComplete(true)}
297
308
  onImageLoad={(loaded, total) => {
@@ -301,8 +312,8 @@ export const ProgressiveImageLoading: Story = {
301
312
  >
302
313
  {Array.from({ length: 8 }).map((_, index) => (
303
314
  <MasonryGridItem key={index}>
304
- <CardWithImage
305
- index={index + 70}
315
+ <CardWithImage
316
+ index={index + 70}
306
317
  title={`Progressive Loading ${index + 1}`}
307
318
  text="This card's image loads independently and updates the layout as it loads."
308
319
  // Use different sized images to demonstrate the progressive loading
@@ -324,24 +335,24 @@ export const MixedContent: Story = {
324
335
  render: () => (
325
336
  <div>
326
337
  <h3 className="u-mb-4">Mixed Content Types</h3>
327
- <p className="u-mb-4">The masonry grid can handle various content types with different heights.</p>
328
-
338
+ <p className="u-mb-4">
339
+ The masonry grid can handle various content types with different heights.
340
+ </p>
341
+
329
342
  <MasonryGrid xs={1} sm={2} md={3} lg={4}>
330
343
  <MasonryGridItem>
331
344
  <Card
332
345
  title="Text Only Card"
333
346
  text="This card contains only text content with no image."
334
347
  className="u-h-100"
335
- actions={
336
- <button className="u-btn u-btn-primary u-btn-sm u-mt-3">Action</button>
337
- }
348
+ actions={<button className="u-btn u-btn-primary u-btn-sm u-mt-3">Action</button>}
338
349
  />
339
350
  </MasonryGridItem>
340
-
351
+
341
352
  <MasonryGridItem>
342
353
  <CardWithImage index={60} useElevation={true} />
343
354
  </MasonryGridItem>
344
-
355
+
345
356
  <MasonryGridItem>
346
357
  <div className="u-p-4 u-border u-rounded u-bg-light u-h-100">
347
358
  <h4 className="u-mb-3">Custom Content</h4>
@@ -352,21 +363,17 @@ export const MixedContent: Story = {
352
363
  </div>
353
364
  </div>
354
365
  </MasonryGridItem>
355
-
366
+
356
367
  <MasonryGridItem>
357
368
  <CardWithImage index={61} />
358
369
  </MasonryGridItem>
359
-
370
+
360
371
  <MasonryGridItem>
361
372
  <div className="u-p-0 u-border u-rounded u-overflow-hidden u-shadow-sm">
362
- <img
363
- src="https://picsum.photos/id/15/600/400"
364
- alt="Nature"
365
- className="u-w-100"
366
- />
373
+ <img src="https://picsum.photos/id/15/600/400" alt="Nature" className="u-w-100" />
367
374
  </div>
368
375
  </MasonryGridItem>
369
-
376
+
370
377
  <MasonryGridItem>
371
378
  <Card
372
379
  title="Card with Icon"
@@ -1,4 +1,17 @@
1
- import React, { forwardRef, HTMLAttributes, ReactNode, useEffect, useImperativeHandle, useRef, useState, useCallback, useMemo, Children, cloneElement, isValidElement } from 'react';
1
+ import React, {
2
+ forwardRef,
3
+ HTMLAttributes,
4
+ ReactNode,
5
+ useEffect,
6
+ useImperativeHandle,
7
+ useRef,
8
+ useState,
9
+ useCallback,
10
+ useMemo,
11
+ Children,
12
+ cloneElement,
13
+ isValidElement,
14
+ } from 'react';
2
15
  // Import styles for scoped CSS modules
3
16
 
4
17
  export interface MasonryGridProps extends HTMLAttributes<HTMLDivElement> {
@@ -122,7 +135,6 @@ export const MasonryGrid = forwardRef<HTMLDivElement, MasonryGridProps>(
122
135
  else setLoadingImages(false);
123
136
  }, [columns, imagesLoaded]);
124
137
 
125
-
126
138
  // Types
127
139
  type MasonryImageElement = HTMLImageElement & {
128
140
  _masonryLoadHandler?: EventListener;
@@ -190,12 +202,9 @@ export const MasonryGrid = forwardRef<HTMLDivElement, MasonryGridProps>(
190
202
  });
191
203
  });
192
204
  onImageLoad?.(imagesLoadedCount.current, totalImagesCount.current);
193
-
205
+
194
206
  // If all images have loaded, update loading state and complete layout
195
- if (
196
- imagesLoadedCount.current >= totalImagesCount.current &&
197
- totalImagesCount.current > 0
198
- ) {
207
+ if (imagesLoadedCount.current >= totalImagesCount.current && totalImagesCount.current > 0) {
199
208
  setLayoutComplete(true);
200
209
  setLoadingImages(false); // This ensures the loading class is removed *immediately* after images load
201
210
  // Force a double requestAnimationFrame for final layout calculation after all images are loaded (guarantees DOM paint)
@@ -225,7 +234,7 @@ export const MasonryGrid = forwardRef<HTMLDivElement, MasonryGridProps>(
225
234
  return undefined;
226
235
  }
227
236
  setLoadingImages(true);
228
- images.forEach((img) => {
237
+ images.forEach(img => {
229
238
  const masonryImg = img as MasonryImageElement;
230
239
  const itemElement = img.closest('.o-masonry-grid > div');
231
240
  if (itemElement) {
@@ -242,7 +251,7 @@ export const MasonryGrid = forwardRef<HTMLDivElement, MasonryGridProps>(
242
251
  });
243
252
  // Cleanup
244
253
  return () => {
245
- images.forEach((img) => {
254
+ images.forEach(img => {
246
255
  const masonryImg = img as MasonryImageElement;
247
256
  if (masonryImg._masonryLoadHandler) {
248
257
  img.removeEventListener('load', masonryImg._masonryLoadHandler);
@@ -263,9 +272,7 @@ export const MasonryGrid = forwardRef<HTMLDivElement, MasonryGridProps>(
263
272
  items.forEach((item, index) => {
264
273
  if (item.ref.current) {
265
274
  // Find the shortest column
266
- const shortestCol = columnHeights.current.indexOf(
267
- Math.min(...columnHeights.current)
268
- );
275
+ const shortestCol = columnHeights.current.indexOf(Math.min(...columnHeights.current));
269
276
  const left = shortestCol * (colWidth + gap);
270
277
  const top = columnHeights.current[shortestCol];
271
278
  const height = item.ref.current.offsetHeight;
@@ -308,14 +315,13 @@ export const MasonryGrid = forwardRef<HTMLDivElement, MasonryGridProps>(
308
315
  return undefined;
309
316
  }
310
317
  // Only reset layoutComplete when items or columns change
311
- // eslint-disable-next-line
312
318
  }, [items, columns, calculateLayout, imagesLoaded, trackImages]);
313
319
 
314
320
  // === NEW: Add ResizeObservers to all grid items for bulletproof image+content measurement ===
315
321
  React.useEffect(() => {
316
322
  // Clean up old observers if items ever change
317
323
  const observers: ResizeObserver[] = [];
318
- items.forEach((item) => {
324
+ items.forEach(item => {
319
325
  if (item.ref.current) {
320
326
  const obs = new ResizeObserver(() => {
321
327
  // Double rAF: ensures layout only runs after DOM/paint/async renders
@@ -330,7 +336,7 @@ export const MasonryGrid = forwardRef<HTMLDivElement, MasonryGridProps>(
330
336
  }
331
337
  });
332
338
  return () => {
333
- observers.forEach((obs) => obs.disconnect());
339
+ observers.forEach(obs => obs.disconnect());
334
340
  };
335
341
  }, [items, calculateLayout]);
336
342
 
@@ -338,9 +344,7 @@ export const MasonryGrid = forwardRef<HTMLDivElement, MasonryGridProps>(
338
344
 
339
345
  // === DETERMINE CONTAINER HEIGHT ===
340
346
  const containerHeight =
341
- columnHeights.current.length > 0
342
- ? Math.max(...columnHeights.current)
343
- : 0;
347
+ columnHeights.current.length > 0 ? Math.max(...columnHeights.current) : 0;
344
348
 
345
349
  // === DETERMINE CLASSES ===
346
350
  const classes = [
@@ -354,8 +358,6 @@ export const MasonryGrid = forwardRef<HTMLDivElement, MasonryGridProps>(
354
358
 
355
359
  // === RENDER ===
356
360
 
357
-
358
-
359
361
  return (
360
362
  <div
361
363
  ref={containerRef}
@@ -372,11 +374,7 @@ export const MasonryGrid = forwardRef<HTMLDivElement, MasonryGridProps>(
372
374
  const position = positions[index];
373
375
  if (!position) {
374
376
  return (
375
- <div
376
- key={item.id}
377
- ref={item.ref}
378
- style={{ opacity: 0, position: 'absolute' }}
379
- >
377
+ <div key={item.id} ref={item.ref} style={{ opacity: 0, position: 'absolute' }}>
380
378
  {item.element}
381
379
  </div>
382
380
  );
@@ -24,23 +24,15 @@ export interface MasonryGridItemProps extends HTMLAttributes<HTMLDivElement> {
24
24
  * ```
25
25
  */
26
26
  export const MasonryGridItem = forwardRef<HTMLDivElement, MasonryGridItemProps>(
27
- ({
28
- children,
29
- className = '',
30
- ...props
31
- }, ref) => {
27
+ ({ children, className = '', ...props }, ref) => {
32
28
  const classes = ['o-masonry-grid__item-inner'];
33
-
29
+
34
30
  if (className) {
35
31
  classes.push(className);
36
32
  }
37
-
33
+
38
34
  return (
39
- <div
40
- ref={ref}
41
- className={classes.join(' ')}
42
- {...props}
43
- >
35
+ <div ref={ref} className={classes.join(' ')} {...props}>
44
36
  {children}
45
37
  </div>
46
38
  );
@@ -1,10 +1,9 @@
1
- import * as Grid from './Grid';
1
+ import * as Grid from './Grid';
2
2
  import * as MasonryGrid from './MasonryGrid';
3
3
 
4
-
5
4
  const layouts = {
6
5
  ...Grid,
7
- ...MasonryGrid
8
- }
6
+ ...MasonryGrid,
7
+ };
9
8
 
10
9
  export default layouts;
@@ -34,11 +34,11 @@ export * from './useCheckbox';
34
34
  export * from './useRadio';
35
35
  export * from './useTextarea';
36
36
 
37
- // Export other composables as needed
37
+ // Export other composables as needed
38
38
 
39
39
  // New composables
40
40
  export * from './useDataTable';
41
41
  export * from './usePagination';
42
42
  export * from './useModal';
43
- export * from './useBreadcrumb';
44
- export * from './useCard';
43
+ export * from './useBreadcrumb';
44
+ export * from './useCard';
@@ -27,13 +27,21 @@ interface UseAccordionResult {
27
27
  * @param initialProps - Initial accordion properties
28
28
  * @returns Accordion state and methods
29
29
  */
30
- export function useAccordion(initialProps?: Partial<AccordionProps> & { isOpen?: boolean; onOpenChange?: (open: boolean) => void }): UseAccordionResult {
30
+ export function useAccordion(
31
+ initialProps?: Partial<AccordionProps> & {
32
+ isOpen?: boolean;
33
+ onOpenChange?: (open: boolean) => void;
34
+ }
35
+ ): UseAccordionResult {
31
36
  // Default accordion properties
32
- const defaultProps: Partial<AccordionProps> & { isOpen?: boolean; onOpenChange?: (open: boolean) => void } = {
37
+ const defaultProps: Partial<AccordionProps> & {
38
+ isOpen?: boolean;
39
+ onOpenChange?: (open: boolean) => void;
40
+ } = {
33
41
  defaultOpen: false,
34
42
  disabled: false,
35
43
  iconPosition: 'right' as IconPosition,
36
- ...initialProps
44
+ ...initialProps,
37
45
  };
38
46
 
39
47
  // Controlled/uncontrolled open state
@@ -104,7 +112,8 @@ export function useAccordion(initialProps?: Partial<AccordionProps> & { isOpen?:
104
112
  * Generate header class names
105
113
  */
106
114
  const generateHeaderClassNames = (): string => {
107
- const iconPositionClass = defaultProps.iconPosition === 'left' ? 'c-accordion__header--icon-left' : '';
115
+ const iconPositionClass =
116
+ defaultProps.iconPosition === 'left' ? 'c-accordion__header--icon-left' : '';
108
117
  return `c-accordion__header ${iconPositionClass}`.trim();
109
118
  };
110
119
 
@@ -115,6 +124,6 @@ export function useAccordion(initialProps?: Partial<AccordionProps> & { isOpen?:
115
124
  panelRef,
116
125
  contentRef,
117
126
  generateClassNames,
118
- generateHeaderClassNames
127
+ generateHeaderClassNames,
119
128
  };
120
- }
129
+ }
@@ -12,7 +12,7 @@ export function useBadge(initialProps?: Partial<BadgeProps>) {
12
12
  variant: 'primary',
13
13
  size: 'md',
14
14
  disabled: false,
15
- ...initialProps
15
+ ...initialProps,
16
16
  };
17
17
 
18
18
  /**
@@ -31,7 +31,7 @@ export function useBadge(initialProps?: Partial<BadgeProps>) {
31
31
  const sizeClass = size === 'md' ? '' : `${BADGE.SIZE_PREFIX}${size}`;
32
32
  const variantClass = variant ? `${BADGE.VARIANT_PREFIX}${variant}` : '';
33
33
  const disabledClass = disabled ? 'c-badge--disabled' : '';
34
-
34
+
35
35
  return `${BADGE.BASE_CLASS} ${variantClass} ${sizeClass} ${disabledClass} ${className}`.trim();
36
36
  };
37
37
 
@@ -39,4 +39,4 @@ export function useBadge(initialProps?: Partial<BadgeProps>) {
39
39
  defaultProps,
40
40
  generateBadgeClass,
41
41
  };
42
- }
42
+ }
@@ -13,7 +13,7 @@ export function useBreadcrumb(initialOptions?: Partial<BreadcrumbOptions>) {
13
13
  divider: BREADCRUMB.DEFAULTS.DIVIDER,
14
14
  className: '',
15
15
  ariaLabel: 'Breadcrumb',
16
- ...initialOptions
16
+ ...initialOptions,
17
17
  };
18
18
 
19
19
  /**
@@ -23,11 +23,8 @@ export function useBreadcrumb(initialOptions?: Partial<BreadcrumbOptions>) {
23
23
  */
24
24
  const generateBreadcrumbClass = (options: Partial<BreadcrumbOptions>): string => {
25
25
  const { className = '' } = options;
26
-
27
- return [BREADCRUMB.CLASSES.BASE, className]
28
- .filter(Boolean)
29
- .join(' ')
30
- .trim();
26
+
27
+ return [BREADCRUMB.CLASSES.BASE, className].filter(Boolean).join(' ').trim();
31
28
  };
32
29
 
33
30
  /**
@@ -37,10 +34,7 @@ export function useBreadcrumb(initialOptions?: Partial<BreadcrumbOptions>) {
37
34
  * @returns Class string
38
35
  */
39
36
  const generateItemClass = (item: BreadcrumbItem, isLast: boolean): string => {
40
- return [
41
- BREADCRUMB.CLASSES.ITEM,
42
- (item.active || isLast) ? BREADCRUMB.CLASSES.ACTIVE : ''
43
- ]
37
+ return [BREADCRUMB.CLASSES.ITEM, item.active || isLast ? BREADCRUMB.CLASSES.ACTIVE : '']
44
38
  .filter(Boolean)
45
39
  .join(' ')
46
40
  .trim();
@@ -75,6 +69,6 @@ export function useBreadcrumb(initialOptions?: Partial<BreadcrumbOptions>) {
75
69
  generateBreadcrumbClass,
76
70
  generateItemClass,
77
71
  isItemLink,
78
- parseItemsFromJson
72
+ parseItemsFromJson,
79
73
  };
80
- }
74
+ }
@@ -12,7 +12,7 @@ export function useButton(initialProps?: Partial<ButtonProps>) {
12
12
  size: 'md',
13
13
  disabled: false,
14
14
  rounded: false,
15
- ...initialProps
15
+ ...initialProps,
16
16
  };
17
17
 
18
18
  /**
@@ -34,7 +34,7 @@ export function useButton(initialProps?: Partial<ButtonProps>) {
34
34
  const iconOnlyClass = iconOnly ? 'c-btn--icon' : '';
35
35
  const roundedClass = rounded ? 'c-btn--rounded' : '';
36
36
  const disabledClass = disabled ? 'c-btn--disabled' : '';
37
-
37
+
38
38
  return `c-btn c-btn--${variant} ${sizeClass} ${iconOnlyClass} ${roundedClass} ${disabledClass} ${className}`.trim();
39
39
  };
40
40
 
@@ -56,4 +56,4 @@ export function useButton(initialProps?: Partial<ButtonProps>) {
56
56
  generateButtonClass,
57
57
  handleClick,
58
58
  };
59
- }
59
+ }