feat(marketing): replace language input with Select; update Countries to ISO-3

- Switch language field from text `InputGroup` to `Select` with `Languages` options,
  `GlobeIcon`, clearable support, and conditional disable/require for companies
- Remove manual length validation as Select ensures valid predefined values
- Update `Countries` values from ISO-2 to ISO-3 codes for consistency
This commit is contained in:
AmirReza Jamali
2025-11-29 15:19:20 +03:30
parent f38498229d
commit fa6ffc59aa
3 changed files with 445 additions and 266 deletions
@@ -6,6 +6,7 @@ import { Select } from "@/components/FormElements/select";
import { ShowcaseSection } from "@/components/Layouts/showcase-section";
import Stepper, { Step } from "@/components/ui/Stepper";
import { Countries } from "@/constants/countries";
import { Languages } from "@/constants/languages";
import { FormErrorMessages } from "@/constants/Texts";
import { BreadcrumbItem } from "@/types/shared";
import { useEffect, useRef, useState } from "react";
@@ -244,31 +245,24 @@ const MarketingForm = ({
</p>
)}
<InputGroup
{...registerPageType("language", {
required: isCompany
? { message: FormErrorMessages.required, value: true }
: false,
minLength: isCompany
? { value: 2, message: FormErrorMessages.minLength(2) }
: undefined,
maxLength: isCompany
? { value: 10, message: FormErrorMessages.maxLength(10) }
: undefined,
})}
<Select
{...registerPageType("language")}
label="Language"
name="language"
type="text"
placeholder="Enter Language (e.g., en, ar)"
items={Languages}
defaultValue="en"
clearable
prefixIcon={<GlobeIcon />}
disabled={!isCompany}
required={isCompany}
placeholder="Please select language"
onClear={() => setValue("language", undefined)}
/>
{pageTypeErrors.language && (
<p className="mt-1 text-sm text-red-500">
{pageTypeErrors.language.message}
</p>
)}
<InputGroup
{...registerPageType("company_name", {
required: isCompany