'use client' import { FormControl, FormField, FormItem, FormLabel, FormMessage } from '@thedaviddias/design-system/form' import { Input } from '@thedaviddias/design-system/input' import type { UseFormReturn } from 'react-hook-form' import { CheckIcon, XIcon } from './submit-form-icons' import type { Step2Data } from './submit-form-schemas' import { generateLlmsFullUrl } from './submit-form-utils' interface UrlFieldsProps { form: UseFormReturn websiteUrlStatus: { checking: boolean accessible: boolean | null error?: string } llmsUrlStatus: { checking: boolean accessible: boolean | null error?: string } llmsFullUrlStatus: { checking: boolean accessible: boolean | null error?: string } setLlmsUrlStatus: (status: { checking: boolean accessible: boolean | null error?: string }) => void setLlmsFullUrlStatus: (status: { checking: boolean accessible: boolean | null error?: string }) => void validateDomains: () => void checkLlmsUrl: (url: string) => void checkLlmsFullUrl: (url: string) => void } /** * URL fields for Step 2 of the submit form */ export function UrlFields({ form, websiteUrlStatus, llmsUrlStatus, llmsFullUrlStatus, setLlmsUrlStatus, setLlmsFullUrlStatus, validateDomains, checkLlmsUrl, checkLlmsFullUrl }: UrlFieldsProps) { return ( <> ( Website URL *
{/* Status Indicator */}
{websiteUrlStatus.checking && (
)} {!websiteUrlStatus.checking && websiteUrlStatus.accessible === true && (
)} {!websiteUrlStatus.checking && websiteUrlStatus.accessible === false && (
)}
{websiteUrlStatus.accessible === false && websiteUrlStatus.error && (

⚠️ {websiteUrlStatus.error} - The website may still be valid for submission.

)} )} /> ( llms.txt URL *
{ field.onChange(e) // Validate domain and check URL accessibility when it changes setTimeout(() => { validateDomains() if (e.target.value) { checkLlmsUrl(e.target.value) } else { setLlmsUrlStatus({ checking: false, accessible: null }) } }, 100) // Small delay to ensure form state is updated }} /> {/* Status Indicator */}
{llmsUrlStatus.checking && (
)} {!llmsUrlStatus.checking && llmsUrlStatus.accessible === true && (
)} {!llmsUrlStatus.checking && llmsUrlStatus.accessible === false && (
)}
{/* URL accessibility warning (non-blocking) */} {llmsUrlStatus.accessible === false && llmsUrlStatus.error && (

⚠️ {llmsUrlStatus.error} - The URL may still be valid for submission.

)} )} /> (
llms-full.txt URL (optional) {!field.value && ( )}
{ field.onChange(e) // Validate domain and check URL accessibility when it changes setTimeout(() => { validateDomains() if (e.target.value) { checkLlmsFullUrl(e.target.value) } else { setLlmsFullUrlStatus({ checking: false, accessible: null }) } }, 100) // Small delay to ensure form state is updated }} /> {/* Status Indicator */}
{llmsFullUrlStatus.checking && (
)} {!llmsFullUrlStatus.checking && llmsFullUrlStatus.accessible === true && (
)} {!llmsFullUrlStatus.checking && llmsFullUrlStatus.accessible === false && field.value && (
)}
{/* URL accessibility warning (non-blocking) */} {llmsFullUrlStatus.accessible === false && llmsFullUrlStatus.error && field.value && (

⚠️ {llmsFullUrlStatus.error} - The URL may still be valid for submission.

)} )} /> ) }