← 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',
};