Page
The outer wrapper of the page—including the page title, subtitle, and page-level actions—displayed in a familiar and consistent style that sets expectations about the purpose of the page.
Anchor to propertiesProperties
- Anchor to headingheadingstring
The main page heading
- string
A unique identifier for the element.
- Anchor to subheadingsubheadingstring
The text to be used as subheading.
Anchor to slotsSlots
- HTMLElement
The breadcrumb actions for the page. Accepts a single Button element with restricted properties (see below).
- Anchor to primary-actionprimary-actionHTMLElement
The primary action for the page. Accepts a single Button element with restricted properties (see below).
- Anchor to secondary-actionssecondary-actionsHTMLElement
The secondary actions for the page. Accepts multiple Button elements with restricted properties (see below).
Supported props for Button used inside Page breadcrumb-actions slot.children are not supported.
Use instead.
- stringrequired
A label used for buyers using assistive technologies. Needed because
childrenpassed to this component will be discarded.- ((event: CallbackEventListener<typeof buttonTagName>) => void) | null
Callback when the button is activated. This will be called before the action indicated by
type.- string
The URL to link to.
- If set, it will navigate to the location specified by
hrefafter executing thecallback. - If a
is set, thecommandwill be executed instead of the navigation.
- If set, it will navigate to the location specified by
CallbackEventListener
(EventListener & {
(event: CallbackEvent<TTagName, TEvent>): void;
}) | nullCallbackEvent
TEvent & {
currentTarget: HTMLElementTagNameMap[TTagName];
}Supported props for Buttons used inside Page primary-action slot.children only support text.
- string
A label that describes the purpose or contents of the Button. It will be read to users using assistive technologies such as screen readers.
Use this when using only an icon or the button text is not enough context for users using assistive technologies.
- ((event: CallbackEventListener<typeof buttonTagName>) => void) | null
Callback when the button is activated. This will be called before the action indicated by
type.- '--auto' | '--show' | '--hide' | '--toggle' | '--copy'Default: '--auto'
Sets the action the
should take when this clickable is activated.See the documentation of particular components for the actions they support.
--auto: a default action for the target component.--show: shows the target component.--hide: hides the target component.--toggle: toggles the target component.--copy: copies the target ClipboardItem.
- string
ID of a component that should respond to activations (e.g. clicks) on this component.
See
commandfor how to control the behavior of the target.- booleanDefault: false
Disables the button, disallowing any interaction.
- string
The URL to link to.
- If set, it will navigate to the location specified by
hrefafter executing thecallback. - If a
is set, thecommandwill be executed instead of the navigation.
- If set, it will navigate to the location specified by
- booleanDefault: false
Replaces content with a loading indicator.
CallbackEventListener
(EventListener & {
(event: CallbackEvent<TTagName, TEvent>): void;
}) | nullCallbackEvent
TEvent & {
currentTarget: HTMLElementTagNameMap[TTagName];
}Supported props for Button used inside Page secondary-actions slot.children only support text.
- string
A label that describes the purpose or contents of the Button. It will be read to users using assistive technologies such as screen readers.
Use this when using only an icon or the button text is not enough context for users using assistive technologies.
- ((event: CallbackEventListener<typeof buttonTagName>) => void) | null
Callback when the button is activated. This will be called before the action indicated by
type.- '--auto' | '--show' | '--hide' | '--toggle' | '--copy'Default: '--auto'
Sets the action the
should take when this clickable is activated.See the documentation of particular components for the actions they support.
--auto: a default action for the target component.--show: shows the target component.--hide: hides the target component.--toggle: toggles the target component.--copy: copies the target ClipboardItem.
- string
ID of a component that should respond to activations (e.g. clicks) on this component.
See
commandfor how to control the behavior of the target.- booleanDefault: false
Disables the button, disallowing any interaction.
- string
The URL to link to.
- If set, it will navigate to the location specified by
hrefafter executing thecallback. - If a
is set, thecommandwill be executed instead of the navigation.
- If set, it will navigate to the location specified by
- booleanDefault: false
Replaces content with a loading indicator.
CallbackEventListener
(EventListener & {
(event: CallbackEvent<TTagName, TEvent>): void;
}) | nullCallbackEvent
TEvent & {
currentTarget: HTMLElementTagNameMap[TTagName];
}Preview

Examples
Code
Default
<s-page heading="Order #1411" subheading="Confirmed Oct 5" > <s-button slot="primary-action"> Buy again </s-button> <s-button slot="secondary-actions"> Edit order </s-button> <s-button slot="secondary-actions"> Cancel order </s-button> <s-button slot="breadcrumb-actions" accessibilityLabel="Back to orders" ></s-button> Content </s-page>
Anchor to best-practicesBest practices
Use these best practices to deliver a clear and accessible experience in your extensions.
Write clear, focused headings
State the main purpose of the page in a few words and use sentence case for readability.
Use subheadings only when they add value
Add a subheading when it provides helpful context that’s different from the heading. Keep it brief and use sparingly to avoid clutter.
Add page‑level actions thoughtfully
Include buttons in the header only for actions that affect the entire page or flow. Make the main action a primary button, keep lesser actions secondary, limit the total number, and follow established UX patterns—especially for order actions.