28 lines
710 B
TypeScript
28 lines
710 B
TypeScript
import { clsx, type ClassValue } from "clsx"
|
|
import { twMerge } from "tailwind-merge"
|
|
import { format, isValid } from "date-fns"
|
|
|
|
export function cn(...inputs: ClassValue[]) {
|
|
return twMerge(clsx(inputs))
|
|
}
|
|
|
|
export function formatDate(date: Date): string {
|
|
if (!isValid(date)) {
|
|
return "Invalid date"
|
|
}
|
|
return format(date, "MMMM d, yyyy")
|
|
}
|
|
|
|
export function formatCurrency(amount: number): string {
|
|
return new Intl.NumberFormat("en-ZA", {
|
|
style: "currency",
|
|
currency: "ZAR",
|
|
minimumFractionDigits: 2,
|
|
}).format(amount)
|
|
}
|
|
|
|
export function truncateText(text: string, maxLength: number): string {
|
|
if (text.length <= maxLength) return text
|
|
return `${text.slice(0, maxLength)}...`
|
|
}
|