import fileTypeTagStyles from '~/styles/components/file-type-tag.css?url';

export type FileType = 
  | 'sales-contract' 
  | 'purchase-contract' 
  | 'license' 
  | 'punishment' 
  | 'agreement' 
  | string;

interface FileTypeTagProps {
  type: FileType;
  text?: string;
  className?: string;
  size?: 'default' | 'sm' | 'lg';
  showIcon?: boolean;
}

export function links() {
  return [{ rel: "stylesheet", href: fileTypeTagStyles }];
}

/**
 * 文档类型标签组件
 * 用于显示文档的类型，如销售合同、采购合同、许可证等
 * @param type 文档类型
 * @param text 自定义文本，不提供则使用默认文本
 * @param className 额外的类名
 * @param size 尺寸：default, sm, lg
 * @param showIcon 是否显示图标，默认为true
 */
export function FileTypeTag({ 
  type, 
  text, 
  className = '', 
  size = 'default',
  showIcon = true
}: FileTypeTagProps) {
  // 文档类型对应的图标
  const getTypeIcon = () => {
    const typeIconMap: Record<string, string> = {
      'sales-contract': 'ri-file-list-3-line',
      'purchase-contract': 'ri-shopping-cart-line',
      'license': 'ri-vip-crown-line',
      'punishment': 'ri-scales-line',
      'agreement': 'ri-file-paper-line',
    };
    return typeIconMap[type] || 'ri-file-text-line';
  };

  // 文档类型对应的文本
  const getTypeText = () => {
    if (text) return text;
    
    const typeTextMap: Record<string, string> = {
      'sales-contract': '销售合同',
      'purchase-contract': '采购合同',
      'license': '专卖许可证',
      'punishment': '行政处罚决定书',
      'agreement': '承包协议',
    };
    return typeTextMap[type] || type;
  };

  // 获取文档类型对应的类名
  const getTypeClass = () => {
    return `file-type-tag file-type-${type}`;
  };

  // 获取尺寸类名
  const getSizeClass = () => {
    return size !== 'default' ? `file-type-tag-${size}` : '';
  };

  // 获取图标显示相关的类名
  const getIconClass = () => {
    return !showIcon ? 'file-type-tag-no-icon' : '';
  };

  return (
    <span className={`${getTypeClass()} ${getSizeClass()} ${getIconClass()} ${className}`}>
      {showIcon && <i className={`${getTypeIcon()} file-type-icon`}></i>}
      <span className="file-type-text">{getTypeText()}</span>
    </span>
  );
} 