@commercetools/nimbus-mcp 0.1.0 → 2.11.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.
Files changed (453) hide show
  1. package/README.md +63 -14
  2. package/data/docs/route-manifest.json +10998 -0
  3. package/data/docs/routes/components-accessibility-visually-hidden.json +388 -0
  4. package/data/docs/routes/components-accessibility.json +34 -0
  5. package/data/docs/routes/components-buttons-button.json +715 -0
  6. package/data/docs/routes/components-buttons-icon-button.json +852 -0
  7. package/data/docs/routes/components-buttons-icon-toggle-button.json +594 -0
  8. package/data/docs/routes/components-buttons-split-button.json +670 -0
  9. package/data/docs/routes/components-buttons-toggle-button-group.json +722 -0
  10. package/data/docs/routes/components-buttons-toggle-button.json +689 -0
  11. package/data/docs/routes/components-buttons.json +36 -0
  12. package/data/docs/routes/components-data-display-badge.json +555 -0
  13. package/data/docs/routes/components-data-display-card.json +338 -0
  14. package/data/docs/routes/components-data-display-data-table.json +855 -0
  15. package/data/docs/routes/components-data-display-draggable-list.json +596 -0
  16. package/data/docs/routes/components-data-display-table.json +472 -0
  17. package/data/docs/routes/components-data-display-tag-group.json +535 -0
  18. package/data/docs/routes/components-data-display.json +34 -0
  19. package/data/docs/routes/components-feedback-alert.json +696 -0
  20. package/data/docs/routes/components-feedback-dialog.json +682 -0
  21. package/data/docs/routes/components-feedback-drawer.json +600 -0
  22. package/data/docs/routes/components-feedback-loading-spinner.json +415 -0
  23. package/data/docs/routes/components-feedback-progress-bar.json +661 -0
  24. package/data/docs/routes/components-feedback-toast.json +1040 -0
  25. package/data/docs/routes/components-feedback-tooltip.json +510 -0
  26. package/data/docs/routes/components-feedback.json +34 -0
  27. package/data/docs/routes/components-forms-field-errors.json +557 -0
  28. package/data/docs/routes/components-forms-form-field.json +848 -0
  29. package/data/docs/routes/components-forms-group.json +427 -0
  30. package/data/docs/routes/components-forms-localized-field.json +770 -0
  31. package/data/docs/routes/components-forms.json +37 -0
  32. package/data/docs/routes/components-inputs-calendar.json +611 -0
  33. package/data/docs/routes/components-inputs-checkbox.json +774 -0
  34. package/data/docs/routes/components-inputs-combo-box.json +761 -0
  35. package/data/docs/routes/components-inputs-date-input.json +628 -0
  36. package/data/docs/routes/components-inputs-date-picker.json +709 -0
  37. package/data/docs/routes/components-inputs-date-range-picker.json +599 -0
  38. package/data/docs/routes/components-inputs-money-input.json +721 -0
  39. package/data/docs/routes/components-inputs-multiline-text-input.json +611 -0
  40. package/data/docs/routes/components-inputs-number-input.json +647 -0
  41. package/data/docs/routes/components-inputs-password-input.json +576 -0
  42. package/data/docs/routes/components-inputs-radio-input.json +583 -0
  43. package/data/docs/routes/components-inputs-range-calendar.json +607 -0
  44. package/data/docs/routes/components-inputs-rich-text-input.json +599 -0
  45. package/data/docs/routes/components-inputs-scoped-search-input.json +570 -0
  46. package/data/docs/routes/components-inputs-search-input.json +588 -0
  47. package/data/docs/routes/components-inputs-select-input.json +960 -0
  48. package/data/docs/routes/components-inputs-switch.json +720 -0
  49. package/data/docs/routes/components-inputs-text-input.json +566 -0
  50. package/data/docs/routes/components-inputs-time-input.json +775 -0
  51. package/data/docs/routes/components-inputs.json +34 -0
  52. package/data/docs/routes/components-layout-box.json +501 -0
  53. package/data/docs/routes/components-layout-defaultpage.json +748 -0
  54. package/data/docs/routes/components-layout-flex.json +587 -0
  55. package/data/docs/routes/components-layout-grid.json +393 -0
  56. package/data/docs/routes/components-layout-modalpage.json +716 -0
  57. package/data/docs/routes/components-layout-pagecontent.json +673 -0
  58. package/data/docs/routes/components-layout-scrollarea.json +428 -0
  59. package/data/docs/routes/components-layout-separator.json +461 -0
  60. package/data/docs/routes/components-layout-simple-grid.json +519 -0
  61. package/data/docs/routes/components-layout-spacer.json +573 -0
  62. package/data/docs/routes/components-layout-stack.json +481 -0
  63. package/data/docs/routes/components-layout.json +34 -0
  64. package/data/docs/routes/components-media-avatar.json +427 -0
  65. package/data/docs/routes/components-media-icon.json +663 -0
  66. package/data/docs/routes/components-media-image.json +511 -0
  67. package/data/docs/routes/components-media-inline-svg.json +586 -0
  68. package/data/docs/routes/components-media.json +34 -0
  69. package/data/docs/routes/components-navigation-accordion.json +643 -0
  70. package/data/docs/routes/components-navigation-collapsible-motion.json +628 -0
  71. package/data/docs/routes/components-navigation-link.json +554 -0
  72. package/data/docs/routes/components-navigation-menu.json +546 -0
  73. package/data/docs/routes/components-navigation-pagination.json +502 -0
  74. package/data/docs/routes/components-navigation-steps.json +629 -0
  75. package/data/docs/routes/components-navigation-tabnav.json +546 -0
  76. package/data/docs/routes/components-navigation-tabs.json +635 -0
  77. package/data/docs/routes/components-navigation-toolbar.json +549 -0
  78. package/data/docs/routes/components-navigation.json +34 -0
  79. package/data/docs/routes/components-typography-code.json +39 -0
  80. package/data/docs/routes/components-typography-heading.json +402 -0
  81. package/data/docs/routes/components-typography-kbd.json +399 -0
  82. package/data/docs/routes/components-typography-list.json +593 -0
  83. package/data/docs/routes/components-typography-text.json +444 -0
  84. package/data/docs/routes/components-typography.json +34 -0
  85. package/data/docs/routes/components-utilities-nimbus-i18n-provider.json +295 -0
  86. package/data/docs/routes/components-utilities-nimbus-provider.json +663 -0
  87. package/data/docs/routes/components-utilities.json +34 -0
  88. package/data/docs/routes/components.json +33 -0
  89. package/data/docs/routes/home-contribute-adrs-adr0001-consumer-component-apis.json +314 -0
  90. package/data/docs/routes/home-contribute-adrs-adr0002-compound-component-extraction.json +160 -0
  91. package/data/docs/routes/home-contribute-adrs-adr0003-component-lifecycle-states.json +460 -0
  92. package/data/docs/routes/home-contribute-adrs.json +205 -0
  93. package/data/docs/routes/home-contribute-development-setup.json +213 -0
  94. package/data/docs/routes/home-contribute-stats.json +36 -0
  95. package/data/docs/routes/home-contribute.json +36 -0
  96. package/data/docs/routes/home-design-tokens-aspect-ratios.json +36 -0
  97. package/data/docs/routes/home-design-tokens-borders.json +35 -0
  98. package/data/docs/routes/home-design-tokens-colors.json +157 -0
  99. package/data/docs/routes/home-design-tokens-other-animations.json +119 -0
  100. package/data/docs/routes/home-design-tokens-other-blurs.json +36 -0
  101. package/data/docs/routes/home-design-tokens-other-breakpoints.json +61 -0
  102. package/data/docs/routes/home-design-tokens-other-cursors.json +36 -0
  103. package/data/docs/routes/home-design-tokens-other-z-indices.json +39 -0
  104. package/data/docs/routes/home-design-tokens-other.json +35 -0
  105. package/data/docs/routes/home-design-tokens-radii.json +59 -0
  106. package/data/docs/routes/home-design-tokens-shadows.json +57 -0
  107. package/data/docs/routes/home-design-tokens-sizes.json +137 -0
  108. package/data/docs/routes/home-design-tokens-spacing.json +36 -0
  109. package/data/docs/routes/home-design-tokens-typography.json +184 -0
  110. package/data/docs/routes/home-design-tokens.json +34 -0
  111. package/data/docs/routes/home-getting-started-core-concepts.json +301 -0
  112. package/data/docs/routes/home-getting-started-installation.json +621 -0
  113. package/data/docs/routes/home-getting-started-mcp-server-overview.json +139 -0
  114. package/data/docs/routes/home-getting-started-mcp-server-setup.json +316 -0
  115. package/data/docs/routes/home-getting-started-release-process.json +294 -0
  116. package/data/docs/routes/home-getting-started-testing-setup.json +296 -0
  117. package/data/docs/routes/home-playground-markdown.json +638 -0
  118. package/data/docs/routes/home-playground-toc.json +169 -0
  119. package/data/docs/routes/home-playground.json +34 -0
  120. package/data/docs/routes/home-style-props-background.json +236 -0
  121. package/data/docs/routes/home-style-props-border.json +310 -0
  122. package/data/docs/routes/home-style-props-display.json +120 -0
  123. package/data/docs/routes/home-style-props-effects.json +116 -0
  124. package/data/docs/routes/home-style-props-filters.json +396 -0
  125. package/data/docs/routes/home-style-props-flex-and-grid.json +496 -0
  126. package/data/docs/routes/home-style-props-interactivity.json +356 -0
  127. package/data/docs/routes/home-style-props-layout.json +422 -0
  128. package/data/docs/routes/home-style-props-list.json +116 -0
  129. package/data/docs/routes/home-style-props-sizing.json +244 -0
  130. package/data/docs/routes/home-style-props-spacing.json +228 -0
  131. package/data/docs/routes/home-style-props-svg.json +96 -0
  132. package/data/docs/routes/home-style-props-tables.json +116 -0
  133. package/data/docs/routes/home-style-props-transforms.json +216 -0
  134. package/data/docs/routes/home-style-props-transitions.json +216 -0
  135. package/data/docs/routes/home-style-props-typography.json +536 -0
  136. package/data/docs/routes/home-style-props.json +33 -0
  137. package/data/docs/routes/home.json +32 -0
  138. package/data/docs/routes/hooks-usecopytoclipboard.json +76 -0
  139. package/data/docs/routes/hooks-usehotkeys.json +117 -0
  140. package/data/docs/routes/hooks.json +33 -0
  141. package/data/docs/routes/icons.json +32 -0
  142. package/data/docs/routes/patterns-fields-date-range-picker-field.json +393 -0
  143. package/data/docs/routes/patterns-fields-money-input-field.json +415 -0
  144. package/data/docs/routes/patterns-fields-multiline-text-input-field.json +404 -0
  145. package/data/docs/routes/patterns-fields-number-input-field.json +470 -0
  146. package/data/docs/routes/patterns-fields-password-input-field.json +319 -0
  147. package/data/docs/routes/patterns-fields-search-input-field.json +382 -0
  148. package/data/docs/routes/patterns-fields-text-input-field.json +404 -0
  149. package/data/docs/routes/patterns-fields.json +78 -0
  150. package/data/docs/routes/patterns.json +34 -0
  151. package/data/docs/search-index.json +1 -0
  152. package/data/docs/types/Accordion.json +12 -0
  153. package/data/docs/types/AccordionContent.json +286 -0
  154. package/data/docs/types/AccordionHeader.json +891 -0
  155. package/data/docs/types/AccordionHeaderRightContent.json +27 -0
  156. package/data/docs/types/AccordionItem.json +242 -0
  157. package/data/docs/types/AccordionRoot.json +162 -0
  158. package/data/docs/types/Alert.json +12 -0
  159. package/data/docs/types/AlertActions.json +11 -0
  160. package/data/docs/types/AlertDescription.json +118 -0
  161. package/data/docs/types/AlertDismissButton.json +937 -0
  162. package/data/docs/types/AlertRoot.json +42 -0
  163. package/data/docs/types/AlertTitle.json +118 -0
  164. package/data/docs/types/Avatar.json +125 -0
  165. package/data/docs/types/Badge.json +64 -0
  166. package/data/docs/types/Body.json +67 -0
  167. package/data/docs/types/Box.json +85 -0
  168. package/data/docs/types/Button.json +1015 -0
  169. package/data/docs/types/Calendar.json +565 -0
  170. package/data/docs/types/Caption.json +67 -0
  171. package/data/docs/types/Card.json +12 -0
  172. package/data/docs/types/CardContent.json +27 -0
  173. package/data/docs/types/CardHeader.json +27 -0
  174. package/data/docs/types/CardRoot.json +106 -0
  175. package/data/docs/types/Cell.json +227 -0
  176. package/data/docs/types/Checkbox.json +897 -0
  177. package/data/docs/types/Code.json +112 -0
  178. package/data/docs/types/CollapsibleMotionContent.json +35 -0
  179. package/data/docs/types/CollapsibleMotionRoot.json +99 -0
  180. package/data/docs/types/CollapsibleMotionTrigger.json +71 -0
  181. package/data/docs/types/Column.json +101 -0
  182. package/data/docs/types/ColumnGroup.json +101 -0
  183. package/data/docs/types/ColumnHeader.json +193 -0
  184. package/data/docs/types/ComboBoxListBox.json +751 -0
  185. package/data/docs/types/ComboBoxOption.json +672 -0
  186. package/data/docs/types/ComboBoxPopover.json +786 -0
  187. package/data/docs/types/ComboBoxRoot.json +747 -0
  188. package/data/docs/types/ComboBoxSection.json +277 -0
  189. package/data/docs/types/ComboBoxTrigger.json +70 -0
  190. package/data/docs/types/Content.json +33 -0
  191. package/data/docs/types/DataTable.json +596 -0
  192. package/data/docs/types/DataTableBody.json +223 -0
  193. package/data/docs/types/DataTableFooter.json +27 -0
  194. package/data/docs/types/DataTableHeader.json +269 -0
  195. package/data/docs/types/DataTableManager.json +11 -0
  196. package/data/docs/types/DataTableRoot.json +590 -0
  197. package/data/docs/types/DataTableTable.json +271 -0
  198. package/data/docs/types/DateInput.json +792 -0
  199. package/data/docs/types/DatePicker.json +700 -0
  200. package/data/docs/types/DateRangePicker.json +936 -0
  201. package/data/docs/types/DateRangePickerField.json +1047 -0
  202. package/data/docs/types/DefaultPage.json +12 -0
  203. package/data/docs/types/DefaultPageActions.json +27 -0
  204. package/data/docs/types/DefaultPageBackLink.json +213 -0
  205. package/data/docs/types/DefaultPageContent.json +27 -0
  206. package/data/docs/types/DefaultPageFooter.json +27 -0
  207. package/data/docs/types/DefaultPageHeader.json +27 -0
  208. package/data/docs/types/DefaultPageRoot.json +106 -0
  209. package/data/docs/types/DefaultPageSubtitle.json +27 -0
  210. package/data/docs/types/DefaultPageTabNav.json +28 -0
  211. package/data/docs/types/DefaultPageTitle.json +27 -0
  212. package/data/docs/types/DialogBody.json +27 -0
  213. package/data/docs/types/DialogCloseTrigger.json +939 -0
  214. package/data/docs/types/DialogContent.json +27 -0
  215. package/data/docs/types/DialogFooter.json +27 -0
  216. package/data/docs/types/DialogHeader.json +27 -0
  217. package/data/docs/types/DialogRoot.json +138 -0
  218. package/data/docs/types/DialogTitle.json +27 -0
  219. package/data/docs/types/DialogTrigger.json +80 -0
  220. package/data/docs/types/DraggableList.json +12 -0
  221. package/data/docs/types/DraggableListField.json +894 -0
  222. package/data/docs/types/DraggableListItem.json +574 -0
  223. package/data/docs/types/DraggableListRoot.json +745 -0
  224. package/data/docs/types/Drawer.json +12 -0
  225. package/data/docs/types/DrawerBody.json +27 -0
  226. package/data/docs/types/DrawerCloseTrigger.json +939 -0
  227. package/data/docs/types/DrawerContent.json +27 -0
  228. package/data/docs/types/DrawerFooter.json +27 -0
  229. package/data/docs/types/DrawerHeader.json +27 -0
  230. package/data/docs/types/DrawerRoot.json +142 -0
  231. package/data/docs/types/DrawerTitle.json +27 -0
  232. package/data/docs/types/DrawerTrigger.json +80 -0
  233. package/data/docs/types/FieldErrors.getBuiltInMessage.json +11 -0
  234. package/data/docs/types/FieldErrors.getCustomMessage.json +9 -0
  235. package/data/docs/types/FieldErrors.json +109 -0
  236. package/data/docs/types/Flex.json +238 -0
  237. package/data/docs/types/Footer.json +67 -0
  238. package/data/docs/types/FormFieldDescription.json +11 -0
  239. package/data/docs/types/FormFieldError.json +11 -0
  240. package/data/docs/types/FormFieldInfoBox.json +27 -0
  241. package/data/docs/types/FormFieldInput.json +11 -0
  242. package/data/docs/types/FormFieldLabel.json +11 -0
  243. package/data/docs/types/FormFieldRoot.json +148 -0
  244. package/data/docs/types/Grid.json +253 -0
  245. package/data/docs/types/GridProps.json +11 -0
  246. package/data/docs/types/Group.json +143 -0
  247. package/data/docs/types/Header.json +67 -0
  248. package/data/docs/types/Heading.json +109 -0
  249. package/data/docs/types/Icon.json +112 -0
  250. package/data/docs/types/IconButton.json +1019 -0
  251. package/data/docs/types/IconToggleButton.json +787 -0
  252. package/data/docs/types/Image.json +373 -0
  253. package/data/docs/types/Indicator.json +67 -0
  254. package/data/docs/types/InlineSvg.json +98 -0
  255. package/data/docs/types/Item.json +67 -0
  256. package/data/docs/types/Kbd.json +118 -0
  257. package/data/docs/types/Link.json +380 -0
  258. package/data/docs/types/List.json +12 -0
  259. package/data/docs/types/ListIndicator.json +70 -0
  260. package/data/docs/types/ListItem.json +70 -0
  261. package/data/docs/types/ListRoot.json +124 -0
  262. package/data/docs/types/LoadingSpinner.json +87 -0
  263. package/data/docs/types/LocalizedField.json +460 -0
  264. package/data/docs/types/LocalizedStringFormatter.json +9 -0
  265. package/data/docs/types/MakeElementFocusable.json +196 -0
  266. package/data/docs/types/MenuContent.json +111 -0
  267. package/data/docs/types/MenuItem.json +671 -0
  268. package/data/docs/types/MenuRoot.json +670 -0
  269. package/data/docs/types/MenuSection.json +364 -0
  270. package/data/docs/types/MenuSubmenu.json +111 -0
  271. package/data/docs/types/MenuSubmenuTrigger.json +67 -0
  272. package/data/docs/types/MenuTrigger.json +906 -0
  273. package/data/docs/types/ModalPage.json +12 -0
  274. package/data/docs/types/ModalPageActions.json +27 -0
  275. package/data/docs/types/ModalPageContent.json +27 -0
  276. package/data/docs/types/ModalPageFooter.json +27 -0
  277. package/data/docs/types/ModalPageHeader.json +27 -0
  278. package/data/docs/types/ModalPageRoot.json +87 -0
  279. package/data/docs/types/ModalPageSubtitle.json +27 -0
  280. package/data/docs/types/ModalPageTabNav.json +28 -0
  281. package/data/docs/types/ModalPageTitle.json +27 -0
  282. package/data/docs/types/ModalPageTopBar.json +57 -0
  283. package/data/docs/types/MoneyInput.isEmpty.json +40 -0
  284. package/data/docs/types/MoneyInput.json +282 -0
  285. package/data/docs/types/MoneyInputField.json +379 -0
  286. package/data/docs/types/MoneyInputFieldProps.json +9 -0
  287. package/data/docs/types/MultilineTextInput.json +1194 -0
  288. package/data/docs/types/MultilineTextInputField.json +1269 -0
  289. package/data/docs/types/MultilineTextInputFieldProps.json +9 -0
  290. package/data/docs/types/NimbusI18nProvider.json +42 -0
  291. package/data/docs/types/NimbusI18nProviderProps.json +9 -0
  292. package/data/docs/types/NimbusProvider.json +270 -0
  293. package/data/docs/types/NumberInput.json +952 -0
  294. package/data/docs/types/NumberInputField.json +1004 -0
  295. package/data/docs/types/NumberInputFieldProps.json +9 -0
  296. package/data/docs/types/PageContent.json +11 -0
  297. package/data/docs/types/PageContentColumn.json +99 -0
  298. package/data/docs/types/PageContentRoot.json +114 -0
  299. package/data/docs/types/Pagination.json +159 -0
  300. package/data/docs/types/PasswordInput.json +1120 -0
  301. package/data/docs/types/PasswordInputField.json +1216 -0
  302. package/data/docs/types/PasswordInputFieldProps.json +9 -0
  303. package/data/docs/types/ProgressBar.json +280 -0
  304. package/data/docs/types/RadioInputOption.json +550 -0
  305. package/data/docs/types/RadioInputRoot.json +514 -0
  306. package/data/docs/types/RangeCalendar.json +618 -0
  307. package/data/docs/types/RichTextInput.json +134 -0
  308. package/data/docs/types/Root.json +122 -0
  309. package/data/docs/types/Row.json +67 -0
  310. package/data/docs/types/ScopedSearchInput.isEmpty.json +40 -0
  311. package/data/docs/types/ScopedSearchInput.json +253 -0
  312. package/data/docs/types/ScrollArea.json +179 -0
  313. package/data/docs/types/ScrollAreaElementIds.json +9 -0
  314. package/data/docs/types/ScrollAreaProps.json +9 -0
  315. package/data/docs/types/SearchInput.json +1165 -0
  316. package/data/docs/types/SearchInputField.json +1240 -0
  317. package/data/docs/types/Select.json +12 -0
  318. package/data/docs/types/SelectOption.json +572 -0
  319. package/data/docs/types/SelectOptionGroup.json +215 -0
  320. package/data/docs/types/SelectOptions.json +693 -0
  321. package/data/docs/types/SelectRoot.json +926 -0
  322. package/data/docs/types/Separator.json +65 -0
  323. package/data/docs/types/SimpleGrid.json +291 -0
  324. package/data/docs/types/Spacer.json +27 -0
  325. package/data/docs/types/SpacerProps.json +9 -0
  326. package/data/docs/types/SplitButton.json +203 -0
  327. package/data/docs/types/Stack.json +144 -0
  328. package/data/docs/types/Steps.json +12 -0
  329. package/data/docs/types/StepsChangeDetails.json +9 -0
  330. package/data/docs/types/StepsCompletedContent.json +28 -0
  331. package/data/docs/types/StepsCompletedContentProps.json +9 -0
  332. package/data/docs/types/StepsContent.json +43 -0
  333. package/data/docs/types/StepsContentProps.json +9 -0
  334. package/data/docs/types/StepsDescription.json +28 -0
  335. package/data/docs/types/StepsDescriptionProps.json +9 -0
  336. package/data/docs/types/StepsIndicator.json +28 -0
  337. package/data/docs/types/StepsIndicatorProps.json +9 -0
  338. package/data/docs/types/StepsItem.json +43 -0
  339. package/data/docs/types/StepsItemProps.json +9 -0
  340. package/data/docs/types/StepsList.json +28 -0
  341. package/data/docs/types/StepsListProps.json +9 -0
  342. package/data/docs/types/StepsNextTrigger.json +62 -0
  343. package/data/docs/types/StepsNextTriggerProps.json +9 -0
  344. package/data/docs/types/StepsNumber.json +28 -0
  345. package/data/docs/types/StepsNumberProps.json +9 -0
  346. package/data/docs/types/StepsPrevTrigger.json +62 -0
  347. package/data/docs/types/StepsPrevTriggerProps.json +9 -0
  348. package/data/docs/types/StepsRoot.json +183 -0
  349. package/data/docs/types/StepsRootProps.json +11 -0
  350. package/data/docs/types/StepsSeparator.json +28 -0
  351. package/data/docs/types/StepsSeparatorProps.json +9 -0
  352. package/data/docs/types/StepsStatus.json +57 -0
  353. package/data/docs/types/StepsStatusProps.json +9 -0
  354. package/data/docs/types/StepsTitle.json +28 -0
  355. package/data/docs/types/StepsTitleProps.json +9 -0
  356. package/data/docs/types/StepsTrigger.json +47 -0
  357. package/data/docs/types/StepsTriggerProps.json +9 -0
  358. package/data/docs/types/Switch.json +371 -0
  359. package/data/docs/types/TabListProps.json +9 -0
  360. package/data/docs/types/TabNav.json +12 -0
  361. package/data/docs/types/TabNavItem.json +300 -0
  362. package/data/docs/types/TabNavItemProps.json +9 -0
  363. package/data/docs/types/TabNavProps.json +9 -0
  364. package/data/docs/types/TabNavRoot.json +80 -0
  365. package/data/docs/types/TabPanelProps.json +9 -0
  366. package/data/docs/types/TabPanelsProps.json +9 -0
  367. package/data/docs/types/TabProps.json +9 -0
  368. package/data/docs/types/Table.json +9 -0
  369. package/data/docs/types/TableBody.json +67 -0
  370. package/data/docs/types/TableBodyProps.json +9 -0
  371. package/data/docs/types/TableCaption.json +67 -0
  372. package/data/docs/types/TableCaptionProps.json +9 -0
  373. package/data/docs/types/TableCell.json +227 -0
  374. package/data/docs/types/TableCellProps.json +9 -0
  375. package/data/docs/types/TableColumn.json +101 -0
  376. package/data/docs/types/TableColumnGroup.json +101 -0
  377. package/data/docs/types/TableColumnGroupProps.json +9 -0
  378. package/data/docs/types/TableColumnHeader.json +193 -0
  379. package/data/docs/types/TableColumnHeaderProps.json +9 -0
  380. package/data/docs/types/TableColumnProps.json +9 -0
  381. package/data/docs/types/TableFooter.json +67 -0
  382. package/data/docs/types/TableFooterProps.json +9 -0
  383. package/data/docs/types/TableHeader.json +67 -0
  384. package/data/docs/types/TableHeaderProps.json +9 -0
  385. package/data/docs/types/TableRoot.json +365 -0
  386. package/data/docs/types/TableRootProps.json +12 -0
  387. package/data/docs/types/TableRow.json +67 -0
  388. package/data/docs/types/TableRowProps.json +9 -0
  389. package/data/docs/types/TableScrollArea.json +82 -0
  390. package/data/docs/types/TableScrollAreaProps.json +9 -0
  391. package/data/docs/types/Tabs.json +12 -0
  392. package/data/docs/types/TabsList.json +110 -0
  393. package/data/docs/types/TabsPanel.json +112 -0
  394. package/data/docs/types/TabsPanels.json +108 -0
  395. package/data/docs/types/TabsRoot.json +211 -0
  396. package/data/docs/types/TabsTab.json +174 -0
  397. package/data/docs/types/TagGroup.json +12 -0
  398. package/data/docs/types/TagGroupRoot.json +306 -0
  399. package/data/docs/types/TagGroupTag.json +595 -0
  400. package/data/docs/types/TagGroupTagList.json +166 -0
  401. package/data/docs/types/Text.json +119 -0
  402. package/data/docs/types/TextInput.json +1156 -0
  403. package/data/docs/types/TextInputField.json +1263 -0
  404. package/data/docs/types/TimeInput.json +752 -0
  405. package/data/docs/types/ToastAction.json +9 -0
  406. package/data/docs/types/ToastManagerApi.json +9 -0
  407. package/data/docs/types/ToastOptions.json +9 -0
  408. package/data/docs/types/ToastOutlet.json +12 -0
  409. package/data/docs/types/ToastPlacement.json +9 -0
  410. package/data/docs/types/ToastPromiseOptions.json +9 -0
  411. package/data/docs/types/ToastType.json +9 -0
  412. package/data/docs/types/ToastVariant.json +9 -0
  413. package/data/docs/types/ToggleButton.json +789 -0
  414. package/data/docs/types/ToggleButtonGroup.json +9 -0
  415. package/data/docs/types/ToggleButtonGroupButton.json +331 -0
  416. package/data/docs/types/ToggleButtonGroupRoot.json +269 -0
  417. package/data/docs/types/Toolbar.json +176 -0
  418. package/data/docs/types/Tooltip.json +12 -0
  419. package/data/docs/types/TooltipContent.json +372 -0
  420. package/data/docs/types/TooltipRoot.json +179 -0
  421. package/data/docs/types/Trigger.json +69 -0
  422. package/data/docs/types/VisuallyHidden.json +93 -0
  423. package/data/docs/types/__object.json +12 -0
  424. package/data/docs/types/filters.json +11 -0
  425. package/data/docs/types/manifest.json +280 -0
  426. package/data/docs/types/toast.json +234 -0
  427. package/data/docs/types/useColorMode.json +13 -0
  428. package/data/docs/types/useColorModeValue.json +13 -0
  429. package/data/docs/types/useColorScheme.json +12 -0
  430. package/data/docs/types/useLocalizedStringFormatter.json +14 -0
  431. package/data/icons.json +21940 -0
  432. package/data/tokens.json +40061 -0
  433. package/dist/index.js +2516 -17
  434. package/package.json +25 -6
  435. package/dist/data-loader.d.ts +0 -102
  436. package/dist/data-loader.js +0 -104
  437. package/dist/index.d.ts +0 -13
  438. package/dist/server.d.ts +0 -9
  439. package/dist/server.js +0 -22
  440. package/dist/server.spec.d.ts +0 -1
  441. package/dist/server.spec.js +0 -69
  442. package/dist/tools/list-components.d.ts +0 -9
  443. package/dist/tools/list-components.js +0 -42
  444. package/dist/types.d.ts +0 -28
  445. package/dist/types.js +0 -4
  446. package/src/data-loader.ts +0 -226
  447. package/src/index.ts +0 -29
  448. package/src/server.spec.ts +0 -86
  449. package/src/server.ts +0 -28
  450. package/src/tools/list-components.ts +0 -49
  451. package/src/types.ts +0 -31
  452. package/tsconfig.json +0 -14
  453. package/vitest.config.ts +0 -9
