diff --git a/src/front/Components/DesignSystem/Dropdown/index.tsx b/src/front/Components/DesignSystem/Dropdown/index.tsx
index f325a0e5..b88dae07 100644
--- a/src/front/Components/DesignSystem/Dropdown/index.tsx
+++ b/src/front/Components/DesignSystem/Dropdown/index.tsx
@@ -53,7 +53,7 @@ export default function Dropdown(props: IProps) {
disabled && classes["disabled"],
!!selectedOption && classes["active"],
])}
- onClick={openable.toggle}>
+ onClick={() => openable.toggle()}>
{getLabelContent(selectedOption, placeholder)}
diff --git a/src/front/Components/DesignSystem/RadioBox/classes.module.scss b/src/front/Components/DesignSystem/RadioBox/classes.module.scss
index 8d01e338..f4e03727 100644
--- a/src/front/Components/DesignSystem/RadioBox/classes.module.scss
+++ b/src/front/Components/DesignSystem/RadioBox/classes.module.scss
@@ -36,6 +36,8 @@
cursor: pointer;
width: 20px;
height: 20px;
+ min-width: 20px;
+ max-width: 20px;
border-radius: var(--radius-full, 360px);
border: 2px solid var(--select-option-unselected-default-border, #6d7e8a);
margin-right: 16px;
diff --git a/src/front/Components/DesignSystem/Toggle/classes.module.scss b/src/front/Components/DesignSystem/Toggle/classes.module.scss
new file mode 100644
index 00000000..83ee91b9
--- /dev/null
+++ b/src/front/Components/DesignSystem/Toggle/classes.module.scss
@@ -0,0 +1,46 @@
+@import "@Themes/constants.scss";
+
+.root {
+ cursor: pointer;
+ height: fit-content;
+
+ display: flex;
+ width: 48px;
+ padding: var(--Radius-xs, 2px);
+ gap: 8px;
+
+ border-radius: var(--toggle-radius, 360px);
+ background: var(--toggle-off-background, #edeff1);
+
+ .circle {
+ width: 20px;
+ height: 20px;
+ flex-shrink: 0;
+
+ border-radius: var(--toggle-radius, 360px);
+ background: var(--toggle-switch-background, #fff);
+
+ transition: transform 0.3s ease-in-out;
+
+ &.active {
+ transform: translateX(24px);
+ }
+ }
+
+ &.sm {
+ width: 40px;
+
+ .circle {
+ width: 16px;
+ height: 16px;
+
+ &.active {
+ transform: translateX(20px);
+ }
+ }
+ }
+
+ &.active {
+ background-color: var(--toggle-on-background, #005bcb);
+ }
+}
diff --git a/src/front/Components/DesignSystem/Toggle/index.tsx b/src/front/Components/DesignSystem/Toggle/index.tsx
new file mode 100644
index 00000000..db00bc4d
--- /dev/null
+++ b/src/front/Components/DesignSystem/Toggle/index.tsx
@@ -0,0 +1,38 @@
+import useToggle from "@Front/Hooks/useToggle";
+import classNames from "classnames";
+import React, { useCallback } from "react";
+
+import classes from "./classes.module.scss";
+
+export enum EToggleSize {
+ MD = "md",
+ SM = "sm",
+}
+
+export enum ETagVariant {
+ REGULAR = "regular",
+ SEMI_BOLD = "semi_bold",
+}
+
+type IProps = {
+ onChange?: (value: boolean) => void;
+ defaultActive?: boolean;
+ size?: EToggleSize;
+ className?: string;
+};
+
+export default function Toggle(props: IProps) {
+ const { className, defaultActive = false, size = EToggleSize.MD } = props;
+
+ const { active, toggle } = useToggle(defaultActive);
+
+ const handleToggle = useCallback(() => {
+ toggle((isOpen) => props.onChange?.(isOpen));
+ }, [toggle, props]);
+
+ return (
+
+ );
+}
diff --git a/src/front/Components/Layouts/DesignSystem/classes.module.scss b/src/front/Components/Layouts/DesignSystem/classes.module.scss
index 90be8834..c0f72ca1 100644
--- a/src/front/Components/Layouts/DesignSystem/classes.module.scss
+++ b/src/front/Components/Layouts/DesignSystem/classes.module.scss
@@ -15,6 +15,7 @@
.rows {
display: flex;
+ align-items: center;
gap: 16px;
}
}
diff --git a/src/front/Components/Layouts/DesignSystem/index.tsx b/src/front/Components/Layouts/DesignSystem/index.tsx
index b07965e7..6c7ea158 100644
--- a/src/front/Components/Layouts/DesignSystem/index.tsx
+++ b/src/front/Components/Layouts/DesignSystem/index.tsx
@@ -35,6 +35,7 @@ import { useCallback, useMemo, useState } from "react";
import classes from "./classes.module.scss";
import CheckboxesInputElement from "@Front/Components/DesignSystem/CheckBox";
import RadioBox from "@Front/Components/DesignSystem/RadioBox";
+import Toggle, { EToggleSize } from "@Front/Components/DesignSystem/Toggle";
export default function DesignSystem() {
const { isOpen, open, close } = useOpenable();
@@ -135,6 +136,15 @@ export default function DesignSystem() {
/>