@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,427 @@
1
+ {
2
+ "meta": {
3
+ "id": "Components-Group",
4
+ "title": "Group",
5
+ "exportName": "Group",
6
+ "description": "Groups related elements together for better organization and layout.",
7
+ "lifecycleState": "Stable",
8
+ "order": 999,
9
+ "repoPath": "packages/nimbus/src/components/group/group.mdx",
10
+ "menu": [
11
+ "Components",
12
+ "Forms",
13
+ "Group"
14
+ ],
15
+ "route": "components/forms/group",
16
+ "tags": [
17
+ "component",
18
+ "group",
19
+ "fieldset",
20
+ "form",
21
+ "cluster"
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": "Variables",
36
+ "href": "#variables",
37
+ "depth": 2,
38
+ "numbering": [
39
+ 1,
40
+ 2
41
+ ],
42
+ "parent": "root"
43
+ },
44
+ {
45
+ "value": "Basic Usage",
46
+ "href": "#basic-usage",
47
+ "depth": 3,
48
+ "numbering": [
49
+ 1,
50
+ 2,
51
+ 1
52
+ ],
53
+ "parent": "root"
54
+ }
55
+ ],
56
+ "layout": "app-frame",
57
+ "tabs": [
58
+ {
59
+ "key": "overview",
60
+ "title": "Overview",
61
+ "order": 0
62
+ },
63
+ {
64
+ "key": "dev",
65
+ "title": "Implementation",
66
+ "order": 3
67
+ },
68
+ {
69
+ "key": "a11y",
70
+ "title": "Accessibility",
71
+ "order": 4
72
+ }
73
+ ]
74
+ },
75
+ "mdx": "\n## Overview\n\nThe Group component provides a flexible way to group related UI elements with\nconsistent spacing and alignment. It's particularly useful for creating forms,\ntoolbars, and other collections of interactive elements.\n\n## Variables\n\nGet familiar with the features.\n\n### Basic Usage\n\n```jsx live\nconst App = () => (\n <Group>\n <Button>First</Button>\n <Button>Second</Button>\n <Button>Third</Button>\n </Group>\n)\n```\n",
76
+ "views": {
77
+ "overview": {
78
+ "mdx": "\n## Overview\n\nThe Group component provides a flexible way to group related UI elements with\nconsistent spacing and alignment. It's particularly useful for creating forms,\ntoolbars, and other collections of interactive elements.\n\n## Variables\n\nGet familiar with the features.\n\n### Basic Usage\n\n```jsx live\nconst App = () => (\n <Group>\n <Button>First</Button>\n <Button>Second</Button>\n <Button>Third</Button>\n </Group>\n)\n```\n",
79
+ "toc": [
80
+ {
81
+ "value": "Overview",
82
+ "href": "#overview",
83
+ "depth": 2,
84
+ "numbering": [
85
+ 1,
86
+ 1
87
+ ],
88
+ "parent": "root"
89
+ },
90
+ {
91
+ "value": "Variables",
92
+ "href": "#variables",
93
+ "depth": 2,
94
+ "numbering": [
95
+ 1,
96
+ 2
97
+ ],
98
+ "parent": "root"
99
+ },
100
+ {
101
+ "value": "Basic Usage",
102
+ "href": "#basic-usage",
103
+ "depth": 3,
104
+ "numbering": [
105
+ 1,
106
+ 2,
107
+ 1
108
+ ],
109
+ "parent": "root"
110
+ }
111
+ ]
112
+ },
113
+ "a11y": {
114
+ "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 <Group gap=\"200\">\n <Button variant=\"solid\">First</Button>\n <Button variant=\"outline\">Second</Button>\n <Button variant=\"ghost\">Third</Button>\n </Group>\n);\n```\n\n### Accessibility standards\n\n- **Use semantic grouping:** Group related elements together to provide context\n for assistive technologies.\n- **Maintain logical focus order:** Ensure elements within the group follow a\n logical tab order.\n- **Provide clear visual separation:** Use sufficient spacing to visually\n distinguish grouped elements.\n- **Consider ARIA labeling:** For complex groups, use `aria-label` or\n `aria-labelledby` to provide descriptive names for screen readers.\n",
115
+ "toc": [
116
+ {
117
+ "value": "Accessibility",
118
+ "href": "#accessibility",
119
+ "depth": 2,
120
+ "numbering": [
121
+ 1,
122
+ 1
123
+ ],
124
+ "parent": "root"
125
+ },
126
+ {
127
+ "value": "Accessibility standards",
128
+ "href": "#accessibility-standards",
129
+ "depth": 3,
130
+ "numbering": [
131
+ 1,
132
+ 1,
133
+ 1
134
+ ],
135
+ "parent": "root"
136
+ }
137
+ ]
138
+ },
139
+ "dev": {
140
+ "mdx": "\n## Getting started\n\n### Import\n\n```tsx\nimport { Group, type GroupProps } from '@commercetools/nimbus';\n```\n\n### Basic usage\n\n```jsx live-dev\nconst App = () => {\n return (\n <Group aria-label=\"Action buttons\">\n <Button>Save</Button>\n <Button>Cancel</Button>\n <Button>Delete</Button>\n </Group>\n );\n};\n```\n\n## Usage examples\n\n### Grouping with spacing\n\nUse Chakra UI style props like `gap` to control spacing between grouped elements:\n\n```jsx live-dev\nconst App = () => {\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Group aria-label=\"Compact button group\" gap=\"100\">\n <Button size=\"xs\">Edit</Button>\n <Button size=\"xs\">Copy</Button>\n <Button size=\"xs\">Delete</Button>\n </Group>\n\n <Group aria-label=\"Default button group\" gap=\"300\">\n <Button>Edit</Button>\n <Button>Copy</Button>\n <Button>Delete</Button>\n </Group>\n\n <Group aria-label=\"Extra small button group\" gap=\"200\">\n <Button size=\"2xs\">Edit</Button>\n <Button size=\"2xs\">Copy</Button>\n <Button size=\"2xs\">Delete</Button>\n </Group>\n </Stack>\n );\n};\n```\n\n### With accessibility labels\n\nAlways provide descriptive `aria-label` values to help screen reader users understand the purpose of the group:\n\n```jsx live-dev\nconst App = () => {\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Group aria-label=\"Text formatting controls\" gap=\"200\">\n <IconButton aria-label=\"Bold\">\n <Icons.FormatBold />\n </IconButton>\n <IconButton aria-label=\"Italic\">\n <Icons.FormatItalic />\n </IconButton>\n <IconButton aria-label=\"Underline\">\n <Icons.FormatUnderlined />\n </IconButton>\n </Group>\n\n <Group aria-label=\"Document actions\" gap=\"300\">\n <Button startIcon={<Icons.Save />}>Save</Button>\n <Button startIcon={<Icons.Print />}>Print</Button>\n <Button startIcon={<Icons.Share />}>Share</Button>\n </Group>\n </Stack>\n );\n};\n```\n\n### With hover handlers\n\nGroup provides hover event handlers for tracking user interactions:\n\n```jsx live-dev\nconst App = () => {\n const [isHovering, setIsHovering] = useState(false);\n const [hoverCount, setHoverCount] = useState(0);\n\n return (\n <Stack direction=\"column\" gap=\"400\" alignItems=\"flex-start\">\n <Group\n aria-label=\"Interactive button group\"\n gap=\"300\"\n onHoverStart={() => {\n setIsHovering(true);\n setHoverCount((prev) => prev + 1);\n }}\n onHoverEnd={() => setIsHovering(false)}\n padding=\"400\"\n borderRadius=\"200\"\n backgroundColor={isHovering ? 'primary.2' : 'transparent'}\n transition=\"background-color 0.2s\"\n >\n <Button>Action 1</Button>\n <Button>Action 2</Button>\n <Button>Action 3</Button>\n </Group>\n\n <Stack direction=\"column\" gap=\"100\">\n <Text fontSize=\"350\">\n Status: {isHovering ? 'Hovering' : 'Not hovering'}\n </Text>\n <Text fontSize=\"350\" color=\"fg.muted\">\n Hover count: {hoverCount}\n </Text>\n </Stack>\n </Stack>\n );\n};\n```\n\n### Flexible layout with style props\n\nGroup supports all Chakra UI style props for flexible layout customization:\n\n```jsx live-dev\nconst App = () => {\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Group\n aria-label=\"Centered button group\"\n gap=\"300\"\n justifyContent=\"center\"\n width=\"100%\"\n padding=\"400\"\n borderRadius=\"200\"\n backgroundColor=\"neutral.2\"\n >\n <Button>Left</Button>\n <Button>Center</Button>\n <Button>Right</Button>\n </Group>\n\n <Group\n aria-label=\"Space-between button group\"\n gap=\"300\"\n justifyContent=\"space-between\"\n width=\"100%\"\n padding=\"400\"\n borderRadius=\"200\"\n backgroundColor=\"primary.2\"\n >\n <Button>Start</Button>\n <Button>End</Button>\n </Group>\n\n <Group\n aria-label=\"Vertical button group\"\n gap=\"200\"\n flexDirection=\"column\"\n alignItems=\"stretch\"\n padding=\"400\"\n borderRadius=\"200\"\n backgroundColor=\"positive.2\"\n >\n <Button>First</Button>\n <Button>Second</Button>\n <Button>Third</Button>\n </Group>\n </Stack>\n );\n};\n```\n\n## Component requirements\n\n## Accessibility\n\nThe Group component follows WCAG 2.1 AA guidelines and implements proper semantic grouping:\n\n#### Role\n\n- Automatically applies `role=\"group\"` to identify related elements\n- Groups should have a descriptive `aria-label` or `aria-labelledby` to provide context\n\n#### Labeling\n\nAlways provide an accessible name for groups:\n\n```tsx\n// Using aria-label\n<Group aria-label=\"Text formatting controls\">\n {/* controls */}\n</Group>\n\n// Using aria-labelledby\n<>\n <Heading id=\"toolbar-heading\">Editing Tools</Heading>\n <Group aria-labelledby=\"toolbar-heading\">\n {/* tools */}\n </Group>\n</>\n```\n\n#### Keyboard navigation\n\nGroup is a semantic container that does not interfere with keyboard navigation. Each child element maintains its own keyboard interaction patterns.\n\n#### Persistent ID\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 = \"primary-action-group\";\n\nexport const ActionToolbar = () => (\n <Group id={PERSISTENT_ID} aria-label=\"Primary actions\">\n <Button>Save</Button>\n <Button>Cancel</Button>\n </Group>\n);\n```\n\n## API reference\n\n<PropsTable id=\"Group\" />\n\n## Common patterns\n\n### Button groups\n\nGroup related actions together for better visual hierarchy:\n\n```jsx live-dev\nconst App = () => {\n return (\n <Stack direction=\"column\" gap=\"400\" alignItems=\"flex-start\">\n <Stack direction=\"column\" gap=\"200\">\n <Text fontWeight=\"600\">Primary Actions</Text>\n <Group aria-label=\"Primary actions\" gap=\"300\">\n <Button variant=\"solid\">Save</Button>\n <Button variant=\"outline\">Save Draft</Button>\n <Button variant=\"ghost\">Cancel</Button>\n </Group>\n </Stack>\n\n <Stack direction=\"column\" gap=\"200\">\n <Text fontWeight=\"600\">Destructive Actions</Text>\n <Group aria-label=\"Destructive actions\" gap=\"300\">\n <Button colorPalette=\"critical\">Delete</Button>\n <Button variant=\"outline\" colorPalette=\"critical\">\n Archive\n </Button>\n </Group>\n </Stack>\n\n <Stack direction=\"column\" gap=\"200\">\n <Text fontWeight=\"600\">Icon Button Group</Text>\n <Group aria-label=\"Text alignment controls\" gap=\"100\">\n <IconButton aria-label=\"Align left\">\n <Icons.FormatAlignLeft />\n </IconButton>\n <IconButton aria-label=\"Align center\">\n <Icons.FormatAlignCenter />\n </IconButton>\n <IconButton aria-label=\"Align right\">\n <Icons.FormatAlignRight />\n </IconButton>\n <IconButton aria-label=\"Align justify\">\n <Icons.FormatAlignJustify />\n </IconButton>\n </Group>\n </Stack>\n </Stack>\n );\n};\n```\n\n### Form field grouping\n\nUse Group to organize related form controls:\n\n```jsx live-dev\nconst App = () => {\n const [firstName, setFirstName] = useState('');\n const [lastName, setLastName] = useState('');\n\n return (\n <Stack direction=\"column\" gap=\"400\" maxWidth=\"600px\">\n <Stack direction=\"column\" gap=\"200\">\n <Text fontWeight=\"600\">Name</Text>\n <Group aria-label=\"Name fields\" gap=\"300\">\n <TextInput\n placeholder=\"First name\"\n value={firstName}\n onChange={setFirstName}\n flex=\"1\"\n />\n <TextInput\n placeholder=\"Last name\"\n value={lastName}\n onChange={setLastName}\n flex=\"1\"\n />\n </Group>\n </Stack>\n\n <Stack direction=\"column\" gap=\"200\">\n <Text fontWeight=\"600\">Date Range</Text>\n <Group aria-label=\"Date range fields\" gap=\"300\">\n <TextInput placeholder=\"Start date\" flex=\"1\" />\n <Text alignSelf=\"center\">to</Text>\n <TextInput placeholder=\"End date\" flex=\"1\" />\n </Group>\n </Stack>\n </Stack>\n );\n};\n```\n\n### Toolbar layouts\n\nCreate accessible toolbars with grouped controls:\n\n```jsx live-dev\nconst App = () => {\n return (\n <Stack direction=\"column\" gap=\"400\">\n <Group\n aria-label=\"Document editing toolbar\"\n gap=\"300\"\n padding=\"300\"\n borderRadius=\"200\"\n backgroundColor=\"neutral.2\"\n >\n <Group aria-label=\"Clipboard operations\" gap=\"100\">\n <IconButton aria-label=\"Cut\" size=\"xs\">\n <Icons.ContentCut />\n </IconButton>\n <IconButton aria-label=\"Copy\" size=\"xs\">\n <Icons.ContentCopy />\n </IconButton>\n <IconButton aria-label=\"Paste\" size=\"xs\">\n <Icons.ContentPaste />\n </IconButton>\n </Group>\n\n <Separator orientation=\"vertical\" height=\"24px\" />\n\n <Group aria-label=\"Text formatting\" gap=\"100\">\n <IconButton aria-label=\"Bold\" size=\"xs\">\n <Icons.FormatBold />\n </IconButton>\n <IconButton aria-label=\"Italic\" size=\"xs\">\n <Icons.FormatItalic />\n </IconButton>\n <IconButton aria-label=\"Underline\" size=\"xs\">\n <Icons.FormatUnderlined />\n </IconButton>\n </Group>\n\n <Separator orientation=\"vertical\" height=\"24px\" />\n\n <Group aria-label=\"Text alignment\" gap=\"100\">\n <IconButton aria-label=\"Align left\" size=\"xs\">\n <Icons.FormatAlignLeft />\n </IconButton>\n <IconButton aria-label=\"Align center\" size=\"xs\">\n <Icons.FormatAlignCenter />\n </IconButton>\n <IconButton aria-label=\"Align right\" size=\"xs\">\n <Icons.FormatAlignRight />\n </IconButton>\n </Group>\n </Group>\n </Stack>\n );\n};\n```\n\n## Testing your implementation\n\nThese examples demonstrate how to test your implementation when using Group 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 Group component renders correctly with children\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 { Group, Button, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Group - Basic rendering\", () => {\n it(\"renders group with children\", () => {\n render(\n <NimbusProvider>\n <Group aria-label=\"Test group\">\n <Button>First</Button>\n <Button>Second</Button>\n <Button>Third</Button>\n </Group>\n </NimbusProvider>\n );\n\n const group = screen.getByRole(\"group\", { name: \"Test group\" });\n expect(group).toBeInTheDocument();\n\n // Verify all children are rendered\n expect(screen.getByRole(\"button\", { name: \"First\" })).toBeInTheDocument();\n expect(screen.getByRole(\"button\", { name: \"Second\" })).toBeInTheDocument();\n expect(screen.getByRole(\"button\", { name: \"Third\" })).toBeInTheDocument();\n });\n\n it(\"applies custom className and id\", () => {\n render(\n <NimbusProvider>\n <Group\n aria-label=\"Custom group\"\n className=\"custom-class\"\n id=\"custom-id\"\n >\n <Button>Content</Button>\n </Group>\n </NimbusProvider>\n );\n\n const group = screen.getByRole(\"group\", { name: \"Custom group\" });\n expect(group).toHaveClass(\"custom-class\");\n expect(group).toHaveAttribute(\"id\", \"custom-id\");\n });\n});\n```\n\n### Accessibility Tests\n\nVerify the Group component follows accessibility best practices\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 { Group, Button, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Group - Accessibility\", () => {\n it('applies role=\"group\" to the container', () => {\n render(\n <NimbusProvider>\n <Group aria-label=\"Accessible group\">\n <Button>Action</Button>\n </Group>\n </NimbusProvider>\n );\n\n const group = screen.getByRole(\"group\");\n expect(group).toHaveAttribute(\"role\", \"group\");\n });\n\n it(\"supports aria-label for screen readers\", () => {\n render(\n <NimbusProvider>\n <Group aria-label=\"Action buttons\">\n <Button>Save</Button>\n <Button>Cancel</Button>\n </Group>\n </NimbusProvider>\n );\n\n const group = screen.getByRole(\"group\", { name: \"Action buttons\" });\n expect(group).toHaveAttribute(\"aria-label\", \"Action buttons\");\n });\n\n it(\"supports aria-labelledby for external labels\", () => {\n render(\n <NimbusProvider>\n <div>\n <h2 id=\"group-heading\">Form Actions</h2>\n <Group aria-labelledby=\"group-heading\">\n <Button>Submit</Button>\n <Button>Reset</Button>\n </Group>\n </div>\n </NimbusProvider>\n );\n\n const group = screen.getByRole(\"group\", { name: \"Form Actions\" });\n expect(group).toHaveAttribute(\"aria-labelledby\", \"group-heading\");\n });\n});\n```\n\n### Hover Handler Tests\n\nTest hover event handlers on the Group component\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 { Group, Button, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Group - Hover handlers\", () => {\n it(\"calls onHoverStart when mouse enters the group\", async () => {\n const user = userEvent.setup();\n const onHoverStart = vi.fn();\n\n render(\n <NimbusProvider>\n <Group aria-label=\"Hover group\" onHoverStart={onHoverStart}>\n <Button>Action</Button>\n </Group>\n </NimbusProvider>\n );\n\n const group = screen.getByRole(\"group\", { name: \"Hover group\" });\n await user.hover(group);\n\n expect(onHoverStart).toHaveBeenCalledTimes(1);\n });\n\n it(\"calls onHoverEnd when mouse leaves the group\", async () => {\n const user = userEvent.setup();\n const onHoverEnd = vi.fn();\n\n render(\n <NimbusProvider>\n <Group aria-label=\"Hover group\" onHoverEnd={onHoverEnd}>\n <Button>Action</Button>\n </Group>\n </NimbusProvider>\n );\n\n const group = screen.getByRole(\"group\", { name: \"Hover group\" });\n await user.hover(group);\n await user.unhover(group);\n\n expect(onHoverEnd).toHaveBeenCalledTimes(1);\n });\n\n it(\"calls onHoverChange with hover state\", async () => {\n const user = userEvent.setup();\n const onHoverChange = vi.fn();\n\n render(\n <NimbusProvider>\n <Group aria-label=\"Hover group\" onHoverChange={onHoverChange}>\n <Button>Action</Button>\n </Group>\n </NimbusProvider>\n );\n\n const group = screen.getByRole(\"group\", { name: \"Hover group\" });\n\n // Hover over the group\n await user.hover(group);\n expect(onHoverChange).toHaveBeenCalledWith(true);\n\n // Unhover from the group\n await user.unhover(group);\n expect(onHoverChange).toHaveBeenCalledWith(false);\n });\n});\n```\n\n### Style Props Tests\n\nTest Chakra UI style props support\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 { Group, Button, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Group - Style props\", () => {\n it(\"supports gap style prop for spacing\", () => {\n render(\n <NimbusProvider>\n <Group aria-label=\"Spaced group\" gap=\"300\">\n <Button>First</Button>\n <Button>Second</Button>\n </Group>\n </NimbusProvider>\n );\n\n const group = screen.getByRole(\"group\", { name: \"Spaced group\" });\n expect(group).toBeInTheDocument();\n // Note: Gap styling is applied via CSS, testing visual appearance\n // would require integration or E2E tests\n });\n\n it(\"supports layout style props\", () => {\n render(\n <NimbusProvider>\n <Group\n aria-label=\"Custom layout\"\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n padding=\"400\"\n >\n <Button>Action</Button>\n </Group>\n </NimbusProvider>\n );\n\n const group = screen.getByRole(\"group\", { name: \"Custom layout\" });\n expect(group).toBeInTheDocument();\n // Layout styles are applied via Chakra UI's style props system\n });\n\n it(\"supports color and background style props\", () => {\n render(\n <NimbusProvider>\n <Group\n aria-label=\"Styled group\"\n backgroundColor=\"primary.2\"\n borderRadius=\"200\"\n >\n <Button>Action</Button>\n </Group>\n </NimbusProvider>\n );\n\n const group = screen.getByRole(\"group\", { name: \"Styled group\" });\n expect(group).toBeInTheDocument();\n // Color and background styles are applied via Chakra UI\n });\n});\n```\n\n### Integration Tests\n\nTest common usage patterns and integration scenarios\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 { Group, Button, NimbusProvider } from \"@commercetools/nimbus\";\n\ndescribe(\"Group - Integration patterns\", () => {\n it(\"works with button groups for toolbars\", () => {\n render(\n <NimbusProvider>\n <Group aria-label=\"Text formatting toolbar\">\n <Button aria-label=\"Bold\">B</Button>\n <Button aria-label=\"Italic\">I</Button>\n <Button aria-label=\"Underline\">U</Button>\n </Group>\n </NimbusProvider>\n );\n\n const group = screen.getByRole(\"group\", {\n name: \"Text formatting toolbar\",\n });\n expect(group).toBeInTheDocument();\n\n // Verify all toolbar buttons are accessible\n expect(screen.getByRole(\"button\", { name: \"Bold\" })).toBeInTheDocument();\n expect(screen.getByRole(\"button\", { name: \"Italic\" })).toBeInTheDocument();\n expect(\n screen.getByRole(\"button\", { name: \"Underline\" })\n ).toBeInTheDocument();\n });\n\n it(\"maintains keyboard navigation of child elements\", async () => {\n const user = userEvent.setup();\n const onFirstClick = vi.fn();\n const onSecondClick = vi.fn();\n\n render(\n <NimbusProvider>\n <Group aria-label=\"Navigation group\">\n <Button onClick={onFirstClick}>First</Button>\n <Button onClick={onSecondClick}>Second</Button>\n </Group>\n </NimbusProvider>\n );\n\n // Tab to first button and activate\n await user.tab();\n await user.keyboard(\"{Enter}\");\n expect(onFirstClick).toHaveBeenCalledTimes(1);\n\n // Tab to second button and activate\n await user.tab();\n await user.keyboard(\"{Enter}\");\n expect(onSecondClick).toHaveBeenCalledTimes(1);\n });\n\n it(\"supports nested groups for complex layouts\", () => {\n render(\n <NimbusProvider>\n <Group aria-label=\"Main toolbar\">\n <Group aria-label=\"File operations\">\n <Button>New</Button>\n <Button>Open</Button>\n <Button>Save</Button>\n </Group>\n <Group aria-label=\"Edit operations\">\n <Button>Cut</Button>\n <Button>Copy</Button>\n <Button>Paste</Button>\n </Group>\n </Group>\n </NimbusProvider>\n );\n\n // Verify all groups are present\n expect(\n screen.getByRole(\"group\", { name: \"Main toolbar\" })\n ).toBeInTheDocument();\n expect(\n screen.getByRole(\"group\", { name: \"File operations\" })\n ).toBeInTheDocument();\n expect(\n screen.getByRole(\"group\", { name: \"Edit operations\" })\n ).toBeInTheDocument();\n });\n});\n```\n\n\n## Resources\n\n- [Storybook Documentation](https://nimbus-storybook.vercel.app/?path=/docs/components-group--docs)\n- [React Aria Group Documentation](https://react-spectrum.adobe.com/react-aria/Group.html)\n- [WCAG 2.1 Grouping Guidelines](https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html)\n",
141
+ "toc": [
142
+ {
143
+ "value": "Getting started",
144
+ "href": "#getting-started",
145
+ "depth": 2,
146
+ "numbering": [
147
+ 1,
148
+ 1
149
+ ],
150
+ "parent": "root"
151
+ },
152
+ {
153
+ "value": "Import",
154
+ "href": "#import",
155
+ "depth": 3,
156
+ "numbering": [
157
+ 1,
158
+ 1,
159
+ 1
160
+ ],
161
+ "parent": "root"
162
+ },
163
+ {
164
+ "value": "Basic usage",
165
+ "href": "#basic-usage",
166
+ "depth": 3,
167
+ "numbering": [
168
+ 1,
169
+ 1,
170
+ 2
171
+ ],
172
+ "parent": "root"
173
+ },
174
+ {
175
+ "value": "Usage examples",
176
+ "href": "#usage-examples",
177
+ "depth": 2,
178
+ "numbering": [
179
+ 1,
180
+ 2
181
+ ],
182
+ "parent": "root"
183
+ },
184
+ {
185
+ "value": "Grouping with spacing",
186
+ "href": "#grouping-with-spacing",
187
+ "depth": 3,
188
+ "numbering": [
189
+ 1,
190
+ 2,
191
+ 1
192
+ ],
193
+ "parent": "root"
194
+ },
195
+ {
196
+ "value": "With accessibility labels",
197
+ "href": "#with-accessibility-labels",
198
+ "depth": 3,
199
+ "numbering": [
200
+ 1,
201
+ 2,
202
+ 2
203
+ ],
204
+ "parent": "root"
205
+ },
206
+ {
207
+ "value": "With hover handlers",
208
+ "href": "#with-hover-handlers",
209
+ "depth": 3,
210
+ "numbering": [
211
+ 1,
212
+ 2,
213
+ 3
214
+ ],
215
+ "parent": "root"
216
+ },
217
+ {
218
+ "value": "Flexible layout with style props",
219
+ "href": "#flexible-layout-with-style-props",
220
+ "depth": 3,
221
+ "numbering": [
222
+ 1,
223
+ 2,
224
+ 4
225
+ ],
226
+ "parent": "root"
227
+ },
228
+ {
229
+ "value": "Component requirements",
230
+ "href": "#component-requirements",
231
+ "depth": 2,
232
+ "numbering": [
233
+ 1,
234
+ 3
235
+ ],
236
+ "parent": "root"
237
+ },
238
+ {
239
+ "value": "Accessibility",
240
+ "href": "#accessibility",
241
+ "depth": 2,
242
+ "numbering": [
243
+ 1,
244
+ 4
245
+ ],
246
+ "parent": "root"
247
+ },
248
+ {
249
+ "value": "Role",
250
+ "href": "#role",
251
+ "depth": 4,
252
+ "numbering": [
253
+ 1,
254
+ 4,
255
+ 1,
256
+ 1
257
+ ],
258
+ "parent": "root"
259
+ },
260
+ {
261
+ "value": "Labeling",
262
+ "href": "#labeling",
263
+ "depth": 4,
264
+ "numbering": [
265
+ 1,
266
+ 4,
267
+ 1,
268
+ 2
269
+ ],
270
+ "parent": "root"
271
+ },
272
+ {
273
+ "value": "Keyboard navigation",
274
+ "href": "#keyboard-navigation",
275
+ "depth": 4,
276
+ "numbering": [
277
+ 1,
278
+ 4,
279
+ 1,
280
+ 3
281
+ ],
282
+ "parent": "root"
283
+ },
284
+ {
285
+ "value": "Persistent ID",
286
+ "href": "#persistent-id",
287
+ "depth": 4,
288
+ "numbering": [
289
+ 1,
290
+ 4,
291
+ 1,
292
+ 4
293
+ ],
294
+ "parent": "root"
295
+ },
296
+ {
297
+ "value": "API reference",
298
+ "href": "#api-reference",
299
+ "depth": 2,
300
+ "numbering": [
301
+ 1,
302
+ 5
303
+ ],
304
+ "parent": "root"
305
+ },
306
+ {
307
+ "value": "Common patterns",
308
+ "href": "#common-patterns",
309
+ "depth": 2,
310
+ "numbering": [
311
+ 1,
312
+ 6
313
+ ],
314
+ "parent": "root"
315
+ },
316
+ {
317
+ "value": "Button groups",
318
+ "href": "#button-groups",
319
+ "depth": 3,
320
+ "numbering": [
321
+ 1,
322
+ 6,
323
+ 1
324
+ ],
325
+ "parent": "root"
326
+ },
327
+ {
328
+ "value": "Form field grouping",
329
+ "href": "#form-field-grouping",
330
+ "depth": 3,
331
+ "numbering": [
332
+ 1,
333
+ 6,
334
+ 2
335
+ ],
336
+ "parent": "root"
337
+ },
338
+ {
339
+ "value": "Toolbar layouts",
340
+ "href": "#toolbar-layouts",
341
+ "depth": 3,
342
+ "numbering": [
343
+ 1,
344
+ 6,
345
+ 3
346
+ ],
347
+ "parent": "root"
348
+ },
349
+ {
350
+ "value": "Testing your implementation",
351
+ "href": "#testing-your-implementation",
352
+ "depth": 2,
353
+ "numbering": [
354
+ 1,
355
+ 7
356
+ ],
357
+ "parent": "root"
358
+ },
359
+ {
360
+ "value": "Basic Rendering Tests",
361
+ "href": "#basic-rendering-tests",
362
+ "depth": 3,
363
+ "numbering": [
364
+ 1,
365
+ 7,
366
+ 1
367
+ ],
368
+ "parent": "root"
369
+ },
370
+ {
371
+ "value": "Accessibility Tests",
372
+ "href": "#accessibility-tests",
373
+ "depth": 3,
374
+ "numbering": [
375
+ 1,
376
+ 7,
377
+ 2
378
+ ],
379
+ "parent": "root"
380
+ },
381
+ {
382
+ "value": "Hover Handler Tests",
383
+ "href": "#hover-handler-tests",
384
+ "depth": 3,
385
+ "numbering": [
386
+ 1,
387
+ 7,
388
+ 3
389
+ ],
390
+ "parent": "root"
391
+ },
392
+ {
393
+ "value": "Style Props Tests",
394
+ "href": "#style-props-tests",
395
+ "depth": 3,
396
+ "numbering": [
397
+ 1,
398
+ 7,
399
+ 4
400
+ ],
401
+ "parent": "root"
402
+ },
403
+ {
404
+ "value": "Integration Tests",
405
+ "href": "#integration-tests",
406
+ "depth": 3,
407
+ "numbering": [
408
+ 1,
409
+ 7,
410
+ 5
411
+ ],
412
+ "parent": "root"
413
+ },
414
+ {
415
+ "value": "Resources",
416
+ "href": "#resources",
417
+ "depth": 2,
418
+ "numbering": [
419
+ 1,
420
+ 8
421
+ ],
422
+ "parent": "root"
423
+ }
424
+ ]
425
+ }
426
+ }
427
+ }