feat: Optimize screenshot gallery layout for 2-timeframe analysis
- Add adaptive grid layout that adjusts based on number of screenshots - 2 screenshots: side-by-side view with larger aspect ratio for better comparison - 1 screenshot: centered layout with max-width constraint - 3-4+ screenshots: responsive multi-column grid - Add 'Side-by-Side View' indicator for 2-screenshot layout - Improve aspect ratios for better chart visibility and comparison - Enhance user experience for multi-timeframe analysis
This commit is contained in:
@@ -157,24 +157,39 @@ export default function ScreenshotGallery({
|
|||||||
📸
|
📸
|
||||||
</span>
|
</span>
|
||||||
Chart Screenshots
|
Chart Screenshots
|
||||||
|
{sortedData.length === 2 && (
|
||||||
|
<span className="ml-2 text-xs bg-purple-500/20 text-purple-300 px-2 py-1 rounded-full border border-purple-500/30">
|
||||||
|
Side-by-Side View
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
</h4>
|
</h4>
|
||||||
<div className="text-xs text-gray-400">
|
<div className="text-xs text-gray-400">
|
||||||
{sortedData.length} captured • Click to enlarge
|
{sortedData.length} captured • Click to enlarge
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
<div className={`grid gap-4 ${
|
||||||
|
sortedData.length === 1 ? 'grid-cols-1 max-w-md mx-auto' :
|
||||||
|
sortedData.length === 2 ? 'grid-cols-1 md:grid-cols-2' :
|
||||||
|
sortedData.length === 3 ? 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3' :
|
||||||
|
sortedData.length === 4 ? 'grid-cols-1 md:grid-cols-2 xl:grid-cols-4' :
|
||||||
|
'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4'
|
||||||
|
}`}>
|
||||||
{sortedData.map((item, displayIndex) => {
|
{sortedData.map((item, displayIndex) => {
|
||||||
const imageUrl = formatScreenshotUrl(item.screenshot)
|
const imageUrl = formatScreenshotUrl(item.screenshot)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
key={displayIndex}
|
key={displayIndex}
|
||||||
className="group relative bg-gray-800/30 rounded-lg overflow-hidden border border-gray-700 hover:border-purple-500/50 transition-all cursor-pointer transform hover:scale-[1.02]"
|
className={`group relative bg-gray-800/30 rounded-lg overflow-hidden border border-gray-700 hover:border-purple-500/50 transition-all cursor-pointer transform hover:scale-[1.02] ${
|
||||||
|
sortedData.length === 2 ? 'lg:aspect-[4/3]' : ''
|
||||||
|
}`}
|
||||||
onClick={() => onImageClick(imageUrl)}
|
onClick={() => onImageClick(imageUrl)}
|
||||||
>
|
>
|
||||||
{/* Preview Image */}
|
{/* Preview Image */}
|
||||||
<div className="aspect-video bg-gray-800 flex items-center justify-center relative">
|
<div className={`bg-gray-800 flex items-center justify-center relative ${
|
||||||
|
sortedData.length === 2 ? 'aspect-[16/10] lg:aspect-[4/3]' : 'aspect-video'
|
||||||
|
}`}>
|
||||||
<img
|
<img
|
||||||
src={imageUrl}
|
src={imageUrl}
|
||||||
alt={`${symbol} - ${item.displayLayout} - ${item.displayTimeframe} chart`}
|
alt={`${symbol} - ${item.displayLayout} - ${item.displayTimeframe} chart`}
|
||||||
|
|||||||
Reference in New Issue
Block a user