diff --git a/frontend/src/components/shared/sliderWithInput/SliderWithInput.tsx b/frontend/src/components/shared/sliderWithInput/SliderWithInput.tsx
new file mode 100644
index 000000000..e8e504ded
--- /dev/null
+++ b/frontend/src/components/shared/sliderWithInput/SliderWithInput.tsx
@@ -0,0 +1,44 @@
+import React from 'react';
+import { Slider, Text, Group, NumberInput } from '@mantine/core';
+
+interface Props {
+ label: string;
+ value: number;
+ onChange: (value: number) => void;
+ disabled?: boolean;
+ min?: number;
+ max?: number;
+ step?: number;
+}
+
+export default function SliderWithInput({
+ label,
+ value,
+ onChange,
+ disabled,
+ min = 0,
+ max = 200,
+ step = 1,
+}: Props) {
+ return (
+
+
{label}: {Math.round(value)}%
+
+
+
+
+ onChange(Number(v) || 0)}
+ min={min}
+ max={max}
+ step={step}
+ disabled={disabled}
+ style={{ width: 90 }}
+ />
+
+
+ );
+}
+
+
diff --git a/frontend/src/components/tools/adjustContrast/AdjustContrastBasicSettings.tsx b/frontend/src/components/tools/adjustContrast/AdjustContrastBasicSettings.tsx
index 8a376c8de..6993186bb 100644
--- a/frontend/src/components/tools/adjustContrast/AdjustContrastBasicSettings.tsx
+++ b/frontend/src/components/tools/adjustContrast/AdjustContrastBasicSettings.tsx
@@ -1,7 +1,8 @@
import React from 'react';
-import { Stack, Slider, Text, Group, NumberInput } from '@mantine/core';
+import { Stack } from '@mantine/core';
import { useTranslation } from 'react-i18next';
import { AdjustContrastParameters } from '../../../hooks/tools/adjustContrast/useAdjustContrastParameters';
+import SliderWithInput from '../../shared/sliderWithInput/SliderWithInput';
interface Props {
parameters: AdjustContrastParameters;
@@ -12,31 +13,11 @@ interface Props {
export default function AdjustContrastBasicSettings({ parameters, onParameterChange, disabled }: Props) {
const { t } = useTranslation();
- const renderSlider = (label: string, value: number, onChange: (v: number) => void) => (
-
-
{label}: {Math.round(value)}%
-
-
-
-
- onChange(Number(v) || 0)}
- min={0}
- max={200}
- step={1}
- disabled={disabled}
- style={{ width: 90 }}
- />
-
-
- );
-
return (
- {renderSlider(t('adjustContrast.contrast', 'Contrast'), parameters.contrast, (v) => onParameterChange('contrast', v as any))}
- {renderSlider(t('adjustContrast.brightness', 'Brightness'), parameters.brightness, (v) => onParameterChange('brightness', v as any))}
- {renderSlider(t('adjustContrast.saturation', 'Saturation'), parameters.saturation, (v) => onParameterChange('saturation', v as any))}
+ onParameterChange('contrast', v as any)} disabled={disabled} />
+ onParameterChange('brightness', v as any)} disabled={disabled} />
+ onParameterChange('saturation', v as any)} disabled={disabled} />
);
}
diff --git a/frontend/src/components/tools/adjustContrast/AdjustContrastColorSettings.tsx b/frontend/src/components/tools/adjustContrast/AdjustContrastColorSettings.tsx
index 3d255ed41..0f2722873 100644
--- a/frontend/src/components/tools/adjustContrast/AdjustContrastColorSettings.tsx
+++ b/frontend/src/components/tools/adjustContrast/AdjustContrastColorSettings.tsx
@@ -1,7 +1,8 @@
import React from 'react';
-import { Stack, Slider, Text, Group, NumberInput } from '@mantine/core';
+import { Stack } from '@mantine/core';
import { useTranslation } from 'react-i18next';
import { AdjustContrastParameters } from '../../../hooks/tools/adjustContrast/useAdjustContrastParameters';
+import SliderWithInput from '../../shared/sliderWithInput/SliderWithInput';
interface Props {
parameters: AdjustContrastParameters;
@@ -12,31 +13,11 @@ interface Props {
export default function AdjustContrastColorSettings({ parameters, onParameterChange, disabled }: Props) {
const { t } = useTranslation();
- const renderSlider = (label: string, value: number, onChange: (v: number) => void) => (
-
-
{label}: {Math.round(value)}%
-
-
-
-
- onChange(Number(v) || 0)}
- min={0}
- max={200}
- step={1}
- disabled={disabled}
- style={{ width: 90 }}
- />
-
-
- );
-
return (
- {renderSlider(t('adjustContrast.red', 'Red'), parameters.red, (v) => onParameterChange('red', v as any))}
- {renderSlider(t('adjustContrast.green', 'Green'), parameters.green, (v) => onParameterChange('green', v as any))}
- {renderSlider(t('adjustContrast.blue', 'Blue'), parameters.blue, (v) => onParameterChange('blue', v as any))}
+ onParameterChange('red', v as any)} disabled={disabled} />
+ onParameterChange('green', v as any)} disabled={disabled} />
+ onParameterChange('blue', v as any)} disabled={disabled} />
);
}