Skip to content

Commit 312e104

Browse files
committed
games & privacy policy
1 parent f4f7ce0 commit 312e104

10 files changed

Lines changed: 19316 additions & 6681 deletions

File tree

components/GameItem/index.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { GameCard, GameIcon, GameContent, GameTitle, GameDescription } from './style';
2+
3+
const GameItem = ({ game }) => {
4+
return (
5+
<GameCard>
6+
<GameIcon>
7+
<img src={game.icon} alt={game.name} />
8+
</GameIcon>
9+
<GameContent>
10+
<GameTitle>{game.name}</GameTitle>
11+
<GameDescription>{game.description}</GameDescription>
12+
</GameContent>
13+
</GameCard>
14+
);
15+
};
16+
17+
export default GameItem;
18+

components/GameItem/style.js

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
import styled from 'styled-components';
2+
import { colors, media } from '../../style/theme';
3+
4+
const GameCard = styled.div`
5+
background-color: white;
6+
border-radius: 8px;
7+
overflow: hidden;
8+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
9+
transition: transform 0.3s ease, box-shadow 0.3s ease;
10+
display: flex;
11+
flex-direction: row;
12+
align-items: stretch;
13+
padding: 20px;
14+
15+
&:hover {
16+
transform: translateY(-4px);
17+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
18+
}
19+
20+
${media.phone`
21+
flex-direction: column;
22+
padding: 15px;
23+
`};
24+
`;
25+
26+
const GameIcon = styled.div`
27+
width: 200px;
28+
min-width: 200px;
29+
height: 200px;
30+
display: flex;
31+
align-items: center;
32+
justify-content: center;
33+
padding: 20px;
34+
flex-shrink: 0;
35+
36+
${media.tablet`
37+
width: 150px;
38+
min-width: 150px;
39+
height: 150px;
40+
`};
41+
42+
${media.phone`
43+
width: 100%;
44+
min-width: 100%;
45+
height: 200px;
46+
padding: 15px;
47+
`};
48+
49+
img {
50+
width: 100%;
51+
height: 100%;
52+
object-fit: contain;
53+
filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.15));
54+
border-radius: 12px;
55+
}
56+
`;
57+
58+
const GameContent = styled.div`
59+
padding: 30px;
60+
flex: 1;
61+
display: flex;
62+
flex-direction: column;
63+
justify-content: center;
64+
${media.phone`
65+
padding: 20px;
66+
`};
67+
`;
68+
69+
const GameTitle = styled.h2`
70+
font-size: 28px;
71+
font-weight: 700;
72+
margin: 0 0 20px 0;
73+
color: ${colors.font};
74+
${media.phone`
75+
font-size: 24px;
76+
margin-bottom: 15px;
77+
`};
78+
`;
79+
80+
const GameDescription = styled.p`
81+
font-size: 16px;
82+
line-height: 1.7;
83+
color: #666;
84+
margin: 0;
85+
white-space: pre-line;
86+
${media.phone`
87+
font-size: 14px;
88+
line-height: 1.6;
89+
`};
90+
`;
91+
92+
export { GameCard, GameIcon, GameContent, GameTitle, GameDescription };

0 commit comments

Comments
 (0)