@@ -0,0 +1,557 @@
1
+ {
2
+ "meta": {
3
+ "id": "Components-FieldErrors",
4
+ "title": "Field errors",
5
+ "exportName": "FieldErrors",
6
+ "description": "Context specific, localized error messages for individual form fields.",
7
+ "lifecycleState": "Stable",
8
+ "order": 999,
9
+ "repoPath": "packages/nimbus/src/components/field-errors/field-errors.mdx",
10
+ "menu": [
11
+ "Components",
12
+ "Forms",
13
+ "Field errors"
14
+ ],
15
+ "route": "components/forms/field-errors",
16
+ "tags": [
17
+ "component",
18
+ "form",
19
+ "validation",
20
+ "errors"
21
+ ],
22
+ "toc": [
23
+ {
24
+ "value": "Overview",
25
+ "href": "#overview",
26
+ "depth": 2,
27
+ "numbering": [
28
+ 1,
29
+ 1
30
+ ],
31
+ "parent": "root"
32
+ },
33
+ {
34
+ "value": "Resources",
35
+ "href": "#resources",
36
+ "depth": 3,
37
+ "numbering": [
38
+ 1,
39
+ 1,
40
+ 1
41
+ ],
42
+ "parent": "root"
43
+ },
44
+ {
45
+ "value": "Variables",
46
+ "href": "#variables",
47
+ "depth": 2,
48
+ "numbering": [
49
+ 1,
50
+ 2
51
+ ],
52
+ "parent": "root"
53
+ },
54
+ {
55
+ "value": "Visual elements",
56
+ "href": "#visual-elements",
57
+ "depth": 3,
58
+ "numbering": [
59
+ 1,
60
+ 2,
61
+ 1
62
+ ],
63
+ "parent": "root"
64
+ },
65
+ {
66
+ "value": "Built-in error types",
67
+ "href": "#built-in-error-types",
68
+ "depth": 2,
69
+ "numbering": [
70
+ 1,
71
+ 3
72
+ ],
73
+ "parent": "root"
74
+ },
75
+ {
76
+ "value": "With custom errors",
77
+ "href": "#with-custom-errors",
78
+ "depth": 3,
79
+ "numbering": [
80
+ 1,
81
+ 3,
82
+ 1
83
+ ],
84
+ "parent": "root"
85
+ }
86
+ ],
87
+ "layout": "app-frame",
88
+ "tabs": [
89
+ {
90
+ "key": "overview",
91
+ "title": "Overview",
92
+ "order": 0
93
+ },
94
+ {
95
+ "key": "guidelines",
96
+ "title": "Guidelines",
97
+ "order": 2
98
+ },
99
+ {
100
+ "key": "dev",
101
+ "title": "Implementation",
102
+ "order": 3
103
+ },
104
+ {
105
+ "key": "a11y",
106
+ "title": "Accessibility",
107
+ "order": 4
108
+ }
109
+ ]
110
+ },
111
+ "mdx": "\n## Overview\n\nThe field errors component is a vital utility for user-friendly form validation,\nresponsible for displaying context-specific, localized error messages for\nindividual form fields. It ensures users receive clear, immediate feedback on\nvalidation issues, maintaining a consistent and accessible experience.\n\n### Resources\n\nDeep dive into implementation details and access the Nimbus design library.\n\n[Figma library](https://www.figma.com/design/AvtPX6g7OGGCRvNlatGOIY/NIMBUS-design-system?m=auto&node-id=5818-15877)\n[Storybook](https://nimbus-storybook.vercel.app/?path=/docs/components-fielderrors--docs)\n\n## Variables\n\nGet familiar with the features.\n\n### Visual elements\n\n**Color:** Default critical red color is typical for field errors, and a yellow\nwarning color for issues that are less critical. Custom colors can be added, but\nmake sure that there is a reason to use something different from known error\nbest practices.\n\n**Placement:** Field errors are located below the field that it is associated\nwith.\n\n```jsx live\nconst App = () => (\n <Stack direction=\"column\" gap=\"200\">\n <FieldErrors\n errors={{ critical: true }}\n isVisible={true}\n renderError={(key) => {\n if (key === \"critical\") {\n return \"This is an error with a critical color.\";\n }\n return null;\n }}\n />\n <FieldErrors\n errors={{ warning: true }}\n isVisible={true}\n colorPalette=\"warning\"\n renderError={(key) => {\n if (key === \"warning\") {\n return \"This is an error with a warning color.\";\n }\n return null;\n }}\n />\n </Stack>\n);\n```\n\n## Built-in error types\n\nThese error types are included for `aboveMax`, `belowMin`, `blocked`,\n`duplicate`, `empty`, `format`, `fractions`, `invalid`, `invalidFromServer`,\n`max`, `min`, `missing`, `negative`, `notFound`, `outOfRange`.\n\n```jsx live\nconst App = () => (\n <FieldErrors\n errors={{\n missing: true,\n invalid: true,\n empty: true,\n min: true,\n max: true,\n format: true,\n duplicate: true,\n negative: true,\n fractions: true,\n belowMin: true,\n aboveMax: true,\n outOfRange: true,\n invalidFromServer: true,\n notFound: true,\n blocked: true,\n }}\n isVisible={true}\n />\n);\n```\n\n### With custom errors\n\nYou may use custom error text, read best practices with custom text\nrecommendations within the guideline section.\n\n```jsx live\nconst App = () => (\n <Box>\n <FieldErrors\n errors={{\n customError: true,\n lengthError: true,\n formatError: true,\n duplicateError: true,\n positiveError: true,\n serverError: true,\n }}\n isVisible={true}\n renderError={(key) => {\n let message;\n let icon;\n switch (key) {\n case \"customError\":\n message = \"Hey! You forgot something important!\";\n icon = <Icons.Whatshot/>;\n break;\n case \"lengthError\":\n message = \"This needs to be longer!\";\n icon = <Icons.Straighten />;\n break;\n case \"formatError\":\n message = \"Please use the correct format!\";\n icon = <Icons.TheaterComedy />;\n break;\n case \"duplicateError\":\n message = \"This value is already taken!\";\n icon = <Icons.RepeatOn />;\n break;\n case \"positiveError\":\n message = \"Only positive numbers allowed!\";\n icon = <Icons.BarChart />;\n break;\n case \"serverError\":\n message = \"Server says no-no!\";\n icon = <Icons.Announcement />;\n break;\n default:\n return null; // Return null to fall back to built-in error handling\n }\n return (\n <Flex gap=\"100\" alignItems=\"center\">\n <Icon color=\"critical.11\">\n {icon}\n </Icon>\n {message}\n </Flex>\n );\n }}\n />\n </Box>\n);\n```\n",
112
+ "views": {
113
+ "overview": {
114
+ "mdx": "\n## Overview\n\nThe field errors component is a vital utility for user-friendly form validation,\nresponsible for displaying context-specific, localized error messages for\nindividual form fields. It ensures users receive clear, immediate feedback on\nvalidation issues, maintaining a consistent and accessible experience.\n\n### Resources\n\nDeep dive into implementation details and access the Nimbus design library.\n\n[Figma library](https://www.figma.com/design/AvtPX6g7OGGCRvNlatGOIY/NIMBUS-design-system?m=auto&node-id=5818-15877)\n[Storybook](https://nimbus-storybook.vercel.app/?path=/docs/components-fielderrors--docs)\n\n## Variables\n\nGet familiar with the features.\n\n### Visual elements\n\n**Color:** Default critical red color is typical for field errors, and a yellow\nwarning color for issues that are less critical. Custom colors can be added, but\nmake sure that there is a reason to use something different from known error\nbest practices.\n\n**Placement:** Field errors are located below the field that it is associated\nwith.\n\n```jsx live\nconst App = () => (\n <Stack direction=\"column\" gap=\"200\">\n <FieldErrors\n errors={{ critical: true }}\n isVisible={true}\n renderError={(key) => {\n if (key === \"critical\") {\n return \"This is an error with a critical color.\";\n }\n return null;\n }}\n />\n <FieldErrors\n errors={{ warning: true }}\n isVisible={true}\n colorPalette=\"warning\"\n renderError={(key) => {\n if (key === \"warning\") {\n return \"This is an error with a warning color.\";\n }\n return null;\n }}\n />\n </Stack>\n);\n```\n\n## Built-in error types\n\nThese error types are included for `aboveMax`, `belowMin`, `blocked`,\n`duplicate`, `empty`, `format`, `fractions`, `invalid`, `invalidFromServer`,\n`max`, `min`, `missing`, `negative`, `notFound`, `outOfRange`.\n\n```jsx live\nconst App = () => (\n <FieldErrors\n errors={{\n missing: true,\n invalid: true,\n empty: true,\n min: true,\n max: true,\n format: true,\n duplicate: true,\n negative: true,\n fractions: true,\n belowMin: true,\n aboveMax: true,\n outOfRange: true,\n invalidFromServer: true,\n notFound: true,\n blocked: true,\n }}\n isVisible={true}\n />\n);\n```\n\n### With custom errors\n\nYou may use custom error text, read best practices with custom text\nrecommendations within the guideline section.\n\n```jsx live\nconst App = () => (\n <Box>\n <FieldErrors\n errors={{\n customError: true,\n lengthError: true,\n formatError: true,\n duplicateError: true,\n positiveError: true,\n serverError: true,\n }}\n isVisible={true}\n renderError={(key) => {\n let message;\n let icon;\n switch (key) {\n case \"customError\":\n message = \"Hey! You forgot something important!\";\n icon = <Icons.Whatshot/>;\n break;\n case \"lengthError\":\n message = \"This needs to be longer!\";\n icon = <Icons.Straighten />;\n break;\n case \"formatError\":\n message = \"Please use the correct format!\";\n icon = <Icons.TheaterComedy />;\n break;\n case \"duplicateError\":\n message = \"This value is already taken!\";\n icon = <Icons.RepeatOn />;\n break;\n case \"positiveError\":\n message = \"Only positive numbers allowed!\";\n icon = <Icons.BarChart />;\n break;\n case \"serverError\":\n message = \"Server says no-no!\";\n icon = <Icons.Announcement />;\n break;\n default:\n return null; // Return null to fall back to built-in error handling\n }\n return (\n <Flex gap=\"100\" alignItems=\"center\">\n <Icon color=\"critical.11\">\n {icon}\n </Icon>\n {message}\n </Flex>\n );\n }}\n />\n </Box>\n);\n```\n",
115
+ "toc": [
116
+ {
117
+ "value": "Overview",
118
+ "href": "#overview",
119
+ "depth": 2,
120
+ "numbering": [
121
+ 1,
122
+ 1
123
+ ],
124
+ "parent": "root"
125
+ },
126
+ {
127
+ "value": "Resources",
128
+ "href": "#resources",
129
+ "depth": 3,
130
+ "numbering": [
131
+ 1,
132
+ 1,
133
+ 1
134
+ ],
135
+ "parent": "root"
136
+ },
137
+ {
138
+ "value": "Variables",
139
+ "href": "#variables",
140
+ "depth": 2,
141
+ "numbering": [
142
+ 1,
143
+ 2
144
+ ],
145
+ "parent": "root"
146
+ },
147
+ {
148
+ "value": "Visual elements",
149
+ "href": "#visual-elements",
150
+ "depth": 3,
151
+ "numbering": [
152
+ 1,
153
+ 2,
154
+ 1
155
+ ],
156
+ "parent": "root"
157
+ },
158
+ {
159
+ "value": "Built-in error types",
160
+ "href": "#built-in-error-types",
161
+ "depth": 2,
162
+ "numbering": [
163
+ 1,
164
+ 3
165
+ ],
166
+ "parent": "root"
167
+ },
168
+ {
169
+ "value": "With custom errors",
170
+ "href": "#with-custom-errors",
171
+ "depth": 3,
172
+ "numbering": [
173
+ 1,
174
+ 3,
175
+ 1
176
+ ],
177
+ "parent": "root"
178
+ }
179
+ ]
180
+ },
181
+ "a11y": {
182
+ "mdx": "\n## Accessibility\n\nAccessibility ensures that digital content and functionality are usable by\neveryone, including people with disabilities, by addressing visual, auditory,\ncognitive, and physical limitations.\n\n```jsx live\nconst App = () => (\n <FieldErrors\n errors={{ critical: true }}\n isVisible={true}\n renderError={(key) => {\n if (key === \"critical\") {\n return \"Provide your name to continue.\";\n }\n return null;\n }}\n />\n);\n```\n\n### Accessibility standards\n\n- **Instant announcement:** The root container uses `role=\"alert\"` to trigger\n screen readers to immediately announce error messages when they become\n visible, providing critical, instant feedback to the user.\n- **WCAG contrast:** The default critical color palette provides sufficient\n contrast for the error text to meet WCAG AA standards. This must be maintained\n when using custom colors.\n- **Actionable messaging:** Error messages should use clear, plain language that\n focuses on what the user needs to do to fix the problem, not just what went\n wrong (e.g., \"Password must be at least 8 characters\" instead of \"Length\n validation failed\").\n- **Association:** When integrated with the FormField component, errors are\n automatically associated with their input fields via ARIA, helping screen\n readers clearly link the error message to the field that caused it.\n- **Color is supplemental:** Color (red tones) is used as a supplemental\n indicator; the text content itself provides the error information, meeting\n WCAG requirements for users with color vision deficiencies.\n- **Visibility control:** Always tie `isVisible` to the field's interaction\n state (touched or blurred) to prevent users from hearing confusing\n announcements before they've had a chance to input data.\n",
183
+ "toc": [
184
+ {
185
+ "value": "Accessibility",
186
+ "href": "#accessibility",
187
+ "depth": 2,
188
+ "numbering": [
189
+ 1,
190
+ 1
191
+ ],
192
+ "parent": "root"
193
+ },
194
+ {
195
+ "value": "Accessibility standards",
196
+ "href": "#accessibility-standards",
197
+ "depth": 3,
198
+ "numbering": [
199
+ 1,
200
+ 1,
201
+ 1
202
+ ],
203
+ "parent": "root"
204
+ }
205
+ ]
206
+ },
207
+ "dev": {
208
+ "mdx": "\n## Getting started\n\n### Import\n\n```tsx\nimport { FieldErrors, type FieldErrorsProps } from '@commercetools/nimbus';\n```\n\n### Basic usage\n\nThe simplest implementation shows a single error message:\n\n```jsx live-dev\nconst App = () => (\n <FieldErrors\n errors={{ missing: true }}\n />\n)\n```\n\n## Usage examples\n\n### Built-in error types\n\nFieldErrors provides localized messages for common validation scenarios. Errors are organized by category:\n\n#### Basic validation\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"column\" gap=\"400\">\n <FieldErrors\n errors={{ missing: true }}\n />\n <FieldErrors\n errors={{ invalid: true }}\n />\n <FieldErrors\n errors={{ empty: true }}\n />\n </Stack>\n)\n```\n\n#### Length validation\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"column\" gap=\"400\">\n <FieldErrors\n errors={{ min: true }}\n />\n <FieldErrors\n errors={{ max: true }}\n />\n </Stack>\n)\n```\n\n#### Format validation\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"column\" gap=\"400\">\n <FieldErrors\n errors={{ format: true }}\n />\n <FieldErrors\n errors={{ duplicate: true }}\n />\n </Stack>\n)\n```\n\n#### Numeric validation\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"column\" gap=\"400\">\n <FieldErrors\n errors={{ negative: true }}\n />\n <FieldErrors\n errors={{ fractions: true }}\n />\n <FieldErrors\n errors={{ belowMin: true }}\n />\n <FieldErrors\n errors={{ aboveMax: true }}\n />\n <FieldErrors\n errors={{ outOfRange: true }}\n />\n </Stack>\n)\n```\n\n#### Server validation\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"column\" gap=\"400\">\n <FieldErrors\n errors={{ invalidFromServer: true }}\n />\n <FieldErrors\n errors={{ notFound: true }}\n />\n <FieldErrors\n errors={{ blocked: true }}\n />\n </Stack>\n)\n```\n\n### Custom error messages\n\nOverride built-in messages for specific error types using `customMessages`:\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"column\" gap=\"400\">\n <FieldErrors\n errors={{ missing: true, min: true, format: true }}\n customMessages={{\n missing: \"🔥 Hey! You forgot something important!\",\n min: \"📏 Password must be at least 8 characters\",\n format: \"📧 Please enter a valid email address\"\n }}\n />\n </Stack>\n)\n```\n\n### Custom error rendering\n\nUse `renderError` for complete control over specific error messages:\n\n```jsx live-dev\nconst App = () => (\n <FieldErrors\n errors={{\n duplicate: true,\n customValidation: true,\n missing: true\n }}\n renderError={(key) => {\n switch (key) {\n case 'duplicate':\n return 'This email is already registered. Please use a different email.';\n case 'customValidation':\n return 'This is a custom validation error.';\n default:\n return null; // Falls back to built-in messages\n }\n }}\n />\n)\n```\n\n### Default error renderer\n\nUse `renderDefaultError` as a fallback when `renderError` returns null:\n\n```jsx live-dev\nconst App = () => (\n <FieldErrors\n errors={{\n priority: true,\n fallback: true,\n missing: true\n }}\n renderError={(key) => {\n if (key === 'priority') {\n return 'High priority custom error!';\n }\n return null; // Falls through to renderDefaultError\n }}\n renderDefaultError={(key) => {\n if (key === 'fallback') {\n return 'Fallback error handled by renderDefaultError';\n }\n return null; // Falls through to built-in messages\n }}\n />\n)\n```\n\n**Error resolution priority:**\n1. `renderError` - Highest priority custom rendering\n2. `renderDefaultError` - Fallback custom rendering\n3. `customMessages` - Custom text for built-in error types\n4. Built-in messages - Localized default messages\n\n### Visibility control\n\nControl when errors are displayed using the `isVisible` prop:\n\n```jsx live-dev\nconst App = () => {\n const [showErrors, setShowErrors] = useState(false);\n\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Button onPress={() => setShowErrors(!showErrors)}>\n {showErrors ? 'Hide Errors' : 'Show Errors'}\n </Button>\n <FieldErrors\n errors={{ missing: true, invalid: true }}\n isVisible={showErrors}\n />\n </Stack>\n );\n}\n```\n\n### Integration with FormField\n\nFieldErrors integrates seamlessly with FormField for form validation:\n\n```jsx live-dev\nconst App = () => {\n const [email, setEmail] = useState('');\n const [age, setAge] = useState('');\n const [touched, setTouched] = useState({ email: false, age: false });\n\n const validateEmail = (value) => {\n const errors = {};\n if (!value) {\n errors.missing = true;\n } else if (!/\\S+@\\S+\\.\\S+/.test(value)) {\n errors.format = true;\n } else if (value === 'admin@test.com') {\n errors.duplicate = true;\n }\n return errors;\n };\n\n const validateAge = (value) => {\n const errors = {};\n if (!value) {\n errors.missing = true;\n } else if (Number(value) < 0) {\n errors.negative = true;\n } else if (Number(value) < 18) {\n errors.belowMin = true;\n }\n return errors;\n };\n\n const emailErrors = validateEmail(email);\n const ageErrors = validateAge(age);\n const hasEmailErrors = Object.values(emailErrors).some(Boolean);\n const hasAgeErrors = Object.values(ageErrors).some(Boolean);\n\n return (\n <Stack direction=\"column\" gap=\"400\" maxWidth=\"400px\">\n <FormField.Root isInvalid={hasEmailErrors && touched.email}>\n <FormField.Label>Email Address *</FormField.Label>\n <FormField.Input>\n <TextInput\n type=\"email\"\n value={email}\n onChange={setEmail}\n onBlur={() => setTouched({ ...touched, email: true })}\n />\n </FormField.Input>\n <FormField.Error>\n <FieldErrors\n errors={emailErrors}\n isVisible={touched.email}\n renderError={(key) => {\n if (key === 'format') {\n return 'Please enter a valid email address.';\n }\n if (key === 'duplicate') {\n return 'This email is already registered.';\n }\n return null;\n }}\n />\n </FormField.Error>\n </FormField.Root>\n\n <FormField.Root isInvalid={hasAgeErrors && touched.age}>\n <FormField.Label>Age *</FormField.Label>\n <FormField.Input>\n <TextInput\n type=\"number\"\n value={age}\n onChange={setAge}\n onBlur={() => setTouched({ ...touched, age: true })}\n />\n </FormField.Input>\n <FormField.Error>\n <FieldErrors\n errors={ageErrors}\n isVisible={touched.age}\n customMessages={{\n belowMin: 'You must be at least 18 years old.'\n }}\n />\n </FormField.Error>\n </FormField.Root>\n </Stack>\n );\n}\n```\n\n## Component requirements\n\n### Error object format\n\nThe `errors` prop accepts an object mapping error keys to boolean values:\n\n```tsx\ntype FieldErrorsData = Record<string, boolean>;\n\n// Example\nconst errors = {\n missing: true, // Show \"missing\" error\n duplicate: false, // Hide \"duplicate\" error\n format: true // Show \"format\" error\n};\n```\n\n**Built-in error types:**\n\nUse the `FieldErrorTypes` constants for type-safe error keys:\n\n```tsx\nimport { FieldErrors } from '@commercetools/nimbus';\n\nconst { errorTypes } = FieldErrors;\n\n// Access built-in error type constants\nerrorTypes.MISSING; // \"missing\"\nerrorTypes.INVALID; // \"invalid\"\nerrorTypes.EMPTY; // \"empty\"\nerrorTypes.MIN_LENGTH; // \"min\"\nerrorTypes.MAX_LENGTH; // \"max\"\nerrorTypes.FORMAT; // \"format\"\nerrorTypes.DUPLICATE; // \"duplicate\"\nerrorTypes.NEGATIVE; // \"negative\"\nerrorTypes.FRACTIONS; // \"fractions\"\nerrorTypes.BELOW_MIN; // \"belowMin\"\nerrorTypes.ABOVE_MAX; // \"aboveMax\"\nerrorTypes.OUT_OF_RANGE; // \"outOfRange\"\nerrorTypes.INVALID_FROM_SERVER; // \"invalidFromServer\"\nerrorTypes.NOT_FOUND; // \"notFound\"\nerrorTypes.BLOCKED; // \"blocked\"\n```\n\n## Accessibility\n\nThe FieldErrors component includes `role=\"alert\"` by default to announce errors to screen readers. When integrating with form fields:\n\n**Visibility timing:**\n- Only show errors after user interaction (blur/submit)\n- Use the `touched` state pattern to control `isVisible`\n- Don't show errors on initial render or while typing\n\n**ARIA relationships:**\n\nAssociate error messages with form fields using `aria-describedby`:\n\n```tsx\n<FormField.Root isInvalid={hasErrors && touched}>\n <FormField.Label>Field Label</FormField.Label>\n <FormField.Input>\n <TextInput\n aria-describedby=\"field-errors\"\n />\n </FormField.Input>\n <FormField.Error>\n <FieldErrors\n id=\"field-errors\"\n errors={errors}\n isVisible={touched}\n />\n </FormField.Error>\n</FormField.Root>\n```\n\nIf your use case requires tracking and analytics for this component, it is good practice to add a **persistent**, **unique** id to the component:\n\n```tsx\nconst PERSISTENT_ID = \"example-field-errors\";\n\nexport const Example = () => (\n <FieldErrors\n id={PERSISTENT_ID}\n errors={errors}\n />\n);\n```\n\n#### Keyboard navigation\n\nFieldErrors is a static display component with no keyboard interactions. Users navigate to form fields using standard keyboard controls:\n- `Tab` / `Shift+Tab`: Move focus between form fields\n- Error messages are announced by screen readers when fields receive focus or when errors change\n\n## API reference\n\n<PropsTable id=\"FieldErrors\" />\n\n## Testing your implementation\n\nThese examples demonstrate how to test your implementation when using FieldErrors within your application. As the component's internal functionality is already tested by Nimbus, these patterns help you verify your integration and application-specific logic.\n\n### Basic Rendering Tests\n\nVerify the component renders with expected error messages\n\n```tsx\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport { FieldErrors, FormField, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"FieldErrors - Basic rendering\", () => {\n it(\"renders built-in error message\", () => {\n render(\n <NimbusProvider>\n <FieldErrors errors={{ missing: true }} isVisible={true} />\n </NimbusProvider>\n );\n\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\n expect(\n screen.getByText(\"This field is required. Provide a value.\")\n ).toBeInTheDocument();\n });\n\n it(\"does not render when isVisible is false\", () => {\n render(\n <NimbusProvider>\n <FieldErrors errors={{ missing: true }} isVisible={false} />\n </NimbusProvider>\n );\n\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\n });\n\n it(\"does not render when all errors are false\", () => {\n render(\n <NimbusProvider>\n <FieldErrors\n errors={{ missing: false, invalid: false }}\n isVisible={true}\n />\n </NimbusProvider>\n );\n\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\n });\n});\n```\n\n### Custom Error Rendering Tests\n\nTest custom error message rendering\n\n```tsx\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport { FieldErrors, FormField, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"FieldErrors - Custom rendering\", () => {\n it(\"renders custom error messages via renderError\", () => {\n render(\n <NimbusProvider>\n <FieldErrors\n errors={{ duplicate: true }}\n isVisible={true}\n renderError={(key) => {\n if (key === \"duplicate\") {\n return \"This email is already registered.\";\n }\n return null;\n }}\n />\n </NimbusProvider>\n );\n\n expect(\n screen.getByText(\"This email is already registered.\")\n ).toBeInTheDocument();\n });\n\n it(\"renders custom messages via customMessages prop\", () => {\n render(\n <NimbusProvider>\n <FieldErrors\n errors={{ missing: true, min: true }}\n isVisible={true}\n customMessages={{\n missing: \"Please fill out this field!\",\n min: \"Must be at least 8 characters long.\",\n }}\n />\n </NimbusProvider>\n );\n\n expect(screen.getByText(\"Please fill out this field!\")).toBeInTheDocument();\n expect(\n screen.getByText(\"Must be at least 8 characters long.\")\n ).toBeInTheDocument();\n });\n\n it(\"falls back to built-in messages when renderError returns null\", () => {\n render(\n <NimbusProvider>\n <FieldErrors\n errors={{ missing: true, duplicate: true }}\n isVisible={true}\n renderError={(key) => {\n if (key === \"duplicate\") {\n return \"Custom duplicate message\";\n }\n return null; // Falls back to built-in for 'missing'\n }}\n />\n </NimbusProvider>\n );\n\n expect(screen.getByText(\"Custom duplicate message\")).toBeInTheDocument();\n expect(\n screen.getByText(\"This field is required. Provide a value.\")\n ).toBeInTheDocument();\n });\n});\n```\n\n### FormField Integration Tests\n\nTest FieldErrors within FormField contexts\n\n```tsx\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport { FieldErrors, FormField, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"FieldErrors - FormField integration\", () => {\n it(\"shows errors when isVisible is true\", () => {\n const errors = { missing: true };\n\n render(\n <NimbusProvider>\n <FormField.Root isInvalid={true}>\n <FormField.Label>Email</FormField.Label>\n <FormField.Error>\n <FieldErrors errors={errors} isVisible={true} />\n </FormField.Error>\n </FormField.Root>\n </NimbusProvider>\n );\n\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\n expect(\n screen.getByText(\"This field is required. Provide a value.\")\n ).toBeInTheDocument();\n });\n\n it(\"hides errors when isVisible is false\", () => {\n const errors = { missing: true };\n\n render(\n <NimbusProvider>\n <FormField.Root isInvalid={true}>\n <FormField.Label>Email</FormField.Label>\n <FormField.Error>\n <FieldErrors errors={errors} isVisible={false} />\n </FormField.Error>\n </FormField.Root>\n </NimbusProvider>\n );\n\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\n });\n});\n```\n\n### Testing Error Priority\n\nTest the error resolution cascade\n\n```tsx\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport { FieldErrors, FormField, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"FieldErrors - Error priority\", () => {\n it(\"prioritizes renderError over renderDefaultError\", () => {\n render(\n <NimbusProvider>\n <FieldErrors\n errors={{ missing: true }}\n isVisible={true}\n renderError={() => \"Priority error\"}\n renderDefaultError={() => \"Fallback error\"}\n />\n </NimbusProvider>\n );\n\n expect(screen.getByText(\"Priority error\")).toBeInTheDocument();\n expect(screen.queryByText(\"Fallback error\")).not.toBeInTheDocument();\n });\n\n it(\"prioritizes customMessages over built-in messages\", () => {\n render(\n <NimbusProvider>\n <FieldErrors\n errors={{ missing: true }}\n isVisible={true}\n customMessages={{\n missing: \"Custom missing message\",\n }}\n />\n </NimbusProvider>\n );\n\n expect(screen.getByText(\"Custom missing message\")).toBeInTheDocument();\n expect(\n screen.queryByText(\"This field is required. Provide a value.\")\n ).not.toBeInTheDocument();\n });\n\n it(\"uses built-in messages as final fallback\", () => {\n render(\n <NimbusProvider>\n <FieldErrors\n errors={{ missing: true }}\n isVisible={true}\n renderError={() => null}\n renderDefaultError={() => null}\n />\n </NimbusProvider>\n );\n\n expect(\n screen.getByText(\"This field is required. Provide a value.\")\n ).toBeInTheDocument();\n });\n});\n```\n\n\n## Resources\n\n- [Storybook](https://nimbus-storybook.vercel.app/?path=/docs/components-fielderrors--docs)\n- [FormField Component](components/inputs/formfield)\n",
209
+ "toc": [
210
+ {
211
+ "value": "Getting started",
212
+ "href": "#getting-started",
213
+ "depth": 2,
214
+ "numbering": [
215
+ 1,
216
+ 1
217
+ ],
218
+ "parent": "root"
219
+ },
220
+ {
221
+ "value": "Import",
222
+ "href": "#import",
223
+ "depth": 3,
224
+ "numbering": [
225
+ 1,
226
+ 1,
227
+ 1
228
+ ],
229
+ "parent": "root"
230
+ },
231
+ {
232
+ "value": "Basic usage",
233
+ "href": "#basic-usage",
234
+ "depth": 3,
235
+ "numbering": [
236
+ 1,
237
+ 1,
238
+ 2
239
+ ],
240
+ "parent": "root"
241
+ },
242
+ {
243
+ "value": "Usage examples",
244
+ "href": "#usage-examples",
245
+ "depth": 2,
246
+ "numbering": [
247
+ 1,
248
+ 2
249
+ ],
250
+ "parent": "root"
251
+ },
252
+ {
253
+ "value": "Built-in error types",
254
+ "href": "#built-in-error-types",
255
+ "depth": 3,
256
+ "numbering": [
257
+ 1,
258
+ 2,
259
+ 1
260
+ ],
261
+ "parent": "root"
262
+ },
263
+ {
264
+ "value": "Basic validation",
265
+ "href": "#basic-validation",
266
+ "depth": 4,
267
+ "numbering": [
268
+ 1,
269
+ 2,
270
+ 1,
271
+ 1
272
+ ],
273
+ "parent": "root"
274
+ },
275
+ {
276
+ "value": "Length validation",
277
+ "href": "#length-validation",
278
+ "depth": 4,
279
+ "numbering": [
280
+ 1,
281
+ 2,
282
+ 1,
283
+ 2
284
+ ],
285
+ "parent": "root"
286
+ },
287
+ {
288
+ "value": "Format validation",
289
+ "href": "#format-validation",
290
+ "depth": 4,
291
+ "numbering": [
292
+ 1,
293
+ 2,
294
+ 1,
295
+ 3
296
+ ],
297
+ "parent": "root"
298
+ },
299
+ {
300
+ "value": "Numeric validation",
301
+ "href": "#numeric-validation",
302
+ "depth": 4,
303
+ "numbering": [
304
+ 1,
305
+ 2,
306
+ 1,
307
+ 4
308
+ ],
309
+ "parent": "root"
310
+ },
311
+ {
312
+ "value": "Server validation",
313
+ "href": "#server-validation",
314
+ "depth": 4,
315
+ "numbering": [
316
+ 1,
317
+ 2,
318
+ 1,
319
+ 5
320
+ ],
321
+ "parent": "root"
322
+ },
323
+ {
324
+ "value": "Custom error messages",
325
+ "href": "#custom-error-messages",
326
+ "depth": 3,
327
+ "numbering": [
328
+ 1,
329
+ 2,
330
+ 2
331
+ ],
332
+ "parent": "root"
333
+ },
334
+ {
335
+ "value": "Custom error rendering",
336
+ "href": "#custom-error-rendering",
337
+ "depth": 3,
338
+ "numbering": [
339
+ 1,
340
+ 2,
341
+ 3
342
+ ],
343
+ "parent": "root"
344
+ },
345
+ {
346
+ "value": "Default error renderer",
347
+ "href": "#default-error-renderer",
348
+ "depth": 3,
349
+ "numbering": [
350
+ 1,
351
+ 2,
352
+ 4
353
+ ],
354
+ "parent": "root"
355
+ },
356
+ {
357
+ "value": "Visibility control",
358
+ "href": "#visibility-control",
359
+ "depth": 3,
360
+ "numbering": [
361
+ 1,
362
+ 2,
363
+ 5
364
+ ],
365
+ "parent": "root"
366
+ },
367
+ {
368
+ "value": "Integration with FormField",
369
+ "href": "#integration-with-formfield",
370
+ "depth": 3,
371
+ "numbering": [
372
+ 1,
373
+ 2,
374
+ 6
375
+ ],
376
+ "parent": "root"
377
+ },
378
+ {
379
+ "value": "Component requirements",
380
+ "href": "#component-requirements",
381
+ "depth": 2,
382
+ "numbering": [
383
+ 1,
384
+ 3
385
+ ],
386
+ "parent": "root"
387
+ },
388
+ {
389
+ "value": "Error object format",
390
+ "href": "#error-object-format",
391
+ "depth": 3,
392
+ "numbering": [
393
+ 1,
394
+ 3,
395
+ 1
396
+ ],
397
+ "parent": "root"
398
+ },
399
+ {
400
+ "value": "Accessibility",
401
+ "href": "#accessibility",
402
+ "depth": 2,
403
+ "numbering": [
404
+ 1,
405
+ 4
406
+ ],
407
+ "parent": "root"
408
+ },
409
+ {
410
+ "value": "Keyboard navigation",
411
+ "href": "#keyboard-navigation",
412
+ "depth": 4,
413
+ "numbering": [
414
+ 1,
415
+ 4,
416
+ 1,
417
+ 1
418
+ ],
419
+ "parent": "root"
420
+ },
421
+ {
422
+ "value": "API reference",
423
+ "href": "#api-reference",
424
+ "depth": 2,
425
+ "numbering": [
426
+ 1,
427
+ 5
428
+ ],
429
+ "parent": "root"
430
+ },
431
+ {
432
+ "value": "Testing your implementation",
433
+ "href": "#testing-your-implementation",
434
+ "depth": 2,
435
+ "numbering": [
436
+ 1,
437
+ 6
438
+ ],
439
+ "parent": "root"
440
+ },
441
+ {
442
+ "value": "Basic Rendering Tests",
443
+ "href": "#basic-rendering-tests",
444
+ "depth": 3,
445
+ "numbering": [
446
+ 1,
447
+ 6,
448
+ 1
449
+ ],
450
+ "parent": "root"
451
+ },
452
+ {
453
+ "value": "Custom Error Rendering Tests",
454
+ "href": "#custom-error-rendering-tests",
455
+ "depth": 3,
456
+ "numbering": [
457
+ 1,
458
+ 6,
459
+ 2
460
+ ],
461
+ "parent": "root"
462
+ },
463
+ {
464
+ "value": "FormField Integration Tests",
465
+ "href": "#formfield-integration-tests",
466
+ "depth": 3,
467
+ "numbering": [
468
+ 1,
469
+ 6,
470
+ 3
471
+ ],
472
+ "parent": "root"
473
+ },
474
+ {
475
+ "value": "Testing Error Priority",
476
+ "href": "#testing-error-priority",
477
+ "depth": 3,
478
+ "numbering": [
479
+ 1,
480
+ 6,
481
+ 4
482
+ ],
483
+ "parent": "root"
484
+ },
485
+ {
486
+ "value": "Resources",
487
+ "href": "#resources",
488
+ "depth": 2,
489
+ "numbering": [
490
+ 1,
491
+ 7
492
+ ],
493
+ "parent": "root"
494
+ }
495
+ ]
496
+ },
497
+ "guidelines": {
498
+ "mdx": "\n## Guidelines\n\nField error guidelines establish how validation issues are communicated to the\nuser, ensuring messages are clear, concise, actionable, and visually presented\nwith appropriate urgency and accessibility features.\n\n### Best practices\n\n- **Validate inline and on blur:** Only show error messages after the user has\n finished interacting with the field (i.e., when they click or tab out).\n Showing errors while the user is typing is highly distracting.\n- **Be specific and actionable:** Tell the user what went wrong and how to fix\n it, not just that the input is invalid.\n- **Be concise:** Keep error messages short and easy to read quickly. If the fix\n is simple, the message should be too.\n- **Avoid technical jargon:** Use plain, user-friendly language. Avoid\n referencing internal system terms or validation rules (like \"Regex failure\" or\n \"API 404\").\n- **Group and prioritize:** When showing multiple errors, group them logically\n and ensure the most critical or blocking error is listed first.\n- **Use clear visual cues:** Use the critical/red color palette for the border,\n text, and an accompanying error icon to draw immediate attention.\n- **Place errors contextually:** Position the error message directly below the\n input field it refers to. This maintains a strong visual association and\n reading flow.\n- **Minimize layout shift:** Design the error message container so that when the\n message appears, it doesn't cause the rest of the form elements below it to\n jump or shift excessively.\n- **Distinguish severity:** Use Warning/Orange tones for non-blocking issues or\n cautionary alerts, reserving Critical/Red for errors that truly prevent\n submission.\n\n### Tone of voice\n\n- **Avoid using \"please\":** When the UI is requesting information (e.g., \"Enter\n your password\") or enforcing a rule (e.g., \"Password must be 8 characters\n long\"), the language should be direct and authoritative. Using \"please\" can\n sometimes weaken the instructional tone, making the requirement seem optional\n or negotiable.\n - **Localization formality:** If you use \"please\" inconsistently, it can\n confuse users. Furthermore, translating polite phrases across languages can\n be complex and sometimes lead to awkward or overly formal phrasing in the\n localized UI.\n- **Stay neutral:** Maintain a helpful, professional, and consistent tone across\n all error types. Avoid attempting to be overly clever or humorous, as this can\n be misunderstood during a stressful moment.\n- **Avoid blame:** Never use accusatory language (e.g., \"You failed,\" \"You\n must\"). Use neutral, system-focused language.\n- **Use softening words (sparingly):** Use words like \"sorry\" appropriately to\n soften the message, especially for critical errors. Example: \"Sorry, that rank\n order is already taken. Please try another.\" Do not overuse softening\n language. A direct, informative tone is typically perceived as more\n professional and helpful than an overly conversational one in task-focused\n areas.\n\n### Usage\n\nField error messages are used to communicate validation failures immediately\nafter a user's unsuccessful input attempt, providing specific, actionable\nguidance on how to correct the mistake.\n\n\n> [!TIP]\\\n> When to use\n\n- **Validation fails on blur/touch:** Use an error message immediately after the\n user attempts to interact with the field (clicks in and clicks out) and the\n input fails validation (e.g., they leave a required field empty).\n- **Preventing form submission:** Use an error message to clearly indicate which\n fields must be corrected before the form can be successfully submitted.\n- **Providing actionable correction:** Use the message to tell the user exactly\n how to fix the problem (e.g., \"Password must contain one number\" or \"Please\n enter 8 or more characters\").\n- **After server rejection:** Use an error message to display a concise message\n from the server indicating why the submitted value was rejected (e.g., \"That\n email address is already registered\").\n\n> [!CAUTION]\\\n> When not to use\n\n- **When the form first loads:** Do not show \"This field is required\" error\n messages on empty fields when the form initially loads. This is highly\n distracting and premature.\n- **While the user is typing:** Avoid showing a hard error message (like a red\n border and critical text) while the user is actively typing; it is\n interruptive. Use subtle positive feedback (like a green checkmark) for\n successful input instead.\n- **For simple hints:** Do not use an error message container for basic\n formatting hints or guidelines; use neutral helper text for these non-critical\n purposes.\n- **For non-blocking issues:** Avoid using the critical (red) error visual\n treatment for issues that won't actually prevent the form from submitting. Use\n a softer warning or info tone instead.\n- **When using a different component:** Do not attach field errors to components\n that don't accept direct user text input (like a toggle switch or a button\n group), as the interaction models are different.\n\n### Do’s and dont’s for error state messages\n\n> [!TIP]\\\n> **Do**\n>\n> - Write concisely in plain language, avoiding technical jargon, error codes,\n> or ambiguous terms.\n> - Position the error message directly next to the field it pertains to, and\n> highlight the source of the problem.\n> - Show the error message immediately after the user interacts with the field\n> or attempts to submit the form.\n> - Clearing the error message and the visual cues as soon as the user corrects\n> the input.\n> - If known, provide suggestions or links to helpful resources (e.g., a \"Forgot\n> Password?\" link).\n\n```jsx live\nconst App = () => (\n <FormField.Root isInvalid >\n <FormField.Label>Name</FormField.Label>\n <FormField.Input>\n <TextInput />\n </FormField.Input>\n <FormField.Error>\n <FieldErrors\n errors={{ missing: true }}\n isVisible={true}\n />\n </FormField.Error>\n </FormField.Root>\n);\n```\n\n> [!CAUTION]\\\n> **Don't**\n>\n> - Avoid harsh, accusatory, or negative language.\n> - Never use technical terms or obscure codes.\n> - Avoid generic messages like \"Something went wrong\" or \"Error.\"\n> - Don't display \"Required\" field errors when the form first loads, as this\n> creates user fatigue.\n> - Keep the error message inline and contextual.\n> - Avoid giving away hints that could aid malicious users (e.g., don't confirm\n> if a username or email is not registered).\n\n```jsx live\nconst App = () => (\n <Stack direction=\"column\" gap=\"200\">\n <FormField.Root isInvalid>\n <FormField.Label>Name</FormField.Label>\n <FormField.Input>\n <TextInput width=\"9600\" />\n </FormField.Input>\n </FormField.Root>\n <FieldErrors\n errors={{ missing: true }}\n isVisible={true}\n renderError={(key) => {\n if (key === \"missing\") {\n return (\n <Flex gap=\"100\" alignItems=\"center\">\n <Icon color=\"critical.11\" boxSize=\"600\">\n <Icons.ErrorOutline />\n </Icon>\n You put in the wrong details. Correct without invalidating this form to continue. We are very disappointed in your interactions here and one more mistake we will send a message automatically to your admin.\n </Flex>\n );\n }\n return null;\n }}\n />\n </Stack>\n);\n```\n",
499
+ "toc": [
500
+ {
501
+ "value": "Guidelines",
502
+ "href": "#guidelines",
503
+ "depth": 2,
504
+ "numbering": [
505
+ 1,
506
+ 1
507
+ ],
508
+ "parent": "root"
509
+ },
510
+ {
511
+ "value": "Best practices",
512
+ "href": "#best-practices",
513
+ "depth": 3,
514
+ "numbering": [
515
+ 1,
516
+ 1,
517
+ 1
518
+ ],
519
+ "parent": "root"
520
+ },
521
+ {
522
+ "value": "Tone of voice",
523
+ "href": "#tone-of-voice",
524
+ "depth": 3,
525
+ "numbering": [
526
+ 1,
527
+ 1,
528
+ 2
529
+ ],
530
+ "parent": "root"
531
+ },
532
+ {
533
+ "value": "Usage",
534
+ "href": "#usage",
535
+ "depth": 3,
536
+ "numbering": [
537
+ 1,
538
+ 1,
539
+ 3
540
+ ],
541
+ "parent": "root"
542
+ },
543
+ {
544
+ "value": "Do’s and dont’s for error state messages",
545
+ "href": "#dos-and-donts-for-error-state-messages",
546
+ "depth": 3,
547
+ "numbering": [
548
+ 1,
549
+ 1,
550
+ 4
551
+ ],
552
+ "parent": "root"
553
+ }
554
+ ]
555
+ }
556
+ }
557
+ }