@cloud-ru/ds-uikit-product-header 1.0.1-preview-7665e9c3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/LICENSE +201 -0
- package/README.md +717 -0
- package/dist/cjs/components/HeaderButton/HeaderButton.d.ts +14 -0
- package/dist/cjs/components/HeaderButton/HeaderButton.js +33 -0
- package/dist/cjs/components/HeaderButton/index.d.ts +1 -0
- package/dist/cjs/components/HeaderButton/index.js +17 -0
- package/dist/cjs/components/HeaderButton/styles.module.css +3 -0
- package/dist/cjs/components/HeaderLayout/HeaderLayout.d.ts +11 -0
- package/dist/cjs/components/HeaderLayout/HeaderLayout.js +16 -0
- package/dist/cjs/components/HeaderLayout/index.d.ts +1 -0
- package/dist/cjs/components/HeaderLayout/index.js +17 -0
- package/dist/cjs/components/HeaderLayout/styles.module.css +37 -0
- package/dist/cjs/components/Logo/Logo.d.ts +14 -0
- package/dist/cjs/components/Logo/Logo.js +35 -0
- package/dist/cjs/components/Logo/constants.d.ts +10 -0
- package/dist/cjs/components/Logo/constants.js +14 -0
- package/dist/cjs/components/Logo/index.d.ts +1 -0
- package/dist/cjs/components/Logo/index.js +17 -0
- package/dist/cjs/components/Logo/styles.module.css +53 -0
- package/dist/cjs/components/MainMenu/MainMenu.d.ts +2 -0
- package/dist/cjs/components/MainMenu/MainMenu.js +25 -0
- package/dist/cjs/components/MainMenu/constants.d.ts +14 -0
- package/dist/cjs/components/MainMenu/constants.js +24 -0
- package/dist/cjs/components/MainMenu/helperComponents/Banners/MenuBanner.d.ts +16 -0
- package/dist/cjs/components/MainMenu/helperComponents/Banners/MenuBanner.js +27 -0
- package/dist/cjs/components/MainMenu/helperComponents/Banners/constants.d.ts +7 -0
- package/dist/cjs/components/MainMenu/helperComponents/Banners/constants.js +10 -0
- package/dist/cjs/components/MainMenu/helperComponents/Banners/index.d.ts +2 -0
- package/dist/cjs/components/MainMenu/helperComponents/Banners/index.js +18 -0
- package/dist/cjs/components/MainMenu/helperComponents/Banners/styles.module.css +61 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/Content.d.ts +30 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/Content.js +100 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/constants.d.ts +9 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/constants.js +12 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.d.ts +18 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.js +35 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/index.js +17 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/styles.module.css +27 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.d.ts +11 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.js +35 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.d.ts +8 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.js +23 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.d.ts +6 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.js +15 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.d.ts +9 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.js +15 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.d.ts +5 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.js +12 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.d.ts +6 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.js +28 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.d.ts +5 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.js +58 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/index.d.ts +2 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/index.js +18 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/styles.module.css +66 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/index.d.ts +5 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/index.js +21 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/index.d.ts +3 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/index.js +19 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.css +231 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.d.ts +24 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.js +158 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.d.ts +16 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.js +59 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/index.d.ts +2 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/index.js +18 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/styles.module.css +8 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/Favorites.d.ts +12 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/Favorites.js +79 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyFavoriteSVG.d.ts +3 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyFavoriteSVG.js +7 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyRecentSVG.d.ts +3 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyRecentSVG.js +7 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.d.ts +6 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.js +17 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/index.js +17 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/styles.module.css +23 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesItemsSkeleton.d.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesItemsSkeleton.js +12 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.d.ts +19 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.js +30 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.d.ts +8 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.js +28 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/index.d.ts +4 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/index.js +20 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/constants.d.ts +15 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/constants.js +16 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.d.ts +25 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.js +92 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesInsertIndicator.d.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesInsertIndicator.js +37 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/index.d.ts +2 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/index.js +18 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/styles.module.css +87 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/utils.d.ts +6 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/utils.js +15 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.d.ts +2 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.js +63 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/constants.d.ts +3 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/constants.js +7 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/index.js +17 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/styles.module.css +98 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.d.ts +7 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.js +17 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuHeaderBrand/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuHeaderBrand/index.js +17 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuHeaderBrand/styles.module.css +13 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/MenuMobile.d.ts +2 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/MenuMobile.js +36 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/index.js +17 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/styles.module.css +25 -0
- package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/MountAnimation.d.ts +7 -0
- package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/MountAnimation.js +13 -0
- package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/index.js +5 -0
- package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/styles.module.css +60 -0
- package/dist/cjs/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/ScrollWithAnimatedStickyPanel.d.ts +6 -0
- package/dist/cjs/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/ScrollWithAnimatedStickyPanel.js +37 -0
- package/dist/cjs/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/index.js +17 -0
- package/dist/cjs/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/styles.module.css +12 -0
- package/dist/cjs/components/MainMenu/helperComponents/Search/Search.d.ts +7 -0
- package/dist/cjs/components/MainMenu/helperComponents/Search/Search.js +15 -0
- package/dist/cjs/components/MainMenu/helperComponents/Search/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/Search/index.js +17 -0
- package/dist/cjs/components/MainMenu/helperComponents/Search/styles.module.css +8 -0
- package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/ServiceCard.d.ts +19 -0
- package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/ServiceCard.js +53 -0
- package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/index.d.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/index.js +17 -0
- package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/styles.module.css +12 -0
- package/dist/cjs/components/MainMenu/hooks/useMainMenuDnd.d.ts +30 -0
- package/dist/cjs/components/MainMenu/hooks/useMainMenuDnd.js +93 -0
- package/dist/cjs/components/MainMenu/hooks/useMenuItems.d.ts +8 -0
- package/dist/cjs/components/MainMenu/hooks/useMenuItems.js +39 -0
- package/dist/cjs/components/MainMenu/index.d.ts +5 -0
- package/dist/cjs/components/MainMenu/index.js +21 -0
- package/dist/cjs/components/MainMenu/types.d.ts +284 -0
- package/dist/cjs/components/MainMenu/types.js +2 -0
- package/dist/cjs/components/MainMenu/utils/dedupeSearchGroups.d.ts +15 -0
- package/dist/cjs/components/MainMenu/utils/dedupeSearchGroups.js +32 -0
- package/dist/cjs/components/MainMenu/utils/dnd/favoriteListCollisionDetection.d.ts +2 -0
- package/dist/cjs/components/MainMenu/utils/dnd/favoriteListCollisionDetection.js +32 -0
- package/dist/cjs/components/MainMenu/utils/dnd/getDragReferenceY.d.ts +9 -0
- package/dist/cjs/components/MainMenu/utils/dnd/getDragReferenceY.js +17 -0
- package/dist/cjs/components/MainMenu/utils/dnd/getFavoriteInsertIndex.d.ts +12 -0
- package/dist/cjs/components/MainMenu/utils/dnd/getFavoriteInsertIndex.js +36 -0
- package/dist/cjs/components/MainMenu/utils/dnd/ids.d.ts +8 -0
- package/dist/cjs/components/MainMenu/utils/dnd/ids.js +48 -0
- package/dist/cjs/components/MainMenu/utils/dnd/index.d.ts +5 -0
- package/dist/cjs/components/MainMenu/utils/dnd/index.js +21 -0
- package/dist/cjs/components/MainMenu/utils/dnd/resolveFavoriteOrderOnDragEnd.d.ts +10 -0
- package/dist/cjs/components/MainMenu/utils/dnd/resolveFavoriteOrderOnDragEnd.js +45 -0
- package/dist/cjs/components/MainMenu/utils/filterLinksGroupsFuzzy.d.ts +2 -0
- package/dist/cjs/components/MainMenu/utils/filterLinksGroupsFuzzy.js +155 -0
- package/dist/cjs/components/MainMenu/utils/flatLinksGroups.d.ts +2 -0
- package/dist/cjs/components/MainMenu/utils/flatLinksGroups.js +7 -0
- package/dist/cjs/components/MainMenu/utils/getAvatarNameFromLabel.d.ts +14 -0
- package/dist/cjs/components/MainMenu/utils/getAvatarNameFromLabel.js +24 -0
- package/dist/cjs/components/MainMenu/utils/getLinkEmblem.d.ts +3 -0
- package/dist/cjs/components/MainMenu/utils/getLinkEmblem.js +18 -0
- package/dist/cjs/components/MainMenu/utils/index.d.ts +12 -0
- package/dist/cjs/components/MainMenu/utils/index.js +28 -0
- package/dist/cjs/components/MainMenu/utils/innerLink.d.ts +7 -0
- package/dist/cjs/components/MainMenu/utils/innerLink.js +42 -0
- package/dist/cjs/components/MainMenu/utils/mapInnerLinksToListItems.d.ts +3 -0
- package/dist/cjs/components/MainMenu/utils/mapInnerLinksToListItems.js +16 -0
- package/dist/cjs/components/MainMenu/utils/mapOrderedFavoriteIdsToLinks.d.ts +2 -0
- package/dist/cjs/components/MainMenu/utils/mapOrderedFavoriteIdsToLinks.js +9 -0
- package/dist/cjs/components/MainMenu/utils/pinGroupToBottom.d.ts +2 -0
- package/dist/cjs/components/MainMenu/utils/pinGroupToBottom.js +15 -0
- package/dist/cjs/components/MainMenu/utils/resolveGroupBlockColor.d.ts +8 -0
- package/dist/cjs/components/MainMenu/utils/resolveGroupBlockColor.js +12 -0
- package/dist/cjs/components/MainMenu/utils/resolveInnerLinksByIds.d.ts +2 -0
- package/dist/cjs/components/MainMenu/utils/resolveInnerLinksByIds.js +11 -0
- package/dist/cjs/components/MainMenu/utils/search.d.ts +1 -0
- package/dist/cjs/components/MainMenu/utils/search.js +27 -0
- package/dist/cjs/components/PathBreadcrumbs/PathBreadcrumbs.d.ts +7 -0
- package/dist/cjs/components/PathBreadcrumbs/PathBreadcrumbs.js +12 -0
- package/dist/cjs/components/PathBreadcrumbs/index.d.ts +1 -0
- package/dist/cjs/components/PathBreadcrumbs/index.js +17 -0
- package/dist/cjs/components/PathBreadcrumbs/styles.module.css +4 -0
- package/dist/cjs/components/PlatformLogo/Container.d.ts +12 -0
- package/dist/cjs/components/PlatformLogo/Container.js +16 -0
- package/dist/cjs/components/PlatformLogo/index.d.ts +6 -0
- package/dist/cjs/components/PlatformLogo/index.js +11 -0
- package/dist/cjs/components/PlatformLogo/styles.module.css +9 -0
- package/dist/cjs/components/UserMenu/UserMenu.d.ts +14 -0
- package/dist/cjs/components/UserMenu/UserMenu.js +46 -0
- package/dist/cjs/components/UserMenu/hooks/useLogoutItem.d.ts +4 -0
- package/dist/cjs/components/UserMenu/hooks/useLogoutItem.js +20 -0
- package/dist/cjs/components/UserMenu/hooks/useProfileItem.d.ts +3 -0
- package/dist/cjs/components/UserMenu/hooks/useProfileItem.js +24 -0
- package/dist/cjs/components/UserMenu/hooks/useThemeItem.d.ts +6 -0
- package/dist/cjs/components/UserMenu/hooks/useThemeItem.js +54 -0
- package/dist/cjs/components/UserMenu/hooks/useUserMenuItems.d.ts +87 -0
- package/dist/cjs/components/UserMenu/hooks/useUserMenuItems.js +45 -0
- package/dist/cjs/components/UserMenu/index.d.ts +2 -0
- package/dist/cjs/components/UserMenu/index.js +18 -0
- package/dist/cjs/components/UserMenu/styles.module.css +7 -0
- package/dist/cjs/components/UserMenu/types.d.ts +20 -0
- package/dist/cjs/components/UserMenu/types.js +8 -0
- package/dist/cjs/components/index.d.ts +7 -0
- package/dist/cjs/components/index.js +23 -0
- package/dist/cjs/constants.d.ts +20 -0
- package/dist/cjs/constants.js +23 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/locale/index.d.ts +118 -0
- package/dist/cjs/locale/index.js +63 -0
- package/dist/cjs/mobileOverlays.d.ts +21 -0
- package/dist/cjs/mobileOverlays.js +18 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/style.css +844 -0
- package/dist/cjs/utils/shouldBeOpenedInNewTab.d.ts +2 -0
- package/dist/cjs/utils/shouldBeOpenedInNewTab.js +6 -0
- package/dist/esm/components/HeaderButton/HeaderButton.d.ts +14 -0
- package/dist/esm/components/HeaderButton/HeaderButton.js +27 -0
- package/dist/esm/components/HeaderButton/index.d.ts +1 -0
- package/dist/esm/components/HeaderButton/index.js +1 -0
- package/dist/esm/components/HeaderButton/styles.module.css +3 -0
- package/dist/esm/components/HeaderLayout/HeaderLayout.d.ts +11 -0
- package/dist/esm/components/HeaderLayout/HeaderLayout.js +10 -0
- package/dist/esm/components/HeaderLayout/index.d.ts +1 -0
- package/dist/esm/components/HeaderLayout/index.js +1 -0
- package/dist/esm/components/HeaderLayout/styles.module.css +37 -0
- package/dist/esm/components/Logo/Logo.d.ts +14 -0
- package/dist/esm/components/Logo/Logo.js +29 -0
- package/dist/esm/components/Logo/constants.d.ts +10 -0
- package/dist/esm/components/Logo/constants.js +11 -0
- package/dist/esm/components/Logo/index.d.ts +1 -0
- package/dist/esm/components/Logo/index.js +1 -0
- package/dist/esm/components/Logo/styles.module.css +53 -0
- package/dist/esm/components/MainMenu/MainMenu.d.ts +2 -0
- package/dist/esm/components/MainMenu/MainMenu.js +22 -0
- package/dist/esm/components/MainMenu/constants.d.ts +14 -0
- package/dist/esm/components/MainMenu/constants.js +21 -0
- package/dist/esm/components/MainMenu/helperComponents/Banners/MenuBanner.d.ts +16 -0
- package/dist/esm/components/MainMenu/helperComponents/Banners/MenuBanner.js +21 -0
- package/dist/esm/components/MainMenu/helperComponents/Banners/constants.d.ts +7 -0
- package/dist/esm/components/MainMenu/helperComponents/Banners/constants.js +7 -0
- package/dist/esm/components/MainMenu/helperComponents/Banners/index.d.ts +2 -0
- package/dist/esm/components/MainMenu/helperComponents/Banners/index.js +2 -0
- package/dist/esm/components/MainMenu/helperComponents/Banners/styles.module.css +61 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/Content.d.ts +30 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/Content.js +94 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/constants.d.ts +9 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/constants.js +9 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.d.ts +18 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.js +29 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/index.js +1 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/styles.module.css +27 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.d.ts +11 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.js +28 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.d.ts +8 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.js +17 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.d.ts +6 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.js +9 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.d.ts +9 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.js +9 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.d.ts +5 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.js +6 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.d.ts +6 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.js +22 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.d.ts +5 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.js +52 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/index.d.ts +2 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/index.js +2 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/styles.module.css +66 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/index.d.ts +5 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/index.js +5 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/index.d.ts +3 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/index.js +3 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.css +231 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.d.ts +24 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.js +155 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.d.ts +16 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.js +56 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/index.d.ts +2 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/index.js +2 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/styles.module.css +8 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/Favorites.d.ts +12 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/Favorites.js +73 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyFavoriteSVG.d.ts +3 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyFavoriteSVG.js +4 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyRecentSVG.d.ts +3 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyRecentSVG.js +4 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.d.ts +6 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.js +11 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/index.js +1 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/styles.module.css +23 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesItemsSkeleton.d.ts +1 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesItemsSkeleton.js +6 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.d.ts +19 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.js +24 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.d.ts +8 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.js +22 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/index.d.ts +4 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/index.js +4 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/constants.d.ts +15 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/constants.js +13 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.d.ts +25 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.js +89 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesInsertIndicator.d.ts +1 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesInsertIndicator.js +34 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/index.d.ts +2 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/index.js +2 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/styles.module.css +87 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/utils.d.ts +6 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/utils.js +12 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.d.ts +2 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.js +57 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/constants.d.ts +3 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/constants.js +4 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/index.js +1 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/styles.module.css +98 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.d.ts +7 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.js +11 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuHeaderBrand/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuHeaderBrand/index.js +1 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuHeaderBrand/styles.module.css +13 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/MenuMobile.d.ts +2 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/MenuMobile.js +30 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/index.js +1 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/styles.module.css +25 -0
- package/dist/esm/components/MainMenu/helperComponents/MountAnimation/MountAnimation.d.ts +7 -0
- package/dist/esm/components/MainMenu/helperComponents/MountAnimation/MountAnimation.js +7 -0
- package/dist/esm/components/MainMenu/helperComponents/MountAnimation/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/helperComponents/MountAnimation/index.js +1 -0
- package/dist/esm/components/MainMenu/helperComponents/MountAnimation/styles.module.css +60 -0
- package/dist/esm/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/ScrollWithAnimatedStickyPanel.d.ts +6 -0
- package/dist/esm/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/ScrollWithAnimatedStickyPanel.js +31 -0
- package/dist/esm/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/index.js +1 -0
- package/dist/esm/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/styles.module.css +12 -0
- package/dist/esm/components/MainMenu/helperComponents/Search/Search.d.ts +7 -0
- package/dist/esm/components/MainMenu/helperComponents/Search/Search.js +9 -0
- package/dist/esm/components/MainMenu/helperComponents/Search/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/helperComponents/Search/index.js +1 -0
- package/dist/esm/components/MainMenu/helperComponents/Search/styles.module.css +8 -0
- package/dist/esm/components/MainMenu/helperComponents/ServiceCard/ServiceCard.d.ts +19 -0
- package/dist/esm/components/MainMenu/helperComponents/ServiceCard/ServiceCard.js +46 -0
- package/dist/esm/components/MainMenu/helperComponents/ServiceCard/index.d.ts +1 -0
- package/dist/esm/components/MainMenu/helperComponents/ServiceCard/index.js +1 -0
- package/dist/esm/components/MainMenu/helperComponents/ServiceCard/styles.module.css +12 -0
- package/dist/esm/components/MainMenu/hooks/useMainMenuDnd.d.ts +30 -0
- package/dist/esm/components/MainMenu/hooks/useMainMenuDnd.js +88 -0
- package/dist/esm/components/MainMenu/hooks/useMenuItems.d.ts +8 -0
- package/dist/esm/components/MainMenu/hooks/useMenuItems.js +36 -0
- package/dist/esm/components/MainMenu/index.d.ts +5 -0
- package/dist/esm/components/MainMenu/index.js +5 -0
- package/dist/esm/components/MainMenu/types.d.ts +284 -0
- package/dist/esm/components/MainMenu/types.js +1 -0
- package/dist/esm/components/MainMenu/utils/dedupeSearchGroups.d.ts +15 -0
- package/dist/esm/components/MainMenu/utils/dedupeSearchGroups.js +29 -0
- package/dist/esm/components/MainMenu/utils/dnd/favoriteListCollisionDetection.d.ts +2 -0
- package/dist/esm/components/MainMenu/utils/dnd/favoriteListCollisionDetection.js +28 -0
- package/dist/esm/components/MainMenu/utils/dnd/getDragReferenceY.d.ts +9 -0
- package/dist/esm/components/MainMenu/utils/dnd/getDragReferenceY.js +14 -0
- package/dist/esm/components/MainMenu/utils/dnd/getFavoriteInsertIndex.d.ts +12 -0
- package/dist/esm/components/MainMenu/utils/dnd/getFavoriteInsertIndex.js +32 -0
- package/dist/esm/components/MainMenu/utils/dnd/ids.d.ts +8 -0
- package/dist/esm/components/MainMenu/utils/dnd/ids.js +38 -0
- package/dist/esm/components/MainMenu/utils/dnd/index.d.ts +5 -0
- package/dist/esm/components/MainMenu/utils/dnd/index.js +5 -0
- package/dist/esm/components/MainMenu/utils/dnd/resolveFavoriteOrderOnDragEnd.d.ts +10 -0
- package/dist/esm/components/MainMenu/utils/dnd/resolveFavoriteOrderOnDragEnd.js +42 -0
- package/dist/esm/components/MainMenu/utils/filterLinksGroupsFuzzy.d.ts +2 -0
- package/dist/esm/components/MainMenu/utils/filterLinksGroupsFuzzy.js +149 -0
- package/dist/esm/components/MainMenu/utils/flatLinksGroups.d.ts +2 -0
- package/dist/esm/components/MainMenu/utils/flatLinksGroups.js +4 -0
- package/dist/esm/components/MainMenu/utils/getAvatarNameFromLabel.d.ts +14 -0
- package/dist/esm/components/MainMenu/utils/getAvatarNameFromLabel.js +21 -0
- package/dist/esm/components/MainMenu/utils/getLinkEmblem.d.ts +3 -0
- package/dist/esm/components/MainMenu/utils/getLinkEmblem.js +15 -0
- package/dist/esm/components/MainMenu/utils/index.d.ts +12 -0
- package/dist/esm/components/MainMenu/utils/index.js +12 -0
- package/dist/esm/components/MainMenu/utils/innerLink.d.ts +7 -0
- package/dist/esm/components/MainMenu/utils/innerLink.js +34 -0
- package/dist/esm/components/MainMenu/utils/mapInnerLinksToListItems.d.ts +3 -0
- package/dist/esm/components/MainMenu/utils/mapInnerLinksToListItems.js +13 -0
- package/dist/esm/components/MainMenu/utils/mapOrderedFavoriteIdsToLinks.d.ts +2 -0
- package/dist/esm/components/MainMenu/utils/mapOrderedFavoriteIdsToLinks.js +6 -0
- package/dist/esm/components/MainMenu/utils/pinGroupToBottom.d.ts +2 -0
- package/dist/esm/components/MainMenu/utils/pinGroupToBottom.js +12 -0
- package/dist/esm/components/MainMenu/utils/resolveGroupBlockColor.d.ts +8 -0
- package/dist/esm/components/MainMenu/utils/resolveGroupBlockColor.js +9 -0
- package/dist/esm/components/MainMenu/utils/resolveInnerLinksByIds.d.ts +2 -0
- package/dist/esm/components/MainMenu/utils/resolveInnerLinksByIds.js +8 -0
- package/dist/esm/components/MainMenu/utils/search.d.ts +1 -0
- package/dist/esm/components/MainMenu/utils/search.js +24 -0
- package/dist/esm/components/PathBreadcrumbs/PathBreadcrumbs.d.ts +7 -0
- package/dist/esm/components/PathBreadcrumbs/PathBreadcrumbs.js +6 -0
- package/dist/esm/components/PathBreadcrumbs/index.d.ts +1 -0
- package/dist/esm/components/PathBreadcrumbs/index.js +1 -0
- package/dist/esm/components/PathBreadcrumbs/styles.module.css +4 -0
- package/dist/esm/components/PlatformLogo/Container.d.ts +12 -0
- package/dist/esm/components/PlatformLogo/Container.js +8 -0
- package/dist/esm/components/PlatformLogo/index.d.ts +6 -0
- package/dist/esm/components/PlatformLogo/index.js +8 -0
- package/dist/esm/components/PlatformLogo/styles.module.css +9 -0
- package/dist/esm/components/UserMenu/UserMenu.d.ts +14 -0
- package/dist/esm/components/UserMenu/UserMenu.js +40 -0
- package/dist/esm/components/UserMenu/hooks/useLogoutItem.d.ts +4 -0
- package/dist/esm/components/UserMenu/hooks/useLogoutItem.js +17 -0
- package/dist/esm/components/UserMenu/hooks/useProfileItem.d.ts +3 -0
- package/dist/esm/components/UserMenu/hooks/useProfileItem.js +21 -0
- package/dist/esm/components/UserMenu/hooks/useThemeItem.d.ts +6 -0
- package/dist/esm/components/UserMenu/hooks/useThemeItem.js +51 -0
- package/dist/esm/components/UserMenu/hooks/useUserMenuItems.d.ts +87 -0
- package/dist/esm/components/UserMenu/hooks/useUserMenuItems.js +42 -0
- package/dist/esm/components/UserMenu/index.d.ts +2 -0
- package/dist/esm/components/UserMenu/index.js +2 -0
- package/dist/esm/components/UserMenu/styles.module.css +7 -0
- package/dist/esm/components/UserMenu/types.d.ts +20 -0
- package/dist/esm/components/UserMenu/types.js +5 -0
- package/dist/esm/components/index.d.ts +7 -0
- package/dist/esm/components/index.js +7 -0
- package/dist/esm/constants.d.ts +20 -0
- package/dist/esm/constants.js +20 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/locale/index.d.ts +118 -0
- package/dist/esm/locale/index.js +60 -0
- package/dist/esm/mobileOverlays.d.ts +21 -0
- package/dist/esm/mobileOverlays.js +15 -0
- package/dist/esm/style.css +844 -0
- package/dist/esm/utils/shouldBeOpenedInNewTab.d.ts +2 -0
- package/dist/esm/utils/shouldBeOpenedInNewTab.js +3 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +77 -0
- package/src/components/HeaderButton/HeaderButton.tsx +57 -0
- package/src/components/HeaderButton/index.ts +1 -0
- package/src/components/HeaderButton/styles.module.scss +3 -0
- package/src/components/HeaderLayout/HeaderLayout.tsx +56 -0
- package/src/components/HeaderLayout/index.ts +1 -0
- package/src/components/HeaderLayout/styles.module.scss +42 -0
- package/src/components/Logo/Logo.tsx +76 -0
- package/src/components/Logo/constants.ts +17 -0
- package/src/components/Logo/index.ts +1 -0
- package/src/components/Logo/styles.module.scss +64 -0
- package/src/components/MainMenu/MainMenu.tsx +84 -0
- package/src/components/MainMenu/constants.ts +24 -0
- package/src/components/MainMenu/helperComponents/Banners/MenuBanner.tsx +103 -0
- package/src/components/MainMenu/helperComponents/Banners/constants.ts +7 -0
- package/src/components/MainMenu/helperComponents/Banners/index.ts +2 -0
- package/src/components/MainMenu/helperComponents/Banners/styles.module.scss +75 -0
- package/src/components/MainMenu/helperComponents/Content/Content.tsx +267 -0
- package/src/components/MainMenu/helperComponents/Content/constants.ts +9 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.tsx +136 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/index.ts +1 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/styles.module.scss +31 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.tsx +131 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.tsx +64 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.tsx +29 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.tsx +47 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.tsx +35 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.tsx +79 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.tsx +128 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/index.ts +2 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/styles.module.scss +77 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/index.ts +5 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/index.ts +3 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.scss +270 -0
- package/src/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.ts +250 -0
- package/src/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.tsx +104 -0
- package/src/components/MainMenu/helperComponents/Content/index.ts +2 -0
- package/src/components/MainMenu/helperComponents/Content/styles.module.scss +11 -0
- package/src/components/MainMenu/helperComponents/Favorites/Favorites.tsx +176 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyFavoriteSVG.tsx +24 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyRecentSVG.tsx +38 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.tsx +36 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/EmptyState/index.ts +1 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/EmptyState/styles.module.scss +27 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/FavoritesItemsSkeleton.tsx +15 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.tsx +78 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.tsx +70 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/index.ts +4 -0
- package/src/components/MainMenu/helperComponents/Favorites/constants.ts +18 -0
- package/src/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.tsx +123 -0
- package/src/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesInsertIndicator.ts +41 -0
- package/src/components/MainMenu/helperComponents/Favorites/index.ts +2 -0
- package/src/components/MainMenu/helperComponents/Favorites/styles.module.scss +101 -0
- package/src/components/MainMenu/helperComponents/Favorites/utils.ts +22 -0
- package/src/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.tsx +172 -0
- package/src/components/MainMenu/helperComponents/MenuDesktop/constants.ts +6 -0
- package/src/components/MainMenu/helperComponents/MenuDesktop/index.ts +1 -0
- package/src/components/MainMenu/helperComponents/MenuDesktop/styles.module.scss +118 -0
- package/src/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.tsx +27 -0
- package/src/components/MainMenu/helperComponents/MenuHeaderBrand/index.ts +1 -0
- package/src/components/MainMenu/helperComponents/MenuHeaderBrand/styles.module.scss +17 -0
- package/src/components/MainMenu/helperComponents/MenuMobile/MenuMobile.tsx +101 -0
- package/src/components/MainMenu/helperComponents/MenuMobile/index.ts +1 -0
- package/src/components/MainMenu/helperComponents/MenuMobile/styles.module.scss +32 -0
- package/src/components/MainMenu/helperComponents/MountAnimation/MountAnimation.tsx +20 -0
- package/src/components/MainMenu/helperComponents/MountAnimation/index.ts +1 -0
- package/src/components/MainMenu/helperComponents/MountAnimation/styles.module.scss +77 -0
- package/src/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/ScrollWithAnimatedStickyPanel.tsx +54 -0
- package/src/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/index.ts +1 -0
- package/src/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/styles.module.scss +16 -0
- package/src/components/MainMenu/helperComponents/Search/Search.tsx +34 -0
- package/src/components/MainMenu/helperComponents/Search/index.ts +1 -0
- package/src/components/MainMenu/helperComponents/Search/styles.module.scss +14 -0
- package/src/components/MainMenu/helperComponents/ServiceCard/ServiceCard.tsx +111 -0
- package/src/components/MainMenu/helperComponents/ServiceCard/index.ts +1 -0
- package/src/components/MainMenu/helperComponents/ServiceCard/styles.module.scss +14 -0
- package/src/components/MainMenu/hooks/useMainMenuDnd.tsx +187 -0
- package/src/components/MainMenu/hooks/useMenuItems.tsx +59 -0
- package/src/components/MainMenu/index.ts +5 -0
- package/src/components/MainMenu/types.ts +311 -0
- package/src/components/MainMenu/utils/dedupeSearchGroups.ts +35 -0
- package/src/components/MainMenu/utils/dnd/favoriteListCollisionDetection.ts +35 -0
- package/src/components/MainMenu/utils/dnd/getDragReferenceY.ts +26 -0
- package/src/components/MainMenu/utils/dnd/getFavoriteInsertIndex.ts +63 -0
- package/src/components/MainMenu/utils/dnd/ids.ts +53 -0
- package/src/components/MainMenu/utils/dnd/index.ts +5 -0
- package/src/components/MainMenu/utils/dnd/resolveFavoriteOrderOnDragEnd.ts +74 -0
- package/src/components/MainMenu/utils/filterLinksGroupsFuzzy.ts +205 -0
- package/src/components/MainMenu/utils/flatLinksGroups.ts +6 -0
- package/src/components/MainMenu/utils/getAvatarNameFromLabel.ts +24 -0
- package/src/components/MainMenu/utils/getLinkEmblem.tsx +27 -0
- package/src/components/MainMenu/utils/index.ts +12 -0
- package/src/components/MainMenu/utils/innerLink.ts +45 -0
- package/src/components/MainMenu/utils/mapInnerLinksToListItems.tsx +17 -0
- package/src/components/MainMenu/utils/mapOrderedFavoriteIdsToLinks.ts +13 -0
- package/src/components/MainMenu/utils/pinGroupToBottom.ts +17 -0
- package/src/components/MainMenu/utils/resolveGroupBlockColor.ts +14 -0
- package/src/components/MainMenu/utils/resolveInnerLinksByIds.ts +12 -0
- package/src/components/MainMenu/utils/search.ts +32 -0
- package/src/components/PathBreadcrumbs/PathBreadcrumbs.tsx +21 -0
- package/src/components/PathBreadcrumbs/index.ts +1 -0
- package/src/components/PathBreadcrumbs/styles.module.scss +7 -0
- package/src/components/PlatformLogo/Container.tsx +31 -0
- package/src/components/PlatformLogo/index.ts +17 -0
- package/src/components/PlatformLogo/styles.module.scss +13 -0
- package/src/components/UserMenu/UserMenu.tsx +106 -0
- package/src/components/UserMenu/hooks/useLogoutItem.tsx +23 -0
- package/src/components/UserMenu/hooks/useProfileItem.tsx +33 -0
- package/src/components/UserMenu/hooks/useThemeItem.tsx +70 -0
- package/src/components/UserMenu/hooks/useUserMenuItems.ts +77 -0
- package/src/components/UserMenu/index.ts +2 -0
- package/src/components/UserMenu/styles.module.scss +7 -0
- package/src/components/UserMenu/types.ts +24 -0
- package/src/components/index.ts +7 -0
- package/src/constants.ts +20 -0
- package/src/index.ts +4 -0
- package/src/locale/index.ts +64 -0
- package/src/mobileOverlays.ts +26 -0
- package/src/utils/shouldBeOpenedInNewTab.ts +5 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Scroll } from '@cloud-ru/ds-scroll';
|
|
3
|
+
import { useCallback, useRef, useState } from 'react';
|
|
4
|
+
import styles from './styles.module.css';
|
|
5
|
+
export function ScrollWithAnimatedStickyPanel({ panel, children }) {
|
|
6
|
+
const [positions, setPositions] = useState({ panelTopShift: 0, containerScroll: 0 });
|
|
7
|
+
const [panelHeight, setPanelHeight] = useState(0);
|
|
8
|
+
const panelRef = useRef(undefined);
|
|
9
|
+
const handleScroll = useCallback((event) => {
|
|
10
|
+
if (!event || !event.target)
|
|
11
|
+
return;
|
|
12
|
+
const target = event.target;
|
|
13
|
+
setPositions(prev => {
|
|
14
|
+
if (!panelRef.current)
|
|
15
|
+
return prev;
|
|
16
|
+
const panelHeight = panelRef.current.offsetHeight;
|
|
17
|
+
setPanelHeight(panelHeight);
|
|
18
|
+
const diff = prev.containerScroll - target.scrollTop;
|
|
19
|
+
return {
|
|
20
|
+
panelTopShift: Math.max(-panelHeight, Math.min(0, prev.panelTopShift + diff)),
|
|
21
|
+
containerScroll: target.scrollTop,
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
}, []);
|
|
25
|
+
return (_jsxs("div", { className: styles.container, style: { '--snack-autohide-panel-height': `${panelHeight}px` }, children: [_jsx(Scroll, { barHideStrategy: 'never', overflow: { x: 'hidden' }, onScroll: handleScroll, children: children }), _jsx("div", { className: styles.panel, ref: element => {
|
|
26
|
+
if (element) {
|
|
27
|
+
setPanelHeight(element.offsetHeight);
|
|
28
|
+
panelRef.current = element;
|
|
29
|
+
}
|
|
30
|
+
}, style: { top: positions.panelTopShift }, children: panel })] }));
|
|
31
|
+
}
|
package/dist/esm/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ScrollWithAnimatedStickyPanel.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ScrollWithAnimatedStickyPanel.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const Search: import("react").ForwardRefExoticComponent<Pick<import("@cloud-ru/ds-search").SearchProps, "onFocus" | "onBlur"> & {
|
|
2
|
+
value: string;
|
|
3
|
+
onChange(value: string): void;
|
|
4
|
+
onSearchNoResult?(value: string): void;
|
|
5
|
+
} & {
|
|
6
|
+
isMobile?: boolean;
|
|
7
|
+
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Search as SearchSnack } from '@cloud-ru/ds-search';
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { headerLocale } from '../../../../locale/index.js';
|
|
5
|
+
import styles from './styles.module.css';
|
|
6
|
+
export const Search = forwardRef(({ value, onChange, onBlur, onFocus, isMobile = false }, ref) => {
|
|
7
|
+
const { t } = headerLocale.useTranslations();
|
|
8
|
+
return (_jsx("div", { className: styles.searchWrap, "data-mobile": isMobile || undefined, children: _jsx(SearchSnack, { ref: ref, size: 'm', outline: !isMobile, placeholder: t('searchByServices'), value: value, onChange: onChange, onBlur: onBlur, onFocus: onFocus, "data-test-id": 'header__drawer-menu__search', className: styles.search, background: isMobile }) }));
|
|
9
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Search.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Search.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CardServiceLightProps } from '@cloud-ru/ds-uikit-product-card-predefined';
|
|
2
|
+
import { MouseEvent } from 'react';
|
|
3
|
+
import { FavoriteProps, InnerLink } from '../../types.js';
|
|
4
|
+
export type ServiceCardProps = {
|
|
5
|
+
service: InnerLink;
|
|
6
|
+
favorite?: FavoriteProps;
|
|
7
|
+
isMobile?: boolean;
|
|
8
|
+
onServiceClick?(service: InnerLink, event: MouseEvent<HTMLElement>): void;
|
|
9
|
+
showDescription: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
tabIndex?: number;
|
|
12
|
+
dragPreview?: boolean;
|
|
13
|
+
} & Pick<CardServiceLightProps, 'expandable'>;
|
|
14
|
+
export declare function ServiceCard({ service, favorite, isMobile, onServiceClick, showDescription, className, tabIndex, dragPreview, expandable, }: ServiceCardProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export type DraggableServiceCardProps = ServiceCardProps & {
|
|
16
|
+
groupId: string;
|
|
17
|
+
dragDisabled?: boolean;
|
|
18
|
+
};
|
|
19
|
+
export declare function DraggableServiceCard({ groupId, service, favorite, dragDisabled, ...props }: DraggableServiceCardProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useDraggable } from '@dnd-kit/core';
|
|
3
|
+
import { DRAG_MODE, DragGhost, DragPreview } from '@cloud-ru/ds-drag-and-drop';
|
|
4
|
+
import { CardServiceInfo, CardServiceLight, } from '@cloud-ru/ds-uikit-product-card-predefined';
|
|
5
|
+
import cn from 'classnames';
|
|
6
|
+
import { getLinkEmblem, getServiceSourceDragId } from '../../utils/index.js';
|
|
7
|
+
import styles from './styles.module.css';
|
|
8
|
+
export function ServiceCard({ service, favorite, isMobile, onServiceClick, showDescription, className, tabIndex, dragPreview, expandable, }) {
|
|
9
|
+
const isInFavorites = favorite?.value.includes(service.id) ?? false;
|
|
10
|
+
const favoriteProps = !dragPreview && favorite
|
|
11
|
+
? {
|
|
12
|
+
checked: isInFavorites,
|
|
13
|
+
onChange: favorite.onChange(service.id),
|
|
14
|
+
enabled: !service.disabled,
|
|
15
|
+
}
|
|
16
|
+
: undefined;
|
|
17
|
+
const commonProps = {
|
|
18
|
+
as: 'a',
|
|
19
|
+
title: service.label,
|
|
20
|
+
icon: getLinkEmblem(service),
|
|
21
|
+
'data-test-id': `header__drawer-menu__link-${service.id}`,
|
|
22
|
+
href: service.href,
|
|
23
|
+
onClick: (event) => onServiceClick?.(service, event),
|
|
24
|
+
favorite: favoriteProps,
|
|
25
|
+
actionsVisibility: isMobile ? 'always' : 'hover',
|
|
26
|
+
actionsSize: isMobile ? 's' : 'm',
|
|
27
|
+
promoTag: service.badge,
|
|
28
|
+
className: cn(styles.card, className),
|
|
29
|
+
tabIndex,
|
|
30
|
+
expandable,
|
|
31
|
+
};
|
|
32
|
+
const card = showDescription ? (_jsx(CardServiceInfo, { ...commonProps, description: service.description ?? '' })) : (_jsx(CardServiceLight, { ...commonProps, tooltip: !dragPreview && service.description
|
|
33
|
+
? {
|
|
34
|
+
tip: service.description,
|
|
35
|
+
}
|
|
36
|
+
: undefined }));
|
|
37
|
+
return dragPreview ? _jsx(DragPreview, { className: styles.dragCardPreview, children: card }) : card;
|
|
38
|
+
}
|
|
39
|
+
export function DraggableServiceCard({ groupId, service, favorite, dragDisabled, ...props }) {
|
|
40
|
+
const { attributes, listeners, setNodeRef, isDragging } = useDraggable({
|
|
41
|
+
id: getServiceSourceDragId(groupId, service.id),
|
|
42
|
+
disabled: dragDisabled || service.disabled || favorite?.value.includes(service.id),
|
|
43
|
+
});
|
|
44
|
+
const { tabIndex, ...restAttributes } = attributes ?? {};
|
|
45
|
+
return (_jsx(DragGhost, { innerRef: setNodeRef, className: styles.draggableCard, dragging: isDragging, mode: DRAG_MODE.Static, ...listeners, ...restAttributes, children: _jsx(ServiceCard, { service: service, favorite: favorite, ...props, tabIndex: tabIndex }) }));
|
|
46
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ServiceCard.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ServiceCard.js';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { DragCancelEvent, DragEndEvent, DragStartEvent, Modifier } from '@dnd-kit/core';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { FavoriteProps, LinksGroup } from '../types.js';
|
|
4
|
+
type MainMenuDndOverlayContextValue = {
|
|
5
|
+
setGroupDragOverlay(overlay: ReactNode): void;
|
|
6
|
+
};
|
|
7
|
+
export declare function useMainMenuDndOverlay(): MainMenuDndOverlayContextValue;
|
|
8
|
+
type UseMainMenuDndProps = {
|
|
9
|
+
favorite?: FavoriteProps;
|
|
10
|
+
/** Все группы карточек из сегментов (для резолва сервисов при DnD в избранное). */
|
|
11
|
+
groups: LinksGroup[];
|
|
12
|
+
showDescription: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare function useMainMenuDnd({ favorite, groups, showDescription }: UseMainMenuDndProps): {
|
|
15
|
+
sensors: import("@dnd-kit/core").SensorDescriptor<import("@dnd-kit/core").SensorOptions>[];
|
|
16
|
+
modifiers: Modifier[];
|
|
17
|
+
collisionDetection: import("@dnd-kit/core").CollisionDetection;
|
|
18
|
+
onDragStart: ({ active }: DragStartEvent) => void;
|
|
19
|
+
onDragEnd: ({ active, over, delta, activatorEvent }: DragEndEvent) => void;
|
|
20
|
+
onDragCancel: ({ active }: DragCancelEvent) => void;
|
|
21
|
+
dragOverlay: string | number | boolean | Iterable<ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
|
|
22
|
+
overlayContextValue: {
|
|
23
|
+
setGroupDragOverlay: import("react").Dispatch<import("react").SetStateAction<ReactNode>>;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export type MainMenuDndContextProps = ReturnType<typeof useMainMenuDnd> & {
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
};
|
|
29
|
+
export declare function MainMenuDndContext({ children, sensors, modifiers, collisionDetection, onDragStart, onDragEnd, onDragCancel, dragOverlay, overlayContextValue, }: Partial<MainMenuDndContextProps>): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { DndContext, DragOverlay, KeyboardSensor, MeasuringStrategy, PointerSensor, useSensor, useSensors, } from '@dnd-kit/core';
|
|
3
|
+
import { restrictToVerticalAxis } from '@dnd-kit/modifiers';
|
|
4
|
+
import { sortableKeyboardCoordinates } from '@dnd-kit/sortable';
|
|
5
|
+
import { createContext, useCallback, useContext, useMemo, useState } from 'react';
|
|
6
|
+
import { ServiceCard } from '../helperComponents/ServiceCard/index.js';
|
|
7
|
+
import { favoriteListCollisionDetection, flatLinksGroups, getDragReferenceY, isServiceDragId, isServiceFavoriteDragId, isServiceSourceDragId, parseServiceDragId, resolveFavoriteOrderOnDragEnd, } from '../utils/index.js';
|
|
8
|
+
const restrictGroupDragToVerticalAxis = args => {
|
|
9
|
+
if (args.active?.id != null && isServiceSourceDragId(args.active.id)) {
|
|
10
|
+
return args.transform;
|
|
11
|
+
}
|
|
12
|
+
if (args.active?.id != null && isServiceFavoriteDragId(args.active.id)) {
|
|
13
|
+
return restrictToVerticalAxis(args);
|
|
14
|
+
}
|
|
15
|
+
return restrictToVerticalAxis(args);
|
|
16
|
+
};
|
|
17
|
+
const MainMenuDndOverlayContext = createContext(null);
|
|
18
|
+
export function useMainMenuDndOverlay() {
|
|
19
|
+
const context = useContext(MainMenuDndOverlayContext);
|
|
20
|
+
return (context ?? {
|
|
21
|
+
setGroupDragOverlay: () => { },
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
export function useMainMenuDnd({ favorite, groups, showDescription }) {
|
|
25
|
+
const [activeServiceId, setActiveServiceId] = useState(null);
|
|
26
|
+
const [groupDragOverlay, setGroupDragOverlay] = useState(null);
|
|
27
|
+
const servicesById = useMemo(() => new Map(flatLinksGroups(groups).map(service => [service.id, service])), [groups]);
|
|
28
|
+
const activeService = activeServiceId ? servicesById.get(activeServiceId) : undefined;
|
|
29
|
+
const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 8 } }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }));
|
|
30
|
+
const handleDragStart = useCallback(({ active }) => {
|
|
31
|
+
if (isServiceSourceDragId(active.id)) {
|
|
32
|
+
setActiveServiceId(parseServiceDragId(active.id));
|
|
33
|
+
}
|
|
34
|
+
}, []);
|
|
35
|
+
const { value: favoriteIds, onChange: onFavoriteChange, onOrderChange: onFavoriteOrderChange } = favorite ?? {};
|
|
36
|
+
const handleDragEnd = useCallback(({ active, over, delta, activatorEvent }) => {
|
|
37
|
+
if (isServiceDragId(active.id) && favoriteIds) {
|
|
38
|
+
const nextOrderIds = resolveFavoriteOrderOnDragEnd({
|
|
39
|
+
activeId: active.id,
|
|
40
|
+
overId: over?.id,
|
|
41
|
+
favoriteIds,
|
|
42
|
+
referenceY: getDragReferenceY({
|
|
43
|
+
activatorEvent,
|
|
44
|
+
deltaY: delta.y,
|
|
45
|
+
activeRect: active.rect.current.translated,
|
|
46
|
+
}),
|
|
47
|
+
overRect: over?.rect,
|
|
48
|
+
});
|
|
49
|
+
if (nextOrderIds) {
|
|
50
|
+
const activeServiceId = parseServiceDragId(active.id);
|
|
51
|
+
if (favoriteIds.includes(activeServiceId)) {
|
|
52
|
+
onFavoriteOrderChange?.(nextOrderIds);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
onFavoriteChange?.(activeServiceId)(true, nextOrderIds.indexOf(activeServiceId));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (isServiceSourceDragId(active.id)) {
|
|
60
|
+
setActiveServiceId(null);
|
|
61
|
+
}
|
|
62
|
+
}, [favoriteIds, onFavoriteChange, onFavoriteOrderChange]);
|
|
63
|
+
const handleDragCancel = useCallback(({ active }) => {
|
|
64
|
+
if (active && isServiceSourceDragId(active.id)) {
|
|
65
|
+
setActiveServiceId(null);
|
|
66
|
+
}
|
|
67
|
+
}, []);
|
|
68
|
+
const serviceDragOverlay = activeService ? (_jsx(ServiceCard, { service: activeService, showDescription: showDescription, dragPreview: true })) : null;
|
|
69
|
+
const dragOverlay = serviceDragOverlay ?? groupDragOverlay;
|
|
70
|
+
const overlayContextValue = useMemo(() => ({
|
|
71
|
+
setGroupDragOverlay,
|
|
72
|
+
}), []);
|
|
73
|
+
return {
|
|
74
|
+
sensors,
|
|
75
|
+
modifiers: [restrictGroupDragToVerticalAxis],
|
|
76
|
+
collisionDetection: favoriteListCollisionDetection,
|
|
77
|
+
onDragStart: handleDragStart,
|
|
78
|
+
onDragEnd: handleDragEnd,
|
|
79
|
+
onDragCancel: handleDragCancel,
|
|
80
|
+
dragOverlay,
|
|
81
|
+
overlayContextValue,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export function MainMenuDndContext({ children, sensors, modifiers, collisionDetection, onDragStart, onDragEnd, onDragCancel, dragOverlay, overlayContextValue, }) {
|
|
85
|
+
return (_jsx(MainMenuDndOverlayContext.Provider, { value: overlayContextValue ?? null, children: _jsxs(DndContext, { sensors: sensors, collisionDetection: collisionDetection, onDragStart: onDragStart, onDragEnd: onDragEnd, onDragCancel: onDragCancel, modifiers: modifiers, measuring: {
|
|
86
|
+
droppable: { strategy: MeasuringStrategy.Always },
|
|
87
|
+
}, children: [children, _jsx(DragOverlay, { dropAnimation: null, children: dragOverlay })] }) }));
|
|
88
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LinksGroup, MainMenuProps } from '../types.js';
|
|
2
|
+
type UseMenuItemsProps = Pick<MainMenuProps, 'segments' | 'search' | 'platformGroups'>;
|
|
3
|
+
export declare function useMenuItems({ search, segments, platformGroups }: UseMenuItemsProps): {
|
|
4
|
+
resultItems: LinksGroup[];
|
|
5
|
+
searchRef: import("react").RefObject<HTMLInputElement>;
|
|
6
|
+
scrollRef: import("react").RefObject<HTMLDivElement>;
|
|
7
|
+
};
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { useEffect, useMemo, useRef } from 'react';
|
|
2
|
+
import { dedupeSearchGroups, filterLinksGroupsFuzzy, getLinksGroupVisibleItemsCount, pinGroupToBottom } from '../utils/index.js';
|
|
3
|
+
function getVisibleGroups(items) {
|
|
4
|
+
return items.filter(group => getLinksGroupVisibleItemsCount(group) > 0);
|
|
5
|
+
}
|
|
6
|
+
export function useMenuItems({ search, segments, platformGroups = [] }) {
|
|
7
|
+
const { value: searchValue = '', onSearchNoResult } = search || {};
|
|
8
|
+
const searchRef = useRef(null);
|
|
9
|
+
const scrollRef = useRef(null);
|
|
10
|
+
const regularSegments = useMemo(() => segments?.filter(segment => !segment.pinBottomOnSearch) ?? [], [segments]);
|
|
11
|
+
const pinnedSegments = useMemo(() => segments?.filter(segment => segment.pinBottomOnSearch) ?? [], [segments]);
|
|
12
|
+
const regularGroups = useMemo(() => regularSegments.flatMap(segment => getVisibleGroups(segment.items)), [regularSegments]);
|
|
13
|
+
const pinnedGroups = useMemo(() => pinnedSegments.flatMap(segment => getVisibleGroups(segment.items)), [pinnedSegments]);
|
|
14
|
+
const resultItems = useMemo(() => {
|
|
15
|
+
if (!searchValue) {
|
|
16
|
+
return regularGroups;
|
|
17
|
+
}
|
|
18
|
+
const searchIn = (groups) => filterLinksGroupsFuzzy(searchValue, groups);
|
|
19
|
+
const regularResults = regularSegments.flatMap(segment => searchIn(getVisibleGroups(segment.items)));
|
|
20
|
+
const platformResults = platformGroups.length > 0 ? searchIn(platformGroups) : [];
|
|
21
|
+
const pinnedResults = pinnedSegments.flatMap(segment => searchIn(getVisibleGroups(segment.items)));
|
|
22
|
+
const combined = dedupeSearchGroups([...regularResults, ...platformResults, ...pinnedResults]);
|
|
23
|
+
const pinnedGroupIds = pinnedGroups.map(({ id }) => id);
|
|
24
|
+
return pinnedGroupIds.length > 0 ? pinGroupToBottom(combined, pinnedGroupIds) : combined;
|
|
25
|
+
}, [searchValue, regularSegments, regularGroups, platformGroups, pinnedSegments, pinnedGroups]);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (searchValue && !resultItems.length) {
|
|
28
|
+
onSearchNoResult?.(searchValue);
|
|
29
|
+
}
|
|
30
|
+
}, [searchValue, resultItems.length, onSearchNoResult]);
|
|
31
|
+
return {
|
|
32
|
+
resultItems,
|
|
33
|
+
searchRef,
|
|
34
|
+
scrollRef,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { BaseItemProps, ListProps } from '@cloud-ru/ds-list';
|
|
2
|
+
import { SearchProps as SearchPropsSnack } from '@cloud-ru/ds-search';
|
|
3
|
+
import { CardServiceLightProps } from '@cloud-ru/ds-uikit-product-card-predefined';
|
|
4
|
+
import { JSXElementConstructor, MouseEvent, ReactNode } from 'react';
|
|
5
|
+
import { FavoritesSegment } from './helperComponents/Favorites/constants.js';
|
|
6
|
+
/**
|
|
7
|
+
* Карточка сервиса или ссылки внутри {@link LinksGroup}.
|
|
8
|
+
*
|
|
9
|
+
* Отображается в сетке MainMenu (`CardServiceSmall`) и может попадать в боковое меню (`mapInnerLinksToListItems`).
|
|
10
|
+
*/
|
|
11
|
+
export type InnerLink = {
|
|
12
|
+
/**
|
|
13
|
+
* Уникальный идентификатор карточки (также используется в избранном и при поиске).
|
|
14
|
+
*
|
|
15
|
+
* Один и тот же сервис может быть представлен в разных сегментах с разной
|
|
16
|
+
* детализацией (простая карточка в общем каталоге и раскрытая с вложенными
|
|
17
|
+
* сервисами версия в другом сегменте) — в этом случае обеим версиям задаётся
|
|
18
|
+
* общий `id`. При поиске из совпадений с одинаковым `id` в разных сегментах
|
|
19
|
+
* остаётся только первое по приоритету сегментов (см. {@link MainMenuProps.segments}).
|
|
20
|
+
*/
|
|
21
|
+
id: string;
|
|
22
|
+
/**
|
|
23
|
+
* Иконка карточки.
|
|
24
|
+
*
|
|
25
|
+
* Если не задана, вместо иконки рендерится `Avatar` с двухбуквенным текстом по `label`
|
|
26
|
+
* (см. `getAvatarNameFromLabel`).
|
|
27
|
+
*/
|
|
28
|
+
icon?: JSXElementConstructor<{
|
|
29
|
+
size?: number;
|
|
30
|
+
className?: string;
|
|
31
|
+
}>;
|
|
32
|
+
/** Заголовок карточки. */
|
|
33
|
+
label: string;
|
|
34
|
+
/** Краткое описание сервиса — отображается при включённом переключателе «Описание». */
|
|
35
|
+
description?: string;
|
|
36
|
+
onClick(e?: MouseEvent<HTMLElement>): void;
|
|
37
|
+
href?: string;
|
|
38
|
+
disabled?: boolean;
|
|
39
|
+
hidden?: boolean;
|
|
40
|
+
badge?: CardServiceLightProps['promoTag'];
|
|
41
|
+
/**
|
|
42
|
+
* Вложенные сервисы подкатегории.
|
|
43
|
+
*
|
|
44
|
+
* При наличии карточка раскрывается аккордеоном: в свёрнутом виде — обычная карточка
|
|
45
|
+
* с кнопкой раскрытия, в развёрнутом — заголовок {@link TitleClickable} и сетка вложенных сервисов.
|
|
46
|
+
*/
|
|
47
|
+
items?: InnerLink[];
|
|
48
|
+
/**
|
|
49
|
+
* Синонимы для fuzzy-поиска.
|
|
50
|
+
*/
|
|
51
|
+
aliases: string[];
|
|
52
|
+
};
|
|
53
|
+
type TitleStatic = {
|
|
54
|
+
text: string;
|
|
55
|
+
onClick?: never;
|
|
56
|
+
};
|
|
57
|
+
type TitleClickable = {
|
|
58
|
+
text: string;
|
|
59
|
+
onClick?(e?: MouseEvent<HTMLElement>): void;
|
|
60
|
+
};
|
|
61
|
+
export type LinksGroupTitle = TitleStatic | TitleClickable;
|
|
62
|
+
export type LinksGroupBlockColor = 'neutral' | 'primary' | 'red' | 'orange' | 'yellow' | 'green' | 'blue' | 'violet' | 'pink';
|
|
63
|
+
/**
|
|
64
|
+
* Группа карточек MainMenu с общим заголовком.
|
|
65
|
+
*
|
|
66
|
+
* Используется в `segments[].items` и `platformGroups`.
|
|
67
|
+
* При активном поиске группа может отображаться целиком или с отфильтрованным списком `items`.
|
|
68
|
+
*/
|
|
69
|
+
export type LinksGroup = {
|
|
70
|
+
/** Уникальный идентификатор группы (якорь скролла, поиск по id). */
|
|
71
|
+
id: string;
|
|
72
|
+
/** Заголовок группы в сетке карточек и в боковой навигации. */
|
|
73
|
+
label: LinksGroupTitle;
|
|
74
|
+
/**
|
|
75
|
+
* Синонимы заголовка группы для fuzzy-поиска.
|
|
76
|
+
*/
|
|
77
|
+
aliases?: string[];
|
|
78
|
+
onClick?(e?: MouseEvent<HTMLElement>): void;
|
|
79
|
+
hidden?: boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Разрешено ли добавление карточек группы в избранное.
|
|
82
|
+
*
|
|
83
|
+
* @default true — избранное доступно, если не передано `false`.
|
|
84
|
+
*/
|
|
85
|
+
favoritesEnabled?: boolean;
|
|
86
|
+
/** Карточки сервисов или ссылок внутри группы. */
|
|
87
|
+
items: InnerLink[];
|
|
88
|
+
/** Цвет блока группы. */
|
|
89
|
+
blockColor?: LinksGroupBlockColor;
|
|
90
|
+
/** Визуальное выделение группы */
|
|
91
|
+
highlight?: boolean;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Сегмент правой панели MainMenu (переключатель в тулбаре над сеткой карточек).
|
|
95
|
+
*
|
|
96
|
+
* Только каталог: порядок и раскрытие групп задаются через {@link MainMenuSegmentPrefs}
|
|
97
|
+
* и колбэки `onSegmentOrderChange` / `onSegmentExpandedChange` на {@link MainMenuProps}.
|
|
98
|
+
*/
|
|
99
|
+
export type MainMenuSegment = {
|
|
100
|
+
/** Уникальный идентификатор сегмента (значение SegmentControl). */
|
|
101
|
+
id: string;
|
|
102
|
+
/** Подпись сегмента в SegmentControl. */
|
|
103
|
+
label: string;
|
|
104
|
+
/** Иконка сегмента в SegmentControl; без неё — только `label`. */
|
|
105
|
+
icon?: ReactNode;
|
|
106
|
+
/** Группы карточек сегмента (каталог). */
|
|
107
|
+
items: LinksGroup[];
|
|
108
|
+
/**
|
|
109
|
+
* Группы сегмента в выдаче поиска — после совпадений из обычных сегментов и `platformGroups`.
|
|
110
|
+
*
|
|
111
|
+
* @default false
|
|
112
|
+
*/
|
|
113
|
+
pinBottomOnSearch?: boolean;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Пользовательские prefs сегмента (порядок и раскрытие групп).
|
|
117
|
+
*
|
|
118
|
+
* Передаются отдельно от каталога {@link MainMenuSegment}, чтобы `segments` оставался стабильным.
|
|
119
|
+
*/
|
|
120
|
+
export type MainMenuSegmentPrefs = {
|
|
121
|
+
/** Id сегмента из {@link MainMenuSegment.id}. */
|
|
122
|
+
id: string;
|
|
123
|
+
/**
|
|
124
|
+
* Порядок id групп. Если не передан — uncontrolled для этого сегмента
|
|
125
|
+
* (дефолт = порядок `items`; новые группы добавляются в конец).
|
|
126
|
+
*/
|
|
127
|
+
order?: string[];
|
|
128
|
+
/**
|
|
129
|
+
* Id раскрытых групп. Если не передан — uncontrolled (по умолчанию все раскрыты).
|
|
130
|
+
*/
|
|
131
|
+
expanded?: string[];
|
|
132
|
+
};
|
|
133
|
+
export type SearchProps = Pick<SearchPropsSnack, 'onBlur' | 'onFocus'> & {
|
|
134
|
+
value: string;
|
|
135
|
+
onChange(value: string): void;
|
|
136
|
+
onSearchNoResult?(value: string): void;
|
|
137
|
+
};
|
|
138
|
+
export type FavoriteProps = {
|
|
139
|
+
/** Список id избранных сервисов */
|
|
140
|
+
value: string[];
|
|
141
|
+
/**
|
|
142
|
+
* Колбэк переключения избранного для карточки сервиса.
|
|
143
|
+
*
|
|
144
|
+
* `position` передаётся при добавлении через drag из сетки сервисов — индекс,
|
|
145
|
+
* на который должна встать карточка среди избранного (см. {@link FavoriteProps.onOrderChange}).
|
|
146
|
+
* При переключении избранного кликом не передаётся.
|
|
147
|
+
*/
|
|
148
|
+
onChange(productId: string): (addingValue: boolean, position?: number) => void;
|
|
149
|
+
/**
|
|
150
|
+
* Колбэк вызывается после перетаскивания карточек внутри избранного с новым порядком id.
|
|
151
|
+
*
|
|
152
|
+
* Добавление новой карточки через drag из сетки сервисов идёт через
|
|
153
|
+
* {@link FavoriteProps.onChange} с `position` — этот колбэк для такого добавления не вызывается.
|
|
154
|
+
*/
|
|
155
|
+
onOrderChange?(orderedIds: string[]): void;
|
|
156
|
+
/** Список id недавно открытых сервисов */
|
|
157
|
+
recentServices?: string[];
|
|
158
|
+
/** Колбэк клика по карточке сервиса в сегменте «Избранное» */
|
|
159
|
+
onFavoriteServiceClick?(serviceId: string, event?: MouseEvent<HTMLElement>): void;
|
|
160
|
+
/** Колбэк клика по карточке сервиса в сегменте «Недавнее» */
|
|
161
|
+
onRecentServiceClick?(serviceId: string, event?: MouseEvent<HTMLElement>): void;
|
|
162
|
+
/** Действия для списка сервисов */
|
|
163
|
+
actions?: {
|
|
164
|
+
items: BaseItemProps[];
|
|
165
|
+
onDroplistOpenChange?(open: boolean): void;
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* Активный сегмент («Избранное» / «Недавнее») в панели избранного.
|
|
169
|
+
*
|
|
170
|
+
* Не передано — неуправляемое состояние (дефолт `'favorites'`).
|
|
171
|
+
*/
|
|
172
|
+
segment?: FavoritesSegment;
|
|
173
|
+
/** Колбэк смены сегмента панели избранного. */
|
|
174
|
+
onSegmentChange?(segment: FavoritesSegment): void;
|
|
175
|
+
/** Флаг загрузки данных */
|
|
176
|
+
loading?: boolean;
|
|
177
|
+
};
|
|
178
|
+
export type MainMenuToggleProps = {
|
|
179
|
+
value: boolean;
|
|
180
|
+
onChange(value: boolean): void;
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Настройки меню, управляемые из модалки по кнопке в тулбаре сетки карточек.
|
|
184
|
+
*
|
|
185
|
+
* Проп опционален на уровне {@link MainMenuProps.preferences} целиком — без него кнопка
|
|
186
|
+
* настроек в тулбаре не отображается.
|
|
187
|
+
*/
|
|
188
|
+
export type MainMenuPreferencesProps = {
|
|
189
|
+
/**
|
|
190
|
+
* Открыта ли модалка настроек.
|
|
191
|
+
*
|
|
192
|
+
* Не передано — состояние открытия неуправляемое (модалка сама переключает себя по клику на кнопку).
|
|
193
|
+
*/
|
|
194
|
+
open?: boolean;
|
|
195
|
+
/** Колбэк открытия/закрытия модалки. */
|
|
196
|
+
onOpenChange?(open: boolean): void;
|
|
197
|
+
/** Показывать описания сервисов в карточках. */
|
|
198
|
+
showDescription: MainMenuToggleProps;
|
|
199
|
+
/**
|
|
200
|
+
* Отображать цвета блоков групп ({@link LinksGroup.blockColor}).
|
|
201
|
+
* `value: false` скрывает цвета всех групп независимо от заданного `blockColor`.
|
|
202
|
+
*/
|
|
203
|
+
showGroupsColors?: MainMenuToggleProps;
|
|
204
|
+
};
|
|
205
|
+
export type MainMenuProps = {
|
|
206
|
+
disabled?: boolean;
|
|
207
|
+
open?: boolean;
|
|
208
|
+
setOpen?(open: boolean): void;
|
|
209
|
+
logo?: ReactNode;
|
|
210
|
+
leftTop?: ReactNode;
|
|
211
|
+
rightTop?: ReactNode;
|
|
212
|
+
/**
|
|
213
|
+
* Сегменты правой панели (сетка карточек) — только каталог.
|
|
214
|
+
*
|
|
215
|
+
* При поиске: совпадения из сегментов без `pinBottomOnSearch` → `platformGroups` → сегменты с `pinBottomOnSearch`.
|
|
216
|
+
* Если один и тот же {@link InnerLink.id} совпал сразу в нескольких сегментах — остаётся только
|
|
217
|
+
* первое по этому приоритету вхождение, остальные (и опустевшие после этого группы) не показываются.
|
|
218
|
+
* При `segments.length > 1` показывается SegmentControl (скрывается во время поиска).
|
|
219
|
+
* Порядок и раскрытие групп — через `segmentPrefs` и колбэки ниже.
|
|
220
|
+
*/
|
|
221
|
+
segments?: MainMenuSegment[];
|
|
222
|
+
/**
|
|
223
|
+
* Пользовательские prefs сегментов (порядок / раскрытие групп).
|
|
224
|
+
*
|
|
225
|
+
* Нет записи для сегмента или omit `order` / `expanded` → uncontrolled для этого поля.
|
|
226
|
+
*/
|
|
227
|
+
segmentPrefs?: MainMenuSegmentPrefs[];
|
|
228
|
+
/**
|
|
229
|
+
* Активный сегмент правой панели (значение SegmentControl, см. {@link MainMenuSegment.id}).
|
|
230
|
+
*
|
|
231
|
+
* Не передано — неуправляемое состояние (дефолт — первый сегмент с видимыми карточками).
|
|
232
|
+
*/
|
|
233
|
+
activeSegmentId?: string;
|
|
234
|
+
/** Колбэк смены активного сегмента правой панели. */
|
|
235
|
+
onActiveSegmentChange?(segmentId: string): void;
|
|
236
|
+
/**
|
|
237
|
+
* Колбэк после DnD групп в сегменте (без id синтетической группы избранного).
|
|
238
|
+
*/
|
|
239
|
+
onSegmentOrderChange?(segmentId: string, orderedGroupIds: string[]): void;
|
|
240
|
+
/**
|
|
241
|
+
* Колбэк при изменении набора раскрытых групп сегмента
|
|
242
|
+
* (без id синтетической группы избранного).
|
|
243
|
+
*/
|
|
244
|
+
onSegmentExpandedChange?(segmentId: string, expandedGroupIds: string[]): void;
|
|
245
|
+
/**
|
|
246
|
+
* Пункты левой колонки (desktop) / нижней части списка (mobile).
|
|
247
|
+
*
|
|
248
|
+
* Плоский список `List` (`BaseItem` и при необходимости `type: 'group'` с `divider` для разделителей).
|
|
249
|
+
* Не связан с сегментами правой панели и не меняется при сортировке групп в сегментах.
|
|
250
|
+
*/
|
|
251
|
+
settingItems?: ListProps['items'];
|
|
252
|
+
/**
|
|
253
|
+
* Платформенные группы (например «Облачные продукты», «Другие продукты»).
|
|
254
|
+
*
|
|
255
|
+
* Без поиска в сетке карточек **не отображаются**.
|
|
256
|
+
* С поиском: попадают в результаты при совпадении; порядок —
|
|
257
|
+
* после совпадений из сегментов без `pinBottomOnSearch`, перед сегментами с `pinBottomOnSearch`.
|
|
258
|
+
* Обычно `favoritesEnabled: false`; карточки могут быть без `icon` (Avatar по `label`).
|
|
259
|
+
*/
|
|
260
|
+
platformGroups?: LinksGroup[];
|
|
261
|
+
favorite?: FavoriteProps;
|
|
262
|
+
search?: SearchProps;
|
|
263
|
+
/**
|
|
264
|
+
* Настройки меню (модалка по кнопке в тулбаре): описания карточек, цвета групп.
|
|
265
|
+
*
|
|
266
|
+
* Не передано — кнопка настроек в тулбаре не отображается.
|
|
267
|
+
*/
|
|
268
|
+
preferences?: MainMenuPreferencesProps;
|
|
269
|
+
/**
|
|
270
|
+
* Ширина дровера, с которой открывается меню (desktop only)
|
|
271
|
+
*/
|
|
272
|
+
defaultWidth?: number;
|
|
273
|
+
/**
|
|
274
|
+
* Вызывается при окончании изменения ширины дровера (desktop only)
|
|
275
|
+
*/
|
|
276
|
+
onWidthChangeEnd?: (width: number) => void;
|
|
277
|
+
/**
|
|
278
|
+
* Текст подсказки для драггера (desktop only)
|
|
279
|
+
*/
|
|
280
|
+
draggerTooltip?: string;
|
|
281
|
+
/** Флаг загрузки данных */
|
|
282
|
+
loading?: boolean;
|
|
283
|
+
};
|
|
284
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|