@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
@@ -63,33 +63,33 @@ const navButtons: NavButtonConfig[] = [
63
63
  iconHtml: '«',
64
64
  iconClass: 'c-icon c-icon--sm c-pagination__icon-skip-back',
65
65
  label: 'Go to first page',
66
- action: (pagination) => pagination.goToPage(1),
67
- isDisabled: (pagination) => pagination.currentPage === 1
66
+ action: pagination => pagination.goToPage(1),
67
+ isDisabled: pagination => pagination.currentPage === 1,
68
68
  },
69
69
  {
70
70
  type: 'prev',
71
71
  iconHtml: '‹',
72
72
  iconClass: 'c-icon c-icon--sm c-pagination__icon-caret-left',
73
73
  label: 'Go to previous page',
74
- action: (pagination) => pagination.goToPage(pagination.currentPage - 1),
75
- isDisabled: (pagination) => pagination.currentPage === 1
74
+ action: pagination => pagination.goToPage(pagination.currentPage - 1),
75
+ isDisabled: pagination => pagination.currentPage === 1,
76
76
  },
77
77
  {
78
78
  type: 'next',
79
79
  iconHtml: '›',
80
80
  iconClass: 'c-icon c-icon--sm c-pagination__icon-caret-right',
81
81
  label: 'Go to next page',
82
- action: (pagination) => pagination.goToPage(pagination.currentPage + 1),
83
- isDisabled: (pagination) => pagination.currentPage === pagination.totalPages
82
+ action: pagination => pagination.goToPage(pagination.currentPage + 1),
83
+ isDisabled: pagination => pagination.currentPage === pagination.totalPages,
84
84
  },
85
85
  {
86
86
  type: 'last',
87
87
  iconHtml: '»',
88
88
  iconClass: 'c-icon c-icon--sm c-pagination__icon-skip-forward',
89
89
  label: 'Go to last page',
90
- action: (pagination) => pagination.goToPage(pagination.totalPages),
91
- isDisabled: (pagination) => pagination.currentPage === pagination.totalPages
92
- }
90
+ action: pagination => pagination.goToPage(pagination.totalPages),
91
+ isDisabled: pagination => pagination.currentPage === pagination.totalPages,
92
+ },
93
93
  ];
94
94
 
