diff --git a/src/components/input/AccountInput.tsx b/src/components/input/AccountInput.tsx
new file mode 100644
index 0000000..cf749e0
--- /dev/null
+++ b/src/components/input/AccountInput.tsx
@@ -0,0 +1,25 @@
+import Input from './Input';
+import { AccountInputProps } from './types/types';
+import styles from './styles/AccountInput.module.css';
+
+/**
+ * 프로필 페이지용 계정 정보 표시 컴포넌트.
+ * 이메일과 비밀번호 모두 읽기 전용으로 표시한다.
+ * @param email 등록된 이메일 주소
+ * @param children 하단 영역에 렌더링할 요소 (수정하기 버튼 등)
+ */
+export default function AccountInput({ email, children }: AccountInputProps) {
+ return (
+
+
+
+
+
+
+
+
+
+ {children &&
{children}
}
+
+ );
+}
diff --git a/src/components/input/ActionTextArea.tsx b/src/components/input/ActionTextArea.tsx
new file mode 100644
index 0000000..a77ed8f
--- /dev/null
+++ b/src/components/input/ActionTextArea.tsx
@@ -0,0 +1,61 @@
+'use client';
+
+import { useCallback, useRef, useState } from 'react';
+import Image from 'next/image';
+import clsx from 'clsx';
+import TextArea from './TextArea';
+import { ActionTextAreaProps } from './types/types';
+import arrowActive from '@/assets/buttons/arrow/arrowUpActivedButton.svg';
+import arrowInactive from '@/assets/buttons/arrow/arrowUpNonActivedButton.svg';
+import styles from './styles/ActionTextArea.module.css';
+
+/**
+ * 전송 버튼이 포함된 텍스트 입력 기본 컴포넌트.
+ * 입력값이 있으면 전송 버튼이 활성화된다.
+ * @param onSubmit 전송 버튼 클릭 시 호출되는 콜백
+ * @param wrapperClassName wrapper div에 적용할 추가 CSS 클래스
+ * @param className TextArea에 적용할 추가 CSS 클래스
+ * @param props 네이티브 textarea의 모든 속성
+ */
+export default function ActionTextArea({
+ onSubmit,
+ wrapperClassName,
+ className,
+ onChange,
+ ...props
+}: ActionTextAreaProps) {
+ const [hasValue, setHasValue] = useState(false);
+ const textareaRef = useRef(null);
+
+ const autoResize = useCallback(() => {
+ const el = textareaRef.current;
+ if (!el) return;
+ el.style.height = 'auto';
+ el.style.height = `${el.scrollHeight}px`;
+ }, []);
+
+ return (
+
+
+ );
+}
diff --git a/src/components/input/ChangePassword.tsx b/src/components/input/ChangePassword.tsx
new file mode 100644
index 0000000..10e58a0
--- /dev/null
+++ b/src/components/input/ChangePassword.tsx
@@ -0,0 +1,41 @@
+import Input from './Input';
+import { ChangePasswordProps } from './types/types';
+import styles from './styles/ChangePassword.module.css';
+
+/**
+ * 비밀번호 변경 컴포넌트.
+ * @param isEditing 편집 모드 여부 (false면 인풋 비활성화, 기본값 false)
+ * @param newPasswordProps 새 비밀번호 인풋에 전달할 props
+ * @param confirmPasswordProps 새 비밀번호 확인 인풋에 전달할 props
+ * @param children 버튼 등 하단 영역에 렌더링할 요소
+ */
+export default function ChangePassword({
+ isEditing = false,
+ newPasswordProps,
+ confirmPasswordProps,
+ children,
+}: ChangePasswordProps) {
+ return (
+
+
+
+
+
+
+
+
+
+
{children}
+
+ );
+}
diff --git a/src/components/input/CommentInput.tsx b/src/components/input/CommentInput.tsx
new file mode 100644
index 0000000..d82416b
--- /dev/null
+++ b/src/components/input/CommentInput.tsx
@@ -0,0 +1,20 @@
+import clsx from 'clsx';
+import ActionTextArea from './ActionTextArea';
+import { CommentInputProps } from './types/types';
+import styles from './styles/CommentInput.module.css';
+
+/**
+ * 댓글 입력 컴포넌트.
+ * ActionTextArea를 위아래 보더 스타일로 감싼다.
+ * @param className TextArea에 적용할 추가 CSS 클래스
+ * @param props ActionTextArea의 모든 속성
+ */
+export default function CommentInput({ className, ...props }: CommentInputProps) {
+ return (
+
+ );
+}
diff --git a/src/components/input/Input.tsx b/src/components/input/Input.tsx
new file mode 100644
index 0000000..f1db8b6
--- /dev/null
+++ b/src/components/input/Input.tsx
@@ -0,0 +1,12 @@
+import clsx from 'clsx';
+import { InputProps } from './types/types';
+import styles from './styles/Input.module.css';
+
+/**
+ * 공통 Input 컴포넌트.
+ * @param className 추가 CSS 클래스
+ * @param props 네이티브 input의 모든 속성(placeholder, type, onChange 등)
+ */
+export default function Input({ className, ...props }: InputProps) {
+ return ;
+}
diff --git a/src/components/input/PasswordInput.tsx b/src/components/input/PasswordInput.tsx
new file mode 100644
index 0000000..85d6626
--- /dev/null
+++ b/src/components/input/PasswordInput.tsx
@@ -0,0 +1,42 @@
+'use client';
+
+import { useState } from 'react';
+import Image from 'next/image';
+import clsx from 'clsx';
+import Input from './Input';
+import { PasswordInputProps } from './types/types';
+import visibilityTrue from '@/assets/icons/visibility/visibillityTrue.svg';
+import visibilityFalse from '@/assets/icons/visibility/visibillityFalse.svg';
+import styles from './styles/PasswordInput.module.css';
+
+/**
+ * 비밀번호 Input 컴포넌트.
+ * @param className 추가 CSS 클래스
+ * @param props 네이티브 input의 모든 속성(type 제외)
+ */
+export default function PasswordInput({ className, ...props }: PasswordInputProps) {
+ const [showPassword, setShowPassword] = useState(false);
+
+ return (
+