fix(deps): update dependency zod to v4 #6
							
								
								
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -25,7 +25,7 @@
 | 
				
			|||||||
        "react-hook-form": "^7.56.1",
 | 
					        "react-hook-form": "^7.56.1",
 | 
				
			||||||
        "recharts": "^2.15.3",
 | 
					        "recharts": "^2.15.3",
 | 
				
			||||||
        "tailwind-merge": "^3.2.0",
 | 
					        "tailwind-merge": "^3.2.0",
 | 
				
			||||||
        "zod": "^3.24.3"
 | 
					        "zod": "^4.0.0"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "devDependencies": {
 | 
					      "devDependencies": {
 | 
				
			||||||
        "@eslint/eslintrc": "3.3.1",
 | 
					        "@eslint/eslintrc": "3.3.1",
 | 
				
			||||||
@@ -7637,9 +7637,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/zod": {
 | 
					    "node_modules/zod": {
 | 
				
			||||||
      "version": "3.25.76",
 | 
					      "version": "4.0.5",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.5.tgz",
 | 
				
			||||||
      "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
 | 
					      "integrity": "sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==",
 | 
				
			||||||
      "license": "MIT",
 | 
					      "license": "MIT",
 | 
				
			||||||
      "funding": {
 | 
					      "funding": {
 | 
				
			||||||
        "url": "https://github.com/sponsors/colinhacks"
 | 
					        "url": "https://github.com/sponsors/colinhacks"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,7 @@
 | 
				
			|||||||
    "react-hook-form": "^7.56.1",
 | 
					    "react-hook-form": "^7.56.1",
 | 
				
			||||||
    "recharts": "^2.15.3",
 | 
					    "recharts": "^2.15.3",
 | 
				
			||||||
    "tailwind-merge": "^3.2.0",
 | 
					    "tailwind-merge": "^3.2.0",
 | 
				
			||||||
    "zod": "^3.24.3"
 | 
					    "zod": "^4.0.0"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@eslint/eslintrc": "3.3.1",
 | 
					    "@eslint/eslintrc": "3.3.1",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -120,7 +120,7 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
  const [showing4percent, setShowing4percent] = useState(false);
 | 
					  const [showing4percent, setShowing4percent] = useState(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Initialize form with default values
 | 
					  // Initialize form with default values
 | 
				
			||||||
  const form = useForm<FormValues>({
 | 
					  const form = useForm<z.input<typeof formSchema>, undefined, FormValues>({
 | 
				
			||||||
    resolver: zodResolver(formSchema),
 | 
					    resolver: zodResolver(formSchema),
 | 
				
			||||||
    defaultValues: {
 | 
					    defaultValues: {
 | 
				
			||||||
      startingCapital: 50000,
 | 
					      startingCapital: 50000,
 | 
				
			||||||
@@ -258,11 +258,18 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
                        <Input
 | 
					                        <Input
 | 
				
			||||||
                          placeholder="e.g., 10000"
 | 
					                          placeholder="e.g., 10000"
 | 
				
			||||||
                          type="number"
 | 
					                          type="number"
 | 
				
			||||||
                          {...field}
 | 
					                          value={field.value as number | string | undefined}
 | 
				
			||||||
                          onChange={(value) => {
 | 
					                          onChange={(e) => {
 | 
				
			||||||
                            field.onChange(value);
 | 
					                            field.onChange(
 | 
				
			||||||
 | 
					                              e.target.value === ""
 | 
				
			||||||
 | 
					                                ? undefined
 | 
				
			||||||
 | 
					                                : Number(e.target.value),
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
                            void form.handleSubmit(onSubmit)();
 | 
					                            void form.handleSubmit(onSubmit)();
 | 
				
			||||||
                          }}
 | 
					                          }}
 | 
				
			||||||
 | 
					                          onBlur={field.onBlur}
 | 
				
			||||||
 | 
					                          name={field.name}
 | 
				
			||||||
 | 
					                          ref={field.ref}
 | 
				
			||||||
                        />
 | 
					                        />
 | 
				
			||||||
                      </FormControl>
 | 
					                      </FormControl>
 | 
				
			||||||
                      <FormMessage />
 | 
					                      <FormMessage />
 | 
				
			||||||
@@ -279,11 +286,18 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
                        <Input
 | 
					                        <Input
 | 
				
			||||||
                          placeholder="e.g., 500"
 | 
					                          placeholder="e.g., 500"
 | 
				
			||||||
                          type="number"
 | 
					                          type="number"
 | 
				
			||||||
                          {...field}
 | 
					                          value={field.value as number | string | undefined}
 | 
				
			||||||
                          onChange={(value) => {
 | 
					                          onChange={(e) => {
 | 
				
			||||||
                            field.onChange(value);
 | 
					                            field.onChange(
 | 
				
			||||||
 | 
					                              e.target.value === ""
 | 
				
			||||||
 | 
					                                ? undefined
 | 
				
			||||||
 | 
					                                : Number(e.target.value),
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
                            void form.handleSubmit(onSubmit)();
 | 
					                            void form.handleSubmit(onSubmit)();
 | 
				
			||||||
                          }}
 | 
					                          }}
 | 
				
			||||||
 | 
					                          onBlur={field.onBlur}
 | 
				
			||||||
 | 
					                          name={field.name}
 | 
				
			||||||
 | 
					                          ref={field.ref}
 | 
				
			||||||
                        />
 | 
					                        />
 | 
				
			||||||
                      </FormControl>
 | 
					                      </FormControl>
 | 
				
			||||||
                      <FormMessage />
 | 
					                      <FormMessage />
 | 
				
			||||||
@@ -300,11 +314,18 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
                        <Input
 | 
					                        <Input
 | 
				
			||||||
                          placeholder="e.g., 30"
 | 
					                          placeholder="e.g., 30"
 | 
				
			||||||
                          type="number"
 | 
					                          type="number"
 | 
				
			||||||
                          {...field}
 | 
					                          value={field.value as number | string | undefined}
 | 
				
			||||||
                          onChange={(value) => {
 | 
					                          onChange={(e) => {
 | 
				
			||||||
                            field.onChange(value);
 | 
					                            field.onChange(
 | 
				
			||||||
 | 
					                              e.target.value === ""
 | 
				
			||||||
 | 
					                                ? undefined
 | 
				
			||||||
 | 
					                                : Number(e.target.value),
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
                            void form.handleSubmit(onSubmit)();
 | 
					                            void form.handleSubmit(onSubmit)();
 | 
				
			||||||
                          }}
 | 
					                          }}
 | 
				
			||||||
 | 
					                          onBlur={field.onBlur}
 | 
				
			||||||
 | 
					                          name={field.name}
 | 
				
			||||||
 | 
					                          ref={field.ref}
 | 
				
			||||||
                        />
 | 
					                        />
 | 
				
			||||||
                      </FormControl>
 | 
					                      </FormControl>
 | 
				
			||||||
                      <FormMessage />
 | 
					                      <FormMessage />
 | 
				
			||||||
@@ -321,11 +342,18 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
                        <Input
 | 
					                        <Input
 | 
				
			||||||
                          placeholder="e.g., 90"
 | 
					                          placeholder="e.g., 90"
 | 
				
			||||||
                          type="number"
 | 
					                          type="number"
 | 
				
			||||||
                          {...field}
 | 
					                          value={field.value as number | string | undefined}
 | 
				
			||||||
                          onChange={(value) => {
 | 
					                          onChange={(e) => {
 | 
				
			||||||
                            field.onChange(value);
 | 
					                            field.onChange(
 | 
				
			||||||
 | 
					                              e.target.value === ""
 | 
				
			||||||
 | 
					                                ? undefined
 | 
				
			||||||
 | 
					                                : Number(e.target.value),
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
                            void form.handleSubmit(onSubmit)();
 | 
					                            void form.handleSubmit(onSubmit)();
 | 
				
			||||||
                          }}
 | 
					                          }}
 | 
				
			||||||
 | 
					                          onBlur={field.onBlur}
 | 
				
			||||||
 | 
					                          name={field.name}
 | 
				
			||||||
 | 
					                          ref={field.ref}
 | 
				
			||||||
                        />
 | 
					                        />
 | 
				
			||||||
                      </FormControl>
 | 
					                      </FormControl>
 | 
				
			||||||
                      <FormMessage />
 | 
					                      <FormMessage />
 | 
				
			||||||
@@ -343,11 +371,18 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
                          placeholder="e.g., 7"
 | 
					                          placeholder="e.g., 7"
 | 
				
			||||||
                          type="number"
 | 
					                          type="number"
 | 
				
			||||||
                          step="0.1"
 | 
					                          step="0.1"
 | 
				
			||||||
                          {...field}
 | 
					                          value={field.value as number | string | undefined}
 | 
				
			||||||
                          onChange={(value) => {
 | 
					                          onChange={(e) => {
 | 
				
			||||||
                            field.onChange(value);
 | 
					                            field.onChange(
 | 
				
			||||||
 | 
					                              e.target.value === ""
 | 
				
			||||||
 | 
					                                ? undefined
 | 
				
			||||||
 | 
					                                : Number(e.target.value),
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
                            void form.handleSubmit(onSubmit)();
 | 
					                            void form.handleSubmit(onSubmit)();
 | 
				
			||||||
                          }}
 | 
					                          }}
 | 
				
			||||||
 | 
					                          onBlur={field.onBlur}
 | 
				
			||||||
 | 
					                          name={field.name}
 | 
				
			||||||
 | 
					                          ref={field.ref}
 | 
				
			||||||
                        />
 | 
					                        />
 | 
				
			||||||
                      </FormControl>
 | 
					                      </FormControl>
 | 
				
			||||||
                      <FormMessage />
 | 
					                      <FormMessage />
 | 
				
			||||||
@@ -365,11 +400,18 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
                          placeholder="e.g., 2"
 | 
					                          placeholder="e.g., 2"
 | 
				
			||||||
                          type="number"
 | 
					                          type="number"
 | 
				
			||||||
                          step="0.1"
 | 
					                          step="0.1"
 | 
				
			||||||
                          {...field}
 | 
					                          value={field.value as number | string | undefined}
 | 
				
			||||||
                          onChange={(value) => {
 | 
					                          onChange={(e) => {
 | 
				
			||||||
                            field.onChange(value);
 | 
					                            field.onChange(
 | 
				
			||||||
 | 
					                              e.target.value === ""
 | 
				
			||||||
 | 
					                                ? undefined
 | 
				
			||||||
 | 
					                                : Number(e.target.value),
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
                            void form.handleSubmit(onSubmit)();
 | 
					                            void form.handleSubmit(onSubmit)();
 | 
				
			||||||
                          }}
 | 
					                          }}
 | 
				
			||||||
 | 
					                          onBlur={field.onBlur}
 | 
				
			||||||
 | 
					                          name={field.name}
 | 
				
			||||||
 | 
					                          ref={field.ref}
 | 
				
			||||||
                        />
 | 
					                        />
 | 
				
			||||||
                      </FormControl>
 | 
					                      </FormControl>
 | 
				
			||||||
                      <FormMessage />
 | 
					                      <FormMessage />
 | 
				
			||||||
@@ -388,11 +430,18 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
                        <Input
 | 
					                        <Input
 | 
				
			||||||
                          placeholder="e.g., 2000"
 | 
					                          placeholder="e.g., 2000"
 | 
				
			||||||
                          type="number"
 | 
					                          type="number"
 | 
				
			||||||
                          {...field}
 | 
					                          value={field.value as number | string | undefined}
 | 
				
			||||||
                          onChange={(value) => {
 | 
					                          onChange={(e) => {
 | 
				
			||||||
                            field.onChange(value);
 | 
					                            field.onChange(
 | 
				
			||||||
 | 
					                              e.target.value === ""
 | 
				
			||||||
 | 
					                                ? undefined
 | 
				
			||||||
 | 
					                                : Number(e.target.value),
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
                            void form.handleSubmit(onSubmit)();
 | 
					                            void form.handleSubmit(onSubmit)();
 | 
				
			||||||
                          }}
 | 
					                          }}
 | 
				
			||||||
 | 
					                          onBlur={field.onBlur}
 | 
				
			||||||
 | 
					                          name={field.name}
 | 
				
			||||||
 | 
					                          ref={field.ref}
 | 
				
			||||||
                        />
 | 
					                        />
 | 
				
			||||||
                      </FormControl>
 | 
					                      </FormControl>
 | 
				
			||||||
                      <FormMessage />
 | 
					                      <FormMessage />
 | 
				
			||||||
@@ -406,11 +455,13 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
                  name="retirementAge"
 | 
					                  name="retirementAge"
 | 
				
			||||||
                  render={({ field }) => (
 | 
					                  render={({ field }) => (
 | 
				
			||||||
                    <FormItem>
 | 
					                    <FormItem>
 | 
				
			||||||
                      <FormLabel>Retirement Age: {field.value}</FormLabel>
 | 
					                      <FormLabel>
 | 
				
			||||||
 | 
					                        Retirement Age: {field.value as number}
 | 
				
			||||||
 | 
					                      </FormLabel>
 | 
				
			||||||
                      <FormControl>
 | 
					                      <FormControl>
 | 
				
			||||||
                        <Slider
 | 
					                        <Slider
 | 
				
			||||||
                          name="retirementAge"
 | 
					                          name="retirementAge"
 | 
				
			||||||
                          value={[field.value]}
 | 
					                          value={[field.value as number]}
 | 
				
			||||||
                          min={25}
 | 
					                          min={25}
 | 
				
			||||||
                          max={75}
 | 
					                          max={75}
 | 
				
			||||||
                          step={1}
 | 
					                          step={1}
 | 
				
			||||||
@@ -563,8 +614,8 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
                        <ReferenceLine
 | 
					                        <ReferenceLine
 | 
				
			||||||
                          x={
 | 
					                          x={
 | 
				
			||||||
                            irlYear +
 | 
					                            irlYear +
 | 
				
			||||||
                            (form.getValues("retirementAge") -
 | 
					                            (Number(form.getValues("retirementAge")) -
 | 
				
			||||||
                              form.getValues("currentAge"))
 | 
					                              Number(form.getValues("currentAge")))
 | 
				
			||||||
                          }
 | 
					                          }
 | 
				
			||||||
                          stroke="var(--primary)"
 | 
					                          stroke="var(--primary)"
 | 
				
			||||||
                          strokeWidth={2}
 | 
					                          strokeWidth={2}
 | 
				
			||||||
@@ -579,7 +630,7 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
                            x={
 | 
					                            x={
 | 
				
			||||||
                              irlYear +
 | 
					                              irlYear +
 | 
				
			||||||
                              (result.retirementAge4percent -
 | 
					                              (result.retirementAge4percent -
 | 
				
			||||||
                                form.getValues("currentAge"))
 | 
					                                Number(form.getValues("currentAge")))
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            stroke="var(--secondary)"
 | 
					                            stroke="var(--secondary)"
 | 
				
			||||||
                            strokeWidth={1}
 | 
					                            strokeWidth={1}
 | 
				
			||||||
@@ -642,8 +693,8 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
                </CardHeader>
 | 
					                </CardHeader>
 | 
				
			||||||
                <CardContent>
 | 
					                <CardContent>
 | 
				
			||||||
                  <p className="text-3xl font-bold">
 | 
					                  <p className="text-3xl font-bold">
 | 
				
			||||||
                    {form.getValues("lifeExpectancy") -
 | 
					                    {Number(form.getValues("lifeExpectancy")) -
 | 
				
			||||||
                      form.getValues("retirementAge")}
 | 
					                      Number(form.getValues("retirementAge"))}
 | 
				
			||||||
                  </p>
 | 
					                  </p>
 | 
				
			||||||
                </CardContent>
 | 
					                </CardContent>
 | 
				
			||||||
              </Card>
 | 
					              </Card>
 | 
				
			||||||
@@ -674,7 +725,7 @@ export default function FireCalculatorForm() {
 | 
				
			|||||||
                    </CardHeader>
 | 
					                    </CardHeader>
 | 
				
			||||||
                    <CardContent>
 | 
					                    <CardContent>
 | 
				
			||||||
                      <p className="text-3xl font-bold">
 | 
					                      <p className="text-3xl font-bold">
 | 
				
			||||||
                        {form.getValues("lifeExpectancy") -
 | 
					                        {Number(form.getValues("lifeExpectancy")) -
 | 
				
			||||||
                          (result.retirementAge4percent ?? 0)}
 | 
					                          (result.retirementAge4percent ?? 0)}
 | 
				
			||||||
                      </p>
 | 
					                      </p>
 | 
				
			||||||
                    </CardContent>
 | 
					                    </CardContent>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user