src/programs/snap-negative/input-limits.ts
Linked repository file from this build.
/** Application limits, shared by form controls, command validation and calculations. */
export const MIN_HOUSEHOLD_SIZE = 1;
export const MAX_HOUSEHOLD_SIZE = 20;
export const MAX_INCOME_ROWS = 100;
export const MAX_MONEY_CENTS = 100_000_000;
export function isCalendarDate(value: string): boolean {
if (!/^\d{4}-\d{2}-\d{2}$/.test(value) || value.startsWith("0000")) return false;
const date = new Date(`${value}T00:00:00Z`);
return Number.isFinite(date.getTime()) && date.toISOString().slice(0, 10) === value;
}
export function isCalendarMonth(value: string): boolean {
return /^\d{4}-(0[1-9]|1[0-2])$/.test(value) && !value.startsWith("0000");
}