@shohojdhara/atomix 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +151 -0
- package/NEXTJS_INTEGRATION.md +358 -0
- package/README.md +168 -119
- package/babel.config.js +58 -0
- package/css.d.ts +10 -0
- package/dist/css/atomix.css +1 -2
- package/dist/js/194.js +1 -2
- package/dist/js/244.js +1 -0
- package/dist/js/atomix.react.cjs.js +1 -0
- package/dist/js/atomix.react.esm.js +1 -2
- package/dist/js/atomix.react.umd.js +1 -2
- package/dist/js/chunks/cjs/202.9d3b1ef1eaa0d5c8a309.js +1 -0
- package/dist/js/chunks/cjs/308.6ea9685ea38ead4120d0.js +1 -0
- package/dist/js/chunks/cjs/54.73db6922594e421ba6b1.js +1 -0
- package/dist/js/chunks/cjs/619.51feecaadcab819780d4.js +1 -0
- package/dist/js/chunks/cjs/690.90f6d11164081cbcbc4d.js +1 -0
- package/dist/js/chunks/cjs/894.24877561df336a8dfd14.js +1 -0
- package/dist/js/chunks/cjs/897.6c2a71fae95338890de7.js +1 -0
- package/dist/js/chunks/esm/{202.ff48d27672233280e021.js → 202.82aa7b3244e53c9edb72.js} +1 -2
- package/dist/js/chunks/esm/{308.f873332126eba90e5c62.js → 308.27e1e4005705ae320432.js} +1 -2
- package/dist/js/chunks/esm/{54.4db919e5e4e5cc6d7c72.js → 54.ece1fd6964f98d4d994f.js} +1 -2
- package/dist/js/chunks/esm/{619.afc5a718eff77fa423b5.js → 619.ebeb0298432a066ac05c.js} +1 -2
- package/dist/js/chunks/esm/{690.a9e968c7497d61e56cdc.js → 690.c5f412cc979b55740359.js} +1 -2
- package/dist/js/chunks/esm/{894.f1091a4a8758c26d29e4.js → 894.3604ddc9367d75191198.js} +1 -2
- package/dist/js/chunks/esm/{897.561a50f7d043d42169da.js → 897.a4aab2fad9401693eb12.js} +1 -2
- package/dist/js/chunks/umd/{202.dac7605cc555b6bda542.js → 202.5017dd0403d696bf1644.js} +1 -2
- package/dist/js/chunks/umd/{308.6709979849dcbdb90c9b.js → 308.4bc14b9d7b16b6ee0ab8.js} +1 -2
- package/dist/js/chunks/umd/{54.403470e1f7d0ef4424a7.js → 54.7fdfb4a031989470a70d.js} +1 -2
- package/dist/js/chunks/umd/{619.fa05ea98c10270eb64c5.js → 619.84a0c35ecee695250085.js} +1 -2
- package/dist/js/chunks/umd/{690.aa7054d1c53e5402c2d6.js → 690.d7041094a34a4a434be2.js} +1 -2
- package/dist/js/chunks/umd/{894.3e1eaf0a2aadf4434390.js → 894.c127ee4e9513c22ee97d.js} +1 -2
- package/dist/js/chunks/umd/{897.554ea37be4453698c167.js → 897.26932ac837a39fc91907.js} +1 -2
- package/dist/types/components/Badge/index.d.ts +3 -3
- package/dist/types/components/{Navbar → Navigation/Menu}/MegaMenu.d.ts +1 -1
- package/dist/types/components/{Navbar → Navigation/Menu}/Menu.d.ts +1 -1
- package/dist/types/components/Navigation/Nav/Nav.d.ts +20 -0
- package/dist/types/components/{Navbar → Navigation/Nav}/NavDropdown.d.ts +1 -1
- package/dist/types/components/Navigation/Nav/NavItem.d.ts +33 -0
- package/dist/types/components/Navigation/Navbar/Navbar.d.ts +19 -0
- package/dist/types/components/Navigation/SideMenu/SideMenu.d.ts +20 -0
- package/dist/types/components/Navigation/SideMenu/SideMenuItem.d.ts +30 -0
- package/dist/types/components/Navigation/SideMenu/SideMenuList.d.ts +17 -0
- package/dist/types/components/Navigation/index.d.ts +10 -0
- package/dist/types/components/PhotoViewer/PhotoViewer.d.ts +2 -2
- package/dist/types/components/PhotoViewer/PhotoViewerHeader.d.ts +2 -2
- package/dist/types/components/Tab/index.d.ts +2 -2
- package/dist/types/components/Toggle/index.d.ts +2 -2
- package/dist/types/components/Tooltip/index.d.ts +3 -3
- package/dist/types/components/index.d.ts +1 -1
- package/dist/types/lib/composables/index.d.ts +1 -0
- package/dist/types/lib/composables/useDatePicker.d.ts +1 -1
- package/dist/types/lib/composables/useDropdown.d.ts +1 -1
- package/dist/types/lib/composables/useModal.d.ts +1 -1
- package/dist/types/lib/composables/usePhotoViewer.d.ts +1 -1
- package/dist/types/lib/composables/useRating.d.ts +1 -1
- package/dist/types/lib/composables/useSideMenu.d.ts +28 -0
- package/dist/types/lib/constants/components.d.ts +72 -0
- package/dist/types/lib/types/components.d.ts +103 -0
- package/examples/nextjs-example.tsx +271 -0
- package/implementation-guide.md +505 -0
- package/next.config.js +69 -0
- package/package.json +80 -42
- package/postcss.config.js +28 -0
- package/src/Introduction.mdx +3 -5
- package/src/assets/fonts/HelveticaNeue/stylesheet.css +140 -127
- package/src/components/Accordion/Accordion.stories.tsx +58 -45
- package/src/components/Accordion/Accordion.tsx +14 -4
- package/src/components/Accordion/scripts/accordionInteractions.ts +9 -9
- package/src/components/Accordion/scripts/bundle.ts +1 -1
- package/src/components/Accordion/scripts/index.ts +3 -3
- package/src/components/AtomixLogo.tsx +13 -19
- package/src/components/Avatar/Avatar.stories.tsx +24 -21
- package/src/components/Avatar/Avatar.tsx +5 -8
- package/src/components/Avatar/AvatarGroup.tsx +11 -11
- package/src/components/Avatar/index.ts +1 -1
- package/src/components/Avatar/scripts/index.ts +66 -71
- package/src/components/Badge/Badge.stories.tsx +51 -21
- package/src/components/Badge/Badge.tsx +14 -12
- package/src/components/Badge/index.ts +3 -3
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +40 -40
- package/src/components/Breadcrumb/Breadcrumb.tsx +19 -26
- package/src/components/Breadcrumb/index.ts +1 -1
- package/src/components/Breadcrumb/scripts/breadcrumb.ts +36 -34
- package/src/components/Breadcrumb/scripts/index.ts +1 -1
- package/src/components/Breadcrumb/scripts/types.ts +9 -9
- package/src/components/Button/Button.stories.tsx +36 -12
- package/src/components/Button/Button.tsx +52 -39
- package/src/components/Button/index.ts +1 -1
- package/src/components/Button/scripts/buttonInteractions.ts +9 -9
- package/src/components/Button/scripts/index.ts +1 -1
- package/src/components/Callout/Callout.stories.tsx +207 -114
- package/src/components/Callout/Callout.tsx +12 -12
- package/src/components/Callout/index.ts +1 -1
- package/src/components/Callout/scripts/CalloutInteractions.ts +58 -48
- package/src/components/Callout/scripts/bundle.ts +2 -2
- package/src/components/Callout/scripts/index.ts +19 -15
- package/src/components/Card/Card.stories.tsx +2 -2
- package/src/components/Card/Card.tsx +49 -72
- package/src/components/Card/ElevationCard.tsx +4 -8
- package/src/components/Card/index.ts +1 -1
- package/src/components/Card/scripts/bundle.ts +7 -7
- package/src/components/Card/scripts/cardInteractions.ts +24 -24
- package/src/components/Card/scripts/index.ts +25 -26
- package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +6 -3
- package/src/components/ColorModeToggle/ColorModeToggle.tsx +12 -15
- package/src/components/ColorModeToggle/index.ts +1 -1
- package/src/components/Countdown/Countdown.stories.tsx +6 -2
- package/src/components/Countdown/Countdown.tsx +56 -48
- package/src/components/Countdown/index.ts +1 -1
- package/src/components/Countdown/scripts/index.ts +33 -28
- package/src/components/DataTable/DataTable.stories.tsx +23 -18
- package/src/components/DataTable/DataTable.tsx +39 -39
- package/src/components/DataTable/index.ts +1 -1
- package/src/components/DataTable/scripts/bundle.ts +8 -3
- package/src/components/DataTable/scripts/index.ts +182 -164
- package/src/components/DatePicker/DatePicker.stories.tsx +136 -148
- package/src/components/DatePicker/DatePicker.tsx +461 -420
- package/src/components/DatePicker/scripts/bundle.ts +12 -7
- package/src/components/DatePicker/scripts/componentInteractions.ts +76 -46
- package/src/components/DatePicker/scripts/index.ts +176 -156
- package/src/components/DatePicker/types.ts +32 -32
- package/src/components/DatePicker/utils.ts +41 -30
- package/src/components/Dropdown/Dropdown.stories.tsx +85 -55
- package/src/components/Dropdown/Dropdown.tsx +97 -88
- package/src/components/Dropdown/index.ts +5 -10
- package/src/components/Dropdown/scripts/bundle.ts +10 -10
- package/src/components/Dropdown/scripts/componentInteractions.ts +10 -2
- package/src/components/Dropdown/scripts/index.ts +122 -117
- package/src/components/EdgePanel/EdgePanel.stories.tsx +142 -58
- package/src/components/EdgePanel/EdgePanel.tsx +7 -13
- package/src/components/EdgePanel/index.ts +1 -1
- package/src/components/EdgePanel/scripts/bundle.ts +5 -5
- package/src/components/EdgePanel/scripts/edgePanelInteractions.ts +26 -26
- package/src/components/EdgePanel/scripts/index.ts +53 -53
- package/src/components/Form/Checkbox.stories.tsx +2 -2
- package/src/components/Form/Checkbox.tsx +13 -7
- package/src/components/Form/Form.stories.tsx +144 -218
- package/src/components/Form/Form.tsx +6 -6
- package/src/components/Form/FormGroup.stories.tsx +21 -38
- package/src/components/Form/FormGroup.tsx +18 -20
- package/src/components/Form/Input.stories.tsx +1 -1
- package/src/components/Form/Input.tsx +18 -8
- package/src/components/Form/Radio.stories.tsx +12 -25
- package/src/components/Form/Radio.tsx +11 -6
- package/src/components/Form/Select.stories.tsx +6 -6
- package/src/components/Form/Select.tsx +31 -33
- package/src/components/Form/Textarea.stories.tsx +7 -2
- package/src/components/Form/Textarea.tsx +17 -8
- package/src/components/Form/index.ts +1 -1
- package/src/components/Hero/Hero.stories.tsx +44 -42
- package/src/components/Hero/Hero.tsx +28 -38
- package/src/components/Hero/index.ts +1 -1
- package/src/components/Hero/scripts/bundle.ts +6 -6
- package/src/components/Hero/scripts/heroInteractions.ts +24 -29
- package/src/components/Hero/scripts/index.ts +16 -17
- package/src/components/Icon/Icon.tsx +16 -18
- package/src/components/Icon/index.ts +1 -1
- package/src/components/List/List.stories.tsx +1 -3
- package/src/components/List/List.tsx +6 -10
- package/src/components/List/ListGroup.tsx +1 -1
- package/src/components/List/index.ts +1 -1
- package/src/components/Messages/Messages.stories.tsx +30 -29
- package/src/components/Messages/Messages.tsx +60 -55
- package/src/components/Messages/index.ts +1 -1
- package/src/components/Messages/scripts/bundle.ts +1 -6
- package/src/components/Messages/scripts/componentInteractions.ts +32 -37
- package/src/components/Messages/scripts/index.ts +61 -55
- package/src/components/Modal/Modal.stories.tsx +77 -53
- package/src/components/Modal/Modal.tsx +63 -62
- package/src/components/Modal/index.ts +1 -1
- package/src/components/Modal/scripts/bundle.ts +3 -3
- package/src/components/Modal/scripts/index.ts +96 -84
- package/src/components/Modal/scripts/modalInteractions.ts +16 -14
- package/src/components/{Navbar → Navigation/Menu}/MegaMenu.tsx +50 -59
- package/src/components/Navigation/Menu/Menu.stories.tsx +340 -0
- package/src/components/Navigation/Menu/Menu.tsx +110 -0
- package/src/components/Navigation/Nav/Nav.stories.tsx +458 -0
- package/src/components/Navigation/Nav/Nav.tsx +50 -0
- package/src/components/Navigation/Nav/NavDropdown.tsx +105 -0
- package/src/components/Navigation/Nav/NavItem.tsx +159 -0
- package/src/components/{Navbar → Navigation/Navbar}/Navbar.stories.tsx +198 -104
- 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 +618 -0
- package/src/components/Navigation/SideMenu/SideMenu.tsx +101 -0
- package/src/components/Navigation/SideMenu/SideMenuItem.tsx +95 -0
- package/src/components/Navigation/SideMenu/SideMenuList.tsx +41 -0
- package/src/components/Navigation/index.ts +23 -0
- package/src/components/Navigation/scripts/NavbarInteractions.ts +171 -0
- package/src/components/Navigation/scripts/SideMenu.ts +319 -0
- package/src/components/Navigation/scripts/SideMenuBundle.ts +69 -0
- package/src/components/Navigation/scripts/SideMenuInteractions.ts +250 -0
- package/src/components/Navigation/scripts/bundle.ts +58 -0
- package/src/components/Navigation/scripts/index.ts +248 -0
- package/src/components/Pagination/Pagination.stories.tsx +34 -33
- package/src/components/Pagination/Pagination.tsx +25 -35
- package/src/components/Pagination/index.ts +1 -1
- package/src/components/Pagination/scripts/index.ts +42 -37
- package/src/components/PhotoViewer/PhotoViewer.stories.tsx +48 -48
- package/src/components/PhotoViewer/PhotoViewer.tsx +29 -46
- package/src/components/PhotoViewer/PhotoViewerHeader.tsx +20 -26
- package/src/components/PhotoViewer/PhotoViewerImage.tsx +19 -17
- package/src/components/PhotoViewer/PhotoViewerInfo.tsx +13 -5
- package/src/components/PhotoViewer/PhotoViewerNavigation.tsx +5 -5
- package/src/components/PhotoViewer/PhotoViewerThumbnails.tsx +31 -30
- package/src/components/PhotoViewer/examples/ImageGallery.tsx +27 -37
- package/src/components/PhotoViewer/examples/SimpleGallery.tsx +19 -13
- package/src/components/PhotoViewer/examples/index.ts +1 -1
- package/src/components/PhotoViewer/index.ts +1 -1
- package/src/components/PhotoViewer/scripts/PhotoViewerInteractions.ts +43 -33
- package/src/components/PhotoViewer/scripts/bundle.ts +14 -14
- package/src/components/PhotoViewer/scripts/index.ts +173 -129
- package/src/components/Popover/Popover.stories.tsx +11 -12
- package/src/components/Popover/Popover.tsx +36 -36
- package/src/components/Popover/index.ts +1 -1
- package/src/components/Popover/scripts/bundle.ts +1 -1
- package/src/components/Popover/scripts/componentInteractions.ts +34 -46
- package/src/components/Popover/scripts/index.ts +64 -53
- package/src/components/ProductReview/ProductReview.stories.tsx +10 -8
- package/src/components/ProductReview/ProductReview.tsx +28 -32
- package/src/components/ProductReview/scripts/componentInteractions.ts +20 -20
- package/src/components/Progress/Progress.tsx +36 -34
- package/src/components/Progress/scripts/bundle.ts +7 -2
- package/src/components/Progress/scripts/componentInteractions.ts +29 -23
- package/src/components/Progress/scripts/index.ts +45 -39
- package/src/components/Rating/Rating.stories.tsx +3 -16
- package/src/components/Rating/Rating.tsx +250 -231
- package/src/components/Rating/scripts/bundle.ts +11 -6
- package/src/components/Rating/scripts/index.ts +85 -80
- package/src/components/Rating/scripts/ratingInteractions.ts +27 -24
- package/src/components/River/River.stories.tsx +70 -24
- package/src/components/River/River.tsx +28 -38
- package/src/components/River/index.ts +1 -1
- package/src/components/River/scripts/index.ts +11 -12
- package/src/components/SectionIntro/SectionIntro.stories.tsx +12 -9
- package/src/components/SectionIntro/SectionIntro.tsx +25 -31
- package/src/components/SectionIntro/scripts/componentInteractions.ts +1 -1
- package/src/components/SectionIntro/scripts/index.ts +30 -16
- package/src/components/Spinner/Spinner.stories.tsx +5 -7
- package/src/components/Spinner/Spinner.tsx +11 -6
- package/src/components/Spinner/index.ts +2 -2
- package/src/components/Steps/Steps.stories.tsx +44 -48
- package/src/components/Steps/Steps.tsx +20 -20
- package/src/components/Steps/index.ts +1 -1
- package/src/components/Steps/scripts/index.ts +9 -9
- package/src/components/Tab/Tab.stories.tsx +14 -6
- package/src/components/Tab/Tab.tsx +16 -18
- package/src/components/Tab/index.ts +2 -2
- package/src/components/Tab/scripts/index.ts +13 -13
- package/src/components/Testimonial/Testimonial.stories.tsx +54 -51
- package/src/components/Testimonial/Testimonial.tsx +18 -19
- package/src/components/Testimonial/index.ts +1 -1
- package/src/components/Testimonial/scripts/index.ts +19 -8
- package/src/components/Todo/Todo.stories.tsx +7 -24
- package/src/components/Todo/Todo.tsx +35 -46
- package/src/components/Todo/index.ts +1 -1
- package/src/components/Todo/scripts/bundle.ts +1 -1
- package/src/components/Todo/scripts/index.ts +99 -81
- package/src/components/Todo/scripts/todoInteractions.ts +12 -12
- package/src/components/Todo/scripts/types.ts +3 -3
- package/src/components/Toggle/Toggle.stories.tsx +2 -2
- package/src/components/Toggle/Toggle.tsx +18 -18
- package/src/components/Toggle/index.ts +2 -2
- package/src/components/Toggle/scripts/bundle.ts +7 -2
- package/src/components/Toggle/scripts/index.ts +14 -10
- package/src/components/Toggle/scripts/toggleInteractions.ts +11 -14
- package/src/components/Tooltip/Tooltip.stories.tsx +13 -6
- package/src/components/Tooltip/Tooltip.tsx +25 -15
- package/src/components/Tooltip/index.ts +3 -3
- package/src/components/Tooltip/scripts/bundle.ts +0 -1
- package/src/components/Tooltip/scripts/index.ts +44 -41
- package/src/components/Tooltip/scripts/tooltipInteractions.ts +22 -22
- package/src/components/Upload/Upload.stories.tsx +28 -34
- package/src/components/Upload/Upload.tsx +86 -71
- package/src/components/Upload/index.ts +1 -1
- package/src/components/Upload/scripts/index.ts +58 -43
- package/src/components/index.ts +5 -6
- package/src/design-tokens/BoxShadow/BoxShadow.stories.tsx +13 -10
- package/src/design-tokens/Colors/colors.scss +10 -7
- package/src/design-tokens/Colors/colors.stories.tsx +46 -59
- package/src/design-tokens/Spacing/Spacing.scss +7 -5
- package/src/design-tokens/Spacing/Spacing.stories.tsx +19 -18
- package/src/design-tokens/Typography/Typography.scss +88 -25
- package/src/design-tokens/Typography/Typography.stories.tsx +22 -25
- package/src/docs/implementation-guide.mdx +2 -2
- package/src/htmlComponentsEntry.ts +23 -23
- package/src/index.ts +1 -1
- package/src/layouts/Grid/Container.tsx +6 -10
- package/src/layouts/Grid/Grid.stories.tsx +72 -34
- package/src/layouts/Grid/Grid.tsx +6 -13
- package/src/layouts/Grid/GridCol.tsx +29 -26
- package/src/layouts/Grid/Row.tsx +6 -13
- package/src/layouts/MasonryGrid/MasonryGrid.stories.tsx +79 -72
- package/src/layouts/MasonryGrid/MasonryGrid.tsx +23 -25
- package/src/layouts/MasonryGrid/MasonryGridItem.tsx +4 -12
- package/src/layouts/index.ts +3 -4
- package/src/lib/composables/index.ts +3 -3
- package/src/lib/composables/useAccordion.ts +15 -6
- package/src/lib/composables/useBadge.ts +3 -3
- package/src/lib/composables/useBreadcrumb.ts +6 -12
- package/src/lib/composables/useButton.ts +3 -3
- package/src/lib/composables/useCallout.ts +3 -3
- package/src/lib/composables/useCard.ts +50 -28
- package/src/lib/composables/useCheckbox.ts +7 -7
- package/src/lib/composables/useDataTable.ts +61 -57
- package/src/lib/composables/useDatePicker.ts +255 -231
- package/src/lib/composables/useDropdown.ts +90 -75
- package/src/lib/composables/useEdgePanel.ts +50 -47
- package/src/lib/composables/useForm.ts +4 -7
- package/src/lib/composables/useFormGroup.ts +11 -12
- package/src/lib/composables/useHero.ts +36 -38
- package/src/lib/composables/useInput.ts +9 -10
- package/src/lib/composables/useMessages.ts +12 -14
- package/src/lib/composables/useModal.ts +37 -34
- package/src/lib/composables/useNavbar.ts +33 -22
- package/src/lib/composables/usePagination.ts +3 -10
- package/src/lib/composables/usePhotoViewer.ts +625 -578
- package/src/lib/composables/usePopover.ts +68 -62
- package/src/lib/composables/useProgress.ts +9 -12
- package/src/lib/composables/useRadio.ts +4 -4
- package/src/lib/composables/useRating.ts +82 -70
- package/src/lib/composables/useRiver.ts +28 -31
- package/src/lib/composables/useSelect.ts +7 -8
- package/src/lib/composables/useSideMenu.ts +197 -0
- package/src/lib/composables/useSpinner.ts +3 -3
- package/src/lib/composables/useTextarea.ts +8 -9
- package/src/lib/composables/useTodo.ts +14 -18
- package/src/lib/constants/components.ts +191 -118
- package/src/lib/constants/index.ts +1 -1
- package/src/lib/types/components.ts +454 -324
- package/src/lib/utils/dom.ts +2 -6
- package/src/lib/utils/icons.ts +20 -12
- package/src/lib/utils/index.ts +2 -2
- package/src/lib/utils/useForkRef.ts +1 -2
- package/src/styles/01-settings/_index.scss +59 -59
- package/src/styles/01-settings/_settings.accordion.scss +21 -21
- package/src/styles/01-settings/_settings.animations.scss +2 -2
- package/src/styles/01-settings/_settings.avatar-group.scss +14 -14
- package/src/styles/01-settings/_settings.avatar.scss +31 -31
- package/src/styles/01-settings/_settings.badge.scss +11 -11
- package/src/styles/01-settings/_settings.border-radius.scss +10 -9
- package/src/styles/01-settings/_settings.border.scss +7 -7
- package/src/styles/01-settings/_settings.box-shadow.scss +24 -12
- package/src/styles/01-settings/_settings.breadcrumb.scss +18 -18
- package/src/styles/01-settings/_settings.btn-group.scss +1 -1
- package/src/styles/01-settings/_settings.button.scss +63 -49
- package/src/styles/01-settings/_settings.callout.scss +27 -7
- package/src/styles/01-settings/_settings.card.scss +27 -30
- package/src/styles/01-settings/_settings.checkbox-group.scss +2 -3
- package/src/styles/01-settings/_settings.checkbox.scss +17 -18
- package/src/styles/01-settings/_settings.color-mode.scss +1 -1
- package/src/styles/01-settings/_settings.colors.scss +197 -214
- package/src/styles/01-settings/_settings.config.scss +1 -3
- package/src/styles/01-settings/_settings.countdown.scss +14 -14
- package/src/styles/01-settings/_settings.data-table.scss +6 -6
- package/src/styles/01-settings/_settings.datepicker.scss +40 -42
- package/src/styles/01-settings/_settings.dropdown.scss +30 -30
- package/src/styles/01-settings/_settings.edge-panel.scss +16 -16
- package/src/styles/01-settings/_settings.fonts.scss +14 -12
- package/src/styles/01-settings/_settings.form-group.scss +10 -10
- package/src/styles/01-settings/_settings.form.scss +3 -3
- package/src/styles/01-settings/_settings.grid.scss +1 -1
- package/src/styles/01-settings/_settings.hero.scss +23 -23
- package/src/styles/01-settings/_settings.input.scss +32 -32
- package/src/styles/01-settings/_settings.link.scss +6 -6
- package/src/styles/01-settings/_settings.list-group.scss +12 -12
- package/src/styles/01-settings/_settings.list.scss +2 -2
- package/src/styles/01-settings/_settings.maps.scss +183 -188
- package/src/styles/01-settings/_settings.masonry-grid.scss +2 -2
- package/src/styles/01-settings/_settings.menu.scss +35 -38
- package/src/styles/01-settings/_settings.messages.scss +71 -77
- package/src/styles/01-settings/_settings.modal.scss +24 -24
- package/src/styles/01-settings/_settings.nav.scss +15 -15
- package/src/styles/01-settings/_settings.navbar.scss +39 -12
- package/src/styles/01-settings/_settings.pagination.scss +21 -21
- package/src/styles/01-settings/_settings.photoviewer.scss +1 -1
- package/src/styles/01-settings/_settings.popover.scss +3 -3
- package/src/styles/01-settings/_settings.position.scss +2 -2
- package/src/styles/01-settings/_settings.progress.scss +15 -18
- package/src/styles/01-settings/_settings.rating.scss +7 -7
- package/src/styles/01-settings/_settings.river.scss +25 -25
- package/src/styles/01-settings/_settings.sectionintro.scss +15 -16
- package/src/styles/01-settings/_settings.select.scss +31 -31
- package/src/styles/01-settings/_settings.side-menu.scss +64 -16
- package/src/styles/01-settings/_settings.skeleton.scss +12 -12
- package/src/styles/01-settings/_settings.spacing.scss +62 -33
- package/src/styles/01-settings/_settings.spinner.scss +10 -10
- package/src/styles/01-settings/_settings.steps.scss +22 -22
- package/src/styles/01-settings/_settings.tabs.scss +25 -25
- package/src/styles/01-settings/_settings.testimonials.scss +17 -19
- package/src/styles/01-settings/_settings.todo.scss +1 -1
- package/src/styles/01-settings/_settings.toggle.scss +26 -26
- package/src/styles/01-settings/_settings.tooltip.scss +15 -15
- package/src/styles/01-settings/_settings.typography.scss +65 -48
- package/src/styles/01-settings/_settings.upload.scss +70 -77
- package/src/styles/01-settings/_settings.z-layers.scss +1 -1
- package/src/styles/02-tools/_index.scss +19 -19
- package/src/styles/02-tools/_tools.animations.scss +4 -4
- package/src/styles/02-tools/_tools.border-radius.scss +4 -5
- package/src/styles/02-tools/_tools.breakpoints.scss +33 -34
- package/src/styles/02-tools/_tools.button.scss +49 -25
- package/src/styles/02-tools/_tools.color-mode.scss +11 -11
- package/src/styles/02-tools/_tools.event.scss +1 -1
- package/src/styles/02-tools/_tools.hidden-visually.scss +1 -1
- package/src/styles/02-tools/_tools.hidden.scss +1 -1
- package/src/styles/02-tools/_tools.map-loop.scss +9 -9
- package/src/styles/02-tools/_tools.media-queries.scss +5 -3
- package/src/styles/02-tools/_tools.object-fit.scss +3 -3
- package/src/styles/02-tools/_tools.placeholder.scss +0 -1
- package/src/styles/02-tools/_tools.rem.scss +1 -1
- package/src/styles/02-tools/_tools.spacing.scss +8 -34
- package/src/styles/02-tools/_tools.to-rgb.scss +3 -3
- package/src/styles/02-tools/_tools.transition.scss +1 -1
- package/src/styles/02-tools/_tools.utility-api.scss +29 -14
- package/src/styles/03-generic/_generic.fonts.scss +0 -1
- package/src/styles/03-generic/_generic.reset.scss +13 -8
- package/src/styles/03-generic/_generic.root.scss +5 -5
- package/src/styles/03-generic/_index.scss +4 -4
- package/src/styles/04-elements/_elements.all.scss +2 -2
- package/src/styles/04-elements/_elements.body.scss +1 -2
- package/src/styles/04-elements/_elements.heading.scss +37 -21
- package/src/styles/04-elements/_elements.links.scss +0 -1
- package/src/styles/04-elements/_index.scss +5 -5
- package/src/styles/05-objects/_index.scss +3 -3
- package/src/styles/05-objects/_objects.container.scss +5 -4
- package/src/styles/05-objects/_objects.grid.scss +12 -12
- package/src/styles/05-objects/_objects.masonry-grid.scss +80 -74
- package/src/styles/06-components/_components.accordion.scss +12 -6
- package/src/styles/06-components/_components.avatar-group.scss +9 -8
- package/src/styles/06-components/_components.avatar.scss +78 -77
- package/src/styles/06-components/_components.badge.scss +48 -48
- package/src/styles/06-components/_components.breadcrumb.scss +57 -58
- package/src/styles/06-components/_components.btn-group.scss +22 -22
- package/src/styles/06-components/_components.button.scss +118 -110
- package/src/styles/06-components/_components.callout.scss +21 -15
- package/src/styles/06-components/_components.card.scss +6 -10
- package/src/styles/06-components/_components.checkbox-group.scss +9 -10
- package/src/styles/06-components/_components.checkbox.scss +10 -17
- package/src/styles/06-components/_components.color-mode-toggle.scss +6 -6
- package/src/styles/06-components/_components.countdown.scss +53 -54
- package/src/styles/06-components/_components.data-table.scss +40 -36
- package/src/styles/06-components/_components.datepicker.scss +95 -73
- package/src/styles/06-components/_components.dropdown.scss +15 -9
- package/src/styles/06-components/_components.edge-panel.scss +87 -46
- package/src/styles/06-components/_components.form-group.scss +5 -4
- package/src/styles/06-components/_components.hero.scss +128 -132
- package/src/styles/06-components/_components.icon.scss +16 -16
- package/src/styles/06-components/_components.image-gallery.scss +9 -7
- package/src/styles/06-components/_components.input.scss +18 -16
- package/src/styles/06-components/_components.list-group.scss +52 -51
- package/src/styles/06-components/_components.list.scss +15 -15
- package/src/styles/06-components/_components.menu.scss +225 -220
- package/src/styles/06-components/_components.messages.scss +45 -32
- package/src/styles/06-components/_components.modal.scss +0 -1
- package/src/styles/06-components/_components.nav.scss +56 -11
- package/src/styles/06-components/_components.navbar.scss +278 -202
- package/src/styles/06-components/_components.pagination.scss +7 -6
- package/src/styles/06-components/_components.photoviewer.scss +121 -116
- package/src/styles/06-components/_components.popover.scss +10 -10
- package/src/styles/06-components/_components.product-review.scss +3 -3
- package/src/styles/06-components/_components.progress.scss +32 -35
- package/src/styles/06-components/_components.rating.scss +9 -8
- package/src/styles/06-components/_components.river.scss +4 -2
- package/src/styles/06-components/_components.sectionintro.scss +19 -26
- package/src/styles/06-components/_components.select.scss +7 -8
- package/src/styles/06-components/_components.side-menu.scss +154 -28
- package/src/styles/06-components/_components.skeleton.scss +0 -1
- package/src/styles/06-components/_components.spinner.scss +2 -4
- package/src/styles/06-components/_components.steps.scss +76 -77
- package/src/styles/06-components/_components.tabs.scss +17 -12
- package/src/styles/06-components/_components.testimonials.scss +49 -52
- package/src/styles/06-components/_components.todo.scss +26 -26
- package/src/styles/06-components/_components.tooltip.scss +114 -115
- package/src/styles/06-components/_components.upload.scss +8 -18
- package/src/styles/06-components/_index.scss +48 -48
- package/src/styles/99-utilities/_index.scss +18 -18
- package/src/styles/99-utilities/_utilities.background.scss +13 -13
- package/src/styles/99-utilities/_utilities.border.scss +30 -30
- package/src/styles/99-utilities/_utilities.clearfix.scss +1 -1
- package/src/styles/99-utilities/_utilities.display.scss +5 -4
- package/src/styles/99-utilities/_utilities.flex.scss +19 -19
- package/src/styles/99-utilities/_utilities.link.scss +52 -35
- package/src/styles/99-utilities/_utilities.object-fit.scss +3 -3
- package/src/styles/99-utilities/_utilities.opacity.scss +6 -6
- package/src/styles/99-utilities/_utilities.overflow.scss +4 -4
- package/src/styles/99-utilities/_utilities.position.scss +8 -8
- package/src/styles/99-utilities/_utilities.shadow.scss +13 -13
- package/src/styles/99-utilities/_utilities.sizes.scss +17 -17
- package/src/styles/99-utilities/_utilities.spacing.scss +72 -37
- package/src/styles/99-utilities/_utilities.text.scss +15 -15
- package/src/styles/99-utilities/_utilities.visibility.scss +8 -8
- package/src/styles/99-utilities/_utilities.visually-hidden.scss +1 -1
- package/src/styles/99-utilities/_utilities.z-index.scss +2 -2
- package/tsconfig.json +74 -0
- package/webpack.config.js +463 -0
- package/NPM_PUBLISHING.md +0 -221
- package/dist/css/atomix.css.map +0 -1
- package/dist/js/194.js.map +0 -1
- package/dist/js/atomix.react.esm.js.map +0 -1
- package/dist/js/atomix.react.umd.js.map +0 -1
- package/dist/js/chunks/esm/202.ff48d27672233280e021.js.map +0 -1
- package/dist/js/chunks/esm/308.f873332126eba90e5c62.js.map +0 -1
- package/dist/js/chunks/esm/54.4db919e5e4e5cc6d7c72.js.map +0 -1
- package/dist/js/chunks/esm/619.afc5a718eff77fa423b5.js.map +0 -1
- package/dist/js/chunks/esm/690.a9e968c7497d61e56cdc.js.map +0 -1
- package/dist/js/chunks/esm/894.f1091a4a8758c26d29e4.js.map +0 -1
- package/dist/js/chunks/esm/897.561a50f7d043d42169da.js.map +0 -1
- package/dist/js/chunks/umd/202.dac7605cc555b6bda542.js.map +0 -1
- package/dist/js/chunks/umd/308.6709979849dcbdb90c9b.js.map +0 -1
- package/dist/js/chunks/umd/54.403470e1f7d0ef4424a7.js.map +0 -1
- package/dist/js/chunks/umd/619.fa05ea98c10270eb64c5.js.map +0 -1
- package/dist/js/chunks/umd/690.aa7054d1c53e5402c2d6.js.map +0 -1
- package/dist/js/chunks/umd/894.3e1eaf0a2aadf4434390.js.map +0 -1
- package/dist/js/chunks/umd/897.554ea37be4453698c167.js.map +0 -1
- package/dist/types/components/Navbar/Nav.d.ts +0 -5
- package/dist/types/components/Navbar/NavItem.d.ts +0 -5
- package/dist/types/components/Navbar/Navbar.d.ts +0 -5
- package/dist/types/components/Navbar/index.d.ts +0 -6
- package/src/components/Navbar/Menu.tsx +0 -122
- package/src/components/Navbar/Nav.tsx +0 -35
- package/src/components/Navbar/NavDropdown.tsx +0 -108
- package/src/components/Navbar/NavItem.tsx +0 -128
- package/src/components/Navbar/Navbar.tsx +0 -124
- package/src/components/Navbar/index.ts +0 -6
|
@@ -2,14 +2,14 @@ import React from 'react';
|
|
|
2
2
|
|
|
3
3
|
export type DatePickerViewMode = 'days' | 'months' | 'years';
|
|
4
4
|
|
|
5
|
-
export type DatePickerPlacement =
|
|
6
|
-
| 'top-start'
|
|
7
|
-
| 'top-end'
|
|
8
|
-
| 'bottom-start'
|
|
9
|
-
| 'bottom-end'
|
|
10
|
-
| 'left-start'
|
|
11
|
-
| 'left-end'
|
|
12
|
-
| 'right-start'
|
|
5
|
+
export type DatePickerPlacement =
|
|
6
|
+
| 'top-start'
|
|
7
|
+
| 'top-end'
|
|
8
|
+
| 'bottom-start'
|
|
9
|
+
| 'bottom-end'
|
|
10
|
+
| 'left-start'
|
|
11
|
+
| 'left-end'
|
|
12
|
+
| 'right-start'
|
|
13
13
|
| 'right-end';
|
|
14
14
|
|
|
15
15
|
export type DatePickerSize = 'sm' | 'md' | 'lg';
|
|
@@ -26,117 +26,117 @@ export interface DatePickerProps {
|
|
|
26
26
|
* The currently selected date value
|
|
27
27
|
*/
|
|
28
28
|
value?: Date | null;
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
/**
|
|
31
31
|
* Callback function when date is changed
|
|
32
32
|
*/
|
|
33
33
|
onChange?: (date: Date | null) => void;
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
/**
|
|
36
36
|
* Selection mode - single date or date range
|
|
37
37
|
* @default "single"
|
|
38
38
|
*/
|
|
39
39
|
selectionMode?: DatePickerSelectionMode;
|
|
40
|
-
|
|
40
|
+
|
|
41
41
|
/**
|
|
42
42
|
* The start date of the range (only used when selectionMode is "range")
|
|
43
43
|
*/
|
|
44
44
|
startDate?: Date | null;
|
|
45
|
-
|
|
45
|
+
|
|
46
46
|
/**
|
|
47
47
|
* The end date of the range (only used when selectionMode is "range")
|
|
48
48
|
*/
|
|
49
49
|
endDate?: Date | null;
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
/**
|
|
52
52
|
* Callback function when date range is changed
|
|
53
53
|
*/
|
|
54
54
|
onRangeChange?: (range: DateRange) => void;
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
/**
|
|
57
57
|
* Format for the date display (follows Intl.DateTimeFormat patterns)
|
|
58
58
|
* @default "MM/dd/yyyy"
|
|
59
59
|
*/
|
|
60
60
|
format?: string;
|
|
61
|
-
|
|
61
|
+
|
|
62
62
|
/**
|
|
63
63
|
* Minimum selectable date
|
|
64
64
|
*/
|
|
65
65
|
minDate?: Date;
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
/**
|
|
68
68
|
* Maximum selectable date
|
|
69
69
|
*/
|
|
70
70
|
maxDate?: Date;
|
|
71
|
-
|
|
71
|
+
|
|
72
72
|
/**
|
|
73
73
|
* Placeholder text for the input
|
|
74
74
|
* @default "Select date..."
|
|
75
75
|
*/
|
|
76
76
|
placeholder?: string;
|
|
77
|
-
|
|
77
|
+
|
|
78
78
|
/**
|
|
79
79
|
* Whether the datepicker is disabled
|
|
80
80
|
* @default false
|
|
81
81
|
*/
|
|
82
82
|
disabled?: boolean;
|
|
83
|
-
|
|
83
|
+
|
|
84
84
|
/**
|
|
85
85
|
* Whether the datepicker is read-only
|
|
86
86
|
* @default false
|
|
87
87
|
*/
|
|
88
88
|
readOnly?: boolean;
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
/**
|
|
91
91
|
* Whether to show a clear button
|
|
92
92
|
* @default true
|
|
93
93
|
*/
|
|
94
94
|
clearable?: boolean;
|
|
95
|
-
|
|
95
|
+
|
|
96
96
|
/**
|
|
97
97
|
* Whether to show the "Today" button
|
|
98
98
|
* @default true
|
|
99
99
|
*/
|
|
100
100
|
showTodayButton?: boolean;
|
|
101
|
-
|
|
101
|
+
|
|
102
102
|
/**
|
|
103
103
|
* Whether to show week numbers
|
|
104
104
|
* @default false
|
|
105
105
|
*/
|
|
106
106
|
showWeekNumbers?: boolean;
|
|
107
|
-
|
|
107
|
+
|
|
108
108
|
/**
|
|
109
109
|
* Whether to display the datepicker inline (always visible)
|
|
110
110
|
* @default false
|
|
111
111
|
*/
|
|
112
112
|
inline?: boolean;
|
|
113
|
-
|
|
113
|
+
|
|
114
114
|
/**
|
|
115
115
|
* ID for the input element
|
|
116
116
|
*/
|
|
117
117
|
id?: string;
|
|
118
|
-
|
|
118
|
+
|
|
119
119
|
/**
|
|
120
120
|
* Name for the input element
|
|
121
121
|
*/
|
|
122
122
|
name?: string;
|
|
123
|
-
|
|
123
|
+
|
|
124
124
|
/**
|
|
125
125
|
* Additional class name for the datepicker component
|
|
126
126
|
*/
|
|
127
127
|
className?: string;
|
|
128
|
-
|
|
128
|
+
|
|
129
129
|
/**
|
|
130
130
|
* Placement of the dropdown calendar
|
|
131
131
|
* @default "bottom-start"
|
|
132
132
|
*/
|
|
133
133
|
placement?: DatePickerPlacement;
|
|
134
|
-
|
|
134
|
+
|
|
135
135
|
/**
|
|
136
136
|
* Additional class name for the input element
|
|
137
137
|
*/
|
|
138
138
|
inputClassName?: string;
|
|
139
|
-
|
|
139
|
+
|
|
140
140
|
/**
|
|
141
141
|
* Size of the input field
|
|
142
142
|
* @default "md"
|
|
@@ -149,17 +149,17 @@ export interface DatePickerRef {
|
|
|
149
149
|
* Open the datepicker
|
|
150
150
|
*/
|
|
151
151
|
open: () => void;
|
|
152
|
-
|
|
152
|
+
|
|
153
153
|
/**
|
|
154
154
|
* Close the datepicker
|
|
155
155
|
*/
|
|
156
156
|
close: () => void;
|
|
157
|
-
|
|
157
|
+
|
|
158
158
|
/**
|
|
159
159
|
* Clear the selected date
|
|
160
160
|
*/
|
|
161
161
|
clear: () => void;
|
|
162
|
-
|
|
162
|
+
|
|
163
163
|
/**
|
|
164
164
|
* Set focus on the input element
|
|
165
165
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
export function getMonthName(month: number): string {
|
|
5
5
|
const date = new Date();
|
|
6
6
|
date.setMonth(month);
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
return date.toLocaleString('default', { month: 'long' });
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -27,11 +27,11 @@ export function getFirstDayOfMonth(year: number, month: number): number {
|
|
|
27
27
|
*/
|
|
28
28
|
export function formatDate(date: Date, format: string): string {
|
|
29
29
|
if (!date) return '';
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
const day = date.getDate();
|
|
32
32
|
const month = date.getMonth() + 1;
|
|
33
33
|
const year = date.getFullYear();
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
// Simple formatting for the most common patterns
|
|
36
36
|
return format
|
|
37
37
|
.replace('yyyy', year.toString())
|
|
@@ -44,13 +44,17 @@ export function formatDate(date: Date, format: string): string {
|
|
|
44
44
|
/**
|
|
45
45
|
* Format a date range for display
|
|
46
46
|
*/
|
|
47
|
-
export function formatDateRange(
|
|
47
|
+
export function formatDateRange(
|
|
48
|
+
startDate: Date | null,
|
|
49
|
+
endDate: Date | null,
|
|
50
|
+
format: string
|
|
51
|
+
): string {
|
|
48
52
|
if (!startDate) return '';
|
|
49
|
-
|
|
53
|
+
|
|
50
54
|
if (!endDate) {
|
|
51
55
|
return `${formatDate(startDate, format)} - Select end date`;
|
|
52
56
|
}
|
|
53
|
-
|
|
57
|
+
|
|
54
58
|
return `${formatDate(startDate, format)} - ${formatDate(endDate, format)}`;
|
|
55
59
|
}
|
|
56
60
|
|
|
@@ -59,49 +63,49 @@ export function formatDateRange(startDate: Date | null, endDate: Date | null, fo
|
|
|
59
63
|
*/
|
|
60
64
|
export function parseDate(dateStr: string, format: string): Date | null {
|
|
61
65
|
if (!dateStr) return null;
|
|
62
|
-
|
|
66
|
+
|
|
63
67
|
// Simple parsing for common formats
|
|
64
68
|
const normalized = format.toLowerCase();
|
|
65
|
-
|
|
69
|
+
|
|
66
70
|
if (normalized === 'mm/dd/yyyy') {
|
|
67
71
|
const parts = dateStr.split('/');
|
|
68
72
|
if (parts.length !== 3) return null;
|
|
69
|
-
|
|
73
|
+
|
|
70
74
|
const month = parseInt(parts[0], 10) - 1;
|
|
71
75
|
const day = parseInt(parts[1], 10);
|
|
72
76
|
const year = parseInt(parts[2], 10);
|
|
73
|
-
|
|
77
|
+
|
|
74
78
|
if (isNaN(month) || isNaN(day) || isNaN(year)) return null;
|
|
75
|
-
|
|
79
|
+
|
|
76
80
|
return new Date(year, month, day);
|
|
77
81
|
}
|
|
78
|
-
|
|
82
|
+
|
|
79
83
|
if (normalized === 'dd/mm/yyyy') {
|
|
80
84
|
const parts = dateStr.split('/');
|
|
81
85
|
if (parts.length !== 3) return null;
|
|
82
|
-
|
|
86
|
+
|
|
83
87
|
const day = parseInt(parts[0], 10);
|
|
84
88
|
const month = parseInt(parts[1], 10) - 1;
|
|
85
89
|
const year = parseInt(parts[2], 10);
|
|
86
|
-
|
|
90
|
+
|
|
87
91
|
if (isNaN(month) || isNaN(day) || isNaN(year)) return null;
|
|
88
|
-
|
|
92
|
+
|
|
89
93
|
return new Date(year, month, day);
|
|
90
94
|
}
|
|
91
|
-
|
|
95
|
+
|
|
92
96
|
if (normalized === 'yyyy-mm-dd') {
|
|
93
97
|
const parts = dateStr.split('-');
|
|
94
98
|
if (parts.length !== 3) return null;
|
|
95
|
-
|
|
99
|
+
|
|
96
100
|
const year = parseInt(parts[0], 10);
|
|
97
101
|
const month = parseInt(parts[1], 10) - 1;
|
|
98
102
|
const day = parseInt(parts[2], 10);
|
|
99
|
-
|
|
103
|
+
|
|
100
104
|
if (isNaN(month) || isNaN(day) || isNaN(year)) return null;
|
|
101
|
-
|
|
105
|
+
|
|
102
106
|
return new Date(year, month, day);
|
|
103
107
|
}
|
|
104
|
-
|
|
108
|
+
|
|
105
109
|
// Fallback to native parsing
|
|
106
110
|
const parsedDate = new Date(dateStr);
|
|
107
111
|
return isNaN(parsedDate.getTime()) ? null : parsedDate;
|
|
@@ -110,18 +114,21 @@ export function parseDate(dateStr: string, format: string): Date | null {
|
|
|
110
114
|
/**
|
|
111
115
|
* Try to parse a date range string (e.g. "01/01/2023 - 01/15/2023")
|
|
112
116
|
*/
|
|
113
|
-
export function parseDateRange(
|
|
117
|
+
export function parseDateRange(
|
|
118
|
+
rangeStr: string,
|
|
119
|
+
format: string
|
|
120
|
+
): { startDate: Date | null; endDate: Date | null } {
|
|
114
121
|
if (!rangeStr) return { startDate: null, endDate: null };
|
|
115
|
-
|
|
122
|
+
|
|
116
123
|
const parts = rangeStr.split('-');
|
|
117
124
|
if (parts.length !== 2) return { startDate: null, endDate: null };
|
|
118
|
-
|
|
125
|
+
|
|
119
126
|
const startDateStr = parts[0].trim();
|
|
120
127
|
const endDateStr = parts[1].trim();
|
|
121
|
-
|
|
128
|
+
|
|
122
129
|
const startDate = parseDate(startDateStr, format);
|
|
123
130
|
const endDate = parseDate(endDateStr, format);
|
|
124
|
-
|
|
131
|
+
|
|
125
132
|
return { startDate, endDate };
|
|
126
133
|
}
|
|
127
134
|
|
|
@@ -130,23 +137,27 @@ export function parseDateRange(rangeStr: string, format: string): { startDate: D
|
|
|
130
137
|
*/
|
|
131
138
|
export function isDateInRange(date: Date, minDate?: Date, maxDate?: Date): boolean {
|
|
132
139
|
if (!date) return false;
|
|
133
|
-
|
|
140
|
+
|
|
134
141
|
if (minDate && date < minDate) return false;
|
|
135
142
|
if (maxDate && date > maxDate) return false;
|
|
136
|
-
|
|
143
|
+
|
|
137
144
|
return true;
|
|
138
145
|
}
|
|
139
146
|
|
|
140
147
|
/**
|
|
141
148
|
* Check if a date is between startDate and endDate (inclusive)
|
|
142
149
|
*/
|
|
143
|
-
export function isDateInSelectedRange(
|
|
150
|
+
export function isDateInSelectedRange(
|
|
151
|
+
date: Date,
|
|
152
|
+
startDate: Date | null,
|
|
153
|
+
endDate: Date | null
|
|
154
|
+
): boolean {
|
|
144
155
|
if (!date || !startDate || !endDate) return false;
|
|
145
|
-
|
|
156
|
+
|
|
146
157
|
// Handle case where end date is before start date
|
|
147
158
|
if (endDate < startDate) {
|
|
148
159
|
return date >= endDate && date <= startDate;
|
|
149
160
|
}
|
|
150
|
-
|
|
161
|
+
|
|
151
162
|
return date >= startDate && date <= endDate;
|
|
152
163
|
}
|
|
@@ -12,46 +12,61 @@ const meta: Meta<typeof Dropdown> = {
|
|
|
12
12
|
layout: 'centered',
|
|
13
13
|
docs: {
|
|
14
14
|
description: {
|
|
15
|
-
component:
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
component:
|
|
16
|
+
'Dropdown component with a toggleable menu. The dropdown menu appears on click or hover, depending on the trigger prop.',
|
|
17
|
+
},
|
|
18
|
+
},
|
|
18
19
|
},
|
|
19
20
|
argTypes: {
|
|
20
21
|
placement: {
|
|
21
22
|
control: 'select',
|
|
22
23
|
options: [
|
|
23
|
-
'bottom-start',
|
|
24
|
-
'
|
|
25
|
-
'
|
|
26
|
-
'
|
|
24
|
+
'bottom-start',
|
|
25
|
+
'bottom-end',
|
|
26
|
+
'top-start',
|
|
27
|
+
'top-end',
|
|
28
|
+
'left-start',
|
|
29
|
+
'left-end',
|
|
30
|
+
'right-start',
|
|
31
|
+
'right-end',
|
|
27
32
|
],
|
|
28
|
-
description: 'The placement of the dropdown menu relative to the trigger element'
|
|
33
|
+
description: 'The placement of the dropdown menu relative to the trigger element',
|
|
29
34
|
},
|
|
30
35
|
trigger: {
|
|
31
36
|
control: 'radio',
|
|
32
37
|
options: ['click', 'hover'],
|
|
33
|
-
description: 'How the dropdown is triggered - by click or hover'
|
|
38
|
+
description: 'How the dropdown is triggered - by click or hover',
|
|
34
39
|
},
|
|
35
40
|
variant: {
|
|
36
41
|
control: 'select',
|
|
37
|
-
options: [
|
|
38
|
-
|
|
42
|
+
options: [
|
|
43
|
+
'primary',
|
|
44
|
+
'secondary',
|
|
45
|
+
'tertiary',
|
|
46
|
+
'success',
|
|
47
|
+
'info',
|
|
48
|
+
'warning',
|
|
49
|
+
'error',
|
|
50
|
+
'light',
|
|
51
|
+
'dark',
|
|
52
|
+
],
|
|
53
|
+
description: 'The color variant of the dropdown',
|
|
39
54
|
},
|
|
40
55
|
minWidth: {
|
|
41
56
|
control: 'text',
|
|
42
|
-
description: 'Minimum width of the dropdown menu'
|
|
57
|
+
description: 'Minimum width of the dropdown menu',
|
|
43
58
|
},
|
|
44
59
|
maxHeight: {
|
|
45
60
|
control: 'text',
|
|
46
|
-
description: 'Maximum height of the dropdown menu'
|
|
61
|
+
description: 'Maximum height of the dropdown menu',
|
|
47
62
|
},
|
|
48
63
|
closeOnClickOutside: {
|
|
49
64
|
control: 'boolean',
|
|
50
|
-
description: 'Whether to close the dropdown when clicking outside'
|
|
65
|
+
description: 'Whether to close the dropdown when clicking outside',
|
|
51
66
|
},
|
|
52
67
|
closeOnEscape: {
|
|
53
68
|
control: 'boolean',
|
|
54
|
-
description: 'Whether to close the dropdown when pressing the Escape key'
|
|
69
|
+
description: 'Whether to close the dropdown when pressing the Escape key',
|
|
55
70
|
},
|
|
56
71
|
},
|
|
57
72
|
};
|
|
@@ -64,14 +79,13 @@ type Story = StoryObj<typeof Dropdown>;
|
|
|
64
79
|
*/
|
|
65
80
|
const InteractiveDropdown = (args: React.ComponentProps<typeof Dropdown>) => {
|
|
66
81
|
const [isOpen, setIsOpen] = useState(false);
|
|
67
|
-
|
|
82
|
+
|
|
68
83
|
return (
|
|
69
|
-
<div
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
/>
|
|
84
|
+
<div
|
|
85
|
+
className="u-p-4"
|
|
86
|
+
style={{ minHeight: '300px', display: 'flex', alignItems: 'flex-start' }}
|
|
87
|
+
>
|
|
88
|
+
<Dropdown {...args} isOpen={isOpen} onOpenChange={setIsOpen} />
|
|
75
89
|
</div>
|
|
76
90
|
);
|
|
77
91
|
};
|
|
@@ -83,7 +97,11 @@ export const Default: Story = {
|
|
|
83
97
|
args: {
|
|
84
98
|
trigger: 'click',
|
|
85
99
|
placement: 'bottom-start',
|
|
86
|
-
children:
|
|
100
|
+
children: (
|
|
101
|
+
<button className="c-btn c-btn--primary">
|
|
102
|
+
Dropdown <Icon name="CaretDown" className="c-dropdown__toggle-icon" size="sm" />
|
|
103
|
+
</button>
|
|
104
|
+
),
|
|
87
105
|
menu: (
|
|
88
106
|
<>
|
|
89
107
|
<DropdownItem>Menu item 1</DropdownItem>
|
|
@@ -92,7 +110,7 @@ export const Default: Story = {
|
|
|
92
110
|
</>
|
|
93
111
|
),
|
|
94
112
|
},
|
|
95
|
-
render:
|
|
113
|
+
render: args => <InteractiveDropdown {...args} />,
|
|
96
114
|
};
|
|
97
115
|
|
|
98
116
|
/**
|
|
@@ -103,7 +121,7 @@ export const ClickTrigger: Story = {
|
|
|
103
121
|
...Default.args,
|
|
104
122
|
trigger: 'click',
|
|
105
123
|
},
|
|
106
|
-
render:
|
|
124
|
+
render: args => <InteractiveDropdown {...args} />,
|
|
107
125
|
};
|
|
108
126
|
|
|
109
127
|
/**
|
|
@@ -114,7 +132,7 @@ export const HoverTrigger: Story = {
|
|
|
114
132
|
...Default.args,
|
|
115
133
|
trigger: 'hover',
|
|
116
134
|
},
|
|
117
|
-
render:
|
|
135
|
+
render: args => <InteractiveDropdown {...args} />,
|
|
118
136
|
};
|
|
119
137
|
|
|
120
138
|
/**
|
|
@@ -132,7 +150,7 @@ export const WithIcons: Story = {
|
|
|
132
150
|
</>
|
|
133
151
|
),
|
|
134
152
|
},
|
|
135
|
-
render:
|
|
153
|
+
render: args => <InteractiveDropdown {...args} />,
|
|
136
154
|
};
|
|
137
155
|
|
|
138
156
|
/**
|
|
@@ -150,7 +168,7 @@ export const WithLinks: Story = {
|
|
|
150
168
|
</>
|
|
151
169
|
),
|
|
152
170
|
},
|
|
153
|
-
render:
|
|
171
|
+
render: args => <InteractiveDropdown {...args} />,
|
|
154
172
|
};
|
|
155
173
|
|
|
156
174
|
/**
|
|
@@ -171,7 +189,7 @@ export const WithHeader: Story = {
|
|
|
171
189
|
</>
|
|
172
190
|
),
|
|
173
191
|
},
|
|
174
|
-
render:
|
|
192
|
+
render: args => <InteractiveDropdown {...args} />,
|
|
175
193
|
};
|
|
176
194
|
|
|
177
195
|
/**
|
|
@@ -188,7 +206,7 @@ export const ActiveItem: Story = {
|
|
|
188
206
|
</>
|
|
189
207
|
),
|
|
190
208
|
},
|
|
191
|
-
render:
|
|
209
|
+
render: args => <InteractiveDropdown {...args} />,
|
|
192
210
|
};
|
|
193
211
|
|
|
194
212
|
/**
|
|
@@ -205,7 +223,7 @@ export const DisabledItem: Story = {
|
|
|
205
223
|
</>
|
|
206
224
|
),
|
|
207
225
|
},
|
|
208
|
-
render:
|
|
226
|
+
render: args => <InteractiveDropdown {...args} />,
|
|
209
227
|
};
|
|
210
228
|
|
|
211
229
|
/**
|
|
@@ -215,9 +233,10 @@ export const AllPlacements: Story = {
|
|
|
215
233
|
parameters: {
|
|
216
234
|
docs: {
|
|
217
235
|
description: {
|
|
218
|
-
story:
|
|
219
|
-
|
|
220
|
-
|
|
236
|
+
story:
|
|
237
|
+
'The Dropdown component supports various placement options to position the menu relative to the trigger element.',
|
|
238
|
+
},
|
|
239
|
+
},
|
|
221
240
|
},
|
|
222
241
|
render: () => {
|
|
223
242
|
// All possible placement options with properly typed icon names
|
|
@@ -231,19 +250,22 @@ export const AllPlacements: Story = {
|
|
|
231
250
|
{ value: 'right-start', label: 'Right Start', icon: 'CaretRight' as const },
|
|
232
251
|
{ value: 'right-end', label: 'Right End', icon: 'CaretRight' as const },
|
|
233
252
|
];
|
|
234
|
-
|
|
253
|
+
|
|
235
254
|
// Create a grid layout with plenty of space for dropdowns to display correctly
|
|
236
255
|
return (
|
|
237
256
|
<div className="u-p-5" style={{ height: '650px' }}>
|
|
238
|
-
<div
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
257
|
+
<div
|
|
258
|
+
className="u-d-grid"
|
|
259
|
+
style={{
|
|
260
|
+
gridTemplateColumns: 'repeat(4, 1fr)',
|
|
261
|
+
gridTemplateRows: 'repeat(2, 1fr)',
|
|
262
|
+
gap: '1.5rem',
|
|
263
|
+
height: '100%',
|
|
264
|
+
}}
|
|
265
|
+
>
|
|
266
|
+
{placements.map(placement => (
|
|
267
|
+
<div
|
|
268
|
+
key={placement.value}
|
|
247
269
|
className="u-d-flex u-align-items-center u-justify-content-center"
|
|
248
270
|
>
|
|
249
271
|
<Dropdown
|
|
@@ -254,7 +276,8 @@ export const AllPlacements: Story = {
|
|
|
254
276
|
closeOnEscape={false}
|
|
255
277
|
children={
|
|
256
278
|
<button className="c-btn c-btn--primary">
|
|
257
|
-
{placement.label}
|
|
279
|
+
{placement.label}{' '}
|
|
280
|
+
<Icon name={placement.icon} className="c-dropdown__toggle-icon" size="sm" />
|
|
258
281
|
</button>
|
|
259
282
|
}
|
|
260
283
|
menu={
|
|
@@ -273,7 +296,6 @@ export const AllPlacements: Story = {
|
|
|
273
296
|
},
|
|
274
297
|
};
|
|
275
298
|
|
|
276
|
-
|
|
277
299
|
/**
|
|
278
300
|
* Dropdown with all color variants
|
|
279
301
|
*/
|
|
@@ -281,13 +303,14 @@ export const AllVariants: Story = {
|
|
|
281
303
|
parameters: {
|
|
282
304
|
docs: {
|
|
283
305
|
description: {
|
|
284
|
-
story:
|
|
285
|
-
|
|
286
|
-
|
|
306
|
+
story:
|
|
307
|
+
'The Dropdown component supports various color variants to match your design system.',
|
|
308
|
+
},
|
|
309
|
+
},
|
|
287
310
|
},
|
|
288
311
|
render: () => {
|
|
289
312
|
const [openDropdown, setOpenDropdown] = useState<string | null>(null);
|
|
290
|
-
|
|
313
|
+
|
|
291
314
|
const handleOpenChange = (variant: string, isOpen: boolean) => {
|
|
292
315
|
if (isOpen) {
|
|
293
316
|
setOpenDropdown(variant);
|
|
@@ -295,20 +318,27 @@ export const AllVariants: Story = {
|
|
|
295
318
|
setOpenDropdown(null);
|
|
296
319
|
}
|
|
297
320
|
};
|
|
298
|
-
|
|
321
|
+
|
|
299
322
|
return (
|
|
300
323
|
<div className="u-p-4" style={{ minHeight: '300px' }}>
|
|
301
324
|
<div className="u-d-flex u-flex-wrap u-gap-3">
|
|
302
325
|
{[
|
|
303
|
-
'primary',
|
|
304
|
-
'
|
|
305
|
-
|
|
326
|
+
'primary',
|
|
327
|
+
'secondary',
|
|
328
|
+
'tertiary',
|
|
329
|
+
'success',
|
|
330
|
+
'info',
|
|
331
|
+
'warning',
|
|
332
|
+
'error',
|
|
333
|
+
'light',
|
|
334
|
+
'dark',
|
|
335
|
+
].map(color => (
|
|
306
336
|
<Dropdown
|
|
307
337
|
key={color}
|
|
308
338
|
variant={color as ThemeColor}
|
|
309
339
|
trigger="click"
|
|
310
340
|
isOpen={openDropdown === color}
|
|
311
|
-
onOpenChange={
|
|
341
|
+
onOpenChange={isOpen => handleOpenChange(color, isOpen)}
|
|
312
342
|
children={
|
|
313
343
|
<button className={`c-btn c-btn--${color}`}>
|
|
314
344
|
{color} <Icon name="CaretDown" className="c-dropdown__toggle-icon" size="sm" />
|