@commercetools/nimbus-mcp 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/docs/route-manifest.json +1407 -794
- package/data/docs/routes/components-data-display-data-table.json +66 -34
- package/data/docs/routes/components-data-display-draggable-list.json +62 -7
- package/data/docs/routes/components-inputs-checkbox.json +2 -2
- package/data/docs/routes/components-layout-splitter.json +654 -0
- package/data/docs/routes/components-utilities-region.json +265 -0
- package/data/docs/routes/home-getting-started-bundler-plugins.json +248 -0
- package/data/docs/routes/hooks-usedraganddrop.json +310 -0
- package/data/docs/routes/patterns-actions.json +78 -0
- package/data/docs/routes/patterns-dialogs-confirmation-dialog.json +391 -0
- package/data/docs/routes/patterns-dialogs-form-dialog.json +358 -0
- package/data/docs/routes/patterns-dialogs.json +2 -2
- package/data/docs/routes/patterns-pages-public-page-layout.json +371 -0
- package/data/docs/routes/patterns-pages.json +78 -0
- package/data/docs/search-index.json +1 -1
- package/data/docs/types/AccordionContent.json +32 -32
- package/data/docs/types/AccordionHeader.json +102 -102
- package/data/docs/types/AccordionItem.json +28 -28
- package/data/docs/types/AccordionRoot.json +15 -15
- package/data/docs/types/AlertDescription.json +8 -8
- package/data/docs/types/AlertDismissButton.json +89 -89
- package/data/docs/types/AlertTitle.json +8 -8
- package/data/docs/types/Avatar.json +2 -2
- package/data/docs/types/Badge.json +2 -2
- package/data/docs/types/Body.json +6 -6
- package/data/docs/types/Box.json +6 -6
- package/data/docs/types/Button.json +97 -97
- package/data/docs/types/Calendar.json +111 -65
- package/data/docs/types/Caption.json +6 -6
- package/data/docs/types/CardRoot.json +2 -2
- package/data/docs/types/Cell.json +20 -20
- package/data/docs/types/Checkbox.json +99 -99
- package/data/docs/types/Code.json +10 -10
- package/data/docs/types/CollapsibleMotionContent.json +2 -2
- package/data/docs/types/CollapsibleMotionRoot.json +2 -2
- package/data/docs/types/CollapsibleMotionTrigger.json +4 -4
- package/data/docs/types/Column.json +8 -8
- package/data/docs/types/ColumnGroup.json +8 -8
- package/data/docs/types/ColumnHeader.json +18 -18
- package/data/docs/types/ComboBoxListBox.json +80 -80
- package/data/docs/types/ComboBoxOption.json +77 -77
- package/data/docs/types/ComboBoxPopover.json +77 -77
- package/data/docs/types/ComboBoxRoot.json +8 -8
- package/data/docs/types/ComboBoxSection.json +29 -29
- package/data/docs/types/ComboBoxTrigger.json +6 -6
- package/data/docs/types/ConfirmationDialog.json +224 -0
- package/data/docs/types/Content.json +2 -2
- package/data/docs/types/DataTable.json +17 -2
- package/data/docs/types/DataTableBody.json +24 -24
- package/data/docs/types/DataTableHeader.json +31 -31
- package/data/docs/types/DataTableRoot.json +17 -2
- package/data/docs/types/DataTableTable.json +35 -20
- package/data/docs/types/DateInput.json +84 -84
- package/data/docs/types/DatePicker.json +65 -65
- package/data/docs/types/DateRangePicker.json +99 -99
- package/data/docs/types/DateRangePickerField.json +99 -99
- package/data/docs/types/DefaultPageBackLink.json +16 -16
- package/data/docs/types/DefaultPageRoot.json +2 -2
- package/data/docs/types/DialogCloseTrigger.json +87 -87
- package/data/docs/types/DialogTrigger.json +2 -2
- package/data/docs/types/DragAndDropItemData.json +9 -0
- package/data/docs/types/DragAndDropProps.json +9 -0
- package/data/docs/types/DraggableListField.json +159 -70
- package/data/docs/types/DraggableListItem.json +63 -63
- package/data/docs/types/DraggableListRoot.json +159 -70
- package/data/docs/types/DrawerCloseTrigger.json +87 -87
- package/data/docs/types/DrawerTrigger.json +2 -2
- package/data/docs/types/FieldErrors.json +2 -2
- package/data/docs/types/Flex.json +22 -22
- package/data/docs/types/Footer.json +6 -6
- package/data/docs/types/FormDialog.json +198 -0
- package/data/docs/types/FormFieldRoot.json +2 -2
- package/data/docs/types/Grid.json +24 -24
- package/data/docs/types/Group.json +12 -12
- package/data/docs/types/Header.json +6 -6
- package/data/docs/types/Heading.json +8 -8
- package/data/docs/types/Icon.json +4 -4
- package/data/docs/types/IconButton.json +97 -97
- package/data/docs/types/IconToggleButton.json +84 -84
- package/data/docs/types/Image.json +30 -30
- package/data/docs/types/Indicator.json +6 -6
- package/data/docs/types/InlineSvg.json +2 -2
- package/data/docs/types/Item.json +6 -6
- package/data/docs/types/Kbd.json +8 -8
- package/data/docs/types/Link.json +31 -31
- package/data/docs/types/ListIndicator.json +6 -6
- package/data/docs/types/ListItem.json +6 -6
- package/data/docs/types/ListRoot.json +10 -10
- package/data/docs/types/LoadingSpinner.json +2 -2
- package/data/docs/types/MakeElementFocusable.json +19 -19
- package/data/docs/types/MenuItem.json +75 -75
- package/data/docs/types/MenuRoot.json +63 -63
- package/data/docs/types/MenuSection.json +35 -54
- package/data/docs/types/MenuSubmenuTrigger.json +5 -5
- package/data/docs/types/MenuTrigger.json +102 -102
- package/data/docs/types/MultilineTextInput.json +134 -134
- package/data/docs/types/MultilineTextInputField.json +131 -131
- package/data/docs/types/NumberInput.json +100 -100
- package/data/docs/types/NumberInputField.json +95 -95
- package/data/docs/types/PageContentColumn.json +6 -6
- package/data/docs/types/PageContentRoot.json +6 -6
- package/data/docs/types/PasswordInput.json +129 -129
- package/data/docs/types/PasswordInputField.json +129 -129
- package/data/docs/types/ProgressBar.json +14 -14
- package/data/docs/types/PublicPageLayout.json +99 -0
- package/data/docs/types/RadioInputOption.json +64 -64
- package/data/docs/types/RadioInputRoot.json +55 -55
- package/data/docs/types/RangeCalendar.json +90 -71
- package/data/docs/types/Region.json +114 -0
- package/data/docs/types/RegionProvider.json +25 -0
- package/data/docs/types/RegionTarget.json +112 -0
- package/data/docs/types/RichTextInput.json +2 -2
- package/data/docs/types/Root.json +10 -10
- package/data/docs/types/Row.json +6 -6
- package/data/docs/types/SPLITTER_SIZE_TOKENS.json +9 -0
- package/data/docs/types/ScrollArea.json +2 -2
- package/data/docs/types/SearchInput.json +136 -136
- package/data/docs/types/SearchInputField.json +131 -131
- package/data/docs/types/SelectOption.json +66 -66
- package/data/docs/types/SelectOptionGroup.json +22 -22
- package/data/docs/types/SelectOptions.json +74 -74
- package/data/docs/types/SelectRoot.json +102 -102
- package/data/docs/types/Separator.json +4 -4
- package/data/docs/types/SimpleGrid.json +28 -28
- package/data/docs/types/SplitButton.json +12 -12
- package/data/docs/types/Splitter.json +12 -0
- package/data/docs/types/SplitterAside.json +27 -0
- package/data/docs/types/SplitterHandle.json +27 -0
- package/data/docs/types/SplitterMain.json +27 -0
- package/data/docs/types/SplitterRoot.json +271 -0
- package/data/docs/types/SplitterSizeToken.json +9 -0
- package/data/docs/types/Stack.json +2 -2
- package/data/docs/types/StepsNextTrigger.json +2 -2
- package/data/docs/types/StepsPrevTrigger.json +2 -2
- package/data/docs/types/StepsRoot.json +2 -2
- package/data/docs/types/StepsTrigger.json +2 -2
- package/data/docs/types/Switch.json +38 -38
- package/data/docs/types/TabNavItem.json +18 -18
- package/data/docs/types/TabNavRoot.json +2 -2
- package/data/docs/types/TableBody.json +6 -6
- package/data/docs/types/TableCaption.json +6 -6
- package/data/docs/types/TableCell.json +20 -20
- package/data/docs/types/TableColumn.json +8 -8
- package/data/docs/types/TableColumnGroup.json +8 -8
- package/data/docs/types/TableColumnHeader.json +18 -18
- package/data/docs/types/TableFooter.json +6 -6
- package/data/docs/types/TableHeader.json +6 -6
- package/data/docs/types/TableRoot.json +32 -32
- package/data/docs/types/TableRow.json +6 -6
- package/data/docs/types/TableScrollArea.json +6 -6
- package/data/docs/types/TabsTab.json +2 -2
- package/data/docs/types/TagGroupRoot.json +27 -27
- package/data/docs/types/TagGroupTag.json +68 -68
- package/data/docs/types/TagGroupTagList.json +18 -18
- package/data/docs/types/Text.json +8 -8
- package/data/docs/types/TextInput.json +132 -132
- package/data/docs/types/TextInputField.json +129 -129
- package/data/docs/types/TimeInput.json +78 -78
- package/data/docs/types/ToggleButton.json +86 -86
- package/data/docs/types/ToggleButtonGroupButton.json +33 -33
- package/data/docs/types/ToggleButtonGroupRoot.json +20 -20
- package/data/docs/types/Toolbar.json +12 -12
- package/data/docs/types/TooltipContent.json +31 -31
- package/data/docs/types/TooltipRoot.json +18 -18
- package/data/docs/types/Trigger.json +4 -4
- package/data/docs/types/UseDragAndDropOptions.json +9 -0
- package/data/docs/types/VisuallyHidden.json +7 -7
- package/data/docs/types/createArrayHandlers.json +12 -0
- package/data/docs/types/createItemsFromCsvDrop.json +833 -0
- package/data/docs/types/createItemsFromDirectoryDrop.json +833 -0
- package/data/docs/types/createItemsFromFileDrop.json +833 -0
- package/data/docs/types/createItemsFromImageDrop.json +833 -0
- package/data/docs/types/createItemsFromJsonDrop.json +833 -0
- package/data/docs/types/createItemsFromTextDrop.json +12 -0
- package/data/docs/types/createListDataHandlers.json +102 -0
- package/data/docs/types/manifest.json +29 -2
- package/data/docs/types/useDragAndDrop.json +174 -0
- package/data/docs/types/useRegion.json +1052 -0
- package/data/docs/types/useResponsiveSplitterSizes.json +143 -0
- package/package.json +6 -6
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"id": "Patterns-PublicPageLayout",
|
|
4
|
+
"title": "Public page layout",
|
|
5
|
+
"exportName": "PublicPageLayout",
|
|
6
|
+
"description": "A pre-built, centered layout for public-facing pages (login, registration, password reset) with slots for brand logo, welcome heading, main content, and legal footer.",
|
|
7
|
+
"lifecycleState": "Beta",
|
|
8
|
+
"order": 999,
|
|
9
|
+
"repoPath": "packages/nimbus/src/patterns/pages/public-page-layout/public-page-layout.mdx",
|
|
10
|
+
"menu": [
|
|
11
|
+
"Patterns",
|
|
12
|
+
"Pages",
|
|
13
|
+
"Public page layout"
|
|
14
|
+
],
|
|
15
|
+
"route": "patterns/pages/public-page-layout",
|
|
16
|
+
"tags": [
|
|
17
|
+
"component",
|
|
18
|
+
"pattern",
|
|
19
|
+
"pages",
|
|
20
|
+
"Flex",
|
|
21
|
+
"Stack",
|
|
22
|
+
"Heading",
|
|
23
|
+
"Text"
|
|
24
|
+
],
|
|
25
|
+
"toc": [
|
|
26
|
+
{
|
|
27
|
+
"value": "Overview",
|
|
28
|
+
"href": "#overview",
|
|
29
|
+
"depth": 2,
|
|
30
|
+
"numbering": [
|
|
31
|
+
1,
|
|
32
|
+
1
|
|
33
|
+
],
|
|
34
|
+
"parent": "root"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"value": "Anatomy",
|
|
38
|
+
"href": "#anatomy",
|
|
39
|
+
"depth": 2,
|
|
40
|
+
"numbering": [
|
|
41
|
+
1,
|
|
42
|
+
2
|
|
43
|
+
],
|
|
44
|
+
"parent": "root"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"value": "Usage",
|
|
48
|
+
"href": "#usage",
|
|
49
|
+
"depth": 2,
|
|
50
|
+
"numbering": [
|
|
51
|
+
1,
|
|
52
|
+
3
|
|
53
|
+
],
|
|
54
|
+
"parent": "root"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"value": "When to use",
|
|
58
|
+
"href": "#when-to-use",
|
|
59
|
+
"depth": 3,
|
|
60
|
+
"numbering": [
|
|
61
|
+
1,
|
|
62
|
+
3,
|
|
63
|
+
1
|
|
64
|
+
],
|
|
65
|
+
"parent": "root"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"value": "When not to use",
|
|
69
|
+
"href": "#when-not-to-use",
|
|
70
|
+
"depth": 3,
|
|
71
|
+
"numbering": [
|
|
72
|
+
1,
|
|
73
|
+
3,
|
|
74
|
+
2
|
|
75
|
+
],
|
|
76
|
+
"parent": "root"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"value": "Do",
|
|
80
|
+
"href": "#do",
|
|
81
|
+
"depth": 3,
|
|
82
|
+
"numbering": [
|
|
83
|
+
1,
|
|
84
|
+
3,
|
|
85
|
+
3
|
|
86
|
+
],
|
|
87
|
+
"parent": "root"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"value": "Don't",
|
|
91
|
+
"href": "#dont",
|
|
92
|
+
"depth": 3,
|
|
93
|
+
"numbering": [
|
|
94
|
+
1,
|
|
95
|
+
3,
|
|
96
|
+
4
|
|
97
|
+
],
|
|
98
|
+
"parent": "root"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"value": "Resources",
|
|
102
|
+
"href": "#resources",
|
|
103
|
+
"depth": 3,
|
|
104
|
+
"numbering": [
|
|
105
|
+
1,
|
|
106
|
+
3,
|
|
107
|
+
5
|
|
108
|
+
],
|
|
109
|
+
"parent": "root"
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
"layout": "app-frame",
|
|
113
|
+
"tabs": [
|
|
114
|
+
{
|
|
115
|
+
"key": "overview",
|
|
116
|
+
"title": "Overview",
|
|
117
|
+
"order": 0
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"key": "dev",
|
|
121
|
+
"title": "Implementation",
|
|
122
|
+
"order": 3
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
"mdx": "\n## Overview\n\nPublicPageLayout is a pattern that composes a centered, full-viewport-height\n layout for public-facing pages. It replaces Merchant Center Application Kit's\n `public-page-layout` component.\n\nThe layout vertically stacks: an optional brand logo, an optional welcome\nheading, the main content area, and an optional legal footer — all\nhorizontally centered with a constrained max-width.\n\n## Anatomy\n\n- A `<main>` landmark with an accessible label (default: \"Public page\")\n- Optional logo area, centered horizontally\n- Optional welcome heading rendered as an `<h2>`\n- Content area with a max-width controlled by `contentWidth`\n- Optional legal/footer message area\n\n## Usage\n\n### When to use\n\n- Login, registration, password reset, and other unauthenticated pages\n- Any public-facing page that needs a centered, single-column layout with\n branding\n\n### When not to use\n\n- Authenticated app pages — use `DefaultPage` or other app layout patterns\n- Pages that need a sidebar or multi-column chrome — compose Flex and Stack\n directly\n\n### Do\n\n- Pass a brand logo via the `logo` prop for consistent branding\n- Use `contentWidth=\"wide\"` when rendering two-column content\n- Provide a descriptive `aria-label` when the default \"Public page\" is too\n generic (e.g., `aria-label=\"Login page\"`)\n\n### Don't\n\n- Don't nest another `<main>` landmark inside children — PublicPageLayout\n already renders one\n- Don't use this for authenticated layouts that need navigation or sidebars\n\n### Resources\n\n- [Flex](/components/layout/flex) — layout primitive used internally\n- [Stack](/components/layout/stack) — vertical stacking primitive\n- [Heading](/components/typography/heading) — welcome message rendering\n- [Storybook](https://nimbus-storybook.vercel.app/?path=/docs/patterns-pages-publicpagelayout--docs)\n",
|
|
127
|
+
"views": {
|
|
128
|
+
"overview": {
|
|
129
|
+
"mdx": "\n## Overview\n\nPublicPageLayout is a pattern that composes a centered, full-viewport-height\n layout for public-facing pages. It replaces Merchant Center Application Kit's\n `public-page-layout` component.\n\nThe layout vertically stacks: an optional brand logo, an optional welcome\nheading, the main content area, and an optional legal footer — all\nhorizontally centered with a constrained max-width.\n\n## Anatomy\n\n- A `<main>` landmark with an accessible label (default: \"Public page\")\n- Optional logo area, centered horizontally\n- Optional welcome heading rendered as an `<h2>`\n- Content area with a max-width controlled by `contentWidth`\n- Optional legal/footer message area\n\n## Usage\n\n### When to use\n\n- Login, registration, password reset, and other unauthenticated pages\n- Any public-facing page that needs a centered, single-column layout with\n branding\n\n### When not to use\n\n- Authenticated app pages — use `DefaultPage` or other app layout patterns\n- Pages that need a sidebar or multi-column chrome — compose Flex and Stack\n directly\n\n### Do\n\n- Pass a brand logo via the `logo` prop for consistent branding\n- Use `contentWidth=\"wide\"` when rendering two-column content\n- Provide a descriptive `aria-label` when the default \"Public page\" is too\n generic (e.g., `aria-label=\"Login page\"`)\n\n### Don't\n\n- Don't nest another `<main>` landmark inside children — PublicPageLayout\n already renders one\n- Don't use this for authenticated layouts that need navigation or sidebars\n\n### Resources\n\n- [Flex](/components/layout/flex) — layout primitive used internally\n- [Stack](/components/layout/stack) — vertical stacking primitive\n- [Heading](/components/typography/heading) — welcome message rendering\n- [Storybook](https://nimbus-storybook.vercel.app/?path=/docs/patterns-pages-publicpagelayout--docs)\n",
|
|
130
|
+
"toc": [
|
|
131
|
+
{
|
|
132
|
+
"value": "Overview",
|
|
133
|
+
"href": "#overview",
|
|
134
|
+
"depth": 2,
|
|
135
|
+
"numbering": [
|
|
136
|
+
1,
|
|
137
|
+
1
|
|
138
|
+
],
|
|
139
|
+
"parent": "root"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"value": "Anatomy",
|
|
143
|
+
"href": "#anatomy",
|
|
144
|
+
"depth": 2,
|
|
145
|
+
"numbering": [
|
|
146
|
+
1,
|
|
147
|
+
2
|
|
148
|
+
],
|
|
149
|
+
"parent": "root"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"value": "Usage",
|
|
153
|
+
"href": "#usage",
|
|
154
|
+
"depth": 2,
|
|
155
|
+
"numbering": [
|
|
156
|
+
1,
|
|
157
|
+
3
|
|
158
|
+
],
|
|
159
|
+
"parent": "root"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"value": "When to use",
|
|
163
|
+
"href": "#when-to-use",
|
|
164
|
+
"depth": 3,
|
|
165
|
+
"numbering": [
|
|
166
|
+
1,
|
|
167
|
+
3,
|
|
168
|
+
1
|
|
169
|
+
],
|
|
170
|
+
"parent": "root"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"value": "When not to use",
|
|
174
|
+
"href": "#when-not-to-use",
|
|
175
|
+
"depth": 3,
|
|
176
|
+
"numbering": [
|
|
177
|
+
1,
|
|
178
|
+
3,
|
|
179
|
+
2
|
|
180
|
+
],
|
|
181
|
+
"parent": "root"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"value": "Do",
|
|
185
|
+
"href": "#do",
|
|
186
|
+
"depth": 3,
|
|
187
|
+
"numbering": [
|
|
188
|
+
1,
|
|
189
|
+
3,
|
|
190
|
+
3
|
|
191
|
+
],
|
|
192
|
+
"parent": "root"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"value": "Don't",
|
|
196
|
+
"href": "#dont",
|
|
197
|
+
"depth": 3,
|
|
198
|
+
"numbering": [
|
|
199
|
+
1,
|
|
200
|
+
3,
|
|
201
|
+
4
|
|
202
|
+
],
|
|
203
|
+
"parent": "root"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"value": "Resources",
|
|
207
|
+
"href": "#resources",
|
|
208
|
+
"depth": 3,
|
|
209
|
+
"numbering": [
|
|
210
|
+
1,
|
|
211
|
+
3,
|
|
212
|
+
5
|
|
213
|
+
],
|
|
214
|
+
"parent": "root"
|
|
215
|
+
}
|
|
216
|
+
]
|
|
217
|
+
},
|
|
218
|
+
"dev": {
|
|
219
|
+
"mdx": "\n## Getting started\n\n### Import\n\n```tsx\nimport { PublicPageLayout, type PublicPageLayoutProps } from \"@commercetools/nimbus\";\n```\n\n### Basic usage\n\nProvide `children` — all other props are optional.\n\n```jsx live-dev\nconst App = () => (\n <PublicPageLayout welcomeMessage=\"Welcome\">\n <Text>Login form goes here</Text>\n </PublicPageLayout>\n);\n```\n\n## Usage examples\n\n### With logo and welcome message\n\n```jsx live-dev\nconst App = () => (\n <PublicPageLayout\n logo={<Text fontWeight=\"bold\" fontSize=\"xl\">Brand</Text>}\n welcomeMessage=\"Welcome to the Merchant Center\"\n >\n <Text>Login form</Text>\n </PublicPageLayout>\n);\n```\n\n### Wide content for two columns\n\nUse `contentWidth=\"wide\"` when the content needs more horizontal space, for\nexample a two-column registration form.\n\n```jsx live-dev\nconst App = () => (\n <PublicPageLayout\n logo={<Text fontWeight=\"bold\" fontSize=\"xl\">Brand</Text>}\n welcomeMessage=\"Create your account\"\n contentWidth=\"wide\"\n >\n <PageContent.Root columns=\"1/1\">\n <PageContent.Column>\n <Text>Column one</Text>\n </PageContent.Column>\n <PageContent.Column>\n <Text>Column two</Text>\n </PageContent.Column>\n </PageContent.Root>\n </PublicPageLayout>\n);\n```\n\n### With legal footer\n\n```jsx live-dev\nconst App = () => (\n <PublicPageLayout\n logo={<Text fontWeight=\"bold\" fontSize=\"xl\">Brand</Text>}\n welcomeMessage=\"Sign in\"\n legalMessage={\n <Text fontSize=\"xs\" color=\"neutral.11\">\n © 2026 commercetools · Privacy Policy · Terms of Service\n </Text>\n }\n >\n <Text>Login form</Text>\n </PublicPageLayout>\n);\n```\n\n### With background style\n\nStyle props are forwarded to the outer `<main>` wrapper, so you can\ncustomize the background.\n\n```jsx live-dev\nconst App = () => (\n <PublicPageLayout\n welcomeMessage=\"Welcome\"\n bg=\"neutral.2\"\n >\n <Text>Content on a tinted background</Text>\n </PublicPageLayout>\n);\n```\n\n## Escape hatch: manual composition\n\nIf you need a layout structure that PublicPageLayout doesn't support (e.g.,\nside-by-side panels, custom spacing), consider using\n[PageContent](/components/layout/page-content) for a more flexible\ncolumn-based layout, or compose Flex and Stack directly for full control.\n\n**With PublicPageLayout:**\n\n```tsx\n<PublicPageLayout\n logo={<Icon size=\"xl\"><Storefront /></Icon>}\n welcomeMessage=\"Welcome to the Merchant Center\"\n legalMessage={<Text fontSize=\"xs\">© 2026 commercetools</Text>}\n>\n <LoginForm />\n</PublicPageLayout>\n```\n\n**Manual composition:**\n\n```tsx\n<Flex as=\"main\" aria-label=\"Login page\" width=\"100%\" minHeight=\"100vh\" paddingY=\"600\" justify=\"center\">\n <Stack gap=\"600\" alignItems=\"center\" width=\"100%\">\n <Flex justify=\"center\">\n <Icon size=\"xl\"><Storefront /></Icon>\n </Flex>\n <Heading as=\"h2\" textAlign=\"center\">\n Welcome to the Merchant Center\n </Heading>\n <Stack gap=\"600\" alignItems=\"center\" width=\"100%\">\n <Box maxW=\"sm\" width=\"100%\">\n <LoginForm />\n </Box>\n <Box maxW=\"sm\" textAlign=\"center\">\n <Text fontSize=\"xs\">© 2026 commercetools</Text>\n </Box>\n </Stack>\n </Stack>\n</Flex>\n```\n\n## Accessibility\n\n- The outer element renders as a `<main>` landmark with an `aria-label`\n (defaults to \"Public page\", overridable via the `aria-label` prop)\n- The welcome message renders as an `<h2>` heading for document outline\n- Do not nest another `<main>` inside children — one landmark per page\n\n## API reference\n\n<PropsTable id=\"PublicPageLayout\" />\n\n## Testing your implementation\n\nThese examples demonstrate how to test your integration of PublicPageLayout.\nThe component's own behavior is already tested by Nimbus.\n\n### Verify layout renders\n\n```tsx\nimport { render, screen } from \"@testing-library/react\";\nimport { PublicPageLayout } from \"@commercetools/nimbus\";\n\nit(\"renders the login page layout\", () => {\n render(\n <PublicPageLayout\n welcomeMessage=\"Welcome\"\n aria-label=\"Login page\"\n >\n <form>...</form>\n </PublicPageLayout>\n );\n\n expect(screen.getByRole(\"main\", { name: \"Login page\" })).toBeInTheDocument();\n expect(screen.getByRole(\"heading\", { name: \"Welcome\" })).toBeInTheDocument();\n});\n```\n\n## Resources\n\n- [Storybook](https://nimbus-storybook.vercel.app/?path=/docs/patterns-pages-publicpagelayout--docs)\n- [Flex Component](/components/layout/flex)\n- [Stack Component](/components/layout/stack)\n- [Heading Component](/components/typography/heading)\n",
|
|
220
|
+
"toc": [
|
|
221
|
+
{
|
|
222
|
+
"value": "Getting started",
|
|
223
|
+
"href": "#getting-started",
|
|
224
|
+
"depth": 2,
|
|
225
|
+
"numbering": [
|
|
226
|
+
1,
|
|
227
|
+
1
|
|
228
|
+
],
|
|
229
|
+
"parent": "root"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"value": "Import",
|
|
233
|
+
"href": "#import",
|
|
234
|
+
"depth": 3,
|
|
235
|
+
"numbering": [
|
|
236
|
+
1,
|
|
237
|
+
1,
|
|
238
|
+
1
|
|
239
|
+
],
|
|
240
|
+
"parent": "root"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"value": "Basic usage",
|
|
244
|
+
"href": "#basic-usage",
|
|
245
|
+
"depth": 3,
|
|
246
|
+
"numbering": [
|
|
247
|
+
1,
|
|
248
|
+
1,
|
|
249
|
+
2
|
|
250
|
+
],
|
|
251
|
+
"parent": "root"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"value": "Usage examples",
|
|
255
|
+
"href": "#usage-examples",
|
|
256
|
+
"depth": 2,
|
|
257
|
+
"numbering": [
|
|
258
|
+
1,
|
|
259
|
+
2
|
|
260
|
+
],
|
|
261
|
+
"parent": "root"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"value": "With logo and welcome message",
|
|
265
|
+
"href": "#with-logo-and-welcome-message",
|
|
266
|
+
"depth": 3,
|
|
267
|
+
"numbering": [
|
|
268
|
+
1,
|
|
269
|
+
2,
|
|
270
|
+
1
|
|
271
|
+
],
|
|
272
|
+
"parent": "root"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"value": "Wide content for two columns",
|
|
276
|
+
"href": "#wide-content-for-two-columns",
|
|
277
|
+
"depth": 3,
|
|
278
|
+
"numbering": [
|
|
279
|
+
1,
|
|
280
|
+
2,
|
|
281
|
+
2
|
|
282
|
+
],
|
|
283
|
+
"parent": "root"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"value": "With legal footer",
|
|
287
|
+
"href": "#with-legal-footer",
|
|
288
|
+
"depth": 3,
|
|
289
|
+
"numbering": [
|
|
290
|
+
1,
|
|
291
|
+
2,
|
|
292
|
+
3
|
|
293
|
+
],
|
|
294
|
+
"parent": "root"
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"value": "With background style",
|
|
298
|
+
"href": "#with-background-style",
|
|
299
|
+
"depth": 3,
|
|
300
|
+
"numbering": [
|
|
301
|
+
1,
|
|
302
|
+
2,
|
|
303
|
+
4
|
|
304
|
+
],
|
|
305
|
+
"parent": "root"
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"value": "Escape hatch: manual composition",
|
|
309
|
+
"href": "#escape-hatch-manual-composition",
|
|
310
|
+
"depth": 2,
|
|
311
|
+
"numbering": [
|
|
312
|
+
1,
|
|
313
|
+
3
|
|
314
|
+
],
|
|
315
|
+
"parent": "root"
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"value": "Accessibility",
|
|
319
|
+
"href": "#accessibility",
|
|
320
|
+
"depth": 2,
|
|
321
|
+
"numbering": [
|
|
322
|
+
1,
|
|
323
|
+
4
|
|
324
|
+
],
|
|
325
|
+
"parent": "root"
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"value": "API reference",
|
|
329
|
+
"href": "#api-reference",
|
|
330
|
+
"depth": 2,
|
|
331
|
+
"numbering": [
|
|
332
|
+
1,
|
|
333
|
+
5
|
|
334
|
+
],
|
|
335
|
+
"parent": "root"
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"value": "Testing your implementation",
|
|
339
|
+
"href": "#testing-your-implementation",
|
|
340
|
+
"depth": 2,
|
|
341
|
+
"numbering": [
|
|
342
|
+
1,
|
|
343
|
+
6
|
|
344
|
+
],
|
|
345
|
+
"parent": "root"
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"value": "Verify layout renders",
|
|
349
|
+
"href": "#verify-layout-renders",
|
|
350
|
+
"depth": 3,
|
|
351
|
+
"numbering": [
|
|
352
|
+
1,
|
|
353
|
+
6,
|
|
354
|
+
1
|
|
355
|
+
],
|
|
356
|
+
"parent": "root"
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"value": "Resources",
|
|
360
|
+
"href": "#resources",
|
|
361
|
+
"depth": 2,
|
|
362
|
+
"numbering": [
|
|
363
|
+
1,
|
|
364
|
+
7
|
|
365
|
+
],
|
|
366
|
+
"parent": "root"
|
|
367
|
+
}
|
|
368
|
+
]
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"id": "Patterns-Pages",
|
|
4
|
+
"title": "Pages",
|
|
5
|
+
"description": "Pre-built page layout patterns for common full-page structures",
|
|
6
|
+
"order": 4,
|
|
7
|
+
"repoPath": "packages/nimbus/src/docs/pages.mdx",
|
|
8
|
+
"menu": [
|
|
9
|
+
"Patterns",
|
|
10
|
+
"Pages"
|
|
11
|
+
],
|
|
12
|
+
"route": "patterns/pages",
|
|
13
|
+
"tags": [
|
|
14
|
+
"patterns",
|
|
15
|
+
"pages",
|
|
16
|
+
"layouts"
|
|
17
|
+
],
|
|
18
|
+
"toc": [
|
|
19
|
+
{
|
|
20
|
+
"value": "When to use page patterns",
|
|
21
|
+
"href": "#when-to-use-page-patterns",
|
|
22
|
+
"depth": 2,
|
|
23
|
+
"numbering": [
|
|
24
|
+
1,
|
|
25
|
+
1
|
|
26
|
+
],
|
|
27
|
+
"parent": "root"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"value": "Available page patterns",
|
|
31
|
+
"href": "#available-page-patterns",
|
|
32
|
+
"depth": 2,
|
|
33
|
+
"numbering": [
|
|
34
|
+
1,
|
|
35
|
+
2
|
|
36
|
+
],
|
|
37
|
+
"parent": "root"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"icon": "WebAsset",
|
|
41
|
+
"layout": "app-frame",
|
|
42
|
+
"tabs": [
|
|
43
|
+
{
|
|
44
|
+
"key": "overview",
|
|
45
|
+
"title": "Overview",
|
|
46
|
+
"order": 0
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
"mdx": "\n# Pages\n\nPage layout patterns provide pre-built, opinionated layouts for common full-page structures. Use them to avoid hand-composing flex and stack primitives for pages that follow a well-established shape.\n\n## When to use page patterns\n\nPage patterns are ideal for:\n- Public-facing pages (login, registration, password reset) with a centered, single-column layout\n- Reducing layout boilerplate for pages that appear across multiple apps\n- Ensuring consistent landmark structure and accessibility across page types\n\nFor pages with bespoke chrome, sidebars, or multi-column structures, compose `Flex` and `Stack` directly.\n\n## Available page patterns\n\n<CategoryOverview variant=\"list\" />\n",
|
|
51
|
+
"views": {
|
|
52
|
+
"overview": {
|
|
53
|
+
"mdx": "\n# Pages\n\nPage layout patterns provide pre-built, opinionated layouts for common full-page structures. Use them to avoid hand-composing flex and stack primitives for pages that follow a well-established shape.\n\n## When to use page patterns\n\nPage patterns are ideal for:\n- Public-facing pages (login, registration, password reset) with a centered, single-column layout\n- Reducing layout boilerplate for pages that appear across multiple apps\n- Ensuring consistent landmark structure and accessibility across page types\n\nFor pages with bespoke chrome, sidebars, or multi-column structures, compose `Flex` and `Stack` directly.\n\n## Available page patterns\n\n<CategoryOverview variant=\"list\" />\n",
|
|
54
|
+
"toc": [
|
|
55
|
+
{
|
|
56
|
+
"value": "When to use page patterns",
|
|
57
|
+
"href": "#when-to-use-page-patterns",
|
|
58
|
+
"depth": 2,
|
|
59
|
+
"numbering": [
|
|
60
|
+
1,
|
|
61
|
+
1
|
|
62
|
+
],
|
|
63
|
+
"parent": "root"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"value": "Available page patterns",
|
|
67
|
+
"href": "#available-page-patterns",
|
|
68
|
+
"depth": 2,
|
|
69
|
+
"numbering": [
|
|
70
|
+
1,
|
|
71
|
+
2
|
|
72
|
+
],
|
|
73
|
+
"parent": "root"
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|