/**
 * Types for HazoTemplateGenerator component
 */
import { DEFAULT_ICON_ORDER, get_default_icons_behaviour } from '../../types/icons_behaviour.js';
export { DEFAULT_ICON_ORDER, get_default_icons_behaviour };
/**
 * All available control names
 */
export const ALL_CONTROL_NAMES = [
    'control_lock',
    'control_delete',
    'control_visibility',
    'control_data_ok',
    'control_skip',
    'control_notes',
    'control_chat',
    'control_add_elements',
    'control_edit_field',
    'control_edit_group',
    'control_delete_field',
    'control_edit_elements',
    'control_private_files',
    'control_revalidate',
];
/**
 * Control name labels for display
 */
export const CONTROL_NAME_LABELS = {
    control_lock: 'Lock',
    control_delete: 'Delete',
    control_visibility: 'Visibility',
    control_data_ok: 'Data OK',
    control_complete: 'Complete',
    control_skip: 'Skip (N/A)',
    control_notes: 'Notes',
    control_chat: 'Chat',
    control_add_elements: 'Add Field',
    control_edit_field: 'Edit Field',
    control_edit_group: 'Edit Group',
    control_delete_field: 'Remove Field',
    control_edit_elements: 'Edit Element',
    control_private_files: 'Private Files',
    control_revalidate: 'Re-validate',
};
/**
 * Component types available for fields
 */
export const COMPONENT_TYPES = [
    'HazoCollabFormInputbox',
    'HazoCollabFormTextArea',
    'HazoCollabFormCheckbox',
    'HazoCollabFormRadio',
    'HazoCollabFormCombo',
    'HazoCollabFormDate',
    'HazoCollabFormDataTable',
    'HazoCollabFormDoc',
    'HazoCollabFormCurrency',
    'HazoCollabFormPercentage',
    'HazoCollabFormComputed',
    'HazoCollabFormStaticText',
    'HazoCollabFormSummaryRow',
    'HazoCollabFormMasked',
];
/**
 * Input types for validation
 */
export const INPUT_TYPES = ['mixed', 'numeric', 'email', 'alpha'];
/**
 * Data OK states
 */
export const DATA_OK_STATES = ['ok', 'not_ok', 'pending'];
/**
 * DataTable field types for columns
 */
export const DATA_TABLE_FIELD_TYPES = [
    'text',
    'numeric',
    'dropdown',
    'files',
    'checkbox',
    'radiobutton',
    'date',
    'currency',
    'percentage',
];
/**
 * Default empty section
 */
export const DEFAULT_SECTION = {
    section_name: 'New Section',
    groups: [],
    accept_public_files: 'none',
    accept_private_files: 'none',
};
/**
 * Default empty template (single section for backwards compatibility)
 */
export const DEFAULT_TEMPLATE = {
    section_name: 'New Template',
    groups: [],
    accept_public_files: 'none',
    accept_private_files: 'none',
};
/**
 * Default form-set data (multi-section format)
 */
export const DEFAULT_FORM_SET_DATA = {
    sections: [{ ...DEFAULT_SECTION, section_name: 'Section 1' }],
    icons_behaviour: undefined,
};
/**
 * Default field configuration
 */
export const DEFAULT_FIELD = {
    id: '',
    label: '',
    field_type: 'field',
    component_type: 'HazoCollabFormInputbox',
    value: '',
    description: '',
    required: false,
    accept_public_files: 'none',
    accept_private_files: 'none',
};
/**
 * Default group configuration
 */
export const DEFAULT_GROUP = {
    id: '',
    label: '',
    field_type: 'group',
    value: '',
    description: '',
    fields: [],
};
/**
 * Default DataTable column
 */
export const DEFAULT_DATA_TABLE_COLUMN = {
    id: '',
    label: '',
    field_type: 'text',
    editable: true,
};
/**
 * Default DataTable config
 */
