import { User, LucideUsers2 } from 'lucide-react';

export type ModuleType = 'testimonial' | 'blog';

export interface TypeItem {
  name: string;
  value: number;
  icon: any;
  bgColor: string;
  textColor: string;
  borderColor: string;
}

export const typeEnum: Record<ModuleType, TypeItem[]> = {
  testimonial: [
    {
      name: 'Student',
      value: 1,
      icon: User,
      bgColor: 'bg-pink-100',
      textColor: 'text-pink-700',
      borderColor: 'border-pink-700',
    },
    {
      name: 'Parent',
      value: 2,
      icon: LucideUsers2,
      bgColor: 'bg-cyan-100',
      textColor: 'text-cyan-700',
      borderColor: 'border-cyan-700',
    },
    {
      name: 'Visitor',
      value: 3,
      icon: LucideUsers2,
      bgColor: 'bg-purple-100',
      textColor: 'text-purple-700',
      borderColor: 'border-purple-700',
    },
  ],
  blog: [
    {
      name: 'News',
      value: 1,
      icon: User,
      bgColor: 'bg-pink-100',
      textColor: 'text-pink-700',
      borderColor: 'border-pink-700',
    },
    {
      name: 'Event',
      value: 2,
      icon: LucideUsers2,
      bgColor: 'bg-cyan-100',
      textColor: 'text-cyan-700',
      borderColor: 'border-cyan-700',
    },
  ],
  notice: [
    {
      name: 'Student',
      value: 1,
      icon: User,
      bgColor: 'bg-pink-100',
      textColor: 'text-pink-700',
      borderColor: 'border-pink-700',
    },
    {
      name: 'Parent',
      value: 2,
      icon: LucideUsers2,
      bgColor: 'bg-cyan-100',
      textColor: 'text-cyan-700',
      borderColor: 'border-cyan-700',
    },
    {
      name: 'Teacher',
      value: 3,
      icon: User,
      bgColor: 'bg-pink-100',
      textColor: 'text-pink-700',
      borderColor: 'border-pink-700',
    },
    {
      name: 'Office',
      value: 4,
      icon: LucideUsers2,
      bgColor: 'bg-cyan-100',
      textColor: 'text-cyan-700',
      borderColor: 'border-cyan-700',
    },
  ],
};

/**
 * Get types for a module or a single type by value
 * @param module Module name ('testimonial' | 'blog')
 * @param value Optional type value to get a single item
 */
export const getTypes = (module: ModuleType, value?: number): TypeItem | TypeItem[] | undefined => {
  const types = typeEnum[module];
  if (value !== undefined) {
    return types.find((type) => type.value === value);
  }
  return types;
};
