Sidebar
Panel lateral cuyo estado abierto/cerrado vive en la URL (?menu=open). Modo overlay en mobile, persistent en desktop ≥400px. Estado compartible y sincronizado vía NeuUrlStateService.
TypeScript
import { NeuSidebarComponent } from '@neural-ui/core/sidebar';TypeScript
import { NeuSidebarComponent } from '@neural-ui/core/sidebar';
import { NeuUrlStateService } from '@neural-ui/core/url-state';
@Component({
imports: [NeuSidebarComponent, NeuButtonComponent],
template: `
<!-- El sidebar gestiona su propio estado desde ?menu=open / Sidebar manages its own state from ?menu=open -->
<neu-sidebar
urlParam="menu"
[persistent]="isDesktop()"
[closeOnEscape]="true"
[restoreFocus]="true"
>
<span neu-sidebar-header>Mi App</span>
<nav><!-- links de navegación / navigation links --></nav>
<div neu-sidebar-footer>v1.0</div>
</neu-sidebar>
<!-- Abrir desde cualquier botón / Open from any button -->
<button neu-button (click)="open()">Abrir menú</button>
`
})
export class AppComponent {
private readonly urlState = inject(NeuUrlStateService);
isDesktop = computed(() => window.innerWidth >= 400);
open() {
this.urlState.setParam('menu', 'open', false);
}
}`