@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
|
@@ -42,7 +42,7 @@ export interface PhotoViewerImageProps {
|
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* PhotoViewerImage component - displays the main image with zoom and pan capabilities
|
|
45
|
-
*
|
|
45
|
+
*
|
|
46
46
|
* @param props - PhotoViewerImageProps
|
|
47
47
|
* @returns JSX.Element
|
|
48
48
|
*/
|
|
@@ -68,7 +68,7 @@ export const PhotoViewerImage: React.FC<PhotoViewerImageProps> = ({
|
|
|
68
68
|
const internalContainerRef = useRef<HTMLDivElement>(null);
|
|
69
69
|
const effectiveContainerRef = containerRef || internalContainerRef;
|
|
70
70
|
const [isMounted, setIsMounted] = useState(false);
|
|
71
|
-
|
|
71
|
+
|
|
72
72
|
// Track mounting state
|
|
73
73
|
useEffect(() => {
|
|
74
74
|
setIsMounted(true);
|
|
@@ -76,43 +76,45 @@ export const PhotoViewerImage: React.FC<PhotoViewerImageProps> = ({
|
|
|
76
76
|
}, []);
|
|
77
77
|
|
|
78
78
|
// Add double-click to zoom
|
|
79
|
-
const handleDoubleClick = (
|
|
79
|
+
const handleDoubleClick = (
|
|
80
|
+
e: React.MouseEvent<HTMLDivElement | HTMLImageElement, MouseEvent>
|
|
81
|
+
) => {
|
|
80
82
|
if (isMounted && onDoubleClick) onDoubleClick(e);
|
|
81
83
|
};
|
|
82
|
-
|
|
84
|
+
|
|
83
85
|
// Add non-passive event listeners to prevent page scrolling/zooming
|
|
84
86
|
useEffect(() => {
|
|
85
87
|
const container = effectiveContainerRef.current;
|
|
86
88
|
if (!container) return undefined;
|
|
87
|
-
|
|
89
|
+
|
|
88
90
|
const handleWheelEvent = (e: WheelEvent) => {
|
|
89
91
|
// Only call if mounted and handler exists
|
|
90
92
|
if (isMounted && container && onWheel) {
|
|
91
93
|
onWheel(e as unknown as React.WheelEvent<HTMLDivElement>);
|
|
92
94
|
}
|
|
93
95
|
};
|
|
94
|
-
|
|
96
|
+
|
|
95
97
|
const handleTouchStartEvent = (e: TouchEvent) => {
|
|
96
98
|
// Only call if mounted and handler exists
|
|
97
99
|
if (isMounted && container && onTouchStart) {
|
|
98
100
|
onTouchStart(e as unknown as React.TouchEvent<HTMLDivElement>);
|
|
99
101
|
}
|
|
100
102
|
};
|
|
101
|
-
|
|
103
|
+
|
|
102
104
|
const handleTouchMoveEvent = (e: TouchEvent) => {
|
|
103
105
|
// Only call if mounted and handler exists
|
|
104
106
|
if (isMounted && container && onTouchMove) {
|
|
105
107
|
onTouchMove(e as unknown as React.TouchEvent<HTMLDivElement>);
|
|
106
108
|
}
|
|
107
109
|
};
|
|
108
|
-
|
|
110
|
+
|
|
109
111
|
const handleTouchEndEvent = (e: TouchEvent) => {
|
|
110
112
|
// Only call if mounted and handler exists
|
|
111
113
|
if (isMounted && container && onTouchEnd) {
|
|
112
114
|
onTouchEnd(e as unknown as React.TouchEvent<HTMLDivElement>);
|
|
113
115
|
}
|
|
114
116
|
};
|
|
115
|
-
|
|
117
|
+
|
|
116
118
|
// Only add event listeners if mounted
|
|
117
119
|
if (isMounted) {
|
|
118
120
|
container.addEventListener('wheel', handleWheelEvent, { passive: false });
|
|
@@ -120,7 +122,7 @@ export const PhotoViewerImage: React.FC<PhotoViewerImageProps> = ({
|
|
|
120
122
|
container.addEventListener('touchmove', handleTouchMoveEvent, { passive: false });
|
|
121
123
|
container.addEventListener('touchend', handleTouchEndEvent, { passive: false });
|
|
122
124
|
}
|
|
123
|
-
|
|
125
|
+
|
|
124
126
|
// Clean up
|
|
125
127
|
return () => {
|
|
126
128
|
container.removeEventListener('wheel', handleWheelEvent);
|
|
@@ -129,7 +131,7 @@ export const PhotoViewerImage: React.FC<PhotoViewerImageProps> = ({
|
|
|
129
131
|
container.removeEventListener('touchend', handleTouchEndEvent);
|
|
130
132
|
};
|
|
131
133
|
}, [isMounted, onWheel, onTouchStart, onTouchMove, onTouchEnd, effectiveContainerRef]);
|
|
132
|
-
|
|
134
|
+
|
|
133
135
|
return (
|
|
134
136
|
<div
|
|
135
137
|
ref={effectiveContainerRef}
|
|
@@ -152,20 +154,20 @@ export const PhotoViewerImage: React.FC<PhotoViewerImageProps> = ({
|
|
|
152
154
|
className="c-photo-viewer__image"
|
|
153
155
|
style={{
|
|
154
156
|
transform: `scale(${zoomLevel}) translate(${dragPosition.x}px, ${dragPosition.y}px) rotate(${rotationAngle}deg)`,
|
|
155
|
-
transition: isDragging
|
|
156
|
-
? 'none'
|
|
157
|
-
: isTransitioning
|
|
158
|
-
? 'opacity 0.15s ease-out'
|
|
157
|
+
transition: isDragging
|
|
158
|
+
? 'none'
|
|
159
|
+
: isTransitioning
|
|
160
|
+
? 'opacity 0.15s ease-out'
|
|
159
161
|
: 'transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)',
|
|
160
162
|
transformOrigin: 'center center',
|
|
161
163
|
willChange: isDragging ? 'transform' : 'auto',
|
|
162
164
|
touchAction: 'none', // Prevent image-specific touch behaviors
|
|
163
165
|
}}
|
|
164
166
|
draggable={false}
|
|
165
|
-
onContextMenu={
|
|
167
|
+
onContextMenu={e => e.preventDefault()} // Prevent context menu on long press
|
|
166
168
|
/>
|
|
167
169
|
</div>
|
|
168
170
|
);
|
|
169
171
|
};
|
|
170
172
|
|
|
171
|
-
export default PhotoViewerImage;
|
|
173
|
+
export default PhotoViewerImage;
|
|
@@ -18,13 +18,13 @@ export interface PhotoViewerInfoProps {
|
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* PhotoViewerInfo component - displays image metadata and information
|
|
21
|
-
*
|
|
21
|
+
*
|
|
22
22
|
* @param props - PhotoViewerInfoProps
|
|
23
23
|
* @returns JSX.Element
|
|
24
24
|
*/
|
|
25
25
|
export const PhotoViewerInfo: React.FC<PhotoViewerInfoProps> = ({ show, image, onClose }) => {
|
|
26
26
|
if (!show || !image) return null;
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
return (
|
|
29
29
|
<div className="c-photo-viewer__info-panel">
|
|
30
30
|
<Button
|
|
@@ -39,13 +39,21 @@ export const PhotoViewerInfo: React.FC<PhotoViewerInfoProps> = ({ show, image, o
|
|
|
39
39
|
/>
|
|
40
40
|
<div className="c-photo-viewer__info-content">
|
|
41
41
|
{image.title && <h3 className="c-photo-viewer__info-title">{image.title}</h3>}
|
|
42
|
-
{image.description &&
|
|
42
|
+
{image.description && (
|
|
43
|
+
<p className="c-photo-viewer__info-description">{image.description}</p>
|
|
44
|
+
)}
|
|
43
45
|
{image.date && <p className="c-photo-viewer__info-meta">Date: {image.date}</p>}
|
|
44
46
|
{image.author && <p className="c-photo-viewer__info-meta">By: {image.author}</p>}
|
|
45
47
|
{image.tags && image.tags.length > 0 && (
|
|
46
48
|
<div className="c-photo-viewer__info-tags">
|
|
47
49
|
{image.tags.map((tag: string, index: number) => (
|
|
48
|
-
<Badge
|
|
50
|
+
<Badge
|
|
51
|
+
key={index}
|
|
52
|
+
label={tag}
|
|
53
|
+
variant="light"
|
|
54
|
+
size="sm"
|
|
55
|
+
className="c-photo-viewer__info-tag"
|
|
56
|
+
/>
|
|
49
57
|
))}
|
|
50
58
|
</div>
|
|
51
59
|
)}
|
|
@@ -54,4 +62,4 @@ export const PhotoViewerInfo: React.FC<PhotoViewerInfoProps> = ({ show, image, o
|
|
|
54
62
|
);
|
|
55
63
|
};
|
|
56
64
|
|
|
57
|
-
export default PhotoViewerInfo;
|
|
65
|
+
export default PhotoViewerInfo;
|
|
@@ -24,7 +24,7 @@ export interface PhotoViewerNavigationProps {
|
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* PhotoViewerNavigation component - handles navigation between images
|
|
27
|
-
*
|
|
27
|
+
*
|
|
28
28
|
* @param props - PhotoViewerNavigationProps
|
|
29
29
|
* @returns JSX.Element
|
|
30
30
|
*/
|
|
@@ -40,17 +40,17 @@ export const PhotoViewerNavigation: React.FC<PhotoViewerNavigationProps> = ({
|
|
|
40
40
|
// Add keyboard navigation
|
|
41
41
|
useEffect(() => {
|
|
42
42
|
if (!enableKeyboardNav) return undefined;
|
|
43
|
-
|
|
43
|
+
|
|
44
44
|
const handleKeyDown = (e: KeyboardEvent) => {
|
|
45
45
|
if (e.key === 'ArrowLeft') onPrev();
|
|
46
46
|
if (e.key === 'ArrowRight') onNext();
|
|
47
47
|
if (e.key === 'Escape') onClose();
|
|
48
48
|
};
|
|
49
|
-
|
|
49
|
+
|
|
50
50
|
window.addEventListener('keydown', handleKeyDown);
|
|
51
51
|
return () => window.removeEventListener('keydown', handleKeyDown);
|
|
52
52
|
}, [enableKeyboardNav, onPrev, onNext, onClose]);
|
|
53
|
-
|
|
53
|
+
|
|
54
54
|
return show ? (
|
|
55
55
|
<>
|
|
56
56
|
<Button
|
|
@@ -79,4 +79,4 @@ export const PhotoViewerNavigation: React.FC<PhotoViewerNavigationProps> = ({
|
|
|
79
79
|
) : null;
|
|
80
80
|
};
|
|
81
81
|
|
|
82
|
-
export default PhotoViewerNavigation;
|
|
82
|
+
export default PhotoViewerNavigation;
|
|
@@ -16,37 +16,38 @@ export interface PhotoViewerThumbnailsProps {
|
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* PhotoViewerThumbnails component - displays thumbnail navigation for images
|
|
19
|
-
*
|
|
19
|
+
*
|
|
20
20
|
* @param props - PhotoViewerThumbnailsProps
|
|
21
21
|
* @returns JSX.Element
|
|
22
22
|
*/
|
|
23
|
-
export const PhotoViewerThumbnails: React.FC<PhotoViewerThumbnailsProps> = ({
|
|
24
|
-
images,
|
|
25
|
-
currentIndex,
|
|
26
|
-
goToImage
|
|
27
|
-
}) =>
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
23
|
+
export const PhotoViewerThumbnails: React.FC<PhotoViewerThumbnailsProps> = ({
|
|
24
|
+
images,
|
|
25
|
+
currentIndex,
|
|
26
|
+
goToImage,
|
|
27
|
+
}) =>
|
|
28
|
+
images.length > 1 ? (
|
|
29
|
+
<div className="c-photo-viewer__thumbnails">
|
|
30
|
+
{images.map((image: ImageType, index: number) => {
|
|
31
|
+
const thumbnailSrc = image.thumbnail || image.src;
|
|
32
|
+
return (
|
|
33
|
+
<Button
|
|
34
|
+
key={index}
|
|
35
|
+
variant="light"
|
|
36
|
+
className={`c-photo-viewer__thumbnail ${index === currentIndex ? 'is-active' : ''}`}
|
|
37
|
+
onClick={() => goToImage(index)}
|
|
38
|
+
aria-label={`View image ${index + 1}`}
|
|
39
|
+
aria-current={index === currentIndex}
|
|
40
|
+
>
|
|
41
|
+
<img
|
|
42
|
+
loading="lazy"
|
|
43
|
+
src={thumbnailSrc}
|
|
44
|
+
alt={image.alt || `Thumbnail ${index + 1}`}
|
|
45
|
+
className="c-photo-viewer__thumbnail-img"
|
|
46
|
+
/>
|
|
47
|
+
</Button>
|
|
48
|
+
);
|
|
49
|
+
})}
|
|
50
|
+
</div>
|
|
51
|
+
) : null;
|
|
51
52
|
|
|
52
|
-
export default PhotoViewerThumbnails;
|
|
53
|
+
export default PhotoViewerThumbnails;
|
|
@@ -23,7 +23,7 @@ const galleryImages: GalleryImage[] = [
|
|
|
23
23
|
description: 'Beautiful mountain landscape with a lake view',
|
|
24
24
|
url: 'https://picsum.photos/id/10/800/600',
|
|
25
25
|
width: 800,
|
|
26
|
-
height: 600
|
|
26
|
+
height: 600,
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
id: 2,
|
|
@@ -31,7 +31,7 @@ const galleryImages: GalleryImage[] = [
|
|
|
31
31
|
description: 'Stunning sunset over the ocean',
|
|
32
32
|
url: 'https://picsum.photos/id/11/800/1000',
|
|
33
33
|
width: 800,
|
|
34
|
-
height: 1000
|
|
34
|
+
height: 1000,
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
id: 3,
|
|
@@ -39,7 +39,7 @@ const galleryImages: GalleryImage[] = [
|
|
|
39
39
|
description: 'A serene path through a dense forest',
|
|
40
40
|
url: 'https://picsum.photos/id/12/800/500',
|
|
41
41
|
width: 800,
|
|
42
|
-
height: 500
|
|
42
|
+
height: 500,
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
id: 4,
|
|
@@ -47,7 +47,7 @@ const galleryImages: GalleryImage[] = [
|
|
|
47
47
|
description: 'Urban skyline with modern architecture',
|
|
48
48
|
url: 'https://picsum.photos/id/13/800/800',
|
|
49
49
|
width: 800,
|
|
50
|
-
height: 800
|
|
50
|
+
height: 800,
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
id: 5,
|
|
@@ -55,7 +55,7 @@ const galleryImages: GalleryImage[] = [
|
|
|
55
55
|
description: 'Colorful abstract painting with geometric shapes',
|
|
56
56
|
url: 'https://picsum.photos/id/14/800/600',
|
|
57
57
|
width: 800,
|
|
58
|
-
height: 600
|
|
58
|
+
height: 600,
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
id: 6,
|
|
@@ -63,7 +63,7 @@ const galleryImages: GalleryImage[] = [
|
|
|
63
63
|
description: 'Wild animals in their natural habitat',
|
|
64
64
|
url: 'https://picsum.photos/id/15/800/1200',
|
|
65
65
|
width: 800,
|
|
66
|
-
height: 1200
|
|
66
|
+
height: 1200,
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
69
|
id: 7,
|
|
@@ -71,7 +71,7 @@ const galleryImages: GalleryImage[] = [
|
|
|
71
71
|
description: 'Impressive architectural details of a historic building',
|
|
72
72
|
url: 'https://picsum.photos/id/16/800/600',
|
|
73
73
|
width: 800,
|
|
74
|
-
height: 600
|
|
74
|
+
height: 600,
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
id: 8,
|
|
@@ -79,7 +79,7 @@ const galleryImages: GalleryImage[] = [
|
|
|
79
79
|
description: 'Delicious culinary creation beautifully presented',
|
|
80
80
|
url: 'https://picsum.photos/id/17/800/700',
|
|
81
81
|
width: 800,
|
|
82
|
-
height: 700
|
|
82
|
+
height: 700,
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
85
|
id: 9,
|
|
@@ -87,7 +87,7 @@ const galleryImages: GalleryImage[] = [
|
|
|
87
87
|
description: 'Expressive portrait capturing human emotion',
|
|
88
88
|
url: 'https://picsum.photos/id/18/800/1000',
|
|
89
89
|
width: 800,
|
|
90
|
-
height: 1000
|
|
90
|
+
height: 1000,
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
93
|
id: 10,
|
|
@@ -95,7 +95,7 @@ const galleryImages: GalleryImage[] = [
|
|
|
95
95
|
description: 'Macro photography revealing intricate natural details',
|
|
96
96
|
url: 'https://picsum.photos/id/19/800/600',
|
|
97
97
|
width: 800,
|
|
98
|
-
height: 600
|
|
98
|
+
height: 600,
|
|
99
99
|
},
|
|
100
100
|
{
|
|
101
101
|
id: 11,
|
|
@@ -103,7 +103,7 @@ const galleryImages: GalleryImage[] = [
|
|
|
103
103
|
description: 'Iconic landmark from a popular travel destination',
|
|
104
104
|
url: 'https://picsum.photos/id/20/800/900',
|
|
105
105
|
width: 800,
|
|
106
|
-
height: 900
|
|
106
|
+
height: 900,
|
|
107
107
|
},
|
|
108
108
|
{
|
|
109
109
|
id: 12,
|
|
@@ -111,63 +111,53 @@ const galleryImages: GalleryImage[] = [
|
|
|
111
111
|
description: 'Clean, minimalist composition with simple elements',
|
|
112
112
|
url: 'https://picsum.photos/id/21/800/600',
|
|
113
113
|
width: 800,
|
|
114
|
-
height: 600
|
|
115
|
-
}
|
|
114
|
+
height: 600,
|
|
115
|
+
},
|
|
116
116
|
];
|
|
117
117
|
|
|
118
118
|
export const ImageGallery: React.FC = () => {
|
|
119
119
|
// State to track which images are selected for the PhotoViewer
|
|
120
120
|
const [selectedImageIndex, setSelectedImageIndex] = useState(0);
|
|
121
121
|
const [showPhotoViewer, setShowPhotoViewer] = useState(false);
|
|
122
|
-
|
|
122
|
+
|
|
123
123
|
// Create enhanced image objects for the PhotoViewer
|
|
124
124
|
const enhancedImages = galleryImages.map(image => ({
|
|
125
125
|
src: image.url,
|
|
126
126
|
alt: image.title,
|
|
127
127
|
title: image.title,
|
|
128
128
|
description: image.description,
|
|
129
|
-
tags: [`${image.width}x${image.height}`]
|
|
129
|
+
tags: [`${image.width}x${image.height}`],
|
|
130
130
|
}));
|
|
131
|
-
|
|
131
|
+
|
|
132
132
|
// Handle clicking on a gallery item
|
|
133
133
|
const handleImageClick = (index: number) => {
|
|
134
134
|
setSelectedImageIndex(index);
|
|
135
135
|
setShowPhotoViewer(true);
|
|
136
136
|
};
|
|
137
|
-
|
|
137
|
+
|
|
138
138
|
// Handle closing the PhotoViewer
|
|
139
139
|
const handlePhotoViewerClose = () => {
|
|
140
140
|
setShowPhotoViewer(false);
|
|
141
141
|
};
|
|
142
|
-
|
|
142
|
+
|
|
143
143
|
// Create spy function for image change handler
|
|
144
144
|
const handleImageChange = fn((index: number) => {
|
|
145
145
|
setSelectedImageIndex(index);
|
|
146
146
|
});
|
|
147
|
-
|
|
147
|
+
|
|
148
148
|
return (
|
|
149
149
|
<div className="c-image-gallery">
|
|
150
150
|
<h2 className="c-image-gallery__title">Image Gallery</h2>
|
|
151
151
|
<p className="c-image-gallery__description">
|
|
152
|
-
Click on any image to view it in the PhotoViewer. Navigate through the gallery using the
|
|
152
|
+
Click on any image to view it in the PhotoViewer. Navigate through the gallery using the
|
|
153
|
+
arrow buttons or thumbnails.
|
|
153
154
|
</p>
|
|
154
|
-
|
|
155
|
+
|
|
155
156
|
{/* MasonryGrid for the image gallery */}
|
|
156
|
-
<MasonryGrid
|
|
157
|
-
xs={1}
|
|
158
|
-
sm={2}
|
|
159
|
-
md={3}
|
|
160
|
-
lg={4}
|
|
161
|
-
gap={16}
|
|
162
|
-
animate={true}
|
|
163
|
-
imagesLoaded={true}
|
|
164
|
-
>
|
|
157
|
+
<MasonryGrid xs={1} sm={2} md={3} lg={4} gap={16} animate={true} imagesLoaded={true}>
|
|
165
158
|
{galleryImages.map((image, index) => (
|
|
166
159
|
<MasonryGridItem key={image.id}>
|
|
167
|
-
<div
|
|
168
|
-
className="c-image-gallery__item"
|
|
169
|
-
onClick={() => handleImageClick(index)}
|
|
170
|
-
>
|
|
160
|
+
<div className="c-image-gallery__item" onClick={() => handleImageClick(index)}>
|
|
171
161
|
<Card
|
|
172
162
|
image={image.url}
|
|
173
163
|
imageAlt={image.title}
|
|
@@ -179,10 +169,10 @@ export const ImageGallery: React.FC = () => {
|
|
|
179
169
|
</MasonryGridItem>
|
|
180
170
|
))}
|
|
181
171
|
</MasonryGrid>
|
|
182
|
-
|
|
172
|
+
|
|
183
173
|
{/* PhotoViewer component */}
|
|
184
174
|
{showPhotoViewer && (
|
|
185
|
-
<PhotoViewer
|
|
175
|
+
<PhotoViewer
|
|
186
176
|
images={enhancedImages}
|
|
187
177
|
startIndex={selectedImageIndex}
|
|
188
178
|
onClose={handlePhotoViewerClose}
|
|
@@ -197,4 +187,4 @@ export const ImageGallery: React.FC = () => {
|
|
|
197
187
|
);
|
|
198
188
|
};
|
|
199
189
|
|
|
200
|
-
export default ImageGallery;
|
|
190
|
+
export default ImageGallery;
|
|
@@ -12,46 +12,52 @@ const images = [
|
|
|
12
12
|
export const SimpleGallery: React.FC = () => {
|
|
13
13
|
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
14
14
|
const [showViewer, setShowViewer] = useState(false);
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
const handleOpen = (index: number) => {
|
|
17
17
|
setSelectedIndex(index);
|
|
18
18
|
setShowViewer(true);
|
|
19
19
|
};
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
const handleClose = () => {
|
|
22
22
|
setShowViewer(false);
|
|
23
23
|
};
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
// Create spy functions for event handlers
|
|
26
26
|
const handleImageChange = fn((index: number) => {
|
|
27
27
|
setSelectedIndex(index);
|
|
28
28
|
});
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
return (
|
|
31
31
|
<div style={{ padding: '20px' }}>
|
|
32
32
|
<h2 style={{ marginBottom: '20px' }}>Simple Gallery Example</h2>
|
|
33
|
-
<div
|
|
33
|
+
<div
|
|
34
|
+
style={{
|
|
35
|
+
display: 'grid',
|
|
36
|
+
gridTemplateColumns: 'repeat(auto-fill, minmax(200px, 1fr))',
|
|
37
|
+
gap: '16px',
|
|
38
|
+
}}
|
|
39
|
+
>
|
|
34
40
|
{images.map((src, index) => (
|
|
35
|
-
<div
|
|
41
|
+
<div
|
|
36
42
|
key={index}
|
|
37
43
|
onClick={() => handleOpen(index)}
|
|
38
|
-
style={{
|
|
44
|
+
style={{
|
|
39
45
|
cursor: 'pointer',
|
|
40
46
|
borderRadius: '8px',
|
|
41
47
|
overflow: 'hidden',
|
|
42
48
|
boxShadow: '0 4px 6px rgba(0,0,0,0.1)',
|
|
43
|
-
transition: 'transform 0.3s ease'
|
|
49
|
+
transition: 'transform 0.3s ease',
|
|
44
50
|
}}
|
|
45
51
|
>
|
|
46
|
-
<img
|
|
47
|
-
src={src}
|
|
48
|
-
alt={`Gallery image ${index + 1}`}
|
|
52
|
+
<img
|
|
53
|
+
src={src}
|
|
54
|
+
alt={`Gallery image ${index + 1}`}
|
|
49
55
|
style={{ width: '100%', height: 'auto', display: 'block' }}
|
|
50
56
|
/>
|
|
51
57
|
</div>
|
|
52
58
|
))}
|
|
53
59
|
</div>
|
|
54
|
-
|
|
60
|
+
|
|
55
61
|
{showViewer && (
|
|
56
62
|
<PhotoViewer
|
|
57
63
|
images={images}
|
|
@@ -68,4 +74,4 @@ export const SimpleGallery: React.FC = () => {
|
|
|
68
74
|
);
|
|
69
75
|
};
|
|
70
76
|
|
|
71
|
-
export default SimpleGallery;
|
|
77
|
+
export default SimpleGallery;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { ImageGallery } from './ImageGallery';
|
|
2
|
-
export type { GalleryImage } from './ImageGallery';
|
|
2
|
+
export type { GalleryImage } from './ImageGallery';
|
|
@@ -11,4 +11,4 @@ export type { PhotoViewerHeaderProps } from './PhotoViewerHeader';
|
|
|
11
11
|
export type { PhotoViewerNavigationProps } from './PhotoViewerNavigation';
|
|
12
12
|
export type { PhotoViewerImageProps } from './PhotoViewerImage';
|
|
13
13
|
export type { PhotoViewerThumbnailsProps } from './PhotoViewerThumbnails';
|
|
14
|
-
export type { PhotoViewerInfoProps } from './PhotoViewerInfo';
|
|
14
|
+
export type { PhotoViewerInfoProps } from './PhotoViewerInfo';
|