import { GetStaticPaths, GetStaticPathsResult, GetStaticProps } from "next"; import naturalCompare from "string-natural-compare"; import { AppLayout, AppLayoutRequired } from "components/AppLayout"; import { ContentPanel, ContentPanelWidthSizes } from "components/Containers/ContentPanel"; import { getOpenGraph } from "helpers/openGraph"; import { getReadySdk } from "graphql/sdk"; import { filterHasAttributes } from "helpers/asserts"; import { GetContentsFolderQuery } from "graphql/generated"; import { getDefaultPreferredLanguages, staticSmartLanguage } from "helpers/locales"; import { prettySlug } from "helpers/formatters"; import { SmartList } from "components/SmartList"; import { Ico } from "components/Ico"; import { Button, TranslatedButton } from "components/Inputs/Button"; import { PanelHeader } from "components/PanelComponents/PanelHeader"; import { SubPanel } from "components/Containers/SubPanel"; import { TranslatedPreviewCard } from "components/PreviewCard"; import { HorizontalLine } from "components/HorizontalLine"; import { cJoin, cIf } from "helpers/className"; import { getLangui } from "graphql/fetchLocalData"; import { atoms } from "contexts/atoms"; import { useAtomGetter } from "helpers/atoms"; import { TranslatedPreviewFolder } from "components/Contents/PreviewFolder"; /* * ╭────────╮ * ──────────────────────────────────────────╯ PAGE ╰───────────────────────────────────────────── */ interface Props extends AppLayoutRequired { folder: NonNullable< NonNullable["data"][number]["attributes"] >; } const ContentsFolder = ({ openGraph, folder, ...otherProps }: Props): JSX.Element => { const langui = useAtomGetter(atoms.localData.langui); const isContentPanelAtLeast4xl = useAtomGetter(atoms.containerQueries.isContentPanelAtLeast4xl); const subPanel = (