import { graphql, useStaticQuery } from "gatsby"; import { sortBy } from "lodash"; import * as React from "react"; import { Grid } from "@material-ui/core"; import { JsonLd } from "react-schemaorg"; import { SoftwareApplication } from "schema-dts"; import { Card } from "../Card"; interface ProvidersQuery { providers: { edges: { node: { id: string; title: string; modal: string; types: { title: string; modal: string; packages: { title: string; url: string; }[]; }[]; }; }[]; }; } const Providers = (): React.ReactElement => { const data = useStaticQuery(graphql` query ProvidersQuery { providers: allProvidersYaml { edges { node { id title modal types { title modal packages { title url } } } } } } `); return ( <> {data.providers.edges.map(({ node: scope }) => (

{scope.title}

{sortBy(scope.types, "title").map((type) => ( {type.packages.map((package_) => ( key={package_.url} item={{ "@context": "https://schema.org", "@type": "SoftwareApplication", "@id": package_.url, applicationCategory: "Development Tool", applicationSubCategory: "Atom Package", name: package_.title, url: package_.url, mainEntityOfPage: package_.url, operatingSystem: "macOS, Windows, Linux", }} /> ))} ({ name: package_.title, url: package_.url, }))} /> ))}
))} ); }; export default Providers;