export const DEFAULT_DATA_TABLE_CONFIG = {
    columns: [],
    allow_add_row: true,
    allow_delete_row: true,
    show_row_numbers: false,
    show_subtotal_row: false,
};
export const COMPONENT_TYPE_META = [
    {
        type: 'HazoCollabFormInputbox',
        label: 'Text Input',
        description: 'Single-line text input field',
        icon: 'HiPencil',
        supports_options: false,
        supports_date_range: false,
        supports_data_table: false,
    },
    {
        type: 'HazoCollabFormTextArea',
        label: 'Text Area',
        description: 'Multi-line text input field',
        icon: 'HiDocumentText',
        supports_options: false,
        supports_date_range: false,
        supports_data_table: false,
    },
    {
        type: 'HazoCollabFormCheckbox',
        label: 'Checkbox',
        description: 'Single checkbox for yes/no values',
        icon: 'HiCheckCircle',
        supports_options: false,
        supports_date_range: false,
        supports_data_table: false,
    },
    {
        type: 'HazoCollabFormRadio',
        label: 'Radio Buttons',
        description: 'Select one option from a list',
        icon: 'HiCollection',
        supports_options: true,
        supports_date_range: false,
        supports_data_table: false,
    },
    {
        type: 'HazoCollabFormCombo',
        label: 'Dropdown',
        description: 'Dropdown select with search',
        icon: 'HiChevronDown',
        supports_options: true,
        supports_date_range: false,
        supports_data_table: false,
    },
    {
        type: 'HazoCollabFormDate',
        label: 'Date Picker',
        description: 'Date or date range selector',
        icon: 'HiCalendar',
        supports_options: false,
        supports_date_range: true,
        supports_data_table: false,
    },
    {
        type: 'HazoCollabFormDataTable',
        label: 'Data Table',
        description: 'Dynamic table with rows and columns',
        icon: 'HiTable',
        supports_options: false,
        supports_date_range: false,
        supports_data_table: true,
    },
    {
        type: 'HazoCollabFormDoc',
        label: 'Document Upload',
        description: 'File dropzone for uploading documents',
        icon: 'HiCloudUpload',
        supports_options: false,
        supports_date_range: false,
        supports_data_table: false,
    },
    {
        type: 'HazoCollabFormCurrency',
        label: 'Currency',
        description: 'Number input with currency symbol prefix',
        icon: 'HiCurrencyDollar',
        supports_options: false,
        supports_date_range: false,
        supports_data_table: false,
    },
    {
        type: 'HazoCollabFormPercentage',
        label: 'Percentage',
        description: 'Number input with percentage suffix',
        icon: 'HiTrendingUp',
        supports_options: false,
        supports_date_range: false,
        supports_data_table: false,
    },
    {
        type: 'HazoCollabFormComputed',
        label: 'Computed',
        description: 'Read-only calculated field',
        icon: 'HiCalculator',
        supports_options: false,
        supports_date_range: false,
        supports_data_table: false,
    },
    {
        type: 'HazoCollabFormStaticText',
        label: 'Static Text',
        description: 'Display-only text content',
        icon: 'HiInformationCircle',
        supports_options: false,
        supports_date_range: false,
        supports_data_table: false,
    },
    {
        type: 'HazoCollabFormSummaryRow',
        label: 'Summary Row',
        description: 'Full-width styled row for totals',
        icon: 'HiViewList',
        supports_options: false,
        supports_date_range: false,
        supports_data_table: false,
    },
    {
        type: 'HazoCollabFormMasked',
        label: 'Masked Input',
        description: 'Formatted input with display mask (e.g., TFN, ABN)',
        icon: 'HiKey',
        supports_options: false,
        supports_date_range: false,
        supports_data_table: false,
    },
];
/**
 * Get metadata for a component type
 */
export function get_component_type_meta(type) {
    return COMPONENT_TYPE_META.find(meta => meta.type === type);
}
//# sourceMappingURL=types.js.map