ComponentStandalone

Burger

Animated menu toggle — three SVG strokes morph between a hamburger and a close mark. Two-way bindable, so it pairs naturally with a <wr-drawer>.

Basic usage

Click to morph between the hamburger and close marks. The open state is two-way bindable.

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

With a drawer

The canonical pairing — bind the same signal to <wr-burger> and <wr-drawer>. The button morphs to a close mark while the menu is open, and tapping it again closes the menu.

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

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

Styling

Size, colors, stroke width, and morph duration are all CSS custom properties — override them inline or in a stylesheet.

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

Disabled

A disabled toggle ignores clicks and dims.

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

NameDescriptionTypeDefault
--wr-burger-sizeButton square size.length2.5rem
--wr-burger-colorResting stroke color.colorvar(--wr-color-dark)
--wr-burger-color-openedStroke color when open.colorvar(--wr-color-primary)
--wr-burger-stroke-widthLine thickness.length6px
--wr-burger-durationMorph duration.time0.5s

CSS variables

Custom properties ngwr/burger publishes. Each default below is declared on the component's own selector, so a :root override is shadowed by it — set them on that selector, on a wrapper you scope yourself, or inline on the element. Unlike the BEM class names, these are the supported way to restyle the component.

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