@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
@@ -6,262 +6,281 @@ import useForkRef from '../../lib/utils/useForkRef';
6
6
 
7
7
  /**
8
8
  * Rating component for displaying and collecting star ratings
9
- *
9
+ *
10
10
  * @example
11
11
  * // Basic usage
12
12
  * <Rating value={3} onChange={handleRatingChange} />
13
- *
13
+ *
14
14
  * @example
15
15
  * // Read-only with custom color
16
16
  * <Rating value={4.5} readOnly color="warning" />
17
- *
17
+ *
18
18
  * @example
19
19
  * // With half-star support
20
20
  * <Rating value={3.5} allowHalf maxValue={5} />
21
21
  */
22
- export const Rating = forwardRef<HTMLDivElement, RatingProps>(({
23
- value: valueProp = 0,
24
- defaultValue,
25
- maxValue = 5,
26
- allowHalf = false,
27
- readOnly = false,
28
- size = 'md',
29
- color,
30
- onChange,
31
- className = '',
32
- label,
33
- id,
34
- useVanillaJS = false,
35
- ...restProps
36
- }, ref) => {
37
- const internalRef = useRef<HTMLDivElement>(null);
38
- const ratingInstance = useRef<any>(null);
39
-
40
- // Use the rating hook for React-based implementation
41
- const {
42
- currentValue,
43
- hoverValue,
44
- focusedIndex,
45
- setHoverValue,
46
- setFocused,
47
- handleKeyDown
48
- } = useRating({
49
- value: valueProp !== undefined ? valueProp : defaultValue,
50
- maxValue,
51
- allowHalf,
52
- readOnly,
53
- onChange
54
- });
55
-
56
- // Handle mouse enter on star with half-star support
57
- const handleMouseEnter = useCallback((e: React.MouseEvent, starValue: number) => {
58
- if (readOnly) return;
59
-
60
- if (allowHalf) {
61
- // Get the star element's bounding rectangle
62
- const starRect = (e.currentTarget as HTMLElement).getBoundingClientRect();
63
- // Calculate the x position within the star
64
- const starCenterX = starRect.left + starRect.width / 2;
65
- // If mouse is on the left half of the star, use half value
66
- const isHalfStar = e.clientX < starCenterX;
67
- const adjustedValue = isHalfStar ? starValue - 0.5 : starValue;
68
- setHoverValue(Math.max(0.5, adjustedValue)); // Ensure minimum of 0.5
69
- } else {
70
- setHoverValue(starValue);
71
- }
72
- }, [readOnly, allowHalf, setHoverValue]);
73
-
74
- // Handle mouse move on star for half-star precision
75
- const handleMouseMove = useCallback((e: React.MouseEvent, starValue: number) => {
76
- if (readOnly || !allowHalf) return;
77
-
78
- // Get the star element's bounding rectangle
79
- const starRect = (e.currentTarget as HTMLElement).getBoundingClientRect();
80
- // Calculate the x position within the star
81
- const starCenterX = starRect.left + starRect.width / 2;
82
- // If mouse is on the left half of the star, use half value
83
- const isHalfStar = e.clientX < starCenterX;
84
- const adjustedValue = isHalfStar ? starValue - 0.5 : starValue;
85
- setHoverValue(Math.max(0.5, adjustedValue)); // Ensure minimum of 0.5
86
- }, [readOnly, allowHalf, setHoverValue]);
87
-
88
- // Handle mouse leave from rating component
89
- const handleMouseLeave = useCallback(() => {
90
- if (readOnly) return;
91
- setHoverValue(null);
92
- }, [readOnly, setHoverValue]);
93
-
94
- // Handle click on star with half-star support
95
- const handleClick = useCallback((e: React.MouseEvent, starValue: number) => {
96
- if (readOnly) return;
97
-
98
- let newValue = starValue;
99
-
100
- if (allowHalf) {
101
- // Get the star element's bounding rectangle
102
- const starRect = (e.currentTarget as HTMLElement).getBoundingClientRect();
103
- // Calculate the x position within the star
104
- const starCenterX = starRect.left + starRect.width / 2;
105
- // If click is on the left half of the star, use half value
106
- const isHalfStar = e.clientX < starCenterX;
107
- newValue = isHalfStar ? starValue - 0.5 : starValue;
108
- newValue = Math.max(0.5, newValue); // Ensure minimum of 0.5
109
- }
110
-
111
- onChange?.(newValue);
112
- }, [readOnly, onChange, allowHalf]);
113
-
114
- // Use vanilla JS implementation if specified
115
- useEffect(() => {
116
- if (!useVanillaJS || typeof window === 'undefined' || !internalRef.current) return undefined;
117
-
118
- // Cleanup on unmount
119
- return () => {
120
- if (ratingInstance.current) {
121
- ratingInstance.current.destroy();
122
- }
123
- };
124
- }, [useVanillaJS, valueProp, defaultValue, maxValue, allowHalf, readOnly, size, color, onChange]);
125
-
126
- // Update vanilla JS implementation when props change
127
- useEffect(() => {
128
- if (!useVanillaJS || !ratingInstance.current) return undefined;
129
-
130
- ratingInstance.current.updateOptions({
131
- value: valueProp !== undefined ? valueProp : defaultValue,
22
+ export const Rating = forwardRef<HTMLDivElement, RatingProps>(
23
+ (
24
+ {
25
+ value: valueProp = 0,
26
+ defaultValue,
27
+ maxValue = 5,
28
+ allowHalf = false,
29
+ readOnly = false,
30
+ size = 'md',
31
+ color,
32
+ onChange,
33
+ className = '',
34
+ label,
35
+ id,
36
+ useVanillaJS = false,
37
+ ...restProps
38
+ },
39
+ ref
40
+ ) => {
41
+ const internalRef = useRef<HTMLDivElement>(null);
42
+ const ratingInstance = useRef<any>(null);
43
+
44
+ // Use the rating hook for React-based implementation
45
+ const { currentValue, hoverValue, focusedIndex, setHoverValue, setFocused, handleKeyDown } =
46
+ useRating({
47
+ value: valueProp !== undefined ? valueProp : defaultValue,
48
+ maxValue,
49
+ allowHalf,
50
+ readOnly,
51
+ onChange,
52
+ });
53
+
54
+ // Handle mouse enter on star with half-star support
55
+ const handleMouseEnter = useCallback(
56
+ (e: React.MouseEvent, starValue: number) => {
57
+ if (readOnly) return;
58
+
59
+ if (allowHalf) {
60
+ // Get the star element's bounding rectangle
61
+ const starRect = (e.currentTarget as HTMLElement).getBoundingClientRect();
62
+ // Calculate the x position within the star
63
+ const starCenterX = starRect.left + starRect.width / 2;
64
+ // If mouse is on the left half of the star, use half value
65
+ const isHalfStar = e.clientX < starCenterX;
66
+ const adjustedValue = isHalfStar ? starValue - 0.5 : starValue;
67
+ setHoverValue(Math.max(0.5, adjustedValue)); // Ensure minimum of 0.5
68
+ } else {
69
+ setHoverValue(starValue);
70
+ }
71
+ },
72
+ [readOnly, allowHalf, setHoverValue]
73
+ );
74
+
75
+ // Handle mouse move on star for half-star precision
76
+ const handleMouseMove = useCallback(
77
+ (e: React.MouseEvent, starValue: number) => {
78
+ if (readOnly || !allowHalf) return;
79
+
80
+ // Get the star element's bounding rectangle
81
+ const starRect = (e.currentTarget as HTMLElement).getBoundingClientRect();
82
+ // Calculate the x position within the star
83
+ const starCenterX = starRect.left + starRect.width / 2;
84
+ // If mouse is on the left half of the star, use half value
85
+ const isHalfStar = e.clientX < starCenterX;
86
+ const adjustedValue = isHalfStar ? starValue - 0.5 : starValue;
87
+ setHoverValue(Math.max(0.5, adjustedValue)); // Ensure minimum of 0.5
88
+ },
89
+ [readOnly, allowHalf, setHoverValue]
90
+ );
91
+
92
+ // Handle mouse leave from rating component
93
+ const handleMouseLeave = useCallback(() => {
94
+ if (readOnly) return;
95
+ setHoverValue(null);
96
+ }, [readOnly, setHoverValue]);
97
+
98
+ // Handle click on star with half-star support
99
+ const handleClick = useCallback(
100
+ (e: React.MouseEvent, starValue: number) => {
101
+ if (readOnly) return;
102
+
103
+ let newValue = starValue;
104
+
105
+ if (allowHalf) {
106
+ // Get the star element's bounding rectangle
107
+ const starRect = (e.currentTarget as HTMLElement).getBoundingClientRect();
108
+ // Calculate the x position within the star
109
+ const starCenterX = starRect.left + starRect.width / 2;
110
+ // If click is on the left half of the star, use half value
111
+ const isHalfStar = e.clientX < starCenterX;
112
+ newValue = isHalfStar ? starValue - 0.5 : starValue;
113
+ newValue = Math.max(0.5, newValue); // Ensure minimum of 0.5
114
+ }
115
+
116
+ onChange?.(newValue);
117
+ },
118
+ [readOnly, onChange, allowHalf]
119
+ );
120
+
121
+ // Use vanilla JS implementation if specified
122
+ useEffect(() => {
123
+ if (!useVanillaJS || typeof window === 'undefined' || !internalRef.current) return undefined;
124
+
125
+ // Cleanup on unmount
126
+ return () => {
127
+ if (ratingInstance.current) {
128
+ ratingInstance.current.destroy();
129
+ }
130
+ };
131
+ }, [
132
+ useVanillaJS,
133
+ valueProp,
134
+ defaultValue,
132
135
  maxValue,
133
136
  allowHalf,
134
137
  readOnly,
135
138
  size,
136
- color
137
- });
138
- }, [useVanillaJS, valueProp, defaultValue, maxValue, allowHalf, readOnly, size, color]);
139
-
140
- // Determine CSS classes
141
- const ratingClasses = [
142
- 'c-rating',
143
- size === 'sm' ? RATING.CLASSES.SMALL : '',
144
- size === 'lg' ? RATING.CLASSES.LARGE : '',
145
- color ? `c-rating--${color}` : '',
146
- className
147
- ].filter(Boolean).join(' ');
148
-
149
- // If using vanilla JS, just render the container
150
- if (useVanillaJS) {
139
+ color,
140
+ onChange,
141
+ ]);
142
+
143
+ // Update vanilla JS implementation when props change
144
+ useEffect(() => {
145
+ if (!useVanillaJS || !ratingInstance.current) return undefined;
146
+
147
+ ratingInstance.current.updateOptions({
148
+ value: valueProp !== undefined ? valueProp : defaultValue,
149
+ maxValue,
150
+ allowHalf,
151
+ readOnly,
152
+ size,
153
+ color,
154
+ });
155
+ }, [useVanillaJS, valueProp, defaultValue, maxValue, allowHalf, readOnly, size, color]);
156
+
157
+ // Determine CSS classes
158
+ const ratingClasses = [
159
+ 'c-rating',
160
+ size === 'sm' ? RATING.CLASSES.SMALL : '',
161
+ size === 'lg' ? RATING.CLASSES.LARGE : '',
162
+ color ? `c-rating--${color}` : '',
163
+ className,
164
+ ]
165
+ .filter(Boolean)
166
+ .join(' ');
167
+
168
+ // If using vanilla JS, just render the container
169
+ if (useVanillaJS) {
170
+ return (
171
+ <div className={ratingClasses} ref={useForkRef(internalRef, ref)} id={id} {...restProps}>
172
+ {/* Stars will be generated by the vanilla JS implementation */}
173
+ </div>
174
+ );
175
+ }
176
+
177
+ // React-based implementation
178
+ // Determine the effective value (either hovered or actual)
179
+ const effectiveValue = hoverValue !== null ? hoverValue : currentValue;
180
+
181
+ // Generate stars
182
+ const renderStars = () => {
183
+ const stars = [];
184
+ const roundedValue = allowHalf
185
+ ? Math.floor(effectiveValue * 2) / 2
186
+ : Math.round(effectiveValue);
187
+ const componentId = id || `rating-${Math.random().toString(36).substring(2, 9)}`;
188
+
189
+ for (let i = 1; i <= maxValue; i++) {
190
+ // For half-star support
191
+ const isFullStar = i <= Math.floor(roundedValue);
192
+ const isHalfStar = allowHalf && i - 0.5 === roundedValue;
193
+
194
+ const starClass = [
195
+ 'c-rating__star',
196
+ isFullStar ? RATING.CLASSES.FULL : '',
197
+ isHalfStar ? RATING.CLASSES.HALF : '',
198
+ color ? `c-rating__star--${color}` : '',
199
+ focusedIndex === i ? 'c-rating__star--focused' : '',
200
+ ]
201
+ .filter(Boolean)
202
+ .join(' ');
203
+
204
+ const starId = `${componentId}-star-${i}`;
205
+
206
+ stars.push(
207
+ <div
208
+ key={i}
209
+ id={starId}
210
+ className={starClass}
211
+ data-value={i}
212
+ role={readOnly ? 'presentation' : 'button'}
213
+ tabIndex={readOnly ? -1 : 0}
214
+ aria-label={`${i} ${i === 1 ? 'star' : 'stars'}`}
215
+ aria-checked={i <= roundedValue}
216
+ aria-setsize={maxValue}
217
+ aria-posinset={i}
218
+ onClick={e => handleClick(e, i)}
219
+ onMouseEnter={e => handleMouseEnter(e, i)}
220
+ onMouseMove={e => handleMouseMove(e, i)}
221
+ onFocus={() => setFocused(i)}
222
+ onBlur={() => setFocused(null)}
223
+ onKeyDown={e => handleKeyDown(e, i)}
224
+ >
225
+ <svg
226
+ viewBox="0 0 24 24"
227
+ xmlns="http://www.w3.org/2000/svg"
228
+ aria-hidden="true"
229
+ focusable="false"
230
+ >
231
+ {/* Empty star (outline) */}
232
+ <path
233
+ className="c-rating__star-outline"
234
+ d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"
235
+ strokeWidth="1"
236
+ />
237
+
238
+ {/* Full star */}
239
+ <path
240
+ className="c-rating__star-full"
241
+ d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"
242
+ />
243
+
244
+ {/* Half star with proper clipping */}
245
+ <path
246
+ className="c-rating__star-half"
247
+ d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"
248
+ clipPath={`url(#half-star-clip-${componentId}-${i})`}
249
+ />
250
+
251
+ {/* Clipping path for half star */}
252
+ <defs>
253
+ <clipPath id={`half-star-clip-${componentId}-${i}`}>
254
+ <rect x="0" y="0" width="12" height="24" />
255
+ </clipPath>
256
+ </defs>
257
+ </svg>
258
+ </div>
259
+ );
260
+ }
261
+
262
+ return stars;
263
+ };
264
+
151
265
  return (
152
- <div
266
+ <div
153
267
  className={ratingClasses}
154
268
  ref={useForkRef(internalRef, ref)}
155
269
  id={id}
270
+ data-readonly={readOnly ? 'true' : 'false'}
271
+ onMouseLeave={handleMouseLeave}
272
+ role={readOnly ? 'img' : 'radiogroup'}
273
+ aria-label={label || `Rating: ${currentValue} out of ${maxValue} stars`}
156
274
  {...restProps}
157
275
  >
158
- {/* Stars will be generated by the vanilla JS implementation */}
276
+ {renderStars()}
159
277
  </div>
160
278
  );
161
279
  }
162
-
163
- // React-based implementation
164
- // Determine the effective value (either hovered or actual)
165
- const effectiveValue = hoverValue !== null ? hoverValue : currentValue;
166
-
167
- // Generate stars
168
- const renderStars = () => {
169
- const stars = [];
170
- const roundedValue = allowHalf ? Math.floor(effectiveValue * 2) / 2 : Math.round(effectiveValue);
171
- const componentId = id || `rating-${Math.random().toString(36).substring(2, 9)}`;
172
-
173
- for (let i = 1; i <= maxValue; i++) {
174
- // For half-star support
175
- const isFullStar = i <= Math.floor(roundedValue);
176
- const isHalfStar = allowHalf && (i - 0.5 === roundedValue);
177
-
178
- const starClass = [
179
- 'c-rating__star',
180
- isFullStar ? RATING.CLASSES.FULL : '',
181
- isHalfStar ? RATING.CLASSES.HALF : '',
182
- color ? `c-rating__star--${color}` : '',
183
- focusedIndex === i ? 'c-rating__star--focused' : ''
184
- ].filter(Boolean).join(' ');
185
-
186
- const starId = `${componentId}-star-${i}`;
187
-
188
- stars.push(
189
- <div
190
- key={i}
191
- id={starId}
192
- className={starClass}
193
- data-value={i}
194
- role={readOnly ? 'presentation' : 'button'}
195
- tabIndex={readOnly ? -1 : 0}
196
- aria-label={`${i} ${i === 1 ? 'star' : 'stars'}`}
197
- aria-checked={i <= roundedValue}
198
- aria-setsize={maxValue}
199
- aria-posinset={i}
200
- onClick={(e) => handleClick(e, i)}
201
- onMouseEnter={(e) => handleMouseEnter(e, i)}
202
- onMouseMove={(e) => handleMouseMove(e, i)}
203
- onFocus={() => setFocused(i)}
204
- onBlur={() => setFocused(null)}
205
- onKeyDown={(e) => handleKeyDown(e, i)}
206
- >
207
- <svg
208
- viewBox="0 0 24 24"
209
- xmlns="http://www.w3.org/2000/svg"
210
- aria-hidden="true"
211
- focusable="false"
212
- >
213
- {/* Empty star (outline) */}
214
- <path
215
- className="c-rating__star-outline"
216
- d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"
217
- strokeWidth="1"
218
- />
219
-
220
- {/* Full star */}
221
- <path
222
- className="c-rating__star-full"
223
- d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"
224
- />
225
-
226
- {/* Half star with proper clipping */}
227
- <path
228
- className="c-rating__star-half"
229
- d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"
230
- clipPath={`url(#half-star-clip-${componentId}-${i})`}
231
- />
232
-
233
- {/* Clipping path for half star */}
234
- <defs>
235
- <clipPath id={`half-star-clip-${componentId}-${i}`}>
236
- <rect x="0" y="0" width="12" height="24" />
237
- </clipPath>
238
- </defs>
239
- </svg>
240
- </div>
241
- );
242
- }
243
-
244
- return stars;
245
- };
246
-
247
- return (
248
- <div
249
- className={ratingClasses}
250
- ref={useForkRef(internalRef, ref)}
251
- id={id}
252
- data-readonly={readOnly ? 'true' : 'false'}
253
- onMouseLeave={handleMouseLeave}
254
- role={readOnly ? 'img' : 'radiogroup'}
255
- aria-label={label || `Rating: ${currentValue} out of ${maxValue} stars`}
256
- {...restProps}
257
- >
258
- {renderStars()}
259
- </div>
260
- );
261
- });
280
+ );
262
281
 
263
282
  Rating.displayName = 'Rating';
264
283
 
265
- export type { RatingProps };
284
+ export type { RatingProps };
266
285
 
267
286
  export default Rating;
@@ -1,19 +1,24 @@
1
1
  import Rating from './index';
2
- import { initFromDataAttributes, getInstance, disposeAll, enhanceWithKeyboardNavigation } from './ratingInteractions';
2
+ import {
3
+ initFromDataAttributes,
4
+ getInstance,
5
+ disposeAll,
6
+ enhanceWithKeyboardNavigation,
7
+ } from './ratingInteractions';
3
8
 
4
9
  if (typeof window !== 'undefined') {
5
10
  // Initialize the Atomix global object if it doesn't exist
6
11
  (window as any).Atomix = (window as any).Atomix || {};
7
-
12
+
8
13
  // Add Rating to the global Atomix object
9
14
  (window as any).Atomix.Rating = {
10
15
  create: Rating,
11
16
  init: initFromDataAttributes,
12
17
  get: getInstance,
13
18
  disposeAll: disposeAll,
14
- enhanceKeyboardNavigation: enhanceWithKeyboardNavigation
19
+ enhanceKeyboardNavigation: enhanceWithKeyboardNavigation,
15
20
  };
16
-
21
+
17
22
  // Auto-initialize ratings when DOM is ready
18
23
  if (document.readyState === 'loading') {
19
24
  document.addEventListener('DOMContentLoaded', () => {
@@ -25,10 +30,10 @@ if (typeof window !== 'undefined') {
25
30
  }
26
31
 
27
32
  // Export everything for module bundling
28
- export {
33
+ export {
29
34
  Rating as default,
30
35
  initFromDataAttributes,
31
36
  getInstance,
32
37
  disposeAll,
33
- enhanceWithKeyboardNavigation
38
+ enhanceWithKeyboardNavigation,
34
39
  };