@shohojdhara/atomix 0.1.30 → 0.2.2

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 (481) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/LICENSE +0 -0
  3. package/README.md +128 -43
  4. package/dist/atomix.css +15025 -0
  5. package/dist/atomix.min.css +15 -0
  6. package/dist/index.d.ts +6459 -1748
  7. package/dist/index.esm.js +17559 -8364
  8. package/dist/index.esm.js.map +1 -1
  9. package/dist/index.js +17603 -8369
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.min.js +1 -1
  12. package/dist/index.min.js.map +1 -1
  13. package/dist/themes/boomdevs.css +14677 -0
  14. package/dist/themes/boomdevs.min.css +405 -0
  15. package/dist/themes/esrar.css +16870 -0
  16. package/dist/themes/esrar.min.css +189 -0
  17. package/dist/themes/mashroom.css +29578 -0
  18. package/dist/themes/mashroom.min.css +403 -0
  19. package/dist/themes/shaj-default.css +15702 -0
  20. package/dist/themes/shaj-default.min.css +500 -0
  21. package/dist/themes/yabai.css +15207 -0
  22. package/dist/themes/yabai.min.css +189 -0
  23. package/package.json +126 -99
  24. package/src/components/Accordion/Accordion.stories.tsx +271 -0
  25. package/src/components/Accordion/Accordion.tsx +131 -0
  26. package/src/components/Accordion/index.ts +3 -0
  27. package/src/components/AtomixLogo/AtomixLogo.tsx +36 -0
  28. package/src/components/AtomixLogo/index.ts +3 -0
  29. package/src/components/AtomixLogo.tsx +40 -0
  30. package/src/components/Avatar/Avatar.stories.tsx +257 -0
  31. package/src/components/Avatar/Avatar.tsx +68 -0
  32. package/src/components/Avatar/AvatarGroup.tsx +73 -0
  33. package/src/components/Avatar/index.ts +3 -0
  34. package/src/components/Badge/Badge.stories.tsx +371 -0
  35. package/src/components/Badge/Badge.tsx +39 -0
  36. package/src/components/Badge/index.ts +3 -0
  37. package/src/components/Block/Block.stories.tsx +408 -0
  38. package/src/components/Block/Block.tsx +137 -0
  39. package/src/components/Block/index.ts +1 -0
  40. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +106 -0
  41. package/src/components/Breadcrumb/Breadcrumb.tsx +112 -0
  42. package/src/components/Breadcrumb/index.ts +3 -0
  43. package/src/components/Button/Button.stories.tsx +312 -0
  44. package/src/components/Button/Button.tsx +69 -0
  45. package/src/components/Button/index.ts +3 -0
  46. package/src/components/Callout/Callout.stories.tsx +588 -0
  47. package/src/components/Callout/Callout.tsx +78 -0
  48. package/src/components/Callout/index.ts +1 -0
  49. package/src/components/Card/Card.stories.tsx +105 -0
  50. package/src/components/Card/Card.tsx +69 -0
  51. package/src/components/Card/ElevationCard.tsx +47 -0
  52. package/src/components/Card/index.ts +15 -0
  53. package/src/components/Chart/AdvancedChart.tsx +624 -0
  54. package/src/components/Chart/AnimatedChart.tsx +206 -0
  55. package/src/components/Chart/AreaChart.tsx +27 -0
  56. package/src/components/Chart/BarChart.tsx +148 -0
  57. package/src/components/Chart/BubbleChart.tsx +411 -0
  58. package/src/components/Chart/CandlestickChart.tsx +765 -0
  59. package/src/components/Chart/Chart.stories.tsx +527 -0
  60. package/src/components/Chart/Chart.tsx +218 -0
  61. package/src/components/Chart/ChartRenderer.tsx +322 -0
  62. package/src/components/Chart/ChartToolbar.tsx +436 -0
  63. package/src/components/Chart/ChartTooltip.tsx +101 -0
  64. package/src/components/Chart/DonutChart.tsx +370 -0
  65. package/src/components/Chart/FunnelChart.tsx +393 -0
  66. package/src/components/Chart/GaugeChart.tsx +550 -0
  67. package/src/components/Chart/HeatmapChart.tsx +614 -0
  68. package/src/components/Chart/LineChart.tsx +172 -0
  69. package/src/components/Chart/LineChartNew.tsx +167 -0
  70. package/src/components/Chart/MultiAxisChart.tsx +498 -0
  71. package/src/components/Chart/PieChart.tsx +103 -0
  72. package/src/components/Chart/RadarChart.tsx +332 -0
  73. package/src/components/Chart/RealTimeChart.tsx +436 -0
  74. package/src/components/Chart/ScatterChart.tsx +152 -0
  75. package/src/components/Chart/TreemapChart.tsx +574 -0
  76. package/src/components/Chart/WaterfallChart.tsx +450 -0
  77. package/src/components/Chart/index.ts +119 -0
  78. package/src/components/Chart/types.ts +338 -0
  79. package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +44 -0
  80. package/src/components/ColorModeToggle/ColorModeToggle.tsx +85 -0
  81. package/src/components/ColorModeToggle/index.ts +2 -0
  82. package/src/components/Countdown/Countdown.stories.tsx +46 -0
  83. package/src/components/Countdown/Countdown.tsx +90 -0
  84. package/src/components/Countdown/index.ts +2 -0
  85. package/src/components/DataTable/DataTable.stories.tsx +248 -0
  86. package/src/components/DataTable/DataTable.tsx +213 -0
  87. package/src/components/DataTable/index.ts +3 -0
  88. package/src/components/DatePicker/DatePicker.stories.tsx +364 -0
  89. package/src/components/DatePicker/DatePicker.tsx +504 -0
  90. package/src/components/DatePicker/index.ts +4 -0
  91. package/src/components/DatePicker/readme.md +106 -0
  92. package/src/components/DatePicker/types.ts +167 -0
  93. package/src/components/DatePicker/utils.ts +185 -0
  94. package/src/components/Dropdown/Dropdown.stories.tsx +358 -0
  95. package/src/components/Dropdown/Dropdown.tsx +352 -0
  96. package/src/components/Dropdown/index.ts +14 -0
  97. package/src/components/Dropdown/readme.md +151 -0
  98. package/src/components/EdgePanel/EdgePanel.stories.tsx +266 -0
  99. package/src/components/EdgePanel/EdgePanel.tsx +73 -0
  100. package/src/components/EdgePanel/index.ts +1 -0
  101. package/src/components/Footer/Footer.stories.tsx +388 -0
  102. package/src/components/Footer/Footer.tsx +197 -0
  103. package/src/components/Footer/FooterLink.tsx +72 -0
  104. package/src/components/Footer/FooterSection.tsx +87 -0
  105. package/src/components/Footer/FooterSocialLink.tsx +117 -0
  106. package/src/components/Footer/README.md +261 -0
  107. package/src/components/Footer/index.ts +13 -0
  108. package/src/components/Form/Checkbox.stories.tsx +76 -0
  109. package/src/components/Form/Checkbox.tsx +69 -0
  110. package/src/components/Form/Form.stories.tsx +497 -0
  111. package/src/components/Form/Form.tsx +46 -0
  112. package/src/components/Form/FormGroup.stories.tsx +162 -0
  113. package/src/components/Form/FormGroup.tsx +53 -0
  114. package/src/components/Form/Input.stories.tsx +106 -0
  115. package/src/components/Form/Input.tsx +87 -0
  116. package/src/components/Form/Radio.stories.tsx +94 -0
  117. package/src/components/Form/Radio.tsx +65 -0
  118. package/src/components/Form/Select.stories.tsx +151 -0
  119. package/src/components/Form/Select.tsx +191 -0
  120. package/src/components/Form/Textarea.stories.tsx +123 -0
  121. package/src/components/Form/Textarea.tsx +78 -0
  122. package/src/components/Form/index.ts +7 -0
  123. package/src/components/Hero/Hero.stories.tsx +295 -0
  124. package/src/components/Hero/Hero.tsx +175 -0
  125. package/src/components/Hero/index.ts +6 -0
  126. package/src/components/Icon/Icon.tsx +87 -0
  127. package/src/components/Icon/index.ts +2 -0
  128. package/src/components/List/List.stories.tsx +122 -0
  129. package/src/components/List/List.tsx +35 -0
  130. package/src/components/List/ListGroup.tsx +35 -0
  131. package/src/components/List/index.ts +2 -0
  132. package/src/components/Messages/Messages.stories.tsx +160 -0
  133. package/src/components/Messages/Messages.tsx +172 -0
  134. package/src/components/Messages/index.ts +3 -0
  135. package/src/components/Modal/Modal.stories.tsx +284 -0
  136. package/src/components/Modal/Modal.tsx +198 -0
  137. package/src/components/Modal/README.md +169 -0
  138. package/src/components/Modal/index.ts +1 -0
  139. package/src/components/Navigation/Menu/MegaMenu.tsx +109 -0
  140. package/src/components/Navigation/Menu/Menu.stories.tsx +339 -0
  141. package/src/components/Navigation/Menu/Menu.tsx +111 -0
  142. package/src/components/Navigation/Nav/Nav.stories.tsx +456 -0
  143. package/src/components/Navigation/Nav/Nav.tsx +51 -0
  144. package/src/components/Navigation/Nav/NavDropdown.tsx +105 -0
  145. package/src/components/Navigation/Nav/NavItem.tsx +168 -0
  146. package/src/components/Navigation/Navbar/Navbar.stories.tsx +569 -0
  147. package/src/components/Navigation/Navbar/Navbar.tsx +150 -0
  148. package/src/components/Navigation/README.md +314 -0
  149. package/src/components/Navigation/SideMenu/SideMenu.README.md +494 -0
  150. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +609 -0
  151. package/src/components/Navigation/SideMenu/SideMenu.tsx +101 -0
  152. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +103 -0
  153. package/src/components/Navigation/SideMenu/SideMenuList.tsx +41 -0
  154. package/src/components/Navigation/index.ts +23 -0
  155. package/src/components/Pagination/Pagination.stories.tsx +188 -0
  156. package/src/components/Pagination/Pagination.tsx +162 -0
  157. package/src/components/Pagination/index.ts +1 -0
  158. package/src/components/PhotoViewer/PhotoViewer.stories.tsx +397 -0
  159. package/src/components/PhotoViewer/PhotoViewer.tsx +246 -0
  160. package/src/components/PhotoViewer/PhotoViewerHeader.tsx +184 -0
  161. package/src/components/PhotoViewer/PhotoViewerImage.tsx +173 -0
  162. package/src/components/PhotoViewer/PhotoViewerInfo.tsx +91 -0
  163. package/src/components/PhotoViewer/PhotoViewerNavigation.tsx +85 -0
  164. package/src/components/PhotoViewer/PhotoViewerThumbnails.tsx +63 -0
  165. package/src/components/PhotoViewer/README.md +358 -0
  166. package/src/components/PhotoViewer/examples/ImageGallery.tsx +187 -0
  167. package/src/components/PhotoViewer/examples/SimpleGallery.tsx +73 -0
  168. package/src/components/PhotoViewer/examples/index.ts +2 -0
  169. package/src/components/PhotoViewer/index.ts +14 -0
  170. package/src/components/Popover/Popover.stories.tsx +143 -0
  171. package/src/components/Popover/Popover.tsx +137 -0
  172. package/src/components/Popover/index.ts +5 -0
  173. package/src/components/Popover/readme.md +120 -0
  174. package/src/components/ProductReview/ProductReview.stories.tsx +88 -0
  175. package/src/components/ProductReview/ProductReview.tsx +169 -0
  176. package/src/components/ProductReview/index.ts +3 -0
  177. package/src/components/Progress/Progress.stories.tsx +75 -0
  178. package/src/components/Progress/Progress.tsx +45 -0
  179. package/src/components/Progress/index.ts +1 -0
  180. package/src/components/Rating/Rating.stories.tsx +109 -0
  181. package/src/components/Rating/Rating.tsx +286 -0
  182. package/src/components/Rating/index.ts +6 -0
  183. package/src/components/River/River.stories.tsx +230 -0
  184. package/src/components/River/River.tsx +134 -0
  185. package/src/components/River/index.ts +2 -0
  186. package/src/components/SectionIntro/SectionIntro.stories.tsx +143 -0
  187. package/src/components/SectionIntro/SectionIntro.tsx +182 -0
  188. package/src/components/SectionIntro/index.ts +3 -0
  189. package/src/components/Slider/Slider.stories.tsx +825 -0
  190. package/src/components/Slider/Slider.tsx +227 -0
  191. package/src/components/Slider/index.ts +24 -0
  192. package/src/components/Spinner/Spinner.stories.tsx +65 -0
  193. package/src/components/Spinner/Spinner.tsx +36 -0
  194. package/src/components/Spinner/index.ts +2 -0
  195. package/src/components/Steps/Steps.stories.tsx +158 -0
  196. package/src/components/Steps/Steps.tsx +115 -0
  197. package/src/components/Steps/index.ts +3 -0
  198. package/src/components/Tab/Tab.stories.tsx +129 -0
  199. package/src/components/Tab/Tab.tsx +111 -0
  200. package/src/components/Tab/index.ts +2 -0
  201. package/src/components/Testimonial/Testimonial.stories.tsx +180 -0
  202. package/src/components/Testimonial/Testimonial.tsx +138 -0
  203. package/src/components/Testimonial/index.ts +3 -0
  204. package/src/components/Todo/Todo.stories.tsx +103 -0
  205. package/src/components/Todo/Todo.tsx +158 -0
  206. package/src/components/Todo/index.ts +1 -0
  207. package/src/components/Toggle/Toggle.stories.tsx +49 -0
  208. package/src/components/Toggle/Toggle.tsx +84 -0
  209. package/src/components/Toggle/index.ts +2 -0
  210. package/src/components/Tooltip/Tooltip.stories.tsx +115 -0
  211. package/src/components/Tooltip/Tooltip.tsx +150 -0
  212. package/src/components/Tooltip/index.ts +3 -0
  213. package/src/components/Upload/Upload.stories.tsx +220 -0
  214. package/src/components/Upload/Upload.tsx +354 -0
  215. package/src/components/Upload/index.ts +3 -0
  216. package/src/components/VideoPlayer/VideoPlayer.stories.tsx +484 -0
  217. package/src/components/VideoPlayer/VideoPlayer.tsx +574 -0
  218. package/src/components/VideoPlayer/index.ts +7 -0
  219. package/src/components/index.ts +124 -0
  220. package/src/layouts/Grid/Container.tsx +58 -0
  221. package/src/layouts/Grid/Grid.stories.tsx +928 -0
  222. package/src/layouts/Grid/Grid.tsx +68 -0
  223. package/src/layouts/Grid/GridCol.tsx +161 -0
  224. package/src/layouts/Grid/README.md +108 -0
  225. package/src/layouts/Grid/Row.tsx +70 -0
  226. package/src/layouts/Grid/index.ts +8 -0
  227. package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +387 -0
  228. package/src/layouts/MasonryGrid/MasonryGrid.tsx +408 -0
  229. package/src/layouts/MasonryGrid/MasonryGridItem.tsx +44 -0
  230. package/src/layouts/MasonryGrid/README.md +117 -0
  231. package/src/layouts/MasonryGrid/index.ts +4 -0
  232. package/src/layouts/index.ts +7 -0
  233. package/src/lib/README.md +89 -0
  234. package/src/lib/composables/index.ts +63 -0
  235. package/src/lib/composables/useAccordion.ts +129 -0
  236. package/src/lib/composables/useAmbientMode.ts +90 -0
  237. package/src/lib/composables/useBadge.ts +42 -0
  238. package/src/lib/composables/useBarChart.ts +365 -0
  239. package/src/lib/composables/useBlock.ts +56 -0
  240. package/src/lib/composables/useBreadcrumb.ts +81 -0
  241. package/src/lib/composables/useButton.ts +59 -0
  242. package/src/lib/composables/useCallout.ts +55 -0
  243. package/src/lib/composables/useCard.ts +155 -0
  244. package/src/lib/composables/useChart.ts +1082 -0
  245. package/src/lib/composables/useChartAnalytics.ts +505 -0
  246. package/src/lib/composables/useChartData.ts +38 -0
  247. package/src/lib/composables/useChartExport.ts +392 -0
  248. package/src/lib/composables/useChartInteraction.ts +34 -0
  249. package/src/lib/composables/useChartInteractions.ts +123 -0
  250. package/src/lib/composables/useChartPerformance.ts +323 -0
  251. package/src/lib/composables/useChartScale.ts +48 -0
  252. package/src/lib/composables/useChartToolbar.ts +532 -0
  253. package/src/lib/composables/useCheckbox.ts +70 -0
  254. package/src/lib/composables/useDataTable.ts +208 -0
  255. package/src/lib/composables/useDatePicker.ts +564 -0
  256. package/src/lib/composables/useDropdown.ts +272 -0
  257. package/src/lib/composables/useEdgePanel.ts +261 -0
  258. package/src/lib/composables/useFooter.ts +85 -0
  259. package/src/lib/composables/useForm.ts +62 -0
  260. package/src/lib/composables/useFormGroup.ts +51 -0
  261. package/src/lib/composables/useHero.ts +250 -0
  262. package/src/lib/composables/useInput.ts +58 -0
  263. package/src/lib/composables/useLineChart.ts +319 -0
  264. package/src/lib/composables/useMessages.ts +77 -0
  265. package/src/lib/composables/useModal.ts +110 -0
  266. package/src/lib/composables/useNavbar.ts +288 -0
  267. package/src/lib/composables/usePagination.ts +101 -0
  268. package/src/lib/composables/usePhotoViewer.ts +937 -0
  269. package/src/lib/composables/usePieChart.ts +362 -0
  270. package/src/lib/composables/usePopover.ts +354 -0
  271. package/src/lib/composables/useProgress.ts +74 -0
  272. package/src/lib/composables/useRadio.ts +47 -0
  273. package/src/lib/composables/useRating.ts +174 -0
  274. package/src/lib/composables/useRiver.ts +205 -0
  275. package/src/lib/composables/useSelect.ts +52 -0
  276. package/src/lib/composables/useSideMenu.ts +197 -0
  277. package/src/lib/composables/useSlider.ts +526 -0
  278. package/src/lib/composables/useSpinner.ts +42 -0
  279. package/src/lib/composables/useTextarea.ts +55 -0
  280. package/src/lib/composables/useTodo.ts +141 -0
  281. package/src/lib/composables/useVideoPlayer.ts +398 -0
  282. package/src/lib/constants/components.ts +1518 -0
  283. package/src/lib/constants/index.ts +4 -0
  284. package/src/lib/index.ts +11 -0
  285. package/src/lib/types/components.ts +5020 -0
  286. package/src/lib/types/index.ts +2 -0
  287. package/src/lib/utils/dom.ts +41 -0
  288. package/src/lib/utils/icons.ts +74 -0
  289. package/src/lib/utils/index.ts +55 -0
  290. package/src/lib/utils/useForkRef.test.tsx +64 -0
  291. package/src/lib/utils/useForkRef.ts +36 -0
  292. package/src/lib/utils.test.ts +14 -0
  293. package/src/styles/01-settings/_index.scss +3 -0
  294. package/src/styles/01-settings/_settings.accordion.scss +22 -19
  295. package/src/styles/01-settings/_settings.animations.scss +5 -5
  296. package/src/styles/01-settings/_settings.avatar-group.scss +7 -4
  297. package/src/styles/01-settings/_settings.avatar.scss +19 -20
  298. package/src/styles/01-settings/_settings.background.scss +9 -0
  299. package/src/styles/01-settings/_settings.badge.scss +15 -9
  300. package/src/styles/01-settings/_settings.block.scss +11 -0
  301. package/src/styles/01-settings/_settings.border-radius.scss +12 -9
  302. package/src/styles/01-settings/_settings.border.scss +4 -1
  303. package/src/styles/01-settings/_settings.box-shadow.scss +1 -1
  304. package/src/styles/01-settings/_settings.breadcrumb.scss +16 -9
  305. package/src/styles/01-settings/_settings.breakpoints.scss +0 -0
  306. package/src/styles/01-settings/_settings.btn-group.scss +4 -1
  307. package/src/styles/01-settings/_settings.button.scss +19 -21
  308. package/src/styles/01-settings/_settings.callout.scss +42 -24
  309. package/src/styles/01-settings/_settings.card.scss +13 -11
  310. package/src/styles/01-settings/_settings.chart.scss +199 -0
  311. package/src/styles/01-settings/_settings.checkbox-group.scss +5 -2
  312. package/src/styles/01-settings/_settings.checkbox.scss +10 -4
  313. package/src/styles/01-settings/_settings.color-mode.scss +0 -0
  314. package/src/styles/01-settings/_settings.colors.scss +20 -0
  315. package/src/styles/01-settings/_settings.config.scss +1 -1
  316. package/src/styles/01-settings/_settings.countdown.scss +6 -4
  317. package/src/styles/01-settings/_settings.data-table.scss +0 -0
  318. package/src/styles/01-settings/_settings.datepicker.scss +0 -0
  319. package/src/styles/01-settings/_settings.dropdown.scss +9 -7
  320. package/src/styles/01-settings/_settings.edge-panel.scss +3 -2
  321. package/src/styles/01-settings/_settings.fonts.scss +1 -1
  322. package/src/styles/01-settings/_settings.footer.scss +125 -0
  323. package/src/styles/01-settings/_settings.form-group.scss +3 -1
  324. package/src/styles/01-settings/_settings.form.scss +4 -2
  325. package/src/styles/01-settings/_settings.grid.scss +3 -3
  326. package/src/styles/01-settings/_settings.hero.scss +10 -8
  327. package/src/styles/01-settings/_settings.input.scss +9 -7
  328. package/src/styles/01-settings/_settings.link.scss +0 -0
  329. package/src/styles/01-settings/_settings.list-group.scss +4 -2
  330. package/src/styles/01-settings/_settings.list.scss +4 -2
  331. package/src/styles/01-settings/_settings.maps.scss +43 -8
  332. package/src/styles/01-settings/_settings.masonry-grid.scss +0 -0
  333. package/src/styles/01-settings/_settings.menu.scss +10 -8
  334. package/src/styles/01-settings/_settings.messages.scss +19 -17
  335. package/src/styles/01-settings/_settings.modal.scss +7 -5
  336. package/src/styles/01-settings/_settings.nav.scss +6 -4
  337. package/src/styles/01-settings/_settings.navbar.scss +8 -5
  338. package/src/styles/01-settings/_settings.pagination.scss +5 -3
  339. package/src/styles/01-settings/_settings.photoviewer.scss +89 -23
  340. package/src/styles/01-settings/_settings.popover.scss +6 -4
  341. package/src/styles/01-settings/_settings.position.scss +0 -0
  342. package/src/styles/01-settings/_settings.progress.scss +0 -0
  343. package/src/styles/01-settings/_settings.rating.scss +5 -3
  344. package/src/styles/01-settings/_settings.river.scss +8 -6
  345. package/src/styles/01-settings/_settings.sectionintro.scss +8 -6
  346. package/src/styles/01-settings/_settings.select.scss +7 -5
  347. package/src/styles/01-settings/_settings.side-menu.scss +15 -13
  348. package/src/styles/01-settings/_settings.skeleton.scss +0 -0
  349. package/src/styles/01-settings/_settings.slider.scss +59 -0
  350. package/src/styles/01-settings/_settings.spacing.scss +15 -3
  351. package/src/styles/01-settings/_settings.spinner.scss +0 -0
  352. package/src/styles/01-settings/_settings.steps.scss +8 -6
  353. package/src/styles/01-settings/_settings.tabs.scss +11 -9
  354. package/src/styles/01-settings/_settings.testimonials.scss +6 -4
  355. package/src/styles/01-settings/_settings.todo.scss +0 -0
  356. package/src/styles/01-settings/_settings.toggle.scss +4 -2
  357. package/src/styles/01-settings/_settings.tooltip.scss +5 -3
  358. package/src/styles/01-settings/_settings.typography.scss +2 -0
  359. package/src/styles/01-settings/_settings.upload.scss +22 -20
  360. package/src/styles/01-settings/_settings.video-player.scss +64 -0
  361. package/src/styles/01-settings/_settings.z-layers.scss +0 -0
  362. package/src/styles/02-tools/_index.scss +1 -0
  363. package/src/styles/02-tools/_tools.animations.scss +82 -0
  364. package/src/styles/02-tools/_tools.background.scss +85 -0
  365. package/src/styles/02-tools/_tools.border-radius.scss +0 -0
  366. package/src/styles/02-tools/_tools.breakpoints.scss +0 -0
  367. package/src/styles/02-tools/_tools.button.scss +5 -0
  368. package/src/styles/02-tools/_tools.clearfix.scss +0 -0
  369. package/src/styles/02-tools/_tools.color-functions.scss +0 -0
  370. package/src/styles/02-tools/_tools.color-mode.scss +1 -1
  371. package/src/styles/02-tools/_tools.component.scss +479 -0
  372. package/src/styles/02-tools/_tools.event.scss +0 -0
  373. package/src/styles/02-tools/_tools.grid.scss +0 -0
  374. package/src/styles/02-tools/_tools.hidden-visually.scss +0 -0
  375. package/src/styles/02-tools/_tools.hidden.scss +0 -0
  376. package/src/styles/02-tools/_tools.map-loop.scss +0 -0
  377. package/src/styles/02-tools/_tools.media-queries.scss +0 -0
  378. package/src/styles/02-tools/_tools.object-fit.scss +0 -0
  379. package/src/styles/02-tools/_tools.placeholder.scss +0 -0
  380. package/src/styles/02-tools/_tools.rem.scss +19 -2
  381. package/src/styles/02-tools/_tools.size.scss +0 -0
  382. package/src/styles/02-tools/_tools.spacing.scss +0 -0
  383. package/src/styles/02-tools/_tools.to-rgb.scss +0 -0
  384. package/src/styles/02-tools/_tools.transition.scss +0 -0
  385. package/src/styles/02-tools/_tools.utilities.scss +0 -0
  386. package/src/styles/02-tools/_tools.utility-api.scss +55 -28
  387. package/src/styles/03-generic/_generic.fonts.scss +0 -0
  388. package/src/styles/03-generic/_generic.reset.scss +0 -0
  389. package/src/styles/03-generic/_generic.root.scss +19 -3
  390. package/src/styles/03-generic/_generic.selection.scss +0 -0
  391. package/src/styles/03-generic/_index.scss +0 -0
  392. package/src/styles/04-elements/_elements.all.scss +0 -0
  393. package/src/styles/04-elements/_elements.body.scss +24 -0
  394. package/src/styles/04-elements/_elements.heading.scss +0 -0
  395. package/src/styles/04-elements/_elements.html.scss +0 -0
  396. package/src/styles/04-elements/_elements.links.scss +0 -0
  397. package/src/styles/04-elements/_index.scss +0 -0
  398. package/src/styles/05-objects/_index.scss +1 -0
  399. package/src/styles/05-objects/_objects.block.scss +122 -0
  400. package/src/styles/05-objects/_objects.container.scss +14 -10
  401. package/src/styles/05-objects/_objects.grid.scss +0 -0
  402. package/src/styles/05-objects/_objects.masonry-grid.scss +0 -0
  403. package/src/styles/06-components/_components.accordion.scss +10 -4
  404. package/src/styles/06-components/_components.avatar-group.scss +2 -1
  405. package/src/styles/06-components/_components.avatar.scss +2 -1
  406. package/src/styles/06-components/_components.badge.scss +11 -10
  407. package/src/styles/06-components/_components.breadcrumb.scss +2 -1
  408. package/src/styles/06-components/_components.btn-group.scss +0 -0
  409. package/src/styles/06-components/_components.button.scss +4 -3
  410. package/src/styles/06-components/_components.callout.scss +5 -3
  411. package/src/styles/06-components/_components.card.scss +4 -3
  412. package/src/styles/06-components/_components.chart.scss +2103 -0
  413. package/src/styles/06-components/_components.checkbox-group.scss +0 -0
  414. package/src/styles/06-components/_components.checkbox.scss +2 -1
  415. package/src/styles/06-components/_components.color-mode-toggle.scss +3 -2
  416. package/src/styles/06-components/_components.countdown.scss +2 -1
  417. package/src/styles/06-components/_components.data-table.scss +7 -6
  418. package/src/styles/06-components/_components.datepicker.scss +2 -1
  419. package/src/styles/06-components/_components.dropdown.scss +4 -3
  420. package/src/styles/06-components/_components.edge-panel.scss +4 -3
  421. package/src/styles/06-components/_components.footer.scss +825 -0
  422. package/src/styles/06-components/_components.form-group.scss +1 -0
  423. package/src/styles/06-components/_components.form.scss +0 -0
  424. package/src/styles/06-components/_components.hero.scss +4 -2
  425. package/src/styles/06-components/_components.icon.scss +2 -2
  426. package/src/styles/06-components/_components.image-gallery.scss +1 -0
  427. package/src/styles/06-components/_components.input.scss +2 -1
  428. package/src/styles/06-components/_components.list-group.scss +3 -2
  429. package/src/styles/06-components/_components.list.scss +2 -1
  430. package/src/styles/06-components/_components.menu.scss +5 -4
  431. package/src/styles/06-components/_components.messages.scss +8 -7
  432. package/src/styles/06-components/_components.modal.scss +6 -2
  433. package/src/styles/06-components/_components.nav.scss +6 -5
  434. package/src/styles/06-components/_components.navbar.scss +4 -3
  435. package/src/styles/06-components/_components.pagination.scss +2 -1
  436. package/src/styles/06-components/_components.photoviewer.scss +604 -545
  437. package/src/styles/06-components/_components.popover.scss +3 -2
  438. package/src/styles/06-components/_components.product-review.scss +3 -2
  439. package/src/styles/06-components/_components.progress.scss +3 -2
  440. package/src/styles/06-components/_components.rating.scss +0 -0
  441. package/src/styles/06-components/_components.river.scss +3 -2
  442. package/src/styles/06-components/_components.sectionintro.scss +2 -1
  443. package/src/styles/06-components/_components.select.scss +5 -4
  444. package/src/styles/06-components/_components.side-menu.scss +8 -7
  445. package/src/styles/06-components/_components.skeleton.scss +3 -2
  446. package/src/styles/06-components/_components.slider.scss +274 -0
  447. package/src/styles/06-components/_components.spinner.scss +1 -0
  448. package/src/styles/06-components/_components.steps.scss +4 -2
  449. package/src/styles/06-components/_components.tabs.scss +4 -3
  450. package/src/styles/06-components/_components.testimonials.scss +2 -1
  451. package/src/styles/06-components/_components.todo.scss +3 -2
  452. package/src/styles/06-components/_components.toggle.scss +5 -4
  453. package/src/styles/06-components/_components.tooltip.scss +7 -11
  454. package/src/styles/06-components/_components.upload.scss +4 -3
  455. package/src/styles/06-components/_components.video-player.scss +624 -0
  456. package/src/styles/06-components/_index.scss +4 -0
  457. package/src/styles/06-components/old.chart.styles.scss +2819 -0
  458. package/src/styles/99-utilities/_index.scss +0 -0
  459. package/src/styles/99-utilities/_utilities.background.scss +0 -0
  460. package/src/styles/99-utilities/_utilities.border.scss +0 -0
  461. package/src/styles/99-utilities/_utilities.clearfix.scss +0 -0
  462. package/src/styles/99-utilities/_utilities.display.scss +0 -0
  463. package/src/styles/99-utilities/_utilities.flex.scss +0 -0
  464. package/src/styles/99-utilities/_utilities.link.scss +0 -0
  465. package/src/styles/99-utilities/_utilities.object-fit.scss +0 -0
  466. package/src/styles/99-utilities/_utilities.opacity.scss +0 -0
  467. package/src/styles/99-utilities/_utilities.overflow.scss +0 -0
  468. package/src/styles/99-utilities/_utilities.position.scss +0 -0
  469. package/src/styles/99-utilities/_utilities.scss +2 -1
  470. package/src/styles/99-utilities/_utilities.shadow.scss +0 -0
  471. package/src/styles/99-utilities/_utilities.sizes.scss +0 -0
  472. package/src/styles/99-utilities/_utilities.spacing.scss +0 -0
  473. package/src/styles/99-utilities/_utilities.text.scss +5 -0
  474. package/src/styles/99-utilities/_utilities.visibility.scss +0 -0
  475. package/src/styles/99-utilities/_utilities.visually-hidden.scss +0 -0
  476. package/src/styles/99-utilities/_utilities.z-index.scss +0 -0
  477. package/src/styles/css-modules.d.ts +0 -0
  478. package/src/styles/index.scss +0 -0
  479. package/dist/index.css +0 -15
  480. package/dist/index.esm.css +0 -15
  481. package/dist/index.min.css +0 -15
