@commercetools/nimbus-mcp 0.1.0 → 2.10.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 (450) hide show
  1. package/README.md +63 -14
  2. package/data/docs/route-manifest.json +10913 -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-separator.json +461 -0
  59. package/data/docs/routes/components-layout-simple-grid.json +519 -0
  60. package/data/docs/routes/components-layout-spacer.json +573 -0
  61. package/data/docs/routes/components-layout-stack.json +481 -0
  62. package/data/docs/routes/components-layout.json +34 -0
  63. package/data/docs/routes/components-media-avatar.json +427 -0
  64. package/data/docs/routes/components-media-icon.json +663 -0
  65. package/data/docs/routes/components-media-image.json +511 -0
  66. package/data/docs/routes/components-media-inline-svg.json +586 -0
  67. package/data/docs/routes/components-media.json +34 -0
  68. package/data/docs/routes/components-navigation-accordion.json +643 -0
  69. package/data/docs/routes/components-navigation-collapsible-motion.json +628 -0
  70. package/data/docs/routes/components-navigation-link.json +554 -0
  71. package/data/docs/routes/components-navigation-menu.json +546 -0
  72. package/data/docs/routes/components-navigation-pagination.json +502 -0
  73. package/data/docs/routes/components-navigation-steps.json +629 -0
  74. package/data/docs/routes/components-navigation-tabnav.json +546 -0
  75. package/data/docs/routes/components-navigation-tabs.json +635 -0
  76. package/data/docs/routes/components-navigation-toolbar.json +549 -0
  77. package/data/docs/routes/components-navigation.json +34 -0
  78. package/data/docs/routes/components-typography-code.json +39 -0
  79. package/data/docs/routes/components-typography-heading.json +402 -0
  80. package/data/docs/routes/components-typography-kbd.json +399 -0
  81. package/data/docs/routes/components-typography-list.json +593 -0
  82. package/data/docs/routes/components-typography-text.json +444 -0
  83. package/data/docs/routes/components-typography.json +34 -0
  84. package/data/docs/routes/components-utilities-nimbus-i18n-provider.json +295 -0
  85. package/data/docs/routes/components-utilities-nimbus-provider.json +663 -0
  86. package/data/docs/routes/components-utilities.json +34 -0
  87. package/data/docs/routes/components.json +33 -0
  88. package/data/docs/routes/home-contribute-adrs-adr0001-consumer-component-apis.json +314 -0
  89. package/data/docs/routes/home-contribute-adrs-adr0002-compound-component-extraction.json +160 -0
  90. package/data/docs/routes/home-contribute-adrs-adr0003-component-lifecycle-states.json +460 -0
  91. package/data/docs/routes/home-contribute-adrs.json +205 -0
  92. package/data/docs/routes/home-contribute-development-setup.json +213 -0
  93. package/data/docs/routes/home-contribute-stats.json +36 -0
  94. package/data/docs/routes/home-contribute.json +36 -0
  95. package/data/docs/routes/home-design-tokens-aspect-ratios.json +36 -0
  96. package/data/docs/routes/home-design-tokens-borders.json +35 -0
  97. package/data/docs/routes/home-design-tokens-colors.json +157 -0
  98. package/data/docs/routes/home-design-tokens-other-animations.json +119 -0
  99. package/data/docs/routes/home-design-tokens-other-blurs.json +36 -0
  100. package/data/docs/routes/home-design-tokens-other-breakpoints.json +61 -0
  101. package/data/docs/routes/home-design-tokens-other-cursors.json +36 -0
  102. package/data/docs/routes/home-design-tokens-other-z-indices.json +39 -0
  103. package/data/docs/routes/home-design-tokens-other.json +35 -0
  104. package/data/docs/routes/home-design-tokens-radii.json +59 -0
  105. package/data/docs/routes/home-design-tokens-shadows.json +57 -0
  106. package/data/docs/routes/home-design-tokens-sizes.json +137 -0
  107. package/data/docs/routes/home-design-tokens-spacing.json +36 -0
  108. package/data/docs/routes/home-design-tokens-typography.json +184 -0
  109. package/data/docs/routes/home-design-tokens.json +34 -0
  110. package/data/docs/routes/home-getting-started-core-concepts.json +301 -0
  111. package/data/docs/routes/home-getting-started-installation.json +621 -0
  112. package/data/docs/routes/home-getting-started-mcp-server-overview.json +139 -0
  113. package/data/docs/routes/home-getting-started-mcp-server-setup.json +316 -0
  114. package/data/docs/routes/home-getting-started-release-process.json +294 -0
  115. package/data/docs/routes/home-getting-started-testing-setup.json +296 -0
  116. package/data/docs/routes/home-playground-markdown.json +638 -0
  117. package/data/docs/routes/home-playground-toc.json +169 -0
  118. package/data/docs/routes/home-playground.json +34 -0
  119. package/data/docs/routes/home-style-props-background.json +236 -0
  120. package/data/docs/routes/home-style-props-border.json +310 -0
  121. package/data/docs/routes/home-style-props-display.json +120 -0
  122. package/data/docs/routes/home-style-props-effects.json +116 -0
  123. package/data/docs/routes/home-style-props-filters.json +396 -0
  124. package/data/docs/routes/home-style-props-flex-and-grid.json +496 -0
  125. package/data/docs/routes/home-style-props-interactivity.json +356 -0
  126. package/data/docs/routes/home-style-props-layout.json +422 -0
  127. package/data/docs/routes/home-style-props-list.json +116 -0
  128. package/data/docs/routes/home-style-props-sizing.json +244 -0
  129. package/data/docs/routes/home-style-props-spacing.json +228 -0
  130. package/data/docs/routes/home-style-props-svg.json +96 -0
  131. package/data/docs/routes/home-style-props-tables.json +116 -0
  132. package/data/docs/routes/home-style-props-transforms.json +216 -0
  133. package/data/docs/routes/home-style-props-transitions.json +216 -0
  134. package/data/docs/routes/home-style-props-typography.json +536 -0
  135. package/data/docs/routes/home-style-props.json +33 -0
  136. package/data/docs/routes/home.json +32 -0
  137. package/data/docs/routes/hooks-usecopytoclipboard.json +76 -0
  138. package/data/docs/routes/hooks-usehotkeys.json +117 -0
  139. package/data/docs/routes/hooks.json +33 -0
  140. package/data/docs/routes/icons.json +32 -0
  141. package/data/docs/routes/patterns-fields-date-range-picker-field.json +393 -0
  142. package/data/docs/routes/patterns-fields-money-input-field.json +415 -0
  143. package/data/docs/routes/patterns-fields-multiline-text-input-field.json +404 -0
  144. package/data/docs/routes/patterns-fields-number-input-field.json +470 -0
  145. package/data/docs/routes/patterns-fields-password-input-field.json +319 -0
  146. package/data/docs/routes/patterns-fields-search-input-field.json +382 -0
  147. package/data/docs/routes/patterns-fields-text-input-field.json +404 -0
  148. package/data/docs/routes/patterns-fields.json +78 -0
  149. package/data/docs/routes/patterns.json +34 -0
  150. package/data/docs/search-index.json +1 -0
  151. package/data/docs/types/Accordion.json +12 -0
  152. package/data/docs/types/AccordionContent.json +286 -0
  153. package/data/docs/types/AccordionHeader.json +891 -0
  154. package/data/docs/types/AccordionHeaderRightContent.json +27 -0
  155. package/data/docs/types/AccordionItem.json +242 -0
  156. package/data/docs/types/AccordionRoot.json +162 -0
  157. package/data/docs/types/Alert.json +12 -0
  158. package/data/docs/types/AlertActions.json +11 -0
  159. package/data/docs/types/AlertDescription.json +118 -0
  160. package/data/docs/types/AlertDismissButton.json +937 -0
  161. package/data/docs/types/AlertRoot.json +42 -0
  162. package/data/docs/types/AlertTitle.json +118 -0
  163. package/data/docs/types/Avatar.json +125 -0
  164. package/data/docs/types/Badge.json +64 -0
  165. package/data/docs/types/Body.json +67 -0
  166. package/data/docs/types/Box.json +85 -0
  167. package/data/docs/types/Button.json +1015 -0
  168. package/data/docs/types/Calendar.json +565 -0
  169. package/data/docs/types/Caption.json +67 -0
  170. package/data/docs/types/Card.json +12 -0
  171. package/data/docs/types/CardContent.json +27 -0
  172. package/data/docs/types/CardHeader.json +27 -0
  173. package/data/docs/types/CardRoot.json +106 -0
  174. package/data/docs/types/Cell.json +227 -0
  175. package/data/docs/types/Checkbox.json +897 -0
  176. package/data/docs/types/Code.json +112 -0
  177. package/data/docs/types/CollapsibleMotionContent.json +35 -0
  178. package/data/docs/types/CollapsibleMotionRoot.json +99 -0
  179. package/data/docs/types/CollapsibleMotionTrigger.json +71 -0
  180. package/data/docs/types/Column.json +101 -0
  181. package/data/docs/types/ColumnGroup.json +101 -0
  182. package/data/docs/types/ColumnHeader.json +193 -0
  183. package/data/docs/types/ComboBoxListBox.json +751 -0
  184. package/data/docs/types/ComboBoxOption.json +672 -0
  185. package/data/docs/types/ComboBoxPopover.json +786 -0
  186. package/data/docs/types/ComboBoxRoot.json +747 -0
  187. package/data/docs/types/ComboBoxSection.json +277 -0
  188. package/data/docs/types/ComboBoxTrigger.json +70 -0
  189. package/data/docs/types/Content.json +33 -0
  190. package/data/docs/types/DataTable.json +596 -0
  191. package/data/docs/types/DataTableBody.json +223 -0
  192. package/data/docs/types/DataTableFooter.json +27 -0
  193. package/data/docs/types/DataTableHeader.json +269 -0
  194. package/data/docs/types/DataTableManager.json +11 -0
  195. package/data/docs/types/DataTableRoot.json +590 -0
  196. package/data/docs/types/DataTableTable.json +271 -0
  197. package/data/docs/types/DateInput.json +792 -0
  198. package/data/docs/types/DatePicker.json +700 -0
  199. package/data/docs/types/DateRangePicker.json +936 -0
  200. package/data/docs/types/DateRangePickerField.json +1047 -0
  201. package/data/docs/types/DefaultPage.json +12 -0
  202. package/data/docs/types/DefaultPageActions.json +27 -0
  203. package/data/docs/types/DefaultPageBackLink.json +213 -0
  204. package/data/docs/types/DefaultPageContent.json +27 -0
  205. package/data/docs/types/DefaultPageFooter.json +27 -0
  206. package/data/docs/types/DefaultPageHeader.json +27 -0
  207. package/data/docs/types/DefaultPageRoot.json +106 -0
  208. package/data/docs/types/DefaultPageSubtitle.json +27 -0
  209. package/data/docs/types/DefaultPageTabNav.json +28 -0
  210. package/data/docs/types/DefaultPageTitle.json +27 -0
  211. package/data/docs/types/DialogBody.json +27 -0
  212. package/data/docs/types/DialogCloseTrigger.json +939 -0
  213. package/data/docs/types/DialogContent.json +27 -0
  214. package/data/docs/types/DialogFooter.json +27 -0
  215. package/data/docs/types/DialogHeader.json +27 -0
  216. package/data/docs/types/DialogRoot.json +138 -0
  217. package/data/docs/types/DialogTitle.json +27 -0
  218. package/data/docs/types/DialogTrigger.json +80 -0
  219. package/data/docs/types/DraggableList.json +12 -0
  220. package/data/docs/types/DraggableListField.json +894 -0
  221. package/data/docs/types/DraggableListItem.json +574 -0
  222. package/data/docs/types/DraggableListRoot.json +745 -0
  223. package/data/docs/types/Drawer.json +12 -0
  224. package/data/docs/types/DrawerBody.json +27 -0
  225. package/data/docs/types/DrawerCloseTrigger.json +939 -0
  226. package/data/docs/types/DrawerContent.json +27 -0
  227. package/data/docs/types/DrawerFooter.json +27 -0
  228. package/data/docs/types/DrawerHeader.json +27 -0
  229. package/data/docs/types/DrawerRoot.json +142 -0
  230. package/data/docs/types/DrawerTitle.json +27 -0
  231. package/data/docs/types/DrawerTrigger.json +80 -0
  232. package/data/docs/types/FieldErrors.getBuiltInMessage.json +11 -0
  233. package/data/docs/types/FieldErrors.getCustomMessage.json +9 -0
  234. package/data/docs/types/FieldErrors.json +109 -0
  235. package/data/docs/types/Flex.json +238 -0
  236. package/data/docs/types/Footer.json +67 -0
  237. package/data/docs/types/FormFieldDescription.json +11 -0
  238. package/data/docs/types/FormFieldError.json +11 -0
  239. package/data/docs/types/FormFieldInfoBox.json +27 -0
  240. package/data/docs/types/FormFieldInput.json +11 -0
  241. package/data/docs/types/FormFieldLabel.json +11 -0
  242. package/data/docs/types/FormFieldRoot.json +148 -0
  243. package/data/docs/types/Grid.json +253 -0
  244. package/data/docs/types/GridProps.json +11 -0
  245. package/data/docs/types/Group.json +143 -0
  246. package/data/docs/types/Header.json +67 -0
  247. package/data/docs/types/Heading.json +109 -0
  248. package/data/docs/types/Icon.json +112 -0
  249. package/data/docs/types/IconButton.json +1019 -0
  250. package/data/docs/types/IconToggleButton.json +787 -0
  251. package/data/docs/types/Image.json +373 -0
  252. package/data/docs/types/Indicator.json +67 -0
  253. package/data/docs/types/InlineSvg.json +98 -0
  254. package/data/docs/types/Item.json +67 -0
  255. package/data/docs/types/Kbd.json +118 -0
  256. package/data/docs/types/Link.json +380 -0
  257. package/data/docs/types/List.json +12 -0
  258. package/data/docs/types/ListIndicator.json +70 -0
  259. package/data/docs/types/ListItem.json +70 -0
  260. package/data/docs/types/ListRoot.json +124 -0
  261. package/data/docs/types/LoadingSpinner.json +87 -0
  262. package/data/docs/types/LocalizedField.json +460 -0
  263. package/data/docs/types/LocalizedStringFormatter.json +9 -0
  264. package/data/docs/types/MakeElementFocusable.json +196 -0
  265. package/data/docs/types/MenuContent.json +111 -0
  266. package/data/docs/types/MenuItem.json +671 -0
  267. package/data/docs/types/MenuRoot.json +670 -0
  268. package/data/docs/types/MenuSection.json +364 -0
  269. package/data/docs/types/MenuSubmenu.json +111 -0
  270. package/data/docs/types/MenuSubmenuTrigger.json +67 -0
  271. package/data/docs/types/MenuTrigger.json +906 -0
  272. package/data/docs/types/ModalPage.json +12 -0
  273. package/data/docs/types/ModalPageActions.json +27 -0
  274. package/data/docs/types/ModalPageContent.json +27 -0
  275. package/data/docs/types/ModalPageFooter.json +27 -0
  276. package/data/docs/types/ModalPageHeader.json +27 -0
  277. package/data/docs/types/ModalPageRoot.json +87 -0
  278. package/data/docs/types/ModalPageSubtitle.json +27 -0
  279. package/data/docs/types/ModalPageTabNav.json +28 -0
  280. package/data/docs/types/ModalPageTitle.json +27 -0
  281. package/data/docs/types/ModalPageTopBar.json +57 -0
  282. package/data/docs/types/MoneyInput.isEmpty.json +40 -0
  283. package/data/docs/types/MoneyInput.json +282 -0
  284. package/data/docs/types/MoneyInputField.json +379 -0
  285. package/data/docs/types/MoneyInputFieldProps.json +9 -0
  286. package/data/docs/types/MultilineTextInput.json +1194 -0
  287. package/data/docs/types/MultilineTextInputField.json +1269 -0
  288. package/data/docs/types/MultilineTextInputFieldProps.json +9 -0
  289. package/data/docs/types/NimbusI18nProvider.json +42 -0
  290. package/data/docs/types/NimbusI18nProviderProps.json +9 -0
  291. package/data/docs/types/NimbusProvider.json +270 -0
  292. package/data/docs/types/NumberInput.json +952 -0
  293. package/data/docs/types/NumberInputField.json +1004 -0
  294. package/data/docs/types/NumberInputFieldProps.json +9 -0
  295. package/data/docs/types/PageContent.json +11 -0
  296. package/data/docs/types/PageContentColumn.json +99 -0
  297. package/data/docs/types/PageContentRoot.json +114 -0
  298. package/data/docs/types/Pagination.json +159 -0
  299. package/data/docs/types/PasswordInput.json +1120 -0
  300. package/data/docs/types/PasswordInputField.json +1216 -0
  301. package/data/docs/types/PasswordInputFieldProps.json +9 -0
  302. package/data/docs/types/ProgressBar.json +280 -0
  303. package/data/docs/types/RadioInputOption.json +550 -0
  304. package/data/docs/types/RadioInputRoot.json +514 -0
  305. package/data/docs/types/RangeCalendar.json +618 -0
  306. package/data/docs/types/RichTextInput.json +134 -0
  307. package/data/docs/types/Root.json +122 -0
  308. package/data/docs/types/Row.json +67 -0
  309. package/data/docs/types/ScopedSearchInput.isEmpty.json +40 -0
  310. package/data/docs/types/ScopedSearchInput.json +253 -0
  311. package/data/docs/types/ScrollArea.json +82 -0
  312. package/data/docs/types/SearchInput.json +1165 -0
  313. package/data/docs/types/SearchInputField.json +1240 -0
  314. package/data/docs/types/Select.json +12 -0
  315. package/data/docs/types/SelectOption.json +572 -0
  316. package/data/docs/types/SelectOptionGroup.json +215 -0
  317. package/data/docs/types/SelectOptions.json +693 -0
  318. package/data/docs/types/SelectRoot.json +926 -0
  319. package/data/docs/types/Separator.json +65 -0
  320. package/data/docs/types/SimpleGrid.json +291 -0
  321. package/data/docs/types/Spacer.json +27 -0
  322. package/data/docs/types/SpacerProps.json +9 -0
  323. package/data/docs/types/SplitButton.json +203 -0
  324. package/data/docs/types/Stack.json +144 -0
  325. package/data/docs/types/Steps.json +12 -0
  326. package/data/docs/types/StepsChangeDetails.json +9 -0
  327. package/data/docs/types/StepsCompletedContent.json +28 -0
  328. package/data/docs/types/StepsCompletedContentProps.json +9 -0
  329. package/data/docs/types/StepsContent.json +43 -0
  330. package/data/docs/types/StepsContentProps.json +9 -0
  331. package/data/docs/types/StepsDescription.json +28 -0
  332. package/data/docs/types/StepsDescriptionProps.json +9 -0
  333. package/data/docs/types/StepsIndicator.json +28 -0
  334. package/data/docs/types/StepsIndicatorProps.json +9 -0
  335. package/data/docs/types/StepsItem.json +43 -0
  336. package/data/docs/types/StepsItemProps.json +9 -0
  337. package/data/docs/types/StepsList.json +28 -0
  338. package/data/docs/types/StepsListProps.json +9 -0
  339. package/data/docs/types/StepsNextTrigger.json +62 -0
  340. package/data/docs/types/StepsNextTriggerProps.json +9 -0
  341. package/data/docs/types/StepsNumber.json +28 -0
  342. package/data/docs/types/StepsNumberProps.json +9 -0
  343. package/data/docs/types/StepsPrevTrigger.json +62 -0
  344. package/data/docs/types/StepsPrevTriggerProps.json +9 -0
  345. package/data/docs/types/StepsRoot.json +183 -0
  346. package/data/docs/types/StepsRootProps.json +11 -0
  347. package/data/docs/types/StepsSeparator.json +28 -0
  348. package/data/docs/types/StepsSeparatorProps.json +9 -0
  349. package/data/docs/types/StepsStatus.json +57 -0
  350. package/data/docs/types/StepsStatusProps.json +9 -0
  351. package/data/docs/types/StepsTitle.json +28 -0
  352. package/data/docs/types/StepsTitleProps.json +9 -0
  353. package/data/docs/types/StepsTrigger.json +47 -0
  354. package/data/docs/types/StepsTriggerProps.json +9 -0
  355. package/data/docs/types/Switch.json +371 -0
  356. package/data/docs/types/TabListProps.json +9 -0
  357. package/data/docs/types/TabNav.json +12 -0
  358. package/data/docs/types/TabNavItem.json +300 -0
  359. package/data/docs/types/TabNavItemProps.json +9 -0
  360. package/data/docs/types/TabNavProps.json +9 -0
  361. package/data/docs/types/TabNavRoot.json +80 -0
  362. package/data/docs/types/TabPanelProps.json +9 -0
  363. package/data/docs/types/TabPanelsProps.json +9 -0
  364. package/data/docs/types/TabProps.json +9 -0
  365. package/data/docs/types/Table.json +9 -0
  366. package/data/docs/types/TableBody.json +67 -0
  367. package/data/docs/types/TableBodyProps.json +9 -0
  368. package/data/docs/types/TableCaption.json +67 -0
  369. package/data/docs/types/TableCaptionProps.json +9 -0
  370. package/data/docs/types/TableCell.json +227 -0
  371. package/data/docs/types/TableCellProps.json +9 -0
  372. package/data/docs/types/TableColumn.json +101 -0
  373. package/data/docs/types/TableColumnGroup.json +101 -0
  374. package/data/docs/types/TableColumnGroupProps.json +9 -0
  375. package/data/docs/types/TableColumnHeader.json +193 -0
  376. package/data/docs/types/TableColumnHeaderProps.json +9 -0
  377. package/data/docs/types/TableColumnProps.json +9 -0
  378. package/data/docs/types/TableFooter.json +67 -0
  379. package/data/docs/types/TableFooterProps.json +9 -0
  380. package/data/docs/types/TableHeader.json +67 -0
  381. package/data/docs/types/TableHeaderProps.json +9 -0
  382. package/data/docs/types/TableRoot.json +365 -0
  383. package/data/docs/types/TableRootProps.json +12 -0
  384. package/data/docs/types/TableRow.json +67 -0
  385. package/data/docs/types/TableRowProps.json +9 -0
  386. package/data/docs/types/TableScrollArea.json +82 -0
  387. package/data/docs/types/TableScrollAreaProps.json +9 -0
  388. package/data/docs/types/Tabs.json +12 -0
  389. package/data/docs/types/TabsList.json +110 -0
  390. package/data/docs/types/TabsPanel.json +112 -0
  391. package/data/docs/types/TabsPanels.json +108 -0
  392. package/data/docs/types/TabsRoot.json +211 -0
  393. package/data/docs/types/TabsTab.json +174 -0
  394. package/data/docs/types/TagGroup.json +12 -0
  395. package/data/docs/types/TagGroupRoot.json +306 -0
  396. package/data/docs/types/TagGroupTag.json +595 -0
  397. package/data/docs/types/TagGroupTagList.json +166 -0
  398. package/data/docs/types/Text.json +119 -0
  399. package/data/docs/types/TextInput.json +1156 -0
  400. package/data/docs/types/TextInputField.json +1263 -0
  401. package/data/docs/types/TimeInput.json +752 -0
  402. package/data/docs/types/ToastAction.json +9 -0
  403. package/data/docs/types/ToastManagerApi.json +9 -0
  404. package/data/docs/types/ToastOptions.json +9 -0
  405. package/data/docs/types/ToastOutlet.json +12 -0
  406. package/data/docs/types/ToastPlacement.json +9 -0
  407. package/data/docs/types/ToastPromiseOptions.json +9 -0
  408. package/data/docs/types/ToastType.json +9 -0
  409. package/data/docs/types/ToastVariant.json +9 -0
  410. package/data/docs/types/ToggleButton.json +789 -0
  411. package/data/docs/types/ToggleButtonGroup.json +9 -0
  412. package/data/docs/types/ToggleButtonGroupButton.json +331 -0
  413. package/data/docs/types/ToggleButtonGroupRoot.json +269 -0
  414. package/data/docs/types/Toolbar.json +176 -0
  415. package/data/docs/types/Tooltip.json +12 -0
  416. package/data/docs/types/TooltipContent.json +372 -0
  417. package/data/docs/types/TooltipRoot.json +179 -0
  418. package/data/docs/types/Trigger.json +69 -0
  419. package/data/docs/types/VisuallyHidden.json +93 -0
  420. package/data/docs/types/__object.json +12 -0
  421. package/data/docs/types/filters.json +11 -0
  422. package/data/docs/types/manifest.json +278 -0
  423. package/data/docs/types/toast.json +234 -0
  424. package/data/docs/types/useColorMode.json +13 -0
  425. package/data/docs/types/useColorModeValue.json +13 -0
  426. package/data/docs/types/useColorScheme.json +12 -0
  427. package/data/docs/types/useLocalizedStringFormatter.json +14 -0
  428. package/data/icons.json +21940 -0
  429. package/data/tokens.json +40061 -0
  430. package/dist/index.js +2516 -17
  431. package/package.json +25 -6
  432. package/dist/data-loader.d.ts +0 -102
  433. package/dist/data-loader.js +0 -104
  434. package/dist/index.d.ts +0 -13
  435. package/dist/server.d.ts +0 -9
  436. package/dist/server.js +0 -22
  437. package/dist/server.spec.d.ts +0 -1
  438. package/dist/server.spec.js +0 -69
  439. package/dist/tools/list-components.d.ts +0 -9
  440. package/dist/tools/list-components.js +0 -42
  441. package/dist/types.d.ts +0 -28
  442. package/dist/types.js +0 -4
  443. package/src/data-loader.ts +0 -226
  444. package/src/index.ts +0 -29
  445. package/src/server.spec.ts +0 -86
  446. package/src/server.ts +0 -28
  447. package/src/tools/list-components.ts +0 -49
  448. package/src/types.ts +0 -31
  449. package/tsconfig.json +0 -14
  450. package/vitest.config.ts +0 -9
