enerthya.dev-toast
v1.0.0
Published
Common toast notification layer for the Enerthya ecosystem. Inspired by Loritta's luna:toast-common module. Framework-agnostic types, constants, factory and dark-glass style presets.
Maintainers
Readme
enerthya.dev-toast
Camada comum de notificações toast para o ecossistema Enerthya.
Inspirado em luna:toast-common (Loritta/MrPowerGamerBR).
Framework-agnostic — define tipos, constantes, factory e estilos dark-glass.
A dashboard conecta ao react-hot-toast; qualquer outro consumidor pode adaptar livremente.
Instalação
npm install enerthya.dev-toastO que está incluído
Constantes
const { TOAST_TYPES, TOAST_TYPE_VALUES, TOAST_DURATION, TOAST_DURATION_PERSISTENT } = require("enerthya.dev-toast");
TOAST_TYPES.SUCCESS // "success"
TOAST_TYPES.ERROR // "error"
TOAST_TYPES.WARNING // "warning"
TOAST_TYPES.INFO // "info"
TOAST_TYPE_VALUES // ["success", "error", "warning", "info"]
TOAST_DURATION.success // 3000ms
TOAST_DURATION.error // 4500ms
TOAST_DURATION.warning // 3500ms
TOAST_DURATION.info // 3000ms
TOAST_DURATION_PERSISTENT // Infinity — toast não fecha sozinhoFactory
const { createToast, createSuccessToast, createErrorToast, createWarningToast, createInfoToast, isToast } = require("enerthya.dev-toast");
// Cria um objeto toast normalizado:
// { id, type, message, duration, payload }
const t = createToast("success", "Salvo com sucesso!");
// Shorthands:
createSuccessToast("Salvo!");
createErrorToast("Algo deu errado.");
createWarningToast("Atenção.", { duration: 5000 });
createInfoToast("Sabia que...", { id: "meu-id-unico" });
// Type guard:
isToast(t) // trueOpções do createToast
| Campo | Tipo | Descrição |
|-------|------|-----------|
| duration | number | Override da duração padrão (ms) |
| id | string | ID explícito (útil para deduplicação) |
| payload | any | Dado extra livre |
Estilos (dark-glass)
const { TOAST_STYLES, TOAST_STYLE_BASE, TOAST_ICON_EMOJI, getToastStyle, getToastEmoji, buildToastOptions } = require("enerthya.dev-toast");
// Objeto de style pronto para react-hot-toast:
getToastStyle("success") // { background, color, border, backdropFilter, ... }
getToastStyle("error") // idem, com border vermelho
// Emoji textual por tipo:
getToastEmoji("success") // "✅"
getToastEmoji("error") // "❌"
getToastEmoji("warning") // "⚠️"
getToastEmoji("info") // "ℹ️"
// Monta as options do react-hot-toast a partir de um objeto toast:
const opts = buildToastOptions(t);
// opts = { duration, id, style }
// Pronto para: toast.success(t.message, opts)Uso na dashboard (com react-hot-toast)
Hook useToast
import { useToast } from "@hooks/useToast";
const { showSuccess, showError, showWarning, showInfo } = useToast();
showSuccess("Configurações salvas!");
showError("Sem permissão para salvar.");
showWarning("Atenção: canal não encontrado.");
showInfo("Dica: ative o módulo primeiro.");Integração direta
import toast from "react-hot-toast";
import { createSuccessToast, buildToastOptions } from "enerthya.dev-toast";
const t = createSuccessToast("Salvo!");
toast.success(t.message, buildToastOptions(t));Testes
node test.js
# Total: 42 | ✅ 42 passed | ❌ 0 failedInspiração
luna:toast-common — módulo interno da Loritta (MrPowerGamerBR).
Adaptado de Kotlin/KMP para JavaScript/Node.js com foco na dashboard da Enerthya.
