Skip to content

Commit 35646da

Browse files
committed
裏面の大枠を作成
1 parent 7561741 commit 35646da

File tree

2 files changed

+108
-25
lines changed

2 files changed

+108
-25
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import type { UserWithCoursesAndSubjects } from "common/types";
2+
import { MdClose } from "react-icons/md";
3+
4+
type Props = {
5+
onClose: () => void;
6+
displayedUser: UserWithCoursesAndSubjects;
7+
};
8+
9+
export default function PersonDetailedMenu({ onClose, displayedUser }: Props) {
10+
return (
11+
<dialog
12+
id="dialog"
13+
className="modal modal-open modal-bottom sm:modal-middle p-0"
14+
>
15+
<div className="modal-box p-0">
16+
<div className="sticky top-0 bg-white p-2">
17+
<form method="dialog">
18+
<div className="relative flex items-center justify-center">
19+
<button
20+
type="button"
21+
className="btn btn-sm btn-circle btn-ghost absolute top-0 left-0"
22+
onClick={onClose}
23+
>
24+
<MdClose className="text-2xl" />
25+
</button>
26+
<h3 className="text-lg">{displayedUser.name}の詳細情報</h3>
27+
<span />
28+
</div>
29+
</form>
30+
</div>
31+
<div className="p-4">
32+
<div>
33+
<span className="text-gray-500 text-xs">名前</span>
34+
<p className="text-lg">{displayedUser.name}</p>
35+
</div>
36+
<div className="divider m-0" />
37+
<div>
38+
<span className="text-gray-500 text-xs">年齢・性別</span>
39+
<p className="text-lg">{displayedUser.gender}</p>
40+
</div>
41+
<div className="divider m-0" />
42+
<div>
43+
<span className="text-gray-500 text-xs">自己紹介</span>
44+
<p className="text-lg">{displayedUser.intro}</p>
45+
</div>
46+
<div className="divider m-0" />
47+
<div>
48+
<span className="text-gray-500 text-xs">講義</span>
49+
<p className="text-lg">{displayedUser.courses.length}</p>
50+
{/* TODO: */}
51+
</div>
52+
<div className="divider m-0" />
53+
<div>
54+
<span className="text-gray-500 text-xs">興味分野</span>
55+
<p className="text-lg">{displayedUser.interestSubjects.length}</p>
56+
{/* TODO: */}
57+
</div>
58+
</div>
59+
</div>
60+
</dialog>
61+
);
62+
}

web/app/home/page.tsx

Lines changed: 46 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ import { Card } from "~/components/Card";
1111
import { DraggableCard } from "~/components/DraggableCard";
1212
import FullScreenCircularProgress from "~/components/common/FullScreenCircularProgress";
1313
import { NavigateByAuthState } from "~/components/common/NavigateByAuthState";
14+
import PersonDetailedMenu from "./components/PersonDetailedMenu";
1415

1516
export default function Home() {
1617
const { data, error } = useRecommended();
1718
const controls = useAnimation();
1819
const [clickedButton, setClickedButton] = useState<string>("");
20+
const [openDetailedMenu, setOpenDetailedMenu] = useState(false);
1921
const {
2022
state: { data: currentUser },
2123
} = useAboutMe();
@@ -88,34 +90,53 @@ export default function Home() {
8890
<NavigateByAuthState type="toLoginForUnauthenticated">
8991
<div className="flex h-full flex-col items-center justify-center">
9092
{displayedUser && (
91-
<div className="flex h-full flex-col items-center justify-center">
92-
{nextUser && (
93-
<div className="relative h-full w-full">
94-
<div className="-translate-x-4 -translate-y-4 inset-0 z-0 mt-4 transform">
95-
<Card displayedUser={nextUser} currentUser={currentUser} />
93+
<>
94+
<div className="flex h-full flex-col items-center justify-center">
95+
{nextUser && (
96+
<div className="relative h-full w-full">
97+
<div className="-translate-x-4 -translate-y-4 inset-0 z-0 mt-4 transform">
98+
<Card displayedUser={nextUser} currentUser={currentUser} />
99+
</div>
100+
<motion.div
101+
animate={controls}
102+
className="absolute inset-0 z-10 mt-4 flex items-center justify-center"
103+
>
104+
<DraggableCard
105+
displayedUser={displayedUser}
106+
currentUser={currentUser}
107+
onSwipeLeft={reject}
108+
onSwipeRight={accept}
109+
clickedButton={clickedButton}
110+
/>
111+
</motion.div>
96112
</div>
97-
<motion.div
98-
animate={controls}
99-
className="absolute inset-0 z-10 mt-4 flex items-center justify-center"
100-
>
101-
<DraggableCard
102-
displayedUser={displayedUser}
103-
currentUser={currentUser}
104-
onSwipeLeft={reject}
105-
onSwipeRight={accept}
106-
clickedButton={clickedButton}
107-
/>
108-
</motion.div>
113+
)}
114+
<button
115+
type="button"
116+
onClick={() => setOpenDetailedMenu(!openDetailedMenu)}
117+
>
118+
てすと
119+
</button>
120+
<div className="button-container mt-4 mb-4 flex w-full justify-center space-x-8">
121+
<CloseButton
122+
onclick={onClickClose}
123+
icon={<CloseIconStyled />}
124+
/>
125+
<GoodButton
126+
onclick={onClickHeart}
127+
icon={<FavoriteIconStyled />}
128+
/>
109129
</div>
110-
)}
111-
<div className="button-container mt-4 mb-4 flex w-full justify-center space-x-8">
112-
<CloseButton onclick={onClickClose} icon={<CloseIconStyled />} />
113-
<GoodButton
114-
onclick={onClickHeart}
115-
icon={<FavoriteIconStyled />}
116-
/>
117130
</div>
118-
</div>
131+
{openDetailedMenu && (
132+
<PersonDetailedMenu
133+
onClose={() => {
134+
setOpenDetailedMenu(false);
135+
}}
136+
displayedUser={displayedUser}
137+
/>
138+
)}
139+
</>
119140
)}
120141
</div>
121142
</NavigateByAuthState>

0 commit comments

Comments
 (0)