Content
- One sentence, sentence case. Put the fix in the action or the sentence.
A full-width notice strip under the top navigation.
import { … } from "@brdgapp/ui/components/page-banner"PageBanner is the full-width notice strip that sits right under the top navigation and stays pinned while the page scrolls: "Your profile is 60% complete", "Preview: sample data". It lines its text up with the page column below. The usual mistake is stacking several banners, or using one for a message that belongs next to the thing it's about.
placement="inline" for the same notice inside a card, or on a page outside the Bridge OS shell.Strip. The variant's tint and a bottom border. Page placement: full width, pinned under the 56px nav.
Icon. Optional, 16px, in the variant's color.
Message. One line, 13px SemiBold.
Action. Optional link or button at the end.
Shown inline here; in an app it pins under the top navigation.
| State | What happens |
|---|---|
| Variants | info, warning, success, error, each from its token family. |
contentWidthClass (e.g. LAYOUT_FORM).Do
Show at most one banner per page.Don't
Stack a warning on top of an info banner.Do
Say what to do: "Reconnect it in Settings."Don't
Only say something went wrong.| Keys | Action |
|---|---|
| Tab | Reaches the action, if there is one. |
PageBanner
The notice strip.
| Prop | Type | Default | Description |
|---|---|---|---|
variant | "info" | "warning" | "success" | "error" | "info" | Color and meaning. |
placement | "page" | "inline" | "page" | Pinned full-width under the nav, or a rounded box in place. New in the package. |
icon | ReactNode | — | A bare Lucide icon. |
action | ReactNode | — | One link or button. |
contentWidthClass | string | — | Page placement: the page column's width class, so the text lines up. |
children | ReactNode | — | The message. |
className | string | — | Layout only. |
What it's built from and where it's used, read from the code. When you change it, check these too.
Where the code still differs from the system. Follow the system, not the gap.
py-8 page padding). Other apps should use placement="inline" until their shell matches.components.md → PageBanner; src/components/ui/page-banner.tsx.