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.
import {
Page,
Button,
reactExtension,
} from '@shopify/ui-extensions-react/customer-account';
import React from 'react';
export default reactExtension('customer-account.page.render', () => <App />);
function App() {
return (
<Page
title="Order #1411"
subtitle="Confirmed Oct 5"
secondaryAction={<Button accessibilityLabel="Button" onPress={() => {}}/>}
primaryActionLabel="Manage"
primaryAction={
<>
<Button onPress={() => {}}>Buy again</Button>
<Button onPress={() => {}}>Second action</Button>
<Button onPress={() => {}}>Third action</Button>
</>
}
>
Content
</Page>
);
}
import {
Page,
Button,
extension
} from '@shopify/ui-extensions/customer-account';
export default extension(
'customer-account.page.render',
(root, api) => {
renderApp(root, api);
},
)
async function renderApp(root, api) {
const primaryAction = root.createFragment();
await primaryAction.append(root.createComponent(Button, {onPress: () => {console.log("primary action 1")}}, 'Buy again primary 1'));
await primaryAction.append(root.createComponent(Button, {onPress: () => {console.log("primary action 2")}}, 'Buy again primary 2'));
await primaryAction.append(root.createComponent(Button, {onPress: () => {console.log("primary action 3")}}, 'Buy again primary 3'));
const secondaryAction = root.createFragment();
await secondaryAction.append(root.createComponent(Button, {accessibilityLabel: 'Button', onPress: () => {}}))
const page = root.createComponent(
Page,
{
title: "Order #1411",
subtitle: "Confirmed Oct 5",
primaryAction,
primaryActionLabel: "Manage",
secondaryAction,
},
root.createComponent('View', {}, "Content")
)
root.append(page);
}
Indicates that the page is in a loading state. When `true`, the page shows loading indicators for the UI elements that it is owns. The page is not responsible for the loading indicators of any content that is passed as `children`.
The action grouping, provided as button(s), that is placed in the primary position of the page.
Accessibility label for the primary action grouping. If an accessibility label is not provided, default text is used.
Label for the primary action grouping. If a label is not provided, default text is used.
The action grouping, provided as button(s), that is placed in the secondary position of the page.
The text to be used as subtitle.
The text to be used as title.
Supported props for Buttons used inside Page `primaryAction` prop.<br><br>`children` only support text.
A label used for buyers using assistive technologies. When set, any `children` supplied to this component will not be announced to screen reader users.
Disables the button, disallowing any interaction.
Replaces content with a loading indicator.
Accessible label for the loading indicator when user prefers reduced motion. This value is only used if `loading` is true.
Callback that is run when the button is pressed.
An overlay component to render when the user interacts with the component.
Destination URL to link to.
Supported props for Button used inside Page `secondaryAction` prop.<br><br>`children` are not supported.<br>Use `accessibilityLabel` instead.
A label used for buyers using assistive technologies. Needed because `children` passed to this component will be discarded.
Callback that is run when the button is pressed.
Destination URL to link to.