diff --git a/src/components/Filter/Filter.jsx b/src/components/Filter/Filter.jsx
index d323cc9..eb0bf87 100644
--- a/src/components/Filter/Filter.jsx
+++ b/src/components/Filter/Filter.jsx
@@ -1,5 +1,5 @@
import styles from "./Filter.module.css";
-import Button from "../ui/button/button.jsx"
+import Button from "../ui/button/button.tsx"
function Filter({isFilterVisible, filters, setFilters}){
const setAlphabeticalOrder = (order) => {
diff --git a/src/components/Footer/Footer.jsx b/src/components/Footer/Footer.jsx
index 068f976..754f071 100644
--- a/src/components/Footer/Footer.jsx
+++ b/src/components/Footer/Footer.jsx
@@ -2,7 +2,7 @@ import styles from "./Footer.module.css"
import {Link} from "react-router";
import {useState} from "react";
import Modal from "../ui/modal/modal.jsx";
-import Button from "../ui/button/button.jsx";
+import Button from "../ui/button/button.tsx";
import scrollToTop from "../../utils/scrollToTop.js";
export default function Footer(){
diff --git a/src/components/ToolBar/ToolBar.jsx b/src/components/ToolBar/ToolBar.jsx
index 2b90746..874fa70 100644
--- a/src/components/ToolBar/ToolBar.jsx
+++ b/src/components/ToolBar/ToolBar.jsx
@@ -3,7 +3,7 @@ import Filter from "../Filter/Filter.jsx";
import {useContext, useEffect, useState} from "react";
import SearchBar from "../SearchBar/SearchBar.jsx";
import CreateEventBtn from "../createEventBtn/CreateEventBtn.jsx";
-import Button from "../ui/button/button.jsx";
+import Button from "../ui/button/button.tsx";
import {AuthContext} from "../../contexts/auth/AuthContext.js";
function ToolBar({setFilters, filters, showCreate = true}) {
diff --git a/src/components/createEventBtn/CreateEventBtn.jsx b/src/components/createEventBtn/CreateEventBtn.jsx
index 18877cd..becbc76 100644
--- a/src/components/createEventBtn/CreateEventBtn.jsx
+++ b/src/components/createEventBtn/CreateEventBtn.jsx
@@ -1,8 +1,8 @@
import styles from "./createEventBtn.module.css"
import { useState, useContext } from "react";
import Modal from "../ui/modal/modal.jsx";
-import Button from "../ui/button/button.jsx";
-import TextInput from "../ui/input/input.jsx";
+import Button from "../ui/button/button.tsx";
+import TextInput from "../ui/input/input.tsx";
import { EventContext } from "../../contexts/events/EventContext.js";
diff --git a/src/components/ui/button/button.jsx b/src/components/ui/button/button.jsx
deleted file mode 100644
index 0fc74ab..0000000
--- a/src/components/ui/button/button.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import styles from "./button.module.css";
-
-const Button = ({ children, variant = "primary", onClick, className }) => {
- let btnStyle;
-
- if (variant === "primary") btnStyle = styles.primary;
- else if (variant === "danger") btnStyle = styles.danger;
- else if(variant === "transparent") btnStyle = styles.transparent;
- else btnStyle = styles.default;
-
- return
- {children}
-
;
-};
-
-export default Button;
diff --git a/src/components/ui/button/button.tsx b/src/components/ui/button/button.tsx
new file mode 100644
index 0000000..1866c39
--- /dev/null
+++ b/src/components/ui/button/button.tsx
@@ -0,0 +1,44 @@
+import { ReactNode, MouseEventHandler } from "react";
+import styles from "./button.module.css";
+
+type ButtonVariant = "primary" | "danger" | "transparent" | "default";
+
+interface ButtonProps {
+ children: ReactNode;
+ variant?: ButtonVariant;
+ onClick?: MouseEventHandler;
+ className?: string;
+}
+
+const Button = ({
+ children,
+ variant = "primary",
+ onClick,
+ className = "",
+ }: ButtonProps) => {
+ let btnStyle: string;
+
+ if (variant === "primary") { // @ts-ignore
+ btnStyle = styles.primary;
+ }
+ else if (variant === "danger") { // @ts-ignore
+ btnStyle = styles.danger;
+ }
+ else if (variant === "transparent") { // @ts-ignore
+ btnStyle = styles.transparent;
+ }
+ else { // @ts-ignore
+ btnStyle = styles.default;
+ }
+
+ return (
+
+ {children}
+
+ );
+};
+
+export default Button;
diff --git a/src/components/ui/input/input.jsx b/src/components/ui/input/input.jsx
deleted file mode 100644
index 7713b27..0000000
--- a/src/components/ui/input/input.jsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import styles from "./input.module.css";
-import { useState } from "react";
-
-const TextInput = ({ placeholder, onChange, value, borderStyle, password, className, ...props }) => {
-
- const [showPassword, setShowPassword] = useState(false);
-
- let inputBorderStyle = styles.square;
- if (borderStyle === "square") inputBorderStyle = styles.square;
- if(borderStyle === "rounded") inputBorderStyle = styles.rounded;
-
- const toggleShowPassword = () => {
- setShowPassword(!showPassword);
- };
-
- if(password) return (
-
-
-
-
- );
-
- return
-};
-
-export default TextInput;
diff --git a/src/components/ui/input/input.tsx b/src/components/ui/input/input.tsx
new file mode 100644
index 0000000..0cc1e7f
--- /dev/null
+++ b/src/components/ui/input/input.tsx
@@ -0,0 +1,62 @@
+import styles from "./input.module.css";
+import { useState, ChangeEvent, InputHTMLAttributes } from "react";
+
+interface TextInputProps extends InputHTMLAttributes {
+ placeholder?: string;
+ value?: string;
+ onChange?: (e: ChangeEvent) => void;
+ borderStyle?: "square" | "rounded";
+ password?: boolean;
+ className?: string;
+}
+
+const TextInput = ({
+ placeholder,
+ onChange,
+ value,
+ borderStyle = "square",
+ password,
+ className = "",
+ ...props
+ }: TextInputProps) => {
+ const [showPassword, setShowPassword] = useState(false);
+
+ let inputBorderStyle = styles.square;
+ if (borderStyle === "rounded") inputBorderStyle = styles.rounded;
+
+ const toggleShowPassword = () => {
+ setShowPassword((prev) => !prev);
+ };
+
+ if (password)
+ return (
+
+
+
+
+ );
+
+ return (
+
+ );
+};
+
+export default TextInput;
diff --git a/src/components/ui/modal/modal.jsx b/src/components/ui/modal/modal.jsx
index 822398c..82d60a2 100644
--- a/src/components/ui/modal/modal.jsx
+++ b/src/components/ui/modal/modal.jsx
@@ -1,6 +1,6 @@
import { createPortal } from "react-dom";
import styles from "./modal.module.css";
-import Button from "../button/button.jsx";
+import Button from "../button/button.tsx";
const Modal = ({ open, onClose, children, title }) => {
diff --git a/src/components/ui/themeSwitcher/ThemeSwitcher.jsx b/src/components/ui/themeSwitcher/ThemeSwitcher.jsx
index ef3ffc6..25e0369 100644
--- a/src/components/ui/themeSwitcher/ThemeSwitcher.jsx
+++ b/src/components/ui/themeSwitcher/ThemeSwitcher.jsx
@@ -1,4 +1,4 @@
-import Button from "../button/button.jsx";
+import Button from "../button/button.tsx";
import { useState, useEffect } from "react";
import styles from "./ThemeSwitcher.module.css";
diff --git a/src/pages/Admin/components/pendingMembers/PendingMembers.jsx b/src/pages/Admin/components/pendingMembers/PendingMembers.jsx
index 69dc4e4..151856e 100644
--- a/src/pages/Admin/components/pendingMembers/PendingMembers.jsx
+++ b/src/pages/Admin/components/pendingMembers/PendingMembers.jsx
@@ -1,5 +1,5 @@
import React, {useState, useEffect} from "react";
-import Button from "../../../../components/ui/button/button.jsx";
+import Button from "../../../../components/ui/button/button.tsx";
import styles from "./PendingMembers.module.css";
import Modal from "../../../../components/ui/modal/modal.jsx";
import getUserToValidate from "../../../../utils/users/getUserToValidate.js";
diff --git a/src/pages/Events/components/Event/Event.jsx b/src/pages/Events/components/Event/Event.jsx
index e011d56..41181d3 100644
--- a/src/pages/Events/components/Event/Event.jsx
+++ b/src/pages/Events/components/Event/Event.jsx
@@ -1,7 +1,7 @@
import styles from "./Event.module.css";
import { useState, useEffect } from "react";
import { useNavigate } from "react-router";
-import Button from "/src/components/ui/button/button.jsx"
+import Button from "/src/components/ui/button/button"
function Event({event}){
diff --git a/src/pages/Login/components/loginform/loginForm.jsx b/src/pages/Login/components/loginform/loginForm.jsx
index ee2ee6b..80654f3 100644
--- a/src/pages/Login/components/loginform/loginForm.jsx
+++ b/src/pages/Login/components/loginform/loginForm.jsx
@@ -1,7 +1,7 @@
import { useState, useContext } from "react";
import styles from "./loginForm.module.css";
-import Button from "../../../../components/ui/button/button.jsx";
-import Input from "../../../../components/ui/input/input.jsx";
+import Button from "../../../../components/ui/button/button.tsx";
+import Input from "../../../../components/ui/input/input.tsx";
import Modal from "../../../../components/ui/modal/modal.jsx";
import { useNavigate } from "react-router";
import { AuthContext } from "../../../../contexts/auth/AuthContext.js";
diff --git a/src/pages/Profile/components/SettingsModal/SettingsModal.jsx b/src/pages/Profile/components/SettingsModal/SettingsModal.jsx
index 4283559..a831fba 100644
--- a/src/pages/Profile/components/SettingsModal/SettingsModal.jsx
+++ b/src/pages/Profile/components/SettingsModal/SettingsModal.jsx
@@ -1,10 +1,10 @@
import Modal from "../../../../components/ui/modal/modal.jsx";
-import Button from "../../../../components/ui/button/button.jsx";
+import Button from "../../../../components/ui/button/button.tsx";
import styles from "./SettingsModal.module.css"
import { useContext, useState } from "react";
import ThemeSwitcher from "../../../../components/ui/themeSwitcher/ThemeSwitcher.jsx";
import { AuthContext } from "../../../../contexts/auth/AuthContext.js";
-import TextInput from "../../../../components/ui/input/input.jsx";
+import TextInput from "../../../../components/ui/input/input.tsx";
import updateUser from "../../../../utils/users/updateUser.js";
import deleteUser from "../../../../utils/users/deleteUser.js";
diff --git a/src/pages/Register/RegisterPage.jsx b/src/pages/Register/RegisterPage.jsx
index f0547c3..f3bebaa 100644
--- a/src/pages/Register/RegisterPage.jsx
+++ b/src/pages/Register/RegisterPage.jsx
@@ -1,7 +1,7 @@
import styles from "./RegisterPage.module.css";
import Background from "../../components/background/background.jsx";
-import Input from "../../components/ui/input/input.jsx";
-import Button from "../../components/ui/button/button.jsx";
+import Input from "../../components/ui/input/input.tsx";
+import Button from "../../components/ui/button/button.tsx";
import {useContext, useEffect, useState} from "react";
import register from "../../utils/register.js";
import { useNavigate } from "react-router";
diff --git a/src/pages/VolunteerProfile/components/manageMember/ManageMember.jsx b/src/pages/VolunteerProfile/components/manageMember/ManageMember.jsx
index 6266501..2ee7fc0 100644
--- a/src/pages/VolunteerProfile/components/manageMember/ManageMember.jsx
+++ b/src/pages/VolunteerProfile/components/manageMember/ManageMember.jsx
@@ -1,4 +1,4 @@
-import Button from "../../../../components/ui/button/button.jsx";
+import Button from "../../../../components/ui/button/button.tsx";
import Modal from "../../../../components/ui/modal/modal.jsx";
import {useContext, useState} from "react";
import styles from "./manageMember.module.css"
diff --git a/src/pages/VolunteerProfile/components/manageMember/deactivateMember/deactivateMemberBtn.jsx b/src/pages/VolunteerProfile/components/manageMember/deactivateMember/deactivateMemberBtn.jsx
index ccb8390..af6c7af 100644
--- a/src/pages/VolunteerProfile/components/manageMember/deactivateMember/deactivateMemberBtn.jsx
+++ b/src/pages/VolunteerProfile/components/manageMember/deactivateMember/deactivateMemberBtn.jsx
@@ -1,4 +1,4 @@
-import Button from "../../../../../components/ui/button/button.jsx";
+import Button from "../../../../../components/ui/button/button.tsx";
import Modal from "../../../../../components/ui/modal/modal.jsx";
import { useState } from "react";
import deactivateUser from "../../../../../utils/users/deactivateUser.js"
diff --git a/src/pages/VolunteerProfile/components/manageMember/modifyrole/ModifyRole.jsx b/src/pages/VolunteerProfile/components/manageMember/modifyrole/ModifyRole.jsx
index bc4d495..b5ac70b 100644
--- a/src/pages/VolunteerProfile/components/manageMember/modifyrole/ModifyRole.jsx
+++ b/src/pages/VolunteerProfile/components/manageMember/modifyrole/ModifyRole.jsx
@@ -1,5 +1,5 @@
import styles from "../manageMember.module.css";
-import Button from "../../../../../components/ui/button/button.jsx";
+import Button from "../../../../../components/ui/button/button.tsx";
import modifyRole from "../../../../../utils/users/modifyRole.js";
import { useState, useEffect } from "react";
import getRoles from "../../../../../utils/getRoles.js";
diff --git a/src/pages/Volunteers/VolunteerCard.jsx b/src/pages/Volunteers/VolunteerCard.jsx
index 144d708..f69f6df 100644
--- a/src/pages/Volunteers/VolunteerCard.jsx
+++ b/src/pages/Volunteers/VolunteerCard.jsx
@@ -2,7 +2,7 @@ import React, {useState} from "react";
import styles from "./VolunteersPage.module.css";
import formatDate from "../../utils/date/formatDate.js";
import { useNavigate } from "react-router";
-import Button from "../../components/ui/button/button.jsx";
+import Button from "../../components/ui/button/button.tsx";
export default function VolunteerCard({ user }) {
diff --git a/src/pages/eventDetail/components/EventTask/EventTask.jsx b/src/pages/eventDetail/components/EventTask/EventTask.jsx
index bbde7b6..2c60a79 100644
--- a/src/pages/eventDetail/components/EventTask/EventTask.jsx
+++ b/src/pages/eventDetail/components/EventTask/EventTask.jsx
@@ -1,6 +1,6 @@
import styles from "./eventTask.module.css";
import { formatDateLetter } from "../../../../utils/date/formatDateLetter.js";
-import Button from "../../../../components/ui/button/button.jsx";
+import Button from "../../../../components/ui/button/button.tsx";
import assign from "../../../../utils/tasks/assign.js";
import unAssign from "../../../../utils/tasks/unAssign.js";
import { useContext, useEffect, useState } from "react";
diff --git a/src/pages/eventDetail/components/createTaskBtn/createTaskBtn.jsx b/src/pages/eventDetail/components/createTaskBtn/createTaskBtn.jsx
index 8862ada..a6bdb89 100644
--- a/src/pages/eventDetail/components/createTaskBtn/createTaskBtn.jsx
+++ b/src/pages/eventDetail/components/createTaskBtn/createTaskBtn.jsx
@@ -1,7 +1,7 @@
import styles from "../../eventDetail.module.css";
-import Button from "../../../../components/ui/button/button.jsx";
+import Button from "../../../../components/ui/button/button.tsx";
import {useContext, useState} from "react";
-import TextInput from "../../../../components/ui/input/input.jsx";
+import TextInput from "../../../../components/ui/input/input.tsx";
import Modal from "../../../../components/ui/modal/modal.jsx";
import createTaskApi from "../../../../utils/tasks/createTask.js";
import {EventDetailContext} from "../../../../contexts/eventDetail/eventDetail.js";
diff --git a/src/pages/eventDetail/components/deleteEventBtn/deleteEventBtn.jsx b/src/pages/eventDetail/components/deleteEventBtn/deleteEventBtn.jsx
index 813a995..92eb5c3 100644
--- a/src/pages/eventDetail/components/deleteEventBtn/deleteEventBtn.jsx
+++ b/src/pages/eventDetail/components/deleteEventBtn/deleteEventBtn.jsx
@@ -1,5 +1,5 @@
import styles from "../../eventDetail.module.css";
-import Button from "../../../../components/ui/button/button.jsx";
+import Button from "../../../../components/ui/button/button.tsx";
import Modal from "../../../../components/ui/modal/modal.jsx";
import { useContext, useState } from "react";
import { EventDetailContext } from "../../../../contexts/eventDetail/eventDetail.js";
diff --git a/src/pages/eventDetail/components/deleteTaskBtn/deleteTaskBtn.jsx b/src/pages/eventDetail/components/deleteTaskBtn/deleteTaskBtn.jsx
index fdad16f..28f507a 100644
--- a/src/pages/eventDetail/components/deleteTaskBtn/deleteTaskBtn.jsx
+++ b/src/pages/eventDetail/components/deleteTaskBtn/deleteTaskBtn.jsx
@@ -1,7 +1,7 @@
import { useContext } from "react";
import { AuthContext } from "../../../../contexts/auth/AuthContext.js";
import { EventDetailContext } from "../../../../contexts/eventDetail/eventDetail.js";
-import Button from "../../../../components/ui/button/button.jsx";
+import Button from "../../../../components/ui/button/button.tsx";
import { useState } from "react";
import Modal from "../../../../components/ui/modal/modal.jsx";
import styles from "../../eventDetail.module.css";
diff --git a/src/pages/waitValidationPage/ValidationErrorPage.jsx b/src/pages/waitValidationPage/ValidationErrorPage.jsx
index aeff346..3086d77 100644
--- a/src/pages/waitValidationPage/ValidationErrorPage.jsx
+++ b/src/pages/waitValidationPage/ValidationErrorPage.jsx
@@ -1,6 +1,6 @@
import styles from "./validationErrorPage.module.css"
import Background from "../../components/background/background.jsx";
-import Button from "../../components/ui/button/button.jsx";
+import Button from "../../components/ui/button/button.tsx";
import { useContext } from "react";
import { AuthContext } from "../../contexts/auth/AuthContext.js";
import { Navigate, useNavigate, Link } from "react-router";
diff --git a/src/stories/Button.stories.jsx b/src/stories/Button.stories.jsx
index 3f86188..3179067 100644
--- a/src/stories/Button.stories.jsx
+++ b/src/stories/Button.stories.jsx
@@ -1,6 +1,6 @@
import { fn } from 'storybook/test';
-import Button from '../components/ui/button/button.jsx';
+import Button from '../components/ui/button/button.tsx';
export default {
diff --git a/src/stories/Input.stories.jsx b/src/stories/Input.stories.jsx
index 1d3cc0c..86cd833 100644
--- a/src/stories/Input.stories.jsx
+++ b/src/stories/Input.stories.jsx
@@ -1,5 +1,5 @@
import { useState } from "react";
-import TextInput from "../components/ui/input/input.jsx";
+import TextInput from "../components/ui/input/input.tsx";
export default {
diff --git a/src/stories/Modal.stories.jsx b/src/stories/Modal.stories.jsx
index 1ece2ae..eb0b6ec 100644
--- a/src/stories/Modal.stories.jsx
+++ b/src/stories/Modal.stories.jsx
@@ -1,5 +1,5 @@
import Modal from "../components/ui/modal/modal.jsx";
-import Button from "../components/ui/button/button.jsx";
+import Button from "../components/ui/button/button.tsx";
import { useState } from "react";
export default {