diff --git a/src/components/_albums/_ImageList.tsx b/src/components/_albums/_ImageList.tsx deleted file mode 100644 index 7585898..0000000 --- a/src/components/_albums/_ImageList.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { Image } from "@/generated/prisma"; -import clsx from "clsx"; -import NextImage from "next/image"; -import Link from "next/link"; - -export default function ImageList({ images, gallerySlug, albumSlug }: { images: Image[], gallerySlug: string, albumSlug: string }) { - - return ( -
-

Images

-
- {images ? images.map((img) => ( - -
-
- {img.fileKey ? ( - - ) : ( -
- No cover image -
- )} -
-
-

{img.imageName}

-
-
- - )) : "There are no images here!"} -
-
- ); -} \ No newline at end of file diff --git a/src/components/artists/_ArtistImageGrid.tsx b/src/components/artists/_ArtistImageGrid.tsx deleted file mode 100644 index 3366894..0000000 --- a/src/components/artists/_ArtistImageGrid.tsx +++ /dev/null @@ -1,34 +0,0 @@ -"use client"; - -// import ImageCard from "@/components/image/ImageCard"; // You likely have this already -// import type { Album, Gallery, Image, ImageVariant } from "@prisma/client"; -import { Album, Gallery, Image, ImageVariant } from "@/generated/prisma"; -import { useState } from "react"; -import ImageCard from "./ImageCard"; - -type Props = { - images: (Image & { - album: Album & { gallery: Gallery | null } | null; - variants: ImageVariant[]; - })[]; -}; - -export default function ArtistImageGrid({ images }: Props) { - const [showNSFW, setShowNSFW] = useState(false); - - return ( -
- -
- {images.map((img) => ( - - ))} -
-
- ); -} diff --git a/src/components/artists/_ImageCard.tsx b/src/components/artists/_ImageCard.tsx deleted file mode 100644 index 0cae72b..0000000 --- a/src/components/artists/_ImageCard.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { Album, Gallery, Image, ImageVariant } from "@/generated/prisma"; -import NextImage from "next/image"; -import Link from "next/link"; - -type Props = { - image: Image & { - variants: ImageVariant[]; - album: Album & { gallery: Gallery | null } | null; - }; - showNSFW?: boolean; -}; - -export default function ImageCard({ image, showNSFW = false }: Props) { - const variant = image.variants.find(v => v.type === "thumbnail") || image.variants[0]; - if (!variant) return null; - - const href = image.album?.gallery && image.album - ? `/galleries/${image.album.gallery.slug}/${image.album.slug}/${image.id}` - : `/image/${image.id}`; - - const shouldBlur = image.nsfw && !showNSFW; - - return ( - -
- - {image.nsfw && ( -
- NSFW -
- )} -
- {image.imageName} -
-
- - ); -} diff --git a/src/components/cards/_AlbumCard.tsx b/src/components/cards/_AlbumCard.tsx deleted file mode 100644 index 2adc6b1..0000000 --- a/src/components/cards/_AlbumCard.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { Album, Image } from "@/generated/prisma"; -import NextImage from "next/image"; -import Link from "next/link"; - -type Props = { - album: Album & { - coverImage: Image | null; - }; - gallerySlug: string; -}; - -export default function AlbumCard({ album, gallerySlug }: Props) { - const href = `/galleries/${gallerySlug}/${album.slug}`; - const cover = album.coverImage; - - return ( - -
- {cover ? ( - - ) : ( -
- No cover image -
- )} - - {/* Overlay: Album label */} -
- Album -
- - {/* Bottom: Album name */} -
- {album.name} -
-
- - ); -} diff --git a/src/components/categories/_CategoryImageList.tsx b/src/components/categories/_CategoryImageList.tsx deleted file mode 100644 index 46f5e23..0000000 --- a/src/components/categories/_CategoryImageList.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { Album, Gallery, Image } from "@/generated/prisma"; -import NextImage from "next/image"; -import Link from "next/link"; - -type ImagesWithItems = (Pick & { - album?: (Pick & { - gallery?: Pick | null - }) | null -})[] - -export default function CategoryImageList({ images }: { images: ImagesWithItems }) { - return ( -
-

Images

-
- {images ? images.map((img) => { - const gallerySlug = img.album?.gallery?.slug; - const albumSlug = img.album?.slug; - if (!gallerySlug || !albumSlug || !img.id) return null; - - return ( - -
-
- {img.fileKey ? ( - - ) : ( -
- No cover image -
- )} -
-
-

{img.imageName}

-
-
- - ) - }) : "There are no images here!"} -
-
- ); -} \ No newline at end of file diff --git a/src/components/galleries/_AlbumList.tsx b/src/components/galleries/_AlbumList.tsx deleted file mode 100644 index 8e3a82b..0000000 --- a/src/components/galleries/_AlbumList.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Album, Image } from "@/generated/prisma"; -import NextImage from "next/image"; -import Link from "next/link"; - -type AlbumsWithItems = Album & { - coverImage: Image | null; -} - -export default function AlbumList({ albums, gallerySlug }: { albums: AlbumsWithItems[], gallerySlug: string }) { - return ( -
-

Albums

-
- {albums ? albums.map((album) => ( - -
-
- {album.coverImage?.fileKey ? ( - - ) : ( -
- No cover image -
- )} -
-
-

{album.name}

-
-
- - )) : "There are no albums here!"} -
-
- ); -} \ No newline at end of file diff --git a/src/components/images/_GlowingImageBorder.tsx b/src/components/images/_GlowingImageBorder.tsx deleted file mode 100644 index dddc173..0000000 --- a/src/components/images/_GlowingImageBorder.tsx +++ /dev/null @@ -1,81 +0,0 @@ -"use client" - -import { Color, ImageColor, ImageVariant } from "@/generated/prisma" -import clsx from "clsx" -import { useTheme } from "next-themes" -import NextImage from "next/image" -import { useEffect, useState } from "react" - -type Colors = ImageColor & { - color: Color -} - -type Props = { - alt: string, - variant: ImageVariant, - colors: Colors[], - src: string, - revealed?: boolean, - className?: string, - animate?: boolean -} - -export default function GlowingImageBorder({ - alt, - variant, - colors, - src, - className, - revealed = true, - animate = true, -}: Props) { - const { resolvedTheme } = useTheme() - const [mounted, setMounted] = useState(false); - - useEffect(() => { - setMounted(true); - }, []); - - const getColor = (type: string) => - colors.find((c) => c.type === type)?.color.hex - - const vibrantLight = getColor("Vibrant") || "#ff5ec4" - const mutedLight = getColor("Muted") || "#5ecaff" - - const darkVibrant = getColor("DarkVibrant") || "#fc03a1" - const darkMuted = getColor("DarkMuted") || "#035efc" - - const vibrant = resolvedTheme === "dark" ? darkVibrant : vibrantLight - const muted = resolvedTheme === "dark" ? darkMuted : mutedLight - - if (!mounted) return null; - - return ( -
-
- -
-
- ) -} diff --git a/src/components/images/_GlowingImageWithToggle.tsx b/src/components/images/_GlowingImageWithToggle.tsx deleted file mode 100644 index c2b1fae..0000000 --- a/src/components/images/_GlowingImageWithToggle.tsx +++ /dev/null @@ -1,56 +0,0 @@ -"use client" - -import { Color, ImageColor, ImageVariant } from "@/generated/prisma"; -import Link from "next/link"; -import { useState } from "react"; -import { Label } from "../ui/label"; -import { Switch } from "../ui/switch"; -import GlowingImageBorder from "./GlowingImageBorder"; - -type Props = { - variant: ImageVariant; - colors: (ImageColor & { color: Color })[]; - alt: string; - src: string; - nsfw: boolean; - imageId: string; -} - -export default function GlowingImageWithToggle({ variant, colors, alt, src, nsfw, imageId }: Props) { - const [animate, setAnimate] = useState(true); - const [revealed, setRevealed] = useState(!nsfw) - - return ( -
- - - - - -
-
- - -
-
- - { - nsfw && ( -
-
- - -
-
- ) - } -
- ); -} diff --git a/src/components/images/_ImageInfoPanel.tsx b/src/components/images/_ImageInfoPanel.tsx deleted file mode 100644 index fba4a30..0000000 --- a/src/components/images/_ImageInfoPanel.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { Image as ImageType } from "@/generated/prisma"; -import Link from "next/link"; -// import { SocialIcon } from "react-social-icons"; - -type Props = { - image: ImageType & { - artist?: { - id: string; - slug: string; - displayName: string; - socials?: { type: string; handle: string; link: string }[]; - }; - categories?: { id: string; name: string }[]; - tags?: { id: string; name: string }[]; - album?: { id: string; name: string; slug: string }; - }; -}; - -export default function ImageInfoPanel({ image }: Props) { - return ( -
- {/* Creator */} - {image.artist && ( -
-

Creator

- - {image.artist.displayName} - - - {image.artist.socials?.length > 0 && ( -
- {image.artist.socials.map((social, i) => ( - - ))} -
- )} -
- )} - - {/* Album */} - {image.album && ( -
-

Album

- - {image.album.name} - -
- )} - - {/* Categories */} - {image.categories?.length > 0 && ( -
-

Categories

-
- {image.categories.map((cat) => ( - - {cat.name} - - ))} -
-
- )} - - {/* Tags */} - {image.tags?.length > 0 && ( -
-

Tags

-
- {image.tags.map((tag) => ( - - #{tag.name} - - ))} -
-
- )} -
- ); -}