feat: add helper utility functions

- Add formatRupiah for currency formatting
- Add formatDate for date formatting
- Add calculateBalance to compute totals
- Add generateId for unique IDs
- Add getCurrentDate for timestamp
This commit is contained in:
Dita Aji Pratama 2026-04-18 12:20:18 +07:00
parent 5de3a82e56
commit d1b344df42

43
utils/helpers.ts Normal file
View File

@ -0,0 +1,43 @@
import { Transaction, BalanceInfo } from '../types';
export const formatRupiah = (amount: number): string => {
return new Intl.NumberFormat('id-ID', {
style: 'currency',
currency: 'IDR',
minimumFractionDigits: 0,
maximumFractionDigits: 0,
}).format(amount);
};
export const formatDate = (dateString: string): string => {
const date = new Date(dateString);
return new Intl.DateTimeFormat('id-ID', {
day: 'numeric',
month: 'short',
year: 'numeric',
}).format(date);
};
export const calculateBalance = (transactions: Transaction[]): BalanceInfo => {
const income = transactions
.filter((t) => t.type === 'income')
.reduce((sum, t) => sum + t.amount, 0);
const expense = transactions
.filter((t) => t.type === 'expense')
.reduce((sum, t) => sum + t.amount, 0);
return {
total: income - expense,
income,
expense,
};
};
export const generateId = (): string => {
return Date.now().toString(36) + Math.random().toString(36).substr(2);
};
export const getCurrentDate = (): string => {
return new Date().toISOString();
};