md-app-bar spec card
Identity · when to use / when NOT · decision cues · behavioural contract · do/don't · anti-patterns · full API. Paste into your agent when you're implementing with this component.
The screen’s header. A title, a leading navigation affordance, and a small
number of trailing actions — in small / medium / large heights, plus a
dedicated search variant for apps where search is the primary global function.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-app-bar headline="Inbox" subtitle="12 unread" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdAppBar headline="Inbox" subtitle="12 unread" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="trailing" icon="search" variant="standard" size="md" buttonWidth="narrow" aria-label="Search"></MdIconButton>
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-app-bar headline="Inbox" subtitle="12 unread" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-app-bar headline="Inbox" subtitle="12 unread" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-app-bar headline="Inbox" subtitle="12 unread" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
Already installed? See the
Installation guide for one-time package setup
(core + tokens, fonts). Each tab below shows two patterns for using
md-app-bar in your project: Option A registers every AWC UI
component at once (simplest), Option B imports only this component for
tree-shake-friendly bundles.
<!-- ─── Option A: global registration (all components) ─── -->
<script type="module">
import '@awc-ui/core/define';
</script>
<!-- ─── Option B: single import (tree-shake only md-app-bar) ─── -->
<script type="module">
import '@awc-ui/core/components/md-app-bar';
</script>
<md-app-bar></md-app-bar>// ─── Option A: typed React wrapper (registers all components) ───
// Importing from '@awc-ui/react' calls defineCustomElements() as a
// side effect, so every md-* element becomes available in the browser.
import { MdAppBar } from '@awc-ui/react';
export function Example() {
return <MdAppBar></MdAppBar>;
}
// ─── Option B: single import (tree-shake to only md-app-bar) ───
// Skip the wrapper and use the raw custom element. Smallest bundle,
// but you lose typed props/events on JSX.
import '@awc-ui/core/components/md-app-bar';
export function ExampleTreeShaken() {
return <md-app-bar></md-app-bar>;
}// ─── Option A: schema module (any md-* element accepted) ───
// Pair with `defineCustomElements(window)` in main.ts.
import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@Component({
standalone: true,
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
template: `<md-app-bar></md-app-bar>`,
})
export class ExampleComponent {}
// ─── Option B: typed directive (tree-shake friendly) ───
// Pair with `import '@awc-ui/core/components/md-app-bar'` in main.ts.
import { Component } from '@angular/core';
import { MdAppBar } from '@awc-ui/angular';
@Component({
standalone: true,
imports: [MdAppBar],
template: `<md-app-bar></md-app-bar>`,
})
export class ExampleTreeShakenComponent {}<!-- ─── Option A: typed Vue wrapper (registers all components) ─── -->
<script setup lang="ts">
import { MdAppBar } from '@awc-ui/vue';
</script>
<template>
<MdAppBar></MdAppBar>
</template>
<!-- ─── Option B: single import (tree-shake to only md-app-bar) ─── -->
<script setup lang="ts">
import '@awc-ui/core/components/md-app-bar';
</script>
<template>
<md-app-bar></md-app-bar>
</template><!-- ─── Option A: global registration (done once in main entry) ─── -->
<!-- main.ts: -->
<!-- import { defineCustomElements } from '@awc-ui/svelte'; -->
<!-- defineCustomElements(window); -->
<md-app-bar></md-app-bar>
<!-- ─── Option B: single import (tree-shake to only md-app-bar) ─── -->
<script lang="ts">
import '@awc-ui/core/components/md-app-bar';
</script>
<md-app-bar></md-app-bar>medium / large).variant="search").| Situation | Use instead |
|---|---|
| Local, page-specific action clusters | md-toolbar |
| Top-level destinations | md-navigation-bar / md-navigation-rail |
| Sibling views inside a screen | md-tabs |
| Search scoped to one view | md-search |
| Where-am-I hierarchy | md-breadcrumbs |
| A row of related actions | md-button-group |
| Need | Setting |
|---|---|
| Standard screen header | variant="small" (default) |
| A prominent page title | variant="medium" or "large" |
| Search as the app’s main job | variant="search" |
| Title centred in the row | title-alignment="center" |
| Recolour on scroll | scrolled — you set it |
| Tighter rows | density="-1…-4" |
small (the default) is a single 64px row. medium and large add an
expanded title block below the action row — M3 allows their headline to wrap to
two lines maximum. small must never wrap.
| Variant | Shape | Height (no subtitle → with) | Use for |
|---|---|---|---|
small | One row, inline title | 64px | Default. Standard screen header |
medium | Row + expanded title | 112px → 136px | A prominent page title |
large | Row + taller expanded title | 120px → 152px | The most prominent page title |
search | Row with an inline search pill | 64px | Search is the app’s primary function |
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar headline="Small" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="medium" headline="Medium headline" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="large" headline="Quarterly performance review" subtitle="Updated 2 minutes ago" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', inlineSize: '100%' }}>
<MdAppBar headline="Small" leadingIcon="arrow_back" leadingIconLabel="Back">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
<MdAppBar variant="medium" headline="Medium headline" leadingIcon="arrow_back" leadingIconLabel="Back">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
<MdAppBar variant="large" headline="Quarterly performance review" subtitle="Updated 2 minutes ago" leadingIcon="arrow_back" leadingIconLabel="Back">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar headline="Small" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="medium" headline="Medium headline" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="large" headline="Quarterly performance review" subtitle="Updated 2 minutes ago" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar headline="Small" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="medium" headline="Medium headline" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="large" headline="Quarterly performance review" subtitle="Updated 2 minutes ago" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar headline="Small" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="medium" headline="Medium headline" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="large" headline="Quarterly performance review" subtitle="Updated 2 minutes ago" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div><!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="medium" headline="Medium, no subtitle" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="medium" headline="Medium, with subtitle" subtitle="24px taller" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', inlineSize: '100%' }}>
<MdAppBar variant="medium" headline="Medium, no subtitle" leadingIcon="arrow_back" leadingIconLabel="Back">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
<MdAppBar variant="medium" headline="Medium, with subtitle" subtitle="24px taller" leadingIcon="arrow_back" leadingIconLabel="Back">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="medium" headline="Medium, no subtitle" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="medium" headline="Medium, with subtitle" subtitle="24px taller" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="medium" headline="Medium, no subtitle" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="medium" headline="Medium, with subtitle" subtitle="24px taller" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="medium" headline="Medium, no subtitle" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="medium" headline="Medium, with subtitle" subtitle="24px taller" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div><!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="large" headline="Large, no subtitle" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="large" headline="Large, with subtitle" subtitle="32px taller" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', inlineSize: '100%' }}>
<MdAppBar variant="large" headline="Large, no subtitle" leadingIcon="arrow_back" leadingIconLabel="Back">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
<MdAppBar variant="large" headline="Large, with subtitle" subtitle="32px taller" leadingIcon="arrow_back" leadingIconLabel="Back">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="large" headline="Large, no subtitle" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="large" headline="Large, with subtitle" subtitle="32px taller" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="large" headline="Large, no subtitle" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="large" headline="Large, with subtitle" subtitle="32px taller" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="large" headline="Large, no subtitle" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar variant="large" headline="Large, with subtitle" subtitle="32px taller" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>title-alignment="center" centres the headline in the action row. It has no
effect on the expanded title block of medium / large.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar headline="Start aligned" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar title-alignment="center" headline="Centre aligned" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', inlineSize: '100%' }}>
<MdAppBar headline="Start aligned" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
<MdAppBar titleAlignment="center" headline="Centre aligned" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar headline="Start aligned" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar title-alignment="center" headline="Centre aligned" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar headline="Start aligned" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar title-alignment="center" headline="Centre aligned" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar headline="Start aligned" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar title-alignment="center" headline="Centre aligned" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>variant="search" swaps the title row for an inline search pill. The M3
composition is a leading affordance, an in-pill trailing action via the
search-trailing slot, and an account affordance in trailing.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="search" search-placeholder="Search mail" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>
<md-app-bar variant="search" title-alignment="center" search-placeholder="Search mail" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdAvatar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', inlineSize: '100%' }}>
<MdAppBar variant="search" searchPlaceholder="Search mail" searchAriaLabel="Search mail" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="search-trailing" icon="mic" variant="standard" size="md" buttonWidth="narrow" aria-label="Voice search"></MdIconButton>
<MdAvatar slot="trailing" name="Ada Lovelace" label="Account"></MdAvatar>
</MdAppBar>
<MdAppBar variant="search" titleAlignment="center" searchPlaceholder="Search mail" searchAriaLabel="Search mail" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="search-trailing" icon="mic" variant="standard" size="md" buttonWidth="narrow" aria-label="Voice search"></MdIconButton>
<MdAvatar slot="trailing" name="Ada Lovelace" label="Account"></MdAvatar>
</MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="search" search-placeholder="Search mail" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>
<md-app-bar variant="search" title-alignment="center" search-placeholder="Search mail" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="search" search-placeholder="Search mail" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>
<md-app-bar variant="search" title-alignment="center" search-placeholder="Search mail" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="search" search-placeholder="Search mail" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>
<md-app-bar variant="search" title-alignment="center" search-placeholder="Search mail" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>
</div>search-value is the field’s value and reflects as you type.
search-disabled greys the pill out and makes it inert: clicks, focus and
Enter / Space are all ignored, no mdSearchActivate fires, and the pill
never takes the focused state.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="search" search-value="quarterly report" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="close" variant="standard" size="md" button-width="narrow" aria-label="Clear search"></md-icon-button>
</md-app-bar>
<md-app-bar variant="search" search-disabled search-placeholder="Search (disabled)" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', inlineSize: '100%' }}>
<MdAppBar variant="search" searchValue="quarterly report" searchAriaLabel="Search mail" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="search-trailing" icon="close" variant="standard" size="md" buttonWidth="narrow" aria-label="Clear search"></MdIconButton>
</MdAppBar>
<MdAppBar variant="search" searchDisabled searchPlaceholder="Search (disabled)" searchAriaLabel="Search mail" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="search-trailing" icon="mic" variant="standard" size="md" buttonWidth="narrow" aria-label="Voice search"></MdIconButton>
</MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="search" search-value="quarterly report" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="close" variant="standard" size="md" button-width="narrow" aria-label="Clear search"></md-icon-button>
</md-app-bar>
<md-app-bar variant="search" search-disabled search-placeholder="Search (disabled)" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="search" search-value="quarterly report" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="close" variant="standard" size="md" button-width="narrow" aria-label="Clear search"></md-icon-button>
</md-app-bar>
<md-app-bar variant="search" search-disabled search-placeholder="Search (disabled)" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="search" search-value="quarterly report" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="close" variant="standard" size="md" button-width="narrow" aria-label="Clear search"></md-icon-button>
</md-app-bar>
<md-app-bar variant="search" search-disabled search-placeholder="Search (disabled)" search-aria-label="Search mail" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
</div>The inline input derives its accessible name from a three-step fallback:
| Order | Source | Notes |
|---|---|---|
| 1 | search-aria-label | The only one you should rely on |
| 2 | search-placeholder | Only when search-aria-label is empty |
| 3 | The literal Search | When both are empty — an untranslated last resort |
Set search-aria-label explicitly. Falling through to the placeholder ties the
accessible name to a hint that may change for visual reasons, and step 3 ships
English into every locale.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="search" search-aria-label="Search all mail" search-placeholder="Type here" leading-icon="menu" leading-icon-label="Open navigation"></md-app-bar>
<md-app-bar variant="search" search-placeholder="" leading-icon="menu" leading-icon-label="Open navigation"></md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', inlineSize: '100%' }}>
<MdAppBar variant="search" searchAriaLabel="Search all mail" searchPlaceholder="Type here" leadingIcon="menu" leadingIconLabel="Open navigation"></MdAppBar>
<MdAppBar variant="search" searchPlaceholder="" leadingIcon="menu" leadingIconLabel="Open navigation"></MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="search" search-aria-label="Search all mail" search-placeholder="Type here" leading-icon="menu" leading-icon-label="Open navigation"></md-app-bar>
<md-app-bar variant="search" search-placeholder="" leading-icon="menu" leading-icon-label="Open navigation"></md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="search" search-aria-label="Search all mail" search-placeholder="Type here" leading-icon="menu" leading-icon-label="Open navigation"></md-app-bar>
<md-app-bar variant="search" search-placeholder="" leading-icon="menu" leading-icon-label="Open navigation"></md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar variant="search" search-aria-label="Search all mail" search-placeholder="Type here" leading-icon="menu" leading-icon-label="Open navigation"></md-app-bar>
<md-app-bar variant="search" search-placeholder="" leading-icon="menu" leading-icon-label="Open navigation"></md-app-bar>
</div>The search slot swaps out the built-in <input> entirely — for a combobox, a
framework-controlled input, or an autocomplete. The pill, its state layer and
the search-trailing bay stay; only the field is yours.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-app-bar variant="search" leading-icon="menu" leading-icon-label="Open navigation">
<input slot="search" aria-label="Custom search field" placeholder="Your own input" style="inline-size:100%;border:0;background:none;outline:none;font:inherit;color:inherit;" />
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdAppBar variant="search" leadingIcon="menu" leadingIconLabel="Open navigation">
<input slot="search" aria-label="Custom search field" placeholder="Your own input" style={{ inlineSize: '100%', border: '0', background: 'none', outline: 'none', font: 'inherit', color: 'inherit' }} />
<MdIconButton slot="search-trailing" icon="mic" variant="standard" size="md" buttonWidth="narrow" aria-label="Voice search"></MdIconButton>
</MdAppBar>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-app-bar variant="search" leading-icon="menu" leading-icon-label="Open navigation">
<input slot="search" aria-label="Custom search field" placeholder="Your own input" style="inline-size:100%;border:0;background:none;outline:none;font:inherit;color:inherit;" />
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-app-bar variant="search" leading-icon="menu" leading-icon-label="Open navigation">
<input slot="search" aria-label="Custom search field" placeholder="Your own input" style="inline-size:100%;border:0;background:none;outline:none;font:inherit;color:inherit;" />
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-app-bar variant="search" leading-icon="menu" leading-icon-label="Open navigation">
<input slot="search" aria-label="Custom search field" placeholder="Your own input" style="inline-size:100%;border:0;background:none;outline:none;font:inherit;color:inherit;" />
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>The search row responds to its own container width, not just the viewport:
| Container width | Behaviour |
|---|---|
| ≥ 600px | Hint inset 24px, every search-trailing icon visible |
| < 600px | Hint inset 16px, second and later search-trailing icons hidden |
| < 400px | Hint inset 12px |
Add data-compact-keep to a search-trailing child to exempt it from the
compact hide. Row gaps and the 48px touch targets never shrink.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:grid;gap:20px;inline-size:100%;">
<div style="inline-size:min(100%,320px);">
<md-app-bar variant="search" search-placeholder="320px — 12px hint" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-icon-button slot="search-trailing" data-compact-keep icon="auto_awesome" variant="standard" size="md" button-width="narrow" aria-label="AI search"></md-icon-button>
<md-icon-button slot="search-trailing" icon="tune" variant="standard" size="md" button-width="narrow" aria-label="Search filters"></md-icon-button>
</md-app-bar>
</div>
<div style="inline-size:min(100%,520px);">
<md-app-bar variant="search" search-placeholder="~510px — 16px hint" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-icon-button slot="search-trailing" data-compact-keep icon="auto_awesome" variant="standard" size="md" button-width="narrow" aria-label="AI search"></md-icon-button>
<md-icon-button slot="search-trailing" icon="tune" variant="standard" size="md" button-width="narrow" aria-label="Search filters"></md-icon-button>
</md-app-bar>
</div>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'grid', gap: '20px', inlineSize: '100%' }}>
<div style={{ inlineSize: 'min(100%,320px)' }}>
<MdAppBar variant="search" searchPlaceholder="320px — 12px hint" searchAriaLabel="Search" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="search-trailing" icon="mic" variant="standard" size="md" buttonWidth="narrow" aria-label="Voice search"></MdIconButton>
<MdIconButton slot="search-trailing" data-compact-keep icon="auto_awesome" variant="standard" size="md" buttonWidth="narrow" aria-label="AI search"></MdIconButton>
<MdIconButton slot="search-trailing" icon="tune" variant="standard" size="md" buttonWidth="narrow" aria-label="Search filters"></MdIconButton>
</MdAppBar>
</div>
<div style={{ inlineSize: 'min(100%,520px)' }}>
<MdAppBar variant="search" searchPlaceholder="~510px — 16px hint" searchAriaLabel="Search" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="search-trailing" icon="mic" variant="standard" size="md" buttonWidth="narrow" aria-label="Voice search"></MdIconButton>
<MdIconButton slot="search-trailing" data-compact-keep icon="auto_awesome" variant="standard" size="md" buttonWidth="narrow" aria-label="AI search"></MdIconButton>
<MdIconButton slot="search-trailing" icon="tune" variant="standard" size="md" buttonWidth="narrow" aria-label="Search filters"></MdIconButton>
</MdAppBar>
</div>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:grid;gap:20px;inline-size:100%;">
<div style="inline-size:min(100%,320px);">
<md-app-bar variant="search" search-placeholder="320px — 12px hint" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-icon-button slot="search-trailing" data-compact-keep icon="auto_awesome" variant="standard" size="md" button-width="narrow" aria-label="AI search"></md-icon-button>
<md-icon-button slot="search-trailing" icon="tune" variant="standard" size="md" button-width="narrow" aria-label="Search filters"></md-icon-button>
</md-app-bar>
</div>
<div style="inline-size:min(100%,520px);">
<md-app-bar variant="search" search-placeholder="~510px — 16px hint" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-icon-button slot="search-trailing" data-compact-keep icon="auto_awesome" variant="standard" size="md" button-width="narrow" aria-label="AI search"></md-icon-button>
<md-icon-button slot="search-trailing" icon="tune" variant="standard" size="md" button-width="narrow" aria-label="Search filters"></md-icon-button>
</md-app-bar>
</div>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:grid;gap:20px;inline-size:100%;">
<div style="inline-size:min(100%,320px);">
<md-app-bar variant="search" search-placeholder="320px — 12px hint" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-icon-button slot="search-trailing" data-compact-keep icon="auto_awesome" variant="standard" size="md" button-width="narrow" aria-label="AI search"></md-icon-button>
<md-icon-button slot="search-trailing" icon="tune" variant="standard" size="md" button-width="narrow" aria-label="Search filters"></md-icon-button>
</md-app-bar>
</div>
<div style="inline-size:min(100%,520px);">
<md-app-bar variant="search" search-placeholder="~510px — 16px hint" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-icon-button slot="search-trailing" data-compact-keep icon="auto_awesome" variant="standard" size="md" button-width="narrow" aria-label="AI search"></md-icon-button>
<md-icon-button slot="search-trailing" icon="tune" variant="standard" size="md" button-width="narrow" aria-label="Search filters"></md-icon-button>
</md-app-bar>
</div>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:grid;gap:20px;inline-size:100%;">
<div style="inline-size:min(100%,320px);">
<md-app-bar variant="search" search-placeholder="320px — 12px hint" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-icon-button slot="search-trailing" data-compact-keep icon="auto_awesome" variant="standard" size="md" button-width="narrow" aria-label="AI search"></md-icon-button>
<md-icon-button slot="search-trailing" icon="tune" variant="standard" size="md" button-width="narrow" aria-label="Search filters"></md-icon-button>
</md-app-bar>
</div>
<div style="inline-size:min(100%,520px);">
<md-app-bar variant="search" search-placeholder="~510px — 16px hint" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-icon-button slot="search-trailing" data-compact-keep icon="auto_awesome" variant="standard" size="md" button-width="narrow" aria-label="AI search"></md-icon-button>
<md-icon-button slot="search-trailing" icon="tune" variant="standard" size="md" button-width="narrow" aria-label="Search filters"></md-icon-button>
</md-app-bar>
</div>
</div><!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar headline="At rest" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar scrolled headline="Scrolled" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', inlineSize: '100%' }}>
<MdAppBar headline="At rest" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
<MdAppBar scrolled headline="Scrolled" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar headline="At rest" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar scrolled headline="Scrolled" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar headline="At rest" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar scrolled headline="Scrolled" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display: flex; flex-direction: column; gap: 24px; inline-size: 100%;">
<md-app-bar headline="At rest" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar scrolled headline="Scrolled" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>const bar = document.getElementById('bar');addEventListener('scroll', () => { bar.scrolled = window.scrollY > 0; }, { passive: true });On a search bar the pill recolours too — surface-container-highest at rest,
surface-container when scrolled — so the field stays distinguishable from the
row behind it in both states.
| Slot | Holds | Notes |
|---|---|---|
leading | The navigation affordance | Replaces the leading-icon prop entirely |
headline | Custom title content | Used only when the headline prop is empty |
subtitle | Custom subtitle content | Used only when the subtitle prop is empty |
trailing | Action icons, avatar | Max 3 — extras are hidden |
search | A replacement search field | search variant only |
search-trailing | In-pill icons (mic, clear) | data-compact-keep survives the narrow-container hide |
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-app-bar leading-icon="menu" leading-icon-label="Open navigation">
<span slot="headline">Inbox</span>
<span slot="subtitle">12 unread</span>
<md-icon-button slot="trailing" icon="filter_list" variant="standard" size="md" button-width="narrow" aria-label="Filter"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdAvatar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdAppBar leadingIcon="menu" leadingIconLabel="Open navigation">
<span slot="headline">Inbox</span>
<span slot="subtitle">12 unread</span>
<MdIconButton slot="trailing" icon="filter_list" variant="standard" size="md" buttonWidth="narrow" aria-label="Filter"></MdIconButton>
<MdAvatar slot="trailing" name="Ada Lovelace" label="Account"></MdAvatar>
</MdAppBar>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-app-bar leading-icon="menu" leading-icon-label="Open navigation">
<span slot="headline">Inbox</span>
<span slot="subtitle">12 unread</span>
<md-icon-button slot="trailing" icon="filter_list" variant="standard" size="md" button-width="narrow" aria-label="Filter"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-app-bar leading-icon="menu" leading-icon-label="Open navigation">
<span slot="headline">Inbox</span>
<span slot="subtitle">12 unread</span>
<md-icon-button slot="trailing" icon="filter_list" variant="standard" size="md" button-width="narrow" aria-label="Filter"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-app-bar leading-icon="menu" leading-icon-label="Open navigation">
<span slot="headline">Inbox</span>
<span slot="subtitle">12 unread</span>
<md-icon-button slot="trailing" icon="filter_list" variant="standard" size="md" button-width="narrow" aria-label="Filter"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>Flexible bars project slotted content into the expanded block the same way:
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-app-bar variant="medium" leading-icon="arrow_back" leading-icon-label="Back">
<span slot="headline">Slotted headline</span>
<span slot="subtitle">Slotted subtitle</span>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdAppBar variant="medium" leadingIcon="arrow_back" leadingIconLabel="Back">
<span slot="headline">Slotted headline</span>
<span slot="subtitle">Slotted subtitle</span>
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-app-bar variant="medium" leading-icon="arrow_back" leading-icon-label="Back">
<span slot="headline">Slotted headline</span>
<span slot="subtitle">Slotted subtitle</span>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-app-bar variant="medium" leading-icon="arrow_back" leading-icon-label="Back">
<span slot="headline">Slotted headline</span>
<span slot="subtitle">Slotted subtitle</span>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-app-bar variant="medium" leading-icon="arrow_back" leading-icon-label="Back">
<span slot="headline">Slotted headline</span>
<span slot="subtitle">Slotted subtitle</span>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>The trailing slot renders at most 3 children. Extras are hidden and a
warning is logged in development. Removing a visible one re-reveals a hidden one
— the bar re-syncs on slotchange.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-app-bar headline="Five requested, three rendered" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="filter_list" variant="standard" size="md" button-width="narrow" aria-label="Filter"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
<md-icon-button slot="trailing" icon="delete" variant="standard" size="md" button-width="narrow" aria-label="Delete"></md-icon-button>
<md-icon-button slot="trailing" icon="archive" variant="standard" size="md" button-width="narrow" aria-label="Archive"></md-icon-button>
</md-app-bar>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdAppBar headline="Five requested, three rendered" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="trailing" icon="search" variant="standard" size="md" buttonWidth="narrow" aria-label="Search"></MdIconButton>
<MdIconButton slot="trailing" icon="filter_list" variant="standard" size="md" buttonWidth="narrow" aria-label="Filter"></MdIconButton>
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
<MdIconButton slot="trailing" icon="delete" variant="standard" size="md" buttonWidth="narrow" aria-label="Delete"></MdIconButton>
<MdIconButton slot="trailing" icon="archive" variant="standard" size="md" buttonWidth="narrow" aria-label="Archive"></MdIconButton>
</MdAppBar>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-app-bar headline="Five requested, three rendered" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="filter_list" variant="standard" size="md" button-width="narrow" aria-label="Filter"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
<md-icon-button slot="trailing" icon="delete" variant="standard" size="md" button-width="narrow" aria-label="Delete"></md-icon-button>
<md-icon-button slot="trailing" icon="archive" variant="standard" size="md" button-width="narrow" aria-label="Archive"></md-icon-button>
</md-app-bar><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-app-bar headline="Five requested, three rendered" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="filter_list" variant="standard" size="md" button-width="narrow" aria-label="Filter"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
<md-icon-button slot="trailing" icon="delete" variant="standard" size="md" button-width="narrow" aria-label="Delete"></md-icon-button>
<md-icon-button slot="trailing" icon="archive" variant="standard" size="md" button-width="narrow" aria-label="Archive"></md-icon-button>
</md-app-bar>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-app-bar headline="Five requested, three rendered" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="filter_list" variant="standard" size="md" button-width="narrow" aria-label="Filter"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
<md-icon-button slot="trailing" icon="delete" variant="standard" size="md" button-width="narrow" aria-label="Delete"></md-icon-button>
<md-icon-button slot="trailing" icon="archive" variant="standard" size="md" button-width="narrow" aria-label="Archive"></md-icon-button>
</md-app-bar>This is a guardrail, not a bug: M3 caps an app bar at three trailing actions.
Past three, move the rest behind an overflow md-menu.
Slot md-icon-button (or a raw SVG) into leading, trailing or
search-trailing when the Material Symbols name isn’t enough — a brand glyph,
an icon font, a logo. Host ::slotted rules map the icon button onto the bar’s
48px touch target for you.
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-app-bar headline="Custom glyphs">
<md-icon-button slot="leading" variant="standard" size="md" button-width="narrow" aria-label="Home">
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><path d="M12 3l9 8h-3v10h-5v-6h-2v6H6V11H3z"/></svg>
</md-icon-button>
<md-icon-button slot="trailing" variant="standard" size="md" button-width="narrow" aria-label="Starred">
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01z"/></svg>
</md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>import { MdAppBar, MdAvatar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdAppBar headline="Custom glyphs">
<MdIconButton slot="leading" variant="standard" size="md" buttonWidth="narrow" aria-label="Home">
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><path d="M12 3l9 8h-3v10h-5v-6h-2v6H6V11H3z"/></svg>
</MdIconButton>
<MdIconButton slot="trailing" variant="standard" size="md" buttonWidth="narrow" aria-label="Starred">
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01z"/></svg>
</MdIconButton>
<MdAvatar slot="trailing" name="Ada Lovelace" label="Account"></MdAvatar>
</MdAppBar>
</>
);
}// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-app-bar headline="Custom glyphs">
<md-icon-button slot="leading" variant="standard" size="md" button-width="narrow" aria-label="Home">
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><path d="M12 3l9 8h-3v10h-5v-6h-2v6H6V11H3z"/></svg>
</md-icon-button>
<md-icon-button slot="trailing" variant="standard" size="md" button-width="narrow" aria-label="Starred">
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01z"/></svg>
</md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar><script setup>
import '@awc-ui/core/define';
</script>
<template>
<md-app-bar headline="Custom glyphs">
<md-icon-button slot="leading" variant="standard" size="md" button-width="narrow" aria-label="Home">
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><path d="M12 3l9 8h-3v10h-5v-6h-2v6H6V11H3z"/></svg>
</md-icon-button>
<md-icon-button slot="trailing" variant="standard" size="md" button-width="narrow" aria-label="Starred">
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01z"/></svg>
</md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>
</template><script>
import '@awc-ui/core/define';
</script>
<md-app-bar headline="Custom glyphs">
<md-icon-button slot="leading" variant="standard" size="md" button-width="narrow" aria-label="Home">
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><path d="M12 3l9 8h-3v10h-5v-6h-2v6H6V11H3z"/></svg>
</md-icon-button>
<md-icon-button slot="trailing" variant="standard" size="md" button-width="narrow" aria-label="Starred">
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01z"/></svg>
</md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>| Event | Cancelable | Detail | Fires |
|---|---|---|---|
mdLeadingClick | no | MouseEvent | The leading affordance is activated |
mdSearchInput | no | { value: string } | Every keystroke in the search pill |
mdSearchActivate | no | { value: string } | The search pill is focused, or Enter/Space is pressed in it |
| You want to… | Listen to |
|---|---|
| Open a navigation drawer or go back | mdLeadingClick |
| Update suggestions as the user types | mdSearchInput |
| Run the query | mdSearchActivate |
React to a slotted search field | Your own element’s events — not these |
The bar reports the leading press; it does not open a drawer or navigate. That wiring is yours — the affordance below is a real button that emits the event and does nothing else.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-app-bar headline="Press the menu icon" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdAppBar headline="Press the menu icon" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-app-bar headline="Press the menu icon" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-app-bar headline="Press the menu icon" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-app-bar headline="Press the menu icon" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar><md-app-bar id="bar" variant="search" headline="Inbox"
leading-icon="menu" leading-icon-label="Open navigation"
search-placeholder="Search mail" search-aria-label="Search mail">
</md-app-bar>
<script type="module">
const bar = document.getElementById('bar');
bar.addEventListener('mdLeadingClick', () => rail.toggle());
bar.addEventListener('mdSearchInput', (e) => suggest(e.detail.value));
bar.addEventListener('mdSearchActivate', (e) => runSearch(e.detail.value));
addEventListener('scroll', () => { bar.scrolled = window.scrollY > 0; }, { passive: true });
</script>import { MdAppBar } from '@awc-ui/react';
import { useEffect, useState } from 'react';
export function Header() {
const [scrolled, setScrolled] = useState(false);
useEffect(() => {
const onScroll = () => setScrolled(window.scrollY > 0);
addEventListener('scroll', onScroll, { passive: true });
return () => removeEventListener('scroll', onScroll);
}, []);
return (
<MdAppBar
variant="search"
headline="Inbox"
leadingIcon="menu"
leadingIconLabel="Open navigation"
searchPlaceholder="Search mail"
searchAriaLabel="Search mail"
scrolled={scrolled}
onMdLeadingClick={() => toggleRail()}
onMdSearchInput={(e) => suggest(e.detail.value)}
onMdSearchActivate={(e) => runSearch(e.detail.value)}
/>
);
}import { Component, HostListener } from '@angular/core';
@Component({
selector: 'app-header',
template: `
<md-app-bar
variant="search"
headline="Inbox"
leading-icon="menu"
leading-icon-label="Open navigation"
search-placeholder="Search mail"
search-aria-label="Search mail"
[scrolled]="scrolled"
(mdLeadingClick)="onLeading()"
(mdSearchInput)="onInput($event)"
(mdSearchActivate)="onActivate($event)"
></md-app-bar>
`,
})
export class HeaderComponent {
scrolled = false;
@HostListener('window:scroll')
onScroll() { this.scrolled = window.scrollY > 0; }
onLeading() { this.toggleRail(); }
onInput(e: CustomEvent) { this.suggest(e.detail.value); }
onActivate(e: CustomEvent) { this.runSearch(e.detail.value); }
}<script setup lang="ts">
import { onMounted, onUnmounted, ref } from 'vue';
const scrolled = ref(false);
const onScroll = () => (scrolled.value = window.scrollY > 0);
onMounted(() => addEventListener('scroll', onScroll, { passive: true }));
onUnmounted(() => removeEventListener('scroll', onScroll));
</script>
<template>
<md-app-bar
variant="search"
headline="Inbox"
leading-icon="menu"
leading-icon-label="Open navigation"
search-placeholder="Search mail"
search-aria-label="Search mail"
:scrolled="scrolled"
@mdLeadingClick="toggleRail"
@mdSearchInput="(e) => suggest(e.detail.value)"
@mdSearchActivate="(e) => runSearch(e.detail.value)"
/>
</template><script lang="ts">
let scrolled = false;
</script>
<svelte:window on:scroll={() => (scrolled = window.scrollY > 0)} />
<md-app-bar
variant="search"
headline="Inbox"
leading-icon="menu"
leading-icon-label="Open navigation"
search-placeholder="Search mail"
search-aria-label="Search mail"
{scrolled}
on:mdLeadingClick={toggleRail}
on:mdSearchInput={(e) => suggest(e.detail.value)}
on:mdSearchActivate={(e) => runSearch(e.detail.value)}
/>| Property | Attribute | Type | Default | Reflects |
|---|---|---|---|---|
variant | variant | 'small' | 'medium' | 'large' | 'search' | 'small' | Yes |
titleAlignment | title-alignment | 'start' | 'center' | 'start' | Yes |
searchPlaceholder | search-placeholder | string | 'Search' | — |
searchValue | search-value | string | '' | Yes |
searchAriaLabel | search-aria-label | string | '' | — |
searchDisabled | search-disabled | boolean | false | Yes |
headline | headline | string | '' | Yes |
subtitle | subtitle | string | '' | Yes |
scrolled | scrolled | boolean | false | Yes |
density | density | 0 | -1 | -2 | -3 | -4 | 0 | Yes |
leadingIcon | leading-icon | string | '' | — |
leadingIconLabel | leading-icon-label | string | '' | — |
| Slot | Description |
|---|---|
headline | Custom headline content (overrides headline prop) |
subtitle | Custom subtitle content (overrides subtitle prop) |
search | Replace built-in search input (search configuration) |
search-trailing | In-pill trailing icons (e.g. mic); data-compact-keep opts out of compact hide |
leading | Leading navigation icon(s) — slot takes priority over leading-icon prop |
trailing | Trailing action icons outside search field (max 3; excess hidden + warn) |
Override on the host element for per-instance theming:
| Property | Description |
|---|---|
--md-app-bar-container-color | Top bar background (flat → surface) |
--md-app-bar-container-color-scrolled | Top bar background when scrolled (surface-container) |
--md-app-bar-container-shape | Top bar container corner radius (none) |
--md-app-bar-headline-color | Headline / title colour (on-surface) |
--md-app-bar-subtitle-color | Subtitle colour (on-surface-variant) |
--md-app-bar-leading-icon-color | Leading icon colour (on-surface) |
--md-app-bar-trailing-icon-color | Trailing icon colour (on-surface-variant) |
--md-app-bar-container-elevation | Container shadow (elevation-0 default) |
--md-app-bar-row-height | Action row height (64px) |
--md-app-bar-padding-inline-start | Action row inline-start padding (4px) |
--md-app-bar-padding-inline-end | Action row inline-end padding (4px) |
--md-app-bar-row-padding-inline | Deprecated alias for both paddings (4px) |
--md-app-bar-row-padding-block-start | Action row block-start padding (20px large expanded) |
--md-app-bar-trailing-gap | Gap between trailing action icons (2px) |
--md-app-bar-trailing-icon-touch-size | Trailing icon touch target (48px; matches leading) |
--md-app-bar-icon-gap | Gap between icons and row content (0) |
--md-app-bar-icon-size | Icon glyph size in action row (24px, |
--md-app-bar-icon-button-size | — |
--md-app-bar-avatar-size | — |
--md-app-bar-expanded-padding-inline | — |
--md-app-bar-expanded-padding-block-end | — |
--md-app-bar-search-container-height | — |
--md-app-bar-search-padding-inline-start | — |
--md-app-bar-search-padding-inline-end | — |
--md-app-bar-search-row-gap | — |
--md-app-bar-search-trailing-gap | — |
--md-app-bar-search-field-trailing-gap | — |
--md-app-bar-trailing-touch-size | — |
--md-app-bar-medium-height | — |
--md-app-bar-medium-height-with-subtitle | — |
--md-app-bar-large-height | — |
--md-app-bar-large-height-with-subtitle | — |
Style internal elements through shadow DOM with ::part():
| Part | Description |
|---|---|
leading-icon | Prop-based leading md-icon-button |
title | Inline title (small variant) |
subtitle | Subtitle text (inline on small, expanded on medium/large) |
expanded-headline | Expanded headline text (headline-medium) |
search-host | Flex region between leading/trailing (search variant) |
search | Search pill container (search variant) |
search-state-layer | Hover / focus / press overlay on search field |
search-field | Text/input flex region inside pill (hint padding) |
search-content | Wrapper around slotted `search` content |
search-input | Inline search `<input>` (search variant) |
search-trailing | Trailing slot inside the search field |
row | Top action row (leading | title | trailing) |
leading | Leading slot wrapper |
trailing | Trailing slot wrapper (outside search field) |
expanded | Expanded title block wrapper (medium / large) |
icon | Leading icon glyph (exported from leading-icon) |
state-layer | Leading icon state layer (exported from leading-icon) |
leading-icon-label — it is an
icon-only control and needs an accessible name.md-icon-button needs its own aria-label.search-aria-label; the
fallback chain ends at an untranslated Search.medium / large the collapsed inline title is aria-hidden — the
expanded headline is the one announced, so the title is never read twice.| Key | Action |
|---|---|
Tab | Leading affordance → search pill (search variant) → each trailing action |
Enter / Space | Activates the focused affordance; in the search pill, fires mdSearchActivate |
| Typing in the pill | Fires mdSearchInput per keystroke |
The search pill shows a focus ring only under keyboard modality, so a pointer click does not leave a ring behind.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-app-bar headline="Company mail" subtitle="Accessible header" leading-icon="menu" leading-icon-label="Open navigation menu">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search mail"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account for Ada Lovelace"></md-avatar>
</md-app-bar>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdAvatar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdAppBar headline="Company mail" subtitle="Accessible header" leadingIcon="menu" leadingIconLabel="Open navigation menu">
<MdIconButton slot="trailing" icon="search" variant="standard" size="md" buttonWidth="narrow" aria-label="Search mail"></MdIconButton>
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
<MdAvatar slot="trailing" name="Ada Lovelace" label="Account for Ada Lovelace"></MdAvatar>
</MdAppBar>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-app-bar headline="Company mail" subtitle="Accessible header" leading-icon="menu" leading-icon-label="Open navigation menu">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search mail"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account for Ada Lovelace"></md-avatar>
</md-app-bar><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-app-bar headline="Company mail" subtitle="Accessible header" leading-icon="menu" leading-icon-label="Open navigation menu">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search mail"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account for Ada Lovelace"></md-avatar>
</md-app-bar>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-app-bar headline="Company mail" subtitle="Accessible header" leading-icon="menu" leading-icon-label="Open navigation menu">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search mail"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account for Ada Lovelace"></md-avatar>
</md-app-bar>RTL — leading/trailing sides, title alignment and padding mirror under
dir="rtl"; every box metric is a logical property. See RTL.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ltr</span>
<div dir="ltr">
<md-app-bar headline="Inbox" subtitle="12 unread" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">rtl</span>
<div dir="rtl">
<md-app-bar headline="البريد الوارد" subtitle="12 غير مقروءة" leading-icon="arrow_back" leading-icon-label="رجوع">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="خيارات أخرى"></md-icon-button>
</md-app-bar>
</div>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'grid', gridTemplateColumns: 'auto 1fr', gap: '20px 16px', alignItems: 'center' }}>
<span style={{ inlineSize: '2.5rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>ltr</span>
<div dir="ltr">
<MdAppBar headline="Inbox" subtitle="12 unread" leadingIcon="arrow_back" leadingIconLabel="Back">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</div>
<span style={{ inlineSize: '2.5rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>rtl</span>
<div dir="rtl">
<MdAppBar headline="البريد الوارد" subtitle="12 غير مقروءة" leadingIcon="arrow_back" leadingIconLabel="رجوع">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="خيارات أخرى"></MdIconButton>
</MdAppBar>
</div>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ltr</span>
<div dir="ltr">
<md-app-bar headline="Inbox" subtitle="12 unread" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">rtl</span>
<div dir="rtl">
<md-app-bar headline="البريد الوارد" subtitle="12 غير مقروءة" leading-icon="arrow_back" leading-icon-label="رجوع">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="خيارات أخرى"></md-icon-button>
</md-app-bar>
</div>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ltr</span>
<div dir="ltr">
<md-app-bar headline="Inbox" subtitle="12 unread" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">rtl</span>
<div dir="rtl">
<md-app-bar headline="البريد الوارد" subtitle="12 غير مقروءة" leading-icon="arrow_back" leading-icon-label="رجوع">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="خيارات أخرى"></md-icon-button>
</md-app-bar>
</div>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ltr</span>
<div dir="ltr">
<md-app-bar headline="Inbox" subtitle="12 unread" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>
<span style="inline-size:2.5rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">rtl</span>
<div dir="rtl">
<md-app-bar headline="البريد الوارد" subtitle="12 غير مقروءة" leading-icon="arrow_back" leading-icon-label="رجوع">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="خيارات أخرى"></md-icon-button>
</md-app-bar>
</div>
</div>density="-1…-4" is a local override of the inherited data-density. It tapers
the row height (64px → 48px floor), the icon touch targets, the glyph size, the
avatar, the title type scale and the expanded heights together.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;inline-size:100%;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">0</span>
<md-app-bar density="0" headline="Density 0" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-1</span>
<md-app-bar density="-1" headline="Density -1" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-2</span>
<md-app-bar density="-2" headline="Density -2" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-3</span>
<md-app-bar density="-3" headline="Density -3" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-4</span>
<md-app-bar density="-4" headline="Density -4" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'grid', gridTemplateColumns: 'auto 1fr', gap: '16px', alignItems: 'center', inlineSize: '100%' }}>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>0</span>
<MdAppBar density="0" headline="Density 0" leadingIcon="menu" leadingIconLabel="Open navigation"><MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton></MdAppBar>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>-1</span>
<MdAppBar density="-1" headline="Density -1" leadingIcon="menu" leadingIconLabel="Open navigation"><MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton></MdAppBar>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>-2</span>
<MdAppBar density="-2" headline="Density -2" leadingIcon="menu" leadingIconLabel="Open navigation"><MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton></MdAppBar>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>-3</span>
<MdAppBar density="-3" headline="Density -3" leadingIcon="menu" leadingIconLabel="Open navigation"><MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton></MdAppBar>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>-4</span>
<MdAppBar density="-4" headline="Density -4" leadingIcon="menu" leadingIconLabel="Open navigation"><MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton></MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;inline-size:100%;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">0</span>
<md-app-bar density="0" headline="Density 0" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-1</span>
<md-app-bar density="-1" headline="Density -1" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-2</span>
<md-app-bar density="-2" headline="Density -2" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-3</span>
<md-app-bar density="-3" headline="Density -3" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-4</span>
<md-app-bar density="-4" headline="Density -4" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;inline-size:100%;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">0</span>
<md-app-bar density="0" headline="Density 0" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-1</span>
<md-app-bar density="-1" headline="Density -1" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-2</span>
<md-app-bar density="-2" headline="Density -2" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-3</span>
<md-app-bar density="-3" headline="Density -3" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-4</span>
<md-app-bar density="-4" headline="Density -4" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;inline-size:100%;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">0</span>
<md-app-bar density="0" headline="Density 0" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-1</span>
<md-app-bar density="-1" headline="Density -1" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-2</span>
<md-app-bar density="-2" headline="Density -2" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-3</span>
<md-app-bar density="-3" headline="Density -3" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">-4</span>
<md-app-bar density="-4" headline="Density -4" leading-icon="menu" leading-icon-label="Open navigation"><md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button></md-app-bar>
</div>Translate headline, subtitle, leading-icon-label, search-placeholder,
search-aria-label and every trailing control’s label. Long translated titles
are exactly the case medium / large exists for — small never wraps, so a
long string truncates there.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">de</span>
<md-app-bar variant="medium" headline="Posteingang" subtitle="12 ungelesene Nachrichten" leading-icon="menu" leading-icon-label="Navigation öffnen">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="Weitere Optionen"></md-icon-button>
</md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ar</span>
<div dir="rtl">
<md-app-bar variant="medium" headline="البريد الوارد" subtitle="12 رسالة غير مقروءة" leading-icon="menu" leading-icon-label="فتح التنقل">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="خيارات أخرى"></md-icon-button>
</md-app-bar>
</div>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'grid', gridTemplateColumns: 'auto 1fr', gap: '20px 16px', alignItems: 'center' }}>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>de</span>
<MdAppBar variant="medium" headline="Posteingang" subtitle="12 ungelesene Nachrichten" leadingIcon="menu" leadingIconLabel="Navigation öffnen">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="Weitere Optionen"></MdIconButton>
</MdAppBar>
<span style={{ inlineSize: '2rem', opacity: '.65', fontSize: '.75rem', fontFamily: 'ui-monospace,monospace' }}>ar</span>
<div dir="rtl">
<MdAppBar variant="medium" headline="البريد الوارد" subtitle="12 رسالة غير مقروءة" leadingIcon="menu" leadingIconLabel="فتح التنقل">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="خيارات أخرى"></MdIconButton>
</MdAppBar>
</div>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">de</span>
<md-app-bar variant="medium" headline="Posteingang" subtitle="12 ungelesene Nachrichten" leading-icon="menu" leading-icon-label="Navigation öffnen">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="Weitere Optionen"></md-icon-button>
</md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ar</span>
<div dir="rtl">
<md-app-bar variant="medium" headline="البريد الوارد" subtitle="12 رسالة غير مقروءة" leading-icon="menu" leading-icon-label="فتح التنقل">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="خيارات أخرى"></md-icon-button>
</md-app-bar>
</div>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">de</span>
<md-app-bar variant="medium" headline="Posteingang" subtitle="12 ungelesene Nachrichten" leading-icon="menu" leading-icon-label="Navigation öffnen">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="Weitere Optionen"></md-icon-button>
</md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ar</span>
<div dir="rtl">
<md-app-bar variant="medium" headline="البريد الوارد" subtitle="12 رسالة غير مقروءة" leading-icon="menu" leading-icon-label="فتح التنقل">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="خيارات أخرى"></md-icon-button>
</md-app-bar>
</div>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:grid;grid-template-columns:auto 1fr;gap:20px 16px;align-items:center;">
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">de</span>
<md-app-bar variant="medium" headline="Posteingang" subtitle="12 ungelesene Nachrichten" leading-icon="menu" leading-icon-label="Navigation öffnen">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="Weitere Optionen"></md-icon-button>
</md-app-bar>
<span style="inline-size:2rem;opacity:.65;font-size:.75rem;font-family:ui-monospace,monospace;">ar</span>
<div dir="rtl">
<md-app-bar variant="medium" headline="البريد الوارد" subtitle="12 رسالة غير مقروءة" leading-icon="menu" leading-icon-label="فتح التنقل">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="خيارات أخرى"></md-icon-button>
</md-app-bar>
</div>
</div>| Custom property | Purpose | Default |
|---|---|---|
--md-app-bar-container-color | Container background at rest | surface |
--md-app-bar-container-color-scrolled | Container background when scrolled | surface-container |
--md-app-bar-container-shape | Corner radius | shape-corner-none — M3 wants straight corners |
--md-app-bar-container-elevation | Container shadow | elevation-0 |
--md-app-bar-headline-color / -subtitle-color | Title text | on-surface / on-surface-variant |
--md-app-bar-leading-icon-color / -trailing-icon-color | Icons | on-surface / on-surface-variant |
--md-app-bar-row-height | Action row height | 64px, density-derived |
--md-app-bar-padding-inline-start / -end | Row padding | 4px |
--md-app-bar-icon-size / -icon-button-size | Glyph / touch target | 24px / 48px, density-derived |
--md-app-bar-trailing-gap / -trailing-touch-size | Trailing cluster | 2px / 48px |
--md-app-bar-avatar-size | Avatar in trailing slots | 32px |
--md-app-bar-medium-height / -medium-height-with-subtitle | Medium expanded | 112px / 136px |
--md-app-bar-large-height / -large-height-with-subtitle | Large expanded | 120px / 152px |
--md-app-bar-search-container-color / -scrolled | Search pill fill | surface-container-highest / surface-container |
--md-app-bar-search-container-height / -shape | Search pill box | 56px, density-derived |
--md-app-bar-search-padding-inline-start / -end | Hint inset / in-pill inset | 24px / 8px |
--md-app-bar-search-placeholder-color / -input-color | Hint / typed text | on-surface-variant / on-surface |
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-app-bar
headline="Themed"
leading-icon="menu"
leading-icon-label="Open navigation"
style="--md-app-bar-container-color: var(--md-sys-color-primary-container); --md-app-bar-headline-color: var(--md-sys-color-on-primary-container); --md-app-bar-leading-icon-color: var(--md-sys-color-on-primary-container); --md-app-bar-trailing-icon-color: var(--md-sys-color-on-primary-container);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdAppBar
headline="Themed"
leadingIcon="menu"
leadingIconLabel="Open navigation"
style={{ '--md-app-bar-container-color': 'var(--md-sys-color-primary-container)', '--md-app-bar-headline-color': 'var(--md-sys-color-on-primary-container)', '--md-app-bar-leading-icon-color': 'var(--md-sys-color-on-primary-container)', '--md-app-bar-trailing-icon-color': 'var(--md-sys-color-on-primary-container)' }}>
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-app-bar
headline="Themed"
leading-icon="menu"
leading-icon-label="Open navigation"
style="--md-app-bar-container-color: var(--md-sys-color-primary-container); --md-app-bar-headline-color: var(--md-sys-color-on-primary-container); --md-app-bar-leading-icon-color: var(--md-sys-color-on-primary-container); --md-app-bar-trailing-icon-color: var(--md-sys-color-on-primary-container);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-app-bar
headline="Themed"
leading-icon="menu"
leading-icon-label="Open navigation"
style="--md-app-bar-container-color: var(--md-sys-color-primary-container); --md-app-bar-headline-color: var(--md-sys-color-on-primary-container); --md-app-bar-leading-icon-color: var(--md-sys-color-on-primary-container); --md-app-bar-trailing-icon-color: var(--md-sys-color-on-primary-container);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-app-bar
headline="Themed"
leading-icon="menu"
leading-icon-label="Open navigation"
style="--md-app-bar-container-color: var(--md-sys-color-primary-container); --md-app-bar-headline-color: var(--md-sys-color-on-primary-container); --md-app-bar-leading-icon-color: var(--md-sys-color-on-primary-container); --md-app-bar-trailing-icon-color: var(--md-sys-color-on-primary-container);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>The two container colours are independent, so a bar can be flat at rest and tonal once scrolled — or branded in both states. Shape and elevation are yours too, though M3 wants a square, flat header.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar headline="Tonal, both states" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-container-color: var(--md-sys-color-secondary-container); --md-app-bar-headline-color: var(--md-sys-color-on-secondary-container); --md-app-bar-leading-icon-color: var(--md-sys-color-on-secondary-container); --md-app-bar-trailing-icon-color: var(--md-sys-color-on-secondary-container);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar scrolled headline="Scrolled recolour" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-container-color-scrolled: var(--md-sys-color-tertiary-container); --md-app-bar-headline-color: var(--md-sys-color-on-tertiary-container); --md-app-bar-leading-icon-color: var(--md-sys-color-on-tertiary-container); --md-app-bar-trailing-icon-color: var(--md-sys-color-on-tertiary-container);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar headline="Rounded and raised" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-container-shape: 20px; --md-app-bar-container-elevation: var(--md-sys-elevation-level3); --md-app-bar-container-color: var(--md-sys-color-surface-container-high);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', inlineSize: '100%' }}>
<MdAppBar headline="Tonal, both states" leadingIcon="menu" leadingIconLabel="Open navigation"
style={{ '--md-app-bar-container-color': 'var(--md-sys-color-secondary-container)', '--md-app-bar-headline-color': 'var(--md-sys-color-on-secondary-container)', '--md-app-bar-leading-icon-color': 'var(--md-sys-color-on-secondary-container)', '--md-app-bar-trailing-icon-color': 'var(--md-sys-color-on-secondary-container)' }}>
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
<MdAppBar scrolled headline="Scrolled recolour" leadingIcon="menu" leadingIconLabel="Open navigation"
style={{ '--md-app-bar-container-color-scrolled': 'var(--md-sys-color-tertiary-container)', '--md-app-bar-headline-color': 'var(--md-sys-color-on-tertiary-container)', '--md-app-bar-leading-icon-color': 'var(--md-sys-color-on-tertiary-container)', '--md-app-bar-trailing-icon-color': 'var(--md-sys-color-on-tertiary-container)' }}>
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
<MdAppBar headline="Rounded and raised" leadingIcon="menu" leadingIconLabel="Open navigation"
style={{ '--md-app-bar-container-shape': '20px', '--md-app-bar-container-elevation': 'var(--md-sys-elevation-level3)', '--md-app-bar-container-color': 'var(--md-sys-color-surface-container-high)' }}>
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar headline="Tonal, both states" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-container-color: var(--md-sys-color-secondary-container); --md-app-bar-headline-color: var(--md-sys-color-on-secondary-container); --md-app-bar-leading-icon-color: var(--md-sys-color-on-secondary-container); --md-app-bar-trailing-icon-color: var(--md-sys-color-on-secondary-container);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar scrolled headline="Scrolled recolour" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-container-color-scrolled: var(--md-sys-color-tertiary-container); --md-app-bar-headline-color: var(--md-sys-color-on-tertiary-container); --md-app-bar-leading-icon-color: var(--md-sys-color-on-tertiary-container); --md-app-bar-trailing-icon-color: var(--md-sys-color-on-tertiary-container);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar headline="Rounded and raised" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-container-shape: 20px; --md-app-bar-container-elevation: var(--md-sys-elevation-level3); --md-app-bar-container-color: var(--md-sys-color-surface-container-high);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar headline="Tonal, both states" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-container-color: var(--md-sys-color-secondary-container); --md-app-bar-headline-color: var(--md-sys-color-on-secondary-container); --md-app-bar-leading-icon-color: var(--md-sys-color-on-secondary-container); --md-app-bar-trailing-icon-color: var(--md-sys-color-on-secondary-container);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar scrolled headline="Scrolled recolour" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-container-color-scrolled: var(--md-sys-color-tertiary-container); --md-app-bar-headline-color: var(--md-sys-color-on-tertiary-container); --md-app-bar-leading-icon-color: var(--md-sys-color-on-tertiary-container); --md-app-bar-trailing-icon-color: var(--md-sys-color-on-tertiary-container);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar headline="Rounded and raised" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-container-shape: 20px; --md-app-bar-container-elevation: var(--md-sys-elevation-level3); --md-app-bar-container-color: var(--md-sys-color-surface-container-high);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar headline="Tonal, both states" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-container-color: var(--md-sys-color-secondary-container); --md-app-bar-headline-color: var(--md-sys-color-on-secondary-container); --md-app-bar-leading-icon-color: var(--md-sys-color-on-secondary-container); --md-app-bar-trailing-icon-color: var(--md-sys-color-on-secondary-container);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar scrolled headline="Scrolled recolour" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-container-color-scrolled: var(--md-sys-color-tertiary-container); --md-app-bar-headline-color: var(--md-sys-color-on-tertiary-container); --md-app-bar-leading-icon-color: var(--md-sys-color-on-tertiary-container); --md-app-bar-trailing-icon-color: var(--md-sys-color-on-tertiary-container);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar headline="Rounded and raised" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-container-shape: 20px; --md-app-bar-container-elevation: var(--md-sys-elevation-level3); --md-app-bar-container-color: var(--md-sys-color-surface-container-high);">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>Height, padding, glyph size, touch target and trailing gap are all separate
properties, so a compact header does not have to go through density. Set them
when you need one specific measurement rather than the whole taper.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar headline="Default metrics" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar headline="Taller row, wide padding, big glyphs" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-row-height: 88px; --md-app-bar-padding-inline-start: 24px; --md-app-bar-padding-inline-end: 24px; --md-app-bar-icon-size: 32px; --md-app-bar-trailing-gap: 16px;">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar headline="Shorter row, tight glyphs" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-row-height: 52px; --md-app-bar-icon-size: 20px; --md-app-bar-icon-button-size: 40px; --md-app-bar-trailing-gap: 0px;">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', inlineSize: '100%' }}>
<MdAppBar headline="Default metrics" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="trailing" icon="search" variant="standard" size="md" buttonWidth="narrow" aria-label="Search"></MdIconButton>
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
<MdAppBar headline="Taller row, wide padding, big glyphs" leadingIcon="menu" leadingIconLabel="Open navigation"
style={{ '--md-app-bar-row-height': '88px', '--md-app-bar-padding-inline-start': '24px', '--md-app-bar-padding-inline-end': '24px', '--md-app-bar-icon-size': '32px', '--md-app-bar-trailing-gap': '16px' }}>
<MdIconButton slot="trailing" icon="search" variant="standard" size="md" buttonWidth="narrow" aria-label="Search"></MdIconButton>
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
<MdAppBar headline="Shorter row, tight glyphs" leadingIcon="menu" leadingIconLabel="Open navigation"
style={{ '--md-app-bar-row-height': '52px', '--md-app-bar-icon-size': '20px', '--md-app-bar-icon-button-size': '40px', '--md-app-bar-trailing-gap': '0px' }}>
<MdIconButton slot="trailing" icon="search" variant="standard" size="md" buttonWidth="narrow" aria-label="Search"></MdIconButton>
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar headline="Default metrics" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar headline="Taller row, wide padding, big glyphs" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-row-height: 88px; --md-app-bar-padding-inline-start: 24px; --md-app-bar-padding-inline-end: 24px; --md-app-bar-icon-size: 32px; --md-app-bar-trailing-gap: 16px;">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar headline="Shorter row, tight glyphs" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-row-height: 52px; --md-app-bar-icon-size: 20px; --md-app-bar-icon-button-size: 40px; --md-app-bar-trailing-gap: 0px;">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar headline="Default metrics" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar headline="Taller row, wide padding, big glyphs" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-row-height: 88px; --md-app-bar-padding-inline-start: 24px; --md-app-bar-padding-inline-end: 24px; --md-app-bar-icon-size: 32px; --md-app-bar-trailing-gap: 16px;">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar headline="Shorter row, tight glyphs" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-row-height: 52px; --md-app-bar-icon-size: 20px; --md-app-bar-icon-button-size: 40px; --md-app-bar-trailing-gap: 0px;">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar headline="Default metrics" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar headline="Taller row, wide padding, big glyphs" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-row-height: 88px; --md-app-bar-padding-inline-start: 24px; --md-app-bar-padding-inline-end: 24px; --md-app-bar-icon-size: 32px; --md-app-bar-trailing-gap: 16px;">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
<md-app-bar headline="Shorter row, tight glyphs" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-row-height: 52px; --md-app-bar-icon-size: 20px; --md-app-bar-icon-button-size: 40px; --md-app-bar-trailing-gap: 0px;">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</div>medium and large each have two height properties, and the bar picks by
whether a subtitle is present. Override the wrong one and nothing happens.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar variant="medium" headline="Medium, custom no-subtitle height" leading-icon="arrow_back" leading-icon-label="Back"
style="--md-app-bar-medium-height: 96px;"></md-app-bar>
<md-app-bar variant="medium" headline="Medium with subtitle" subtitle="needs the -with-subtitle property" leading-icon="arrow_back" leading-icon-label="Back"
style="--md-app-bar-medium-height-with-subtitle: 168px;"></md-app-bar>
<md-app-bar variant="large" headline="Large, custom expanded padding" subtitle="wide inline inset" leading-icon="arrow_back" leading-icon-label="Back"
style="--md-app-bar-large-height-with-subtitle: 172px; --md-app-bar-expanded-padding-inline: 40px;"></md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', inlineSize: '100%' }}>
<MdAppBar variant="medium" headline="Medium, custom noSubtitle height" leadingIcon="arrow_back" leadingIconLabel="Back"
style={{ '--md-app-bar-medium-height': '96px' }}></MdAppBar>
<MdAppBar variant="medium" headline="Medium with subtitle" subtitle="needs the -with-subtitle property" leadingIcon="arrow_back" leadingIconLabel="Back"
style={{ '--md-app-bar-medium-height-with-subtitle': '168px' }}></MdAppBar>
<MdAppBar variant="large" headline="Large, custom expanded padding" subtitle="wide inline inset" leadingIcon="arrow_back" leadingIconLabel="Back"
style={{ '--md-app-bar-large-height-with-subtitle': '172px', '--md-app-bar-expanded-padding-inline': '40px' }}></MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar variant="medium" headline="Medium, custom no-subtitle height" leading-icon="arrow_back" leading-icon-label="Back"
style="--md-app-bar-medium-height: 96px;"></md-app-bar>
<md-app-bar variant="medium" headline="Medium with subtitle" subtitle="needs the -with-subtitle property" leading-icon="arrow_back" leading-icon-label="Back"
style="--md-app-bar-medium-height-with-subtitle: 168px;"></md-app-bar>
<md-app-bar variant="large" headline="Large, custom expanded padding" subtitle="wide inline inset" leading-icon="arrow_back" leading-icon-label="Back"
style="--md-app-bar-large-height-with-subtitle: 172px; --md-app-bar-expanded-padding-inline: 40px;"></md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar variant="medium" headline="Medium, custom no-subtitle height" leading-icon="arrow_back" leading-icon-label="Back"
style="--md-app-bar-medium-height: 96px;"></md-app-bar>
<md-app-bar variant="medium" headline="Medium with subtitle" subtitle="needs the -with-subtitle property" leading-icon="arrow_back" leading-icon-label="Back"
style="--md-app-bar-medium-height-with-subtitle: 168px;"></md-app-bar>
<md-app-bar variant="large" headline="Large, custom expanded padding" subtitle="wide inline inset" leading-icon="arrow_back" leading-icon-label="Back"
style="--md-app-bar-large-height-with-subtitle: 172px; --md-app-bar-expanded-padding-inline: 40px;"></md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar variant="medium" headline="Medium, custom no-subtitle height" leading-icon="arrow_back" leading-icon-label="Back"
style="--md-app-bar-medium-height: 96px;"></md-app-bar>
<md-app-bar variant="medium" headline="Medium with subtitle" subtitle="needs the -with-subtitle property" leading-icon="arrow_back" leading-icon-label="Back"
style="--md-app-bar-medium-height-with-subtitle: 168px;"></md-app-bar>
<md-app-bar variant="large" headline="Large, custom expanded padding" subtitle="wide inline inset" leading-icon="arrow_back" leading-icon-label="Back"
style="--md-app-bar-large-height-with-subtitle: 172px; --md-app-bar-expanded-padding-inline: 40px;"></md-app-bar>
</div>The pill has its own colour, shape, height and inset properties, independent of the row around it.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar variant="search" search-placeholder="Default pill" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
<md-app-bar variant="search" search-placeholder="Squared, tinted, taller" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-search-container-color: var(--md-sys-color-primary-container); --md-app-bar-search-container-shape: 8px; --md-app-bar-search-container-height: 64px; --md-app-bar-search-placeholder-color: var(--md-sys-color-on-primary-container); --md-app-bar-search-input-color: var(--md-sys-color-on-primary-container); --md-app-bar-search-trailing-icon-color: var(--md-sys-color-on-primary-container);">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
<md-app-bar variant="search" search-placeholder="Flush hint, wide row gap" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-search-padding-inline-start: 8px; --md-app-bar-search-row-gap: 20px; --md-app-bar-search-container-color: var(--md-sys-color-surface-container-low);">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
</div>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px', inlineSize: '100%' }}>
<MdAppBar variant="search" searchPlaceholder="Default pill" searchAriaLabel="Search" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="search-trailing" icon="mic" variant="standard" size="md" buttonWidth="narrow" aria-label="Voice search"></MdIconButton>
</MdAppBar>
<MdAppBar variant="search" searchPlaceholder="Squared, tinted, taller" searchAriaLabel="Search" leadingIcon="menu" leadingIconLabel="Open navigation"
style={{ '--md-app-bar-search-container-color': 'var(--md-sys-color-primary-container)', '--md-app-bar-search-container-shape': '8px', '--md-app-bar-search-container-height': '64px', '--md-app-bar-search-placeholder-color': 'var(--md-sys-color-on-primary-container)', '--md-app-bar-search-input-color': 'var(--md-sys-color-on-primary-container)', '--md-app-bar-search-trailing-icon-color': 'var(--md-sys-color-on-primary-container)' }}>
<MdIconButton slot="search-trailing" icon="mic" variant="standard" size="md" buttonWidth="narrow" aria-label="Voice search"></MdIconButton>
</MdAppBar>
<MdAppBar variant="search" searchPlaceholder="Flush hint, wide row gap" searchAriaLabel="Search" leadingIcon="menu" leadingIconLabel="Open navigation"
style={{ '--md-app-bar-search-padding-inline-start': '8px', '--md-app-bar-search-row-gap': '20px', '--md-app-bar-search-container-color': 'var(--md-sys-color-surface-container-low)' }}>
<MdIconButton slot="search-trailing" icon="mic" variant="standard" size="md" buttonWidth="narrow" aria-label="Voice search"></MdIconButton>
</MdAppBar>
</div>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar variant="search" search-placeholder="Default pill" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
<md-app-bar variant="search" search-placeholder="Squared, tinted, taller" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-search-container-color: var(--md-sys-color-primary-container); --md-app-bar-search-container-shape: 8px; --md-app-bar-search-container-height: 64px; --md-app-bar-search-placeholder-color: var(--md-sys-color-on-primary-container); --md-app-bar-search-input-color: var(--md-sys-color-on-primary-container); --md-app-bar-search-trailing-icon-color: var(--md-sys-color-on-primary-container);">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
<md-app-bar variant="search" search-placeholder="Flush hint, wide row gap" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-search-padding-inline-start: 8px; --md-app-bar-search-row-gap: 20px; --md-app-bar-search-container-color: var(--md-sys-color-surface-container-low);">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
</div><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar variant="search" search-placeholder="Default pill" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
<md-app-bar variant="search" search-placeholder="Squared, tinted, taller" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-search-container-color: var(--md-sys-color-primary-container); --md-app-bar-search-container-shape: 8px; --md-app-bar-search-container-height: 64px; --md-app-bar-search-placeholder-color: var(--md-sys-color-on-primary-container); --md-app-bar-search-input-color: var(--md-sys-color-on-primary-container); --md-app-bar-search-trailing-icon-color: var(--md-sys-color-on-primary-container);">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
<md-app-bar variant="search" search-placeholder="Flush hint, wide row gap" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-search-padding-inline-start: 8px; --md-app-bar-search-row-gap: 20px; --md-app-bar-search-container-color: var(--md-sys-color-surface-container-low);">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
</div>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<div style="display:flex;flex-direction:column;gap:24px;inline-size:100%;">
<md-app-bar variant="search" search-placeholder="Default pill" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
<md-app-bar variant="search" search-placeholder="Squared, tinted, taller" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-search-container-color: var(--md-sys-color-primary-container); --md-app-bar-search-container-shape: 8px; --md-app-bar-search-container-height: 64px; --md-app-bar-search-placeholder-color: var(--md-sys-color-on-primary-container); --md-app-bar-search-input-color: var(--md-sys-color-on-primary-container); --md-app-bar-search-trailing-icon-color: var(--md-sys-color-on-primary-container);">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
<md-app-bar variant="search" search-placeholder="Flush hint, wide row gap" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation"
style="--md-app-bar-search-padding-inline-start: 8px; --md-app-bar-search-row-gap: 20px; --md-app-bar-search-container-color: var(--md-sys-color-surface-container-low);">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
</md-app-bar>
</div>Every default resolves through an md-sys-color role, so a bar that sets no
custom properties follows the theme on its own. Switch this page between light
and dark — the bar below is untouched markup:
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<md-app-bar headline="Untouched defaults" subtitle="Follows the page theme" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdAvatar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<MdAppBar headline="Untouched defaults" subtitle="Follows the page theme" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="trailing" icon="search" variant="standard" size="md" buttonWidth="narrow" aria-label="Search"></MdIconButton>
<MdAvatar slot="trailing" name="Ada Lovelace" label="Account"></MdAvatar>
</MdAppBar>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<md-app-bar headline="Untouched defaults" subtitle="Follows the page theme" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<md-app-bar headline="Untouched defaults" subtitle="Follows the page theme" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<md-app-bar headline="Untouched defaults" subtitle="Follows the page theme" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>Custom properties cover colour and metrics. Parts reach into the shadow root for everything else — type treatment, layout of a wrapper, the pill’s internals.
| Part | Element | Exists when |
|---|---|---|
row | The action row | Always |
leading | Leading slot wrapper | Always |
leading-icon | The prop-built leading md-icon-button | Only with leading-icon |
icon / state-layer | Glyph / state layer, exported from leading-icon | Only with leading-icon |
title | Inline title | small; hidden copy on medium / large |
subtitle | Subtitle text | Inline on small, expanded on flexible bars |
expanded | Expanded title block | medium / large |
expanded-headline | Expanded headline text | medium / large |
trailing | Trailing slot wrapper | Always |
search-host | Flex bay holding the pill | search |
search | The pill container | search |
search-state-layer | Hover / focus / press overlay | search |
search-field | Text region inside the pill | search |
search-input | The built-in <input> | search, no search slot |
search-content | Wrapper around slotted search content | search with a search slot |
search-trailing | In-pill trailing bay | search |
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<style>
.parts-bar::part(title) { text-transform: uppercase; letter-spacing: .1em; font-weight: 600; }
.parts-bar::part(subtitle) { font-style: italic; opacity: .85; }
.parts-bar::part(trailing) { gap: 12px; }
.parts-bar::part(row) { border-block-end: 2px solid var(--md-sys-color-primary); }
</style>
<md-app-bar class="parts-bar" headline="Styled parts" subtitle="title, subtitle, trailing, row" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<style>
.parts-bar::part(title) { text-transform: uppercase; letter-spacing: .1em; font-weight: 600; }
.parts-bar::part(subtitle) { font-style: italic; opacity: .85; }
.parts-bar::part(trailing) { gap: 12px; }
.parts-bar::part(row) { border-block-end: 2px solid var(--md-sys-color-primary); }
</style>
<MdAppBar className="parts-bar" headline="Styled parts" subtitle="title, subtitle, trailing, row" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="trailing" icon="search" variant="standard" size="md" buttonWidth="narrow" aria-label="Search"></MdIconButton>
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<style>
.parts-bar::part(title) { text-transform: uppercase; letter-spacing: .1em; font-weight: 600; }
.parts-bar::part(subtitle) { font-style: italic; opacity: .85; }
.parts-bar::part(trailing) { gap: 12px; }
.parts-bar::part(row) { border-block-end: 2px solid var(--md-sys-color-primary); }
</style>
<md-app-bar class="parts-bar" headline="Styled parts" subtitle="title, subtitle, trailing, row" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<style>
.parts-bar::part(title) { text-transform: uppercase; letter-spacing: .1em; font-weight: 600; }
.parts-bar::part(subtitle) { font-style: italic; opacity: .85; }
.parts-bar::part(trailing) { gap: 12px; }
.parts-bar::part(row) { border-block-end: 2px solid var(--md-sys-color-primary); }
</style>
<md-app-bar class="parts-bar" headline="Styled parts" subtitle="title, subtitle, trailing, row" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<style>
.parts-bar::part(title) { text-transform: uppercase; letter-spacing: .1em; font-weight: 600; }
.parts-bar::part(subtitle) { font-style: italic; opacity: .85; }
.parts-bar::part(trailing) { gap: 12px; }
.parts-bar::part(row) { border-block-end: 2px solid var(--md-sys-color-primary); }
</style>
<md-app-bar class="parts-bar" headline="Styled parts" subtitle="title, subtitle, trailing, row" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="trailing" icon="search" variant="standard" size="md" button-width="narrow" aria-label="Search"></md-icon-button>
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>expanded is the wrapper and expanded-headline the text, so you can inset the
block and restyle the headline independently.
<!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<style>
.parts-flex::part(expanded) {
background: var(--md-sys-color-surface-container-high);
border-start-start-radius: 16px;
border-start-end-radius: 16px;
}
.parts-flex::part(expanded-headline) {
font-weight: 700;
letter-spacing: -.01em;
color: var(--md-sys-color-primary);
}
.parts-flex::part(subtitle) { text-transform: uppercase; letter-spacing: .12em; font-size: 11px; }
</style>
<md-app-bar class="parts-flex" variant="large" headline="Quarterly review" subtitle="Updated 2 minutes ago" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<style>
.parts-flex::part(expanded) {
background: var(--md-sys-color-surface-container-high);
border-start-start-radius: 16px;
border-start-end-radius: 16px;
}
.parts-flex::part(expanded-headline) {
font-weight: 700;
letter-spacing: -.01em;
color: var(--md-sys-color-primary);
}
.parts-flex::part(subtitle) { text-transform: uppercase; letter-spacing: .12em; font-size: 11px; }
</style>
<MdAppBar className="parts-flex" variant="large" headline="Quarterly review" subtitle="Updated 2 minutes ago" leadingIcon="arrow_back" leadingIconLabel="Back">
<MdIconButton slot="trailing" icon="more_vert" variant="standard" size="md" buttonWidth="narrow" aria-label="More options"></MdIconButton>
</MdAppBar>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<style>
.parts-flex::part(expanded) {
background: var(--md-sys-color-surface-container-high);
border-start-start-radius: 16px;
border-start-end-radius: 16px;
}
.parts-flex::part(expanded-headline) {
font-weight: 700;
letter-spacing: -.01em;
color: var(--md-sys-color-primary);
}
.parts-flex::part(subtitle) { text-transform: uppercase; letter-spacing: .12em; font-size: 11px; }
</style>
<md-app-bar class="parts-flex" variant="large" headline="Quarterly review" subtitle="Updated 2 minutes ago" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<style>
.parts-flex::part(expanded) {
background: var(--md-sys-color-surface-container-high);
border-start-start-radius: 16px;
border-start-end-radius: 16px;
}
.parts-flex::part(expanded-headline) {
font-weight: 700;
letter-spacing: -.01em;
color: var(--md-sys-color-primary);
}
.parts-flex::part(subtitle) { text-transform: uppercase; letter-spacing: .12em; font-size: 11px; }
</style>
<md-app-bar class="parts-flex" variant="large" headline="Quarterly review" subtitle="Updated 2 minutes ago" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<style>
.parts-flex::part(expanded) {
background: var(--md-sys-color-surface-container-high);
border-start-start-radius: 16px;
border-start-end-radius: 16px;
}
.parts-flex::part(expanded-headline) {
font-weight: 700;
letter-spacing: -.01em;
color: var(--md-sys-color-primary);
}
.parts-flex::part(subtitle) { text-transform: uppercase; letter-spacing: .12em; font-size: 11px; }
</style>
<md-app-bar class="parts-flex" variant="large" headline="Quarterly review" subtitle="Updated 2 minutes ago" leading-icon="arrow_back" leading-icon-label="Back">
<md-icon-button slot="trailing" icon="more_vert" variant="standard" size="md" button-width="narrow" aria-label="More options"></md-icon-button>
</md-app-bar><!-- index.html <head> — the icon font the components draw from -->
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
<!-- index.html — register the AWC UI elements once -->
<script type="module">
import '@awc-ui/core/define';
</script>
<style>
.parts-search::part(search) {
border: 2px solid var(--md-sys-color-primary);
border-radius: 12px;
}
.parts-search::part(search-input) { font-weight: 600; letter-spacing: .02em; }
.parts-search::part(search-trailing) { gap: 10px; }
.parts-search::part(leading-icon) { color: var(--md-sys-color-primary); }
</style>
<md-app-bar class="parts-search" variant="search" search-placeholder="Styled pill internals" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>// Icons need the Material Symbols stylesheet in index.html — see Installation.
import { MdAppBar, MdAvatar, MdIconButton } from '@awc-ui/react';
export function Demo() {
return (
<>
<style>
.parts-search::part(search) {
border: 2px solid var(--md-sys-color-primary);
border-radius: 12px;
}
.parts-search::part(search-input) { font-weight: 600; letter-spacing: .02em; }
.parts-search::part(search-trailing) { gap: 10px; }
.parts-search::part(leading-icon) { color: var(--md-sys-color-primary); }
</style>
<MdAppBar className="parts-search" variant="search" searchPlaceholder="Styled pill internals" searchAriaLabel="Search" leadingIcon="menu" leadingIconLabel="Open navigation">
<MdIconButton slot="search-trailing" icon="mic" variant="standard" size="md" buttonWidth="narrow" aria-label="Voice search"></MdIconButton>
<MdAvatar slot="trailing" name="Ada Lovelace" label="Account"></MdAvatar>
</MdAppBar>
</>
);
}// Icons need the Material Symbols stylesheet in index.html — see Installation.
// app.module.ts — register the AWC UI elements once
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AwcUiModule } from '@awc-ui/angular';
@NgModule({
imports: [AwcUiModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
<!-- app.component.html -->
<style>
.parts-search::part(search) {
border: 2px solid var(--md-sys-color-primary);
border-radius: 12px;
}
.parts-search::part(search-input) { font-weight: 600; letter-spacing: .02em; }
.parts-search::part(search-trailing) { gap: 10px; }
.parts-search::part(leading-icon) { color: var(--md-sys-color-primary); }
</style>
<md-app-bar class="parts-search" variant="search" search-placeholder="Styled pill internals" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar><script setup>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<template>
<style>
.parts-search::part(search) {
border: 2px solid var(--md-sys-color-primary);
border-radius: 12px;
}
.parts-search::part(search-input) { font-weight: 600; letter-spacing: .02em; }
.parts-search::part(search-trailing) { gap: 10px; }
.parts-search::part(leading-icon) { color: var(--md-sys-color-primary); }
</style>
<md-app-bar class="parts-search" variant="search" search-placeholder="Styled pill internals" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>
</template><script>
// Icons need the Material Symbols stylesheet in index.html — see Installation.
import '@awc-ui/core/define';
</script>
<style>
.parts-search::part(search) {
border: 2px solid var(--md-sys-color-primary);
border-radius: 12px;
}
.parts-search::part(search-input) { font-weight: 600; letter-spacing: .02em; }
.parts-search::part(search-trailing) { gap: 10px; }
.parts-search::part(leading-icon) { color: var(--md-sys-color-primary); }
</style>
<md-app-bar class="parts-search" variant="search" search-placeholder="Styled pill internals" search-aria-label="Search" leading-icon="menu" leading-icon-label="Open navigation">
<md-icon-button slot="search-trailing" icon="mic" variant="standard" size="md" button-width="narrow" aria-label="Voice search"></md-icon-button>
<md-avatar slot="trailing" name="Ada Lovelace" label="Account"></md-avatar>
</md-app-bar>md-app-bar::part(title) { letter-spacing: 0.15px;}md-toolbar ·
md-search ·
md-navigation-rail ·
md-navigation-bar ·
md-tabs ·
md-breadcrumbs ·
md-icon-button
md-app-barTwo artefacts to give your AI agent so it generates correct UI with this component. The per-component spec answers "how do I use this exact tag?". The main-llm spec answers "which tag should I pick in the first place?".
md-app-bar spec card
Identity · when to use / when NOT · decision cues · behavioural contract · do/don't · anti-patterns · full API. Paste into your agent when you're implementing with this component.
System-prompt preamble · decision matrix · token reference · page recipes · anti-patterns. Paste into the system prompt at the start of a piece of work.