Press button
The press button component lets users toggle between active and inactive states. Use press button for persistent on/off or selected/unselected choices.
Press buttons provide visual feedback for pressed and unpressed states. For binary controls that take effect immediately without a save action, use switch instead.
Press button supports binary toggle state only — pressed or unpressed. Multi-state or tri-state toggles aren't supported.
Supported targets
- customer-account.
footer. render-after - customer-account.
order-index. announcement. render - customer-account.
order-index. block. render - customer-account.
order-status. announcement. render - customer-account.
order-status. block. render - customer-account.
order-status. cart-line-item. render-after - customer-account.
order-status. cart-line-list. render-after - customer-account.
order-status. customer-information. render-after - customer-account.
order-status. fulfillment-details. render-after - customer-account.
order-status. payment-details. render-after - customer-account.
order-status. return-details. render-after - customer-account.
order-status. unfulfilled-items. render-after - customer-account.
order. action. menu-item. render - customer-account.
order. action. render - customer-account.
order. page. render - customer-account.
page. render - customer-account.
profile. addresses. render-after - customer-account.
profile. announcement. render - customer-account.
profile. block. render - customer-account.
profile. company-details. render-after - customer-account.
profile. company-location-addresses. render-after - customer-account.
profile. company-location-payment. render-after - customer-account.
profile. company-location-staff. render-after - customer-account.
profile. payment. render-after
Supported targets
- customer-account.
footer. render-after - customer-account.
order-index. announcement. render - customer-account.
order-index. block. render - customer-account.
order-status. announcement. render - customer-account.
order-status. block. render - customer-account.
order-status. cart-line-item. render-after - customer-account.
order-status. cart-line-list. render-after - customer-account.
order-status. customer-information. render-after - customer-account.
order-status. fulfillment-details. render-after - customer-account.
order-status. payment-details. render-after - customer-account.
order-status. return-details. render-after - customer-account.
order-status. unfulfilled-items. render-after - customer-account.
order. action. menu-item. render - customer-account.
order. action. render - customer-account.
order. page. render - customer-account.
page. render - customer-account.
profile. addresses. render-after - customer-account.
profile. announcement. render - customer-account.
profile. block. render - customer-account.
profile. company-details. render-after - customer-account.
profile. company-location-addresses. render-after - customer-account.
profile. company-location-payment. render-after - customer-account.
profile. company-location-staff. render-after - customer-account.
profile. payment. render-after
Anchor to PropertiesProperties
Configure the following properties on the press button component.
- stringstring
A label that describes the purpose or content of the button for users of assistive technologies such as screen readers. Use this when the visible content alone doesn't provide enough context.
- booleanbooleanDefault: falseDefault: false
Whether the button is pressed by default.
- booleanbooleanDefault: falseDefault: false
Whether the button is disabled, preventing it from being clicked or receiving focus.
- stringstring
A unique identifier for the element. Use this to reference the element in JavaScript, link labels to form controls, or target specific elements for styling or scripting.
- 'auto' | 'fill' | 'fit-content''auto' | 'fill' | 'fit-content'Default: 'auto'Default: 'auto'
The inline width of the button component.
'auto': The size depends on the surface and context.'fill': The button takes up 100% of the available inline size.'fit-content': The button takes up the minimum inline size required to fit its content.
- stringstring
The language of the button's text content. Use this when the button text is in a different language than the rest of the page, so assistive technologies can invoke the correct pronunciation. See the reference of values (
Subtaglabel).- booleanbooleanDefault: falseDefault: false
Whether the button is in a loading state, which replaces the button content with a loading indicator while a background action is being performed. This also disables the button.
- booleanbooleanDefault: falseDefault: false
Whether the button is pressed.
Anchor to EventsEvents
The press button component provides event callbacks for handling user interactions. Learn more about handling events.
- CallbackEventListener<typeof tagName>CallbackEventListener<typeof tagName>
A callback fired when the button loses focus.
Learn more about the blur event.
- CallbackEventListener<typeof tagName>CallbackEventListener<typeof tagName>
A callback fired when the button is clicked.
Learn more about the click event.
- CallbackEventListener<typeof tagName>CallbackEventListener<typeof tagName>
A callback fired when the button receives focus.
Learn more about the focus event.
CallbackEventListener
A typed event listener for custom element events. The listener receives a `CallbackEvent` with the correct `currentTarget` type for the associated custom element tag.
(EventListener & {
(event: CallbackEvent<TTagName, TEvent>): void;
}) | nullCallbackEvent
An event type that narrows the `currentTarget` to the specific HTML element associated with the custom element tag. This provides type-safe event handling in callback listeners.
TEvent & {
currentTarget: HTMLElementTagNameMap[TTagName];
}Anchor to ExamplesExamples
Anchor to Toggle optional selectionsToggle optional selections
Let customers toggle optional add-ons with a press button. This example shows an s-press-button element for gift wrapping.Toggle optional selections

html
Anchor to Pre-select an optionPre-select an option
Start an option in its selected state on first load. This example uses an s-press-button with the pressed attribute for an email notification preference that the user can toggle off.html
Show a toggle in a non-interactive state when the option isn't available. This example displays an
s-press-button with the disabled attribute for an unavailable shipping method.html
Anchor to Best practicesBest practices
- Write clear toggle labels: Use text that describes the option being toggled, such as "Enable paperless billing" rather than "Toggle" or "On/Off."
- Pre-select recommended options: Use
defaultPressedwhen an option is commonly chosen, so users start with the recommended selection. - Disable rather than hide: When an option is temporarily unavailable, use the
disabledattribute to keep it visible and set expectations. - Use for binary choices only: Press button represents on/off states. For multi-option selections, use choice list instead.