// Dependencies
import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import { sanitySiteImage, numPerPage, sanityLoader } from 'site/components/sanity/utils.mjs'
// Hooks
import { useTranslation } from 'next-i18next'
// Components
import { PageWrapper, ns as pageNs } from 'shared/components/wrappers/page.mjs'
import Link from 'next/link'
import { Pagination } from 'shared/components/navigation/pagination.mjs'
import { siteConfig } from 'site/site.config.mjs'
// Translation namespaces used on this page
const namespaces = [...new Set(['common', 'designs', ...pageNs])]
export const PreviewTile = ({ img, slug, title }) => (
{title}
)
// const DesignPosts = ({ design, posts }) => {
// const { t } = useTranslation(['patterns'])
// return (
//
// )
// }
const Posts = ({ posts }) => {
const previews = []
posts.forEach((post) => {
// for (const design of post.designs) {
// if (typeof designs[design] === 'undefined') designs[design] = []
// designs[design].push(post)
// }
previews.push(
)
})
return (
{previews}
)
}
const ShowcaseIndexPage = ({ posts, page, current, total }) => {
const { t } = useTranslation()
// const designKeys = useMemo(() => Object.keys(designs).sort(), [designs])
return (
)
}
export default ShowcaseIndexPage
export async function getStaticProps({ locale, params }) {
const allPosts = await sanityLoader({
language: locale,
type: 'showcase',
order: 'date desc',
filters: '{_id, date, slug, title, maker, image}',
})
const pageNum = parseInt(params.page)
return {
props: {
// designs,
posts: allPosts.slice(numPerPage * (pageNum - 1), numPerPage * pageNum),
current: pageNum,
total: allPosts.length,
...(await serverSideTranslations(locale, namespaces)),
page: {
locale,
path: ['showcase'],
},
},
}
}
export const getStaticPaths = async () => {
const numPosts = await sanityLoader({ query: `count(*[_type == "showcaseen"])` })
const numPages = Math.ceil(numPosts / numPerPage)
const paths = []
for (let i = 0; i < numPages; i++) {
const pathName = `/showcase/page/${i + 1}`
siteConfig.languages.forEach((l) => paths.push(`${l.length ? '/' : ''}${l}${pathName}`))
}
return {
paths,
fallback: false,
}
}