import React from 'react'; import type { WidgetDefinition, UserWidgetPreference } from '../types'; import type { DashboardCategoryInput } from './WidgetBuilder/categories'; interface WidgetManagerPanelProps { isOpen: boolean; catalog: WidgetDefinition[]; currentLayout: UserWidgetPreference[]; /** * Administracion del catalogo. Gobierna el boton del Widget Builder (una capacidad global, que si * es un `isAdmin`) y sirve de **respaldo** por widget cuando el catalogo no trae `permissions`. */ isAdmin?: boolean; /** * Capacidad de crear y editar definiciones de widget — lo que abre el Widget Builder. * * 🔴 Antes esa puerta la gateaba `isAdmin`, y eso dejaba **inerte** la capacidad fina del host: * quien podía escribir widgets sin ser administrador creaba uno por API y no veía el botón para * hacerlo. Son dos preguntas distintas y se habían colapsado en una — administrar el catálogo no * es lo mismo que poder añadirle algo. * * Sin valor cae a `isAdmin`, que es el comportamiento histórico: un host que no la pase no cambia. */ canWriteWidgets?: boolean; /** Respaldo de visibilidad para hosts sin `permissions` en el DTO. Ver `resolveWidgetPermissions`. */ userRoles?: string[]; /** * Capacidad de cambiar la exposicion de un widget -a quien alcanza-. Gobierna el paso de permisos * del asistente. Sin valor cae a `isAdmin`. */ canPublishWidgets?: boolean; userId?: string; /** * 🔴 **Si el Constructor ofrece conectar una fuente EXTERNA** — un Power BI, otro ERP, un API * público. Es un paso DENTRO del asistente, no la puerta de entrada. * * ⚠️ Hasta aquí hacía **dos trabajos**: abría la puerta del Constructor *y* ofrecía la fuente * externa. Por eso un analista con `canWriteWidgets` veía un botón llamado «Conectar API externa» * que el API le rechazaba — y por eso no se podía abrir el Constructor sin abrir también las * fuentes externas. Es el cuarto caso de *un dato que significa dos cosas a la vez*. */ showExternalEndpoints?: boolean; /** * **Si la puerta del Constructor existe.** La otra mitad de la deuda anterior, ahora separada. * * Sin valor cae a `showExternalEndpoints`, así que **ningún host cambia de conducta** al actualizar: * quien pasaba el flag viejo sigue viendo exactamente lo mismo. Abrir el Constructor sin abrir las * fuentes externas pasa a ser **una decisión de producto de una línea**, que es lo que antes no se * podía tomar. */ showWidgetBuilder?: boolean; onClose: () => void; onRequestAdd: (widget: WidgetDefinition) => void; onRequestModify: (widget: WidgetDefinition, preference: UserWidgetPreference) => void; onRemoveWidget: (instanceId: string) => void; onWidgetCreated: (definition: WidgetDefinition) => void | Promise; onWidgetUpdated?: (definition: WidgetDefinition) => void; onDeleteWidget?: (widgetId: string) => void; /** Vocabulario de segmentación del host. Ver Step5Permissions. */ /** * 🔴 **RETIRADO el 2026-09-14 (F3.b.5).** Era un paso a paso puro —página → panel → Constructor— y * el Constructor dejó de preguntarlo: la vertical la determina la categoría. Se quita en vez de * dejarlo ignorado, porque una prop que se acepta y no hace nada es la clase de cosa que alguien * rellena mañana creyendo que segmenta algo. * * Repartir a una vertical sigue existiendo: es el sujeto «un módulo» del **diálogo de acceso**, que * lo recibe por `accessAdapter.capabilities.modules` — otro camino y otro acto. */ /** * 🔴 Desde F3 puede traer la **pareja** categoría→vertical, y por eso deja de ser `string[]`. * Este panel no la usa: solo la deja pasar al Constructor, que es quien deriva. */ availableCategories?: DashboardCategoryInput[]; } export declare const WidgetManagerPanel: React.FC; export {}; //# sourceMappingURL=WidgetManagerPanel.d.ts.map