@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
@@ -43,7 +43,9 @@ export const usePopover = ({
43
43
  id,
44
44
  }: UsePopoverProps): UsePopoverResult => {
45
45
  const [isOpen, setIsOpenState] = useState(defaultOpen);
46
- const [currentPosition, setCurrentPosition] = useState<PopoverPosition>(position === 'auto' ? 'top' : position as PopoverPosition);
46
+ const [currentPosition, setCurrentPosition] = useState<PopoverPosition>(
47
+ position === 'auto' ? 'top' : (position as PopoverPosition)
48
+ );
47
49
  const triggerRef = useRef<HTMLElement>(null);
48
50
  const popoverRef = useRef<HTMLDivElement>(null);
49
51
  const arrowRef = useRef<HTMLDivElement>(null);
@@ -130,115 +132,119 @@ export const usePopover = ({
130
132
 
131
133
  const updatePosition = (event?: Event) => {
132
134
  if (!triggerRef.current || !popoverRef.current) return;
133
-
135
+
134
136
  const triggerRect = triggerRef.current.getBoundingClientRect();
135
137
  const popoverRect = popoverRef.current.getBoundingClientRect();
136
138
  const viewportWidth = window.innerWidth;
137
139
  const viewportHeight = window.innerHeight;
138
-
140
+
139
141
  // Check if the trigger is near viewport edges
140
- const isNearViewportEdge =
141
- triggerRect.top < 50 ||
142
- triggerRect.bottom > (viewportHeight - 50) ||
143
- triggerRect.left < 50 ||
144
- triggerRect.right > (viewportWidth - 50);
145
-
142
+ const isNearViewportEdge =
143
+ triggerRect.top < 50 ||
144
+ triggerRect.bottom > viewportHeight - 50 ||
145
+ triggerRect.left < 50 ||
146
+ triggerRect.right > viewportWidth - 50;
147
+
146
148
  // If this is a scroll update and trigger isn't near edges, skip repositioning
147
- if (
148
- event?.type === 'scroll' &&
149
- !isNearViewportEdge
150
- ) {
149
+ if (event?.type === 'scroll' && !isNearViewportEdge) {
151
150
  return;
152
151
  }
153
-
152
+
154
153
  // Calculate space available in each direction
155
154
  const spaceTop = triggerRect.top;
156
155
  const spaceBottom = viewportHeight - triggerRect.bottom;
157
156
  const spaceLeft = triggerRect.left;
158
157
  const spaceRight = viewportWidth - triggerRect.right;
159
-
158
+
160
159
  // Determine best position based on available space
161
- let bestPosition: PopoverPosition = position === 'auto' ? 'top' : position as PopoverPosition;
162
-
160
+ let bestPosition: PopoverPosition = position === 'auto' ? 'top' : (position as PopoverPosition);
161
+
163
162
  // If specified position is 'auto', find the position with most space
164
163
  if (position === 'auto') {
165
164
  const spaces = [
166
165
  { position: 'top', space: spaceTop },
167
166
  { position: 'right', space: spaceRight },
168
167
  { position: 'bottom', space: spaceBottom },
169
- { position: 'left', space: spaceLeft }
168
+ { position: 'left', space: spaceLeft },
170
169
  ];
171
-
170
+
172
171
  // Sort by available space (descending)
173
172
  spaces.sort((a, b) => b.space - a.space);
174
-
173
+
175
174
  // Select position with most space
176
175
  bestPosition = spaces[0].position as PopoverPosition;
177
176
  } else {
178
177
  // Check if the preferred position has enough space
179
- const needsFlip = (
180
- (position === 'top' && spaceTop < popoverRect.height + offset && spaceBottom >= popoverRect.height + offset) ||
181
- (position === 'bottom' && spaceBottom < popoverRect.height + offset && spaceTop >= popoverRect.height + offset) ||
182
- (position === 'left' && spaceLeft < popoverRect.width + offset && spaceRight >= popoverRect.width + offset) ||
183
- (position === 'right' && spaceRight < popoverRect.width + offset && spaceLeft >= popoverRect.width + offset)
184
- );
185
-
178
+ const needsFlip =
179
+ (position === 'top' &&
180
+ spaceTop < popoverRect.height + offset &&
181
+ spaceBottom >= popoverRect.height + offset) ||
182
+ (position === 'bottom' &&
183
+ spaceBottom < popoverRect.height + offset &&
184
+ spaceTop >= popoverRect.height + offset) ||
185
+ (position === 'left' &&
186
+ spaceLeft < popoverRect.width + offset &&
187
+ spaceRight >= popoverRect.width + offset) ||
188
+ (position === 'right' &&
189
+ spaceRight < popoverRect.width + offset &&
190
+ spaceLeft >= popoverRect.width + offset);
191
+
186
192
  if (needsFlip) {
187
193
  // Flip to the opposite side
188
194
  const oppositePositions: Record<PopoverPosition | 'auto', PopoverPosition> = {
189
- 'top': 'bottom',
190
- 'bottom': 'top',
191
- 'left': 'right',
192
- 'right': 'left',
193
- 'auto': 'bottom'
195
+ top: 'bottom',
196
+ bottom: 'top',
197
+ left: 'right',
198
+ right: 'left',
199
+ auto: 'bottom',
194
200
  };
195
201
  bestPosition = oppositePositions[position as PopoverPosition | 'auto'];
196
202
  }
197
203
  }
198
-
204
+
199
205
  setCurrentPosition(bestPosition);
200
-
206
+
201
207
  // Calculate position based on the determined best position
202
208
  let top = 0;
203
209
  let left = 0;
204
-
210
+
205
211
  // Calculate viewport-relative position
206
212
  switch (bestPosition) {
207
213
  case 'top':
208
214
  top = triggerRect.top - popoverRect.height - offset;
209
- left = triggerRect.left + (triggerRect.width / 2) - (popoverRect.width / 2);
215
+ left = triggerRect.left + triggerRect.width / 2 - popoverRect.width / 2;
210
216
  break;
211
217
  case 'bottom':
212
218
  top = triggerRect.bottom + offset;
213
- left = triggerRect.left + (triggerRect.width / 2) - (popoverRect.width / 2);
219
+ left = triggerRect.left + triggerRect.width / 2 - popoverRect.width / 2;
214
220
  break;
215
221
  case 'left':
216
- top = triggerRect.top + (triggerRect.height / 2) - (popoverRect.height / 2);
222
+ top = triggerRect.top + triggerRect.height / 2 - popoverRect.height / 2;
217
223
  left = triggerRect.left - popoverRect.width - offset;
218
224
  break;
219
225
  case 'right':
220
- top = triggerRect.top + (triggerRect.height / 2) - (popoverRect.height / 2);
226
+ top = triggerRect.top + triggerRect.height / 2 - popoverRect.height / 2;
221
227
  left = triggerRect.right + offset;
222
228
  break;
223
229
  }
224
-
230
+
225
231
  // Constrain to viewport boundaries
226
232
  if (left < 0) {
227
233
  left = 5;
228
234
  } else if (left + popoverRect.width > viewportWidth) {
229
235
  left = viewportWidth - popoverRect.width - 5;
230
236
  }
231
-
237
+
232
238
  if (top < 0) {
233
239
  top = 5;
234
240
  } else if (top + popoverRect.height > viewportHeight) {
235
241
  top = viewportHeight - popoverRect.height - 5;
236
242
  }
237
-
243
+
238
244
  // Add scroll position to convert viewport coordinates to absolute position
239
245
  const absoluteTop = top + window.scrollY;
240
246
  const absoluteLeft = left + window.scrollX;
241
-
247
+
242
248
  // Apply position using absolute positioning to follow when scrolling
243
249
  popoverRef.current.style.position = 'absolute';
244
250
  popoverRef.current.style.top = `${absoluteTop}px`;
@@ -248,33 +254,33 @@ export const usePopover = ({
248
254
  // Position the popover
249
255
  useEffect(() => {
250
256
  if (!isOpenState || !triggerRef.current || !popoverRef.current) return undefined;
251
-
257
+
252
258
  // Initial positioning
253
259
  updatePosition();
254
-
255
- // Update position on resize
260
+
261
+ // Update position on resize
256
262
  window.addEventListener('resize', updatePosition);
257
-
263
+
258
264
  // Update position on scroll, but throttled for performance
259
265
  let scrollTimeout: ReturnType<typeof setTimeout> | null = null;
260
266
  const handleScroll = (e: Event) => {
261
267
  if (scrollTimeout) {
262
268
  return;
263
269
  }
264
-
270
+
265
271
  scrollTimeout = setTimeout(() => {
266
272
  updatePosition(e);
267
273
  scrollTimeout = null;
268
274
  }, 100);
269
275
  };
270
-
276
+
271
277
  window.addEventListener('scroll', handleScroll, { passive: true });
272
-
278
+
273
279
  // Update position less frequently to handle content changes
274
280
  const intervalId: ReturnType<typeof setInterval> = setInterval(() => {
275
281
  updatePosition();
276
282
  }, 500);
277
-
283
+
278
284
  return () => {
279
285
  window.removeEventListener('resize', updatePosition);
280
286
  window.removeEventListener('scroll', handleScroll);
@@ -284,41 +290,41 @@ export const usePopover = ({
284
290
  clearInterval(intervalId);
285
291
  };
286
292
  }, [isOpenState, position, offset]);
287
-
293
+
288
294
  // Handle click outside to close popover
289
295
  useEffect(() => {
290
296
  if (!isOpenState || !closeOnClickOutside) return undefined;
291
-
297
+
292
298
  const handleClickOutside = (event: MouseEvent) => {
293
299
  if (
294
- popoverRef.current &&
300
+ popoverRef.current &&
295
301
  !popoverRef.current.contains(event.target as Node) &&
296
- triggerRef.current &&
302
+ triggerRef.current &&
297
303
  !triggerRef.current.contains(event.target as Node)
298
304
  ) {
299
305
  setIsOpen(false);
300
306
  }
301
307
  };
302
-
308
+
303
309
  document.addEventListener('mousedown', handleClickOutside);
304
-
310
+
305
311
  return () => {
306
312
  document.removeEventListener('mousedown', handleClickOutside);
307
313
  };
308
314
  }, [isOpenState, closeOnClickOutside]);
309
-
315
+
310
316
  // Handle escape key to close popover
311
317
  useEffect(() => {
312
318
  if (!isOpenState || !closeOnEscape) return undefined;
313
-
319
+
314
320
  const handleEscapeKey = (event: KeyboardEvent) => {
315
321
  if (event.key === 'Escape') {
316
322
  setIsOpen(false);
317
323
  }
318
324
  };
319
-
325
+
320
326
  document.addEventListener('keydown', handleEscapeKey);
321
-
327
+
322
328
  return () => {
323
329
  document.removeEventListener('keydown', handleEscapeKey);
324
330
  };
@@ -345,4 +351,4 @@ export const usePopover = ({
345
351
  };
346
352
  };
347
353
 
348
- export default usePopover;
354
+ export default usePopover;
@@ -5,17 +5,17 @@ interface UseProgressProps {
5
5
  * Progress value from 0 to 100
6
6
  */
7
7
  value: number;
8
-
8
+
9
9
  /**
10
10
  * Optional color variant
11
11
  */
12
12
  variant?: ThemeColor;
13
-
13
+
14
14
  /**
15
15
  * Optional size
16
16
  */
17
17
  size?: 'sm' | 'md' | 'lg';
18
-
18
+
19
19
  /**
20
20
  * Optional className for custom styling
21
21
  */
@@ -27,12 +27,12 @@ interface UseProgressReturn {
27
27
  * Computed progress value clamped between 0 and 100
28
28
  */
29
29
  progressValue: number;
30
-
30
+
31
31
  /**
32
32
  * CSS properties for the progress component
33
33
  */
34
34
  progressStyle: React.CSSProperties;
35
-
35
+
36
36
  /**
37
37
  * CSS classes for the progress component
38
38
  */
@@ -61,13 +61,10 @@ export const useProgress = ({
61
61
  const variantClass = variant ? `${baseClass}--${variant}` : '';
62
62
  const sizeClass = size ? `${baseClass}--${size}` : '';
63
63
  const customClass = className || '';
64
-
65
- const progressClasses = [
66
- baseClass,
67
- variantClass,
68
- sizeClass,
69
- customClass
70
- ].filter(Boolean).join(' ');
64
+
65
+ const progressClasses = [baseClass, variantClass, sizeClass, customClass]
66
+ .filter(Boolean)
67
+ .join(' ');
71
68
 
72
69
  return {
73
70
  progressValue,
@@ -12,7 +12,7 @@ export function useRadio(initialProps?: Partial<RadioProps>) {
12
12
  disabled: false,
13
13
  invalid: false,
14
14
  valid: false,
15
- ...initialProps
15
+ ...initialProps,
16
16
  };
17
17
 
18
18
  /**
@@ -34,9 +34,9 @@ export function useRadio(initialProps?: Partial<RadioProps>) {
34
34
  } else if (valid) {
35
35
  validationClass = RADIO.CLASSES.VALID;
36
36
  }
37
-
37
+
38
38
  const disabledClass = disabled ? RADIO.CLASSES.DISABLED : '';
39
-
39
+
40
40
  return `${RADIO.CLASSES.BASE} ${validationClass} ${disabledClass} ${className}`.trim();
41
41
  };
42
42
 
@@ -44,4 +44,4 @@ export function useRadio(initialProps?: Partial<RadioProps>) {
44
44
  defaultProps,
45
45
  generateRadioClass,
46
46
  };
47
- }
47
+ }
@@ -4,54 +4,57 @@ import type { RatingProps } from '../types/components';
4
4
  /**
5
5
  * Props for the useRating hook
6
6
  */
7
- export type UseRatingProps = Pick<RatingProps, 'value' | 'maxValue' | 'allowHalf' | 'readOnly' | 'onChange'>;
7
+ export type UseRatingProps = Pick<
8
+ RatingProps,
9
+ 'value' | 'maxValue' | 'allowHalf' | 'readOnly' | 'onChange'
10
+ >;
8
11
 
9
12
  export interface UseRatingReturn {
10
13
  /**
11
14
  * Current rating value (controlled or uncontrolled)
12
15
  */
13
16
  currentValue: number;
14
-
17
+
15
18
  /**
16
19
  * Value being hovered over
17
20
  */
18
21
  hoverValue: number | null;
19
-
22
+
20
23
  /**
21
24
  * Currently focused star index
22
25
  */
23
26
  focusedIndex: number | null;
24
-
27
+
25
28
  /**
26
29
  * Handle mouse enter on a star
27
30
  */
28
31
  handleMouseEnter: (starValue: number) => void;
29
-
32
+
30
33
  /**
31
34
  * Handle mouse leave from rating component
32
35
  */
33
36
  handleMouseLeave: () => void;
34
-
37
+
35
38
  /**
36
39
  * Handle click on a star
37
40
  */
38
41
  handleClick: (newValue: number) => void;
39
-
42
+
40
43
  /**
41
44
  * Handle keyboard navigation
42
45
  */
43
46
  handleKeyDown: (e: React.KeyboardEvent, index: number) => void;
44
-
47
+
45
48
  /**
46
49
  * Set focus on a specific star
47
50
  */
48
51
  setFocused: (index: number | null) => void;
49
-
52
+
50
53
  /**
51
54
  * Set hover value directly
52
55
  */
53
56
  setHoverValue: (value: number | null) => void;
54
-
57
+
55
58
  /**
56
59
  * Whether the component is in controlled mode
57
60
  */
@@ -66,85 +69,94 @@ export const useRating = ({
66
69
  maxValue = 5,
67
70
  allowHalf = false,
68
71
  readOnly = false,
69
- onChange
72
+ onChange,
70
73
  }: UseRatingProps): UseRatingReturn => {
71
74
  // Determine if component is in controlled mode
72
75
  const isControlled = typeof onChange !== 'undefined';
73
-
76
+
74
77
  // Internal state for uncontrolled mode
75
78
  const [internalValue, setInternalValue] = useState<number>(value);
76
79
  const [hoverValue, setHoverValue] = useState<number | null>(null);
77
80
  const [focusedIndex, setFocusedIndex] = useState<number | null>(null);
78
-
81
+
79
82
  // Use controlled or uncontrolled value
80
83
  const currentValue = isControlled ? value : internalValue;
81
-
84
+
82
85
  // Handle mouse enter on star
83
- const handleMouseEnter = useCallback((starValue: number) => {
84
- if (readOnly) return;
85
- setHoverValue(starValue);
86
- }, [readOnly]);
87
-
86
+ const handleMouseEnter = useCallback(
87
+ (starValue: number) => {
88
+ if (readOnly) return;
89
+ setHoverValue(starValue);
90
+ },
91
+ [readOnly]
92
+ );
93
+
88
94
  // Handle mouse leave from rating component
89
95
  const handleMouseLeave = useCallback(() => {
90
96
  if (readOnly) return;
91
97
  setHoverValue(null);
92
98
  }, [readOnly]);
93
-
99
+
94
100
  // Handle click on star
95
- const handleClick = useCallback((newValue: number) => {
96
- if (readOnly) return;
97
-
98
- if (!isControlled) {
99
- setInternalValue(newValue);
100
- }
101
-
102
- onChange?.(newValue);
103
- }, [readOnly, onChange, isControlled]);
104
-
105
- // Handle keyboard navigation
106
- const handleKeyDown = useCallback((e: React.KeyboardEvent, index: number) => {
107
- if (readOnly) return;
108
-
109
- const step = allowHalf ? 0.5 : 1;
110
- let newValue = currentValue;
111
-
112
- switch (e.key) {
113
- case 'ArrowRight':
114
- case 'ArrowUp':
115
- newValue = Math.min(maxValue, currentValue + step);
116
- e.preventDefault();
117
- break;
118
- case 'ArrowLeft':
119
- case 'ArrowDown':
120
- newValue = Math.max(0, currentValue - step);
121
- e.preventDefault();
122
- break;
123
- case 'Home':
124
- newValue = 0;
125
- e.preventDefault();
126
- break;
127
- case 'End':
128
- newValue = maxValue;
129
- e.preventDefault();
130
- break;
131
- case ' ':
132
- case 'Enter':
133
- newValue = index;
134
- e.preventDefault();
135
- break;
136
- default:
137
- return;
138
- }
139
-
140
- if (newValue !== currentValue) {
101
+ const handleClick = useCallback(
102
+ (newValue: number) => {
103
+ if (readOnly) return;
104
+
141
105
  if (!isControlled) {
142
106
  setInternalValue(newValue);
143
107
  }
108
+
144
109
  onChange?.(newValue);
145
- }
146
- }, [currentValue, maxValue, allowHalf, readOnly, onChange, isControlled]);
147
-
110
+ },
111
+ [readOnly, onChange, isControlled]
112
+ );
113
+
114
+ // Handle keyboard navigation
115
+ const handleKeyDown = useCallback(
116
+ (e: React.KeyboardEvent, index: number) => {
117
+ if (readOnly) return;
118
+
119
+ const step = allowHalf ? 0.5 : 1;
120
+ let newValue = currentValue;
121
+
122
+ switch (e.key) {
123
+ case 'ArrowRight':
124
+ case 'ArrowUp':
125
+ newValue = Math.min(maxValue, currentValue + step);
126
+ e.preventDefault();
127
+ break;
128
+ case 'ArrowLeft':
129
+ case 'ArrowDown':
130
+ newValue = Math.max(0, currentValue - step);
131
+ e.preventDefault();
132
+ break;
133
+ case 'Home':
134
+ newValue = 0;
135
+ e.preventDefault();
136
+ break;
137
+ case 'End':
138
+ newValue = maxValue;
139
+ e.preventDefault();
140
+ break;
141
+ case ' ':
142
+ case 'Enter':
143
+ newValue = index;
144
+ e.preventDefault();
145
+ break;
146
+ default:
147
+ return;
148
+ }
149
+
150
+ if (newValue !== currentValue) {
151
+ if (!isControlled) {
152
+ setInternalValue(newValue);
153
+ }
154
+ onChange?.(newValue);
155
+ }
156
+ },
157
+ [currentValue, maxValue, allowHalf, readOnly, onChange, isControlled]
158
+ );
159
+
148
160
  return {
149
161
  currentValue,
150
162
  hoverValue,
@@ -155,7 +167,7 @@ export const useRating = ({
155
167
  handleKeyDown,
156
168
  setFocused: setFocusedIndex,
157
169
  setHoverValue,
158
- isControlled
170
+ isControlled,
159
171
  };
160
172
  };
161
173