@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.
Files changed (559) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +201 -0
  3. package/README.md +717 -0
  4. package/dist/cjs/components/HeaderButton/HeaderButton.d.ts +14 -0
  5. package/dist/cjs/components/HeaderButton/HeaderButton.js +33 -0
  6. package/dist/cjs/components/HeaderButton/index.d.ts +1 -0
  7. package/dist/cjs/components/HeaderButton/index.js +17 -0
  8. package/dist/cjs/components/HeaderButton/styles.module.css +3 -0
  9. package/dist/cjs/components/HeaderLayout/HeaderLayout.d.ts +11 -0
  10. package/dist/cjs/components/HeaderLayout/HeaderLayout.js +16 -0
  11. package/dist/cjs/components/HeaderLayout/index.d.ts +1 -0
  12. package/dist/cjs/components/HeaderLayout/index.js +17 -0
  13. package/dist/cjs/components/HeaderLayout/styles.module.css +37 -0
  14. package/dist/cjs/components/Logo/Logo.d.ts +14 -0
  15. package/dist/cjs/components/Logo/Logo.js +35 -0
  16. package/dist/cjs/components/Logo/constants.d.ts +10 -0
  17. package/dist/cjs/components/Logo/constants.js +14 -0
  18. package/dist/cjs/components/Logo/index.d.ts +1 -0
  19. package/dist/cjs/components/Logo/index.js +17 -0
  20. package/dist/cjs/components/Logo/styles.module.css +53 -0
  21. package/dist/cjs/components/MainMenu/MainMenu.d.ts +2 -0
  22. package/dist/cjs/components/MainMenu/MainMenu.js +25 -0
  23. package/dist/cjs/components/MainMenu/constants.d.ts +14 -0
  24. package/dist/cjs/components/MainMenu/constants.js +24 -0
  25. package/dist/cjs/components/MainMenu/helperComponents/Banners/MenuBanner.d.ts +16 -0
  26. package/dist/cjs/components/MainMenu/helperComponents/Banners/MenuBanner.js +27 -0
  27. package/dist/cjs/components/MainMenu/helperComponents/Banners/constants.d.ts +7 -0
  28. package/dist/cjs/components/MainMenu/helperComponents/Banners/constants.js +10 -0
  29. package/dist/cjs/components/MainMenu/helperComponents/Banners/index.d.ts +2 -0
  30. package/dist/cjs/components/MainMenu/helperComponents/Banners/index.js +18 -0
  31. package/dist/cjs/components/MainMenu/helperComponents/Banners/styles.module.css +61 -0
  32. package/dist/cjs/components/MainMenu/helperComponents/Content/Content.d.ts +30 -0
  33. package/dist/cjs/components/MainMenu/helperComponents/Content/Content.js +100 -0
  34. package/dist/cjs/components/MainMenu/helperComponents/Content/constants.d.ts +9 -0
  35. package/dist/cjs/components/MainMenu/helperComponents/Content/constants.js +12 -0
  36. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.d.ts +18 -0
  37. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.js +35 -0
  38. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/index.d.ts +1 -0
  39. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/index.js +17 -0
  40. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/styles.module.css +27 -0
  41. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.d.ts +11 -0
  42. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.js +35 -0
  43. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.d.ts +8 -0
  44. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.js +23 -0
  45. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.d.ts +6 -0
  46. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.js +15 -0
  47. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.d.ts +9 -0
  48. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.js +15 -0
  49. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.d.ts +5 -0
  50. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.js +12 -0
  51. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.d.ts +6 -0
  52. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.js +28 -0
  53. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.d.ts +5 -0
  54. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.js +58 -0
  55. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/index.d.ts +2 -0
  56. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/index.js +18 -0
  57. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/styles.module.css +66 -0
  58. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/index.d.ts +5 -0
  59. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/index.js +21 -0
  60. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/index.d.ts +3 -0
  61. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/index.js +19 -0
  62. package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.css +231 -0
  63. package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.d.ts +24 -0
  64. package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.js +158 -0
  65. package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.d.ts +16 -0
  66. package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.js +59 -0
  67. package/dist/cjs/components/MainMenu/helperComponents/Content/index.d.ts +2 -0
  68. package/dist/cjs/components/MainMenu/helperComponents/Content/index.js +18 -0
  69. package/dist/cjs/components/MainMenu/helperComponents/Content/styles.module.css +8 -0
  70. package/dist/cjs/components/MainMenu/helperComponents/Favorites/Favorites.d.ts +12 -0
  71. package/dist/cjs/components/MainMenu/helperComponents/Favorites/Favorites.js +79 -0
  72. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyFavoriteSVG.d.ts +3 -0
  73. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyFavoriteSVG.js +7 -0
  74. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyRecentSVG.d.ts +3 -0
  75. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyRecentSVG.js +7 -0
  76. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.d.ts +6 -0
  77. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.js +17 -0
  78. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/index.d.ts +1 -0
  79. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/index.js +17 -0
  80. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/styles.module.css +23 -0
  81. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesItemsSkeleton.d.ts +1 -0
  82. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesItemsSkeleton.js +12 -0
  83. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.d.ts +19 -0
  84. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.js +30 -0
  85. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.d.ts +8 -0
  86. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.js +28 -0
  87. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/index.d.ts +4 -0
  88. package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/index.js +20 -0
  89. package/dist/cjs/components/MainMenu/helperComponents/Favorites/constants.d.ts +15 -0
  90. package/dist/cjs/components/MainMenu/helperComponents/Favorites/constants.js +16 -0
  91. package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.d.ts +25 -0
  92. package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.js +92 -0
  93. package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesInsertIndicator.d.ts +1 -0
  94. package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesInsertIndicator.js +37 -0
  95. package/dist/cjs/components/MainMenu/helperComponents/Favorites/index.d.ts +2 -0
  96. package/dist/cjs/components/MainMenu/helperComponents/Favorites/index.js +18 -0
  97. package/dist/cjs/components/MainMenu/helperComponents/Favorites/styles.module.css +87 -0
  98. package/dist/cjs/components/MainMenu/helperComponents/Favorites/utils.d.ts +6 -0
  99. package/dist/cjs/components/MainMenu/helperComponents/Favorites/utils.js +15 -0
  100. package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.d.ts +2 -0
  101. package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.js +63 -0
  102. package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/constants.d.ts +3 -0
  103. package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/constants.js +7 -0
  104. package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/index.d.ts +1 -0
  105. package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/index.js +17 -0
  106. package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/styles.module.css +98 -0
  107. package/dist/cjs/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.d.ts +7 -0
  108. package/dist/cjs/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.js +17 -0
  109. package/dist/cjs/components/MainMenu/helperComponents/MenuHeaderBrand/index.d.ts +1 -0
  110. package/dist/cjs/components/MainMenu/helperComponents/MenuHeaderBrand/index.js +17 -0
  111. package/dist/cjs/components/MainMenu/helperComponents/MenuHeaderBrand/styles.module.css +13 -0
  112. package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/MenuMobile.d.ts +2 -0
  113. package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/MenuMobile.js +36 -0
  114. package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/index.d.ts +1 -0
  115. package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/index.js +17 -0
  116. package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/styles.module.css +25 -0
  117. package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/MountAnimation.d.ts +7 -0
  118. package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/MountAnimation.js +13 -0
  119. package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/index.d.ts +1 -0
  120. package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/index.js +5 -0
  121. package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/styles.module.css +60 -0
  122. package/dist/cjs/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/ScrollWithAnimatedStickyPanel.d.ts +6 -0
  123. package/dist/cjs/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/ScrollWithAnimatedStickyPanel.js +37 -0
  124. package/dist/cjs/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/index.d.ts +1 -0
  125. package/dist/cjs/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/index.js +17 -0
  126. package/dist/cjs/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/styles.module.css +12 -0
  127. package/dist/cjs/components/MainMenu/helperComponents/Search/Search.d.ts +7 -0
  128. package/dist/cjs/components/MainMenu/helperComponents/Search/Search.js +15 -0
  129. package/dist/cjs/components/MainMenu/helperComponents/Search/index.d.ts +1 -0
  130. package/dist/cjs/components/MainMenu/helperComponents/Search/index.js +17 -0
  131. package/dist/cjs/components/MainMenu/helperComponents/Search/styles.module.css +8 -0
  132. package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/ServiceCard.d.ts +19 -0
  133. package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/ServiceCard.js +53 -0
  134. package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/index.d.ts +1 -0
  135. package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/index.js +17 -0
  136. package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/styles.module.css +12 -0
  137. package/dist/cjs/components/MainMenu/hooks/useMainMenuDnd.d.ts +30 -0
  138. package/dist/cjs/components/MainMenu/hooks/useMainMenuDnd.js +93 -0
  139. package/dist/cjs/components/MainMenu/hooks/useMenuItems.d.ts +8 -0
  140. package/dist/cjs/components/MainMenu/hooks/useMenuItems.js +39 -0
  141. package/dist/cjs/components/MainMenu/index.d.ts +5 -0
  142. package/dist/cjs/components/MainMenu/index.js +21 -0
  143. package/dist/cjs/components/MainMenu/types.d.ts +284 -0
  144. package/dist/cjs/components/MainMenu/types.js +2 -0
  145. package/dist/cjs/components/MainMenu/utils/dedupeSearchGroups.d.ts +15 -0
  146. package/dist/cjs/components/MainMenu/utils/dedupeSearchGroups.js +32 -0
  147. package/dist/cjs/components/MainMenu/utils/dnd/favoriteListCollisionDetection.d.ts +2 -0
  148. package/dist/cjs/components/MainMenu/utils/dnd/favoriteListCollisionDetection.js +32 -0
  149. package/dist/cjs/components/MainMenu/utils/dnd/getDragReferenceY.d.ts +9 -0
  150. package/dist/cjs/components/MainMenu/utils/dnd/getDragReferenceY.js +17 -0
  151. package/dist/cjs/components/MainMenu/utils/dnd/getFavoriteInsertIndex.d.ts +12 -0
  152. package/dist/cjs/components/MainMenu/utils/dnd/getFavoriteInsertIndex.js +36 -0
  153. package/dist/cjs/components/MainMenu/utils/dnd/ids.d.ts +8 -0
  154. package/dist/cjs/components/MainMenu/utils/dnd/ids.js +48 -0
  155. package/dist/cjs/components/MainMenu/utils/dnd/index.d.ts +5 -0
  156. package/dist/cjs/components/MainMenu/utils/dnd/index.js +21 -0
  157. package/dist/cjs/components/MainMenu/utils/dnd/resolveFavoriteOrderOnDragEnd.d.ts +10 -0
  158. package/dist/cjs/components/MainMenu/utils/dnd/resolveFavoriteOrderOnDragEnd.js +45 -0
  159. package/dist/cjs/components/MainMenu/utils/filterLinksGroupsFuzzy.d.ts +2 -0
  160. package/dist/cjs/components/MainMenu/utils/filterLinksGroupsFuzzy.js +155 -0
  161. package/dist/cjs/components/MainMenu/utils/flatLinksGroups.d.ts +2 -0
  162. package/dist/cjs/components/MainMenu/utils/flatLinksGroups.js +7 -0
  163. package/dist/cjs/components/MainMenu/utils/getAvatarNameFromLabel.d.ts +14 -0
  164. package/dist/cjs/components/MainMenu/utils/getAvatarNameFromLabel.js +24 -0
  165. package/dist/cjs/components/MainMenu/utils/getLinkEmblem.d.ts +3 -0
  166. package/dist/cjs/components/MainMenu/utils/getLinkEmblem.js +18 -0
  167. package/dist/cjs/components/MainMenu/utils/index.d.ts +12 -0
  168. package/dist/cjs/components/MainMenu/utils/index.js +28 -0
  169. package/dist/cjs/components/MainMenu/utils/innerLink.d.ts +7 -0
  170. package/dist/cjs/components/MainMenu/utils/innerLink.js +42 -0
  171. package/dist/cjs/components/MainMenu/utils/mapInnerLinksToListItems.d.ts +3 -0
  172. package/dist/cjs/components/MainMenu/utils/mapInnerLinksToListItems.js +16 -0
  173. package/dist/cjs/components/MainMenu/utils/mapOrderedFavoriteIdsToLinks.d.ts +2 -0
  174. package/dist/cjs/components/MainMenu/utils/mapOrderedFavoriteIdsToLinks.js +9 -0
  175. package/dist/cjs/components/MainMenu/utils/pinGroupToBottom.d.ts +2 -0
  176. package/dist/cjs/components/MainMenu/utils/pinGroupToBottom.js +15 -0
  177. package/dist/cjs/components/MainMenu/utils/resolveGroupBlockColor.d.ts +8 -0
  178. package/dist/cjs/components/MainMenu/utils/resolveGroupBlockColor.js +12 -0
  179. package/dist/cjs/components/MainMenu/utils/resolveInnerLinksByIds.d.ts +2 -0
  180. package/dist/cjs/components/MainMenu/utils/resolveInnerLinksByIds.js +11 -0
  181. package/dist/cjs/components/MainMenu/utils/search.d.ts +1 -0
  182. package/dist/cjs/components/MainMenu/utils/search.js +27 -0
  183. package/dist/cjs/components/PathBreadcrumbs/PathBreadcrumbs.d.ts +7 -0
  184. package/dist/cjs/components/PathBreadcrumbs/PathBreadcrumbs.js +12 -0
  185. package/dist/cjs/components/PathBreadcrumbs/index.d.ts +1 -0
  186. package/dist/cjs/components/PathBreadcrumbs/index.js +17 -0
  187. package/dist/cjs/components/PathBreadcrumbs/styles.module.css +4 -0
  188. package/dist/cjs/components/PlatformLogo/Container.d.ts +12 -0
  189. package/dist/cjs/components/PlatformLogo/Container.js +16 -0
  190. package/dist/cjs/components/PlatformLogo/index.d.ts +6 -0
  191. package/dist/cjs/components/PlatformLogo/index.js +11 -0
  192. package/dist/cjs/components/PlatformLogo/styles.module.css +9 -0
  193. package/dist/cjs/components/UserMenu/UserMenu.d.ts +14 -0
  194. package/dist/cjs/components/UserMenu/UserMenu.js +46 -0
  195. package/dist/cjs/components/UserMenu/hooks/useLogoutItem.d.ts +4 -0
  196. package/dist/cjs/components/UserMenu/hooks/useLogoutItem.js +20 -0
  197. package/dist/cjs/components/UserMenu/hooks/useProfileItem.d.ts +3 -0
  198. package/dist/cjs/components/UserMenu/hooks/useProfileItem.js +24 -0
  199. package/dist/cjs/components/UserMenu/hooks/useThemeItem.d.ts +6 -0
  200. package/dist/cjs/components/UserMenu/hooks/useThemeItem.js +54 -0
  201. package/dist/cjs/components/UserMenu/hooks/useUserMenuItems.d.ts +87 -0
  202. package/dist/cjs/components/UserMenu/hooks/useUserMenuItems.js +45 -0
  203. package/dist/cjs/components/UserMenu/index.d.ts +2 -0
  204. package/dist/cjs/components/UserMenu/index.js +18 -0
  205. package/dist/cjs/components/UserMenu/styles.module.css +7 -0
  206. package/dist/cjs/components/UserMenu/types.d.ts +20 -0
  207. package/dist/cjs/components/UserMenu/types.js +8 -0
  208. package/dist/cjs/components/index.d.ts +7 -0
  209. package/dist/cjs/components/index.js +23 -0
  210. package/dist/cjs/constants.d.ts +20 -0
  211. package/dist/cjs/constants.js +23 -0
  212. package/dist/cjs/index.d.ts +4 -0
  213. package/dist/cjs/index.js +22 -0
  214. package/dist/cjs/locale/index.d.ts +118 -0
  215. package/dist/cjs/locale/index.js +63 -0
  216. package/dist/cjs/mobileOverlays.d.ts +21 -0
  217. package/dist/cjs/mobileOverlays.js +18 -0
  218. package/dist/cjs/package.json +3 -0
  219. package/dist/cjs/style.css +844 -0
  220. package/dist/cjs/utils/shouldBeOpenedInNewTab.d.ts +2 -0
  221. package/dist/cjs/utils/shouldBeOpenedInNewTab.js +6 -0
  222. package/dist/esm/components/HeaderButton/HeaderButton.d.ts +14 -0
  223. package/dist/esm/components/HeaderButton/HeaderButton.js +27 -0
  224. package/dist/esm/components/HeaderButton/index.d.ts +1 -0
  225. package/dist/esm/components/HeaderButton/index.js +1 -0
  226. package/dist/esm/components/HeaderButton/styles.module.css +3 -0
  227. package/dist/esm/components/HeaderLayout/HeaderLayout.d.ts +11 -0
  228. package/dist/esm/components/HeaderLayout/HeaderLayout.js +10 -0
  229. package/dist/esm/components/HeaderLayout/index.d.ts +1 -0
  230. package/dist/esm/components/HeaderLayout/index.js +1 -0
  231. package/dist/esm/components/HeaderLayout/styles.module.css +37 -0
  232. package/dist/esm/components/Logo/Logo.d.ts +14 -0
  233. package/dist/esm/components/Logo/Logo.js +29 -0
  234. package/dist/esm/components/Logo/constants.d.ts +10 -0
  235. package/dist/esm/components/Logo/constants.js +11 -0
  236. package/dist/esm/components/Logo/index.d.ts +1 -0
  237. package/dist/esm/components/Logo/index.js +1 -0
  238. package/dist/esm/components/Logo/styles.module.css +53 -0
  239. package/dist/esm/components/MainMenu/MainMenu.d.ts +2 -0
  240. package/dist/esm/components/MainMenu/MainMenu.js +22 -0
  241. package/dist/esm/components/MainMenu/constants.d.ts +14 -0
  242. package/dist/esm/components/MainMenu/constants.js +21 -0
  243. package/dist/esm/components/MainMenu/helperComponents/Banners/MenuBanner.d.ts +16 -0
  244. package/dist/esm/components/MainMenu/helperComponents/Banners/MenuBanner.js +21 -0
  245. package/dist/esm/components/MainMenu/helperComponents/Banners/constants.d.ts +7 -0
  246. package/dist/esm/components/MainMenu/helperComponents/Banners/constants.js +7 -0
  247. package/dist/esm/components/MainMenu/helperComponents/Banners/index.d.ts +2 -0
  248. package/dist/esm/components/MainMenu/helperComponents/Banners/index.js +2 -0
  249. package/dist/esm/components/MainMenu/helperComponents/Banners/styles.module.css +61 -0
  250. package/dist/esm/components/MainMenu/helperComponents/Content/Content.d.ts +30 -0
  251. package/dist/esm/components/MainMenu/helperComponents/Content/Content.js +94 -0
  252. package/dist/esm/components/MainMenu/helperComponents/Content/constants.d.ts +9 -0
  253. package/dist/esm/components/MainMenu/helperComponents/Content/constants.js +9 -0
  254. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.d.ts +18 -0
  255. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.js +29 -0
  256. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/index.d.ts +1 -0
  257. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/index.js +1 -0
  258. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/styles.module.css +27 -0
  259. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.d.ts +11 -0
  260. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.js +28 -0
  261. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.d.ts +8 -0
  262. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.js +17 -0
  263. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.d.ts +6 -0
  264. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.js +9 -0
  265. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.d.ts +9 -0
  266. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.js +9 -0
  267. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.d.ts +5 -0
  268. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.js +6 -0
  269. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.d.ts +6 -0
  270. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.js +22 -0
  271. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.d.ts +5 -0
  272. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.js +52 -0
  273. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/index.d.ts +2 -0
  274. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/index.js +2 -0
  275. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/styles.module.css +66 -0
  276. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/index.d.ts +5 -0
  277. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/index.js +5 -0
  278. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/index.d.ts +3 -0
  279. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/index.js +3 -0
  280. package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.css +231 -0
  281. package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.d.ts +24 -0
  282. package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.js +155 -0
  283. package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.d.ts +16 -0
  284. package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.js +56 -0
  285. package/dist/esm/components/MainMenu/helperComponents/Content/index.d.ts +2 -0
  286. package/dist/esm/components/MainMenu/helperComponents/Content/index.js +2 -0
  287. package/dist/esm/components/MainMenu/helperComponents/Content/styles.module.css +8 -0
  288. package/dist/esm/components/MainMenu/helperComponents/Favorites/Favorites.d.ts +12 -0
  289. package/dist/esm/components/MainMenu/helperComponents/Favorites/Favorites.js +73 -0
  290. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyFavoriteSVG.d.ts +3 -0
  291. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyFavoriteSVG.js +4 -0
  292. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyRecentSVG.d.ts +3 -0
  293. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyRecentSVG.js +4 -0
  294. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.d.ts +6 -0
  295. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.js +11 -0
  296. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/index.d.ts +1 -0
  297. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/index.js +1 -0
  298. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/styles.module.css +23 -0
  299. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesItemsSkeleton.d.ts +1 -0
  300. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesItemsSkeleton.js +6 -0
  301. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.d.ts +19 -0
  302. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.js +24 -0
  303. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.d.ts +8 -0
  304. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.js +22 -0
  305. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/index.d.ts +4 -0
  306. package/dist/esm/components/MainMenu/helperComponents/Favorites/components/index.js +4 -0
  307. package/dist/esm/components/MainMenu/helperComponents/Favorites/constants.d.ts +15 -0
  308. package/dist/esm/components/MainMenu/helperComponents/Favorites/constants.js +13 -0
  309. package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.d.ts +25 -0
  310. package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.js +89 -0
  311. package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesInsertIndicator.d.ts +1 -0
  312. package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesInsertIndicator.js +34 -0
  313. package/dist/esm/components/MainMenu/helperComponents/Favorites/index.d.ts +2 -0
  314. package/dist/esm/components/MainMenu/helperComponents/Favorites/index.js +2 -0
  315. package/dist/esm/components/MainMenu/helperComponents/Favorites/styles.module.css +87 -0
  316. package/dist/esm/components/MainMenu/helperComponents/Favorites/utils.d.ts +6 -0
  317. package/dist/esm/components/MainMenu/helperComponents/Favorites/utils.js +12 -0
  318. package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.d.ts +2 -0
  319. package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.js +57 -0
  320. package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/constants.d.ts +3 -0
  321. package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/constants.js +4 -0
  322. package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/index.d.ts +1 -0
  323. package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/index.js +1 -0
  324. package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/styles.module.css +98 -0
  325. package/dist/esm/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.d.ts +7 -0
  326. package/dist/esm/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.js +11 -0
  327. package/dist/esm/components/MainMenu/helperComponents/MenuHeaderBrand/index.d.ts +1 -0
  328. package/dist/esm/components/MainMenu/helperComponents/MenuHeaderBrand/index.js +1 -0
  329. package/dist/esm/components/MainMenu/helperComponents/MenuHeaderBrand/styles.module.css +13 -0
  330. package/dist/esm/components/MainMenu/helperComponents/MenuMobile/MenuMobile.d.ts +2 -0
  331. package/dist/esm/components/MainMenu/helperComponents/MenuMobile/MenuMobile.js +30 -0
  332. package/dist/esm/components/MainMenu/helperComponents/MenuMobile/index.d.ts +1 -0
  333. package/dist/esm/components/MainMenu/helperComponents/MenuMobile/index.js +1 -0
  334. package/dist/esm/components/MainMenu/helperComponents/MenuMobile/styles.module.css +25 -0
  335. package/dist/esm/components/MainMenu/helperComponents/MountAnimation/MountAnimation.d.ts +7 -0
  336. package/dist/esm/components/MainMenu/helperComponents/MountAnimation/MountAnimation.js +7 -0
  337. package/dist/esm/components/MainMenu/helperComponents/MountAnimation/index.d.ts +1 -0
  338. package/dist/esm/components/MainMenu/helperComponents/MountAnimation/index.js +1 -0
  339. package/dist/esm/components/MainMenu/helperComponents/MountAnimation/styles.module.css +60 -0
  340. package/dist/esm/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/ScrollWithAnimatedStickyPanel.d.ts +6 -0
  341. package/dist/esm/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/ScrollWithAnimatedStickyPanel.js +31 -0
  342. package/dist/esm/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/index.d.ts +1 -0
  343. package/dist/esm/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/index.js +1 -0
  344. package/dist/esm/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/styles.module.css +12 -0
  345. package/dist/esm/components/MainMenu/helperComponents/Search/Search.d.ts +7 -0
  346. package/dist/esm/components/MainMenu/helperComponents/Search/Search.js +9 -0
  347. package/dist/esm/components/MainMenu/helperComponents/Search/index.d.ts +1 -0
  348. package/dist/esm/components/MainMenu/helperComponents/Search/index.js +1 -0
  349. package/dist/esm/components/MainMenu/helperComponents/Search/styles.module.css +8 -0
  350. package/dist/esm/components/MainMenu/helperComponents/ServiceCard/ServiceCard.d.ts +19 -0
  351. package/dist/esm/components/MainMenu/helperComponents/ServiceCard/ServiceCard.js +46 -0
  352. package/dist/esm/components/MainMenu/helperComponents/ServiceCard/index.d.ts +1 -0
  353. package/dist/esm/components/MainMenu/helperComponents/ServiceCard/index.js +1 -0
  354. package/dist/esm/components/MainMenu/helperComponents/ServiceCard/styles.module.css +12 -0
  355. package/dist/esm/components/MainMenu/hooks/useMainMenuDnd.d.ts +30 -0
  356. package/dist/esm/components/MainMenu/hooks/useMainMenuDnd.js +88 -0
  357. package/dist/esm/components/MainMenu/hooks/useMenuItems.d.ts +8 -0
  358. package/dist/esm/components/MainMenu/hooks/useMenuItems.js +36 -0
  359. package/dist/esm/components/MainMenu/index.d.ts +5 -0
  360. package/dist/esm/components/MainMenu/index.js +5 -0
  361. package/dist/esm/components/MainMenu/types.d.ts +284 -0
  362. package/dist/esm/components/MainMenu/types.js +1 -0
  363. package/dist/esm/components/MainMenu/utils/dedupeSearchGroups.d.ts +15 -0
  364. package/dist/esm/components/MainMenu/utils/dedupeSearchGroups.js +29 -0
  365. package/dist/esm/components/MainMenu/utils/dnd/favoriteListCollisionDetection.d.ts +2 -0
  366. package/dist/esm/components/MainMenu/utils/dnd/favoriteListCollisionDetection.js +28 -0
  367. package/dist/esm/components/MainMenu/utils/dnd/getDragReferenceY.d.ts +9 -0
  368. package/dist/esm/components/MainMenu/utils/dnd/getDragReferenceY.js +14 -0
  369. package/dist/esm/components/MainMenu/utils/dnd/getFavoriteInsertIndex.d.ts +12 -0
  370. package/dist/esm/components/MainMenu/utils/dnd/getFavoriteInsertIndex.js +32 -0
  371. package/dist/esm/components/MainMenu/utils/dnd/ids.d.ts +8 -0
  372. package/dist/esm/components/MainMenu/utils/dnd/ids.js +38 -0
  373. package/dist/esm/components/MainMenu/utils/dnd/index.d.ts +5 -0
  374. package/dist/esm/components/MainMenu/utils/dnd/index.js +5 -0
  375. package/dist/esm/components/MainMenu/utils/dnd/resolveFavoriteOrderOnDragEnd.d.ts +10 -0
  376. package/dist/esm/components/MainMenu/utils/dnd/resolveFavoriteOrderOnDragEnd.js +42 -0
  377. package/dist/esm/components/MainMenu/utils/filterLinksGroupsFuzzy.d.ts +2 -0
  378. package/dist/esm/components/MainMenu/utils/filterLinksGroupsFuzzy.js +149 -0
  379. package/dist/esm/components/MainMenu/utils/flatLinksGroups.d.ts +2 -0
  380. package/dist/esm/components/MainMenu/utils/flatLinksGroups.js +4 -0
  381. package/dist/esm/components/MainMenu/utils/getAvatarNameFromLabel.d.ts +14 -0
  382. package/dist/esm/components/MainMenu/utils/getAvatarNameFromLabel.js +21 -0
  383. package/dist/esm/components/MainMenu/utils/getLinkEmblem.d.ts +3 -0
  384. package/dist/esm/components/MainMenu/utils/getLinkEmblem.js +15 -0
  385. package/dist/esm/components/MainMenu/utils/index.d.ts +12 -0
  386. package/dist/esm/components/MainMenu/utils/index.js +12 -0
  387. package/dist/esm/components/MainMenu/utils/innerLink.d.ts +7 -0
  388. package/dist/esm/components/MainMenu/utils/innerLink.js +34 -0
  389. package/dist/esm/components/MainMenu/utils/mapInnerLinksToListItems.d.ts +3 -0
  390. package/dist/esm/components/MainMenu/utils/mapInnerLinksToListItems.js +13 -0
  391. package/dist/esm/components/MainMenu/utils/mapOrderedFavoriteIdsToLinks.d.ts +2 -0
  392. package/dist/esm/components/MainMenu/utils/mapOrderedFavoriteIdsToLinks.js +6 -0
  393. package/dist/esm/components/MainMenu/utils/pinGroupToBottom.d.ts +2 -0
  394. package/dist/esm/components/MainMenu/utils/pinGroupToBottom.js +12 -0
  395. package/dist/esm/components/MainMenu/utils/resolveGroupBlockColor.d.ts +8 -0
  396. package/dist/esm/components/MainMenu/utils/resolveGroupBlockColor.js +9 -0
  397. package/dist/esm/components/MainMenu/utils/resolveInnerLinksByIds.d.ts +2 -0
  398. package/dist/esm/components/MainMenu/utils/resolveInnerLinksByIds.js +8 -0
  399. package/dist/esm/components/MainMenu/utils/search.d.ts +1 -0
  400. package/dist/esm/components/MainMenu/utils/search.js +24 -0
  401. package/dist/esm/components/PathBreadcrumbs/PathBreadcrumbs.d.ts +7 -0
  402. package/dist/esm/components/PathBreadcrumbs/PathBreadcrumbs.js +6 -0
  403. package/dist/esm/components/PathBreadcrumbs/index.d.ts +1 -0
  404. package/dist/esm/components/PathBreadcrumbs/index.js +1 -0
  405. package/dist/esm/components/PathBreadcrumbs/styles.module.css +4 -0
  406. package/dist/esm/components/PlatformLogo/Container.d.ts +12 -0
  407. package/dist/esm/components/PlatformLogo/Container.js +8 -0
  408. package/dist/esm/components/PlatformLogo/index.d.ts +6 -0
  409. package/dist/esm/components/PlatformLogo/index.js +8 -0
  410. package/dist/esm/components/PlatformLogo/styles.module.css +9 -0
  411. package/dist/esm/components/UserMenu/UserMenu.d.ts +14 -0
  412. package/dist/esm/components/UserMenu/UserMenu.js +40 -0
  413. package/dist/esm/components/UserMenu/hooks/useLogoutItem.d.ts +4 -0
  414. package/dist/esm/components/UserMenu/hooks/useLogoutItem.js +17 -0
  415. package/dist/esm/components/UserMenu/hooks/useProfileItem.d.ts +3 -0
  416. package/dist/esm/components/UserMenu/hooks/useProfileItem.js +21 -0
  417. package/dist/esm/components/UserMenu/hooks/useThemeItem.d.ts +6 -0
  418. package/dist/esm/components/UserMenu/hooks/useThemeItem.js +51 -0
  419. package/dist/esm/components/UserMenu/hooks/useUserMenuItems.d.ts +87 -0
  420. package/dist/esm/components/UserMenu/hooks/useUserMenuItems.js +42 -0
  421. package/dist/esm/components/UserMenu/index.d.ts +2 -0
  422. package/dist/esm/components/UserMenu/index.js +2 -0
  423. package/dist/esm/components/UserMenu/styles.module.css +7 -0
  424. package/dist/esm/components/UserMenu/types.d.ts +20 -0
  425. package/dist/esm/components/UserMenu/types.js +5 -0
  426. package/dist/esm/components/index.d.ts +7 -0
  427. package/dist/esm/components/index.js +7 -0
  428. package/dist/esm/constants.d.ts +20 -0
  429. package/dist/esm/constants.js +20 -0
  430. package/dist/esm/index.d.ts +4 -0
  431. package/dist/esm/index.js +4 -0
  432. package/dist/esm/locale/index.d.ts +118 -0
  433. package/dist/esm/locale/index.js +60 -0
  434. package/dist/esm/mobileOverlays.d.ts +21 -0
  435. package/dist/esm/mobileOverlays.js +15 -0
  436. package/dist/esm/style.css +844 -0
  437. package/dist/esm/utils/shouldBeOpenedInNewTab.d.ts +2 -0
  438. package/dist/esm/utils/shouldBeOpenedInNewTab.js +3 -0
  439. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  440. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  441. package/package.json +77 -0
  442. package/src/components/HeaderButton/HeaderButton.tsx +57 -0
  443. package/src/components/HeaderButton/index.ts +1 -0
  444. package/src/components/HeaderButton/styles.module.scss +3 -0
  445. package/src/components/HeaderLayout/HeaderLayout.tsx +56 -0
  446. package/src/components/HeaderLayout/index.ts +1 -0
  447. package/src/components/HeaderLayout/styles.module.scss +42 -0
  448. package/src/components/Logo/Logo.tsx +76 -0
  449. package/src/components/Logo/constants.ts +17 -0
  450. package/src/components/Logo/index.ts +1 -0
  451. package/src/components/Logo/styles.module.scss +64 -0
  452. package/src/components/MainMenu/MainMenu.tsx +84 -0
  453. package/src/components/MainMenu/constants.ts +24 -0
  454. package/src/components/MainMenu/helperComponents/Banners/MenuBanner.tsx +103 -0
  455. package/src/components/MainMenu/helperComponents/Banners/constants.ts +7 -0
  456. package/src/components/MainMenu/helperComponents/Banners/index.ts +2 -0
  457. package/src/components/MainMenu/helperComponents/Banners/styles.module.scss +75 -0
  458. package/src/components/MainMenu/helperComponents/Content/Content.tsx +267 -0
  459. package/src/components/MainMenu/helperComponents/Content/constants.ts +9 -0
  460. package/src/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.tsx +136 -0
  461. package/src/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/index.ts +1 -0
  462. package/src/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/styles.module.scss +31 -0
  463. package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.tsx +131 -0
  464. package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.tsx +64 -0
  465. package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.tsx +29 -0
  466. package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.tsx +47 -0
  467. package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.tsx +35 -0
  468. package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.tsx +79 -0
  469. package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.tsx +128 -0
  470. package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/index.ts +2 -0
  471. package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/styles.module.scss +77 -0
  472. package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/index.ts +5 -0
  473. package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/index.ts +3 -0
  474. package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.scss +270 -0
  475. package/src/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.ts +250 -0
  476. package/src/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.tsx +104 -0
  477. package/src/components/MainMenu/helperComponents/Content/index.ts +2 -0
  478. package/src/components/MainMenu/helperComponents/Content/styles.module.scss +11 -0
  479. package/src/components/MainMenu/helperComponents/Favorites/Favorites.tsx +176 -0
  480. package/src/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyFavoriteSVG.tsx +24 -0
  481. package/src/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyRecentSVG.tsx +38 -0
  482. package/src/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.tsx +36 -0
  483. package/src/components/MainMenu/helperComponents/Favorites/components/EmptyState/index.ts +1 -0
  484. package/src/components/MainMenu/helperComponents/Favorites/components/EmptyState/styles.module.scss +27 -0
  485. package/src/components/MainMenu/helperComponents/Favorites/components/FavoritesItemsSkeleton.tsx +15 -0
  486. package/src/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.tsx +78 -0
  487. package/src/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.tsx +70 -0
  488. package/src/components/MainMenu/helperComponents/Favorites/components/index.ts +4 -0
  489. package/src/components/MainMenu/helperComponents/Favorites/constants.ts +18 -0
  490. package/src/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.tsx +123 -0
  491. package/src/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesInsertIndicator.ts +41 -0
  492. package/src/components/MainMenu/helperComponents/Favorites/index.ts +2 -0
  493. package/src/components/MainMenu/helperComponents/Favorites/styles.module.scss +101 -0
  494. package/src/components/MainMenu/helperComponents/Favorites/utils.ts +22 -0
  495. package/src/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.tsx +172 -0
  496. package/src/components/MainMenu/helperComponents/MenuDesktop/constants.ts +6 -0
  497. package/src/components/MainMenu/helperComponents/MenuDesktop/index.ts +1 -0
  498. package/src/components/MainMenu/helperComponents/MenuDesktop/styles.module.scss +118 -0
  499. package/src/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.tsx +27 -0
  500. package/src/components/MainMenu/helperComponents/MenuHeaderBrand/index.ts +1 -0
  501. package/src/components/MainMenu/helperComponents/MenuHeaderBrand/styles.module.scss +17 -0
  502. package/src/components/MainMenu/helperComponents/MenuMobile/MenuMobile.tsx +101 -0
  503. package/src/components/MainMenu/helperComponents/MenuMobile/index.ts +1 -0
  504. package/src/components/MainMenu/helperComponents/MenuMobile/styles.module.scss +32 -0
  505. package/src/components/MainMenu/helperComponents/MountAnimation/MountAnimation.tsx +20 -0
  506. package/src/components/MainMenu/helperComponents/MountAnimation/index.ts +1 -0
  507. package/src/components/MainMenu/helperComponents/MountAnimation/styles.module.scss +77 -0
  508. package/src/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/ScrollWithAnimatedStickyPanel.tsx +54 -0
  509. package/src/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/index.ts +1 -0
  510. package/src/components/MainMenu/helperComponents/ScrollWithAnimatedStickyPanel/styles.module.scss +16 -0
  511. package/src/components/MainMenu/helperComponents/Search/Search.tsx +34 -0
  512. package/src/components/MainMenu/helperComponents/Search/index.ts +1 -0
  513. package/src/components/MainMenu/helperComponents/Search/styles.module.scss +14 -0
  514. package/src/components/MainMenu/helperComponents/ServiceCard/ServiceCard.tsx +111 -0
  515. package/src/components/MainMenu/helperComponents/ServiceCard/index.ts +1 -0
  516. package/src/components/MainMenu/helperComponents/ServiceCard/styles.module.scss +14 -0
  517. package/src/components/MainMenu/hooks/useMainMenuDnd.tsx +187 -0
  518. package/src/components/MainMenu/hooks/useMenuItems.tsx +59 -0
  519. package/src/components/MainMenu/index.ts +5 -0
  520. package/src/components/MainMenu/types.ts +311 -0
  521. package/src/components/MainMenu/utils/dedupeSearchGroups.ts +35 -0
  522. package/src/components/MainMenu/utils/dnd/favoriteListCollisionDetection.ts +35 -0
  523. package/src/components/MainMenu/utils/dnd/getDragReferenceY.ts +26 -0
  524. package/src/components/MainMenu/utils/dnd/getFavoriteInsertIndex.ts +63 -0
  525. package/src/components/MainMenu/utils/dnd/ids.ts +53 -0
  526. package/src/components/MainMenu/utils/dnd/index.ts +5 -0
  527. package/src/components/MainMenu/utils/dnd/resolveFavoriteOrderOnDragEnd.ts +74 -0
  528. package/src/components/MainMenu/utils/filterLinksGroupsFuzzy.ts +205 -0
  529. package/src/components/MainMenu/utils/flatLinksGroups.ts +6 -0
  530. package/src/components/MainMenu/utils/getAvatarNameFromLabel.ts +24 -0
  531. package/src/components/MainMenu/utils/getLinkEmblem.tsx +27 -0
  532. package/src/components/MainMenu/utils/index.ts +12 -0
  533. package/src/components/MainMenu/utils/innerLink.ts +45 -0
  534. package/src/components/MainMenu/utils/mapInnerLinksToListItems.tsx +17 -0
  535. package/src/components/MainMenu/utils/mapOrderedFavoriteIdsToLinks.ts +13 -0
  536. package/src/components/MainMenu/utils/pinGroupToBottom.ts +17 -0
  537. package/src/components/MainMenu/utils/resolveGroupBlockColor.ts +14 -0
  538. package/src/components/MainMenu/utils/resolveInnerLinksByIds.ts +12 -0
  539. package/src/components/MainMenu/utils/search.ts +32 -0
  540. package/src/components/PathBreadcrumbs/PathBreadcrumbs.tsx +21 -0
  541. package/src/components/PathBreadcrumbs/index.ts +1 -0
  542. package/src/components/PathBreadcrumbs/styles.module.scss +7 -0
  543. package/src/components/PlatformLogo/Container.tsx +31 -0
  544. package/src/components/PlatformLogo/index.ts +17 -0
  545. package/src/components/PlatformLogo/styles.module.scss +13 -0
  546. package/src/components/UserMenu/UserMenu.tsx +106 -0
  547. package/src/components/UserMenu/hooks/useLogoutItem.tsx +23 -0
  548. package/src/components/UserMenu/hooks/useProfileItem.tsx +33 -0
  549. package/src/components/UserMenu/hooks/useThemeItem.tsx +70 -0
  550. package/src/components/UserMenu/hooks/useUserMenuItems.ts +77 -0
  551. package/src/components/UserMenu/index.ts +2 -0
  552. package/src/components/UserMenu/styles.module.scss +7 -0
  553. package/src/components/UserMenu/types.ts +24 -0
  554. package/src/components/index.ts +7 -0
  555. package/src/constants.ts +20 -0
  556. package/src/index.ts +4 -0
  557. package/src/locale/index.ts +64 -0
  558. package/src/mobileOverlays.ts +26 -0
  559. package/src/utils/shouldBeOpenedInNewTab.ts +5 -0
