Files
famapp/src/modules/journal/day-key.ts
T
ginnoir a09747c314
CI / checks (push) Failing after 2m7s
CI / build (push) Successful in 4m36s
feat: journal dashboard widgets, agent polish, and edit-mode live previews
Journal dashboard widgets and quick-add; rich-text quick-add dialogs.

Dashboard draft sync for live edit previews; assistant bubble + API tools.

Journal UX: stress slider, mood grid, query cap fix.
2026-07-04 22:03:45 -05:00

28 lines
1023 B
TypeScript

export function toDayKey(date: Date): string {
const y = date.getFullYear();
const m = String(date.getMonth() + 1).padStart(2, "0");
const d = String(date.getDate()).padStart(2, "0");
return `${y}-${m}-${d}`;
}
export function recordedDayKey(iso: string): string {
return toDayKey(new Date(iso));
}
export function dayKeyToMonthStart(dayKey: string): Date | null {
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dayKey);
if (!match) return null;
return new Date(Number(match[1]), Number(match[2]) - 1, 1);
}
export function formatDayKeyLabel(dayKey: string): string {
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dayKey);
if (!match) return dayKey;
const date = new Date(Number(match[1]), Number(match[2]) - 1, Number(match[3]));
return date.toLocaleDateString(undefined, { month: "long", day: "numeric", year: "numeric" });
}
export function buildEntryDaySet(entries: Array<{ recordedAt: string }>): Set<string> {
return new Set(entries.map((entry) => recordedDayKey(entry.recordedAt)));
}