@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
@@ -0,0 +1,618 @@
1
+ import React from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
4
+ import { SideMenu } from './SideMenu';
5
+ import { SideMenuList } from './SideMenuList';
6
+ import { SideMenuItem } from './SideMenuItem';
7
+ import { Icon } from '../../Icon';
8
+
9
+ const meta = {
10
+ title: 'Components/Navigation/SideMenu',
11
+ component: SideMenu,
12
+ parameters: {
13
+ layout: 'centered',
14
+ docs: {
15
+ description: {
16
+ component: `
17
+ The SideMenu component provides a collapsible navigation menu with title and menu items. It automatically collapses on mobile devices and can be toggled via a header button. The component follows the Atomix design system guidelines and includes both React and vanilla JavaScript implementations.
18
+
19
+ ## Features
20
+
21
+ - **Responsive Design**: Automatically collapses on mobile devices
22
+ - **Collapsible**: Can be toggled open/closed with smooth animations
23
+ - **Accessibility**: Full keyboard navigation and screen reader support
24
+ - **Active States**: Support for active menu items
25
+ - **Icon Support**: Menu items can include Phosphor icons
26
+ - **Vanilla JS Support**: Complete vanilla JavaScript implementation available
27
+
28
+ ## Usage
29
+
30
+ ### Basic SideMenu
31
+ \`\`\`tsx
32
+ <SideMenu title="Navigation">
33
+ <SideMenuList>
34
+ <SideMenuItem href="/" active>Home</SideMenuItem>
35
+ <SideMenuItem href="/about">About</SideMenuItem>
36
+ <SideMenuItem href="/contact">Contact</SideMenuItem>
37
+ </SideMenuList>
38
+ </SideMenu>
39
+ \`\`\`
40
+
41
+ ### With Icons
42
+ \`\`\`tsx
43
+ <SideMenu title="Navigation">
44
+ <SideMenuList>
45
+ <SideMenuItem href="/" icon={<Icon name="House" />} active>
46
+ Home
47
+ </SideMenuItem>
48
+ <SideMenuItem href="/about" icon={<Icon name="Info" />}>
49
+ About
50
+ </SideMenuItem>
51
+ </SideMenuList>
52
+ </SideMenu>
53
+ \`\`\`
54
+
55
+ ### Vanilla JavaScript
56
+ \`\`\`html
57
+ <div class="c-side-menu" data-side-menu data-collapsible="true">
58
+ <div class="c-side-menu__toggler">
59
+ <span class="c-side-menu__title">Navigation</span>
60
+ <span class="c-side-menu__toggler-icon">▶</span>
61
+ </div>
62
+ <div class="c-side-menu__wrapper">
63
+ <div class="c-side-menu__inner">
64
+ <ul class="c-side-menu__list">
65
+ <li class="c-side-menu__item">
66
+ <a href="/" class="c-side-menu__link is-active">Home</a>
67
+ </li>
68
+ <li class="c-side-menu__item">
69
+ <a href="/about" class="c-side-menu__link">About</a>
70
+ </li>
71
+ </ul>
72
+ </div>
73
+ </div>
74
+ </div>
75
+ \`\`\`
76
+ `,
77
+ },
78
+ },
79
+ },
80
+ tags: ['autodocs'],
81
+ argTypes: {
82
+ title: {
83
+ control: 'text',
84
+ description: 'Menu title displayed at the top',
85
+ table: {
86
+ type: { summary: 'ReactNode' },
87
+ defaultValue: { summary: 'undefined' },
88
+ },
89
+ },
90
+ isOpen: {
91
+ control: 'boolean',
92
+ description: 'Whether the menu is open (for controlled component)',
93
+ table: {
94
+ type: { summary: 'boolean' },
95
+ defaultValue: { summary: 'undefined' },
96
+ },
97
+ },
98
+ collapsible: {
99
+ control: 'boolean',
100
+ description: 'Whether the menu is collapsible on mobile',
101
+ table: {
102
+ type: { summary: 'boolean' },
103
+ defaultValue: { summary: 'true' },
104
+ },
105
+ },
106
+ disabled: {
107
+ control: 'boolean',
108
+ description: 'Whether the menu is disabled',
109
+ table: {
110
+ type: { summary: 'boolean' },
111
+ defaultValue: { summary: 'false' },
112
+ },
113
+ },
114
+ onToggle: {
115
+ action: 'toggled',
116
+ description: 'Callback when menu open state changes',
117
+ table: {
118
+ type: { summary: '(isOpen: boolean) => void' },
119
+ defaultValue: { summary: 'undefined' },
120
+ },
121
+ },
122
+ },
123
+ args: {
124
+ onToggle: fn(),
125
+ },
126
+ } satisfies Meta<typeof SideMenu>;
127
+
128
+ export default meta;
129
+ type Story = StoryObj<typeof SideMenu>;
130
+
131
+ // Default SideMenu
132
+ export const Default: Story = {
133
+ args: {
134
+ title: 'Navigation',
135
+ children: (
136
+ <SideMenuList>
137
+ <SideMenuItem href="/" active>
138
+ Home
139
+ </SideMenuItem>
140
+ <SideMenuItem href="/about">About</SideMenuItem>
141
+ <SideMenuItem href="/services">Services</SideMenuItem>
142
+ <SideMenuItem href="/contact">Contact</SideMenuItem>
143
+ </SideMenuList>
144
+ ),
145
+ collapsible: true,
146
+ onToggle: fn(),
147
+ },
148
+ };
149
+
150
+ // With Icons
151
+ export const WithIcons: Story = {
152
+ args: {
153
+ title: 'Main Menu',
154
+ children: (
155
+ <SideMenuList>
156
+ <SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
157
+ Home
158
+ </SideMenuItem>
159
+ <SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
160
+ About
161
+ </SideMenuItem>
162
+ <SideMenuItem href="/services" icon={<Icon name="Gear" size="sm" />}>
163
+ Services
164
+ </SideMenuItem>
165
+ <SideMenuItem href="/portfolio" icon={<Icon name="Briefcase" size="sm" />}>
166
+ Portfolio
167
+ </SideMenuItem>
168
+ <SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
169
+ Contact
170
+ </SideMenuItem>
171
+ </SideMenuList>
172
+ ),
173
+ collapsible: true,
174
+ onToggle: fn(),
175
+ },
176
+ };
177
+
178
+ // Multiple Lists
179
+ export const MultipleLists: Story = {
180
+ args: {
181
+ title: 'Dashboard',
182
+ children: (
183
+ <>
184
+ <SideMenuList>
185
+ <SideMenuItem href="/dashboard" icon={<Icon name="ChartBar" size="sm" />} active>
186
+ Dashboard
187
+ </SideMenuItem>
188
+ <SideMenuItem href="/analytics" icon={<Icon name="TrendUp" size="sm" />}>
189
+ Analytics
190
+ </SideMenuItem>
191
+ <SideMenuItem href="/reports" icon={<Icon name="FileText" size="sm" />}>
192
+ Reports
193
+ </SideMenuItem>
194
+ </SideMenuList>
195
+
196
+ <SideMenuList>
197
+ <SideMenuItem href="/users" icon={<Icon name="Users" size="sm" />}>
198
+ Users
199
+ </SideMenuItem>
200
+ <SideMenuItem href="/settings" icon={<Icon name="Gear" size="sm" />}>
201
+ Settings
202
+ </SideMenuItem>
203
+ <SideMenuItem href="/help" icon={<Icon name="Question" size="sm" />}>
204
+ Help
205
+ </SideMenuItem>
206
+ </SideMenuList>
207
+ </>
208
+ ),
209
+ collapsible: true,
210
+ onToggle: fn(),
211
+ },
212
+ };
213
+
214
+ // With Disabled Items
215
+ export const WithDisabledItems: Story = {
216
+ args: {
217
+ title: 'Navigation',
218
+ children: (
219
+ <SideMenuList>
220
+ <SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
221
+ Home
222
+ </SideMenuItem>
223
+ <SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
224
+ About
225
+ </SideMenuItem>
226
+ <SideMenuItem href="/services" icon={<Icon name="Gear" size="sm" />} disabled>
227
+ Services (Coming Soon)
228
+ </SideMenuItem>
229
+ <SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
230
+ Contact
231
+ </SideMenuItem>
232
+ </SideMenuList>
233
+ ),
234
+ collapsible: true,
235
+ onToggle: fn(),
236
+ },
237
+ };
238
+
239
+ // Non-Collapsible
240
+ export const NonCollapsible: Story = {
241
+ args: {
242
+ title: 'Quick Links',
243
+ children: (
244
+ <SideMenuList>
245
+ <SideMenuItem href="/dashboard" icon={<Icon name="ChartBar" size="sm" />} active>
246
+ Dashboard
247
+ </SideMenuItem>
248
+ <SideMenuItem href="/profile" icon={<Icon name="User" size="sm" />}>
249
+ Profile
250
+ </SideMenuItem>
251
+ <SideMenuItem href="/settings" icon={<Icon name="Gear" size="sm" />}>
252
+ Settings
253
+ </SideMenuItem>
254
+ <SideMenuItem href="/logout" icon={<Icon name="SignOut" size="sm" />}>
255
+ Logout
256
+ </SideMenuItem>
257
+ </SideMenuList>
258
+ ),
259
+ collapsible: false,
260
+ onToggle: fn(),
261
+ },
262
+ };
263
+
264
+ // Controlled Component
265
+ export const Controlled: Story = {
266
+ render: args => {
267
+ const [isOpen, setIsOpen] = React.useState(false);
268
+
269
+ const handleToggle = (newIsOpen: boolean) => {
270
+ setIsOpen(newIsOpen);
271
+ args.onToggle?.(newIsOpen);
272
+ };
273
+
274
+ return (
275
+ <div>
276
+ <button onClick={() => handleToggle(!isOpen)} style={{ marginBottom: '1rem' }}>
277
+ Toggle Menu (Currently: {isOpen ? 'Open' : 'Closed'})
278
+ </button>
279
+
280
+ <SideMenu
281
+ {...args}
282
+ title="Controlled Menu"
283
+ isOpen={isOpen}
284
+ onToggle={handleToggle}
285
+ collapsible
286
+ >
287
+ <SideMenuList>
288
+ <SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
289
+ Home
290
+ </SideMenuItem>
291
+ <SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
292
+ About
293
+ </SideMenuItem>
294
+ <SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
295
+ Contact
296
+ </SideMenuItem>
297
+ </SideMenuList>
298
+ </SideMenu>
299
+ </div>
300
+ );
301
+ },
302
+ args: {
303
+ onToggle: fn(),
304
+ },
305
+ };
306
+
307
+ // Button Items (No href)
308
+ export const ButtonItems: Story = {
309
+ args: {
310
+ title: 'Actions',
311
+ children: (
312
+ <SideMenuList>
313
+ <SideMenuItem onClick={fn()} icon={<Icon name="ChartBar" size="sm" />} active>
314
+ Dashboard
315
+ </SideMenuItem>
316
+ <SideMenuItem onClick={fn()} icon={<Icon name="Plus" size="sm" />}>
317
+ Create New
318
+ </SideMenuItem>
319
+ <SideMenuItem onClick={fn()} icon={<Icon name="Export" size="sm" />}>
320
+ Export Data
321
+ </SideMenuItem>
322
+ <SideMenuItem onClick={fn()} icon={<Icon name="Gear" size="sm" />}>
323
+ Settings
324
+ </SideMenuItem>
325
+ </SideMenuList>
326
+ ),
327
+ collapsible: true,
328
+ onToggle: fn(),
329
+ },
330
+ };
331
+
332
+ // Custom Toggle Icon
333
+ export const CustomToggleIcon: Story = {
334
+ args: {
335
+ title: 'Custom Menu',
336
+ toggleIcon: <Icon name="CaretDown" size="xs" />,
337
+ children: (
338
+ <SideMenuList>
339
+ <SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
340
+ Home
341
+ </SideMenuItem>
342
+ <SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
343
+ About
344
+ </SideMenuItem>
345
+ <SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
346
+ Contact
347
+ </SideMenuItem>
348
+ </SideMenuList>
349
+ ),
350
+ collapsible: true,
351
+ onToggle: fn(),
352
+ },
353
+ };
354
+
355
+ // Disabled Menu
356
+ export const DisabledMenu: Story = {
357
+ args: {
358
+ title: 'Disabled Menu',
359
+ disabled: true,
360
+ children: (
361
+ <SideMenuList>
362
+ <SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
363
+ Home
364
+ </SideMenuItem>
365
+ <SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
366
+ About
367
+ </SideMenuItem>
368
+ <SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
369
+ Contact
370
+ </SideMenuItem>
371
+ </SideMenuList>
372
+ ),
373
+ collapsible: true,
374
+ onToggle: fn(),
375
+ },
376
+ };
377
+
378
+ // Complex Navigation
379
+ export const ComplexNavigation: Story = {
380
+ args: {
381
+ title: 'Admin Panel',
382
+ children: (
383
+ <>
384
+ <SideMenuList>
385
+ <SideMenuItem href="/dashboard" icon={<Icon name="ChartBar" size="sm" />} active>
386
+ Dashboard
387
+ </SideMenuItem>
388
+ </SideMenuList>
389
+
390
+ <SideMenuList>
391
+ <SideMenuItem href="/users" icon={<Icon name="Users" size="sm" />}>
392
+ User Management
393
+ </SideMenuItem>
394
+ <SideMenuItem href="/roles" icon={<Icon name="Shield" size="sm" />}>
395
+ Roles & Permissions
396
+ </SideMenuItem>
397
+ <SideMenuItem href="/audit" icon={<Icon name="FileText" size="sm" />}>
398
+ Audit Logs
399
+ </SideMenuItem>
400
+ </SideMenuList>
401
+
402
+ <SideMenuList>
403
+ <SideMenuItem href="/content" icon={<Icon name="Article" size="sm" />}>
404
+ Content Management
405
+ </SideMenuItem>
406
+ <SideMenuItem href="/media" icon={<Icon name="Image" size="sm" />}>
407
+ Media Library
408
+ </SideMenuItem>
409
+ <SideMenuItem href="/seo" icon={<Icon name="MagnifyingGlass" size="sm" />}>
410
+ SEO Settings
411
+ </SideMenuItem>
412
+ </SideMenuList>
413
+
414
+ <SideMenuList>
415
+ <SideMenuItem href="/analytics" icon={<Icon name="TrendUp" size="sm" />}>
416
+ Analytics
417
+ </SideMenuItem>
418
+ <SideMenuItem href="/reports" icon={<Icon name="ChartBar" size="sm" />}>
419
+ Reports
420
+ </SideMenuItem>
421
+ <SideMenuItem href="/exports" icon={<Icon name="Export" size="sm" />}>
422
+ Data Exports
423
+ </SideMenuItem>
424
+ </SideMenuList>
425
+
426
+ <SideMenuList>
427
+ <SideMenuItem href="/settings" icon={<Icon name="Gear" size="sm" />}>
428
+ System Settings
429
+ </SideMenuItem>
430
+ <SideMenuItem href="/integrations" icon={<Icon name="Plugs" size="sm" />}>
431
+ Integrations
432
+ </SideMenuItem>
433
+ <SideMenuItem href="/backup" icon={<Icon name="Database" size="sm" />}>
434
+ Backup & Restore
435
+ </SideMenuItem>
436
+ </SideMenuList>
437
+ </>
438
+ ),
439
+ collapsible: true,
440
+ onToggle: fn(),
441
+ },
442
+ };
443
+
444
+ // Responsive Demo
445
+ export const ResponsiveDemo: Story = {
446
+ render: args => (
447
+ <div style={{ maxWidth: '300px' }}>
448
+ <p style={{ marginBottom: '1rem', fontSize: '0.875rem', color: '#666' }}>
449
+ Resize your browser window to see the responsive behavior. On mobile (less than 768px), the
450
+ menu becomes collapsible.
451
+ </p>
452
+
453
+ <SideMenu {...args} title="Responsive Menu" collapsible>
454
+ <SideMenuList>
455
+ <SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
456
+ Home
457
+ </SideMenuItem>
458
+ <SideMenuItem href="/products" icon={<Icon name="Package" size="sm" />}>
459
+ Products
460
+ </SideMenuItem>
461
+ <SideMenuItem href="/services" icon={<Icon name="Gear" size="sm" />}>
462
+ Services
463
+ </SideMenuItem>
464
+ <SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
465
+ About Us
466
+ </SideMenuItem>
467
+ <SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
468
+ Contact
469
+ </SideMenuItem>
470
+ </SideMenuList>
471
+
472
+ <SideMenuList>
473
+ <SideMenuItem href="/account" icon={<Icon name="User" size="sm" />}>
474
+ My Account
475
+ </SideMenuItem>
476
+ <SideMenuItem href="/orders" icon={<Icon name="FileText" size="sm" />}>
477
+ Order History
478
+ </SideMenuItem>
479
+ <SideMenuItem href="/support" icon={<Icon name="Question" size="sm" />}>
480
+ Support
481
+ </SideMenuItem>
482
+ </SideMenuList>
483
+ </SideMenu>
484
+ </div>
485
+ ),
486
+ args: {
487
+ onToggle: fn(),
488
+ },
489
+ };
490
+
491
+ // E-commerce Navigation Example
492
+ export const EcommerceNavigation: Story = {
493
+ args: {
494
+ title: 'Shop Categories',
495
+ children: (
496
+ <>
497
+ <SideMenuList>
498
+ <SideMenuItem href="/electronics" icon={<Icon name="DeviceMobile" size="sm" />} active>
499
+ Electronics
500
+ </SideMenuItem>
501
+ <SideMenuItem href="/clothing" icon={<Icon name="TShirt" size="sm" />}>
502
+ Clothing
503
+ </SideMenuItem>
504
+ <SideMenuItem href="/home-garden" icon={<Icon name="House" size="sm" />}>
505
+ Home & Garden
506
+ </SideMenuItem>
507
+ <SideMenuItem href="/sports" icon={<Icon name="Basketball" size="sm" />}>
508
+ Sports & Outdoors
509
+ </SideMenuItem>
510
+ </SideMenuList>
511
+
512
+ <SideMenuList>
513
+ <SideMenuItem href="/account" icon={<Icon name="User" size="sm" />}>
514
+ My Account
515
+ </SideMenuItem>
516
+ <SideMenuItem href="/orders" icon={<Icon name="Package" size="sm" />}>
517
+ Order History
518
+ </SideMenuItem>
519
+ <SideMenuItem href="/wishlist" icon={<Icon name="Heart" size="sm" />}>
520
+ Wishlist
521
+ </SideMenuItem>
522
+ <SideMenuItem href="/cart" icon={<Icon name="ShoppingCart" size="sm" />}>
523
+ Shopping Cart
524
+ </SideMenuItem>
525
+ </SideMenuList>
526
+ </>
527
+ ),
528
+ collapsible: true,
529
+ onToggle: fn(),
530
+ },
531
+ };
532
+
533
+ // Interactive Demo with Actions
534
+ export const InteractiveDemo: Story = {
535
+ render: args => {
536
+ const [activeItem, setActiveItem] = React.useState('/dashboard');
537
+ const [isOpen, setIsOpen] = React.useState(false);
538
+
539
+ const handleToggle = (newIsOpen: boolean) => {
540
+ setIsOpen(newIsOpen);
541
+ args.onToggle?.(newIsOpen);
542
+ };
543
+
544
+ const handleItemClick = (href: string) => {
545
+ setActiveItem(href);
546
+ // Simulate navigation action
547
+ args.onToggle?.(false); // Close menu on mobile after selection
548
+ };
549
+
550
+ return (
551
+ <div>
552
+ <div
553
+ style={{
554
+ marginBottom: '1rem',
555
+ padding: '0.5rem',
556
+ backgroundColor: '#f5f5f5',
557
+ borderRadius: '4px',
558
+ }}
559
+ >
560
+ <strong>Current Page:</strong> {activeItem} | <strong>Menu:</strong>{' '}
561
+ {isOpen ? 'Open' : 'Closed'}
562
+ </div>
563
+
564
+ <SideMenu
565
+ {...args}
566
+ title="Interactive Menu"
567
+ isOpen={isOpen}
568
+ onToggle={handleToggle}
569
+ collapsible
570
+ >
571
+ <SideMenuList>
572
+ <SideMenuItem
573
+ href="/dashboard"
574
+ icon={<Icon name="ChartBar" size="sm" />}
575
+ active={activeItem === '/dashboard'}
576
+ onClick={() => handleItemClick('/dashboard')}
577
+ >
578
+ Dashboard
579
+ </SideMenuItem>
580
+ <SideMenuItem
581
+ href="/analytics"
582
+ icon={<Icon name="TrendUp" size="sm" />}
583
+ active={activeItem === '/analytics'}
584
+ onClick={() => handleItemClick('/analytics')}
585
+ >
586
+ Analytics
587
+ </SideMenuItem>
588
+ <SideMenuItem
589
+ href="/users"
590
+ icon={<Icon name="Users" size="sm" />}
591
+ active={activeItem === '/users'}
592
+ onClick={() => handleItemClick('/users')}
593
+ >
594
+ Users
595
+ </SideMenuItem>
596
+ </SideMenuList>
597
+
598
+ <SideMenuList>
599
+ <SideMenuItem
600
+ href="/settings"
601
+ icon={<Icon name="Gear" size="sm" />}
602
+ active={activeItem === '/settings'}
603
+ onClick={() => handleItemClick('/settings')}
604
+ >
605
+ Settings
606
+ </SideMenuItem>
607
+ <SideMenuItem onClick={fn()} icon={<Icon name="SignOut" size="sm" />}>
608
+ Logout
609
+ </SideMenuItem>
610
+ </SideMenuList>
611
+ </SideMenu>
612
+ </div>
613
+ );
614
+ },
615
+ args: {
616
+ onToggle: fn(),
617
+ },
618
+ };