From 1c61f8959e263b4c70b9a48b9e5a499a153291a1 Mon Sep 17 00:00:00 2001 From: "[dyad]" Date: Sun, 18 Jan 2026 12:59:07 +0100 Subject: [PATCH] [dyad] Added a 'Reset Settings' button - wrote 1 file(s) --- src/components/image-converter.tsx | 117 +++++++++++++++++++++-------- 1 file changed, 86 insertions(+), 31 deletions(-) diff --git a/src/components/image-converter.tsx b/src/components/image-converter.tsx index 760def6..6fcaec0 100644 --- a/src/components/image-converter.tsx +++ b/src/components/image-converter.tsx @@ -17,7 +17,7 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import { Upload, Download, X, Trash2, Check, ArrowRightLeft, HelpCircle } from "lucide-react"; +import { Upload, Download, X, Trash2, Check, ArrowRightLeft, HelpCircle, RotateCcw } from "lucide-react"; import { toast } from "sonner"; import { cn } from "@/lib/utils"; import { Switch } from "@/components/ui/switch"; @@ -45,27 +45,45 @@ const aspectRatios = [ { name: "16:9 (Widescreen)", value: "16/9" }, ]; +const initialSettings = { + width: "", + height: "", + aspectRatio: "custom", + keepOrientation: true, + format: "webp" as "png" | "jpeg" | "webp", + quality: 90, + prefix: "", + suffix: "", + useCounter: false, + counterStart: 1, + counterDigits: 3, + useDefaultBaseName: false, + defaultBaseName: "", + scaleMode: 'cover' as 'fill' | 'cover' | 'contain', + objectPosition: 'center center', +}; + export function ImageConverter() { const [images, setImages] = useState([]); const [previewUrls, setPreviewUrls] = useState([]); const [filenames, setFilenames] = useState([]); - const [width, setWidth] = useState(""); - const [height, setHeight] = useState(""); - const [aspectRatio, setAspectRatio] = useState("custom"); - const [keepOrientation, setKeepOrientation] = useState(true); - const [format, setFormat] = useState<"png" | "jpeg" | "webp">("webp"); - const [quality, setQuality] = useState(90); + const [width, setWidth] = useState(initialSettings.width); + const [height, setHeight] = useState(initialSettings.height); + const [aspectRatio, setAspectRatio] = useState(initialSettings.aspectRatio); + const [keepOrientation, setKeepOrientation] = useState(initialSettings.keepOrientation); + const [format, setFormat] = useState<"png" | "jpeg" | "webp">(initialSettings.format); + const [quality, setQuality] = useState(initialSettings.quality); - const [prefix, setPrefix] = useState(""); - const [suffix, setSuffix] = useState(""); - const [useCounter, setUseCounter] = useState(false); - const [counterStart, setCounterStart] = useState(1); - const [counterDigits, setCounterDigits] = useState(3); - const [useDefaultBaseName, setUseDefaultBaseName] = useState(false); - const [defaultBaseName, setDefaultBaseName] = useState(""); + const [prefix, setPrefix] = useState(initialSettings.prefix); + const [suffix, setSuffix] = useState(initialSettings.suffix); + const [useCounter, setUseCounter] = useState(initialSettings.useCounter); + const [counterStart, setCounterStart] = useState(initialSettings.counterStart); + const [counterDigits, setCounterDigits] = useState(initialSettings.counterDigits); + const [useDefaultBaseName, setUseDefaultBaseName] = useState(initialSettings.useDefaultBaseName); + const [defaultBaseName, setDefaultBaseName] = useState(initialSettings.defaultBaseName); - const [scaleMode, setScaleMode] = useState<'fill' | 'cover' | 'contain'>('cover'); - const [objectPosition, setObjectPosition] = useState('center center'); + const [scaleMode, setScaleMode] = useState<'fill' | 'cover' | 'contain'>(initialSettings.scaleMode); + const [objectPosition, setObjectPosition] = useState(initialSettings.objectPosition); const [isConverting, setIsConverting] = useState(false); const [convertingIndex, setConvertingIndex] = useState(null); @@ -307,6 +325,25 @@ export function ImageConverter() { toast.info("Settings updated and will be used for all downloads."); }; + const handleResetSettings = () => { + setWidth(initialSettings.width); + setHeight(initialSettings.height); + setAspectRatio(initialSettings.aspectRatio); + setKeepOrientation(initialSettings.keepOrientation); + setFormat(initialSettings.format); + setQuality(initialSettings.quality); + setPrefix(initialSettings.prefix); + setSuffix(initialSettings.suffix); + setUseCounter(initialSettings.useCounter); + setCounterStart(initialSettings.counterStart); + setCounterDigits(initialSettings.counterDigits); + setUseDefaultBaseName(initialSettings.useDefaultBaseName); + setDefaultBaseName(initialSettings.defaultBaseName); + setScaleMode(initialSettings.scaleMode); + setObjectPosition(initialSettings.objectPosition); + toast.success("All settings have been reset to their defaults."); + }; + const handleAspectRatioChange = (value: string) => { setAspectRatio(value); @@ -698,21 +735,39 @@ export function ImageConverter() { - - - - - -

Confirm and apply all the settings above. This does not download the images.

-
-
+
+ + + + + +

Reset all settings to their default values.

+
+
+ + + + + +

Confirm and apply all the settings above. This does not download the images.

+
+
+