feat: better components

This commit is contained in:
2025-05-12 11:27:33 -04:00
parent 398ddde169
commit cdeaa13d92
135 changed files with 10487 additions and 2088 deletions

View File

@ -4,3 +4,27 @@ import { twMerge } from 'tailwind-merge';
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
export async function attempt<T, E = Error>(
func: (() => T) | Promise<T>,
handler?: ((error: E) => void) | 'throw',
): Promise<{ result: T | null, error: E | null }> {
try {
const result = await (func instanceof Promise ? func : Promise.resolve().then(func))
return { result, error: null }
}
catch (error) {
if (handler === 'throw') {
throw error
}
if (handler) {
handler(error as E)
}
return { result: null, error: error as E }
}
}
export function delay(ms: number) {
return new Promise(resolve => setTimeout(resolve, ms));
}