Newer
Older
import React, { ReactElement, useState } from "react"
import { graphql, PageProps } from "gatsby"
import { IGatsbyImageData } from "gatsby-plugin-image"
import { Layout, Content, CardList } from "@onegeo-suite/gatsby-theme-onegeo"
import { ViewListIcon, ViewGridIcon } from "@heroicons/react/outline"
id?: string
title?: string
content?: string
image?: {
id?: string
imageFile?: IGatsbyImageData
}
directus: {
news: INew[]
}
}
function News({ data }: PageProps<DataProps>): ReactElement {
const [bLayoutGrid, setLayoutGrid] = useState(false)
const onSetLayout = () => {
setLayoutGrid((prevState) => !prevState)
}
const layout = bLayoutGrid ? "grid" : "row"
const listNews = data.directus.news.map((dt) => {
return {
name: dt.title,
description: dt.abstract || dt.content,
image: dt.image?.imageFile,
url: "/news/" + dt.slug,
<Content>
<div className="p-6 sm:flex">
<h2 className="w-full text-3xl font-extrabold tracking-tight sm:text-4xl">
Actualités
</h2>
<div className="flex w-full items-center gap-6">
<button className="h-8 w-8" onClick={onSetLayout}>
{bLayoutGrid ? <ViewGridIcon /> : <ViewListIcon />}
</button>
<input
type="text"
placeholder="Titre, description"
className="input input-bordered w-full"
/>
</div>
</div>
<CardList
cards={listNews}
layout={layout}
anime={bLayoutGrid}
/>
</Content>
query {
directus {
news(
filter: { status: { _eq: "published" } }
sort: "-date_published"
) {
id
slug
content
title
date_published
image {
id
imageFile {
childImageSharp {
gatsbyImageData
}
name
publicURL