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}>