diff --git a/frontend/src/Admin.jsx b/frontend/src/Admin.jsx
new file mode 100644
index 0000000..1eb01d0
--- /dev/null
+++ b/frontend/src/Admin.jsx
@@ -0,0 +1,9 @@
+const Admin = () => {
+ return (
+
-
로그인 페이지
-
-
-
+
+
+
PIROCHECK
+
+
+
+ {responseMessage}
+
+
+
);
};
-
export default Login;
diff --git a/frontend/src/Login.module.css b/frontend/src/Login.module.css
new file mode 100644
index 0000000..ece282e
--- /dev/null
+++ b/frontend/src/Login.module.css
@@ -0,0 +1,44 @@
+.login {
+ height: 100vh;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+.pirocheck {
+ font-size: 1.25rem;
+ transform: scaleX(1.5);
+ margin-bottom: 65px;
+}
+.login_container {
+ background-color: var(--background-black);
+ color: var(--main-green);
+ font-family: "Cafe24Moyamoya-Regular-v1.0", sans-serif;
+ padding: 1rem;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
+}
+.button {
+ background-color: var(--main-green);
+ color: white;
+ width: 309px;
+ height: 47px;
+ border-radius: 14px;
+ margin-top: 15px;
+ font-size: 16px;
+}
+button:disabled {
+ opacity: 0.6;
+ cursor: default;
+}
+.errorWrapper {
+ width: 309px;
+ display: flex;
+ justify-content: flex-start;
+ margin-left: 8px;
+}
+.errormessage {
+ font-family: "Noto Sans", sans-serif;
+ color: #ff5858;
+ font-size: 10px;
+ margin-top: 10px;
+}
diff --git a/frontend/src/assets/root.css b/frontend/src/assets/root.css
index 03f70a6..0b747e1 100644
--- a/frontend/src/assets/root.css
+++ b/frontend/src/assets/root.css
@@ -17,7 +17,7 @@
--fill-gray: #d9d9d9;
--warn-red: #ff5858;
--text-white: #ffffff;
- --border-gray: #c7c7c7;
+ --border-gray: rgba(204, 204, 204, 0.4);
}
.noto-sans-kr-context {
font-family: "Noto Sans KR", sans-serif;
diff --git a/frontend/src/components/InputBlock.jsx b/frontend/src/components/InputBlock.jsx
index 18acb60..a6ff2d4 100644
--- a/frontend/src/components/InputBlock.jsx
+++ b/frontend/src/components/InputBlock.jsx
@@ -1,15 +1,16 @@
import React from "react";
import "./componentsCss/InfoBlock.css";
-const InputBlock = ({ inputs }) => {
+const InputBlock = ({ inputs, onChange }) => {
return (
-
+
{inputs.map((input, index) => (
onChange && onChange(index, e.target.value)}
/>
))}
diff --git a/frontend/src/components/componentsCss/InfoBlock.css b/frontend/src/components/componentsCss/InfoBlock.css
index 73b7438..82aa409 100644
--- a/frontend/src/components/componentsCss/InfoBlock.css
+++ b/frontend/src/components/componentsCss/InfoBlock.css
@@ -9,7 +9,14 @@
font-family: "Noto Sans KR", sans-serif;
border: 1px var(--background-black) solid;
padding: 10px;
+ margin-top: 11px;
}
.inputTag:focus {
border: 1px var(--main-green) solid;
}
+.inputBlock {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
diff --git a/frontend/vite.config.js b/frontend/vite.config.js
index 8b0f57b..6b46dee 100644
--- a/frontend/vite.config.js
+++ b/frontend/vite.config.js
@@ -1,7 +1,15 @@
-import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
+import { defineConfig } from "vite";
+import react from "@vitejs/plugin-react";
-// https://vite.dev/config/
+// https://vitejs.dev/config/
export default defineConfig({
plugins: [react()],
-})
+ server: {
+ proxy: {
+ "/api": {
+ target: "http://localhost:8080",
+ changeOrigin: true,
+ },
+ },
+ },
+});