A React component that renders up to three images with scroll-based and mouse-tracking parallax animations using Framer Motion, supporting three distinct layout modes. ## Key Components ### `ParallaxImageShowcaseProps` | Prop | Type | Description | |------|------|-------------| | `images` | `array` | Up to 3 images with `src`, `alt`, and `position` (`left`, `center`, `right`) | | `layout` | `'non-boxed' \| 'boxed' \| 'grid'` | Visual arrangement mode (default: `'non-boxed'`) | | `intensity` | `number` | Animation strength multiplier (default: `1`; range: `0.1`–`10`) | | `shadow` | `boolean` | Applies drop shadow to images (grid layout only) | | `logoElement` | `ReactNode` | Custom logo rendered above images in boxed layout | | `className` | `string` | Additional Tailwind classes on the root element | ### Layout Modes - **`non-boxed`** — Overlapping layered images with z-index depth, large responsive offsets - **`boxed`** — Two-row structure with a logo slot and two overlapping card-style images - **`grid`** — Responsive 3-column grid with gentler vertical-only parallax ### Animation System - **Scroll**: `useScroll` → `useTransform` drives `x`, `y`, and `rotate` based on page scroll position - **Mouse**: Global `mousemove` listener computes cursor offset relative to the component's `DOMRect`, fed into spring-smoothed motion values - **Combined**: Scroll and mouse transforms are summed via `useTransform` with array input ## Usage Example ```typescript import { ParallaxImageShowcase } from './parallax-image-showcase' const images = [ { src: '/screens/dashboard.png', alt: 'Dashboard', position: 'left' as const }, { src: '/screens/tickets.png', alt: 'Tickets', position: 'center' as const }, { src: '/screens/reports.png', alt: 'Reports', position: 'right' as const }, ] // Gentle grid layout with shadows // Aggressive non-boxed hero section ``` > **Intensity guide:** `0.1` = nearly static · `1` = default · `5` = dramatic · `10` = extreme. Tune per layout — `grid` looks best below `1`, `non-boxed` can handle up to `3–5`.