@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,17 +6,17 @@ export interface TabItemProps {
6
6
  * Label for the tab
7
7
  */
8
8
  label: string;
9
-
9
+
10
10
  /**
11
11
  * Content of the tab panel
12
12
  */
13
13
  content: ReactNode;
14
-
14
+
15
15
  /**
16
16
  * Whether the tab is initially active
17
17
  */
18
18
  isActive?: boolean;
19
-
19
+
20
20
  /**
21
21
  * Additional CSS class for the tab
22
22
  */
@@ -28,17 +28,17 @@ export interface TabProps {
28
28
  * Array of tab items
29
29
  */
30
30
  items: TabItemProps[];
31
-
31
+
32
32
  /**
33
33
  * Initial active tab index
34
34
  */
35
35
  activeIndex?: number;
36
-
36
+
37
37
  /**
38
38
  * Callback when tab changes
39
39
  */
40
40
  onTabChange?: (index: number) => void;
41
-
41
+
42
42
  /**
43
43
  * Additional CSS class for the tab component
44
44
  */
@@ -57,7 +57,7 @@ export const Tab: React.FC<TabProps> = ({
57
57
  const [currentTab, setCurrentTab] = useState(activeIndex);
58
58
  const tabRef = useRef<HTMLDivElement>(null);
59
59
  const tabInstance = useRef<any>(null);
60
-
60
+
61
61
  // Handle tab instance initialization and cleanup
62
62
  useEffect(() => {
63
63
  // Only run on client-side
@@ -69,7 +69,7 @@ export const Tab: React.FC<TabProps> = ({
69
69
  tabInstance.current = new TabClass(tabRef.current);
70
70
  }
71
71
  });
72
-
72
+
73
73
  // Cleanup on unmount
74
74
  return () => {
75
75
  if (tabInstance.current) {
@@ -77,7 +77,7 @@ export const Tab: React.FC<TabProps> = ({
77
77
  }
78
78
  };
79
79
  }, []);
80
-
80
+
81
81
  // Handle tab change
82
82
  const handleTabClick = (index: number) => {
83
83
  setCurrentTab(index);
@@ -85,13 +85,13 @@ export const Tab: React.FC<TabProps> = ({
85
85
  onTabChange(index);
86
86
  }
87
87
  };
88
-
88
+
89
89
  return (
90
90
  <div className={`c-tabs js-atomix-tab ${className}`} ref={tabRef}>
91
91
  <ul className="c-tabs__nav">
92
92
  {items.map((item, index) => (
93
93
  <li className="c-tabs__nav-item" key={`tab-nav-${index}`}>
94
- <button
94
+ <button
95
95
  className={`c-tabs__nav-btn ${index === currentTab ? TAB.CLASSES.ACTIVE : ''}`}
96
96
  onClick={() => handleTabClick(index)}
97
97
  data-tabindex={index}
@@ -106,29 +106,27 @@ export const Tab: React.FC<TabProps> = ({
106
106
  </ul>
107
107
  <div className="c-tabs__panels">
108
108
  {items.map((item, index) => (
109
- <div
109
+ <div
110
110
  className={`c-tabs__panel ${index === currentTab ? TAB.CLASSES.ACTIVE : ''}`}
111
111
  key={`tab-panel-${index}`}
112
112
  data-tabindex={index}
113
113
  id={`tab-panel-${index}`}
114
114
  role="tabpanel"
115
115
  aria-labelledby={`tab-nav-${index}`}
116
- style={{
116
+ style={{
117
117
  height: index === currentTab ? 'auto' : '0px',
118
118
  opacity: index === currentTab ? 1 : 0,
119
119
  overflow: 'hidden',
120
- transition: 'height 0.3s ease, opacity 0.3s ease'
120
+ transition: 'height 0.3s ease, opacity 0.3s ease',
121
121
  }}
122
122
  >
123
- <div className="c-tabs__panel-body">
124
- {item.content}
125
- </div>
123
+ <div className="c-tabs__panel-body">{item.content}</div>
126
124
  </div>
127
125
  ))}
128
126
  </div>
129
127
  </div>
130
128
  );
131
- };
129
+ };
132
130
 
133
131
  Tab.displayName = 'Tab';
134
132
 
@@ -1,2 +1,2 @@
1
- export { Tab } from "./Tab";
2
- export type { TabProps, TabItemProps } from "./Tab";
1
+ export { Tab } from './Tab';
2
+ export type { TabProps, TabItemProps } from './Tab';
@@ -29,7 +29,7 @@ const DEFAULT_OPTIONS = {
29
29
  panels: TAB.SELECTORS.PANELS,
30
30
  panelBodys: TAB.SELECTORS.PANEL_BODIES,
31
31
  activeClass: TAB.CLASSES.ACTIVE,
32
- activeIndex: TAB.DEFAULTS.ACTIVE_INDEX
32
+ activeIndex: TAB.DEFAULTS.ACTIVE_INDEX,
33
33
  };
34
34
 
35
35
  /**
@@ -53,7 +53,7 @@ class Tab implements TabInstance {
53
53
  this.$element =
54
54
  typeof selector === 'string'
55
55
  ? document.querySelector<HTMLElement>(selector)
56
- : selector as HTMLElement;
56
+ : (selector as HTMLElement);
57
57
  this.options = { ...DEFAULT_OPTIONS, ...options } as TabOptions;
58
58
  this.$navItems = null;
59
59
  this.$panels = null;
@@ -77,7 +77,7 @@ class Tab implements TabInstance {
77
77
  */
78
78
  private _initializeElements(): void {
79
79
  if (!this.$element) return;
80
-
80
+
81
81
  this.$navItems = this.$element.querySelectorAll<HTMLElement>(this.options.navItems);
82
82
  this.$panels = this.$element.querySelectorAll<HTMLElement>(this.options.panels);
83
83
  this.$panelBodys = this.$element.querySelectorAll<HTMLElement>(this.options.panelBodys);
@@ -88,8 +88,8 @@ class Tab implements TabInstance {
88
88
  */
89
89
  private _bindEvents(): void {
90
90
  if (!this.$navItems) return;
91
-
92
- this.$navItems.forEach((item) => {
91
+
92
+ this.$navItems.forEach(item => {
93
93
  const btn = item.querySelector<HTMLElement>(this.options.navBtn);
94
94
  if (btn) {
95
95
  btn.addEventListener('click', () => this._handleTabClick(btn));
@@ -104,7 +104,7 @@ class Tab implements TabInstance {
104
104
  private _handleTabClick(btn: HTMLElement): void {
105
105
  const tabIndex = btn.dataset.tabindex;
106
106
  if (tabIndex === undefined) return;
107
-
107
+
108
108
  this._hideAllTabs();
109
109
  this._showTab(tabIndex);
110
110
  }
@@ -114,14 +114,14 @@ class Tab implements TabInstance {
114
114
  */
115
115
  private _hideAllTabs(): void {
116
116
  if (!this.$panels || !this.$navItems) return;
117
-
118
- this.$panels.forEach((panel) => {
117
+
118
+ this.$panels.forEach(panel => {
119
119
  panel.style.height = '0px';
120
120
  panel.classList.remove(this.options.activeClass);
121
121
  panel.style.opacity = '0';
122
122
  });
123
123
 
124
- this.$navItems.forEach((item) => {
124
+ this.$navItems.forEach(item => {
125
125
  const btn = item.querySelector<HTMLElement>(this.options.navBtn);
126
126
  if (btn) {
127
127
  btn.classList.remove(this.options.activeClass);
@@ -135,7 +135,7 @@ class Tab implements TabInstance {
135
135
  */
136
136
  private _showTab(index: number | string): void {
137
137
  if (!this.$panels || !this.$navItems || !this.$panelBodys) return;
138
-
138
+
139
139
  this.$panels.forEach((panel, pIndex) => {
140
140
  if (panel.dataset.tabindex == index.toString()) {
141
141
  const panelBody = this.$panelBodys?.[pIndex];
@@ -163,7 +163,7 @@ class Tab implements TabInstance {
163
163
  public destroy(): void {
164
164
  if (!this.$element || !this.$navItems) return;
165
165
 
166
- this.$navItems.forEach((item) => {
166
+ this.$navItems.forEach(item => {
167
167
  const btn = item.querySelector<HTMLElement>(this.options.navBtn);
168
168
  if (btn) {
169
169
  // Need to recreate the bound function to remove it correctly
@@ -185,7 +185,7 @@ export function initializeTabs(selector = TAB.SELECTORS.TAB, options = {}): TabI
185
185
 
186
186
  if (!tabElements.length) return tabInstances;
187
187
 
188
- tabElements.forEach((element) => {
188
+ tabElements.forEach(element => {
189
189
  try {
190
190
  const instance = new Tab(element, options);
191
191
  tabInstances.push(instance);
@@ -197,4 +197,4 @@ export function initializeTabs(selector = TAB.SELECTORS.TAB, options = {}): TabI
197
197
  return tabInstances;
198
198
  }
199
199
 
200
- export default Tab;
200
+ export default Tab;
@@ -18,7 +18,7 @@ export default {
18
18
  },
19
19
  } as Meta<typeof Testimonial>;
20
20
 
21
- const Template: StoryFn<typeof Testimonial> = (args) => (
21
+ const Template: StoryFn<typeof Testimonial> = args => (
22
22
  <div style={{ padding: '30px' }}>
23
23
  <Testimonial {...args} />
24
24
  </div>
@@ -27,12 +27,14 @@ const Template: StoryFn<typeof Testimonial> = (args) => (
27
27
  // Default testimonial
28
28
  export const Default = Template.bind({});
29
29
  Default.args = {
30
- quote: "The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before.",
30
+ quote:
31
+ 'The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before.',
31
32
  author: {
32
- name: "Emily Rodriguez",
33
- role: "Software Engineer, Acme",
34
- avatarSrc: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
35
- avatarAlt: "Emily Rodriguez"
33
+ name: 'Emily Rodriguez',
34
+ role: 'Software Engineer, Acme',
35
+ avatarSrc:
36
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
37
+ avatarAlt: 'Emily Rodriguez',
36
38
  },
37
39
  size: '',
38
40
  };
@@ -40,12 +42,14 @@ Default.args = {
40
42
  // Large testimonial
41
43
  export const Large = Template.bind({});
42
44
  Large.args = {
43
- quote: "The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before.",
45
+ quote:
46
+ 'The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before.',
44
47
  author: {
45
- name: "Emily Rodriguez",
46
- role: "Software Engineer, Acme",
47
- avatarSrc: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
48
- avatarAlt: "Emily Rodriguez"
48
+ name: 'Emily Rodriguez',
49
+ role: 'Software Engineer, Acme',
50
+ avatarSrc:
51
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
52
+ avatarAlt: 'Emily Rodriguez',
49
53
  },
50
54
  size: 'lg',
51
55
  };
@@ -53,12 +57,14 @@ Large.args = {
53
57
  // Small testimonial
54
58
  export const Small = Template.bind({});
55
59
  Small.args = {
56
- quote: "The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before.",
60
+ quote:
61
+ 'The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before.',
57
62
  author: {
58
- name: "Emily Rodriguez",
59
- role: "Software Engineer, Acme",
60
- avatarSrc: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
61
- avatarAlt: "Emily Rodriguez"
63
+ name: 'Emily Rodriguez',
64
+ role: 'Software Engineer, Acme',
65
+ avatarSrc:
66
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
67
+ avatarAlt: 'Emily Rodriguez',
62
68
  },
63
69
  size: 'sm',
64
70
  };
@@ -87,10 +93,11 @@ RichContent.args = {
87
93
  </>
88
94
  ),
89
95
  author: {
90
- name: "John Smith",
91
- role: "Product Manager, XYZ Corp",
92
- avatarSrc: "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3",
93
- avatarAlt: "John Smith"
96
+ name: 'John Smith',
97
+ role: 'Product Manager, XYZ Corp',
98
+ avatarSrc:
99
+ 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3',
100
+ avatarAlt: 'John Smith',
94
101
  },
95
102
  };
96
103
 
@@ -100,38 +107,41 @@ const TestimonialGrid: React.FC = () => {
100
107
  <div className="o-container">
101
108
  <div className="o-grid">
102
109
  <div className="o-grid__col o-grid__col--4">
103
- <Testimonial
110
+ <Testimonial
104
111
  size="sm"
105
112
  quote="The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before."
106
113
  author={{
107
- name: "Emily Rodriguez",
108
- role: "Software Engineer, Acme",
109
- avatarSrc: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
110
- avatarAlt: "Emily Rodriguez"
114
+ name: 'Emily Rodriguez',
115
+ role: 'Software Engineer, Acme',
116
+ avatarSrc:
117
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
118
+ avatarAlt: 'Emily Rodriguez',
111
119
  }}
112
120
  />
113
121
  </div>
114
122
  <div className="o-grid__col o-grid__col--4">
115
- <Testimonial
123
+ <Testimonial
116
124
  size="sm"
117
125
  quote="I feel more in charge of my schedule and less overwhelmed. Highly recommended for professionals and anyone aiming to enhance their productivity."
118
126
  author={{
119
- name: "John Smith",
120
- role: "Product Manager, XYZ Corp",
121
- avatarSrc: "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3",
122
- avatarAlt: "John Smith"
127
+ name: 'John Smith',
128
+ role: 'Product Manager, XYZ Corp',
129
+ avatarSrc:
130
+ 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3',
131
+ avatarAlt: 'John Smith',
123
132
  }}
124
133
  />
125
134
  </div>
126
135
  <div className="o-grid__col o-grid__col--4">
127
- <Testimonial
136
+ <Testimonial
128
137
  size="sm"
129
138
  quote="I've tried numerous productivity apps in the past, but this one truly stands out. It strikes the perfect balance between simplicity and functionality."
130
139
  author={{
131
- name: "Sarah Johnson",
132
- role: "Marketing Director, ABC Inc",
133
- avatarSrc: "https://images.unsplash.com/photo-1544005313-94ddf0286df2?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3",
134
- avatarAlt: "Sarah Johnson"
140
+ name: 'Sarah Johnson',
141
+ role: 'Marketing Director, ABC Inc',
142
+ avatarSrc:
143
+ 'https://images.unsplash.com/photo-1544005313-94ddf0286df2?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3',
144
+ avatarAlt: 'Sarah Johnson',
135
145
  }}
136
146
  />
137
147
  </div>
@@ -140,9 +150,7 @@ const TestimonialGrid: React.FC = () => {
140
150
  );
141
151
  };
142
152
 
143
- export const TestimonialGridLayout: StoryFn<typeof Testimonial> = () => (
144
- <TestimonialGrid />
145
- );
153
+ export const TestimonialGridLayout: StoryFn<typeof Testimonial> = () => <TestimonialGrid />;
146
154
 
147
155
  // Testimonial with image
148
156
  const TestimonialWithImage: React.FC = () => {
@@ -150,28 +158,23 @@ const TestimonialWithImage: React.FC = () => {
150
158
  <div className="o-container">
151
159
  <div className="o-grid u-align-items-center">
152
160
  <div className="o-grid__col o-grid__col--6">
153
- <Testimonial
161
+ <Testimonial
154
162
  quote="The intuitive interface, seamless syncing across devices, and helpful features have made me more productive than ever before."
155
163
  author={{
156
- name: "Emily Rodriguez",
157
- role: "Software Engineer, Acme",
158
- avatarSrc: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
159
- avatarAlt: "Emily Rodriguez"
164
+ name: 'Emily Rodriguez',
165
+ role: 'Software Engineer, Acme',
166
+ avatarSrc:
167
+ 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?q=80&w=3000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
168
+ avatarAlt: 'Emily Rodriguez',
160
169
  }}
161
170
  />
162
171
  </div>
163
172
  <div className="o-grid__col o-grid__col--6">
164
- <img
165
- src="https://unsplash.it/g/727/250"
166
- alt="Image"
167
- className="c-river__image"
168
- />
173
+ <img src="https://unsplash.it/g/727/250" alt="Image" className="c-river__image" />
169
174
  </div>
170
175
  </div>
171
176
  </div>
172
177
  );
173
178
  };
174
179
 
175
- export const WithImage: StoryFn<typeof Testimonial> = () => (
176
- <TestimonialWithImage />
177
- );
180
+ export const WithImage: StoryFn<typeof Testimonial> = () => <TestimonialWithImage />;
@@ -6,17 +6,17 @@ export interface TestimonialAuthor {
6
6
  * The author's name
7
7
  */
8
8
  name: string;
9
-
9
+
10
10
  /**
11
11
  * The author's role or title
12
12
  */
13
13
  role: string;
14
-
14
+
15
15
  /**
16
16
  * The URL to the author's avatar image
17
17
  */
18
18
  avatarSrc?: string;
19
-
19
+
20
20
  /**
21
21
  * Alternative text for the avatar image
22
22
  */
@@ -28,22 +28,22 @@ export interface TestimonialProps {
28
28
  * The testimonial quote text or content
29
29
  */
30
30
  quote: ReactNode;
31
-
31
+
32
32
  /**
33
33
  * Author information
34
34
  */
35
35
  author?: TestimonialAuthor;
36
-
36
+
37
37
  /**
38
38
  * Size variant
39
39
  */
40
40
  size?: 'sm' | 'lg' | '';
41
-
41
+
42
42
  /**
43
43
  * Whether to show a skeleton loading state
44
44
  */
45
45
  skeleton?: boolean;
46
-
46
+
47
47
  /**
48
48
  * Additional CSS class
49
49
  */
@@ -62,7 +62,7 @@ export const Testimonial: React.FC<TestimonialProps> = ({
62
62
  }) => {
63
63
  const testimonialRef = useRef<HTMLDivElement>(null);
64
64
  const testimonialInstance = useRef<any>(null);
65
-
65
+
66
66
  useEffect(() => {
67
67
  // Only run on client-side
68
68
  if (typeof window === 'undefined' || !testimonialRef.current) return undefined;
@@ -72,11 +72,11 @@ export const Testimonial: React.FC<TestimonialProps> = ({
72
72
  if (testimonialRef.current) {
73
73
  testimonialInstance.current = new TestimonialClass(testimonialRef.current, {
74
74
  size,
75
- skeleton
75
+ skeleton,
76
76
  });
77
77
  }
78
78
  });
79
-
79
+
80
80
  // Cleanup on unmount
81
81
  return () => {
82
82
  if (testimonialInstance.current) {
@@ -84,15 +84,17 @@ export const Testimonial: React.FC<TestimonialProps> = ({
84
84
  }
85
85
  };
86
86
  }, [size, skeleton]);
87
-
87
+
88
88
  // Determine CSS classes
89
89
  const testimonialClasses = [
90
90
  'c-testimonial',
91
91
  size === 'sm' ? TESTIMONIAL.CLASSES.SMALL : '',
92
92
  size === 'lg' ? TESTIMONIAL.CLASSES.LARGE : '',
93
- className
94
- ].filter(Boolean).join(' ');
95
-
93
+ className,
94
+ ]
95
+ .filter(Boolean)
96
+ .join(' ');
97
+
96
98
  // Render skeleton version
97
99
  if (skeleton) {
98
100
  return (
@@ -117,13 +119,11 @@ export const Testimonial: React.FC<TestimonialProps> = ({
117
119
  </div>
118
120
  );
119
121
  }
120
-
122
+
121
123
  // Render normal version
122
124
  return (
123
125
  <div className={testimonialClasses} ref={testimonialRef}>
124
- <blockquote className="c-testimonial__quote">
125
- {quote}
126
- </blockquote>
126
+ <blockquote className="c-testimonial__quote">{quote}</blockquote>
127
127
  {author && (
128
128
  <div className="c-testimonial__author">
129
129
  {author.avatarSrc && (
@@ -143,7 +143,6 @@ export const Testimonial: React.FC<TestimonialProps> = ({
143
143
  );
144
144
  };
145
145
 
146
-
147
146
  Testimonial.displayName = 'Testimonial';
148
147
 
149
148
  export default Testimonial;
@@ -1,3 +1,3 @@
1
1
  export { Testimonial } from './Testimonial';
2
2
  export type { TestimonialProps, TestimonialAuthor } from './Testimonial';
3
- export { default } from './Testimonial';
3
+ export { default } from './Testimonial';
@@ -21,7 +21,7 @@ interface TestimonialInstance {
21
21
  */
22
22
  const DEFAULT_OPTIONS: TestimonialOptions = {
23
23
  size: '',
24
- skeleton: false
24
+ skeleton: false,
25
25
  };
26
26
 
27
27
  /**
@@ -42,7 +42,7 @@ class Testimonial implements TestimonialInstance {
42
42
  this.$element =
43
43
  typeof selector === 'string'
44
44
  ? document.querySelector<HTMLElement>(selector)
45
- : selector as HTMLElement;
45
+ : (selector as HTMLElement);
46
46
  this.options = { ...DEFAULT_OPTIONS, ...options } as TestimonialOptions;
47
47
  this._initialize();
48
48
  }
@@ -54,9 +54,15 @@ class Testimonial implements TestimonialInstance {
54
54
  if (!this.$element) return;
55
55
 
56
56
  // Apply size classes if specified
57
- if (this.options.size === 'sm' && !this.$element.classList.contains(TESTIMONIAL.CLASSES.SMALL)) {
57
+ if (
58
+ this.options.size === 'sm' &&
59
+ !this.$element.classList.contains(TESTIMONIAL.CLASSES.SMALL)
60
+ ) {
58
61
  this.$element.classList.add(TESTIMONIAL.CLASSES.SMALL);
59
- } else if (this.options.size === 'lg' && !this.$element.classList.contains(TESTIMONIAL.CLASSES.LARGE)) {
62
+ } else if (
63
+ this.options.size === 'lg' &&
64
+ !this.$element.classList.contains(TESTIMONIAL.CLASSES.LARGE)
65
+ ) {
60
66
  this.$element.classList.add(TESTIMONIAL.CLASSES.LARGE);
61
67
  }
62
68
  }
@@ -75,13 +81,18 @@ class Testimonial implements TestimonialInstance {
75
81
  * @param {Object} options - Custom options to override defaults
76
82
  * @returns {TestimonialInstance[]} Array of Testimonial instances
77
83
  */
78
- export function initializeTestimonials(selector = TESTIMONIAL.SELECTORS.TESTIMONIAL, options = {}): TestimonialInstance[] {
84
+ export function initializeTestimonials(
85
+ selector = TESTIMONIAL.SELECTORS.TESTIMONIAL,
86
+ options = {}
87
+ ): TestimonialInstance[] {
79
88
  const testimonialInstances: TestimonialInstance[] = [];
80
- const testimonialElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : TESTIMONIAL.SELECTORS.TESTIMONIAL);
89
+ const testimonialElements = document.querySelectorAll<HTMLElement>(
90
+ typeof selector === 'string' ? selector : TESTIMONIAL.SELECTORS.TESTIMONIAL
91
+ );
81
92
 
82
93
  if (!testimonialElements.length) return testimonialInstances;
83
94
 
84
- testimonialElements.forEach((element) => {
95
+ testimonialElements.forEach(element => {
85
96
  try {
86
97
  const instance = new Testimonial(element, options);
87
98
  testimonialInstances.push(instance);
@@ -93,4 +104,4 @@ export function initializeTestimonials(selector = TESTIMONIAL.SELECTORS.TESTIMON
93
104
  return testimonialInstances;
94
105
  }
95
106
 
96
- export default Testimonial;
107
+ export default Testimonial;
@@ -72,7 +72,7 @@ export const Interactive: Story = {
72
72
  placeholder: 'Add a new todo',
73
73
  showCompleted: true,
74
74
  },
75
- render: (args) => {
75
+ render: args => {
76
76
  const [items, setItems] = useState<TodoItem[]>([
77
77
  { id: uuidv4(), text: 'Learn React', completed: true },
78
78
  { id: uuidv4(), text: 'Build a todo app', completed: false },
@@ -90,9 +90,7 @@ export const Interactive: Story = {
90
90
 
91
91
  const handleToggleTodo = (id: string) => {
92
92
  setItems(
93
- items.map(item =>
94
- item.id === id ? { ...item, completed: !item.completed } : item
95
- )
93
+ items.map(item => (item.id === id ? { ...item, completed: !item.completed } : item))
96
94
  );
97
95
  };
98
96
 
@@ -121,26 +119,11 @@ export const Sizes: Story = {
121
119
  items: sampleItems.slice(0, 3),
122
120
  showCompleted: true,
123
121
  },
124
- render: (args) => (
122
+ render: args => (
125
123
  <div className="u-d-flex u-flex-column u-gap-4">
126
- <Todo
127
- {...args}
128
- title="Small Todo List"
129
- items={args.items}
130
- size="sm"
131
- />
132
- <Todo
133
- {...args}
134
- title="Medium Todo List"
135
- items={args.items}
136
- size="md"
137
- />
138
- <Todo
139
- {...args}
140
- title="Large Todo List"
141
- items={args.items}
142
- size="lg"
143
- />
124
+ <Todo {...args} title="Small Todo List" items={args.items} size="sm" />
125
+ <Todo {...args} title="Medium Todo List" items={args.items} size="md" />
126
+ <Todo {...args} title="Large Todo List" items={args.items} size="lg" />
144
127
  </div>
145
128
  ),
146
129
  };
@@ -169,4 +152,4 @@ export const Disabled: Story = {
169
152
  items: sampleItems,
170
153
  disabled: true,
171
154
  },
172
- };
155
+ };