63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
"use client";
|
|
|
|
import { sileo, type SileoOptions } from "sileo";
|
|
|
|
// Wrapper fino sobre sileo para unificar copy en español y defaults.
|
|
// Uso: notify.success("Ticket creado"), notify.error("No se pudo guardar", err)
|
|
const DEFAULT_DURATION = 5000;
|
|
|
|
function base(title: string, description?: string): SileoOptions {
|
|
return { title, description, duration: DEFAULT_DURATION };
|
|
}
|
|
|
|
export const notify = {
|
|
success(title: string, description?: string, opts?: Partial<SileoOptions>) {
|
|
return sileo.success({ ...base(title, description), ...opts });
|
|
},
|
|
error(title: string, description?: string, opts?: Partial<SileoOptions>) {
|
|
return sileo.error({ ...base(title, description), ...opts });
|
|
},
|
|
warning(title: string, description?: string, opts?: Partial<SileoOptions>) {
|
|
return sileo.warning({ ...base(title, description), ...opts });
|
|
},
|
|
info(title: string, description?: string, opts?: Partial<SileoOptions>) {
|
|
return sileo.info({ ...base(title, description), ...opts });
|
|
},
|
|
action(
|
|
title: string,
|
|
buttonTitle: string,
|
|
onClick: () => void,
|
|
description?: string,
|
|
opts?: Partial<SileoOptions>
|
|
) {
|
|
return sileo.action({
|
|
...base(title, description),
|
|
button: { title: buttonTitle, onClick },
|
|
...opts,
|
|
});
|
|
},
|
|
promise<T>(
|
|
promise: Promise<T> | (() => Promise<T>),
|
|
messages: {
|
|
loading: string;
|
|
success: string | ((data: T) => string);
|
|
error: string | ((err: unknown) => string);
|
|
}
|
|
) {
|
|
const { loading, success, error } = messages;
|
|
return sileo.promise(promise, {
|
|
loading: { title: loading },
|
|
success:
|
|
typeof success === "function"
|
|
? (data: T) => ({ title: (success as (d: T) => string)(data) })
|
|
: { title: success },
|
|
error:
|
|
typeof error === "function"
|
|
? (err: unknown) => ({ title: (error as (e: unknown) => string)(err) })
|
|
: { title: error },
|
|
});
|
|
},
|
|
dismiss: sileo.dismiss,
|
|
clear: sileo.clear,
|
|
};
|