import type { Component } from 'vue' import TextFormField from '@/views/public/fields/TextFormField.vue' import EmailFormField from '@/views/public/fields/EmailFormField.vue' import ParagraphFormField from '@/views/public/fields/ParagraphFormField.vue' import PhoneFormField from '@/views/public/fields/PhoneFormField.vue' import NumberFormField from '@/views/public/fields/NumberFormField.vue' import WebsiteFormField from '@/views/public/fields/WebsiteFormField.vue' import NameFormField from '@/views/public/fields/NameFormField.vue' import RadioFormField from '@/views/public/fields/RadioFormField.vue' import CheckboxFormField from '@/views/public/fields/CheckboxFormField.vue' import SelectFormField from '@/views/public/fields/SelectFormField.vue' import AddressFormField from '@/views/public/fields/AddressFormField.vue' import DateFormField from '@/views/public/fields/DateFormField.vue' import TimeFormField from '@/views/public/fields/TimeFormField.vue' import RatingFormField from '@/views/public/fields/RatingFormField.vue' import RecaptchaFormField from '@/views/public/fields/RecaptchaFormField.vue' import TurnstileFormField from '@/views/public/fields/TurnstileFormField.vue' import HCaptchaFormField from '@/views/public/fields/HCaptchaFormField.vue' import HtmlFormField from '@/views/public/fields/HtmlFormField.vue' /** * Lite public field components keyed by field type. * Mirrors FormRender baseTemplates plus common aliases used in forms. */ export const LITE_PUBLIC_FIELD_COMPONENTS: Record = { text: TextFormField, email: EmailFormField, textarea: ParagraphFormField, paragraph: ParagraphFormField, number: NumberFormField, phone: PhoneFormField, tel: PhoneFormField, website: WebsiteFormField, time: TimeFormField, date: DateFormField, recaptcha: RecaptchaFormField, turnstile: TurnstileFormField, hcaptcha: HCaptchaFormField, html: HtmlFormField, radio: RadioFormField, select: SelectFormField, dropdown: SelectFormField, name: NameFormField, address: AddressFormField, checkbox: CheckboxFormField, 'multi-select': SelectFormField, rating: RatingFormField, // Planned type — use number input for entry edit until a dedicated component ships. slider: NumberFormField, // Payment fields (IVY-1181) — entry edit resolves product subtype in Pro. quantity: NumberFormField, product: RadioFormField, } export function registerLitePublicFieldComponents( register: (type: string, component: Component) => void, ): void { Object.entries(LITE_PUBLIC_FIELD_COMPONENTS).forEach(([type, component]) => { register(type, component) }) }