@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
@@ -42,7 +42,7 @@ export interface PhotoViewerImageProps {
42
42
 
43
43
  /**
44
44
  * PhotoViewerImage component - displays the main image with zoom and pan capabilities
45
- *
45
+ *
46
46
  * @param props - PhotoViewerImageProps
47
47
  * @returns JSX.Element
48
48
  */
@@ -68,7 +68,7 @@ export const PhotoViewerImage: React.FC<PhotoViewerImageProps> = ({
68
68
  const internalContainerRef = useRef<HTMLDivElement>(null);
69
69
  const effectiveContainerRef = containerRef || internalContainerRef;
70
70
  const [isMounted, setIsMounted] = useState(false);
71
-
71
+
72
72
  // Track mounting state
73
73
  useEffect(() => {
74
74
  setIsMounted(true);
@@ -76,43 +76,45 @@ export const PhotoViewerImage: React.FC<PhotoViewerImageProps> = ({
76
76
  }, []);
77
77
 
78
78
  // Add double-click to zoom
79
- const handleDoubleClick = (e: React.MouseEvent<HTMLDivElement | HTMLImageElement, MouseEvent>) => {
79
+ const handleDoubleClick = (
80
+ e: React.MouseEvent<HTMLDivElement | HTMLImageElement, MouseEvent>
81
+ ) => {
80
82
  if (isMounted && onDoubleClick) onDoubleClick(e);
81
83
  };
82
-
84
+
83
85
  // Add non-passive event listeners to prevent page scrolling/zooming
84
86
  useEffect(() => {
85
87
  const container = effectiveContainerRef.current;
86
88
  if (!container) return undefined;
87
-
89
+
88
90
  const handleWheelEvent = (e: WheelEvent) => {
89
91
  // Only call if mounted and handler exists
90
92
  if (isMounted && container && onWheel) {
91
93
  onWheel(e as unknown as React.WheelEvent<HTMLDivElement>);
92
94
  }
93
95
  };
94
-
96
+
95
97
  const handleTouchStartEvent = (e: TouchEvent) => {
96
98
  // Only call if mounted and handler exists
97
99
  if (isMounted && container && onTouchStart) {
98
100
  onTouchStart(e as unknown as React.TouchEvent<HTMLDivElement>);
99
101
  }
100
102
  };
101
-
103
+
102
104
  const handleTouchMoveEvent = (e: TouchEvent) => {
103
105
  // Only call if mounted and handler exists
104
106
  if (isMounted && container && onTouchMove) {
105
107
  onTouchMove(e as unknown as React.TouchEvent<HTMLDivElement>);
106
108
  }
107
109
  };
108
-
110
+
109
111
  const handleTouchEndEvent = (e: TouchEvent) => {
110
112
  // Only call if mounted and handler exists
111
113
  if (isMounted && container && onTouchEnd) {
112
114
  onTouchEnd(e as unknown as React.TouchEvent<HTMLDivElement>);
113
115
  }
114
116
  };
115
-
117
+
116
118
  // Only add event listeners if mounted
117
119
  if (isMounted) {
118
120
  container.addEventListener('wheel', handleWheelEvent, { passive: false });
@@ -120,7 +122,7 @@ export const PhotoViewerImage: React.FC<PhotoViewerImageProps> = ({
120
122
  container.addEventListener('touchmove', handleTouchMoveEvent, { passive: false });
121
123
  container.addEventListener('touchend', handleTouchEndEvent, { passive: false });
122
124
  }
123
-
125
+
124
126
  // Clean up
125
127
  return () => {
126
128
  container.removeEventListener('wheel', handleWheelEvent);
@@ -129,7 +131,7 @@ export const PhotoViewerImage: React.FC<PhotoViewerImageProps> = ({
129
131
  container.removeEventListener('touchend', handleTouchEndEvent);
130
132
  };
131
133
  }, [isMounted, onWheel, onTouchStart, onTouchMove, onTouchEnd, effectiveContainerRef]);
132
-
134
+
133
135
  return (
134
136
  <div
135
137
  ref={effectiveContainerRef}
@@ -152,20 +154,20 @@ export const PhotoViewerImage: React.FC<PhotoViewerImageProps> = ({
152
154
  className="c-photo-viewer__image"
153
155
  style={{
154
156
  transform: `scale(${zoomLevel}) translate(${dragPosition.x}px, ${dragPosition.y}px) rotate(${rotationAngle}deg)`,
155
- transition: isDragging
156
- ? 'none'
157
- : isTransitioning
158
- ? 'opacity 0.15s ease-out'
157
+ transition: isDragging
158
+ ? 'none'
159
+ : isTransitioning
160
+ ? 'opacity 0.15s ease-out'
159
161
  : 'transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)',
160
162
  transformOrigin: 'center center',
161
163
  willChange: isDragging ? 'transform' : 'auto',
162
164
  touchAction: 'none', // Prevent image-specific touch behaviors
163
165
  }}
164
166
  draggable={false}
165
- onContextMenu={(e) => e.preventDefault()} // Prevent context menu on long press
167
+ onContextMenu={e => e.preventDefault()} // Prevent context menu on long press
166
168
  />
167
169
  </div>
168
170
  );
169
171
  };
170
172
 
171
- export default PhotoViewerImage;
173
+ export default PhotoViewerImage;
@@ -18,13 +18,13 @@ export interface PhotoViewerInfoProps {
18
18
 
19
19
  /**
20
20
  * PhotoViewerInfo component - displays image metadata and information
21
- *
21
+ *
22
22
  * @param props - PhotoViewerInfoProps
23
23
  * @returns JSX.Element
24
24
  */
25
25
  export const PhotoViewerInfo: React.FC<PhotoViewerInfoProps> = ({ show, image, onClose }) => {
26
26
  if (!show || !image) return null;
27
-
27
+
28
28
  return (
29
29
  <div className="c-photo-viewer__info-panel">
30
30
  <Button
@@ -39,13 +39,21 @@ export const PhotoViewerInfo: React.FC<PhotoViewerInfoProps> = ({ show, image, o
39
39
  />
40
40
  <div className="c-photo-viewer__info-content">
41
41
  {image.title && <h3 className="c-photo-viewer__info-title">{image.title}</h3>}
42
- {image.description && <p className="c-photo-viewer__info-description">{image.description}</p>}
42
+ {image.description && (
43
+ <p className="c-photo-viewer__info-description">{image.description}</p>
44
+ )}
43
45
  {image.date && <p className="c-photo-viewer__info-meta">Date: {image.date}</p>}
44
46
  {image.author && <p className="c-photo-viewer__info-meta">By: {image.author}</p>}
45
47
  {image.tags && image.tags.length > 0 && (
46
48
  <div className="c-photo-viewer__info-tags">
47
49
  {image.tags.map((tag: string, index: number) => (
48
- <Badge key={index} label={tag} variant="light" size="sm" className="c-photo-viewer__info-tag" />
50
+ <Badge
51
+ key={index}
52
+ label={tag}
53
+ variant="light"
54
+ size="sm"
55
+ className="c-photo-viewer__info-tag"
56
+ />
49
57
  ))}
50
58
  </div>
51
59
  )}
@@ -54,4 +62,4 @@ export const PhotoViewerInfo: React.FC<PhotoViewerInfoProps> = ({ show, image, o
54
62
  );
55
63
  };
56
64
 
57
- export default PhotoViewerInfo;
65
+ export default PhotoViewerInfo;
@@ -24,7 +24,7 @@ export interface PhotoViewerNavigationProps {
24
24
 
25
25
  /**
26
26
  * PhotoViewerNavigation component - handles navigation between images
27
- *
27
+ *
28
28
  * @param props - PhotoViewerNavigationProps
29
29
  * @returns JSX.Element
30
30
  */
@@ -40,17 +40,17 @@ export const PhotoViewerNavigation: React.FC<PhotoViewerNavigationProps> = ({
40
40
  // Add keyboard navigation
41
41
  useEffect(() => {
42
42
  if (!enableKeyboardNav) return undefined;
43
-
43
+
44
44
  const handleKeyDown = (e: KeyboardEvent) => {
45
45
  if (e.key === 'ArrowLeft') onPrev();
46
46
  if (e.key === 'ArrowRight') onNext();
47
47
  if (e.key === 'Escape') onClose();
48
48
  };
49
-
49
+
50
50
  window.addEventListener('keydown', handleKeyDown);
51
51
  return () => window.removeEventListener('keydown', handleKeyDown);
52
52
  }, [enableKeyboardNav, onPrev, onNext, onClose]);
53
-
53
+
54
54
  return show ? (
55
55
  <>
56
56
  <Button
@@ -79,4 +79,4 @@ export const PhotoViewerNavigation: React.FC<PhotoViewerNavigationProps> = ({
79
79
  ) : null;
80
80
  };
81
81
 
82
- export default PhotoViewerNavigation;
82
+ export default PhotoViewerNavigation;
@@ -16,37 +16,38 @@ export interface PhotoViewerThumbnailsProps {
16
16
 
17
17
  /**
18
18
  * PhotoViewerThumbnails component - displays thumbnail navigation for images
19
- *
19
+ *
20
20
  * @param props - PhotoViewerThumbnailsProps
21
21
  * @returns JSX.Element
22
22
  */
23
- export const PhotoViewerThumbnails: React.FC<PhotoViewerThumbnailsProps> = ({
24
- images,
25
- currentIndex,
26
- goToImage
27
- }) => images.length > 1 ? (
28
- <div className="c-photo-viewer__thumbnails">
29
- {images.map((image: ImageType, index: number) => {
30
- const thumbnailSrc = image.thumbnail || image.src;
31
- return (
32
- <Button
33
- key={index}
34
- variant="light"
35
- className={`c-photo-viewer__thumbnail ${index === currentIndex ? 'is-active' : ''}`}
36
- onClick={() => goToImage(index)}
37
- aria-label={`View image ${index + 1}`}
38
- aria-current={index === currentIndex}
39
- >
40
- <img
41
- loading="lazy"
42
- src={thumbnailSrc}
43
- alt={image.alt || `Thumbnail ${index + 1}`}
44
- className="c-photo-viewer__thumbnail-img"
45
- />
46
- </Button>
47
- );
48
- })}
49
- </div>
50
- ) : null;
23
+ export const PhotoViewerThumbnails: React.FC<PhotoViewerThumbnailsProps> = ({
24
+ images,
25
+ currentIndex,
26
+ goToImage,
27
+ }) =>
28
+ images.length > 1 ? (
29
+ <div className="c-photo-viewer__thumbnails">
30
+ {images.map((image: ImageType, index: number) => {
31
+ const thumbnailSrc = image.thumbnail || image.src;
32
+ return (
33
+ <Button
34
+ key={index}
35
+ variant="light"
36
+ className={`c-photo-viewer__thumbnail ${index === currentIndex ? 'is-active' : ''}`}
37
+ onClick={() => goToImage(index)}
38
+ aria-label={`View image ${index + 1}`}
39
+ aria-current={index === currentIndex}
40
+ >
41
+ <img
42
+ loading="lazy"
43
+ src={thumbnailSrc}
44
+ alt={image.alt || `Thumbnail ${index + 1}`}
45
+ className="c-photo-viewer__thumbnail-img"
46
+ />
47
+ </Button>
48
+ );
49
+ })}
50
+ </div>
51
+ ) : null;
51
52
 
52
- export default PhotoViewerThumbnails;
53
+ export default PhotoViewerThumbnails;
@@ -23,7 +23,7 @@ const galleryImages: GalleryImage[] = [
23
23
  description: 'Beautiful mountain landscape with a lake view',
24
24
  url: 'https://picsum.photos/id/10/800/600',
25
25
  width: 800,
26
- height: 600
26
+ height: 600,
27
27
  },
28
28
  {
29
29
  id: 2,
@@ -31,7 +31,7 @@ const galleryImages: GalleryImage[] = [
31
31
  description: 'Stunning sunset over the ocean',
32
32
  url: 'https://picsum.photos/id/11/800/1000',
33
33
  width: 800,
34
- height: 1000
34
+ height: 1000,
35
35
  },
36
36
  {
37
37
  id: 3,
@@ -39,7 +39,7 @@ const galleryImages: GalleryImage[] = [
39
39
  description: 'A serene path through a dense forest',
40
40
  url: 'https://picsum.photos/id/12/800/500',
41
41
  width: 800,
42
- height: 500
42
+ height: 500,
43
43
  },
44
44
  {
45
45
  id: 4,
@@ -47,7 +47,7 @@ const galleryImages: GalleryImage[] = [
47
47
  description: 'Urban skyline with modern architecture',
48
48
  url: 'https://picsum.photos/id/13/800/800',
49
49
  width: 800,
50
- height: 800
50
+ height: 800,
51
51
  },
52
52
  {
53
53
  id: 5,
@@ -55,7 +55,7 @@ const galleryImages: GalleryImage[] = [
55
55
  description: 'Colorful abstract painting with geometric shapes',
56
56
  url: 'https://picsum.photos/id/14/800/600',
57
57
  width: 800,
58
- height: 600
58
+ height: 600,
59
59
  },
60
60
  {
61
61
  id: 6,
@@ -63,7 +63,7 @@ const galleryImages: GalleryImage[] = [
63
63
  description: 'Wild animals in their natural habitat',
64
64
  url: 'https://picsum.photos/id/15/800/1200',
65
65
  width: 800,
66
- height: 1200
66
+ height: 1200,
67
67
  },
68
68
  {
69
69
  id: 7,
@@ -71,7 +71,7 @@ const galleryImages: GalleryImage[] = [
71
71
  description: 'Impressive architectural details of a historic building',
72
72
  url: 'https://picsum.photos/id/16/800/600',
73
73
  width: 800,
74
- height: 600
74
+ height: 600,
75
75
  },
76
76
  {
77
77
  id: 8,
@@ -79,7 +79,7 @@ const galleryImages: GalleryImage[] = [
79
79
  description: 'Delicious culinary creation beautifully presented',
80
80
  url: 'https://picsum.photos/id/17/800/700',
81
81
  width: 800,
82
- height: 700
82
+ height: 700,
83
83
  },
84
84
  {
85
85
  id: 9,
@@ -87,7 +87,7 @@ const galleryImages: GalleryImage[] = [
87
87
  description: 'Expressive portrait capturing human emotion',
88
88
  url: 'https://picsum.photos/id/18/800/1000',
89
89
  width: 800,
90
- height: 1000
90
+ height: 1000,
91
91
  },
92
92
  {
93
93
  id: 10,
@@ -95,7 +95,7 @@ const galleryImages: GalleryImage[] = [
95
95
  description: 'Macro photography revealing intricate natural details',
96
96
  url: 'https://picsum.photos/id/19/800/600',
97
97
  width: 800,
98
- height: 600
98
+ height: 600,
99
99
  },
100
100
  {
101
101
  id: 11,
@@ -103,7 +103,7 @@ const galleryImages: GalleryImage[] = [
103
103
  description: 'Iconic landmark from a popular travel destination',
104
104
  url: 'https://picsum.photos/id/20/800/900',
105
105
  width: 800,
106
- height: 900
106
+ height: 900,
107
107
  },
108
108
  {
109
109
  id: 12,
@@ -111,63 +111,53 @@ const galleryImages: GalleryImage[] = [
111
111
  description: 'Clean, minimalist composition with simple elements',
112
112
  url: 'https://picsum.photos/id/21/800/600',
113
113
  width: 800,
114
- height: 600
115
- }
114
+ height: 600,
115
+ },
116
116
  ];
117
117
 
118
118
  export const ImageGallery: React.FC = () => {
119
119
  // State to track which images are selected for the PhotoViewer
120
120
  const [selectedImageIndex, setSelectedImageIndex] = useState(0);
121
121
  const [showPhotoViewer, setShowPhotoViewer] = useState(false);
122
-
122
+
123
123
  // Create enhanced image objects for the PhotoViewer
124
124
  const enhancedImages = galleryImages.map(image => ({
125
125
  src: image.url,
126
126
  alt: image.title,
127
127
  title: image.title,
128
128
  description: image.description,
129
- tags: [`${image.width}x${image.height}`]
129
+ tags: [`${image.width}x${image.height}`],
130
130
  }));
131
-
131
+
132
132
  // Handle clicking on a gallery item
133
133
  const handleImageClick = (index: number) => {
134
134
  setSelectedImageIndex(index);
135
135
  setShowPhotoViewer(true);
136
136
  };
137
-
137
+
138
138
  // Handle closing the PhotoViewer
139
139
  const handlePhotoViewerClose = () => {
140
140
  setShowPhotoViewer(false);
141
141
  };
142
-
142
+
143
143
  // Create spy function for image change handler
144
144
  const handleImageChange = fn((index: number) => {
145
145
  setSelectedImageIndex(index);
146
146
  });
147
-
147
+
148
148
  return (
149
149
  <div className="c-image-gallery">
150
150
  <h2 className="c-image-gallery__title">Image Gallery</h2>
151
151
  <p className="c-image-gallery__description">
152
- Click on any image to view it in the PhotoViewer. Navigate through the gallery using the arrow buttons or thumbnails.
152
+ Click on any image to view it in the PhotoViewer. Navigate through the gallery using the
153
+ arrow buttons or thumbnails.
153
154
  </p>
154
-
155
+
155
156
  {/* MasonryGrid for the image gallery */}
156
- <MasonryGrid
157
- xs={1}
158
- sm={2}
159
- md={3}
160
- lg={4}
161
- gap={16}
162
- animate={true}
163
- imagesLoaded={true}
164
- >
157
+ <MasonryGrid xs={1} sm={2} md={3} lg={4} gap={16} animate={true} imagesLoaded={true}>
165
158
  {galleryImages.map((image, index) => (
166
159
  <MasonryGridItem key={image.id}>
167
- <div
168
- className="c-image-gallery__item"
169
- onClick={() => handleImageClick(index)}
170
- >
160
+ <div className="c-image-gallery__item" onClick={() => handleImageClick(index)}>
171
161
  <Card
172
162
  image={image.url}
173
163
  imageAlt={image.title}
@@ -179,10 +169,10 @@ export const ImageGallery: React.FC = () => {
179
169
  </MasonryGridItem>
180
170
  ))}
181
171
  </MasonryGrid>
182
-
172
+
183
173
  {/* PhotoViewer component */}
184
174
  {showPhotoViewer && (
185
- <PhotoViewer
175
+ <PhotoViewer
186
176
  images={enhancedImages}
187
177
  startIndex={selectedImageIndex}
188
178
  onClose={handlePhotoViewerClose}
@@ -197,4 +187,4 @@ export const ImageGallery: React.FC = () => {
197
187
  );
198
188
  };
199
189
 
200
- export default ImageGallery;
190
+ export default ImageGallery;
@@ -12,46 +12,52 @@ const images = [
12
12
  export const SimpleGallery: React.FC = () => {
13
13
  const [selectedIndex, setSelectedIndex] = useState(0);
14
14
  const [showViewer, setShowViewer] = useState(false);
15
-
15
+
16
16
  const handleOpen = (index: number) => {
17
17
  setSelectedIndex(index);
18
18
  setShowViewer(true);
19
19
  };
20
-
20
+
21
21
  const handleClose = () => {
22
22
  setShowViewer(false);
23
23
  };
24
-
24
+
25
25
  // Create spy functions for event handlers
26
26
  const handleImageChange = fn((index: number) => {
27
27
  setSelectedIndex(index);
28
28
  });
29
-
29
+
30
30
  return (
31
31
  <div style={{ padding: '20px' }}>
32
32
  <h2 style={{ marginBottom: '20px' }}>Simple Gallery Example</h2>
33
- <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fill, minmax(200px, 1fr))', gap: '16px' }}>
33
+ <div
34
+ style={{
35
+ display: 'grid',
36
+ gridTemplateColumns: 'repeat(auto-fill, minmax(200px, 1fr))',
37
+ gap: '16px',
38
+ }}
39
+ >
34
40
  {images.map((src, index) => (
35
- <div
41
+ <div
36
42
  key={index}
37
43
  onClick={() => handleOpen(index)}
38
- style={{
44
+ style={{
39
45
  cursor: 'pointer',
40
46
  borderRadius: '8px',
41
47
  overflow: 'hidden',
42
48
  boxShadow: '0 4px 6px rgba(0,0,0,0.1)',
43
- transition: 'transform 0.3s ease'
49
+ transition: 'transform 0.3s ease',
44
50
  }}
45
51
  >
46
- <img
47
- src={src}
48
- alt={`Gallery image ${index + 1}`}
52
+ <img
53
+ src={src}
54
+ alt={`Gallery image ${index + 1}`}
49
55
  style={{ width: '100%', height: 'auto', display: 'block' }}
50
56
  />
51
57
  </div>
52
58
  ))}
53
59
  </div>
54
-
60
+
55
61
  {showViewer && (
56
62
  <PhotoViewer
57
63
  images={images}
@@ -68,4 +74,4 @@ export const SimpleGallery: React.FC = () => {
68
74
  );
69
75
  };
70
76
 
71
- export default SimpleGallery;
77
+ export default SimpleGallery;
@@ -1,2 +1,2 @@
1
1
  export { ImageGallery } from './ImageGallery';
2
- export type { GalleryImage } from './ImageGallery';
2
+ export type { GalleryImage } from './ImageGallery';
@@ -11,4 +11,4 @@ export type { PhotoViewerHeaderProps } from './PhotoViewerHeader';
11
11
  export type { PhotoViewerNavigationProps } from './PhotoViewerNavigation';
12
12
  export type { PhotoViewerImageProps } from './PhotoViewerImage';
13
13
  export type { PhotoViewerThumbnailsProps } from './PhotoViewerThumbnails';
14
- export type { PhotoViewerInfoProps } from './PhotoViewerInfo';
14
+ export type { PhotoViewerInfoProps } from './PhotoViewerInfo';