95
95
  class Pagination {
@@ -105,7 +105,7 @@ class Pagination {
105
105
  throw new Error('Pagination element not found');
106
106
  }
107
107
  this.$element = el;
108
- this.options = { ...defaults, ...this._parseDataAttributes(), ...options };
108
+ this.options = { ...defaults, ...this._parseDataAttributes(), ...options };
109
109
  this.currentPage = Number(this.options.currentPage) || 1;
110
110
  this.totalPages = Number(this.options.totalPages) || 1;
111
111
 
@@ -118,16 +118,18 @@ class Pagination {
118
118
  private _parseDataAttributes(): Partial<PaginationOptions> {
119
119
  const dataset = this.$element.dataset;
120
120
  const result: Partial<PaginationOptions> = {};
121
-
121
+
122
122
  if (dataset.currentPage) result.currentPage = Number(dataset.currentPage);
123
123
  if (dataset.totalPages) result.totalPages = Number(dataset.totalPages);
124
124
  if (dataset.siblingCount) result.siblingCount = Number(dataset.siblingCount);
125
- if (dataset.showFirstLastButtons) result.showFirstLastButtons = dataset.showFirstLastButtons === 'true';
126
- if (dataset.showPrevNextButtons) result.showPrevNextButtons = dataset.showPrevNextButtons === 'true';
125
+ if (dataset.showFirstLastButtons)
126
+ result.showFirstLastButtons = dataset.showFirstLastButtons === 'true';
127
+ if (dataset.showPrevNextButtons)
128
+ result.showPrevNextButtons = dataset.showPrevNextButtons === 'true';
127
129
  if (dataset.size) result.size = dataset.size as 'sm' | 'md' | 'lg';
128
130
  if (dataset.ariaLabel) result.ariaLabel = dataset.ariaLabel;
129
131
  if (dataset.useIcons) result.useIcons = dataset.useIcons === 'true';
130
-
132
+
131
133
  return result;
132
134
  }
133
135
 
@@ -141,12 +143,12 @@ class Pagination {
141
143
  */
142
144
  private _createNavButtonHtml(config: NavButtonConfig | undefined): string {
143
145
  if (!config) return '';
144
-
146
+
145
147
  const isDisabled = config.isDisabled(this);
146
- const buttonContent = this.options.useIcons
147
- ? `<span class="${config.iconClass}" aria-hidden="true"></span>`
148
+ const buttonContent = this.options.useIcons
149
+ ? `<span class="${config.iconClass}" aria-hidden="true"></span>`
148
150
  : config.iconHtml;
149
-
151
+
150
152
  return `
151
153
  <li class="${this.options.pageItemSelector?.substring(1) || 'c-pagination__item'} c-pagination__item--${config.type}${isDisabled ? ' ' + this.options.disabledClass : ''}"
152
154
  aria-disabled="${isDisabled}">
@@ -163,11 +165,11 @@ class Pagination {
163
165
 
164
166
  private _render(): void {
165
167
  // Get pagination range using the same logic as React component
166
- const { paginationRange } = usePagination({
167
- currentPage: this.currentPage,
168
- totalPages: this.totalPages,
168
+ const { paginationRange } = usePagination({
169
+ currentPage: this.currentPage,
170
+ totalPages: this.totalPages,
169
171
  siblingCount: this.options.siblingCount,
170
- onPageChange: this.options.onPageChange || (() => {})
172
+ onPageChange: this.options.onPageChange || (() => {}),
171
173
  });
172
174
 
173
175
  // Create container with appropriate attributes
@@ -183,7 +185,7 @@ class Pagination {
183
185
  const firstButton = navButtons.find(btn => btn.type === 'first');
184
186
  html += this._createNavButtonHtml(firstButton);
185
187
  }
186
-
188
+
187
189
  if (this.options.showPrevNextButtons) {
188
190
  const prevButton = navButtons.find(btn => btn.type === 'prev');
189
191
  html += this._createNavButtonHtml(prevButton);
@@ -215,7 +217,7 @@ class Pagination {
215
217
  const nextButton = navButtons.find(btn => btn.type === 'next');
216
218
  html += this._createNavButtonHtml(nextButton);
217
219
  }
218
-
220
+
219
221
  if (this.options.showFirstLastButtons) {
220
222
  const lastButton = navButtons.find(btn => btn.type === 'last');
221
223
  html += this._createNavButtonHtml(lastButton);
@@ -226,20 +228,20 @@ class Pagination {
226
228
  }
227
229
 
228
230
  private _attachEventListeners(): void {
229
- this.$element.addEventListener('click', (event) => {
231
+ this.$element.addEventListener('click', event => {
230
232
  const target = event.target as HTMLElement;
231
233
  const pageButton = target.closest('[data-page]') as HTMLElement;
232
234
 
233
235
  if (pageButton && !pageButton.hasAttribute('disabled')) {
234
236
  const pageAction = pageButton.dataset.page;
235
-
237
+
236
238
  // Handle navigation button actions
237
- const navButton = navButtons.find(btn => btn.type === pageAction as NavButtonType);
239
+ const navButton = navButtons.find(btn => btn.type === (pageAction as NavButtonType));
238
240
  if (navButton) {
239
241
  navButton.action(this);
240
242
  return;
241
243
  }
242
-
244
+
243
245
  // Handle page number clicks
244
246
  if (pageAction && !isNaN(Number(pageAction))) {
245
247
  this.goToPage(Number(pageAction));
@@ -258,13 +260,13 @@ class Pagination {
258
260
  this.options.onPageChange(this.currentPage);
259
261
  }
260
262
  this._render();
261
-
263
+
262
264
  // Dispatch a custom event
263
- const event = new CustomEvent('pagechange', {
264
- detail: {
265
+ const event = new CustomEvent('pagechange', {
266
+ detail: {
265
267
  currentPage: this.currentPage,
266
- totalPages: this.totalPages
267
- }
268
+ totalPages: this.totalPages,
269
+ },
268
270
  });
269
271
  this.$element.dispatchEvent(event);
270
272
  }
@@ -275,15 +277,15 @@ class Pagination {
275
277
  */
276
278
  public update(options: Partial<PaginationOptions>): void {
277
279
  this.options = { ...this.options, ...options };
278
-
280
+
279
281
  if (options.currentPage !== undefined) {
280
282
  this.currentPage = Number(options.currentPage);
281
283
  }
282
-
284
+
283
285
  if (options.totalPages !== undefined) {
284
286
  this.totalPages = Number(options.totalPages);
285
287
  }
286
-
288
+
287
289
  this._render();
288
290
  }
289
291
 
@@ -301,7 +303,10 @@ class Pagination {
301
303
  /**
302
304
  * Static initialization method
303
305
  */
304
- static initializeAll(selector: string = '[data-component="pagination"]', options: PaginationOptions = {}): Pagination[] {
306
+ static initializeAll(
307
+ selector: string = '[data-component="pagination"]',
308
+ options: PaginationOptions = {}
309
+ ): Pagination[] {
305
310
  const elements = document.querySelectorAll<HTMLElement>(selector);
306
311
  return Array.from(elements).map(element => new Pagination(element, options));
307
312
  }
@@ -1,16 +1,16 @@
1
- import React from "react";
2
- import { Meta, StoryObj } from "@storybook/react";
3
- import { fn } from "@storybook/test";
4
- import { PhotoViewer } from "./PhotoViewer";
5
- import { ImageType } from "../../lib/types/components";
6
- import { ImageGallery } from "./examples/ImageGallery";
7
- import { SimpleGallery } from "./examples/SimpleGallery";
1
+ import React from 'react';
2
+ import { Meta, StoryObj } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
4
+ import { PhotoViewer } from './PhotoViewer';
5
+ import { ImageType } from '../../lib/types/components';
6
+ import { ImageGallery } from './examples/ImageGallery';
7
+ import { SimpleGallery } from './examples/SimpleGallery';
8
8
 
9
9
  const meta: Meta<typeof PhotoViewer> = {
10
- title: "Components/PhotoViewer",
10
+ title: 'Components/PhotoViewer',
11
11
  component: PhotoViewer,
12
12
  parameters: {
13
- layout: "fullscreen",
13
+ layout: 'fullscreen',
14
14
  },
15
15
  };
16
16
 
@@ -23,10 +23,10 @@ type Story = StoryObj<typeof PhotoViewer>;
23
23
  export const Default: Story = {
24
24
  args: {
25
25
  images: [
26
- "https://picsum.photos/id/10/800/600",
27
- "https://picsum.photos/id/11/800/1000",
28
- "https://picsum.photos/id/12/800/500",
29
- "https://picsum.photos/id/13/800/800",
26
+ 'https://picsum.photos/id/10/800/600',
27
+ 'https://picsum.photos/id/11/800/1000',
28
+ 'https://picsum.photos/id/12/800/500',
29
+ 'https://picsum.photos/id/13/800/800',
30
30
  ],
31
31
  startIndex: 0,
32
32
  onImageChange: fn(),
@@ -39,10 +39,10 @@ export const Default: Story = {
39
39
  export const StartAtSecond: Story = {
40
40
  args: {
41
41
  images: [
42
- "https://picsum.photos/id/10/800/600",
43
- "https://picsum.photos/id/11/800/1000",
44
- "https://picsum.photos/id/12/800/500",
45
- "https://picsum.photos/id/13/800/800",
42
+ 'https://picsum.photos/id/10/800/600',
43
+ 'https://picsum.photos/id/11/800/1000',
44
+ 'https://picsum.photos/id/12/800/500',
45
+ 'https://picsum.photos/id/13/800/800',
46
46
  ],
47
47
  startIndex: 1,
48
48
  onImageChange: fn(),
@@ -55,10 +55,10 @@ export const StartAtSecond: Story = {
55
55
  export const Disabled: Story = {
56
56
  args: {
57
57
  images: [
58
- "https://picsum.photos/id/10/800/600",
59
- "https://picsum.photos/id/11/800/1000",
60
- "https://picsum.photos/id/12/800/500",
61
- "https://picsum.photos/id/13/800/800",
58
+ 'https://picsum.photos/id/10/800/600',
59
+ 'https://picsum.photos/id/11/800/1000',
60
+ 'https://picsum.photos/id/12/800/500',
61
+ 'https://picsum.photos/id/13/800/800',
62
62
  ],
63
63
  disabled: true,
64
64
  onImageChange: fn(),
@@ -71,12 +71,12 @@ export const Disabled: Story = {
71
71
  export const WithCustomClass: Story = {
72
72
  args: {
73
73
  images: [
74
- "https://picsum.photos/id/10/800/600",
75
- "https://picsum.photos/id/11/800/1000",
76
- "https://picsum.photos/id/12/800/500",
77
- "https://picsum.photos/id/13/800/800",
74
+ 'https://picsum.photos/id/10/800/600',
75
+ 'https://picsum.photos/id/11/800/1000',
76
+ 'https://picsum.photos/id/12/800/500',
77
+ 'https://picsum.photos/id/13/800/800',
78
78
  ],
79
- className: "custom-photo-viewer",
79
+ className: 'custom-photo-viewer',
80
80
  onImageChange: fn(),
81
81
  },
82
82
  };
@@ -88,25 +88,25 @@ export const WithEnhancedImages: Story = {
88
88
  args: {
89
89
  images: [
90
90
  {
91
- src: "https://picsum.photos/id/10/800/600",
92
- alt: "Mountain Landscape",
93
- title: "Mountain Landscape",
94
- description: "Beautiful mountain landscape with a lake view",
95
- tags: ["nature", "mountains", "landscape"],
91
+ src: 'https://picsum.photos/id/10/800/600',
92
+ alt: 'Mountain Landscape',
93
+ title: 'Mountain Landscape',
94
+ description: 'Beautiful mountain landscape with a lake view',
95
+ tags: ['nature', 'mountains', 'landscape'],
96
96
  } as ImageType, // Cast to ImageType
97
97
  {
98
- src: "https://picsum.photos/id/11/800/1000",
99
- alt: "Beach Sunset",
100
- title: "Beach Sunset",
101
- description: "Stunning sunset over the ocean",
102
- tags: ["beach", "sunset", "ocean"],
98
+ src: 'https://picsum.photos/id/11/800/1000',
99
+ alt: 'Beach Sunset',
100
+ title: 'Beach Sunset',
101
+ description: 'Stunning sunset over the ocean',
102
+ tags: ['beach', 'sunset', 'ocean'],
103
103
  } as ImageType, // Cast to ImageType
104
104
  {
105
- src: "https://picsum.photos/id/12/800/500",
106
- alt: "Forest Path",
107
- title: "Forest Path",
108
- description: "A serene path through a dense forest",
109
- tags: ["forest", "nature", "path"],
105
+ src: 'https://picsum.photos/id/12/800/500',
106
+ alt: 'Forest Path',
107
+ title: 'Forest Path',
108
+ description: 'A serene path through a dense forest',
109
+ tags: ['forest', 'nature', 'path'],
110
110
  } as ImageType, // Cast to ImageType
111
111
  ],
112
112
  onImageChange: fn(),
@@ -119,12 +119,12 @@ export const WithEnhancedImages: Story = {
119
119
  export const LeftThumbnails: Story = {
120
120
  args: {
121
121
  images: [
122
- "https://picsum.photos/id/10/800/600",
123
- "https://picsum.photos/id/11/800/1000",
124
- "https://picsum.photos/id/12/800/500",
125
- "https://picsum.photos/id/13/800/800",
122
+ 'https://picsum.photos/id/10/800/600',
123
+ 'https://picsum.photos/id/11/800/1000',
124
+ 'https://picsum.photos/id/12/800/500',
125
+ 'https://picsum.photos/id/13/800/800',
126
126
  ],
127
- thumbnailPosition: "left",
127
+ thumbnailPosition: 'left',
128
128
  onImageChange: fn(),
129
129
  },
130
130
  };
@@ -138,7 +138,7 @@ export const ImageGalleryExample: Story = {
138
138
  docs: {
139
139
  description: {
140
140
  story:
141
- "This example demonstrates how to integrate the PhotoViewer with a MasonryGrid to create an image gallery with smooth transitions. Click on any image to open the PhotoViewer.",
141
+ 'This example demonstrates how to integrate the PhotoViewer with a MasonryGrid to create an image gallery with smooth transitions. Click on any image to open the PhotoViewer.',
142
142
  },
143
143
  },
144
144
  },
@@ -153,7 +153,7 @@ export const SimpleGalleryExample: Story = {
153
153
  docs: {
154
154
  description: {
155
155
  story:
156
- "This example demonstrates a basic image gallery using the SimpleGallery component, which integrates the PhotoViewer. Click on any image to open the PhotoViewer.",
156
+ 'This example demonstrates a basic image gallery using the SimpleGallery component, which integrates the PhotoViewer. Click on any image to open the PhotoViewer.',
157
157
  },
158
158
  },
159
159
  },
@@ -1,11 +1,11 @@
1
- import React, { useMemo, useEffect } from "react";
2
- import { PhotoViewerProps, ImageType } from "../../lib/types/components";
3
- import { usePhotoViewer } from "../../lib/composables/usePhotoViewer";
4
- import { PhotoViewerHeader } from "./PhotoViewerHeader";
5
- import { PhotoViewerNavigation } from "./PhotoViewerNavigation";
6
- import { PhotoViewerImage } from "./PhotoViewerImage";
7
- import { PhotoViewerThumbnails } from "./PhotoViewerThumbnails";
8
- import { PhotoViewerInfo } from "./PhotoViewerInfo";
1
+ import React, { useMemo, useEffect } from 'react';
2
+ import { PhotoViewerProps, ImageType } from '../../lib/types/components';
3
+ import { usePhotoViewer } from '../../lib/composables/usePhotoViewer';
4
+ import { PhotoViewerHeader } from './PhotoViewerHeader';
5
+ import { PhotoViewerNavigation } from './PhotoViewerNavigation';
6
+ import { PhotoViewerImage } from './PhotoViewerImage';
7
+ import { PhotoViewerThumbnails } from './PhotoViewerThumbnails';
8
+ import { PhotoViewerInfo } from './PhotoViewerInfo';
9
9
 
10
10
  /**
11
11
  * PhotoViewer component - A comprehensive image viewer with zoom, pan, navigation, and metadata display
@@ -27,12 +27,12 @@ import { PhotoViewerInfo } from "./PhotoViewerInfo";
27
27
  export const PhotoViewer: React.FC<PhotoViewerProps> = ({
28
28
  images,
29
29
  startIndex = 0,
30
- className = "",
30
+ className = '',
31
31
  disabled = false,
32
32
  enableKeyboardNavigation = true,
33
33
  enableGestures = true,
34
34
  enableFullscreen = true,
35
- thumbnailPosition = "bottom",
35
+ thumbnailPosition = 'bottom',
36
36
  onImageChange,
37
37
  onClose,
38
38
  }) => {
@@ -77,7 +77,7 @@ export const PhotoViewer: React.FC<PhotoViewerProps> = ({
77
77
 
78
78
  // Process images to handle both string arrays and object arrays, ensuring ImageType structure
79
79
  const processedImages: ImageType[] = useMemo(() => {
80
- return images.map((img) => (typeof img === "string" ? { src: img } : img));
80
+ return images.map(img => (typeof img === 'string' ? { src: img } : img));
81
81
  }, [images]);
82
82
 
83
83
  // Current image object
@@ -109,7 +109,7 @@ export const PhotoViewer: React.FC<PhotoViewerProps> = ({
109
109
  const handleDownload = () => {
110
110
  if (!currentImage?.src) return;
111
111
 
112
- const link = document.createElement("a");
112
+ const link = document.createElement('a');
113
113
  link.href = currentImage.src;
114
114
  link.download = currentImage.title || `image-${currentIndex + 1}`;
115
115
  document.body.appendChild(link);
@@ -123,12 +123,12 @@ export const PhotoViewer: React.FC<PhotoViewerProps> = ({
123
123
 
124
124
  try {
125
125
  await navigator.share({
126
- title: currentImage.title || "Shared Image",
127
- text: currentImage.description || "Check out this image",
126
+ title: currentImage.title || 'Shared Image',
127
+ text: currentImage.description || 'Check out this image',
128
128
  url: currentImage.src,
129
129
  });
130
130
  } catch (error) {
131
- console.error("Error sharing:", error);
131
+ console.error('Error sharing:', error);
132
132
  }
133
133
  };
134
134
 
@@ -136,24 +136,17 @@ export const PhotoViewer: React.FC<PhotoViewerProps> = ({
136
136
  const photoViewerClasses = useMemo(
137
137
  () =>
138
138
  [
139
- "c-photo-viewer",
139
+ 'c-photo-viewer',
140
140
  `c-photo-viewer--thumbnails-${thumbnailPosition}`,
141
- isDragging ? "c-photo-viewer--dragging" : "",
142
- isFullscreen ? "c-photo-viewer--fullscreen" : "",
143
- showInfo ? "c-photo-viewer--info-open" : "",
144
- disabled ? "is-disabled" : "",
141
+ isDragging ? 'c-photo-viewer--dragging' : '',
142
+ isFullscreen ? 'c-photo-viewer--fullscreen' : '',
143
+ showInfo ? 'c-photo-viewer--info-open' : '',
144
+ disabled ? 'is-disabled' : '',
145
145
  className,
146
146
  ]
147
147
  .filter(Boolean)
148
- .join(" "),
149
- [
150
- isDragging,
151
- isFullscreen,
152
- showInfo,
153
- disabled,
154
- thumbnailPosition,
155
- className,
156
- ],
148
+ .join(' '),
149
+ [isDragging, isFullscreen, showInfo, disabled, thumbnailPosition, className]
157
150
  );
158
151
 
159
152
  // Listen for fullscreen changes
@@ -162,17 +155,16 @@ export const PhotoViewer: React.FC<PhotoViewerProps> = ({
162
155
  setIsFullscreen(!!document.fullscreenElement);
163
156
  };
164
157
 
165
- document.addEventListener("fullscreenchange", handleFullscreenChange);
166
- return () =>
167
- document.removeEventListener("fullscreenchange", handleFullscreenChange);
158
+ document.addEventListener('fullscreenchange', handleFullscreenChange);
159
+ return () => document.removeEventListener('fullscreenchange', handleFullscreenChange);
168
160
  }, [setIsFullscreen]);
169
161
 
170
162
  // Add/remove is-open-photoviewer class on body
171
163
  useEffect(() => {
172
- document.body.classList.add("is-open-photoviewer");
164
+ document.body.classList.add('is-open-photoviewer');
173
165
 
174
166
  return () => {
175
- document.body.classList.remove("is-open-photoviewer");
167
+ document.body.classList.remove('is-open-photoviewer');
176
168
  };
177
169
  }, []);
178
170
 
@@ -180,12 +172,7 @@ export const PhotoViewer: React.FC<PhotoViewerProps> = ({
180
172
  if (!images.length) return null;
181
173
 
182
174
  return (
183
- <div
184
- className={photoViewerClasses}
185
- role="dialog"
186
- aria-modal="true"
187
- aria-label="Photo viewer"
188
- >
175
+ <div className={photoViewerClasses} role="dialog" aria-modal="true" aria-label="Photo viewer">
189
176
  <div className="c-photo-viewer__backdrop" onClick={closeModal} />
190
177
  <div className="c-photo-viewer__container">
191
178
  <PhotoViewerHeader
@@ -239,18 +226,14 @@ export const PhotoViewer: React.FC<PhotoViewerProps> = ({
239
226
  />
240
227
  )}
241
228
  </div>
242
- {thumbnailPosition !== "none" && (
229
+ {thumbnailPosition !== 'none' && (
243
230
  <PhotoViewerThumbnails
244
231
  images={processedImages}
245
232
  currentIndex={currentIndex}
246
233
  goToImage={goToImage}
247
234
  />
248
235
  )}
249
- <PhotoViewerInfo
250
- show={showInfo}
251
- image={currentImage}
252
- onClose={() => setShowInfo(false)}
253
- />
236
+ <PhotoViewerInfo show={showInfo} image={currentImage} onClose={() => setShowInfo(false)} />
254
237
  </div>
255
238
  </div>
256
239
  );
@@ -1,8 +1,8 @@
1
- import React from "react";
2
- import { ImageType } from "../../lib/types/components";
3
- import { Button } from "../Button/Button";
4
- import { Badge } from "../Badge/Badge";
5
- import { Icon } from "../Icon/Icon";
1
+ import React from 'react';
2
+ import { ImageType } from '../../lib/types/components';
3
+ import { Button } from '../Button/Button';
4
+ import { Badge } from '../Badge/Badge';
5
+ import { Icon } from '../Icon/Icon';
6
6
 
7
7
  /**
8
8
  * Props for the PhotoViewerHeader component
@@ -126,27 +126,25 @@ export const PhotoViewerHeader: React.FC<PhotoViewerHeaderProps> = ({
126
126
  className="c-photo-viewer__action-button"
127
127
  />
128
128
  )}
129
- {currentImage?.src &&
130
- typeof navigator !== "undefined" &&
131
- "share" in navigator && (
132
- <Button
133
- iconOnly
134
- size="sm"
135
- variant="light"
136
- rounded
137
- onClick={onShare}
138
- aria-label="Share image"
139
- icon={<Icon name="ShareNetwork" size="sm" />}
140
- className="c-photo-viewer__action-button"
141
- />
142
- )}
129
+ {currentImage?.src && typeof navigator !== 'undefined' && 'share' in navigator && (
130
+ <Button
131
+ iconOnly
132
+ size="sm"
133
+ variant="light"
134
+ rounded
135
+ onClick={onShare}
136
+ aria-label="Share image"
137
+ icon={<Icon name="ShareNetwork" size="sm" />}
138
+ className="c-photo-viewer__action-button"
139
+ />
140
+ )}
143
141
  <Button
144
142
  iconOnly
145
143
  size="sm"
146
144
  variant="light"
147
145
  rounded
148
146
  onClick={onToggleInfo}
149
- aria-label={showInfo ? "Hide info" : "Show info"}
147
+ aria-label={showInfo ? 'Hide info' : 'Show info'}
150
148
  icon={<Icon name="Info" size="sm" />}
151
149
  className="c-photo-viewer__action-button"
152
150
  />
@@ -156,13 +154,9 @@ export const PhotoViewerHeader: React.FC<PhotoViewerHeaderProps> = ({
156
154
  variant="light"
157
155
  rounded
158
156
  onClick={onToggleFullscreen}
159
- aria-label={isFullscreen ? "Exit fullscreen" : "Enter fullscreen"}
157
+ aria-label={isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'}
160
158
  icon={
161
- isFullscreen ? (
162
- <Icon name="ArrowsIn" size="sm" />
163
- ) : (
164
- <Icon name="ArrowsOut" size="sm" />
165
- )
159
+ isFullscreen ? <Icon name="ArrowsIn" size="sm" /> : <Icon name="ArrowsOut" size="sm" />
166
160
  }
167
161
  className="c-photo-viewer__action-button"
168
162
  />