@gravity-ui/blog-constructor 1.0.0-alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +231 -0
- package/LICENSE +21 -0
- package/README.md +14 -0
- package/build/cjs/blocks/Author/Author.css +31 -0
- package/build/cjs/blocks/Author/Author.d.ts +3 -0
- package/build/cjs/blocks/Author/Author.js +60 -0
- package/build/cjs/blocks/Banner/Banner.css +58 -0
- package/build/cjs/blocks/Banner/Banner.d.ts +3 -0
- package/build/cjs/blocks/Banner/Banner.js +51 -0
- package/build/cjs/blocks/CTA/CTA.css +56 -0
- package/build/cjs/blocks/CTA/CTA.d.ts +3 -0
- package/build/cjs/blocks/CTA/CTA.js +44 -0
- package/build/cjs/blocks/ColoredText/ColoredText.css +28 -0
- package/build/cjs/blocks/ColoredText/ColoredText.d.ts +3 -0
- package/build/cjs/blocks/ColoredText/ColoredText.js +37 -0
- package/build/cjs/blocks/Feed/Feed.d.ts +3 -0
- package/build/cjs/blocks/Feed/Feed.js +183 -0
- package/build/cjs/blocks/Feed/reducer.d.ts +65 -0
- package/build/cjs/blocks/Feed/reducer.js +40 -0
- package/build/cjs/blocks/Header/Header.d.ts +3 -0
- package/build/cjs/blocks/Header/Header.js +63 -0
- package/build/cjs/blocks/Layout/Layout.css +22 -0
- package/build/cjs/blocks/Layout/Layout.d.ts +3 -0
- package/build/cjs/blocks/Layout/Layout.js +78 -0
- package/build/cjs/blocks/Media/Media.css +41 -0
- package/build/cjs/blocks/Media/Media.d.ts +3 -0
- package/build/cjs/blocks/Media/Media.js +38 -0
- package/build/cjs/blocks/Meta/Meta.css +7 -0
- package/build/cjs/blocks/Meta/Meta.d.ts +3 -0
- package/build/cjs/blocks/Meta/Meta.js +66 -0
- package/build/cjs/blocks/Suggest/Suggest.d.ts +12 -0
- package/build/cjs/blocks/Suggest/Suggest.js +61 -0
- package/build/cjs/blocks/YFM/YFM.d.ts +3 -0
- package/build/cjs/blocks/YFM/YFM.js +24 -0
- package/build/cjs/blocks/constants.d.ts +8 -0
- package/build/cjs/blocks/constants.js +8 -0
- package/build/cjs/components/ButtonWithIcon/ButtonWithIcon.css +76 -0
- package/build/cjs/components/ButtonWithIcon/ButtonWithIcon.d.ts +12 -0
- package/build/cjs/components/ButtonWithIcon/ButtonWithIcon.js +13 -0
- package/build/cjs/components/FeedHeader/FeedHeader.css +54 -0
- package/build/cjs/components/FeedHeader/FeedHeader.d.ts +8 -0
- package/build/cjs/components/FeedHeader/FeedHeader.js +24 -0
- package/build/cjs/components/FeedHeader/components/Controls/Controls.css +106 -0
- package/build/cjs/components/FeedHeader/components/Controls/Controls.d.ts +16 -0
- package/build/cjs/components/FeedHeader/components/Controls/Controls.js +106 -0
- package/build/cjs/components/FeedHeader/components/Controls/customRenders.d.ts +11 -0
- package/build/cjs/components/FeedHeader/components/Controls/customRenders.js +22 -0
- package/build/cjs/components/FeedHeader/components/CustomSelectOption/CustomSelectOption.css +14 -0
- package/build/cjs/components/FeedHeader/components/CustomSelectOption/CustomSelectOption.d.ts +8 -0
- package/build/cjs/components/FeedHeader/components/CustomSelectOption/CustomSelectOption.js +13 -0
- package/build/cjs/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.css +53 -0
- package/build/cjs/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.d.ts +11 -0
- package/build/cjs/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.js +47 -0
- package/build/cjs/components/MetaWrapper/MetaWrapper.d.ts +10 -0
- package/build/cjs/components/MetaWrapper/MetaWrapper.js +18 -0
- package/build/cjs/components/Paginator/Paginator.css +54 -0
- package/build/cjs/components/Paginator/Paginator.d.ts +2 -0
- package/build/cjs/components/Paginator/Paginator.js +118 -0
- package/build/cjs/components/Paginator/components/NavigationButton.d.ts +6 -0
- package/build/cjs/components/Paginator/components/NavigationButton.js +13 -0
- package/build/cjs/components/Paginator/components/PaginatorItem.d.ts +2 -0
- package/build/cjs/components/Paginator/components/PaginatorItem.js +15 -0
- package/build/cjs/components/Paginator/types.d.ts +29 -0
- package/build/cjs/components/Paginator/types.js +8 -0
- package/build/cjs/components/Paginator/utils.d.ts +3 -0
- package/build/cjs/components/Paginator/utils.js +32 -0
- package/build/cjs/components/PostCard/PostCard.css +85 -0
- package/build/cjs/components/PostCard/PostCard.d.ts +12 -0
- package/build/cjs/components/PostCard/PostCard.js +60 -0
- package/build/cjs/components/PostInfo/PostInfo.css +88 -0
- package/build/cjs/components/PostInfo/PostInfo.d.ts +28 -0
- package/build/cjs/components/PostInfo/PostInfo.js +55 -0
- package/build/cjs/components/PostInfo/SuggestPostInfo.d.ts +27 -0
- package/build/cjs/components/PostInfo/SuggestPostInfo.js +41 -0
- package/build/cjs/components/PostInfo/components/Date.d.ts +7 -0
- package/build/cjs/components/PostInfo/components/Date.js +36 -0
- package/build/cjs/components/PostInfo/components/ReadingTime.d.ts +7 -0
- package/build/cjs/components/PostInfo/components/ReadingTime.js +18 -0
- package/build/cjs/components/PostInfo/components/Save.d.ts +25 -0
- package/build/cjs/components/PostInfo/components/Save.js +73 -0
- package/build/cjs/components/PostInfo/components/Sharing.d.ts +7 -0
- package/build/cjs/components/PostInfo/components/Sharing.js +54 -0
- package/build/cjs/components/Posts/Posts.css +28 -0
- package/build/cjs/components/Posts/Posts.d.ts +19 -0
- package/build/cjs/components/Posts/Posts.js +32 -0
- package/build/cjs/components/PostsEmpty/PostsEmpty.css +25 -0
- package/build/cjs/components/PostsEmpty/PostsEmpty.d.ts +2 -0
- package/build/cjs/components/PostsEmpty/PostsEmpty.js +14 -0
- package/build/cjs/components/PostsError/PostError.css +30 -0
- package/build/cjs/components/PostsError/PostsError.d.ts +6 -0
- package/build/cjs/components/PostsError/PostsError.js +20 -0
- package/build/cjs/components/Search/Search.css +33 -0
- package/build/cjs/components/Search/Search.d.ts +15 -0
- package/build/cjs/components/Search/Search.js +67 -0
- package/build/cjs/components/Wrapper/Wrapper.css +32 -0
- package/build/cjs/components/Wrapper/Wrapper.d.ts +10 -0
- package/build/cjs/components/Wrapper/Wrapper.js +17 -0
- package/build/cjs/configure.d.ts +5 -0
- package/build/cjs/configure.js +8 -0
- package/build/cjs/constants.d.ts +27 -0
- package/build/cjs/constants.js +34 -0
- package/build/cjs/constructor/BlogConstructorProvider.d.ts +16 -0
- package/build/cjs/constructor/BlogConstructorProvider.js +46 -0
- package/build/cjs/constructor/blocksMap.d.ts +18 -0
- package/build/cjs/constructor/blocksMap.js +30 -0
- package/build/cjs/containers/BlogPage/BlogPage.css +21 -0
- package/build/cjs/containers/BlogPage/BlogPage.d.ts +15 -0
- package/build/cjs/containers/BlogPage/BlogPage.js +30 -0
- package/build/cjs/containers/BlogPostPage/BlogPostPage.css +251 -0
- package/build/cjs/containers/BlogPostPage/BlogPostPage.d.ts +18 -0
- package/build/cjs/containers/BlogPostPage/BlogPostPage.js +42 -0
- package/build/cjs/contexts/DeviceContext.d.ts +4 -0
- package/build/cjs/contexts/DeviceContext.js +8 -0
- package/build/cjs/contexts/FeedContext.d.ts +13 -0
- package/build/cjs/contexts/FeedContext.js +8 -0
- package/build/cjs/contexts/LikesContext.d.ts +7 -0
- package/build/cjs/contexts/LikesContext.js +8 -0
- package/build/cjs/contexts/LocaleContext.d.ts +6 -0
- package/build/cjs/contexts/LocaleContext.js +16 -0
- package/build/cjs/contexts/MobileContext.d.ts +2 -0
- package/build/cjs/contexts/MobileContext.js +8 -0
- package/build/cjs/contexts/PostPageContext.d.ts +14 -0
- package/build/cjs/contexts/PostPageContext.js +8 -0
- package/build/cjs/contexts/RouterContext.d.ts +9 -0
- package/build/cjs/contexts/RouterContext.js +8 -0
- package/build/cjs/contexts/UserContext.d.ts +18 -0
- package/build/cjs/contexts/UserContext.js +8 -0
- package/build/cjs/contexts/theme/ThemeContext.d.ts +8 -0
- package/build/cjs/contexts/theme/ThemeContext.js +13 -0
- package/build/cjs/contexts/theme/ThemeProvider.d.ts +23 -0
- package/build/cjs/contexts/theme/ThemeProvider.js +51 -0
- package/build/cjs/contexts/theme/ThemeValueContext.d.ts +7 -0
- package/build/cjs/contexts/theme/ThemeValueContext.js +11 -0
- package/build/cjs/contexts/theme/index.d.ts +6 -0
- package/build/cjs/contexts/theme/index.js +22 -0
- package/build/cjs/contexts/theme/useTheme.d.ts +2 -0
- package/build/cjs/contexts/theme/useTheme.js +13 -0
- package/build/cjs/contexts/theme/useThemeValue.d.ts +2 -0
- package/build/cjs/contexts/theme/useThemeValue.js +13 -0
- package/build/cjs/contexts/theme/withTheme.d.ts +6 -0
- package/build/cjs/contexts/theme/withTheme.js +21 -0
- package/build/cjs/contexts/theme/withThemeValue.d.ts +6 -0
- package/build/cjs/contexts/theme/withThemeValue.js +21 -0
- package/build/cjs/counters/metrika.d.ts +59 -0
- package/build/cjs/counters/metrika.js +170 -0
- package/build/cjs/counters/utils.d.ts +5 -0
- package/build/cjs/counters/utils.js +9 -0
- package/build/cjs/hooks/useIsIPhone.d.ts +1 -0
- package/build/cjs/hooks/useIsIPhone.js +10 -0
- package/build/cjs/hooks/useLikes.d.ts +15 -0
- package/build/cjs/hooks/useLikes.js +35 -0
- package/build/cjs/i18n/index.d.ts +22 -0
- package/build/cjs/i18n/index.js +74 -0
- package/build/cjs/icons/Close.d.ts +2 -0
- package/build/cjs/icons/Close.js +11 -0
- package/build/cjs/icons/DropdownArrow.d.ts +2 -0
- package/build/cjs/icons/DropdownArrow.js +11 -0
- package/build/cjs/icons/Save.d.ts +2 -0
- package/build/cjs/icons/Save.js +11 -0
- package/build/cjs/icons/SaveFilled.d.ts +2 -0
- package/build/cjs/icons/SaveFilled.js +11 -0
- package/build/cjs/icons/SearchIcon.d.ts +2 -0
- package/build/cjs/icons/SearchIcon.js +11 -0
- package/build/cjs/icons/ShareArrowUp.d.ts +2 -0
- package/build/cjs/icons/ShareArrowUp.js +11 -0
- package/build/cjs/icons/Time.d.ts +2 -0
- package/build/cjs/icons/Time.js +11 -0
- package/build/cjs/index.d.ts +7 -0
- package/build/cjs/index.js +29 -0
- package/build/cjs/internal-typings/bem-cn-lite.d.ts +17 -0
- package/build/cjs/internal-typings/global.d.ts +5 -0
- package/build/cjs/models/blocks.d.ts +84 -0
- package/build/cjs/models/blocks.js +2 -0
- package/build/cjs/models/common.d.ts +151 -0
- package/build/cjs/models/common.js +22 -0
- package/build/cjs/models/locale.d.ts +29 -0
- package/build/cjs/models/locale.js +14 -0
- package/build/cjs/models/paddings.d.ts +16 -0
- package/build/cjs/models/paddings.js +10 -0
- package/build/cjs/utils/cn.d.ts +4 -0
- package/build/cjs/utils/cn.js +12 -0
- package/build/cjs/utils/common.d.ts +42 -0
- package/build/cjs/utils/common.js +120 -0
- package/build/cjs/utils/date.d.ts +13 -0
- package/build/cjs/utils/date.js +59 -0
- package/build/cjs/utils/svg.d.ts +3 -0
- package/build/cjs/utils/svg.js +7 -0
- package/build/esm/blocks/Author/Author.css +31 -0
- package/build/esm/blocks/Author/Author.d.ts +4 -0
- package/build/esm/blocks/Author/Author.js +34 -0
- package/build/esm/blocks/Banner/Banner.css +58 -0
- package/build/esm/blocks/Banner/Banner.d.ts +4 -0
- package/build/esm/blocks/Banner/Banner.js +45 -0
- package/build/esm/blocks/CTA/CTA.css +56 -0
- package/build/esm/blocks/CTA/CTA.d.ts +4 -0
- package/build/esm/blocks/CTA/CTA.js +38 -0
- package/build/esm/blocks/ColoredText/ColoredText.css +28 -0
- package/build/esm/blocks/ColoredText/ColoredText.d.ts +4 -0
- package/build/esm/blocks/ColoredText/ColoredText.js +31 -0
- package/build/esm/blocks/Feed/Feed.d.ts +3 -0
- package/build/esm/blocks/Feed/Feed.js +153 -0
- package/build/esm/blocks/Feed/reducer.d.ts +65 -0
- package/build/esm/blocks/Feed/reducer.js +36 -0
- package/build/esm/blocks/Header/Header.d.ts +3 -0
- package/build/esm/blocks/Header/Header.js +36 -0
- package/build/esm/blocks/Layout/Layout.css +22 -0
- package/build/esm/blocks/Layout/Layout.d.ts +4 -0
- package/build/esm/blocks/Layout/Layout.js +52 -0
- package/build/esm/blocks/Media/Media.css +41 -0
- package/build/esm/blocks/Media/Media.d.ts +4 -0
- package/build/esm/blocks/Media/Media.js +32 -0
- package/build/esm/blocks/Meta/Meta.css +7 -0
- package/build/esm/blocks/Meta/Meta.d.ts +4 -0
- package/build/esm/blocks/Meta/Meta.js +40 -0
- package/build/esm/blocks/Suggest/Suggest.d.ts +12 -0
- package/build/esm/blocks/Suggest/Suggest.js +34 -0
- package/build/esm/blocks/YFM/YFM.d.ts +3 -0
- package/build/esm/blocks/YFM/YFM.js +17 -0
- package/build/esm/blocks/constants.d.ts +8 -0
- package/build/esm/blocks/constants.js +5 -0
- package/build/esm/components/ButtonWithIcon/ButtonWithIcon.css +76 -0
- package/build/esm/components/ButtonWithIcon/ButtonWithIcon.d.ts +13 -0
- package/build/esm/components/ButtonWithIcon/ButtonWithIcon.js +7 -0
- package/build/esm/components/FeedHeader/FeedHeader.css +54 -0
- package/build/esm/components/FeedHeader/FeedHeader.d.ts +9 -0
- package/build/esm/components/FeedHeader/FeedHeader.js +18 -0
- package/build/esm/components/FeedHeader/components/Controls/Controls.css +106 -0
- package/build/esm/components/FeedHeader/components/Controls/Controls.d.ts +17 -0
- package/build/esm/components/FeedHeader/components/Controls/Controls.js +77 -0
- package/build/esm/components/FeedHeader/components/Controls/customRenders.d.ts +12 -0
- package/build/esm/components/FeedHeader/components/Controls/customRenders.js +14 -0
- package/build/esm/components/FeedHeader/components/CustomSelectOption/CustomSelectOption.css +14 -0
- package/build/esm/components/FeedHeader/components/CustomSelectOption/CustomSelectOption.d.ts +9 -0
- package/build/esm/components/FeedHeader/components/CustomSelectOption/CustomSelectOption.js +7 -0
- package/build/esm/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.css +53 -0
- package/build/esm/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.d.ts +12 -0
- package/build/esm/components/FeedHeader/components/CustomSwitcher/CustomSwitcher.js +21 -0
- package/build/esm/components/MetaWrapper/MetaWrapper.d.ts +10 -0
- package/build/esm/components/MetaWrapper/MetaWrapper.js +11 -0
- package/build/esm/components/Paginator/Paginator.css +54 -0
- package/build/esm/components/Paginator/Paginator.d.ts +3 -0
- package/build/esm/components/Paginator/Paginator.js +89 -0
- package/build/esm/components/Paginator/components/NavigationButton.d.ts +7 -0
- package/build/esm/components/Paginator/components/NavigationButton.js +7 -0
- package/build/esm/components/Paginator/components/PaginatorItem.d.ts +3 -0
- package/build/esm/components/Paginator/components/PaginatorItem.js +9 -0
- package/build/esm/components/Paginator/types.d.ts +29 -0
- package/build/esm/components/Paginator/types.js +5 -0
- package/build/esm/components/Paginator/utils.d.ts +3 -0
- package/build/esm/components/Paginator/utils.js +27 -0
- package/build/esm/components/PostCard/PostCard.css +85 -0
- package/build/esm/components/PostCard/PostCard.d.ts +13 -0
- package/build/esm/components/PostCard/PostCard.js +34 -0
- package/build/esm/components/PostInfo/PostInfo.css +88 -0
- package/build/esm/components/PostInfo/PostInfo.d.ts +29 -0
- package/build/esm/components/PostInfo/PostInfo.js +29 -0
- package/build/esm/components/PostInfo/SuggestPostInfo.d.ts +28 -0
- package/build/esm/components/PostInfo/SuggestPostInfo.js +35 -0
- package/build/esm/components/PostInfo/components/Date.d.ts +8 -0
- package/build/esm/components/PostInfo/components/Date.js +10 -0
- package/build/esm/components/PostInfo/components/ReadingTime.d.ts +8 -0
- package/build/esm/components/PostInfo/components/ReadingTime.js +12 -0
- package/build/esm/components/PostInfo/components/Save.d.ts +26 -0
- package/build/esm/components/PostInfo/components/Save.js +44 -0
- package/build/esm/components/PostInfo/components/Sharing.d.ts +8 -0
- package/build/esm/components/PostInfo/components/Sharing.js +25 -0
- package/build/esm/components/Posts/Posts.css +28 -0
- package/build/esm/components/Posts/Posts.d.ts +20 -0
- package/build/esm/components/Posts/Posts.js +26 -0
- package/build/esm/components/PostsEmpty/PostsEmpty.css +25 -0
- package/build/esm/components/PostsEmpty/PostsEmpty.d.ts +3 -0
- package/build/esm/components/PostsEmpty/PostsEmpty.js +8 -0
- package/build/esm/components/PostsError/PostError.css +30 -0
- package/build/esm/components/PostsError/PostsError.d.ts +7 -0
- package/build/esm/components/PostsError/PostsError.js +14 -0
- package/build/esm/components/Search/Search.css +33 -0
- package/build/esm/components/Search/Search.d.ts +16 -0
- package/build/esm/components/Search/Search.js +41 -0
- package/build/esm/components/Wrapper/Wrapper.css +32 -0
- package/build/esm/components/Wrapper/Wrapper.d.ts +11 -0
- package/build/esm/components/Wrapper/Wrapper.js +11 -0
- package/build/esm/configure.d.ts +5 -0
- package/build/esm/configure.js +4 -0
- package/build/esm/constants.d.ts +27 -0
- package/build/esm/constants.js +31 -0
- package/build/esm/constructor/BlogConstructorProvider.d.ts +16 -0
- package/build/esm/constructor/BlogConstructorProvider.js +19 -0
- package/build/esm/constructor/blocksMap.d.ts +18 -0
- package/build/esm/constructor/blocksMap.js +28 -0
- package/build/esm/containers/BlogPage/BlogPage.css +21 -0
- package/build/esm/containers/BlogPage/BlogPage.d.ts +16 -0
- package/build/esm/containers/BlogPage/BlogPage.js +24 -0
- package/build/esm/containers/BlogPostPage/BlogPostPage.css +251 -0
- package/build/esm/containers/BlogPostPage/BlogPostPage.d.ts +19 -0
- package/build/esm/containers/BlogPostPage/BlogPostPage.js +36 -0
- package/build/esm/contexts/DeviceContext.d.ts +4 -0
- package/build/esm/contexts/DeviceContext.js +2 -0
- package/build/esm/contexts/FeedContext.d.ts +13 -0
- package/build/esm/contexts/FeedContext.js +2 -0
- package/build/esm/contexts/LikesContext.d.ts +7 -0
- package/build/esm/contexts/LikesContext.js +2 -0
- package/build/esm/contexts/LocaleContext.d.ts +6 -0
- package/build/esm/contexts/LocaleContext.js +10 -0
- package/build/esm/contexts/MobileContext.d.ts +2 -0
- package/build/esm/contexts/MobileContext.js +2 -0
- package/build/esm/contexts/PostPageContext.d.ts +14 -0
- package/build/esm/contexts/PostPageContext.js +2 -0
- package/build/esm/contexts/RouterContext.d.ts +9 -0
- package/build/esm/contexts/RouterContext.js +2 -0
- package/build/esm/contexts/UserContext.d.ts +18 -0
- package/build/esm/contexts/UserContext.js +2 -0
- package/build/esm/contexts/theme/ThemeContext.d.ts +8 -0
- package/build/esm/contexts/theme/ThemeContext.js +7 -0
- package/build/esm/contexts/theme/ThemeProvider.d.ts +23 -0
- package/build/esm/contexts/theme/ThemeProvider.js +44 -0
- package/build/esm/contexts/theme/ThemeValueContext.d.ts +7 -0
- package/build/esm/contexts/theme/ThemeValueContext.js +5 -0
- package/build/esm/contexts/theme/index.d.ts +6 -0
- package/build/esm/contexts/theme/index.js +6 -0
- package/build/esm/contexts/theme/useTheme.d.ts +2 -0
- package/build/esm/contexts/theme/useTheme.js +6 -0
- package/build/esm/contexts/theme/useThemeValue.d.ts +2 -0
- package/build/esm/contexts/theme/useThemeValue.js +6 -0
- package/build/esm/contexts/theme/withTheme.d.ts +6 -0
- package/build/esm/contexts/theme/withTheme.js +14 -0
- package/build/esm/contexts/theme/withThemeValue.d.ts +6 -0
- package/build/esm/contexts/theme/withThemeValue.js +14 -0
- package/build/esm/counters/metrika.d.ts +59 -0
- package/build/esm/counters/metrika.js +166 -0
- package/build/esm/counters/utils.d.ts +5 -0
- package/build/esm/counters/utils.js +6 -0
- package/build/esm/hooks/useIsIPhone.d.ts +1 -0
- package/build/esm/hooks/useIsIPhone.js +6 -0
- package/build/esm/hooks/useLikes.d.ts +15 -0
- package/build/esm/hooks/useLikes.js +31 -0
- package/build/esm/i18n/index.d.ts +22 -0
- package/build/esm/i18n/index.js +71 -0
- package/build/esm/icons/Close.d.ts +2 -0
- package/build/esm/icons/Close.js +4 -0
- package/build/esm/icons/DropdownArrow.d.ts +2 -0
- package/build/esm/icons/DropdownArrow.js +4 -0
- package/build/esm/icons/Save.d.ts +2 -0
- package/build/esm/icons/Save.js +4 -0
- package/build/esm/icons/SaveFilled.d.ts +2 -0
- package/build/esm/icons/SaveFilled.js +4 -0
- package/build/esm/icons/SearchIcon.d.ts +2 -0
- package/build/esm/icons/SearchIcon.js +4 -0
- package/build/esm/icons/ShareArrowUp.d.ts +2 -0
- package/build/esm/icons/ShareArrowUp.js +4 -0
- package/build/esm/icons/Time.d.ts +2 -0
- package/build/esm/icons/Time.js +4 -0
- package/build/esm/index.d.ts +7 -0
- package/build/esm/index.js +7 -0
- package/build/esm/internal-typings/bem-cn-lite.d.ts +17 -0
- package/build/esm/internal-typings/global.d.ts +5 -0
- package/build/esm/models/blocks.d.ts +84 -0
- package/build/esm/models/blocks.js +1 -0
- package/build/esm/models/common.d.ts +151 -0
- package/build/esm/models/common.js +19 -0
- package/build/esm/models/locale.d.ts +29 -0
- package/build/esm/models/locale.js +11 -0
- package/build/esm/models/paddings.d.ts +16 -0
- package/build/esm/models/paddings.js +7 -0
- package/build/esm/utils/cn.d.ts +4 -0
- package/build/esm/utils/cn.js +5 -0
- package/build/esm/utils/common.d.ts +42 -0
- package/build/esm/utils/common.js +107 -0
- package/build/esm/utils/date.d.ts +13 -0
- package/build/esm/utils/date.js +55 -0
- package/build/esm/utils/svg.d.ts +3 -0
- package/build/esm/utils/svg.js +4 -0
- package/package.json +140 -0
- package/server/data/config.d.ts +32 -0
- package/server/data/config.js +39 -0
- package/server/data/contentFilter.d.ts +27 -0
- package/server/data/contentFilter.js +61 -0
- package/server/data/createReadableContent.d.ts +17 -0
- package/server/data/createReadableContent.js +47 -0
- package/server/data/sanitizeMeta.d.ts +24 -0
- package/server/data/sanitizeMeta.js +18 -0
- package/server/data/transformPageContent.d.ts +21 -0
- package/server/data/transformPageContent.js +35 -0
- package/server/data/transformPost.d.ts +11 -0
- package/server/data/transformPost.js +34 -0
- package/server/index.d.ts +4 -0
- package/server/index.js +11 -0
- package/server/models/blocks.d.ts +84 -0
- package/server/models/blocks.js +2 -0
- package/server/models/common.d.ts +151 -0
- package/server/models/common.js +22 -0
- package/server/models/locale.d.ts +29 -0
- package/server/models/locale.js +14 -0
- package/server/models/paddings.d.ts +16 -0
- package/server/models/paddings.js +10 -0
- package/styles/fonts.css +195 -0
- package/styles/fonts.scss +223 -0
- package/styles/mixins.css +2 -0
- package/styles/mixins.scss +59 -0
- package/styles/root.css +21 -0
- package/styles/root.scss +25 -0
- package/styles/storybook/common.scss +29 -0
- package/styles/storybook/index.scss +21 -0
- package/styles/storybook/palette.scss +75 -0
- package/styles/storybook/typography.scss +139 -0
- package/styles/styles.css +196 -0
- package/styles/styles.scss +2 -0
- package/styles/variables.css +0 -0
- package/styles/variables.scss +7 -0
- package/styles/yfm.css +103 -0
- package/styles/yfm.scss +123 -0
@@ -0,0 +1,53 @@
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
2
|
+
unpredictable css rules order in build */
|
3
|
+
.bc-feed-custom-switcher__custom-switcher {
|
4
|
+
font-size: var(--yc-text-body-2-font-size);
|
5
|
+
line-height: var(--yc-text-body-2-line-height);
|
6
|
+
position: relative;
|
7
|
+
display: flex;
|
8
|
+
flex-direction: row;
|
9
|
+
align-items: center;
|
10
|
+
background-color: var(--yc-color-base-background);
|
11
|
+
border: 1px solid var(--yc-color-base-background);
|
12
|
+
border-radius: 10px;
|
13
|
+
width: 100%;
|
14
|
+
line-height: 42px;
|
15
|
+
}
|
16
|
+
.bc-feed-custom-switcher__custom-switcher + .yc-popup-wrapper.yc-popup-wrapper_open {
|
17
|
+
position: absolute !important;
|
18
|
+
inset: auto !important;
|
19
|
+
transform: translate3d(0, 4px, 0) !important;
|
20
|
+
}
|
21
|
+
.bc-feed-custom-switcher__custom-switcher:hover {
|
22
|
+
border-color: var(--yc-color-base-generic-hover);
|
23
|
+
cursor: pointer;
|
24
|
+
}
|
25
|
+
.bc-feed-custom-switcher__custom-switcher-element_content {
|
26
|
+
display: inline-block;
|
27
|
+
flex-grow: 1;
|
28
|
+
overflow: hidden;
|
29
|
+
text-overflow: ellipsis;
|
30
|
+
white-space: nowrap;
|
31
|
+
padding: 0 12px;
|
32
|
+
}
|
33
|
+
.bc-feed-custom-switcher__custom-switcher-element_counter {
|
34
|
+
align-items: center;
|
35
|
+
height: 20px;
|
36
|
+
padding: 0 6px;
|
37
|
+
background-color: var(--yc-color-base-selection);
|
38
|
+
border-radius: 4px;
|
39
|
+
transition: backgound-color 0.1s linear;
|
40
|
+
font-size: var(--yc-text-body-1-font-size);
|
41
|
+
line-height: var(--yc-text-body-1-line-height);
|
42
|
+
}
|
43
|
+
.bc-feed-custom-switcher__custom-switcher-element_arrow {
|
44
|
+
display: flex;
|
45
|
+
align-items: center;
|
46
|
+
justify-content: center;
|
47
|
+
min-width: 30px;
|
48
|
+
height: 100%;
|
49
|
+
}
|
50
|
+
.bc-feed-custom-switcher__switcher-arrow {
|
51
|
+
width: 16px;
|
52
|
+
height: 16px;
|
53
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { SelectProps } from '@gravity-ui/uikit';
|
2
|
+
import { SelectItem } from '../Controls/Controls';
|
3
|
+
type RenderControlParameters = Partial<Parameters<Required<SelectProps>['renderControl']>[0]>;
|
4
|
+
export type CustomSwitcherProps = {
|
5
|
+
initial: (string | number | null)[];
|
6
|
+
defaultLabel: string;
|
7
|
+
list: SelectItem[];
|
8
|
+
controlRef: RenderControlParameters['ref'];
|
9
|
+
} & Omit<RenderControlParameters, 'ref'>;
|
10
|
+
export declare const CustomSwitcher: ({ initial, defaultLabel, list, onClick, controlRef, }: CustomSwitcherProps) => JSX.Element;
|
11
|
+
export {};
|
@@ -0,0 +1,47 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
+
exports.CustomSwitcher = void 0;
|
27
|
+
const react_1 = __importStar(require("react"));
|
28
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
29
|
+
const DropdownArrow_1 = require("../../../../icons/DropdownArrow");
|
30
|
+
const cn_1 = require("../../../../utils/cn");
|
31
|
+
const b = (0, cn_1.block)('feed-custom-switcher');
|
32
|
+
const ICON_SIZE = 12;
|
33
|
+
const CustomSwitcher = ({ initial, defaultLabel, list, onClick, controlRef, }) => {
|
34
|
+
const itemsNames = (0, react_1.useMemo)(() => {
|
35
|
+
const items = list
|
36
|
+
.filter((item) => initial.includes(item.value))
|
37
|
+
.map((item) => item.content);
|
38
|
+
return items.length ? items : [defaultLabel];
|
39
|
+
}, [defaultLabel, initial, list]);
|
40
|
+
const hasCounter = itemsNames.length > 1;
|
41
|
+
return (react_1.default.createElement("div", { className: b('custom-switcher'), onClick: onClick, ref: controlRef },
|
42
|
+
react_1.default.createElement("div", { className: b('custom-switcher-element', { content: true }) }, itemsNames === null || itemsNames === void 0 ? void 0 : itemsNames.join(', ')),
|
43
|
+
hasCounter && (react_1.default.createElement("div", { className: b('custom-switcher-element', { counter: true }) }, itemsNames.length)),
|
44
|
+
react_1.default.createElement("div", { className: b('custom-switcher-element', { arrow: true }) },
|
45
|
+
react_1.default.createElement(uikit_1.Icon, { data: DropdownArrow_1.DropdownArrow, size: ICON_SIZE, className: b('switcher-arrow') }))));
|
46
|
+
};
|
47
|
+
exports.CustomSwitcher = CustomSwitcher;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { MetaProps } from '../../models/common';
|
2
|
+
/**
|
3
|
+
* Wrapper on meta data of page
|
4
|
+
*
|
5
|
+
* @param needHelmetWrapper - component needs helmet wrapper
|
6
|
+
* @param metaComponent - meta data component
|
7
|
+
*
|
8
|
+
* @returns jsx
|
9
|
+
*/
|
10
|
+
export declare const MetaWrapper: ({ needHelmetWrapper, metaComponent }: MetaProps) => JSX.Element;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.MetaWrapper = void 0;
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const react_helmet_1 = require("react-helmet");
|
9
|
+
/**
|
10
|
+
* Wrapper on meta data of page
|
11
|
+
*
|
12
|
+
* @param needHelmetWrapper - component needs helmet wrapper
|
13
|
+
* @param metaComponent - meta data component
|
14
|
+
*
|
15
|
+
* @returns jsx
|
16
|
+
*/
|
17
|
+
const MetaWrapper = ({ needHelmetWrapper = false, metaComponent }) => needHelmetWrapper ? react_1.default.createElement(react_helmet_1.Helmet, null, metaComponent) : metaComponent;
|
18
|
+
exports.MetaWrapper = MetaWrapper;
|
@@ -0,0 +1,54 @@
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
2
|
+
unpredictable css rules order in build */
|
3
|
+
.bc-paginator {
|
4
|
+
margin: 0;
|
5
|
+
padding: 0;
|
6
|
+
list-style: none;
|
7
|
+
display: flex;
|
8
|
+
align-items: center;
|
9
|
+
}
|
10
|
+
.bc-paginator__item {
|
11
|
+
display: inline-flex;
|
12
|
+
align-items: center;
|
13
|
+
justify-content: center;
|
14
|
+
min-width: 44px;
|
15
|
+
min-height: 44px;
|
16
|
+
margin-left: 4px;
|
17
|
+
padding: 12px 0px;
|
18
|
+
color: var(--yc-color-text-primary);
|
19
|
+
font-size: var(--yc-text-body-2-font-size);
|
20
|
+
line-height: var(--yc-text-body-2-line-height);
|
21
|
+
}
|
22
|
+
.bc-paginator__item_type_page {
|
23
|
+
--bc-border-radius: 10px;
|
24
|
+
width: 44px;
|
25
|
+
height: 44px;
|
26
|
+
cursor: pointer;
|
27
|
+
border-radius: var(--bc-border-radius);
|
28
|
+
}
|
29
|
+
.bc-paginator__item_type_page:hover {
|
30
|
+
background: var(--yc-color-base-simple-hover);
|
31
|
+
}
|
32
|
+
.bc-paginator__item_type_page.bc-paginator__item_active {
|
33
|
+
background: var(--yc-color-base-simple-hover);
|
34
|
+
cursor: default;
|
35
|
+
}
|
36
|
+
.bc-paginator__pagination {
|
37
|
+
display: flex;
|
38
|
+
flex-direction: row;
|
39
|
+
justify-content: center;
|
40
|
+
align-items: center;
|
41
|
+
width: 100%;
|
42
|
+
}
|
43
|
+
@media (max-width: 577px) {
|
44
|
+
.bc-paginator__pagination {
|
45
|
+
flex-direction: column;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
.bc-paginator__pagination-block {
|
49
|
+
display: flex;
|
50
|
+
flex-direction: row;
|
51
|
+
justify-content: center;
|
52
|
+
align-items: center;
|
53
|
+
margin-bottom: 4px;
|
54
|
+
}
|
@@ -0,0 +1,118 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
26
|
+
var t = {};
|
27
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
28
|
+
t[p] = s[p];
|
29
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
30
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
31
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
32
|
+
t[p[i]] = s[p[i]];
|
33
|
+
}
|
34
|
+
return t;
|
35
|
+
};
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
38
|
+
};
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
40
|
+
exports.Paginator = void 0;
|
41
|
+
const react_1 = __importStar(require("react"));
|
42
|
+
const constants_1 = require("../../constants");
|
43
|
+
const metrika_js_1 = __importDefault(require("../../counters/metrika.js"));
|
44
|
+
const utils_1 = require("../../counters/utils");
|
45
|
+
const utils_2 = require("./utils");
|
46
|
+
const types_1 = require("./types");
|
47
|
+
const cn_1 = require("../../utils/cn");
|
48
|
+
const NavigationButton_1 = require("./components/NavigationButton");
|
49
|
+
const PaginatorItem_1 = require("./components/PaginatorItem");
|
50
|
+
const b = (0, cn_1.block)('paginator');
|
51
|
+
const DEFAULT_PAGE_COUNT_FOR_SHOW_SUPPORT_BUTTONS = 6;
|
52
|
+
const Paginator = ({ itemsPerPage, totalItems, maxPages, page, className, loading, onPageChange, pageCountForShowSupportButtons = DEFAULT_PAGE_COUNT_FOR_SHOW_SUPPORT_BUTTONS, }) => {
|
53
|
+
const [pagesCount, setPagesCount] = (0, react_1.useState)((0, utils_2.getPagesCount)({ itemsPerPage, totalItems, maxPages }));
|
54
|
+
(0, react_1.useEffect)(() => {
|
55
|
+
const count = (0, utils_2.getPagesCount)({ itemsPerPage, totalItems, maxPages });
|
56
|
+
setPagesCount(count);
|
57
|
+
}, [itemsPerPage, totalItems, maxPages]);
|
58
|
+
const handlePageChange = (pageIndex) => onPageChange === null || onPageChange === void 0 ? void 0 : onPageChange(pageIndex);
|
59
|
+
const isShowSupportButtons = (0, react_1.useMemo)(() => pagesCount > pageCountForShowSupportButtons, [pageCountForShowSupportButtons, pagesCount]);
|
60
|
+
if (pagesCount <= 1) {
|
61
|
+
return null;
|
62
|
+
}
|
63
|
+
const handleArrowClick = (type) => {
|
64
|
+
let newPage = page;
|
65
|
+
if (type === 'prev' && page > 1) {
|
66
|
+
metrika_js_1.default.reachGoal(utils_1.MetrikaCounter.CrossSite, constants_1.BlogMetrikaGoalIds.home);
|
67
|
+
newPage = 1;
|
68
|
+
}
|
69
|
+
else if (type === 'next' && page < pagesCount) {
|
70
|
+
metrika_js_1.default.reachGoal(utils_1.MetrikaCounter.CrossSite, constants_1.BlogMetrikaGoalIds.next);
|
71
|
+
newPage = page + 1;
|
72
|
+
}
|
73
|
+
if (newPage !== page) {
|
74
|
+
handlePageChange(newPage);
|
75
|
+
}
|
76
|
+
};
|
77
|
+
const handlePageClick = (index) => {
|
78
|
+
if (index !== page && typeof index === 'number') {
|
79
|
+
metrika_js_1.default.reachGoal(utils_1.MetrikaCounter.CrossSite, constants_1.BlogMetrikaGoalIds.page, { page: index });
|
80
|
+
handlePageChange(index);
|
81
|
+
}
|
82
|
+
};
|
83
|
+
const paginatorItems = (0, utils_2.getPageConfigs)({ page, pagesCount, handlePageClick });
|
84
|
+
if (page > 1 && isShowSupportButtons) {
|
85
|
+
paginatorItems.unshift({
|
86
|
+
key: types_1.ArrowType.Prev,
|
87
|
+
dataKey: types_1.ArrowType.Prev,
|
88
|
+
mods: { type: types_1.ArrowType.Prev },
|
89
|
+
onClick: handleArrowClick,
|
90
|
+
content: react_1.default.createElement(NavigationButton_1.NavigationButton, { arrowType: types_1.ArrowType.Prev }),
|
91
|
+
});
|
92
|
+
}
|
93
|
+
if (page < pagesCount && isShowSupportButtons) {
|
94
|
+
paginatorItems.push({
|
95
|
+
key: types_1.ArrowType.Next,
|
96
|
+
dataKey: types_1.ArrowType.Next,
|
97
|
+
mods: { type: types_1.ArrowType.Next },
|
98
|
+
onClick: handleArrowClick,
|
99
|
+
content: react_1.default.createElement(NavigationButton_1.NavigationButton, { arrowType: types_1.ArrowType.Next }),
|
100
|
+
});
|
101
|
+
}
|
102
|
+
const renderPaginatorItem = (item) => {
|
103
|
+
const { key } = item, rest = __rest(item, ["key"]);
|
104
|
+
return react_1.default.createElement(PaginatorItem_1.PaginatorItem, Object.assign({ key: `page_${key}` }, rest, { loading: loading }));
|
105
|
+
};
|
106
|
+
return (react_1.default.createElement("div", { className: b('pagination') },
|
107
|
+
page > 1 && (react_1.default.createElement("div", { className: b('pagination-block') },
|
108
|
+
react_1.default.createElement("ul", { className: b(null, className) }, paginatorItems.slice(0, 1).map(renderPaginatorItem)))),
|
109
|
+
react_1.default.createElement("div", { className: b('pagination-block') },
|
110
|
+
react_1.default.createElement("ul", { className: b(null, className) }, paginatorItems
|
111
|
+
.slice(page > 1 ? 1 : 0, page < pagesCount ? paginatorItems.length - 1 : paginatorItems.length)
|
112
|
+
.map(renderPaginatorItem))),
|
113
|
+
page < pagesCount && (react_1.default.createElement("div", { className: b('pagination-block') },
|
114
|
+
react_1.default.createElement("ul", { className: b(null, className) }, paginatorItems
|
115
|
+
.slice(paginatorItems.length - 1, paginatorItems.length)
|
116
|
+
.map(renderPaginatorItem))))));
|
117
|
+
};
|
118
|
+
exports.Paginator = Paginator;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.NavigationButton = void 0;
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const types_1 = require("../types");
|
9
|
+
const i18n_1 = require("../../../i18n");
|
10
|
+
const cn_1 = require("../../../utils/cn");
|
11
|
+
const b = (0, cn_1.block)('paginator');
|
12
|
+
const NavigationButton = ({ arrowType, disabled }) => disabled ? null : (react_1.default.createElement("div", { className: b('icon') }, arrowType === types_1.ArrowType.Prev ? (0, i18n_1.i18)(i18n_1.Keyset.ButtonBegin) : (0, i18n_1.i18)(i18n_1.Keyset.ButtonFarther)));
|
13
|
+
exports.NavigationButton = NavigationButton;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.PaginatorItem = void 0;
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
9
|
+
const cn_1 = require("../../../utils/cn");
|
10
|
+
const b = (0, cn_1.block)('paginator');
|
11
|
+
const PaginatorItem = ({ dataKey, mods, content, onClick, loading = false, }) => {
|
12
|
+
const itemKey = Number(dataKey) > 0 ? Number(dataKey) : dataKey;
|
13
|
+
return (react_1.default.createElement(uikit_1.Button, { view: "flat", size: "xl", className: b('item', mods), onClick: () => onClick === null || onClick === void 0 ? void 0 : onClick(itemKey), loading: loading && Boolean(mods.active) }, content));
|
14
|
+
};
|
15
|
+
exports.PaginatorItem = PaginatorItem;
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import { ReactNode } from 'react';
|
2
|
+
import { Modifications } from 'bem-cn-lite';
|
3
|
+
import { ClassNameProps } from '../../models/common';
|
4
|
+
export interface PaginatorItemProps {
|
5
|
+
key: string | ArrowType;
|
6
|
+
dataKey: string | ArrowType;
|
7
|
+
mods: Modifications;
|
8
|
+
content: ReactNode;
|
9
|
+
onClick?: (key: number | ArrowType) => void;
|
10
|
+
loading?: boolean;
|
11
|
+
}
|
12
|
+
export type PaginatorProps = {
|
13
|
+
page: number;
|
14
|
+
totalItems: number;
|
15
|
+
itemsPerPage: number;
|
16
|
+
maxPages: number;
|
17
|
+
loading: boolean;
|
18
|
+
onPageChange: (page: number) => void;
|
19
|
+
pageCountForShowSupportButtons?: number;
|
20
|
+
} & ClassNameProps;
|
21
|
+
export declare enum ArrowType {
|
22
|
+
Prev = "prev",
|
23
|
+
Next = "next"
|
24
|
+
}
|
25
|
+
export type GetPageConfigParams = {
|
26
|
+
page: number;
|
27
|
+
pagesCount: number;
|
28
|
+
handlePageClick: (key: number | ArrowType) => void;
|
29
|
+
};
|
@@ -0,0 +1,8 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ArrowType = void 0;
|
4
|
+
var ArrowType;
|
5
|
+
(function (ArrowType) {
|
6
|
+
ArrowType["Prev"] = "prev";
|
7
|
+
ArrowType["Next"] = "next";
|
8
|
+
})(ArrowType = exports.ArrowType || (exports.ArrowType = {}));
|
@@ -0,0 +1,3 @@
|
|
1
|
+
import { GetPageConfigParams, PaginatorItemProps, PaginatorProps } from './types';
|
2
|
+
export declare const getPageConfigs: ({ page, pagesCount, handlePageClick }: GetPageConfigParams) => PaginatorItemProps[];
|
3
|
+
export declare const getPagesCount: (props: Pick<PaginatorProps, 'totalItems' | 'itemsPerPage' | 'maxPages'>) => number;
|
@@ -0,0 +1,32 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getPagesCount = exports.getPageConfigs = void 0;
|
4
|
+
const MAX_VISIBLE_PAGES = 5;
|
5
|
+
const getPageConfigs = ({ page, pagesCount, handlePageClick }) => {
|
6
|
+
const paginatorItems = [];
|
7
|
+
// it is calculating the middle of visible pages below
|
8
|
+
const pageOffset = (MAX_VISIBLE_PAGES - 1) / 2;
|
9
|
+
let startPage = page - pageOffset;
|
10
|
+
let endPage = page + pageOffset;
|
11
|
+
if (startPage < 1) {
|
12
|
+
endPage = page + pageOffset - startPage + 1;
|
13
|
+
startPage = 1;
|
14
|
+
}
|
15
|
+
endPage = Math.min(endPage, pagesCount);
|
16
|
+
for (let i = startPage; i <= endPage; i++) {
|
17
|
+
paginatorItems.push({
|
18
|
+
key: String(i),
|
19
|
+
dataKey: String(i),
|
20
|
+
mods: { type: 'page', active: page === i },
|
21
|
+
onClick: handlePageClick,
|
22
|
+
content: i,
|
23
|
+
});
|
24
|
+
}
|
25
|
+
return paginatorItems;
|
26
|
+
};
|
27
|
+
exports.getPageConfigs = getPageConfigs;
|
28
|
+
const getPagesCount = (props) => {
|
29
|
+
const totalPages = Math.ceil(props.totalItems / props.itemsPerPage);
|
30
|
+
return Math.min(totalPages, props.maxPages);
|
31
|
+
};
|
32
|
+
exports.getPagesCount = getPagesCount;
|
@@ -0,0 +1,85 @@
|
|
1
|
+
.bc-post-card__title_size_m, .bc-post-card__title_size_s {
|
2
|
+
margin: 0;
|
3
|
+
}
|
4
|
+
|
5
|
+
/* use this for style redefinitions to awoid problems with
|
6
|
+
unpredictable css rules order in build */
|
7
|
+
.bc-post-card__card {
|
8
|
+
display: flex;
|
9
|
+
flex-direction: column;
|
10
|
+
min-height: 400px;
|
11
|
+
}
|
12
|
+
.bc-post-card__card_fullWidth {
|
13
|
+
flex-direction: row;
|
14
|
+
}
|
15
|
+
@media (max-width: 1081px) {
|
16
|
+
.bc-post-card__card_fullWidth {
|
17
|
+
flex-direction: column;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
.bc-post-card__header_fullWidth {
|
21
|
+
width: 66%;
|
22
|
+
min-height: 480px;
|
23
|
+
height: 100%;
|
24
|
+
}
|
25
|
+
@media (max-width: 1081px) {
|
26
|
+
.bc-post-card__header_fullWidth {
|
27
|
+
width: 100%;
|
28
|
+
min-height: auto;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
.bc-post-card__title {
|
32
|
+
margin-bottom: 8px;
|
33
|
+
}
|
34
|
+
.bc-post-card__title_size_s {
|
35
|
+
font-size: var(--yc-text-header-1-font-size);
|
36
|
+
line-height: var(--yc-text-header-1-line-height);
|
37
|
+
color: var(--pc-text-header-color);
|
38
|
+
font-weight: var(--yc-text-accent-font-weight);
|
39
|
+
}
|
40
|
+
.bc-post-card__title_size_m {
|
41
|
+
font-size: var(--yc-text-display-2-font-size);
|
42
|
+
line-height: var(--yc-text-display-2-line-height);
|
43
|
+
color: var(--pc-text-header-color);
|
44
|
+
font-weight: var(--yc-text-accent-font-weight);
|
45
|
+
}
|
46
|
+
@media (max-width: 576px) {
|
47
|
+
.bc-post-card__title_size_m {
|
48
|
+
font-size: var(--yc-text-display-1-font-size);
|
49
|
+
line-height: var(--yc-text-display-1-line-height);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
.bc-post-card__image-container {
|
53
|
+
height: 156px;
|
54
|
+
}
|
55
|
+
.bc-post-card__tag {
|
56
|
+
color: var(--yc-color-text-secondary);
|
57
|
+
font-weight: var(--yc-text-accent-font-weight);
|
58
|
+
}
|
59
|
+
.bc-post-card__tag_size_s {
|
60
|
+
font-size: var(--yc-text-body-2-font-size);
|
61
|
+
line-height: var(--yc-text-body-2-line-height);
|
62
|
+
padding-bottom: 4px;
|
63
|
+
}
|
64
|
+
.bc-post-card__tag_size_m {
|
65
|
+
font-size: var(--yc-text-body-3-font-size);
|
66
|
+
line-height: var(--yc-text-body-3-line-height);
|
67
|
+
padding-bottom: 8px;
|
68
|
+
}
|
69
|
+
.bc-post-card__description {
|
70
|
+
word-wrap: break-word;
|
71
|
+
overflow: hidden;
|
72
|
+
text-overflow: ellipsis;
|
73
|
+
max-height: 96px;
|
74
|
+
white-space: initial;
|
75
|
+
color: var(--yc-color-text-primary);
|
76
|
+
}
|
77
|
+
@supports (-webkit-line-clamp: 5) {
|
78
|
+
.bc-post-card__description {
|
79
|
+
max-height: auto;
|
80
|
+
-webkit-line-clamp: 5;
|
81
|
+
}
|
82
|
+
}
|
83
|
+
.bc-post-card__description_size_m {
|
84
|
+
max-height: 128px;
|
85
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { MetrikaGoal } from '@gravity-ui/page-constructor';
|
3
|
+
import { PostData } from '../../models/common';
|
4
|
+
type PostCardProps = {
|
5
|
+
post: PostData;
|
6
|
+
fullWidth?: boolean;
|
7
|
+
showTag?: boolean;
|
8
|
+
size?: 's' | 'm';
|
9
|
+
metrikaGoals?: MetrikaGoal;
|
10
|
+
};
|
11
|
+
export declare const PostCard: React.FC<PostCardProps>;
|
12
|
+
export {};
|
@@ -0,0 +1,60 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
+
exports.PostCard = void 0;
|
27
|
+
const react_1 = __importStar(require("react"));
|
28
|
+
const page_constructor_1 = require("@gravity-ui/page-constructor");
|
29
|
+
const LikesContext_1 = require("../../contexts/LikesContext");
|
30
|
+
const SuggestPostInfo_1 = require("../PostInfo/SuggestPostInfo");
|
31
|
+
const cn_1 = require("../../utils/cn");
|
32
|
+
const b = (0, cn_1.block)('post-card');
|
33
|
+
const PostCard = ({ post, metrikaGoals, fullWidth = false, size = 's', showTag = false, }) => {
|
34
|
+
var _a;
|
35
|
+
const { title: postTitle, htmlTitle, textTitle, blogPostId, id, date, readingTime, hasUserLike, likes, image, description, tags, url, } = post;
|
36
|
+
const title = postTitle || textTitle || htmlTitle;
|
37
|
+
const { toggleLike, hasLikes } = (0, react_1.useContext)(LikesContext_1.LikesContext);
|
38
|
+
const likesProps = (0, react_1.useMemo)(() => hasLikes
|
39
|
+
? {
|
40
|
+
hasUserLike,
|
41
|
+
likesCount: likes,
|
42
|
+
toggleLike,
|
43
|
+
}
|
44
|
+
: undefined, [hasUserLike, likes, toggleLike, hasLikes]);
|
45
|
+
return (react_1.default.createElement(page_constructor_1.CardBase, { url: url, metrikaGoals: metrikaGoals, className: b('card', { fullWidth }) },
|
46
|
+
react_1.default.createElement(page_constructor_1.CardBase.Header, { image: image, className: b('header', { fullWidth }) },
|
47
|
+
react_1.default.createElement("div", { className: b('image-container'), "data-qa": "blog-suggest-header" })),
|
48
|
+
react_1.default.createElement(page_constructor_1.CardBase.Content, null,
|
49
|
+
showTag && ((_a = tags === null || tags === void 0 ? void 0 : tags[0]) === null || _a === void 0 ? void 0 : _a.name) && (react_1.default.createElement("div", { className: b('tag', { size }) }, tags[0].name)),
|
50
|
+
title && (react_1.default.createElement("h4", { className: b('title', { size }) },
|
51
|
+
react_1.default.createElement("span", null,
|
52
|
+
react_1.default.createElement(page_constructor_1.HTML, null, title)))),
|
53
|
+
description && (react_1.default.createElement(page_constructor_1.YFMWrapper, { className: b('description'), content: description, modifiers: {
|
54
|
+
blog: size === 'm',
|
55
|
+
blogCard: true,
|
56
|
+
} }))),
|
57
|
+
react_1.default.createElement(page_constructor_1.CardBase.Footer, null,
|
58
|
+
react_1.default.createElement(SuggestPostInfo_1.SuggestPostInfo, { postId: blogPostId || id, date: date, readingTime: readingTime, hasUserLike: hasUserLike, likes: likesProps, size: size, dataQa: "blog-suggest-block" }))));
|
59
|
+
};
|
60
|
+
exports.PostCard = PostCard;
|