diff --git a/api/routes/images.json b/api/routes/images.json index efbc111..773a19e 100644 --- a/api/routes/images.json +++ b/api/routes/images.json @@ -3052,7 +3052,7 @@ "Eclipse Deity", "Lances" ], - "href": "https://skeb.jp/@braveggg/works/5", + "href": "https://skeb.jp/@braveggg/works/6", "published": "2024-03-20", "aspectRatio": 0.8243310619910255, "thumbnailUrl": "https://alcorsiteartbucket.s3.amazonaws.com/thumbnail/alts/eclipse_deity_u_03_b_3_1.webp", @@ -3666,21 +3666,6 @@ "Alcor" ] }, - { - "tags": [ - "Eclipse Deity" - ], - "href": "", - "aspectRatio": 0.8243310619910255, - "parent": "Eclipse Deity γ", - "thumbnailUrl": "https://alcorsiteartbucket.s3.amazonaws.com/thumbnail/alts/eclipse_deity_u_03_b_3_2.webp", - "webp": "https://alcorsiteartbucket.s3.amazonaws.com/webp/alts/eclipse_deity_u_03_b_3_2.webp", - "src": "https://alcorsiteartbucket.s3.amazonaws.com/eclipse_deity_v3/0.png", - "rating": "general", - "characters": [ - "Alcor" - ] - }, { "title": "Biogenesis Suit Design", "artist": "@EmberWickArt", @@ -4570,7 +4555,7 @@ "tags": [ "AICore Form" ], - "href": "https://x.com/pawcrest/status/1825619442828718502", + "href": "https://x.com/pawcrest/status/1825619445978640452", "aspectRatio": 0.7960799095363739, "rating": "sensitive", "characters": [ @@ -4588,7 +4573,7 @@ "tags": [ "AICore Form" ], - "href": "https://x.com/pawcrest/status/1825619445978640452", + "href": "https://x.com/pawcrest/status/1825619442828718502", "aspectRatio": 0.7960799095363739, "characters": [ "Alcor", @@ -4735,8 +4720,8 @@ "Bodysuit", "Techwear" ], - "href": "", - "published": "2024-08-24", + "href": "https://bsky.app/profile/faintalcor.bsky.social/post/3l2ocki4pnr2c", + "published": "2024-08-26", "aspectRatio": 3, "rating": "mainstream", "characters": [ diff --git a/src/RouterPaths.tsx b/src/RouterPaths.tsx index 065cc86..715e605 100644 --- a/src/RouterPaths.tsx +++ b/src/RouterPaths.tsx @@ -12,6 +12,7 @@ import {SomaInfo} from "./components/about/characters/SomaInfo"; import React from "react"; import {AnalyticsPage} from "./components/analytics/AnalyticsPage"; import {MinimalGalleryPage} from "./components/gallery/MinimalGalleryPage"; +import {CharactersPage} from "./components/about/characters/CharactersPage"; export const router = createHashRouter([ { @@ -20,18 +21,24 @@ export const router = createHashRouter([ children: [ { path: "/gallery", - element: + children: [ + { + index: true, + element: + }, + { + path: "/gallery/:title", + element: + }, + ] }, { path: '/analytics', element: }, + { - path: "/artwork", - element: - }, - { - path: "about", + path: "/about", element: , children: [ ...alcorForms.concat(superheroSuits).map(value => ({ @@ -55,6 +62,10 @@ export const router = createHashRouter([ element: } ] + }, + { + path: "/characters", + element: } ] }, diff --git a/src/components/about/about-resources/character-badges/Character_Badge_-page001.png b/src/components/about/about-resources/character-badges/Character_Badge_-page001.png new file mode 100644 index 0000000..3ce41a8 Binary files /dev/null and b/src/components/about/about-resources/character-badges/Character_Badge_-page001.png differ diff --git a/src/components/about/about-resources/character-badges/Character_Badge_-page002.png b/src/components/about/about-resources/character-badges/Character_Badge_-page002.png new file mode 100644 index 0000000..636c158 Binary files /dev/null and b/src/components/about/about-resources/character-badges/Character_Badge_-page002.png differ diff --git a/src/components/about/about-resources/character-badges/Character_Badge_-page003.png b/src/components/about/about-resources/character-badges/Character_Badge_-page003.png new file mode 100644 index 0000000..7014913 Binary files /dev/null and b/src/components/about/about-resources/character-badges/Character_Badge_-page003.png differ diff --git a/src/components/about/about-resources/character-badges/Character_Badge_-page004.png b/src/components/about/about-resources/character-badges/Character_Badge_-page004.png new file mode 100644 index 0000000..3b99196 Binary files /dev/null and b/src/components/about/about-resources/character-badges/Character_Badge_-page004.png differ diff --git a/src/components/about/about-resources/character-badges/Character_Badge_-page005.png b/src/components/about/about-resources/character-badges/Character_Badge_-page005.png new file mode 100644 index 0000000..0d1afb2 Binary files /dev/null and b/src/components/about/about-resources/character-badges/Character_Badge_-page005.png differ diff --git a/src/components/about/about-resources/character-badges/Character_Badge_-page006.png b/src/components/about/about-resources/character-badges/Character_Badge_-page006.png new file mode 100644 index 0000000..cab99dd Binary files /dev/null and b/src/components/about/about-resources/character-badges/Character_Badge_-page006.png differ diff --git a/src/components/about/about-resources/character-badges/Character_Badge_-page007.png b/src/components/about/about-resources/character-badges/Character_Badge_-page007.png new file mode 100644 index 0000000..a7ece9b Binary files /dev/null and b/src/components/about/about-resources/character-badges/Character_Badge_-page007.png differ diff --git a/src/components/about/about-resources/character-badges/Character_Badge_-page008.png b/src/components/about/about-resources/character-badges/Character_Badge_-page008.png new file mode 100644 index 0000000..ab5c150 Binary files /dev/null and b/src/components/about/about-resources/character-badges/Character_Badge_-page008.png differ diff --git a/src/components/about/about-resources/character-badges/Character_Badge_-page009.png b/src/components/about/about-resources/character-badges/Character_Badge_-page009.png new file mode 100644 index 0000000..8cc6419 Binary files /dev/null and b/src/components/about/about-resources/character-badges/Character_Badge_-page009.png differ diff --git a/src/components/about/about-resources/character-badges/Character_Badge_-page010.png b/src/components/about/about-resources/character-badges/Character_Badge_-page010.png new file mode 100644 index 0000000..e95aaa4 Binary files /dev/null and b/src/components/about/about-resources/character-badges/Character_Badge_-page010.png differ diff --git a/src/components/about/about-resources/character-badges/Character_Badge_-page011.png b/src/components/about/about-resources/character-badges/Character_Badge_-page011.png new file mode 100644 index 0000000..8529c95 Binary files /dev/null and b/src/components/about/about-resources/character-badges/Character_Badge_-page011.png differ diff --git a/src/components/about/characters/CharactersPage.tsx b/src/components/about/characters/CharactersPage.tsx index 5b72494..36c7fdd 100644 --- a/src/components/about/characters/CharactersPage.tsx +++ b/src/components/about/characters/CharactersPage.tsx @@ -1,6 +1,117 @@ +import {PageHeader} from "../PageHeader"; +import React from "react"; +import {Container, Divider, Fade, Grid, Stack, Typography} from "@mui/material"; +import aicore from '../about-resources/character-badges/Character_Badge_-page008.png' +import aquarius from '../about-resources/character-badges/Character_Badge_-page007.png' +import castor from '../about-resources/character-badges/Character_Badge_-page006.png' +import soma from '../about-resources/character-badges/Character_Badge_-page005.png' +import jupiter from '../about-resources/character-badges/Character_Badge_-page003.png' +import poslani from '../about-resources/character-badges/Character_Badge_-page010.png' +import eclipse from '../about-resources/character-badges/Character_Badge_-page009.png' +import triangulum from '../about-resources/character-badges/Character_Badge_-page011.png' +import alcor from '../about-resources/character-badges/Character_Badge_-page001.png' +import wilton from '../about-resources/character-badges/Character_Badge_-page004.png' +import {Link} from "react-router-dom"; + +type CharacterLink = { image: string; linkPath?: string }; + export function CharactersPage() { + const alcorverseCharacters: CharacterLink[] = [ + { + image: alcor, + }, + { + image: castor, + } + ] + const alcorForms: CharacterLink[] = [ + { + image: aicore, + linkPath: '/about/aicore' + }, + { + image: triangulum, + linkPath: '/about/triangulum' + }, + { + image: eclipse, + }, + { + image: jupiter, + linkPath: '/about/jupiter' + }, + { + image: aquarius, + linkPath: '/about/aquarius' + } + ] + + const ttrpgOCs: CharacterLink[] = [ + { + image: soma, + linkPath: '/about/soma' + }, + { + image: wilton, + }, + { + image: poslani, + } + ] + + function renderCharacterBadgeRow(characters: CharacterLink[]) { + return characters.map(value => { + if (value.linkPath) { + return + + + + ; + } else { + return + + ; + } + }) + } + return ( - <> - + + + + + + + +
+ Alcorverse Characters + + {renderCharacterBadgeRow(alcorverseCharacters)} + +
+
+ Alcor Forms + + {renderCharacterBadgeRow(alcorForms)} + +
+
+ Tabletop Game OCs + + {renderCharacterBadgeRow(ttrpgOCs)} + +
+
+ I swear, my characters are not gacha characters +
+ +
+ +
+
+
+
+
+ ); } \ No newline at end of file diff --git a/src/components/gallery/Gallery.tsx b/src/components/gallery/Gallery.tsx index 3e52e2b..31c84d4 100644 --- a/src/components/gallery/Gallery.tsx +++ b/src/components/gallery/Gallery.tsx @@ -75,10 +75,7 @@ export const Gallery = memo(function Gallery() { function handleImageClicked(value: ImageInformation) { navigation({ - pathname: "/artwork", - search: createSearchParams({ - title: prepareFileName(value.title) - }).toString() + pathname: prepareFileName(value.title) }) } diff --git a/src/components/gallery/MinimalGalleryPage.tsx b/src/components/gallery/MinimalGalleryPage.tsx index 641bf81..b15ef7b 100644 --- a/src/components/gallery/MinimalGalleryPage.tsx +++ b/src/components/gallery/MinimalGalleryPage.tsx @@ -1,5 +1,5 @@ import {useTagHooks} from "./UseTagHooks"; -import {createSearchParams, useNavigate} from "react-router-dom"; +import {useNavigate} from "react-router-dom"; import {Container, Fade, Typography} from "@mui/material"; import {ImageInformation} from "../ImageInformation"; import {useQueryState} from "react-router-use-location-state"; @@ -7,10 +7,10 @@ import useMeasure from "react-use-measure"; import {ResizeObserver} from "@juggle/resize-observer"; import {prepareFileName} from "./Utils"; import {TSJustifiedLayout} from "react-justified-layout-ts"; -import {SkeletonImage} from "../SkeletonImage"; import React from "react"; import {getShownImages} from "./Gallery"; import {drawerColor} from "../navigation/NavigationRail"; +import {SkeletonImage} from "../SkeletonImage"; // Page that only displays artworks in a grid, and hides all other elements export function MinimalGalleryPage() { @@ -25,10 +25,7 @@ export function MinimalGalleryPage() { function handleImageClicked(value: ImageInformation) { navigation({ - pathname: "/artwork", - search: createSearchParams({ - title: prepareFileName(value.title) - }).toString() + pathname: `/gallery/${prepareFileName(value.title)}`, }) } diff --git a/src/components/gallery/artwork/ArtworkPage.tsx b/src/components/gallery/artwork/ArtworkPage.tsx index 4bcac05..267dff9 100644 --- a/src/components/gallery/artwork/ArtworkPage.tsx +++ b/src/components/gallery/artwork/ArtworkPage.tsx @@ -6,14 +6,14 @@ import {Button} from "@mui/material-next"; import Chip from "@mui/material-next/Chip"; import dayjs from "dayjs"; import AltsUploader from "../AltsUploader"; -import {useNavigate, useSearchParams} from "react-router-dom"; +import {useNavigate, useParams} from "react-router-dom"; import {ArrowBack} from "@mui/icons-material"; import {drawerColor} from "../../navigation/NavigationRail"; import {useTagHooks} from "../UseTagHooks"; import {prepareFileName} from "../Utils"; export function ArtworkPage() { - const [imageTitle, setImageTitle] = useSearchParams(); + const imageTitle = useParams().title ?? ""; const {images, altData} = useTagHooks(); const [imageNumber, setImageNumber] = useState(-1); const navigate = useNavigate(); @@ -30,7 +30,7 @@ export function ArtworkPage() { setImageNumber(index); } - const imageInfo = images.find(value => prepareFileName(value.title) === imageTitle.get("title")); + const imageInfo = images.find(value => prepareFileName(value.title) === imageTitle); if (imageInfo) { const { webp, diff --git a/src/components/navigation/NavigationRail.tsx b/src/components/navigation/NavigationRail.tsx index d11e1c6..5acc9bb 100644 --- a/src/components/navigation/NavigationRail.tsx +++ b/src/components/navigation/NavigationRail.tsx @@ -63,7 +63,7 @@ export function NavigationRail(props: { } label={"Home"} path={"/"}/> } label={"Gallery"} path={"/gallery"}/> - } label={"Characters"} path={"/about"}/> + } label={"Characters"} path={"/characters"}/>
@@ -91,7 +91,7 @@ export function NavigationRail(props: { {/*TODO Add current page indicator and unify buttons*/} } label={"Home"} value={'/'}/> }/> - }/> + }/> } onClick={handleClickOpen}>