@@ -0,0 +1,510 @@
1
+ {
2
+ "meta": {
3
+ "id": "Components-tooltip",
4
+ "title": "Tooltip",
5
+ "exportName": "Tooltip",
6
+ "description": "A contextual popup that displays a description for an element.",
7
+ "lifecycleState": "Stable",
8
+ "order": 999,
9
+ "repoPath": "packages/nimbus/src/components/tooltip/tooltip.mdx",
10
+ "menu": [
11
+ "Components",
12
+ "Feedback",
13
+ "Tooltip"
14
+ ],
15
+ "route": "components/feedback/tooltip",
16
+ "tags": [
17
+ "component",
18
+ "tooltip",
19
+ "popover",
20
+ "hint",
21
+ "hover"
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": "Placements",
57
+ "href": "#placements",
58
+ "depth": 3,
59
+ "numbering": [
60
+ 1,
61
+ 2,
62
+ 1
63
+ ],
64
+ "parent": "root"
65
+ }
66
+ ],
67
+ "figmaLink": "https://www.figma.com/design/gHbAJGfcrCv7f2bgzUQgHq/NIMBUS-Guidelines?node-id=1695-45519&m",
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\nTooltips offer concise, non-obtrusive guidance and supplemental information,\nenhancing user understanding and interaction with UI elements.\n\n### Resources\n\nDeep dive into implementation details and access the Nimbus design library.\n\n[React-Aria Tooltip Docs](https://react-spectrum.adobe.com/react-aria/Tooltip.html#tooltip)\n[ARIA Tooltip Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/)\n[Figma library](https://www.figma.com/design/gHbAJGfcrCv7f2bgzUQgHq/NIMBUS-Guidelines?node-id=1695-45519&m)\n\n## Variables\n\nGet familiar with the features.\n\n### Placements\n\nTooltip placements can populate in different areas, please chose a direction\nthat will be most visible for the users. and the elements that may be\ninteracting around them. Options include bottom left, bottom center, bottom\nright, top left, top center, top right, left top, left center, left bottom,\nright top, right center, right bottom.\n",
93
+ "views": {
94
+ "overview": {
95
+ "mdx": "\n## Overview\n\nTooltips offer concise, non-obtrusive guidance and supplemental information,\nenhancing user understanding and interaction with UI elements.\n\n### Resources\n\nDeep dive into implementation details and access the Nimbus design library.\n\n[React-Aria Tooltip Docs](https://react-spectrum.adobe.com/react-aria/Tooltip.html#tooltip)\n[ARIA Tooltip Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/)\n[Figma library](https://www.figma.com/design/gHbAJGfcrCv7f2bgzUQgHq/NIMBUS-Guidelines?node-id=1695-45519&m)\n\n## Variables\n\nGet familiar with the features.\n\n### Placements\n\nTooltip placements can populate in different areas, please chose a direction\nthat will be most visible for the users. and the elements that may be\ninteracting around them. Options include bottom left, bottom center, bottom\nright, top left, top center, top right, left top, left center, left bottom,\nright top, right center, right bottom.\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": "Placements",
130
+ "href": "#placements",
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\nTooltip triggers must be focusable and hoverable in order to ensure that all\nusers can activate them. When displayed, the Tooltip automatically associates\nthe tooltip with the trigger element so that it is described by the tooltip\ncontent.\n\nAuthors should ensure that elements with the\n[role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles)\ntooltip are referenced through the use of\n[aria-describedby](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-describedby)\nbefore or at the time the tooltip is displayed.\n\n```jsx live\nconst App = () => (\n <Stack direction=\"horizontal\" alignItems=\"center\" marginLeft=\"800\" padding=\"800\" gap=\"400\">\n <Tooltip.Root>\n <Button>Hover me</Button>\n <Tooltip.Content>This is a tooltip</Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n)\n```\n\n### Accessibility standards\n\n- **Non-text content:** Provide a text alternative (alt text or equivalent) for\n non-text content within tooltips.\n- **Info and relationships:** Programmatically establish the relationship\n between a tooltip and its trigger element using ARIA attributes like\n `aria-describedby`. Assign an id to the trigger element and point\n `aria-describedby` to that id.\n- **Use of color:** Avoid relying solely on color to convey information within\n tooltips.\n- **Color contrast:** Ensure tooltip text meets minimum contrast ratio\n requirements. Use a contrast checking tool.\n- **Keyboard accessibility:** Make tooltips triggered by keyboard focus operable\n via keyboard. Allow users to navigate to the trigger using the Tab key. Make\n the tooltip appear on focus. Prevent tooltips from trapping keyboard focus.\n Make interactive tooltip content keyboard accessible.\n- **Focus visible:** Provide a visible focus indicator for the tooltip trigger\n element when it receives keyboard focus.\n- **Language of page:** Programmatically determine the tooltip content's\n language. Use the `lang` attribute on the tooltip element.\n- **On focus:** Prevent tooltips that appear on focus from unexpectedly changing\n the page context.\n- **Labels or instructions:** Write tooltip text that is clear, concise, and\n easy to understand.\n- **Name, role, value:** Ensure assistive technologies correctly interpret the\n role of the tooltip trigger element. Use semantic HTML. Use `aria-describedby`\n to associate the tooltip with the trigger.\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 { Tooltip, MakeElementFocusable } from '@commercetools/nimbus';\n```\n\n### Basic usage\n\nThe simplest implementation wraps a trigger element and tooltip content:\n\n```jsx live-dev\nconst App = () => (\n <Tooltip.Root>\n <Button>Hover me</Button>\n <Tooltip.Content>\n Helpful information appears here\n </Tooltip.Content>\n </Tooltip.Root>\n)\n```\n\n## Usage examples\n\n### Placement options\n\nThe `placement` prop controls where the tooltip appears relative to the trigger element. The default placement is `\"bottom\"`:\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"row\" gap=\"400\" wrap=\"wrap\">\n <Tooltip.Root>\n <Button>Top</Button>\n <Tooltip.Content placement=\"top\">\n Top placement\n </Tooltip.Content>\n </Tooltip.Root>\n\n <Tooltip.Root>\n <Button>Bottom</Button>\n <Tooltip.Content placement=\"bottom\">\n Bottom placement\n </Tooltip.Content>\n </Tooltip.Root>\n\n <Tooltip.Root>\n <Button>Left</Button>\n <Tooltip.Content placement=\"left\">\n Left placement\n </Tooltip.Content>\n </Tooltip.Root>\n\n <Tooltip.Root>\n <Button>Right</Button>\n <Tooltip.Content placement=\"right\">\n Right placement\n </Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n)\n```\n\n**Available placements:**\n\nThe component supports 26 placement options:\n- **Basic**: `top`, `bottom`, `left`, `right`, `start`, `end`\n- **With alignment**: `top left`, `top right`, `top start`, `top end`, `bottom left`, `bottom right`, `bottom start`, `bottom end`, `left top`, `left bottom`, `right top`, `right bottom`, `start top`, `start bottom`, `end top`, `end bottom`\n\n### Delay configuration\n\nControl when tooltips appear and disappear using `delay` and `closeDelay` props on `Tooltip.Root`:\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"row\" gap=\"400\" wrap=\"wrap\">\n <Tooltip.Root delay={0} closeDelay={0}>\n <Button>Instant</Button>\n <Tooltip.Content>\n Shows immediately\n </Tooltip.Content>\n </Tooltip.Root>\n\n <Tooltip.Root delay={300} closeDelay={200}>\n <Button>Default timing</Button>\n <Tooltip.Content>\n 300ms delay to show, 200ms to hide\n </Tooltip.Content>\n </Tooltip.Root>\n\n <Tooltip.Root delay={1000}>\n <Button>Slow</Button>\n <Tooltip.Content>\n 1000ms delay to show\n </Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n)\n```\n\n**Timing considerations:**\n- `delay`: Time in milliseconds before the tooltip appears (default: `300`)\n- `closeDelay`: Time in milliseconds before the tooltip disappears (default: `200`)\n- Shorter delays improve responsiveness but may feel too aggressive\n- Longer delays reduce accidental triggers but may feel sluggish\n\n### Complex content\n\nTooltip content can include multiple elements using layout components:\n\n```jsx live-dev\nconst App = () => (\n <Tooltip.Root>\n <Button>Feature info</Button>\n <Tooltip.Content>\n <Stack direction=\"column\" gap=\"100\">\n <Text fontWeight=\"600\" fontSize=\"sm\">Premium Feature</Text>\n <Text fontSize=\"xs\">\n Available on Pro and Enterprise plans\n </Text>\n </Stack>\n </Tooltip.Content>\n </Tooltip.Root>\n)\n```\n\n### With icon buttons\n\nA common pattern is providing context for icon-only buttons:\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"row\" gap=\"300\">\n <Tooltip.Root>\n <IconButton aria-label=\"Edit\">\n <Icons.Edit />\n </IconButton>\n <Tooltip.Content placement=\"top\">\n Edit item\n </Tooltip.Content>\n </Tooltip.Root>\n\n <Tooltip.Root>\n <IconButton aria-label=\"Delete\">\n <Icons.Delete />\n </IconButton>\n <Tooltip.Content placement=\"top\">\n Delete item\n </Tooltip.Content>\n </Tooltip.Root>\n\n <Tooltip.Root>\n <IconButton aria-label=\"Share\">\n <Icons.Share />\n </IconButton>\n <Tooltip.Content placement=\"top\">\n Share with team\n </Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n)\n```\n\n### With focusable elements\n\nTooltips work with any focusable element. For non-interactive elements like Text, use `MakeElementFocusable`:\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"column\" gap=\"400\">\n <Tooltip.Root>\n <MakeElementFocusable>\n <Text\n as=\"span\"\n textDecoration=\"underline\"\n cursor=\"help\"\n >\n Hover or focus me\n </Text>\n </MakeElementFocusable>\n <Tooltip.Content>\n This text element is focusable and shows a tooltip\n </Tooltip.Content>\n </Tooltip.Root>\n\n <Tooltip.Root>\n <Button variant=\"ghost\">\n <Icons.Info />\n Learn more\n </Button>\n <Tooltip.Content placement=\"right\">\n Opens detailed documentation\n </Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n)\n```\n\n## Component requirements\n\n## Accessibility\n\nThe Tooltip component is built with React Aria Components and provides accessible tooltip behavior by default. The component:\n\n- Automatically associates tooltip content with the trigger using `aria-describedby`\n- Assigns the `tooltip` ARIA role to the content\n- Shows on both hover and keyboard focus\n- Hides when focus leaves or `Escape` is pressed\n\n**Important:** Ensure the trigger element has an accessible label. For icon-only buttons, always provide an `aria-label`:\n\n```tsx\n<Tooltip.Root>\n <IconButton aria-label=\"Delete item\">\n <Icons.Delete />\n </IconButton>\n <Tooltip.Content>Delete this item</Tooltip.Content>\n</Tooltip.Root>\n```\n\nIf your use case requires tracking and analytics for this component, it is good practice to add a **persistent**, **unique** id to the trigger element:\n\n```tsx\nconst PERSISTENT_ID = \"delete-button-tooltip\";\n\nexport const Example = () => (\n <Tooltip.Root>\n <IconButton id={PERSISTENT_ID} aria-label=\"Delete\">\n <Icons.Delete />\n </IconButton>\n <Tooltip.Content>Delete item</Tooltip.Content>\n </Tooltip.Root>\n);\n```\n\n#### Keyboard navigation\n\nThe component supports full keyboard interaction:\n\n- `Tab` / `Shift+Tab`: Move focus to/from the trigger element\n- Tooltip appears automatically when trigger receives focus\n- `Escape`: Dismisses the tooltip (if shown)\n- Tooltip disappears automatically when focus leaves the trigger\n\n### Trigger element requirements\n\nThe first child of `Tooltip.Root` must be a focusable element:\n\n- Use buttons, links, or other interactive elements (recommended)\n- For non-interactive elements like Text or div, wrap with `MakeElementFocusable`\n- Avoid wrapping non-focusable elements without proper handling\n\n```tsx\n// ✅ Good - button is natively focusable\n<Tooltip.Root>\n <Button>Trigger</Button>\n <Tooltip.Content>Content</Tooltip.Content>\n</Tooltip.Root>\n\n// ✅ Good - non-interactive element with MakeElementFocusable\n<Tooltip.Root>\n <MakeElementFocusable>\n <Text as=\"span\">Trigger</Text>\n </MakeElementFocusable>\n <Tooltip.Content>Content</Tooltip.Content>\n</Tooltip.Root>\n\n// ❌ Bad - Text with tabIndex won't work properly\n<Tooltip.Root>\n <Text as=\"span\" tabIndex={0}>Trigger</Text>\n <Tooltip.Content>Content</Tooltip.Content>\n</Tooltip.Root>\n```\n\n## API reference\n\n<PropsTable id=\"Tooltip\" />\n\n## Common patterns\n\n### Info tooltips for form fields\n\nProvide additional context for form fields without cluttering the interface:\n\n```jsx live-dev\nconst App = () => {\n const [value, setValue] = useState('');\n\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Stack direction=\"row\" gap=\"200\" alignItems=\"center\">\n <Text as=\"label\" htmlFor=\"username-input\" fontWeight=\"500\">\n Username\n </Text>\n <Tooltip.Root>\n <IconButton\n aria-label=\"Username requirements\"\n size=\"sm\"\n variant=\"ghost\"\n >\n <Icons.Info />\n </IconButton>\n <Tooltip.Content placement=\"right\">\n <Stack direction=\"column\" gap=\"100\">\n <Text fontSize=\"xs\" fontWeight=\"600\">Requirements:</Text>\n <Text fontSize=\"xs\">• 3-20 characters</Text>\n <Text fontSize=\"xs\">• Letters and numbers only</Text>\n <Text fontSize=\"xs\">• No spaces</Text>\n </Stack>\n </Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n <TextInput\n id=\"username-input\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n placeholder=\"Enter username\"\n />\n </Stack>\n );\n}\n```\n\n### Action descriptions for icon buttons\n\nClarify what icon buttons do before users click them:\n\n```jsx live-dev\nconst App = () => {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = () => {\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n };\n\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Text fontSize=\"sm\">\n Code snippet:\n </Text>\n <Stack\n direction=\"row\"\n gap=\"300\"\n padding=\"300\"\n backgroundColor=\"neutral.3\"\n borderRadius=\"200\"\n alignItems=\"center\"\n >\n <Text fontFamily=\"mono\" fontSize=\"sm\" flex=\"1\">\n npm install @commercetools/nimbus\n </Text>\n\n <Tooltip.Root>\n <IconButton\n aria-label=\"Copy to clipboard\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={handleCopy}\n >\n {copied ? <Icons.Check /> : <Icons.ContentCopy />}\n </IconButton>\n <Tooltip.Content placement=\"top\">\n {copied ? 'Copied!' : 'Copy to clipboard'}\n </Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n </Stack>\n );\n}\n```\n\n### Contextual help in data tables\n\nProvide explanations for table headers or data values:\n\n```jsx live-dev\nconst App = () => (\n <Stack direction=\"column\" gap=\"300\">\n <Stack direction=\"row\" gap=\"400\" paddingX=\"300\" paddingY=\"200\">\n <Stack direction=\"row\" gap=\"100\" alignItems=\"center\" flex=\"1\">\n <Text fontWeight=\"600\" fontSize=\"sm\">Product Name</Text>\n </Stack>\n\n <Stack direction=\"row\" gap=\"100\" alignItems=\"center\" width=\"150px\">\n <Text fontWeight=\"600\" fontSize=\"sm\">Conversion Rate</Text>\n <Tooltip.Root>\n <IconButton\n aria-label=\"About conversion rate\"\n size=\"sm\"\n variant=\"ghost\"\n >\n <Icons.HelpOutline />\n </IconButton>\n <Tooltip.Content placement=\"top\">\n <Text fontSize=\"xs\">\n Percentage of visitors who make a purchase\n </Text>\n </Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n\n <Stack direction=\"row\" gap=\"100\" alignItems=\"center\" width=\"100px\">\n <Text fontWeight=\"600\" fontSize=\"sm\">Status</Text>\n </Stack>\n </Stack>\n\n <Stack direction=\"row\" gap=\"400\" paddingX=\"300\" paddingY=\"200\" backgroundColor=\"neutral.2\">\n <Text fontSize=\"sm\" flex=\"1\">Premium Widget</Text>\n <Text fontSize=\"sm\" width=\"150px\">24.5%</Text>\n <Text fontSize=\"sm\" width=\"100px\">Active</Text>\n </Stack>\n </Stack>\n)\n```\n\n## Testing your implementation\n\nThese examples demonstrate how to test your implementation when using Tooltip 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 tooltip renders and displays content on interaction\n\n```tsx\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen, waitFor } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Tooltip, Button, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Tooltip - Basic rendering\", () => {\n it(\"renders trigger element\", () => {\n render(\n <NimbusProvider>\n <Tooltip.Root>\n <Button>Hover me</Button>\n <Tooltip.Content>Tooltip text</Tooltip.Content>\n </Tooltip.Root>\n </NimbusProvider>\n );\n\n expect(\n screen.getByRole(\"button\", { name: /hover me/i })\n ).toBeInTheDocument();\n });\n\n it(\"shows tooltip content on focus\", async () => {\n const user = userEvent.setup();\n render(\n <NimbusProvider>\n <Tooltip.Root>\n <Button>Hover me</Button>\n <Tooltip.Content>Tooltip text</Tooltip.Content>\n </Tooltip.Root>\n </NimbusProvider>\n );\n\n // Focus the button using tab\n await user.tab();\n\n await waitFor(() => {\n expect(screen.getByRole(\"tooltip\")).toBeInTheDocument();\n expect(screen.getByText(\"Tooltip text\")).toBeInTheDocument();\n });\n });\n});\n```\n\n### Interaction Tests\n\nTest focus interactions (hover tests require browser environment)\n\n```tsx\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen, waitFor } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Tooltip, Button, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Tooltip - Interactions\", () => {\n it(\"shows tooltip on focus\", async () => {\n const user = userEvent.setup();\n render(\n <NimbusProvider>\n <Tooltip.Root>\n <Button>Action Button</Button>\n <Tooltip.Content>Action tooltip</Tooltip.Content>\n </Tooltip.Root>\n </NimbusProvider>\n );\n\n // Use userEvent.tab() instead of element.focus() to avoid act() warnings\n await user.tab();\n\n await waitFor(() => {\n expect(screen.getByRole(\"tooltip\")).toBeInTheDocument();\n expect(screen.getByText(\"Action tooltip\")).toBeInTheDocument();\n });\n });\n\n it(\"hides tooltip when focus leaves\", async () => {\n const user = userEvent.setup();\n render(\n <NimbusProvider>\n <Tooltip.Root>\n <Button>First</Button>\n <Tooltip.Content>First tooltip</Tooltip.Content>\n </Tooltip.Root>\n <Button>Second</Button>\n </NimbusProvider>\n );\n\n // Focus first button\n await user.tab();\n await waitFor(() => {\n expect(screen.getByRole(\"tooltip\")).toBeInTheDocument();\n });\n\n // Focus second button\n await user.tab();\n await waitFor(() => {\n expect(screen.queryByRole(\"tooltip\")).not.toBeInTheDocument();\n });\n });\n});\n```\n\n### Testing Placement\n\nVerify tooltip positioning\n\n```tsx\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen, waitFor } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Tooltip, Button, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Tooltip - Placement\", () => {\n it(\"renders with top placement\", async () => {\n const user = userEvent.setup();\n render(\n <NimbusProvider>\n <Tooltip.Root>\n <Button>Trigger</Button>\n <Tooltip.Content placement=\"top\">Top tooltip</Tooltip.Content>\n </Tooltip.Root>\n </NimbusProvider>\n );\n\n // Tab to focus the button\n await user.tab();\n\n await waitFor(() => {\n const tooltip = screen.getByRole(\"tooltip\");\n expect(tooltip).toBeInTheDocument();\n expect(tooltip).toHaveTextContent(\"Top tooltip\");\n });\n });\n});\n```\n\n### Testing with Portal Content\n\nTooltips render in a portal, so query from document when needed\n\n```tsx\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen, waitFor } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Tooltip, Button, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Tooltip - Portal rendering\", () => {\n it(\"renders tooltip in portal\", async () => {\n const user = userEvent.setup();\n render(\n <NimbusProvider>\n <Tooltip.Root>\n <Button>Show tooltip</Button>\n <Tooltip.Content>Portal content</Tooltip.Content>\n </Tooltip.Root>\n </NimbusProvider>\n );\n\n // Use userEvent.tab() instead of element.focus() to avoid act() warnings\n await user.tab();\n\n // Wait for portal content to appear\n await waitFor(() => {\n const tooltip = screen.getByRole(\"tooltip\");\n expect(tooltip).toBeInTheDocument();\n });\n });\n});\n```\n\n### Testing Custom Delay Timing\n\nVerify delay configuration works as expected\n\n```tsx\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen, waitFor } from \"@testing-library/react\";\nimport userEvent from \"@testing-library/user-event\";\nimport { Tooltip, Button, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Tooltip - Timing\", () => {\n it(\"respects custom delay\", async () => {\n const user = userEvent.setup();\n render(\n <NimbusProvider>\n <Tooltip.Root delay={0} closeDelay={0}>\n <Button>Instant</Button>\n <Tooltip.Content>Shows immediately</Tooltip.Content>\n </Tooltip.Root>\n </NimbusProvider>\n );\n\n // Use userEvent.tab() instead of element.focus() to avoid act() warnings\n await user.tab();\n\n // With delay={0}, tooltip should appear immediately\n await waitFor(\n () => {\n expect(screen.getByRole(\"tooltip\")).toBeInTheDocument();\n },\n { timeout: 100 }\n );\n });\n});\n```\n\n\n## Resources\n\n- [Storybook](https://nimbus-storybook.vercel.app/?path=/docs/components-tooltip-tooltip--docs)\n- [React Aria Tooltip](https://react-spectrum.adobe.com/react-aria/Tooltip.html)\n- [ARIA Tooltip Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/)\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": "Placement options",
214
+ "href": "#placement-options",
215
+ "depth": 3,
216
+ "numbering": [
217
+ 1,
218
+ 2,
219
+ 1
220
+ ],
221
+ "parent": "root"
222
+ },
223
+ {
224
+ "value": "Delay configuration",
225
+ "href": "#delay-configuration",
226
+ "depth": 3,
227
+ "numbering": [
228
+ 1,
229
+ 2,
230
+ 2
231
+ ],
232
+ "parent": "root"
233
+ },
234
+ {
235
+ "value": "Complex content",
236
+ "href": "#complex-content",
237
+ "depth": 3,
238
+ "numbering": [
239
+ 1,
240
+ 2,
241
+ 3
242
+ ],
243
+ "parent": "root"
244
+ },
245
+ {
246
+ "value": "With icon buttons",
247
+ "href": "#with-icon-buttons",
248
+ "depth": 3,
249
+ "numbering": [
250
+ 1,
251
+ 2,
252
+ 4
253
+ ],
254
+ "parent": "root"
255
+ },
256
+ {
257
+ "value": "With focusable elements",
258
+ "href": "#with-focusable-elements",
259
+ "depth": 3,
260
+ "numbering": [
261
+ 1,
262
+ 2,
263
+ 5
264
+ ],
265
+ "parent": "root"
266
+ },
267
+ {
268
+ "value": "Component requirements",
269
+ "href": "#component-requirements",
270
+ "depth": 2,
271
+ "numbering": [
272
+ 1,
273
+ 3
274
+ ],
275
+ "parent": "root"
276
+ },
277
+ {
278
+ "value": "Accessibility",
279
+ "href": "#accessibility",
280
+ "depth": 2,
281
+ "numbering": [
282
+ 1,
283
+ 4
284
+ ],
285
+ "parent": "root"
286
+ },
287
+ {
288
+ "value": "Keyboard navigation",
289
+ "href": "#keyboard-navigation",
290
+ "depth": 4,
291
+ "numbering": [
292
+ 1,
293
+ 4,
294
+ 1,
295
+ 1
296
+ ],
297
+ "parent": "root"
298
+ },
299
+ {
300
+ "value": "Trigger element requirements",
301
+ "href": "#trigger-element-requirements",
302
+ "depth": 3,
303
+ "numbering": [
304
+ 1,
305
+ 4,
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": "Info tooltips for form fields",
332
+ "href": "#info-tooltips-for-form-fields",
333
+ "depth": 3,
334
+ "numbering": [
335
+ 1,
336
+ 6,
337
+ 1
338
+ ],
339
+ "parent": "root"
340
+ },
341
+ {
342
+ "value": "Action descriptions for icon buttons",
343
+ "href": "#action-descriptions-for-icon-buttons",
344
+ "depth": 3,
345
+ "numbering": [
346
+ 1,
347
+ 6,
348
+ 2
349
+ ],
350
+ "parent": "root"
351
+ },
352
+ {
353
+ "value": "Contextual help in data tables",
354
+ "href": "#contextual-help-in-data-tables",
355
+ "depth": 3,
356
+ "numbering": [
357
+ 1,
358
+ 6,
359
+ 3
360
+ ],
361
+ "parent": "root"
362
+ },
363
+ {
364
+ "value": "Testing your implementation",
365
+ "href": "#testing-your-implementation",
366
+ "depth": 2,
367
+ "numbering": [
368
+ 1,
369
+ 7
370
+ ],
371
+ "parent": "root"
372
+ },
373
+ {
374
+ "value": "Basic Rendering Tests",
375
+ "href": "#basic-rendering-tests",
376
+ "depth": 3,
377
+ "numbering": [
378
+ 1,
379
+ 7,
380
+ 1
381
+ ],
382
+ "parent": "root"
383
+ },
384
+ {
385
+ "value": "Interaction Tests",
386
+ "href": "#interaction-tests",
387
+ "depth": 3,
388
+ "numbering": [
389
+ 1,
390
+ 7,
391
+ 2
392
+ ],
393
+ "parent": "root"
394
+ },
395
+ {
396
+ "value": "Testing Placement",
397
+ "href": "#testing-placement",
398
+ "depth": 3,
399
+ "numbering": [
400
+ 1,
401
+ 7,
402
+ 3
403
+ ],
404
+ "parent": "root"
405
+ },
406
+ {
407
+ "value": "Testing with Portal Content",
408
+ "href": "#testing-with-portal-content",
409
+ "depth": 3,
410
+ "numbering": [
411
+ 1,
412
+ 7,
413
+ 4
414
+ ],
415
+ "parent": "root"
416
+ },
417
+ {
418
+ "value": "Testing Custom Delay Timing",
419
+ "href": "#testing-custom-delay-timing",
420
+ "depth": 3,
421
+ "numbering": [
422
+ 1,
423
+ 7,
424
+ 5
425
+ ],
426
+ "parent": "root"
427
+ },
428
+ {
429
+ "value": "Resources",
430
+ "href": "#resources",
431
+ "depth": 2,
432
+ "numbering": [
433
+ 1,
434
+ 8
435
+ ],
436
+ "parent": "root"
437
+ }
438
+ ]
439
+ },
440
+ "guidelines": {
441
+ "mdx": "\n## Guidelines\n\nUse tooltips to provide brief explanations, definitions, or instructions for\ninteractive elements, enhancing the user experience.\n\n### Best practices\n\n- **Be concise:** Keep tooltip text short and to the point. Avoid lengthy\n explanations; if more detail is needed, consider a different approach like a\n modal or help documentation.\n- **Provide valuable context:** Tooltips should offer information that isn't\n immediately obvious from the UI element itself. They should add value, not\n just restate what's already visible.\n- **Use clear and simple language:** Avoid jargon, technical terms, or overly\n complex phrasing. Tooltips should be easily understood by all users.\n- **Position tooltips appropriately:** Place tooltips so they don't obscure the\n element they're related to or other important UI elements. Consider the user's\n mouse path and avoid accidental triggers.\n- **Maintain accessibility:** Includes keyboard navigation and screen reader\n compatibility. Use ARIA attributes like `aria-describedby`to link the tooltip\n to its target element.\n- **Avoid overuse:** Don't use tooltips for every single UI element. Overuse can\n make the interface feel cluttered.\n- **Don't rely on tooltips for essential information:** Crucial information\n (like error states) should never be exclusively conveyed through tooltips, as\n they are not always discoverable or accessible to all users. Use tooltips for\n supplementary or secondary details.\n\n## Usage\n\nTooltips are a valuable tool for providing concise, contextual information, but\nthey should be used strategically and not as a replacement for clear and\naccessible design. Think carefully about the type of information you're\npresenting and choose the most appropriate UI element for the job.\n\n### Basic usage\n\nThe recommended approach using the compound component pattern:\n\n```jsx live\nconst App = () => (\n <Stack direction=\"horizontal\" alignItems=\"center\" marginLeft=\"800\" padding=\"800\" gap=\"400\">\n <Tooltip.Root>\n <Button>Hover me</Button>\n <Tooltip.Content>This is a tooltip</Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n)\n```\n\n### Using tooltips for icons buttons\n\nIcons often rely on shared universal understanding. A tooltip provides a text\nlabel that removes any ambiguity and ensures users understand the button's\nfunction. This is especially important for less common or custom icons.\n\n> [!TIP]\\\n> **Do**\n>\n> - Describe the icon's action quickly and concisely.\n\n```jsx live\nconst App = () => (\n <Stack direction=\"horizontal\" alignItems=\"center\" marginLeft=\"800\" padding=\"800\" gap=\"400\">\n <Tooltip.Root>\n <IconButton colorPalette=\"primary\" variant=\"ghost\" size=\"md\">\n <Icons.Edit/>\n </IconButton>\n <Tooltip.Content>Edit name</Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n)\n```\n\n> [!CAUTION]\\\n> **Don't**\n>\n> - Do not describe the icon visually.\n> - Do not over explain the action to the user.\n> - Don't overlap tooltips with the object it is clarifying.\n\n```jsx live\nconst App = () => (\n <Stack direction=\"horizontal\" alignItems=\"center\" gap=\"100\" marginLeft=\"800\" padding=\"800\">\n <Tooltip.Root>\n <IconButton\n colorPalette=\"primary\"\n variant=\"ghost\"\n size=\"md\"\n >\n <Icons.Edit/>\n </IconButton>\n <Tooltip.Content>\n Pencil icon that will let you edit your profile name if you like.\n </Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n)\n```\n\n### Placement options\n\nControl where the tooltip appears relative to its trigger:\n\n```jsx live\nconst App = () => (\n <Stack direction=\"horizontal\" alignItems=\"center\" marginLeft=\"800\" padding=\"800\" gap=\"400\">\n <Tooltip.Root>\n <Button>Top placement</Button>\n <Tooltip.Content placement=\"top\">Tooltip on top</Tooltip.Content>\n </Tooltip.Root>\n <Tooltip.Root>\n <Button>Bottom placement</Button>\n <Tooltip.Content placement=\"bottom\">Tooltip on bottom</Tooltip.Content>\n </Tooltip.Root>\n <Tooltip.Root>\n <Button>Left placement</Button>\n <Tooltip.Content placement=\"left\">Tooltip on left</Tooltip.Content>\n </Tooltip.Root>\n <Tooltip.Root>\n <Button>Right placement</Button>\n <Tooltip.Content placement=\"right\">Tooltip on right</Tooltip.Content>\n </Tooltip.Root>\n </Stack>\n)\n```\n",
442
+ "toc": [
443
+ {
444
+ "value": "Guidelines",
445
+ "href": "#guidelines",
446
+ "depth": 2,
447
+ "numbering": [
448
+ 1,
449
+ 1
450
+ ],
451
+ "parent": "root"
452
+ },
453
+ {
454
+ "value": "Best practices",
455
+ "href": "#best-practices",
456
+ "depth": 3,
457
+ "numbering": [
458
+ 1,
459
+ 1,
460
+ 1
461
+ ],
462
+ "parent": "root"
463
+ },
464
+ {
465
+ "value": "Usage",
466
+ "href": "#usage",
467
+ "depth": 2,
468
+ "numbering": [
469
+ 1,
470
+ 2
471
+ ],
472
+ "parent": "root"
473
+ },
474
+ {
475
+ "value": "Basic usage",
476
+ "href": "#basic-usage",
477
+ "depth": 3,
478
+ "numbering": [
479
+ 1,
480
+ 2,
481
+ 1
482
+ ],
483
+ "parent": "root"
484
+ },
485
+ {
486
+ "value": "Using tooltips for icons buttons",
487
+ "href": "#using-tooltips-for-icons-buttons",
488
+ "depth": 3,
489
+ "numbering": [
490
+ 1,
491
+ 2,
492
+ 2
493
+ ],
494
+ "parent": "root"
495
+ },
496
+ {
497
+ "value": "Placement options",
498
+ "href": "#placement-options",
499
+ "depth": 3,
500
+ "numbering": [
501
+ 1,
502
+ 2,
503
+ 3
504
+ ],
505
+ "parent": "root"
506
+ }
507
+ ]
508
+ }
509
+ }
510
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "meta": {
3
+ "id": "Components-Feedback",
4
+ "title": "Feedback",
5
+ "description": "Components for providing user feedback.",
6
+ "order": 6,
7
+ "repoPath": "packages/nimbus/src/docs/feedback.mdx",
8
+ "menu": [
9
+ "Components",
10
+ "Feedback"
11
+ ],
12
+ "route": "components/feedback",
13
+ "tags": [
14
+ "document"
15
+ ],
16
+ "toc": [],
17
+ "icon": "CommentBank",
18
+ "layout": "app-frame",
19
+ "tabs": [
20
+ {
21
+ "key": "overview",
22
+ "title": "Overview",
23
+ "order": 0
24
+ }
25
+ ]
26
+ },
27
+ "mdx": "\n# Feedback\n\nComponents for providing user feedback.\n\n<CategoryOverview variant=\"list\" />\n",
28
+ "views": {
29
+ "overview": {
30
+ "mdx": "\n# Feedback\n\nComponents for providing user feedback.\n\n<CategoryOverview variant=\"list\" />\n",
31
+ "toc": []
32
+ }
33
+ }
34
+ }