/**
 * 동적 필드 렌더러
 * field_type에 따라 적절한 필드 컴포넌트를 선택하여 렌더링
 *
 * 기본 6종 + 확장 8종 = 14종 지원
 * 알 수 없는 타입은 TextField로 폴백
 */

'use client';

import { TextField } from './TextField';
import { NumberField } from './NumberField';
import { DropdownField } from './DropdownField';
import { CheckboxField } from './CheckboxField';
import { DateField } from './DateField';
import { TextareaField } from './TextareaField';
// Phase 1: 핵심 컴포넌트
import { ReferenceField } from './ReferenceField';
import { MultiSelectField } from './MultiSelectField';
import { FileField } from './FileField';
// Phase 2: 편의 컴포넌트
import { CurrencyField } from './CurrencyField';
import { UnitValueField } from './UnitValueField';
import { RadioField } from './RadioField';
// Phase 3: 고급 컴포넌트
import { ToggleField } from './ToggleField';
import { ComputedField } from './ComputedField';
import type { DynamicFieldRendererProps } from '../types';

export function DynamicFieldRenderer(props: DynamicFieldRendererProps) {
  const { field } = props;

  switch (field.field_type) {
    // 기본 6종
    case 'textbox':
      return <TextField {...props} />;

    case 'number':
      return <NumberField {...props} />;

    case 'dropdown':
      return <DropdownField {...props} />;

    case 'checkbox':
      return <CheckboxField {...props} />;

    case 'date':
      return <DateField {...props} />;

    case 'textarea':
      return <TextareaField {...props} />;

    // Phase 1: 핵심 타입
    case 'reference':
      return <ReferenceField {...props} />;

    case 'multi-select':
      return <MultiSelectField {...props} />;

    case 'file':
      return <FileField {...props} />;

    // Phase 2: 편의 타입
    case 'currency':
      return <CurrencyField {...props} />;

    case 'unit-value':
      return <UnitValueField {...props} />;

    case 'radio':
      return <RadioField {...props} />;

    // Phase 3: 고급 타입
    case 'toggle':
      return <ToggleField {...props} />;

    case 'computed':
      return <ComputedField {...props} />;

    default:
      // 알 수 없는 타입은 텍스트 필드로 폴백
      console.warn(`Unknown field type: ${field.field_type}, falling back to TextField`);
      return <TextField {...props} />;
  }
}
