diff --git a/src-ui/utils/mixins.scss b/src-ui/utils/mixins.scss index 3532f992..c1776870 100644 --- a/src-ui/utils/mixins.scss +++ b/src-ui/utils/mixins.scss @@ -29,7 +29,6 @@ $default_loader_line_width: 0.2rem !default; border-left: $loader_line_width solid transparent; } - // @keyframes @keyframes rotate_animation { 0% { transform: translate($calc_translate, $calc_translate) rotate(0deg); @@ -60,16 +59,12 @@ $toggle_control_size: $toggle_height - calc($toggle_gutter * 2); position: relative; height: 100%; width: auto; - padding-left: $toggle_width; .control { - position: absolute; - top: 0; - left: 0; + position: relative; height: $toggle_height; width: $toggle_width; border-radius: $toggle_radius; background-color: $toggle_background_color_off; - // transition: background-color $toggle_control_speed $toggle_control_ease; &:after { content: ""; position: absolute; @@ -100,8 +95,4 @@ $toggle_control_size: $toggle_height - calc($toggle_gutter * 2); } } } -} - -.toggle_control { - @include toggle_control_styles; } \ No newline at end of file diff --git a/src-ui/windows/config_window/setting_section/setting_box/Appearance/Appearance.jsx b/src-ui/windows/config_window/setting_section/setting_box/Appearance/Appearance.jsx index 83b8840d..465894cc 100644 --- a/src-ui/windows/config_window/setting_section/setting_box/Appearance/Appearance.jsx +++ b/src-ui/windows/config_window/setting_section/setting_box/Appearance/Appearance.jsx @@ -7,6 +7,7 @@ export const Appearance = () => { DropdownMenuContainer, SliderContainer, CheckboxContainer, + SwitchboxContainer, } = useSettingBox(); const selectFunction = (selected_data) => { @@ -27,6 +28,7 @@ export const Appearance = () => { + ); }; \ No newline at end of file diff --git a/src-ui/windows/config_window/setting_section/setting_box/appearance/Appearance.jsx b/src-ui/windows/config_window/setting_section/setting_box/appearance/Appearance.jsx index 83b8840d..465894cc 100644 --- a/src-ui/windows/config_window/setting_section/setting_box/appearance/Appearance.jsx +++ b/src-ui/windows/config_window/setting_section/setting_box/appearance/Appearance.jsx @@ -7,6 +7,7 @@ export const Appearance = () => { DropdownMenuContainer, SliderContainer, CheckboxContainer, + SwitchboxContainer, } = useSettingBox(); const selectFunction = (selected_data) => { @@ -27,6 +28,7 @@ export const Appearance = () => { + ); }; \ No newline at end of file diff --git a/src-ui/windows/config_window/setting_section/setting_box/components/switchbox/Switchbox.jsx b/src-ui/windows/config_window/setting_section/setting_box/components/switchbox/Switchbox.jsx new file mode 100644 index 00000000..f8b16f1e --- /dev/null +++ b/src-ui/windows/config_window/setting_section/setting_box/components/switchbox/Switchbox.jsx @@ -0,0 +1,43 @@ +import clsx from "clsx"; +import { useState } from "react"; +import styles from "./Switchbox.module.scss"; + +export const Switchbox = (props) => { + + const [is_turned_on, setIsTurnedOn] = useState(false); + const [is_hovered, setIsHovered] = useState(false); + const [is_mouse_down, setIsMouseDown] = useState(false); + + const getClassNames = (baseClass) => clsx(baseClass, { + [styles.is_active]: (is_turned_on === true), + // [styles.is_loading]: (currentState.state === "loading"), + [styles.is_hovered]: is_hovered, + [styles.is_mouse_down]: is_mouse_down, + }); + + const onMouseEnter = () => setIsHovered(true); + const onMouseLeave = () => setIsHovered(false); + const onMouseDown = () => setIsMouseDown(true); + const onMouseUp = () => setIsMouseDown(false); + + const toggleFunction = () => { + setIsTurnedOn(!is_turned_on); + }; + + + return ( +
+
+
+ +
+
+
+ ); +}; diff --git a/src-ui/windows/config_window/setting_section/setting_box/components/switchbox/Switchbox.module.scss b/src-ui/windows/config_window/setting_section/setting_box/components/switchbox/Switchbox.module.scss new file mode 100644 index 00000000..1f7f7c83 --- /dev/null +++ b/src-ui/windows/config_window/setting_section/setting_box/components/switchbox/Switchbox.module.scss @@ -0,0 +1,25 @@ +@import "@scss_mixins"; + +.switchbox_container { + width: 100%; + display: flex; + justify-content: end; + align-items: center; + height: 2rem; +} + +.switchbox_wrapper { + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + padding: 2rem; + height: 100%; +} + +.toggle_control { + @include toggle_control_styles; + display: flex; + justify-content: center; + align-items: center; +} \ No newline at end of file diff --git a/src-ui/windows/config_window/setting_section/setting_box/components/useSettingBox.jsx b/src-ui/windows/config_window/setting_section/setting_box/components/useSettingBox.jsx index 73432ee7..27196c2b 100644 --- a/src-ui/windows/config_window/setting_section/setting_box/components/useSettingBox.jsx +++ b/src-ui/windows/config_window/setting_section/setting_box/components/useSettingBox.jsx @@ -3,6 +3,7 @@ import { LabelComponent } from "./label_component/LabelComponent"; import { DropdownMenu } from "./dropdown_menu/DropdownMenu"; import { Slider } from "./slider/Slider"; import { Checkbox } from "./checkbox/Checkbox"; +import { Switchbox } from "./switchbox/Switchbox"; import { useIsOpenedDropdownMenu } from "@store"; export const useSettingBox = () => { @@ -39,9 +40,19 @@ export const useSettingBox = () => { ); }; + const SwitchboxContainer = (props) => { + return ( +
+ + +
+ ); + }; + return { DropdownMenuContainer, SliderContainer, CheckboxContainer, + SwitchboxContainer, }; }; \ No newline at end of file diff --git a/src-ui/windows/main_window/sidebar_section/main_function_switch/MainFunctionSwitch.module.scss b/src-ui/windows/main_window/sidebar_section/main_function_switch/MainFunctionSwitch.module.scss index 1164c2b1..bcdd30c5 100644 --- a/src-ui/windows/main_window/sidebar_section/main_function_switch/MainFunctionSwitch.module.scss +++ b/src-ui/windows/main_window/sidebar_section/main_function_switch/MainFunctionSwitch.module.scss @@ -82,6 +82,10 @@ $loading_label_color: var(--dark_500_color); .toggle_control { @include toggle_control_styles; + display: flex; + justify-content: end; + align-items: center; + width: 100%; &.is_compact_mode { display: none; }