← back to Patty

components/grants/types.ts

52 lines

export interface Grant {
  id: string;
  title: string;
  funder: string;
  funder_url: string | null;
  amount_min: number | null;
  amount_max: number | null;
  description: string | null;
  eligibility: string | null;
  focus_areas: string[];
  application_url: string | null;
  deadline: string | null;
  cycle: string | null;
  ai_fit_score: number | null;
  ai_suggestion: string | null;
  status: string;
  priority: string;
  notes: string | null;
  tags: string[];
  is_bookmarked: boolean;
  created_at: string;
  updated_at?: string;
}

export function formatAmount(min: number | null, max: number | null): string {
  if (!min && !max) return 'TBD';
  if (min && max && min === max) return `$${max.toLocaleString()}`;
  if (min && max) return `$${min.toLocaleString()} – $${max.toLocaleString()}`;
  if (max) return `Up to $${max.toLocaleString()}`;
  return `From $${min!.toLocaleString()}`;
}

export const STATUS_COLORS: Record<string, string> = {
  discovered: '#3b82f6',
  researching: '#8b5cf6',
  preparing: '#f59e0b',
  submitted: '#06b6d4',
  awarded: '#22c55e',
  declined: '#ef4444',
  expired: '#6b7280',
};

export const STATUS_LABELS: Record<string, string> = {
  discovered: 'Discovered',
  researching: 'Researching',
  preparing: 'Preparing',
  submitted: 'Submitted',
  awarded: 'Awarded',
  declined: 'Declined',
  expired: 'Expired',
};