Files
tm_panel/src/app/marketing/_components/useChallengesStepPresenter.ts
T
AmirReza Jamali b18aa8eb71 refactor(marketing): Abstract form logic into reusable SectionStep component
Reduces code duplication in the marketing page forms by creating a generic `SectionStep` component. This new component encapsulates the shared UI and logic for sections that include a title, description, and a dynamic list of fields (e.g., feature cards, pricing points).

The `FeaturesStep` component has been refactored to use this new `SectionStep`, resulting in a much cleaner and more maintainable implementation.
2025-11-05 12:44:39 +03:30

50 lines
891 B
TypeScript

"use client";
import { useFieldArray, useForm } from "react-hook-form";
export interface IChallengesStepFields {
section_title: string;
section_description: string;
challenges: {
icon: string;
title: string;
description: string;
}[];
}
const useChallengesStepPresenter = () => {
const {
register,
handleSubmit,
control,
watch,
formState: { errors },
} = useForm<IChallengesStepFields>({
defaultValues: {
challenges: [{ icon: "", title: "", description: "" }],
},
});
const { fields, append, remove } = useFieldArray({
control,
name: "challenges",
});
const onSubmit = (data: IChallengesStepFields) => {
console.log(data);
};
return {
register,
handleSubmit,
errors,
onSubmit,
fields,
append,
remove,
control,
watch,
};
};
export default useChallengesStepPresenter;