import type { CSSProperties } from "react"; import Image from "next/image"; import { ImageIcon, LockKeyhole } from "lucide-react"; import { CharacterAvatar } from "@/app/_components"; import type { PrivateAlbum } from "@/data/schemas/private-room"; import { isPrivateAlbumLocked } from "@/lib/private-room/private_album"; import styles from "../private-room-screen.module.css"; export interface PrivateAlbumCardProps { album: PrivateAlbum; displayName: string; avatarUrl: string; index: number; isUnlocking: boolean; onOpenGallery: () => void; onUnlock: () => void; } export function PrivateAlbumCard({ album, displayName, avatarUrl, index, isUnlocking, onOpenGallery, onUnlock, }: PrivateAlbumCardProps) { const isLocked = isPrivateAlbumLocked(album); const firstImage = album.images[0]; const firstImageUrl = firstImage?.url || null; const photoCount = album.imageCount || album.images.length; return (

{displayName}

{album.title || "Private album"}

{isLocked ? ( ) : firstImageUrl ? ( ) : (
)} {album.content ?

{album.content}

: null}
); } function formatAlbumTime(value: string | null): string { if (!value) return ""; const date = new Date(value); if (Number.isNaN(date.getTime())) return ""; return date.toLocaleDateString(undefined, { month: "short", day: "numeric", }); }