({ mode: 'onChange', defaultValues: { name: '', email: '' } });
+
+  const onSubmit = (data: FormValues) => {
+    console.log(data);
+  };
+
+  return (
+    
+  );
+};
+
+export default FormGroup;
diff --git a/src/constants/constants.ts b/src/constants/constants.ts
new file mode 100644
index 00000000..9da7fec1
--- /dev/null
+++ b/src/constants/constants.ts
@@ -0,0 +1,8 @@
+export const USERNAME_PATTERN = /^(?!.*[ㄱ-ㅎㅏ-ㅣ])[a-z0-9ㄱ-힇]+$/;
+export const PASSWORD_PATTERN =
+  /^(?=(?:[^a-zA-Z]*[a-zA-Z]))(?=(?:\D*\d))(?=(?:[a-zA-Z0-9]*[~!-_@#]))[a-zA-Z0-9~!-_]+$/;
+
+export const PATTERNS = {
+  username: USERNAME_PATTERN,
+  password: PASSWORD_PATTERN,
+};
diff --git a/src/styles/abstracts/_variables.scss b/src/styles/abstracts/_variables.scss
index e69de29b..085a6e0e 100644
--- a/src/styles/abstracts/_variables.scss
+++ b/src/styles/abstracts/_variables.scss
@@ -0,0 +1,6 @@
+$light-gray: #f2f2f2;
+$blue: #2273ed;
+$red-400: #fc4c70;
+$white: #ffffff;
+$black: #333333;
+$gray: #7f7f7f;
diff --git a/src/styles/base/_base.scss b/src/styles/base/_base.scss
index 18c2b8ae..e99cdb68 100644
--- a/src/styles/base/_base.scss
+++ b/src/styles/base/_base.scss
@@ -1,17 +1,50 @@
-input {
-  font-size: 14px;
-  font-family: 'spoqa Han Sans Neo', 'sans-serif';
+.form-group {
+  display: grid;
+  gap: 8px;
+
+  span {
+    font-size: 12px;
+    color: $red-400;
+  }
+}
+
+.input-wrapper {
+  position: relative;
+
+  img {
+    position: absolute;
+    top: 50%;
+    right: 0;
+    transform: translateY(-50%);
+    width: 20px;
+    height: 20px;
+  }
+
+  input {
+    font-size: 14px;
+    font-family: 'spoqa Han Sans Neo', 'sans-serif';
+    color: $black;
+
+    width: 100%;
+    height: 28px;
 
-  width: 100%;
-  height: 40px;
+    outline: none;
+    border: none;
+    border-bottom: 1px solid $light-gray;
 
-  outline: none;
-  border: none;
-  border-bottom: 1px solid #f2f2f2;
+    transition: border-bottom 0.2s ease-in-out;
 
-  transition: border-bottom 0.2s ease-in-out;
+    &:focus-within {
+      border-bottom: 1px solid $blue;
+    }
 
-  &:focus-within {
-    border-bottom: 1px solid #fd8da4;
+    &.error {
+      border-bottom: 1px solid $red-400;
+    }
   }
 }
+
+label {
+  font-size: 14px;
+  color: $gray;
+}