traeon/frontend/src/components/ParcelList.jsx

40 lines
1.1 KiB
React
Raw Normal View History

import { AnimatePresence, motion } from "framer-motion";
import ParcelCard from "./ParcelCard";
import { Package } from "lucide-react";
function ParcelList({ parcels }) {
if (parcels.length === 0) {
return (
<motion.div
initial={{ opacity: 0, y: 10 }}
animate={{ opacity: 1, y: 0 }}
className="text-center py-16 text-gray-400"
>
<Package size={48} className="mx-auto mb-3 opacity-50" />
<p className="text-sm lg:text-base">등록된 택배가 없습니다</p>
</motion.div>
);
}
return (
<div className="space-y-3">
<AnimatePresence mode="popLayout">
{parcels.map((parcel, index) => (
<motion.div
key={parcel.id}
layout
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, x: -30 }}
transition={{ duration: 0.25, delay: index * 0.05 }}
>
<ParcelCard parcel={parcel} />
</motion.div>
))}
</AnimatePresence>
</div>
);
}
export default ParcelList;