import { Button, Card, CardContent, Grid, List, ListItem, ListItemText, Theme, Typography, } from '@material-ui/core' import { makeStyles } from '@material-ui/styles' import { graphql, Link } from 'gatsby' import React, { FC } from 'react' import Hero from '../components/hero' import SEO from '../components/seo' import { Category } from '../types' const useStyles = makeStyles((theme: Theme) => ({ wrapper: { paddingLeft: theme.spacing(2), paddingRight: theme.spacing(2), }, button: { marginTop: theme.spacing(2), marginBottom: theme.spacing(2), }, })) const CategoryItem = ({ category, categories, }: { category: Category categories: Category[] }) => { const classes = useStyles() const childCategories = categories.filter( cat => cat.parentSlug === category.slug, ) return ( {category.title} {category.description} {category.projectCount} projects {childCategories.length === 0 ? null : ( <> Child categories: {childCategories.map(childCategory => { return ( ) })} )} ) } type IndexPageProps = { data: { allAppCategory: { edges: { node: Category }[] } allAppProject: { totalCount: number } } } const IndexPage: FC = props => { const classes = useStyles() const { edges: categoryEdges } = props.data.allAppCategory const projectCount = props.data.allAppProject.totalCount const categories = categoryEdges.map(e => e.node) const topLevelCategories = categories.filter(category => { return category.parentSlug === null }) return ( <>
{topLevelCategories.map(cat => { return ( ) })}
) } export const pageQuery = graphql` query IndexPageQuery { allAppCategory { edges { node { id slug parentSlug projectCount description title } } } allAppProject { totalCount } } ` export default IndexPage