@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.
- package/CHANGELOG.md +0 -0
- package/LICENSE +0 -0
- package/README.md +151 -39
- package/dist/atomix.css +13529 -0
- package/dist/atomix.min.css +15 -0
- package/dist/index.d.ts +6112 -1757
- package/dist/index.esm.js +16852 -8364
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +16892 -8369
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/themes/boomdevs.css +13241 -0
- package/dist/themes/boomdevs.min.css +353 -0
- package/dist/themes/esrar.css +15374 -0
- package/dist/themes/esrar.min.css +189 -0
- package/dist/themes/mashroom.css +28079 -0
- package/dist/themes/mashroom.min.css +403 -0
- package/dist/themes/shaj-default.css +14203 -0
- package/dist/themes/shaj-default.min.css +500 -0
- package/dist/themes/yabai.css +13711 -0
- package/dist/themes/yabai.min.css +189 -0
- package/package.json +126 -99
- package/src/components/Accordion/Accordion.stories.tsx +271 -0
- package/src/components/Accordion/Accordion.tsx +131 -0
- package/src/components/Accordion/index.ts +3 -0
- package/src/components/AtomixLogo/AtomixLogo.tsx +36 -0
- package/src/components/AtomixLogo/index.ts +3 -0
- package/src/components/AtomixLogo.tsx +40 -0
- package/src/components/Avatar/Avatar.stories.tsx +257 -0
- package/src/components/Avatar/Avatar.tsx +68 -0
- package/src/components/Avatar/AvatarGroup.tsx +73 -0
- package/src/components/Avatar/index.ts +3 -0
- package/src/components/Badge/Badge.stories.tsx +371 -0
- package/src/components/Badge/Badge.tsx +39 -0
- package/src/components/Badge/index.ts +3 -0
- package/src/components/Block/Block.stories.tsx +408 -0
- package/src/components/Block/Block.tsx +137 -0
- package/src/components/Block/index.ts +1 -0
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +106 -0
- package/src/components/Breadcrumb/Breadcrumb.tsx +112 -0
- package/src/components/Breadcrumb/index.ts +3 -0
- package/src/components/Button/Button.stories.tsx +312 -0
- package/src/components/Button/Button.tsx +69 -0
- package/src/components/Button/index.ts +3 -0
- package/src/components/Callout/Callout.stories.tsx +588 -0
- package/src/components/Callout/Callout.tsx +78 -0
- package/src/components/Callout/index.ts +1 -0
- package/src/components/Card/Card.stories.tsx +105 -0
- package/src/components/Card/Card.tsx +69 -0
- package/src/components/Card/ElevationCard.tsx +47 -0
- package/src/components/Card/index.ts +15 -0
- package/src/components/Chart/AdvancedChart.tsx +624 -0
- package/src/components/Chart/AnimatedChart.tsx +206 -0
- package/src/components/Chart/AreaChart.tsx +27 -0
- package/src/components/Chart/BarChart.tsx +148 -0
- package/src/components/Chart/BubbleChart.tsx +411 -0
- package/src/components/Chart/CandlestickChart.tsx +765 -0
- package/src/components/Chart/Chart.stories.tsx +527 -0
- package/src/components/Chart/Chart.tsx +218 -0
- package/src/components/Chart/ChartRenderer.tsx +322 -0
- package/src/components/Chart/ChartToolbar.tsx +436 -0
- package/src/components/Chart/ChartTooltip.tsx +101 -0
- package/src/components/Chart/DonutChart.tsx +370 -0
- package/src/components/Chart/FunnelChart.tsx +393 -0
- package/src/components/Chart/GaugeChart.tsx +550 -0
- package/src/components/Chart/HeatmapChart.tsx +614 -0
- package/src/components/Chart/LineChart.tsx +172 -0
- package/src/components/Chart/LineChartNew.tsx +167 -0
- package/src/components/Chart/MultiAxisChart.tsx +498 -0
- package/src/components/Chart/PieChart.tsx +103 -0
- package/src/components/Chart/RadarChart.tsx +332 -0
- package/src/components/Chart/RealTimeChart.tsx +436 -0
- package/src/components/Chart/ScatterChart.tsx +152 -0
- package/src/components/Chart/TreemapChart.tsx +574 -0
- package/src/components/Chart/WaterfallChart.tsx +450 -0
- package/src/components/Chart/index.ts +119 -0
- package/src/components/Chart/types.ts +338 -0
- package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +44 -0
- package/src/components/ColorModeToggle/ColorModeToggle.tsx +85 -0
- package/src/components/ColorModeToggle/index.ts +2 -0
- package/src/components/Countdown/Countdown.stories.tsx +46 -0
- package/src/components/Countdown/Countdown.tsx +90 -0
- package/src/components/Countdown/index.ts +2 -0
- package/src/components/DataTable/DataTable.stories.tsx +248 -0
- package/src/components/DataTable/DataTable.tsx +213 -0
- package/src/components/DataTable/index.ts +3 -0
- package/src/components/DatePicker/DatePicker.stories.tsx +364 -0
- package/src/components/DatePicker/DatePicker.tsx +504 -0
- package/src/components/DatePicker/index.ts +4 -0
- package/src/components/DatePicker/readme.md +106 -0
- package/src/components/DatePicker/types.ts +167 -0
- package/src/components/DatePicker/utils.ts +185 -0
- package/src/components/Dropdown/Dropdown.stories.tsx +358 -0
- package/src/components/Dropdown/Dropdown.tsx +352 -0
- package/src/components/Dropdown/index.ts +14 -0
- package/src/components/Dropdown/readme.md +151 -0
- package/src/components/EdgePanel/EdgePanel.stories.tsx +266 -0
- package/src/components/EdgePanel/EdgePanel.tsx +73 -0
- package/src/components/EdgePanel/index.ts +1 -0
- package/src/components/Form/Checkbox.stories.tsx +76 -0
- package/src/components/Form/Checkbox.tsx +69 -0
- package/src/components/Form/Form.stories.tsx +497 -0
- package/src/components/Form/Form.tsx +46 -0
- package/src/components/Form/FormGroup.stories.tsx +162 -0
- package/src/components/Form/FormGroup.tsx +53 -0
- package/src/components/Form/Input.stories.tsx +106 -0
- package/src/components/Form/Input.tsx +87 -0
- package/src/components/Form/Radio.stories.tsx +94 -0
- package/src/components/Form/Radio.tsx +65 -0
- package/src/components/Form/Select.stories.tsx +151 -0
- package/src/components/Form/Select.tsx +191 -0
- package/src/components/Form/Textarea.stories.tsx +123 -0
- package/src/components/Form/Textarea.tsx +78 -0
- package/src/components/Form/index.ts +7 -0
- package/src/components/Hero/Hero.stories.tsx +295 -0
- package/src/components/Hero/Hero.tsx +175 -0
- package/src/components/Hero/index.ts +6 -0
- package/src/components/Icon/Icon.tsx +87 -0
- package/src/components/Icon/index.ts +2 -0
- package/src/components/List/List.stories.tsx +122 -0
- package/src/components/List/List.tsx +35 -0
- package/src/components/List/ListGroup.tsx +35 -0
- package/src/components/List/index.ts +2 -0
- package/src/components/Messages/Messages.stories.tsx +160 -0
- package/src/components/Messages/Messages.tsx +172 -0
- package/src/components/Messages/index.ts +3 -0
- package/src/components/Modal/Modal.stories.tsx +284 -0
- package/src/components/Modal/Modal.tsx +198 -0
- package/src/components/Modal/README.md +169 -0
- package/src/components/Modal/index.ts +1 -0
- package/src/components/Navigation/Menu/MegaMenu.tsx +109 -0
- package/src/components/Navigation/Menu/Menu.stories.tsx +339 -0
- package/src/components/Navigation/Menu/Menu.tsx +111 -0
- package/src/components/Navigation/Nav/Nav.stories.tsx +456 -0
- package/src/components/Navigation/Nav/Nav.tsx +51 -0
- package/src/components/Navigation/Nav/NavDropdown.tsx +105 -0
- package/src/components/Navigation/Nav/NavItem.tsx +168 -0
- package/src/components/Navigation/Navbar/Navbar.stories.tsx +569 -0
- package/src/components/Navigation/Navbar/Navbar.tsx +150 -0
- package/src/components/Navigation/README.md +314 -0
- package/src/components/Navigation/SideMenu/SideMenu.README.md +494 -0
- package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +609 -0
- package/src/components/Navigation/SideMenu/SideMenu.tsx +101 -0
- package/src/components/Navigation/SideMenu/SideMenuItem.tsx +103 -0
- package/src/components/Navigation/SideMenu/SideMenuList.tsx +41 -0
- package/src/components/Navigation/index.ts +23 -0
- package/src/components/Pagination/Pagination.stories.tsx +188 -0
- package/src/components/Pagination/Pagination.tsx +162 -0
- package/src/components/Pagination/index.ts +1 -0
- package/src/components/PhotoViewer/PhotoViewer.stories.tsx +397 -0
- package/src/components/PhotoViewer/PhotoViewer.tsx +246 -0
- package/src/components/PhotoViewer/PhotoViewerHeader.tsx +184 -0
- package/src/components/PhotoViewer/PhotoViewerImage.tsx +173 -0
- package/src/components/PhotoViewer/PhotoViewerInfo.tsx +91 -0
- package/src/components/PhotoViewer/PhotoViewerNavigation.tsx +85 -0
- package/src/components/PhotoViewer/PhotoViewerThumbnails.tsx +63 -0
- package/src/components/PhotoViewer/README.md +358 -0
- package/src/components/PhotoViewer/examples/ImageGallery.tsx +187 -0
- package/src/components/PhotoViewer/examples/SimpleGallery.tsx +73 -0
- package/src/components/PhotoViewer/examples/index.ts +2 -0
- package/src/components/PhotoViewer/index.ts +14 -0
- package/src/components/Popover/Popover.stories.tsx +143 -0
- package/src/components/Popover/Popover.tsx +137 -0
- package/src/components/Popover/index.ts +5 -0
- package/src/components/Popover/readme.md +120 -0
- package/src/components/ProductReview/ProductReview.stories.tsx +88 -0
- package/src/components/ProductReview/ProductReview.tsx +169 -0
- package/src/components/ProductReview/index.ts +3 -0
- package/src/components/Progress/Progress.stories.tsx +75 -0
- package/src/components/Progress/Progress.tsx +45 -0
- package/src/components/Progress/index.ts +1 -0
- package/src/components/Rating/Rating.stories.tsx +109 -0
- package/src/components/Rating/Rating.tsx +286 -0
- package/src/components/Rating/index.ts +6 -0
- package/src/components/River/River.stories.tsx +230 -0
- package/src/components/River/River.tsx +134 -0
- package/src/components/River/index.ts +2 -0
- package/src/components/SectionIntro/SectionIntro.stories.tsx +143 -0
- package/src/components/SectionIntro/SectionIntro.tsx +184 -0
- package/src/components/SectionIntro/index.ts +3 -0
- package/src/components/Slider/Slider.stories.tsx +241 -0
- package/src/components/Slider/Slider.tsx +225 -0
- package/src/components/Slider/index.ts +24 -0
- package/src/components/Spinner/Spinner.stories.tsx +65 -0
- package/src/components/Spinner/Spinner.tsx +36 -0
- package/src/components/Spinner/index.ts +2 -0
- package/src/components/Steps/Steps.stories.tsx +158 -0
- package/src/components/Steps/Steps.tsx +115 -0
- package/src/components/Steps/index.ts +3 -0
- package/src/components/Tab/Tab.stories.tsx +129 -0
- package/src/components/Tab/Tab.tsx +111 -0
- package/src/components/Tab/index.ts +2 -0
- package/src/components/Testimonial/Testimonial.stories.tsx +180 -0
- package/src/components/Testimonial/Testimonial.tsx +138 -0
- package/src/components/Testimonial/index.ts +3 -0
- package/src/components/Todo/Todo.stories.tsx +103 -0
- package/src/components/Todo/Todo.tsx +158 -0
- package/src/components/Todo/index.ts +1 -0
- package/src/components/Toggle/Toggle.stories.tsx +49 -0
- package/src/components/Toggle/Toggle.tsx +84 -0
- package/src/components/Toggle/index.ts +2 -0
- package/src/components/Tooltip/Tooltip.stories.tsx +115 -0
- package/src/components/Tooltip/Tooltip.tsx +150 -0
- package/src/components/Tooltip/index.ts +3 -0
- package/src/components/Upload/Upload.stories.tsx +220 -0
- package/src/components/Upload/Upload.tsx +354 -0
- package/src/components/Upload/index.ts +3 -0
- package/src/components/VideoPlayer/VideoPlayer.stories.tsx +484 -0
- package/src/components/VideoPlayer/VideoPlayer.tsx +574 -0
- package/src/components/VideoPlayer/index.ts +7 -0
- package/src/components/index.ts +111 -0
- package/src/layouts/Grid/Container.tsx +58 -0
- package/src/layouts/Grid/Grid.stories.tsx +861 -0
- package/src/layouts/Grid/Grid.tsx +68 -0
- package/src/layouts/Grid/GridCol.tsx +161 -0
- package/src/layouts/Grid/README.md +108 -0
- package/src/layouts/Grid/Row.tsx +70 -0
- package/src/layouts/Grid/index.ts +8 -0
- package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +387 -0
- package/src/layouts/MasonryGrid/MasonryGrid.tsx +408 -0
- package/src/layouts/MasonryGrid/MasonryGridItem.tsx +44 -0
- package/src/layouts/MasonryGrid/README.md +117 -0
- package/src/layouts/MasonryGrid/index.ts +4 -0
- package/src/layouts/index.ts +7 -0
- package/src/lib/README.md +89 -0
- package/src/lib/composables/index.ts +63 -0
- package/src/lib/composables/useAccordion.ts +129 -0
- package/src/lib/composables/useAmbientMode.ts +90 -0
- package/src/lib/composables/useBadge.ts +42 -0
- package/src/lib/composables/useBarChart.ts +365 -0
- package/src/lib/composables/useBlock.ts +56 -0
- package/src/lib/composables/useBreadcrumb.ts +81 -0
- package/src/lib/composables/useButton.ts +59 -0
- package/src/lib/composables/useCallout.ts +55 -0
- package/src/lib/composables/useCard.ts +155 -0
- package/src/lib/composables/useChart.ts +1082 -0
- package/src/lib/composables/useChartAnalytics.ts +505 -0
- package/src/lib/composables/useChartData.ts +38 -0
- package/src/lib/composables/useChartExport.ts +392 -0
- package/src/lib/composables/useChartInteraction.ts +34 -0
- package/src/lib/composables/useChartInteractions.ts +123 -0
- package/src/lib/composables/useChartPerformance.ts +323 -0
- package/src/lib/composables/useChartScale.ts +48 -0
- package/src/lib/composables/useChartToolbar.ts +532 -0
- package/src/lib/composables/useCheckbox.ts +70 -0
- package/src/lib/composables/useDataTable.ts +208 -0
- package/src/lib/composables/useDatePicker.ts +564 -0
- package/src/lib/composables/useDropdown.ts +272 -0
- package/src/lib/composables/useEdgePanel.ts +261 -0
- package/src/lib/composables/useForm.ts +62 -0
- package/src/lib/composables/useFormGroup.ts +51 -0
- package/src/lib/composables/useHero.ts +250 -0
- package/src/lib/composables/useInput.ts +58 -0
- package/src/lib/composables/useLineChart.ts +319 -0
- package/src/lib/composables/useMessages.ts +77 -0
- package/src/lib/composables/useModal.ts +110 -0
- package/src/lib/composables/useNavbar.ts +288 -0
- package/src/lib/composables/usePagination.ts +101 -0
- package/src/lib/composables/usePhotoViewer.ts +937 -0
- package/src/lib/composables/usePieChart.ts +362 -0
- package/src/lib/composables/usePopover.ts +354 -0
- package/src/lib/composables/useProgress.ts +74 -0
- package/src/lib/composables/useRadio.ts +47 -0
- package/src/lib/composables/useRating.ts +174 -0
- package/src/lib/composables/useRiver.ts +205 -0
- package/src/lib/composables/useSelect.ts +52 -0
- package/src/lib/composables/useSideMenu.ts +197 -0
- package/src/lib/composables/useSlider.ts +339 -0
- package/src/lib/composables/useSpinner.ts +42 -0
- package/src/lib/composables/useTextarea.ts +55 -0
- package/src/lib/composables/useTodo.ts +141 -0
- package/src/lib/composables/useVideoPlayer.ts +398 -0
- package/src/lib/constants/components.ts +1433 -0
- package/src/lib/constants/index.ts +4 -0
- package/src/lib/index.ts +11 -0
- package/src/lib/types/components.ts +4750 -0
- package/src/lib/types/index.ts +2 -0
- package/src/lib/utils/dom.ts +41 -0
- package/src/lib/utils/icons.ts +74 -0
- package/src/lib/utils/index.ts +55 -0
- package/src/lib/utils/useForkRef.test.tsx +64 -0
- package/src/lib/utils/useForkRef.ts +36 -0
- package/src/lib/utils.test.ts +14 -0
- package/src/styles/01-settings/_index.scss +2 -0
- package/src/styles/01-settings/_settings.accordion.scss +7 -5
- package/src/styles/01-settings/_settings.animations.scss +0 -0
- package/src/styles/01-settings/_settings.avatar-group.scss +6 -3
- package/src/styles/01-settings/_settings.avatar.scss +2 -2
- package/src/styles/01-settings/_settings.badge.scss +15 -9
- package/src/styles/01-settings/_settings.block.scss +11 -0
- package/src/styles/01-settings/_settings.border-radius.scss +12 -9
- package/src/styles/01-settings/_settings.border.scss +4 -1
- package/src/styles/01-settings/_settings.box-shadow.scss +1 -1
- package/src/styles/01-settings/_settings.breadcrumb.scss +9 -8
- package/src/styles/01-settings/_settings.breakpoints.scss +0 -0
- package/src/styles/01-settings/_settings.btn-group.scss +4 -1
- package/src/styles/01-settings/_settings.button.scss +19 -21
- package/src/styles/01-settings/_settings.callout.scss +42 -24
- package/src/styles/01-settings/_settings.card.scss +12 -10
- package/src/styles/01-settings/_settings.chart.scss +199 -0
- package/src/styles/01-settings/_settings.checkbox-group.scss +0 -0
- package/src/styles/01-settings/_settings.checkbox.scss +0 -0
- package/src/styles/01-settings/_settings.color-mode.scss +0 -0
- package/src/styles/01-settings/_settings.colors.scss +20 -0
- package/src/styles/01-settings/_settings.config.scss +1 -1
- package/src/styles/01-settings/_settings.countdown.scss +0 -0
- package/src/styles/01-settings/_settings.data-table.scss +0 -0
- package/src/styles/01-settings/_settings.datepicker.scss +0 -0
- package/src/styles/01-settings/_settings.dropdown.scss +0 -0
- package/src/styles/01-settings/_settings.edge-panel.scss +0 -0
- package/src/styles/01-settings/_settings.fonts.scss +1 -1
- package/src/styles/01-settings/_settings.form-group.scss +0 -0
- package/src/styles/01-settings/_settings.form.scss +0 -0
- package/src/styles/01-settings/_settings.grid.scss +3 -3
- package/src/styles/01-settings/_settings.hero.scss +1 -1
- package/src/styles/01-settings/_settings.input.scss +1 -1
- package/src/styles/01-settings/_settings.link.scss +0 -0
- package/src/styles/01-settings/_settings.list-group.scss +0 -0
- package/src/styles/01-settings/_settings.list.scss +0 -0
- package/src/styles/01-settings/_settings.maps.scss +43 -8
- package/src/styles/01-settings/_settings.masonry-grid.scss +0 -0
- package/src/styles/01-settings/_settings.menu.scss +0 -0
- package/src/styles/01-settings/_settings.messages.scss +0 -0
- package/src/styles/01-settings/_settings.modal.scss +1 -1
- package/src/styles/01-settings/_settings.nav.scss +0 -0
- package/src/styles/01-settings/_settings.navbar.scss +0 -0
- package/src/styles/01-settings/_settings.pagination.scss +0 -0
- package/src/styles/01-settings/_settings.photoviewer.scss +89 -23
- package/src/styles/01-settings/_settings.popover.scss +0 -0
- package/src/styles/01-settings/_settings.position.scss +0 -0
- package/src/styles/01-settings/_settings.progress.scss +0 -0
- package/src/styles/01-settings/_settings.rating.scss +0 -0
- package/src/styles/01-settings/_settings.river.scss +0 -0
- package/src/styles/01-settings/_settings.sectionintro.scss +0 -0
- package/src/styles/01-settings/_settings.select.scss +0 -0
- package/src/styles/01-settings/_settings.side-menu.scss +0 -0
- package/src/styles/01-settings/_settings.skeleton.scss +0 -0
- package/src/styles/01-settings/_settings.slider.scss +59 -0
- package/src/styles/01-settings/_settings.spacing.scss +11 -3
- package/src/styles/01-settings/_settings.spinner.scss +0 -0
- package/src/styles/01-settings/_settings.steps.scss +1 -1
- package/src/styles/01-settings/_settings.tabs.scss +4 -4
- package/src/styles/01-settings/_settings.testimonials.scss +0 -0
- package/src/styles/01-settings/_settings.todo.scss +0 -0
- package/src/styles/01-settings/_settings.toggle.scss +1 -1
- package/src/styles/01-settings/_settings.tooltip.scss +0 -0
- package/src/styles/01-settings/_settings.typography.scss +2 -0
- package/src/styles/01-settings/_settings.upload.scss +0 -0
- package/src/styles/01-settings/_settings.video-player.scss +64 -0
- package/src/styles/01-settings/_settings.z-layers.scss +0 -0
- package/src/styles/02-tools/_index.scss +1 -0
- package/src/styles/02-tools/_tools.animations.scss +82 -0
- package/src/styles/02-tools/_tools.border-radius.scss +0 -0
- package/src/styles/02-tools/_tools.breakpoints.scss +0 -0
- package/src/styles/02-tools/_tools.button.scss +5 -0
- package/src/styles/02-tools/_tools.clearfix.scss +0 -0
- package/src/styles/02-tools/_tools.color-functions.scss +0 -0
- package/src/styles/02-tools/_tools.color-mode.scss +1 -1
- package/src/styles/02-tools/_tools.component.scss +479 -0
- package/src/styles/02-tools/_tools.event.scss +0 -0
- package/src/styles/02-tools/_tools.grid.scss +0 -0
- package/src/styles/02-tools/_tools.hidden-visually.scss +0 -0
- package/src/styles/02-tools/_tools.hidden.scss +0 -0
- package/src/styles/02-tools/_tools.map-loop.scss +0 -0
- package/src/styles/02-tools/_tools.media-queries.scss +0 -0
- package/src/styles/02-tools/_tools.object-fit.scss +0 -0
- package/src/styles/02-tools/_tools.placeholder.scss +0 -0
- package/src/styles/02-tools/_tools.rem.scss +5 -1
- package/src/styles/02-tools/_tools.size.scss +0 -0
- package/src/styles/02-tools/_tools.spacing.scss +0 -0
- package/src/styles/02-tools/_tools.to-rgb.scss +0 -0
- package/src/styles/02-tools/_tools.transition.scss +0 -0
- package/src/styles/02-tools/_tools.utilities.scss +0 -0
- package/src/styles/02-tools/_tools.utility-api.scss +23 -2
- package/src/styles/03-generic/_generic.fonts.scss +0 -0
- package/src/styles/03-generic/_generic.reset.scss +0 -0
- package/src/styles/03-generic/_generic.root.scss +5 -1
- package/src/styles/03-generic/_generic.selection.scss +0 -0
- package/src/styles/03-generic/_index.scss +0 -0
- package/src/styles/04-elements/_elements.all.scss +0 -0
- package/src/styles/04-elements/_elements.body.scss +0 -0
- package/src/styles/04-elements/_elements.heading.scss +0 -0
- package/src/styles/04-elements/_elements.html.scss +0 -0
- package/src/styles/04-elements/_elements.links.scss +0 -0
- package/src/styles/04-elements/_index.scss +0 -0
- package/src/styles/05-objects/_index.scss +1 -0
- package/src/styles/05-objects/_objects.block.scss +122 -0
- package/src/styles/05-objects/_objects.container.scss +14 -10
- package/src/styles/05-objects/_objects.grid.scss +0 -0
- package/src/styles/05-objects/_objects.masonry-grid.scss +0 -0
- package/src/styles/06-components/_components.accordion.scss +3 -1
- package/src/styles/06-components/_components.avatar-group.scss +0 -0
- package/src/styles/06-components/_components.avatar.scss +0 -0
- package/src/styles/06-components/_components.badge.scss +9 -9
- package/src/styles/06-components/_components.breadcrumb.scss +0 -0
- package/src/styles/06-components/_components.btn-group.scss +0 -0
- package/src/styles/06-components/_components.button.scss +0 -0
- package/src/styles/06-components/_components.callout.scss +2 -1
- package/src/styles/06-components/_components.card.scss +0 -1
- package/src/styles/06-components/_components.chart.scss +2102 -0
- package/src/styles/06-components/_components.checkbox-group.scss +0 -0
- package/src/styles/06-components/_components.checkbox.scss +0 -0
- package/src/styles/06-components/_components.color-mode-toggle.scss +0 -0
- package/src/styles/06-components/_components.countdown.scss +0 -0
- package/src/styles/06-components/_components.data-table.scss +0 -0
- package/src/styles/06-components/_components.datepicker.scss +0 -0
- package/src/styles/06-components/_components.dropdown.scss +0 -0
- package/src/styles/06-components/_components.edge-panel.scss +0 -0
- package/src/styles/06-components/_components.form-group.scss +0 -0
- package/src/styles/06-components/_components.form.scss +0 -0
- package/src/styles/06-components/_components.hero.scss +1 -0
- package/src/styles/06-components/_components.icon.scss +2 -2
- package/src/styles/06-components/_components.image-gallery.scss +0 -0
- package/src/styles/06-components/_components.input.scss +0 -0
- package/src/styles/06-components/_components.list-group.scss +0 -0
- package/src/styles/06-components/_components.list.scss +0 -0
- package/src/styles/06-components/_components.menu.scss +0 -0
- package/src/styles/06-components/_components.messages.scss +0 -0
- package/src/styles/06-components/_components.modal.scss +3 -0
- package/src/styles/06-components/_components.nav.scss +0 -0
- package/src/styles/06-components/_components.navbar.scss +0 -0
- package/src/styles/06-components/_components.pagination.scss +0 -0
- package/src/styles/06-components/_components.photoviewer.scss +603 -545
- package/src/styles/06-components/_components.popover.scss +0 -0
- package/src/styles/06-components/_components.product-review.scss +0 -0
- package/src/styles/06-components/_components.progress.scss +0 -0
- package/src/styles/06-components/_components.rating.scss +0 -0
- package/src/styles/06-components/_components.river.scss +0 -0
- package/src/styles/06-components/_components.sectionintro.scss +0 -0
- package/src/styles/06-components/_components.select.scss +0 -0
- package/src/styles/06-components/_components.side-menu.scss +0 -0
- package/src/styles/06-components/_components.skeleton.scss +0 -0
- package/src/styles/06-components/_components.slider.scss +273 -0
- package/src/styles/06-components/_components.spinner.scss +0 -0
- package/src/styles/06-components/_components.steps.scss +1 -0
- package/src/styles/06-components/_components.tabs.scss +0 -0
- package/src/styles/06-components/_components.testimonials.scss +0 -0
- package/src/styles/06-components/_components.todo.scss +0 -0
- package/src/styles/06-components/_components.toggle.scss +0 -0
- package/src/styles/06-components/_components.tooltip.scss +4 -9
- package/src/styles/06-components/_components.upload.scss +0 -0
- package/src/styles/06-components/_components.video-player.scss +623 -0
- package/src/styles/06-components/_index.scss +3 -0
- package/src/styles/06-components/old.chart.styles.scss +2819 -0
- package/src/styles/99-utilities/_index.scss +0 -0
- package/src/styles/99-utilities/_utilities.background.scss +0 -0
- package/src/styles/99-utilities/_utilities.border.scss +0 -0
- package/src/styles/99-utilities/_utilities.clearfix.scss +0 -0
- package/src/styles/99-utilities/_utilities.display.scss +0 -0
- package/src/styles/99-utilities/_utilities.flex.scss +0 -0
- package/src/styles/99-utilities/_utilities.link.scss +0 -0
- package/src/styles/99-utilities/_utilities.object-fit.scss +0 -0
- package/src/styles/99-utilities/_utilities.opacity.scss +0 -0
- package/src/styles/99-utilities/_utilities.overflow.scss +0 -0
- package/src/styles/99-utilities/_utilities.position.scss +0 -0
- package/src/styles/99-utilities/_utilities.scss +2 -1
- package/src/styles/99-utilities/_utilities.shadow.scss +0 -0
- package/src/styles/99-utilities/_utilities.sizes.scss +0 -0
- package/src/styles/99-utilities/_utilities.spacing.scss +0 -0
- package/src/styles/99-utilities/_utilities.text.scss +5 -0
- package/src/styles/99-utilities/_utilities.visibility.scss +0 -0
- package/src/styles/99-utilities/_utilities.visually-hidden.scss +0 -0
- package/src/styles/99-utilities/_utilities.z-index.scss +0 -0
- package/src/styles/css-modules.d.ts +0 -0
- package/src/styles/index.scss +0 -0
- package/dist/index.css +0 -15
- package/dist/index.esm.css +0 -15
- 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
|
+
};
|