Modifiers
diff --git a/app/components/pages/utilities/dice-roller/vtm-dice-roller.tsx b/app/components/pages/utilities/dice-roller/vtm-dice-roller.tsx
index 651b270..091a271 100644
--- a/app/components/pages/utilities/dice-roller/vtm-dice-roller.tsx
+++ b/app/components/pages/utilities/dice-roller/vtm-dice-roller.tsx
@@ -14,8 +14,8 @@ import useIsMobile from '~/hooks/use-mobile';
import { rollDie } from '~/lib/dice-roller.utils';
// Dice import
+import { Checkbox } from '@base-ui/react/checkbox';
import { XIcon } from 'lucide-react';
-import { Checkbox } from 'radix-ui';
import hungerDieBestialFailure from '~/assets/dice/vtm/Dice_Hunger_BestialFailure.png';
import hungerDieFailure from '~/assets/dice/vtm/Dice_Hunger_Failure.png';
import hungerDieMessyCritical from '~/assets/dice/vtm/Dice_Hunger_MessyCritical.png';
diff --git a/app/components/pages/utilities/pass-generators/memorable-password.tsx b/app/components/pages/utilities/pass-generators/memorable-password.tsx
index e88cd7b..c30fcd5 100644
--- a/app/components/pages/utilities/pass-generators/memorable-password.tsx
+++ b/app/components/pages/utilities/pass-generators/memorable-password.tsx
@@ -97,7 +97,7 @@ export default function MemorablePassword() {
setPassSize(value[0] ?? 3)}
+ onValueChange={(value) => setPassSize(Array.isArray(value) ? (value[0] ?? 3) : value)}
min={3}
max={15}
step={1}
diff --git a/app/components/pages/utilities/pass-generators/password-generator.tsx b/app/components/pages/utilities/pass-generators/password-generator.tsx
index 9ec6909..3cdc017 100644
--- a/app/components/pages/utilities/pass-generators/password-generator.tsx
+++ b/app/components/pages/utilities/pass-generators/password-generator.tsx
@@ -66,7 +66,7 @@ export default function PasswordGenerator() {
setPassSize(value[0] ?? 8)}
+ onValueChange={(value) => setPassSize(Array.isArray(value) ? (value[0] ?? 8) : value)}
min={8}
max={128}
step={1}
diff --git a/app/components/pages/utilities/pass-generators/pin-generator.tsx b/app/components/pages/utilities/pass-generators/pin-generator.tsx
index a0b6f25..ba90b56 100644
--- a/app/components/pages/utilities/pass-generators/pin-generator.tsx
+++ b/app/components/pages/utilities/pass-generators/pin-generator.tsx
@@ -46,7 +46,7 @@ export default function PinGenerator() {
setPinSize(value[0] ?? 3)}
+ onValueChange={(value) => setPinSize(Array.isArray(value) ? (value[0] ?? 3) : value)}
min={3}
max={12}
step={1}
diff --git a/app/components/pages/utilities/qrcode-generator.tsx b/app/components/pages/utilities/qrcode-generator.tsx
index 91c6a64..7b06598 100644
--- a/app/components/pages/utilities/qrcode-generator.tsx
+++ b/app/components/pages/utilities/qrcode-generator.tsx
@@ -84,11 +84,16 @@ export default function QRCodeGenerator() {
{qrCode && (
)}
diff --git a/app/components/pages/utilities/text-to-speech.tsx b/app/components/pages/utilities/text-to-speech.tsx
index 8f457ed..6e13814 100644
--- a/app/components/pages/utilities/text-to-speech.tsx
+++ b/app/components/pages/utilities/text-to-speech.tsx
@@ -16,7 +16,7 @@ const TextToSpeechSchema = z.object({
.max(5000, 'Text exceeds maximum length of 5000 characters.'),
rate: z.number().min(0.5).max(2).default(1).optional(),
pitch: z.number().min(0).max(2).default(1).optional(),
- voice: z.number().min(0).optional(),
+ voice: z.string().optional(),
});
type TextToSpeechType = z.infer;
@@ -46,7 +46,7 @@ export default function TextToSpeech() {
const form = useForm({
resolver: zodResolver(TextToSpeechSchema),
- defaultValues: { text: '', rate: 1, pitch: 1, voice: undefined },
+ defaultValues: { text: '', rate: 1, pitch: 1, voice: '' },
});
function onsubmit(data: TextToSpeechType) {
@@ -59,10 +59,9 @@ export default function TextToSpeech() {
utter.rate = data.rate ?? 1;
utter.pitch = data.pitch ?? 1;
- if (data.voice !== undefined && data.voice !== null) {
- const idx = Number(data.voice);
-
- if (!Number.isNaN(idx) && voices[idx]) utter.voice = voices[idx];
+ if (data.voice) {
+ const selectedVoice = voices.find((voice) => voice.voiceURI === data.voice);
+ if (selectedVoice) utter.voice = selectedVoice;
}
s.speak?.(utter);
@@ -104,7 +103,7 @@ export default function TextToSpeech() {
field.onChange(value)}
+ onValueChange={(value) => field.onChange(Array.isArray(value) ? value[0] : value)}
min={0.5}
max={2}
step={0.1}
@@ -130,7 +129,7 @@ export default function TextToSpeech() {
field.onChange(value)}
+ onValueChange={(value) => field.onChange(Array.isArray(value) ? value[0] : value)}
min={0}
max={2}
step={0.1}
@@ -155,23 +154,19 @@ export default function TextToSpeech() {
{fieldState.invalid && }
-