@shohojdhara/atomix 0.1.30 → 0.2.1

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 (469) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/LICENSE +0 -0
  3. package/README.md +151 -39
  4. package/dist/atomix.css +13529 -0
  5. package/dist/atomix.min.css +15 -0
  6. package/dist/index.d.ts +6112 -1757
  7. package/dist/index.esm.js +16852 -8364
  8. package/dist/index.esm.js.map +1 -1
  9. package/dist/index.js +16892 -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 +13241 -0
  14. package/dist/themes/boomdevs.min.css +353 -0
  15. package/dist/themes/esrar.css +15374 -0
  16. package/dist/themes/esrar.min.css +189 -0
  17. package/dist/themes/mashroom.css +28079 -0
  18. package/dist/themes/mashroom.min.css +403 -0
  19. package/dist/themes/shaj-default.css +14203 -0
  20. package/dist/themes/shaj-default.min.css +500 -0
  21. package/dist/themes/yabai.css +13711 -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/Form/Checkbox.stories.tsx +76 -0
  102. package/src/components/Form/Checkbox.tsx +69 -0
  103. package/src/components/Form/Form.stories.tsx +497 -0
  104. package/src/components/Form/Form.tsx +46 -0
  105. package/src/components/Form/FormGroup.stories.tsx +162 -0
  106. package/src/components/Form/FormGroup.tsx +53 -0
  107. package/src/components/Form/Input.stories.tsx +106 -0
  108. package/src/components/Form/Input.tsx +87 -0
  109. package/src/components/Form/Radio.stories.tsx +94 -0
  110. package/src/components/Form/Radio.tsx +65 -0
  111. package/src/components/Form/Select.stories.tsx +151 -0
  112. package/src/components/Form/Select.tsx +191 -0
  113. package/src/components/Form/Textarea.stories.tsx +123 -0
  114. package/src/components/Form/Textarea.tsx +78 -0
  115. package/src/components/Form/index.ts +7 -0
  116. package/src/components/Hero/Hero.stories.tsx +295 -0
  117. package/src/components/Hero/Hero.tsx +175 -0
  118. package/src/components/Hero/index.ts +6 -0
  119. package/src/components/Icon/Icon.tsx +87 -0
  120. package/src/components/Icon/index.ts +2 -0
  121. package/src/components/List/List.stories.tsx +122 -0
  122. package/src/components/List/List.tsx +35 -0
  123. package/src/components/List/ListGroup.tsx +35 -0
  124. package/src/components/List/index.ts +2 -0
  125. package/src/components/Messages/Messages.stories.tsx +160 -0
  126. package/src/components/Messages/Messages.tsx +172 -0
  127. package/src/components/Messages/index.ts +3 -0
  128. package/src/components/Modal/Modal.stories.tsx +284 -0
  129. package/src/components/Modal/Modal.tsx +198 -0
  130. package/src/components/Modal/README.md +169 -0
  131. package/src/components/Modal/index.ts +1 -0
  132. package/src/components/Navigation/Menu/MegaMenu.tsx +109 -0
  133. package/src/components/Navigation/Menu/Menu.stories.tsx +339 -0
  134. package/src/components/Navigation/Menu/Menu.tsx +111 -0
  135. package/src/components/Navigation/Nav/Nav.stories.tsx +456 -0
  136. package/src/components/Navigation/Nav/Nav.tsx +51 -0
  137. package/src/components/Navigation/Nav/NavDropdown.tsx +105 -0
  138. package/src/components/Navigation/Nav/NavItem.tsx +168 -0
  139. package/src/components/Navigation/Navbar/Navbar.stories.tsx +569 -0
  140. package/src/components/Navigation/Navbar/Navbar.tsx +150 -0
  141. package/src/components/Navigation/README.md +314 -0
  142. package/src/components/Navigation/SideMenu/SideMenu.README.md +494 -0
  143. package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +609 -0
  144. package/src/components/Navigation/SideMenu/SideMenu.tsx +101 -0
  145. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +103 -0
  146. package/src/components/Navigation/SideMenu/SideMenuList.tsx +41 -0
  147. package/src/components/Navigation/index.ts +23 -0
  148. package/src/components/Pagination/Pagination.stories.tsx +188 -0
  149. package/src/components/Pagination/Pagination.tsx +162 -0
  150. package/src/components/Pagination/index.ts +1 -0
  151. package/src/components/PhotoViewer/PhotoViewer.stories.tsx +397 -0
  152. package/src/components/PhotoViewer/PhotoViewer.tsx +246 -0
  153. package/src/components/PhotoViewer/PhotoViewerHeader.tsx +184 -0
  154. package/src/components/PhotoViewer/PhotoViewerImage.tsx +173 -0
  155. package/src/components/PhotoViewer/PhotoViewerInfo.tsx +91 -0
  156. package/src/components/PhotoViewer/PhotoViewerNavigation.tsx +85 -0
  157. package/src/components/PhotoViewer/PhotoViewerThumbnails.tsx +63 -0
  158. package/src/components/PhotoViewer/README.md +358 -0
  159. package/src/components/PhotoViewer/examples/ImageGallery.tsx +187 -0
  160. package/src/components/PhotoViewer/examples/SimpleGallery.tsx +73 -0
  161. package/src/components/PhotoViewer/examples/index.ts +2 -0
  162. package/src/components/PhotoViewer/index.ts +14 -0
  163. package/src/components/Popover/Popover.stories.tsx +143 -0
  164. package/src/components/Popover/Popover.tsx +137 -0
  165. package/src/components/Popover/index.ts +5 -0
  166. package/src/components/Popover/readme.md +120 -0
  167. package/src/components/ProductReview/ProductReview.stories.tsx +88 -0
  168. package/src/components/ProductReview/ProductReview.tsx +169 -0
  169. package/src/components/ProductReview/index.ts +3 -0
  170. package/src/components/Progress/Progress.stories.tsx +75 -0
  171. package/src/components/Progress/Progress.tsx +45 -0
  172. package/src/components/Progress/index.ts +1 -0
  173. package/src/components/Rating/Rating.stories.tsx +109 -0
  174. package/src/components/Rating/Rating.tsx +286 -0
  175. package/src/components/Rating/index.ts +6 -0
  176. package/src/components/River/River.stories.tsx +230 -0
  177. package/src/components/River/River.tsx +134 -0
  178. package/src/components/River/index.ts +2 -0
  179. package/src/components/SectionIntro/SectionIntro.stories.tsx +143 -0
  180. package/src/components/SectionIntro/SectionIntro.tsx +184 -0
  181. package/src/components/SectionIntro/index.ts +3 -0
  182. package/src/components/Slider/Slider.stories.tsx +241 -0
  183. package/src/components/Slider/Slider.tsx +225 -0
  184. package/src/components/Slider/index.ts +24 -0
  185. package/src/components/Spinner/Spinner.stories.tsx +65 -0
  186. package/src/components/Spinner/Spinner.tsx +36 -0
  187. package/src/components/Spinner/index.ts +2 -0
  188. package/src/components/Steps/Steps.stories.tsx +158 -0
  189. package/src/components/Steps/Steps.tsx +115 -0
  190. package/src/components/Steps/index.ts +3 -0
  191. package/src/components/Tab/Tab.stories.tsx +129 -0
  192. package/src/components/Tab/Tab.tsx +111 -0
  193. package/src/components/Tab/index.ts +2 -0
  194. package/src/components/Testimonial/Testimonial.stories.tsx +180 -0
  195. package/src/components/Testimonial/Testimonial.tsx +138 -0
  196. package/src/components/Testimonial/index.ts +3 -0
  197. package/src/components/Todo/Todo.stories.tsx +103 -0
  198. package/src/components/Todo/Todo.tsx +158 -0
  199. package/src/components/Todo/index.ts +1 -0
  200. package/src/components/Toggle/Toggle.stories.tsx +49 -0
  201. package/src/components/Toggle/Toggle.tsx +84 -0
  202. package/src/components/Toggle/index.ts +2 -0
  203. package/src/components/Tooltip/Tooltip.stories.tsx +115 -0
  204. package/src/components/Tooltip/Tooltip.tsx +150 -0
  205. package/src/components/Tooltip/index.ts +3 -0
  206. package/src/components/Upload/Upload.stories.tsx +220 -0
  207. package/src/components/Upload/Upload.tsx +354 -0
  208. package/src/components/Upload/index.ts +3 -0
  209. package/src/components/VideoPlayer/VideoPlayer.stories.tsx +484 -0
  210. package/src/components/VideoPlayer/VideoPlayer.tsx +574 -0
  211. package/src/components/VideoPlayer/index.ts +7 -0
  212. package/src/components/index.ts +111 -0
  213. package/src/layouts/Grid/Container.tsx +58 -0
  214. package/src/layouts/Grid/Grid.stories.tsx +861 -0
  215. package/src/layouts/Grid/Grid.tsx +68 -0
  216. package/src/layouts/Grid/GridCol.tsx +161 -0
  217. package/src/layouts/Grid/README.md +108 -0
  218. package/src/layouts/Grid/Row.tsx +70 -0
  219. package/src/layouts/Grid/index.ts +8 -0
  220. package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +387 -0
  221. package/src/layouts/MasonryGrid/MasonryGrid.tsx +408 -0
  222. package/src/layouts/MasonryGrid/MasonryGridItem.tsx +44 -0
  223. package/src/layouts/MasonryGrid/README.md +117 -0
  224. package/src/layouts/MasonryGrid/index.ts +4 -0
  225. package/src/layouts/index.ts +7 -0
  226. package/src/lib/README.md +89 -0
  227. package/src/lib/composables/index.ts +63 -0
  228. package/src/lib/composables/useAccordion.ts +129 -0
  229. package/src/lib/composables/useAmbientMode.ts +90 -0
  230. package/src/lib/composables/useBadge.ts +42 -0
  231. package/src/lib/composables/useBarChart.ts +365 -0
  232. package/src/lib/composables/useBlock.ts +56 -0
  233. package/src/lib/composables/useBreadcrumb.ts +81 -0
  234. package/src/lib/composables/useButton.ts +59 -0
  235. package/src/lib/composables/useCallout.ts +55 -0
  236. package/src/lib/composables/useCard.ts +155 -0
  237. package/src/lib/composables/useChart.ts +1082 -0
  238. package/src/lib/composables/useChartAnalytics.ts +505 -0
  239. package/src/lib/composables/useChartData.ts +38 -0
  240. package/src/lib/composables/useChartExport.ts +392 -0
  241. package/src/lib/composables/useChartInteraction.ts +34 -0
  242. package/src/lib/composables/useChartInteractions.ts +123 -0
  243. package/src/lib/composables/useChartPerformance.ts +323 -0
  244. package/src/lib/composables/useChartScale.ts +48 -0
  245. package/src/lib/composables/useChartToolbar.ts +532 -0
  246. package/src/lib/composables/useCheckbox.ts +70 -0
  247. package/src/lib/composables/useDataTable.ts +208 -0
  248. package/src/lib/composables/useDatePicker.ts +564 -0
  249. package/src/lib/composables/useDropdown.ts +272 -0
  250. package/src/lib/composables/useEdgePanel.ts +261 -0
  251. package/src/lib/composables/useForm.ts +62 -0
  252. package/src/lib/composables/useFormGroup.ts +51 -0
  253. package/src/lib/composables/useHero.ts +250 -0
  254. package/src/lib/composables/useInput.ts +58 -0
  255. package/src/lib/composables/useLineChart.ts +319 -0
  256. package/src/lib/composables/useMessages.ts +77 -0
  257. package/src/lib/composables/useModal.ts +110 -0
  258. package/src/lib/composables/useNavbar.ts +288 -0
  259. package/src/lib/composables/usePagination.ts +101 -0
  260. package/src/lib/composables/usePhotoViewer.ts +937 -0
  261. package/src/lib/composables/usePieChart.ts +362 -0
  262. package/src/lib/composables/usePopover.ts +354 -0
  263. package/src/lib/composables/useProgress.ts +74 -0
  264. package/src/lib/composables/useRadio.ts +47 -0
  265. package/src/lib/composables/useRating.ts +174 -0
  266. package/src/lib/composables/useRiver.ts +205 -0
  267. package/src/lib/composables/useSelect.ts +52 -0
  268. package/src/lib/composables/useSideMenu.ts +197 -0
  269. package/src/lib/composables/useSlider.ts +339 -0
  270. package/src/lib/composables/useSpinner.ts +42 -0
  271. package/src/lib/composables/useTextarea.ts +55 -0
  272. package/src/lib/composables/useTodo.ts +141 -0
  273. package/src/lib/composables/useVideoPlayer.ts +398 -0
  274. package/src/lib/constants/components.ts +1433 -0
  275. package/src/lib/constants/index.ts +4 -0
  276. package/src/lib/index.ts +11 -0
  277. package/src/lib/types/components.ts +4750 -0
  278. package/src/lib/types/index.ts +2 -0
  279. package/src/lib/utils/dom.ts +41 -0
  280. package/src/lib/utils/icons.ts +74 -0
  281. package/src/lib/utils/index.ts +55 -0
  282. package/src/lib/utils/useForkRef.test.tsx +64 -0
  283. package/src/lib/utils/useForkRef.ts +36 -0
  284. package/src/lib/utils.test.ts +14 -0
  285. package/src/styles/01-settings/_index.scss +2 -0
  286. package/src/styles/01-settings/_settings.accordion.scss +7 -5
  287. package/src/styles/01-settings/_settings.animations.scss +0 -0
  288. package/src/styles/01-settings/_settings.avatar-group.scss +6 -3
  289. package/src/styles/01-settings/_settings.avatar.scss +2 -2
  290. package/src/styles/01-settings/_settings.badge.scss +15 -9
  291. package/src/styles/01-settings/_settings.block.scss +11 -0
  292. package/src/styles/01-settings/_settings.border-radius.scss +12 -9
  293. package/src/styles/01-settings/_settings.border.scss +4 -1
  294. package/src/styles/01-settings/_settings.box-shadow.scss +1 -1
  295. package/src/styles/01-settings/_settings.breadcrumb.scss +9 -8
  296. package/src/styles/01-settings/_settings.breakpoints.scss +0 -0
  297. package/src/styles/01-settings/_settings.btn-group.scss +4 -1
  298. package/src/styles/01-settings/_settings.button.scss +19 -21
  299. package/src/styles/01-settings/_settings.callout.scss +42 -24
  300. package/src/styles/01-settings/_settings.card.scss +12 -10
  301. package/src/styles/01-settings/_settings.chart.scss +199 -0
  302. package/src/styles/01-settings/_settings.checkbox-group.scss +0 -0
  303. package/src/styles/01-settings/_settings.checkbox.scss +0 -0
  304. package/src/styles/01-settings/_settings.color-mode.scss +0 -0
  305. package/src/styles/01-settings/_settings.colors.scss +20 -0
  306. package/src/styles/01-settings/_settings.config.scss +1 -1
  307. package/src/styles/01-settings/_settings.countdown.scss +0 -0
  308. package/src/styles/01-settings/_settings.data-table.scss +0 -0
  309. package/src/styles/01-settings/_settings.datepicker.scss +0 -0
  310. package/src/styles/01-settings/_settings.dropdown.scss +0 -0
  311. package/src/styles/01-settings/_settings.edge-panel.scss +0 -0
  312. package/src/styles/01-settings/_settings.fonts.scss +1 -1
  313. package/src/styles/01-settings/_settings.form-group.scss +0 -0
  314. package/src/styles/01-settings/_settings.form.scss +0 -0
  315. package/src/styles/01-settings/_settings.grid.scss +3 -3
  316. package/src/styles/01-settings/_settings.hero.scss +1 -1
  317. package/src/styles/01-settings/_settings.input.scss +1 -1
  318. package/src/styles/01-settings/_settings.link.scss +0 -0
  319. package/src/styles/01-settings/_settings.list-group.scss +0 -0
  320. package/src/styles/01-settings/_settings.list.scss +0 -0
  321. package/src/styles/01-settings/_settings.maps.scss +43 -8
  322. package/src/styles/01-settings/_settings.masonry-grid.scss +0 -0
  323. package/src/styles/01-settings/_settings.menu.scss +0 -0
  324. package/src/styles/01-settings/_settings.messages.scss +0 -0
  325. package/src/styles/01-settings/_settings.modal.scss +1 -1
  326. package/src/styles/01-settings/_settings.nav.scss +0 -0
  327. package/src/styles/01-settings/_settings.navbar.scss +0 -0
  328. package/src/styles/01-settings/_settings.pagination.scss +0 -0
  329. package/src/styles/01-settings/_settings.photoviewer.scss +89 -23
  330. package/src/styles/01-settings/_settings.popover.scss +0 -0
  331. package/src/styles/01-settings/_settings.position.scss +0 -0
  332. package/src/styles/01-settings/_settings.progress.scss +0 -0
  333. package/src/styles/01-settings/_settings.rating.scss +0 -0
  334. package/src/styles/01-settings/_settings.river.scss +0 -0
  335. package/src/styles/01-settings/_settings.sectionintro.scss +0 -0
  336. package/src/styles/01-settings/_settings.select.scss +0 -0
  337. package/src/styles/01-settings/_settings.side-menu.scss +0 -0
  338. package/src/styles/01-settings/_settings.skeleton.scss +0 -0
  339. package/src/styles/01-settings/_settings.slider.scss +59 -0
  340. package/src/styles/01-settings/_settings.spacing.scss +11 -3
  341. package/src/styles/01-settings/_settings.spinner.scss +0 -0
  342. package/src/styles/01-settings/_settings.steps.scss +1 -1
  343. package/src/styles/01-settings/_settings.tabs.scss +4 -4
  344. package/src/styles/01-settings/_settings.testimonials.scss +0 -0
  345. package/src/styles/01-settings/_settings.todo.scss +0 -0
  346. package/src/styles/01-settings/_settings.toggle.scss +1 -1
  347. package/src/styles/01-settings/_settings.tooltip.scss +0 -0
  348. package/src/styles/01-settings/_settings.typography.scss +2 -0
  349. package/src/styles/01-settings/_settings.upload.scss +0 -0
  350. package/src/styles/01-settings/_settings.video-player.scss +64 -0
  351. package/src/styles/01-settings/_settings.z-layers.scss +0 -0
  352. package/src/styles/02-tools/_index.scss +1 -0
  353. package/src/styles/02-tools/_tools.animations.scss +82 -0
  354. package/src/styles/02-tools/_tools.border-radius.scss +0 -0
  355. package/src/styles/02-tools/_tools.breakpoints.scss +0 -0
  356. package/src/styles/02-tools/_tools.button.scss +5 -0
  357. package/src/styles/02-tools/_tools.clearfix.scss +0 -0
  358. package/src/styles/02-tools/_tools.color-functions.scss +0 -0
  359. package/src/styles/02-tools/_tools.color-mode.scss +1 -1
  360. package/src/styles/02-tools/_tools.component.scss +479 -0
  361. package/src/styles/02-tools/_tools.event.scss +0 -0
  362. package/src/styles/02-tools/_tools.grid.scss +0 -0
  363. package/src/styles/02-tools/_tools.hidden-visually.scss +0 -0
  364. package/src/styles/02-tools/_tools.hidden.scss +0 -0
  365. package/src/styles/02-tools/_tools.map-loop.scss +0 -0
  366. package/src/styles/02-tools/_tools.media-queries.scss +0 -0
  367. package/src/styles/02-tools/_tools.object-fit.scss +0 -0
  368. package/src/styles/02-tools/_tools.placeholder.scss +0 -0
  369. package/src/styles/02-tools/_tools.rem.scss +5 -1
  370. package/src/styles/02-tools/_tools.size.scss +0 -0
  371. package/src/styles/02-tools/_tools.spacing.scss +0 -0
  372. package/src/styles/02-tools/_tools.to-rgb.scss +0 -0
  373. package/src/styles/02-tools/_tools.transition.scss +0 -0
  374. package/src/styles/02-tools/_tools.utilities.scss +0 -0
  375. package/src/styles/02-tools/_tools.utility-api.scss +23 -2
  376. package/src/styles/03-generic/_generic.fonts.scss +0 -0
  377. package/src/styles/03-generic/_generic.reset.scss +0 -0
  378. package/src/styles/03-generic/_generic.root.scss +5 -1
  379. package/src/styles/03-generic/_generic.selection.scss +0 -0
  380. package/src/styles/03-generic/_index.scss +0 -0
  381. package/src/styles/04-elements/_elements.all.scss +0 -0
  382. package/src/styles/04-elements/_elements.body.scss +0 -0
  383. package/src/styles/04-elements/_elements.heading.scss +0 -0
  384. package/src/styles/04-elements/_elements.html.scss +0 -0
  385. package/src/styles/04-elements/_elements.links.scss +0 -0
  386. package/src/styles/04-elements/_index.scss +0 -0
  387. package/src/styles/05-objects/_index.scss +1 -0
  388. package/src/styles/05-objects/_objects.block.scss +122 -0
  389. package/src/styles/05-objects/_objects.container.scss +14 -10
  390. package/src/styles/05-objects/_objects.grid.scss +0 -0
  391. package/src/styles/05-objects/_objects.masonry-grid.scss +0 -0
  392. package/src/styles/06-components/_components.accordion.scss +3 -1
  393. package/src/styles/06-components/_components.avatar-group.scss +0 -0
  394. package/src/styles/06-components/_components.avatar.scss +0 -0
  395. package/src/styles/06-components/_components.badge.scss +9 -9
  396. package/src/styles/06-components/_components.breadcrumb.scss +0 -0
  397. package/src/styles/06-components/_components.btn-group.scss +0 -0
  398. package/src/styles/06-components/_components.button.scss +0 -0
  399. package/src/styles/06-components/_components.callout.scss +2 -1
  400. package/src/styles/06-components/_components.card.scss +0 -1
  401. package/src/styles/06-components/_components.chart.scss +2102 -0
  402. package/src/styles/06-components/_components.checkbox-group.scss +0 -0
  403. package/src/styles/06-components/_components.checkbox.scss +0 -0
  404. package/src/styles/06-components/_components.color-mode-toggle.scss +0 -0
  405. package/src/styles/06-components/_components.countdown.scss +0 -0
  406. package/src/styles/06-components/_components.data-table.scss +0 -0
  407. package/src/styles/06-components/_components.datepicker.scss +0 -0
  408. package/src/styles/06-components/_components.dropdown.scss +0 -0
  409. package/src/styles/06-components/_components.edge-panel.scss +0 -0
  410. package/src/styles/06-components/_components.form-group.scss +0 -0
  411. package/src/styles/06-components/_components.form.scss +0 -0
  412. package/src/styles/06-components/_components.hero.scss +1 -0
  413. package/src/styles/06-components/_components.icon.scss +2 -2
  414. package/src/styles/06-components/_components.image-gallery.scss +0 -0
  415. package/src/styles/06-components/_components.input.scss +0 -0
  416. package/src/styles/06-components/_components.list-group.scss +0 -0
  417. package/src/styles/06-components/_components.list.scss +0 -0
  418. package/src/styles/06-components/_components.menu.scss +0 -0
  419. package/src/styles/06-components/_components.messages.scss +0 -0
  420. package/src/styles/06-components/_components.modal.scss +3 -0
  421. package/src/styles/06-components/_components.nav.scss +0 -0
  422. package/src/styles/06-components/_components.navbar.scss +0 -0
  423. package/src/styles/06-components/_components.pagination.scss +0 -0
  424. package/src/styles/06-components/_components.photoviewer.scss +603 -545
  425. package/src/styles/06-components/_components.popover.scss +0 -0
  426. package/src/styles/06-components/_components.product-review.scss +0 -0
  427. package/src/styles/06-components/_components.progress.scss +0 -0
  428. package/src/styles/06-components/_components.rating.scss +0 -0
  429. package/src/styles/06-components/_components.river.scss +0 -0
  430. package/src/styles/06-components/_components.sectionintro.scss +0 -0
  431. package/src/styles/06-components/_components.select.scss +0 -0
  432. package/src/styles/06-components/_components.side-menu.scss +0 -0
  433. package/src/styles/06-components/_components.skeleton.scss +0 -0
  434. package/src/styles/06-components/_components.slider.scss +273 -0
  435. package/src/styles/06-components/_components.spinner.scss +0 -0
  436. package/src/styles/06-components/_components.steps.scss +1 -0
  437. package/src/styles/06-components/_components.tabs.scss +0 -0
  438. package/src/styles/06-components/_components.testimonials.scss +0 -0
  439. package/src/styles/06-components/_components.todo.scss +0 -0
  440. package/src/styles/06-components/_components.toggle.scss +0 -0
  441. package/src/styles/06-components/_components.tooltip.scss +4 -9
  442. package/src/styles/06-components/_components.upload.scss +0 -0
  443. package/src/styles/06-components/_components.video-player.scss +623 -0
  444. package/src/styles/06-components/_index.scss +3 -0
  445. package/src/styles/06-components/old.chart.styles.scss +2819 -0
  446. package/src/styles/99-utilities/_index.scss +0 -0
  447. package/src/styles/99-utilities/_utilities.background.scss +0 -0
  448. package/src/styles/99-utilities/_utilities.border.scss +0 -0
  449. package/src/styles/99-utilities/_utilities.clearfix.scss +0 -0
  450. package/src/styles/99-utilities/_utilities.display.scss +0 -0
  451. package/src/styles/99-utilities/_utilities.flex.scss +0 -0
  452. package/src/styles/99-utilities/_utilities.link.scss +0 -0
  453. package/src/styles/99-utilities/_utilities.object-fit.scss +0 -0
  454. package/src/styles/99-utilities/_utilities.opacity.scss +0 -0
  455. package/src/styles/99-utilities/_utilities.overflow.scss +0 -0
  456. package/src/styles/99-utilities/_utilities.position.scss +0 -0
  457. package/src/styles/99-utilities/_utilities.scss +2 -1
  458. package/src/styles/99-utilities/_utilities.shadow.scss +0 -0
  459. package/src/styles/99-utilities/_utilities.sizes.scss +0 -0
  460. package/src/styles/99-utilities/_utilities.spacing.scss +0 -0
  461. package/src/styles/99-utilities/_utilities.text.scss +5 -0
  462. package/src/styles/99-utilities/_utilities.visibility.scss +0 -0
  463. package/src/styles/99-utilities/_utilities.visually-hidden.scss +0 -0
  464. package/src/styles/99-utilities/_utilities.z-index.scss +0 -0
  465. package/src/styles/css-modules.d.ts +0 -0
  466. package/src/styles/index.scss +0 -0
  467. package/dist/index.css +0 -15
  468. package/dist/index.esm.css +0 -15
  469. package/dist/index.min.css +0 -15
