import type React from 'react'; import type { RowAction } from './MasterDocument.types'; import type { TranslateFn } from './i18nFactory'; /** Tono semántico de una acción por registro. Espeja `actionSemantics` de MasterCrud. */ export type AccionTono = 'danger' | 'success' | 'neutral'; /** * Verde de «Activar», tomado del canon de badges de MasterCrud (estado `success`). * * Va como hex y no como clase por la razón que documenta `badgeTokens.ts` de * MasterCrud: el kit no declara ningún `--color-success-*`, así que una clase * arbitraria no se emitiría en el CSS del consumidor. Medido renderizado en * `/app/items` el 2026-09-09: `rgb(4, 120, 87)`. */ export declare const ACTIVAR_FG = "#047857"; /** Tono con el que se pinta la acción de estado cuando el canon no la reconoce. */ export declare const TONO_ANULAR: AccionTono; /** Devuelve el COMPONENTE del icono, no un elemento: así este módulo no lleva JSX. */ export interface CanonDeEstado { label: string; Icon: React.FC<{ className?: string; }>; tone: AccionTono; } /** * Lleva la acción de ESTADO de un documento al canon de MasterCrud: su icono, su * tono y —sólo si la plantilla no dice nada— su rótulo. * * ## Qué impone el kit y qué NO * * El kit impone lo VISUAL: el icono (`MinusCircle` / `CheckCircle`) y el tono * (`#dc2626` / `#047857`), que es lo que hace que la acción se reconozca igual en * cualquier pantalla del producto. * * El RÓTULO se queda en la plantilla. Esta función lo imponía también, y fue un * error medible: pisaba el verbo que cada plantilla declara con su propia clave * i18n. En entradas de compra —`ecd.ui.actions.cancel` = «Anular»— el botón pasó a * decir «Desactivar registro» sin que nadie lo pidiera, y cinco pruebas de * `EcdPage.cancelGating.integration` se pusieron rojas con la publicación de * 1.0.332 (ellas buscan el botón por su texto). El fallo no es de las pruebas: un * paquete no debe renombrar los botones de módulos que no participaron en el * cambio, y menos en silencio. * * Quien quiera el verbo del canon lo pone en su plantilla, que es donde se ve. * * `t` sigue haciendo falta para el caso sin rótulo, y también para las acciones que * el kit sintetiza por su cuenta. * * Devuelve `null` para cualquier otra acción: las personalizadas del consumidor * conservan su rótulo y su icono. */ export declare function accionDeEstadoAlCanon(action: Pick, t: TranslateFn): CanonDeEstado | null; /** * Clases de color para un tono, sobre la geometría de 28x28 que ya fija * `ROW_ACTION_BTN`. Sólo cambia el color: tamaño, radio y foco son los mismos para * los tres tonos, porque lo que distingue una acción destructiva es su color y no su * forma. * * MasterCrud no tiene precedente de una acción de estado como botón DIRECTO —allí * vive siempre en el kebab—, así que el tono se traslada al botón conservando el * control `outline` del canon. */ export declare function clasesDeTonoBoton(tone: AccionTono | undefined): string; //# sourceMappingURL=stateActionCanon.d.ts.map