@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
@@ -46,34 +46,31 @@ export default {
46
46
  } as Meta<typeof Popover>;
47
47
 
48
48
  // Default template
49
- const Template: StoryFn<typeof Popover> = (args) => {
49
+ const Template: StoryFn<typeof Popover> = args => {
50
50
  const selectOptions = [
51
51
  { value: '1', label: 'Option 1' },
52
52
  { value: '2', label: 'Option 2' },
53
53
  { value: '3', label: 'Option 3' },
54
54
  { value: '4', label: 'Option 4' },
55
55
  ];
56
-
56
+
57
57
  const [selectedOption, setSelectedOption] = React.useState('1');
58
58
  const [showInternalOnly, setShowInternalOnly] = React.useState(false);
59
-
59
+
60
60
  const handleSelectChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
61
61
  setSelectedOption(e.target.value);
62
62
  };
63
-
63
+
64
64
  const handleToggleChange = () => {
65
65
  setShowInternalOnly(!showInternalOnly);
66
66
  };
67
-
67
+
68
68
  const content = (
69
69
  <>
70
70
  <div className="u-d-flex u-align-items-center u-gap-7">
71
71
  <span className="u-text-nowrap">Sort by</span>
72
72
  <div className="c-select">
73
- <select
74
- value={selectedOption}
75
- onChange={handleSelectChange}
76
- >
73
+ <select value={selectedOption} onChange={handleSelectChange}>
77
74
  {selectOptions.map(option => (
78
75
  <option key={option.value} value={option.value}>
79
76
  {option.label}
@@ -88,9 +85,11 @@ const Template: StoryFn<typeof Popover> = (args) => {
88
85
  </div>
89
86
  </>
90
87
  );
91
-
88
+
92
89
  return (
93
- <div style={{ padding: '80px', display: 'flex', justifyContent: 'center', background: '#f5f5f5' }}>
90
+ <div
91
+ style={{ padding: '80px', display: 'flex', justifyContent: 'center', background: '#f5f5f5' }}
92
+ >
94
93
  <Popover {...args} content={content}>
95
94
  <PopoverTrigger trigger={args.trigger}>
96
95
  <Button variant="primary" label="Open Popover" />
@@ -141,4 +140,4 @@ AutoPosition.args = {
141
140
  ...Default.args,
142
141
  position: 'auto',
143
142
  defaultOpen: true, // Open by default to showcase auto-positioning
144
- };
143
+ };
@@ -16,7 +16,7 @@ export const PopoverContext = createContext<{
16
16
  setIsOpen: () => {},
17
17
  triggerRef: { current: null },
18
18
  popoverId: '',
19
- triggerType: 'click'
19
+ triggerType: 'click',
20
20
  });
21
21
 
22
22
  /**
@@ -45,7 +45,7 @@ export const Popover: React.FC<PopoverProps> = ({
45
45
  arrowRef,
46
46
  popoverId,
47
47
  currentPosition,
48
- updatePosition
48
+ updatePosition,
49
49
  } = usePopover({
50
50
  position,
51
51
  trigger,
@@ -56,32 +56,31 @@ export const Popover: React.FC<PopoverProps> = ({
56
56
  onOpenChange,
57
57
  closeOnClickOutside,
58
58
  closeOnEscape,
59
- id
59
+ id,
60
60
  });
61
-
61
+
62
62
  return (
63
63
  <PopoverContext.Provider
64
64
  value={{ isOpen, setIsOpen, triggerRef, popoverId, triggerType: trigger }}
65
65
  >
66
66
  {children}
67
-
68
- {typeof document !== 'undefined' && createPortal(
69
- <div
70
- ref={popoverRef}
71
- className={`c-popover c-popover--${currentPosition} ${isOpen ? POPOVER.CLASSES.IS_OPEN : ''} ${className}`}
72
- id={popoverId}
73
- role="tooltip"
74
- aria-hidden={!isOpen}
75
- >
76
- <div className="c-popover__content">
77
- <div className="c-popover__content-inner">
78
- {content}
67
+
68
+ {typeof document !== 'undefined' &&
69
+ createPortal(
70
+ <div
71
+ ref={popoverRef}
72
+ className={`c-popover c-popover--${currentPosition} ${isOpen ? POPOVER.CLASSES.IS_OPEN : ''} ${className}`}
73
+ id={popoverId}
74
+ role="tooltip"
75
+ aria-hidden={!isOpen}
76
+ >
77
+ <div className="c-popover__content">
78
+ <div className="c-popover__content-inner">{content}</div>
79
79
  </div>
80
- </div>
81
- <div ref={arrowRef} className="c-popover__arrow"></div>
82
- </div>,
83
- document.body
84
- )}
80
+ <div ref={arrowRef} className="c-popover__arrow"></div>
81
+ </div>,
82
+ document.body
83
+ )}
85
84
  </PopoverContext.Provider>
86
85
  );
87
86
  };
@@ -89,49 +88,50 @@ export const Popover: React.FC<PopoverProps> = ({
89
88
  /**
90
89
  * PopoverTrigger component to wrap the element that triggers the popover
91
90
  */
92
- export const PopoverTrigger: React.FC<PopoverTriggerProps> = forwardRef<HTMLElement, PopoverTriggerProps>(({
93
- children,
94
- trigger: triggerProp,
95
- }, ref) => {
96
- const { isOpen, setIsOpen, triggerRef, popoverId, triggerType } = React.useContext(PopoverContext);
97
-
91
+ export const PopoverTrigger: React.FC<PopoverTriggerProps> = forwardRef<
92
+ HTMLElement,
93
+ PopoverTriggerProps
94
+ >(({ children, trigger: triggerProp }, ref) => {
95
+ const { isOpen, setIsOpen, triggerRef, popoverId, triggerType } =
96
+ React.useContext(PopoverContext);
97
+
98
98
  // Determine which trigger type to use - prop from PopoverTrigger or from context
99
99
  const effectiveTrigger = triggerProp || triggerType;
100
-
100
+
101
101
  // Handle trigger events
102
102
  const handleClick = () => {
103
103
  setIsOpen(!isOpen);
104
104
  };
105
-
105
+
106
106
  const handleMouseEnter = () => {
107
107
  setIsOpen(true);
108
108
  };
109
-
109
+
110
110
  const handleMouseLeave = () => {
111
111
  setIsOpen(false);
112
112
  };
113
-
113
+
114
114
  // Clone the children element with additional props
115
115
  const child = React.Children.only(children) as React.ReactElement;
116
-
116
+
117
117
  const triggerProps: any = {
118
118
  ref: ref || triggerRef,
119
119
  'aria-describedby': popoverId,
120
120
  'aria-expanded': isOpen,
121
121
  };
122
-
122
+
123
123
  if (effectiveTrigger === 'click') {
124
124
  triggerProps.onClick = handleClick;
125
125
  } else if (effectiveTrigger === 'hover') {
126
126
  triggerProps.onMouseEnter = handleMouseEnter;
127
127
  triggerProps.onMouseLeave = handleMouseLeave;
128
128
  }
129
-
129
+
130
130
  return React.cloneElement(child, triggerProps);
131
- });
131
+ });
132
132
 
133
133
  export type { PopoverProps, PopoverTriggerProps };
134
134
 
135
135
  Popover.displayName = 'Popover';
136
136
 
137
- export default Popover;
137
+ export default Popover;
@@ -2,4 +2,4 @@ import { Popover, PopoverTrigger } from './Popover';
2
2
  import type { PopoverProps, PopoverTriggerProps } from '../../lib/types/components';
3
3
 
4
4
  export { Popover, PopoverTrigger };
5
- export type { PopoverProps, PopoverTriggerProps };
5
+ export type { PopoverProps, PopoverTriggerProps };
@@ -9,4 +9,4 @@ if (typeof window !== 'undefined') {
9
9
  }
10
10
 
11
11
  export { Popover, initPopovers };
12
- export type { PopoverPosition, PopoverOptions };
12
+ export type { PopoverPosition, PopoverOptions };
@@ -28,7 +28,7 @@ export const handleTriggerClick = (
28
28
  event.preventDefault();
29
29
  event.stopPropagation();
30
30
  }
31
-
31
+
32
32
  if (isOpen) {
33
33
  close();
34
34
  } else {
@@ -47,12 +47,9 @@ export const handleDocumentClick = (
47
47
  event: MouseEvent
48
48
  ): void => {
49
49
  if (!isOpen) return;
50
-
50
+
51
51
  const target = event.target as Node;
52
- if (
53
- !element.contains(target) &&
54
- trigger && !trigger.contains(target)
55
- ) {
52
+ if (!element.contains(target) && trigger && !trigger.contains(target)) {
56
53
  close();
57
54
  }
58
55
  };
@@ -63,13 +60,13 @@ export const handleDocumentClick = (
63
60
  export const handleTriggerMouseEnter = (
64
61
  open: () => void,
65
62
  delay: number,
66
- timeoutRef: { current: number | null },
63
+ timeoutRef: { current: number | null }
67
64
  ): void => {
68
65
  if (timeoutRef.current !== null) {
69
66
  window.clearTimeout(timeoutRef.current);
70
67
  timeoutRef.current = null;
71
68
  }
72
-
69
+
73
70
  if (delay > 0) {
74
71
  timeoutRef.current = window.setTimeout(() => {
75
72
  open();
@@ -85,13 +82,13 @@ export const handleTriggerMouseEnter = (
85
82
  export const handleTriggerMouseLeave = (
86
83
  element: HTMLElement,
87
84
  close: () => void,
88
- timeoutRef: { current: number | null },
85
+ timeoutRef: { current: number | null }
89
86
  ): void => {
90
87
  if (timeoutRef.current !== null) {
91
88
  window.clearTimeout(timeoutRef.current);
92
89
  timeoutRef.current = null;
93
90
  }
94
-
91
+
95
92
  timeoutRef.current = window.setTimeout(() => {
96
93
  if (!element.matches(':hover')) {
97
94
  close();
@@ -102,11 +99,7 @@ export const handleTriggerMouseLeave = (
102
99
  /**
103
100
  * Handle escape key to close popover
104
101
  */
105
- export const handleEscapeKey = (
106
- isOpen: boolean,
107
- close: () => void,
108
- event: KeyboardEvent
109
- ): void => {
102
+ export const handleEscapeKey = (isOpen: boolean, close: () => void, event: KeyboardEvent): void => {
110
103
  if (isOpen && event.key === 'Escape') {
111
104
  close();
112
105
  }
@@ -115,29 +108,27 @@ export const handleEscapeKey = (
115
108
  /**
116
109
  * Determine the best position based on available space
117
110
  */
118
- export const determineBestPosition = (
119
- triggerRect: DOMRect,
120
- ): PopoverPosition => {
111
+ export const determineBestPosition = (triggerRect: DOMRect): PopoverPosition => {
121
112
  const viewportWidth = window.innerWidth;
122
113
  const viewportHeight = window.innerHeight;
123
-
114
+
124
115
  // Calculate space available in each direction
125
116
  const spaceTop = triggerRect.top;
126
117
  const spaceBottom = viewportHeight - triggerRect.bottom;
127
118
  const spaceLeft = triggerRect.left;
128
119
  const spaceRight = viewportWidth - triggerRect.right;
129
-
120
+
130
121
  // Find position with most space
131
122
  const spaces = [
132
123
  { position: 'top', space: spaceTop },
133
124
  { position: 'right', space: spaceRight },
134
125
  { position: 'bottom', space: spaceBottom },
135
- { position: 'left', space: spaceLeft }
126
+ { position: 'left', space: spaceLeft },
136
127
  ];
137
-
128
+
138
129
  // Sort by available space (descending)
139
130
  spaces.sort((a, b) => b.space - a.space);
140
-
131
+
141
132
  // Select position with most space
142
133
  return spaces[0].position as PopoverPosition;
143
134
  };
@@ -152,16 +143,16 @@ export const checkAndFlipPosition = (
152
143
  offset: number
153
144
  ): PopoverPosition => {
154
145
  if (position === 'auto') return 'top';
155
-
146
+
156
147
  const viewportWidth = window.innerWidth;
157
148
  const viewportHeight = window.innerHeight;
158
-
149
+
159
150
  // Space available in each direction
160
151
  const spaceTop = triggerRect.top;
161
152
  const spaceBottom = viewportHeight - triggerRect.bottom;
162
153
  const spaceLeft = triggerRect.left;
163
154
  const spaceRight = viewportWidth - triggerRect.right;
164
-
155
+
165
156
  // Check if preferred position has enough space, flip if not
166
157
  switch (position) {
167
158
  case 'top':
@@ -195,69 +186,66 @@ export const calculatePopoverPosition = (
195
186
  popoverRect: DOMRect,
196
187
  position: PopoverPosition,
197
188
  offset: number
198
- ): { top: number, left: number } => {
189
+ ): { top: number; left: number } => {
199
190
  let top = 0;
200
191
  let left = 0;
201
-
192
+
202
193
  // Calculate position based on the determined position
203
194
  switch (position) {
204
195
  case 'top':
205
196
  top = triggerRect.top - popoverRect.height - offset;
206
- left = triggerRect.left + (triggerRect.width / 2) - (popoverRect.width / 2);
197
+ left = triggerRect.left + triggerRect.width / 2 - popoverRect.width / 2;
207
198
  break;
208
199
  case 'bottom':
209
200
  top = triggerRect.bottom + offset;
210
- left = triggerRect.left + (triggerRect.width / 2) - (popoverRect.width / 2);
201
+ left = triggerRect.left + triggerRect.width / 2 - popoverRect.width / 2;
211
202
  break;
212
203
  case 'left':
213
- top = triggerRect.top + (triggerRect.height / 2) - (popoverRect.height / 2);
204
+ top = triggerRect.top + triggerRect.height / 2 - popoverRect.height / 2;
214
205
  left = triggerRect.left - popoverRect.width - offset;
215
206
  break;
216
207
  case 'right':
217
- top = triggerRect.top + (triggerRect.height / 2) - (popoverRect.height / 2);
208
+ top = triggerRect.top + triggerRect.height / 2 - popoverRect.height / 2;
218
209
  left = triggerRect.right + offset;
219
210
  break;
220
211
  }
221
-
212
+
222
213
  // Constrain to viewport boundaries
223
214
  const viewportWidth = window.innerWidth;
224
215
  const viewportHeight = window.innerHeight;
225
-
216
+
226
217
  if (left < 0) {
227
218
  left = 5;
228
219
  } else if (left + popoverRect.width > viewportWidth) {
229
220
  left = viewportWidth - popoverRect.width - 5;
230
221
  }
231
-
222
+
232
223
  if (top < 0) {
233
224
  top = 5;
234
225
  } else if (top + popoverRect.height > viewportHeight) {
235
226
  top = viewportHeight - popoverRect.height - 5;
236
227
  }
237
-
228
+
238
229
  // Add scroll position to convert viewport coordinates to absolute position
239
230
  return {
240
231
  top: top + window.scrollY,
241
- left: left + window.scrollX
232
+ left: left + window.scrollX,
242
233
  };
243
234
  };
244
235
 
245
236
  /**
246
237
  * Position the arrow based on current position
247
238
  */
248
- export const positionArrow = (
249
- arrow: HTMLElement,
250
- position: PopoverPosition
251
- ): void => {
239
+ export const positionArrow = (arrow: HTMLElement, position: PopoverPosition): void => {
252
240
  if (!arrow) return;
253
-
241
+
254
242
  // Reset arrow position
255
243
  arrow.style.top = '';
256
244
  arrow.style.right = '';
257
245
  arrow.style.bottom = '';
258
246
  arrow.style.left = '';
259
247
  arrow.style.transform = '';
260
-
248
+
261
249
  // Position arrow based on current position
262
250
  switch (position) {
263
251
  case 'top':
@@ -297,15 +285,15 @@ export const setPositionClass = (
297
285
  element.classList.remove(className);
298
286
  }
299
287
  });
300
-
288
+
301
289
  // Add the current position class
302
290
  const positionClass = POPOVER.CLASSES[position.toUpperCase() as keyof typeof POPOVER.CLASSES];
303
291
  if (positionClass) {
304
292
  element.classList.add(positionClass);
305
293
  }
306
-
294
+
307
295
  // Add auto class if auto positioning is enabled
308
296
  if (isAuto) {
309
297
  element.classList.add(POPOVER.CLASSES.AUTO);
310
298
  }
311
- };
299
+ };
@@ -11,7 +11,7 @@ import {
11
11
  checkAndFlipPosition,
12
12
  calculatePopoverPosition,
13
13
  positionArrow,
14
- setPositionClass
14
+ setPositionClass,
15
15
  } from './componentInteractions';
16
16
 
17
17
  /**
@@ -46,16 +46,17 @@ class Popover {
46
46
  this.updateInterval = null;
47
47
  this.timeoutRef = { current: null };
48
48
  this.options = {
49
- position: options.position || POPOVER.DEFAULTS.POSITION as PopoverPosition | 'auto',
50
- trigger: options.trigger || POPOVER.DEFAULTS.TRIGGER as 'hover' | 'click',
49
+ position: options.position || (POPOVER.DEFAULTS.POSITION as PopoverPosition | 'auto'),
50
+ trigger: options.trigger || (POPOVER.DEFAULTS.TRIGGER as 'hover' | 'click'),
51
51
  offset: options.offset !== undefined ? options.offset : POPOVER.DEFAULTS.OFFSET,
52
- delay: options.delay !== undefined ? options.delay : POPOVER.DEFAULTS.DELAY
52
+ delay: options.delay !== undefined ? options.delay : POPOVER.DEFAULTS.DELAY,
53
53
  };
54
-
54
+
55
55
  // Initialize current position from options (will be recalculated if auto)
56
- this.currentPosition = this.options.position === 'auto'
57
- ? 'top' // default fallback
58
- : this.options.position as PopoverPosition;
56
+ this.currentPosition =
57
+ this.options.position === 'auto'
58
+ ? 'top' // default fallback
59
+ : (this.options.position as PopoverPosition);
59
60
 
60
61
  this._initialize();
61
62
  }
@@ -68,28 +69,24 @@ class Popover {
68
69
  this.trigger = document.querySelector(`[data-popover-id="${this.element.id}"]`);
69
70
  this.content = this.element.querySelector(POPOVER.SELECTORS.CONTENT);
70
71
  this.contentInner = this.element.querySelector(POPOVER.SELECTORS.CONTENT_INNER);
71
-
72
+
72
73
  // Create arrow element if needed
73
74
  this.arrow = document.createElement('div');
74
75
  this.arrow.className = POPOVER.SELECTORS.ARROW.slice(1); // Remove leading dot
75
76
  this.content?.appendChild(this.arrow);
76
-
77
+
77
78
  // Set initial position class
78
79
  this._setPositionClass();
79
-
80
+
80
81
  // Bind events
81
82
  this._bindEvents();
82
83
  }
83
-
84
+
84
85
  /**
85
86
  * Set the position class on the element
86
87
  */
87
88
  private _setPositionClass(): void {
88
- setPositionClass(
89
- this.element,
90
- this.currentPosition,
91
- this.options.position === 'auto'
92
- );
89
+ setPositionClass(this.element, this.currentPosition, this.options.position === 'auto');
93
90
  }
94
91
 
95
92
  /**
@@ -97,7 +94,7 @@ class Popover {
97
94
  */
98
95
  private _bindEvents(): void {
99
96
  if (!this.trigger) return;
100
-
97
+
101
98
  if (this.options.trigger === 'click') {
102
99
  this.trigger.addEventListener('click', this._handleTriggerClick.bind(this));
103
100
  document.addEventListener('click', this._handleDocumentClick.bind(this));
@@ -108,10 +105,10 @@ class Popover {
108
105
  this.element.addEventListener('mouseenter', this._handlePopoverMouseEnter.bind(this));
109
106
  this.element.addEventListener('mouseleave', this._handlePopoverMouseLeave.bind(this));
110
107
  }
111
-
108
+
112
109
  window.addEventListener('resize', this._updatePosition.bind(this));
113
110
  window.addEventListener('scroll', this._updatePosition.bind(this), { passive: true });
114
-
111
+
115
112
  // Also update position periodically to handle any dynamic content changes
116
113
  this.updateInterval = window.setInterval(this._updatePosition.bind(this), 200);
117
114
  }
@@ -173,11 +170,11 @@ class Popover {
173
170
  */
174
171
  private _updatePosition(): void {
175
172
  if (!this.isOpen || !this.trigger) return;
176
-
173
+
177
174
  const triggerRect = this.trigger.getBoundingClientRect();
178
175
  const popoverRect = this.element.getBoundingClientRect();
179
176
  const offset = this.options.offset || 0;
180
-
177
+
181
178
  // If auto positioning is enabled, determine best position
182
179
  if (this.options.position === 'auto') {
183
180
  this.currentPosition = determineBestPosition(triggerRect);
@@ -191,7 +188,7 @@ class Popover {
191
188
  offset
192
189
  );
193
190
  }
194
-
191
+
195
192
  // Calculate position
196
193
  const { top, left } = calculatePopoverPosition(
197
194
  triggerRect,
@@ -199,15 +196,15 @@ class Popover {
199
196
  this.currentPosition,
200
197
  offset
201
198
  );
202
-
199
+
203
200
  // Apply position using absolute positioning to follow when scrolling
204
201
  this.element.style.position = 'absolute';
205
202
  this.element.style.top = `${top}px`;
206
203
  this.element.style.left = `${left}px`;
207
-
204
+
208
205
  // Update position class and arrow
209
206
  this._setPositionClass();
210
-
207
+
211
208
  // Position arrow
212
209
  if (this.arrow) {
213
210
  positionArrow(this.arrow, this.currentPosition);
@@ -219,17 +216,19 @@ class Popover {
219
216
  */
220
217
  public open(): void {
221
218
  if (this.isOpen) return;
222
-
219
+
223
220
  this.element.classList.add(POPOVER.CLASSES.IS_OPEN);
224
221
  this.isOpen = true;
225
-
222
+
226
223
  // Update position right away
227
224
  this._updatePosition();
228
-
225
+
229
226
  // Dispatch custom event
230
- this.element.dispatchEvent(new CustomEvent('popover:open', {
231
- bubbles: true
232
- }));
227
+ this.element.dispatchEvent(
228
+ new CustomEvent('popover:open', {
229
+ bubbles: true,
230
+ })
231
+ );
233
232
  }
234
233
 
235
234
  /**
@@ -237,14 +236,16 @@ class Popover {
237
236
  */
238
237
  public close(): void {
239
238
  if (!this.isOpen) return;
240
-
239
+
241
240
  this.element.classList.remove(POPOVER.CLASSES.IS_OPEN);
242
241
  this.isOpen = false;
243
-
242
+
244
243
  // Dispatch custom event
245
- this.element.dispatchEvent(new CustomEvent('popover:close', {
246
- bubbles: true
247
- }));
244
+ this.element.dispatchEvent(
245
+ new CustomEvent('popover:close', {
246
+ bubbles: true,
247
+ })
248
+ );
248
249
  }
249
250
 
250
251
  /**
@@ -270,24 +271,24 @@ class Popover {
270
271
  this.trigger.removeEventListener('mouseleave', this._handleTriggerMouseLeave);
271
272
  }
272
273
  }
273
-
274
+
274
275
  document.removeEventListener('click', this._handleDocumentClick);
275
276
  document.removeEventListener('keydown', this._handleEscapeKey);
276
-
277
+
277
278
  this.element.removeEventListener('mouseenter', this._handlePopoverMouseEnter);
278
279
  this.element.removeEventListener('mouseleave', this._handlePopoverMouseLeave);
279
-
280
+
280
281
  window.removeEventListener('resize', this._updatePosition);
281
282
  window.removeEventListener('scroll', this._updatePosition);
282
-
283
+
283
284
  if (this.timeout !== null) {
284
285
  window.clearTimeout(this.timeout);
285
286
  }
286
-
287
+
287
288
  if (this.timeoutRef.current !== null) {
288
289
  window.clearTimeout(this.timeoutRef.current);
289
290
  }
290
-
291
+
291
292
  if (this.updateInterval !== null) {
292
293
  window.clearInterval(this.updateInterval);
293
294
  }
@@ -299,21 +300,31 @@ class Popover {
299
300
  */
300
301
  const initPopovers = (): void => {
301
302
  const popovers = document.querySelectorAll(POPOVER.SELECTORS.POPOVER);
302
-
303
+
303
304
  popovers.forEach((element: Element) => {
304
305
  const popover = element as HTMLElement;
305
306
  // Get configuration from data attributes
306
- const position = popover.getAttribute(POPOVER.ATTRIBUTES.POSITION) as PopoverPosition | 'auto' || POPOVER.DEFAULTS.POSITION;
307
- const trigger = popover.getAttribute(POPOVER.ATTRIBUTES.TRIGGER) as 'hover' | 'click' || POPOVER.DEFAULTS.TRIGGER;
308
- const offset = parseInt(popover.getAttribute('data-popover-offset') || String(POPOVER.DEFAULTS.OFFSET), 10);
309
- const delay = parseInt(popover.getAttribute('data-popover-delay') || String(POPOVER.DEFAULTS.DELAY), 10);
310
-
307
+ const position =
308
+ (popover.getAttribute(POPOVER.ATTRIBUTES.POSITION) as PopoverPosition | 'auto') ||
309
+ POPOVER.DEFAULTS.POSITION;
310
+ const trigger =
311
+ (popover.getAttribute(POPOVER.ATTRIBUTES.TRIGGER) as 'hover' | 'click') ||
312
+ POPOVER.DEFAULTS.TRIGGER;
313
+ const offset = parseInt(
314
+ popover.getAttribute('data-popover-offset') || String(POPOVER.DEFAULTS.OFFSET),
315
+ 10
316
+ );
317
+ const delay = parseInt(
318
+ popover.getAttribute('data-popover-delay') || String(POPOVER.DEFAULTS.DELAY),
319
+ 10
320
+ );
321
+
311
322
  // Initialize popover
312
- new Popover(popover, {
323
+ new Popover(popover, {
313
324
  position: position as PopoverPosition | 'auto',
314
325
  trigger: trigger as 'hover' | 'click',
315
- offset,
316
- delay
326
+ offset,
327
+ delay,
317
328
  });
318
329
  });
319
330
  };
@@ -328,4 +339,4 @@ if (typeof document !== 'undefined') {
328
339
  }
329
340
 
330
341
  export default Popover;
331
- export { initPopovers };
342
+ export { initPopovers };