@@ -0,0 +1,169 @@
1
+ # Modal Component
2
+
3
+ The Modal component provides a flexible and accessible dialog window that can be used for various purposes like notifications, forms, and more.
4
+
5
+ ## Usage
6
+
7
+ ### HTML Structure
8
+
9
+ ```html
10
+ <div class="c-modal" id="myModal">
11
+ <div class="c-modal__backdrop"></div>
12
+ <div class="c-modal__dialog">
13
+ <div class="c-modal__content">
14
+ <div class="c-modal__header">
15
+ <div class="c-modal__header-content">
16
+ <h3 class="c-modal__title">Modal Title</h3>
17
+ <p class="c-modal__sub">Subtitle text</p>
18
+ </div>
19
+ <button type="button" class="c-modal__close c-btn js-modal-close" aria-label="Close modal">
20
+ <svg><!-- Close icon SVG --></svg>
21
+ </button>
22
+ </div>
23
+
24
+ <div class="c-modal__body">
25
+ Modal content goes here
26
+ </div>
27
+
28
+ <div class="c-modal__footer">
29
+ <button class="c-btn c-btn--primary">Save</button>
30
+ <button class="c-btn js-modal-close">Cancel</button>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ ```
36
+
37
+ ### JavaScript Initialization
38
+
39
+ #### Automatic Initialization
40
+
41
+ The Modal component can be automatically initialized for all modals on the page:
42
+
43
+ ```js
44
+ // Initialize all modals on the page
45
+ Atomix.initializeModals();
46
+
47
+ // Setup event delegation for dynamically added modals
48
+ Atomix.setupModalEventDelegation();
49
+ ```
50
+
51
+ #### Manual Initialization
52
+
53
+ You can also manually initialize modals with custom options:
54
+
55
+ ```js
56
+ // Initialize a specific modal
57
+ const modal = new Atomix.Modal('#myModal', {
58
+ backdrop: true,
59
+ keyboard: true,
60
+ size: 'md',
61
+ onOpen: function() {
62
+ console.log('Modal opened');
63
+ },
64
+ onClose: function() {
65
+ console.log('Modal closed');
66
+ }
67
+ });
68
+ ```
69
+
70
+ ### API
71
+
72
+ #### Opening and Closing Modals
73
+
74
+ ```js
75
+ // Get a modal instance
76
+ const modalInstance = Atomix.getModalInstance('#myModal');
77
+
78
+ // Open modal
79
+ modalInstance.open();
80
+
81
+ // Close modal
82
+ modalInstance.close();
83
+
84
+ // Toggle modal
85
+ modalInstance.toggle();
86
+ ```
87
+
88
+ #### Trigger Buttons
89
+
90
+ You can use data attributes to trigger modals:
91
+
92
+ ```html
93
+ <!-- Open button -->
94
+ <button data-target="#myModal" class="js-modal-open">Open Modal</button>
95
+
96
+ <!-- or use data-modal-open attribute -->
97
+ <button data-modal-open="myModal">Open Modal</button>
98
+
99
+ <!-- Close button -->
100
+ <button class="js-modal-close">Close</button>
101
+
102
+ <!-- or use data-modal-close attribute -->
103
+ <button data-modal-close>Close</button>
104
+ ```
105
+
106
+ ### Configuration Options
107
+
108
+ | Option | Type | Default | Description |
109
+ | ------ | ---- | ------- | ----------- |
110
+ | openSelector | string | '.js-modal-open' | Selector for buttons that open the modal |
111
+ | closeSelector | string | '.js-modal-close' | Selector for buttons that close the modal |
112
+ | dialogSelector | string | '.c-modal__dialog' | Selector for the dialog element |
113
+ | backdropSelector | string | '.c-modal__backdrop' | Selector for the backdrop element |
114
+ | backdrop | boolean | true | Whether clicking the backdrop closes the modal |
115
+ | keyboard | boolean | true | Whether pressing ESC key closes the modal |
116
+ | size | string | 'md' | Size of the modal ('sm', 'md', 'lg', 'xl') |
117
+ | onOpen | function | null | Callback when modal opens |
118
+ | onClose | function | null | Callback when modal closes |
119
+ | onToggle | function | null | Callback when modal toggles with state parameter |
120
+
121
+ ### Data Attributes
122
+
123
+ You can configure modals using data attributes:
124
+
125
+ ```html
126
+ <div class="c-modal"
127
+ id="configModal"
128
+ data-backdrop="true"
129
+ data-keyboard="true"
130
+ data-size="lg">
131
+ <!-- Modal content -->
132
+ </div>
133
+ ```
134
+
135
+ ### Events
136
+
137
+ The Modal component dispatches custom events:
138
+
139
+ ```js
140
+ const modal = document.getElementById('myModal');
141
+
142
+ // Listen for modal open event
143
+ modal.addEventListener('modal:open', (event) => {
144
+ console.log('Modal opened', event.detail.instance);
145
+ });
146
+
147
+ // Listen for modal close event
148
+ modal.addEventListener('modal:close', (event) => {
149
+ console.log('Modal closed', event.detail.instance);
150
+ });
151
+
152
+ // Listen for modal destroy event
153
+ modal.addEventListener('modal:destroy', (event) => {
154
+ console.log('Modal destroyed', event.detail.instance);
155
+ });
156
+ ```
157
+
158
+ ## Accessibility
159
+
160
+ The Modal component includes several accessibility features:
161
+
162
+ - Proper ARIA attributes (`role="dialog"`, `aria-modal="true"`)
163
+ - Focus management (traps focus inside the modal)
164
+ - Keyboard support (ESC key to close)
165
+ - Screen reader friendly
166
+
167
+ ## Browser Support
168
+
169
+ The Modal component supports all modern browsers and Internet Explorer 11+.
@@ -0,0 +1 @@
1
+ export { default } from './Modal';
@@ -0,0 +1,109 @@
1
+ import React, { forwardRef, ReactNode } from 'react';
2
+ import {
3
+ MegaMenuProps,
4
+ MegaMenuColumnProps,
5
+ MegaMenuLinkProps,
6
+ } from '../../../lib/types/components';
7
+ import { Icon } from '../../Icon/Icon';
8
+ import { mapIconName } from './Menu'; // Import the mapping function
9
+
10
+ export const MegaMenu: React.FC<MegaMenuProps> = forwardRef<HTMLDivElement, MegaMenuProps>(
11
+ ({ children, className = '', disabled = false }, ref) => {
12
+ return (
13
+ <div ref={ref} className={`c-menu c-menu--mega ${className}`}>
14
+ <div className="c-menu__container">
15
+ <div className="c-menu__grid o-grid">
16
+ {React.Children.map(children, child => {
17
+ if (React.isValidElement(child)) {
18
+ // Pass disabled prop down to all children if MegaMenu is disabled
19
+ const childProps = child.props as any;
20
+ return React.cloneElement(child as React.ReactElement<any>, {
21
+ ...childProps,
22
+ disabled: disabled ? true : childProps?.disabled,
23
+ });
24
+ }
25
+ return child;
26
+ })}
27
+ </div>
28
+ </div>
29
+ </div>
30
+ );
31
+ }
32
+ );
33
+
34
+ export const MegaMenuColumn: React.FC<MegaMenuColumnProps> = forwardRef<
35
+ HTMLDivElement,
36
+ MegaMenuColumnProps
37
+ >(({ title, icon, children, width = 'auto', className = '', disabled = false }, ref) => {
38
+ const columnClass = `o-grid__col o-grid__col--${width} ${className}`;
39
+
40
+ return (
41
+ <div ref={ref} className={columnClass}>
42
+ {(title || icon) && (
43
+ <div className="c-menu__header">
44
+ {icon &&
45
+ (typeof icon === 'string' ? (
46
+ icon.startsWith('c-icon-') ? (
47
+ <Icon
48
+ name={mapIconName(icon.replace('c-icon-', ''))}
49
+ size="sm"
50
+ className="c-menu__header-icon"
51
+ />
52
+ ) : (
53
+ <i className={`c-menu__header-icon ${icon}`}>{typeof icon !== 'string' && icon}</i>
54
+ )
55
+ ) : (
56
+ <span className="c-menu__header-icon">{icon}</span>
57
+ ))}
58
+ {title && <div className="c-menu__header-title">{title}</div>}
59
+ </div>
60
+ )}
61
+
62
+ <ul className="c-menu__subitems-list" role="menu">
63
+ {React.Children.map(children, child => {
64
+ if (React.isValidElement(child)) {
65
+ // Pass disabled prop down to all children if column is disabled
66
+ const childProps = child.props as any;
67
+ return (
68
+ <li className="c-menu__subitem" role="menuitem">
69
+ {React.cloneElement(child as React.ReactElement<any>, {
70
+ ...childProps,
71
+ disabled: disabled ? true : childProps?.disabled,
72
+ })}
73
+ </li>
74
+ );
75
+ }
76
+ return null;
77
+ })}
78
+ </ul>
79
+ </div>
80
+ );
81
+ });
82
+
83
+ export const MegaMenuLink: React.FC<MegaMenuLinkProps> = forwardRef<
84
+ HTMLAnchorElement,
85
+ MegaMenuLinkProps
86
+ >(({ href, children, className = '', disabled = false, onClick }, ref) => {
87
+ const handleClick = (e: React.MouseEvent) => {
88
+ if (disabled) {
89
+ e.preventDefault();
90
+ return;
91
+ }
92
+
93
+ if (onClick) {
94
+ onClick();
95
+ }
96
+ };
97
+
98
+ return (
99
+ <a
100
+ ref={ref}
101
+ href={href}
102
+ className={`c-menu__subitem-link ${disabled ? 'is-disabled' : ''} ${className}`}
103
+ onClick={handleClick}
104
+ aria-disabled={disabled}
105
+ >
106
+ {children}
107
+ </a>
108
+ );
109
+ });
@@ -0,0 +1,339 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Menu, MenuDivider, MenuItem } from './Menu';
3
+
4
+ const meta = {
5
+ title: 'Components/Navigation/Menu',
6
+ component: Menu,
7
+ parameters: {
8
+ layout: 'centered',
9
+ },
10
+ argTypes: {
11
+ disabled: {
12
+ control: 'boolean',
13
+ description: 'Whether the menu is disabled',
14
+ },
15
+ className: {
16
+ control: 'text',
17
+ description: 'Additional CSS class names',
18
+ },
19
+ },
20
+ } satisfies Meta<typeof Menu>;
21
+
22
+ export default meta;
23
+ type Story = StoryObj<typeof meta>;
24
+
25
+ // Mock icon components for stories
26
+ const HomeIcon = () => (
27
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
28
+ <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
29
+ <polyline points="9,22 9,12 15,12 15,22" />
30
+ </svg>
31
+ );
32
+
33
+ const UserIcon = () => (
34
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
35
+ <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" />
36
+ <circle cx="12" cy="7" r="4" />
37
+ </svg>
38
+ );
39
+
40
+ const SettingsIcon = () => (
41
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
42
+ <circle cx="12" cy="12" r="3" />
43
+ <path d="M12 1v6m0 6v6m11-7h-6m-6 0H1" />
44
+ </svg>
45
+ );
46
+
47
+ const FileIcon = () => (
48
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
49
+ <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" />
50
+ <polyline points="14,2 14,8 20,8" />
51
+ <line x1="16" y1="13" x2="8" y2="13" />
52
+ <line x1="16" y1="17" x2="8" y2="17" />
53
+ <polyline points="10,9 9,9 8,9" />
54
+ </svg>
55
+ );
56
+
57
+ const BookmarkIcon = () => (
58
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
59
+ <path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z" />
60
+ </svg>
61
+ );
62
+
63
+ const SignOutIcon = () => (
64
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
65
+ <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" />
66
+ <polyline points="16,17 21,12 16,7" />
67
+ <line x1="21" y1="12" x2="9" y2="12" />
68
+ </svg>
69
+ );
70
+
71
+ // Basic Menu
72
+ export const Default: Story = {
73
+ render: () => (
74
+ <Menu>
75
+ <MenuItem href="/dashboard">Dashboard</MenuItem>
76
+ <MenuItem href="/profile">Profile</MenuItem>
77
+ <MenuItem href="/settings">Settings</MenuItem>
78
+ <MenuItem href="/logout">Logout</MenuItem>
79
+ </Menu>
80
+ ),
81
+ };
82
+
83
+ // Menu with icons
84
+ export const WithIcons: Story = {
85
+ render: () => (
86
+ <Menu>
87
+ <MenuItem href="/dashboard" icon={<HomeIcon />}>
88
+ Dashboard
89
+ </MenuItem>
90
+ <MenuItem href="/profile" icon={<UserIcon />}>
91
+ Profile
92
+ </MenuItem>
93
+ <MenuItem href="/settings" icon={<SettingsIcon />}>
94
+ Settings
95
+ </MenuItem>
96
+ <MenuItem href="/logout" icon={<SignOutIcon />}>
97
+ Logout
98
+ </MenuItem>
99
+ </Menu>
100
+ ),
101
+ };
102
+
103
+ // Menu with dividers
104
+ export const WithDividers: Story = {
105
+ render: () => (
106
+ <Menu>
107
+ <MenuItem href="/dashboard" icon={<HomeIcon />}>
108
+ Dashboard
109
+ </MenuItem>
110
+ <MenuItem href="/profile" icon={<UserIcon />}>
111
+ Profile
112
+ </MenuItem>
113
+ <MenuDivider />
114
+ <MenuItem href="/settings" icon={<SettingsIcon />}>
115
+ Settings
116
+ </MenuItem>
117
+ <MenuDivider />
118
+ <MenuItem href="/logout" icon={<SignOutIcon />}>
119
+ Logout
120
+ </MenuItem>
121
+ </Menu>
122
+ ),
123
+ };
124
+
125
+ // Menu with active item
126
+ export const WithActiveItem: Story = {
127
+ render: () => (
128
+ <Menu>
129
+ <MenuItem href="/dashboard" icon={<HomeIcon />} active>
130
+ Dashboard
131
+ </MenuItem>
132
+ <MenuItem href="/profile" icon={<UserIcon />}>
133
+ Profile
134
+ </MenuItem>
135
+ <MenuItem href="/settings" icon={<SettingsIcon />}>
136
+ Settings
137
+ </MenuItem>
138
+ <MenuItem href="/logout" icon={<SignOutIcon />}>
139
+ Logout
140
+ </MenuItem>
141
+ </Menu>
142
+ ),
143
+ };
144
+
145
+ // Menu with disabled items
146
+ export const WithDisabledItems: Story = {
147
+ render: () => (
148
+ <Menu>
149
+ <MenuItem href="/dashboard" icon={<HomeIcon />}>
150
+ Dashboard
151
+ </MenuItem>
152
+ <MenuItem href="/profile" icon={<UserIcon />} disabled>
153
+ Profile (Disabled)
154
+ </MenuItem>
155
+ <MenuItem href="/settings" icon={<SettingsIcon />}>
156
+ Settings
157
+ </MenuItem>
158
+ <MenuItem href="/logout" icon={<SignOutIcon />}>
159
+ Logout
160
+ </MenuItem>
161
+ </Menu>
162
+ ),
163
+ };
164
+
165
+ // Disabled Menu
166
+ export const DisabledMenu: Story = {
167
+ args: {
168
+ disabled: true,
169
+ },
170
+ render: args => (
171
+ <Menu {...args}>
172
+ <MenuItem href="/dashboard" icon={<HomeIcon />}>
173
+ Dashboard
174
+ </MenuItem>
175
+ <MenuItem href="/profile" icon={<UserIcon />}>
176
+ Profile
177
+ </MenuItem>
178
+ <MenuItem href="/settings" icon={<SettingsIcon />}>
179
+ Settings
180
+ </MenuItem>
181
+ <MenuItem href="/logout" icon={<SignOutIcon />}>
182
+ Logout
183
+ </MenuItem>
184
+ </Menu>
185
+ ),
186
+ };
187
+
188
+ // Menu with mixed content
189
+ export const MixedContent: Story = {
190
+ render: () => (
191
+ <Menu>
192
+ <MenuItem href="/dashboard" icon={<HomeIcon />} active>
193
+ Dashboard
194
+ </MenuItem>
195
+ <MenuItem href="/profile" icon={<UserIcon />}>
196
+ My Profile
197
+ </MenuItem>
198
+ <MenuDivider />
199
+ <MenuItem href="/documents" icon={<FileIcon />}>
200
+ Documents
201
+ </MenuItem>
202
+ <MenuItem href="/bookmarks" icon={<BookmarkIcon />}>
203
+ Bookmarks
204
+ </MenuItem>
205
+ <MenuDivider />
206
+ <MenuItem href="/settings" icon={<SettingsIcon />}>
207
+ Account Settings
208
+ </MenuItem>
209
+ <MenuItem href="/logout" icon={<SignOutIcon />}>
210
+ Sign Out
211
+ </MenuItem>
212
+ </Menu>
213
+ ),
214
+ };
215
+
216
+ // Menu with click handlers
217
+ export const WithClickHandlers: Story = {
218
+ render: () => (
219
+ <Menu>
220
+ <MenuItem icon={<HomeIcon />} onClick={() => alert('Dashboard clicked!')}>
221
+ Dashboard
222
+ </MenuItem>
223
+ <MenuItem icon={<UserIcon />} onClick={() => alert('Profile clicked!')}>
224
+ Profile
225
+ </MenuItem>
226
+ <MenuItem icon={<SettingsIcon />} onClick={() => alert('Settings clicked!')}>
227
+ Settings
228
+ </MenuItem>
229
+ <MenuDivider />
230
+ <MenuItem icon={<SignOutIcon />} onClick={() => alert('Logout clicked!')}>
231
+ Logout
232
+ </MenuItem>
233
+ </Menu>
234
+ ),
235
+ };
236
+
237
+ // Simple menu without icons
238
+ export const SimpleMenu: Story = {
239
+ render: () => (
240
+ <Menu>
241
+ <MenuItem href="/home">Home</MenuItem>
242
+ <MenuItem href="/about">About Us</MenuItem>
243
+ <MenuItem href="/services">Services</MenuItem>
244
+ <MenuItem href="/portfolio">Portfolio</MenuItem>
245
+ <MenuItem href="/contact">Contact</MenuItem>
246
+ </Menu>
247
+ ),
248
+ };
249
+
250
+ // User account menu example
251
+ export const UserAccountMenu: Story = {
252
+ render: () => (
253
+ <Menu>
254
+ <MenuItem href="/profile" icon={<UserIcon />} active>
255
+ My Profile
256
+ </MenuItem>
257
+ <MenuItem href="/account" icon={<SettingsIcon />}>
258
+ Account Settings
259
+ </MenuItem>
260
+ <MenuDivider />
261
+ <MenuItem href="/documents" icon={<FileIcon />}>
262
+ My Documents
263
+ </MenuItem>
264
+ <MenuItem href="/bookmarks" icon={<BookmarkIcon />}>
265
+ Saved Items
266
+ </MenuItem>
267
+ <MenuDivider />
268
+ <MenuItem href="/logout" icon={<SignOutIcon />}>
269
+ Sign Out
270
+ </MenuItem>
271
+ </Menu>
272
+ ),
273
+ };
274
+
275
+ // Complete showcase
276
+ export const CompleteShowcase: Story = {
277
+ render: () => (
278
+ <div style={{ display: 'flex', gap: '2rem', flexWrap: 'wrap' }}>
279
+ <div>
280
+ <h3>Basic Menu</h3>
281
+ <Menu>
282
+ <MenuItem href="/home">Home</MenuItem>
283
+ <MenuItem href="/about">About</MenuItem>
284
+ <MenuItem href="/contact">Contact</MenuItem>
285
+ </Menu>
286
+ </div>
287
+
288
+ <div>
289
+ <h3>Menu with Icons</h3>
290
+ <Menu>
291
+ <MenuItem href="/dashboard" icon={<HomeIcon />} active>
292
+ Dashboard
293
+ </MenuItem>
294
+ <MenuItem href="/profile" icon={<UserIcon />}>
295
+ Profile
296
+ </MenuItem>
297
+ <MenuItem href="/settings" icon={<SettingsIcon />}>
298
+ Settings
299
+ </MenuItem>
300
+ </Menu>
301
+ </div>
302
+
303
+ <div>
304
+ <h3>Menu with Dividers</h3>
305
+ <Menu>
306
+ <MenuItem href="/dashboard" icon={<HomeIcon />}>
307
+ Dashboard
308
+ </MenuItem>
309
+ <MenuDivider />
310
+ <MenuItem href="/profile" icon={<UserIcon />}>
311
+ Profile
312
+ </MenuItem>
313
+ <MenuItem href="/settings" icon={<SettingsIcon />}>
314
+ Settings
315
+ </MenuItem>
316
+ <MenuDivider />
317
+ <MenuItem href="/logout" icon={<SignOutIcon />}>
318
+ Logout
319
+ </MenuItem>
320
+ </Menu>
321
+ </div>
322
+
323
+ <div>
324
+ <h3>Menu with Disabled Items</h3>
325
+ <Menu>
326
+ <MenuItem href="/dashboard" icon={<HomeIcon />}>
327
+ Dashboard
328
+ </MenuItem>
329
+ <MenuItem href="/profile" icon={<UserIcon />} disabled>
330
+ Profile (Disabled)
331
+ </MenuItem>
332
+ <MenuItem href="/settings" icon={<SettingsIcon />}>
333
+ Settings
334
+ </MenuItem>
335
+ </Menu>
336
+ </div>
337
+ </div>
338
+ ),
339
+ };