@@ -0,0 +1,311 @@
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
+
6
+ import { FavoritesSegment } from './helperComponents/Favorites/constants';
7
+
8
+ /**
9
+ * Карточка сервиса или ссылки внутри {@link LinksGroup}.
10
+ *
11
+ * Отображается в сетке MainMenu (`CardServiceSmall`) и может попадать в боковое меню (`mapInnerLinksToListItems`).
12
+ */
13
+ export type InnerLink = {
14
+ /**
15
+ * Уникальный идентификатор карточки (также используется в избранном и при поиске).
16
+ *
17
+ * Один и тот же сервис может быть представлен в разных сегментах с разной
18
+ * детализацией (простая карточка в общем каталоге и раскрытая с вложенными
19
+ * сервисами версия в другом сегменте) — в этом случае обеим версиям задаётся
20
+ * общий `id`. При поиске из совпадений с одинаковым `id` в разных сегментах
21
+ * остаётся только первое по приоритету сегментов (см. {@link MainMenuProps.segments}).
22
+ */
23
+ id: string;
24
+ /**
25
+ * Иконка карточки.
26
+ *
27
+ * Если не задана, вместо иконки рендерится `Avatar` с двухбуквенным текстом по `label`
28
+ * (см. `getAvatarNameFromLabel`).
29
+ */
30
+ icon?: JSXElementConstructor<{
31
+ size?: number;
32
+ className?: string;
33
+ }>;
34
+ /** Заголовок карточки. */
35
+ label: string;
36
+ /** Краткое описание сервиса — отображается при включённом переключателе «Описание». */
37
+ description?: string;
38
+ onClick(e?: MouseEvent<HTMLElement>): void;
39
+ href?: string;
40
+ disabled?: boolean;
41
+ hidden?: boolean;
42
+ badge?: CardServiceLightProps['promoTag'];
43
+ /**
44
+ * Вложенные сервисы подкатегории.
45
+ *
46
+ * При наличии карточка раскрывается аккордеоном: в свёрнутом виде — обычная карточка
47
+ * с кнопкой раскрытия, в развёрнутом — заголовок {@link TitleClickable} и сетка вложенных сервисов.
48
+ */
49
+ items?: InnerLink[];
50
+ /**
51
+ * Синонимы для fuzzy-поиска.
52
+ */
53
+ aliases: string[];
54
+ };
55
+
56
+ type TitleStatic = {
57
+ text: string;
58
+ onClick?: never;
59
+ };
60
+
61
+ type TitleClickable = {
62
+ text: string;
63
+ onClick?(e?: MouseEvent<HTMLElement>): void;
64
+ };
65
+
66
+ export type LinksGroupTitle = TitleStatic | TitleClickable;
67
+
68
+ export type LinksGroupBlockColor =
69
+ 'neutral' | 'primary' | 'red' | 'orange' | 'yellow' | 'green' | 'blue' | 'violet' | 'pink';
70
+
71
+ /**
72
+ * Группа карточек MainMenu с общим заголовком.
73
+ *
74
+ * Используется в `segments[].items` и `platformGroups`.
75
+ * При активном поиске группа может отображаться целиком или с отфильтрованным списком `items`.
76
+ */
77
+ export type LinksGroup = {
78
+ /** Уникальный идентификатор группы (якорь скролла, поиск по id). */
79
+ id: string;
80
+ /** Заголовок группы в сетке карточек и в боковой навигации. */
81
+ label: LinksGroupTitle;
82
+ /**
83
+ * Синонимы заголовка группы для fuzzy-поиска.
84
+ */
85
+ aliases?: string[];
86
+ onClick?(e?: MouseEvent<HTMLElement>): void;
87
+ hidden?: boolean;
88
+ /**
89
+ * Разрешено ли добавление карточек группы в избранное.
90
+ *
91
+ * @default true — избранное доступно, если не передано `false`.
92
+ */
93
+ favoritesEnabled?: boolean;
94
+ /** Карточки сервисов или ссылок внутри группы. */
95
+ items: InnerLink[];
96
+ /** Цвет блока группы. */
97
+ blockColor?: LinksGroupBlockColor;
98
+ /** Визуальное выделение группы */
99
+ highlight?: boolean;
100
+ };
101
+
102
+ /**
103
+ * Сегмент правой панели MainMenu (переключатель в тулбаре над сеткой карточек).
104
+ *
105
+ * Только каталог: порядок и раскрытие групп задаются через {@link MainMenuSegmentPrefs}
106
+ * и колбэки `onSegmentOrderChange` / `onSegmentExpandedChange` на {@link MainMenuProps}.
107
+ */
108
+ export type MainMenuSegment = {
109
+ /** Уникальный идентификатор сегмента (значение SegmentControl). */
110
+ id: string;
111
+ /** Подпись сегмента в SegmentControl. */
112
+ label: string;
113
+ /** Иконка сегмента в SegmentControl; без неё — только `label`. */
114
+ icon?: ReactNode;
115
+ /** Группы карточек сегмента (каталог). */
116
+ items: LinksGroup[];
117
+ /**
118
+ * Группы сегмента в выдаче поиска — после совпадений из обычных сегментов и `platformGroups`.
119
+ *
120
+ * @default false
121
+ */
122
+ pinBottomOnSearch?: boolean;
123
+ };
124
+
125
+ /**
126
+ * Пользовательские prefs сегмента (порядок и раскрытие групп).
127
+ *
128
+ * Передаются отдельно от каталога {@link MainMenuSegment}, чтобы `segments` оставался стабильным.
129
+ */
130
+ export type MainMenuSegmentPrefs = {
131
+ /** Id сегмента из {@link MainMenuSegment.id}. */
132
+ id: string;
133
+ /**
134
+ * Порядок id групп. Если не передан — uncontrolled для этого сегмента
135
+ * (дефолт = порядок `items`; новые группы добавляются в конец).
136
+ */
137
+ order?: string[];
138
+ /**
139
+ * Id раскрытых групп. Если не передан — uncontrolled (по умолчанию все раскрыты).
140
+ */
141
+ expanded?: string[];
142
+ };
143
+
144
+ export type SearchProps = Pick<SearchPropsSnack, 'onBlur' | 'onFocus'> & {
145
+ value: string;
146
+ onChange(value: string): void;
147
+ onSearchNoResult?(value: string): void;
148
+ };
149
+
150
+ export type FavoriteProps = {
151
+ /** Список id избранных сервисов */
152
+ value: string[];
153
+ /**
154
+ * Колбэк переключения избранного для карточки сервиса.
155
+ *
156
+ * `position` передаётся при добавлении через drag из сетки сервисов — индекс,
157
+ * на который должна встать карточка среди избранного (см. {@link FavoriteProps.onOrderChange}).
158
+ * При переключении избранного кликом не передаётся.
159
+ */
160
+ onChange(productId: string): (addingValue: boolean, position?: number) => void;
161
+ /**
162
+ * Колбэк вызывается после перетаскивания карточек внутри избранного с новым порядком id.
163
+ *
164
+ * Добавление новой карточки через drag из сетки сервисов идёт через
165
+ * {@link FavoriteProps.onChange} с `position` — этот колбэк для такого добавления не вызывается.
166
+ */
167
+ onOrderChange?(orderedIds: string[]): void;
168
+ /** Список id недавно открытых сервисов */
169
+ recentServices?: string[];
170
+ /** Колбэк клика по карточке сервиса в сегменте «Избранное» */
171
+ onFavoriteServiceClick?(serviceId: string, event?: MouseEvent<HTMLElement>): void;
172
+ /** Колбэк клика по карточке сервиса в сегменте «Недавнее» */
173
+ onRecentServiceClick?(serviceId: string, event?: MouseEvent<HTMLElement>): void;
174
+ /** Действия для списка сервисов */
175
+ actions?: {
176
+ items: BaseItemProps[];
177
+ onDroplistOpenChange?(open: boolean): void;
178
+ };
179
+ /**
180
+ * Активный сегмент («Избранное» / «Недавнее») в панели избранного.
181
+ *
182
+ * Не передано — неуправляемое состояние (дефолт `'favorites'`).
183
+ */
184
+ segment?: FavoritesSegment;
185
+ /** Колбэк смены сегмента панели избранного. */
186
+ onSegmentChange?(segment: FavoritesSegment): void;
187
+ /** Флаг загрузки данных */
188
+ loading?: boolean;
189
+ };
190
+
191
+ export type MainMenuToggleProps = {
192
+ value: boolean;
193
+ onChange(value: boolean): void;
194
+ };
195
+
196
+ /**
197
+ * Настройки меню, управляемые из модалки по кнопке в тулбаре сетки карточек.
198
+ *
199
+ * Проп опционален на уровне {@link MainMenuProps.preferences} целиком — без него кнопка
200
+ * настроек в тулбаре не отображается.
201
+ */
202
+ export type MainMenuPreferencesProps = {
203
+ /**
204
+ * Открыта ли модалка настроек.
205
+ *
206
+ * Не передано — состояние открытия неуправляемое (модалка сама переключает себя по клику на кнопку).
207
+ */
208
+ open?: boolean;
209
+ /** Колбэк открытия/закрытия модалки. */
210
+ onOpenChange?(open: boolean): void;
211
+ /** Показывать описания сервисов в карточках. */
212
+ showDescription: MainMenuToggleProps;
213
+ /**
214
+ * Отображать цвета блоков групп ({@link LinksGroup.blockColor}).
215
+ * `value: false` скрывает цвета всех групп независимо от заданного `blockColor`.
216
+ */
217
+ showGroupsColors?: MainMenuToggleProps;
218
+ };
219
+
220
+ export type MainMenuProps = {
221
+ disabled?: boolean;
222
+ open?: boolean;
223
+ setOpen?(open: boolean): void;
224
+
225
+ logo?: ReactNode;
226
+ leftTop?: ReactNode;
227
+ rightTop?: ReactNode;
228
+
229
+ /**
230
+ * Сегменты правой панели (сетка карточек) — только каталог.
231
+ *
232
+ * При поиске: совпадения из сегментов без `pinBottomOnSearch` → `platformGroups` → сегменты с `pinBottomOnSearch`.
233
+ * Если один и тот же {@link InnerLink.id} совпал сразу в нескольких сегментах — остаётся только
234
+ * первое по этому приоритету вхождение, остальные (и опустевшие после этого группы) не показываются.
235
+ * При `segments.length > 1` показывается SegmentControl (скрывается во время поиска).
236
+ * Порядок и раскрытие групп — через `segmentPrefs` и колбэки ниже.
237
+ */
238
+ segments?: MainMenuSegment[];
239
+
240
+ /**
241
+ * Пользовательские prefs сегментов (порядок / раскрытие групп).
242
+ *
243
+ * Нет записи для сегмента или omit `order` / `expanded` → uncontrolled для этого поля.
244
+ */
245
+ segmentPrefs?: MainMenuSegmentPrefs[];
246
+
247
+ /**
248
+ * Активный сегмент правой панели (значение SegmentControl, см. {@link MainMenuSegment.id}).
249
+ *
250
+ * Не передано — неуправляемое состояние (дефолт — первый сегмент с видимыми карточками).
251
+ */
252
+ activeSegmentId?: string;
253
+
254
+ /** Колбэк смены активного сегмента правой панели. */
255
+ onActiveSegmentChange?(segmentId: string): void;
256
+
257
+ /**
258
+ * Колбэк после DnD групп в сегменте (без id синтетической группы избранного).
259
+ */
260
+ onSegmentOrderChange?(segmentId: string, orderedGroupIds: string[]): void;
261
+
262
+ /**
263
+ * Колбэк при изменении набора раскрытых групп сегмента
264
+ * (без id синтетической группы избранного).
265
+ */
266
+ onSegmentExpandedChange?(segmentId: string, expandedGroupIds: string[]): void;
267
+
268
+ /**
269
+ * Пункты левой колонки (desktop) / нижней части списка (mobile).
270
+ *
271
+ * Плоский список `List` (`BaseItem` и при необходимости `type: 'group'` с `divider` для разделителей).
272
+ * Не связан с сегментами правой панели и не меняется при сортировке групп в сегментах.
273
+ */
274
+ settingItems?: ListProps['items'];
275
+
276
+ /**
277
+ * Платформенные группы (например «Облачные продукты», «Другие продукты»).
278
+ *
279
+ * Без поиска в сетке карточек **не отображаются**.
280
+ * С поиском: попадают в результаты при совпадении; порядок —
281
+ * после совпадений из сегментов без `pinBottomOnSearch`, перед сегментами с `pinBottomOnSearch`.
282
+ * Обычно `favoritesEnabled: false`; карточки могут быть без `icon` (Avatar по `label`).
283
+ */
284
+ platformGroups?: LinksGroup[];
285
+
286
+ favorite?: FavoriteProps;
287
+
288
+ search?: SearchProps;
289
+
290
+ /**
291
+ * Настройки меню (модалка по кнопке в тулбаре): описания карточек, цвета групп.
292
+ *
293
+ * Не передано — кнопка настроек в тулбаре не отображается.
294
+ */
295
+ preferences?: MainMenuPreferencesProps;
296
+
297
+ /**
298
+ * Ширина дровера, с которой открывается меню (desktop only)
299
+ */
300
+ defaultWidth?: number;
301
+ /**
302
+ * Вызывается при окончании изменения ширины дровера (desktop only)
303
+ */
304
+ onWidthChangeEnd?: (width: number) => void;
305
+ /**
306
+ * Текст подсказки для драггера (desktop only)
307
+ */
308
+ draggerTooltip?: string;
309
+ /** Флаг загрузки данных */
310
+ loading?: boolean;
311
+ };
@@ -0,0 +1,35 @@
1
+ import { LinksGroup } from '../types';
2
+
3
+ /**
4
+ * Один и тот же сервис может быть представлен в разных сегментах с разной
5
+ * детализацией — например, простой карточкой в общем каталоге и раскрытой
6
+ * аккордеоном карточкой с вложенными сервисами в «Центре управления». Обе
7
+ * версии используют общий {@link InnerLink.id}.
8
+ *
9
+ * При поиске результаты сегментов объединяются в один список (см.
10
+ * {@link MainMenuProps.segments}), поэтому такой сервис может совпасть сразу в
11
+ * нескольких сегментах. Функция оставляет только первое по порядку `groups`
12
+ * (то есть по приоритету сегментов) вхождение каждого id, а группы, опустевшие
13
+ * после удаления дублей, убирает целиком — иначе группа с тем же заголовком
14
+ * задублируется в выдаче.
15
+ */
16
+ export function dedupeSearchGroups(groups: LinksGroup[]): LinksGroup[] {
17
+ const seenItemIds = new Set<string>();
18
+
19
+ return groups.reduce<LinksGroup[]>((acc, group) => {
20
+ const items = group.items.filter(item => {
21
+ if (seenItemIds.has(item.id)) {
22
+ return false;
23
+ }
24
+
25
+ seenItemIds.add(item.id);
26
+ return true;
27
+ });
28
+
29
+ if (items.length > 0) {
30
+ acc.push({ ...group, items });
31
+ }
32
+
33
+ return acc;
34
+ }, []);
35
+ }
@@ -0,0 +1,35 @@
1
+ import { closestCenter, CollisionDetection, rectIntersection } from '@dnd-kit/core';
2
+
3
+ import { FAVORITES_DROP_ID, isFavoritesDroppableId, isServiceDragId, isServiceFavoriteDragId } from './ids';
4
+
5
+ export const favoriteListCollisionDetection: CollisionDetection = args => {
6
+ const collisions = closestCenter(args);
7
+
8
+ // Group reorder: ignore favorites droppables so they don't steal collisions from groups.
9
+ if (!isServiceDragId(args.active.id)) {
10
+ return collisions.filter(({ id }) => !isFavoritesDroppableId(id));
11
+ }
12
+
13
+ // Favorite reorder: stay among favorite cards.
14
+ if (isServiceFavoriteDragId(args.active.id)) {
15
+ return collisions.filter(({ id }) => isServiceFavoriteDragId(id));
16
+ }
17
+
18
+ // Source → favorites: only when pointer (or rect) actually hits the favorites panel.
19
+ // closestCenter always returns a nearest favorite even while still over the catalog —
20
+ // that would add the card on a pick-up-and-release without moving into favorites.
21
+ // const hits = args.pointerCoordinates ? pointerWithin(args) : rectIntersection(args);
22
+ const hits = rectIntersection(args);
23
+ const hasFavoriteCards = args.droppableContainers.some(({ id }) => id != null && isServiceFavoriteDragId(id));
24
+ // With cards in the list, ignore FAVORITES_DROP_ID — padding/gaps would otherwise
25
+ // oscillate between "append" and a card-based insert index.
26
+ const favoriteHits = hits.filter(({ id }) => {
27
+ if (isServiceFavoriteDragId(id)) {
28
+ return true;
29
+ }
30
+
31
+ return id === FAVORITES_DROP_ID && !hasFavoriteCards;
32
+ });
33
+
34
+ return favoriteHits;
35
+ };
@@ -0,0 +1,26 @@
1
+ import { getEventCoordinates } from '@dnd-kit/utilities';
2
+
3
+ import { ClientRectLike } from './getFavoriteInsertIndex';
4
+
5
+ type GetDragReferenceYParams = {
6
+ activatorEvent?: Event | null;
7
+ deltaY?: number;
8
+ activeRect?: ClientRectLike | null;
9
+ };
10
+
11
+ /** Pointer Y (activator + delta), or active rect center as fallback (keyboard). */
12
+ export function getDragReferenceY({ activatorEvent, deltaY = 0, activeRect }: GetDragReferenceYParams): number | null {
13
+ if (activatorEvent) {
14
+ const coordinates = getEventCoordinates(activatorEvent);
15
+
16
+ if (coordinates) {
17
+ return coordinates.y + deltaY;
18
+ }
19
+ }
20
+
21
+ if (!activeRect) {
22
+ return null;
23
+ }
24
+
25
+ return activeRect.top + activeRect.height / 2;
26
+ }
@@ -0,0 +1,63 @@
1
+ import { FAVORITES_DROP_ID, isServiceFavoriteDragId, isServiceSourceDragId, parseServiceDragId } from './ids';
2
+
3
+ export type ClientRectLike = Pick<ClientRect, 'top' | 'height'>;
4
+
5
+ /** Before `overIndex` if referenceY is above the over item center, otherwise after. */
6
+ export function getInsertIndexByRects(
7
+ overIndex: number,
8
+ referenceY?: number | null,
9
+ overRect?: ClientRectLike | null,
10
+ ): number {
11
+ if (referenceY == null || !overRect) {
12
+ return overIndex;
13
+ }
14
+
15
+ const overCenterY = overRect.top + overRect.height / 2;
16
+
17
+ return referenceY > overCenterY ? overIndex + 1 : overIndex;
18
+ }
19
+
20
+ export type GetFavoriteInsertIndexParams = {
21
+ activeId: string | number;
22
+ overId?: string | number;
23
+ favoriteIds: string[];
24
+ referenceY?: number | null;
25
+ overRect?: ClientRectLike | null;
26
+ };
27
+
28
+ /** Insert index for a new source card; shared by indicator and drag-end. */
29
+ export function getFavoriteInsertIndex({
30
+ activeId,
31
+ overId,
32
+ favoriteIds,
33
+ referenceY,
34
+ overRect,
35
+ }: GetFavoriteInsertIndexParams): number | null {
36
+ if (!isServiceSourceDragId(activeId) || overId == null) {
37
+ return null;
38
+ }
39
+
40
+ const activeServiceId = parseServiceDragId(activeId);
41
+
42
+ if (favoriteIds.includes(activeServiceId)) {
43
+ return null;
44
+ }
45
+
46
+ // Empty list only: drop zone is the sole target. With cards, ignore it — padding/gaps
47
+ // would make the indicator jump between "append" and card before/after.
48
+ if (String(overId) === FAVORITES_DROP_ID) {
49
+ return favoriteIds.length === 0 ? 0 : null;
50
+ }
51
+
52
+ if (!isServiceFavoriteDragId(overId)) {
53
+ return null;
54
+ }
55
+
56
+ const overIndex = favoriteIds.indexOf(parseServiceDragId(overId));
57
+
58
+ if (overIndex === -1) {
59
+ return null;
60
+ }
61
+
62
+ return getInsertIndexByRects(overIndex, referenceY, overRect);
63
+ }
@@ -0,0 +1,53 @@
1
+ const SERVICE_DRAG_SOURCE_PREFIX = 'service-drag:source:';
2
+
3
+ const SERVICE_DRAG_FAVORITE_PREFIX = 'service-drag:favorite:';
4
+
5
+ // Символьный сепаратор для исключения пересечения с символами, которые могут быть в groupId или serviceId
6
+ const SERVICE_DRAG_SOURCE_GROUP_SEPARATOR = '\u0000';
7
+
8
+ export const FAVORITES_DROP_ID = 'favorites-drop-zone';
9
+
10
+ export function getServiceSourceDragId(groupId: string, serviceId: string): string {
11
+ return `${SERVICE_DRAG_SOURCE_PREFIX}${groupId}${SERVICE_DRAG_SOURCE_GROUP_SEPARATOR}${serviceId}`;
12
+ }
13
+
14
+ export function getServiceFavoriteDragId(serviceId: string): string {
15
+ return `${SERVICE_DRAG_FAVORITE_PREFIX}${serviceId}`;
16
+ }
17
+
18
+ export function isServiceSourceDragId(id: string | number | symbol): boolean {
19
+ return String(id).startsWith(SERVICE_DRAG_SOURCE_PREFIX);
20
+ }
21
+
22
+ export function isServiceFavoriteDragId(id: string | number | symbol): boolean {
23
+ return String(id).startsWith(SERVICE_DRAG_FAVORITE_PREFIX);
24
+ }
25
+
26
+ export function isServiceDragId(id: string | number | symbol): boolean {
27
+ return isServiceSourceDragId(id) || isServiceFavoriteDragId(id);
28
+ }
29
+
30
+ export function isFavoritesDroppableId(id: string | number | symbol) {
31
+ return id === FAVORITES_DROP_ID || isServiceFavoriteDragId(id);
32
+ }
33
+
34
+ export function parseServiceDragId(id: string | number | symbol): string {
35
+ const value = String(id);
36
+
37
+ if (value.startsWith(SERVICE_DRAG_SOURCE_PREFIX)) {
38
+ const rest = value.slice(SERVICE_DRAG_SOURCE_PREFIX.length);
39
+ const separatorIndex = rest.lastIndexOf(SERVICE_DRAG_SOURCE_GROUP_SEPARATOR);
40
+
41
+ if (separatorIndex >= 0) {
42
+ return rest.slice(separatorIndex + 1);
43
+ }
44
+
45
+ return rest;
46
+ }
47
+
48
+ if (value.startsWith(SERVICE_DRAG_FAVORITE_PREFIX)) {
49
+ return value.slice(SERVICE_DRAG_FAVORITE_PREFIX.length);
50
+ }
51
+
52
+ return value;
53
+ }
@@ -0,0 +1,5 @@
1
+ export * from './ids';
2
+ export * from './getDragReferenceY';
3
+ export * from './getFavoriteInsertIndex';
4
+ export * from './resolveFavoriteOrderOnDragEnd';
5
+ export * from './favoriteListCollisionDetection';
@@ -0,0 +1,74 @@
1
+ import { arrayMove } from '@dnd-kit/sortable';
2
+
3
+ import { ClientRectLike, getFavoriteInsertIndex } from './getFavoriteInsertIndex';
4
+ import { FAVORITES_DROP_ID, isServiceDragId, isServiceFavoriteDragId, parseServiceDragId } from './ids';
5
+
6
+ type ResolveFavoriteOrderOnDragEndParams = {
7
+ activeId: string | number;
8
+
9
+ overId?: string | number;
10
+
11
+ favoriteIds: string[];
12
+
13
+ referenceY?: number | null;
14
+
15
+ overRect?: ClientRectLike | null;
16
+ };
17
+
18
+ export function resolveFavoriteOrderOnDragEnd({
19
+ activeId,
20
+ overId,
21
+ favoriteIds,
22
+ referenceY,
23
+ overRect,
24
+ }: ResolveFavoriteOrderOnDragEndParams): string[] | null {
25
+ if (!isServiceDragId(activeId) || overId == null) {
26
+ return null;
27
+ }
28
+
29
+ const activeServiceId = parseServiceDragId(activeId);
30
+ const activeFavoriteIndex = isServiceFavoriteDragId(activeId) ? favoriteIds.indexOf(activeServiceId) : -1;
31
+
32
+ // Reorder an existing favorite.
33
+ if (activeFavoriteIndex !== -1) {
34
+ if (String(overId) === FAVORITES_DROP_ID) {
35
+ const lastIndex = favoriteIds.length - 1;
36
+
37
+ if (activeFavoriteIndex === lastIndex) {
38
+ return null;
39
+ }
40
+
41
+ return arrayMove(favoriteIds, activeFavoriteIndex, lastIndex);
42
+ }
43
+
44
+ if (!isServiceFavoriteDragId(overId)) {
45
+ return null;
46
+ }
47
+
48
+ const overFavoriteIndex = favoriteIds.indexOf(parseServiceDragId(overId));
49
+
50
+ if (overFavoriteIndex === -1 || activeFavoriteIndex === overFavoriteIndex) {
51
+ return null;
52
+ }
53
+
54
+ return arrayMove(favoriteIds, activeFavoriteIndex, overFavoriteIndex);
55
+ }
56
+
57
+ // Insert from catalog — same index as the insert indicator.
58
+ const insertIndex = getFavoriteInsertIndex({
59
+ activeId,
60
+ overId,
61
+ favoriteIds,
62
+ referenceY,
63
+ overRect,
64
+ });
65
+
66
+ if (insertIndex == null) {
67
+ return null;
68
+ }
69
+
70
+ const nextOrder = [...favoriteIds];
71
+ nextOrder.splice(insertIndex, 0, activeServiceId);
72
+
73
+ return nextOrder;
74
+ }