mirror of
https://github.com/bubblecup-12/VogelSocialMedia.git
synced 2025-07-06 06:28:47 +00:00
basic post done
This commit is contained in:
parent
357f370b56
commit
6f0f3580fa
3 changed files with 191 additions and 0 deletions
82
code/frontend/src/Post.tsx
Normal file
82
code/frontend/src/Post.tsx
Normal file
|
@ -0,0 +1,82 @@
|
|||
import React, { useState } from 'react';
|
||||
import './post.css';
|
||||
|
||||
export default function Post() {
|
||||
const [expanded, setExpanded] = useState(false);
|
||||
|
||||
const handleExpandClick = () => {
|
||||
setExpanded(!expanded);
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="post-card">
|
||||
<div className="post-header">
|
||||
<div className="avatar">R</div>
|
||||
<div className="post-header-text">
|
||||
<h3>Shrimp and Chorizo Paella</h3>
|
||||
<p className="subheader">September 14, 2016</p>
|
||||
</div>
|
||||
<button className="icon-button more-button" aria-label="settings">
|
||||
⋮
|
||||
</button>
|
||||
</div>
|
||||
<img
|
||||
className="post-image"
|
||||
src="/static/images/cards/paella.jpg"
|
||||
alt="Paella dish"
|
||||
/>
|
||||
<div className="post-content">
|
||||
<p>
|
||||
This impressive paella is a perfect party dish and a fun meal to cook
|
||||
together with your guests. Add 1 cup of frozen peas along with the mussels,
|
||||
if you like.
|
||||
</p>
|
||||
</div>
|
||||
<div className="post-actions">
|
||||
<button className="icon-button" aria-label="add to favorites">
|
||||
<i className="fa fa-heart"></i>
|
||||
</button>
|
||||
<button className="icon-button" aria-label="share">
|
||||
<i className="fa fa-share"></i>
|
||||
</button>
|
||||
<button
|
||||
className={`icon-button expand-button ${expanded ? 'expanded' : ''}`}
|
||||
onClick={handleExpandClick}
|
||||
aria-expanded={expanded}
|
||||
aria-label="show more"
|
||||
>
|
||||
<i className="fa fa-chevron-down"></i>
|
||||
</button>
|
||||
</div>
|
||||
{expanded && (
|
||||
<div className="post-collapse">
|
||||
<h4>Method:</h4>
|
||||
<p>
|
||||
Heat 1/2 cup of the broth in a pot until simmering, add saffron and set
|
||||
aside for 10 minutes.
|
||||
</p>
|
||||
<p>
|
||||
Heat oil in a (14- to 16-inch) paella pan or a large, deep skillet over
|
||||
medium-high heat. Add chicken, shrimp and chorizo, and cook, stirring
|
||||
occasionally until lightly browned, 6 to 8 minutes. Transfer shrimp to a
|
||||
large plate and set aside, leaving chicken and chorizo in the pan. Add
|
||||
pimentón, bay leaves, garlic, tomatoes, onion, salt and pepper, and cook,
|
||||
stirring often until thickened and fragrant, about 10 minutes. Add
|
||||
saffron broth and remaining 4 1/2 cups chicken broth; bring to a boil.
|
||||
</p>
|
||||
<p>
|
||||
Add rice and stir very gently to distribute. Top with artichokes and
|
||||
peppers, and cook without stirring, until most of the liquid is absorbed,
|
||||
15 to 18 minutes. Reduce heat to medium-low, add reserved shrimp and
|
||||
mussels, tucking them down into the rice, and cook again without
|
||||
stirring, until mussels have opened and rice is just tender, 5 to 7
|
||||
minutes more. (Discard any mussels that don't open.)
|
||||
</p>
|
||||
<p>
|
||||
Set aside off of the heat to let rest for 10 minutes, and then serve.
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
import React, { useState, useEffect, useRef } from "react";
|
||||
import TestPost from "../TestPost";
|
||||
import "./feed.css";
|
||||
import Post from "../Post";
|
||||
|
||||
function Feed() {
|
||||
const [posts, setPosts] = useState<number[]>([]);
|
||||
|
@ -48,6 +49,7 @@ function Feed() {
|
|||
|
||||
return (
|
||||
<div className="feedContainer">
|
||||
<Post/>
|
||||
<main className="feedContent" ref={feedRef}>
|
||||
{posts.map((postId, idx) => (
|
||||
<TestPost key={idx} postId={postId} />
|
||||
|
|
107
code/frontend/src/post.css
Normal file
107
code/frontend/src/post.css
Normal file
|
@ -0,0 +1,107 @@
|
|||
.post-card {
|
||||
max-width: 345px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
font-family: sans-serif;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.post-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 16px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
background-color: #f44336;
|
||||
color: #fff;
|
||||
border-radius: 50%;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-weight: bold;
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.post-header-text h3 {
|
||||
margin: 0;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.subheader {
|
||||
color: #888;
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
|
||||
.more-button {
|
||||
position: absolute;
|
||||
right: 16px;
|
||||
top: 16px;
|
||||
font-size: 1.2rem;
|
||||
background: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.post-image {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
max-height: 194px;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.post-content {
|
||||
padding: 16px;
|
||||
color: #444;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.post-actions {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 8px 16px;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
.icon-button {
|
||||
background: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
font-size: 1.1rem;
|
||||
margin-right: 10px;
|
||||
color: #555;
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
|
||||
.icon-button:hover {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.expand-button {
|
||||
margin-left: auto;
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
.expand-button.expanded {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.post-collapse {
|
||||
padding: 0 16px 16px;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
.post-collapse h4 {
|
||||
margin: 16px 0 8px;
|
||||
}
|
||||
|
||||
.post-collapse p {
|
||||
margin: 0 0 12px;
|
||||
font-size: 0.95rem;
|
||||
color: #444;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue