- {
- currentMicWordFilterList.data.map((item, index) => {
- return ;
- })
- }
-
+ { currentIsOpenedMicWordFilterList.data && currentMicWordFilterList.data.length > 0 &&
+
+ {
+ currentMicWordFilterList.data.map((item, index) => {
+ return ;
+ })
+ }
+
<_Entry width="30rem" onChange={onChangeEntry} ui_variable={input_value}/>
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/word_filter/WordFilter.module.scss b/src-ui/views/app/config_page/setting_section/setting_box/_components/word_filter/WordFilter.module.scss
index 2fe9600d..842fee46 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_components/word_filter/WordFilter.module.scss
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_components/word_filter/WordFilter.module.scss
@@ -4,11 +4,13 @@
align-items: center;
flex-direction: column;
gap: 2rem;
+ width: 100%;
}
.list_section_wrapper {
display: flex;
+ justify-content: center;
flex-wrap: wrap;
width: 100%;
gap: 0.6rem;
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.jsx b/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.jsx
index 6faf882c..b9050ab9 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.jsx
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.jsx
@@ -22,13 +22,6 @@ import {
} from "../_components";
import { Checkbox } from "@common_components";
-const LabeledContainer = ({ children, label, desc, custom_class_name }) => (
-
-
- {children}
-
-);
-
export const useOnMouseLeaveDropdownMenu = () => {
const { updateIsOpenedDropdownMenu } = useStore_IsOpenedDropdownMenu();
@@ -49,19 +42,44 @@ export const DropdownMenuContainer = (props) => {
);
};
-const CommonContainer = ({ Component, ...props }) => {
+const CommonContainer = ({
+ label_type = "label_component",
+ add_break_point = true,
+ flex_column = false,
+ remove_border_bottom = false,
+ Component,
+ ...props
+}) => {
const { currentIsBreakPoint } = useStore_IsBreakPoint();
const container_class = clsx(styles.container, {
- [styles.is_break_point]: props.add_break_point ?? currentIsBreakPoint.data,
+ [styles.is_break_point]: add_break_point && currentIsBreakPoint.data,
+ [styles.flex_column]: flex_column,
+ [styles.remove_border_bottom]: remove_border_bottom,
});
- return (
-
-
-
- );
+ if (label_type === "label_component") {
+ return (
+
+
+
+
+ );
+ } else if (label_type === "no_label") {
+ return (
+
+
+
+ );
+ } else if (label_type === "label_only") {
+ return (
+
+
+
+ );
+ }
};
+
export const SliderContainer = (props) => (
);
@@ -114,19 +132,22 @@ export const ComputeDeviceContainer = (props) => (
);
-export const WordFilterContainer = (props) => (
-
-);
+export const WordFilterContainer = (props) => {
+ return (
+ <>
+
+
+ >
+ );
+};
export const DownloadModelsContainer = (props) => (
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.module.scss b/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.module.scss
index cab3118a..41360598 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.module.scss
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.module.scss
@@ -8,7 +8,9 @@
&.flex_column {
flex-direction: column;
}
- border-bottom: solid 0.1rem var(--dark_800_color);
+ &:not(.remove_border_bottom) {
+ border-bottom: solid 0.1rem var(--dark_800_color);
+ }
&.is_break_point {
flex-direction: column;
@@ -32,26 +34,4 @@
.message_format_section {
width: 100%;
-}
-
-
-.word_filter_container {
- display: flex;
- width: 100%;
- flex-direction: column;
- justify-content: space-between;
- align-items: center;
- gap: 2rem;
- padding: 2rem;
-}
-
-.word_filter_switch_section {
- display: flex;
- width: 100%;
- justify-content: space-between;
- align-items: center;
-}
-
-.word_filter_label_wrapper {
- max-width: 34rem;
}
\ No newline at end of file
From 3612f2cb80444650b2e998eb2d6799b09872d96a Mon Sep 17 00:00:00 2001
From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com>
Date: Mon, 10 Nov 2025 23:07:17 +0900
Subject: [PATCH 2/9] [Refactor] MessageFormats: Improve reusability of setting
container templates.
---
.../setting_box/_templates/Templates.jsx | 20 +++++++++++--------
.../_templates/Templates.module.scss | 8 --------
2 files changed, 12 insertions(+), 16 deletions(-)
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.jsx b/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.jsx
index b9050ab9..b74b9f2f 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.jsx
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.jsx
@@ -155,13 +155,17 @@ export const DownloadModelsContainer = (props) => (
export const MessageFormatContainer = (props) => {
return (
-
+ <>
+
+
+ >
);
};
\ No newline at end of file
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.module.scss b/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.module.scss
index 41360598..6767471d 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.module.scss
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.module.scss
@@ -19,10 +19,6 @@
}
}
-.label_only_section {
- width: 100%;
-}
-
.deepl_auth_key_label_section {
max-width: 34rem;
display: flex;
@@ -30,8 +26,4 @@
justify-content: space-between;
align-items: center;
gap: 1.4rem;
-}
-
-.message_format_section {
- width: 100%;
}
\ No newline at end of file
From b21a46e96eda0782673d03ff17866f887a6fa72a Mon Sep 17 00:00:00 2001
From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com>
Date: Tue, 11 Nov 2025 03:02:21 +0900
Subject: [PATCH 3/9] [Refactor] Extract container logic into
TemplatesContainerWrapper.
---
.../setting_box/_templates/Templates.jsx | 53 ++++++++++++-------
1 file changed, 35 insertions(+), 18 deletions(-)
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.jsx b/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.jsx
index b74b9f2f..a8ef6b6c 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.jsx
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_templates/Templates.jsx
@@ -42,6 +42,27 @@ export const DropdownMenuContainer = (props) => {
);
};
+const TemplatesContainerWrapper = ({
+ children,
+ add_break_point = true,
+ flex_column = false,
+ remove_border_bottom = false,
+}) => {
+ const { currentIsBreakPoint } = useStore_IsBreakPoint();
+
+ const container_class = clsx(styles.container, {
+ [styles.is_break_point]: add_break_point && currentIsBreakPoint.data,
+ [styles.flex_column]: flex_column,
+ [styles.remove_border_bottom]: remove_border_bottom,
+ });
+
+ return (
+
+ {children}
+
+ );
+};
+
const CommonContainer = ({
label_type = "label_component",
add_break_point = true,
@@ -52,34 +73,35 @@ const CommonContainer = ({
}) => {
const { currentIsBreakPoint } = useStore_IsBreakPoint();
- const container_class = clsx(styles.container, {
- [styles.is_break_point]: add_break_point && currentIsBreakPoint.data,
- [styles.flex_column]: flex_column,
- [styles.remove_border_bottom]: remove_border_bottom,
- });
+ const container_wrapper_props = {
+ add_break_point: add_break_point,
+ flex_column: flex_column,
+ remove_border_bottom: remove_border_bottom,
+ };
if (label_type === "label_component") {
return (
-
+
-
+
);
} else if (label_type === "no_label") {
return (
-
+
-
+
);
} else if (label_type === "label_only") {
return (
-
+
-
+
);
}
};
+
export const SliderContainer = (props) => (
);
@@ -108,19 +130,14 @@ export const RadioButtonContainer = (props) => (
);
export const DeeplAuthKeyContainer = (props) => {
- const { currentIsBreakPoint } = useStore_IsBreakPoint();
- const container_class = clsx(styles.container, {
- [styles.is_break_point]: currentIsBreakPoint.data,
- });
-
return (
-
+
);
};
From dc3c236791bf7a3e63ae9f52218d5739ca1f3cf0 Mon Sep 17 00:00:00 2001
From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com>
Date: Wed, 12 Nov 2025 10:01:55 +0900
Subject: [PATCH 4/9] [Refactor] Move DropdownMenu to _atoms directory.
---
.../_dropdown_menu/_DropdownMenu.jsx} | 2 +-
.../_dropdown_menu/_DropdownMenu.module.scss} | 0
.../setting_box/_components/compute_device/ComputeDevice.jsx | 2 +-
.../setting_section/setting_box/_components/index.js | 2 +-
4 files changed, 3 insertions(+), 3 deletions(-)
rename src-ui/views/app/config_page/setting_section/setting_box/_components/{dropdown_menu/DropdownMenu.jsx => _atoms/_dropdown_menu/_DropdownMenu.jsx} (96%)
rename src-ui/views/app/config_page/setting_section/setting_box/_components/{dropdown_menu/DropdownMenu.module.scss => _atoms/_dropdown_menu/_DropdownMenu.module.scss} (100%)
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.jsx b/src-ui/views/app/config_page/setting_section/setting_box/_components/_atoms/_dropdown_menu/_DropdownMenu.jsx
similarity index 96%
rename from src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.jsx
rename to src-ui/views/app/config_page/setting_section/setting_box/_components/_atoms/_dropdown_menu/_DropdownMenu.jsx
index 423de2ef..a5c1c136 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.jsx
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_components/_atoms/_dropdown_menu/_DropdownMenu.jsx
@@ -1,4 +1,4 @@
-import styles from "./DropdownMenu.module.scss";
+import styles from "./_DropdownMenu.module.scss";
import clsx from "clsx";
import ArrowLeftSvg from "@images/arrow_left.svg?react";
import { useStore_IsOpenedDropdownMenu } from "@store";
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.module.scss b/src-ui/views/app/config_page/setting_section/setting_box/_components/_atoms/_dropdown_menu/_DropdownMenu.module.scss
similarity index 100%
rename from src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.module.scss
rename to src-ui/views/app/config_page/setting_section/setting_box/_components/_atoms/_dropdown_menu/_DropdownMenu.module.scss
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/compute_device/ComputeDevice.jsx b/src-ui/views/app/config_page/setting_section/setting_box/_components/compute_device/ComputeDevice.jsx
index d077eba5..54c64d04 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_components/compute_device/ComputeDevice.jsx
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_components/compute_device/ComputeDevice.jsx
@@ -1,5 +1,5 @@
import styles from "./ComputeDevice.module.scss";
-import { DropdownMenu } from "../dropdown_menu/DropdownMenu";
+import { DropdownMenu } from "../_atoms/_dropdown_menu/_DropdownMenu";
import { ActionButton } from "../action_button/ActionButton";
import HelpSvg from "@images/help.svg?react";
import { useStore_OpenedQuickSetting } from "@store"
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/index.js b/src-ui/views/app/config_page/setting_section/setting_box/_components/index.js
index e1a7ab32..9d1c4150 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_components/index.js
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_components/index.js
@@ -1,7 +1,7 @@
export { ActionButton } from "./action_button/ActionButton";
export { ComputeDevice } from "./compute_device/ComputeDevice";
export { DeeplAuthKey, OpenWebpage_DeeplAuthKey } from "./deepl_auth_key/DeeplAuthKey";
-export { DropdownMenu } from "./dropdown_menu/DropdownMenu";
+export { DropdownMenu } from "./_atoms/_dropdown_menu/_DropdownMenu";
export { Entry } from "./entry/Entry";
export { EntryWithSaveButton } from "./entry_with_save_button/EntryWithSaveButton";
export { HotkeysEntry } from "./hotkeys_entry/HotkeysEntry";
From 01327fa852947bf5d7b0b1c4bf3f456dddb0c65f Mon Sep 17 00:00:00 2001
From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com>
Date: Wed, 12 Nov 2025 10:18:26 +0900
Subject: [PATCH 5/9] [Refactor] Introduce wrapper component for DropdownMenu
to enhance versatility.
---
.../_atoms/_dropdown_menu/_DropdownMenu.jsx | 2 +-
.../_components/compute_device/ComputeDevice.jsx | 2 +-
.../_components/dropdown_menu/DropdownMenu.jsx | 10 ++++++++++
.../_components/dropdown_menu/DropdownMenu.module.scss | 5 +++++
.../setting_section/setting_box/_components/index.js | 2 +-
5 files changed, 18 insertions(+), 3 deletions(-)
create mode 100644 src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.jsx
create mode 100644 src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.module.scss
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/_atoms/_dropdown_menu/_DropdownMenu.jsx b/src-ui/views/app/config_page/setting_section/setting_box/_components/_atoms/_dropdown_menu/_DropdownMenu.jsx
index a5c1c136..6b429209 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_components/_atoms/_dropdown_menu/_DropdownMenu.jsx
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_components/_atoms/_dropdown_menu/_DropdownMenu.jsx
@@ -3,7 +3,7 @@ import clsx from "clsx";
import ArrowLeftSvg from "@images/arrow_left.svg?react";
import { useStore_IsOpenedDropdownMenu } from "@store";
-export const DropdownMenu = (props) => {
+export const _DropdownMenu = (props) => {
const { updateIsOpenedDropdownMenu, currentIsOpenedDropdownMenu } = useStore_IsOpenedDropdownMenu();
const toggleDropdownMenu = () => {
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/compute_device/ComputeDevice.jsx b/src-ui/views/app/config_page/setting_section/setting_box/_components/compute_device/ComputeDevice.jsx
index 54c64d04..d077eba5 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_components/compute_device/ComputeDevice.jsx
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_components/compute_device/ComputeDevice.jsx
@@ -1,5 +1,5 @@
import styles from "./ComputeDevice.module.scss";
-import { DropdownMenu } from "../_atoms/_dropdown_menu/_DropdownMenu";
+import { DropdownMenu } from "../dropdown_menu/DropdownMenu";
import { ActionButton } from "../action_button/ActionButton";
import HelpSvg from "@images/help.svg?react";
import { useStore_OpenedQuickSetting } from "@store"
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.jsx b/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.jsx
new file mode 100644
index 00000000..53c82036
--- /dev/null
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.jsx
@@ -0,0 +1,10 @@
+import styles from "./DropdownMenu.module.scss";
+import { _DropdownMenu } from "../_atoms/_dropdown_menu/_DropdownMenu";
+
+export const DropdownMenu = (props) => {
+ return (
+
+ <_DropdownMenu {...props} />
+
+ );
+};
\ No newline at end of file
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.module.scss b/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.module.scss
new file mode 100644
index 00000000..d92585fa
--- /dev/null
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.module.scss
@@ -0,0 +1,5 @@
+@import "@scss_mixins";
+
+// .container {
+// position: relative;
+// }
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/index.js b/src-ui/views/app/config_page/setting_section/setting_box/_components/index.js
index 9d1c4150..e1a7ab32 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_components/index.js
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_components/index.js
@@ -1,7 +1,7 @@
export { ActionButton } from "./action_button/ActionButton";
export { ComputeDevice } from "./compute_device/ComputeDevice";
export { DeeplAuthKey, OpenWebpage_DeeplAuthKey } from "./deepl_auth_key/DeeplAuthKey";
-export { DropdownMenu } from "./_atoms/_dropdown_menu/_DropdownMenu";
+export { DropdownMenu } from "./dropdown_menu/DropdownMenu";
export { Entry } from "./entry/Entry";
export { EntryWithSaveButton } from "./entry_with_save_button/EntryWithSaveButton";
export { HotkeysEntry } from "./hotkeys_entry/HotkeysEntry";
From 4a852374ab7815011e9f31aa728d70e199a9cbde Mon Sep 17 00:00:00 2001
From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com>
Date: Wed, 12 Nov 2025 12:32:18 +0900
Subject: [PATCH 6/9] [Refactor]: Introduce MultiDropdownMenu component for
layout consistency.
---
.../dropdown_menu/DropdownMenu.jsx | 13 +++-
.../dropdown_menu/DropdownMenu.module.scss | 27 ++++++-
.../setting_box/_components/index.js | 2 +-
.../setting_box/device/Device.jsx | 74 +++++++++----------
.../setting_box/device/Device.module.scss | 25 -------
.../transcription/Transcription.jsx | 51 ++++++-------
.../setting_box/translation/Translation.jsx | 51 ++++++-------
7 files changed, 119 insertions(+), 124 deletions(-)
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.jsx b/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.jsx
index 53c82036..fb4e0d7e 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.jsx
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.jsx
@@ -3,8 +3,19 @@ import { _DropdownMenu } from "../_atoms/_dropdown_menu/_DropdownMenu";
export const DropdownMenu = (props) => {
return (
-
+
+ {props.secondary_label &&
{props.secondary_label}
}
<_DropdownMenu {...props} />
);
+};
+
+export const MultiDropdownMenu = (props) => {
+ return (
+
+ {props.settings.map((dropdown_props, index) => (
+
+ ))}
+
+ );
};
\ No newline at end of file
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.module.scss b/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.module.scss
index d92585fa..cbb1723f 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.module.scss
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_components/dropdown_menu/DropdownMenu.module.scss
@@ -1,5 +1,26 @@
@import "@scss_mixins";
-// .container {
-// position: relative;
-// }
+.container {
+ display: flex;
+ flex-direction: row;
+ gap: 2.8rem;
+}
+
+.each_dropdown_menu_wrapper {
+ display: flex;
+ flex-direction: column;
+ gap: 0.6rem;
+ white-space: nowrap;
+ max-width: 24rem;
+ &.is_disabled {
+ pointer-events: none;
+ }
+}
+
+.secondary_label {
+ padding-left: 0.2rem;
+ padding-right: 0.4rem;
+ font-size: 1.4rem;
+ color: var(--dark_500_color);
+ white-space: nowrap;
+}
\ No newline at end of file
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/_components/index.js b/src-ui/views/app/config_page/setting_section/setting_box/_components/index.js
index e1a7ab32..db5ad1cb 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/_components/index.js
+++ b/src-ui/views/app/config_page/setting_section/setting_box/_components/index.js
@@ -1,7 +1,7 @@
export { ActionButton } from "./action_button/ActionButton";
export { ComputeDevice } from "./compute_device/ComputeDevice";
export { DeeplAuthKey, OpenWebpage_DeeplAuthKey } from "./deepl_auth_key/DeeplAuthKey";
-export { DropdownMenu } from "./dropdown_menu/DropdownMenu";
+export { DropdownMenu, MultiDropdownMenu } from "./dropdown_menu/DropdownMenu";
export { Entry } from "./entry/Entry";
export { EntryWithSaveButton } from "./entry_with_save_button/EntryWithSaveButton";
export { HotkeysEntry } from "./hotkeys_entry/HotkeysEntry";
diff --git a/src-ui/views/app/config_page/setting_section/setting_box/device/Device.jsx b/src-ui/views/app/config_page/setting_section/setting_box/device/Device.jsx
index 9211bf37..c0c905cc 100644
--- a/src-ui/views/app/config_page/setting_section/setting_box/device/Device.jsx
+++ b/src-ui/views/app/config_page/setting_section/setting_box/device/Device.jsx
@@ -14,6 +14,7 @@ import {
import {
LabelComponent,
DropdownMenu,
+ MultiDropdownMenu,
ThresholdComponent,
SwitchBox,
} from "../_components";
@@ -88,33 +89,29 @@ const Mic_Container = () => {
toggleFunction={toggleEnableAutoMicSelect}
/>
-
-
-
-
{t("config_page.device.label_host")}
-
-
-
-
-
{t("config_page.device.label_device")}
-
-
-
+