diff --git a/src/base/Base.types.ts b/src/base/Base.types.ts index adde1e6e..16a40a72 100644 --- a/src/base/Base.types.ts +++ b/src/base/Base.types.ts @@ -48,27 +48,6 @@ export type ValueRotationButtonProps = | (ValueRotationButtonBaseProps & PropertiesNever>) | ValueRotationButtonDefaultableProps; -export interface MultiValueButtonBaseProps { - value: MultiValue; - defaultValue?: Value; - values: Value[]; - setValue: (value: MultiValue) => void; - valueToDisplayData: ValueToDisplayData; -} - -export interface MultiValueButtonDefaultableProps< - Value extends string | number, - MultiValue extends Value | Value[] = Value, -> extends OptionalProperty, 'value'> { - isDefaultable?: boolean; - onDefault?: () => void; -} - -export type MultiValueButtonProps = - | (MultiValueButtonBaseProps & - PropertiesNever>) - | MultiValueButtonDefaultableProps; - export enum ScrollOffset { BACKWARD, FORWARD, diff --git a/src/base/components/buttons/SelectButton.tsx b/src/base/components/buttons/SelectButton.tsx index bc0875d4..4a4cffe5 100644 --- a/src/base/components/buttons/SelectButton.tsx +++ b/src/base/components/buttons/SelectButton.tsx @@ -10,8 +10,29 @@ import Stack from '@mui/material/Stack'; import Button from '@mui/material/Button'; import { useLingui } from '@lingui/react/macro'; import { CustomTooltip } from '@/base/components/CustomTooltip.tsx'; -import type { MultiValueButtonProps } from '@/base/Base.types.ts'; import { Superscript } from '@/base/components/texts/Superscript.tsx'; +import type { ValueToDisplayData } from '@/base/Base.types.ts'; + +export interface MultiValueButtonBaseProps { + value: MultiValue; + defaultValue?: Value; + values: Value[]; + setValue: (value: MultiValue) => void; + valueToDisplayData: ValueToDisplayData; +} + +export interface MultiValueButtonDefaultableProps< + Value extends string | number, + MultiValue extends Value | Value[] = Value, +> extends OptionalProperty, 'value'> { + isDefaultable?: boolean; + onDefault?: () => void; +} + +export type MultiValueButtonProps = + | (MultiValueButtonBaseProps & + PropertiesNever>) + | MultiValueButtonDefaultableProps; export const SelectButton = ({ value, diff --git a/src/features/reader/overlay/navigation/desktop/quick-settings/components/ReaderNavBarDesktopPageScale.tsx b/src/features/reader/overlay/navigation/desktop/quick-settings/components/ReaderNavBarDesktopPageScale.tsx index 77a9413f..3af76921 100644 --- a/src/features/reader/overlay/navigation/desktop/quick-settings/components/ReaderNavBarDesktopPageScale.tsx +++ b/src/features/reader/overlay/navigation/desktop/quick-settings/components/ReaderNavBarDesktopPageScale.tsx @@ -21,8 +21,8 @@ import { READER_PAGE_SCALE_MODE_TO_SCALING_ALLOWED, READER_PAGE_SCALE_MODE_VALUES, } from '@/features/reader/settings/ReaderSettings.constants.tsx'; -import type { MultiValueButtonDefaultableProps } from '@/base/Base.types.ts'; import { CustomIconButton } from '@/base/components/buttons/CustomIconButton.tsx'; +import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; export const ReaderNavBarDesktopPageScale = ({ pageScaleMode, diff --git a/src/features/reader/overlay/navigation/desktop/quick-settings/components/ReaderNavBarDesktopReadingDirection.tsx b/src/features/reader/overlay/navigation/desktop/quick-settings/components/ReaderNavBarDesktopReadingDirection.tsx index dd960ef6..de52c10f 100644 --- a/src/features/reader/overlay/navigation/desktop/quick-settings/components/ReaderNavBarDesktopReadingDirection.tsx +++ b/src/features/reader/overlay/navigation/desktop/quick-settings/components/ReaderNavBarDesktopReadingDirection.tsx @@ -13,7 +13,8 @@ import { READING_DIRECTION_VALUES, READING_DIRECTION_VALUE_TO_DISPLAY_DATA, } from '@/features/reader/settings/ReaderSettings.constants.tsx'; -import type { MultiValueButtonDefaultableProps } from '@/base/Base.types.ts'; + +import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; export const ReaderNavBarDesktopReadingDirection = ({ readingDirection, diff --git a/src/features/reader/overlay/navigation/desktop/quick-settings/components/ReaderNavBarDesktopReadingMode.tsx b/src/features/reader/overlay/navigation/desktop/quick-settings/components/ReaderNavBarDesktopReadingMode.tsx index 4cca9ab1..42b8835c 100644 --- a/src/features/reader/overlay/navigation/desktop/quick-settings/components/ReaderNavBarDesktopReadingMode.tsx +++ b/src/features/reader/overlay/navigation/desktop/quick-settings/components/ReaderNavBarDesktopReadingMode.tsx @@ -13,7 +13,8 @@ import { READING_MODE_VALUE_TO_DISPLAY_DATA, READING_MODE_VALUES, } from '@/features/reader/settings/ReaderSettings.constants.tsx'; -import type { MultiValueButtonDefaultableProps } from '@/base/Base.types.ts'; + +import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; export const ReaderNavBarDesktopReadingMode = ({ readingMode, diff --git a/src/features/reader/settings/layout/components/ReaderSettingPageGap.tsx b/src/features/reader/settings/layout/components/ReaderSettingPageGap.tsx index 1104eee3..5d6a3e66 100644 --- a/src/features/reader/settings/layout/components/ReaderSettingPageGap.tsx +++ b/src/features/reader/settings/layout/components/ReaderSettingPageGap.tsx @@ -12,7 +12,8 @@ import { ReadingMode } from '@/features/reader/Reader.types.ts'; import { SliderInput } from '@/base/components/inputs/SliderInput.tsx'; import { DEFAULT_READER_SETTINGS, PAGE_GAP } from '@/features/reader/settings/ReaderSettings.constants.tsx'; import { isContinuousReadingMode } from '@/features/reader/settings/ReaderSettings.utils.tsx'; -import type { MultiValueButtonDefaultableProps } from '@/base/Base.types.ts'; + +import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; export const ReaderSettingPageGap = ({ pageGap, diff --git a/src/features/reader/settings/layout/components/ReaderSettingPageScaleMode.tsx b/src/features/reader/settings/layout/components/ReaderSettingPageScaleMode.tsx index ce334866..73a836ba 100644 --- a/src/features/reader/settings/layout/components/ReaderSettingPageScaleMode.tsx +++ b/src/features/reader/settings/layout/components/ReaderSettingPageScaleMode.tsx @@ -17,7 +17,8 @@ import { READER_PAGE_SCALE_MODE_VALUES, } from '@/features/reader/settings/ReaderSettings.constants.tsx'; import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx'; -import type { MultiValueButtonDefaultableProps } from '@/base/Base.types.ts'; + +import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; export const ReaderSettingPageScaleMode = ({ pageScaleMode, diff --git a/src/features/reader/settings/layout/components/ReaderSettingReadingDirection.tsx b/src/features/reader/settings/layout/components/ReaderSettingReadingDirection.tsx index 6722097b..d13153c8 100644 --- a/src/features/reader/settings/layout/components/ReaderSettingReadingDirection.tsx +++ b/src/features/reader/settings/layout/components/ReaderSettingReadingDirection.tsx @@ -12,8 +12,9 @@ import { useLingui } from '@lingui/react/macro'; import { msg } from '@lingui/core/macro'; import type { IReaderSettingsWithDefaultFlag } from '@/features/reader/Reader.types.ts'; import { ReadingDirection } from '@/features/reader/Reader.types.ts'; -import type { MultiValueButtonDefaultableProps, ValueToDisplayData } from '@/base/Base.types.ts'; +import type { ValueToDisplayData } from '@/base/Base.types.ts'; import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx'; +import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; const VALUE_TO_DISPLAY_DATA: ValueToDisplayData = { [ReadingDirection.LTR]: { diff --git a/src/features/reader/settings/layout/components/ReaderSettingReadingMode.tsx b/src/features/reader/settings/layout/components/ReaderSettingReadingMode.tsx index 634fae10..cf06e2d2 100644 --- a/src/features/reader/settings/layout/components/ReaderSettingReadingMode.tsx +++ b/src/features/reader/settings/layout/components/ReaderSettingReadingMode.tsx @@ -13,7 +13,8 @@ import { READING_MODE_VALUES, } from '@/features/reader/settings/ReaderSettings.constants.tsx'; import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx'; -import type { MultiValueButtonDefaultableProps } from '@/base/Base.types.ts'; + +import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; export const ReaderSettingReadingMode = ({ readingMode, diff --git a/src/features/reader/settings/layout/components/ReaderSettingTapZoneInvertMode.tsx b/src/features/reader/settings/layout/components/ReaderSettingTapZoneInvertMode.tsx index 4b81c119..14787844 100644 --- a/src/features/reader/settings/layout/components/ReaderSettingTapZoneInvertMode.tsx +++ b/src/features/reader/settings/layout/components/ReaderSettingTapZoneInvertMode.tsx @@ -8,7 +8,7 @@ import { useLingui } from '@lingui/react/macro'; import { msg } from '@lingui/core/macro'; -import type { MultiValueButtonDefaultableProps, ValueToDisplayData } from '@/base/Base.types.ts'; +import type { ValueToDisplayData } from '@/base/Base.types.ts'; import type { IReaderSettings, IReaderSettingsWithDefaultFlag, @@ -16,6 +16,7 @@ import type { } from '@/features/reader/Reader.types.ts'; import type { TapZoneInvertMode } from '@/features/reader/tap-zones/TapZoneLayout.types.ts'; import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx'; +import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; enum TapZonesInvertOption { NONE, diff --git a/src/features/reader/settings/layout/components/ReaderSettingTapZoneLayout.tsx b/src/features/reader/settings/layout/components/ReaderSettingTapZoneLayout.tsx index b8ab99ec..ec0841e3 100644 --- a/src/features/reader/settings/layout/components/ReaderSettingTapZoneLayout.tsx +++ b/src/features/reader/settings/layout/components/ReaderSettingTapZoneLayout.tsx @@ -9,9 +9,10 @@ import { useLingui } from '@lingui/react/macro'; import { msg } from '@lingui/core/macro'; import { TapZoneLayouts } from '@/features/reader/tap-zones/TapZoneLayout.types.ts'; -import type { MultiValueButtonDefaultableProps, ValueToDisplayData } from '@/base/Base.types.ts'; +import type { ValueToDisplayData } from '@/base/Base.types.ts'; import type { IReaderSettingsWithDefaultFlag, ReadingDirection } from '@/features/reader/Reader.types.ts'; import { ButtonSelectInput } from '@/base/components/inputs/ButtonSelectInput.tsx'; +import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; const VALUE_TO_DISPLAY_DATA: ValueToDisplayData = { [TapZoneLayouts.EDGE]: { diff --git a/src/features/reader/settings/layout/components/ReaderSettingWidth.tsx b/src/features/reader/settings/layout/components/ReaderSettingWidth.tsx index c2991449..f2e87656 100644 --- a/src/features/reader/settings/layout/components/ReaderSettingWidth.tsx +++ b/src/features/reader/settings/layout/components/ReaderSettingWidth.tsx @@ -14,8 +14,8 @@ import type { ReaderService } from '@/features/reader/services/ReaderService.ts' import { SliderInput } from '@/base/components/inputs/SliderInput.tsx'; import { DEFAULT_READER_SETTINGS } from '@/features/reader/settings/ReaderSettings.constants.tsx'; import { isReaderWidthEditable } from '@/features/reader/settings/ReaderSettings.utils.tsx'; -import type { MultiValueButtonDefaultableProps } from '@/base/Base.types.ts'; import { ResetButton } from '@/base/components/buttons/ResetButton.tsx'; +import type { MultiValueButtonDefaultableProps } from '@/base/components/buttons/SelectButton.tsx'; export const ReaderSettingWidth = ({ readerWidth,