/v1.0

ExpandablePanel

Contenedor colapsable que alterna el cuerpo entre abierto y cerrado al hacer clic en el encabezado. El cuerpo anima su altura suavemente. Un ícono de chevron rota para indicar el estado actual. El contenido del encabezado y del cuerpo se proveen como funciones de render.

Props

| Prop | Tipo | Requerido | Por defecto | Descripción | |------|------|-----------|-------------|-------------| | renderHeader | () => ReactNode | Sí | — | Función que renderiza el contenido del encabezado. | | renderBody | () => ReactNode | Sí | — | Función que renderiza el contenido del cuerpo colapsable. | | collapsedIconDirection | 'down' \| 'right' | No | 'down' | Dirección del chevron cuando el panel está colapsado. | | containerStyle | React.CSSProperties | No | — | Estilos del contenedor externo. |

Uso

Básico

import ExpandablePanel from '@/components/ExpandablePanel';

export default function Example() {
  return (
    <ExpandablePanel
      renderHeader={() => <span>Información de Envío</span>}
      renderBody={() => (
        <div>
          <p>Envío estándar: 3–5 días hábiles</p>
          <p>Envío express: 1–2 días hábiles</p>
        </div>
      )}
    />
  );
}

Chevron hacia la derecha (estilo barra lateral)

import ExpandablePanel from '@/components/ExpandablePanel';

export default function Example() {
  return (
    <ExpandablePanel
      collapsedIconDirection="right"
      renderHeader={() => <strong>Configuración Avanzada</strong>}
      renderBody={() => (
        <div style={{ paddingTop: 10 }}>
          <label>
            <input type="checkbox" /> Activar modo debug
          </label>
        </div>
      )}
      containerStyle={{ borderBottom: '1px solid #eee', paddingBottom: 10 }}
    />
  );
}