// Fields
import Title                from '@epicformbuilder/admin/editor/components/Title/Field'
import Subtitle             from '@epicformbuilder/admin/editor/components/Subtitle/Field'
import Blank                from '@epicformbuilder/admin/editor/components/Blank/Field'
import FreeText             from '@epicformbuilder/admin/editor/components/FreeText/Field'
import Text                 from '@epicformbuilder/admin/editor/components/Text/Field'
import Email                from '@epicformbuilder/admin/editor/components/Email/Field'
import Phone                from '@epicformbuilder/admin/editor/components/Phone/Field'
import Paragraph            from '@epicformbuilder/admin/editor/components/Paragraph/Field'
import Select               from '@epicformbuilder/admin/editor/components/Select/Field'
import Checkbox             from '@epicformbuilder/admin/editor/components/Checkbox/Field'
import Radio                from '@epicformbuilder/admin/editor/components/Radio/Field'
import Date                 from '@epicformbuilder/admin/editor/components/Date/Field'
import Time                 from '@epicformbuilder/admin/editor/components/Time/Field'
import Confirm              from '@epicformbuilder/admin/editor/components/Confirm/Field'
import Submit               from '@epicformbuilder/admin/editor/components/Submit/Field'
import FullName             from '@epicformbuilder/admin/editor/components/FullName/Field'
import FirstName            from '@epicformbuilder/admin/editor/components/FirstName/Field'
import LastName             from '@epicformbuilder/admin/editor/components/LastName/Field'
import Address1             from '@epicformbuilder/admin/editor/components/Address1/Field'
import Address2             from '@epicformbuilder/admin/editor/components/Address2/Field'
import Country              from '@epicformbuilder/admin/editor/components/Country/Field'
import State                from '@epicformbuilder/admin/editor/components/State/Field'
import City                 from '@epicformbuilder/admin/editor/components/City/Field'
import PostCode             from '@epicformbuilder/admin/editor/components/PostCode/Field'

// Actions
import SuccessMessage       from '@epicformbuilder/admin/editor/components/SuccessMessage/Field'
import FailureMessage       from '@epicformbuilder/admin/editor/components/FailureMessage/Field'
import ProcessingMessage    from '@epicformbuilder/admin/editor/components/ProcessingMessage/Field'

import Notification         from '@epicformbuilder/admin/editor/components/Notification/Field'

import PluginsLoader from '@epicformbuilder/common/services/PluginsLoader'
import MissingAddonField from '@epicformbuilder/admin/editor/components/MissingAddon/Field'

// Core components only. Add-on components resolve through the add-on registry
// (PluginsLoader editor parts); anything unknown renders a placeholder so a
// form that uses an inactive add-on still opens and keeps its stored settings.
const registry: Record<string, any> = {
    // Fields
    Title, Subtitle, Blank, FreeText,
    Text, Email, Phone, Paragraph, Select, Checkbox, Radio,
    Date, Time, Confirm, Submit,
    FullName, FirstName, LastName, Address1, Address2, Country, State, City, PostCode,

    // Actions
    SuccessMessage, FailureMessage, ProcessingMessage,
    Notification,
}

export const getComponent = ( name: string ) =>
    registry[name] ?? PluginsLoader.getEditorPart( name )?.Field ?? MissingAddonField

export { default as Item }          from '@epicformbuilder/admin/editor/components/Item'
export { default as DataTag }       from '@epicformbuilder/admin/editor/components/DataTag'
export { default as Hint }          from '@epicformbuilder/admin/editor/components/Hint'
export { default as Label }         from '@epicformbuilder/admin/editor/components/Label'
export { default as Placeholder }   from '@epicformbuilder/admin/editor/components/Placeholder'
export { default as Required }      from '@epicformbuilder/admin/editor/components/Required'
export { default as HelpCenter }    from '@epicformbuilder/admin/editor/components/HelpCenter'
export { default as SettingsTab }   from '@epicformbuilder/admin/editor/components/SettingsTab'
