2025-04-28 00:47:36 +00:00
|
|
|
import { Heart } from 'lucide-react';
|
|
|
|
|
import Image from 'next/image';
|
|
|
|
|
import { Checkbox } from '@/components/ui/checkbox';
|
|
|
|
|
import { Button } from '@/components/ui/button';
|
|
|
|
|
|
|
|
|
|
const mockItems = [
|
|
|
|
|
{
|
|
|
|
|
title: 'Business Handshake',
|
|
|
|
|
type: 'Videos',
|
|
|
|
|
mediaType: 'video',
|
|
|
|
|
image: '/v1.png',
|
|
|
|
|
price: 0.49,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Cowboy Howdy',
|
|
|
|
|
type: 'Fonts',
|
|
|
|
|
mediaType: 'font',
|
|
|
|
|
image: '/v2.png',
|
|
|
|
|
price: 4.99,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'SEPHORA',
|
|
|
|
|
type: 'Images',
|
|
|
|
|
mediaType: 'image',
|
|
|
|
|
image: '/v3.png',
|
|
|
|
|
price: 0.19,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Gabe Hager',
|
|
|
|
|
type: 'Videos',
|
|
|
|
|
mediaType: 'video',
|
|
|
|
|
image: '/v4.png',
|
|
|
|
|
price: 9.99,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Gabe Hager',
|
|
|
|
|
type: 'Audios',
|
|
|
|
|
mediaType: 'audio',
|
|
|
|
|
image: '/v5.png',
|
|
|
|
|
price: 3.99,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Empty Flat Interior',
|
|
|
|
|
type: 'Videos',
|
|
|
|
|
mediaType: 'video',
|
|
|
|
|
image: '/v6.png',
|
|
|
|
|
price: 0.49,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Black Swan',
|
|
|
|
|
type: 'Images',
|
|
|
|
|
mediaType: 'image',
|
|
|
|
|
image: '/v7.png',
|
|
|
|
|
price: 0.19,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Panda',
|
|
|
|
|
type: 'Fonts',
|
|
|
|
|
mediaType: 'font',
|
|
|
|
|
image: '/v8.png',
|
|
|
|
|
price: 4.99,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Lemon Garden',
|
|
|
|
|
type: 'Images',
|
|
|
|
|
mediaType: 'image',
|
|
|
|
|
image: '/v9.png',
|
|
|
|
|
price: 4.40,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Wall Graphics',
|
|
|
|
|
type: 'Graphics',
|
|
|
|
|
mediaType: 'graphic',
|
|
|
|
|
image: '/v10.png',
|
|
|
|
|
price: 4.40,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Wall Graphics',
|
|
|
|
|
type: 'Graphics',
|
|
|
|
|
mediaType: 'graphic',
|
|
|
|
|
image: '/v11.png',
|
|
|
|
|
price: 4.40,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Wall Graphics',
|
|
|
|
|
type: 'Graphics',
|
|
|
|
|
mediaType: 'graphic',
|
|
|
|
|
image: '/v12.png',
|
|
|
|
|
price: 4.40,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Wall Graphics',
|
|
|
|
|
type: 'Graphics',
|
|
|
|
|
mediaType: 'graphic',
|
|
|
|
|
image: '/v13.png',
|
|
|
|
|
price: 4.40,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Wall Graphics',
|
|
|
|
|
type: 'Graphics',
|
|
|
|
|
mediaType: 'graphic',
|
|
|
|
|
image: '/v14.png',
|
|
|
|
|
price: 4.40,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: 'Wall Graphics',
|
|
|
|
|
type: 'Graphics',
|
|
|
|
|
mediaType: 'graphic',
|
|
|
|
|
image: '/v15.png',
|
|
|
|
|
price: 4.40,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
export default function ArtistContent() {
|
|
|
|
|
return (
|
|
|
|
|
<div className="w-full min-h-screen">
|
2025-04-29 13:54:37 +00:00
|
|
|
<div className="w-full px-4 sm:px-6 md:px-8 lg:px-20 mx-auto">
|
|
|
|
|
<div className="border-b-2 border-[#D1D5DB] mb-4 sm:mb-6 md:mb-8" />
|
2025-04-28 00:47:36 +00:00
|
|
|
{/* Header with greeting and filters inside a card */}
|
2025-04-29 13:54:37 +00:00
|
|
|
<div className="bg-white p-3 rounded-lg shadow-sm py-4 sm:py-5 w-full min-h-[46px] flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 sm:gap-4 mb-4 sm:mb-6 md:mb-8 border-b-2 border-[#D1D5DB]">
|
2025-04-28 00:47:36 +00:00
|
|
|
{/* Greeting */}
|
2025-04-29 13:54:37 +00:00
|
|
|
<div className="flex items-center text-base sm:text-lg md:text-xl">
|
|
|
|
|
<span className="font-[700] text-[#151C4F] mr-1 text-sm sm:text-base">Hi Daphne,</span>
|
|
|
|
|
<span className="text-[#555979] font-[700] text-sm sm:text-base">recommendations for you</span>
|
2025-04-28 00:47:36 +00:00
|
|
|
</div>
|
|
|
|
|
{/* Filter Chips */}
|
2025-04-29 13:54:37 +00:00
|
|
|
<div className="flex flex-wrap gap-2 sm:gap-3 md:gap-4">
|
2025-04-28 00:47:36 +00:00
|
|
|
{['Images','Videos','Audios','Fonts','Gifs','Graphics'].map((filter) => (
|
2025-04-29 13:54:37 +00:00
|
|
|
<label key={filter} className="flex items-center gap-1 sm:gap-2 text-[#151C4F] text-xs sm:text-sm font-[400] cursor-pointer select-none">
|
2025-04-28 00:47:36 +00:00
|
|
|
<Checkbox defaultChecked className="bg-white border-[#E3E6F0] data-[state=checked]:bg-white data-[state=checked]:border-[#151C4F] [&>svg]:text-[#151C4F] data-[state=checked]:text-[#151C4F]" />
|
|
|
|
|
{filter}
|
|
|
|
|
</label>
|
|
|
|
|
))}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-04-29 13:54:37 +00:00
|
|
|
<div className="grid grid-cols-1 xs:grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-3 sm:gap-4 md:gap-6">
|
2025-04-28 00:47:36 +00:00
|
|
|
{mockItems.map((item, idx) => (
|
|
|
|
|
<div
|
|
|
|
|
key={idx}
|
2025-04-29 13:54:37 +00:00
|
|
|
className="relative bg-white rounded-sm shadow-sm overflow-hidden group transition hover:shadow-md flex flex-col justify-between w-full"
|
|
|
|
|
style={{ height: 'auto', minHeight: '178px', gap: '9px', borderRadius: '6px', paddingBottom: '8px' }}
|
2025-04-28 00:47:36 +00:00
|
|
|
>
|
|
|
|
|
{/* Image */}
|
2025-04-29 13:54:37 +00:00
|
|
|
<div className="relative w-full aspect-[4/3] flex items-center justify-center bg-gray-100">
|
2025-04-28 00:47:36 +00:00
|
|
|
<Image
|
|
|
|
|
src={item.image}
|
|
|
|
|
alt={item.title}
|
|
|
|
|
fill
|
|
|
|
|
style={{ objectFit: 'cover' }}
|
|
|
|
|
className="transition group-hover:scale-105 duration-200"
|
|
|
|
|
/>
|
|
|
|
|
{/* Play overlay for video/audio */}
|
|
|
|
|
{(item.mediaType === 'video' || item.mediaType === 'audio') && (
|
|
|
|
|
<div className="absolute inset-0 flex items-center justify-center z-10">
|
|
|
|
|
<Image src="/play.png" alt="Play" width={48} height={48} className="drop-shadow-lg" />
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
{/* Card content */}
|
2025-04-29 13:54:37 +00:00
|
|
|
<div className="px-2 sm:px-3 pb-2 pt-1 flex flex-col gap-1">
|
2025-04-28 00:47:36 +00:00
|
|
|
<div className="flex items-center justify-between">
|
2025-04-29 13:54:37 +00:00
|
|
|
<span className="font-semibold text-xs sm:text-sm text-[#151C4F] truncate" title={item.title}>{item.title}</span>
|
2025-04-28 00:47:36 +00:00
|
|
|
<Button variant="ghost" size="icon" className="ml-2">
|
2025-04-29 13:54:37 +00:00
|
|
|
<Heart className="w-4 h-4 sm:w-5 sm:h-5 text-gray-400 group-hover:text-pink-500 transition" />
|
2025-04-28 00:47:36 +00:00
|
|
|
</Button>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="flex items-center justify-between mt-0.5">
|
2025-04-29 13:54:37 +00:00
|
|
|
<span className="text-[10px] sm:text-xs text-gray-500">In{' '}
|
|
|
|
|
<span className="capitalize" style={{ color: '#007AFF', fontWeight: 400, fontSize: '10px' }}>{item.type}</span>
|
2025-04-28 00:47:36 +00:00
|
|
|
</span>
|
2025-04-29 13:54:37 +00:00
|
|
|
<span className="font-bold text-[#151C4F] text-xs sm:text-sm">${item.price.toFixed(2)}</span>
|
2025-04-28 00:47:36 +00:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
))}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|