Skip to content

Commit 43475de

Browse files
committed
レスポンシブルとかのレビュー修正
1 parent 56a950a commit 43475de

2 files changed

Lines changed: 22 additions & 17 deletions

File tree

frontend/src/pages/Login.tsx

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ import { createTheme, ThemeProvider } from '@mui/material/styles';
1717
import axios from 'axios';
1818
import { useState } from 'react';
1919
import { useNavigate } from 'react-router-dom';
20-
import type { ApiErrorResponse, AuthResponse } from '../types';
20+
// ▼▼▼ SigninRequest を追加 ▼▼▼
21+
import type { ApiErrorResponse, AuthResponse, SigninRequest } from '../types';
2122

2223
const API_URL = 'https://test.sheeplab.net/api';
2324

@@ -34,10 +35,9 @@ const theme = createTheme({
3435
shape: { borderRadius: 16 },
3536
});
3637

37-
// Propsの定義を更新
3838
interface LoginProps {
3939
setToken: (_token: string) => void;
40-
setRefreshToken: (_refreshToken: string) => void; // 追加
40+
setRefreshToken: (_refreshToken: string) => void;
4141
setUserId: (_userId: string) => void;
4242
}
4343

@@ -54,9 +54,15 @@ export default function Login({ setToken, setRefreshToken, setUserId }: LoginPro
5454
setErrorMsg(null);
5555

5656
try {
57-
const res = await axios.post<AuthResponse>(`${API_URL}/auth/signin`, { email, password });
57+
const req: SigninRequest = {
58+
email,
59+
password,
60+
};
61+
62+
const res = await axios.post<AuthResponse>(`${API_URL}/auth/signin`, req);
63+
5864
setToken(res.data.access_token);
59-
setRefreshToken(res.data.refresh_token || ''); // refresh_tokenを保存
65+
setRefreshToken(res.data.refresh_token || '');
6066
setUserId(res.data.user.id);
6167
navigate('/');
6268
} catch (error) {
@@ -83,30 +89,27 @@ export default function Login({ setToken, setRefreshToken, setUserId }: LoginPro
8389
alignItems: 'center',
8490
justifyContent: 'center',
8591
bgcolor: '#f0f2f5',
86-
p: { xs: 2, md: 4 }, // スマホとPCで余白を変える
92+
p: { xs: 2, md: 4 },
8793
}}
8894
>
8995
<Paper
9096
elevation={12}
9197
sx={{
9298
display: 'flex',
93-
// 【修正】PCフルサイズ対応: 幅を広げ、高さを増やす
9499
maxWidth: 'xl',
95100
width: '100%',
96-
// スマホは中身に合わせて伸縮(auto)、PCは固定高さ(700px)で迫力を出す
97101
minHeight: { xs: 'auto', md: '80vh' },
98102
overflow: 'hidden',
99-
flexDirection: { xs: 'column', md: 'row' }, // スマホは縦並び、PCは横並び
103+
flexDirection: { xs: 'column', md: 'row' },
100104
}}
101105
>
102-
{/* 左側:ビジュアルエリア (スマホでは非表示) */}
106+
{/* 左側:ビジュアルエリア */}
103107
<Grid
104108
container
105109
sx={{
106-
// 【修正】PCの大画面では画像エリアを広め(55-60%)にとる
107110
width: { xs: '100%', md: '55%', lg: '60%' },
108111
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
109-
display: { xs: 'none', md: 'flex' }, // スマホでは隠す
112+
display: { xs: 'none', md: 'flex' },
110113
flexDirection: 'column',
111114
justifyContent: 'center',
112115
alignItems: 'center',
@@ -115,7 +118,6 @@ export default function Login({ setToken, setRefreshToken, setUserId }: LoginPro
115118
position: 'relative',
116119
}}
117120
>
118-
{/* 装飾用の円 (薄く背景に入れる) */}
119121
<Box
120122
sx={{
121123
position: 'absolute',
@@ -141,7 +143,7 @@ export default function Login({ setToken, setRefreshToken, setUserId }: LoginPro
141143

142144
<MonitorHeartIcon sx={{ fontSize: { md: 100, lg: 120 }, mb: 3, opacity: 0.9 }} />
143145
<Typography
144-
variant="h3" // 文字サイズを大きく
146+
variant="h3"
145147
component="div"
146148
sx={{ mb: 2, textShadow: '0 2px 4px rgba(0,0,0,0.2)', fontWeight: 800 }}
147149
>
@@ -157,13 +159,12 @@ export default function Login({ setToken, setRefreshToken, setUserId }: LoginPro
157159
{/* 右側:入力フォームエリア */}
158160
<Box
159161
sx={{
160-
// 【修正】残りの幅を使う
161162
width: { xs: '100%', md: '45%', lg: '40%' },
162163
display: 'flex',
163164
flexDirection: 'column',
164165
justifyContent: 'center',
165166
alignItems: 'center',
166-
p: { xs: 4, md: 6, lg: 8 }, // PCでは内側の余白をたっぷりとる
167+
p: { xs: 4, md: 6, lg: 8 },
167168
}}
168169
>
169170
<Avatar sx={{ m: 1, bgcolor: '#667eea', width: 56, height: 56 }}>
@@ -192,7 +193,6 @@ export default function Login({ setToken, setRefreshToken, setUserId }: LoginPro
192193
value={email}
193194
onChange={(e) => setEmail(e.target.value)}
194195
autoFocus
195-
// PCで見やすいように入力欄の高さを調整
196196
InputProps={{ sx: { height: 56, fontSize: '1.1rem' } }}
197197
InputLabelProps={{ sx: { fontSize: '1rem' } }}
198198
/>

frontend/src/types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,8 @@ export interface JoinTeamRequest {
7575
export interface LogoutRequest {
7676
refresh_token: string;
7777
}
78+
79+
export interface SigninRequest {
80+
email: string;
81+
password: string;
82+
}

0 commit comments

Comments
 (0)