@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.
- package/README.md +63 -14
- package/data/docs/route-manifest.json +10998 -0
- package/data/docs/routes/components-accessibility-visually-hidden.json +388 -0
- package/data/docs/routes/components-accessibility.json +34 -0
- package/data/docs/routes/components-buttons-button.json +715 -0
- package/data/docs/routes/components-buttons-icon-button.json +852 -0
- package/data/docs/routes/components-buttons-icon-toggle-button.json +594 -0
- package/data/docs/routes/components-buttons-split-button.json +670 -0
- package/data/docs/routes/components-buttons-toggle-button-group.json +722 -0
- package/data/docs/routes/components-buttons-toggle-button.json +689 -0
- package/data/docs/routes/components-buttons.json +36 -0
- package/data/docs/routes/components-data-display-badge.json +555 -0
- package/data/docs/routes/components-data-display-card.json +338 -0
- package/data/docs/routes/components-data-display-data-table.json +855 -0
- package/data/docs/routes/components-data-display-draggable-list.json +596 -0
- package/data/docs/routes/components-data-display-table.json +472 -0
- package/data/docs/routes/components-data-display-tag-group.json +535 -0
- package/data/docs/routes/components-data-display.json +34 -0
- package/data/docs/routes/components-feedback-alert.json +696 -0
- package/data/docs/routes/components-feedback-dialog.json +682 -0
- package/data/docs/routes/components-feedback-drawer.json +600 -0
- package/data/docs/routes/components-feedback-loading-spinner.json +415 -0
- package/data/docs/routes/components-feedback-progress-bar.json +661 -0
- package/data/docs/routes/components-feedback-toast.json +1040 -0
- package/data/docs/routes/components-feedback-tooltip.json +510 -0
- package/data/docs/routes/components-feedback.json +34 -0
- package/data/docs/routes/components-forms-field-errors.json +557 -0
- package/data/docs/routes/components-forms-form-field.json +848 -0
- package/data/docs/routes/components-forms-group.json +427 -0
- package/data/docs/routes/components-forms-localized-field.json +770 -0
- package/data/docs/routes/components-forms.json +37 -0
- package/data/docs/routes/components-inputs-calendar.json +611 -0
- package/data/docs/routes/components-inputs-checkbox.json +774 -0
- package/data/docs/routes/components-inputs-combo-box.json +761 -0
- package/data/docs/routes/components-inputs-date-input.json +628 -0
- package/data/docs/routes/components-inputs-date-picker.json +709 -0
- package/data/docs/routes/components-inputs-date-range-picker.json +599 -0
- package/data/docs/routes/components-inputs-money-input.json +721 -0
- package/data/docs/routes/components-inputs-multiline-text-input.json +611 -0
- package/data/docs/routes/components-inputs-number-input.json +647 -0
- package/data/docs/routes/components-inputs-password-input.json +576 -0
- package/data/docs/routes/components-inputs-radio-input.json +583 -0
- package/data/docs/routes/components-inputs-range-calendar.json +607 -0
- package/data/docs/routes/components-inputs-rich-text-input.json +599 -0
- package/data/docs/routes/components-inputs-scoped-search-input.json +570 -0
- package/data/docs/routes/components-inputs-search-input.json +588 -0
- package/data/docs/routes/components-inputs-select-input.json +960 -0
- package/data/docs/routes/components-inputs-switch.json +720 -0
- package/data/docs/routes/components-inputs-text-input.json +566 -0
- package/data/docs/routes/components-inputs-time-input.json +775 -0
- package/data/docs/routes/components-inputs.json +34 -0
- package/data/docs/routes/components-layout-box.json +501 -0
- package/data/docs/routes/components-layout-defaultpage.json +748 -0
- package/data/docs/routes/components-layout-flex.json +587 -0
- package/data/docs/routes/components-layout-grid.json +393 -0
- package/data/docs/routes/components-layout-modalpage.json +716 -0
- package/data/docs/routes/components-layout-pagecontent.json +673 -0
- package/data/docs/routes/components-layout-scrollarea.json +428 -0
- package/data/docs/routes/components-layout-separator.json +461 -0
- package/data/docs/routes/components-layout-simple-grid.json +519 -0
- package/data/docs/routes/components-layout-spacer.json +573 -0
- package/data/docs/routes/components-layout-stack.json +481 -0
- package/data/docs/routes/components-layout.json +34 -0
- package/data/docs/routes/components-media-avatar.json +427 -0
- package/data/docs/routes/components-media-icon.json +663 -0
- package/data/docs/routes/components-media-image.json +511 -0
- package/data/docs/routes/components-media-inline-svg.json +586 -0
- package/data/docs/routes/components-media.json +34 -0
- package/data/docs/routes/components-navigation-accordion.json +643 -0
- package/data/docs/routes/components-navigation-collapsible-motion.json +628 -0
- package/data/docs/routes/components-navigation-link.json +554 -0
- package/data/docs/routes/components-navigation-menu.json +546 -0
- package/data/docs/routes/components-navigation-pagination.json +502 -0
- package/data/docs/routes/components-navigation-steps.json +629 -0
- package/data/docs/routes/components-navigation-tabnav.json +546 -0
- package/data/docs/routes/components-navigation-tabs.json +635 -0
- package/data/docs/routes/components-navigation-toolbar.json +549 -0
- package/data/docs/routes/components-navigation.json +34 -0
- package/data/docs/routes/components-typography-code.json +39 -0
- package/data/docs/routes/components-typography-heading.json +402 -0
- package/data/docs/routes/components-typography-kbd.json +399 -0
- package/data/docs/routes/components-typography-list.json +593 -0
- package/data/docs/routes/components-typography-text.json +444 -0
- package/data/docs/routes/components-typography.json +34 -0
- package/data/docs/routes/components-utilities-nimbus-i18n-provider.json +295 -0
- package/data/docs/routes/components-utilities-nimbus-provider.json +663 -0
- package/data/docs/routes/components-utilities.json +34 -0
- package/data/docs/routes/components.json +33 -0
- package/data/docs/routes/home-contribute-adrs-adr0001-consumer-component-apis.json +314 -0
- package/data/docs/routes/home-contribute-adrs-adr0002-compound-component-extraction.json +160 -0
- package/data/docs/routes/home-contribute-adrs-adr0003-component-lifecycle-states.json +460 -0
- package/data/docs/routes/home-contribute-adrs.json +205 -0
- package/data/docs/routes/home-contribute-development-setup.json +213 -0
- package/data/docs/routes/home-contribute-stats.json +36 -0
- package/data/docs/routes/home-contribute.json +36 -0
- package/data/docs/routes/home-design-tokens-aspect-ratios.json +36 -0
- package/data/docs/routes/home-design-tokens-borders.json +35 -0
- package/data/docs/routes/home-design-tokens-colors.json +157 -0
- package/data/docs/routes/home-design-tokens-other-animations.json +119 -0
- package/data/docs/routes/home-design-tokens-other-blurs.json +36 -0
- package/data/docs/routes/home-design-tokens-other-breakpoints.json +61 -0
- package/data/docs/routes/home-design-tokens-other-cursors.json +36 -0
- package/data/docs/routes/home-design-tokens-other-z-indices.json +39 -0
- package/data/docs/routes/home-design-tokens-other.json +35 -0
- package/data/docs/routes/home-design-tokens-radii.json +59 -0
- package/data/docs/routes/home-design-tokens-shadows.json +57 -0
- package/data/docs/routes/home-design-tokens-sizes.json +137 -0
- package/data/docs/routes/home-design-tokens-spacing.json +36 -0
- package/data/docs/routes/home-design-tokens-typography.json +184 -0
- package/data/docs/routes/home-design-tokens.json +34 -0
- package/data/docs/routes/home-getting-started-core-concepts.json +301 -0
- package/data/docs/routes/home-getting-started-installation.json +621 -0
- package/data/docs/routes/home-getting-started-mcp-server-overview.json +139 -0
- package/data/docs/routes/home-getting-started-mcp-server-setup.json +316 -0
- package/data/docs/routes/home-getting-started-release-process.json +294 -0
- package/data/docs/routes/home-getting-started-testing-setup.json +296 -0
- package/data/docs/routes/home-playground-markdown.json +638 -0
- package/data/docs/routes/home-playground-toc.json +169 -0
- package/data/docs/routes/home-playground.json +34 -0
- package/data/docs/routes/home-style-props-background.json +236 -0
- package/data/docs/routes/home-style-props-border.json +310 -0
- package/data/docs/routes/home-style-props-display.json +120 -0
- package/data/docs/routes/home-style-props-effects.json +116 -0
- package/data/docs/routes/home-style-props-filters.json +396 -0
- package/data/docs/routes/home-style-props-flex-and-grid.json +496 -0
- package/data/docs/routes/home-style-props-interactivity.json +356 -0
- package/data/docs/routes/home-style-props-layout.json +422 -0
- package/data/docs/routes/home-style-props-list.json +116 -0
- package/data/docs/routes/home-style-props-sizing.json +244 -0
- package/data/docs/routes/home-style-props-spacing.json +228 -0
- package/data/docs/routes/home-style-props-svg.json +96 -0
- package/data/docs/routes/home-style-props-tables.json +116 -0
- package/data/docs/routes/home-style-props-transforms.json +216 -0
- package/data/docs/routes/home-style-props-transitions.json +216 -0
- package/data/docs/routes/home-style-props-typography.json +536 -0
- package/data/docs/routes/home-style-props.json +33 -0
- package/data/docs/routes/home.json +32 -0
- package/data/docs/routes/hooks-usecopytoclipboard.json +76 -0
- package/data/docs/routes/hooks-usehotkeys.json +117 -0
- package/data/docs/routes/hooks.json +33 -0
- package/data/docs/routes/icons.json +32 -0
- package/data/docs/routes/patterns-fields-date-range-picker-field.json +393 -0
- package/data/docs/routes/patterns-fields-money-input-field.json +415 -0
- package/data/docs/routes/patterns-fields-multiline-text-input-field.json +404 -0
- package/data/docs/routes/patterns-fields-number-input-field.json +470 -0
- package/data/docs/routes/patterns-fields-password-input-field.json +319 -0
- package/data/docs/routes/patterns-fields-search-input-field.json +382 -0
- package/data/docs/routes/patterns-fields-text-input-field.json +404 -0
- package/data/docs/routes/patterns-fields.json +78 -0
- package/data/docs/routes/patterns.json +34 -0
- package/data/docs/search-index.json +1 -0
- package/data/docs/types/Accordion.json +12 -0
- package/data/docs/types/AccordionContent.json +286 -0
- package/data/docs/types/AccordionHeader.json +891 -0
- package/data/docs/types/AccordionHeaderRightContent.json +27 -0
- package/data/docs/types/AccordionItem.json +242 -0
- package/data/docs/types/AccordionRoot.json +162 -0
- package/data/docs/types/Alert.json +12 -0
- package/data/docs/types/AlertActions.json +11 -0
- package/data/docs/types/AlertDescription.json +118 -0
- package/data/docs/types/AlertDismissButton.json +937 -0
- package/data/docs/types/AlertRoot.json +42 -0
- package/data/docs/types/AlertTitle.json +118 -0
- package/data/docs/types/Avatar.json +125 -0
- package/data/docs/types/Badge.json +64 -0
- package/data/docs/types/Body.json +67 -0
- package/data/docs/types/Box.json +85 -0
- package/data/docs/types/Button.json +1015 -0
- package/data/docs/types/Calendar.json +565 -0
- package/data/docs/types/Caption.json +67 -0
- package/data/docs/types/Card.json +12 -0
- package/data/docs/types/CardContent.json +27 -0
- package/data/docs/types/CardHeader.json +27 -0
- package/data/docs/types/CardRoot.json +106 -0
- package/data/docs/types/Cell.json +227 -0
- package/data/docs/types/Checkbox.json +897 -0
- package/data/docs/types/Code.json +112 -0
- package/data/docs/types/CollapsibleMotionContent.json +35 -0
- package/data/docs/types/CollapsibleMotionRoot.json +99 -0
- package/data/docs/types/CollapsibleMotionTrigger.json +71 -0
- package/data/docs/types/Column.json +101 -0
- package/data/docs/types/ColumnGroup.json +101 -0
- package/data/docs/types/ColumnHeader.json +193 -0
- package/data/docs/types/ComboBoxListBox.json +751 -0
- package/data/docs/types/ComboBoxOption.json +672 -0
- package/data/docs/types/ComboBoxPopover.json +786 -0
- package/data/docs/types/ComboBoxRoot.json +747 -0
- package/data/docs/types/ComboBoxSection.json +277 -0
- package/data/docs/types/ComboBoxTrigger.json +70 -0
- package/data/docs/types/Content.json +33 -0
- package/data/docs/types/DataTable.json +596 -0
- package/data/docs/types/DataTableBody.json +223 -0
- package/data/docs/types/DataTableFooter.json +27 -0
- package/data/docs/types/DataTableHeader.json +269 -0
- package/data/docs/types/DataTableManager.json +11 -0
- package/data/docs/types/DataTableRoot.json +590 -0
- package/data/docs/types/DataTableTable.json +271 -0
- package/data/docs/types/DateInput.json +792 -0
- package/data/docs/types/DatePicker.json +700 -0
- package/data/docs/types/DateRangePicker.json +936 -0
- package/data/docs/types/DateRangePickerField.json +1047 -0
- package/data/docs/types/DefaultPage.json +12 -0
- package/data/docs/types/DefaultPageActions.json +27 -0
- package/data/docs/types/DefaultPageBackLink.json +213 -0
- package/data/docs/types/DefaultPageContent.json +27 -0
- package/data/docs/types/DefaultPageFooter.json +27 -0
- package/data/docs/types/DefaultPageHeader.json +27 -0
- package/data/docs/types/DefaultPageRoot.json +106 -0
- package/data/docs/types/DefaultPageSubtitle.json +27 -0
- package/data/docs/types/DefaultPageTabNav.json +28 -0
- package/data/docs/types/DefaultPageTitle.json +27 -0
- package/data/docs/types/DialogBody.json +27 -0
- package/data/docs/types/DialogCloseTrigger.json +939 -0
- package/data/docs/types/DialogContent.json +27 -0
- package/data/docs/types/DialogFooter.json +27 -0
- package/data/docs/types/DialogHeader.json +27 -0
- package/data/docs/types/DialogRoot.json +138 -0
- package/data/docs/types/DialogTitle.json +27 -0
- package/data/docs/types/DialogTrigger.json +80 -0
- package/data/docs/types/DraggableList.json +12 -0
- package/data/docs/types/DraggableListField.json +894 -0
- package/data/docs/types/DraggableListItem.json +574 -0
- package/data/docs/types/DraggableListRoot.json +745 -0
- package/data/docs/types/Drawer.json +12 -0
- package/data/docs/types/DrawerBody.json +27 -0
- package/data/docs/types/DrawerCloseTrigger.json +939 -0
- package/data/docs/types/DrawerContent.json +27 -0
- package/data/docs/types/DrawerFooter.json +27 -0
- package/data/docs/types/DrawerHeader.json +27 -0
- package/data/docs/types/DrawerRoot.json +142 -0
- package/data/docs/types/DrawerTitle.json +27 -0
- package/data/docs/types/DrawerTrigger.json +80 -0
- package/data/docs/types/FieldErrors.getBuiltInMessage.json +11 -0
- package/data/docs/types/FieldErrors.getCustomMessage.json +9 -0
- package/data/docs/types/FieldErrors.json +109 -0
- package/data/docs/types/Flex.json +238 -0
- package/data/docs/types/Footer.json +67 -0
- package/data/docs/types/FormFieldDescription.json +11 -0
- package/data/docs/types/FormFieldError.json +11 -0
- package/data/docs/types/FormFieldInfoBox.json +27 -0
- package/data/docs/types/FormFieldInput.json +11 -0
- package/data/docs/types/FormFieldLabel.json +11 -0
- package/data/docs/types/FormFieldRoot.json +148 -0
- package/data/docs/types/Grid.json +253 -0
- package/data/docs/types/GridProps.json +11 -0
- package/data/docs/types/Group.json +143 -0
- package/data/docs/types/Header.json +67 -0
- package/data/docs/types/Heading.json +109 -0
- package/data/docs/types/Icon.json +112 -0
- package/data/docs/types/IconButton.json +1019 -0
- package/data/docs/types/IconToggleButton.json +787 -0
- package/data/docs/types/Image.json +373 -0
- package/data/docs/types/Indicator.json +67 -0
- package/data/docs/types/InlineSvg.json +98 -0
- package/data/docs/types/Item.json +67 -0
- package/data/docs/types/Kbd.json +118 -0
- package/data/docs/types/Link.json +380 -0
- package/data/docs/types/List.json +12 -0
- package/data/docs/types/ListIndicator.json +70 -0
- package/data/docs/types/ListItem.json +70 -0
- package/data/docs/types/ListRoot.json +124 -0
- package/data/docs/types/LoadingSpinner.json +87 -0
- package/data/docs/types/LocalizedField.json +460 -0
- package/data/docs/types/LocalizedStringFormatter.json +9 -0
- package/data/docs/types/MakeElementFocusable.json +196 -0
- package/data/docs/types/MenuContent.json +111 -0
- package/data/docs/types/MenuItem.json +671 -0
- package/data/docs/types/MenuRoot.json +670 -0
- package/data/docs/types/MenuSection.json +364 -0
- package/data/docs/types/MenuSubmenu.json +111 -0
- package/data/docs/types/MenuSubmenuTrigger.json +67 -0
- package/data/docs/types/MenuTrigger.json +906 -0
- package/data/docs/types/ModalPage.json +12 -0
- package/data/docs/types/ModalPageActions.json +27 -0
- package/data/docs/types/ModalPageContent.json +27 -0
- package/data/docs/types/ModalPageFooter.json +27 -0
- package/data/docs/types/ModalPageHeader.json +27 -0
- package/data/docs/types/ModalPageRoot.json +87 -0
- package/data/docs/types/ModalPageSubtitle.json +27 -0
- package/data/docs/types/ModalPageTabNav.json +28 -0
- package/data/docs/types/ModalPageTitle.json +27 -0
- package/data/docs/types/ModalPageTopBar.json +57 -0
- package/data/docs/types/MoneyInput.isEmpty.json +40 -0
- package/data/docs/types/MoneyInput.json +282 -0
- package/data/docs/types/MoneyInputField.json +379 -0
- package/data/docs/types/MoneyInputFieldProps.json +9 -0
- package/data/docs/types/MultilineTextInput.json +1194 -0
- package/data/docs/types/MultilineTextInputField.json +1269 -0
- package/data/docs/types/MultilineTextInputFieldProps.json +9 -0
- package/data/docs/types/NimbusI18nProvider.json +42 -0
- package/data/docs/types/NimbusI18nProviderProps.json +9 -0
- package/data/docs/types/NimbusProvider.json +270 -0
- package/data/docs/types/NumberInput.json +952 -0
- package/data/docs/types/NumberInputField.json +1004 -0
- package/data/docs/types/NumberInputFieldProps.json +9 -0
- package/data/docs/types/PageContent.json +11 -0
- package/data/docs/types/PageContentColumn.json +99 -0
- package/data/docs/types/PageContentRoot.json +114 -0
- package/data/docs/types/Pagination.json +159 -0
- package/data/docs/types/PasswordInput.json +1120 -0
- package/data/docs/types/PasswordInputField.json +1216 -0
- package/data/docs/types/PasswordInputFieldProps.json +9 -0
- package/data/docs/types/ProgressBar.json +280 -0
- package/data/docs/types/RadioInputOption.json +550 -0
- package/data/docs/types/RadioInputRoot.json +514 -0
- package/data/docs/types/RangeCalendar.json +618 -0
- package/data/docs/types/RichTextInput.json +134 -0
- package/data/docs/types/Root.json +122 -0
- package/data/docs/types/Row.json +67 -0
- package/data/docs/types/ScopedSearchInput.isEmpty.json +40 -0
- package/data/docs/types/ScopedSearchInput.json +253 -0
- package/data/docs/types/ScrollArea.json +179 -0
- package/data/docs/types/ScrollAreaElementIds.json +9 -0
- package/data/docs/types/ScrollAreaProps.json +9 -0
- package/data/docs/types/SearchInput.json +1165 -0
- package/data/docs/types/SearchInputField.json +1240 -0
- package/data/docs/types/Select.json +12 -0
- package/data/docs/types/SelectOption.json +572 -0
- package/data/docs/types/SelectOptionGroup.json +215 -0
- package/data/docs/types/SelectOptions.json +693 -0
- package/data/docs/types/SelectRoot.json +926 -0
- package/data/docs/types/Separator.json +65 -0
- package/data/docs/types/SimpleGrid.json +291 -0
- package/data/docs/types/Spacer.json +27 -0
- package/data/docs/types/SpacerProps.json +9 -0
- package/data/docs/types/SplitButton.json +203 -0
- package/data/docs/types/Stack.json +144 -0
- package/data/docs/types/Steps.json +12 -0
- package/data/docs/types/StepsChangeDetails.json +9 -0
- package/data/docs/types/StepsCompletedContent.json +28 -0
- package/data/docs/types/StepsCompletedContentProps.json +9 -0
- package/data/docs/types/StepsContent.json +43 -0
- package/data/docs/types/StepsContentProps.json +9 -0
- package/data/docs/types/StepsDescription.json +28 -0
- package/data/docs/types/StepsDescriptionProps.json +9 -0
- package/data/docs/types/StepsIndicator.json +28 -0
- package/data/docs/types/StepsIndicatorProps.json +9 -0
- package/data/docs/types/StepsItem.json +43 -0
- package/data/docs/types/StepsItemProps.json +9 -0
- package/data/docs/types/StepsList.json +28 -0
- package/data/docs/types/StepsListProps.json +9 -0
- package/data/docs/types/StepsNextTrigger.json +62 -0
- package/data/docs/types/StepsNextTriggerProps.json +9 -0
- package/data/docs/types/StepsNumber.json +28 -0
- package/data/docs/types/StepsNumberProps.json +9 -0
- package/data/docs/types/StepsPrevTrigger.json +62 -0
- package/data/docs/types/StepsPrevTriggerProps.json +9 -0
- package/data/docs/types/StepsRoot.json +183 -0
- package/data/docs/types/StepsRootProps.json +11 -0
- package/data/docs/types/StepsSeparator.json +28 -0
- package/data/docs/types/StepsSeparatorProps.json +9 -0
- package/data/docs/types/StepsStatus.json +57 -0
- package/data/docs/types/StepsStatusProps.json +9 -0
- package/data/docs/types/StepsTitle.json +28 -0
- package/data/docs/types/StepsTitleProps.json +9 -0
- package/data/docs/types/StepsTrigger.json +47 -0
- package/data/docs/types/StepsTriggerProps.json +9 -0
- package/data/docs/types/Switch.json +371 -0
- package/data/docs/types/TabListProps.json +9 -0
- package/data/docs/types/TabNav.json +12 -0
- package/data/docs/types/TabNavItem.json +300 -0
- package/data/docs/types/TabNavItemProps.json +9 -0
- package/data/docs/types/TabNavProps.json +9 -0
- package/data/docs/types/TabNavRoot.json +80 -0
- package/data/docs/types/TabPanelProps.json +9 -0
- package/data/docs/types/TabPanelsProps.json +9 -0
- package/data/docs/types/TabProps.json +9 -0
- package/data/docs/types/Table.json +9 -0
- package/data/docs/types/TableBody.json +67 -0
- package/data/docs/types/TableBodyProps.json +9 -0
- package/data/docs/types/TableCaption.json +67 -0
- package/data/docs/types/TableCaptionProps.json +9 -0
- package/data/docs/types/TableCell.json +227 -0
- package/data/docs/types/TableCellProps.json +9 -0
- package/data/docs/types/TableColumn.json +101 -0
- package/data/docs/types/TableColumnGroup.json +101 -0
- package/data/docs/types/TableColumnGroupProps.json +9 -0
- package/data/docs/types/TableColumnHeader.json +193 -0
- package/data/docs/types/TableColumnHeaderProps.json +9 -0
- package/data/docs/types/TableColumnProps.json +9 -0
- package/data/docs/types/TableFooter.json +67 -0
- package/data/docs/types/TableFooterProps.json +9 -0
- package/data/docs/types/TableHeader.json +67 -0
- package/data/docs/types/TableHeaderProps.json +9 -0
- package/data/docs/types/TableRoot.json +365 -0
- package/data/docs/types/TableRootProps.json +12 -0
- package/data/docs/types/TableRow.json +67 -0
- package/data/docs/types/TableRowProps.json +9 -0
- package/data/docs/types/TableScrollArea.json +82 -0
- package/data/docs/types/TableScrollAreaProps.json +9 -0
- package/data/docs/types/Tabs.json +12 -0
- package/data/docs/types/TabsList.json +110 -0
- package/data/docs/types/TabsPanel.json +112 -0
- package/data/docs/types/TabsPanels.json +108 -0
- package/data/docs/types/TabsRoot.json +211 -0
- package/data/docs/types/TabsTab.json +174 -0
- package/data/docs/types/TagGroup.json +12 -0
- package/data/docs/types/TagGroupRoot.json +306 -0
- package/data/docs/types/TagGroupTag.json +595 -0
- package/data/docs/types/TagGroupTagList.json +166 -0
- package/data/docs/types/Text.json +119 -0
- package/data/docs/types/TextInput.json +1156 -0
- package/data/docs/types/TextInputField.json +1263 -0
- package/data/docs/types/TimeInput.json +752 -0
- package/data/docs/types/ToastAction.json +9 -0
- package/data/docs/types/ToastManagerApi.json +9 -0
- package/data/docs/types/ToastOptions.json +9 -0
- package/data/docs/types/ToastOutlet.json +12 -0
- package/data/docs/types/ToastPlacement.json +9 -0
- package/data/docs/types/ToastPromiseOptions.json +9 -0
- package/data/docs/types/ToastType.json +9 -0
- package/data/docs/types/ToastVariant.json +9 -0
- package/data/docs/types/ToggleButton.json +789 -0
- package/data/docs/types/ToggleButtonGroup.json +9 -0
- package/data/docs/types/ToggleButtonGroupButton.json +331 -0
- package/data/docs/types/ToggleButtonGroupRoot.json +269 -0
- package/data/docs/types/Toolbar.json +176 -0
- package/data/docs/types/Tooltip.json +12 -0
- package/data/docs/types/TooltipContent.json +372 -0
- package/data/docs/types/TooltipRoot.json +179 -0
- package/data/docs/types/Trigger.json +69 -0
- package/data/docs/types/VisuallyHidden.json +93 -0
- package/data/docs/types/__object.json +12 -0
- package/data/docs/types/filters.json +11 -0
- package/data/docs/types/manifest.json +280 -0
- package/data/docs/types/toast.json +234 -0
- package/data/docs/types/useColorMode.json +13 -0
- package/data/docs/types/useColorModeValue.json +13 -0
- package/data/docs/types/useColorScheme.json +12 -0
- package/data/docs/types/useLocalizedStringFormatter.json +14 -0
- package/data/icons.json +21940 -0
- package/data/tokens.json +40061 -0
- package/dist/index.js +2516 -17
- package/package.json +25 -6
- package/dist/data-loader.d.ts +0 -102
- package/dist/data-loader.js +0 -104
- package/dist/index.d.ts +0 -13
- package/dist/server.d.ts +0 -9
- package/dist/server.js +0 -22
- package/dist/server.spec.d.ts +0 -1
- package/dist/server.spec.js +0 -69
- package/dist/tools/list-components.d.ts +0 -9
- package/dist/tools/list-components.js +0 -42
- package/dist/types.d.ts +0 -28
- package/dist/types.js +0 -4
- package/src/data-loader.ts +0 -226
- package/src/index.ts +0 -29
- package/src/server.spec.ts +0 -86
- package/src/server.ts +0 -28
- package/src/tools/list-components.ts +0 -49
- package/src/types.ts +0 -31
- package/tsconfig.json +0 -14
- package/vitest.config.ts +0 -9
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"id": "Components-ScrollArea",
|
|
4
|
+
"title": "ScrollArea",
|
|
5
|
+
"exportName": "ScrollArea",
|
|
6
|
+
"description": "A scrollable container with custom-styled scrollbar overlays. Useful for constrained content areas like panels, sidebars, and dialog bodies.",
|
|
7
|
+
"lifecycleState": "Stable",
|
|
8
|
+
"order": 999,
|
|
9
|
+
"repoPath": "packages/nimbus/src/components/scroll-area/scroll-area.mdx",
|
|
10
|
+
"menu": [
|
|
11
|
+
"Components",
|
|
12
|
+
"Layout",
|
|
13
|
+
"ScrollArea"
|
|
14
|
+
],
|
|
15
|
+
"route": "components/layout/scrollarea",
|
|
16
|
+
"tags": [
|
|
17
|
+
"component",
|
|
18
|
+
"scroll-area",
|
|
19
|
+
"layout",
|
|
20
|
+
"overflow",
|
|
21
|
+
"scrollbar"
|
|
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": "Orientation",
|
|
57
|
+
"href": "#orientation",
|
|
58
|
+
"depth": 3,
|
|
59
|
+
"numbering": [
|
|
60
|
+
1,
|
|
61
|
+
2,
|
|
62
|
+
1
|
|
63
|
+
],
|
|
64
|
+
"parent": "root"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"value": "Visibility",
|
|
68
|
+
"href": "#visibility",
|
|
69
|
+
"depth": 3,
|
|
70
|
+
"numbering": [
|
|
71
|
+
1,
|
|
72
|
+
2,
|
|
73
|
+
2
|
|
74
|
+
],
|
|
75
|
+
"parent": "root"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"value": "Size",
|
|
79
|
+
"href": "#size",
|
|
80
|
+
"depth": 3,
|
|
81
|
+
"numbering": [
|
|
82
|
+
1,
|
|
83
|
+
2,
|
|
84
|
+
3
|
|
85
|
+
],
|
|
86
|
+
"parent": "root"
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
"layout": "app-frame",
|
|
90
|
+
"tabs": [
|
|
91
|
+
{
|
|
92
|
+
"key": "overview",
|
|
93
|
+
"title": "Overview",
|
|
94
|
+
"order": 0
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"key": "dev",
|
|
98
|
+
"title": "Implementation",
|
|
99
|
+
"order": 3
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"key": "a11y",
|
|
103
|
+
"title": "Accessibility",
|
|
104
|
+
"order": 4
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
"mdx": "\n## Overview\n\nScrollArea constrains content within a fixed region and provides themed\nscrollbar overlays that replace native browser scrollbars. The scrollbar\nappears on hover or during scrolling by default, keeping the interface clean\nuntil the user needs to scroll. The component is keyboard accessible — when\ncontent overflows, the area becomes focusable via Tab and scrollable with\narrow keys.\n\n### Resources\n\nDeep dive into implementation details and access the Nimbus design library.\n\n[Storybook](https://nimbus-storybook.vercel.app/?path=/docs/components-scrollarea--docs)\n[Chakra UI ScrollArea](https://chakra-ui.com/docs/components/scroll-area)\n\n## Variables\n\nGet familiar with the features.\n\n### Orientation\n\nControl which axes are scrollable. The default is vertical.\n\n```jsx live\nconst App = () => (\n <Stack gap=\"600\">\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">Vertical (default)</Text>\n <ScrollArea maxH=\"120px\" w=\"300px\" variant=\"always\">\n {Array.from({ length: 15 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">Line {i + 1}: Sample content for vertical scrolling.</Text>\n ))}\n </ScrollArea>\n </Box>\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">Horizontal</Text>\n <ScrollArea maxW=\"300px\" orientation=\"horizontal\" variant=\"always\">\n <Box whiteSpace=\"nowrap\">\n {Array.from({ length: 5 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">{\"Horizontal content \".repeat(15)}</Text>\n ))}\n </Box>\n </ScrollArea>\n </Box>\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">Both axes</Text>\n <ScrollArea maxH=\"120px\" maxW=\"300px\" orientation=\"both\" variant=\"always\">\n <Box whiteSpace=\"nowrap\">\n {Array.from({ length: 15 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">{\"Bidirectional content \".repeat(15)}</Text>\n ))}\n </Box>\n </ScrollArea>\n </Box>\n </Stack>\n);\n```\n\n### Visibility\n\nThe scrollbar can appear on hover (default) or stay permanently visible.\n\n```jsx live\nconst App = () => (\n <Stack gap=\"600\" direction=\"row\">\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">Hover (default)</Text>\n <ScrollArea maxH=\"120px\" w=\"200px\">\n {Array.from({ length: 15 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">Line {i + 1}</Text>\n ))}\n </ScrollArea>\n </Box>\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">Always visible</Text>\n <ScrollArea maxH=\"120px\" w=\"200px\" variant=\"always\">\n {Array.from({ length: 15 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">Line {i + 1}</Text>\n ))}\n </ScrollArea>\n </Box>\n </Stack>\n);\n```\n\n### Size\n\nControl the scrollbar thickness. Available sizes: `xs`, `sm` (default), `md`, `lg`.\n\n```jsx live\nconst App = () => (\n <Stack gap=\"600\" direction=\"row\" flexWrap=\"wrap\">\n {[\"xs\", \"sm\", \"md\", \"lg\"].map((size) => (\n <Box key={size}>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">{size}</Text>\n <ScrollArea maxH=\"120px\" w=\"180px\" size={size} variant=\"always\">\n {Array.from({ length: 15 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">Line {i + 1}</Text>\n ))}\n </ScrollArea>\n </Box>\n ))}\n </Stack>\n);\n```\n",
|
|
109
|
+
"views": {
|
|
110
|
+
"overview": {
|
|
111
|
+
"mdx": "\n## Overview\n\nScrollArea constrains content within a fixed region and provides themed\nscrollbar overlays that replace native browser scrollbars. The scrollbar\nappears on hover or during scrolling by default, keeping the interface clean\nuntil the user needs to scroll. The component is keyboard accessible — when\ncontent overflows, the area becomes focusable via Tab and scrollable with\narrow keys.\n\n### Resources\n\nDeep dive into implementation details and access the Nimbus design library.\n\n[Storybook](https://nimbus-storybook.vercel.app/?path=/docs/components-scrollarea--docs)\n[Chakra UI ScrollArea](https://chakra-ui.com/docs/components/scroll-area)\n\n## Variables\n\nGet familiar with the features.\n\n### Orientation\n\nControl which axes are scrollable. The default is vertical.\n\n```jsx live\nconst App = () => (\n <Stack gap=\"600\">\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">Vertical (default)</Text>\n <ScrollArea maxH=\"120px\" w=\"300px\" variant=\"always\">\n {Array.from({ length: 15 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">Line {i + 1}: Sample content for vertical scrolling.</Text>\n ))}\n </ScrollArea>\n </Box>\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">Horizontal</Text>\n <ScrollArea maxW=\"300px\" orientation=\"horizontal\" variant=\"always\">\n <Box whiteSpace=\"nowrap\">\n {Array.from({ length: 5 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">{\"Horizontal content \".repeat(15)}</Text>\n ))}\n </Box>\n </ScrollArea>\n </Box>\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">Both axes</Text>\n <ScrollArea maxH=\"120px\" maxW=\"300px\" orientation=\"both\" variant=\"always\">\n <Box whiteSpace=\"nowrap\">\n {Array.from({ length: 15 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">{\"Bidirectional content \".repeat(15)}</Text>\n ))}\n </Box>\n </ScrollArea>\n </Box>\n </Stack>\n);\n```\n\n### Visibility\n\nThe scrollbar can appear on hover (default) or stay permanently visible.\n\n```jsx live\nconst App = () => (\n <Stack gap=\"600\" direction=\"row\">\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">Hover (default)</Text>\n <ScrollArea maxH=\"120px\" w=\"200px\">\n {Array.from({ length: 15 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">Line {i + 1}</Text>\n ))}\n </ScrollArea>\n </Box>\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">Always visible</Text>\n <ScrollArea maxH=\"120px\" w=\"200px\" variant=\"always\">\n {Array.from({ length: 15 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">Line {i + 1}</Text>\n ))}\n </ScrollArea>\n </Box>\n </Stack>\n);\n```\n\n### Size\n\nControl the scrollbar thickness. Available sizes: `xs`, `sm` (default), `md`, `lg`.\n\n```jsx live\nconst App = () => (\n <Stack gap=\"600\" direction=\"row\" flexWrap=\"wrap\">\n {[\"xs\", \"sm\", \"md\", \"lg\"].map((size) => (\n <Box key={size}>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">{size}</Text>\n <ScrollArea maxH=\"120px\" w=\"180px\" size={size} variant=\"always\">\n {Array.from({ length: 15 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">Line {i + 1}</Text>\n ))}\n </ScrollArea>\n </Box>\n ))}\n </Stack>\n);\n```\n",
|
|
112
|
+
"toc": [
|
|
113
|
+
{
|
|
114
|
+
"value": "Overview",
|
|
115
|
+
"href": "#overview",
|
|
116
|
+
"depth": 2,
|
|
117
|
+
"numbering": [
|
|
118
|
+
1,
|
|
119
|
+
1
|
|
120
|
+
],
|
|
121
|
+
"parent": "root"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"value": "Resources",
|
|
125
|
+
"href": "#resources",
|
|
126
|
+
"depth": 3,
|
|
127
|
+
"numbering": [
|
|
128
|
+
1,
|
|
129
|
+
1,
|
|
130
|
+
1
|
|
131
|
+
],
|
|
132
|
+
"parent": "root"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"value": "Variables",
|
|
136
|
+
"href": "#variables",
|
|
137
|
+
"depth": 2,
|
|
138
|
+
"numbering": [
|
|
139
|
+
1,
|
|
140
|
+
2
|
|
141
|
+
],
|
|
142
|
+
"parent": "root"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"value": "Orientation",
|
|
146
|
+
"href": "#orientation",
|
|
147
|
+
"depth": 3,
|
|
148
|
+
"numbering": [
|
|
149
|
+
1,
|
|
150
|
+
2,
|
|
151
|
+
1
|
|
152
|
+
],
|
|
153
|
+
"parent": "root"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"value": "Visibility",
|
|
157
|
+
"href": "#visibility",
|
|
158
|
+
"depth": 3,
|
|
159
|
+
"numbering": [
|
|
160
|
+
1,
|
|
161
|
+
2,
|
|
162
|
+
2
|
|
163
|
+
],
|
|
164
|
+
"parent": "root"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"value": "Size",
|
|
168
|
+
"href": "#size",
|
|
169
|
+
"depth": 3,
|
|
170
|
+
"numbering": [
|
|
171
|
+
1,
|
|
172
|
+
2,
|
|
173
|
+
3
|
|
174
|
+
],
|
|
175
|
+
"parent": "root"
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
"a11y": {
|
|
180
|
+
"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 <ScrollArea maxH=\"200px\" w=\"400px\" role=\"region\" aria-label=\"Example content\">\n {Array.from({ length: 20 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">\n Line {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n </Text>\n ))}\n </ScrollArea>\n);\n```\n\n### Accessibility standards\n\n- **Keyboard focusable:** The scrollable viewport receives `tabIndex={0}`\n when content overflows on either axis, making it reachable via Tab and\n scrollable with Arrow keys, Page Up/Down, Home, and End.\n- **Conditional focusability:** When content does not overflow, `tabIndex` is\n not set, so the container does not appear in the Tab order unnecessarily.\n- **Keyboard-only focus ring:** A Nimbus focus ring appears on the root\n element only during keyboard navigation (`:focus-visible`), not on mouse\n click.\n- **Decorative scrollbars:** The custom scrollbar overlays are purely visual.\n Actual scrolling is handled by the browser's native scroll mechanism.\n- **ARIA landmarks:** When the scroll area represents a distinct page section,\n consider adding `role=\"region\"` with `aria-label` or `aria-labelledby` to\n create a named landmark for screen reader navigation.\n- **No keyboard trap:** Standard browser tab order is maintained. Focus moves\n naturally into and out of the scroll area.\n",
|
|
181
|
+
"toc": [
|
|
182
|
+
{
|
|
183
|
+
"value": "Accessibility",
|
|
184
|
+
"href": "#accessibility",
|
|
185
|
+
"depth": 2,
|
|
186
|
+
"numbering": [
|
|
187
|
+
1,
|
|
188
|
+
1
|
|
189
|
+
],
|
|
190
|
+
"parent": "root"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"value": "Accessibility standards",
|
|
194
|
+
"href": "#accessibility-standards",
|
|
195
|
+
"depth": 3,
|
|
196
|
+
"numbering": [
|
|
197
|
+
1,
|
|
198
|
+
1,
|
|
199
|
+
1
|
|
200
|
+
],
|
|
201
|
+
"parent": "root"
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
},
|
|
205
|
+
"dev": {
|
|
206
|
+
"mdx": "\n## Getting started\n\n### Import\n\n```tsx\nimport { ScrollArea, type ScrollAreaProps } from '@commercetools/nimbus';\n```\n\n### Basic usage\n\nWrap content in a `ScrollArea` with a size constraint. The scrollbar appears on\nhover or during scrolling:\n\n```jsx live-dev\nconst App = () => (\n <ScrollArea maxH=\"200px\" w=\"400px\">\n {Array.from({ length: 20 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">\n Line {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n </Text>\n ))}\n </ScrollArea>\n)\n```\n\n## Usage examples\n\n### Orientation\n\nUse the `orientation` prop to control which scrollbar axes are rendered:\n\n```jsx live-dev\nconst App = () => (\n <Stack gap=\"600\">\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">vertical (default)</Text>\n <ScrollArea maxH=\"120px\" w=\"300px\" variant=\"always\">\n {Array.from({ length: 15 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">Line {i + 1}</Text>\n ))}\n </ScrollArea>\n </Box>\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">horizontal</Text>\n <ScrollArea maxW=\"300px\" orientation=\"horizontal\" variant=\"always\">\n <Box whiteSpace=\"nowrap\">\n {Array.from({ length: 5 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">{\"Long horizontal content \".repeat(15)}</Text>\n ))}\n </Box>\n </ScrollArea>\n </Box>\n <Box>\n <Text fontSize=\"sm\" mb=\"200\" fontWeight=\"bold\">both</Text>\n <ScrollArea maxH=\"120px\" maxW=\"300px\" orientation=\"both\" variant=\"always\">\n <Box whiteSpace=\"nowrap\">\n {Array.from({ length: 15 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">{\"Both axes content \".repeat(15)}</Text>\n ))}\n </Box>\n </ScrollArea>\n </Box>\n </Stack>\n)\n```\n\n### Content padding\n\nPadding props on `ScrollArea` are forwarded to the content area inside the\nscrollable viewport, so `p`, `px`, `py`, etc. work as expected:\n\n```jsx live-dev\nconst App = () => (\n <ScrollArea maxH=\"200px\" w=\"400px\" bg=\"neutral.2\" borderRadius=\"300\" variant=\"always\" p=\"200\">\n {Array.from({ length: 20 }, (_, i) => (\n <Text key={i} fontSize=\"sm\">\n Line {i + 1}: Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n </Text>\n ))}\n </ScrollArea>\n)\n```\n\n### Programmatic scroll access\n\n#### Using `viewportRef`\n\nUse the `viewportRef` prop to get a direct reference to the scrollable viewport\nelement. This is the recommended approach when you need to programmatically\nscroll, attach scroll event listeners, or read scroll position. The ref gives\nyou direct access to the native DOM `scrollTo()` method:\n\n```tsx\nconst viewportRef = useRef<HTMLDivElement>(null);\n\n<ScrollArea viewportRef={viewportRef} maxH=\"400px\">\n {content}\n</ScrollArea>\n\n// Native DOM scrollTo — same API as any scrollable element\nviewportRef.current.scrollTo({ top: 0, behavior: 'smooth' })\n// Or: viewportRef.current.addEventListener('scroll', handler)\n```\n\n#### Using `ids`\n\nWhen ref-forwarding is impractical (e.g., the scroll container is rendered in a\ndifferent component tree), use the `ids` prop to set a known ID on the viewport\nelement for `getElementById` access:\n\n```tsx\n<ScrollArea ids={{ viewport: 'my-scroll-viewport' }} maxH=\"400px\">\n {content}\n</ScrollArea>\n\n// Later: document.getElementById('my-scroll-viewport').scrollTop\n```\n\n#### Using `useScrollArea` (external control)\n\nWhen you need to read scroll state or call scroll methods from *outside* the\n`ScrollArea` tree (e.g., in a parent component), create the machine externally\nwith `useScrollArea` and pass it via the `value` prop. Unlike `viewportRef`\n(which gives you a native DOM element), the `useScrollArea` hook returns a\nstate-machine API with scroll state and convenience methods:\n\n```tsx\nimport { ScrollArea, useScrollArea } from '@commercetools/nimbus';\n\nfunction ParentComponent() {\n const scrollArea = useScrollArea();\n\n return (\n <>\n <button onClick={() => scrollArea.scrollToEdge({ edge: 'top' })}>\n Scroll to top\n </button>\n <p>Has vertical overflow: {String(scrollArea.hasOverflowY)}</p>\n <ScrollArea maxH=\"400px\" value={scrollArea}>\n {content}\n </ScrollArea>\n </>\n );\n}\n```\n\nThe returned object exposes state (`hasOverflowX`, `hasOverflowY`, `isAtTop`,\n`isAtBottom`, `isAtLeft`, `isAtRight`) and methods (`scrollTo()`,\n`scrollToEdge()`, `getScrollProgress()`).\n\n#### Using `useScrollAreaContext` (internal access)\n\nFor components rendered *inside* a `ScrollArea`, the `useScrollAreaContext` hook\nreads the existing machine from React context — no `value` prop needed:\n\n```tsx\nimport { useScrollAreaContext } from '@commercetools/nimbus';\n\nfunction ScrollToTopButton() {\n const { scrollToEdge, isAtTop } = useScrollAreaContext();\n if (isAtTop) return null;\n return <Button onPress={() => scrollToEdge({ edge: 'top', behavior: 'smooth' })}>Back to top</Button>;\n}\n```\n\n## Component requirements\n\n- The component must have a size constraint (`maxH`, `maxW`, `h`, `w`) for scrolling to occur\n\n## Accessibility\n\nThe ScrollArea component ensures keyboard accessibility:\n\n- **Keyboard focusable**: The scrollable viewport receives `tabIndex={0}` when content overflows, making it reachable via Tab\n- **Focus ring**: A Nimbus focus ring appears on the root element when the viewport receives keyboard focus (via `:focus-visible`)\n- **ARIA landmarks**: When the scroll area represents a distinct page section, consider adding `role=\"region\"` with an `aria-label` or `aria-labelledby` to create a named landmark for screen reader navigation\n\n## API reference\n\n<PropsTable id=\"ScrollArea\" />\n\n## Testing your implementation\n\nThese examples demonstrate how to test your implementation when using ScrollArea 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 Usage\n\nBasic vertical scrollable container\n\n```tsx\nimport React from \"react\";\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport {\n ScrollArea,\n NimbusProvider,\n useScrollArea,\n Box,\n Text,\n} from \"@commercetools/nimbus\";\n\ndescribe(\"ScrollArea - Basic usage\", () => {\n it(\"renders children inside a scrollable container\", () => {\n render(\n <NimbusProvider>\n <ScrollArea maxH=\"200px\">\n <OverflowingContent />\n </ScrollArea>\n </NimbusProvider>\n );\n\n expect(screen.getByText(\"Line 1\")).toBeInTheDocument();\n });\n\n it(\"renders with always-visible scrollbars\", () => {\n const { container } = render(\n <NimbusProvider>\n <ScrollArea maxH=\"200px\" variant=\"always\">\n <OverflowingContent />\n </ScrollArea>\n </NimbusProvider>\n );\n\n expect(\n container.querySelector('[data-part=\"scrollbar\"]')\n ).toBeInTheDocument();\n });\n});\n```\n\n### Orientation\n\nControlling which scrollbar axes render\n\n```tsx\nimport React from \"react\";\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport {\n ScrollArea,\n NimbusProvider,\n useScrollArea,\n Box,\n Text,\n} from \"@commercetools/nimbus\";\n\ndescribe(\"ScrollArea - Orientation\", () => {\n it(\"renders horizontal scrollbar\", () => {\n const { container } = render(\n <NimbusProvider>\n <ScrollArea maxW=\"300px\" orientation=\"horizontal\">\n <Box whiteSpace=\"nowrap\">\n <Text>{\"Wide content \".repeat(30)}</Text>\n </Box>\n </ScrollArea>\n </NimbusProvider>\n );\n\n const scrollbar = container.querySelector('[data-part=\"scrollbar\"]');\n expect(scrollbar).toHaveAttribute(\"data-orientation\", \"horizontal\");\n });\n\n it(\"renders both axes with a corner\", () => {\n const { container } = render(\n <NimbusProvider>\n <ScrollArea maxH=\"200px\" maxW=\"300px\" orientation=\"both\">\n <Box whiteSpace=\"nowrap\">\n <OverflowingContent />\n </Box>\n </ScrollArea>\n </NimbusProvider>\n );\n\n const scrollbars = container.querySelectorAll('[data-part=\"scrollbar\"]');\n expect(scrollbars).toHaveLength(2);\n expect(container.querySelector('[data-part=\"corner\"]')).toBeInTheDocument();\n });\n});\n```\n\n### Programmatic scroll access\n\nAccessing the scrollable viewport via ref or external hook\n\n```tsx\nimport React from \"react\";\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport {\n ScrollArea,\n NimbusProvider,\n useScrollArea,\n Box,\n Text,\n} from \"@commercetools/nimbus\";\n\ndescribe(\"ScrollArea - Programmatic access\", () => {\n it(\"forwards a ref to the viewport via viewportRef\", () => {\n const ref = React.createRef<HTMLDivElement>();\n\n render(\n <NimbusProvider>\n <ScrollArea maxH=\"200px\" viewportRef={ref}>\n <OverflowingContent />\n </ScrollArea>\n </NimbusProvider>\n );\n\n expect(ref.current).toHaveAttribute(\"data-part\", \"viewport\");\n expect(typeof ref.current?.scrollTo).toBe(\"function\");\n });\n\n it(\"supports external control via useScrollArea + value prop\", () => {\n const ExternalControl = () => {\n const scrollArea = useScrollArea();\n return (\n <ScrollArea maxH=\"200px\" value={scrollArea}>\n <OverflowingContent />\n </ScrollArea>\n );\n };\n\n render(\n <NimbusProvider>\n <ExternalControl />\n </NimbusProvider>\n );\n\n expect(screen.getByText(\"Line 1\")).toBeInTheDocument();\n });\n});\n```\n\n### Content Padding\n\nApplying padding via an inner Box wrapper\n\n```tsx\nimport React from \"react\";\nimport { describe, it, expect } from \"vitest\";\nimport { render, screen } from \"@testing-library/react\";\nimport {\n ScrollArea,\n NimbusProvider,\n useScrollArea,\n Box,\n Text,\n} from \"@commercetools/nimbus\";\n\ndescribe(\"ScrollArea - Content padding\", () => {\n it(\"renders padded content via a nested Box\", () => {\n render(\n <NimbusProvider>\n <ScrollArea maxH=\"200px\">\n <Box p=\"200\">\n <OverflowingContent />\n </Box>\n </ScrollArea>\n </NimbusProvider>\n );\n\n expect(screen.getByText(\"Line 1\")).toBeInTheDocument();\n });\n});\n```\n\n\n## Resources\n\n- [Storybook](https://nimbus-storybook.vercel.app/?path=/docs/components-scrollarea--docs)\n- [Chakra UI ScrollArea](https://chakra-ui.com/docs/components/scroll-area)\n",
|
|
207
|
+
"toc": [
|
|
208
|
+
{
|
|
209
|
+
"value": "Getting started",
|
|
210
|
+
"href": "#getting-started",
|
|
211
|
+
"depth": 2,
|
|
212
|
+
"numbering": [
|
|
213
|
+
1,
|
|
214
|
+
1
|
|
215
|
+
],
|
|
216
|
+
"parent": "root"
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"value": "Import",
|
|
220
|
+
"href": "#import",
|
|
221
|
+
"depth": 3,
|
|
222
|
+
"numbering": [
|
|
223
|
+
1,
|
|
224
|
+
1,
|
|
225
|
+
1
|
|
226
|
+
],
|
|
227
|
+
"parent": "root"
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"value": "Basic usage",
|
|
231
|
+
"href": "#basic-usage",
|
|
232
|
+
"depth": 3,
|
|
233
|
+
"numbering": [
|
|
234
|
+
1,
|
|
235
|
+
1,
|
|
236
|
+
2
|
|
237
|
+
],
|
|
238
|
+
"parent": "root"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"value": "Usage examples",
|
|
242
|
+
"href": "#usage-examples",
|
|
243
|
+
"depth": 2,
|
|
244
|
+
"numbering": [
|
|
245
|
+
1,
|
|
246
|
+
2
|
|
247
|
+
],
|
|
248
|
+
"parent": "root"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"value": "Orientation",
|
|
252
|
+
"href": "#orientation",
|
|
253
|
+
"depth": 3,
|
|
254
|
+
"numbering": [
|
|
255
|
+
1,
|
|
256
|
+
2,
|
|
257
|
+
1
|
|
258
|
+
],
|
|
259
|
+
"parent": "root"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"value": "Content padding",
|
|
263
|
+
"href": "#content-padding",
|
|
264
|
+
"depth": 3,
|
|
265
|
+
"numbering": [
|
|
266
|
+
1,
|
|
267
|
+
2,
|
|
268
|
+
2
|
|
269
|
+
],
|
|
270
|
+
"parent": "root"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"value": "Programmatic scroll access",
|
|
274
|
+
"href": "#programmatic-scroll-access",
|
|
275
|
+
"depth": 3,
|
|
276
|
+
"numbering": [
|
|
277
|
+
1,
|
|
278
|
+
2,
|
|
279
|
+
3
|
|
280
|
+
],
|
|
281
|
+
"parent": "root"
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"value": "Using viewportRef",
|
|
285
|
+
"href": "#using-viewportref",
|
|
286
|
+
"depth": 4,
|
|
287
|
+
"numbering": [
|
|
288
|
+
1,
|
|
289
|
+
2,
|
|
290
|
+
3,
|
|
291
|
+
1
|
|
292
|
+
],
|
|
293
|
+
"parent": "root"
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"value": "Using ids",
|
|
297
|
+
"href": "#using-ids",
|
|
298
|
+
"depth": 4,
|
|
299
|
+
"numbering": [
|
|
300
|
+
1,
|
|
301
|
+
2,
|
|
302
|
+
3,
|
|
303
|
+
2
|
|
304
|
+
],
|
|
305
|
+
"parent": "root"
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"value": "Using useScrollArea (external control)",
|
|
309
|
+
"href": "#using-usescrollarea-external-control",
|
|
310
|
+
"depth": 4,
|
|
311
|
+
"numbering": [
|
|
312
|
+
1,
|
|
313
|
+
2,
|
|
314
|
+
3,
|
|
315
|
+
3
|
|
316
|
+
],
|
|
317
|
+
"parent": "root"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"value": "Using useScrollAreaContext (internal access)",
|
|
321
|
+
"href": "#using-usescrollareacontext-internal-access",
|
|
322
|
+
"depth": 4,
|
|
323
|
+
"numbering": [
|
|
324
|
+
1,
|
|
325
|
+
2,
|
|
326
|
+
3,
|
|
327
|
+
4
|
|
328
|
+
],
|
|
329
|
+
"parent": "root"
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"value": "Component requirements",
|
|
333
|
+
"href": "#component-requirements",
|
|
334
|
+
"depth": 2,
|
|
335
|
+
"numbering": [
|
|
336
|
+
1,
|
|
337
|
+
3
|
|
338
|
+
],
|
|
339
|
+
"parent": "root"
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"value": "Accessibility",
|
|
343
|
+
"href": "#accessibility",
|
|
344
|
+
"depth": 2,
|
|
345
|
+
"numbering": [
|
|
346
|
+
1,
|
|
347
|
+
4
|
|
348
|
+
],
|
|
349
|
+
"parent": "root"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"value": "API reference",
|
|
353
|
+
"href": "#api-reference",
|
|
354
|
+
"depth": 2,
|
|
355
|
+
"numbering": [
|
|
356
|
+
1,
|
|
357
|
+
5
|
|
358
|
+
],
|
|
359
|
+
"parent": "root"
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"value": "Testing your implementation",
|
|
363
|
+
"href": "#testing-your-implementation",
|
|
364
|
+
"depth": 2,
|
|
365
|
+
"numbering": [
|
|
366
|
+
1,
|
|
367
|
+
6
|
|
368
|
+
],
|
|
369
|
+
"parent": "root"
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"value": "Basic Usage",
|
|
373
|
+
"href": "#basic-usage-1",
|
|
374
|
+
"depth": 3,
|
|
375
|
+
"numbering": [
|
|
376
|
+
1,
|
|
377
|
+
6,
|
|
378
|
+
1
|
|
379
|
+
],
|
|
380
|
+
"parent": "root"
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"value": "Orientation",
|
|
384
|
+
"href": "#orientation-1",
|
|
385
|
+
"depth": 3,
|
|
386
|
+
"numbering": [
|
|
387
|
+
1,
|
|
388
|
+
6,
|
|
389
|
+
2
|
|
390
|
+
],
|
|
391
|
+
"parent": "root"
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"value": "Programmatic scroll access",
|
|
395
|
+
"href": "#programmatic-scroll-access-1",
|
|
396
|
+
"depth": 3,
|
|
397
|
+
"numbering": [
|
|
398
|
+
1,
|
|
399
|
+
6,
|
|
400
|
+
3
|
|
401
|
+
],
|
|
402
|
+
"parent": "root"
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"value": "Content Padding",
|
|
406
|
+
"href": "#content-padding-1",
|
|
407
|
+
"depth": 3,
|
|
408
|
+
"numbering": [
|
|
409
|
+
1,
|
|
410
|
+
6,
|
|
411
|
+
4
|
|
412
|
+
],
|
|
413
|
+
"parent": "root"
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"value": "Resources",
|
|
417
|
+
"href": "#resources",
|
|
418
|
+
"depth": 2,
|
|
419
|
+
"numbering": [
|
|
420
|
+
1,
|
|
421
|
+
7
|
|
422
|
+
],
|
|
423
|
+
"parent": "root"
|
|
424
|
+
}
|
|
425
|
+
]
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|