diff --git a/apps/website/components/blog-search/blog-search.tsx b/apps/website/components/blog-search/blog-search.tsx index d3b2b03..4e259c0 100644 --- a/apps/website/components/blog-search/blog-search.tsx +++ b/apps/website/components/blog-search/blog-search.tsx @@ -55,7 +55,9 @@ export function BlogSearch(props: BlogSearchProps) { const onSearchChange = (e) => subject.next(e.target.value); return ( -
+
diff --git a/apps/website/components/card-blog-details/card-blog-details.tsx b/apps/website/components/card-blog-details/card-blog-details.tsx index 6d849c1..732da5d 100644 --- a/apps/website/components/card-blog-details/card-blog-details.tsx +++ b/apps/website/components/card-blog-details/card-blog-details.tsx @@ -13,9 +13,8 @@ import { WhatsappShareButton } from "react-share"; -import {environment} from "../../environments/environment"; - import styles from './card-blog-details.module.scss'; +import {getCategoryUrl, getPostUrl, getStrapiImage} from "../../libs/utils"; /* eslint-disable-next-line */ export interface CardBlogDetailsProps { @@ -23,70 +22,78 @@ export interface CardBlogDetailsProps { } export function CardBlogDetails({item}: CardBlogDetailsProps) { - const {alternativeText, width, height} = item.image.data.attributes; - const {slug} = item.category.data.attributes; + const {width, height} = item.image.data.attributes; const {title} = item; - const shareUrl = `${environment.appUrl}/blog/${slug}/${item.slug}`; + const shareUrl = getPostUrl(item); return ( -
+

{delve(item, 'title', 'N/A')}

-
+
-
+
+ src={getStrapiImage(item, "default")} + alt={delve(item, 'title', 'N/A')} />
-
+ dangerouslySetInnerHTML={{__html: delve(item, 'content', 'N/A')}} /> +

Partager cet article

- + - + - + - + - - + +
diff --git a/apps/website/components/card-blog/card-blog.tsx b/apps/website/components/card-blog/card-blog.tsx index 51b33fc..14c4fb6 100644 --- a/apps/website/components/card-blog/card-blog.tsx +++ b/apps/website/components/card-blog/card-blog.tsx @@ -1,9 +1,8 @@ import delve from 'dlv'; -import { format } from 'date-fns'; -import {environment} from '../../environments/environment'; +import {format} from 'date-fns'; import styles from './card-blog.module.scss'; -import {getCategoryUrl, getPostUrl} from "../../libs/utils"; +import {getCategoryUrl, getPostUrl, getStrapiImage} from "../../libs/utils"; /* eslint-disable-next-line */ export interface CardBlogProps { @@ -12,38 +11,53 @@ export interface CardBlogProps { export function CardBlog({item}: CardBlogProps) { return ( -
+
Modern building architecture + src={getStrapiImage(item, 'medium')} + alt="Modern building architecture" />
{format(new Date(delve(item, 'attributes.publishedAt', 'Jun 1, 2020')),'dd/MM/yyyy')} + className="font-light text-sm + text-gray-600 + dark:text-gray-300">{format(new Date(delve(item, 'attributes.publishedAt', 'Jun 1, 2020')), 'dd/MM/yyyy')} + className="px-2 py-1 text-sm font-bold rounded + bg-gray-600 text-gray-100 + hover:bg-gray-500"> {delve(item, 'attributes.category.data.attributes.name', 'N/A')}
+ className="text-xl font-bold hover:underline + text-gray-700 + dark:text-gray-200"> {delve(item, 'attributes.title', 'N/A')} -

{delve(item, 'attributes.description', 'N/A')}

+

{delve(item, 'attributes.description', 'N/A')}

diff --git a/apps/website/components/categories/categories.tsx b/apps/website/components/categories/categories.tsx index e31cdce..1189a35 100644 --- a/apps/website/components/categories/categories.tsx +++ b/apps/website/components/categories/categories.tsx @@ -15,7 +15,9 @@ export interface CategoriesProps { export function Categories({items = []}: CategoriesProps) { return (
+ className={styles['container'] + " rounded-lg mx-2 lg:mx-0 mt-5 lg:mt-0 p-5 mb-5 shadow-sm" + + " bg-white" + + " dark:bg-gray-800"}>
Catégories
diff --git a/apps/website/components/header/header.tsx b/apps/website/components/header/header.tsx index 56b83fc..d4850eb 100644 --- a/apps/website/components/header/header.tsx +++ b/apps/website/components/header/header.tsx @@ -176,7 +176,7 @@ export function Header({items = []}) {
-
+
diff --git a/apps/website/components/home-section-comments/home-section-comments.tsx b/apps/website/components/home-section-comments/home-section-comments.tsx index 7fa7e3d..434005e 100644 --- a/apps/website/components/home-section-comments/home-section-comments.tsx +++ b/apps/website/components/home-section-comments/home-section-comments.tsx @@ -5,14 +5,18 @@ export interface HomeSectionCommentsProps { export function HomeSectionComments(props: HomeSectionCommentsProps) { return ( <> -
+

Ce que nos étudiants en pense

-
+
-
+
-
+
-

+

Méthode révolutionnaire pour apprendre à jouer

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed feugiat nulla lorem, at consectetur ligula pulvinar nec. Fusce dictum aliquet tellus id aliquam. Praesent feugiat tincidunt ante. Aliquam non lectus est. Suspendisse porta, dolor vel aliquet pharetra, ipsum diam laoreet ante, a feugiat nisi justo eu est.

-

Suspendisse in eros nisl. Vivamus eu convallis massa. Phasellus sit amet felis ut velit semper sagittis eget vitae arcu. Nunc leo est, vulputate sed libero non, efficitur lobortis odio. Proin fermentum massa non metus bibendum imperdiet.

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed feugiat nulla lorem, at consectetur ligula pulvinar nec. Fusce dictum aliquet tellus id aliquam. Praesent feugiat tincidunt ante. Aliquam non lectus est. Suspendisse porta, dolor vel aliquet pharetra, ipsum diam laoreet ante, a feugiat nisi justo eu est. +

+

+ Suspendisse in eros nisl. Vivamus eu convallis massa. Phasellus sit amet felis ut velit semper sagittis eget vitae arcu. Nunc leo est, vulputate sed libero non, efficitur lobortis odio. Proin fermentum massa non metus bibendum imperdiet. +

diff --git a/apps/website/components/last-articles/last-articles.tsx b/apps/website/components/last-articles/last-articles.tsx index c32eb86..8d5de4e 100644 --- a/apps/website/components/last-articles/last-articles.tsx +++ b/apps/website/components/last-articles/last-articles.tsx @@ -12,7 +12,9 @@ export interface LastArticlesProps { export function LastArticles({items = []}: LastArticlesProps) { return (
+ className={styles['container'] + "rounded-lg mx-2 lg:mx-0 mt-5 lg:mt-0 p-5 mb-5 shadow-sm" + + " bg-white" + + " dark:bg-gray-800"}>
Derniers articles publiés
diff --git a/apps/website/libs/utils.ts b/apps/website/libs/utils.ts index 106727a..83ffe36 100644 --- a/apps/website/libs/utils.ts +++ b/apps/website/libs/utils.ts @@ -5,14 +5,18 @@ import {environment} from "../environments/environment"; export type ImageFormatType = "default" | "thumbnail" | "medium" | "small"; export const getCategoryUrl = (item): string => { - return '/blog/' + delve(item, 'attributes.category.data.attributes.slug', ''); + const categorySlug = !delve(item, 'attributes', null) ? delve(item, 'category.data.attributes.slug', '') : delve(item, 'attributes.category.data.attributes.slug', ''); + return '/blog/' + categorySlug; } export const getPostUrl = (item): string => { - return '/blog/' + getCategoryUrl(item) + '/' + delve(item, 'attributes.slug', ''); + const categorySlug = !delve(item, 'attributes', null) ? delve(item, 'category.data.attributes.slug', '') : delve(item, 'attributes.category.data.attributes.slug', ''); + const postSlug = !delve(item, 'attributes', null) ? delve(item, 'slug', '') : delve(item, 'attributes.slug', ''); + return '/blog/' + categorySlug + '/' + postSlug; } export const getStrapiImage = (item, format: ImageFormatType = 'default') => { - const image = delve(item, 'attributes.image.data.attributes', {}); + const image = !delve(item, 'attributes', null) ? delve(item, 'image.data.attributes', {}) : delve(item, 'attributes.image.data.attributes', {}); + console.log(item, image); switch (format) { case "default": return environment.strapiUrl + delve(image, "url", "/images/default.png"); diff --git a/apps/website/pages/_app.tsx b/apps/website/pages/_app.tsx index 0f41953..c087e69 100644 --- a/apps/website/pages/_app.tsx +++ b/apps/website/pages/_app.tsx @@ -3,14 +3,20 @@ import {SessionProvider} from "next-auth/react"; import {config, library} from "@fortawesome/fontawesome-svg-core"; import '@fortawesome/fontawesome-svg-core/styles.css'; import { - faBagShopping, faChalkboardUser, - faGraduationCap, faGuitar, faLinesLeaning, - faRightToBracket, faScrewdriverWrench, + faBagShopping, + faChalkboardUser, + faGraduationCap, + faGuitar, + faLinesLeaning, + faRightToBracket, + faScrewdriverWrench, faTabletScreenButton, faUserPlus } from "@fortawesome/free-solid-svg-icons"; import axios from "axios"; import delve from 'dlv'; +import {ThemeProvider} from "next-themes"; + import {wrapper} from "../store/store"; import {environment} from "../environments/environment"; @@ -49,7 +55,10 @@ const CustomApp = ({Component, pageProps: {session, ...pageProps}, menuFooter, m pageProps = {...pageProps, menuFooter, menuHeader, seo}; return ( - + + + ); } diff --git a/apps/website/pages/index.tsx b/apps/website/pages/index.tsx index 17eb57b..569edc2 100644 --- a/apps/website/pages/index.tsx +++ b/apps/website/pages/index.tsx @@ -1,18 +1,32 @@ -import SeoConfig from "../components/seo-config/seo-config"; +import axios from "axios"; +import delve from 'dlv'; + +import {environment} from "../environments/environment"; +import SeoConfig from "../components/seo-config/seo-config"; import Layout from "../components/layout/layout"; import HomeContent from "../components/home/home"; import styles from "./blog/index.module.scss"; -export function Index({menuHeader, menuFooter, page, seo}) { +export async function getServerSideProps(context) { + const postsUrl = `${environment.strapiApiUrl}/articles?populate=deep&sort=publishedAt:DESC&pagination[limit]=3`; + const posts = await axios.get(postsUrl); + return { + props: { + posts: delve(posts, 'data.data', []), + } + } +} + +export function Index({menuHeader, menuFooter, posts, seo}) { return ( <>
- +
diff --git a/package-lock.json b/package-lock.json index 5ccb424..2a560fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10124,6 +10124,11 @@ "resolved": "https://registry.npmjs.org/next-redux-wrapper/-/next-redux-wrapper-8.1.0.tgz", "integrity": "sha512-2hIau0hcI6uQszOtrvAFqgc0NkZegKYhBB7ZAKiG3jk7zfuQb4E7OV9jfxViqqojh3SEHdnFfPkN9KErttUKuw==" }, + "next-themes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", + "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==" + }, "node-abort-controller": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", diff --git a/package.json b/package.json index b4e35d8..70ddf1a 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "next": "13.1.1", "next-auth": "4.18.8", "next-redux-wrapper": "^8.1.0", + "next-themes": "^0.2.1", "react": "18.2.0", "react-dom": "18.2.0", "react-helmet": "6.0.0",