Added properly typed icons
This commit is contained in:
parent
a7c5ca61fd
commit
3a379f98a1
|
@ -4,13 +4,7 @@ import { UploadImageFragment } from "graphql/generated";
|
|||
import { AppStaticProps } from "graphql/getAppStaticProps";
|
||||
import { prettyLanguage, prettySlug } from "helpers/formatters";
|
||||
import { getOgImage, ImageQuality, OgImage } from "helpers/img";
|
||||
import {
|
||||
getClient,
|
||||
getIndexes,
|
||||
Indexes,
|
||||
search,
|
||||
SearchResult,
|
||||
} from "helpers/search";
|
||||
import { getClient, Indexes, search, SearchResult } from "helpers/search";
|
||||
import { Immutable } from "helpers/types";
|
||||
import { useMediaMobile } from "hooks/useMediaQuery";
|
||||
import { AnchorIds } from "hooks/useScrollTopOnChange";
|
||||
|
@ -18,6 +12,7 @@ import Head from "next/head";
|
|||
import { useRouter } from "next/router";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { useSwipeable } from "react-swipeable";
|
||||
import { Ico, Icon } from "./Ico";
|
||||
import { OrderableList } from "./Inputs/OrderableList";
|
||||
import { Select } from "./Inputs/Select";
|
||||
import { MainPanel } from "./Panels/MainPanel";
|
||||
|
@ -26,7 +21,7 @@ import { PreviewCard } from "./PreviewCard";
|
|||
|
||||
interface Props extends AppStaticProps {
|
||||
subPanel?: React.ReactNode;
|
||||
subPanelIcon?: string;
|
||||
subPanelIcon?: Icon;
|
||||
contentPanel?: React.ReactNode;
|
||||
title?: string;
|
||||
navTitle: string | null | undefined;
|
||||
|
@ -45,7 +40,7 @@ export function AppLayout(props: Immutable<Props>): JSX.Element {
|
|||
title,
|
||||
navTitle,
|
||||
description,
|
||||
subPanelIcon = "tune",
|
||||
subPanelIcon = Icon.Tune,
|
||||
} = props;
|
||||
const router = useRouter();
|
||||
const isMobile = useMediaMobile();
|
||||
|
@ -300,15 +295,14 @@ export function AppLayout(props: Immutable<Props>): JSX.Element {
|
|||
className="texture-paper-dots grid grid-cols-[5rem_1fr_5rem] place-items-center
|
||||
border-t-[1px] border-dotted border-black bg-light [grid-area:navbar] desktop:hidden"
|
||||
>
|
||||
<span
|
||||
className="material-icons mt-[.1em] cursor-pointer"
|
||||
<Ico
|
||||
icon={appLayout.mainPanelOpen ? Icon.Close : Icon.Menu}
|
||||
className="mt-[.1em] cursor-pointer"
|
||||
onClick={() => {
|
||||
appLayout.setMainPanelOpen(!appLayout.mainPanelOpen);
|
||||
appLayout.setSubPanelOpen(false);
|
||||
}}
|
||||
>
|
||||
{appLayout.mainPanelOpen ? "close" : "menu"}
|
||||
</span>
|
||||
/>
|
||||
<p
|
||||
className={`overflow-hidden text-center font-headers font-black ${
|
||||
ogTitle && ogTitle.length > 30
|
||||
|
@ -318,19 +312,16 @@ export function AppLayout(props: Immutable<Props>): JSX.Element {
|
|||
>
|
||||
{ogTitle}
|
||||
</p>
|
||||
<span
|
||||
className="material-icons mt-[.1em] cursor-pointer"
|
||||
onClick={() => {
|
||||
appLayout.setSubPanelOpen(!appLayout.subPanelOpen);
|
||||
appLayout.setMainPanelOpen(false);
|
||||
}}
|
||||
>
|
||||
{subPanel && !turnSubIntoContent
|
||||
? appLayout.subPanelOpen
|
||||
? "close"
|
||||
: subPanelIcon
|
||||
: ""}
|
||||
</span>
|
||||
{subPanel && !turnSubIntoContent && (
|
||||
<Ico
|
||||
icon={appLayout.subPanelOpen ? Icon.Close : subPanelIcon}
|
||||
className="mt-[.1em] cursor-pointer"
|
||||
onClick={() => {
|
||||
appLayout.setSubPanelOpen(!appLayout.subPanelOpen);
|
||||
appLayout.setMainPanelOpen(false);
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<Popup
|
||||
|
@ -398,18 +389,16 @@ export function AppLayout(props: Immutable<Props>): JSX.Element {
|
|||
appLayout.darkMode === false
|
||||
}
|
||||
className="rounded-r-none"
|
||||
>
|
||||
{langui.light}
|
||||
</Button>
|
||||
text={langui.light}
|
||||
/>
|
||||
<Button
|
||||
onClick={() => {
|
||||
appLayout.setSelectedThemeMode(false);
|
||||
}}
|
||||
active={appLayout.selectedThemeMode === false}
|
||||
className="rounded-l-none rounded-r-none border-x-0"
|
||||
>
|
||||
{langui.auto}
|
||||
</Button>
|
||||
text={langui.auto}
|
||||
/>
|
||||
<Button
|
||||
onClick={() => {
|
||||
appLayout.setDarkMode(true);
|
||||
|
@ -420,9 +409,8 @@ export function AppLayout(props: Immutable<Props>): JSX.Element {
|
|||
appLayout.darkMode === true
|
||||
}
|
||||
className="rounded-l-none"
|
||||
>
|
||||
{langui.dark}
|
||||
</Button>
|
||||
text={langui.dark}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -450,23 +438,18 @@ export function AppLayout(props: Immutable<Props>): JSX.Element {
|
|||
: 1 / 1.05
|
||||
)
|
||||
}
|
||||
>
|
||||
<span className="material-icons !text-base">
|
||||
text_decrease
|
||||
</span>
|
||||
</Button>
|
||||
icon={Icon.TextDecrease}
|
||||
/>
|
||||
<Button
|
||||
className="rounded-l-none rounded-r-none border-x-0"
|
||||
onClick={() => appLayout.setFontSize(1)}
|
||||
>
|
||||
{((appLayout.fontSize ?? 1) * 100).toLocaleString(
|
||||
text={`${((appLayout.fontSize ?? 1) * 100).toLocaleString(
|
||||
undefined,
|
||||
{
|
||||
maximumFractionDigits: 0,
|
||||
}
|
||||
)}
|
||||
%
|
||||
</Button>
|
||||
)}%`}
|
||||
/>
|
||||
<Button
|
||||
className="rounded-l-none"
|
||||
onClick={() =>
|
||||
|
@ -476,11 +459,8 @@ export function AppLayout(props: Immutable<Props>): JSX.Element {
|
|||
: 1 * 1.05
|
||||
)
|
||||
}
|
||||
>
|
||||
<span className="material-icons !text-base">
|
||||
text_increase
|
||||
</span>
|
||||
</Button>
|
||||
icon={Icon.TextIncrease}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -491,16 +471,14 @@ export function AppLayout(props: Immutable<Props>): JSX.Element {
|
|||
active={appLayout.dyslexic === false}
|
||||
onClick={() => appLayout.setDyslexic(false)}
|
||||
className="font-zenMaruGothic"
|
||||
>
|
||||
Zen Maru Gothic
|
||||
</Button>
|
||||
text="Zen Maru Gothic"
|
||||
/>
|
||||
<Button
|
||||
active={appLayout.dyslexic === true}
|
||||
onClick={() => appLayout.setDyslexic(true)}
|
||||
className="font-openDyslexic"
|
||||
>
|
||||
OpenDyslexic
|
||||
</Button>
|
||||
text="OpenDyslexic"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,3 +1,4 @@
|
|||
import { Ico, Icon } from "components/Ico";
|
||||
import { Immutable } from "helpers/types";
|
||||
import { useRouter } from "next/router";
|
||||
import { MouseEventHandler } from "react";
|
||||
|
@ -6,8 +7,9 @@ interface Props {
|
|||
id?: string;
|
||||
className?: string;
|
||||
href?: string;
|
||||
children: React.ReactNode;
|
||||
active?: boolean;
|
||||
icon?: Icon;
|
||||
text?: string | null | undefined;
|
||||
locale?: string;
|
||||
target?: "_blank";
|
||||
onClick?: MouseEventHandler<HTMLDivElement>;
|
||||
|
@ -22,7 +24,8 @@ export function Button(props: Immutable<Props>): JSX.Element {
|
|||
onClick,
|
||||
active,
|
||||
className,
|
||||
children,
|
||||
icon,
|
||||
text,
|
||||
target,
|
||||
href,
|
||||
locale,
|
||||
|
@ -52,7 +55,8 @@ export function Button(props: Immutable<Props>): JSX.Element {
|
|||
{badgeNumber}
|
||||
</div>
|
||||
)}
|
||||
{children}
|
||||
{icon && <Ico icon={icon} />}
|
||||
<p>{text}</p>
|
||||
</div>
|
||||
);
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { Icon } from "components/Ico";
|
||||
import { AppStaticProps } from "graphql/getAppStaticProps";
|
||||
import { prettyLanguage } from "helpers/formatters";
|
||||
import { Immutable } from "helpers/types";
|
||||
|
@ -26,18 +27,18 @@ export function LanguageSwitcher(props: Immutable<Props>): JSX.Element {
|
|||
<Button
|
||||
active={value === localesIndex}
|
||||
onClick={() => setLocalesIndex(value)}
|
||||
>
|
||||
{prettyLanguage(locale, props.languages)}
|
||||
</Button>
|
||||
text={prettyLanguage(locale, props.languages)}
|
||||
/>
|
||||
)}
|
||||
</Fragment>
|
||||
))}
|
||||
</div>
|
||||
}
|
||||
>
|
||||
<Button badgeNumber={locales.size > 1 ? locales.size : undefined}>
|
||||
<span className="material-icons">translate</span>
|
||||
</Button>
|
||||
<Button
|
||||
badgeNumber={locales.size > 1 ? locales.size : undefined}
|
||||
icon={Icon.Translate}
|
||||
/>
|
||||
</ToolTip>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { Ico, Icon } from "components/Ico";
|
||||
import { arrayMove } from "helpers/others";
|
||||
import { Immutable } from "helpers/types";
|
||||
import { Fragment, useEffect, useState } from "react";
|
||||
|
@ -63,24 +64,22 @@ export function OrderableList(props: Immutable<Props>): JSX.Element {
|
|||
>
|
||||
<div className="grid grid-rows-[.8em_.8em] place-items-center">
|
||||
{index > 0 && (
|
||||
<span
|
||||
className="material-icons row-start-1 cursor-pointer"
|
||||
<Ico
|
||||
icon={Icon.ArrowDropUp}
|
||||
className="row-start-1 cursor-pointer"
|
||||
onClick={() => {
|
||||
updateOrder(index, index - 1);
|
||||
}}
|
||||
>
|
||||
arrow_drop_up
|
||||
</span>
|
||||
/>
|
||||
)}
|
||||
{index < items.size - 1 && (
|
||||
<span
|
||||
className="material-icons row-start-2 cursor-pointer"
|
||||
<Ico
|
||||
icon={Icon.ArrowDropDown}
|
||||
className="row-start-2 cursor-pointer"
|
||||
onClick={() => {
|
||||
updateOrder(index, index + 1);
|
||||
}}
|
||||
>
|
||||
arrow_drop_down
|
||||
</span>
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
{value}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { Icon } from "components/Ico";
|
||||
import { Immutable } from "helpers/types";
|
||||
import { Dispatch, SetStateAction } from "react";
|
||||
import { Button } from "./Button";
|
||||
|
@ -19,18 +20,19 @@ export function PageSelector(props: Immutable<Props>): JSX.Element {
|
|||
if (page > 0) setPage(page - 1);
|
||||
}}
|
||||
className="rounded-r-none"
|
||||
>
|
||||
<span className="material-icons">navigate_before</span>
|
||||
</Button>
|
||||
<Button className="rounded-none border-x-0">{page + 1}</Button>
|
||||
icon={Icon.NavigateBefore}
|
||||
/>
|
||||
<Button
|
||||
className="rounded-none border-x-0"
|
||||
text={(page + 1).toString()}
|
||||
/>
|
||||
<Button
|
||||
onClick={() => {
|
||||
if (page < maxPage) setPage(page + 1);
|
||||
}}
|
||||
className="rounded-l-none"
|
||||
>
|
||||
<span className="material-icons">navigate_next</span>
|
||||
</Button>
|
||||
icon={Icon.NavigateNext}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { Ico, Icon } from "components/Ico";
|
||||
import { Immutable } from "helpers/types";
|
||||
import { Dispatch, Fragment, SetStateAction, useState } from "react";
|
||||
|
||||
|
@ -31,16 +32,16 @@ export function Select(props: Immutable<Props>): JSX.Element {
|
|||
{state === -1 ? "—" : options[state]}
|
||||
</p>
|
||||
{state >= 0 && allowEmpty && (
|
||||
<span
|
||||
<Ico
|
||||
icon={Icon.Close}
|
||||
className="!text-xs"
|
||||
onClick={() => setState(-1)}
|
||||
className="material-icons !text-xs"
|
||||
>
|
||||
close
|
||||
</span>
|
||||
/>
|
||||
)}
|
||||
<span onClick={() => setOpened(!opened)} className="material-icons">
|
||||
{opened ? "arrow_drop_up" : "arrow_drop_down"}
|
||||
</span>
|
||||
<Ico
|
||||
onClick={() => setOpened(!opened)}
|
||||
icon={opened ? Icon.ArrowDropUp : Icon.ArrowDropDown}
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
className={`left-0 right-0 rounded-b-[1em] ${
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { Chip } from "components/Chip";
|
||||
import { Ico, Icon } from "components/Ico";
|
||||
import { Button } from "components/Inputs/Button";
|
||||
import { GetLibraryItemQuery } from "graphql/generated";
|
||||
import { AppStaticProps } from "graphql/getAppStaticProps";
|
||||
|
@ -83,25 +84,21 @@ export function ContentLine(props: Immutable<Props>): JSX.Element {
|
|||
opened ? "grid" : "hidden"
|
||||
}`}
|
||||
>
|
||||
<span className="material-icons text-dark">
|
||||
subdirectory_arrow_right
|
||||
</span>
|
||||
<Ico icon={Icon.SubdirectoryArrowRight} className="text-dark" />
|
||||
|
||||
{content.attributes.scan_set &&
|
||||
content.attributes.scan_set.length > 0 && (
|
||||
<Button
|
||||
href={`/library/${parentSlug}/scans#${content.attributes.slug}`}
|
||||
>
|
||||
{langui.view_scans}
|
||||
</Button>
|
||||
text={langui.view_scans}
|
||||
/>
|
||||
)}
|
||||
|
||||
{content.attributes.content?.data && (
|
||||
<Button
|
||||
href={`/contents/${content.attributes.content.data.attributes?.slug}`}
|
||||
>
|
||||
{langui.open_content}
|
||||
</Button>
|
||||
text={langui.open_content}
|
||||
/>
|
||||
)}
|
||||
|
||||
{content.attributes.scan_set &&
|
||||
|
|
|
@ -100,9 +100,10 @@ export function ScanSet(props: Immutable<Props>): JSX.Element {
|
|||
|
||||
<div className="flex flex-row flex-wrap place-items-center gap-4 pb-6">
|
||||
{content?.data?.attributes?.slug && (
|
||||
<Button href={`/contents/${content.data.attributes.slug}`}>
|
||||
{langui.open_content}
|
||||
</Button>
|
||||
<Button
|
||||
href={`/contents/${content.data.attributes.slug}`}
|
||||
text={langui.open_content}
|
||||
/>
|
||||
)}
|
||||
|
||||
<LanguageSwitcher />
|
||||
|
|
|
@ -5,6 +5,7 @@ import { useSwipeable } from "react-swipeable";
|
|||
import { Img } from "./Img";
|
||||
import { Button } from "./Inputs/Button";
|
||||
import { Popup } from "./Popup";
|
||||
import { Icon } from "components/Ico";
|
||||
|
||||
interface Props {
|
||||
setState:
|
||||
|
@ -63,9 +64,7 @@ export function LightBox(props: Immutable<Props>): JSX.Element {
|
|||
>
|
||||
<div className="[grid-area:left]">
|
||||
{index > 0 && (
|
||||
<Button onClick={handlePrevious}>
|
||||
<span className="material-icons">chevron_left</span>
|
||||
</Button>
|
||||
<Button onClick={handlePrevious} icon={Icon.ChevronLeft} />
|
||||
)}
|
||||
</div>
|
||||
|
||||
|
@ -76,9 +75,7 @@ export function LightBox(props: Immutable<Props>): JSX.Element {
|
|||
|
||||
<div className="[grid-area:right]">
|
||||
{index < images.length - 1 && (
|
||||
<Button onClick={handleNext}>
|
||||
<span className="material-icons">chevron_right</span>
|
||||
</Button>
|
||||
<Button onClick={handleNext} icon={Icon.ChevronRight} />
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { HorizontalLine } from "components/HorizontalLine";
|
||||
import { Ico, Icon } from "components/Ico";
|
||||
import { Img } from "components/Img";
|
||||
import { InsetBox } from "components/InsetBox";
|
||||
import { ToolTip } from "components/ToolTip";
|
||||
|
@ -284,8 +285,9 @@ function HeaderToolTip(props: { id: string }) {
|
|||
className="text-sm"
|
||||
>
|
||||
<ToolTip content={"Copied! 👍"} trigger="click" className="text-sm">
|
||||
<span
|
||||
className="material-icons transition-color cursor-pointer hover:text-dark"
|
||||
<Ico
|
||||
icon={Icon.Link}
|
||||
className="transition-color cursor-pointer hover:text-dark"
|
||||
onClick={() => {
|
||||
navigator.clipboard.writeText(
|
||||
`${process.env.NEXT_PUBLIC_URL_SELF + window.location.pathname}#${
|
||||
|
@ -293,9 +295,7 @@ function HeaderToolTip(props: { id: string }) {
|
|||
}`
|
||||
);
|
||||
}}
|
||||
>
|
||||
link
|
||||
</span>
|
||||
/>
|
||||
</ToolTip>
|
||||
</ToolTip>
|
||||
);
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { Ico, Icon } from "components/Ico";
|
||||
import { ToolTip } from "components/ToolTip";
|
||||
import { Immutable } from "helpers/types";
|
||||
import { useRouter } from "next/router";
|
||||
|
@ -5,7 +6,7 @@ import { MouseEventHandler } from "react";
|
|||
|
||||
interface Props {
|
||||
url: string;
|
||||
icon?: string;
|
||||
icon?: Icon;
|
||||
title: string | null | undefined;
|
||||
subtitle?: string | null | undefined;
|
||||
border?: boolean;
|
||||
|
@ -54,9 +55,7 @@ export function NavOption(props: Immutable<Props>): JSX.Element {
|
|||
props.icon ? "text-left" : "text-center"
|
||||
} ${divCommon}`}
|
||||
>
|
||||
{props.icon && (
|
||||
<span className="material-icons mt-[.1em]">{props.icon}</span>
|
||||
)}
|
||||
{props.icon && <Ico icon={props.icon} className="mt-[.1em]" />}
|
||||
|
||||
{!props.reduced && (
|
||||
<div>
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
import { HorizontalLine } from "components/HorizontalLine";
|
||||
import { Ico, Icon } from "components/Ico";
|
||||
import { Immutable } from "helpers/types";
|
||||
|
||||
interface Props {
|
||||
icon?: string;
|
||||
icon?: Icon;
|
||||
title: string | null | undefined;
|
||||
description?: string | null | undefined;
|
||||
}
|
||||
|
@ -11,9 +12,7 @@ export function PanelHeader(props: Immutable<Props>): JSX.Element {
|
|||
return (
|
||||
<>
|
||||
<div className="grid w-full place-items-center">
|
||||
{props.icon && (
|
||||
<span className="material-icons mb-3 !text-4xl">{props.icon}</span>
|
||||
)}
|
||||
{props.icon && <Ico icon={props.icon} className="mb-3 !text-4xl" />}
|
||||
<h2 className="text-2xl">{props.title}</h2>
|
||||
{props.description ? <p>{props.description}</p> : ""}
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { HorizontalLine } from "components/HorizontalLine";
|
||||
import { Icon } from "components/Ico";
|
||||
import { Button } from "components/Inputs/Button";
|
||||
import { useAppLayout } from "contexts/AppLayoutContext";
|
||||
import { AppStaticProps } from "graphql/getAppStaticProps";
|
||||
|
@ -36,10 +37,9 @@ export function ReturnButton(props: Immutable<Props>): JSX.Element {
|
|||
onClick={() => appLayout.setSubPanelOpen(false)}
|
||||
href={props.href}
|
||||
className="grid grid-flow-col gap-2"
|
||||
>
|
||||
<span className="material-icons">navigate_before</span>
|
||||
{props.langui.return_to} {props.title}
|
||||
</Button>
|
||||
text={`${props.langui.return_to} ${props.title}`}
|
||||
icon={Icon.NavigateBefore}
|
||||
/>
|
||||
{props.horizontalLine && <HorizontalLine />}
|
||||
</div>
|
||||
);
|
||||
|
|
|
@ -8,6 +8,7 @@ import { Immutable } from "helpers/types";
|
|||
import { useMediaDesktop } from "hooks/useMediaQuery";
|
||||
import Markdown from "markdown-to-jsx";
|
||||
import Link from "next/link";
|
||||
import { Icon } from "components/Ico";
|
||||
|
||||
interface Props {
|
||||
langui: AppStaticProps["langui"];
|
||||
|
@ -34,9 +35,12 @@ export function MainPanel(props: Immutable<Props>): JSX.Element {
|
|||
appLayout.setMainPanelReduced(!appLayout.mainPanelReduced)
|
||||
}
|
||||
>
|
||||
<Button className="material-icons bg-light !px-2">
|
||||
{appLayout.mainPanelReduced ? "chevron_right" : "chevron_left"}
|
||||
</Button>
|
||||
<Button
|
||||
className="bg-light !px-2"
|
||||
icon={
|
||||
appLayout.mainPanelReduced ? Icon.ChevronRight : Icon.ChevronLeft
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
@ -74,9 +78,8 @@ export function MainPanel(props: Immutable<Props>): JSX.Element {
|
|||
onClick={() => {
|
||||
appLayout.setConfigPanelOpen(true);
|
||||
}}
|
||||
>
|
||||
<span className={"material-icons"}>settings</span>
|
||||
</Button>
|
||||
icon={Icon.Settings}
|
||||
/>
|
||||
</ToolTip>
|
||||
|
||||
<ToolTip
|
||||
|
@ -89,9 +92,8 @@ export function MainPanel(props: Immutable<Props>): JSX.Element {
|
|||
onClick={() => {
|
||||
appLayout.setSearchPanelOpen(true);
|
||||
}}
|
||||
>
|
||||
<span className={"material-icons"}>search</span>
|
||||
</Button>
|
||||
icon={Icon.Search}
|
||||
/>
|
||||
</ToolTip>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -101,7 +103,7 @@ export function MainPanel(props: Immutable<Props>): JSX.Element {
|
|||
|
||||
<NavOption
|
||||
url="/library"
|
||||
icon="library_books"
|
||||
icon={Icon.LibraryBooks}
|
||||
title={langui.library}
|
||||
subtitle={langui.library_short_description}
|
||||
reduced={appLayout.mainPanelReduced && isDesktop}
|
||||
|
@ -109,7 +111,7 @@ export function MainPanel(props: Immutable<Props>): JSX.Element {
|
|||
|
||||
<NavOption
|
||||
url="/contents"
|
||||
icon="workspaces"
|
||||
icon={Icon.Workspaces}
|
||||
title={langui.contents}
|
||||
subtitle={langui.contents_short_description}
|
||||
reduced={appLayout.mainPanelReduced && isDesktop}
|
||||
|
@ -117,63 +119,61 @@ export function MainPanel(props: Immutable<Props>): JSX.Element {
|
|||
|
||||
<NavOption
|
||||
url="/wiki"
|
||||
icon="travel_explore"
|
||||
icon={Icon.TravelExplore}
|
||||
title={langui.wiki}
|
||||
subtitle={langui.wiki_short_description}
|
||||
reduced={appLayout.mainPanelReduced && isDesktop}
|
||||
/>
|
||||
|
||||
{/*
|
||||
|
||||
<NavOption
|
||||
url="/chronicles"
|
||||
icon="watch_later"
|
||||
icon={Icon.WatchLater}
|
||||
title={langui.chronicles}
|
||||
subtitle={langui.chronicles_short_description}
|
||||
|
||||
reduced={appLayout.mainPanelReduced && isDesktop}
|
||||
|
||||
/>
|
||||
|
||||
*/}
|
||||
|
||||
<HorizontalLine />
|
||||
|
||||
<NavOption
|
||||
url="/news"
|
||||
icon="feed"
|
||||
icon={Icon.Feed}
|
||||
title={langui.news}
|
||||
reduced={appLayout.mainPanelReduced && isDesktop}
|
||||
/>
|
||||
|
||||
{/*
|
||||
<NavOption
|
||||
url="/merch"
|
||||
icon="store"
|
||||
icon={Icon.Store}
|
||||
title={langui.merch}
|
||||
|
||||
reduced={appLayout.mainPanelReduced && isDesktop}
|
||||
|
||||
/>
|
||||
|
||||
*/}
|
||||
|
||||
<NavOption
|
||||
url="https://gallery.accords-library.com/"
|
||||
icon="collections"
|
||||
icon={Icon.Collections}
|
||||
title={langui.gallery}
|
||||
reduced={appLayout.mainPanelReduced && isDesktop}
|
||||
/>
|
||||
|
||||
<NavOption
|
||||
url="/archives"
|
||||
icon="inventory"
|
||||
icon={Icon.Inventory}
|
||||
title={langui.archives}
|
||||
reduced={appLayout.mainPanelReduced && isDesktop}
|
||||
/>
|
||||
|
||||
<NavOption
|
||||
url="/about-us"
|
||||
icon="info"
|
||||
icon={Icon.Info}
|
||||
title={langui.about_us}
|
||||
reduced={appLayout.mainPanelReduced && isDesktop}
|
||||
/>
|
||||
|
|
|
@ -15,6 +15,7 @@ import { ImageQuality } from "helpers/img";
|
|||
import { Immutable } from "helpers/types";
|
||||
import Link from "next/link";
|
||||
import { Chip } from "./Chip";
|
||||
import { Ico, Icon } from "./Ico";
|
||||
import { Img } from "./Img";
|
||||
|
||||
interface Props {
|
||||
|
@ -69,17 +70,19 @@ export function PreviewCard(props: Immutable<Props>): JSX.Element {
|
|||
<div className="flex w-full flex-row flex-wrap gap-x-3">
|
||||
{metadata.release_date && (
|
||||
<p className="text-sm mobile:text-xs">
|
||||
<span className="material-icons mr-1 translate-y-[.15em] !text-base">
|
||||
event
|
||||
</span>
|
||||
<Ico
|
||||
icon={Icon.Event}
|
||||
className="mr-1 translate-y-[.15em] !text-base"
|
||||
/>
|
||||
{prettyDate(metadata.release_date)}
|
||||
</p>
|
||||
)}
|
||||
{metadata.price && metadata.currencies && (
|
||||
<p className="justify-self-end text-sm mobile:text-xs">
|
||||
<span className="material-icons mr-1 translate-y-[.15em] !text-base">
|
||||
shopping_cart
|
||||
</span>
|
||||
<Ico
|
||||
icon={Icon.ShoppingCart}
|
||||
className="mr-1 translate-y-[.15em] !text-base"
|
||||
/>
|
||||
{prettyPrice(
|
||||
metadata.price,
|
||||
metadata.currencies,
|
||||
|
@ -89,17 +92,19 @@ export function PreviewCard(props: Immutable<Props>): JSX.Element {
|
|||
)}
|
||||
{metadata.views && (
|
||||
<p className="text-sm mobile:text-xs">
|
||||
<span className="material-icons mr-1 translate-y-[.15em] !text-base">
|
||||
visibility
|
||||
</span>
|
||||
<Ico
|
||||
icon={Icon.Visibility}
|
||||
className="mr-1 translate-y-[.15em] !text-base"
|
||||
/>
|
||||
{prettyShortenNumber(metadata.views)}
|
||||
</p>
|
||||
)}
|
||||
{metadata.author && (
|
||||
<p className="text-sm mobile:text-xs">
|
||||
<span className="material-icons mr-1 translate-y-[.15em] !text-base">
|
||||
person
|
||||
</span>
|
||||
<Ico
|
||||
icon={Icon.Person}
|
||||
className="mr-1 translate-y-[.15em] !text-base"
|
||||
/>
|
||||
{metadata.author}
|
||||
</p>
|
||||
)}
|
||||
|
@ -175,12 +180,10 @@ export function PreviewCard(props: Immutable<Props>): JSX.Element {
|
|||
bg-shade bg-opacity-[var(--bg-opacity)] text-light
|
||||
transition-colors drop-shadow-shade-lg"
|
||||
>
|
||||
<span
|
||||
className="material-icons text-6xl
|
||||
opacity-[var(--play-opacity)] transition-opacity"
|
||||
>
|
||||
play_circle_outline
|
||||
</span>
|
||||
<Ico
|
||||
icon={Icon.PlayCircleOutline}
|
||||
className="text-6xl opacity-[var(--play-opacity)] transition-opacity"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
className="absolute right-2 bottom-2 rounded-full bg-black
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { Chip } from "components/Chip";
|
||||
import { Ico, Icon } from "components/Ico";
|
||||
import { ToolTip } from "components/ToolTip";
|
||||
import {
|
||||
Enum_Componenttranslationschronologyitem_Status,
|
||||
|
@ -150,10 +151,10 @@ export function ChronologyItemComponent(props: Immutable<Props>): JSX.Element {
|
|||
{event.source?.data ? (
|
||||
`(${event.source.data.attributes?.name})`
|
||||
) : (
|
||||
<>
|
||||
<span className="material-icons !text-sm">warning</span>
|
||||
<div className="flex items-center gap-1">
|
||||
<Ico icon={Icon.Warning} className="!text-sm" />
|
||||
No sources!
|
||||
</>
|
||||
</div>
|
||||
)}
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { AppLayout } from "components/AppLayout";
|
||||
import { Icon } from "components/Ico";
|
||||
import { NavOption } from "components/PanelComponents/NavOption";
|
||||
import { PanelHeader } from "components/PanelComponents/PanelHeader";
|
||||
import { SubPanel } from "components/Panels/SubPanel";
|
||||
|
@ -13,7 +14,7 @@ export default function AboutUs(props: Immutable<Props>): JSX.Element {
|
|||
const subPanel = (
|
||||
<SubPanel>
|
||||
<PanelHeader
|
||||
icon="info"
|
||||
icon={Icon.Info}
|
||||
title={langui.about_us}
|
||||
description={langui.about_us_description}
|
||||
/>
|
||||
|
|
|
@ -5,6 +5,7 @@ import { SubPanel } from "components/Panels/SubPanel";
|
|||
import { AppStaticProps, getAppStaticProps } from "graphql/getAppStaticProps";
|
||||
import { Immutable } from "helpers/types";
|
||||
import { GetStaticPropsContext } from "next";
|
||||
import { Icon } from "components/Ico";
|
||||
|
||||
interface Props extends AppStaticProps {}
|
||||
|
||||
|
@ -13,7 +14,7 @@ export default function Archives(props: Immutable<Props>): JSX.Element {
|
|||
const subPanel = (
|
||||
<SubPanel>
|
||||
<PanelHeader
|
||||
icon="inventory"
|
||||
icon={Icon.Inventory}
|
||||
title={langui.archives}
|
||||
description={langui.archives_description}
|
||||
/>
|
||||
|
|
|
@ -21,6 +21,7 @@ import {
|
|||
GetStaticPropsContext,
|
||||
} from "next";
|
||||
import { Fragment, useState } from "react";
|
||||
import { Icon } from "components/Ico";
|
||||
|
||||
interface Props extends AppStaticProps {
|
||||
channel: NonNullable<
|
||||
|
@ -43,7 +44,7 @@ export default function Channel(props: Props): JSX.Element {
|
|||
/>
|
||||
|
||||
<PanelHeader
|
||||
icon="movie"
|
||||
icon={Icon.Movie}
|
||||
title={langui.videos}
|
||||
description={langui.archives_description}
|
||||
/>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { AppLayout } from "components/AppLayout";
|
||||
import { Icon } from "components/Ico";
|
||||
import { PageSelector } from "components/Inputs/PageSelector";
|
||||
import { Switch } from "components/Inputs/Switch";
|
||||
import { PanelHeader } from "components/PanelComponents/PanelHeader";
|
||||
|
@ -61,7 +62,7 @@ export default function Videos(props: Props): JSX.Element {
|
|||
/>
|
||||
|
||||
<PanelHeader
|
||||
icon="movie"
|
||||
icon={Icon.Movie}
|
||||
title="Videos"
|
||||
description={langui.archives_description}
|
||||
/>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { AppLayout } from "components/AppLayout";
|
||||
import { HorizontalLine } from "components/HorizontalLine";
|
||||
import { Ico, Icon } from "components/Ico";
|
||||
import { Button } from "components/Inputs/Button";
|
||||
import { InsetBox } from "components/InsetBox";
|
||||
import { NavOption } from "components/PanelComponents/NavOption";
|
||||
|
@ -107,24 +108,27 @@ export default function Video(props: Props): JSX.Element {
|
|||
<h1 className="text-2xl">{video.title}</h1>
|
||||
<div className="flex w-full flex-row flex-wrap gap-x-6">
|
||||
<p>
|
||||
<span className="material-icons mr-1 translate-y-[.15em] !text-base">
|
||||
event
|
||||
</span>
|
||||
<Ico
|
||||
icon={Icon.Event}
|
||||
className="mr-1 translate-y-[.15em] !text-base"
|
||||
/>
|
||||
{prettyDate(video.published_date)}
|
||||
</p>
|
||||
<p>
|
||||
<span className="material-icons mr-1 translate-y-[.15em] !text-base">
|
||||
visibility
|
||||
</span>
|
||||
<Ico
|
||||
icon={Icon.Visibility}
|
||||
className="mr-1 translate-y-[.15em] !text-base"
|
||||
/>
|
||||
{isMobile
|
||||
? prettyShortenNumber(video.views)
|
||||
: video.views.toLocaleString()}
|
||||
</p>
|
||||
{video.channel?.data?.attributes && (
|
||||
<p>
|
||||
<span className="material-icons mr-1 translate-y-[.15em] !text-base">
|
||||
thumb_up
|
||||
</span>
|
||||
<Ico
|
||||
icon={Icon.ThumbUp}
|
||||
className="mr-1 translate-y-[.15em] !text-base"
|
||||
/>
|
||||
{isMobile
|
||||
? prettyShortenNumber(video.likes)
|
||||
: video.likes.toLocaleString()}
|
||||
|
@ -135,7 +139,10 @@ export default function Video(props: Props): JSX.Element {
|
|||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
<Button className="!py-0 !px-3">{`${langui.view_on} ${video.source}`}</Button>
|
||||
<Button
|
||||
className="!py-0 !px-3"
|
||||
text={`${langui.view_on} ${video.source}`}
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -148,10 +155,8 @@ export default function Video(props: Props): JSX.Element {
|
|||
<div>
|
||||
<Button
|
||||
href={`/archives/videos/c/${video.channel.data.attributes.uid}`}
|
||||
>
|
||||
<h3>{video.channel.data.attributes.title}</h3>
|
||||
</Button>
|
||||
|
||||
text={video.channel.data.attributes.title}
|
||||
/>
|
||||
<p>
|
||||
{`${video.channel.data.attributes.subscribers.toLocaleString()}
|
||||
${langui.subscribers?.toLowerCase()}`}
|
||||
|
|
|
@ -4,6 +4,7 @@ import { SubPanel } from "components/Panels/SubPanel";
|
|||
import { AppStaticProps, getAppStaticProps } from "graphql/getAppStaticProps";
|
||||
import { Immutable } from "helpers/types";
|
||||
import { GetStaticPropsContext } from "next";
|
||||
import { Icon } from "components/Ico";
|
||||
|
||||
interface Props extends AppStaticProps {}
|
||||
|
||||
|
@ -12,7 +13,7 @@ export default function Chronicles(props: Immutable<Props>): JSX.Element {
|
|||
const subPanel = (
|
||||
<SubPanel>
|
||||
<PanelHeader
|
||||
icon="watch_later"
|
||||
icon={Icon.WatchLater}
|
||||
title={langui.chronicles}
|
||||
description={langui.chronicles_description}
|
||||
/>
|
||||
|
|
|
@ -16,6 +16,7 @@ import { prettyinlineTitle, prettySlug } from "helpers/formatters";
|
|||
import { Immutable } from "helpers/types";
|
||||
import { GetStaticPropsContext } from "next";
|
||||
import { Fragment, useEffect, useState } from "react";
|
||||
import { Icon } from "components/Ico";
|
||||
|
||||
interface Props extends AppStaticProps {
|
||||
contents: NonNullable<GetContentsQuery["contents"]>["data"];
|
||||
|
@ -65,7 +66,7 @@ export default function Contents(props: Immutable<Props>): JSX.Element {
|
|||
const subPanel = (
|
||||
<SubPanel>
|
||||
<PanelHeader
|
||||
icon="workspaces"
|
||||
icon={Icon.Workspaces}
|
||||
title={langui.contents}
|
||||
description={langui.contents_description}
|
||||
/>
|
||||
|
@ -202,7 +203,7 @@ export default function Contents(props: Immutable<Props>): JSX.Element {
|
|||
navTitle={langui.contents}
|
||||
subPanel={subPanel}
|
||||
contentPanel={contentPanel}
|
||||
subPanelIcon="search"
|
||||
subPanelIcon={Icon.Search}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
|
|
|
@ -44,16 +44,14 @@ export default function CheckupContents(props: Immutable<Props>): JSX.Element {
|
|||
href={line.frontendUrl}
|
||||
target="_blank"
|
||||
className="w-4 text-xs"
|
||||
>
|
||||
F
|
||||
</Button>
|
||||
text="F"
|
||||
/>
|
||||
<Button
|
||||
href={line.backendUrl}
|
||||
target="_blank"
|
||||
className="w-4 text-xs"
|
||||
>
|
||||
B
|
||||
</Button>
|
||||
text="B"
|
||||
/>
|
||||
<p>{line.subitems.join(" -> ")}</p>
|
||||
<p>{line.name}</p>
|
||||
<Chip>{line.type}</Chip>
|
||||
|
|
|
@ -49,16 +49,14 @@ export default function CheckupLibraryItems(
|
|||
href={line.frontendUrl}
|
||||
target="_blank"
|
||||
className="w-4 text-xs"
|
||||
>
|
||||
F
|
||||
</Button>
|
||||
text="F"
|
||||
/>
|
||||
<Button
|
||||
href={line.backendUrl}
|
||||
target="_blank"
|
||||
className="w-4 text-xs"
|
||||
>
|
||||
B
|
||||
</Button>
|
||||
text="B"
|
||||
/>
|
||||
<p>{line.subitems.join(" -> ")}</p>
|
||||
<p>{line.name}</p>
|
||||
<Chip>{line.type}</Chip>
|
||||
|
|
|
@ -12,6 +12,7 @@ import { Immutable } from "helpers/types";
|
|||
import { GetStaticPropsContext } from "next";
|
||||
import { useCallback, useState } from "react";
|
||||
import TurndownService from "turndown";
|
||||
import { Ico, Icon } from "components/Ico";
|
||||
|
||||
interface Props extends AppStaticProps {}
|
||||
|
||||
|
@ -87,10 +88,7 @@ export default function Editor(props: Immutable<Props>): JSX.Element {
|
|||
<p>
|
||||
Use this to create dialogues and transcripts. You can then add
|
||||
transcript speech line within (
|
||||
<span className="material-icons text-xs">
|
||||
record_voice_over
|
||||
</span>
|
||||
)
|
||||
<Ico className="text-xs" icon={Icon.RecordVoiceOver} />)
|
||||
</p>
|
||||
</>
|
||||
}
|
||||
|
@ -110,9 +108,8 @@ export default function Editor(props: Immutable<Props>): JSX.Element {
|
|||
);
|
||||
handleInput(textarea.value);
|
||||
}}
|
||||
>
|
||||
<span className="material-icons">question_answer</span>
|
||||
</Button>
|
||||
icon={Icon.QuestionAnswer}
|
||||
/>
|
||||
</ToolTip>
|
||||
<ToolTip
|
||||
placement="bottom"
|
||||
|
@ -142,9 +139,8 @@ export default function Editor(props: Immutable<Props>): JSX.Element {
|
|||
);
|
||||
handleInput(textarea.value);
|
||||
}}
|
||||
>
|
||||
<span className="material-icons">record_voice_over</span>
|
||||
</Button>
|
||||
icon={Icon.RecordVoiceOver}
|
||||
/>
|
||||
</ToolTip>
|
||||
<ToolTip
|
||||
placement="bottom"
|
||||
|
@ -165,9 +161,8 @@ export default function Editor(props: Immutable<Props>): JSX.Element {
|
|||
);
|
||||
handleInput(textarea.value);
|
||||
}}
|
||||
>
|
||||
<span className="material-icons">density_large</span>
|
||||
</Button>
|
||||
icon={Icon.DensityLarge}
|
||||
/>
|
||||
</ToolTip>
|
||||
|
||||
<ToolTip
|
||||
|
@ -189,9 +184,8 @@ export default function Editor(props: Immutable<Props>): JSX.Element {
|
|||
);
|
||||
handleInput(textarea.value);
|
||||
}}
|
||||
>
|
||||
<span className="material-icons">check_box_outline_blank</span>
|
||||
</Button>
|
||||
icon={Icon.CheckBoxOutlineBlank}
|
||||
/>
|
||||
</ToolTip>
|
||||
<ToolTip
|
||||
placement="bottom"
|
||||
|
@ -212,9 +206,8 @@ export default function Editor(props: Immutable<Props>): JSX.Element {
|
|||
);
|
||||
handleInput(textarea.value);
|
||||
}}
|
||||
>
|
||||
<span className="material-icons">more_horiz</span>
|
||||
</Button>
|
||||
icon={Icon.MoreHoriz}
|
||||
/>
|
||||
</ToolTip>
|
||||
<ToolTip
|
||||
content={
|
||||
|
@ -247,9 +240,8 @@ export default function Editor(props: Immutable<Props>): JSX.Element {
|
|||
);
|
||||
handleInput(textarea.value);
|
||||
}}
|
||||
>
|
||||
<span className="material-icons">link</span>
|
||||
</Button>
|
||||
icon={Icon.Link}
|
||||
/>
|
||||
</ToolTip>
|
||||
<ToolTip
|
||||
placement="right"
|
||||
|
@ -278,18 +270,14 @@ export default function Editor(props: Immutable<Props>): JSX.Element {
|
|||
);
|
||||
handleInput(textarea.value);
|
||||
}}
|
||||
>
|
||||
<p className="flex place-items-center gap-1">
|
||||
<span className="material-icons">link</span>+ target
|
||||
</p>
|
||||
</Button>
|
||||
icon={Icon.Link}
|
||||
text="+ target"
|
||||
/>
|
||||
</ToolTip>
|
||||
</div>
|
||||
}
|
||||
>
|
||||
<Button>
|
||||
<span className="material-icons">link</span>
|
||||
</Button>
|
||||
<Button icon={Icon.Link} />
|
||||
</ToolTip>
|
||||
|
||||
<ToolTip
|
||||
|
@ -311,9 +299,8 @@ export default function Editor(props: Immutable<Props>): JSX.Element {
|
|||
);
|
||||
handleInput(textarea.value);
|
||||
}}
|
||||
>
|
||||
<span className="material-icons">person</span>
|
||||
</Button>
|
||||
icon={Icon.Person}
|
||||
/>
|
||||
</ToolTip>
|
||||
|
||||
<ToolTip
|
||||
|
@ -324,9 +311,8 @@ export default function Editor(props: Immutable<Props>): JSX.Element {
|
|||
onClick={() => {
|
||||
setConverterOpened(true);
|
||||
}}
|
||||
>
|
||||
<span className="material-icons">html</span>
|
||||
</Button>
|
||||
icon={Icon.Html}
|
||||
/>
|
||||
</ToolTip>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -157,13 +157,12 @@ export default function LibrarySlug(props: Immutable<Props>): JSX.Element {
|
|||
<p>{langui.subitem_of}</p>
|
||||
<Button
|
||||
href={`/library/${item.subitem_of.data[0].attributes.slug}`}
|
||||
>
|
||||
{prettyinlineTitle(
|
||||
text={prettyinlineTitle(
|
||||
"",
|
||||
item.subitem_of.data[0].attributes.title,
|
||||
item.subitem_of.data[0].attributes.subtitle
|
||||
)}
|
||||
</Button>
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
<div className="grid place-items-center">
|
||||
|
@ -188,9 +187,11 @@ export default function LibrarySlug(props: Immutable<Props>): JSX.Element {
|
|||
{item.urls.map((url, index) => (
|
||||
<Fragment key={index}>
|
||||
{url?.url && (
|
||||
<Button href={url.url} target={"_blank"}>
|
||||
{prettyURL(url.url)}
|
||||
</Button>
|
||||
<Button
|
||||
href={url.url}
|
||||
target={"_blank"}
|
||||
text={prettyURL(url.url)}
|
||||
/>
|
||||
)}
|
||||
</Fragment>
|
||||
))}
|
||||
|
@ -437,9 +438,7 @@ export default function LibrarySlug(props: Immutable<Props>): JSX.Element {
|
|||
<div id="contents" className="grid w-full place-items-center gap-8">
|
||||
<h2 className="-mb-6 text-2xl">{langui.contents}</h2>
|
||||
{displayOpenScans && (
|
||||
<Button href={`/library/${item.slug}/scans`}>
|
||||
{langui.view_scans}
|
||||
</Button>
|
||||
<Button href={`/library/${item.slug}/scans`} text={langui.view_scans}/>
|
||||
)}
|
||||
<div className="grid w-full gap-4">
|
||||
{item.contents.data.map((content) => (
|
||||
|
|
|
@ -21,6 +21,7 @@ import { convertPrice } from "helpers/numbers";
|
|||
import { Immutable } from "helpers/types";
|
||||
import { GetStaticPropsContext } from "next";
|
||||
import { Fragment, useEffect, useState } from "react";
|
||||
import { Icon } from "components/Ico";
|
||||
|
||||
interface Props extends AppStaticProps {
|
||||
items: NonNullable<GetLibraryItemsPreviewQuery["libraryItems"]>["data"];
|
||||
|
@ -86,7 +87,7 @@ export default function Library(props: Immutable<Props>): JSX.Element {
|
|||
const subPanel = (
|
||||
<SubPanel>
|
||||
<PanelHeader
|
||||
icon="library_books"
|
||||
icon={Icon.LibraryBooks}
|
||||
title={langui.library}
|
||||
description={langui.library_description}
|
||||
/>
|
||||
|
@ -219,7 +220,7 @@ export default function Library(props: Immutable<Props>): JSX.Element {
|
|||
navTitle={langui.library}
|
||||
subPanel={subPanel}
|
||||
contentPanel={contentPanel}
|
||||
subPanelIcon="search"
|
||||
subPanelIcon={Icon.Search}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
|
|
|
@ -4,6 +4,7 @@ import { SubPanel } from "components/Panels/SubPanel";
|
|||
import { AppStaticProps, getAppStaticProps } from "graphql/getAppStaticProps";
|
||||
import { Immutable } from "helpers/types";
|
||||
import { GetStaticPropsContext } from "next";
|
||||
import { Icon } from "components/Ico";
|
||||
|
||||
interface Props extends AppStaticProps {}
|
||||
export default function Merch(props: Immutable<Props>): JSX.Element {
|
||||
|
@ -11,7 +12,7 @@ export default function Merch(props: Immutable<Props>): JSX.Element {
|
|||
const subPanel = (
|
||||
<SubPanel>
|
||||
<PanelHeader
|
||||
icon="store"
|
||||
icon={Icon.Store}
|
||||
title={langui.merch}
|
||||
description={langui.merch_description}
|
||||
/>
|
||||
|
|
|
@ -14,6 +14,7 @@ import { prettyDate, prettySlug } from "helpers/formatters";
|
|||
import { Immutable } from "helpers/types";
|
||||
import { GetStaticPropsContext } from "next";
|
||||
import { Fragment, useState } from "react";
|
||||
import { Icon } from "components/Ico";
|
||||
|
||||
interface Props extends AppStaticProps {
|
||||
posts: NonNullable<GetPostsPreviewQuery["posts"]>["data"];
|
||||
|
@ -28,7 +29,7 @@ export default function News(props: Immutable<Props>): JSX.Element {
|
|||
const subPanel = (
|
||||
<SubPanel>
|
||||
<PanelHeader
|
||||
icon="feed"
|
||||
icon={Icon.Feed}
|
||||
title={langui.news}
|
||||
description={langui.news_description}
|
||||
/>
|
||||
|
|
|
@ -5,6 +5,7 @@ import { SubPanel } from "components/Panels/SubPanel";
|
|||
import { AppStaticProps, getAppStaticProps } from "graphql/getAppStaticProps";
|
||||
import { Immutable } from "helpers/types";
|
||||
import { GetStaticPropsContext } from "next";
|
||||
import { Icon } from "components/Ico";
|
||||
|
||||
interface Props extends AppStaticProps {}
|
||||
|
||||
|
@ -13,7 +14,7 @@ export default function Wiki(props: Immutable<Props>): JSX.Element {
|
|||
const subPanel = (
|
||||
<SubPanel>
|
||||
<PanelHeader
|
||||
icon="travel_explore"
|
||||
icon={Icon.TravelExplore}
|
||||
title={langui.wiki}
|
||||
description={langui.wiki_description}
|
||||
/>
|
||||
|
|
Loading…
Reference in New Issue