@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,554 @@
1
+ {
2
+ "meta": {
3
+ "id": "Components-link",
4
+ "title": "Link",
5
+ "exportName": "Link",
6
+ "description": "A link is a clickable element that navigates users to another page, section of the page, or resource, and is visually distinguished by styling.",
7
+ "lifecycleState": "Stable",
8
+ "order": 999,
9
+ "repoPath": "packages/nimbus/src/components/link/link.mdx",
10
+ "menu": [
11
+ "Components",
12
+ "Navigation",
13
+ "Link"
14
+ ],
15
+ "route": "components/navigation/link",
16
+ "tags": [
17
+ "component",
18
+ "link",
19
+ "anchor",
20
+ "navigation",
21
+ "href"
22
+ ],
23
+ "toc": [
24
+ {
25
+ "value": "Overview",
26
+ "href": "#overview",
27
+ "depth": 2,
28
+ "numbering": [
29
+ 1,
30
+ 1
31
+ ],
32
+ "parent": "root"
33
+ },
34
+ {
35
+ "value": "Resources",
36
+ "href": "#resources",
37
+ "depth": 3,
38
+ "numbering": [
39
+ 1,
40
+ 1,
41
+ 1
42
+ ],
43
+ "parent": "root"
44
+ },
45
+ {
46
+ "value": "Variables",
47
+ "href": "#variables",
48
+ "depth": 2,
49
+ "numbering": [
50
+ 1,
51
+ 2
52
+ ],
53
+ "parent": "root"
54
+ },
55
+ {
56
+ "value": "Size and text styling",
57
+ "href": "#size-and-text-styling",
58
+ "depth": 3,
59
+ "numbering": [
60
+ 1,
61
+ 2,
62
+ 1
63
+ ],
64
+ "parent": "root"
65
+ }
66
+ ],
67
+ "figmaLink": "https://www.figma.com/design/AvtPX6g7OGGCRvNlatGOIY/NIMBUS-design-system?node-id=384-5726",
68
+ "layout": "app-frame",
69
+ "tabs": [
70
+ {
71
+ "key": "overview",
72
+ "title": "Overview",
73
+ "order": 0
74
+ },
75
+ {
76
+ "key": "guidelines",
77
+ "title": "Guidelines",
78
+ "order": 2
79
+ },
80
+ {
81
+ "key": "dev",
82
+ "title": "Implementation",
83
+ "order": 3
84
+ },
85
+ {
86
+ "key": "a11y",
87
+ "title": "Accessibility",
88
+ "order": 4
89
+ }
90
+ ]
91
+ },
92
+ "mdx": "\n## Overview\n\nThe link is flexible to many uses and matching text styles for common\nplacements. Most commonly used in dialog boxes, alerts, and within body copy.\n\n### Resources\n\nDeep dive into implementation details and access the Nimbus design library.\n\n[React ARIA](https://react-spectrum.adobe.com/react-spectrum/Link.html#link)\n[ARIA Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/link/)\n[Figma library](https://www.figma.com/design/AvtPX6g7OGGCRvNlatGOIY/NIMBUS-design-system?node-id=384-5726)\n\n## Variables\n\nGet familiar with the features.\n\n### Size and text styling\n\nLinks should be within text, and should take on that styling when used, and\nprovide the additional link stylings to let the user know that the text is\ninteractive.\n",
93
+ "views": {
94
+ "overview": {
95
+ "mdx": "\n## Overview\n\nThe link is flexible to many uses and matching text styles for common\nplacements. Most commonly used in dialog boxes, alerts, and within body copy.\n\n### Resources\n\nDeep dive into implementation details and access the Nimbus design library.\n\n[React ARIA](https://react-spectrum.adobe.com/react-spectrum/Link.html#link)\n[ARIA Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/link/)\n[Figma library](https://www.figma.com/design/AvtPX6g7OGGCRvNlatGOIY/NIMBUS-design-system?node-id=384-5726)\n\n## Variables\n\nGet familiar with the features.\n\n### Size and text styling\n\nLinks should be within text, and should take on that styling when used, and\nprovide the additional link stylings to let the user know that the text is\ninteractive.\n",
96
+ "toc": [
97
+ {
98
+ "value": "Overview",
99
+ "href": "#overview",
100
+ "depth": 2,
101
+ "numbering": [
102
+ 1,
103
+ 1
104
+ ],
105
+ "parent": "root"
106
+ },
107
+ {
108
+ "value": "Resources",
109
+ "href": "#resources",
110
+ "depth": 3,
111
+ "numbering": [
112
+ 1,
113
+ 1,
114
+ 1
115
+ ],
116
+ "parent": "root"
117
+ },
118
+ {
119
+ "value": "Variables",
120
+ "href": "#variables",
121
+ "depth": 2,
122
+ "numbering": [
123
+ 1,
124
+ 2
125
+ ],
126
+ "parent": "root"
127
+ },
128
+ {
129
+ "value": "Size and text styling",
130
+ "href": "#size-and-text-styling",
131
+ "depth": 3,
132
+ "numbering": [
133
+ 1,
134
+ 2,
135
+ 1
136
+ ],
137
+ "parent": "root"
138
+ }
139
+ ]
140
+ },
141
+ "a11y": {
142
+ "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 <Link href=\"#\" size=\"md\" fontColor=\"primary\">\n Click me... with your keyboard\n </Link>\n );\n```\n\n### Accessibility standards\n\n- **Non-text content:** Provide text alternatives for any non-text content\n within or associated with links (e.g., icons embedded in links). Use alt text\n for images within links and provide text equivalents for other non-text\n content.\n- **Use of color:** Avoid relying solely on color to distinguish links from\n surrounding text. Provide additional visual cues, such as underlines, bold\n text, or icons, to indicate links. Ensure that links remain distinguishable\n even when color is not available.\n- **Color contrast:** Ensure sufficient color contrast between link text and the\n surrounding text and background. Use a contrast checking tool to verify that\n the contrast ratio meets the minimum requirements.\n- **Keyboard accessibility:** Make all links fully operable using the keyboard.\n Enable users to navigate to links using the Tab key. Allow users to activate\n links using the Enter key.\n- **Link purpose:** Write link text that clearly describes the destination or\n purpose of the link. Avoid generic link text such as \"click here\" or \"read\n more\" without sufficient context. Ensure that the link's purpose is clear from\n the surrounding context.\n- **Focus visible:** Provide a clear and visible focus indicator for links when\n they receive keyboard focus. Visually distinguish the focus state from the\n default state using outlines, highlights, or other visual cues. Avoid relying\n solely on color changes to indicate focus.\n- **Language of parts:** If a link leads to content in a different language, use\n the `lang` attribute to indicate the language of the linked content.\n- **On focus:** Prevent links from unexpectedly changing the context of the page\n when they receive focus. Ensure that any context changes are initiated by the\n user activating the link.\n- **Name, role, value:** Use the `<a>` element correctly to define links. Ensure\n that assistive technologies can correctly interpret links and their\n attributes. Use ARIA attributes (e.g., `aria-label`, `aria-describedby`) when\n necessary to provide additional information to assistive technologies,\n especially for complex links or custom implementations.\n",
143
+ "toc": [
144
+ {
145
+ "value": "Accessibility",
146
+ "href": "#accessibility",
147
+ "depth": 2,
148
+ "numbering": [
149
+ 1,
150
+ 1
151
+ ],
152
+ "parent": "root"
153
+ },
154
+ {
155
+ "value": "Accessibility standards",
156
+ "href": "#accessibility-standards",
157
+ "depth": 3,
158
+ "numbering": [
159
+ 1,
160
+ 1,
161
+ 1
162
+ ],
163
+ "parent": "root"
164
+ }
165
+ ]
166
+ },
167
+ "dev": {
168
+ "mdx": "\n## Getting started\n\n### Import\n\n```tsx\nimport { Link, type LinkProps } from '@commercetools/nimbus';\n```\n\n### Basic usage\n\n```jsx live-dev\nconst App = () => {\n return (\n <Link href=\"#\">\n Go to Dashboard\n </Link>\n );\n};\n```\n\n## Usage examples\n\n### Size options\n\nThe Link component supports three size variants: `xs`, `sm`, and `md` (default).\n\n```jsx live-dev\nconst App = () => {\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Link href=\"#\" size=\"xs\">\n Extra small link\n </Link>\n <Link href=\"#\" size=\"sm\">\n Small link\n </Link>\n <Link href=\"#\" size=\"md\">\n Medium link (default)\n </Link>\n </Stack>\n );\n};\n```\n\n### Font color variants\n\nControl the link color with the `fontColor` prop. Use `primary` for the theme's primary color or `inherit` to match the parent text color.\n\n```jsx live-dev\nconst App = () => {\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Text>\n This text contains a <Link href=\"#\" fontColor=\"primary\">primary colored link</Link> inline.\n </Text>\n <Text>\n This text contains a <Link href=\"#\" fontColor=\"inherit\">link that inherits</Link> the text color.\n </Text>\n </Stack>\n );\n};\n```\n\n### Opening links in new tabs\n\nFor external links, use `target=\"_blank\"` with `rel=\"noopener noreferrer\"` for security.\n\n```jsx live-dev\nconst App = () => {\n return (\n <Link\n href=\"https://commercetools.com\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Visit commercetools.com (opens in new tab)\n </Link>\n );\n};\n```\n\n### Download links\n\nUse the `download` attribute to prompt file downloads.\n\n```jsx live-dev\nconst App = () => {\n return (\n <Link\n href=\"/files/report.pdf\"\n download=\"monthly-report.pdf\"\n >\n Download Monthly Report\n </Link>\n );\n};\n```\n\n### With icons\n\nCombine links with icons for enhanced visual communication.\n\n```jsx live-dev\nconst App = () => {\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Link href=\"https://docs.example.com\" target=\"_blank\" rel=\"noopener noreferrer\">\n <Icons.OpenInNew />\n Documentation\n </Link>\n <Link href=\"/files/guide.pdf\" download>\n <Icons.Download />\n Download Guide\n </Link>\n <Link href=\"mailto:support@example.com\">\n <Icons.Email />\n Email Support\n </Link>\n </Stack>\n );\n};\n```\n\n### Using asChild pattern\n\nThe `asChild` prop allows you to use custom elements while maintaining Link's styling and behavior.\n\n```jsx live-dev\nconst App = () => {\n return (\n <Link asChild href=\"/profile\">\n <button type=\"button\">\n View Profile\n </button>\n </Link>\n );\n};\n```\n\n### Email and phone links\n\nCreate accessible mailto and tel links.\n\n```jsx live-dev\nconst App = () => {\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Link href=\"mailto:support@example.com\">\n support@example.com\n </Link>\n <Link href=\"tel:+1234567890\">\n +1 (234) 567-890\n </Link>\n </Stack>\n );\n};\n```\n\n## Component requirements\n\n### Role\n\nThe Link component renders as an anchor (`<a>`) element by default with the implicit `link` role, providing proper semantic meaning for assistive technologies.\n\n## Accessibility\n\nLinks must have accessible labels that clearly describe their destination or purpose:\n\n- Use descriptive link text that makes sense out of context\n- Avoid generic text like \"click here\" or \"read more\"\n- For icon-only links, provide an `aria-label`\n\n```jsx live-dev\nconst App = () => {\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Link href=\"/articles/new-feature\" aria-label=\"Read article about new feature\">\n <Icons.Article />\n </Link>\n <Text>\n Learn more about our <Link href=\"/features\">product features</Link>.\n </Text>\n </Stack>\n );\n};\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 = \"header-dashboard-link\";\n\nexport const Example = () => (\n <Link id={PERSISTENT_ID} href=\"/dashboard\">\n Dashboard\n </Link>\n);\n```\n\n### Keyboard navigation\n\nThe Link component supports standard keyboard interactions:\n\n| Key | Action |\n|-----|--------|\n| `Tab` | Move focus to/from the link |\n| `Enter` | Activate the link |\n| `Shift + Tab` | Move focus to previous focusable element |\n\n\n## API reference\n\n<PropsTable id=\"Link\" />\n\n## Common patterns\n\n### External links with security\n\nAlways use `rel=\"noopener noreferrer\"` when opening external links in new tabs to prevent security vulnerabilities.\n\n```tsx\n<Link\n href=\"https://external-site.com\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n>\n External Link\n</Link>\n```\n\n### Navigation links with state\n\nWhen using with routing libraries like React Router, use the `asChild` pattern:\n\n```tsx\nimport { Link as RouterLink } from 'react-router-dom';\n\n<Link asChild>\n <RouterLink to=\"/dashboard\">\n Dashboard\n </RouterLink>\n</Link>\n```\n\n### Conditional link styling\n\nCombine with Chakra UI style props for custom styling:\n\n```tsx\n<Link\n href=\"/profile\"\n fontWeight=\"bold\"\n textDecoration=\"none\"\n _hover={{ textDecoration: \"underline\" }}\n>\n Profile\n</Link>\n```\n\n## Testing your implementation\n\nThese examples demonstrate how to test your implementation when using Link 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 Link component renders with expected elements and attributes\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Link, NimbusProvider } from \"@commercetools/nimbus\";\nimport type { NimbusRouterConfig } from \"../nimbus-provider/nimbus-provider.types\";\n\ndescribe(\"Link - Basic rendering\", () => {\n it(\"renders a link with text content\", () => {\n render(\n <NimbusProvider>\n <Link href=\"/dashboard\">Go to Dashboard</Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\", { name: \"Go to Dashboard\" });\n expect(link).toBeInTheDocument();\n expect(link).toHaveAttribute(\"href\", \"/dashboard\");\n });\n\n it(\"renders with custom href\", () => {\n render(\n <NimbusProvider>\n <Link href=\"https://commercetools.com\">Visit Site</Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n expect(link).toHaveAttribute(\"href\", \"https://commercetools.com\");\n });\n\n it(\"forwards ref to anchor element\", () => {\n const ref = { current: null };\n render(\n <NimbusProvider>\n <Link href=\"/page\" ref={ref}>\n Link with Ref\n </Link>\n </NimbusProvider>\n );\n\n expect(ref.current).toBeInstanceOf(HTMLAnchorElement);\n });\n});\n```\n\n### Navigation Tests\n\nTest link navigation behavior and click handling\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Link, NimbusProvider } from \"@commercetools/nimbus\";\nimport type { NimbusRouterConfig } from \"../nimbus-provider/nimbus-provider.types\";\n\ndescribe(\"Link - Navigation\", () => {\n it(\"handles click events\", async () => {\n const user = userEvent.setup();\n const handleClick = vi.fn();\n\n render(\n <NimbusProvider router={mockRouter}>\n <Link href=\"/page\" onClick={handleClick}>\n Clickable Link\n </Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n await user.click(link);\n\n expect(handleClick).toHaveBeenCalled();\n });\n\n it(\"supports keyboard activation with Enter key\", async () => {\n const user = userEvent.setup();\n const handleClick = vi.fn();\n\n render(\n <NimbusProvider router={mockRouter}>\n <Link href=\"/page\" onClick={handleClick}>\n Keyboard Link\n </Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n link.focus();\n await user.keyboard(\"{Enter}\");\n\n expect(handleClick).toHaveBeenCalled();\n });\n\n it(\"is focusable with Tab key\", async () => {\n const user = userEvent.setup();\n\n render(\n <NimbusProvider>\n <Link href=\"/page\">Focusable Link</Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n await user.tab();\n\n expect(link).toHaveFocus();\n });\n});\n```\n\n### External Link Tests\n\nTest external link behavior with target and rel attributes\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Link, NimbusProvider } from \"@commercetools/nimbus\";\nimport type { NimbusRouterConfig } from \"../nimbus-provider/nimbus-provider.types\";\n\ndescribe(\"Link - External links\", () => {\n it(\"opens external links in new tab with proper security attributes\", () => {\n render(\n <NimbusProvider>\n <Link\n href=\"https://external-site.com\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n External Link\n </Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n expect(link).toHaveAttribute(\"target\", \"_blank\");\n expect(link).toHaveAttribute(\"rel\", \"noopener noreferrer\");\n });\n\n it(\"supports download attribute for file downloads\", () => {\n render(\n <NimbusProvider>\n <Link href=\"/files/report.pdf\" download=\"report.pdf\">\n Download Report\n </Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n expect(link).toHaveAttribute(\"download\", \"report.pdf\");\n });\n});\n```\n\n### Size Variant Tests\n\nVerify different size options render correctly\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Link, NimbusProvider } from \"@commercetools/nimbus\";\nimport type { NimbusRouterConfig } from \"../nimbus-provider/nimbus-provider.types\";\n\ndescribe(\"Link - Size variants\", () => {\n it(\"renders with extra small size\", () => {\n render(\n <NimbusProvider>\n <Link href=\"/page\" size=\"xs\">\n Extra Small Link\n </Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n expect(link).toBeInTheDocument();\n });\n\n it(\"renders with small size\", () => {\n render(\n <NimbusProvider>\n <Link href=\"/page\" size=\"sm\">\n Small Link\n </Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n expect(link).toBeInTheDocument();\n });\n\n it(\"renders with medium size (default)\", () => {\n render(\n <NimbusProvider>\n <Link href=\"/page\" size=\"md\">\n Medium Link\n </Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n expect(link).toBeInTheDocument();\n });\n});\n```\n\n### Font Color Variant Tests\n\nVerify different font color options render correctly\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Link, NimbusProvider } from \"@commercetools/nimbus\";\nimport type { NimbusRouterConfig } from \"../nimbus-provider/nimbus-provider.types\";\n\ndescribe(\"Link - Font color variants\", () => {\n it(\"renders with primary color\", () => {\n render(\n <NimbusProvider>\n <Link href=\"/page\" fontColor=\"primary\">\n Primary Link\n </Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n expect(link).toBeInTheDocument();\n });\n\n it(\"renders with inherited color\", () => {\n render(\n <NimbusProvider>\n <Link href=\"/page\" fontColor=\"inherit\">\n Inherited Color Link\n </Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n expect(link).toBeInTheDocument();\n });\n});\n```\n\n### Accessibility Tests\n\nVerify accessibility features and ARIA attributes\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Link, NimbusProvider } from \"@commercetools/nimbus\";\nimport type { NimbusRouterConfig } from \"../nimbus-provider/nimbus-provider.types\";\n\ndescribe(\"Link - Accessibility\", () => {\n it(\"supports aria-label for icon-only links\", () => {\n render(\n <NimbusProvider>\n <Link href=\"/profile\" aria-label=\"View user profile\">\n 👤\n </Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\", { name: \"View user profile\" });\n expect(link).toBeInTheDocument();\n });\n\n it(\"supports custom id for tracking\", () => {\n render(\n <NimbusProvider>\n <Link href=\"/page\" id=\"nav-dashboard-link\">\n Dashboard\n </Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n expect(link).toHaveAttribute(\"id\", \"nav-dashboard-link\");\n });\n\n it(\"supports data attributes for testing\", () => {\n render(\n <NimbusProvider>\n <Link href=\"/page\" data-testid=\"custom-link\">\n Test Link\n </Link>\n </NimbusProvider>\n );\n\n const link = screen.getByTestId(\"custom-link\");\n expect(link).toBeInTheDocument();\n });\n});\n```\n\n### Special Link Types Tests\n\nTest email, phone, and other special link types\n\n```tsx\nimport { describe, it, expect, vi } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Link, NimbusProvider } from \"@commercetools/nimbus\";\nimport type { NimbusRouterConfig } from \"../nimbus-provider/nimbus-provider.types\";\n\ndescribe(\"Link - Special link types\", () => {\n it(\"creates mailto links correctly\", () => {\n render(\n <NimbusProvider>\n <Link href=\"mailto:support@example.com\">Email Support</Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n expect(link).toHaveAttribute(\"href\", \"mailto:support@example.com\");\n });\n\n it(\"creates tel links correctly\", () => {\n render(\n <NimbusProvider>\n <Link href=\"tel:+1234567890\">Call Us</Link>\n </NimbusProvider>\n );\n\n const link = screen.getByRole(\"link\");\n expect(link).toHaveAttribute(\"href\", \"tel:+1234567890\");\n });\n});\n```\n\n\n## Resources\n\n- [Link Storybook](https://nimbus-storybook.vercel.app/?path=/docs/components-link--docs)\n- [React Aria Link](https://react-spectrum.adobe.com/react-aria/Link.html)\n- [WCAG Link Guidelines](https://www.w3.org/WAI/WCAG21/Understanding/link-purpose-in-context.html)\n",
169
+ "toc": [
170
+ {
171
+ "value": "Getting started",
172
+ "href": "#getting-started",
173
+ "depth": 2,
174
+ "numbering": [
175
+ 1,
176
+ 1
177
+ ],
178
+ "parent": "root"
179
+ },
180
+ {
181
+ "value": "Import",
182
+ "href": "#import",
183
+ "depth": 3,
184
+ "numbering": [
185
+ 1,
186
+ 1,
187
+ 1
188
+ ],
189
+ "parent": "root"
190
+ },
191
+ {
192
+ "value": "Basic usage",
193
+ "href": "#basic-usage",
194
+ "depth": 3,
195
+ "numbering": [
196
+ 1,
197
+ 1,
198
+ 2
199
+ ],
200
+ "parent": "root"
201
+ },
202
+ {
203
+ "value": "Usage examples",
204
+ "href": "#usage-examples",
205
+ "depth": 2,
206
+ "numbering": [
207
+ 1,
208
+ 2
209
+ ],
210
+ "parent": "root"
211
+ },
212
+ {
213
+ "value": "Size options",
214
+ "href": "#size-options",
215
+ "depth": 3,
216
+ "numbering": [
217
+ 1,
218
+ 2,
219
+ 1
220
+ ],
221
+ "parent": "root"
222
+ },
223
+ {
224
+ "value": "Font color variants",
225
+ "href": "#font-color-variants",
226
+ "depth": 3,
227
+ "numbering": [
228
+ 1,
229
+ 2,
230
+ 2
231
+ ],
232
+ "parent": "root"
233
+ },
234
+ {
235
+ "value": "Opening links in new tabs",
236
+ "href": "#opening-links-in-new-tabs",
237
+ "depth": 3,
238
+ "numbering": [
239
+ 1,
240
+ 2,
241
+ 3
242
+ ],
243
+ "parent": "root"
244
+ },
245
+ {
246
+ "value": "Download links",
247
+ "href": "#download-links",
248
+ "depth": 3,
249
+ "numbering": [
250
+ 1,
251
+ 2,
252
+ 4
253
+ ],
254
+ "parent": "root"
255
+ },
256
+ {
257
+ "value": "With icons",
258
+ "href": "#with-icons",
259
+ "depth": 3,
260
+ "numbering": [
261
+ 1,
262
+ 2,
263
+ 5
264
+ ],
265
+ "parent": "root"
266
+ },
267
+ {
268
+ "value": "Using asChild pattern",
269
+ "href": "#using-aschild-pattern",
270
+ "depth": 3,
271
+ "numbering": [
272
+ 1,
273
+ 2,
274
+ 6
275
+ ],
276
+ "parent": "root"
277
+ },
278
+ {
279
+ "value": "Email and phone links",
280
+ "href": "#email-and-phone-links",
281
+ "depth": 3,
282
+ "numbering": [
283
+ 1,
284
+ 2,
285
+ 7
286
+ ],
287
+ "parent": "root"
288
+ },
289
+ {
290
+ "value": "Component requirements",
291
+ "href": "#component-requirements",
292
+ "depth": 2,
293
+ "numbering": [
294
+ 1,
295
+ 3
296
+ ],
297
+ "parent": "root"
298
+ },
299
+ {
300
+ "value": "Role",
301
+ "href": "#role",
302
+ "depth": 3,
303
+ "numbering": [
304
+ 1,
305
+ 3,
306
+ 1
307
+ ],
308
+ "parent": "root"
309
+ },
310
+ {
311
+ "value": "Accessibility",
312
+ "href": "#accessibility",
313
+ "depth": 2,
314
+ "numbering": [
315
+ 1,
316
+ 4
317
+ ],
318
+ "parent": "root"
319
+ },
320
+ {
321
+ "value": "Keyboard navigation",
322
+ "href": "#keyboard-navigation",
323
+ "depth": 3,
324
+ "numbering": [
325
+ 1,
326
+ 4,
327
+ 1
328
+ ],
329
+ "parent": "root"
330
+ },
331
+ {
332
+ "value": "API reference",
333
+ "href": "#api-reference",
334
+ "depth": 2,
335
+ "numbering": [
336
+ 1,
337
+ 5
338
+ ],
339
+ "parent": "root"
340
+ },
341
+ {
342
+ "value": "Common patterns",
343
+ "href": "#common-patterns",
344
+ "depth": 2,
345
+ "numbering": [
346
+ 1,
347
+ 6
348
+ ],
349
+ "parent": "root"
350
+ },
351
+ {
352
+ "value": "External links with security",
353
+ "href": "#external-links-with-security",
354
+ "depth": 3,
355
+ "numbering": [
356
+ 1,
357
+ 6,
358
+ 1
359
+ ],
360
+ "parent": "root"
361
+ },
362
+ {
363
+ "value": "Navigation links with state",
364
+ "href": "#navigation-links-with-state",
365
+ "depth": 3,
366
+ "numbering": [
367
+ 1,
368
+ 6,
369
+ 2
370
+ ],
371
+ "parent": "root"
372
+ },
373
+ {
374
+ "value": "Conditional link styling",
375
+ "href": "#conditional-link-styling",
376
+ "depth": 3,
377
+ "numbering": [
378
+ 1,
379
+ 6,
380
+ 3
381
+ ],
382
+ "parent": "root"
383
+ },
384
+ {
385
+ "value": "Testing your implementation",
386
+ "href": "#testing-your-implementation",
387
+ "depth": 2,
388
+ "numbering": [
389
+ 1,
390
+ 7
391
+ ],
392
+ "parent": "root"
393
+ },
394
+ {
395
+ "value": "Basic Rendering Tests",
396
+ "href": "#basic-rendering-tests",
397
+ "depth": 3,
398
+ "numbering": [
399
+ 1,
400
+ 7,
401
+ 1
402
+ ],
403
+ "parent": "root"
404
+ },
405
+ {
406
+ "value": "Navigation Tests",
407
+ "href": "#navigation-tests",
408
+ "depth": 3,
409
+ "numbering": [
410
+ 1,
411
+ 7,
412
+ 2
413
+ ],
414
+ "parent": "root"
415
+ },
416
+ {
417
+ "value": "External Link Tests",
418
+ "href": "#external-link-tests",
419
+ "depth": 3,
420
+ "numbering": [
421
+ 1,
422
+ 7,
423
+ 3
424
+ ],
425
+ "parent": "root"
426
+ },
427
+ {
428
+ "value": "Size Variant Tests",
429
+ "href": "#size-variant-tests",
430
+ "depth": 3,
431
+ "numbering": [
432
+ 1,
433
+ 7,
434
+ 4
435
+ ],
436
+ "parent": "root"
437
+ },
438
+ {
439
+ "value": "Font Color Variant Tests",
440
+ "href": "#font-color-variant-tests",
441
+ "depth": 3,
442
+ "numbering": [
443
+ 1,
444
+ 7,
445
+ 5
446
+ ],
447
+ "parent": "root"
448
+ },
449
+ {
450
+ "value": "Accessibility Tests",
451
+ "href": "#accessibility-tests",
452
+ "depth": 3,
453
+ "numbering": [
454
+ 1,
455
+ 7,
456
+ 6
457
+ ],
458
+ "parent": "root"
459
+ },
460
+ {
461
+ "value": "Special Link Types Tests",
462
+ "href": "#special-link-types-tests",
463
+ "depth": 3,
464
+ "numbering": [
465
+ 1,
466
+ 7,
467
+ 7
468
+ ],
469
+ "parent": "root"
470
+ },
471
+ {
472
+ "value": "Resources",
473
+ "href": "#resources",
474
+ "depth": 2,
475
+ "numbering": [
476
+ 1,
477
+ 8
478
+ ],
479
+ "parent": "root"
480
+ }
481
+ ]
482
+ },
483
+ "guidelines": {
484
+ "mdx": "\n## Guidelines\n\nLink guidelines ensure that interactive text or elements are clearly\nidentifiable, describe their destination or function, are keyboard accessible,\nand maintain sufficient visual contrast for all users.\n\n### Best practices\n\n- **Links are meant to be used in inline placements, buttons are standalone\n elements.** Additionally, if you need an icon next to your link, use a link\n styled button instead of using a link and an icon.\n- **Use links for navigation** rather than to complete an action. Links are\n tertiary actions should give users access to information or navigate to other\n pages when helpful to the user.\n - Stylized navigation like footers and nav items are more often buttons rather\n than links.\n- **Use clear and concise text:** Use link text that accurately and concisely\n describes the destination or purpose of the link. Avoid generic phrases like\n \"click here\". Remember that translation will add 20% more length on average.\n- **Accessibility:** Default color contrast passes accessibility guidelines, if\n customizing, please ensure your links pass color contrast guidelines. Use ARIA\n attributes to provide additional context to assistive technologies.\n\n### Usage\n\nLinked text, the clickable text that forms a hyperlink, should be used\nstrategically to enhance navigation and provide access to relevant information.\n\n> [!TIP]\\\n> When to use\n\n- **Navigation:** Users expect links to move them from to one location to\n another within a product. When moving outside the product or when opening a\n new page, use the\n [link styled button](/components/inputs/button#tertiary-actions).\n- **Tertiary actions that need explanation:** when showing a user an error or\n explanation it is nice to offer a link for the user.\n- **Contextual information:** To provide access to related content, definitions,\n or supporting materials.\n\n> [!CAUTION]\\\n> When not to use\n\n- **Redundancy:** If the same destination can be reached through more intuitive\n navigation (e.g., menus, breadcrumbs).\n- **Disrupting flow:** Overuse of links within paragraphs can disrupt the\n reading flow and make it difficult for users to focus on the main content.\n- **Ambiguity:** If the link text is unclear or doesn't accurately describe the\n destination, it can lead to confusion and frustration.\n- **Accessibility issues:** If links are not properly styled or labeled, they\n can be inaccessible to users with disabilities.\n\n### Length of text\n\nKeep text links short and accurately describe the action that will be taken.\n\n> [!TIP]\\\n> **Do**\n>\n> - Explain where the link will go clearly, but keep it short as possible.\n\n```jsx live\nconst App = () => (\n <Link href=\"#\" size=\"sm\" fontColor=\"primary\">\n Manage permissions\n </Link>\n );\n```\n\n> [!CAUTION]\\\n> **Don't**\n>\n> - Do not make an entire sentence a hyperlink.\n\n```jsx live\nconst App = () => (\n <Link href=\"#\" size=\"sm\" fontColor=\"primary\">\n Click here to know all there is to know about making custom views in the Merchant Center.\n </Link>\n );\n```\n\n### Actions\n\nUsers expect links to navigate rather than submit actions. Do not use links to\ndo what a button would accomplish better.\n\n> [!TIP]\\\n> **Do**\n>\n> - Implementations like this are more familiar to the user. They will expect to\n> navigate to the page where they can accomplish this action.\n\n```jsx live\nconst App = () => (\n <Box>\n There has been an issue with your payment.{\" \"}\n <Link href=\"#\" fontColor=\"primary\">\n Update payment\n </Link>\n </Box>\n);\n```\n\n> [!CAUTION]\\\n> **Don't**\n>\n> - Do not use links for actions that buttons are more commonly used for.\n\n```jsx live\nconst App = () => (\n <Stack direction=\"horizontal\" alignItems=\"center\" gap=\"400\" >\n <Link href=\"#\" fontColor=\"primary\">\n Save\n </Link>\n <Link href=\"#\" fontColor=\"primary\">\n Delete\n </Link>\n </Stack>\n);\n```\n\n### Links inside alerts\n\nText links inherit colors depending on placement.\n\n> [!TIP]\\\n> **Do**\n>\n> - If possible lead the user to where they can fix or learn more about what\n> happened so they might correct the action to complete their task.\n\n```jsx live\nconst App = () => (\n <Alert.Root colorPalette=\"critical\" variant=\"outlined\" width=\"9600\">\n <Alert.Description>\n Something went wrong. <Link>Read more</Link>\n </Alert.Description>\n <Alert.DismissButton />\n </Alert.Root>\n);\n```\n\n> [!CAUTION]\\\n> **Don't**\n>\n> - Do not link the entire message, do not have multiple sentences in a link.\n> - Do not use default link colors when you can use inherited colors to provide\n> the best consistency for a user.\n\n```jsx live\nconst App = () =>(\n <Alert.Root colorPalette=\"critical\" variant=\"outlined\" width=\"9600\">\n <Alert.Description>\n <Link color=\"primary\">Something went wrong. Read more</Link>\n </Alert.Description>\n <Alert.DismissButton />\n </Alert.Root>\n);\n```\n",
485
+ "toc": [
486
+ {
487
+ "value": "Guidelines",
488
+ "href": "#guidelines",
489
+ "depth": 2,
490
+ "numbering": [
491
+ 1,
492
+ 1
493
+ ],
494
+ "parent": "root"
495
+ },
496
+ {
497
+ "value": "Best practices",
498
+ "href": "#best-practices",
499
+ "depth": 3,
500
+ "numbering": [
501
+ 1,
502
+ 1,
503
+ 1
504
+ ],
505
+ "parent": "root"
506
+ },
507
+ {
508
+ "value": "Usage",
509
+ "href": "#usage",
510
+ "depth": 3,
511
+ "numbering": [
512
+ 1,
513
+ 1,
514
+ 2
515
+ ],
516
+ "parent": "root"
517
+ },
518
+ {
519
+ "value": "Length of text",
520
+ "href": "#length-of-text",
521
+ "depth": 3,
522
+ "numbering": [
523
+ 1,
524
+ 1,
525
+ 3
526
+ ],
527
+ "parent": "root"
528
+ },
529
+ {
530
+ "value": "Actions",
531
+ "href": "#actions",
532
+ "depth": 3,
533
+ "numbering": [
534
+ 1,
535
+ 1,
536
+ 4
537
+ ],
538
+ "parent": "root"
539
+ },
540
+ {
541
+ "value": "Links inside alerts",
542
+ "href": "#links-inside-alerts",
543
+ "depth": 3,
544
+ "numbering": [
545
+ 1,
546
+ 1,
547
+ 5
548
+ ],
549
+ "parent": "root"
550
+ }
551
+ ]
552
+ }
553
+ }
554
+ }