Burger

A menu button that morphs between a hamburger and a close mark.

Installation

Import the class, and @use the entry point in your global styles: without it the component renders unstyled.

import { Component } from '@angular/core';
import { WrBurger } from 'ngwr/burger';

@Component({ imports: [WrBurger] })
export class MyComponent {}

Basic usage

Bind [(open)].

open: false
<wr-burger [(open)]="menuOpen" />

With a drawer

Bind the same signal to <wr-burger> and <wr-drawer>.

<wr-burger [(open)]="menuOpen" />

<wr-drawer [(open)]="menuOpen" position="right" width="16rem">
  …
</wr-drawer>

Styling

Set the --wr-burger-* custom properties.

<wr-burger
  [(open)]="menuOpen"
  style="--wr-burger-size: 3rem; --wr-burger-color-opened: var(--wr-color-danger);"
/>

Disabled

API

NameDescriptionTypeDefault
openTwo-way bindable open state. Drives the hamburger ↔ close morph.booleanfalse
labelAccessible name for the toggle button. Falls back to burger.label, then 'Toggle menu'.string | nullnull
disabledDisable the toggle.booleanfalse

CSS variables

Set these on the component's selector or a wrapper, not on :root: the defaults are declared on ngwr/burger's own element.

VariableDefaultDeclared on
--wr-burger-colorvar(--wr-color-on-surface).wr-burger +1 variant override
--wr-burger-color-openedvar(--wr-color-primary).wr-burger
--wr-burger-duration0.5s.wr-burger
--wr-burger-easevar(--wr-ease-in-out).wr-burger
--wr-burger-offset-10.wr-burger +1 variant override
--wr-burger-offset-20.wr-burger +1 variant override
--wr-burger-offset-30.wr-burger +1 variant override
--wr-burger-size2.5rem.wr-burger
--wr-burger-stroke-160 207.wr-burger +1 variant override
--wr-burger-stroke-260 60.wr-burger +1 variant override
--wr-burger-stroke-360 207.wr-burger +1 variant override
--wr-burger-stroke-width6px.wr-burger

See also