Untitled
unknown
plain_text
2 years ago
5.3 kB
9
Indexable
import React, { useState } from 'react';
import { Link } from 'react-router-dom';
const PostCard = ({ userProfilePic, postImage, initialLikes, postDescription }) => {
const [likes, setLikes] = useState(0);
const [isLiked, setIsLiked] = useState(false); // New state variable for like status
const [showOptions, setShowOptions] = useState(false);
const handleLike = () => {
setLikes(prevLikes => prevLikes + (isLiked ? -1 : 1)); // Increment or decrement likes
setIsLiked(!isLiked); // Toggle the like state
};
const handleComment = () => {
// Logic to handle comment action
};
const handleBookmark = () => {
// Logic to handle bookmark action
};
const toggleOptions = () => {
setShowOptions(!showOptions);
};
return (
<div className="container mx-auto px-20">
<div className="min-h-48 flex items-center justify-center p-20 px-6">
<div className="bg-coolGray-900 text-coolGray-100 rounded-md shadow-md sm:w-96">
<div className="flex items-center justify-between p-3">
<div className="flex items-center space-x-2">
<img src="https://media.gq.com.mx/photos/5fd51c587938a266e30f81d1/16:9/w_1920,c_limit/Deadpool.jpg" alt="" className="bg-coolGray-500 border-coolGray-700 h-8 w-8 rounded-full object-cover object-center shadow-sm" />
<div className="-space-y-1">
<h2 className="text-sm font-semibold leading-none">nameUser</h2>
</div>
</div>
<button onClick={toggleOptions} title="Open options" type="button">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM12.75 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM18.75 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0z" />
</svg>
</button>
{showOptions && (
<div className="absolute bg-white rounded shadow-md ml-64">
<ul>
<li className="px-4 py-2 hover:bg-gray-100 cursor-pointer">Edit</li>
<li className="px-4 py-2 hover:bg-gray-100 cursor-pointer">Delete</li>
</ul>
</div>
)}
</div>
<img src="https://i.pinimg.com/564x/1c/02/67/1c02674dcd5747a0258694d69ab84572.jpg" alt="" className="bg-coolGray-500 h-70 w-full object-cover object-center" />
<div className="p-3">
<div className="flex items-center justify-between">
<div className="flex items-center space-x-3">
<button onClick={handleLike} type="button" title="Like post" className="flex items-center justify-center">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" className={`w-6 h-6 ${isLiked ? 'fill-red-500' : 'fill-none'}`}>
<path strokeLinecap="round" strokeLinejoin="round" d="M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z" />
</svg>
</button>
<Link to={"/coment"}>
<button onClick={handleComment} title="Add a comment" className="flex items-center justify-center">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="h-5 w-5 fill-current">
<path d="M496,496H480a273.39,273.39,0,0,1-179.025-66.782l-16.827-14.584C274.814,415.542,265.376,416,256,416c-63.527,0-123.385-20.431-168.548-57.529C41.375,320.623,16,270.025,16,216S41.375,111.377,87.452,73.529C132.615,36.431,192.473,16,256,16S379.385,36.431,424.548,73.529C470.625,111.377,496,161.975,496,216a171.161,171.161,0,0,1-21.077,82.151,201.505,201.505,0,0,1-47.065,57.537,285.22,285.22,0,0,0,63.455,97L496,457.373ZM294.456,381.222l27.477,23.814a241.379,241.379,0,0,0,135,57.86,317.5,317.5,0,0,1-62.617-105.583v0l-4.395-12.463,9.209-7.068C440.963,305.678,464,262.429,464,216c0-92.636-93.309-168-208-168S48,123.364,48,216s93.309,168,208,168a259.114,259.114,0,0,0,31.4-1.913Z"></path>
</svg>
</button>
</Link>
</div>
<button onClick={handleBookmark} title="Bookmark post" className="flex items-center justify-center">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="h-5 w-5 fill-current">
<path d="M424,496H388.75L256.008,381.19,123.467,496H88V16H424ZM120,48V456.667l135.992-117.8L392,456.5V48Z"></path>
</svg>
</button>
</div>
<div className="flex flex-wrap items-center pb-1 pt-3">
<div className="flex items-center space-x-2">
<div className="ml-3 text-sm font-semibold">{likes} Like</div>
</div>
</div>
<div className="mt-2 text-sm font-semibold">{postDescription}</div>
</div>
</div>
</div>
</div>
);
};
export default PostCard;Editor is loading...
Leave a Comment