import ContentPanel, { ContentPanelWidthSizes, } from "components/Panels/ContentPanel"; import Image from "next/image"; import { GetStaticPaths, GetStaticProps } from "next"; import { applyCustomAppProps } from "pages/_app"; import { getLibraryItem, getLibraryItemsSlugs, getWebsiteInterface, } from "graphql/operations"; import { Enum_Componentmetadatabooks_Binding_Type, Enum_Componentmetadatabooks_Page_Order, GetLibraryItemQuery, GetWebsiteInterfaceQuery, } from "graphql/operations-types"; import { convertMmToInch, getAssetURL, prettyDate, prettyinlineTitle, prettyPrice, prettySlug, } from "queries/helpers"; import SubPanel from "components/Panels/SubPanel"; import ReturnButton from "components/PanelComponents/ReturnButton"; import NavOption from "components/PanelComponents/NavOption"; import LibraryItemComponent from "components/Library/LibraryItemComponent"; import Chip from "components/Chip"; import Button from "components/Button"; import HorizontalLine from "components/HorizontalLine"; import MainPanel from "components/Panels/MainPanel"; type Props = { libraryItem: GetLibraryItemQuery; langui: GetWebsiteInterfaceQuery; }; applyCustomAppProps(Library, { useSubPanel: true, useContentPanel: true, }); export default function Library(props: Props): JSX.Element { const item = props.libraryItem.libraryItems.data[0].attributes; const langui = props.langui.websiteInterfaces.data[0].attributes; item.contents.data.sort((a, b) => { if ( a.attributes.range[0].__typename === "ComponentRangePageRange" && b.attributes.range[0].__typename === "ComponentRangePageRange" ) { return ( a.attributes.range[0].starting_page - b.attributes.range[0].starting_page ); } return 0; }); return ( <> {item.gallery.data.length > 0 ? ( ) : ( "" )} {item.subitems.data.length > 0 ? ( item.metadata.length > 0 && item.metadata[0].__typename === "ComponentMetadataOther" && item.metadata[0].subtype.data.attributes.slug === "variant-set" ? ( ) : ( ) ) : ( "" )} {item.contents.data.length > 0 ? ( ) : ( "" )}
{item.thumbnail.data ? ( {item.thumbnail.data.attributes.alternativeText} ) : (
)}
{item.subitem_of.data.length > 0 ? (

{langui.global_subitem_of}

) : ( "" )}

{item.title}

{item.subtitle ? (

{item.subtitle}

) : ( "" )}
{item.descriptions.length > 0 ? (

{item.descriptions[0].description}

) : ( "" )}
{item.gallery.data.length > 0 ? ( ) : ( "" )}

{langui.library_item_details}

{item.metadata.length > 0 ? (

{langui.global_type}

) : ( "" )} {item.release_date ? (

{langui.global_release_date}

{prettyDate(item.release_date)}

) : ( "" )} {item.release_date ? (

{langui.global_price}

{prettyPrice(item.price)}

) : ( "" )}
{item.size ? ( <>

{langui.library_item_physical_size}

{langui.global_width}:

{item.size.width} mm

{convertMmToInch(item.size.width)} in

{langui.global_height}:

{item.size.height} mm

{convertMmToInch(item.size.height)} in

{item.size.thickness ? (

{langui.global_thickness}:

{item.size.thickness} mm

{convertMmToInch(item.size.thickness)} in

) : ( "" )}
) : ( "" )} {item.metadata.length > 0 ? ( <>

{langui.library_item_type_information}

{item.metadata[0].__typename === "ComponentMetadataBooks" ? ( <>

{langui.global_type}:

{item.metadata[0].subtype.data.attributes.titles .length > 0 ? item.metadata[0].subtype.data.attributes .titles[0].title : prettySlug( item.metadata[0].subtype.data.attributes.slug )}

{langui.global_pages}:

{item.metadata[0].page_count}

{langui.global_binding}:

{item.metadata[0].binding_type === Enum_Componentmetadatabooks_Binding_Type.Paperback ? langui.global_paperback : item.metadata[0].binding_type === Enum_Componentmetadatabooks_Binding_Type.Hardcover ? langui.global_hardcover : ""}

{langui.global_page_order}:

{item.metadata[0].page_order === Enum_Componentmetadatabooks_Page_Order.LeftToRight ? langui.global_left_to_right : item.metadata[0].page_order === Enum_Componentmetadatabooks_Page_Order.RightToLeft ? langui.global_right_to_left : ""}

{langui.global_languages}:

{item.metadata[0].languages.data.map((lang) => (

{lang.attributes.name}

))}
) : item.metadata[0].__typename === "ComponentMetadataAudio" ? ( <> ) : item.metadata[0].__typename === "ComponentMetadataVideo" ? ( <> ) : item.metadata[0].__typename === "ComponentMetadataGame" ? ( <> ) : item.metadata[0].__typename === "ComponentMetadataOther" ? ( <>

{langui.global_type}:

{item.metadata[0].subtype.data.attributes.titles .length > 0 ? item.metadata[0].subtype.data.attributes .titles[0].title : prettySlug( item.metadata[0].subtype.data.attributes.slug )}
) : ( "" )}
) : ( "" )}
{item.subitems.data.length > 0 ? ( item.metadata.length > 0 && item.metadata[0].__typename === "ComponentMetadataOther" && item.metadata[0].subtype.data.attributes.slug === "variant-set" ? (

{langui.library_item_variants}

{item.subitems.data.map((variant) => ( ))}
) : (

{langui.library_item_subitems}

{item.subitems.data.map((subitem) => ( ))}
) ) : ( "" )} {item.contents.data.length > 0 ? (

{langui.library_item_content}

{item.contents.data.map((content) => (

{content.attributes.content.data && content.attributes.content.data.attributes.titles .length > 0 ? prettyinlineTitle( content.attributes.content.data.attributes .titles[0].pre_title, content.attributes.content.data.attributes .titles[0].title, content.attributes.content.data.attributes .titles[0].subtitle ) : prettySlug(content.attributes.slug, item.slug)}

{content.attributes.content.data?.attributes.categories.data.map( (category) => ( {category.attributes.short} ) )}

{content.attributes.range[0].__typename === "ComponentRangePageRange" ? content.attributes.range[0].starting_page : ""}

{content.attributes.content.data ? ( {content.attributes.content.data.attributes.type.data .attributes.titles.length > 0 ? content.attributes.content.data.attributes.type .data.attributes.titles[0].title : prettySlug( content.attributes.content.data.attributes.type .data.attributes.slug )} ) : ( "" )}
subdirectory_arrow_right {content.attributes.scan_set.length > 0 ? ( ) : ( "" )} {content.attributes.content.data ? ( ) : ( "" )} {content.attributes.scan_set.length === 0 && !content.attributes.content.data ? "The content is not available" : ""}
))}
) : ( "" )}
); } export const getStaticProps: GetStaticProps = async (context) => { if (context.params) { if (context.params.slug && context.locale) { if (context.params.slug instanceof Array) context.params.slug = context.params.slug.join(""); const props: Props = { libraryItem: await getLibraryItem({ slug: context.params.slug, language_code: context.locale, }), langui: await getWebsiteInterface({ language_code: context.locale, }), }; return { props: props, }; } } return { props: {} }; }; export const getStaticPaths: GetStaticPaths = async (context) => { type Path = { params: { slug: string; }; locale: string; }; const data = await getLibraryItemsSlugs({}); const paths: Path[] = []; data.libraryItems.data.map((item) => { context.locales?.map((local) => { paths.push({ params: { slug: item.attributes.slug }, locale: local }); }); }); return { paths, fallback: false, }; };