@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
@@ -7,11 +7,11 @@ import { CARD } from '../../../lib/constants/components';
7
7
  */
8
8
  export function applyHoverEffect(card: HTMLElement): void {
9
9
  const hoverClass = 'is-hovered';
10
-
10
+
11
11
  card.addEventListener('mouseenter', () => {
12
12
  card.classList.add(hoverClass);
13
13
  });
14
-
14
+
15
15
  card.addEventListener('mouseleave', () => {
16
16
  card.classList.remove(hoverClass);
17
17
  });
@@ -23,16 +23,16 @@ export function applyHoverEffect(card: HTMLElement): void {
23
23
  */
24
24
  export function applyFocusEffect(card: HTMLElement): void {
25
25
  const focusClass = 'is-focused';
26
-
26
+
27
27
  // Make card focusable if it isn't already
28
28
  if (!card.getAttribute('tabindex')) {
29
29
  card.setAttribute('tabindex', '0');
30
30
  }
31
-
31
+
32
32
  card.addEventListener('focus', () => {
33
33
  card.classList.add(focusClass);
34
34
  });
35
-
35
+
36
36
  card.addEventListener('blur', () => {
37
37
  card.classList.remove(focusClass);
38
38
  });
@@ -48,21 +48,21 @@ export function makeCardClickable(card: HTMLElement, onClick: () => void): void
48
48
  if (!card.getAttribute('tabindex')) {
49
49
  card.setAttribute('tabindex', '0');
50
50
  }
51
-
51
+
52
52
  // Add role for accessibility
53
53
  card.setAttribute('role', 'button');
54
-
54
+
55
55
  // Add click handler
56
56
  card.addEventListener('click', onClick);
57
-
57
+
58
58
  // Add keyboard handler for accessibility
59
- card.addEventListener('keydown', (event) => {
59
+ card.addEventListener('keydown', event => {
60
60
  if (event.key === 'Enter' || event.key === ' ') {
61
61
  event.preventDefault();
62
62
  onClick();
63
63
  }
64
64
  });
65
-
65
+
66
66
  // Add visual feedback
67
67
  applyHoverEffect(card);
68
68
  applyFocusEffect(card);
@@ -77,7 +77,7 @@ export function applyElevationEffect(card: HTMLElement, elevationClass = 'is-ele
77
77
  card.addEventListener('mouseenter', () => {
78
78
  card.classList.add(elevationClass);
79
79
  });
80
-
80
+
81
81
  card.addEventListener('mouseleave', () => {
82
82
  card.classList.remove(elevationClass);
83
83
  });
@@ -91,24 +91,24 @@ export function applyElevationEffect(card: HTMLElement, elevationClass = 'is-ele
91
91
  * @param trigger - Trigger type: 'click' or 'hover'
92
92
  */
93
93
  export function applyFlipEffect(
94
- card: HTMLElement,
95
- frontSelector = '.c-card--front',
96
- backSelector = '.c-card--back',
94
+ card: HTMLElement,
95
+ frontSelector = '.c-card--front',
96
+ backSelector = '.c-card--back',
97
97
  trigger = 'click'
98
98
  ): void {
99
99
  const flipClass = 'is-flipped';
100
100
  const frontElement = card.querySelector(frontSelector);
101
101
  const backElement = card.querySelector(backSelector);
102
-
102
+
103
103
  if (!frontElement || !backElement) {
104
104
  console.error('Card flip effect requires both front and back elements');
105
105
  return;
106
106
  }
107
-
107
+
108
108
  // Add necessary styling for flip effect
109
109
  card.style.perspective = '1000px';
110
110
  card.style.transformStyle = 'preserve-3d';
111
-
111
+
112
112
  [frontElement, backElement].forEach(el => {
113
113
  if (el) {
114
114
  (el as HTMLElement).style.backfaceVisibility = 'hidden';
@@ -120,9 +120,9 @@ export function applyFlipEffect(
120
120
  (el as HTMLElement).style.transition = 'transform 0.6s';
121
121
  }
122
122
  });
123
-
123
+
124
124
  (backElement as HTMLElement).style.transform = 'rotateY(180deg)';
125
-
125
+
126
126
  if (trigger === 'click') {
127
127
  card.addEventListener('click', () => {
128
128
  card.classList.toggle(flipClass);
@@ -140,7 +140,7 @@ export function applyFlipEffect(
140
140
  (frontElement as HTMLElement).style.transform = 'rotateY(180deg)';
141
141
  (backElement as HTMLElement).style.transform = 'rotateY(0)';
142
142
  });
143
-
143
+
144
144
  card.addEventListener('mouseleave', () => {
145
145
  card.classList.remove(flipClass);
146
146
  (frontElement as HTMLElement).style.transform = 'rotateY(0)';
@@ -157,8 +157,8 @@ export function applyFlipEffect(
157
157
  export function initializeAllCards(selector = '[data-component="card"]'): Card[] {
158
158
  const cardInstances: Card[] = [];
159
159
  const cardElements = document.querySelectorAll<HTMLElement>(selector);
160
-
161
- cardElements.forEach((element) => {
160
+
161
+ cardElements.forEach(element => {
162
162
  try {
163
163
  const instance = new Card(element);
164
164
  cardInstances.push(instance);
@@ -166,6 +166,6 @@ export function initializeAllCards(selector = '[data-component="card"]'): Card[]
166
166
  console.error('Error initializing card:', error);
167
167
  }
168
168
  });
169
-
169
+
170
170
  return cardInstances;
171
- }
171
+ }
@@ -44,7 +44,7 @@ const DEFAULT_OPTIONS: CardOptions = {
44
44
  active: false,
45
45
  className: '',
46
46
  onClick: undefined,
47
- children: undefined
47
+ children: undefined,
48
48
  };
49
49
 
50
50
  /**
@@ -53,7 +53,7 @@ const DEFAULT_OPTIONS: CardOptions = {
53
53
  export default class Card implements CardInstance {
54
54
  // DOM element
55
55
  private element: HTMLElement;
56
-
56
+
57
57
  // Options
58
58
  private options: CardOptions;
59
59
 
@@ -74,17 +74,16 @@ export default class Card implements CardInstance {
74
74
  */
75
75
  constructor(element: string | HTMLElement, options: Partial<CardOptions> = {}) {
76
76
  // Get element reference
77
- this.element = typeof element === 'string'
78
- ? document.querySelector(element) as HTMLElement
79
- : element;
80
-
77
+ this.element =
78
+ typeof element === 'string' ? (document.querySelector(element) as HTMLElement) : element;
79
+
81
80
  if (!this.element) {
82
81
  throw new Error('Card: element not found');
83
82
  }
84
-
83
+
85
84
  // Merge default options with provided options
86
85
  this.options = { ...DEFAULT_OPTIONS, ...options };
87
-
86
+
88
87
  // Initialize the component
89
88
  this._initialize();
90
89
  }
@@ -121,7 +120,7 @@ export default class Card implements CardInstance {
121
120
 
122
121
  // Create the structure
123
122
  this._createStructure();
124
-
123
+
125
124
  // Bind events
126
125
  this._bindEvents();
127
126
  }
@@ -147,7 +146,7 @@ export default class Card implements CardInstance {
147
146
  this.imageElement.alt = this.options.imageAlt || '';
148
147
  this.element.appendChild(this.imageElement);
149
148
  }
150
-
149
+
151
150
  // Create icon if provided
152
151
  if (this.options.icon) {
153
152
  this.iconElement = document.createElement('div');
@@ -176,7 +175,7 @@ export default class Card implements CardInstance {
176
175
  this.textElement.innerHTML = this.options.text;
177
176
  this.bodyElement.appendChild(this.textElement);
178
177
  }
179
-
178
+
180
179
  // Add children content if provided
181
180
  if (this.options.children && this.bodyElement) {
182
181
  if (typeof this.options.children === 'string') {
@@ -201,13 +200,13 @@ export default class Card implements CardInstance {
201
200
  if (this.options.actions && this.options.actions.length > 0) {
202
201
  this.actionsElement = document.createElement('div');
203
202
  this.actionsElement.className = CARD.SELECTORS.ACTIONS.substring(1);
204
-
203
+
205
204
  this.options.actions.forEach(action => {
206
205
  if (this.actionsElement && action) {
207
206
  this.actionsElement.appendChild(action);
208
207
  }
209
208
  });
210
-
209
+
211
210
  this.bodyElement.appendChild(this.actionsElement);
212
211
  }
213
212
 
@@ -249,7 +248,7 @@ export default class Card implements CardInstance {
249
248
  if (typeof this.options.onClick === 'function') {
250
249
  this.element.removeEventListener('click', this.options.onClick);
251
250
  }
252
-
251
+
253
252
  this.element.innerHTML = '';
254
253
  this.element.classList.remove(
255
254
  CARD.CLASSES.BASE,
@@ -257,7 +256,7 @@ export default class Card implements CardInstance {
257
256
  CARD.CLASSES.FLAT,
258
257
  CARD.CLASSES.ACTIVE
259
258
  );
260
-
259
+
261
260
  if (this.options.className) {
262
261
  this.options.className.split(' ').forEach(cls => {
263
262
  if (cls) this.element.classList.remove(cls);
@@ -276,44 +275,44 @@ export default class Card implements CardInstance {
276
275
  return Array.from(elements).map(element => {
277
276
  // Try to get options from data attributes
278
277
  const options: CardOptions = {};
279
-
278
+
280
279
  // Get title
281
280
  const title = element.getAttribute('data-title');
282
281
  if (title) options.title = title;
283
-
282
+
284
283
  // Get text
285
284
  const text = element.getAttribute('data-text');
286
285
  if (text) options.text = text;
287
-
286
+
288
287
  // Get image
289
288
  const image = element.getAttribute('data-image');
290
289
  if (image) options.image = image;
291
-
290
+
292
291
  // Get imageAlt
293
292
  const imageAlt = element.getAttribute('data-image-alt');
294
293
  if (imageAlt) options.imageAlt = imageAlt;
295
-
294
+
296
295
  // Get icon
297
296
  const icon = element.getAttribute('data-icon');
298
297
  if (icon) options.icon = icon;
299
-
298
+
300
299
  // Get row
301
300
  const row = element.getAttribute('data-row');
302
301
  options.row = row === 'true';
303
-
302
+
304
303
  // Get flat
305
304
  const flat = element.getAttribute('data-flat');
306
305
  options.flat = flat === 'true';
307
-
306
+
308
307
  // Get active
309
308
  const active = element.getAttribute('data-active');
310
309
  options.active = active === 'true';
311
-
310
+
312
311
  // Get className
313
312
  const className = element.getAttribute('data-class-name');
314
313
  if (className) options.className = className;
315
-
314
+
316
315
  return new Card(element as HTMLElement, options);
317
316
  });
318
317
  }
319
- }
318
+ }
@@ -12,7 +12,7 @@ const meta = {
12
12
  argTypes: {
13
13
  className: {
14
14
  control: 'text',
15
- description: 'Additional CSS class names'
15
+ description: 'Additional CSS class names',
16
16
  },
17
17
  },
18
18
  } satisfies Meta<typeof ColorModeToggle>;
@@ -35,9 +35,12 @@ export const WithCustomClass: Story = {
35
35
  // Example Usage
36
36
  export const ExampleUsage: Story = {
37
37
  render: () => (
38
- <div className="u-p-5 u-shadow u-d-flex u-justify-content-between u-align-items-center" style={{ width: '300px', borderRadius: '8px' }}>
38
+ <div
39
+ className="u-p-5 u-shadow u-d-flex u-justify-content-between u-align-items-center"
40
+ style={{ width: '300px', borderRadius: '8px' }}
41
+ >
39
42
  <span>Toggle Theme</span>
40
43
  <ColorModeToggle />
41
44
  </div>
42
45
  ),
43
- };
46
+ };
@@ -6,12 +6,12 @@ export interface ColorModeToggleProps {
6
6
 
7
7
  export const ColorModeToggle: React.FC<ColorModeToggleProps> = ({ className = '' }) => {
8
8
  const [colorMode, setColorMode] = useState<'light' | 'dark'>('light');
9
-
9
+
10
10
  // Initialize color mode from localStorage or system preference
11
11
  useEffect(() => {
12
12
  // Check if color mode is already set in localStorage
13
13
  const storedColorMode = localStorage.getItem('atomix-color-mode');
14
-
14
+
15
15
  if (storedColorMode === 'light' || storedColorMode === 'dark') {
16
16
  setColorMode(storedColorMode);
17
17
  } else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
@@ -19,24 +19,24 @@ export const ColorModeToggle: React.FC<ColorModeToggleProps> = ({ className = ''
19
19
  setColorMode('dark');
20
20
  }
21
21
  }, []);
22
-
22
+
23
23
  // Update the document theme attribute when colorMode changes
24
24
  useEffect(() => {
25
25
  document.documentElement.setAttribute('data-atomix-theme', colorMode);
26
26
  localStorage.setItem('atomix-color-mode', colorMode);
27
27
  }, [colorMode]);
28
-
28
+
29
29
  // Listen for system color scheme changes
30
30
  useEffect(() => {
31
31
  const darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
32
-
32
+
33
33
  const handleSystemThemeChange = (event: MediaQueryListEvent) => {
34
34
  // Only update if user hasn't explicitly set a preference
35
35
  if (!localStorage.getItem('atomix-color-mode')) {
36
36
  setColorMode(event.matches ? 'dark' : 'light');
37
37
  }
38
38
  };
39
-
39
+
40
40
  // Add event listener for system theme changes
41
41
  if (darkModeMediaQuery.addEventListener) {
42
42
  darkModeMediaQuery.addEventListener('change', handleSystemThemeChange);
@@ -44,7 +44,7 @@ export const ColorModeToggle: React.FC<ColorModeToggleProps> = ({ className = ''
44
44
  // Fallback for older browsers
45
45
  darkModeMediaQuery.addListener(handleSystemThemeChange);
46
46
  }
47
-
47
+
48
48
  // Clean up event listener
49
49
  return () => {
50
50
  if (darkModeMediaQuery.removeEventListener) {
@@ -55,13 +55,13 @@ export const ColorModeToggle: React.FC<ColorModeToggleProps> = ({ className = ''
55
55
  }
56
56
  };
57
57
  }, []);
58
-
58
+
59
59
  const toggleColorMode = () => {
60
- setColorMode(prevMode => prevMode === 'light' ? 'dark' : 'light');
60
+ setColorMode(prevMode => (prevMode === 'light' ? 'dark' : 'light'));
61
61
  };
62
-
62
+
63
63
  return (
64
- <button
64
+ <button
65
65
  className={`c-color-mode-toggle ${className}`}
66
66
  onClick={toggleColorMode}
67
67
  aria-label={`Switch to ${colorMode === 'light' ? 'dark' : 'light'} mode`}
@@ -78,11 +78,8 @@ export const ColorModeToggle: React.FC<ColorModeToggleProps> = ({ className = ''
78
78
  )}
79
79
  </button>
80
80
  );
81
- };
82
-
81
+ };
83
82
 
84
83
  ColorModeToggle.displayName = 'ColorModeToggle';
85
84
 
86
85
  export default ColorModeToggle;
87
-
88
-
@@ -1,2 +1,2 @@
1
1
  export { default as ColorModeToggle } from './ColorModeToggle';
2
- export type { ColorModeToggleProps } from './ColorModeToggle';
2
+ export type { ColorModeToggleProps } from './ColorModeToggle';
@@ -10,7 +10,11 @@ const meta = {
10
10
  tags: ['autodocs'],
11
11
  argTypes: {
12
12
  target: { control: 'date', description: 'Target date/time' },
13
- show: { control: 'check', options: ['days', 'hours', 'minutes', 'seconds'], description: 'Fields to show' },
13
+ show: {
14
+ control: 'check',
15
+ options: ['days', 'hours', 'minutes', 'seconds'],
16
+ description: 'Fields to show',
17
+ },
14
18
  separator: { control: 'text', description: 'Separator string' },
15
19
  focused: { control: 'boolean', description: 'Focused style' },
16
20
  },
@@ -40,4 +44,4 @@ export const CustomSeparator: Story = {
40
44
  separator: ' | ',
41
45
  show: ['hours', 'minutes', 'seconds'],
42
46
  },
43
- };
47
+ };
@@ -24,59 +24,67 @@ function getTimeParts(diff: number) {
24
24
  return { days, hours, minutes, seconds };
25
25
  }
26
26
 
27
- export const Countdown: React.FC<CountdownProps> = forwardRef<HTMLDivElement, CountdownProps>(({
28
- target,
29
- show = ['days', 'hours', 'minutes', 'seconds'],
30
- separator = ':',
31
- focused = false,
32
- className = '',
33
- onComplete,
34
- }, ref) => {
35
- const targetDate = typeof target === 'string' ? new Date(target) : target;
36
- const [now, setNow] = useState(() => new Date());
37
- const [completed, setCompleted] = useState(false);
27
+ export const Countdown: React.FC<CountdownProps> = forwardRef<HTMLDivElement, CountdownProps>(
28
+ (
29
+ {
30
+ target,
31
+ show = ['days', 'hours', 'minutes', 'seconds'],
32
+ separator = ':',
33
+ focused = false,
34
+ className = '',
35
+ onComplete,
36
+ },
37
+ ref
38
+ ) => {
39
+ const targetDate = typeof target === 'string' ? new Date(target) : target;
40
+ const [now, setNow] = useState(() => new Date());
41
+ const [completed, setCompleted] = useState(false);
38
42
 
39
- useEffect(() => {
40
- if (completed) return undefined;
41
- const interval = setInterval(() => {
42
- setNow(new Date());
43
- }, 1000);
44
- return () => clearInterval(interval);
45
- }, [completed]);
43
+ useEffect(() => {
44
+ if (completed) return undefined;
45
+ const interval = setInterval(() => {
46
+ setNow(new Date());
47
+ }, 1000);
48
+ return () => clearInterval(interval);
49
+ }, [completed]);
46
50
 
47
- const diff = targetDate.getTime() - now.getTime();
48
- const { days, hours, minutes, seconds } = getTimeParts(diff);
51
+ const diff = targetDate.getTime() - now.getTime();
52
+ const { days, hours, minutes, seconds } = getTimeParts(diff);
49
53
 
50
- useEffect(() => {
51
- if (diff <= 0 && !completed) {
52
- setCompleted(true);
53
- if (onComplete) onComplete();
54
- }
55
- }, [diff, completed, onComplete]);
54
+ useEffect(() => {
55
+ if (diff <= 0 && !completed) {
56
+ setCompleted(true);
57
+ if (onComplete) onComplete();
58
+ }
59
+ }, [diff, completed, onComplete]);
56
60
 
57
- const timeParts = [];
58
- if (show.includes('days')) timeParts.push({ label: 'Days', value: days });
59
- if (show.includes('hours')) timeParts.push({ label: 'Hours', value: hours });
60
- if (show.includes('minutes')) timeParts.push({ label: 'Minutes', value: minutes });
61
- if (show.includes('seconds')) timeParts.push({ label: 'Seconds', value: seconds });
61
+ const timeParts = [];
62
+ if (show.includes('days')) timeParts.push({ label: 'Days', value: days });
63
+ if (show.includes('hours')) timeParts.push({ label: 'Hours', value: hours });
64
+ if (show.includes('minutes')) timeParts.push({ label: 'Minutes', value: minutes });
65
+ if (show.includes('seconds')) timeParts.push({ label: 'Seconds', value: seconds });
62
66
 
63
- return (
64
- <div ref={ref} className={`c-countdown${focused ? ' c-countdown--focused' : ''} ${className}`.trim()}>
65
- {timeParts.map((part, idx) => (
66
- <React.Fragment key={part.label}>
67
- <div className="c-countdown__time">
68
- <span className="c-countdown__time-count">{String(part.value).padStart(2, '0')}</span>
69
- <span className="c-countdown__time-label">{part.label}</span>
70
- </div>
71
- {idx < timeParts.length - 1 && (
72
- <span className="c-countdown__separator">{separator}</span>
73
- )}
74
- </React.Fragment>
75
- ))}
76
- </div>
77
- );
78
- });
67
+ return (
68
+ <div
69
+ ref={ref}
70
+ className={`c-countdown${focused ? ' c-countdown--focused' : ''} ${className}`.trim()}
71
+ >
72
+ {timeParts.map((part, idx) => (
73
+ <React.Fragment key={part.label}>
74
+ <div className="c-countdown__time">
75
+ <span className="c-countdown__time-count">{String(part.value).padStart(2, '0')}</span>
76
+ <span className="c-countdown__time-label">{part.label}</span>
77
+ </div>
78
+ {idx < timeParts.length - 1 && (
79
+ <span className="c-countdown__separator">{separator}</span>
80
+ )}
81
+ </React.Fragment>
82
+ ))}
83
+ </div>
84
+ );
85
+ }
86
+ );
79
87
 
80
88
  Countdown.displayName = 'Countdown';
81
89
 
82
- export default Countdown;
90
+ export default Countdown;
@@ -1,2 +1,2 @@
1
1
  export { Countdown } from './Countdown';
2
- export type { CountdownProps } from './Countdown';
2
+ export type { CountdownProps } from './Countdown';