@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,494 @@
|
|
|
1
|
+
# SideMenu Component
|
|
2
|
+
|
|
3
|
+
The SideMenu component provides a collapsible navigation menu with title and menu items. It automatically collapses on mobile devices and can be toggled via a header button. The component follows the Atomix design system guidelines and includes both React and vanilla JavaScript implementations.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Responsive Design**: Automatically collapses on mobile devices
|
|
8
|
+
- **Collapsible**: Can be toggled open/closed with smooth animations
|
|
9
|
+
- **Accessibility**: Full keyboard navigation and screen reader support
|
|
10
|
+
- **Active States**: Support for active menu items
|
|
11
|
+
- **Icon Support**: Menu items can include Phosphor icons via the Atomix Icon component
|
|
12
|
+
- **Vanilla JS Support**: Complete vanilla JavaScript implementation available
|
|
13
|
+
|
|
14
|
+
## React Usage
|
|
15
|
+
|
|
16
|
+
### Basic SideMenu
|
|
17
|
+
|
|
18
|
+
```tsx
|
|
19
|
+
import { SideMenu, SideMenuList, SideMenuItem } from '@atomix/components';
|
|
20
|
+
|
|
21
|
+
<SideMenu title="Navigation">
|
|
22
|
+
<SideMenuList>
|
|
23
|
+
<SideMenuItem href="/" active>Home</SideMenuItem>
|
|
24
|
+
<SideMenuItem href="/about">About</SideMenuItem>
|
|
25
|
+
<SideMenuItem href="/contact">Contact</SideMenuItem>
|
|
26
|
+
</SideMenuList>
|
|
27
|
+
</SideMenu>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### With Icons
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
import { SideMenu, SideMenuList, SideMenuItem, Icon } from '@atomix/components';
|
|
34
|
+
|
|
35
|
+
<SideMenu title="Main Menu">
|
|
36
|
+
<SideMenuList>
|
|
37
|
+
<SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
|
|
38
|
+
Home
|
|
39
|
+
</SideMenuItem>
|
|
40
|
+
<SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
|
|
41
|
+
About
|
|
42
|
+
</SideMenuItem>
|
|
43
|
+
<SideMenuItem href="/settings" icon={<Icon name="Gear" size="sm" />}>
|
|
44
|
+
Settings
|
|
45
|
+
</SideMenuItem>
|
|
46
|
+
</SideMenuList>
|
|
47
|
+
</SideMenu>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Multiple Menu Lists
|
|
51
|
+
|
|
52
|
+
```tsx
|
|
53
|
+
<SideMenu title="Dashboard">
|
|
54
|
+
<SideMenuList>
|
|
55
|
+
<SideMenuItem href="/dashboard" icon={<Icon name="ChartBar" size="sm" />} active>
|
|
56
|
+
Dashboard
|
|
57
|
+
</SideMenuItem>
|
|
58
|
+
<SideMenuItem href="/analytics" icon={<Icon name="TrendUp" size="sm" />}>
|
|
59
|
+
Analytics
|
|
60
|
+
</SideMenuItem>
|
|
61
|
+
</SideMenuList>
|
|
62
|
+
|
|
63
|
+
<SideMenuList>
|
|
64
|
+
<SideMenuItem href="/users" icon={<Icon name="Users" size="sm" />}>
|
|
65
|
+
Users
|
|
66
|
+
</SideMenuItem>
|
|
67
|
+
<SideMenuItem href="/settings" icon={<Icon name="Gear" size="sm" />}>
|
|
68
|
+
Settings
|
|
69
|
+
</SideMenuItem>
|
|
70
|
+
</SideMenuList>
|
|
71
|
+
</SideMenu>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Button Items (No Navigation)
|
|
75
|
+
|
|
76
|
+
```tsx
|
|
77
|
+
<SideMenu title="Actions">
|
|
78
|
+
<SideMenuList>
|
|
79
|
+
<SideMenuItem onClick={() => handleCreate()} icon={<Icon name="Plus" size="sm" />}>
|
|
80
|
+
Create New
|
|
81
|
+
</SideMenuItem>
|
|
82
|
+
<SideMenuItem onClick={() => handleExport()} icon={<Icon name="Export" size="sm" />}>
|
|
83
|
+
Export Data
|
|
84
|
+
</SideMenuItem>
|
|
85
|
+
<SideMenuItem onClick={() => handleSettings()} icon={<Icon name="Gear" size="sm" />}>
|
|
86
|
+
Settings
|
|
87
|
+
</SideMenuItem>
|
|
88
|
+
</SideMenuList>
|
|
89
|
+
</SideMenu>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Controlled SideMenu
|
|
93
|
+
|
|
94
|
+
```tsx
|
|
95
|
+
import { useState } from 'react';
|
|
96
|
+
import { SideMenu, SideMenuList, SideMenuItem, Icon } from '@atomix/components';
|
|
97
|
+
|
|
98
|
+
function MyComponent() {
|
|
99
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
100
|
+
|
|
101
|
+
return (
|
|
102
|
+
<SideMenu
|
|
103
|
+
title="Controlled Menu"
|
|
104
|
+
isOpen={isOpen}
|
|
105
|
+
onToggle={setIsOpen}
|
|
106
|
+
>
|
|
107
|
+
<SideMenuList>
|
|
108
|
+
<SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
|
|
109
|
+
Home
|
|
110
|
+
</SideMenuItem>
|
|
111
|
+
<SideMenuItem href="/about" icon={<Icon name="Info" size="sm" />}>
|
|
112
|
+
About
|
|
113
|
+
</SideMenuItem>
|
|
114
|
+
</SideMenuList>
|
|
115
|
+
</SideMenu>
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Custom Toggle Icon
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
<SideMenu
|
|
124
|
+
title="Custom Menu"
|
|
125
|
+
toggleIcon={<Icon name="CaretDown" size="xs" />}
|
|
126
|
+
>
|
|
127
|
+
<SideMenuList>
|
|
128
|
+
<SideMenuItem href="/dashboard" active>Dashboard</SideMenuItem>
|
|
129
|
+
<SideMenuItem href="/profile">Profile</SideMenuItem>
|
|
130
|
+
<SideMenuItem href="/settings">Settings</SideMenuItem>
|
|
131
|
+
</SideMenuList>
|
|
132
|
+
</SideMenu>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Non-Collapsible Menu
|
|
136
|
+
|
|
137
|
+
```tsx
|
|
138
|
+
<SideMenu title="Quick Links" collapsible={false}>
|
|
139
|
+
<SideMenuList>
|
|
140
|
+
<SideMenuItem href="/dashboard" icon={<Icon name="ChartBar" size="sm" />} active>
|
|
141
|
+
Dashboard
|
|
142
|
+
</SideMenuItem>
|
|
143
|
+
<SideMenuItem href="/profile" icon={<Icon name="User" size="sm" />}>
|
|
144
|
+
Profile
|
|
145
|
+
</SideMenuItem>
|
|
146
|
+
<SideMenuItem href="/settings" icon={<Icon name="Gear" size="sm" />}>
|
|
147
|
+
Settings
|
|
148
|
+
</SideMenuItem>
|
|
149
|
+
</SideMenuList>
|
|
150
|
+
</SideMenu>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Vanilla JavaScript Usage
|
|
154
|
+
|
|
155
|
+
### HTML Structure
|
|
156
|
+
|
|
157
|
+
```html
|
|
158
|
+
<div class="c-side-menu" data-side-menu data-collapsible="true" data-auto-open="true">
|
|
159
|
+
<!-- Toggler (shown on mobile) -->
|
|
160
|
+
<div class="c-side-menu__toggler">
|
|
161
|
+
<span class="c-side-menu__title">Navigation</span>
|
|
162
|
+
<span class="c-side-menu__toggler-icon">
|
|
163
|
+
<svg class="c-icon" width="16" height="16" viewBox="0 0 256 256">
|
|
164
|
+
<!-- Phosphor CaretRight icon SVG content -->
|
|
165
|
+
</svg>
|
|
166
|
+
</span>
|
|
167
|
+
</div>
|
|
168
|
+
|
|
169
|
+
<!-- Collapsible Content -->
|
|
170
|
+
<div class="c-side-menu__wrapper">
|
|
171
|
+
<div class="c-side-menu__inner">
|
|
172
|
+
<!-- Menu Lists -->
|
|
173
|
+
<ul class="c-side-menu__list">
|
|
174
|
+
<li class="c-side-menu__item">
|
|
175
|
+
<a href="/" class="c-side-menu__link is-active">
|
|
176
|
+
<span class="c-side-menu__link-icon">
|
|
177
|
+
<svg class="c-icon" width="20" height="20" viewBox="0 0 256 256">
|
|
178
|
+
<!-- Phosphor House icon SVG content -->
|
|
179
|
+
</svg>
|
|
180
|
+
</span>
|
|
181
|
+
<span class="c-side-menu__link-text">Home</span>
|
|
182
|
+
</a>
|
|
183
|
+
</li>
|
|
184
|
+
<li class="c-side-menu__item">
|
|
185
|
+
<a href="/about" class="c-side-menu__link">
|
|
186
|
+
<span class="c-side-menu__link-icon">
|
|
187
|
+
<svg class="c-icon" width="20" height="20" viewBox="0 0 256 256">
|
|
188
|
+
<!-- Phosphor Info icon SVG content -->
|
|
189
|
+
</svg>
|
|
190
|
+
</span>
|
|
191
|
+
<span class="c-side-menu__link-text">About</span>
|
|
192
|
+
</a>
|
|
193
|
+
</li>
|
|
194
|
+
</ul>
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
</div>
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### JavaScript Initialization
|
|
201
|
+
|
|
202
|
+
#### Automatic Initialization (Recommended)
|
|
203
|
+
|
|
204
|
+
The side menu will automatically initialize when the DOM is ready if you include the bundle:
|
|
205
|
+
|
|
206
|
+
```html
|
|
207
|
+
<script src="path/to/atomix-sidemenu.js"></script>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
#### Manual Initialization
|
|
211
|
+
|
|
212
|
+
```javascript
|
|
213
|
+
// Initialize all side menus with data attributes
|
|
214
|
+
const sideMenus = Atomix.SideMenu.init();
|
|
215
|
+
|
|
216
|
+
// Initialize a specific side menu
|
|
217
|
+
const sideMenu = new Atomix.SideMenu.SideMenu('.my-side-menu', {
|
|
218
|
+
collapsible: true,
|
|
219
|
+
autoOpen: true,
|
|
220
|
+
keyboard: true
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
// Or using the create helper
|
|
224
|
+
const sideMenu = Atomix.SideMenu.create('.my-side-menu', {
|
|
225
|
+
collapsible: true,
|
|
226
|
+
autoOpen: true
|
|
227
|
+
});
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
#### Programmatic Control
|
|
231
|
+
|
|
232
|
+
```javascript
|
|
233
|
+
// Get side menu instance
|
|
234
|
+
const sideMenu = Atomix.SideMenu.get('.my-side-menu');
|
|
235
|
+
|
|
236
|
+
// Control the side menu
|
|
237
|
+
sideMenu.open();
|
|
238
|
+
sideMenu.close();
|
|
239
|
+
sideMenu.toggle();
|
|
240
|
+
|
|
241
|
+
// Check state
|
|
242
|
+
console.log(sideMenu.isOpened()); // true/false
|
|
243
|
+
|
|
244
|
+
// Set active menu item
|
|
245
|
+
sideMenu.setActiveItem('[href="/about"]');
|
|
246
|
+
|
|
247
|
+
// Update options
|
|
248
|
+
sideMenu.updateOptions({ autoOpen: false });
|
|
249
|
+
|
|
250
|
+
// Clean up
|
|
251
|
+
sideMenu.destroy();
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
#### Event Handling
|
|
255
|
+
|
|
256
|
+
```javascript
|
|
257
|
+
// Listen for side menu events
|
|
258
|
+
document.querySelector('.c-side-menu').addEventListener('sidemenu:opened', (event) => {
|
|
259
|
+
console.log('Side menu opened', event.detail);
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
document.querySelector('.c-side-menu').addEventListener('sidemenu:closed', (event) => {
|
|
263
|
+
console.log('Side menu closed', event.detail);
|
|
264
|
+
});
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
#### Utility Functions
|
|
268
|
+
|
|
269
|
+
```javascript
|
|
270
|
+
// Set active item by href across all side menus
|
|
271
|
+
Atomix.SideMenu.setActiveByHref('/dashboard');
|
|
272
|
+
|
|
273
|
+
// Set active item by text content
|
|
274
|
+
Atomix.SideMenu.setActiveByText('Dashboard');
|
|
275
|
+
|
|
276
|
+
// Auto-set active based on current URL
|
|
277
|
+
Atomix.SideMenu.autoSetActiveFromURL();
|
|
278
|
+
|
|
279
|
+
// Control all side menus
|
|
280
|
+
Atomix.SideMenu.openAll();
|
|
281
|
+
Atomix.SideMenu.closeAll();
|
|
282
|
+
Atomix.SideMenu.toggleAll();
|
|
283
|
+
|
|
284
|
+
// Get all instances
|
|
285
|
+
const allSideMenus = Atomix.SideMenu.getAllInstances();
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## Configuration Options
|
|
289
|
+
|
|
290
|
+
### React Props
|
|
291
|
+
|
|
292
|
+
#### SideMenu Props
|
|
293
|
+
|
|
294
|
+
| Prop | Type | Default | Description |
|
|
295
|
+
|------|------|---------|-------------|
|
|
296
|
+
| `title` | `ReactNode` | - | Menu title displayed at the top |
|
|
297
|
+
| `children` | `ReactNode` | - | Menu content (typically SideMenuList components) |
|
|
298
|
+
| `isOpen` | `boolean` | - | Whether the menu is open (for controlled component) |
|
|
299
|
+
| `onToggle` | `(isOpen: boolean) => void` | - | Callback when menu open state changes |
|
|
300
|
+
| `collapsible` | `boolean` | `true` | Whether the menu is collapsible on mobile |
|
|
301
|
+
| `toggleIcon` | `ReactNode` | `<Icon name="CaretRight" size="xs" />` | Custom toggle icon |
|
|
302
|
+
| `className` | `string` | - | Additional CSS classes |
|
|
303
|
+
| `disabled` | `boolean` | `false` | Whether the menu is disabled |
|
|
304
|
+
| `id` | `string` | - | ID for the menu (used for accessibility) |
|
|
305
|
+
|
|
306
|
+
#### SideMenuList Props
|
|
307
|
+
|
|
308
|
+
| Prop | Type | Default | Description |
|
|
309
|
+
|------|------|---------|-------------|
|
|
310
|
+
| `children` | `ReactNode` | - | List items (typically SideMenuItem components) |
|
|
311
|
+
| `className` | `string` | - | Additional CSS classes |
|
|
312
|
+
|
|
313
|
+
#### SideMenuItem Props
|
|
314
|
+
|
|
315
|
+
| Prop | Type | Default | Description |
|
|
316
|
+
|------|------|---------|-------------|
|
|
317
|
+
| `children` | `ReactNode` | - | Item content |
|
|
318
|
+
| `href` | `string` | - | Item href (renders as link) |
|
|
319
|
+
| `onClick` | `(event: React.MouseEvent) => void` | - | Item click handler (renders as button if no href) |
|
|
320
|
+
| `active` | `boolean` | `false` | Whether this item is active/current |
|
|
321
|
+
| `icon` | `ReactNode` | - | Optional icon for the item (use Icon component) |
|
|
322
|
+
| `target` | `string` | - | Link target attribute |
|
|
323
|
+
| `rel` | `string` | - | Link rel attribute |
|
|
324
|
+
| `className` | `string` | - | Additional CSS classes |
|
|
325
|
+
| `disabled` | `boolean` | `false` | Whether the item is disabled |
|
|
326
|
+
|
|
327
|
+
### Vanilla JS Options
|
|
328
|
+
|
|
329
|
+
| Option | Type | Default | Description |
|
|
330
|
+
|--------|------|---------|-------------|
|
|
331
|
+
| `collapsible` | `boolean` | `true` | Whether side menu is collapsible |
|
|
332
|
+
| `open` | `boolean` | `false` | Initial open state |
|
|
333
|
+
| `title` | `string` | `''` | Menu title |
|
|
334
|
+
| `toggleIcon` | `string` | `'▶'` | Toggle icon character (use SVG for icons) |
|
|
335
|
+
| `keyboard` | `boolean` | `true` | Enable keyboard support |
|
|
336
|
+
| `autoOpen` | `boolean` | `true` | Auto-open on desktop |
|
|
337
|
+
|
|
338
|
+
### Data Attributes
|
|
339
|
+
|
|
340
|
+
| Attribute | Type | Description |
|
|
341
|
+
|-----------|------|-------------|
|
|
342
|
+
| `data-side-menu` | - | Marks element for auto-initialization |
|
|
343
|
+
| `data-collapsible` | `boolean` | Whether side menu is collapsible |
|
|
344
|
+
| `data-open` | `boolean` | Initial open state |
|
|
345
|
+
| `data-title` | `string` | Menu title |
|
|
346
|
+
| `data-keyboard` | `boolean` | Enable keyboard support |
|
|
347
|
+
| `data-auto-open` | `boolean` | Auto-open on desktop |
|
|
348
|
+
|
|
349
|
+
## Available Icons
|
|
350
|
+
|
|
351
|
+
The SideMenu component uses the Atomix Icon component, which provides access to all Phosphor Icons. Here are some commonly used icons for navigation:
|
|
352
|
+
|
|
353
|
+
### Navigation Icons
|
|
354
|
+
- `House` - Home/Dashboard
|
|
355
|
+
- `User` - Profile/Account
|
|
356
|
+
- `Gear` - Settings
|
|
357
|
+
- `Info` - About/Information
|
|
358
|
+
- `Envelope` - Contact/Messages
|
|
359
|
+
- `Question` - Help/Support
|
|
360
|
+
|
|
361
|
+
### Action Icons
|
|
362
|
+
- `Plus` - Add/Create
|
|
363
|
+
- `Export` - Export/Download
|
|
364
|
+
- `Upload` - Upload/Import
|
|
365
|
+
- `SignOut` - Logout
|
|
366
|
+
- `Bell` - Notifications
|
|
367
|
+
|
|
368
|
+
### Content Icons
|
|
369
|
+
- `Article` - Articles/Blog
|
|
370
|
+
- `Image` - Media/Gallery
|
|
371
|
+
- `FileText` - Documents/Reports
|
|
372
|
+
- `ChartBar` - Analytics/Charts
|
|
373
|
+
- `Users` - User Management
|
|
374
|
+
|
|
375
|
+
### E-commerce Icons
|
|
376
|
+
- `ShoppingCart` - Shopping Cart
|
|
377
|
+
- `Package` - Orders/Products
|
|
378
|
+
- `Heart` - Wishlist/Favorites
|
|
379
|
+
- `CreditCard` - Payment/Billing
|
|
380
|
+
|
|
381
|
+
For a complete list of available icons, see the [Phosphor Icons documentation](https://phosphoricons.com/).
|
|
382
|
+
|
|
383
|
+
## CSS Classes
|
|
384
|
+
|
|
385
|
+
### Base Classes
|
|
386
|
+
|
|
387
|
+
- `.c-side-menu` - Base side menu class
|
|
388
|
+
- `.c-side-menu__wrapper` - Collapsible content wrapper
|
|
389
|
+
- `.c-side-menu__inner` - Inner content container
|
|
390
|
+
- `.c-side-menu__title` - Menu title element
|
|
391
|
+
- `.c-side-menu__toggler` - Mobile toggle button
|
|
392
|
+
- `.c-side-menu__toggler-icon` - Toggle button icon
|
|
393
|
+
- `.c-side-menu__list` - Menu list container
|
|
394
|
+
- `.c-side-menu__item` - Menu item wrapper
|
|
395
|
+
- `.c-side-menu__link` - Menu item link/button
|
|
396
|
+
- `.c-side-menu__link-icon` - Menu item icon
|
|
397
|
+
- `.c-side-menu__link-text` - Menu item text
|
|
398
|
+
|
|
399
|
+
### State Classes
|
|
400
|
+
|
|
401
|
+
- `.is-open` - Open state
|
|
402
|
+
- `.is-active` - Active menu item
|
|
403
|
+
- `.is-disabled` - Disabled state
|
|
404
|
+
|
|
405
|
+
## Accessibility
|
|
406
|
+
|
|
407
|
+
The SideMenu component follows WCAG guidelines and includes:
|
|
408
|
+
|
|
409
|
+
- **Keyboard Navigation**: Full keyboard support with Tab, Enter, and Space keys
|
|
410
|
+
- **Screen Reader Support**: Proper ARIA attributes and labels
|
|
411
|
+
- **Focus Management**: Logical focus order and visible focus indicators
|
|
412
|
+
- **Semantic HTML**: Uses proper navigation landmarks and list structures
|
|
413
|
+
|
|
414
|
+
### ARIA Attributes
|
|
415
|
+
|
|
416
|
+
- `aria-expanded` - Toggle button state
|
|
417
|
+
- `aria-controls` - Associates toggle with collapsible content
|
|
418
|
+
- `aria-hidden` - Hides collapsed content from screen readers
|
|
419
|
+
- `aria-current="page"` - Indicates current page link
|
|
420
|
+
- `aria-disabled` - Indicates disabled state
|
|
421
|
+
|
|
422
|
+
## Browser Support
|
|
423
|
+
|
|
424
|
+
- Chrome 60+
|
|
425
|
+
- Firefox 60+
|
|
426
|
+
- Safari 12+
|
|
427
|
+
- Edge 79+
|
|
428
|
+
- iOS Safari 12+
|
|
429
|
+
- Android Chrome 60+
|
|
430
|
+
|
|
431
|
+
## Examples
|
|
432
|
+
|
|
433
|
+
### E-commerce Navigation
|
|
434
|
+
|
|
435
|
+
```tsx
|
|
436
|
+
<SideMenu title="Shop Categories">
|
|
437
|
+
<SideMenuList>
|
|
438
|
+
<SideMenuItem href="/electronics" icon={<Icon name="DeviceMobile" size="sm" />} active>
|
|
439
|
+
Electronics
|
|
440
|
+
</SideMenuItem>
|
|
441
|
+
<SideMenuItem href="/clothing" icon={<Icon name="TShirt" size="sm" />}>
|
|
442
|
+
Clothing
|
|
443
|
+
</SideMenuItem>
|
|
444
|
+
<SideMenuItem href="/home-garden" icon={<Icon name="House" size="sm" />}>
|
|
445
|
+
Home & Garden
|
|
446
|
+
</SideMenuItem>
|
|
447
|
+
</SideMenuList>
|
|
448
|
+
|
|
449
|
+
<SideMenuList>
|
|
450
|
+
<SideMenuItem href="/account" icon={<Icon name="User" size="sm" />}>
|
|
451
|
+
My Account
|
|
452
|
+
</SideMenuItem>
|
|
453
|
+
<SideMenuItem href="/orders" icon={<Icon name="Package" size="sm" />}>
|
|
454
|
+
Order History
|
|
455
|
+
</SideMenuItem>
|
|
456
|
+
<SideMenuItem href="/wishlist" icon={<Icon name="Heart" size="sm" />}>
|
|
457
|
+
Wishlist
|
|
458
|
+
</SideMenuItem>
|
|
459
|
+
</SideMenuList>
|
|
460
|
+
</SideMenu>
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
### Admin Dashboard
|
|
464
|
+
|
|
465
|
+
```tsx
|
|
466
|
+
<SideMenu title="Admin Panel">
|
|
467
|
+
<SideMenuList>
|
|
468
|
+
<SideMenuItem href="/dashboard" icon={<Icon name="ChartBar" size="sm" />} active>
|
|
469
|
+
Dashboard
|
|
470
|
+
</SideMenuItem>
|
|
471
|
+
</SideMenuList>
|
|
472
|
+
|
|
473
|
+
<SideMenuList>
|
|
474
|
+
<SideMenuItem href="/users" icon={<Icon name="Users" size="sm" />}>
|
|
475
|
+
User Management
|
|
476
|
+
</SideMenuItem>
|
|
477
|
+
<SideMenuItem href="/content" icon={<Icon name="Article" size="sm" />}>
|
|
478
|
+
Content Management
|
|
479
|
+
</SideMenuItem>
|
|
480
|
+
<SideMenuItem href="/analytics" icon={<Icon name="TrendUp" size="sm" />}>
|
|
481
|
+
Analytics
|
|
482
|
+
</SideMenuItem>
|
|
483
|
+
</SideMenuList>
|
|
484
|
+
|
|
485
|
+
<SideMenuList>
|
|
486
|
+
<SideMenuItem href="/settings" icon={<Icon name="Gear" size="sm" />}>
|
|
487
|
+
Settings
|
|
488
|
+
</SideMenuItem>
|
|
489
|
+
<SideMenuItem onClick={handleLogout} icon={<Icon name="SignOut" size="sm" />}>
|
|
490
|
+
Logout
|
|
491
|
+
</SideMenuItem>
|
|
492
|
+
</SideMenuList>
|
|
493
|
+
</SideMenu>
|
|
494
|
+
```
|