diff --git a/src/components/content/AiDisclosureBadge.tsx b/src/components/content/AiDisclosureBadge.tsx index 411852f..f33feeb 100644 --- a/src/components/content/AiDisclosureBadge.tsx +++ b/src/components/content/AiDisclosureBadge.tsx @@ -30,7 +30,7 @@ export function AiDisclosureBadge({ value, className }: AiDisclosureBadgeProps) {value ); } diff --git a/src/components/feed/PostDetailDialog.tsx b/src/components/feed/PostDetailDialog.tsx index c4d95cb..3a0b775 100644 --- a/src/components/feed/PostDetailDialog.tsx +++ b/src/components/feed/PostDetailDialog.tsx @@ -244,14 +244,18 @@ export function PostDetailDialog({ post, open, onClose, onDeleted }: PostDetailD ); const mediaContent = post.type === "VIDEO" && post.videoPost ? ( - +
+ + +
) : images.length > 0 && ( isCarousel ? (
+ {images.map((img) => ( @@ -260,7 +264,8 @@ export function PostDetailDialog({ post, open, onClose, onDeleted }: PostDetailD src={getMediaUrl(img.storageKey) ?? ""} blurhash={img.blurhash} alt={currentCaption ?? `${pet.name}'s post`} - className="max-h-full max-w-full object-contain" + className="block max-h-full max-w-full object-contain" + wrapperClassName="relative block h-auto w-auto" /> ))} @@ -283,12 +288,16 @@ export function PostDetailDialog({ post, open, onClose, onDeleted }: PostDetailD
) : ( - +
+ + +
) ); @@ -312,7 +321,6 @@ export function PostDetailDialog({ post, open, onClose, onDeleted }: PostDetailD {/* Image column — fixed 45dvh strip on mobile, flex-1 full-height on desktop */}
{mediaContent} -
{/* Right panel: desktop header + scrollable body + sticky input */} diff --git a/src/components/stories/StoryViewer.tsx b/src/components/stories/StoryViewer.tsx index c6ca849..89dc27d 100644 --- a/src/components/stories/StoryViewer.tsx +++ b/src/components/stories/StoryViewer.tsx @@ -155,21 +155,28 @@ export function StoryViewer({ ))} - {/* Story image */} + {/* Story image — inline-flex wrapper shrinks to the actual rendered + image box (not the full-screen overlay) so both the centering + and the badge overlay track the real image bounds. BlurImage's + own wrapper defaults to w-full/h-full (fine for fill-container + usages like feed thumbnails), so it's overridden here via + wrapperClassName. */} {mediaUrl && ( - +
+ + +
)} - - {/* Pet info — bottom left */}