Lo stato closing guida la transizione
.drawer[data-state='open'] {
transform: translateX(0);
transition: transform var(--dur-exit) var(--ease-drawer);
}
.drawer[data-state='closing'] {
transform: translateX(100%); /* stessa curva dell'ingresso, al contrario */
transition: transform var(--dur-exit) var(--ease-drawer);
}
Lo smontaggio aspetta la fine della transizione
const [state, setState] = createSignal<'open' | 'closing' | 'closed'>('open');
// chiudere non smonta: passa per lo stato intermedio
const close = () => setState('closing');
// il contenuto resta al suo posto per i 200ms dell'uscita;
// solo a transizione conclusa il pannello viene smontato davvero
const onTransitionEnd = () => {
if (state() === 'closing') setState('closed');
};