feat(frontend): lazy-load images, add lightbox viewer, polish AI panel

- Add loading=lazy + decoding=async to all <img> (message card preview,
  attachments grid, image grid, avatars via ui/avatar)
- New Lightbox component: fullscreen image viewer with keyboard nav
  (←/→/Esc), counter, click-to-close; wired into messages page + detail
- Attachments grid: click image to open, image counter badge, grouped
  non-image attachments
- AI analysis panel: line-clamp-3 with Show more/less toggle
- Message card: preview image is now a clickable button opening detail
This commit is contained in:
asepharyana
2026-08-03 05:08:08 +07:00
parent 5cc0f8a243
commit 03d59f0738
7 changed files with 254 additions and 28 deletions
@@ -33,6 +33,8 @@ function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {
"aspect-square size-full rounded-full object-cover",
className,
)}
loading="lazy"
decoding="async"
{...props}
/>
);