import React from 'react'; import type { Class_ApplicationData } from '../../types/ApplicationData'; import { Type_PanelMode } from '../../types/PanelManager'; export type Type_PanelShellProps = { app_data: Class_ApplicationData; /** Identifiant stable du panneau (ex. 'config', ou 'element:'). */ id: string; /** Titre affiché dans l'en-tête. */ title: string; children: React.ReactNode; /** Modes autorisés pour ce menu (défaut : les 3). Ex. la Config n'utilise pas * l'info-bulle (elle n'est pas déclenchée au survol). */ allowedModes?: Type_PanelMode[]; /** Largeur de la barre latérale quand ce menu y est ancré (défaut partagé 270). */ sidebarWidthPx?: number; /** Fermeture : par défaut `panels.close(id)`. */ onClose?: () => void; /** Curseur entré dans l'info-bulle : annule la fermeture programmée. */ onTooltipHoverIn?: () => void; /** Curseur sorti de l'info-bulle : programme la fermeture (délai d'intention). */ onTooltipHoverOut?: () => void; /** 1ʳᵉ interaction dans le corps de l'info-bulle : épingle en pop-up. */ onTooltipEditIntent?: () => void; }; /** * FOND de la barre latérale — la bande elle-même, sous le menu qu'elle porte. * * La barre n'existe plus VIDE : `sidebar_open` implique un menu ancré, et ce * menu recouvre exactement ce fond (rendu sous lui, z-index inférieur). Le fond * reste néanmoins peint, pour que la bande ne laisse jamais voir au travers * pendant qu'une coquille se (re)monte — la largeur, elle, est déjà réservée. */ export declare const SidebarSurface: ({ app_data }: { app_data: Class_ApplicationData; }) => React.JSX.Element | null; /** * OS#321 — CONGÉDIEMENT des pop-ups NON ÉPINGLÉES au clic extérieur. * * Une pop-up ouverte par un clic est transitoire : le clic suivant, posé hors * d'elle, la referme — exactement comme les menus déroulants de la barre du haut * et le menu contextuel, dont on généralise ici le comportement. L'épingle de * l'en-tête est la sortie de secours quand on veut la garder sous les yeux. * * Écoute en CAPTURE sur `pointerdown` : le congédiement doit précéder le * gestionnaire de clic de l'élément visé, pour que celui-ci puisse constater * (via `consumeJustDismissed`) qu'il vient de fermer SA pop-up et s'abstenir de * la rouvrir — c'est la BASCULE (recliquer l'élément referme sa pop-up). * * Monté une seule fois (cf. SankeyMenus) ; ne rend rien. */ export declare const PanelDismissLayer: ({ app_data }: { app_data: Class_ApplicationData; }) => null; /** * Coquille de panneau : rend `children` dans le contenant correspondant au mode * courant de `id` (ou rien si le panneau est fermé). Se re-rend sur le topic * PANELS. Le contenu n'est PAS remonté d'un mode à l'autre (cf. PanelFrame). */ export declare const PanelShell: ({ app_data, id, title, children, allowedModes, sidebarWidthPx, onClose, onTooltipHoverIn, onTooltipHoverOut, onTooltipEditIntent }: Type_PanelShellProps) => React.JSX.Element | null;