@@ -0,0 +1,609 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { fn } from '@storybook/test';
3
+ import React from 'react';
4
+ import { Icon } from '../../Icon';
5
+ import { SideMenu } from './SideMenu';
6
+ import { SideMenuItem } from './SideMenuItem';
7
+ import { SideMenuList } from './SideMenuList';
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
+ argTypes: {
81
+ title: {
82
+ control: 'text',
83
+ description: 'Menu title displayed at the top',
84
+ table: {
85
+ type: { summary: 'ReactNode' },
86
+ defaultValue: { summary: 'undefined' },
87
+ },
88
+ },
89
+ isOpen: {
90
+ control: 'boolean',
91
+ description: 'Whether the menu is open (for controlled component)',
92
+ table: {
93
+ type: { summary: 'boolean' },
94
+ defaultValue: { summary: 'undefined' },
95
+ },
96
+ },
97
+ collapsible: {
98
+ control: 'boolean',
99
+ description: 'Whether the menu is collapsible on mobile',
100
+ table: {
101
+ type: { summary: 'boolean' },
102
+ defaultValue: { summary: 'true' },
103
+ },
104
+ },
105
+ disabled: {
106
+ control: 'boolean',
107
+ description: 'Whether the menu is disabled',
108
+ table: {
109
+ type: { summary: 'boolean' },
110
+ defaultValue: { summary: 'false' },
111
+ },
112
+ },
113
+ },
114
+ args: {
115
+ onToggle: fn(),
116
+ },
117
+ } satisfies Meta<typeof SideMenu>;
118
+
119
+ export default meta;
120
+ type Story = StoryObj<typeof SideMenu>;
121
+
122
+ // Default SideMenu
123
+ export const Default: Story = {
124
+ args: {
125
+ title: 'Navigation',
126
+ children: (
127
+ <SideMenuList>
128
+ <SideMenuItem href="/" active>
129
+ Home
130
+ </SideMenuItem>
131
+ <SideMenuItem href="/about">About</SideMenuItem>
132
+ <SideMenuItem href="/services">Services</SideMenuItem>
133
+ <SideMenuItem href="/contact">Contact</SideMenuItem>
134
+ </SideMenuList>
135
+ ),
136
+ collapsible: true,
137
+ onToggle: fn(),
138
+ },
139
+ };
140
+
141
+ // With Icons
142
+ export const WithIcons: Story = {
143
+ args: {
144
+ title: 'Main Menu',
145
+ children: (
146
+ <SideMenuList>
147
+ <SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
148
+ Home
149
+ </SideMenuItem>
150
+ <SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
151
+ About
152
+ </SideMenuItem>
153
+ <SideMenuItem href="/services" icon={<Icon name="Gear" size="sm" />}>
154
+ Services
155
+ </SideMenuItem>
156
+ <SideMenuItem href="/portfolio" icon={<Icon name="Briefcase" size="sm" />}>
157
+ Portfolio
158
+ </SideMenuItem>
159
+ <SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
160
+ Contact
161
+ </SideMenuItem>
162
+ </SideMenuList>
163
+ ),
164
+ collapsible: true,
165
+ onToggle: fn(),
166
+ },
167
+ };
168
+
169
+ // Multiple Lists
170
+ export const MultipleLists: Story = {
171
+ args: {
172
+ title: 'Dashboard',
173
+ children: (
174
+ <>
175
+ <SideMenuList>
176
+ <SideMenuItem href="/dashboard" icon={<Icon name="ChartBar" size="sm" />} active>
177
+ Dashboard
178
+ </SideMenuItem>
179
+ <SideMenuItem href="/analytics" icon={<Icon name="TrendUp" size="sm" />}>
180
+ Analytics
181
+ </SideMenuItem>
182
+ <SideMenuItem href="/reports" icon={<Icon name="FileText" size="sm" />}>
183
+ Reports
184
+ </SideMenuItem>
185
+ </SideMenuList>
186
+
187
+ <SideMenuList>
188
+ <SideMenuItem href="/users" icon={<Icon name="Users" size="sm" />}>
189
+ Users
190
+ </SideMenuItem>
191
+ <SideMenuItem href="/settings" icon={<Icon name="Gear" size="sm" />}>
192
+ Settings
193
+ </SideMenuItem>
194
+ <SideMenuItem href="/help" icon={<Icon name="Question" size="sm" />}>
195
+ Help
196
+ </SideMenuItem>
197
+ </SideMenuList>
198
+ </>
199
+ ),
200
+ collapsible: true,
201
+ onToggle: fn(),
202
+ },
203
+ };
204
+
205
+ // With Disabled Items
206
+ export const WithDisabledItems: Story = {
207
+ args: {
208
+ title: 'Navigation',
209
+ children: (
210
+ <SideMenuList>
211
+ <SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
212
+ Home
213
+ </SideMenuItem>
214
+ <SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
215
+ About
216
+ </SideMenuItem>
217
+ <SideMenuItem href="/services" icon={<Icon name="Gear" size="sm" />} disabled>
218
+ Services (Coming Soon)
219
+ </SideMenuItem>
220
+ <SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
221
+ Contact
222
+ </SideMenuItem>
223
+ </SideMenuList>
224
+ ),
225
+ collapsible: true,
226
+ onToggle: fn(),
227
+ },
228
+ };
229
+
230
+ // Non-Collapsible
231
+ export const NonCollapsible: Story = {
232
+ args: {
233
+ title: 'Quick Links',
234
+ children: (
235
+ <SideMenuList>
236
+ <SideMenuItem href="/dashboard" icon={<Icon name="ChartBar" size="sm" />} active>
237
+ Dashboard
238
+ </SideMenuItem>
239
+ <SideMenuItem href="/profile" icon={<Icon name="User" size="sm" />}>
240
+ Profile
241
+ </SideMenuItem>
242
+ <SideMenuItem href="/settings" icon={<Icon name="Gear" size="sm" />}>
243
+ Settings
244
+ </SideMenuItem>
245
+ <SideMenuItem href="/logout" icon={<Icon name="SignOut" size="sm" />}>
246
+ Logout
247
+ </SideMenuItem>
248
+ </SideMenuList>
249
+ ),
250
+ collapsible: false,
251
+ onToggle: fn(),
252
+ },
253
+ };
254
+
255
+ // Controlled Component
256
+ export const Controlled: Story = {
257
+ render: args => {
258
+ const [isOpen, setIsOpen] = React.useState(false);
259
+
260
+ const handleToggle = (newIsOpen: boolean) => {
261
+ setIsOpen(newIsOpen);
262
+ args.onToggle?.(newIsOpen);
263
+ };
264
+
265
+ return (
266
+ <div>
267
+ <button onClick={() => handleToggle(!isOpen)} style={{ marginBottom: '1rem' }}>
268
+ Toggle Menu (Currently: {isOpen ? 'Open' : 'Closed'})
269
+ </button>
270
+
271
+ <SideMenu
272
+ {...args}
273
+ title="Controlled Menu"
274
+ isOpen={isOpen}
275
+ onToggle={handleToggle}
276
+ collapsible
277
+ >
278
+ <SideMenuList>
279
+ <SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
280
+ Home
281
+ </SideMenuItem>
282
+ <SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
283
+ About
284
+ </SideMenuItem>
285
+ <SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
286
+ Contact
287
+ </SideMenuItem>
288
+ </SideMenuList>
289
+ </SideMenu>
290
+ </div>
291
+ );
292
+ },
293
+ args: {
294
+ onToggle: fn(),
295
+ },
296
+ };
297
+
298
+ // Button Items (No href)
299
+ export const ButtonItems: Story = {
300
+ args: {
301
+ title: 'Actions',
302
+ children: (
303
+ <SideMenuList>
304
+ <SideMenuItem onClick={fn()} icon={<Icon name="ChartBar" size="sm" />} active>
305
+ Dashboard
306
+ </SideMenuItem>
307
+ <SideMenuItem onClick={fn()} icon={<Icon name="Plus" size="sm" />}>
308
+ Create New
309
+ </SideMenuItem>
310
+ <SideMenuItem onClick={fn()} icon={<Icon name="Export" size="sm" />}>
311
+ Export Data
312
+ </SideMenuItem>
313
+ <SideMenuItem onClick={fn()} icon={<Icon name="Gear" size="sm" />}>
314
+ Settings
315
+ </SideMenuItem>
316
+ </SideMenuList>
317
+ ),
318
+ collapsible: true,
319
+ onToggle: fn(),
320
+ },
321
+ };
322
+
323
+ // Custom Toggle Icon
324
+ export const CustomToggleIcon: Story = {
325
+ args: {
326
+ title: 'Custom Menu',
327
+ toggleIcon: <Icon name="CaretDown" size="xs" />,
328
+ children: (
329
+ <SideMenuList>
330
+ <SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
331
+ Home
332
+ </SideMenuItem>
333
+ <SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
334
+ About
335
+ </SideMenuItem>
336
+ <SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
337
+ Contact
338
+ </SideMenuItem>
339
+ </SideMenuList>
340
+ ),
341
+ collapsible: true,
342
+ onToggle: fn(),
343
+ },
344
+ };
345
+
346
+ // Disabled Menu
347
+ export const DisabledMenu: Story = {
348
+ args: {
349
+ title: 'Disabled Menu',
350
+ disabled: true,
351
+ children: (
352
+ <SideMenuList>
353
+ <SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
354
+ Home
355
+ </SideMenuItem>
356
+ <SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
357
+ About
358
+ </SideMenuItem>
359
+ <SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
360
+ Contact
361
+ </SideMenuItem>
362
+ </SideMenuList>
363
+ ),
364
+ collapsible: true,
365
+ onToggle: fn(),
366
+ },
367
+ };
368
+
369
+ // Complex Navigation
370
+ export const ComplexNavigation: Story = {
371
+ args: {
372
+ title: 'Admin Panel',
373
+ children: (
374
+ <>
375
+ <SideMenuList>
376
+ <SideMenuItem href="/dashboard" icon={<Icon name="ChartBar" size="sm" />} active>
377
+ Dashboard
378
+ </SideMenuItem>
379
+ </SideMenuList>
380
+
381
+ <SideMenuList>
382
+ <SideMenuItem href="/users" icon={<Icon name="Users" size="sm" />}>
383
+ User Management
384
+ </SideMenuItem>
385
+ <SideMenuItem href="/roles" icon={<Icon name="Shield" size="sm" />}>
386
+ Roles & Permissions
387
+ </SideMenuItem>
388
+ <SideMenuItem href="/audit" icon={<Icon name="FileText" size="sm" />}>
389
+ Audit Logs
390
+ </SideMenuItem>
391
+ </SideMenuList>
392
+
393
+ <SideMenuList>
394
+ <SideMenuItem href="/content" icon={<Icon name="Article" size="sm" />}>
395
+ Content Management
396
+ </SideMenuItem>
397
+ <SideMenuItem href="/media" icon={<Icon name="Image" size="sm" />}>
398
+ Media Library
399
+ </SideMenuItem>
400
+ <SideMenuItem href="/seo" icon={<Icon name="MagnifyingGlass" size="sm" />}>
401
+ SEO Settings
402
+ </SideMenuItem>
403
+ </SideMenuList>
404
+
405
+ <SideMenuList>
406
+ <SideMenuItem href="/analytics" icon={<Icon name="TrendUp" size="sm" />}>
407
+ Analytics
408
+ </SideMenuItem>
409
+ <SideMenuItem href="/reports" icon={<Icon name="ChartBar" size="sm" />}>
410
+ Reports
411
+ </SideMenuItem>
412
+ <SideMenuItem href="/exports" icon={<Icon name="Export" size="sm" />}>
413
+ Data Exports
414
+ </SideMenuItem>
415
+ </SideMenuList>
416
+
417
+ <SideMenuList>
418
+ <SideMenuItem href="/settings" icon={<Icon name="Gear" size="sm" />}>
419
+ System Settings
420
+ </SideMenuItem>
421
+ <SideMenuItem href="/integrations" icon={<Icon name="Plugs" size="sm" />}>
422
+ Integrations
423
+ </SideMenuItem>
424
+ <SideMenuItem href="/backup" icon={<Icon name="Database" size="sm" />}>
425
+ Backup & Restore
426
+ </SideMenuItem>
427
+ </SideMenuList>
428
+ </>
429
+ ),
430
+ collapsible: true,
431
+ onToggle: fn(),
432
+ },
433
+ };
434
+
435
+ // Responsive Demo
436
+ export const ResponsiveDemo: Story = {
437
+ render: args => (
438
+ <div style={{ maxWidth: '300px' }}>
439
+ <p style={{ marginBottom: '1rem', fontSize: '0.875rem', color: '#666' }}>
440
+ Resize your browser window to see the responsive behavior. On mobile (less than 768px), the
441
+ menu becomes collapsible.
442
+ </p>
443
+
444
+ <SideMenu {...args} title="Responsive Menu" collapsible>
445
+ <SideMenuList>
446
+ <SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
447
+ Home
448
+ </SideMenuItem>
449
+ <SideMenuItem href="/products" icon={<Icon name="Package" size="sm" />}>
450
+ Products
451
+ </SideMenuItem>
452
+ <SideMenuItem href="/services" icon={<Icon name="Gear" size="sm" />}>
453
+ Services
454
+ </SideMenuItem>
455
+ <SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
456
+ About Us
457
+ </SideMenuItem>
458
+ <SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
459
+ Contact
460
+ </SideMenuItem>
461
+ </SideMenuList>
462
+
463
+ <SideMenuList>
464
+ <SideMenuItem href="/account" icon={<Icon name="User" size="sm" />}>
465
+ My Account
466
+ </SideMenuItem>
467
+ <SideMenuItem href="/orders" icon={<Icon name="FileText" size="sm" />}>
468
+ Order History
469
+ </SideMenuItem>
470
+ <SideMenuItem href="/support" icon={<Icon name="Question" size="sm" />}>
471
+ Support
472
+ </SideMenuItem>
473
+ </SideMenuList>
474
+ </SideMenu>
475
+ </div>
476
+ ),
477
+ args: {
478
+ onToggle: fn(),
479
+ },
480
+ };
481
+
482
+ // E-commerce Navigation Example
483
+ export const EcommerceNavigation: Story = {
484
+ args: {
485
+ title: 'Shop Categories',
486
+ children: (
487
+ <>
488
+ <SideMenuList>
489
+ <SideMenuItem href="/electronics" icon={<Icon name="DeviceMobile" size="sm" />} active>
490
+ Electronics
491
+ </SideMenuItem>
492
+ <SideMenuItem href="/clothing" icon={<Icon name="TShirt" size="sm" />}>
493
+ Clothing
494
+ </SideMenuItem>
495
+ <SideMenuItem href="/home-garden" icon={<Icon name="House" size="sm" />}>
496
+ Home & Garden
497
+ </SideMenuItem>
498
+ <SideMenuItem href="/sports" icon={<Icon name="Basketball" size="sm" />}>
499
+ Sports & Outdoors
500
+ </SideMenuItem>
501
+ </SideMenuList>
502
+
503
+ <SideMenuList>
504
+ <SideMenuItem href="/account" icon={<Icon name="User" size="sm" />}>
505
+ My Account
506
+ </SideMenuItem>
507
+ <SideMenuItem href="/orders" icon={<Icon name="Package" size="sm" />}>
508
+ Order History
509
+ </SideMenuItem>
510
+ <SideMenuItem href="/wishlist" icon={<Icon name="Heart" size="sm" />}>
511
+ Wishlist
512
+ </SideMenuItem>
513
+ <SideMenuItem href="/cart" icon={<Icon name="ShoppingCart" size="sm" />}>
514
+ Shopping Cart
515
+ </SideMenuItem>
516
+ </SideMenuList>
517
+ </>
518
+ ),
519
+ collapsible: true,
520
+ onToggle: fn(),
521
+ },
522
+ };
523
+
524
+ // Interactive Demo with Actions
525
+ export const InteractiveDemo: Story = {
526
+ render: args => {
527
+ const [activeItem, setActiveItem] = React.useState('/dashboard');
528
+ const [isOpen, setIsOpen] = React.useState(false);
529
+
530
+ const handleToggle = (newIsOpen: boolean) => {
531
+ setIsOpen(newIsOpen);
532
+ args.onToggle?.(newIsOpen);
533
+ };
534
+
535
+ const handleItemClick = (href: string) => {
536
+ setActiveItem(href);
537
+ // Simulate navigation action
538
+ args.onToggle?.(false); // Close menu on mobile after selection
539
+ };
540
+
541
+ return (
542
+ <div>
543
+ <div
544
+ style={{
545
+ marginBottom: '1rem',
546
+ padding: '0.5rem',
547
+ backgroundColor: '#f5f5f5',
548
+ borderRadius: '4px',
549
+ }}
550
+ >
551
+ <strong>Current Page:</strong> {activeItem} | <strong>Menu:</strong>{' '}
552
+ {isOpen ? 'Open' : 'Closed'}
553
+ </div>
554
+
555
+ <SideMenu
556
+ {...args}
557
+ title="Interactive Menu"
558
+ isOpen={isOpen}
559
+ onToggle={handleToggle}
560
+ collapsible
561
+ >
562
+ <SideMenuList>
563
+ <SideMenuItem
564
+ href="/dashboard"
565
+ icon={<Icon name="ChartBar" size="sm" />}
566
+ active={activeItem === '/dashboard'}
567
+ onClick={() => handleItemClick('/dashboard')}
568
+ >
569
+ Dashboard
570
+ </SideMenuItem>
571
+ <SideMenuItem
572
+ href="/analytics"
573
+ icon={<Icon name="TrendUp" size="sm" />}
574
+ active={activeItem === '/analytics'}
575
+ onClick={() => handleItemClick('/analytics')}
576
+ >
577
+ Analytics
578
+ </SideMenuItem>
579
+ <SideMenuItem
580
+ href="/users"
581
+ icon={<Icon name="Users" size="sm" />}
582
+ active={activeItem === '/users'}
583
+ onClick={() => handleItemClick('/users')}
584
+ >
585
+ Users
586
+ </SideMenuItem>
587
+ </SideMenuList>
588
+
589
+ <SideMenuList>
590
+ <SideMenuItem
591
+ href="/settings"
592
+ icon={<Icon name="Gear" size="sm" />}
593
+ active={activeItem === '/settings'}
594
+ onClick={() => handleItemClick('/settings')}
595
+ >
596
+ Settings
597
+ </SideMenuItem>
598
+ <SideMenuItem onClick={fn()} icon={<Icon name="SignOut" size="sm" />}>
599
+ Logout
600
+ </SideMenuItem>
601
+ </SideMenuList>
602
+ </SideMenu>
603
+ </div>
604
+ );
605
+ },
606
+ args: {
607
+ onToggle: fn(),
608
+ },
609
+ };