@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,511 @@
1
+ {
2
+ "meta": {
3
+ "id": "Components-Image",
4
+ "title": "Image",
5
+ "exportName": "Image",
6
+ "description": "An image component is used to display visual content like photographs, illustrations, or graphics within the UI to support, illustrate, or enhance textual information.",
7
+ "lifecycleState": "Stable",
8
+ "order": 999,
9
+ "repoPath": "packages/nimbus/src/components/image/image.mdx",
10
+ "menu": [
11
+ "Components",
12
+ "Media",
13
+ "Image"
14
+ ],
15
+ "route": "components/media/image",
16
+ "tags": [
17
+ "component",
18
+ "image",
19
+ "picture",
20
+ "media"
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": "Basic functions",
35
+ "href": "#basic-functions",
36
+ "depth": 2,
37
+ "numbering": [
38
+ 1,
39
+ 2
40
+ ],
41
+ "parent": "root"
42
+ }
43
+ ],
44
+ "layout": "app-frame",
45
+ "tabs": [
46
+ {
47
+ "key": "overview",
48
+ "title": "Overview",
49
+ "order": 0
50
+ },
51
+ {
52
+ "key": "guidelines",
53
+ "title": "Guidelines",
54
+ "order": 2
55
+ },
56
+ {
57
+ "key": "dev",
58
+ "title": "Implementation",
59
+ "order": 3
60
+ },
61
+ {
62
+ "key": "a11y",
63
+ "title": "Accessibility",
64
+ "order": 4
65
+ }
66
+ ]
67
+ },
68
+ "mdx": "\n## Overview\n\nThe image component offers core features designed for optimal performance,\naccessibility, and responsiveness when displaying visual content.\n\n## Basic functions\n\n```jsx live\nconst App = () => (\n <Image\n src=\"/images/image/image-sample.png\"\n alt=\"Example image showing basic functionality\"\n width=\"100%\"\n maxWidth=\"9600\"\n />\n)\n```\n\n- **Source set (`srcSet`) and sizes:** This allows the component to define\n multiple image sources at different resolutions, enabling the browser to\n automatically select the most appropriate, performant image based on the\n user's viewport size.\n- **Alternative text (`alt`):** It mandates the inclusion of descriptive\n alternative text, which is crucial for accessibility, ensuring screen readers\n convey the image's meaning.\n- **Lazy loading:** The component supports native lazy loading, which delays the\n loading of images outside the user's viewport, significantly improving initial\n page load performance.\n- **Loading behavior:** Allows control over the image loading strategy (e.g.,\n eager vs. lazy) to prioritize critical visuals first seen.\n- **Aspect ratio and fill:** The component can maintain a specific aspect ratio\n or fill its container, ensuring consistent sizing and preventing layout shift\n during loading.\n- **Decoding:** It allows specification of the image decoding strategy (sync,\n async, or auto) to optimize rendering performance.\n",
69
+ "views": {
70
+ "overview": {
71
+ "mdx": "\n## Overview\n\nThe image component offers core features designed for optimal performance,\naccessibility, and responsiveness when displaying visual content.\n\n## Basic functions\n\n```jsx live\nconst App = () => (\n <Image\n src=\"/images/image/image-sample.png\"\n alt=\"Example image showing basic functionality\"\n width=\"100%\"\n maxWidth=\"9600\"\n />\n)\n```\n\n- **Source set (`srcSet`) and sizes:** This allows the component to define\n multiple image sources at different resolutions, enabling the browser to\n automatically select the most appropriate, performant image based on the\n user's viewport size.\n- **Alternative text (`alt`):** It mandates the inclusion of descriptive\n alternative text, which is crucial for accessibility, ensuring screen readers\n convey the image's meaning.\n- **Lazy loading:** The component supports native lazy loading, which delays the\n loading of images outside the user's viewport, significantly improving initial\n page load performance.\n- **Loading behavior:** Allows control over the image loading strategy (e.g.,\n eager vs. lazy) to prioritize critical visuals first seen.\n- **Aspect ratio and fill:** The component can maintain a specific aspect ratio\n or fill its container, ensuring consistent sizing and preventing layout shift\n during loading.\n- **Decoding:** It allows specification of the image decoding strategy (sync,\n async, or auto) to optimize rendering performance.\n",
72
+ "toc": [
73
+ {
74
+ "value": "Overview",
75
+ "href": "#overview",
76
+ "depth": 2,
77
+ "numbering": [
78
+ 1,
79
+ 1
80
+ ],
81
+ "parent": "root"
82
+ },
83
+ {
84
+ "value": "Basic functions",
85
+ "href": "#basic-functions",
86
+ "depth": 2,
87
+ "numbering": [
88
+ 1,
89
+ 2
90
+ ],
91
+ "parent": "root"
92
+ }
93
+ ]
94
+ },
95
+ "a11y": {
96
+ "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 <Image\n src=\"/images/image/image-sample.png\"\n alt=\"luxury metallic green handbag with floral handle. Mangosteen accessory hangs off the bag, and sitting on the table with the bag are small accessories, a pen, lipstick, and small notebook.\"\n width=\"4000\"\n />\n)\n```\n\n### Accessibility standards\n\n- **Alt text is mandatory:** Every image must have an `alt` attribute. If the\n image is decorative, use a null/empty attribute (`alt=\"\"`). If it conveys\n meaning, the alt text must be descriptive and functional.\n- **Complex images:** For charts, graphs, or infographics, the text alternative\n must go beyond the title to describe the key information conveyed by the\n image.\n- **Performance:** Optimize images to ensure they load quickly. Slow loading can\n significantly impair the experience for users on poor connections.\n- **No conveyance of action:** If an image is a link or button, its text\n alternative must describe the action of the link/button, not just the image\n itself (e.g., `alt=\"View product details\"`).\n- **Contrast for text in images:** If the image contains critical text, ensure\n that the text meets WCAG contrast standards within the image itself.\n",
97
+ "toc": [
98
+ {
99
+ "value": "Accessibility",
100
+ "href": "#accessibility",
101
+ "depth": 2,
102
+ "numbering": [
103
+ 1,
104
+ 1
105
+ ],
106
+ "parent": "root"
107
+ },
108
+ {
109
+ "value": "Accessibility standards",
110
+ "href": "#accessibility-standards",
111
+ "depth": 3,
112
+ "numbering": [
113
+ 1,
114
+ 1,
115
+ 1
116
+ ],
117
+ "parent": "root"
118
+ }
119
+ ]
120
+ },
121
+ "dev": {
122
+ "mdx": "\n## Getting started\n\n### Import\n\n```tsx\nimport { Image, type ImageProps } from '@commercetools/nimbus';\n```\n\n### Basic usage\n\nThe Image component displays images with built-in support for accessibility, lazy loading, and responsive behavior.\n\n```jsx live-dev\nconst App = () => (\n <Image \n src=\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=400&h=300&fit=crop\"\n alt=\"Mountain landscape with blue sky\"\n rounded=\"md\"\n maxWidth=\"400px\"\n />\n)\n```\n\n## Usage examples\n\n### Aspect ratio control\n\nUse the `aspectRatio` prop to maintain a specific aspect ratio regardless of the image's natural dimensions:\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"row\" gap=\"400\">\n <Box maxWidth=\"250px\">\n <Image \n src=\"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=400&h=300&fit=crop\"\n alt=\"Landscape with 16:9 ratio\"\n aspectRatio={16 / 9}\n rounded=\"md\"\n />\n </Box>\n <Box maxWidth=\"250px\">\n <Image \n src=\"https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=400&h=300&fit=crop\"\n alt=\"Square 1:1 ratio\"\n aspectRatio={1}\n rounded=\"md\"\n />\n </Box>\n <Box maxWidth=\"250px\">\n <Image \n src=\"https://images.unsplash.com/photo-1426604966848-d7adac402bff?w=400&h=300&fit=crop\"\n alt=\"Portrait 3:4 ratio\"\n aspectRatio={3 / 4}\n rounded=\"md\"\n />\n </Box>\n </Stack>\n)\n```\n\n### Object fit options\n\nControl how the image fills its container using the `fit` prop. This maps to the CSS `object-fit` property:\n\n```jsx live-dev\nconst App = () => (\n <Stack gap=\"400\">\n <Box>\n <Text fontWeight=\"semibold\" marginBottom=\"200\">cover (default)</Text>\n <Image \n src=\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=400&h=300&fit=crop\"\n alt=\"Cover fit example\"\n fit=\"cover\"\n width=\"300px\"\n height=\"200px\"\n rounded=\"md\"\n border=\"1px solid\"\n borderColor=\"border.muted\"\n />\n </Box>\n <Box>\n <Text fontWeight=\"semibold\" marginBottom=\"200\">contain</Text>\n <Image \n src=\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=400&h=300&fit=crop\"\n alt=\"Contain fit example\"\n fit=\"contain\"\n width=\"300px\"\n height=\"200px\"\n rounded=\"md\"\n border=\"1px solid\"\n borderColor=\"border.muted\"\n />\n </Box>\n <Box>\n <Text fontWeight=\"semibold\" marginBottom=\"200\">fill</Text>\n <Image \n src=\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=400&h=300&fit=crop\"\n alt=\"Fill fit example\"\n fit=\"fill\"\n width=\"300px\"\n height=\"200px\"\n rounded=\"md\"\n border=\"1px solid\"\n borderColor=\"border.muted\"\n />\n </Box>\n </Stack>\n)\n```\n\n### Object position\n\nUse the `align` prop to control the focal point of the image within its container:\n\n```jsx live-dev\nconst App = () => (\n <Stack gap=\"400\">\n <Box>\n <Text fontWeight=\"semibold\" marginBottom=\"200\">Top aligned</Text>\n <Image \n src=\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=400&h=600&fit=crop\"\n alt=\"Top aligned image\"\n fit=\"cover\"\n align=\"top\"\n width=\"300px\"\n height=\"200px\"\n rounded=\"md\"\n />\n </Box>\n <Box>\n <Text fontWeight=\"semibold\" marginBottom=\"200\">Center aligned (default)</Text>\n <Image \n src=\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=400&h=600&fit=crop\"\n alt=\"Center aligned image\"\n fit=\"cover\"\n align=\"center\"\n width=\"300px\"\n height=\"200px\"\n rounded=\"md\"\n />\n </Box>\n <Box>\n <Text fontWeight=\"semibold\" marginBottom=\"200\">Bottom aligned</Text>\n <Image \n src=\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=400&h=600&fit=crop\"\n alt=\"Bottom aligned image\"\n fit=\"cover\"\n align=\"bottom\"\n width=\"300px\"\n height=\"200px\"\n rounded=\"md\"\n />\n </Box>\n </Stack>\n)\n```\n\n### Lazy loading\n\nEnable lazy loading to defer loading images until they're near the viewport, improving initial page load performance:\n\n```jsx live-dev\nconst App = () => (\n <Stack gap=\"400\">\n <Box>\n <Text fontWeight=\"semibold\" marginBottom=\"200\">Lazy loading enabled</Text>\n <Image \n src=\"https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=400&h=300&fit=crop\"\n alt=\"Nature scene\"\n loading=\"lazy\"\n rounded=\"md\"\n maxWidth=\"400px\"\n />\n </Box>\n <Box>\n <Text fontWeight=\"semibold\" marginBottom=\"200\">Eager loading</Text>\n <Image \n src=\"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=400&h=300&fit=crop\"\n alt=\"Forest landscape\"\n loading=\"eager\"\n rounded=\"md\"\n maxWidth=\"400px\"\n />\n </Box>\n </Stack>\n)\n```\n\n### Responsive images\n\nUse `srcSet` and `sizes` to serve different image resolutions based on the device's screen size and pixel density:\n\n```jsx live-dev\nconst App = () => (\n <Image \n src=\"https://images.unsplash.com/photo-1426604966848-d7adac402bff?w=800&fit=crop\"\n srcSet=\"\n https://images.unsplash.com/photo-1426604966848-d7adac402bff?w=400&fit=crop 400w,\n https://images.unsplash.com/photo-1426604966848-d7adac402bff?w=800&fit=crop 800w,\n https://images.unsplash.com/photo-1426604966848-d7adac402bff?w=1200&fit=crop 1200w\n \"\n sizes=\"(max-width: 600px) 400px, (max-width: 1200px) 800px, 1200px\"\n alt=\"Responsive nature image\"\n rounded=\"md\"\n maxWidth=\"full\"\n />\n)\n```\n\n### Circular images\n\nCreate circular images for avatars or profile pictures using border radius:\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"row\" gap=\"400\" alignItems=\"center\">\n <Image \n src=\"https://i.pravatar.cc/150?img=1\"\n alt=\"User profile\"\n boxSize=\"100px\"\n borderRadius=\"full\"\n fit=\"cover\"\n />\n <Image \n src=\"https://i.pravatar.cc/150?img=2\"\n alt=\"User profile\"\n boxSize=\"80px\"\n borderRadius=\"full\"\n fit=\"cover\"\n />\n <Image \n src=\"https://i.pravatar.cc/150?img=3\"\n alt=\"User profile\"\n boxSize=\"60px\"\n borderRadius=\"full\"\n fit=\"cover\"\n />\n </Stack>\n)\n```\n\n## Component requirements\n\n### Usage context\n\nThe Image component is a styled wrapper around the native HTML `<img>` element with enhanced features:\n\n**When to use Image:**\n- When you need Chakra UI styling capabilities (responsive props, theme tokens)\n- For consistent styling across your application\n- When using features like `fit` or `align` props for easier object-fit control\n- For integration with Nimbus theme and design system\n\n**When to use native `<img>`:**\n- In simple cases where no styling or special features are needed\n- When optimizing for minimal bundle size\n- For static content that doesn't require theme integration\n\n## Accessibility\n\nThe Image component provides accessibility through proper HTML image semantics and ARIA support.\n\n#### Mandatory alt text\n\nEvery image must have an `alt` attribute. The alt text should:\n- Describe the image content and context for screen reader users\n- Be empty (`alt=\"\"`) for purely decorative images\n- Describe the action if the image is interactive (e.g., part of a link or button)\n- Provide meaningful information, not just \"image\" or the file name\n\n```jsx live-dev\nconst App = () => (\n <Stack gap=\"400\">\n <Box>\n <Text fontWeight=\"semibold\" marginBottom=\"200\">Informative image</Text>\n <Image\n src=\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=400&h=300&fit=crop\"\n alt=\"Snow-capped mountain peaks at sunrise with pink and orange sky\"\n rounded=\"md\"\n maxWidth=\"400px\"\n />\n </Box>\n <Box>\n <Text fontWeight=\"semibold\" marginBottom=\"200\">Decorative image (empty alt)</Text>\n <Image\n src=\"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=400&h=300&fit=crop\"\n alt=\"\"\n rounded=\"md\"\n maxWidth=\"400px\"\n />\n </Box>\n </Stack>\n)\n```\n\n### Accessibility standards\n\n- **Role**: The Image component renders as an `<img>` element with implicit `img` role\n- **Labeling**: Always provide descriptive `alt` text. For complex images (charts, diagrams), consider providing additional context through captions or aria-describedby\n\n#### Keyboard navigation\n\nImages are not focusable by default. Keyboard navigation only applies when images are wrapped in interactive elements such as buttons or links. In those cases, ensure the wrapping element has proper focus indicators and keyboard event handlers.\n\n#### Persistent ID tracking\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 = \"product-hero-image\";\n\nexport const Example = () => (\n <Image \n id={PERSISTENT_ID}\n src=\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=800&fit=crop\"\n alt=\"Featured product image\"\n />\n);\n```\n\n## API reference\n\n<PropsTable id=\"Image\" />\n\n\nThe Image component accepts all standard HTML `<img>` attributes including:\n- `src`: Image source URL\n- `alt`: Alternative text for accessibility\n- `srcSet`: Responsive image sources\n- `sizes`: Size hints for responsive images\n- `loading`: \"lazy\" or \"eager\" loading behavior\n- `decoding`: \"async\", \"sync\", or \"auto\" for image decoding\n- `crossOrigin`: CORS settings\n- `referrerPolicy`: Referrer policy for image requests\n\nPlus Chakra UI style props and the following enhanced props:\n- `fit`: Object fit behavior (maps to `object-fit` CSS property)\n- `align`: Object position (maps to `object-position` CSS property)\n\n\n## Common patterns\n\n### Product image display\n\nDisplay product images with consistent aspect ratios and hover effects:\n\n```jsx live-dev\nconst App = () => (\n <SimpleGrid columns={{ base: 1, md: 2, lg: 3 }} gap=\"400\">\n <Box>\n <Image \n src=\"https://images.unsplash.com/photo-1523275335684-37898b6baf30?w=400&fit=crop\"\n alt=\"Modern minimalist watch with leather strap\"\n aspectRatio={1}\n rounded=\"md\"\n transition=\"transform 0.2s\"\n _hover={{ transform: \"scale(1.05)\" }}\n cursor=\"pointer\"\n />\n <Text fontWeight=\"semibold\" marginTop=\"200\">Classic Watch</Text>\n <Text color=\"fg.muted\">$299.00</Text>\n </Box>\n <Box>\n <Image \n src=\"https://images.unsplash.com/photo-1572635196237-14b3f281503f?w=400&fit=crop\"\n alt=\"White designer sunglasses on marble surface\"\n aspectRatio={1}\n rounded=\"md\"\n transition=\"transform 0.2s\"\n _hover={{ transform: \"scale(1.05)\" }}\n cursor=\"pointer\"\n />\n <Text fontWeight=\"semibold\" marginTop=\"200\">Designer Sunglasses</Text>\n <Text color=\"fg.muted\">$189.00</Text>\n </Box>\n <Box>\n <Image \n src=\"https://images.unsplash.com/photo-1606107557195-0e29a4b5b4aa?w=400&fit=crop\"\n alt=\"Brown leather sneakers with white soles\"\n aspectRatio={1}\n rounded=\"md\"\n transition=\"transform 0.2s\"\n _hover={{ transform: \"scale(1.05)\" }}\n cursor=\"pointer\"\n />\n <Text fontWeight=\"semibold\" marginTop=\"200\">Leather Sneakers</Text>\n <Text color=\"fg.muted\">$159.00</Text>\n </Box>\n </SimpleGrid>\n)\n```\n\n### Avatar with fallback\n\nUse Image within custom avatar implementations or as profile pictures:\n\n```jsx live-dev\nconst App = () => {\n const [imageError, setImageError] = React.useState(false);\n \n const handleError = () => {\n setImageError(true);\n };\n \n return (\n <Stack direction=\"row\" gap=\"400\" alignItems=\"center\">\n <Box position=\"relative\">\n {!imageError ? (\n <Image \n src=\"https://i.pravatar.cc/150?img=8\"\n alt=\"John Doe profile picture\"\n boxSize=\"80px\"\n borderRadius=\"full\"\n fit=\"cover\"\n onError={handleError}\n />\n ) : (\n <Box \n boxSize=\"80px\"\n borderRadius=\"full\"\n bg=\"bg.muted\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n fontWeight=\"semibold\"\n fontSize=\"xl\"\n >\n JD\n </Box>\n )}\n </Box>\n <Box>\n <Text fontWeight=\"semibold\">John Doe</Text>\n <Text color=\"fg.muted\" fontSize=\"sm\">Product Designer</Text>\n </Box>\n </Stack>\n );\n}\n```\n\n### Hero image with overlay\n\nCreate hero sections with images and text overlays:\n\n```jsx live-dev\nconst App = () => (\n <Box position=\"relative\" height=\"400px\" rounded=\"lg\" overflow=\"hidden\">\n <Image \n src=\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1200&fit=crop\"\n alt=\"Mountain landscape hero background\"\n fit=\"cover\"\n width=\"full\"\n height=\"full\"\n />\n <Box \n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n bottom=\"0\"\n bg=\"blackAlpha.600\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n flexDirection=\"column\"\n gap=\"400\"\n padding=\"600\"\n >\n <Text \n fontSize=\"4xl\" \n fontWeight=\"bold\" \n color=\"white\"\n textAlign=\"center\"\n >\n Explore the Great Outdoors\n </Text>\n <Text \n fontSize=\"lg\" \n color=\"white\"\n textAlign=\"center\"\n maxWidth=\"600px\"\n >\n Discover breathtaking landscapes and unforgettable adventures\n </Text>\n <Button colorPalette=\"teal\" size=\"md\">\n Start Your Journey\n </Button>\n </Box>\n </Box>\n)\n```\n\n### Image gallery grid\n\nDisplay a grid of images with consistent sizing and spacing:\n\n```jsx live-dev\nconst App = () => (\n <SimpleGrid columns={{ base: 2, md: 3 }} gap=\"300\">\n <Image \n src=\"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=400&fit=crop\"\n alt=\"Mountain landscape\"\n aspectRatio={4 / 3}\n rounded=\"md\"\n fit=\"cover\"\n cursor=\"pointer\"\n transition=\"opacity 0.2s\"\n _hover={{ opacity: 0.8 }}\n />\n <Image \n src=\"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05?w=400&fit=crop\"\n alt=\"Forest path\"\n aspectRatio={4 / 3}\n rounded=\"md\"\n fit=\"cover\"\n cursor=\"pointer\"\n transition=\"opacity 0.2s\"\n _hover={{ opacity: 0.8 }}\n />\n <Image \n src=\"https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=400&fit=crop\"\n alt=\"Forest wilderness\"\n aspectRatio={4 / 3}\n rounded=\"md\"\n fit=\"cover\"\n cursor=\"pointer\"\n transition=\"opacity 0.2s\"\n _hover={{ opacity: 0.8 }}\n />\n <Image \n src=\"https://images.unsplash.com/photo-1426604966848-d7adac402bff?w=400&fit=crop\"\n alt=\"Misty forest\"\n aspectRatio={4 / 3}\n rounded=\"md\"\n fit=\"cover\"\n cursor=\"pointer\"\n transition=\"opacity 0.2s\"\n _hover={{ opacity: 0.8 }}\n />\n <Image \n src=\"https://images.unsplash.com/photo-1448375240586-882707db888b?w=400&fit=crop\"\n alt=\"Golden field\"\n aspectRatio={4 / 3}\n rounded=\"md\"\n fit=\"cover\"\n cursor=\"pointer\"\n transition=\"opacity 0.2s\"\n _hover={{ opacity: 0.8 }}\n />\n <Image \n src=\"https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=400&fit=crop\"\n alt=\"Ocean beach\"\n aspectRatio={4 / 3}\n rounded=\"md\"\n fit=\"cover\"\n cursor=\"pointer\"\n transition=\"opacity 0.2s\"\n _hover={{ opacity: 0.8 }}\n />\n </SimpleGrid>\n)\n```\n\n## Testing your implementation\n\nThese examples demonstrate how to test your implementation when using Image 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 Image component renders with expected attributes and structure\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport { Image, NimbusProvider, Box } from \"@commercetools/nimbus\";\n\ndescribe(\"Image - Basic rendering\", () => {\n it(\"renders with src and alt attributes\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Test image description\"\n data-testid=\"test-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"test-image\") as HTMLImageElement;\n expect(image).toBeInTheDocument();\n expect(image.src).toBe(\"https://example.com/image.jpg\");\n expect(image.alt).toBe(\"Test image description\");\n });\n\n it(\"renders as an img element\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Test image\"\n data-testid=\"test-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"test-image\");\n expect(image.tagName).toBe(\"IMG\");\n });\n\n it(\"applies custom data attributes\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Test image\"\n data-testid=\"test-image\"\n data-custom=\"custom-value\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"test-image\");\n expect(image).toHaveAttribute(\"data-custom\", \"custom-value\");\n });\n});\n```\n\n### Aspect Ratio Tests\n\nTest aspect ratio control for consistent image dimensions\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport { Image, NimbusProvider, Box } from \"@commercetools/nimbus\";\n\ndescribe(\"Image - Aspect ratio\", () => {\n it(\"renders with aspect ratio styling\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Square image\"\n aspectRatio={1}\n data-testid=\"square-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"square-image\");\n expect(image).toBeInTheDocument();\n });\n\n it(\"renders with 16:9 aspect ratio\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Widescreen image\"\n aspectRatio={16 / 9}\n data-testid=\"widescreen-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"widescreen-image\");\n expect(image).toBeInTheDocument();\n });\n});\n```\n\n### Object Fit Tests\n\nVerify different object-fit behaviors for image scaling\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport { Image, NimbusProvider, Box } from \"@commercetools/nimbus\";\n\ndescribe(\"Image - Object fit\", () => {\n it(\"renders with cover fit\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Cover fit image\"\n fit=\"cover\"\n data-testid=\"cover-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"cover-image\");\n expect(image).toBeInTheDocument();\n });\n\n it(\"renders with contain fit\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Contain fit image\"\n fit=\"contain\"\n data-testid=\"contain-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"contain-image\");\n expect(image).toBeInTheDocument();\n });\n\n it(\"renders with fill fit\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Fill fit image\"\n fit=\"fill\"\n data-testid=\"fill-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"fill-image\");\n expect(image).toBeInTheDocument();\n });\n});\n```\n\n### Loading Behavior Tests\n\nTest lazy loading and eager loading configurations\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport { Image, NimbusProvider, Box } from \"@commercetools/nimbus\";\n\ndescribe(\"Image - Loading behavior\", () => {\n it(\"renders with lazy loading attribute\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Lazy loaded image\"\n loading=\"lazy\"\n data-testid=\"lazy-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"lazy-image\");\n expect(image).toHaveAttribute(\"loading\", \"lazy\");\n });\n\n it(\"renders with eager loading attribute\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Eager loaded image\"\n loading=\"eager\"\n data-testid=\"eager-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"eager-image\");\n expect(image).toHaveAttribute(\"loading\", \"eager\");\n });\n\n it(\"handles onLoad callback\", () => {\n const onLoad = vi.fn();\n\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Image with load handler\"\n onLoad={onLoad}\n data-testid=\"load-handler-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"load-handler-image\");\n expect(image).toBeInTheDocument();\n });\n});\n```\n\n### Responsive Images Tests\n\nTest srcSet and sizes for responsive image delivery\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport { Image, NimbusProvider, Box } from \"@commercetools/nimbus\";\n\ndescribe(\"Image - Responsive images\", () => {\n it(\"renders with srcSet attribute\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image-800w.jpg\"\n srcSet=\"https://example.com/image-400w.jpg 400w, https://example.com/image-800w.jpg 800w\"\n alt=\"Responsive image\"\n data-testid=\"srcset-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"srcset-image\") as HTMLImageElement;\n expect(image.srcset).toContain(\"400w\");\n expect(image.srcset).toContain(\"800w\");\n });\n\n it(\"renders with sizes attribute\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n srcSet=\"https://example.com/image-400w.jpg 400w, https://example.com/image-800w.jpg 800w\"\n sizes=\"(max-width: 600px) 400px, 800px\"\n alt=\"Responsive image with sizes\"\n data-testid=\"sizes-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"sizes-image\") as HTMLImageElement;\n expect(image.sizes).toBe(\"(max-width: 600px) 400px, 800px\");\n });\n});\n```\n\n### Accessibility Tests\n\nVerify proper accessibility attributes and behavior\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport { Image, NimbusProvider, Box } from \"@commercetools/nimbus\";\n\ndescribe(\"Image - Accessibility\", () => {\n it(\"requires alt text for accessibility\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Descriptive alt text\"\n data-testid=\"accessible-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"accessible-image\");\n expect(image).toHaveAccessibleName(\"Descriptive alt text\");\n });\n\n it(\"supports empty alt for decorative images\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/decorative.jpg\"\n alt=\"\"\n data-testid=\"decorative-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"decorative-image\") as HTMLImageElement;\n expect(image.alt).toBe(\"\");\n });\n\n it(\"applies aria attributes when provided\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Test image\"\n aria-describedby=\"image-description\"\n data-testid=\"aria-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"aria-image\");\n expect(image).toHaveAttribute(\"aria-describedby\", \"image-description\");\n });\n});\n```\n\n### Styling Tests\n\nTest custom styling and responsive style props\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport { Image, NimbusProvider, Box } from \"@commercetools/nimbus\";\n\ndescribe(\"Image - Styling\", () => {\n it(\"applies custom width and height\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Sized image\"\n width=\"300px\"\n height=\"200px\"\n data-testid=\"sized-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"sized-image\");\n expect(image).toBeInTheDocument();\n });\n\n it(\"applies border radius styling\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Rounded image\"\n borderRadius=\"full\"\n data-testid=\"rounded-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"rounded-image\");\n expect(image).toBeInTheDocument();\n });\n\n it(\"applies custom className\", () => {\n render(\n <NimbusProvider>\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Custom class image\"\n className=\"custom-image-class\"\n data-testid=\"class-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"class-image\");\n expect(image).toHaveClass(\"custom-image-class\");\n });\n});\n```\n\n### Integration Tests\n\nTest Image component within common layout patterns\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport { Image, NimbusProvider, Box } from \"@commercetools/nimbus\";\n\ndescribe(\"Image - Integration\", () => {\n it(\"renders within a Box container\", () => {\n render(\n <NimbusProvider>\n <Box maxWidth=\"400px\">\n <Image\n src=\"https://example.com/image.jpg\"\n alt=\"Boxed image\"\n data-testid=\"boxed-image\"\n />\n </Box>\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"boxed-image\");\n expect(image).toBeInTheDocument();\n });\n\n it(\"renders with id for tracking\", () => {\n const persistentId = \"product-image-123\";\n\n render(\n <NimbusProvider>\n <Image\n id={persistentId}\n src=\"https://example.com/product.jpg\"\n alt=\"Product image\"\n data-testid=\"tracked-image\"\n />\n </NimbusProvider>\n );\n\n const image = screen.getByTestId(\"tracked-image\");\n expect(image).toHaveAttribute(\"id\", persistentId);\n });\n});\n```\n\n\n## Resources\n\n- [Chakra UI Image Documentation](https://www.chakra-ui.com/docs/components/image)\n- [MDN: The Image Embed element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img)\n- [WCAG Image Alternative Text Guidelines](https://www.w3.org/WAI/tutorials/images/)\n",
123
+ "toc": [
124
+ {
125
+ "value": "Getting started",
126
+ "href": "#getting-started",
127
+ "depth": 2,
128
+ "numbering": [
129
+ 1,
130
+ 1
131
+ ],
132
+ "parent": "root"
133
+ },
134
+ {
135
+ "value": "Import",
136
+ "href": "#import",
137
+ "depth": 3,
138
+ "numbering": [
139
+ 1,
140
+ 1,
141
+ 1
142
+ ],
143
+ "parent": "root"
144
+ },
145
+ {
146
+ "value": "Basic usage",
147
+ "href": "#basic-usage",
148
+ "depth": 3,
149
+ "numbering": [
150
+ 1,
151
+ 1,
152
+ 2
153
+ ],
154
+ "parent": "root"
155
+ },
156
+ {
157
+ "value": "Usage examples",
158
+ "href": "#usage-examples",
159
+ "depth": 2,
160
+ "numbering": [
161
+ 1,
162
+ 2
163
+ ],
164
+ "parent": "root"
165
+ },
166
+ {
167
+ "value": "Aspect ratio control",
168
+ "href": "#aspect-ratio-control",
169
+ "depth": 3,
170
+ "numbering": [
171
+ 1,
172
+ 2,
173
+ 1
174
+ ],
175
+ "parent": "root"
176
+ },
177
+ {
178
+ "value": "Object fit options",
179
+ "href": "#object-fit-options",
180
+ "depth": 3,
181
+ "numbering": [
182
+ 1,
183
+ 2,
184
+ 2
185
+ ],
186
+ "parent": "root"
187
+ },
188
+ {
189
+ "value": "Object position",
190
+ "href": "#object-position",
191
+ "depth": 3,
192
+ "numbering": [
193
+ 1,
194
+ 2,
195
+ 3
196
+ ],
197
+ "parent": "root"
198
+ },
199
+ {
200
+ "value": "Lazy loading",
201
+ "href": "#lazy-loading",
202
+ "depth": 3,
203
+ "numbering": [
204
+ 1,
205
+ 2,
206
+ 4
207
+ ],
208
+ "parent": "root"
209
+ },
210
+ {
211
+ "value": "Responsive images",
212
+ "href": "#responsive-images",
213
+ "depth": 3,
214
+ "numbering": [
215
+ 1,
216
+ 2,
217
+ 5
218
+ ],
219
+ "parent": "root"
220
+ },
221
+ {
222
+ "value": "Circular images",
223
+ "href": "#circular-images",
224
+ "depth": 3,
225
+ "numbering": [
226
+ 1,
227
+ 2,
228
+ 6
229
+ ],
230
+ "parent": "root"
231
+ },
232
+ {
233
+ "value": "Component requirements",
234
+ "href": "#component-requirements",
235
+ "depth": 2,
236
+ "numbering": [
237
+ 1,
238
+ 3
239
+ ],
240
+ "parent": "root"
241
+ },
242
+ {
243
+ "value": "Usage context",
244
+ "href": "#usage-context",
245
+ "depth": 3,
246
+ "numbering": [
247
+ 1,
248
+ 3,
249
+ 1
250
+ ],
251
+ "parent": "root"
252
+ },
253
+ {
254
+ "value": "Accessibility",
255
+ "href": "#accessibility",
256
+ "depth": 2,
257
+ "numbering": [
258
+ 1,
259
+ 4
260
+ ],
261
+ "parent": "root"
262
+ },
263
+ {
264
+ "value": "Mandatory alt text",
265
+ "href": "#mandatory-alt-text",
266
+ "depth": 4,
267
+ "numbering": [
268
+ 1,
269
+ 4,
270
+ 1,
271
+ 1
272
+ ],
273
+ "parent": "root"
274
+ },
275
+ {
276
+ "value": "Accessibility standards",
277
+ "href": "#accessibility-standards",
278
+ "depth": 3,
279
+ "numbering": [
280
+ 1,
281
+ 4,
282
+ 2
283
+ ],
284
+ "parent": "root"
285
+ },
286
+ {
287
+ "value": "Keyboard navigation",
288
+ "href": "#keyboard-navigation",
289
+ "depth": 4,
290
+ "numbering": [
291
+ 1,
292
+ 4,
293
+ 2,
294
+ 1
295
+ ],
296
+ "parent": "root"
297
+ },
298
+ {
299
+ "value": "Persistent ID tracking",
300
+ "href": "#persistent-id-tracking",
301
+ "depth": 4,
302
+ "numbering": [
303
+ 1,
304
+ 4,
305
+ 2,
306
+ 2
307
+ ],
308
+ "parent": "root"
309
+ },
310
+ {
311
+ "value": "API reference",
312
+ "href": "#api-reference",
313
+ "depth": 2,
314
+ "numbering": [
315
+ 1,
316
+ 5
317
+ ],
318
+ "parent": "root"
319
+ },
320
+ {
321
+ "value": "Common patterns",
322
+ "href": "#common-patterns",
323
+ "depth": 2,
324
+ "numbering": [
325
+ 1,
326
+ 6
327
+ ],
328
+ "parent": "root"
329
+ },
330
+ {
331
+ "value": "Product image display",
332
+ "href": "#product-image-display",
333
+ "depth": 3,
334
+ "numbering": [
335
+ 1,
336
+ 6,
337
+ 1
338
+ ],
339
+ "parent": "root"
340
+ },
341
+ {
342
+ "value": "Avatar with fallback",
343
+ "href": "#avatar-with-fallback",
344
+ "depth": 3,
345
+ "numbering": [
346
+ 1,
347
+ 6,
348
+ 2
349
+ ],
350
+ "parent": "root"
351
+ },
352
+ {
353
+ "value": "Hero image with overlay",
354
+ "href": "#hero-image-with-overlay",
355
+ "depth": 3,
356
+ "numbering": [
357
+ 1,
358
+ 6,
359
+ 3
360
+ ],
361
+ "parent": "root"
362
+ },
363
+ {
364
+ "value": "Image gallery grid",
365
+ "href": "#image-gallery-grid",
366
+ "depth": 3,
367
+ "numbering": [
368
+ 1,
369
+ 6,
370
+ 4
371
+ ],
372
+ "parent": "root"
373
+ },
374
+ {
375
+ "value": "Testing your implementation",
376
+ "href": "#testing-your-implementation",
377
+ "depth": 2,
378
+ "numbering": [
379
+ 1,
380
+ 7
381
+ ],
382
+ "parent": "root"
383
+ },
384
+ {
385
+ "value": "Basic Rendering Tests",
386
+ "href": "#basic-rendering-tests",
387
+ "depth": 3,
388
+ "numbering": [
389
+ 1,
390
+ 7,
391
+ 1
392
+ ],
393
+ "parent": "root"
394
+ },
395
+ {
396
+ "value": "Aspect Ratio Tests",
397
+ "href": "#aspect-ratio-tests",
398
+ "depth": 3,
399
+ "numbering": [
400
+ 1,
401
+ 7,
402
+ 2
403
+ ],
404
+ "parent": "root"
405
+ },
406
+ {
407
+ "value": "Object Fit Tests",
408
+ "href": "#object-fit-tests",
409
+ "depth": 3,
410
+ "numbering": [
411
+ 1,
412
+ 7,
413
+ 3
414
+ ],
415
+ "parent": "root"
416
+ },
417
+ {
418
+ "value": "Loading Behavior Tests",
419
+ "href": "#loading-behavior-tests",
420
+ "depth": 3,
421
+ "numbering": [
422
+ 1,
423
+ 7,
424
+ 4
425
+ ],
426
+ "parent": "root"
427
+ },
428
+ {
429
+ "value": "Responsive Images Tests",
430
+ "href": "#responsive-images-tests",
431
+ "depth": 3,
432
+ "numbering": [
433
+ 1,
434
+ 7,
435
+ 5
436
+ ],
437
+ "parent": "root"
438
+ },
439
+ {
440
+ "value": "Accessibility Tests",
441
+ "href": "#accessibility-tests",
442
+ "depth": 3,
443
+ "numbering": [
444
+ 1,
445
+ 7,
446
+ 6
447
+ ],
448
+ "parent": "root"
449
+ },
450
+ {
451
+ "value": "Styling Tests",
452
+ "href": "#styling-tests",
453
+ "depth": 3,
454
+ "numbering": [
455
+ 1,
456
+ 7,
457
+ 7
458
+ ],
459
+ "parent": "root"
460
+ },
461
+ {
462
+ "value": "Integration Tests",
463
+ "href": "#integration-tests",
464
+ "depth": 3,
465
+ "numbering": [
466
+ 1,
467
+ 7,
468
+ 8
469
+ ],
470
+ "parent": "root"
471
+ },
472
+ {
473
+ "value": "Resources",
474
+ "href": "#resources",
475
+ "depth": 2,
476
+ "numbering": [
477
+ 1,
478
+ 8
479
+ ],
480
+ "parent": "root"
481
+ }
482
+ ]
483
+ },
484
+ "guidelines": {
485
+ "mdx": "\n## Guidelines\n\nImage guidelines establish best practices for the selection, display, and\noptimization of visual content, ensuring accessibility, performance, and visual\nconsistency across all contexts. They govern image quality, responsive behavior,\nappropriate usage of formats, and adherence to critical accessibility standards\nlike meaningful alt text.\n\n### Best practices\n\n- **Relevance:** Ensure the image directly supports or enhances the content it\n is paired with; avoid purely decorative or confusing visuals.\n- **Quality and format:** Use high-quality, appropriately sized images.\n - **JPEG/WebP:** For photographs and complex images.\n - **PNG:** For images requiring transparency or simple graphics.\n - **SVG:** For logos, icons, and illustrations that need crisp scaling.\n- **Responsiveness:** Implement responsive design principles so images scale\n correctly and maintain aspect ratios across various screen sizes without\n distorting or breaking the layout.\n- **Performance optimization:** Compress images to minimize file size and ensure\n fast loading times. Implement lazy loading for images that appear below the\n fold.\n- **Visual hierarchy:** Images should contribute to, but not dominate, the\n visual hierarchy unless they are the primary content (e.g., product hero\n image).\n- **Maintain brand style:** Ensure all illustrations and graphics adhere to the\n established brand style and color palette.\n",
486
+ "toc": [
487
+ {
488
+ "value": "Guidelines",
489
+ "href": "#guidelines",
490
+ "depth": 2,
491
+ "numbering": [
492
+ 1,
493
+ 1
494
+ ],
495
+ "parent": "root"
496
+ },
497
+ {
498
+ "value": "Best practices",
499
+ "href": "#best-practices",
500
+ "depth": 3,
501
+ "numbering": [
502
+ 1,
503
+ 1,
504
+ 1
505
+ ],
506
+ "parent": "root"
507
+ }
508
+ ]
509
+ }
510
+ }
511
+ }