@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
@@ -19,7 +19,7 @@ export default {
19
19
  },
20
20
  } as Meta<typeof Toggle>;
21
21
 
22
- const Template: StoryFn<typeof Toggle> = (args) => (
22
+ const Template: StoryFn<typeof Toggle> = args => (
23
23
  <div style={{ display: 'flex', justifyContent: 'center', padding: '30px' }}>
24
24
  <Toggle {...args} />
25
25
  </div>
@@ -47,4 +47,4 @@ export const DisabledOn = Template.bind({});
47
47
  DisabledOn.args = {
48
48
  initialOn: true,
49
49
  disabled: true,
50
- };
50
+ };
@@ -6,22 +6,22 @@ export interface ToggleProps {
6
6
  * Whether the toggle is initially on
7
7
  */
8
8
  initialOn?: boolean;
9
-
9
+
10
10
  /**
11
11
  * Callback when the toggle is turned on
12
12
  */
13
13
  onToggleOn?: () => void;
14
-
14
+
15
15
  /**
16
16
  * Callback when the toggle is turned off
17
17
  */
18
18
  onToggleOff?: () => void;
19
-
19
+
20
20
  /**
21
21
  * Whether the toggle is disabled
22
22
  */
23
23
  disabled?: boolean;
24
-
24
+
25
25
  /**
26
26
  * Additional CSS class for the toggle
27
27
  */
@@ -41,7 +41,7 @@ export const Toggle: React.FC<ToggleProps> = ({
41
41
  const [isOn, setIsOn] = useState(initialOn);
42
42
  const toggleRef = useRef<HTMLDivElement>(null);
43
43
  const toggleInstance = useRef<any>(null);
44
-
44
+
45
45
  useEffect(() => {
46
46
  // Only run on client-side
47
47
  if (typeof window === 'undefined' || !toggleRef.current) return undefined;
@@ -52,52 +52,52 @@ export const Toggle: React.FC<ToggleProps> = ({
52
52
  toggleInstance.current = new ToggleClass(toggleRef.current);
53
53
  }
54
54
  });
55
-
55
+
56
56
  // Add event listeners for custom events
57
57
  const handleToggleOn = () => {
58
58
  setIsOn(true);
59
59
  if (onToggleOn) onToggleOn();
60
60
  };
61
-
61
+
62
62
  const handleToggleOff = () => {
63
63
  setIsOn(false);
64
64
  if (onToggleOff) onToggleOff();
65
65
  };
66
-
66
+
67
67
  const element = toggleRef.current;
68
68
  element?.addEventListener('toggle:on', handleToggleOn);
69
69
  element?.addEventListener('toggle:off', handleToggleOff);
70
-
70
+
71
71
  // Set initial state if needed
72
72
  if (initialOn && toggleInstance.current) {
73
73
  toggleInstance.current.turnOn();
74
74
  }
75
-
75
+
76
76
  // Cleanup on unmount
77
77
  return () => {
78
78
  element?.removeEventListener('toggle:on', handleToggleOn);
79
79
  element?.removeEventListener('toggle:off', handleToggleOff);
80
-
80
+
81
81
  if (toggleInstance.current) {
82
82
  toggleInstance.current.destroy();
83
83
  }
84
84
  };
85
85
  }, [initialOn, onToggleOn, onToggleOff]);
86
-
86
+
87
87
  // Update the toggle when the isOn prop changes
88
88
  useEffect(() => {
89
89
  if (!toggleInstance.current) return;
90
-
90
+
91
91
  if (isOn) {
92
92
  toggleInstance.current.turnOn();
93
93
  } else {
94
94
  toggleInstance.current.turnOff();
95
95
  }
96
96
  }, [isOn]);
97
-
97
+
98
98
  return (
99
- <div
100
- className={`c-toggle ${isOn ? TOGGLE.CLASSES.IS_ON : ''} ${disabled ? 'is-disabled' : ''} ${className}`}
99
+ <div
100
+ className={`c-toggle ${isOn ? TOGGLE.CLASSES.IS_ON : ''} ${disabled ? 'is-disabled' : ''} ${className}`}
101
101
  ref={toggleRef}
102
102
  role="switch"
103
103
  aria-checked={isOn}
@@ -107,8 +107,8 @@ export const Toggle: React.FC<ToggleProps> = ({
107
107
  <div className="c-toggle__switch"></div>
108
108
  </div>
109
109
  );
110
- };
110
+ };
111
111
 
112
112
  Toggle.displayName = 'Toggle';
113
113
 
114
- export default Toggle;
114
+ export default Toggle;
@@ -1,2 +1,2 @@
1
- export { Toggle } from "./Toggle";
2
- export type { ToggleProps } from "./Toggle";
1
+ export { Toggle } from './Toggle';
2
+ export type { ToggleProps } from './Toggle';
@@ -1,5 +1,10 @@
1
1
  import Toggle from './index';
2
- import { applyHoverEffect, applyFocusEffect, initializeToggle, initializeAllToggles } from './toggleInteractions';
2
+ import {
3
+ applyHoverEffect,
4
+ applyFocusEffect,
5
+ initializeToggle,
6
+ initializeAllToggles,
7
+ } from './toggleInteractions';
3
8
 
4
9
  // Initialize global namespace if not exists
5
10
  window.Atomix = window.Atomix || {};
@@ -11,4 +16,4 @@ window.Atomix.applyToggleFocusEffect = applyFocusEffect;
11
16
  window.Atomix.initializeToggle = initializeToggle;
12
17
  window.Atomix.initializeAllToggles = initializeAllToggles;
13
18
 
14
- export default Toggle;
19
+ export default Toggle;
@@ -61,11 +61,13 @@ class Toggle implements ToggleInstance {
61
61
  public turnOn(): void {
62
62
  this.element.classList.add(TOGGLE.CLASSES.IS_ON);
63
63
  this.isOn = true;
64
-
64
+
65
65
  // Dispatch custom event
66
- this.element.dispatchEvent(new CustomEvent('toggle:on', {
67
- bubbles: true
68
- }));
66
+ this.element.dispatchEvent(
67
+ new CustomEvent('toggle:on', {
68
+ bubbles: true,
69
+ })
70
+ );
69
71
  }
70
72
 
71
73
  /**
@@ -74,11 +76,13 @@ class Toggle implements ToggleInstance {
74
76
  public turnOff(): void {
75
77
  this.element.classList.remove(TOGGLE.CLASSES.IS_ON);
76
78
  this.isOn = false;
77
-
79
+
78
80
  // Dispatch custom event
79
- this.element.dispatchEvent(new CustomEvent('toggle:off', {
80
- bubbles: true
81
- }));
81
+ this.element.dispatchEvent(
82
+ new CustomEvent('toggle:off', {
83
+ bubbles: true,
84
+ })
85
+ );
82
86
  }
83
87
 
84
88
  /**
@@ -99,7 +103,7 @@ export function initializeToggles(): ToggleInstance[] {
99
103
 
100
104
  if (!toggleElements.length) return toggleInstances;
101
105
 
102
- toggleElements.forEach((element) => {
106
+ toggleElements.forEach(element => {
103
107
  try {
104
108
  const instance = new Toggle(element);
105
109
  toggleInstances.push(instance);
@@ -111,4 +115,4 @@ export function initializeToggles(): ToggleInstance[] {
111
115
  return toggleInstances;
112
116
  }
113
117
 
114
- export default Toggle;
118
+ export default Toggle;
@@ -7,11 +7,11 @@ import { TOGGLE } from '../../../lib/constants/components';
7
7
  */
8
8
  export function applyHoverEffect(toggle: HTMLElement): void {
9
9
  const hoverClass = 'is-hovered';
10
-
10
+
11
11
  toggle.addEventListener('mouseenter', () => {
12
12
  toggle.classList.add(hoverClass);
13
13
  });
14
-
14
+
15
15
  toggle.addEventListener('mouseleave', () => {
16
16
  toggle.classList.remove(hoverClass);
17
17
  });
@@ -24,12 +24,12 @@ export function applyHoverEffect(toggle: HTMLElement): void {
24
24
  export function applyFocusEffect(toggle: HTMLElement): void {
25
25
  const focusClass = 'is-focused';
26
26
  const input = toggle.querySelector('input');
27
-
27
+
28
28
  if (input) {
29
29
  input.addEventListener('focus', () => {
30
30
  toggle.classList.add(focusClass);
31
31
  });
32
-
32
+
33
33
  input.addEventListener('blur', () => {
34
34
  toggle.classList.remove(focusClass);
35
35
  });
@@ -41,17 +41,14 @@ export function applyFocusEffect(toggle: HTMLElement): void {
41
41
  * @param toggle - Toggle element
42
42
  * @param onChange - Change callback
43
43
  */
44
- export function initializeToggle(
45
- toggle: HTMLElement,
46
- onChange?: (checked: boolean) => void
47
- ): void {
44
+ export function initializeToggle(toggle: HTMLElement, onChange?: (checked: boolean) => void): void {
48
45
  const input = toggle.querySelector('input[type="checkbox"]') as HTMLInputElement;
49
-
46
+
50
47
  if (input) {
51
48
  input.addEventListener('change', () => {
52
49
  if (onChange) onChange(input.checked);
53
50
  });
54
-
51
+
55
52
  // Apply effects
56
53
  applyHoverEffect(toggle);
57
54
  applyFocusEffect(toggle);
@@ -66,8 +63,8 @@ export function initializeToggle(
66
63
  export function initializeAllToggles(selector = '[data-component="toggle"]'): Toggle[] {
67
64
  const toggleInstances: Toggle[] = [];
68
65
  const toggleElements = document.querySelectorAll<HTMLElement>(selector);
69
-
70
- toggleElements.forEach((element) => {
66
+
67
+ toggleElements.forEach(element => {
71
68
  try {
72
69
  const instance = new Toggle(element);
73
70
  toggleInstances.push(instance);
@@ -75,6 +72,6 @@ export function initializeAllToggles(selector = '[data-component="toggle"]'): To
75
72
  console.error('Error initializing toggle:', error);
76
73
  }
77
74
  });
78
-
75
+
79
76
  return toggleInstances;
80
- }
77
+ }
@@ -8,7 +8,16 @@ export default {
8
8
  argTypes: {
9
9
  position: {
10
10
  control: { type: 'select' },
11
- options: ['top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right'],
11
+ options: [
12
+ 'top',
13
+ 'bottom',
14
+ 'left',
15
+ 'right',
16
+ 'top-left',
17
+ 'top-right',
18
+ 'bottom-left',
19
+ 'bottom-right',
20
+ ],
12
21
  defaultValue: 'top',
13
22
  },
14
23
  trigger: {
@@ -27,7 +36,7 @@ export default {
27
36
  },
28
37
  } as Meta<typeof Tooltip>;
29
38
 
30
- const Template: StoryFn<typeof Tooltip> = (args) => (
39
+ const Template: StoryFn<typeof Tooltip> = args => (
31
40
  <div style={{ display: 'flex', justifyContent: 'center', padding: '100px' }}>
32
41
  <Tooltip {...args}>
33
42
  <button className="c-btn c-btn--primary">Hover me</button>
@@ -71,9 +80,7 @@ export const WithIcon = Template.bind({});
71
80
  WithIcon.args = {
72
81
  content: <p className="u-mb-0">Tooltips work great with icons</p>,
73
82
  position: 'top',
74
- children: (
75
- <i className="icon-lux-info" style={{ fontSize: '24px', cursor: 'pointer' }}></i>
76
- ),
83
+ children: <i className="icon-lux-info" style={{ fontSize: '24px', cursor: 'pointer' }}></i>,
77
84
  };
78
85
 
79
86
  export const CustomDelay = Template.bind({});
@@ -105,4 +112,4 @@ RichContent.args = {
105
112
  position: 'bottom',
106
113
  trigger: 'click',
107
114
  offset: 15,
108
- };
115
+ };
@@ -7,32 +7,40 @@ export interface TooltipProps {
7
7
  * Content to be displayed in the tooltip
8
8
  */
9
9
  content: ReactNode;
10
-
10
+
11
11
  /**
12
12
  * The element that will trigger the tooltip
13
13
  */
14
14
  children: ReactNode;
15
-
15
+
16
16
  /**
17
17
  * The position of the tooltip relative to the trigger
18
18
  */
19
- position?: 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
20
-
19
+ position?:
20
+ | 'top'
21
+ | 'bottom'
22
+ | 'left'
23
+ | 'right'
24
+ | 'top-left'
25
+ | 'top-right'
26
+ | 'bottom-left'
27
+ | 'bottom-right';
28
+
21
29
  /**
22
30
  * How the tooltip is triggered
23
31
  */
24
32
  trigger?: 'hover' | 'click';
25
-
33
+
26
34
  /**
27
35
  * Additional CSS class for the tooltip
28
36
  */
29
37
  className?: string;
30
-
38
+
31
39
  /**
32
40
  * Delay before showing the tooltip (in milliseconds)
33
41
  */
34
42
  delay?: number;
35
-
43
+
36
44
  /**
37
45
  * Offset from the trigger element (in pixels)
38
46
  */
@@ -50,7 +58,7 @@ export const Tooltip: React.FC<TooltipProps> = ({
50
58
  }) => {
51
59
  const tooltipRef = useRef<HTMLDivElement>(null);
52
60
  const tooltipInstance = useRef<any>(null);
53
-
61
+
54
62
  useEffect(() => {
55
63
  if (tooltipRef.current) {
56
64
  // Initialize tooltip
@@ -61,7 +69,7 @@ export const Tooltip: React.FC<TooltipProps> = ({
61
69
  offset,
62
70
  });
63
71
  }
64
-
72
+
65
73
  // Cleanup on unmount
66
74
  return () => {
67
75
  if (tooltipInstance.current) {
@@ -69,14 +77,16 @@ export const Tooltip: React.FC<TooltipProps> = ({
69
77
  }
70
78
  };
71
79
  }, [position, trigger, delay, offset]);
72
-
80
+
73
81
  return (
74
82
  <div className="u-position-relative u-d-inline-block">
75
- <div className={`${TOOLTIP.SELECTORS.TRIGGER.substring(1)}${className ? ` ${className}` : ''}`}>
83
+ <div
84
+ className={`${TOOLTIP.SELECTORS.TRIGGER.substring(1)}${className ? ` ${className}` : ''}`}
85
+ >
76
86
  {children}
77
87
  </div>
78
- <div
79
- className={`c-tooltip ${TOOLTIP.SELECTORS.TOOLTIP.substring(1)}`}
88
+ <div
89
+ className={`c-tooltip ${TOOLTIP.SELECTORS.TOOLTIP.substring(1)}`}
80
90
  ref={tooltipRef}
81
91
  data-tooltip-position={position}
82
92
  data-tooltip-trigger={trigger}
@@ -88,8 +98,8 @@ export const Tooltip: React.FC<TooltipProps> = ({
88
98
  </div>
89
99
  </div>
90
100
  );
91
- };
101
+ };
92
102
 
93
103
  Tooltip.displayName = 'Tooltip';
94
104
 
95
- export default Tooltip;
105
+ export default Tooltip;
@@ -1,3 +1,3 @@
1
- export { Tooltip } from "./Tooltip";
2
- export type { TooltipProps } from "./Tooltip";
3
- export { default } from "./Tooltip";
1
+ export { Tooltip } from './Tooltip';
2
+ export type { TooltipProps } from './Tooltip';
3
+ export { default } from './Tooltip';
@@ -11,7 +11,7 @@ const DEFAULT_OPTIONS = {
11
11
  activeClass: TOOLTIP.CLASSES.IS_ACTIVE,
12
12
  contentIdAttr: TOOLTIP.ATTRIBUTES.CONTENT_ID,
13
13
  positionAttr: TOOLTIP.ATTRIBUTES.POSITION,
14
- triggerAttr: TOOLTIP.ATTRIBUTES.TRIGGER
14
+ triggerAttr: TOOLTIP.ATTRIBUTES.TRIGGER,
15
15
  };
16
16
 
17
17
  /**
@@ -64,10 +64,10 @@ export class Tooltip implements TooltipInstance {
64
64
  */
65
65
  constructor(selector: string | Element, options = {}) {
66
66
  this.selector = selector || TOOLTIP.SELECTORS.TOOLTIP;
67
- this.$element =
68
- typeof selector === 'string'
67
+ this.$element =
68
+ typeof selector === 'string'
69
69
  ? document.querySelector<HTMLElement>(selector)
70
- : selector as HTMLElement;
70
+ : (selector as HTMLElement);
71
71
  this.options = { ...DEFAULT_OPTIONS, ...options } as TooltipOptions;
72
72
  this.timeout = null;
73
73
  this.hideTimeout = null;
@@ -92,21 +92,21 @@ export class Tooltip implements TooltipInstance {
92
92
  */
93
93
  private _initializeElements(): void {
94
94
  if (!this.$element) return;
95
-
95
+
96
96
  // Find the parent container that wraps both trigger and tooltip
97
97
  const parentContainer = this.$element.parentElement;
98
98
  if (!parentContainer) return;
99
-
99
+
100
100
  // Find the trigger as a sibling or within the same parent container
101
101
  this.$trigger = parentContainer.querySelector<HTMLElement>(TOOLTIP.SELECTORS.TRIGGER);
102
102
  this.$content = this.$element.querySelector<HTMLElement>(TOOLTIP.SELECTORS.CONTENT);
103
-
103
+
104
104
  // Check for custom position from data attribute
105
105
  const customPosition = this.$element.getAttribute(this.options.positionAttr);
106
106
  if (customPosition) {
107
107
  this.options.position = customPosition;
108
108
  }
109
-
109
+
110
110
  // Check for custom trigger from data attribute
111
111
  const customTrigger = this.$element.getAttribute(this.options.triggerAttr);
112
112
  if (customTrigger) {
@@ -119,19 +119,19 @@ export class Tooltip implements TooltipInstance {
119
119
  */
120
120
  private _setPosition(): void {
121
121
  if (!this.$content || !this.$element) return;
122
-
122
+
123
123
  // Reset any existing position classes
124
124
  this.$element.classList.remove(
125
- TOOLTIP.CLASSES.TOP,
126
- TOOLTIP.CLASSES.BOTTOM,
127
- TOOLTIP.CLASSES.LEFT,
128
- TOOLTIP.CLASSES.RIGHT,
129
- TOOLTIP.CLASSES.TOP_LEFT,
130
- TOOLTIP.CLASSES.TOP_RIGHT,
131
- TOOLTIP.CLASSES.BOTTOM_LEFT,
125
+ TOOLTIP.CLASSES.TOP,
126
+ TOOLTIP.CLASSES.BOTTOM,
127
+ TOOLTIP.CLASSES.LEFT,
128
+ TOOLTIP.CLASSES.RIGHT,
129
+ TOOLTIP.CLASSES.TOP_LEFT,
130
+ TOOLTIP.CLASSES.TOP_RIGHT,
131
+ TOOLTIP.CLASSES.BOTTOM_LEFT,
132
132
  TOOLTIP.CLASSES.BOTTOM_RIGHT
133
133
  );
134
-
134
+
135
135
  // Add the appropriate position class
136
136
  switch (this.options.position) {
137
137
  case 'top':
@@ -161,10 +161,10 @@ export class Tooltip implements TooltipInstance {
161
161
  default:
162
162
  this.$element.classList.add(TOOLTIP.CLASSES.TOP);
163
163
  }
164
-
164
+
165
165
  // Calculate offset based on position
166
166
  const offset = this.options.offset;
167
-
167
+
168
168
  switch (this.options.position) {
169
169
  case 'top':
170
170
  case 'top-left':
@@ -192,14 +192,14 @@ export class Tooltip implements TooltipInstance {
192
192
  */
193
193
  private _bindEvents(): void {
194
194
  if (!this.$trigger) return;
195
-
195
+
196
196
  if (this.options.trigger === 'hover') {
197
197
  this.$trigger.addEventListener('mouseenter', this._handleTriggerEnter.bind(this));
198
198
  this.$trigger.addEventListener('mouseleave', this._handleTriggerLeave.bind(this));
199
199
  } else if (this.options.trigger === 'click') {
200
200
  this.$trigger.addEventListener('click', this._handleTriggerClick.bind(this));
201
201
  }
202
-
202
+
203
203
  // Handle focus for accessibility
204
204
  this.$trigger.addEventListener('focus', this._handleTriggerEnter.bind(this));
205
205
  this.$trigger.addEventListener('blur', this._handleTriggerLeave.bind(this));
@@ -213,9 +213,9 @@ export class Tooltip implements TooltipInstance {
213
213
  clearTimeout(this.hideTimeout);
214
214
  this.hideTimeout = null;
215
215
  }
216
-
216
+
217
217
  if (this.timeout) return;
218
-
218
+
219
219
  this.timeout = window.setTimeout(() => {
220
220
  this.show();
221
221
  this.timeout = null;
@@ -230,7 +230,7 @@ export class Tooltip implements TooltipInstance {
230
230
  clearTimeout(this.timeout);
231
231
  this.timeout = null;
232
232
  }
233
-
233
+
234
234
  this.hideTimeout = window.setTimeout(() => {
235
235
  this.hide();
236
236
  this.hideTimeout = null;
@@ -298,19 +298,19 @@ export class Tooltip implements TooltipInstance {
298
298
  */
299
299
  public show(): void {
300
300
  if (!this.$element) return;
301
-
301
+
302
302
  // Dispatch custom event before showing
303
303
  const showEvent = new CustomEvent('tooltip:show', {
304
304
  bubbles: true,
305
305
  cancelable: true,
306
- detail: { tooltip: this }
306
+ detail: { tooltip: this },
307
307
  });
308
-
308
+
309
309
  this.$element.dispatchEvent(showEvent);
310
-
310
+
311
311
  // If event was canceled, don't show
312
312
  if (showEvent.defaultPrevented) return;
313
-
313
+
314
314
  this.$element.classList.add(this.options.activeClass);
315
315
  this.isActive = true;
316
316
  }
@@ -320,19 +320,19 @@ export class Tooltip implements TooltipInstance {
320
320
  */
321
321
  public hide(): void {
322
322
  if (!this.$element) return;
323
-
323
+
324
324
  // Dispatch custom event before hiding
325
325
  const hideEvent = new CustomEvent('tooltip:hide', {
326
326
  bubbles: true,
327
327
  cancelable: true,
328
- detail: { tooltip: this }
328
+ detail: { tooltip: this },
329
329
  });
330
-
330
+
331
331
  this.$element.dispatchEvent(hideEvent);
332
-
332
+
333
333
  // If event was canceled, don't hide
334
334
  if (hideEvent.defaultPrevented) return;
335
-
335
+
336
336
  this.$element.classList.remove(this.options.activeClass);
337
337
  this.isActive = false;
338
338
  }
@@ -342,7 +342,7 @@ export class Tooltip implements TooltipInstance {
342
342
  */
343
343
  public destroy(): void {
344
344
  if (!this.$trigger) return;
345
-
345
+
346
346
  // Remove event listeners
347
347
  if (this.options.trigger === 'hover') {
348
348
  this.$trigger.removeEventListener('mouseenter', this._handleTriggerEnter.bind(this));
@@ -350,21 +350,21 @@ export class Tooltip implements TooltipInstance {
350
350
  } else if (this.options.trigger === 'click') {
351
351
  this.$trigger.removeEventListener('click', this._handleTriggerClick.bind(this));
352
352
  }
353
-
353
+
354
354
  this.$trigger.removeEventListener('focus', this._handleTriggerEnter.bind(this));
355
355
  this.$trigger.removeEventListener('blur', this._handleTriggerLeave.bind(this));
356
-
356
+
357
357
  // Clear timeouts
358
358
  if (this.timeout) {
359
359
  clearTimeout(this.timeout);
360
360
  this.timeout = null;
361
361
  }
362
-
362
+
363
363
  if (this.hideTimeout) {
364
364
  clearTimeout(this.hideTimeout);
365
365
  this.hideTimeout = null;
366
366
  }
367
-
367
+
368
368
  // Hide tooltip
369
369
  if (this.$element) {
370
370
  this.$element.classList.remove(this.options.activeClass);
@@ -387,6 +387,9 @@ export class Tooltip implements TooltipInstance {
387
387
  * @param selector - CSS selector for tooltip elements
388
388
  * @param options - Custom options
389
389
  */
390
- export function initializeTooltips(selector = TOOLTIP.SELECTORS.TOOLTIP, options = {}): TooltipInstance[] {
390
+ export function initializeTooltips(
391
+ selector = TOOLTIP.SELECTORS.TOOLTIP,
392
+ options = {}
393
+ ): TooltipInstance[] {
391
394
  return Tooltip.initializeAll(selector, options);
392
- }
395
+ }