@gravity-ui/blog-constructor 1.0.0-aplha.0
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 +107 -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 +107 -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,88 @@
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
2
|
+
unpredictable css rules order in build */
|
3
|
+
.bc-post-info__item {
|
4
|
+
font-size: var(--yc-text-body-2-font-size);
|
5
|
+
line-height: var(--yc-text-body-2-line-height);
|
6
|
+
display: flex;
|
7
|
+
padding-right: 24px;
|
8
|
+
padding-top: 12px;
|
9
|
+
flex-wrap: nowrap;
|
10
|
+
align-items: center;
|
11
|
+
}
|
12
|
+
.bc-post-info__item_size_s {
|
13
|
+
font-size: var(--yc-text-body-2-font-size);
|
14
|
+
line-height: var(--yc-text-body-2-line-height);
|
15
|
+
}
|
16
|
+
.bc-post-info__item_size_m {
|
17
|
+
font-size: var(--yc-text-body-3-font-size);
|
18
|
+
line-height: var(--yc-text-body-3-line-height);
|
19
|
+
}
|
20
|
+
.bc-post-info__item:last-child {
|
21
|
+
font-size: var(--yc-text-body-2-font-size);
|
22
|
+
line-height: var(--yc-text-body-2-line-height);
|
23
|
+
display: flex;
|
24
|
+
padding-right: 0px;
|
25
|
+
padding-top: 12px;
|
26
|
+
flex-wrap: nowrap;
|
27
|
+
align-items: center;
|
28
|
+
}
|
29
|
+
.bc-post-info__switcher {
|
30
|
+
color: var(--yc-color-text-secondary);
|
31
|
+
}
|
32
|
+
.bc-post-info__switcher:hover {
|
33
|
+
color: var(--yc-color-text-primary);
|
34
|
+
}
|
35
|
+
.bc-post-info__switcher_theme_dark {
|
36
|
+
color: var(--yc-color-text-light-secondary);
|
37
|
+
}
|
38
|
+
.bc-post-info__switcher_theme_dark.yc-share-tooltip__container, .bc-post-info__switcher_theme_dark.yc-share-popover__container {
|
39
|
+
color: var(--yc-color-text-light-secondary);
|
40
|
+
}
|
41
|
+
.bc-post-info__switcher_theme_dark:hover {
|
42
|
+
color: var(--yc-color-text-light-primary);
|
43
|
+
}
|
44
|
+
.bc-post-info__switcher_theme_dark:hover.yc-share-tooltip__container, .bc-post-info__switcher_theme_dark:hover.yc-share-popover__container {
|
45
|
+
color: var(--yc-color-text-light-primary);
|
46
|
+
}
|
47
|
+
.bc-post-info__container {
|
48
|
+
display: flex;
|
49
|
+
align-items: flex-start;
|
50
|
+
flex-wrap: wrap;
|
51
|
+
padding-top: 12px;
|
52
|
+
color: var(--yc-color-text-secondary);
|
53
|
+
}
|
54
|
+
.bc-post-info__container_theme_dark {
|
55
|
+
color: var(--yc-color-text-light-secondary);
|
56
|
+
}
|
57
|
+
.bc-post-info__icon {
|
58
|
+
margin-right: 6px;
|
59
|
+
display: flex;
|
60
|
+
align-items: center;
|
61
|
+
}
|
62
|
+
.bc-post-info__title {
|
63
|
+
width: auto;
|
64
|
+
overflow: hidden;
|
65
|
+
}
|
66
|
+
.bc-post-info__title_cursor {
|
67
|
+
cursor: pointer;
|
68
|
+
}
|
69
|
+
.bc-post-info__content {
|
70
|
+
display: flex;
|
71
|
+
}
|
72
|
+
.bc-post-info__content_cursor {
|
73
|
+
cursor: pointer;
|
74
|
+
}
|
75
|
+
.bc-post-info__content_cursor:hover {
|
76
|
+
color: var(--yc-color-text-primary);
|
77
|
+
}
|
78
|
+
.bc-post-info__content_cursor.bc-post-info__content_theme_dark:hover {
|
79
|
+
color: var(--yc-color-text-light-primary);
|
80
|
+
}
|
81
|
+
.bc-post-info__likes {
|
82
|
+
display: flex;
|
83
|
+
}
|
84
|
+
.bc-post-info__suggest-container {
|
85
|
+
display: flex;
|
86
|
+
flex-grow: 1;
|
87
|
+
flex-wrap: wrap;
|
88
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { PostData } from '../../models/common';
|
3
|
+
export type BlogMetrikaGoals = {
|
4
|
+
sharing?: string;
|
5
|
+
save?: string;
|
6
|
+
};
|
7
|
+
type PostInfoProps = {
|
8
|
+
postId: PostData['id'];
|
9
|
+
readingTime: PostData['readingTime'];
|
10
|
+
date: PostData['date'];
|
11
|
+
theme?: 'light' | 'dark';
|
12
|
+
metrikaGoals?: BlogMetrikaGoals;
|
13
|
+
dataQa?: string;
|
14
|
+
};
|
15
|
+
/**
|
16
|
+
* Blog post info panel component
|
17
|
+
*
|
18
|
+
* @param postId - post id
|
19
|
+
* @param readingTime - post reading time
|
20
|
+
* @param date - post create date
|
21
|
+
* @param theme - theme name
|
22
|
+
* @param metrikaGoals - metrika goals name
|
23
|
+
* @param dataQa - test-attr
|
24
|
+
*
|
25
|
+
* @returns jsx
|
26
|
+
*/
|
27
|
+
export declare const PostInfo: React.FC<PostInfoProps>;
|
28
|
+
export {};
|
@@ -0,0 +1,55 @@
|
|
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.PostInfo = void 0;
|
27
|
+
const react_1 = __importStar(require("react"));
|
28
|
+
const PostPageContext_1 = require("../../contexts/PostPageContext");
|
29
|
+
const Date_1 = require("./components/Date");
|
30
|
+
const ReadingTime_1 = require("./components/ReadingTime");
|
31
|
+
const Sharing_1 = require("./components/Sharing");
|
32
|
+
const Save_1 = require("./components/Save");
|
33
|
+
const cn_1 = require("../../utils/cn");
|
34
|
+
const b = (0, cn_1.block)('post-info');
|
35
|
+
/**
|
36
|
+
* Blog post info panel component
|
37
|
+
*
|
38
|
+
* @param postId - post id
|
39
|
+
* @param readingTime - post reading time
|
40
|
+
* @param date - post create date
|
41
|
+
* @param theme - theme name
|
42
|
+
* @param metrikaGoals - metrika goals name
|
43
|
+
* @param dataQa - test-attr
|
44
|
+
*
|
45
|
+
* @returns jsx
|
46
|
+
*/
|
47
|
+
const PostInfo = ({ date, readingTime, postId, theme = 'light', metrikaGoals, dataQa, }) => {
|
48
|
+
const { likes } = (0, react_1.useContext)(PostPageContext_1.PostPageContext);
|
49
|
+
return (react_1.default.createElement("div", { className: b('container', { theme }) },
|
50
|
+
date && react_1.default.createElement(Date_1.Date, { date: date }),
|
51
|
+
readingTime && react_1.default.createElement(ReadingTime_1.ReadingTime, { readingTime: readingTime }),
|
52
|
+
react_1.default.createElement(Sharing_1.Sharing, { metrikaGoal: metrikaGoals === null || metrikaGoals === void 0 ? void 0 : metrikaGoals.sharing, theme: theme }),
|
53
|
+
likes && (react_1.default.createElement(Save_1.Save, { postId: postId, title: likes.likesCount, hasUserLike: likes.hasUserLike, handleUserLike: likes.handleUserLike, metrikaGoal: metrikaGoals === null || metrikaGoals === void 0 ? void 0 : metrikaGoals.save, theme: theme, dataQa: dataQa }))));
|
54
|
+
};
|
55
|
+
exports.PostInfo = PostInfo;
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { PostData, ToggleLikeCallbackType } from '../../models/common';
|
3
|
+
export interface SuggestPostInfoProps extends Pick<PostData, 'date' | 'readingTime' | 'hasUserLike'> {
|
4
|
+
postId: PostData['blogPostId'];
|
5
|
+
size?: 's' | 'm';
|
6
|
+
dataQa?: string;
|
7
|
+
likes?: {
|
8
|
+
likesCount?: number;
|
9
|
+
hasUserLike?: boolean;
|
10
|
+
toggleLike?: ToggleLikeCallbackType;
|
11
|
+
};
|
12
|
+
}
|
13
|
+
/**
|
14
|
+
* Suggest blog card info component
|
15
|
+
*
|
16
|
+
* @param postId - post id
|
17
|
+
* @param date - post create date
|
18
|
+
* @param readingTime - post reading time
|
19
|
+
* @param hasUserLike - flag that the user liked the post
|
20
|
+
* @param likes - likes count
|
21
|
+
* @param dataQa - test-attr
|
22
|
+
* @param size - text size
|
23
|
+
* @param isModernIcon - flag what we need render 'bookmark' icon
|
24
|
+
*
|
25
|
+
* @returns jsx
|
26
|
+
*/
|
27
|
+
export declare const SuggestPostInfo: React.FC<SuggestPostInfoProps>;
|
@@ -0,0 +1,41 @@
|
|
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.SuggestPostInfo = void 0;
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const useLikes_1 = require("../../hooks/useLikes");
|
9
|
+
const Date_1 = require("./components/Date");
|
10
|
+
const ReadingTime_1 = require("./components/ReadingTime");
|
11
|
+
const Save_1 = require("./components/Save");
|
12
|
+
const cn_1 = require("../../utils/cn");
|
13
|
+
const b = (0, cn_1.block)('post-info');
|
14
|
+
/**
|
15
|
+
* Suggest blog card info component
|
16
|
+
*
|
17
|
+
* @param postId - post id
|
18
|
+
* @param date - post create date
|
19
|
+
* @param readingTime - post reading time
|
20
|
+
* @param hasUserLike - flag that the user liked the post
|
21
|
+
* @param likes - likes count
|
22
|
+
* @param dataQa - test-attr
|
23
|
+
* @param size - text size
|
24
|
+
* @param isModernIcon - flag what we need render 'bookmark' icon
|
25
|
+
*
|
26
|
+
* @returns jsx
|
27
|
+
*/
|
28
|
+
const SuggestPostInfo = ({ postId, date, readingTime, likes, size = 's', dataQa, }) => {
|
29
|
+
const { hasUserLike, likesCount, handleLike } = (0, useLikes_1.useLikes)({
|
30
|
+
hasLike: likes === null || likes === void 0 ? void 0 : likes.hasUserLike,
|
31
|
+
count: likes === null || likes === void 0 ? void 0 : likes.likesCount,
|
32
|
+
toggleLikeCallback: likes === null || likes === void 0 ? void 0 : likes.toggleLike,
|
33
|
+
postId: postId,
|
34
|
+
});
|
35
|
+
return (react_1.default.createElement("div", { className: b('container') },
|
36
|
+
react_1.default.createElement("div", { className: b('suggest-container') },
|
37
|
+
date && react_1.default.createElement(Date_1.Date, { date: date, size: size }),
|
38
|
+
readingTime && react_1.default.createElement(ReadingTime_1.ReadingTime, { readingTime: readingTime, size: size })),
|
39
|
+
likes && postId && (react_1.default.createElement(Save_1.Save, { postId: postId, title: likesCount, hasUserLike: hasUserLike, handleUserLike: handleLike, size: size, dataQa: dataQa }))));
|
40
|
+
};
|
41
|
+
exports.SuggestPostInfo = SuggestPostInfo;
|
@@ -0,0 +1,36 @@
|
|
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.Date = void 0;
|
27
|
+
const react_1 = __importStar(require("react"));
|
28
|
+
const LocaleContext_1 = require("../../../contexts/LocaleContext");
|
29
|
+
const date_1 = require("../../../utils/date");
|
30
|
+
const cn_1 = require("../../../utils/cn");
|
31
|
+
const b = (0, cn_1.block)('post-info');
|
32
|
+
const Date = ({ date, size = 's' }) => {
|
33
|
+
const { locale } = (0, react_1.useContext)(LocaleContext_1.LocaleContext);
|
34
|
+
return react_1.default.createElement("div", { className: b('item', { size }) }, (0, date_1.format)(date, 'longDate', locale === null || locale === void 0 ? void 0 : locale.code));
|
35
|
+
};
|
36
|
+
exports.Date = Date;
|
@@ -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.ReadingTime = void 0;
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
9
|
+
const i18n_1 = require("../../../i18n");
|
10
|
+
const Time_1 = require("../../../icons/Time");
|
11
|
+
const cn_1 = require("../../../utils/cn");
|
12
|
+
const b = (0, cn_1.block)('post-info');
|
13
|
+
const ICON_SIZE = 16;
|
14
|
+
const ReadingTime = ({ readingTime, size = 's' }) => (react_1.default.createElement("div", { className: b('item', { size }) },
|
15
|
+
react_1.default.createElement("span", { className: b('icon') },
|
16
|
+
react_1.default.createElement(uikit_1.Icon, { data: Time_1.Time, size: ICON_SIZE, className: b('icon-color') })),
|
17
|
+
(0, i18n_1.i18)(i18n_1.Keyset.ContextReadingTime, { count: readingTime })));
|
18
|
+
exports.ReadingTime = ReadingTime;
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
type SaveProps = {
|
3
|
+
title: string | number;
|
4
|
+
postId: number;
|
5
|
+
hasUserLike: boolean;
|
6
|
+
handleUserLike: () => void;
|
7
|
+
theme?: 'light' | 'dark';
|
8
|
+
metrikaGoal?: string;
|
9
|
+
dataQa?: string;
|
10
|
+
size?: 's' | 'm';
|
11
|
+
};
|
12
|
+
/**
|
13
|
+
* Components for 'save' blog UI-component
|
14
|
+
*
|
15
|
+
* @param title - post title
|
16
|
+
* @param postId - post id
|
17
|
+
* @param hasUserLike - flag what blog has like from current user
|
18
|
+
* @param metrikaGoal - metrika goal name
|
19
|
+
* @param dataQa - test-attr
|
20
|
+
* @param size - text size
|
21
|
+
*
|
22
|
+
* @returns jsx
|
23
|
+
*/
|
24
|
+
export declare const Save: React.FC<SaveProps>;
|
25
|
+
export {};
|
@@ -0,0 +1,73 @@
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
|
+
};
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
+
exports.Save = void 0;
|
30
|
+
const react_1 = __importStar(require("react"));
|
31
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
32
|
+
const common_1 = require("../../../utils/common");
|
33
|
+
const cn_1 = require("../../../utils/cn");
|
34
|
+
const utils_1 = require("../../../counters/utils");
|
35
|
+
// @ts-ignore
|
36
|
+
const metrika_js_1 = __importDefault(require("../../../counters/metrika.js"));
|
37
|
+
const Save_1 = require("../../../icons/Save");
|
38
|
+
const SaveFilled_1 = require("../../../icons/SaveFilled");
|
39
|
+
const UserContext_1 = require("../../../contexts/UserContext");
|
40
|
+
const ICON_SIZE = 16;
|
41
|
+
const b = (0, cn_1.block)('post-info');
|
42
|
+
/**
|
43
|
+
* Components for 'save' blog UI-component
|
44
|
+
*
|
45
|
+
* @param title - post title
|
46
|
+
* @param postId - post id
|
47
|
+
* @param hasUserLike - flag what blog has like from current user
|
48
|
+
* @param metrikaGoal - metrika goal name
|
49
|
+
* @param dataQa - test-attr
|
50
|
+
* @param size - text size
|
51
|
+
*
|
52
|
+
* @returns jsx
|
53
|
+
*/
|
54
|
+
const Save = ({ title, postId, hasUserLike, handleUserLike, metrikaGoal, size, theme, dataQa, }) => {
|
55
|
+
const { uid } = (0, react_1.useContext)(UserContext_1.UserContext);
|
56
|
+
return (react_1.default.createElement("div", { className: b('item', { size }), onClick: (event) => {
|
57
|
+
// both preventDefault and stopImmediatePropagation required to work properly
|
58
|
+
// https://stackoverflow.com/questions/24415631/reactjs-syntheticevent-stoppropagation-only-works-with-react-events
|
59
|
+
event.preventDefault();
|
60
|
+
event.nativeEvent.stopImmediatePropagation();
|
61
|
+
if (!uid) {
|
62
|
+
return;
|
63
|
+
}
|
64
|
+
(0, common_1.postLikeStatus)(postId, Boolean(hasUserLike));
|
65
|
+
handleUserLike();
|
66
|
+
metrika_js_1.default.reachGoal(utils_1.MetrikaCounter.CrossSite, metrikaGoal);
|
67
|
+
}, "data-qa": `${dataQa ? dataQa + '-' : ''}save` },
|
68
|
+
react_1.default.createElement("div", { className: b('content', { cursor: Boolean(uid), theme }) },
|
69
|
+
react_1.default.createElement("span", { className: b('icon') },
|
70
|
+
react_1.default.createElement(uikit_1.Icon, { data: hasUserLike ? SaveFilled_1.SaveFilled : Save_1.Save, size: ICON_SIZE, className: b({ filled: Boolean(hasUserLike) }) })),
|
71
|
+
react_1.default.createElement("span", { className: b('title', { cursor: Boolean(uid) }) }, title))));
|
72
|
+
};
|
73
|
+
exports.Save = Save;
|
@@ -0,0 +1,54 @@
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
|
+
};
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
+
exports.Sharing = void 0;
|
30
|
+
const react_1 = __importStar(require("react"));
|
31
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
32
|
+
const MobileContext_1 = require("../../../contexts/MobileContext");
|
33
|
+
const RouterContext_1 = require("../../../contexts/RouterContext");
|
34
|
+
const PostPageContext_1 = require("../../../contexts/PostPageContext");
|
35
|
+
const i18n_1 = require("../../../i18n");
|
36
|
+
const common_1 = require("../../../utils/common");
|
37
|
+
const cn_1 = require("../../../utils/cn");
|
38
|
+
const utils_1 = require("../../../counters/utils");
|
39
|
+
// @ts-ignore
|
40
|
+
const metrika_js_1 = __importDefault(require("../../../counters/metrika.js"));
|
41
|
+
const ShareArrowUp_1 = require("../../../icons/ShareArrowUp");
|
42
|
+
const b = (0, cn_1.block)('post-info');
|
43
|
+
const Sharing = ({ theme, metrikaGoal }) => {
|
44
|
+
const router = (0, react_1.useContext)(RouterContext_1.RouterContext);
|
45
|
+
const isMobile = (0, react_1.useContext)(MobileContext_1.MobileContext);
|
46
|
+
const { shareOptions } = (0, react_1.useContext)(PostPageContext_1.PostPageContext);
|
47
|
+
const handleMetrika = () => {
|
48
|
+
metrika_js_1.default.reachGoal(utils_1.MetrikaCounter.CrossSite, metrikaGoal);
|
49
|
+
};
|
50
|
+
return (react_1.default.createElement("div", { className: b('item') },
|
51
|
+
react_1.default.createElement("span", { className: b('icon') },
|
52
|
+
react_1.default.createElement(uikit_1.SharePopover, { url: (0, common_1.getAbsolutePath)(router), className: b('share'), iconClass: b('share-icon'), switcherClassName: b('switcher', { theme }), tooltipClassName: b('popup'), useWebShareApi: isMobile, direction: 'column', buttonTitle: (0, i18n_1.i18)(i18n_1.Keyset.ActionShare), customIcon: ShareArrowUp_1.ShareArrowUp, placement: "bottom", openByHover: false, shareOptions: shareOptions, handleMetrika: handleMetrika }))));
|
53
|
+
};
|
54
|
+
exports.Sharing = Sharing;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
2
|
+
unpredictable css rules order in build */
|
3
|
+
.bc-posts__cards-container, .bc-posts__pinned-container {
|
4
|
+
padding-top: 24px;
|
5
|
+
scroll-margin: 48px;
|
6
|
+
}
|
7
|
+
.bc-posts__pagination {
|
8
|
+
display: flex;
|
9
|
+
flex-direction: column;
|
10
|
+
align-items: center;
|
11
|
+
justify-content: center;
|
12
|
+
padding-top: 48px;
|
13
|
+
padding-bottom: 64px;
|
14
|
+
}
|
15
|
+
.bc-posts__more-button {
|
16
|
+
margin-bottom: 12px;
|
17
|
+
}
|
18
|
+
.bc-posts__error-show-more {
|
19
|
+
display: flex;
|
20
|
+
flex-direction: column;
|
21
|
+
align-items: center;
|
22
|
+
justify-content: center;
|
23
|
+
color: var(--yc-color-promo-base-tomato);
|
24
|
+
padding-bottom: 12px;
|
25
|
+
}
|
26
|
+
.bc-posts__paginator {
|
27
|
+
padding-top: 12px;
|
28
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import React, { MouseEvent } from 'react';
|
2
|
+
import { PostData } from '../../models/common';
|
3
|
+
type PostCardProps = {
|
4
|
+
containerId: string;
|
5
|
+
currentPage: number;
|
6
|
+
isShowMoreVisible: boolean;
|
7
|
+
errorShowMore: boolean;
|
8
|
+
postCountOnPage: number;
|
9
|
+
perPageInQuery: number;
|
10
|
+
isFetching: boolean;
|
11
|
+
isShowMoreFetching: boolean;
|
12
|
+
handleShowMore: (value?: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => Promise<void> | void;
|
13
|
+
handlePageChange: (value: number) => Promise<void> | void;
|
14
|
+
postsOnPage?: PostData[];
|
15
|
+
pinnedPostOnPage?: PostData;
|
16
|
+
pageCountForShowSupportButtons?: number;
|
17
|
+
};
|
18
|
+
export declare const Posts: React.FC<PostCardProps>;
|
19
|
+
export {};
|
@@ -0,0 +1,32 @@
|
|
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.Posts = void 0;
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const page_constructor_1 = require("@gravity-ui/page-constructor");
|
9
|
+
const uikit_1 = require("@gravity-ui/uikit");
|
10
|
+
const i18n_1 = require("../../i18n");
|
11
|
+
const Paginator_1 = require("../Paginator/Paginator");
|
12
|
+
const PostCard_1 = require("../PostCard/PostCard");
|
13
|
+
const PostsEmpty_1 = require("../PostsEmpty/PostsEmpty");
|
14
|
+
const cn_1 = require("../../utils/cn");
|
15
|
+
const b = (0, cn_1.block)('posts');
|
16
|
+
const Posts = ({ containerId, pinnedPostOnPage, currentPage, postsOnPage, isShowMoreVisible, errorShowMore, postCountOnPage, perPageInQuery, isFetching, isShowMoreFetching, handleShowMore, handlePageChange, pageCountForShowSupportButtons, }) => (react_1.default.createElement("div", { className: b() },
|
17
|
+
react_1.default.createElement("div", { id: containerId, className: b('cards-container') },
|
18
|
+
pinnedPostOnPage && currentPage === 1 && (react_1.default.createElement("div", { className: b('pinned-container') },
|
19
|
+
react_1.default.createElement(PostCard_1.PostCard, { post: pinnedPostOnPage, size: "m", fullWidth: true, showTag: true }))),
|
20
|
+
(postsOnPage === null || postsOnPage === void 0 ? void 0 : postsOnPage.length) ? (react_1.default.createElement(page_constructor_1.CardLayoutBlock, { title: '', colSizes: {
|
21
|
+
all: 12,
|
22
|
+
lg: 4,
|
23
|
+
md: 6,
|
24
|
+
} }, postsOnPage === null || postsOnPage === void 0 ? void 0 : postsOnPage.map((post) => (react_1.default.createElement(PostCard_1.PostCard, { key: post.id, post: post, showTag: true }))))) : (react_1.default.createElement(PostsEmpty_1.PostsEmpty, null))),
|
25
|
+
react_1.default.createElement("div", { className: b('pagination') },
|
26
|
+
Boolean(isShowMoreVisible && (postsOnPage === null || postsOnPage === void 0 ? void 0 : postsOnPage.length)) && (react_1.default.createElement(uikit_1.Button, { view: "outlined", size: "xl", className: b('more-button'), onClick: handleShowMore, loading: isShowMoreFetching }, (0, i18n_1.i18)(i18n_1.Keyset.ActionLoadMore))),
|
27
|
+
errorShowMore && (react_1.default.createElement("div", { className: b('error-show-more') },
|
28
|
+
react_1.default.createElement("div", null, (0, i18n_1.i18)(i18n_1.Keyset.ErrorTitle)),
|
29
|
+
react_1.default.createElement("div", null, (0, i18n_1.i18)(i18n_1.Keyset.PostLoadError)))),
|
30
|
+
Boolean(currentPage && postCountOnPage) && (react_1.default.createElement("div", { className: b('paginator') },
|
31
|
+
react_1.default.createElement(Paginator_1.Paginator, { onPageChange: handlePageChange, page: currentPage, totalItems: postCountOnPage, itemsPerPage: perPageInQuery, loading: isFetching, maxPages: Infinity, pageCountForShowSupportButtons: pageCountForShowSupportButtons }))))));
|
32
|
+
exports.Posts = Posts;
|
@@ -0,0 +1,25 @@
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
2
|
+
unpredictable css rules order in build */
|
3
|
+
.bc-posts-empty__container {
|
4
|
+
display: flex;
|
5
|
+
flex-direction: column;
|
6
|
+
justify-content: center;
|
7
|
+
align-items: center;
|
8
|
+
}
|
9
|
+
.bc-posts-empty__title, .bc-posts-empty__subtitle {
|
10
|
+
text-align: center;
|
11
|
+
word-wrap: break-word;
|
12
|
+
max-width: 400px;
|
13
|
+
width: 100%;
|
14
|
+
}
|
15
|
+
.bc-posts-empty__title {
|
16
|
+
margin-top: 24px;
|
17
|
+
font-size: var(--yc-text-display-2-font-size);
|
18
|
+
line-height: var(--yc-text-display-2-line-height);
|
19
|
+
font-weight: var(--yc-text-accent-font-weight);
|
20
|
+
}
|
21
|
+
.bc-posts-empty__subtitle {
|
22
|
+
margin-top: 16px;
|
23
|
+
font-size: var(--yc-text-body-3-font-size);
|
24
|
+
line-height: var(--yc-text-body-3-line-height);
|
25
|
+
}
|
@@ -0,0 +1,14 @@
|
|
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.PostsEmpty = void 0;
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const cn_1 = require("../../utils/cn");
|
9
|
+
const i18n_1 = require("../../i18n");
|
10
|
+
const b = (0, cn_1.block)('posts-empty');
|
11
|
+
const PostsEmpty = () => (react_1.default.createElement("div", { className: b('container') },
|
12
|
+
react_1.default.createElement("div", { className: b('title') }, (0, i18n_1.i18)(i18n_1.Keyset.TitleEmptyContainer)),
|
13
|
+
react_1.default.createElement("div", { className: b('subtitle') }, (0, i18n_1.i18)(i18n_1.Keyset.ContextEmptyContainer))));
|
14
|
+
exports.PostsEmpty = PostsEmpty;
|
@@ -0,0 +1,30 @@
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
2
|
+
unpredictable css rules order in build */
|
3
|
+
.bc-posts-error__container {
|
4
|
+
display: flex;
|
5
|
+
flex-direction: column;
|
6
|
+
justify-content: center;
|
7
|
+
align-items: center;
|
8
|
+
padding-top: 24px;
|
9
|
+
padding-bottom: 64px;
|
10
|
+
}
|
11
|
+
.bc-posts-error__title, .bc-posts-error__subtitle {
|
12
|
+
text-align: center;
|
13
|
+
word-wrap: break-word;
|
14
|
+
max-width: 400px;
|
15
|
+
width: 100%;
|
16
|
+
}
|
17
|
+
.bc-posts-error__title {
|
18
|
+
margin-top: 24px;
|
19
|
+
font-size: var(--yc-text-display-2-font-size);
|
20
|
+
line-height: var(--yc-text-display-2-line-height);
|
21
|
+
font-weight: var(--yc-text-accent-font-weight);
|
22
|
+
}
|
23
|
+
.bc-posts-error__subtitle {
|
24
|
+
margin-top: 16px;
|
25
|
+
font-size: var(--yc-text-body-3-font-size);
|
26
|
+
line-height: var(--yc-text-body-3-line-height);
|
27
|
+
}
|
28
|
+
.bc-posts-error__button {
|
29
|
+
padding: 24px 0 48px;
|
30
|
+
}
|