diff --git a/.nvmrc b/.nvmrc index bb8c76c..517f386 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v22.11.0 +v22.14.0 diff --git a/MainLayout/MainLayout.tsx b/MainLayout/MainLayout.tsx index 6ea7739..f16ee8d 100644 --- a/MainLayout/MainLayout.tsx +++ b/MainLayout/MainLayout.tsx @@ -4,10 +4,10 @@ import React, { useEffect, useState } from 'react' import { Footer, Header } from '@/components' import { App } from '@/types' -import { onEntryChange } from '@/config' import useRouterHook from '@/hooks/useRouterHook' import { LocaleContext, usePersonalization } from '@/context' import { footerJsonRtePathIncludes, footerReferenceIncludes, getEntries, navigationReferenceIncludes } from '@/services' +import { onEntryChange } from '@/config' const MainLayout: React.FC = ( props: React.PropsWithChildren @@ -43,7 +43,7 @@ const MainLayout: React.FC = ( console.error('Main Layout failed to load,\n', err) } } - + useEffect(() => { onEntryChange(fetchAppConfig) }, []) diff --git a/app/[locale]/[...slug]/page.tsx b/app/[locale]/[...slug]/page.tsx index ea15add..a14cf9d 100644 --- a/app/[locale]/[...slug]/page.tsx +++ b/app/[locale]/[...slug]/page.tsx @@ -9,7 +9,7 @@ import { NotFoundComponent, PageWrapper } from '@/components' import { onEntryChange } from '@/config' import useRouterHook from '@/hooks/useRouterHook' import { setDataForChromeExtension } from '@/utils' -import { imageCardsReferenceIncludes, teaserReferenceIncludes, textAndImageReferenceIncludes, textJSONRtePaths } from '@/services/helper' +import { heroReferenceIncludes, imageCardsReferenceIncludes, teaserReferenceIncludes, textAndImageReferenceIncludes, textJSONRtePaths } from '@/services/helper' import { getEntryByUrl } from '@/services' import { usePersonalization } from '@/context' @@ -50,6 +50,7 @@ export default function LandingPage () { const fetchData = async () => { try { const refUids = [ + ...heroReferenceIncludes, ...textAndImageReferenceIncludes, ...teaserReferenceIncludes, ...imageCardsReferenceIncludes @@ -78,6 +79,7 @@ export default function LandingPage () { ? {data?.components ? : ''} diff --git a/app/[locale]/article/[...slug]/page.tsx b/app/[locale]/article/[...slug]/page.tsx index 76a86b1..0ca6316 100644 --- a/app/[locale]/article/[...slug]/page.tsx +++ b/app/[locale]/article/[...slug]/page.tsx @@ -21,6 +21,7 @@ import { getEntries, getEntryByUrl } from '@/services' * * @returns {JSX.Element} */ + export default function Article () { const { personalizationSDK, personalizeConfig } = usePersonalization() const [data, setData] = useState(null) @@ -156,11 +157,11 @@ export default function Article () { return ( data ? <> - } ) @@ -148,19 +149,19 @@ export default function Article () { return (<> {data && - {data?.title &&
-

{data?.title}

+ {data?.title &&
+

{data?.title}

} - {data?.components ? ( + {(data?.components?.length > 0) ? ( ) : <>} } -
+
{ // Pagination component - cards?.length > 12 &&
+ cards?.length > 12 &&
} ) @@ -122,19 +123,19 @@ export default function ArticleListing () { return ( <> {data && - {data?.title &&
-

{data?.title}

+ {data?.title &&
+

{data?.title}

} - {data?.components ? ( + {(data?.components?.length > 0) ? ( ) : <>} } -
+
{ // Paginaion component - cards?.length > 12 &&
+ cards?.length > 12 &&
) { return ( - + {children} diff --git a/app/[locale]/page.tsx b/app/[locale]/page.tsx index b21af70..5b05147 100644 --- a/app/[locale]/page.tsx +++ b/app/[locale]/page.tsx @@ -6,7 +6,7 @@ import { NotFoundComponent, PageWrapper } from '@/components' import { onEntryChange } from '@/config' import useRouterHook from '@/hooks/useRouterHook' import { isDataInLiveEdit, setDataForChromeExtension } from '@/utils' -import { featuredArticlesReferenceIncludes, imageCardsReferenceIncludes, teaserReferenceIncludes, textAndImageReferenceIncludes, textJSONRtePaths } from '@/services/helper' +import { featuredArticlesReferenceIncludes, heroReferenceIncludes, imageCardsReferenceIncludes, teaserReferenceIncludes, textAndImageReferenceIncludes, textJSONRtePaths } from '@/services/helper' import { getEntryByUrl } from '@/services' import { usePersonalization } from '@/context' @@ -35,6 +35,7 @@ export default function Home () { const fetchData = async () => { try { const refUids = [ + ...heroReferenceIncludes, ...textAndImageReferenceIncludes, ...teaserReferenceIncludes, ...imageCardsReferenceIncludes, @@ -68,6 +69,7 @@ export default function Home () { ? {data?.components ? *:last-child { + @apply pb-0; + } - .text a { @apply text-[16px] text-purple hover:underline font-semibold} + p { + @apply py-1 font-normal leading-6 text-black dark:text-white tracking-normal + } - .text img { @apply w-full my-8 mx-auto} + .text a { + @apply text-[16px] text-purple hover:underline font-semibold tracking-normal + } + + .text img { + @apply w-full my-8 mx-auto + } .card-title { display: -webkit-box; @@ -120,13 +164,22 @@ body { overflow: hidden; } + .taxonomies-label { + @apply font-inter p-[0.875rem] flex items-center gap-[0.625rem] rounded-[0.25rem] border border-[#CDD8E8] bg-[#F0F3F7] hover:border-[#7C4DFF] hover:bg-[#7C4DFF33] hover:underline hover:text-purple text-[#8992AE] text-[1.125rem] leading-[1.375rem] font-medium tracking-[0.045rem] uppercase; + } - .built-by p { - @apply text-gray-700 font-montserrat !font-bold; + .footer { + @apply font-inter; + } + .copyright-info p { + @apply font-inter text-sm; + } + .footer-declaimer p { + @apply max-w-fit font-inter text-xs leading-6; } - .built-by p > a { - @apply hover:underline text-purple outline-none ; + .footer-declaimer p > a { + @apply hover:underline text-purple outline-none; } } @@ -135,10 +188,55 @@ body { --removed-item-color: rgba(255, 0, 0); } -picture .cs-compare__void--added, img.cs-compare__void--added, video.cs-compare__void--added { +picture .cs-compare__void--added, +img.cs-compare__void--added, +video.cs-compare__void--added { border: 3px solid var(--added-item-color); } -picture .cs-compare__void--removed, img.cs-compare__void--removed, video.cs-compare__void--removed { +picture .cs-compare__void--removed, +img.cs-compare__void--removed, +video.cs-compare__void--removed { border: 3px solid var(--removed-item-color); +} + +h1::before, +h2::before, +h3::before, +h4::before, +h5::before, +h6::before { + content: " "; + background-color: #253543; + color: #253543; + width: 0.543rem; + height: 6rem; + text-align: inherit; + + transform: rotate(90deg) translateX(-5.5rem) translateY(-47%); + display: inline-block; + margin: 0; + padding: 0; + position: absolute; +} + +.text-right +.text-right::before, +h1[style*="text-align: right"]::before, +h2[style*="text-align: right"]::before, +h3[style*="text-align: right"]::before, +h4[style*="text-align: right"]::before, +h5[style*="text-align: right"]::before, +h6[style*="text-align: right"]::before { + right: 0rem; + transform: rotate(90deg) translateX(-7rem) translateY(50%); +} + +.dark h1::before, +.dark h2::before, +.dark h3::before, +.dark h4::before, +.dark h5::before, +.dark h6::before { + background-color: white; } \ No newline at end of file diff --git a/app/robots.ts b/app/robots.ts new file mode 100644 index 0000000..c5d25e7 --- /dev/null +++ b/app/robots.ts @@ -0,0 +1,10 @@ +import type { MetadataRoute } from 'next' + +export default function robots (): MetadataRoute.Robots { + return { + rules: { + userAgent: '*', + allow: '/' + } + } +} \ No newline at end of file diff --git a/components/Article/ArticleCover.tsx b/components/Article/ArticleCover.tsx index 678d63d..d4aef01 100644 --- a/components/Article/ArticleCover.tsx +++ b/components/Article/ArticleCover.tsx @@ -1,40 +1,48 @@ + import React from 'react' -import { Image } from '@/components' +import { Hero, Text } from '@/components' import { ArticleCover as ArticleCoverType } from '@/types/components' +import { isDataInLiveEdit } from '@/utils' /** - * Article cover component that displays title, cover image, and summary - * @component + * ArticleCover component displays the hero banner and summary of an article * @param {Object} props - Component props - * @param {string} [props.title] - Article title - * @param {string} [props.summary] - Article summary - * @param {Object} props.cover_image - Cover image object - * @param {Object} [props.$] - Optional object containing data-cslp attributes - * @returns {JSX.Element} Article cover component + * @param {string} props.title - Title of the article + * @param {Object} props.cover_image - Cover image object for the article + * @param {string} props.summary - Summary text of the article + * @param {string} props._content_type_uid - Content type UID + * @param {Object} props.$ - Optional object containing data-cslp attributes + * @returns {JSX.Element} ArticleCover component */ const ArticleCover:React.FC = (props:ArticleCoverType) => { - const {title, summary, cover_image, $} = props - return(
+ const {title, cover_image, summary ,_content_type_uid, $} = props + return(
- {title &&

{title}

} -
- {/* eslint-disable-next-line jsx-a11y/alt-text */} - -
- {summary &&

- {summary} -

} + + {/* This Text component is used to display the summary of the article as per new figma design in sprint22 */} + ${summary}

`} + $ = {(!isDataInLiveEdit()) ? { + ... $, + content: { + 'data-cslp': $?.summary?.['data-cslp'] || '' + } + } : {}} + className='mt-[2.23rem] mb-0' + id={'article-summary'} + />
- -
) + ) } export {ArticleCover} \ No newline at end of file diff --git a/components/Article/RelatedArticles.tsx b/components/Article/RelatedArticles.tsx index da996e3..e61c751 100644 --- a/components/Article/RelatedArticles.tsx +++ b/components/Article/RelatedArticles.tsx @@ -20,7 +20,12 @@ const RelatedArticles:React.FC = (props:RelatedArticle const { heading, sub_heading, $ } = {...related_articles} return(
- +
) } diff --git a/components/Article/RelatedLinks.tsx b/components/Article/RelatedLinks.tsx index e0613bc..efc698b 100644 --- a/components/Article/RelatedLinks.tsx +++ b/components/Article/RelatedLinks.tsx @@ -15,22 +15,20 @@ import { RelatedLinksComponent } from '@/types/components' const RelatedLinks: React.FC = (props: RelatedLinksComponent) => { const { relatedLinks, relatedLinksLabel, $ } = props - return (