Skip to content

Commit ae7ae61

Browse files
authored
Merge pull request #14 from is1ab/activity-card
Implement activity page
2 parents 1826d49 + cec40d9 commit ae7ae61

File tree

5 files changed

+83
-26
lines changed

5 files changed

+83
-26
lines changed
791 KB
Loading
900 KB
Loading

src/component/ActivityCard.tsx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { Image } from "antd"
2+
export const ActivityCard = (props: {
3+
imgSrc: string,
4+
title: string,
5+
description: any,
6+
subTitle: string
7+
}) => {
8+
return (
9+
<div className="d-flex flex-col">
10+
<div className="p-5 w-100 rounded activity-card-layout md:activity-card-layout" style={{backgroundColor: "#424242"}}>
11+
<div className="d-flex flex-column justify-content-center" style={{width: "100%"}}>
12+
<Image width={"100%"} src={props.imgSrc}></Image>
13+
</div>
14+
<div className="w-100 activity-card-description-layout" style={{width: "60%"}}>
15+
<div>
16+
<h5>{props.title}</h5>
17+
<div className="d-flex flex-row gap-1 text-white">
18+
{props.subTitle == undefined ? null : props.subTitle}
19+
</div>
20+
</div>
21+
<div className="text-white">
22+
{props.description}
23+
</div>
24+
</div>
25+
</div>
26+
</div>
27+
)
28+
}

src/index.css

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,31 @@ a {
204204
color: #4CAF50;
205205
}
206206

207+
.activity-card-layout {
208+
display: flex;
209+
flex-direction: column;
210+
gap: 1rem;
211+
}
212+
213+
.activity-card-description-layout {
214+
display: flex;
215+
flex-direction: column;
216+
gap: 1rem;
217+
}
218+
219+
@media (min-width: 992px) {
220+
.activity-card-layout {
221+
display: flex;
222+
flex-direction: row;
223+
gap: 3rem;
224+
}
225+
.activity-card-description-layout {
226+
display: flex;
227+
flex-direction: column;
228+
gap: 3rem;
229+
}
230+
}
231+
207232
@keyframes scroll {
208233
0% {
209234
transform: translateY(0px);

src/page/Activities.tsx

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,37 @@
1-
export function Activities(){
2-
const ActivitiesItem = (props: {
3-
time: string
4-
descriptionItem: JSX.Element
5-
}) => {
6-
return (
7-
<tr>
8-
<td className="border border-1">
9-
{props.time}
10-
</td>
11-
<td className="border border-1">
12-
{props.descriptionItem}
13-
</td>
14-
</tr>
15-
)
16-
}
1+
import { ActivityCard } from "../component/ActivityCard"
2+
import ActivityImage from "../assets/activity/activity-image.png"
3+
import ActivityImage2 from "../assets/activity/activity-image-2.png"
174

5+
export function Activities(){
6+
const ActivityItems = [
7+
{
8+
imgSrc: ActivityImage,
9+
title: "2024 AIS3 新型態暑期課程",
10+
subTitle: "2024/01/01 - Taipei City",
11+
description: "以落實產業資安實務為導向設計課程內容,並引導學員依興趣組成跨校跨級學習小組,製作與展示專題成果。錄取考核分為『Pre-exam資安實務測驗』錄取 110 人及『甄選』錄取 40 人,共錄取 150 人。"
12+
},
13+
{
14+
imgSrc: ActivityImage2,
15+
title: "2024 資安技能金盾初賽",
16+
subTitle: "2024/01/01 - Taipei City",
17+
description: "為加強學生資安實務技能,透過競賽機制,以實務與時事題型,提升學生解決資安問題能力與實戰經驗,分為初賽與決賽,參賽對象包含國中、高中及大專校院在學學生,每組最多3人,活動富教育意義且對升學有助益。"
18+
},
19+
]
1820
return (
1921
<div className="activities">
2022
<h4 className="text-center fw-bold">歷史活動</h4>
21-
<table className="w-100 table-bordered">
22-
<ActivitiesItem
23-
time="2025.*.*"
24-
descriptionItem={
25-
<div>
26-
<p>敬請期待</p>
27-
</div>
28-
}
29-
></ActivitiesItem>
30-
</table>
23+
<div className="d-flex flex-column gap-3">
24+
{ActivityItems.map((activity) => {
25+
return (
26+
<ActivityCard
27+
imgSrc={activity.imgSrc}
28+
title={activity.title}
29+
subTitle={activity.subTitle}
30+
description={activity.description}
31+
/>
32+
)
33+
})}
34+
</div>
3135
</div>
3236
)
3337
}

0 commit comments

Comments
 (0)